@dignite-ng/expand.file-explorer 0.0.4 → 0.0.5

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.
@@ -22,7 +22,7 @@ class FileDomeComponent {
22
22
  this.selectedFileGroup = event;
23
23
  }
24
24
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FileDomeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
25
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FileDomeComponent, selector: "fe-file-dome", ngImport: i0, template: "<div class=\"row\">\r\n <div class=\"col\">\r\n <div class=\"card\">\r\n <div class=\"card-header py-2 border-bottom\">Send file stream with form</div>\r\n <div class=\"card-body\">\r\n <fe-file-edit [(fileData)]=\"fileSubmittedData\" (fileDataChange)=\"fileDataChange($event)\"></fe-file-edit>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col\">\r\n <div class=\"card\">\r\n <div class=\"card-header py-2 border-bottom\">Send file stream with form</div>\r\n <div class=\"card-body\">\r\n <fe-file-picker [selectFormFile]=\"selectedFileGroup\" (selectedFileChange)=\"_selectedFileChange($event)\" ></fe-file-picker>\r\n </div>\r\n </div>\r\n </div>\r\n</div>", styles: [""], dependencies: [{ kind: "component", type: i1.FileEditComponent, selector: "fe-file-edit", inputs: ["multiple", "fileData", "limit"], outputs: ["fileDataChange"] }, { kind: "component", type: i2.FilePickerComponent, selector: "fe-file-picker", inputs: ["fileContainerName", "selectFormFile"], outputs: ["selectedFileChange"] }] });
25
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FileDomeComponent, selector: "fe-file-dome", ngImport: i0, template: "<div class=\"row\">\r\n <div class=\"col\">\r\n <div class=\"card\">\r\n <div class=\"card-header py-2 border-bottom\">Send file stream with form</div>\r\n <div class=\"card-body\">\r\n <fe-file-edit [(fileData)]=\"fileSubmittedData\" (fileDataChange)=\"fileDataChange($event)\"></fe-file-edit>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col\">\r\n <div class=\"card\">\r\n <div class=\"card-header py-2 border-bottom\">Send file stream with form</div>\r\n <div class=\"card-body\">\r\n <fe-file-picker [selectFormFile]=\"selectedFileGroup\" (selectedFileChange)=\"_selectedFileChange($event)\" ></fe-file-picker>\r\n </div>\r\n </div>\r\n </div>\r\n</div>", styles: [""], dependencies: [{ kind: "component", type: i1.FileEditComponent, selector: "fe-file-edit", inputs: ["multiple", "fileData", "limit"], outputs: ["fileDataChange"] }, { kind: "component", type: i2.FilePickerComponent, selector: "fe-file-picker", inputs: ["multiple", "fileContainerName", "selectFormFile"], outputs: ["selectedFileChange"] }] });
26
26
  }
27
27
  export { FileDomeComponent };
28
28
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FileDomeComponent, decorators: [{
@@ -3,6 +3,7 @@ import * as i0 from "@angular/core";
3
3
  import * as i1 from "../../services/file-api.service";
4
4
  import * as i2 from "@angular/common";
5
5
  import * as i3 from "@abp/ng.core";
6
+ import * as i4 from "../../previews/file-preview.component";
6
7
  class FileEditComponent {
7
8
  _FileApiService;
8
9
  constructor(_FileApiService) {
@@ -40,6 +41,7 @@ class FileEditComponent {
40
41
  /**获取文件信息改变 */
41
42
  async getFileChange(event) {
42
43
  let files = new Array(...event.target.files);
44
+ console.log(files, '获取文件信息改变');
43
45
  /**需要等待setfileSizeUnits执行完后在执行其他方法--需要完善 */
44
46
  await this.waitFileToAddTable(files);
45
47
  this.fileHandling();
@@ -81,12 +83,12 @@ class FileEditComponent {
81
83
  });
82
84
  }
83
85
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FileEditComponent, deps: [{ token: i1.FileApiService }], target: i0.ɵɵFactoryTarget.Component });
84
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FileEditComponent, selector: "fe-file-edit", inputs: { multiple: "multiple", fileData: "fileData", limit: "limit" }, outputs: { fileDataChange: "fileDataChange" }, viewQueries: [{ propertyName: "fileEdit", first: true, predicate: ["fileEdit"], descendants: true, static: true }], ngImport: i0, template: "<div class=\"input-group mb-2\">\n <input type=\"file\" class=\"form-control\" #fileEdit [multiple]=\"_multiple\" accept=\".jpg,.jpeg,.png,.gif,.webp\"(change)=\"getFileChange($event)\">\n</div>\n\n<table class=\"table\" *ngIf=\"filesTableData.length>0\">\n <thead>\n <tr>\n <th scope=\"col\">{{'FileExplorer::FileName' | abpLocalization}}</th>\n <th scope=\"col\">{{'FileExplorer::FileSize' | abpLocalization}}</th>\n <th scope=\"col\"></th>\n </tr>\n </thead>\n <tbody>\n <ng-container *ngFor=\"let item of filesTableData;let i =index\">\n <tr>\n <th scope=\"row\">\n <div>{{item.name}}</div>\n <div class=\"form-text text-danger\" *ngIf=\"item.size > sizeLimit\">{{'FileExplorer::ExceedsMaximumSize' | abpLocalization:_FileApiService.formatFileSize(sizeLimit)}}</div>\n </th>\n <td>{{item.fileSize}}</td>\n <td>\n <button class=\"btn btn-sm p-0 btn-light \" (click.stop)=\"deleteFileTableItem(i,item)\">\n <i class=\"fas fa-trash p-2\"></i>\n </button>\n </td>\n </tr>\n </ng-container>\n </tbody>\n</table>", styles: [""], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.StopPropagationDirective, selector: "[click.stop]", outputs: ["click.stop"] }, { kind: "pipe", type: i3.LocalizationPipe, name: "abpLocalization" }] });
86
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FileEditComponent, selector: "fe-file-edit", inputs: { multiple: "multiple", fileData: "fileData", limit: "limit" }, outputs: { fileDataChange: "fileDataChange" }, viewQueries: [{ propertyName: "fileEdit", first: true, predicate: ["fileEdit"], descendants: true, static: true }], ngImport: i0, template: "<div class=\"input-group mb-2\">\n <input type=\"file\" class=\"form-control\" #fileEdit [multiple]=\"_multiple\" (change)=\"getFileChange($event)\">\n</div>\n\n<table class=\"table\" *ngIf=\"filesTableData.length>0\">\n <thead>\n <tr>\n <th scope=\"col\"></th>\n <th scope=\"col\">{{'FileExplorer::FileName' | abpLocalization}}</th>\n <th scope=\"col\">{{'FileExplorer::FileSize' | abpLocalization}}</th>\n <th scope=\"col\"></th>\n </tr>\n </thead>\n <tbody>\n <ng-container *ngFor=\"let item of filesTableData;let i =index\">\n <tr>\n <td>\n <fe-file-preview [width]=\"'80px'\" [src]=\"item.src\" [name]=\"item.name\" [type]=\"item.type\" [preview]=\"true\"></fe-file-preview>\n </td>\n <th scope=\"row\">\n <div>{{item.name}}</div>\n <div class=\"form-text text-danger\" *ngIf=\"item.size > sizeLimit\">\n {{'FileExplorer::ExceedsMaximumSize' |\n abpLocalization:_FileApiService.formatFileSize(sizeLimit)}}</div>\n </th>\n <td>{{item.fileSize}}</td>\n <td>\n <button class=\"btn btn-sm p-0 btn-light \" (click.stop)=\"deleteFileTableItem(i,item)\">\n <i class=\"fas fa-trash p-2\"></i>\n </button>\n </td>\n </tr>\n </ng-container>\n </tbody>\n</table>", styles: [""], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.StopPropagationDirective, selector: "[click.stop]", outputs: ["click.stop"] }, { kind: "component", type: i4.FilePreviewComponent, selector: "fe-file-preview", inputs: ["width", "src", "preview", "type", "name"] }, { kind: "pipe", type: i3.LocalizationPipe, name: "abpLocalization" }] });
85
87
  }
86
88
  export { FileEditComponent };
87
89
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FileEditComponent, decorators: [{
88
90
  type: Component,
89
- args: [{ selector: 'fe-file-edit', template: "<div class=\"input-group mb-2\">\n <input type=\"file\" class=\"form-control\" #fileEdit [multiple]=\"_multiple\" accept=\".jpg,.jpeg,.png,.gif,.webp\"(change)=\"getFileChange($event)\">\n</div>\n\n<table class=\"table\" *ngIf=\"filesTableData.length>0\">\n <thead>\n <tr>\n <th scope=\"col\">{{'FileExplorer::FileName' | abpLocalization}}</th>\n <th scope=\"col\">{{'FileExplorer::FileSize' | abpLocalization}}</th>\n <th scope=\"col\"></th>\n </tr>\n </thead>\n <tbody>\n <ng-container *ngFor=\"let item of filesTableData;let i =index\">\n <tr>\n <th scope=\"row\">\n <div>{{item.name}}</div>\n <div class=\"form-text text-danger\" *ngIf=\"item.size > sizeLimit\">{{'FileExplorer::ExceedsMaximumSize' | abpLocalization:_FileApiService.formatFileSize(sizeLimit)}}</div>\n </th>\n <td>{{item.fileSize}}</td>\n <td>\n <button class=\"btn btn-sm p-0 btn-light \" (click.stop)=\"deleteFileTableItem(i,item)\">\n <i class=\"fas fa-trash p-2\"></i>\n </button>\n </td>\n </tr>\n </ng-container>\n </tbody>\n</table>" }]
91
+ args: [{ selector: 'fe-file-edit', template: "<div class=\"input-group mb-2\">\n <input type=\"file\" class=\"form-control\" #fileEdit [multiple]=\"_multiple\" (change)=\"getFileChange($event)\">\n</div>\n\n<table class=\"table\" *ngIf=\"filesTableData.length>0\">\n <thead>\n <tr>\n <th scope=\"col\"></th>\n <th scope=\"col\">{{'FileExplorer::FileName' | abpLocalization}}</th>\n <th scope=\"col\">{{'FileExplorer::FileSize' | abpLocalization}}</th>\n <th scope=\"col\"></th>\n </tr>\n </thead>\n <tbody>\n <ng-container *ngFor=\"let item of filesTableData;let i =index\">\n <tr>\n <td>\n <fe-file-preview [width]=\"'80px'\" [src]=\"item.src\" [name]=\"item.name\" [type]=\"item.type\" [preview]=\"true\"></fe-file-preview>\n </td>\n <th scope=\"row\">\n <div>{{item.name}}</div>\n <div class=\"form-text text-danger\" *ngIf=\"item.size > sizeLimit\">\n {{'FileExplorer::ExceedsMaximumSize' |\n abpLocalization:_FileApiService.formatFileSize(sizeLimit)}}</div>\n </th>\n <td>{{item.fileSize}}</td>\n <td>\n <button class=\"btn btn-sm p-0 btn-light \" (click.stop)=\"deleteFileTableItem(i,item)\">\n <i class=\"fas fa-trash p-2\"></i>\n </button>\n </td>\n </tr>\n </ng-container>\n </tbody>\n</table>" }]
90
92
  }], ctorParameters: function () { return [{ type: i1.FileApiService }]; }, propDecorators: { multiple: [{
91
93
  type: Input
92
94
  }], fileData: [{
@@ -99,4 +101,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
99
101
  type: ViewChild,
100
102
  args: ['fileEdit', { static: true }]
101
103
  }] } });
102
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1lZGl0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ZpbGUtZXhwbG9yZXIvc3JjL2xpYi9jb21wb25lbnRzL2ZpbGUtZWRpdC9maWxlLWVkaXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZmlsZS1leHBsb3Jlci9zcmMvbGliL2NvbXBvbmVudHMvZmlsZS1lZGl0L2ZpbGUtZWRpdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7QUFHOUYsTUFLYSxpQkFBaUI7SUFFbkI7SUFEVCxZQUNTLGVBQStCO1FBQS9CLG9CQUFlLEdBQWYsZUFBZSxDQUFnQjtJQUNwQyxDQUFDO0lBRUwsVUFBVTtJQUNWLFNBQVMsR0FBWSxJQUFJLENBQUE7SUFDekIsSUFDVyxRQUFRLENBQUMsQ0FBVTtRQUM1QixJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQztRQUNuQixJQUFJLENBQUMsRUFBRSxHQUFHO0lBQ1osQ0FBQztJQUNELGtCQUFrQjtJQUNsQixTQUFTLEdBQVUsRUFBRSxDQUFBO0lBQ3JCLElBQ1csUUFBUSxDQUFDLENBQVE7UUFDMUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUM7UUFDbkIsSUFBSSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUNoQixJQUFJLENBQUMsYUFBYSxDQUFDLEVBQUUsTUFBTSxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQTtTQUM3QztJQUNILENBQUM7SUFDRCxnQ0FBZ0M7SUFDdEIsY0FBYyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUE7SUFFN0M7O01BRUU7SUFDRixTQUFTLEdBQVcsT0FB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UkNSOUIsb3dDQTRCUTs7U0RwQkssaUJBQWlCOzRGQUFqQixpQkFBaUI7a0JBTDdCLFNBQVM7K0JBQ0UsY0FBYztxR0FZYixRQUFRO3NCQURsQixLQUFLO2dCQVFLLFFBQVE7c0JBRGxCLEtBQUs7Z0JBUUksY0FBYztzQkFBdkIsTUFBTTtnQkFPSSxLQUFLO3NCQURmLEtBQUs7Z0JBV21DLFFBQVE7c0JBQWhELFNBQVM7dUJBQUMsVUFBVSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZpbGVBcGlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZmlsZS1hcGkuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2ZlLWZpbGUtZWRpdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9maWxlLWVkaXQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9maWxlLWVkaXQuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBGaWxlRWRpdENvbXBvbmVudCB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBfRmlsZUFwaVNlcnZpY2U6IEZpbGVBcGlTZXJ2aWNlLFxuICApIHsgfVxuXG4gIC8qKuaYr+WQpuWkmumAiSAqL1xuICBfbXVsdGlwbGU6IGJvb2xlYW4gPSB0cnVlXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgbXVsdGlwbGUodjogYm9vbGVhbikge1xuICAgIHRoaXMuX211bHRpcGxlID0gdjtcbiAgICBpZiAodikgeyB9XG4gIH1cbiAgLyoq5paH5Lu25pWw5o2uLS3lt7LkuIrkvKDnmoTmlbDmja4gKi9cbiAgX2ZpbGVEYXRhOiBhbnlbXSA9IFtdXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgZmlsZURhdGEodjogYW55W10pIHtcbiAgICB0aGlzLl9maWxlRGF0YSA9IHY7XG4gICAgaWYgKHYubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5nZXRGaWxlQ2hhbmdlKHsgdGFyZ2V0OiB7IGZpbGVzOiB2IH0gfSlcbiAgICB9XG4gIH1cbiAgLyoqIOi3n+maj+ihqOWNleaPkOS6pC0t5bey5o+Q5Lqk55qE5pWw5o2u77yM5oiW6YCJ5oup55qE5pWw5o2u5rqQLS3lm57osIMqL1xuICBAT3V0cHV0KCkgZmlsZURhdGFDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyKClcblxuICAvKirmlofku7blpKflsI/pmZDliLYgXG4gICAqIEBwYXJhbSAxbWJcbiAgKi9cbiAgc2l6ZUxpbWl0OiBudW1iZXIgPSAxMDQ4NTc2XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgbGltaXQodjogbnVtYmVyKSB7XG4gICAgdGhpcy5zaXplTGltaXQgPSB2O1xuICB9XG5cbiAgLyoq5paH5Lu26KGo5qC85pWw5o2uICovXG4gIGZpbGVzVGFibGVEYXRhOiBhbnlbXSA9IFtdXG4gIC8qKiDlvoXliKDpmaTlt7LkuIrkvKDnmoTmlofku7bku6wqL1xuICBkZWxldGVUaGVVcGxvYWRlZEZpbGVzOiBhbnlbXSA9IFtdXG5cbiAgLyoq6I635Y+W5paH5Lu26YCJ5oup5qGG55qE5YWD57SgICovXG4gIEBWaWV3Q2hpbGQoJ2ZpbGVFZGl0JywgeyBzdGF0aWM6IHRydWUgfSkgZmlsZUVkaXQ6IEVsZW1lbnRSZWY7XG5cblxuICAvKirojrflj5bmlofku7bkv6Hmga/mlLnlj5ggKi9cbiAgYXN5bmMgZ2V0RmlsZUNoYW5nZShldmVudCkge1xuICAgIGxldCBmaWxlcyA9IG5ldyBBcnJheSguLi5ldmVudC50YXJnZXQuZmlsZXMpXG4gICAgLyoq6ZyA6KaB562J5b6Fc2V0ZmlsZVNpemVVbml0c+aJp+ihjOWujOWQjuWcqOaJp+ihjOWFtuS7luaWueazlS0t6ZyA6KaB5a6M5ZaEICovXG4gICAgYXdhaXQgdGhpcy53YWl0RmlsZVRvQWRkVGFibGUoZmlsZXMpXG4gICAgdGhpcy5maWxlSGFuZGxpbmcoKVxuICB9XG5cbiAgLyoq562J5b6F5bCG5paH5Lu25pWw5o2u5Yqg5YWl5Yiw5paH5Lu26KGo5qC85pWw5o2u5LitICovXG4gIHdhaXRGaWxlVG9BZGRUYWJsZShmaWxlcykge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShhc3luYyAocmVzb2x2ZSwgcmVqZWN0cykgPT4ge1xuICAgICAgdGhpcy5maWxlc1RhYmxlRGF0YS5wdXNoKC4uLmF3YWl0IHRoaXMuc2V0ZmlsZVNpemVVbml0cyhmaWxlcykpXG4gICAgICByZXNvbHZlKHRydWUpXG4gICAgfSlcbiAgfVxuXG4gIC8qKuWIoOmZpOaWh+S7tuihqOagvOeahOmhuSAqL1xuICBkZWxldGVGaWxlVGFibGVJdGVtKGluZGV4LCBpdGVtKSB7XG4gICAgdGhpcy5maWxlc1RhYmxlRGF0YS5zcGxpY2UoaW5kZXgsIDEpXG4gICAgaWYgKGl0ZW0uaWQpIHtcbiAgICAgIHRoaXMuZGVsZXRlVGhlVXBsb2FkZWRGaWxlcy5wdXNoKGl0ZW0pXG4gICAgfVxuICAgIHRoaXMuZmlsZUhhbmRsaW5nKClcbiAgfVxuXG4gIC8qKuaWh+S7tuWkhOeQhi3osIPnlKjlm57osIPlh73mlbAgKi9cbiAgZmlsZUhhbmRsaW5nKCkge1xuICAgIGxldCB0aGVGaWxlc1RvQmVVcGxvYWRlZCA9IHRoaXMuZmlsZXNUYWJsZURhdGEuZmlsdGVyKGVsID0+ICFlbC5pZClcbiAgICAvL+WIpOaWreWbvueJh+Wkp+Wwj+aYr+WQpui2hei/h+mZkOWIti3nlKjkuo7liKTmlq3ooajljZXmmK/lkKblhYHorrjmj5DkuqRcbiAgICBsZXQgaXNTdWJtaXQgPSAhdGhpcy5maWxlc1RhYmxlRGF0YS5zb21lKGVsID0+IGVsLnNpemUgPiB0aGlzLnNpemVMaW1pdCk7XG4gICAgdGhpcy5maWxlRGF0YUNoYW5nZS5lbWl0KHsgdGhlRmlsZXNUb0JlVXBsb2FkZWQsIGRlbGV0ZVRoZVVwbG9hZGVkRmlsZXM6IHRoaXMuZGVsZXRlVGhlVXBsb2FkZWRGaWxlcywgaXNTdWJtaXQgfSlcbiAgfVxuXG4gIC8qKuiuvue9ruWAvOaWh+S7tuWkp+Wwj+WNleS9jS8gKi9cbiAgYXN5bmMgc2V0ZmlsZVNpemVVbml0cyhmaWxlczogRmlsZVtdIHwgYW55W10pOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0cykgPT4ge1xuICAgICAgbGV0IGZvcm1hdHRlZEZpbGVzID0gW11cbiAgICAgIGZpbGVzLmZvckVhY2goYXN5bmMgKGZpbGUpID0+IHtcbiAgICAgICAgZmlsZS5maWxlU2l6ZSA9IHRoaXMuX0ZpbGVBcGlTZXJ2aWNlLmZvcm1hdEZpbGVTaXplKGZpbGUuc2l6ZSlcbiAgICAgICAgZm9ybWF0dGVkRmlsZXMucHVzaChmaWxlKVxuICAgICAgICAvL+iuvue9rumAieaLqeWbvueJh+eahOacrOWcsHVybFxuICAgICAgICBpZiAoIWZpbGUuc3JjKSBmaWxlLnNyYyA9IGF3YWl0IHRoaXMuX0ZpbGVBcGlTZXJ2aWNlLmdldEltYWdlTGFjb2xCYXNlNjRVcmwoZmlsZSk7XG4gICAgICB9KTtcbiAgICAgIHJlc29sdmUoZmlsZXMpXG4gICAgfSlcbiAgfVxuXG59XG4iLCI8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXAgbWItMlwiPlxuICAgIDxpbnB1dCB0eXBlPVwiZmlsZVwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgI2ZpbGVFZGl0IFttdWx0aXBsZV09XCJfbXVsdGlwbGVcIiBhY2NlcHQ9XCIuanBnLC5qcGVnLC5wbmcsLmdpZiwud2VicFwiKGNoYW5nZSk9XCJnZXRGaWxlQ2hhbmdlKCRldmVudClcIj5cbjwvZGl2PlxuXG48dGFibGUgY2xhc3M9XCJ0YWJsZVwiICpuZ0lmPVwiZmlsZXNUYWJsZURhdGEubGVuZ3RoPjBcIj5cbiAgICA8dGhlYWQ+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiPnt7J0ZpbGVFeHBsb3Jlcjo6RmlsZU5hbWUnIHwgYWJwTG9jYWxpemF0aW9ufX08L3RoPlxuICAgICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCI+e3snRmlsZUV4cGxvcmVyOjpGaWxlU2l6ZScgfCBhYnBMb2NhbGl6YXRpb259fTwvdGg+XG4gICAgICAgICAgICA8dGggc2NvcGU9XCJjb2xcIj48L3RoPlxuICAgICAgICA8L3RyPlxuICAgIDwvdGhlYWQ+XG4gICAgPHRib2R5PlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIGZpbGVzVGFibGVEYXRhO2xldCBpID1pbmRleFwiPlxuICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgIDx0aCBzY29wZT1cInJvd1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2Pnt7aXRlbS5uYW1lfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tdGV4dCB0ZXh0LWRhbmdlclwiICpuZ0lmPVwiaXRlbS5zaXplID4gc2l6ZUxpbWl0XCI+e3snRmlsZUV4cGxvcmVyOjpFeGNlZWRzTWF4aW11bVNpemUnIHwgYWJwTG9jYWxpemF0aW9uOl9GaWxlQXBpU2VydmljZS5mb3JtYXRGaWxlU2l6ZShzaXplTGltaXQpfX08L2Rpdj5cbiAgICAgICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgICAgIDx0ZD57e2l0ZW0uZmlsZVNpemV9fTwvdGQ+XG4gICAgICAgICAgICAgICAgPHRkPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1zbSBwLTAgYnRuLWxpZ2h0IFwiIChjbGljay5zdG9wKT1cImRlbGV0ZUZpbGVUYWJsZUl0ZW0oaSxpdGVtKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtdHJhc2ggcC0yXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgPC90cj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC90Ym9keT5cbjwvdGFibGU+Il19
104
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1lZGl0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ZpbGUtZXhwbG9yZXIvc3JjL2xpYi9jb21wb25lbnRzL2ZpbGUtZWRpdC9maWxlLWVkaXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZmlsZS1leHBsb3Jlci9zcmMvbGliL2NvbXBvbmVudHMvZmlsZS1lZGl0L2ZpbGUtZWRpdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7O0FBRzlGLE1BS2EsaUJBQWlCO0lBRW5CO0lBRFQsWUFDUyxlQUErQjtRQUEvQixvQkFBZSxHQUFmLGVBQWUsQ0FBZ0I7SUFDcEMsQ0FBQztJQUVMLFVBQVU7SUFDVixTQUFTLEdBQVksSUFBSSxDQUFBO0lBQ3pCLElBQ1csUUFBUSxDQUFDLENBQVU7UUFDNUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUM7UUFDbkIsSUFBSSxDQUFDLEVBQUUsR0FBRztJQUNaLENBQUM7SUFDRCxrQkFBa0I7SUFDbEIsU0FBUyxHQUFVLEVBQUUsQ0FBQTtJQUNyQixJQUNXLFFBQVEsQ0FBQyxDQUFRO1FBQzFCLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDO1FBQ25CLElBQUksQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDaEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxFQUFFLE1BQU0sRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUE7U0FDN0M7SUFDSCxDQUFDO0lBQ0QsZ0NBQWdDO0lBQ3RCLGNBQWMsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFBO0lBRTdDOztNQUVFO0lBQ0YsU0FBUyxHQUFXLE9B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QUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQzt3R0F6RlUsaUJBQWlCOzRGQUFqQixpQkFBaUIsK1JDUjlCLGdnREFrQ1E7O1NEMUJLLGlCQUFpQjs0RkFBakIsaUJBQWlCO2tCQUw3QixTQUFTOytCQUNFLGNBQWM7cUdBWWIsUUFBUTtzQkFEbEIsS0FBSztnQkFRSyxRQUFRO3NCQURsQixLQUFLO2dCQVFJLGNBQWM7c0JBQXZCLE1BQU07Z0JBT0ksS0FBSztzQkFEZixLQUFLO2dCQVdtQyxRQUFRO3NCQUFoRCxTQUFTO3VCQUFDLFVBQVUsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGaWxlQXBpU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2ZpbGUtYXBpLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdmZS1maWxlLWVkaXQnLFxuICB0ZW1wbGF0ZVVybDogJy4vZmlsZS1lZGl0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZmlsZS1lZGl0LmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgRmlsZUVkaXRDb21wb25lbnQge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgX0ZpbGVBcGlTZXJ2aWNlOiBGaWxlQXBpU2VydmljZSxcbiAgKSB7IH1cblxuICAvKirmmK/lkKblpJrpgIkgKi9cbiAgX211bHRpcGxlOiBib29sZWFuID0gdHJ1ZVxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IG11bHRpcGxlKHY6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9tdWx0aXBsZSA9IHY7XG4gICAgaWYgKHYpIHsgfVxuICB9XG4gIC8qKuaWh+S7tuaVsOaNri0t5bey5LiK5Lyg55qE5pWw5o2uICovXG4gIF9maWxlRGF0YTogYW55W10gPSBbXVxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGZpbGVEYXRhKHY6IGFueVtdKSB7XG4gICAgdGhpcy5fZmlsZURhdGEgPSB2O1xuICAgIGlmICh2Lmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuZ2V0RmlsZUNoYW5nZSh7IHRhcmdldDogeyBmaWxlczogdiB9IH0pXG4gICAgfVxuICB9XG4gIC8qKiDot5/pmo/ooajljZXmj5DkuqQtLeW3suaPkOS6pOeahOaVsOaNru+8jOaIlumAieaLqeeahOaVsOaNrua6kC0t5Zue6LCDKi9cbiAgQE91dHB1dCgpIGZpbGVEYXRhQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpXG5cbiAgLyoq5paH5Lu25aSn5bCP6ZmQ5Yi2IFxuICAgKiBAcGFyYW0gMW1iXG4gICovXG4gIHNpemVMaW1pdDogbnVtYmVyID0gMTA0ODU3NlxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGxpbWl0KHY6IG51bWJlcikge1xuICAgIHRoaXMuc2l6ZUxpbWl0ID0gdjtcbiAgfVxuXG4gIC8qKuaWh+S7tuihqOagvOaVsOaNriAqL1xuICBmaWxlc1RhYmxlRGF0YTogYW55W10gPSBbXVxuICAvKiog5b6F5Yig6Zmk5bey5LiK5Lyg55qE5paH5Lu25LusKi9cbiAgZGVsZXRlVGhlVXBsb2FkZWRGaWxlczogYW55W10gPSBbXVxuXG4gIC8qKuiOt+WPluaWh+S7tumAieaLqeahhueahOWFg+e0oCAqL1xuICBAVmlld0NoaWxkKCdmaWxlRWRpdCcsIHsgc3RhdGljOiB0cnVlIH0pIGZpbGVFZGl0OiBFbGVtZW50UmVmO1xuXG5cbiAgLyoq6I635Y+W5paH5Lu25L+h5oGv5pS55Y+YICovXG4gIGFzeW5jIGdldEZpbGVDaGFuZ2UoZXZlbnQpIHtcbiAgICBsZXQgZmlsZXMgPSBuZXcgQXJyYXkoLi4uZXZlbnQudGFyZ2V0LmZpbGVzKVxuICAgIGNvbnNvbGUubG9nKGZpbGVzLCfojrflj5bmlofku7bkv6Hmga/mlLnlj5gnKTtcbiAgICBcbiAgICAvKirpnIDopoHnrYnlvoVzZXRmaWxlU2l6ZVVuaXRz5omn6KGM5a6M5ZCO5Zyo5omn6KGM5YW25LuW5pa55rOVLS3pnIDopoHlrozlloQgKi9cbiAgICBhd2FpdCB0aGlzLndhaXRGaWxlVG9BZGRUYWJsZShmaWxlcylcbiAgICB0aGlzLmZpbGVIYW5kbGluZygpXG4gIH1cblxuICAvKirnrYnlvoXlsIbmlofku7bmlbDmja7liqDlhaXliLDmlofku7booajmoLzmlbDmja7kuK0gKi9cbiAgd2FpdEZpbGVUb0FkZFRhYmxlKGZpbGVzKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGFzeW5jIChyZXNvbHZlLCByZWplY3RzKSA9PiB7XG4gICAgICB0aGlzLmZpbGVzVGFibGVEYXRhLnB1c2goLi4uYXdhaXQgdGhpcy5zZXRmaWxlU2l6ZVVuaXRzKGZpbGVzKSlcbiAgICAgIHJlc29sdmUodHJ1ZSlcbiAgICB9KVxuICB9XG5cbiAgLyoq5Yig6Zmk5paH5Lu26KGo5qC855qE6aG5ICovXG4gIGRlbGV0ZUZpbGVUYWJsZUl0ZW0oaW5kZXgsIGl0ZW0pIHtcbiAgICB0aGlzLmZpbGVzVGFibGVEYXRhLnNwbGljZShpbmRleCwgMSlcbiAgICBpZiAoaXRlbS5pZCkge1xuICAgICAgdGhpcy5kZWxldGVUaGVVcGxvYWRlZEZpbGVzLnB1c2goaXRlbSlcbiAgICB9XG4gICAgdGhpcy5maWxlSGFuZGxpbmcoKVxuICB9XG5cbiAgLyoq5paH5Lu25aSE55CGLeiwg+eUqOWbnuiwg+WHveaVsCAqL1xuICBmaWxlSGFuZGxpbmcoKSB7XG4gICAgbGV0IHRoZUZpbGVzVG9CZVVwbG9hZGVkID0gdGhpcy5maWxlc1RhYmxlRGF0YS5maWx0ZXIoZWwgPT4gIWVsLmlkKVxuICAgIC8v5Yik5pat5Zu+54mH5aSn5bCP5piv5ZCm6LaF6L+H6ZmQ5Yi2LeeUqOS6juWIpOaWreihqOWNleaYr+WQpuWFgeiuuOaPkOS6pFxuICAgIGxldCBpc1N1Ym1pdCA9ICF0aGlzLmZpbGVzVGFibGVEYXRhLnNvbWUoZWwgPT4gZWwuc2l6ZSA+IHRoaXMuc2l6ZUxpbWl0KTtcbiAgICB0aGlzLmZpbGVEYXRhQ2hhbmdlLmVtaXQoeyB0aGVGaWxlc1RvQmVVcGxvYWRlZCwgZGVsZXRlVGhlVXBsb2FkZWRGaWxlczogdGhpcy5kZWxldGVUaGVVcGxvYWRlZEZpbGVzLCBpc1N1Ym1pdCB9KVxuICB9XG5cbiAgLyoq6K6+572u5YC85paH5Lu25aSn5bCP5Y2V5L2NLyAqL1xuICBhc3luYyBzZXRmaWxlU2l6ZVVuaXRzKGZpbGVzOiBGaWxlW10gfCBhbnlbXSk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3RzKSA9PiB7XG4gICAgICBsZXQgZm9ybWF0dGVkRmlsZXMgPSBbXVxuICAgICAgZmlsZXMuZm9yRWFjaChhc3luYyAoZmlsZSkgPT4ge1xuICAgICAgICBmaWxlLmZpbGVTaXplID0gdGhpcy5fRmlsZUFwaVNlcnZpY2UuZm9ybWF0RmlsZVNpemUoZmlsZS5zaXplKVxuICAgICAgICBmb3JtYXR0ZWRGaWxlcy5wdXNoKGZpbGUpXG4gICAgICAgIC8v6K6+572u6YCJ5oup5Zu+54mH55qE5pys5ZywdXJsXG4gICAgICAgIGlmICghZmlsZS5zcmMpIGZpbGUuc3JjID0gYXdhaXQgdGhpcy5fRmlsZUFwaVNlcnZpY2UuZ2V0SW1hZ2VMYWNvbEJhc2U2NFVybChmaWxlKTtcbiAgICAgIH0pO1xuICAgICAgcmVzb2x2ZShmaWxlcylcbiAgICB9KVxuICB9XG5cbn1cbiIsIjxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cCBtYi0yXCI+XG4gICAgPGlucHV0IHR5cGU9XCJmaWxlXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiAjZmlsZUVkaXQgW211bHRpcGxlXT1cIl9tdWx0aXBsZVwiIChjaGFuZ2UpPVwiZ2V0RmlsZUNoYW5nZSgkZXZlbnQpXCI+XG48L2Rpdj5cblxuPHRhYmxlIGNsYXNzPVwidGFibGVcIiAqbmdJZj1cImZpbGVzVGFibGVEYXRhLmxlbmd0aD4wXCI+XG4gICAgPHRoZWFkPlxuICAgICAgICA8dHI+XG4gICAgICAgICAgICA8dGggc2NvcGU9XCJjb2xcIj48L3RoPlxuICAgICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCI+e3snRmlsZUV4cGxvcmVyOjpGaWxlTmFtZScgfCBhYnBMb2NhbGl6YXRpb259fTwvdGg+XG4gICAgICAgICAgICA8dGggc2NvcGU9XCJjb2xcIj57eydGaWxlRXhwbG9yZXI6OkZpbGVTaXplJyB8IGFicExvY2FsaXphdGlvbn19PC90aD5cbiAgICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiPjwvdGg+XG4gICAgICAgIDwvdHI+XG4gICAgPC90aGVhZD5cbiAgICA8dGJvZHk+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZmlsZXNUYWJsZURhdGE7bGV0IGkgPWluZGV4XCI+XG4gICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgPHRkPlxuICAgICAgICAgICAgICAgICAgICA8ZmUtZmlsZS1wcmV2aWV3IFt3aWR0aF09XCInODBweCdcIiBbc3JjXT1cIml0ZW0uc3JjXCIgW25hbWVdPVwiaXRlbS5uYW1lXCIgW3R5cGVdPVwiaXRlbS50eXBlXCIgW3ByZXZpZXddPVwidHJ1ZVwiPjwvZmUtZmlsZS1wcmV2aWV3PlxuICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgPHRoIHNjb3BlPVwicm93XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXY+e3tpdGVtLm5hbWV9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS10ZXh0IHRleHQtZGFuZ2VyXCIgKm5nSWY9XCJpdGVtLnNpemUgPiBzaXplTGltaXRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7J0ZpbGVFeHBsb3Jlcjo6RXhjZWVkc01heGltdW1TaXplJyB8XG4gICAgICAgICAgICAgICAgICAgICAgICBhYnBMb2NhbGl6YXRpb246X0ZpbGVBcGlTZXJ2aWNlLmZvcm1hdEZpbGVTaXplKHNpemVMaW1pdCl9fTwvZGl2PlxuICAgICAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICAgICAgPHRkPnt7aXRlbS5maWxlU2l6ZX19PC90ZD5cbiAgICAgICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXNtIHAtMCBidG4tbGlnaHQgXCIgKGNsaWNrLnN0b3ApPVwiZGVsZXRlRmlsZVRhYmxlSXRlbShpLGl0ZW0pXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS10cmFzaCBwLTJcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICA8L3RyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L3Rib2R5PlxuPC90YWJsZT4iXX0=
@@ -9,6 +9,7 @@ import * as i4 from "../../services/file-api.service";
9
9
  import * as i5 from "@angular/common";
10
10
  import * as i6 from "@swimlane/ngx-datatable";
11
11
  import * as i7 from "../file-modal-tree/file-modal-tree.component";
12
+ import * as i8 from "../../previews/file-preview.component";
12
13
  var that;
13
14
  class FileModalComponent {
14
15
  _FileService;
@@ -37,7 +38,7 @@ class FileModalComponent {
37
38
  }
38
39
  }
39
40
  /**是否多选 */
40
- _multiple = true;
41
+ _multiple = false;
41
42
  set multiple(v) {
42
43
  this._multiple = v;
43
44
  if (v) { }
@@ -240,7 +241,7 @@ class FileModalComponent {
240
241
  // Provide this token if you want a different debounce time.
241
242
  // Default is 300. Cannot be 0. Any value below 100 is not recommended.
242
243
  { provide: LIST_QUERY_DEBOUNCE_TIME, useValue: 500 },
243
- ], usesOnChanges: true, ngImport: i0, template: "<abp-modal [(visible)]=\"ModalOpen\" (visibleChange)=\"ModalVisibleChange($event)\"\n [options]=\"{ size: 'xl', scrollable: false }\">\n <ng-template #abpHeader>\n <h3>{{'FileExplorer::FileExplorer' | abpLocalization}}</h3>\n </ng-template>\n <ng-template #abpBody>\n <div class=\"row file-explorer-modal-body file-modal\">\n <div class=\"col-3\" style=\"overflow: auto; height: calc(100vh - 240px)\">\n <fe-file-modal-tree [theSelectedTreeNode]=\"_theSelectedTreeNode\" (nodeClick)=\"_nodeClick($event)\"\n [fileContainerName]=\"_fileContainerName\"></fe-file-modal-tree>\n </div>\n <div class=\"col-9\" style=\"height: calc(100vh - 240px)\">\n <div class=\"mb-2 d-flex justify-content-between align-items-center\">\n <div class=\"btn-link\" role=button style=\"flex: 2\" (click)=\"lookAllFile()\">{{'FileExplorer::AllFiles' | abpLocalization}}</div>\n <div class=\"input-group form-file\" style=\"flex: 2\">\n <input type=\"file\" class=\"form-control\" #fileEdit [multiple]=\"_multiple\" accept=\".jpg,.jpeg,.png,.gif,.webp\"\n (change)=\"getFileChange($event)\" />\n </div>\n </div>\n <div>\n <ngx-datatable class=\"material container-height\" [rows]=\"data.items\" [list]=\"list\" columnMode=\"flex\"\n [columns]=\"columns\" [headerHeight]=\"50\" [footerHeight]=\"50\" rowHeight=\"auto\" [scrollbarV]=\"true\"\n [virtualization]=\"false\" [externalPaging]=\"true\" [count]=\"data.totalCount\" [selected]=\"selectedTable\"\n [selectCheck]=\"selectCheck\" [selectionType]=\"SelectionType.multiClick\" (select)=\"onSelectTableItem($event)\">\n <ngx-datatable-column [width]=\"50\" prop=\"id\" [sortable]=\"false\" [canAutoResize]=\"false\" [draggable]=\"false\"\n [resizeable]=\"false\">\n <ng-template ngx-datatable-header-template let-value=\"value\" let-allRowsSelected=\"allRowsSelected\"\n let-selectFn=\"selectFn\">\n <input type=\"checkbox\" class=\"form-check-input\" [checked]=\"allRowsSelected\"\n (change)=\"selectFn(!allRowsSelected)\" />\n </ng-template>\n <ng-template ngx-datatable-cell-template let-row=\"row\" let-value=\"value\" let-isSelected=\"isSelected\"\n let-onCheckboxChangeFn=\"onCheckboxChangeFn\">\n <input type=\"checkbox\" class=\"form-check-input\" [checked]=\"selectedcheckbox(value)\"\n (change)=\"onCheckboxChangeFn($event)\" />\n </ng-template>\n </ngx-datatable-column>\n <ngx-datatable-column [name]=\"'FileExplorer::FileName' | abpLocalization\" prop=\"name\" [flexGrow]=\"4\">\n <ng-template let-row=\"row\" let-value=\"value\" ngx-datatable-cell-template>\n {{ value }}\n </ng-template>\n </ngx-datatable-column>\n <ngx-datatable-column [name]=\"'FileExplorer::FileSize' | abpLocalization\" prop=\"size\" [flexGrow]=\"1.5\">\n <ng-template let-row=\"row\" let-value=\"value\" ngx-datatable-cell-template>\n {{ _FileApiService.formatFileSize(value) }}\n </ng-template>\n </ngx-datatable-column>\n <ngx-datatable-column [name]=\"'FileExplorer::Directory' | abpLocalization\" prop=\"cellName\" [flexGrow]=\"1\">\n <ng-template let-row=\"row\" let-value=\"value\" ngx-datatable-cell-template>\n {{ value }}\n </ng-template>\n </ngx-datatable-column>\n <ngx-datatable-column [name]=\"'FileExplorer::CreationTime' | abpLocalization\" prop=\"creationTime\" [flexGrow]=\"2\">\n <ng-template let-row=\"row\" let-value=\"value\" ngx-datatable-cell-template>\n {{ value | date : 'YYYY/MM/dd HH:m:s' }}\n </ng-template>\n </ngx-datatable-column>\n <ngx-datatable-column [flexGrow]=\"1\">\n <ng-template let-row=\"row\" let-value=\"value\" ngx-datatable-cell-template>\n <button class=\"btn btn-sm btn-light p-0\" (click.stop)=\"deleteFile(row)\">\n <i class=\"fas fa-trash text-primary p-2\"></i>\n </button>\n </ng-template>\n </ngx-datatable-column>\n </ngx-datatable>\n </div>\n <div *ngIf=\"uploadPictureStatusList.length > 0\"\n class=\"position-fixed bottom-0 end-0 shadow-lg file-status-modal border bg-white p-1 m-5\"\n style=\"border-radius: 10px\">\n <div class=\"card\">\n <div class=\"card-header d-flex align-items-center justify-content-between p-0 py-1 border-bottom\">\n <div>{{'FileExplorer::UploadFiles' | abpLocalization}}</div>\n <button type=\"button\" class=\"btn-close\" aria-label=\"Close\" (click.stop)=\"closeFileStatusModal()\"></button>\n </div>\n <div class=\"card-body\">\n <table class=\"table\">\n <thead>\n <tr>\n <th scope=\"col\">{{'FileExplorer::FileName' | abpLocalization}}</th>\n <th scope=\"col\">{{'FileExplorer::FileSize' | abpLocalization}}</th>\n <th scope=\"col\"></th>\n </tr>\n </thead>\n <tbody>\n <ng-container *ngFor=\"let item of uploadPictureStatusList; let i = index\">\n <tr>\n <th scope=\"row\">\n <div>{{ item.name }}</div>\n <div class=\"form-text text-danger\" *ngIf=\"item.size > sizeLimit\">\n {{'FileExplorer::ExceedsMaximumSize' | abpLocalization:_FileApiService.formatFileSize(sizeLimit)}}\n </div>\n </th>\n <td>{{ item.fileSize }}</td>\n <td>\n <i *ngIf=\"item.status == 1\" class=\"fas fa-check text-primary\"></i>\n <i *ngIf=\"item.status == 2\" class=\"fas fa-times-circle text-danger\"></i>\n </td>\n </tr>\n </ng-container>\n </tbody>\n </table>\n </div>\n </div>\n </div>\n </div>\n </div>\n </ng-template>\n <ng-template #abpFooter>\n <button type=\"button\" class=\"btn btn-secondary\" abpClose>{{'AbpUi::Close' | abpLocalization}}</button>\n <abp-button iconClass=\"fa fa-check\" (click)=\"modalSave()\">{{'AbpUi::Save' | abpLocalization}}</abp-button>\n </ng-template>\n</abp-modal>", styles: ["::ng-deep .file-modal .container-height{height:calc(100vh - 284px)}::ng-deep .file-modal .file-status-modal{background:#fff}::ng-deep .file-modal .file-status-modal .card-body{max-height:300px;overflow-y:auto}::ng-deep .file-modal .ngx-datatable.material.single-selection .datatable-body-row.active,::ng-deep .file-modal .ngx-datatable.material.single-selection .datatable-body-row.active .datatable-row-group,::ng-deep .file-modal .ngx-datatable.material.multi-selection .datatable-body-row.active,::ng-deep .file-modal .ngx-datatable.material.multi-selection .datatable-body-row.active .datatable-row-group,::ng-deep .file-modal .ngx-datatable.material.multi-click-selection .datatable-body-row.active,::ng-deep .file-modal .ngx-datatable.material.multi-click-selection .datatable-body-row.active .datatable-row-group{background-color:transparent!important}::ng-deep .file-modal .ant-tree .ant-tree-node-content-wrapper{padding:0}::ng-deep .file-modal .ant-tree .ant-tree-node-content-wrapper .custom-node{width:100%}::ng-deep .file-modal .ant-tree .ant-tree-node-content-wrapper .selected{background-color:var(--lpx-brand)!important}::ng-deep .file-modal .ant-tree .ant-tree-node-content-wrapper .selected .btn{color:var(--lpx-navbar-color)}::ng-deep .file-modal .ant-tree .ant-tree-node-content-wrapper.ant-tree-node-selected{background-color:transparent}::ng-deep .file-modal .ngx-datatable.fixed-header .datatable-header .datatable-header-inner .datatable-header-cell,::ng-deep .file-modal .ngx-datatable.material .datatable-body .datatable-body-row .datatable-body-cell{overflow:initial;line-break:anywhere}\n"], dependencies: [{ kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.StopPropagationDirective, selector: "[click.stop]", outputs: ["click.stop"] }, { kind: "component", type: i6.DatatableComponent, selector: "ngx-datatable", inputs: ["targetMarkerTemplate", "rows", "groupRowsBy", "groupedRows", "columns", "selected", "scrollbarV", "scrollbarH", "rowHeight", "columnMode", "headerHeight", "footerHeight", "externalPaging", "externalSorting", "limit", "count", "offset", "loadingIndicator", "selectionType", "reorderable", "swapColumns", "sortType", "sorts", "cssClasses", "messages", "rowClass", "selectCheck", "displayCheck", "groupExpansionDefault", "trackByProp", "selectAllRowsOnPage", "virtualization", "treeFromRelation", "treeToRelation", "summaryRow", "summaryHeight", "summaryPosition", "rowIdentity"], outputs: ["scroll", "activate", "select", "sort", "page", "reorder", "resize", "tableContextmenu", "treeAction"] }, { kind: "directive", type: i6.DataTableColumnDirective, selector: "ngx-datatable-column", inputs: ["name", "prop", "frozenLeft", "frozenRight", "flexGrow", "resizeable", "comparator", "pipe", "sortable", "draggable", "canAutoResize", "minWidth", "width", "maxWidth", "checkboxable", "headerCheckboxable", "headerClass", "cellClass", "isTreeColumn", "treeLevelIndent", "summaryFunc", "summaryTemplate", "cellTemplate", "headerTemplate", "treeToggleTemplate"] }, { kind: "directive", type: i6.DataTableColumnHeaderDirective, selector: "[ngx-datatable-header-template]" }, { kind: "directive", type: i6.DataTableColumnCellDirective, selector: "[ngx-datatable-cell-template]" }, { kind: "component", type: i2.ButtonComponent, selector: "abp-button", inputs: ["buttonId", "buttonClass", "buttonType", "formName", "iconClass", "loading", "disabled", "attributes"], outputs: ["click", "focus", "blur", "abpClick", "abpFocus", "abpBlur"] }, { kind: "component", type: i2.ModalComponent, selector: "abp-modal", inputs: ["visible", "busy", "options", "suppressUnsavedChangesWarning"], outputs: ["visibleChange", "init", "appear", "disappear"] }, { kind: "directive", type: i2.NgxDatatableListDirective, selector: "ngx-datatable[list]", inputs: ["list"], exportAs: ["ngxDatatableList"] }, { kind: "directive", type: i2.ModalCloseDirective, selector: "[abpClose]" }, { kind: "component", type: i7.FileModalTreeComponent, selector: "fe-file-modal-tree", inputs: ["theSelectedTreeNode", "fileContainerName"], outputs: ["nodeClick"] }, { kind: "pipe", type: i5.DatePipe, name: "date" }, { kind: "pipe", type: i3.LocalizationPipe, name: "abpLocalization" }] });
244
+ ], usesOnChanges: true, ngImport: i0, template: "<abp-modal [(visible)]=\"ModalOpen\" (visibleChange)=\"ModalVisibleChange($event)\"\n [options]=\"{ size: 'xl', scrollable: false }\">\n <ng-template #abpHeader>\n <h3>{{'FileExplorer::FileExplorer' | abpLocalization}}</h3>\n </ng-template>\n <ng-template #abpBody>\n <div class=\"row file-explorer-modal-body file-modal\">\n <div class=\"col-3\" style=\"overflow: auto; height: calc(100vh - 240px)\">\n <fe-file-modal-tree [theSelectedTreeNode]=\"_theSelectedTreeNode\" (nodeClick)=\"_nodeClick($event)\"\n [fileContainerName]=\"_fileContainerName\"></fe-file-modal-tree>\n </div>\n <div class=\"col-9\" style=\"height: calc(100vh - 240px)\">\n <div class=\"mb-2 d-flex justify-content-between align-items-center\">\n <div class=\"btn-link\" role=button style=\"flex: 2\" (click)=\"lookAllFile()\">{{'FileExplorer::AllFiles' | abpLocalization}}</div>\n <div class=\"input-group form-file\" style=\"flex: 2\">\n <input type=\"file\" class=\"form-control\" #fileEdit [multiple]=\"_multiple\" \n (change)=\"getFileChange($event)\" />\n <!-- accept=\".jpg,.jpeg,.png,.gif,.webp\" -->\n </div>\n </div>\n <div>\n <ngx-datatable class=\"material container-height\" [rows]=\"data.items\" [list]=\"list\" columnMode=\"flex\"\n [columns]=\"columns\" [headerHeight]=\"50\" [footerHeight]=\"50\" rowHeight=\"auto\" [scrollbarV]=\"true\"\n [virtualization]=\"false\" [externalPaging]=\"true\" [count]=\"data.totalCount\" [selected]=\"selectedTable\"\n [selectCheck]=\"selectCheck\" [selectionType]=\"_multiple?SelectionType.multiClick:SelectionType.single\" (select)=\"onSelectTableItem($event)\">\n <ngx-datatable-column [width]=\"50\" prop=\"id\" [sortable]=\"false\" [canAutoResize]=\"false\" [draggable]=\"false\"\n [resizeable]=\"false\">\n <ng-template ngx-datatable-header-template let-value=\"value\" let-allRowsSelected=\"allRowsSelected\"\n let-selectFn=\"selectFn\">\n <input type=\"checkbox\" class=\"form-check-input\" [checked]=\"allRowsSelected\"\n (change)=\"selectFn(!allRowsSelected)\" />\n </ng-template>\n <ng-template ngx-datatable-cell-template let-row=\"row\" let-value=\"value\" let-isSelected=\"isSelected\"\n let-onCheckboxChangeFn=\"onCheckboxChangeFn\">\n <input type=\"checkbox\" class=\"form-check-input\" [checked]=\"selectedcheckbox(value)\"\n (change)=\"onCheckboxChangeFn($event)\" />\n </ng-template>\n </ngx-datatable-column>\n <ngx-datatable-column [flexGrow]=\"2\">\n <ng-template let-row=\"row\" let-value=\"value\" ngx-datatable-cell-template>\n <fe-file-preview [width]=\"'80px'\" [src]=\"row.url\" [name]=\"row.name\" [type]=\"row.mimeType\" [preview]=\"true\"></fe-file-preview>\n </ng-template>\n </ngx-datatable-column>\n <ngx-datatable-column [name]=\"'FileExplorer::FileName' | abpLocalization\" prop=\"name\" [flexGrow]=\"4\">\n <ng-template let-row=\"row\" let-value=\"value\" ngx-datatable-cell-template>\n {{ value }}\n </ng-template>\n </ngx-datatable-column>\n <ngx-datatable-column [name]=\"'FileExplorer::FileSize' | abpLocalization\" prop=\"size\" [flexGrow]=\"1.5\">\n <ng-template let-row=\"row\" let-value=\"value\" ngx-datatable-cell-template>\n {{ _FileApiService.formatFileSize(value) }}\n </ng-template>\n </ngx-datatable-column>\n <ngx-datatable-column [name]=\"'FileExplorer::Directory' | abpLocalization\" prop=\"cellName\" [flexGrow]=\"1\">\n <ng-template let-row=\"row\" let-value=\"value\" ngx-datatable-cell-template>\n {{ value }}\n </ng-template>\n </ngx-datatable-column>\n <ngx-datatable-column [name]=\"'FileExplorer::CreationTime' | abpLocalization\" prop=\"creationTime\" [flexGrow]=\"2\">\n <ng-template let-row=\"row\" let-value=\"value\" ngx-datatable-cell-template>\n {{ value | date : 'YYYY/MM/dd HH:m:s' }}\n </ng-template>\n </ngx-datatable-column>\n <ngx-datatable-column [flexGrow]=\"1\">\n <ng-template let-row=\"row\" let-value=\"value\" ngx-datatable-cell-template>\n <button class=\"btn btn-sm btn-light p-0\" (click.stop)=\"deleteFile(row)\">\n <i class=\"fas fa-trash text-primary p-2\"></i>\n </button>\n </ng-template>\n </ngx-datatable-column>\n </ngx-datatable>\n </div>\n <div *ngIf=\"uploadPictureStatusList.length > 0\"\n class=\"position-fixed bottom-0 end-0 shadow-lg file-status-modal m-5\"\n style=\"border-radius: 10px\">\n <div class=\"card p-1\">\n <div class=\"card-header d-flex align-items-center justify-content-between p-0 py-1 border-bottom\">\n <div>{{'FileExplorer::UploadFiles' | abpLocalization}}</div>\n <button type=\"button\" class=\"btn-close\" aria-label=\"Close\" (click.stop)=\"closeFileStatusModal()\"></button>\n </div>\n <div class=\"card-body\">\n <table class=\"table\">\n <thead>\n <tr>\n <th scope=\"col\">{{'FileExplorer::FileName' | abpLocalization}}</th>\n <th scope=\"col\">{{'FileExplorer::FileSize' | abpLocalization}}</th>\n <th scope=\"col\"></th>\n </tr>\n </thead>\n <tbody>\n <ng-container *ngFor=\"let item of uploadPictureStatusList; let i = index\">\n <tr>\n <th scope=\"row\">\n <div>{{ item.name }}</div>\n <div class=\"form-text text-danger\" *ngIf=\"item.size > sizeLimit\">\n {{'FileExplorer::ExceedsMaximumSize' | abpLocalization:_FileApiService.formatFileSize(sizeLimit)}}\n </div>\n </th>\n <td>{{ item.fileSize }}</td>\n <td>\n <i *ngIf=\"item.status == 1\" class=\"fas fa-check text-primary\"></i>\n <i *ngIf=\"item.status == 2\" class=\"fas fa-times-circle text-danger\"></i>\n </td>\n </tr>\n </ng-container>\n </tbody>\n </table>\n </div>\n </div>\n </div>\n </div>\n </div>\n </ng-template>\n <ng-template #abpFooter>\n <button type=\"button\" class=\"btn btn-secondary\" abpClose>{{'AbpUi::Close' | abpLocalization}}</button>\n <abp-button iconClass=\"fa fa-check\" (click)=\"modalSave()\">{{'AbpUi::Save' | abpLocalization}}</abp-button>\n </ng-template>\n</abp-modal>", styles: ["::ng-deep .file-modal .container-height{height:calc(100vh - 284px)}::ng-deep .file-modal .file-status-modal{background:#fff}::ng-deep .file-modal .file-status-modal .card-body{max-height:300px;overflow-y:auto}::ng-deep .file-modal .ngx-datatable.material.single-selection .datatable-body-row.active,::ng-deep .file-modal .ngx-datatable.material.single-selection .datatable-body-row.active .datatable-row-group,::ng-deep .file-modal .ngx-datatable.material.multi-selection .datatable-body-row.active,::ng-deep .file-modal .ngx-datatable.material.multi-selection .datatable-body-row.active .datatable-row-group,::ng-deep .file-modal .ngx-datatable.material.multi-click-selection .datatable-body-row.active,::ng-deep .file-modal .ngx-datatable.material.multi-click-selection .datatable-body-row.active .datatable-row-group{background-color:transparent!important}::ng-deep .file-modal .ant-tree .ant-tree-node-content-wrapper{padding:0}::ng-deep .file-modal .ant-tree .ant-tree-node-content-wrapper .custom-node{width:100%}::ng-deep .file-modal .ant-tree .ant-tree-node-content-wrapper .selected{background-color:var(--lpx-brand)!important}::ng-deep .file-modal .ant-tree .ant-tree-node-content-wrapper .selected .btn{color:var(--lpx-navbar-color)}::ng-deep .file-modal .ant-tree .ant-tree-node-content-wrapper.ant-tree-node-selected{background-color:transparent}::ng-deep .file-modal .ngx-datatable.fixed-header .datatable-header .datatable-header-inner .datatable-header-cell,::ng-deep .file-modal .ngx-datatable.material .datatable-body .datatable-body-row .datatable-body-cell{overflow:initial;line-break:anywhere}\n"], dependencies: [{ kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.StopPropagationDirective, selector: "[click.stop]", outputs: ["click.stop"] }, { kind: "component", type: i6.DatatableComponent, selector: "ngx-datatable", inputs: ["targetMarkerTemplate", "rows", "groupRowsBy", "groupedRows", "columns", "selected", "scrollbarV", "scrollbarH", "rowHeight", "columnMode", "headerHeight", "footerHeight", "externalPaging", "externalSorting", "limit", "count", "offset", "loadingIndicator", "selectionType", "reorderable", "swapColumns", "sortType", "sorts", "cssClasses", "messages", "rowClass", "selectCheck", "displayCheck", "groupExpansionDefault", "trackByProp", "selectAllRowsOnPage", "virtualization", "treeFromRelation", "treeToRelation", "summaryRow", "summaryHeight", "summaryPosition", "rowIdentity"], outputs: ["scroll", "activate", "select", "sort", "page", "reorder", "resize", "tableContextmenu", "treeAction"] }, { kind: "directive", type: i6.DataTableColumnDirective, selector: "ngx-datatable-column", inputs: ["name", "prop", "frozenLeft", "frozenRight", "flexGrow", "resizeable", "comparator", "pipe", "sortable", "draggable", "canAutoResize", "minWidth", "width", "maxWidth", "checkboxable", "headerCheckboxable", "headerClass", "cellClass", "isTreeColumn", "treeLevelIndent", "summaryFunc", "summaryTemplate", "cellTemplate", "headerTemplate", "treeToggleTemplate"] }, { kind: "directive", type: i6.DataTableColumnHeaderDirective, selector: "[ngx-datatable-header-template]" }, { kind: "directive", type: i6.DataTableColumnCellDirective, selector: "[ngx-datatable-cell-template]" }, { kind: "component", type: i2.ButtonComponent, selector: "abp-button", inputs: ["buttonId", "buttonClass", "buttonType", "formName", "iconClass", "loading", "disabled", "attributes"], outputs: ["click", "focus", "blur", "abpClick", "abpFocus", "abpBlur"] }, { kind: "component", type: i2.ModalComponent, selector: "abp-modal", inputs: ["visible", "busy", "options", "suppressUnsavedChangesWarning"], outputs: ["visibleChange", "init", "appear", "disappear"] }, { kind: "directive", type: i2.NgxDatatableListDirective, selector: "ngx-datatable[list]", inputs: ["list"], exportAs: ["ngxDatatableList"] }, { kind: "directive", type: i2.ModalCloseDirective, selector: "[abpClose]" }, { kind: "component", type: i7.FileModalTreeComponent, selector: "fe-file-modal-tree", inputs: ["theSelectedTreeNode", "fileContainerName"], outputs: ["nodeClick"] }, { kind: "component", type: i8.FilePreviewComponent, selector: "fe-file-preview", inputs: ["width", "src", "preview", "type", "name"] }, { kind: "pipe", type: i5.DatePipe, name: "date" }, { kind: "pipe", type: i3.LocalizationPipe, name: "abpLocalization" }] });
244
245
  }
245
246
  export { FileModalComponent };
246
247
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FileModalComponent, decorators: [{
@@ -252,7 +253,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
252
253
  // Provide this token if you want a different debounce time.
253
254
  // Default is 300. Cannot be 0. Any value below 100 is not recommended.
254
255
  { provide: LIST_QUERY_DEBOUNCE_TIME, useValue: 500 },
255
- ], template: "<abp-modal [(visible)]=\"ModalOpen\" (visibleChange)=\"ModalVisibleChange($event)\"\n [options]=\"{ size: 'xl', scrollable: false }\">\n <ng-template #abpHeader>\n <h3>{{'FileExplorer::FileExplorer' | abpLocalization}}</h3>\n </ng-template>\n <ng-template #abpBody>\n <div class=\"row file-explorer-modal-body file-modal\">\n <div class=\"col-3\" style=\"overflow: auto; height: calc(100vh - 240px)\">\n <fe-file-modal-tree [theSelectedTreeNode]=\"_theSelectedTreeNode\" (nodeClick)=\"_nodeClick($event)\"\n [fileContainerName]=\"_fileContainerName\"></fe-file-modal-tree>\n </div>\n <div class=\"col-9\" style=\"height: calc(100vh - 240px)\">\n <div class=\"mb-2 d-flex justify-content-between align-items-center\">\n <div class=\"btn-link\" role=button style=\"flex: 2\" (click)=\"lookAllFile()\">{{'FileExplorer::AllFiles' | abpLocalization}}</div>\n <div class=\"input-group form-file\" style=\"flex: 2\">\n <input type=\"file\" class=\"form-control\" #fileEdit [multiple]=\"_multiple\" accept=\".jpg,.jpeg,.png,.gif,.webp\"\n (change)=\"getFileChange($event)\" />\n </div>\n </div>\n <div>\n <ngx-datatable class=\"material container-height\" [rows]=\"data.items\" [list]=\"list\" columnMode=\"flex\"\n [columns]=\"columns\" [headerHeight]=\"50\" [footerHeight]=\"50\" rowHeight=\"auto\" [scrollbarV]=\"true\"\n [virtualization]=\"false\" [externalPaging]=\"true\" [count]=\"data.totalCount\" [selected]=\"selectedTable\"\n [selectCheck]=\"selectCheck\" [selectionType]=\"SelectionType.multiClick\" (select)=\"onSelectTableItem($event)\">\n <ngx-datatable-column [width]=\"50\" prop=\"id\" [sortable]=\"false\" [canAutoResize]=\"false\" [draggable]=\"false\"\n [resizeable]=\"false\">\n <ng-template ngx-datatable-header-template let-value=\"value\" let-allRowsSelected=\"allRowsSelected\"\n let-selectFn=\"selectFn\">\n <input type=\"checkbox\" class=\"form-check-input\" [checked]=\"allRowsSelected\"\n (change)=\"selectFn(!allRowsSelected)\" />\n </ng-template>\n <ng-template ngx-datatable-cell-template let-row=\"row\" let-value=\"value\" let-isSelected=\"isSelected\"\n let-onCheckboxChangeFn=\"onCheckboxChangeFn\">\n <input type=\"checkbox\" class=\"form-check-input\" [checked]=\"selectedcheckbox(value)\"\n (change)=\"onCheckboxChangeFn($event)\" />\n </ng-template>\n </ngx-datatable-column>\n <ngx-datatable-column [name]=\"'FileExplorer::FileName' | abpLocalization\" prop=\"name\" [flexGrow]=\"4\">\n <ng-template let-row=\"row\" let-value=\"value\" ngx-datatable-cell-template>\n {{ value }}\n </ng-template>\n </ngx-datatable-column>\n <ngx-datatable-column [name]=\"'FileExplorer::FileSize' | abpLocalization\" prop=\"size\" [flexGrow]=\"1.5\">\n <ng-template let-row=\"row\" let-value=\"value\" ngx-datatable-cell-template>\n {{ _FileApiService.formatFileSize(value) }}\n </ng-template>\n </ngx-datatable-column>\n <ngx-datatable-column [name]=\"'FileExplorer::Directory' | abpLocalization\" prop=\"cellName\" [flexGrow]=\"1\">\n <ng-template let-row=\"row\" let-value=\"value\" ngx-datatable-cell-template>\n {{ value }}\n </ng-template>\n </ngx-datatable-column>\n <ngx-datatable-column [name]=\"'FileExplorer::CreationTime' | abpLocalization\" prop=\"creationTime\" [flexGrow]=\"2\">\n <ng-template let-row=\"row\" let-value=\"value\" ngx-datatable-cell-template>\n {{ value | date : 'YYYY/MM/dd HH:m:s' }}\n </ng-template>\n </ngx-datatable-column>\n <ngx-datatable-column [flexGrow]=\"1\">\n <ng-template let-row=\"row\" let-value=\"value\" ngx-datatable-cell-template>\n <button class=\"btn btn-sm btn-light p-0\" (click.stop)=\"deleteFile(row)\">\n <i class=\"fas fa-trash text-primary p-2\"></i>\n </button>\n </ng-template>\n </ngx-datatable-column>\n </ngx-datatable>\n </div>\n <div *ngIf=\"uploadPictureStatusList.length > 0\"\n class=\"position-fixed bottom-0 end-0 shadow-lg file-status-modal border bg-white p-1 m-5\"\n style=\"border-radius: 10px\">\n <div class=\"card\">\n <div class=\"card-header d-flex align-items-center justify-content-between p-0 py-1 border-bottom\">\n <div>{{'FileExplorer::UploadFiles' | abpLocalization}}</div>\n <button type=\"button\" class=\"btn-close\" aria-label=\"Close\" (click.stop)=\"closeFileStatusModal()\"></button>\n </div>\n <div class=\"card-body\">\n <table class=\"table\">\n <thead>\n <tr>\n <th scope=\"col\">{{'FileExplorer::FileName' | abpLocalization}}</th>\n <th scope=\"col\">{{'FileExplorer::FileSize' | abpLocalization}}</th>\n <th scope=\"col\"></th>\n </tr>\n </thead>\n <tbody>\n <ng-container *ngFor=\"let item of uploadPictureStatusList; let i = index\">\n <tr>\n <th scope=\"row\">\n <div>{{ item.name }}</div>\n <div class=\"form-text text-danger\" *ngIf=\"item.size > sizeLimit\">\n {{'FileExplorer::ExceedsMaximumSize' | abpLocalization:_FileApiService.formatFileSize(sizeLimit)}}\n </div>\n </th>\n <td>{{ item.fileSize }}</td>\n <td>\n <i *ngIf=\"item.status == 1\" class=\"fas fa-check text-primary\"></i>\n <i *ngIf=\"item.status == 2\" class=\"fas fa-times-circle text-danger\"></i>\n </td>\n </tr>\n </ng-container>\n </tbody>\n </table>\n </div>\n </div>\n </div>\n </div>\n </div>\n </ng-template>\n <ng-template #abpFooter>\n <button type=\"button\" class=\"btn btn-secondary\" abpClose>{{'AbpUi::Close' | abpLocalization}}</button>\n <abp-button iconClass=\"fa fa-check\" (click)=\"modalSave()\">{{'AbpUi::Save' | abpLocalization}}</abp-button>\n </ng-template>\n</abp-modal>", styles: ["::ng-deep .file-modal .container-height{height:calc(100vh - 284px)}::ng-deep .file-modal .file-status-modal{background:#fff}::ng-deep .file-modal .file-status-modal .card-body{max-height:300px;overflow-y:auto}::ng-deep .file-modal .ngx-datatable.material.single-selection .datatable-body-row.active,::ng-deep .file-modal .ngx-datatable.material.single-selection .datatable-body-row.active .datatable-row-group,::ng-deep .file-modal .ngx-datatable.material.multi-selection .datatable-body-row.active,::ng-deep .file-modal .ngx-datatable.material.multi-selection .datatable-body-row.active .datatable-row-group,::ng-deep .file-modal .ngx-datatable.material.multi-click-selection .datatable-body-row.active,::ng-deep .file-modal .ngx-datatable.material.multi-click-selection .datatable-body-row.active .datatable-row-group{background-color:transparent!important}::ng-deep .file-modal .ant-tree .ant-tree-node-content-wrapper{padding:0}::ng-deep .file-modal .ant-tree .ant-tree-node-content-wrapper .custom-node{width:100%}::ng-deep .file-modal .ant-tree .ant-tree-node-content-wrapper .selected{background-color:var(--lpx-brand)!important}::ng-deep .file-modal .ant-tree .ant-tree-node-content-wrapper .selected .btn{color:var(--lpx-navbar-color)}::ng-deep .file-modal .ant-tree .ant-tree-node-content-wrapper.ant-tree-node-selected{background-color:transparent}::ng-deep .file-modal .ngx-datatable.fixed-header .datatable-header .datatable-header-inner .datatable-header-cell,::ng-deep .file-modal .ngx-datatable.material .datatable-body .datatable-body-row .datatable-body-cell{overflow:initial;line-break:anywhere}\n"] }]
256
+ ], template: "<abp-modal [(visible)]=\"ModalOpen\" (visibleChange)=\"ModalVisibleChange($event)\"\n [options]=\"{ size: 'xl', scrollable: false }\">\n <ng-template #abpHeader>\n <h3>{{'FileExplorer::FileExplorer' | abpLocalization}}</h3>\n </ng-template>\n <ng-template #abpBody>\n <div class=\"row file-explorer-modal-body file-modal\">\n <div class=\"col-3\" style=\"overflow: auto; height: calc(100vh - 240px)\">\n <fe-file-modal-tree [theSelectedTreeNode]=\"_theSelectedTreeNode\" (nodeClick)=\"_nodeClick($event)\"\n [fileContainerName]=\"_fileContainerName\"></fe-file-modal-tree>\n </div>\n <div class=\"col-9\" style=\"height: calc(100vh - 240px)\">\n <div class=\"mb-2 d-flex justify-content-between align-items-center\">\n <div class=\"btn-link\" role=button style=\"flex: 2\" (click)=\"lookAllFile()\">{{'FileExplorer::AllFiles' | abpLocalization}}</div>\n <div class=\"input-group form-file\" style=\"flex: 2\">\n <input type=\"file\" class=\"form-control\" #fileEdit [multiple]=\"_multiple\" \n (change)=\"getFileChange($event)\" />\n <!-- accept=\".jpg,.jpeg,.png,.gif,.webp\" -->\n </div>\n </div>\n <div>\n <ngx-datatable class=\"material container-height\" [rows]=\"data.items\" [list]=\"list\" columnMode=\"flex\"\n [columns]=\"columns\" [headerHeight]=\"50\" [footerHeight]=\"50\" rowHeight=\"auto\" [scrollbarV]=\"true\"\n [virtualization]=\"false\" [externalPaging]=\"true\" [count]=\"data.totalCount\" [selected]=\"selectedTable\"\n [selectCheck]=\"selectCheck\" [selectionType]=\"_multiple?SelectionType.multiClick:SelectionType.single\" (select)=\"onSelectTableItem($event)\">\n <ngx-datatable-column [width]=\"50\" prop=\"id\" [sortable]=\"false\" [canAutoResize]=\"false\" [draggable]=\"false\"\n [resizeable]=\"false\">\n <ng-template ngx-datatable-header-template let-value=\"value\" let-allRowsSelected=\"allRowsSelected\"\n let-selectFn=\"selectFn\">\n <input type=\"checkbox\" class=\"form-check-input\" [checked]=\"allRowsSelected\"\n (change)=\"selectFn(!allRowsSelected)\" />\n </ng-template>\n <ng-template ngx-datatable-cell-template let-row=\"row\" let-value=\"value\" let-isSelected=\"isSelected\"\n let-onCheckboxChangeFn=\"onCheckboxChangeFn\">\n <input type=\"checkbox\" class=\"form-check-input\" [checked]=\"selectedcheckbox(value)\"\n (change)=\"onCheckboxChangeFn($event)\" />\n </ng-template>\n </ngx-datatable-column>\n <ngx-datatable-column [flexGrow]=\"2\">\n <ng-template let-row=\"row\" let-value=\"value\" ngx-datatable-cell-template>\n <fe-file-preview [width]=\"'80px'\" [src]=\"row.url\" [name]=\"row.name\" [type]=\"row.mimeType\" [preview]=\"true\"></fe-file-preview>\n </ng-template>\n </ngx-datatable-column>\n <ngx-datatable-column [name]=\"'FileExplorer::FileName' | abpLocalization\" prop=\"name\" [flexGrow]=\"4\">\n <ng-template let-row=\"row\" let-value=\"value\" ngx-datatable-cell-template>\n {{ value }}\n </ng-template>\n </ngx-datatable-column>\n <ngx-datatable-column [name]=\"'FileExplorer::FileSize' | abpLocalization\" prop=\"size\" [flexGrow]=\"1.5\">\n <ng-template let-row=\"row\" let-value=\"value\" ngx-datatable-cell-template>\n {{ _FileApiService.formatFileSize(value) }}\n </ng-template>\n </ngx-datatable-column>\n <ngx-datatable-column [name]=\"'FileExplorer::Directory' | abpLocalization\" prop=\"cellName\" [flexGrow]=\"1\">\n <ng-template let-row=\"row\" let-value=\"value\" ngx-datatable-cell-template>\n {{ value }}\n </ng-template>\n </ngx-datatable-column>\n <ngx-datatable-column [name]=\"'FileExplorer::CreationTime' | abpLocalization\" prop=\"creationTime\" [flexGrow]=\"2\">\n <ng-template let-row=\"row\" let-value=\"value\" ngx-datatable-cell-template>\n {{ value | date : 'YYYY/MM/dd HH:m:s' }}\n </ng-template>\n </ngx-datatable-column>\n <ngx-datatable-column [flexGrow]=\"1\">\n <ng-template let-row=\"row\" let-value=\"value\" ngx-datatable-cell-template>\n <button class=\"btn btn-sm btn-light p-0\" (click.stop)=\"deleteFile(row)\">\n <i class=\"fas fa-trash text-primary p-2\"></i>\n </button>\n </ng-template>\n </ngx-datatable-column>\n </ngx-datatable>\n </div>\n <div *ngIf=\"uploadPictureStatusList.length > 0\"\n class=\"position-fixed bottom-0 end-0 shadow-lg file-status-modal m-5\"\n style=\"border-radius: 10px\">\n <div class=\"card p-1\">\n <div class=\"card-header d-flex align-items-center justify-content-between p-0 py-1 border-bottom\">\n <div>{{'FileExplorer::UploadFiles' | abpLocalization}}</div>\n <button type=\"button\" class=\"btn-close\" aria-label=\"Close\" (click.stop)=\"closeFileStatusModal()\"></button>\n </div>\n <div class=\"card-body\">\n <table class=\"table\">\n <thead>\n <tr>\n <th scope=\"col\">{{'FileExplorer::FileName' | abpLocalization}}</th>\n <th scope=\"col\">{{'FileExplorer::FileSize' | abpLocalization}}</th>\n <th scope=\"col\"></th>\n </tr>\n </thead>\n <tbody>\n <ng-container *ngFor=\"let item of uploadPictureStatusList; let i = index\">\n <tr>\n <th scope=\"row\">\n <div>{{ item.name }}</div>\n <div class=\"form-text text-danger\" *ngIf=\"item.size > sizeLimit\">\n {{'FileExplorer::ExceedsMaximumSize' | abpLocalization:_FileApiService.formatFileSize(sizeLimit)}}\n </div>\n </th>\n <td>{{ item.fileSize }}</td>\n <td>\n <i *ngIf=\"item.status == 1\" class=\"fas fa-check text-primary\"></i>\n <i *ngIf=\"item.status == 2\" class=\"fas fa-times-circle text-danger\"></i>\n </td>\n </tr>\n </ng-container>\n </tbody>\n </table>\n </div>\n </div>\n </div>\n </div>\n </div>\n </ng-template>\n <ng-template #abpFooter>\n <button type=\"button\" class=\"btn btn-secondary\" abpClose>{{'AbpUi::Close' | abpLocalization}}</button>\n <abp-button iconClass=\"fa fa-check\" (click)=\"modalSave()\">{{'AbpUi::Save' | abpLocalization}}</abp-button>\n </ng-template>\n</abp-modal>", styles: ["::ng-deep .file-modal .container-height{height:calc(100vh - 284px)}::ng-deep .file-modal .file-status-modal{background:#fff}::ng-deep .file-modal .file-status-modal .card-body{max-height:300px;overflow-y:auto}::ng-deep .file-modal .ngx-datatable.material.single-selection .datatable-body-row.active,::ng-deep .file-modal .ngx-datatable.material.single-selection .datatable-body-row.active .datatable-row-group,::ng-deep .file-modal .ngx-datatable.material.multi-selection .datatable-body-row.active,::ng-deep .file-modal .ngx-datatable.material.multi-selection .datatable-body-row.active .datatable-row-group,::ng-deep .file-modal .ngx-datatable.material.multi-click-selection .datatable-body-row.active,::ng-deep .file-modal .ngx-datatable.material.multi-click-selection .datatable-body-row.active .datatable-row-group{background-color:transparent!important}::ng-deep .file-modal .ant-tree .ant-tree-node-content-wrapper{padding:0}::ng-deep .file-modal .ant-tree .ant-tree-node-content-wrapper .custom-node{width:100%}::ng-deep .file-modal .ant-tree .ant-tree-node-content-wrapper .selected{background-color:var(--lpx-brand)!important}::ng-deep .file-modal .ant-tree .ant-tree-node-content-wrapper .selected .btn{color:var(--lpx-navbar-color)}::ng-deep .file-modal .ant-tree .ant-tree-node-content-wrapper.ant-tree-node-selected{background-color:transparent}::ng-deep .file-modal .ngx-datatable.fixed-header .datatable-header .datatable-header-inner .datatable-header-cell,::ng-deep .file-modal .ngx-datatable.material .datatable-body .datatable-body-row .datatable-body-cell{overflow:initial;line-break:anywhere}\n"] }]
256
257
  }], ctorParameters: function () { return [{ type: i1.FileDescriptorService }, { type: i2.ToasterService }, { type: i3.ListService }, { type: i4.FileApiService }, { type: i3.RestService }, { type: i2.ConfirmationService }, { type: i3.LocalizationService }]; }, propDecorators: { fileContainerName: [{
257
258
  type: Input
258
259
  }], multiple: [{
@@ -268,4 +269,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
268
269
  }], selectFilefn: [{
269
270
  type: Output
270
271
  }] } });
271
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1tb2RhbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9maWxlLWV4cGxvcmVyL3NyYy9saWIvY29tcG9uZW50cy9maWxlLW1vZGFsL2ZpbGUtbW9kYWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZmlsZS1leHBsb3Jlci9zcmMvbGliL2NvbXBvbmVudHMvZmlsZS1tb2RhbC9maWxlLW1vZGFsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBR3RGLE9BQU8sRUFBdUIsV0FBVyxFQUEwQyx3QkFBd0IsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUdsSSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0seUJBQXlCLENBQUM7Ozs7Ozs7OztBQUN4RCxJQUFJLElBQUksQ0FBQTtBQUNSLE1BYWEsa0JBQWtCO0lBR25CO0lBQ0E7SUFDUTtJQUNUO0lBQ0M7SUFDQTtJQUNBO0lBUFYsWUFDVSxZQUErQyxFQUMvQyxPQUF1QixFQUNmLElBQWlCLEVBQzFCLGVBQStCLEVBQzlCLFdBQXdCLEVBQ3hCLFlBQWlDLEVBQ2pDLG9CQUF5QztRQU56QyxpQkFBWSxHQUFaLFlBQVksQ0FBbUM7UUFDL0MsWUFBTyxHQUFQLE9BQU8sQ0FBZ0I7UUFDZixTQUFJLEdBQUosSUFBSSxDQUFhO1FBQzFCLG9CQUFlLEdBQWYsZUFBZSxDQUFnQjtRQUM5QixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixpQkFBWSxHQUFaLFlBQVksQ0FBcUI7UUFDakMseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFxQjtRQUVqRCxJQUFJLEdBQUcsSUFBSSxDQUFBO0lBQ2IsQ0FBQztJQUVELFVBQVU7SUFDVixrQkFBa0IsQ0FBUTtJQUMxQixJQUNX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SSxhQUFhO3NCQUF0QixNQUFNO2dCQW9IRSxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBWUksWUFBWTtzQkFBckIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgKiBhcyBGaWxlU2VydmljZSBmcm9tICcuLi8uLi9wcm94eS9kaWduaXRlL2ZpbGUtZXhwbG9yZXIvZmlsZXMnO1xuaW1wb3J0IHsgQ29uZmlybWF0aW9uLCBDb25maXJtYXRpb25TZXJ2aWNlLCBUb2FzdGVyU2VydmljZSB9IGZyb20gJ0BhYnAvbmcudGhlbWUuc2hhcmVkJztcbmltcG9ydCB7IFBhZ2VkUmVzdWx0RHRvLCBBQlAsIExpc3RTZXJ2aWNlLCBSZXN0LCBSZXN0U2VydmljZSwgTG9jYWxpemF0aW9uU2VydmljZSwgTElTVF9RVUVSWV9ERUJPVU5DRV9USU1FIH0gZnJvbSAnQGFicC9uZy5jb3JlJztcbmltcG9ydCB7IEZpbGVEZXNjcmlwdG9yRHRvLCBHZXRGaWxlc0lucHV0IH0gZnJvbSAnLi4vLi4vcHJveHkvZGlnbml0ZS9maWxlLWV4cGxvcmVyL2ZpbGVzJztcbmltcG9ydCB7IEZpbGVBcGlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZmlsZS1hcGkuc2VydmljZSc7XG5pbXBvcnQgeyBTZWxlY3Rpb25UeXBlIH0gZnJvbSAnQHN3aW1sYW5lL25neC1kYXRhdGFibGUnO1xudmFyIHRoYXRcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2ZlLWZpbGUtbW9kYWwnLFxuICB0ZW1wbGF0ZVVybDogJy4vZmlsZS1tb2RhbC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2ZpbGUtbW9kYWwuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAgLy8gW1JlcXVpcmVkXVxuICAgIExpc3RTZXJ2aWNlLFxuICAgIC8vIFtPcHRpb25hbF1cbiAgICAvLyBQcm92aWRlIHRoaXMgdG9rZW4gaWYgeW91IHdhbnQgYSBkaWZmZXJlbnQgZGVib3VuY2UgdGltZS5cbiAgICAvLyBEZWZhdWx0IGlzIDMwMC4gQ2Fubm90IGJlIDAuIEFueSB2YWx1ZSBiZWxvdyAxMDAgaXMgbm90IHJlY29tbWVuZGVkLlxuICAgIHsgcHJvdmlkZTogTElTVF9RVUVSWV9ERUJPVU5DRV9USU1FLCB1c2VWYWx1ZTogNTAwIH0sXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgRmlsZU1vZGFsQ29tcG9uZW50IHtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9GaWxlU2VydmljZTogRmlsZVNlcnZpY2UuRmlsZURlc2NyaXB0b3JTZXJ2aWNlLFxuICAgIHByaXZhdGUgdG9hc3RlcjogVG9hc3RlclNlcnZpY2UsXG4gICAgcHVibGljIHJlYWRvbmx5IGxpc3Q6IExpc3RTZXJ2aWNlLFxuICAgIHB1YmxpYyBfRmlsZUFwaVNlcnZpY2U6IEZpbGVBcGlTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVzdFNlcnZpY2U6IFJlc3RTZXJ2aWNlLFxuICAgIHByaXZhdGUgY29uZmlybWF0aW9uOiBDb25maXJtYXRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgX0xvY2FsaXphdGlvblNlcnZpY2U6IExvY2FsaXphdGlvblNlcnZpY2UsXG4gICkge1xuICAgIHRoYXQgPSB0aGlzXG4gIH1cblxuICAvKirlm77niYflrrnlmaggKi9cbiAgX2ZpbGVDb250YWluZXJOYW1lOiBzdHJpbmdcbiAgQElucHV0KClcbiAgcHVibGljIHNldCBmaWxlQ29udGFpbmVyTmFtZSh2OiBzdHJpbmcpIHtcbiAgICBpZiAodikge1xuICAgICAgdGhpcy5fZmlsZUNvbnRhaW5lck5hbWUgPSB2O1xuICAgICAgdGhpcy5sb2FkRGF0YSgpXG4gICAgfVxuICB9XG5cbiAgLyoq5piv5ZCm5aSa6YCJICovXG4gIF9tdWx0aXBsZTogYm9vbGVhbiA9IHRydWVcbiAgQElucHV0KClcbiAgcHVibGljIHNldCBtdWx0aXBsZSh2OiBib29sZWFuKSB7XG4gICAgdGhpcy5fbXVsdGlwbGUgPSB2O1xuICAgIGlmICh2KSB7IH1cbiAgfVxuXG4gIC8qKuaWh+S7tuWkp+Wwj+mZkOWItiBcbiogQHBhcmFtIDFtYlxuKi9cbiAgc2l6ZUxpbWl0OiBudW1iZXIgPSAxMDQ4NTc2XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgbGltaXQodjogbnVtYmVyKSB7XG4gICAgdGhpcy5zaXplTGltaXQgPSB2O1xuICB9XG4gIC8qKueItue7hOS7tuS8oOmAkueahOaooeaAgeahhueKtuaAgSAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHZpc2libGUodjogYm9vbGVhbikge1xuICAgIHRoaXMuTW9kYWxPcGVuID0gdjtcbiAgICBpZiAodikge1xuICAgICAgdGhpcy5sb2FkRGF0YSgpXG4gICAgfVxuICB9XG5cbiAgLyoq5qih5oCB5qGG54q25oCB5Zue6LCDICovXG4gIEBPdXRwdXQoKSB2aXNpYmxlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpXG5cblxuXG4gIC8qKuaooeaAgeahhi3nirbmgIEt5piv5ZCm5omT5byAICovXG4gIE1vZGFsT3BlbjogYm9vbGVhbiA9IGZhbHNlXG5cbiAgLyoq5qih5oCB5qGGLee5geW/meeKtuaAgS3nlKjkuo7noa7lrprmqKHmgIHnmoTnuYHlv5nnirbmgIHmmK/lkKbkuLrnnJ8gKi9cbiAgTW9kYWxCdXN5OiBib29sZWFuID0gZmFsc2VcblxuXG5cbiAgLyoq5qih5oCB5qGGLeeKtuaAgeaUueWPmOWbnuiwgyAqL1xuICBNb2RhbFZpc2libGVDaGFuZ2UoZXZlbnQpIHtcbiAgICBpZiAoIWV2ZW50KSB7XG4gICAgICB0aGlzLnZpc2libGVDaGFuZ2UuZW1pdChldmVudClcbiAgICAgIHJldHVyblxuICAgIH1cbiAgfVxuXG4gIC8qKuaooeaAgeahhuS/neWtmCAqL1xuICBtb2RhbFNhdmUoKSB7XG4gICAgbGV0IHNlbGVjdGVkVGFibGVhcnIgPSB0aGlzLl9GaWxlQXBpU2VydmljZS5kZWVwQ2xvbmUodGhpcy5zZWxlY3RlZFRhYmxlKVxuICAgIHRoaXMuc2VsZWN0RmlsZWZuLmVtaXQoc2VsZWN0ZWRUYWJsZWFycilcblxuICAgIHRoaXMuTW9kYWxWaXNpYmxlQ2hhbmdlKGZhbHNlKVxuICB9XG4gIC8qKmRpZ25pdGUtZmlsZS1tb2RhbC10cmVlICovXG4gIC8qKumAieaLqeeahHRyZWXoioLngrkgKi9cbiAgX3RoZVNlbGVjdGVkVHJlZU5vZGU6IGFueSA9ICcnXG5cbiAgLyoq5Yid5aeL5YyW5pWw5o2uICovXG4gIGxvYWREYXRhKCkge1xuICAgIGlmICh0aGlzLk1vZGFsT3BlbiAmJiB0aGlzLl9maWxlQ29udGFpbmVyTmFtZSkge1xuICAgICAgdGhpcy5ob29rVG9RdWVyeSgpXG4gICAgfVxuICB9XG5cbiAgLyoqdHJlZS3oioLngrnpgInmi6kgKi9cbiAgX25vZGVDbGljayhldmVudCkge1xuICAgIHRoaXMuX3RoZVNlbGVjdGVkVHJlZU5vZGUgPSBldmVudFxuICAgIHRoaXMubGlzdC5nZXQoKVxuICB9XG5cbiAgLyoq5Zu+54mH5LiK5LygLeimgeS4iuS8oOWbvueJh+eahOeKtuaAgeaWh+S7tuWIl+ihqCAqL1xuICB1cGxvYWRQaWN0dXJlU3RhdHVzTGlzdDogYW55W10gPSBbXVxuXG4gIC8qKuWbvueJh+S4iuS8oC3ojrflj5bmlofku7bkv6Hmga/mlLnlj5ggKi9cbiAgYXN5bmMgZ2V0RmlsZUNoYW5nZShldmVudCkge1xuICAgIGxldCBmaWxlcyA9IG5ldyBBcnJheSguLi5ldmVudC50YXJnZXQuZmlsZXMpXG4gICAgdGhpcy51cGxvYWRQaWN0dXJlU3RhdHVzTGlzdCA9IGZpbGVzXG4gICAgZm9yIChjb25zdCBmaWxlIG9mIGZpbGVzKSB7XG4gICAgICBpZiAoZmlsZS5zaXplID4gdGhpcy5zaXplTGltaXQpIHtcbiAgICAgICAgdGhpcy5zZXR1cGxvYWRQaWN0dXJlU3RhdHVzKGZpbGUsIDIpXG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgYXdhaXQgdGhpcy51cGxvYWRpbmdGaWxlKGZpbGUpLnRoZW4oKCkgPT4ge1xuICAgICAgICB0aGlzLnNldHVwbG9hZFBpY3R1cmVTdGF0dXMoZmlsZSwgMSlcbiAgICAgICAgdGhpcy5saXN0LmdldCgpXG4gICAgICB9KS5jYXRjaCgoKSA9PiB7XG4gICAgICAgIHRoaXMuc2V0dXBsb2FkUGljdHVyZVN0YXR1cyhmaWxlLCAyKVxuICAgICAgfSk7IC8vIOetieW+heavj+S4quaWh+S7tuS4iuS8oOWujOaIkCAgXG4gICAgfVxuICAgIHRoaXMubGlzdC5nZXQoKVxuICAgIGxldCBpc1N1Ym1pdCA9ICF0aGlzLnVwbG9hZFBpY3R1cmVTdGF0dXNMaXN0LnNvbWUoZWwgPT4gZWwuc3RhdHVzID09IDIpO1xuICAgIGlmIChpc1N1Ym1pdCkge1xuICAgICAgLy8gdGhpcy50b2FzdGVyLnN1Y2Nlc3MoXCLkuIrkvKDlrozmiJBcIik7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy51cGxvYWRQaWN0dXJlU3RhdHVzTGlzdCA9IFtdXG4gICAgICB9LCA2MDAwKVxuICAgIH1cbiAgfVxuXG4gIC8qKuWbvueJh+S4iuS8oC3orr7nva51cGxvYWRQaWN0dXJlU3RhdHVzTGlzdOeahOeKtuaAgSAqL1xuICBzZXR1cGxvYWRQaWN0dXJlU3RhdHVzKGZpbGUsIHR5cGUpIHtcbiAgICB0aGlzLnVwbG9hZFBpY3R1cmVTdGF0dXNMaXN0Lm1hcChlbCA9PiB7XG4gICAgICBpZiAoZWwgPT0gZmlsZSkgZWwuc3RhdHVzID0gdHlwZVxuICAgIH0pXG4gIH1cblxuXG4gIC8qKuWbvueJh+S4iuS8oC3pgJLlvZLmjInpobrluo/kuIrkvKAgKi9cbiAgdXBsb2FkaW5nRmlsZShmaWxlKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3RzKSA9PiB7XG4gICAgICBsZXQgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcbiAgICAgIGZvcm1EYXRhLmFwcGVuZCgnZmlsZScsIGZpbGUsIGZpbGUubmFtZSk7XG4gICAgICB0aGlzLmNyZWF0ZUZpbGUoe1xuICAgICAgICBmaWxlOiBmb3JtRGF0YSxcbiAgICAgICAgY29udGFpbmVyTmFtZTogdGhpcy5fZmlsZUNvbnRhaW5lck5hbWUsXG4gICAgICAgIGRpcmVjdG9yeUlkOiB0aGlzLl90aGVTZWxlY3RlZFRyZWVOb2RlPy5rZXkgfHwgJycsXG4gICAgICAgIGVudGl0eUlkOiAnJ1xuICAgICAgfSkuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICAgIHJlc29sdmUodHJ1ZSlcbiAgICAgIH0sIChlcnIpID0+IHtcbiAgICAgICAgcmVqZWN0cyhmYWxzZSlcbiAgICAgIH0pXG4gICAgfSlcbiAgfVxuXG5cbiAgLyoq5paH5Lu26KGo5qC8LeaVsOaNriovXG4gIGRhdGE6IFBhZ2VkUmVzdWx0RHRvPEZpbGVEZXNjcmlwdG9yRHRvPiA9IHtcbiAgICBpdGVtczogW10sXG4gICAgdG90YWxDb3VudDogMCxcbiAgfTtcblxuICAvKirmlofku7booajmoLwt5p2h5Lu2Ki9cbiAgZmlsdGVycyA9IHt9IGFzIEdldEZpbGVzSW5wdXQ7XG5cbiAgLyoq5paH5Lu26KGo5qC8LeihqOagvOiHquW4pumAieaLqeexu+WeiyAqL1xuICBTZWxlY3Rpb25UeXBlID0gU2VsZWN0aW9uVHlwZTtcblxuICAvKirmlofku7booajmoLwt6YCJ5oup55qE6KGo5qC85pWw5o2u6aG5ICovXG4gIHNlbGVjdGVkVGFibGUgPSBbXVxuXG4gIC8qKuW3sumAieWumueahOaWh+S7tiAqL1xuICBASW5wdXQoKSBzZWxlY3RQaWNrZXJGaWxlOiBhbnlbXVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAvL0NhbGxlZCBiZWZvcmUgYW55IG90aGVyIGxpZmVjeWNsZSBob29rLiBVc2UgaXQgdG8gaW5qZWN0IGRlcGVuZGVuY2llcywgYnV0IGF2b2lkIGFueSBzZXJpb3VzIHdvcmsgaGVyZS5cbiAgICAvL0FkZCAnJHtpbXBsZW1lbnRzIE9uQ2hhbmdlc30nIHRvIHRoZSBjbGFzcy5cbiAgICB0aGlzLnNlbGVjdGVkVGFibGUgPSB0aGlzLl9GaWxlQXBpU2VydmljZS5kZWVwQ2xvbmUodGhpcy5zZWxlY3RQaWNrZXJGaWxlKVxuICB9XG4gIC8qKuW9k+WJjemAieaLqeeahHRhYmxl6aG5IGlkICovXG4gIG5vd1NlbGVjdElkOiBhbnkgPSAnJ1xuXG4gIC8qKumAieaLqeaWh+S7tuWbnuiwgyAqL1xuICAvLyBAT3V0cHV0KCkgc2VsZWN0ZWRGaWxlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnlbXT4oKVxuICBAT3V0cHV0KCkgc2VsZWN0RmlsZWZuID0gbmV3IEV2ZW50RW1pdHRlcjxhbnlbXT4oKVxuXG4gIC8qKuaWh+S7tuihqOagvC3ojrflj5booajmoLzmlbDmja4gKi9cbiAgaG9va1RvUXVlcnkoKSB7XG4gICAgY29uc3QgZ2V0RGF0YSA9IChxdWVyeTogQUJQLlBhZ2VRdWVyeVBhcmFtcykgPT4gdGhpcy5fRmlsZVNlcnZpY2UuZ2V0TGlzdCh7XG4gICAgICAuLi5xdWVyeSxcbiAgICAgIC4uLnRoaXMuZmlsdGVycyxcbiAgICAgIGNvbnRhaW5lck5hbWU6IHRoaXMuX2ZpbGVDb250YWluZXJOYW1lLFxuICAgICAgZGlyZWN0b3J5SWQ6IHRoaXMuX3RoZVNlbGVjdGVkVHJlZU5vZGUua2V5XG4gICAgfSk7XG4gICAgY29uc3Qgc2V0RGF0YSA9IChsaXN0OiBQYWdlZFJlc3VsdER0bzxGaWxlRGVzY3JpcHRvckR0bz4pID0+ICh0aGlzLmRhdGEgPSBsaXN0KTtcbiAgICB0aGlzLmxpc3QuaG9va1RvUXVlcnkoZ2V0RGF0YSkuc3Vic2NyaWJlKHNldERhdGEpO1xuICB9XG5cbiAgLyoq5paH5Lu26KGo5qC8Leafpeeci+aJgOacieWIhue7hOeahOaWh+S7tuaVsOaNriAqL1xuICBsb29rQWxsRmlsZSgpIHtcbiAgICB0aGlzLl90aGVTZWxlY3RlZFRyZWVOb2RlID0gJydcbiAgICB0aGlzLmxpc3QuZ2V0KClcbiAgfVxuXG4gIC8qKumAieaLqeihqOagvOmhuSAqL1xuICBvblNlbGVjdFRhYmxlSXRlbSh7IHNlbGVjdGVkIH0pIHtcbiAgICB0aGlzLnNlbGVjdGVkVGFibGUgPSB0aGlzLl9GaWxlQXBpU2VydmljZS5kZWVwQ2xvbmUoc2VsZWN0ZWQpXG4gICAgbGV0IHNlbGVjdGVkVGFibGVhcnIgPSB0aGlzLnJlbW92ZUR1cGxpY2F0ZXNCeUlkKHRoaXMuc2VsZWN0ZWRUYWJsZSlcbiAgICBpZiAoc2VsZWN0ZWQubGVuZ3RoID4gc2VsZWN0ZWRUYWJsZWFyci5sZW5ndGgpIHtcbiAgICAgIHNlbGVjdGVkVGFibGVhcnIgPSBzZWxlY3RlZFRhYmxlYXJyLmZpbHRlcihlbCA9PiBlbC5pZCAhPT0gdGhpcy5ub3dTZWxlY3RJZClcbiAgICB9XG4gICAgdGhpcy5zZWxlY3RlZFRhYmxlID0gc2VsZWN0ZWRUYWJsZWFyclxuICB9XG5cbiAgLyoq5Yig6Zmk5pWw57uE5Lit6YeN5aSN55qE6aG5ICovXG4gIHJlbW92ZUR1cGxpY2F0ZXNCeUlkKGFycmF5KSB7XG4gICAgY29uc3Qgc2VlbklkcyA9IHt9O1xuICAgIHJldHVybiBhcnJheS5maWx0ZXIoaXRlbSA9PiB7XG4gICAgICBpZiAoIXNlZW5JZHNbaXRlbS5pZF0pIHtcbiAgICAgICAgc2Vlbklkc1tpdGVtLmlkXSA9IHRydWU7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0pO1xuICB9XG5cbiAgLyoq5LiA5Liq5biD5bCUb3Llh73mlbDvvIzlj6/nlKjkuo7mo4Dmn6XmmK/lkKbopoHmoLnmja7mnaHku7bpgInmi6nnibnlrprooYzjgIIgKi9cbiAgc2VsZWN0Q2hlY2sgPSAocm93LCBjb2x1bW4sIHZhbHVlKSA9PiB7XG4gICAgdGhpcy5ub3dTZWxlY3RJZCA9IHJvdy5pZFxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLyoq5Yik5patcm935piv5ZCm6YCJ5LitICovXG4gIHNlbGVjdGVkY2hlY2tib3ggPSAoaWQpID0+IHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZFRhYmxlLnNvbWUoZWwgPT4gZWwuaWQgPT0gaWQpXG4gIH1cblxuXG5cbiAgLyoq5Yig6Zmk5Zu+54mHICovXG4gIGRlbGV0ZUZpbGUoZmlsZSkge1xuXG4gICAgdGhpcy5jb25maXJtYXRpb25cbiAgICAgIC53YXJuKCcnLCB7IGtleTogJycsIGRlZmF1bHRWYWx1ZTogdGhpcy5fTG9jYWxpemF0aW9uU2VydmljZS5pbnN0YW50KGBBYnBVaTo6SXRlbVdpbGxCZURlbGV0ZWRNZXNzYWdlYCkgfSlcbiAgICAgIC5zdWJzY3JpYmUoKHN0YXR1czogQ29uZmlybWF0aW9uLlN0YXR1cykgPT4ge1xuICAgICAgICBpZiAoc3RhdHVzID09ICdjb25maXJtJykge1xuICAgICAgICAgIHRoaXMuX0ZpbGVTZXJ2aWNlLmRlbGV0ZShmaWxlLmlkKS5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgICAgIHRoaXMudG9hc3Rlci5zdWNjZXNzKHRoaXMuX0xvY2FsaXphdGlvblNlcnZpY2UuaW5zdGFudChgQWJwVWk6OlN1Y2Nlc3NmdWxseURlbGV0ZWRgKSk7XG4gICAgICAgICAgICB0aGlzLmxpc3QuZ2V0KClcbiAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIC8qKuWFs+mXreaWh+S7tueKtuaAgeW8ueeqlyAqL1xuICBjbG9zZUZpbGVTdGF0dXNNb2RhbCgpIHtcbiAgICB0aGlzLnVwbG9hZFBpY3R1cmVTdGF0dXNMaXN0ID0gW11cbiAgfVxuXG4gIC8qKuWIm+W7uuWbvueJh+eahOaOpeWPo++8jOS7o+eQhuS4reeahGZpbGXnsbvlnovkuI3ljLnphY3vvIzliIfmjaLkuLphbnnnsbvlnosgKi9cbiAgY3JlYXRlRmlsZSA9IChpbnB1dDogYW55LCBjb25maWc/OiBQYXJ0aWFsPFJlc3QuQ29uZmlnPikgPT5cbiAgICB0aGlzLnJlc3RTZXJ2aWNlLnJlcXVlc3Q8YW55LCBGaWxlRGVzY3JpcHRvckR0bz4oe1xuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICB1cmw6ICcvYXBpL2ZpbGUtZXhwbG9yZXIvZmlsZXMnLFxuICAgICAgcGFyYW1zOiB7IGNvbnRhaW5lck5hbWU6IGlucHV0LmNvbnRhaW5lck5hbWUsIGNlbGxOYW1lOiBpbnB1dC5jZWxsTmFtZSwgZGlyZWN0b3J5SWQ6IGlucHV0LmRpcmVjdG9yeUlkLCBlbnRpdHlJZDogaW5wdXQuZW50aXR5SWQgfSxcbiAgICAgIGJvZHk6IGlucHV0LmZpbGUsXG4gICAgfSxcbiAgICAgIHsgYXBpTmFtZTogJ0ZpbGVFeHBsb3JlcicsIC4uLmNvbmZpZyB9KTtcbn1cbiIsIjxhYnAtbW9kYWwgWyh2aXNpYmxlKV09XCJNb2RhbE9wZW5cIiAodmlzaWJsZUNoYW5nZSk9XCJNb2RhbFZpc2libGVDaGFuZ2UoJGV2ZW50KVwiXG4gIFtvcHRpb25zXT1cInsgc2l6ZTogJ3hsJywgc2Nyb2xsYWJsZTogZmFsc2UgfVwiPlxuICA8bmctdGVtcGxhdGUgI2FicEhlYWRlcj5cbiAgICA8aDM+e3snRmlsZUV4cGxvcmVyOjpGaWxlRXhwbG9yZXInIHwgYWJwTG9jYWxpemF0aW9ufX08L2gzPlxuICA8L25nLXRlbXBsYXRlPlxuICA8bmctdGVtcGxhdGUgI2FicEJvZHk+XG4gICAgPGRpdiBjbGFzcz1cInJvdyBmaWxlLWV4cGxvcmVyLW1vZGFsLWJvZHkgZmlsZS1tb2RhbFwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNvbC0zXCIgc3R5bGU9XCJvdmVyZmxvdzogYXV0bzsgaGVpZ2h0OiBjYWxjKDEwMHZoIC0gMjQwcHgpXCI+XG4gICAgICAgIDxmZS1maWxlLW1vZGFsLXRyZWUgW3RoZVNlbGVjdGVkVHJlZU5vZGVdPVwiX3RoZVNlbGVjdGVkVHJlZU5vZGVcIiAobm9kZUNsaWNrKT1cIl9ub2RlQ2xpY2soJGV2ZW50KVwiXG4gICAgICAgICAgW2ZpbGVDb250YWluZXJOYW1lXT1cIl9maWxlQ29udGFpbmVyTmFtZVwiPjwvZmUtZmlsZS1tb2RhbC10cmVlPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLTlcIiBzdHlsZT1cImhlaWdodDogY2FsYygxMDB2aCAtIDI0MHB4KVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibWItMiBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImJ0bi1saW5rXCIgcm9sZT1idXR0b24gc3R5bGU9XCJmbGV4OiAyXCIgKGNsaWNrKT1cImxvb2tBbGxGaWxlKClcIj57eydGaWxlRXhwbG9yZXI6OkFsbEZpbGVzJyB8IGFicExvY2FsaXphdGlvbn19PC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwIGZvcm0tZmlsZVwiIHN0eWxlPVwiZmxleDogMlwiPlxuICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJmaWxlXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiAjZmlsZUVkaXQgW211bHRpcGxlXT1cIl9tdWx0aXBsZVwiIGFjY2VwdD1cIi5qcGcsLmpwZWcsLnBuZywuZ2lmLC53ZWJwXCJcbiAgICAgICAgICAgICAgKGNoYW5nZSk9XCJnZXRGaWxlQ2hhbmdlKCRldmVudClcIiAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdj5cbiAgICAgICAgICA8bmd4LWRhdGF0YWJsZSBjbGFzcz1cIm1hdGVyaWFsIGNvbnRhaW5lci1oZWlnaHRcIiBbcm93c109XCJkYXRhLml0ZW1zXCIgW2xpc3RdPVwibGlzdFwiIGNvbHVtbk1vZGU9XCJmbGV4XCJcbiAgICAgICAgICAgIFtjb2x1bW5zXT1cImNvbHVtbnNcIiBbaGVhZGVySGVpZ2h0XT1cIjUwXCIgW2Zvb3RlckhlaWdodF09XCI1MFwiIHJvd0hlaWdodD1cImF1dG9cIiBbc2Nyb2xsYmFyVl09XCJ0cnVlXCJcbiAgICAgICAgICAgIFt2aXJ0dWFsaXphdGlvbl09XCJmYWxzZVwiIFtleHRlcm5hbFBhZ2luZ109XCJ0cnVlXCIgW2NvdW50XT1cImRhdGEudG90YWxDb3VudFwiIFtzZWxlY3RlZF09XCJzZWxlY3RlZFRhYmxlXCJcbiAgICAgICAgICAgIFtzZWxlY3RDaGVja109XCJzZWxlY3RDaGVja1wiIFtzZWxlY3Rpb25UeXBlXT1cIlNlbGVjdGlvblR5cGUubXVsdGlDbGlja1wiIChzZWxlY3QpPVwib25TZWxlY3RUYWJsZUl0ZW0oJGV2ZW50KVwiPlxuICAgICAgICAgICAgPG5neC1kYXRhdGFibGUtY29sdW1uIFt3aWR0aF09XCI1MFwiIHByb3A9XCJpZFwiIFtzb3J0YWJsZV09XCJmYWxzZVwiIFtjYW5BdXRvUmVzaXplXT1cImZhbHNlXCIgW2RyYWdnYWJsZV09XCJmYWxzZVwiXG4gICAgICAgICAgICAgIFtyZXNpemVhYmxlXT1cImZhbHNlXCI+XG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBuZ3gtZGF0YXRhYmxlLWhlYWRlci10ZW1wbGF0ZSBsZXQtdmFsdWU9XCJ2YWx1ZVwiIGxldC1hbGxSb3dzU2VsZWN0ZWQ9XCJhbGxSb3dzU2VsZWN0ZWRcIlxuICAgICAgICAgICAgICAgIGxldC1zZWxlY3RGbj1cInNlbGVjdEZuXCI+XG4gICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiIFtjaGVja2VkXT1cImFsbFJvd3NTZWxlY3RlZFwiXG4gICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cInNlbGVjdEZuKCFhbGxSb3dzU2VsZWN0ZWQpXCIgLz5cbiAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIG5neC1kYXRhdGFibGUtY2VsbC10ZW1wbGF0ZSBsZXQtcm93PVwicm93XCIgbGV0LXZhbHVlPVwidmFsdWVcIiBsZXQtaXNTZWxlY3RlZD1cImlzU2VsZWN0ZWRcIlxuICAgICAgICAgICAgICAgIGxldC1vbkNoZWNrYm94Q2hhbmdlRm49XCJvbkNoZWNrYm94Q2hhbmdlRm5cIj5cbiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCIgW2NoZWNrZWRdPVwic2VsZWN0ZWRjaGVja2JveCh2YWx1ZSlcIlxuICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvbkNoZWNrYm94Q2hhbmdlRm4oJGV2ZW50KVwiIC8+XG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L25neC1kYXRhdGFibGUtY29sdW1uPlxuICAgICAgICAgICAgPG5neC1kYXRhdGFibGUtY29sdW1uIFtuYW1lXT1cIidGaWxlRXhwbG9yZXI6OkZpbGVOYW1lJyB8IGFicExvY2FsaXphdGlvblwiIHByb3A9XCJuYW1lXCIgW2ZsZXhHcm93XT1cIjRcIj5cbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIGxldC1yb3c9XCJyb3dcIiBsZXQtdmFsdWU9XCJ2YWx1ZVwiIG5neC1kYXRhdGFibGUtY2VsbC10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICB7eyB2YWx1ZSB9fVxuICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC9uZ3gtZGF0YXRhYmxlLWNvbHVtbj5cbiAgICAgICAgICAgIDxuZ3gtZGF0YXRhYmxlLWNvbHVtbiAgW25hbWVdPVwiJ0ZpbGVFeHBsb3Jlcjo6RmlsZVNpemUnIHwgYWJwTG9jYWxpemF0aW9uXCIgcHJvcD1cInNpemVcIiBbZmxleEdyb3ddPVwiMS41XCI+XG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBsZXQtcm93PVwicm93XCIgbGV0LXZhbHVlPVwidmFsdWVcIiBuZ3gtZGF0YXRhYmxlLWNlbGwtdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAge3sgX0ZpbGVBcGlTZXJ2aWNlLmZvcm1hdEZpbGVTaXplKHZhbHVlKSB9fVxuICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC9uZ3gtZGF0YXRhYmxlLWNvbHVtbj5cbiAgICAgICAgICAgIDxuZ3gtZGF0YXRhYmxlLWNvbHVtbiAgW25hbWVdPVwiJ0ZpbGVFeHBsb3Jlcjo6RGlyZWN0b3J5JyB8IGFicExvY2FsaXphdGlvblwiIHByb3A9XCJjZWxsTmFtZVwiIFtmbGV4R3Jvd109XCIxXCI+XG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBsZXQtcm93PVwicm93XCIgbGV0LXZhbHVlPVwidmFsdWVcIiBuZ3gtZGF0YXRhYmxlLWNlbGwtdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAge3sgdmFsdWUgfX1cbiAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvbmd4LWRhdGF0YWJsZS1jb2x1bW4+XG4gICAgICAgICAgICA8bmd4LWRhdGF0YWJsZS1jb2x1bW4gW25hbWVdPVwiJ0ZpbGVFeHBsb3Jlcjo6Q3JlYXRpb25UaW1lJyB8IGFicExvY2FsaXphdGlvblwiIHByb3A9XCJjcmVhdGlvblRpbWVcIiBbZmxleEdyb3ddPVwiMlwiPlxuICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgbGV0LXJvdz1cInJvd1wiIGxldC12YWx1ZT1cInZhbHVlXCIgbmd4LWRhdGF0YWJsZS1jZWxsLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIHt7IHZhbHVlIHwgZGF0ZSA6ICdZWVlZL01NL2RkIEhIOm06cycgfX1cbiAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvbmd4LWRhdGF0YWJsZS1jb2x1bW4+XG4gICAgICAgICAgICA8bmd4LWRhdGF0YWJsZS1jb2x1bW4gW2ZsZXhHcm93XT1cIjFcIj5cbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIGxldC1yb3c9XCJyb3dcIiBsZXQtdmFsdWU9XCJ2YWx1ZVwiIG5neC1kYXRhdGFibGUtY2VsbC10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tbGlnaHQgcC0wXCIgKGNsaWNrLnN0b3ApPVwiZGVsZXRlRmlsZShyb3cpXCI+XG4gICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS10cmFzaCB0ZXh0LXByaW1hcnkgcC0yXCI+PC9pPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC9uZ3gtZGF0YXRhYmxlLWNvbHVtbj5cbiAgICAgICAgICA8L25neC1kYXRhdGFibGU+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2ICpuZ0lmPVwidXBsb2FkUGljdHVyZVN0YXR1c0xpc3QubGVuZ3RoID4gMFwiXG4gICAgICAgICAgY2xhc3M9XCJwb3NpdGlvbi1maXhlZCBib3R0b20tMCBlbmQtMCBzaGFkb3ctbGcgZmlsZS1zdGF0dXMtbW9kYWwgYm9yZGVyIGJnLXdoaXRlIHAtMSBtLTVcIlxuICAgICAgICAgIHN0eWxlPVwiYm9yZGVyLXJhZGl1czogMTBweFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXIgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBwLTAgcHktMSBib3JkZXItYm90dG9tXCI+XG4gICAgICAgICAgICAgIDxkaXY+e3snRmlsZUV4cGxvcmVyOjpVcGxvYWRGaWxlcycgfCBhYnBMb2NhbGl6YXRpb259fTwvZGl2PlxuICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0bi1jbG9zZVwiIGFyaWEtbGFiZWw9XCJDbG9zZVwiIChjbGljay5zdG9wKT1cImNsb3NlRmlsZVN0YXR1c01vZGFsKClcIj48L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keVwiPlxuICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZVwiPlxuICAgICAgICAgICAgICAgIDx0aGVhZD5cbiAgICAgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCI+e3snRmlsZUV4cGxvcmVyOjpGaWxlTmFtZScgfCBhYnBMb2NhbGl6YXRpb259fTwvdGg+XG4gICAgICAgICAgICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiPnt7J0ZpbGVFeHBsb3Jlcjo6RmlsZVNpemUnIHwgYWJwTG9jYWxpemF0aW9ufX08L3RoPlxuICAgICAgICAgICAgICAgICAgICA8dGggc2NvcGU9XCJjb2xcIj48L3RoPlxuICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICA8L3RoZWFkPlxuICAgICAgICAgICAgICAgIDx0Ym9keT5cbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgdXBsb2FkUGljdHVyZVN0YXR1c0xpc3Q7IGxldCBpID0gaW5kZXhcIj5cbiAgICAgICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgICAgIDx0aCBzY29wZT1cInJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj57eyBpdGVtLm5hbWUgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLXRleHQgdGV4dC1kYW5nZXJcIiAqbmdJZj1cIml0ZW0uc2l6ZSA+IHNpemVMaW1pdFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7eydGaWxlRXhwbG9yZXI6OkV4Y2VlZHNNYXhpbXVtU2l6ZScgfCBhYnBMb2NhbGl6YXRpb246X0ZpbGVBcGlTZXJ2aWNlLmZvcm1hdEZpbGVTaXplKHNpemVMaW1pdCl9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3sgaXRlbS5maWxlU2l6ZSB9fTwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgPHRkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGkgKm5nSWY9XCJpdGVtLnN0YXR1cyA9PSAxXCIgY2xhc3M9XCJmYXMgZmEtY2hlY2sgdGV4dC1wcmltYXJ5XCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGkgKm5nSWY9XCJpdGVtLnN0YXR1cyA9PSAyXCIgY2xhc3M9XCJmYXMgZmEtdGltZXMtY2lyY2xlIHRleHQtZGFuZ2VyXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L3Rib2R5PlxuICAgICAgICAgICAgICA8L3RhYmxlPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvbmctdGVtcGxhdGU+XG4gIDxuZy10ZW1wbGF0ZSAjYWJwRm9vdGVyPlxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1zZWNvbmRhcnlcIiBhYnBDbG9zZT57eydBYnBVaTo6Q2xvc2UnIHwgYWJwTG9jYWxpemF0aW9ufX08L2J1dHRvbj5cbiAgICA8YWJwLWJ1dHRvbiBpY29uQ2xhc3M9XCJmYSBmYS1jaGVja1wiIChjbGljayk9XCJtb2RhbFNhdmUoKVwiPnt7J0FicFVpOjpTYXZlJyB8IGFicExvY2FsaXphdGlvbn19PC9hYnAtYnV0dG9uPlxuICA8L25nLXRlbXBsYXRlPlxuPC9hYnAtbW9kYWw+Il19
272
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1tb2RhbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9maWxlLWV4cGxvcmVyL3NyYy9saWIvY29tcG9uZW50cy9maWxlLW1vZGFsL2ZpbGUtbW9kYWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZmlsZS1leHBsb3Jlci9zcmMvbGliL2NvbXBvbmVudHMvZmlsZS1tb2RhbC9maWxlLW1vZGFsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBR3RGLE9BQU8sRUFBdUIsV0FBVyxFQUEwQyx3QkFBd0IsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUdsSSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0seUJBQXlCLENBQUM7Ozs7Ozs7Ozs7QUFDeEQsSUFBSSxJQUFJLENBQUE7QUFDUixNQWFhLGtCQUFrQjtJQUduQjtJQUNBO0lBQ1E7SUFDVDtJQUNDO0lBQ0E7SUFDQTtJQVBWLFlBQ1UsWUFBK0MsRUFDL0MsT0FBdUIsRUFDZixJQUFpQixFQUMxQixlQUErQixFQUM5QixXQUF3QixFQUN4QixZQUFpQyxFQUNqQyxvQkFBeUM7UUFOekMsaUJBQVksR0FBWixZQUFZLENBQW1DO1FBQy9DLFlBQU8sR0FBUCxPQUFPLENBQWdCO1FBQ2YsU0FBSSxHQUFKLElBQUksQ0FBYTtRQUMxQixvQkFBZSxHQUFmLGVBQWUsQ0FBZ0I7UUFDOUIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsaUJBQVksR0FBWixZQUFZLENBQXFCO1FBQ2pDLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBcUI7UUFFakQsSUFBSSxHQUFHLElBQUksQ0FBQTtJQUNiLENBQUM7SUFFRCxVQUFVO0lBQ1Ysa0JBQWtCLENBQVE7SUFDMUIsSUFD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U0ksYUFBYTtzQkFBdEIsTUFBTTtnQkFvSEUsZ0JBQWdCO3NCQUF4QixLQUFLO2dCQVlJLFlBQVk7c0JBQXJCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0ICogYXMgRmlsZVNlcnZpY2UgZnJvbSAnLi4vLi4vcHJveHkvZGlnbml0ZS9maWxlLWV4cGxvcmVyL2ZpbGVzJztcbmltcG9ydCB7IENvbmZpcm1hdGlvbiwgQ29uZmlybWF0aW9uU2VydmljZSwgVG9hc3RlclNlcnZpY2UgfSBmcm9tICdAYWJwL25nLnRoZW1lLnNoYXJlZCc7XG5pbXBvcnQgeyBQYWdlZFJlc3VsdER0bywgQUJQLCBMaXN0U2VydmljZSwgUmVzdCwgUmVzdFNlcnZpY2UsIExvY2FsaXphdGlvblNlcnZpY2UsIExJU1RfUVVFUllfREVCT1VOQ0VfVElNRSB9IGZyb20gJ0BhYnAvbmcuY29yZSc7XG5pbXBvcnQgeyBGaWxlRGVzY3JpcHRvckR0bywgR2V0RmlsZXNJbnB1dCB9IGZyb20gJy4uLy4uL3Byb3h5L2RpZ25pdGUvZmlsZS1leHBsb3Jlci9maWxlcyc7XG5pbXBvcnQgeyBGaWxlQXBpU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2ZpbGUtYXBpLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2VsZWN0aW9uVHlwZSB9IGZyb20gJ0Bzd2ltbGFuZS9uZ3gtZGF0YXRhYmxlJztcbnZhciB0aGF0XG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdmZS1maWxlLW1vZGFsJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2ZpbGUtbW9kYWwuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9maWxlLW1vZGFsLmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW1xuICAgIC8vIFtSZXF1aXJlZF1cbiAgICBMaXN0U2VydmljZSxcbiAgICAvLyBbT3B0aW9uYWxdXG4gICAgLy8gUHJvdmlkZSB0aGlzIHRva2VuIGlmIHlvdSB3YW50IGEgZGlmZmVyZW50IGRlYm91bmNlIHRpbWUuXG4gICAgLy8gRGVmYXVsdCBpcyAzMDAuIENhbm5vdCBiZSAwLiBBbnkgdmFsdWUgYmVsb3cgMTAwIGlzIG5vdCByZWNvbW1lbmRlZC5cbiAgICB7IHByb3ZpZGU6IExJU1RfUVVFUllfREVCT1VOQ0VfVElNRSwgdXNlVmFsdWU6IDUwMCB9LFxuICBdXG59KVxuZXhwb3J0IGNsYXNzIEZpbGVNb2RhbENvbXBvbmVudCB7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBfRmlsZVNlcnZpY2U6IEZpbGVTZXJ2aWNlLkZpbGVEZXNjcmlwdG9yU2VydmljZSxcbiAgICBwcml2YXRlIHRvYXN0ZXI6IFRvYXN0ZXJTZXJ2aWNlLFxuICAgIHB1YmxpYyByZWFkb25seSBsaXN0OiBMaXN0U2VydmljZSxcbiAgICBwdWJsaWMgX0ZpbGVBcGlTZXJ2aWNlOiBGaWxlQXBpU2VydmljZSxcbiAgICBwcml2YXRlIHJlc3RTZXJ2aWNlOiBSZXN0U2VydmljZSxcbiAgICBwcml2YXRlIGNvbmZpcm1hdGlvbjogQ29uZmlybWF0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIF9Mb2NhbGl6YXRpb25TZXJ2aWNlOiBMb2NhbGl6YXRpb25TZXJ2aWNlLFxuICApIHtcbiAgICB0aGF0ID0gdGhpc1xuICB9XG5cbiAgLyoq5Zu+54mH5a655ZmoICovXG4gIF9maWxlQ29udGFpbmVyTmFtZTogc3RyaW5nXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgZmlsZUNvbnRhaW5lck5hbWUodjogc3RyaW5nKSB7XG4gICAgaWYgKHYpIHtcbiAgICAgIHRoaXMuX2ZpbGVDb250YWluZXJOYW1lID0gdjtcbiAgICAgIHRoaXMubG9hZERhdGEoKVxuICAgIH1cbiAgfVxuXG4gIC8qKuaYr+WQpuWkmumAiSAqL1xuICBfbXVsdGlwbGU6IGJvb2xlYW4gPSBmYWxzZVxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IG11bHRpcGxlKHY6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9tdWx0aXBsZSA9IHY7XG4gICAgaWYgKHYpIHsgfVxuICB9XG5cbiAgLyoq5paH5Lu25aSn5bCP6ZmQ5Yi2IFxuKiBAcGFyYW0gMW1iXG4qL1xuICBzaXplTGltaXQ6IG51bWJlciA9IDEwNDg1NzZcbiAgQElucHV0KClcbiAgcHVibGljIHNldCBsaW1pdCh2OiBudW1iZXIpIHtcbiAgICB0aGlzLnNpemVMaW1pdCA9IHY7XG4gIH1cbiAgLyoq54i257uE5Lu25Lyg6YCS55qE5qih5oCB5qGG54q25oCBICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgdmlzaWJsZSh2OiBib29sZWFuKSB7XG4gICAgdGhpcy5Nb2RhbE9wZW4gPSB2O1xuICAgIGlmICh2KSB7XG4gICAgICB0aGlzLmxvYWREYXRhKClcbiAgICB9XG4gIH1cblxuICAvKirmqKHmgIHmoYbnirbmgIHlm57osIMgKi9cbiAgQE91dHB1dCgpIHZpc2libGVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyKClcblxuXG5cbiAgLyoq5qih5oCB5qGGLeeKtuaAgS3mmK/lkKbmiZPlvIAgKi9cbiAgTW9kYWxPcGVuOiBib29sZWFuID0gZmFsc2VcblxuICAvKirmqKHmgIHmoYYt57mB5b+Z54q25oCBLeeUqOS6juehruWumuaooeaAgeeahOe5geW/meeKtuaAgeaYr+WQpuS4uuecnyAqL1xuICBNb2RhbEJ1c3k6IGJvb2xlYW4gPSBmYWxzZVxuXG5cblxuICAvKirmqKHmgIHmoYYt54q25oCB5pS55Y+Y5Zue6LCDICovXG4gIE1vZGFsVmlzaWJsZUNoYW5nZShldmVudCkge1xuICAgIGlmICghZXZlbnQpIHtcbiAgICAgIHRoaXMudmlzaWJsZUNoYW5nZS5lbWl0KGV2ZW50KVxuICAgICAgcmV0dXJuXG4gICAgfVxuICB9XG5cbiAgLyoq5qih5oCB5qGG5L+d5a2YICovXG4gIG1vZGFsU2F2ZSgpIHtcbiAgICBsZXQgc2VsZWN0ZWRUYWJsZWFyciA9IHRoaXMuX0ZpbGVBcGlTZXJ2aWNlLmRlZXBDbG9uZSh0aGlzLnNlbGVjdGVkVGFibGUpXG4gICAgdGhpcy5zZWxlY3RGaWxlZm4uZW1pdChzZWxlY3RlZFRhYmxlYXJyKVxuXG4gICAgdGhpcy5Nb2RhbFZpc2libGVDaGFuZ2UoZmFsc2UpXG4gIH1cbiAgLyoqZGlnbml0ZS1maWxlLW1vZGFsLXRyZWUgKi9cbiAgLyoq6YCJ5oup55qEdHJlZeiKgueCuSAqL1xuICBfdGhlU2VsZWN0ZWRUcmVlTm9kZTogYW55ID0gJydcblxuICAvKirliJ3lp4vljJbmlbDmja4gKi9cbiAgbG9hZERhdGEoKSB7XG4gICAgaWYgKHRoaXMuTW9kYWxPcGVuICYmIHRoaXMuX2ZpbGVDb250YWluZXJOYW1lKSB7XG4gICAgICB0aGlzLmhvb2tUb1F1ZXJ5KClcbiAgICB9XG4gIH1cblxuICAvKip0cmVlLeiKgueCuemAieaLqSAqL1xuICBfbm9kZUNsaWNrKGV2ZW50KSB7XG4gICAgdGhpcy5fdGhlU2VsZWN0ZWRUcmVlTm9kZSA9IGV2ZW50XG4gICAgdGhpcy5saXN0LmdldCgpXG4gIH1cblxuICAvKirlm77niYfkuIrkvKAt6KaB5LiK5Lyg5Zu+54mH55qE54q25oCB5paH5Lu25YiX6KGoICovXG4gIHVwbG9hZFBpY3R1cmVTdGF0dXNMaXN0OiBhbnlbXSA9IFtdXG5cbiAgLyoq5Zu+54mH5LiK5LygLeiOt+WPluaWh+S7tuS/oeaBr+aUueWPmCAqL1xuICBhc3luYyBnZXRGaWxlQ2hhbmdlKGV2ZW50KSB7XG4gICAgbGV0IGZpbGVzID0gbmV3IEFycmF5KC4uLmV2ZW50LnRhcmdldC5maWxlcylcbiAgICB0aGlzLnVwbG9hZFBpY3R1cmVTdGF0dXNMaXN0ID0gZmlsZXNcbiAgICBmb3IgKGNvbnN0IGZpbGUgb2YgZmlsZXMpIHtcbiAgICAgIGlmIChmaWxlLnNpemUgPiB0aGlzLnNpemVMaW1pdCkge1xuICAgICAgICB0aGlzLnNldHVwbG9hZFBpY3R1cmVTdGF0dXMoZmlsZSwgMilcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBhd2FpdCB0aGlzLnVwbG9hZGluZ0ZpbGUoZmlsZSkudGhlbigoKSA9PiB7XG4gICAgICAgIHRoaXMuc2V0dXBsb2FkUGljdHVyZVN0YXR1cyhmaWxlLCAxKVxuICAgICAgICB0aGlzLmxpc3QuZ2V0KClcbiAgICAgIH0pLmNhdGNoKCgpID0+IHtcbiAgICAgICAgdGhpcy5zZXR1cGxvYWRQaWN0dXJlU3RhdHVzKGZpbGUsIDIpXG4gICAgICB9KTsgLy8g562J5b6F5q+P5Liq5paH5Lu25LiK5Lyg5a6M5oiQICBcbiAgICB9XG4gICAgdGhpcy5saXN0LmdldCgpXG4gICAgbGV0IGlzU3VibWl0ID0gIXRoaXMudXBsb2FkUGljdHVyZVN0YXR1c0xpc3Quc29tZShlbCA9PiBlbC5zdGF0dXMgPT0gMik7XG4gICAgaWYgKGlzU3VibWl0KSB7XG4gICAgICAvLyB0aGlzLnRvYXN0ZXIuc3VjY2VzcyhcIuS4iuS8oOWujOaIkFwiKTtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLnVwbG9hZFBpY3R1cmVTdGF0dXNMaXN0ID0gW11cbiAgICAgIH0sIDYwMDApXG4gICAgfVxuICB9XG5cbiAgLyoq5Zu+54mH5LiK5LygLeiuvue9rnVwbG9hZFBpY3R1cmVTdGF0dXNMaXN055qE54q25oCBICovXG4gIHNldHVwbG9hZFBpY3R1cmVTdGF0dXMoZmlsZSwgdHlwZSkge1xuICAgIHRoaXMudXBsb2FkUGljdHVyZVN0YXR1c0xpc3QubWFwKGVsID0+IHtcbiAgICAgIGlmIChlbCA9PSBmaWxlKSBlbC5zdGF0dXMgPSB0eXBlXG4gICAgfSlcbiAgfVxuXG5cbiAgLyoq5Zu+54mH5LiK5LygLemAkuW9kuaMiemhuuW6j+S4iuS8oCAqL1xuICB1cGxvYWRpbmdGaWxlKGZpbGUpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdHMpID0+IHtcbiAgICAgIGxldCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuICAgICAgZm9ybURhdGEuYXBwZW5kKCdmaWxlJywgZmlsZSwgZmlsZS5uYW1lKTtcbiAgICAgIHRoaXMuY3JlYXRlRmlsZSh7XG4gICAgICAgIGZpbGU6IGZvcm1EYXRhLFxuICAgICAgICBjb250YWluZXJOYW1lOiB0aGlzLl9maWxlQ29udGFpbmVyTmFtZSxcbiAgICAgICAgZGlyZWN0b3J5SWQ6IHRoaXMuX3RoZVNlbGVjdGVkVHJlZU5vZGU/LmtleSB8fCAnJyxcbiAgICAgICAgZW50aXR5SWQ6ICcnXG4gICAgICB9KS5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgcmVzb2x2ZSh0cnVlKVxuICAgICAgfSwgKGVycikgPT4ge1xuICAgICAgICByZWplY3RzKGZhbHNlKVxuICAgICAgfSlcbiAgICB9KVxuICB9XG5cblxuICAvKirmlofku7booajmoLwt5pWw5o2uKi9cbiAgZGF0YTogUGFnZWRSZXN1bHREdG88RmlsZURlc2NyaXB0b3JEdG8+ID0ge1xuICAgIGl0ZW1zOiBbXSxcbiAgICB0b3RhbENvdW50OiAwLFxuICB9O1xuXG4gIC8qKuaWh+S7tuihqOagvC3mnaHku7YqL1xuICBmaWx0ZXJzID0ge30gYXMgR2V0RmlsZXNJbnB1dDtcblxuICAvKirmlofku7booajmoLwt6KGo5qC86Ieq5bim6YCJ5oup57G75Z6LICovXG4gIFNlbGVjdGlvblR5cGUgPSBTZWxlY3Rpb25UeXBlO1xuXG4gIC8qKuaWh+S7tuihqOagvC3pgInmi6nnmoTooajmoLzmlbDmja7pobkgKi9cbiAgc2VsZWN0ZWRUYWJsZSA9IFtdXG5cbiAgLyoq5bey6YCJ5a6a55qE5paH5Lu2ICovXG4gIEBJbnB1dCgpIHNlbGVjdFBpY2tlckZpbGU6IGFueVtdXG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIC8vQ2FsbGVkIGJlZm9yZSBhbnkgb3RoZXIgbGlmZWN5Y2xlIGhvb2suIFVzZSBpdCB0byBpbmplY3QgZGVwZW5kZW5jaWVzLCBidXQgYXZvaWQgYW55IHNlcmlvdXMgd29yayBoZXJlLlxuICAgIC8vQWRkICcke2ltcGxlbWVudHMgT25DaGFuZ2VzfScgdG8gdGhlIGNsYXNzLlxuICAgIHRoaXMuc2VsZWN0ZWRUYWJsZSA9IHRoaXMuX0ZpbGVBcGlTZXJ2aWNlLmRlZXBDbG9uZSh0aGlzLnNlbGVjdFBpY2tlckZpbGUpXG4gIH1cbiAgLyoq5b2T5YmN6YCJ5oup55qEdGFibGXpobkgaWQgKi9cbiAgbm93U2VsZWN0SWQ6IGFueSA9ICcnXG5cbiAgLyoq6YCJ5oup5paH5Lu25Zue6LCDICovXG4gIC8vIEBPdXRwdXQoKSBzZWxlY3RlZEZpbGVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueVtdPigpXG4gIEBPdXRwdXQoKSBzZWxlY3RGaWxlZm4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueVtdPigpXG5cbiAgLyoq5paH5Lu26KGo5qC8LeiOt+WPluihqOagvOaVsOaNriAqL1xuICBob29rVG9RdWVyeSgpIHtcbiAgICBjb25zdCBnZXREYXRhID0gKHF1ZXJ5OiBBQlAuUGFnZVF1ZXJ5UGFyYW1zKSA9PiB0aGlzLl9GaWxlU2VydmljZS5nZXRMaXN0KHtcbiAgICAgIC4uLnF1ZXJ5LFxuICAgICAgLi4udGhpcy5maWx0ZXJzLFxuICAgICAgY29udGFpbmVyTmFtZTogdGhpcy5fZmlsZUNvbnRhaW5lck5hbWUsXG4gICAgICBkaXJlY3RvcnlJZDogdGhpcy5fdGhlU2VsZWN0ZWRUcmVlTm9kZS5rZXlcbiAgICB9KTtcbiAgICBjb25zdCBzZXREYXRhID0gKGxpc3Q6IFBhZ2VkUmVzdWx0RHRvPEZpbGVEZXNjcmlwdG9yRHRvPikgPT4gKHRoaXMuZGF0YSA9IGxpc3QpO1xuICAgIHRoaXMubGlzdC5ob29rVG9RdWVyeShnZXREYXRhKS5zdWJzY3JpYmUoc2V0RGF0YSk7XG4gIH1cblxuICAvKirmlofku7booajmoLwt5p+l55yL5omA5pyJ5YiG57uE55qE5paH5Lu25pWw5o2uICovXG4gIGxvb2tBbGxGaWxlKCkge1xuICAgIHRoaXMuX3RoZVNlbGVjdGVkVHJlZU5vZGUgPSAnJ1xuICAgIHRoaXMubGlzdC5nZXQoKVxuICB9XG5cbiAgLyoq6YCJ5oup6KGo5qC86aG5ICovXG4gIG9uU2VsZWN0VGFibGVJdGVtKHsgc2VsZWN0ZWQgfSkge1xuICAgIHRoaXMuc2VsZWN0ZWRUYWJsZSA9IHRoaXMuX0ZpbGVBcGlTZXJ2aWNlLmRlZXBDbG9uZShzZWxlY3RlZClcbiAgICBsZXQgc2VsZWN0ZWRUYWJsZWFyciA9IHRoaXMucmVtb3ZlRHVwbGljYXRlc0J5SWQodGhpcy5zZWxlY3RlZFRhYmxlKVxuICAgIGlmIChzZWxlY3RlZC5sZW5ndGggPiBzZWxlY3RlZFRhYmxlYXJyLmxlbmd0aCkge1xuICAgICAgc2VsZWN0ZWRUYWJsZWFyciA9IHNlbGVjdGVkVGFibGVhcnIuZmlsdGVyKGVsID0+IGVsLmlkICE9PSB0aGlzLm5vd1NlbGVjdElkKVxuICAgIH1cbiAgICB0aGlzLnNlbGVjdGVkVGFibGUgPSBzZWxlY3RlZFRhYmxlYXJyXG4gIH1cblxuICAvKirliKDpmaTmlbDnu4TkuK3ph43lpI3nmoTpobkgKi9cbiAgcmVtb3ZlRHVwbGljYXRlc0J5SWQoYXJyYXkpIHtcbiAgICBjb25zdCBzZWVuSWRzID0ge307XG4gICAgcmV0dXJuIGFycmF5LmZpbHRlcihpdGVtID0+IHtcbiAgICAgIGlmICghc2Vlbklkc1tpdGVtLmlkXSkge1xuICAgICAgICBzZWVuSWRzW2l0ZW0uaWRdID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSk7XG4gIH1cblxuICAvKirkuIDkuKrluIPlsJRvcuWHveaVsO+8jOWPr+eUqOS6juajgOafpeaYr+WQpuimgeagueaNruadoeS7tumAieaLqeeJueWumuihjOOAgiAqL1xuICBzZWxlY3RDaGVjayA9IChyb3csIGNvbHVtbiwgdmFsdWUpID0+IHtcbiAgICB0aGlzLm5vd1NlbGVjdElkID0gcm93LmlkXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvKirliKTmlq1yb3fmmK/lkKbpgInkuK0gKi9cbiAgc2VsZWN0ZWRjaGVja2JveCA9IChpZCkgPT4ge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdGVkVGFibGUuc29tZShlbCA9PiBlbC5pZCA9PSBpZClcbiAgfVxuXG5cblxuICAvKirliKDpmaTlm77niYcgKi9cbiAgZGVsZXRlRmlsZShmaWxlKSB7XG5cbiAgICB0aGlzLmNvbmZpcm1hdGlvblxuICAgICAgLndhcm4oJycsIHsga2V5OiAnJywgZGVmYXVsdFZhbHVlOiB0aGlzLl9Mb2NhbGl6YXRpb25TZXJ2aWNlLmluc3RhbnQoYEFicFVpOjpJdGVtV2lsbEJlRGVsZXRlZE1lc3NhZ2VgKSB9KVxuICAgICAgLnN1YnNjcmliZSgoc3RhdHVzOiBDb25maXJtYXRpb24uU3RhdHVzKSA9PiB7XG4gICAgICAgIGlmIChzdGF0dXMgPT0gJ2NvbmZpcm0nKSB7XG4gICAgICAgICAgdGhpcy5fRmlsZVNlcnZpY2UuZGVsZXRlKGZpbGUuaWQpLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgICAgICAgdGhpcy50b2FzdGVyLnN1Y2Nlc3ModGhpcy5fTG9jYWxpemF0aW9uU2VydmljZS5pbnN0YW50KGBBYnBVaTo6U3VjY2Vzc2Z1bGx5RGVsZXRlZGApKTtcbiAgICAgICAgICAgIHRoaXMubGlzdC5nZXQoKVxuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgLyoq5YWz6Zet5paH5Lu254q25oCB5by556qXICovXG4gIGNsb3NlRmlsZVN0YXR1c01vZGFsKCkge1xuICAgIHRoaXMudXBsb2FkUGljdHVyZVN0YXR1c0xpc3QgPSBbXVxuICB9XG5cbiAgLyoq5Yib5bu65Zu+54mH55qE5o6l5Y+j77yM5Luj55CG5Lit55qEZmlsZeexu+Wei+S4jeWMuemFje+8jOWIh+aNouS4umFueeexu+WeiyAqL1xuICBjcmVhdGVGaWxlID0gKGlucHV0OiBhbnksIGNvbmZpZz86IFBhcnRpYWw8UmVzdC5Db25maWc+KSA9PlxuICAgIHRoaXMucmVzdFNlcnZpY2UucmVxdWVzdDxhbnksIEZpbGVEZXNjcmlwdG9yRHRvPih7XG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIHVybDogJy9hcGkvZmlsZS1leHBsb3Jlci9maWxlcycsXG4gICAgICBwYXJhbXM6IHsgY29udGFpbmVyTmFtZTogaW5wdXQuY29udGFpbmVyTmFtZSwgY2VsbE5hbWU6IGlucHV0LmNlbGxOYW1lLCBkaXJlY3RvcnlJZDogaW5wdXQuZGlyZWN0b3J5SWQsIGVudGl0eUlkOiBpbnB1dC5lbnRpdHlJZCB9LFxuICAgICAgYm9keTogaW5wdXQuZmlsZSxcbiAgICB9LFxuICAgICAgeyBhcGlOYW1lOiAnRmlsZUV4cGxvcmVyJywgLi4uY29uZmlnIH0pO1xufVxuIiwiPGFicC1tb2RhbCBbKHZpc2libGUpXT1cIk1vZGFsT3BlblwiICh2aXNpYmxlQ2hhbmdlKT1cIk1vZGFsVmlzaWJsZUNoYW5nZSgkZXZlbnQpXCJcbiAgW29wdGlvbnNdPVwieyBzaXplOiAneGwnLCBzY3JvbGxhYmxlOiBmYWxzZSB9XCI+XG4gIDxuZy10ZW1wbGF0ZSAjYWJwSGVhZGVyPlxuICAgIDxoMz57eydGaWxlRXhwbG9yZXI6OkZpbGVFeHBsb3JlcicgfCBhYnBMb2NhbGl6YXRpb259fTwvaDM+XG4gIDwvbmctdGVtcGxhdGU+XG4gIDxuZy10ZW1wbGF0ZSAjYWJwQm9keT5cbiAgICA8ZGl2IGNsYXNzPVwicm93IGZpbGUtZXhwbG9yZXItbW9kYWwtYm9keSBmaWxlLW1vZGFsXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLTNcIiBzdHlsZT1cIm92ZXJmbG93OiBhdXRvOyBoZWlnaHQ6IGNhbGMoMTAwdmggLSAyNDBweClcIj5cbiAgICAgICAgPGZlLWZpbGUtbW9kYWwtdHJlZSBbdGhlU2VsZWN0ZWRUcmVlTm9kZV09XCJfdGhlU2VsZWN0ZWRUcmVlTm9kZVwiIChub2RlQ2xpY2spPVwiX25vZGVDbGljaygkZXZlbnQpXCJcbiAgICAgICAgICBbZmlsZUNvbnRhaW5lck5hbWVdPVwiX2ZpbGVDb250YWluZXJOYW1lXCI+PC9mZS1maWxlLW1vZGFsLXRyZWU+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtOVwiIHN0eWxlPVwiaGVpZ2h0OiBjYWxjKDEwMHZoIC0gMjQwcHgpXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtYi0yIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnRuLWxpbmtcIiByb2xlPWJ1dHRvbiBzdHlsZT1cImZsZXg6IDJcIiAoY2xpY2spPVwibG9va0FsbEZpbGUoKVwiPnt7J0ZpbGVFeHBsb3Jlcjo6QWxsRmlsZXMnIHwgYWJwTG9jYWxpemF0aW9ufX08L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXAgZm9ybS1maWxlXCIgc3R5bGU9XCJmbGV4OiAyXCI+XG4gICAgICAgICAgICA8aW5wdXQgdHlwZT1cImZpbGVcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiICNmaWxlRWRpdCBbbXVsdGlwbGVdPVwiX211bHRpcGxlXCIgXG4gICAgICAgICAgICAgIChjaGFuZ2UpPVwiZ2V0RmlsZUNoYW5nZSgkZXZlbnQpXCIgLz5cbiAgICAgICAgICAgICAgPCEtLSBhY2NlcHQ9XCIuanBnLC5qcGVnLC5wbmcsLmdpZiwud2VicFwiIC0tPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdj5cbiAgICAgICAgICA8bmd4LWRhdGF0YWJsZSBjbGFzcz1cIm1hdGVyaWFsIGNvbnRhaW5lci1oZWlnaHRcIiBbcm93c109XCJkYXRhLml0ZW1zXCIgW2xpc3RdPVwibGlzdFwiIGNvbHVtbk1vZGU9XCJmbGV4XCJcbiAgICAgICAgICAgIFtjb2x1bW5zXT1cImNvbHVtbnNcIiBbaGVhZGVySGVpZ2h0XT1cIjUwXCIgW2Zvb3RlckhlaWdodF09XCI1MFwiIHJvd0hlaWdodD1cImF1dG9cIiBbc2Nyb2xsYmFyVl09XCJ0cnVlXCJcbiAgICAgICAgICAgIFt2aXJ0dWFsaXphdGlvbl09XCJmYWxzZVwiIFtleHRlcm5hbFBhZ2luZ109XCJ0cnVlXCIgW2NvdW50XT1cImRhdGEudG90YWxDb3VudFwiIFtzZWxlY3RlZF09XCJzZWxlY3RlZFRhYmxlXCJcbiAgICAgICAgICAgIFtzZWxlY3RDaGVja109XCJzZWxlY3RDaGVja1wiIFtzZWxlY3Rpb25UeXBlXT1cIl9tdWx0aXBsZT9TZWxlY3Rpb25UeXBlLm11bHRpQ2xpY2s6U2VsZWN0aW9uVHlwZS5zaW5nbGVcIiAoc2VsZWN0KT1cIm9uU2VsZWN0VGFibGVJdGVtKCRldmVudClcIj5cbiAgICAgICAgICAgIDxuZ3gtZGF0YXRhYmxlLWNvbHVtbiBbd2lkdGhdPVwiNTBcIiBwcm9wPVwiaWRcIiBbc29ydGFibGVdPVwiZmFsc2VcIiBbY2FuQXV0b1Jlc2l6ZV09XCJmYWxzZVwiIFtkcmFnZ2FibGVdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICBbcmVzaXplYWJsZV09XCJmYWxzZVwiPlxuICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgbmd4LWRhdGF0YWJsZS1oZWFkZXItdGVtcGxhdGUgbGV0LXZhbHVlPVwidmFsdWVcIiBsZXQtYWxsUm93c1NlbGVjdGVkPVwiYWxsUm93c1NlbGVjdGVkXCJcbiAgICAgICAgICAgICAgICBsZXQtc2VsZWN0Rm49XCJzZWxlY3RGblwiPlxuICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIiBbY2hlY2tlZF09XCJhbGxSb3dzU2VsZWN0ZWRcIlxuICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJzZWxlY3RGbighYWxsUm93c1NlbGVjdGVkKVwiIC8+XG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBuZ3gtZGF0YXRhYmxlLWNlbGwtdGVtcGxhdGUgbGV0LXJvdz1cInJvd1wiIGxldC12YWx1ZT1cInZhbHVlXCIgbGV0LWlzU2VsZWN0ZWQ9XCJpc1NlbGVjdGVkXCJcbiAgICAgICAgICAgICAgICBsZXQtb25DaGVja2JveENoYW5nZUZuPVwib25DaGVja2JveENoYW5nZUZuXCI+XG4gICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiIFtjaGVja2VkXT1cInNlbGVjdGVkY2hlY2tib3godmFsdWUpXCJcbiAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwib25DaGVja2JveENoYW5nZUZuKCRldmVudClcIiAvPlxuICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC9uZ3gtZGF0YXRhYmxlLWNvbHVtbj5cbiAgICAgICAgICAgIDxuZ3gtZGF0YXRhYmxlLWNvbHVtbiAgIFtmbGV4R3Jvd109XCIyXCI+XG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBsZXQtcm93PVwicm93XCIgbGV0LXZhbHVlPVwidmFsdWVcIiBuZ3gtZGF0YXRhYmxlLWNlbGwtdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPGZlLWZpbGUtcHJldmlldyBbd2lkdGhdPVwiJzgwcHgnXCIgW3NyY109XCJyb3cudXJsXCIgW25hbWVdPVwicm93Lm5hbWVcIiBbdHlwZV09XCJyb3cubWltZVR5cGVcIiBbcHJldmlld109XCJ0cnVlXCI+PC9mZS1maWxlLXByZXZpZXc+XG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L25neC1kYXRhdGFibGUtY29sdW1uPlxuICAgICAgICAgICAgPG5neC1kYXRhdGFibGUtY29sdW1uIFtuYW1lXT1cIidGaWxlRXhwbG9yZXI6OkZpbGVOYW1lJyB8IGFicExvY2FsaXphdGlvblwiIHByb3A9XCJuYW1lXCIgW2ZsZXhHcm93XT1cIjRcIj5cbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIGxldC1yb3c9XCJyb3dcIiBsZXQtdmFsdWU9XCJ2YWx1ZVwiIG5neC1kYXRhdGFibGUtY2VsbC10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICB7eyB2YWx1ZSB9fVxuICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC9uZ3gtZGF0YXRhYmxlLWNvbHVtbj5cbiAgICAgICAgICAgIDxuZ3gtZGF0YXRhYmxlLWNvbHVtbiAgW25hbWVdPVwiJ0ZpbGVFeHBsb3Jlcjo6RmlsZVNpemUnIHwgYWJwTG9jYWxpemF0aW9uXCIgcHJvcD1cInNpemVcIiBbZmxleEdyb3ddPVwiMS41XCI+XG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBsZXQtcm93PVwicm93XCIgbGV0LXZhbHVlPVwidmFsdWVcIiBuZ3gtZGF0YXRhYmxlLWNlbGwtdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAge3sgX0ZpbGVBcGlTZXJ2aWNlLmZvcm1hdEZpbGVTaXplKHZhbHVlKSB9fVxuICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC9uZ3gtZGF0YXRhYmxlLWNvbHVtbj5cbiAgICAgICAgICAgIDxuZ3gtZGF0YXRhYmxlLWNvbHVtbiAgW25hbWVdPVwiJ0ZpbGVFeHBsb3Jlcjo6RGlyZWN0b3J5JyB8IGFicExvY2FsaXphdGlvblwiIHByb3A9XCJjZWxsTmFtZVwiIFtmbGV4R3Jvd109XCIxXCI+XG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBsZXQtcm93PVwicm93XCIgbGV0LXZhbHVlPVwidmFsdWVcIiBuZ3gtZGF0YXRhYmxlLWNlbGwtdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAge3sgdmFsdWUgfX1cbiAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvbmd4LWRhdGF0YWJsZS1jb2x1bW4+XG4gICAgICAgICAgICA8bmd4LWRhdGF0YWJsZS1jb2x1bW4gW25hbWVdPVwiJ0ZpbGVFeHBsb3Jlcjo6Q3JlYXRpb25UaW1lJyB8IGFicExvY2FsaXphdGlvblwiIHByb3A9XCJjcmVhdGlvblRpbWVcIiBbZmxleEdyb3ddPVwiMlwiPlxuICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgbGV0LXJvdz1cInJvd1wiIGxldC12YWx1ZT1cInZhbHVlXCIgbmd4LWRhdGF0YWJsZS1jZWxsLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIHt7IHZhbHVlIHwgZGF0ZSA6ICdZWVlZL01NL2RkIEhIOm06cycgfX1cbiAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvbmd4LWRhdGF0YWJsZS1jb2x1bW4+XG4gICAgICAgICAgICA8bmd4LWRhdGF0YWJsZS1jb2x1bW4gW2ZsZXhHcm93XT1cIjFcIj5cbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIGxldC1yb3c9XCJyb3dcIiBsZXQtdmFsdWU9XCJ2YWx1ZVwiIG5neC1kYXRhdGFibGUtY2VsbC10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tbGlnaHQgcC0wXCIgKGNsaWNrLnN0b3ApPVwiZGVsZXRlRmlsZShyb3cpXCI+XG4gICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS10cmFzaCB0ZXh0LXByaW1hcnkgcC0yXCI+PC9pPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC9uZ3gtZGF0YXRhYmxlLWNvbHVtbj5cbiAgICAgICAgICA8L25neC1kYXRhdGFibGU+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2ICpuZ0lmPVwidXBsb2FkUGljdHVyZVN0YXR1c0xpc3QubGVuZ3RoID4gMFwiXG4gICAgICAgICAgY2xhc3M9XCJwb3NpdGlvbi1maXhlZCBib3R0b20tMCBlbmQtMCBzaGFkb3ctbGcgZmlsZS1zdGF0dXMtbW9kYWwgICBtLTVcIlxuICAgICAgICAgIHN0eWxlPVwiYm9yZGVyLXJhZGl1czogMTBweFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkIHAtMVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWJldHdlZW4gcC0wIHB5LTEgYm9yZGVyLWJvdHRvbVwiPlxuICAgICAgICAgICAgICA8ZGl2Pnt7J0ZpbGVFeHBsb3Jlcjo6VXBsb2FkRmlsZXMnIHwgYWJwTG9jYWxpemF0aW9ufX08L2Rpdj5cbiAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4tY2xvc2VcIiBhcmlhLWxhYmVsPVwiQ2xvc2VcIiAoY2xpY2suc3RvcCk9XCJjbG9zZUZpbGVTdGF0dXNNb2RhbCgpXCI+PC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHlcIj5cbiAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPVwidGFibGVcIj5cbiAgICAgICAgICAgICAgICA8dGhlYWQ+XG4gICAgICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiPnt7J0ZpbGVFeHBsb3Jlcjo6RmlsZU5hbWUnIHwgYWJwTG9jYWxpemF0aW9ufX08L3RoPlxuICAgICAgICAgICAgICAgICAgICA8dGggc2NvcGU9XCJjb2xcIj57eydGaWxlRXhwbG9yZXI6OkZpbGVTaXplJyB8IGFicExvY2FsaXphdGlvbn19PC90aD5cbiAgICAgICAgICAgICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCI+PC90aD5cbiAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgPC90aGVhZD5cbiAgICAgICAgICAgICAgICA8dGJvZHk+XG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIHVwbG9hZFBpY3R1cmVTdGF0dXNMaXN0OyBsZXQgaSA9IGluZGV4XCI+XG4gICAgICAgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICAgICAgICA8dGggc2NvcGU9XCJyb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+e3sgaXRlbS5uYW1lIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS10ZXh0IHRleHQtZGFuZ2VyXCIgKm5nSWY9XCJpdGVtLnNpemUgPiBzaXplTGltaXRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge3snRmlsZUV4cGxvcmVyOjpFeGNlZWRzTWF4aW11bVNpemUnIHwgYWJwTG9jYWxpemF0aW9uOl9GaWxlQXBpU2VydmljZS5mb3JtYXRGaWxlU2l6ZShzaXplTGltaXQpfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICAgICAgICAgICAgPHRkPnt7IGl0ZW0uZmlsZVNpemUgfX08L3RkPlxuICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpICpuZ0lmPVwiaXRlbS5zdGF0dXMgPT0gMVwiIGNsYXNzPVwiZmFzIGZhLWNoZWNrIHRleHQtcHJpbWFyeVwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpICpuZ0lmPVwiaXRlbS5zdGF0dXMgPT0gMlwiIGNsYXNzPVwiZmFzIGZhLXRpbWVzLWNpcmNsZSB0ZXh0LWRhbmdlclwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC90Ym9keT5cbiAgICAgICAgICAgICAgPC90YWJsZT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L25nLXRlbXBsYXRlPlxuICA8bmctdGVtcGxhdGUgI2FicEZvb3Rlcj5cbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tc2Vjb25kYXJ5XCIgYWJwQ2xvc2U+e3snQWJwVWk6OkNsb3NlJyB8IGFicExvY2FsaXphdGlvbn19PC9idXR0b24+XG4gICAgPGFicC1idXR0b24gaWNvbkNsYXNzPVwiZmEgZmEtY2hlY2tcIiAoY2xpY2spPVwibW9kYWxTYXZlKClcIj57eydBYnBVaTo6U2F2ZScgfCBhYnBMb2NhbGl6YXRpb259fTwvYWJwLWJ1dHRvbj5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvYWJwLW1vZGFsPiJdfQ==
@@ -4,11 +4,17 @@ import * as i1 from "../../services/file-api.service";
4
4
  import * as i2 from "@angular/common";
5
5
  import * as i3 from "@abp/ng.core";
6
6
  import * as i4 from "../file-modal/file-modal.component";
7
+ import * as i5 from "../../previews/file-preview.component";
7
8
  class FilePickerComponent {
8
9
  _FileApiService;
9
10
  constructor(_FileApiService) {
10
11
  this._FileApiService = _FileApiService;
11
12
  }
13
+ /**是否多选 */
14
+ _multiple = false;
15
+ set multiple(v) {
16
+ this._multiple = v;
17
+ }
12
18
  /**图片容器 */
13
19
  _fileContainerName = 'images';
14
20
  set fileContainerName(v) {
@@ -41,17 +47,19 @@ class FilePickerComponent {
41
47
  this.selectedFileChange.emit(this.selectFormFile);
42
48
  }
43
49
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FilePickerComponent, deps: [{ token: i1.FileApiService }], target: i0.ɵɵFactoryTarget.Component });
44
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FilePickerComponent, selector: "fe-file-picker", inputs: { fileContainerName: "fileContainerName", selectFormFile: "selectFormFile" }, outputs: { selectedFileChange: "selectedFileChange" }, usesOnChanges: true, ngImport: i0, template: "<button class=\"btn btn-sm btn-primary ms-2\" type=\"button\" (click.stop)=\"ModalOpen = true\">{{'FileExplorer::SelectFile' | abpLocalization}}</button>\n<fe-file-modal [(visible)]=\"ModalOpen\" [selectPickerFile]=\"selectFormFile\" (selectFilefn)=\"_selectFilefn($event)\" [fileContainerName]=\"_fileContainerName\"></fe-file-modal>\n<table class=\"table\" *ngIf=\"_fileShowTable.length>0\">\n <thead>\n <tr>\n <th scope=\"col\">{{'FileExplorer::FileName' | abpLocalization}}</th>\n <th scope=\"col\">{{'FileExplorer::FileSize' | abpLocalization}}</th>\n <th scope=\"col\"></th>\n </tr>\n </thead>\n <tbody>\n <ng-container *ngFor=\"let item of _fileShowTable;let i =index\">\n <tr>\n <th scope=\"row\">\n <div>{{item.name}}</div>\n </th>\n <td >{{_FileApiService.formatFileSize(item.size)}}</td>\n <td>\n <button class=\"btn btn-sm p-0 btn-light \" (click.stop)=\"deleteFileTableItem(i,item)\">\n <i class=\"fas fa-trash p-2\"></i>\n </button>\n </td>\n </tr>\n </ng-container>\n </tbody>\n</table>\n\n\n", styles: [""], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.StopPropagationDirective, selector: "[click.stop]", outputs: ["click.stop"] }, { kind: "component", type: i4.FileModalComponent, selector: "fe-file-modal", inputs: ["fileContainerName", "multiple", "limit", "visible", "selectPickerFile"], outputs: ["visibleChange", "selectFilefn"] }, { kind: "pipe", type: i3.LocalizationPipe, name: "abpLocalization" }] });
50
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FilePickerComponent, selector: "fe-file-picker", inputs: { multiple: "multiple", fileContainerName: "fileContainerName", selectFormFile: "selectFormFile" }, outputs: { selectedFileChange: "selectedFileChange" }, usesOnChanges: true, ngImport: i0, template: "<button class=\"btn btn-sm btn-primary ms-2 float-end\" type=\"button\" (click.stop)=\"ModalOpen = true\">{{'FileExplorer::SelectFile' | abpLocalization}}</button>\n<fe-file-modal [(visible)]=\"ModalOpen\" [selectPickerFile]=\"selectFormFile\" [multiple]=\"_multiple\" (selectFilefn)=\"_selectFilefn($event)\" [fileContainerName]=\"_fileContainerName\"></fe-file-modal>\n<table class=\"table\" *ngIf=\"_fileShowTable.length>0\">\n <thead>\n <tr>\n <th scope=\"col\"></th>\n <th scope=\"col\">{{'FileExplorer::FileName' | abpLocalization}}</th>\n <th scope=\"col\">{{'FileExplorer::FileSize' | abpLocalization}}</th>\n <th scope=\"col\"></th>\n </tr>\n </thead>\n <tbody>\n <ng-container *ngFor=\"let item of _fileShowTable;let i =index\">\n <tr>\n <td>\n <fe-file-preview [width]=\"'80px'\" [src]=\"item.url\" [name]=\"item.name\" [type]=\"item.mimeType\" [preview]=\"true\"></fe-file-preview>\n </td>\n <th scope=\"row\">\n <div>{{item.name}}</div>\n </th>\n <td >{{_FileApiService.formatFileSize(item.size)}}</td>\n <td>\n <button class=\"btn btn-sm p-0 btn-light \" (click.stop)=\"deleteFileTableItem(i,item)\">\n <i class=\"fas fa-trash p-2\"></i>\n </button>\n </td>\n </tr>\n </ng-container>\n </tbody>\n</table>\n\n\n", styles: [""], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.StopPropagationDirective, selector: "[click.stop]", outputs: ["click.stop"] }, { kind: "component", type: i4.FileModalComponent, selector: "fe-file-modal", inputs: ["fileContainerName", "multiple", "limit", "visible", "selectPickerFile"], outputs: ["visibleChange", "selectFilefn"] }, { kind: "component", type: i5.FilePreviewComponent, selector: "fe-file-preview", inputs: ["width", "src", "preview", "type", "name"] }, { kind: "pipe", type: i3.LocalizationPipe, name: "abpLocalization" }] });
45
51
  }
46
52
  export { FilePickerComponent };
47
53
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FilePickerComponent, decorators: [{
48
54
  type: Component,
49
- args: [{ selector: 'fe-file-picker', template: "<button class=\"btn btn-sm btn-primary ms-2\" type=\"button\" (click.stop)=\"ModalOpen = true\">{{'FileExplorer::SelectFile' | abpLocalization}}</button>\n<fe-file-modal [(visible)]=\"ModalOpen\" [selectPickerFile]=\"selectFormFile\" (selectFilefn)=\"_selectFilefn($event)\" [fileContainerName]=\"_fileContainerName\"></fe-file-modal>\n<table class=\"table\" *ngIf=\"_fileShowTable.length>0\">\n <thead>\n <tr>\n <th scope=\"col\">{{'FileExplorer::FileName' | abpLocalization}}</th>\n <th scope=\"col\">{{'FileExplorer::FileSize' | abpLocalization}}</th>\n <th scope=\"col\"></th>\n </tr>\n </thead>\n <tbody>\n <ng-container *ngFor=\"let item of _fileShowTable;let i =index\">\n <tr>\n <th scope=\"row\">\n <div>{{item.name}}</div>\n </th>\n <td >{{_FileApiService.formatFileSize(item.size)}}</td>\n <td>\n <button class=\"btn btn-sm p-0 btn-light \" (click.stop)=\"deleteFileTableItem(i,item)\">\n <i class=\"fas fa-trash p-2\"></i>\n </button>\n </td>\n </tr>\n </ng-container>\n </tbody>\n</table>\n\n\n" }]
50
- }], ctorParameters: function () { return [{ type: i1.FileApiService }]; }, propDecorators: { fileContainerName: [{
55
+ args: [{ selector: 'fe-file-picker', template: "<button class=\"btn btn-sm btn-primary ms-2 float-end\" type=\"button\" (click.stop)=\"ModalOpen = true\">{{'FileExplorer::SelectFile' | abpLocalization}}</button>\n<fe-file-modal [(visible)]=\"ModalOpen\" [selectPickerFile]=\"selectFormFile\" [multiple]=\"_multiple\" (selectFilefn)=\"_selectFilefn($event)\" [fileContainerName]=\"_fileContainerName\"></fe-file-modal>\n<table class=\"table\" *ngIf=\"_fileShowTable.length>0\">\n <thead>\n <tr>\n <th scope=\"col\"></th>\n <th scope=\"col\">{{'FileExplorer::FileName' | abpLocalization}}</th>\n <th scope=\"col\">{{'FileExplorer::FileSize' | abpLocalization}}</th>\n <th scope=\"col\"></th>\n </tr>\n </thead>\n <tbody>\n <ng-container *ngFor=\"let item of _fileShowTable;let i =index\">\n <tr>\n <td>\n <fe-file-preview [width]=\"'80px'\" [src]=\"item.url\" [name]=\"item.name\" [type]=\"item.mimeType\" [preview]=\"true\"></fe-file-preview>\n </td>\n <th scope=\"row\">\n <div>{{item.name}}</div>\n </th>\n <td >{{_FileApiService.formatFileSize(item.size)}}</td>\n <td>\n <button class=\"btn btn-sm p-0 btn-light \" (click.stop)=\"deleteFileTableItem(i,item)\">\n <i class=\"fas fa-trash p-2\"></i>\n </button>\n </td>\n </tr>\n </ng-container>\n </tbody>\n</table>\n\n\n" }]
56
+ }], ctorParameters: function () { return [{ type: i1.FileApiService }]; }, propDecorators: { multiple: [{
57
+ type: Input
58
+ }], fileContainerName: [{
51
59
  type: Input
52
60
  }], selectFormFile: [{
53
61
  type: Input
54
62
  }], selectedFileChange: [{
55
63
  type: Output
56
64
  }] } });
57
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZmlsZS1leHBsb3Jlci9zcmMvbGliL2NvbXBvbmVudHMvZmlsZS1waWNrZXIvZmlsZS1waWNrZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZmlsZS1leHBsb3Jlci9zcmMvbGliL2NvbXBvbmVudHMvZmlsZS1waWNrZXIvZmlsZS1waWNrZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxZQUFZLEVBQUUsS0FBSyxFQUFhLE1BQU0sRUFBOEMsTUFBTSxlQUFlLENBQUM7Ozs7OztBQUcxSSxNQUthLG1CQUFtQjtJQUlwQjtJQURWLFlBQ1UsZUFBK0I7UUFBL0Isb0JBQWUsR0FBZixlQUFlLENBQWdCO0lBRXpDLENBQUM7SUFHRCxVQUFVO0lBQ1Ysa0JBQWtCLEdBQVcsUUFBUSxDQUFBO0lBQ3JDLElBQ1csaUJBQWlCLENBQUMsQ0FBUztRQUNwQyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFRCxZQUFZO0lBQ0gsY0FBYyxDQUFNO0lBRTdCLFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUFJLHlCQUF5QixHQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLENBQUE7UUFDcEUsSUFBRyx5QkFBeUIsQ0FBQyxNQUFNLEdBQUMsQ0FBQyxFQUFDO1lBQ3BDLElBQUksQ0FBQyxjQUFjLEdBQUMseUJBQXlCLENBQUE7U0FDOUM7SUFDSCxDQUFDO0lBRVMsa0JBQWtCLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQTtJQUVqRCxjQUFjLEdBQVUsRUFBRSxDQUFBO0lBRTFCLGVBQWU7SUFDZixhQUFhLENBQUMsS0FBWTtRQUN4QixJQUFJLGNBQWMsR0FBRSxJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUN6RCxJQUFJLENBQUMsY0FBYyxHQUFFLGNBQWMsQ0FBQTtRQUNuQyxJQUFJLENBQUMsY0FBYyxHQUFDLGNBQWMsQ0FBQTtRQUNsQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFBO0lBQzlDLENBQUM7SUFFRCxpQkFBaUI7SUFDakIsU0FBUyxHQUFZLEtBQUssQ0FBQTtJQUUxQixhQUFhO0lBQ2IsbUJBQW1CLENBQUMsQ0FBQyxFQUFFLElBQUk7UUFDekIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBO1FBQ2hDLElBQUksQ0FBQyxjQUFjLEdBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQTtRQUN2QyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFBO1FBQ2hDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFBO0lBQ25ELENBQUM7d0dBL0NVLG1CQUFtQjs0RkFBbkIsbUJBQW1CLHdOQ1JoQyw0dUNBNEJBOztTRHBCYSxtQkFBbUI7NEZBQW5CLG1CQUFtQjtrQkFML0IsU0FBUzsrQkFDRSxnQkFBZ0I7cUdBZ0JmLGlCQUFpQjtzQkFEM0IsS0FBSztnQkFNRyxjQUFjO3NCQUF0QixLQUFLO2dCQVNJLGtCQUFrQjtzQkFBM0IsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMsIFZpZXdDaGlsZCwgVmlld0NvbnRhaW5lclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRmlsZUFwaVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9maWxlLWFwaS5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZmUtZmlsZS1waWNrZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vZmlsZS1waWNrZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9maWxlLXBpY2tlci5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIEZpbGVQaWNrZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXN7XG5cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9GaWxlQXBpU2VydmljZTogRmlsZUFwaVNlcnZpY2UsXG4gICkge1xuICB9XG5cblxuICAvKirlm77niYflrrnlmaggKi9cbiAgX2ZpbGVDb250YWluZXJOYW1lOiBzdHJpbmcgPSAnaW1hZ2VzJ1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGZpbGVDb250YWluZXJOYW1lKHY6IHN0cmluZykge1xuICAgIHRoaXMuX2ZpbGVDb250YWluZXJOYW1lID0gdjtcbiAgfVxuXG4gIC8qKuW3sumAieWumueahOaWh+S7tiAqL1xuICBASW5wdXQoKSBzZWxlY3RGb3JtRmlsZTphbnlbXVxuIFxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgbGV0IHNlbGVjdEZvcm1GaWxlbmdPbkNoYW5nZXM9Y2hhbmdlcy5zZWxlY3RGb3JtRmlsZVsnY3VycmVudFZhbHVlJ11cbiAgICBpZihzZWxlY3RGb3JtRmlsZW5nT25DaGFuZ2VzLmxlbmd0aD4wKXtcbiAgICAgIHRoaXMuX2ZpbGVTaG93VGFibGU9c2VsZWN0Rm9ybUZpbGVuZ09uQ2hhbmdlc1xuICAgIH1cbiAgfVxuXG4gIEBPdXRwdXQoKSBzZWxlY3RlZEZpbGVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyKClcblxuICBfZmlsZVNob3dUYWJsZTogYW55W10gPSBbXVxuXG4gIC8qKuihqOagvOmAieaLqeeahOaWh+S7tuWbnuiwgyAqL1xuICBfc2VsZWN0RmlsZWZuKGV2ZW50OiBhbnlbXSkge1xuICAgIGxldCBfZmlsZVNob3dUYWJsZT0gdGhpcy5fRmlsZUFwaVNlcnZpY2UuZGVlcENsb25lKGV2ZW50KVxuICAgIHRoaXMuX2ZpbGVTaG93VGFibGUgPV9maWxlU2hvd1RhYmxlXG4gICAgdGhpcy5zZWxlY3RGb3JtRmlsZT1fZmlsZVNob3dUYWJsZVxuICAgIHRoaXMuc2VsZWN0ZWRGaWxlQ2hhbmdlLmVtaXQoX2ZpbGVTaG93VGFibGUpXG4gIH1cblxuICAvKirmqKHmgIHmoYYt54q25oCBLeaYr+WQpuaJk+W8gCAqL1xuICBNb2RhbE9wZW46IGJvb2xlYW4gPSBmYWxzZVxuXG4gIC8qKuWIoOmZpOaWh+S7tuihqOagvOmhuSAqL1xuICBkZWxldGVGaWxlVGFibGVJdGVtKGksIGZpbGUpIHtcbiAgICB0aGlzLl9maWxlU2hvd1RhYmxlLnNwbGljZShpLCAxKVxuICAgIHRoaXMuc2VsZWN0Rm9ybUZpbGU9dGhpcy5fZmlsZVNob3dUYWJsZVxuICAgIHRoaXMuc2VsZWN0ZWRGaWxlQ2hhbmdlLmVtaXQoW10pXG4gICAgdGhpcy5zZWxlY3RlZEZpbGVDaGFuZ2UuZW1pdCh0aGlzLnNlbGVjdEZvcm1GaWxlKVxuICB9XG5cbn1cbiIsIjxidXR0b24gY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1wcmltYXJ5IG1zLTJcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrLnN0b3ApPVwiTW9kYWxPcGVuID0gdHJ1ZVwiPnt7J0ZpbGVFeHBsb3Jlcjo6U2VsZWN0RmlsZScgfCBhYnBMb2NhbGl6YXRpb259fTwvYnV0dG9uPlxuPGZlLWZpbGUtbW9kYWwgWyh2aXNpYmxlKV09XCJNb2RhbE9wZW5cIiBbc2VsZWN0UGlja2VyRmlsZV09XCJzZWxlY3RGb3JtRmlsZVwiICAoc2VsZWN0RmlsZWZuKT1cIl9zZWxlY3RGaWxlZm4oJGV2ZW50KVwiIFtmaWxlQ29udGFpbmVyTmFtZV09XCJfZmlsZUNvbnRhaW5lck5hbWVcIj48L2ZlLWZpbGUtbW9kYWw+XG48dGFibGUgY2xhc3M9XCJ0YWJsZVwiICpuZ0lmPVwiX2ZpbGVTaG93VGFibGUubGVuZ3RoPjBcIj5cbiAgICA8dGhlYWQ+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiPnt7J0ZpbGVFeHBsb3Jlcjo6RmlsZU5hbWUnIHwgYWJwTG9jYWxpemF0aW9ufX08L3RoPlxuICAgICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCI+e3snRmlsZUV4cGxvcmVyOjpGaWxlU2l6ZScgfCBhYnBMb2NhbGl6YXRpb259fTwvdGg+XG4gICAgICAgICAgICA8dGggc2NvcGU9XCJjb2xcIj48L3RoPlxuICAgICAgICA8L3RyPlxuICAgIDwvdGhlYWQ+XG4gICAgPHRib2R5PlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIF9maWxlU2hvd1RhYmxlO2xldCBpID1pbmRleFwiPlxuICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgIDx0aCBzY29wZT1cInJvd1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2Pnt7aXRlbS5uYW1lfX08L2Rpdj5cbiAgICAgICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgICAgIDx0ZCA+e3tfRmlsZUFwaVNlcnZpY2UuZm9ybWF0RmlsZVNpemUoaXRlbS5zaXplKX19PC90ZD5cbiAgICAgICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXNtIHAtMCBidG4tbGlnaHQgXCIgKGNsaWNrLnN0b3ApPVwiZGVsZXRlRmlsZVRhYmxlSXRlbShpLGl0ZW0pXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS10cmFzaCBwLTJcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICA8L3RyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L3Rib2R5PlxuPC90YWJsZT5cblxuXG4iXX0=
65
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZmlsZS1leHBsb3Jlci9zcmMvbGliL2NvbXBvbmVudHMvZmlsZS1waWNrZXIvZmlsZS1waWNrZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZmlsZS1leHBsb3Jlci9zcmMvbGliL2NvbXBvbmVudHMvZmlsZS1waWNrZXIvZmlsZS1waWNrZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxZQUFZLEVBQUUsS0FBSyxFQUFhLE1BQU0sRUFBOEMsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7QUFHMUksTUFLYSxtQkFBbUI7SUFJcEI7SUFEVixZQUNVLGVBQStCO1FBQS9CLG9CQUFlLEdBQWYsZUFBZSxDQUFnQjtJQUV6QyxDQUFDO0lBRUEsVUFBVTtJQUNWLFNBQVMsR0FBWSxLQUFLLENBQUE7SUFDMUIsSUFDVyxRQUFRLENBQUMsQ0FBVTtRQUM1QixJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQztJQUNyQixDQUFDO0lBRUYsVUFBVTtJQUNWLGtCQUFrQixHQUFXLFFBQVEsQ0FBQTtJQUNyQyxJQUNXLGlCQUFpQixDQUFDLENBQVM7UUFDcEMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQsWUFBWTtJQUNILGNBQWMsQ0FBTTtJQUU3QixXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSx5QkFBeUIsR0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxDQUFBO1FBQ3BFLElBQUcseUJBQXlCLENBQUMsTUFBTSxHQUFDLENBQUMsRUFBQztZQUNwQyxJQUFJLENBQUMsY0FBYyxHQUFDLHlCQUF5QixDQUFBO1NBQzlDO0lBQ0gsQ0FBQztJQUVTLGtCQUFrQixHQUFHLElBQUksWUFBWSxFQUFFLENBQUE7SUFFakQsY0FBYyxHQUFVLEVBQUUsQ0FBQTtJQUUxQixlQUFlO0lBQ2YsYUFBYSxDQUFDLEtBQVk7UUFDeEIsSUFBSSxjQUFjLEdBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDekQsSUFBSSxDQUFDLGNBQWMsR0FBRSxjQUFjLENBQUE7UUFDbkMsSUFBSSxDQUFDLGNBQWMsR0FBQyxjQUFjLENBQUE7UUFDbEMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQTtJQUM5QyxDQUFDO0lBRUQsaUJBQWlCO0lBQ2pCLFNBQVMsR0FBWSxLQUFLLENBQUE7SUFFMUIsYUFBYTtJQUNiLG1CQUFtQixDQUFDLENBQUMsRUFBRSxJQUFJO1FBQ3pCLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTtRQUNoQyxJQUFJLENBQUMsY0FBYyxHQUFDLElBQUksQ0FBQyxjQUFjLENBQUE7UUFDdkMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQTtRQUNoQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQTtJQUNuRCxDQUFDO3dHQXJEVSxtQkFBbUI7NEZBQW5CLG1CQUFtQiw4T0NSaEMsaWdEQWdDQTs7U0R4QmEsbUJBQW1COzRGQUFuQixtQkFBbUI7a0JBTC9CLFNBQVM7K0JBQ0UsZ0JBQWdCO3FHQWVkLFFBQVE7c0JBRGxCLEtBQUs7Z0JBUUksaUJBQWlCO3NCQUQzQixLQUFLO2dCQU1HLGNBQWM7c0JBQXRCLEtBQUs7Z0JBU0ksa0JBQWtCO3NCQUEzQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkNoYW5nZXMsIE91dHB1dCwgU2ltcGxlQ2hhbmdlcywgVmlld0NoaWxkLCBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGaWxlQXBpU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2ZpbGUtYXBpLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdmZS1maWxlLXBpY2tlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9maWxlLXBpY2tlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2ZpbGUtcGlja2VyLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgRmlsZVBpY2tlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlc3tcblxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX0ZpbGVBcGlTZXJ2aWNlOiBGaWxlQXBpU2VydmljZSxcbiAgKSB7XG4gIH1cblxuICAgLyoq5piv5ZCm5aSa6YCJICovXG4gICBfbXVsdGlwbGU6IGJvb2xlYW4gPSBmYWxzZVxuICAgQElucHV0KClcbiAgIHB1YmxpYyBzZXQgbXVsdGlwbGUodjogYm9vbGVhbikge1xuICAgICB0aGlzLl9tdWx0aXBsZSA9IHY7XG4gICB9XG5cbiAgLyoq5Zu+54mH5a655ZmoICovXG4gIF9maWxlQ29udGFpbmVyTmFtZTogc3RyaW5nID0gJ2ltYWdlcydcbiAgQElucHV0KClcbiAgcHVibGljIHNldCBmaWxlQ29udGFpbmVyTmFtZSh2OiBzdHJpbmcpIHtcbiAgICB0aGlzLl9maWxlQ29udGFpbmVyTmFtZSA9IHY7XG4gIH1cblxuICAvKirlt7LpgInlrprnmoTmlofku7YgKi9cbiAgQElucHV0KCkgc2VsZWN0Rm9ybUZpbGU6YW55W11cbiBcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGxldCBzZWxlY3RGb3JtRmlsZW5nT25DaGFuZ2VzPWNoYW5nZXMuc2VsZWN0Rm9ybUZpbGVbJ2N1cnJlbnRWYWx1ZSddXG4gICAgaWYoc2VsZWN0Rm9ybUZpbGVuZ09uQ2hhbmdlcy5sZW5ndGg+MCl7XG4gICAgICB0aGlzLl9maWxlU2hvd1RhYmxlPXNlbGVjdEZvcm1GaWxlbmdPbkNoYW5nZXNcbiAgICB9XG4gIH1cblxuICBAT3V0cHV0KCkgc2VsZWN0ZWRGaWxlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpXG5cbiAgX2ZpbGVTaG93VGFibGU6IGFueVtdID0gW11cblxuICAvKirooajmoLzpgInmi6nnmoTmlofku7blm57osIMgKi9cbiAgX3NlbGVjdEZpbGVmbihldmVudDogYW55W10pIHtcbiAgICBsZXQgX2ZpbGVTaG93VGFibGU9IHRoaXMuX0ZpbGVBcGlTZXJ2aWNlLmRlZXBDbG9uZShldmVudClcbiAgICB0aGlzLl9maWxlU2hvd1RhYmxlID1fZmlsZVNob3dUYWJsZVxuICAgIHRoaXMuc2VsZWN0Rm9ybUZpbGU9X2ZpbGVTaG93VGFibGVcbiAgICB0aGlzLnNlbGVjdGVkRmlsZUNoYW5nZS5lbWl0KF9maWxlU2hvd1RhYmxlKVxuICB9XG5cbiAgLyoq5qih5oCB5qGGLeeKtuaAgS3mmK/lkKbmiZPlvIAgKi9cbiAgTW9kYWxPcGVuOiBib29sZWFuID0gZmFsc2VcblxuICAvKirliKDpmaTmlofku7booajmoLzpobkgKi9cbiAgZGVsZXRlRmlsZVRhYmxlSXRlbShpLCBmaWxlKSB7XG4gICAgdGhpcy5fZmlsZVNob3dUYWJsZS5zcGxpY2UoaSwgMSlcbiAgICB0aGlzLnNlbGVjdEZvcm1GaWxlPXRoaXMuX2ZpbGVTaG93VGFibGVcbiAgICB0aGlzLnNlbGVjdGVkRmlsZUNoYW5nZS5lbWl0KFtdKVxuICAgIHRoaXMuc2VsZWN0ZWRGaWxlQ2hhbmdlLmVtaXQodGhpcy5zZWxlY3RGb3JtRmlsZSlcbiAgfVxuXG59XG4iLCI8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tcHJpbWFyeSBtcy0yIGZsb2F0LWVuZFwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2suc3RvcCk9XCJNb2RhbE9wZW4gPSB0cnVlXCI+e3snRmlsZUV4cGxvcmVyOjpTZWxlY3RGaWxlJyB8IGFicExvY2FsaXphdGlvbn19PC9idXR0b24+XG48ZmUtZmlsZS1tb2RhbCBbKHZpc2libGUpXT1cIk1vZGFsT3BlblwiIFtzZWxlY3RQaWNrZXJGaWxlXT1cInNlbGVjdEZvcm1GaWxlXCIgW211bHRpcGxlXT1cIl9tdWx0aXBsZVwiICAoc2VsZWN0RmlsZWZuKT1cIl9zZWxlY3RGaWxlZm4oJGV2ZW50KVwiIFtmaWxlQ29udGFpbmVyTmFtZV09XCJfZmlsZUNvbnRhaW5lck5hbWVcIj48L2ZlLWZpbGUtbW9kYWw+XG48dGFibGUgY2xhc3M9XCJ0YWJsZVwiICpuZ0lmPVwiX2ZpbGVTaG93VGFibGUubGVuZ3RoPjBcIj5cbiAgICA8dGhlYWQ+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiPjwvdGg+XG4gICAgICAgICAgICA8dGggc2NvcGU9XCJjb2xcIj57eydGaWxlRXhwbG9yZXI6OkZpbGVOYW1lJyB8IGFicExvY2FsaXphdGlvbn19PC90aD5cbiAgICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiPnt7J0ZpbGVFeHBsb3Jlcjo6RmlsZVNpemUnIHwgYWJwTG9jYWxpemF0aW9ufX08L3RoPlxuICAgICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCI+PC90aD5cbiAgICAgICAgPC90cj5cbiAgICA8L3RoZWFkPlxuICAgIDx0Ym9keT5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBfZmlsZVNob3dUYWJsZTtsZXQgaSA9aW5kZXhcIj5cbiAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgICAgIDxmZS1maWxlLXByZXZpZXcgW3dpZHRoXT1cIic4MHB4J1wiIFtzcmNdPVwiaXRlbS51cmxcIiBbbmFtZV09XCJpdGVtLm5hbWVcIiBbdHlwZV09XCJpdGVtLm1pbWVUeXBlXCIgW3ByZXZpZXddPVwidHJ1ZVwiPjwvZmUtZmlsZS1wcmV2aWV3PlxuICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgPHRoIHNjb3BlPVwicm93XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXY+e3tpdGVtLm5hbWV9fTwvZGl2PlxuICAgICAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICAgICAgPHRkID57e19GaWxlQXBpU2VydmljZS5mb3JtYXRGaWxlU2l6ZShpdGVtLnNpemUpfX08L3RkPlxuICAgICAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tc20gcC0wIGJ0bi1saWdodCBcIiAoY2xpY2suc3RvcCk9XCJkZWxldGVGaWxlVGFibGVJdGVtKGksaXRlbSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLXRyYXNoIHAtMlwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgIDwvdHI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvdGJvZHk+XG48L3RhYmxlPlxuXG5cbiJdfQ==
@@ -7,6 +7,7 @@ import { NzTreeModule } from 'ng-zorro-antd/tree';
7
7
  import { NgxValidateCoreModule } from '@ngx-validate/core';
8
8
  import { FileExplorerRoutingModule } from './file-explorer-routing.module';
9
9
  import { FileEditComponent, FilePickerComponent, FileModalComponent, FileModalTreeComponent, FileDomeComponent } from './components';
10
+ import { FilePreviewComponent } from './previews/file-preview.component';
10
11
  import * as i0 from "@angular/core";
11
12
  class FileExplorerModule {
12
13
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FileExplorerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
@@ -14,7 +15,8 @@ class FileExplorerModule {
14
15
  FilePickerComponent,
15
16
  FileModalComponent,
16
17
  FileModalTreeComponent,
17
- FileDomeComponent], imports: [FormsModule,
18
+ FileDomeComponent,
19
+ FilePreviewComponent], imports: [FormsModule,
18
20
  CoreModule,
19
21
  ThemeSharedModule,
20
22
  ReactiveFormsModule,
@@ -25,7 +27,8 @@ class FileExplorerModule {
25
27
  FilePickerComponent,
26
28
  FileModalComponent,
27
29
  FileModalTreeComponent,
28
- FileDomeComponent] });
30
+ FileDomeComponent,
31
+ FilePreviewComponent] });
29
32
  static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FileExplorerModule, providers: [
30
33
  // [Required]
31
34
  ListService,
@@ -52,6 +55,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
52
55
  FileModalComponent,
53
56
  FileModalTreeComponent,
54
57
  FileDomeComponent,
58
+ FilePreviewComponent,
55
59
  ],
56
60
  imports: [
57
61
  FormsModule,
@@ -68,7 +72,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
68
72
  FilePickerComponent,
69
73
  FileModalComponent,
70
74
  FileModalTreeComponent,
71
- FileDomeComponent
75
+ FileDomeComponent,
76
+ FilePreviewComponent
72
77
  ],
73
78
  providers: [
74
79
  // [Required]
@@ -80,4 +85,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
80
85
  ],
81
86
  }]
82
87
  }] });
83
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1leHBsb3Jlci5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9maWxlLWV4cGxvcmVyL3NyYy9saWIvZmlsZS1leHBsb3Jlci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsVUFBVSxFQUFFLHdCQUF3QixFQUFFLFdBQVcsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNqRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDL0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzNELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxtQkFBbUIsRUFBRSxrQkFBa0IsRUFBRSxzQkFBc0IsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7QUFDckksTUFrQ2Esa0JBQWtCO3dHQUFsQixrQkFBa0I7eUdBQWxCLGtCQUFrQixpQkFoQzNCLGlCQUFpQjtZQUNqQixtQkFBbUI7WUFDbkIsa0JBQWtCO1lBQ2xCLHNCQUFzQjtZQUN0QixpQkFBaUIsYUFHakIsV0FBVztZQUNYLFVBQVU7WUFDVixpQkFBaUI7WUFDakIsbUJBQW1CO1lBQ25CLGlCQUFpQjtZQUNqQixZQUFZO1lBQ1oscUJBQXFCO1lBQ3JCLHlCQUF5QixhQUd6QixpQkFBaUI7WUFDakIsbUJBQW1CO1lBQ25CLGtCQUFrQjtZQUNsQixzQkFBc0I7WUFDdEIsaUJBQWlCO3lHQVdSLGtCQUFrQixhQVRsQjtZQUNULGFBQWE7WUFDYixXQUFXO1lBQ1gsYUFBYTtZQUNiLDREQUE0RDtZQUM1RCx1RUFBdUU7WUFDdkUsRUFBRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRTtTQUNyRCxZQXZCQyxXQUFXO1lBQ1gsVUFBVTtZQUNWLGlCQUFpQjtZQUNqQixtQkFBbUI7WUFDbkIsaUJBQWlCO1lBQ2pCLFlBQVk7WUFDWixxQkFBcUI7WUFDckIseUJBQXlCOztTQWtCaEIsa0JBQWtCOzRGQUFsQixrQkFBa0I7a0JBbEM5QixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRTt3QkFDWixpQkFBaUI7d0JBQ2pCLG1CQUFtQjt3QkFDbkIsa0JBQWtCO3dCQUNsQixzQkFBc0I7d0JBQ3RCLGlCQUFpQjtxQkFDbEI7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLFdBQVc7d0JBQ1gsVUFBVTt3QkFDVixpQkFBaUI7d0JBQ2pCLG1CQUFtQjt3QkFDbkIsaUJBQWlCO3dCQUNqQixZQUFZO3dCQUNaLHFCQUFxQjt3QkFDckIseUJBQXlCO3FCQUMxQjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsaUJBQWlCO3dCQUNqQixtQkFBbUI7d0JBQ25CLGtCQUFrQjt3QkFDbEIsc0JBQXNCO3dCQUN0QixpQkFBaUI7cUJBQ2xCO29CQUNELFNBQVMsRUFBRTt3QkFDVCxhQUFhO3dCQUNiLFdBQVc7d0JBQ1gsYUFBYTt3QkFDYiw0REFBNEQ7d0JBQzVELHVFQUF1RTt3QkFDdkUsRUFBRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRTtxQkFDckQ7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29yZU1vZHVsZSwgTElTVF9RVUVSWV9ERUJPVU5DRV9USU1FLCBMaXN0U2VydmljZSB9IGZyb20gJ0BhYnAvbmcuY29yZSc7XG5pbXBvcnQgeyBUaGVtZVNoYXJlZE1vZHVsZSB9IGZyb20gJ0BhYnAvbmcudGhlbWUuc2hhcmVkJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTmdiRHJvcGRvd25Nb2R1bGUgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XG5pbXBvcnQgeyBOelRyZWVNb2R1bGUgfSBmcm9tICduZy16b3Jyby1hbnRkL3RyZWUnO1xuaW1wb3J0IHsgTmd4VmFsaWRhdGVDb3JlTW9kdWxlIH0gZnJvbSAnQG5neC12YWxpZGF0ZS9jb3JlJztcbmltcG9ydCB7IEZpbGVFeHBsb3JlclJvdXRpbmdNb2R1bGUgfSBmcm9tICcuL2ZpbGUtZXhwbG9yZXItcm91dGluZy5tb2R1bGUnO1xuaW1wb3J0IHsgRmlsZUVkaXRDb21wb25lbnQsIEZpbGVQaWNrZXJDb21wb25lbnQsIEZpbGVNb2RhbENvbXBvbmVudCwgRmlsZU1vZGFsVHJlZUNvbXBvbmVudCwgRmlsZURvbWVDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMnO1xuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbXG4gICAgRmlsZUVkaXRDb21wb25lbnQsXG4gICAgRmlsZVBpY2tlckNvbXBvbmVudCxcbiAgICBGaWxlTW9kYWxDb21wb25lbnQsXG4gICAgRmlsZU1vZGFsVHJlZUNvbXBvbmVudCxcbiAgICBGaWxlRG9tZUNvbXBvbmVudCxcbiAgXSxcbiAgaW1wb3J0czogW1xuICAgIEZvcm1zTW9kdWxlLFxuICAgIENvcmVNb2R1bGUsXG4gICAgVGhlbWVTaGFyZWRNb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBOZ2JEcm9wZG93bk1vZHVsZSxcbiAgICBOelRyZWVNb2R1bGUsXG4gICAgTmd4VmFsaWRhdGVDb3JlTW9kdWxlLFxuICAgIEZpbGVFeHBsb3JlclJvdXRpbmdNb2R1bGUsXG4gIF0sXG4gIGV4cG9ydHM6IFtcbiAgICBGaWxlRWRpdENvbXBvbmVudCxcbiAgICBGaWxlUGlja2VyQ29tcG9uZW50LFxuICAgIEZpbGVNb2RhbENvbXBvbmVudCxcbiAgICBGaWxlTW9kYWxUcmVlQ29tcG9uZW50LFxuICAgIEZpbGVEb21lQ29tcG9uZW50XG4gIF0sXG4gIHByb3ZpZGVyczogW1xuICAgIC8vIFtSZXF1aXJlZF1cbiAgICBMaXN0U2VydmljZSxcbiAgICAvLyBbT3B0aW9uYWxdXG4gICAgLy8gUHJvdmlkZSB0aGlzIHRva2VuIGlmIHlvdSB3YW50IGEgZGlmZmVyZW50IGRlYm91bmNlIHRpbWUuXG4gICAgLy8gRGVmYXVsdCBpcyAzMDAuIENhbm5vdCBiZSAwLiBBbnkgdmFsdWUgYmVsb3cgMTAwIGlzIG5vdCByZWNvbW1lbmRlZC5cbiAgICB7IHByb3ZpZGU6IExJU1RfUVVFUllfREVCT1VOQ0VfVElNRSwgdXNlVmFsdWU6IDUwMCB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBGaWxlRXhwbG9yZXJNb2R1bGUge1xuXG59XG4iXX0=
88
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1leHBsb3Jlci5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9maWxlLWV4cGxvcmVyL3NyYy9saWIvZmlsZS1leHBsb3Jlci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsVUFBVSxFQUFFLHdCQUF3QixFQUFFLFdBQVcsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNqRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDL0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzNELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxtQkFBbUIsRUFBRSxrQkFBa0IsRUFBRSxzQkFBc0IsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNySSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQzs7QUFDekUsTUFvQ2Esa0JBQWtCO3dHQUFsQixrQkFBa0I7eUdBQWxCLGtCQUFrQixpQkFsQzNCLGlCQUFpQjtZQUNqQixtQkFBbUI7WUFDbkIsa0JBQWtCO1lBQ2xCLHNCQUFzQjtZQUN0QixpQkFBaUI7WUFDakIsb0JBQW9CLGFBR3BCLFdBQVc7WUFDWCxVQUFVO1lBQ1YsaUJBQWlCO1lBQ2pCLG1CQUFtQjtZQUNuQixpQkFBaUI7WUFDakIsWUFBWTtZQUNaLHFCQUFxQjtZQUNyQix5QkFBeUIsYUFHekIsaUJBQWlCO1lBQ2pCLG1CQUFtQjtZQUNuQixrQkFBa0I7WUFDbEIsc0JBQXNCO1lBQ3RCLGlCQUFpQjtZQUNqQixvQkFBb0I7eUdBV1gsa0JBQWtCLGFBVGxCO1lBQ1QsYUFBYTtZQUNiLFdBQVc7WUFDWCxhQUFhO1lBQ2IsNERBQTREO1lBQzVELHVFQUF1RTtZQUN2RSxFQUFFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFO1NBQ3JELFlBeEJDLFdBQVc7WUFDWCxVQUFVO1lBQ1YsaUJBQWlCO1lBQ2pCLG1CQUFtQjtZQUNuQixpQkFBaUI7WUFDakIsWUFBWTtZQUNaLHFCQUFxQjtZQUNyQix5QkFBeUI7O1NBbUJoQixrQkFBa0I7NEZBQWxCLGtCQUFrQjtrQkFwQzlCLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFO3dCQUNaLGlCQUFpQjt3QkFDakIsbUJBQW1CO3dCQUNuQixrQkFBa0I7d0JBQ2xCLHNCQUFzQjt3QkFDdEIsaUJBQWlCO3dCQUNqQixvQkFBb0I7cUJBQ3JCO29CQUNELE9BQU8sRUFBRTt3QkFDUCxXQUFXO3dCQUNYLFVBQVU7d0JBQ1YsaUJBQWlCO3dCQUNqQixtQkFBbUI7d0JBQ25CLGlCQUFpQjt3QkFDakIsWUFBWTt3QkFDWixxQkFBcUI7d0JBQ3JCLHlCQUF5QjtxQkFDMUI7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLGlCQUFpQjt3QkFDakIsbUJBQW1CO3dCQUNuQixrQkFBa0I7d0JBQ2xCLHNCQUFzQjt3QkFDdEIsaUJBQWlCO3dCQUNqQixvQkFBb0I7cUJBQ3JCO29CQUNELFNBQVMsRUFBRTt3QkFDVCxhQUFhO3dCQUNiLFdBQVc7d0JBQ1gsYUFBYTt3QkFDYiw0REFBNEQ7d0JBQzVELHVFQUF1RTt3QkFDdkUsRUFBRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRTtxQkFDckQ7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29yZU1vZHVsZSwgTElTVF9RVUVSWV9ERUJPVU5DRV9USU1FLCBMaXN0U2VydmljZSB9IGZyb20gJ0BhYnAvbmcuY29yZSc7XG5pbXBvcnQgeyBUaGVtZVNoYXJlZE1vZHVsZSB9IGZyb20gJ0BhYnAvbmcudGhlbWUuc2hhcmVkJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTmdiRHJvcGRvd25Nb2R1bGUgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XG5pbXBvcnQgeyBOelRyZWVNb2R1bGUgfSBmcm9tICduZy16b3Jyby1hbnRkL3RyZWUnO1xuaW1wb3J0IHsgTmd4VmFsaWRhdGVDb3JlTW9kdWxlIH0gZnJvbSAnQG5neC12YWxpZGF0ZS9jb3JlJztcbmltcG9ydCB7IEZpbGVFeHBsb3JlclJvdXRpbmdNb2R1bGUgfSBmcm9tICcuL2ZpbGUtZXhwbG9yZXItcm91dGluZy5tb2R1bGUnO1xuaW1wb3J0IHsgRmlsZUVkaXRDb21wb25lbnQsIEZpbGVQaWNrZXJDb21wb25lbnQsIEZpbGVNb2RhbENvbXBvbmVudCwgRmlsZU1vZGFsVHJlZUNvbXBvbmVudCwgRmlsZURvbWVDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMnO1xuaW1wb3J0IHsgRmlsZVByZXZpZXdDb21wb25lbnQgfSBmcm9tICcuL3ByZXZpZXdzL2ZpbGUtcHJldmlldy5jb21wb25lbnQnO1xuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbXG4gICAgRmlsZUVkaXRDb21wb25lbnQsXG4gICAgRmlsZVBpY2tlckNvbXBvbmVudCxcbiAgICBGaWxlTW9kYWxDb21wb25lbnQsXG4gICAgRmlsZU1vZGFsVHJlZUNvbXBvbmVudCxcbiAgICBGaWxlRG9tZUNvbXBvbmVudCxcbiAgICBGaWxlUHJldmlld0NvbXBvbmVudCxcbiAgXSxcbiAgaW1wb3J0czogW1xuICAgIEZvcm1zTW9kdWxlLFxuICAgIENvcmVNb2R1bGUsXG4gICAgVGhlbWVTaGFyZWRNb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBOZ2JEcm9wZG93bk1vZHVsZSxcbiAgICBOelRyZWVNb2R1bGUsXG4gICAgTmd4VmFsaWRhdGVDb3JlTW9kdWxlLFxuICAgIEZpbGVFeHBsb3JlclJvdXRpbmdNb2R1bGUsXG4gIF0sXG4gIGV4cG9ydHM6IFtcbiAgICBGaWxlRWRpdENvbXBvbmVudCxcbiAgICBGaWxlUGlja2VyQ29tcG9uZW50LFxuICAgIEZpbGVNb2RhbENvbXBvbmVudCxcbiAgICBGaWxlTW9kYWxUcmVlQ29tcG9uZW50LFxuICAgIEZpbGVEb21lQ29tcG9uZW50LFxuICAgIEZpbGVQcmV2aWV3Q29tcG9uZW50XG4gIF0sXG4gIHByb3ZpZGVyczogW1xuICAgIC8vIFtSZXF1aXJlZF1cbiAgICBMaXN0U2VydmljZSxcbiAgICAvLyBbT3B0aW9uYWxdXG4gICAgLy8gUHJvdmlkZSB0aGlzIHRva2VuIGlmIHlvdSB3YW50IGEgZGlmZmVyZW50IGRlYm91bmNlIHRpbWUuXG4gICAgLy8gRGVmYXVsdCBpcyAzMDAuIENhbm5vdCBiZSAwLiBBbnkgdmFsdWUgYmVsb3cgMTAwIGlzIG5vdCByZWNvbW1lbmRlZC5cbiAgICB7IHByb3ZpZGU6IExJU1RfUVVFUllfREVCT1VOQ0VfVElNRSwgdXNlVmFsdWU6IDUwMCB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBGaWxlRXhwbG9yZXJNb2R1bGUge1xuXG59XG4iXX0=