@dsivd/prestations-ng 15.4.8 → 15.4.9-beta2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +20 -0
- package/dsivd-prestations-ng-v15.4.9-beta2.tgz +0 -0
- package/esm2020/foehn-upload/foehn-multi-upload/foehn-multi-upload.component.mjs +7 -6
- package/esm2020/foehn-upload/foehn-multi-upload/foehn-multi-upload.module.mjs +8 -4
- package/esm2020/foehn-upload/foehn-multi-upload/multi-upload.service.mjs +13 -7
- package/esm2020/foehn-upload/foehn-upload-progress-bar/foehn-upload-progress-bar.component.mjs +74 -0
- package/esm2020/foehn-upload/foehn-upload-progress-bar/foehn-upload-progress-bar.module.mjs +21 -0
- package/esm2020/foehn-upload/foehn-upload-progress-bar/upload-progress.service.mjs +62 -0
- package/esm2020/foehn-upload/foehn-upload-progress-bar/upload-progress.type.mjs +3 -0
- package/esm2020/gesdem-confirmation/gesdem-confirmation.component.mjs +3 -3
- package/esm2020/global.const.mjs +5 -0
- package/esm2020/index.mjs +7 -1
- package/esm2020/sdk-dictionary/default-dictionary.mjs +14 -2
- package/fesm2015/dsivd-prestations-ng.mjs +182 -16
- package/fesm2015/dsivd-prestations-ng.mjs.map +1 -1
- package/fesm2020/dsivd-prestations-ng.mjs +182 -16
- package/fesm2020/dsivd-prestations-ng.mjs.map +1 -1
- package/foehn-upload/foehn-multi-upload/foehn-multi-upload.module.d.ts +2 -1
- package/foehn-upload/foehn-multi-upload/multi-upload.service.d.ts +3 -1
- package/foehn-upload/foehn-upload-progress-bar/foehn-upload-progress-bar.component.d.ts +19 -0
- package/foehn-upload/foehn-upload-progress-bar/foehn-upload-progress-bar.module.d.ts +11 -0
- package/foehn-upload/foehn-upload-progress-bar/upload-progress.service.d.ts +19 -0
- package/foehn-upload/foehn-upload-progress-bar/upload-progress.type.d.ts +4 -0
- package/global.const.d.ts +1 -0
- package/index.d.ts +5 -0
- package/package.json +1 -1
- package/dsivd-prestations-ng-v15.4.8.tgz +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -25,6 +25,26 @@ A change is considered **breaking** if you have to change your code or update yo
|
|
|
25
25
|
- adding a new constructor argument in one of our service is OK, if you just have to update your constructor's signature and your call to `super(...)`
|
|
26
26
|
|
|
27
27
|
---
|
|
28
|
+
## [15.4.9]
|
|
29
|
+
|
|
30
|
+
### Added
|
|
31
|
+
|
|
32
|
+
- [global.const.ts](projects/prestations-ng/src/global.const.ts)
|
|
33
|
+
- Added `HTTP_LOADER_FILTERED_URL: string[]` constant to be used with component `<ng-http-loader></ng-http-loader>` (input `filteredUrlPatterns`). Default value in array: `['api/support-alert', '(api\\/document(\\/([a-zA-Z0-9])+)*\\/upload)']`.
|
|
34
|
+
|
|
35
|
+
- [foehn-upload-progress-bar.component.ts](projects/prestations-ng/src/foehn-upload/foehn-upload-progress-bar/foehn-upload-progress-bar.component.ts)
|
|
36
|
+
- See [documentation](upload#foehn_upload_progress_bar)
|
|
37
|
+
- Added a progress bar displaying upload progress and indeterminated document analysis
|
|
38
|
+
|
|
39
|
+
- [foehn-multi-upload.component.html](projects/prestations-ng/src/foehn-upload/foehn-multi-upload/foehn-multi-upload.component.html)
|
|
40
|
+
- Added `<foehn-upload-progress-bar></foehn-upload-progress-bar>`
|
|
41
|
+
|
|
42
|
+
### Updated
|
|
43
|
+
|
|
44
|
+
- [gesdem-confirmation.component.html](projects/prestations-ng/src/gesdem-confirmation/gesdem-confirmation.component.html)
|
|
45
|
+
- Update link when user is connected: link redirects to demande page
|
|
46
|
+
- Move labels into default dictionary
|
|
47
|
+
|
|
28
48
|
## [15.4.8]
|
|
29
49
|
|
|
30
50
|
### Fixed
|
|
Binary file
|
|
@@ -10,9 +10,10 @@ import * as i4 from "../../foehn-confirm-modal/foehn-confirm-modal.service";
|
|
|
10
10
|
import * as i5 from "../../sdk-dictionary/sdk-dictionary.service";
|
|
11
11
|
import * as i6 from "../../foehn-validation-alerts/foehn-validation-alerts.component";
|
|
12
12
|
import * as i7 from "../../foehn-icons/foehn-icon-times.component";
|
|
13
|
-
import * as i8 from "
|
|
14
|
-
import * as i9 from "@angular/
|
|
15
|
-
import * as i10 from "
|
|
13
|
+
import * as i8 from "../foehn-upload-progress-bar/foehn-upload-progress-bar.component";
|
|
14
|
+
import * as i9 from "@angular/common";
|
|
15
|
+
import * as i10 from "@angular/forms";
|
|
16
|
+
import * as i11 from "../../sdk-dictionary/sdk-dictionary.pipe";
|
|
16
17
|
export class FoehnMultiUploadComponent extends AbstractFoehnUploaderComponent {
|
|
17
18
|
constructor(multiUploadService, pendingUploadService, applicationInfoService, confirmModalService, dictionaryService) {
|
|
18
19
|
super(applicationInfoService, confirmModalService, dictionaryService);
|
|
@@ -194,7 +195,7 @@ FoehnMultiUploadComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.
|
|
|
194
195
|
useExisting: forwardRef(() => FoehnMultiUploadComponent),
|
|
195
196
|
multi: true
|
|
196
197
|
}
|
|
197
|
-
], usesInheritance: true, ngImport: i0, template: "<div\n class=\"form-group\"\n [class.has-danger]=\"hasErrorsToDisplay()\"\n [class.vd-form-group-danger]=\"hasErrorsToDisplay()\"\n [class.drop-zone-highlight]=\"showDropZone\"\n [attr.id]=\"buildId('Container')\"\n tabindex=\"-1\"\n (drop)=\"onDrop($event)\"\n (dragenter)=\"onDragenter($event)\"\n (dragleave)=\"onDragleave($event)\"\n (dragover)=\"onDragover($event)\"\n>\n <label\n [attr.for]=\"buildChildId()\"\n *ngIf=\"!!label\"\n [ngClass]=\"isLabelSrOnly ? 'sr-only' : labelStyleModifier\"\n >\n <span [innerHTML]=\"label\"></span>\n <span\n *ngIf=\"!required && !hideNotRequiredExtraLabel\"\n aria-hidden=\"true\"\n >\n {{ 'foehn-input.optional' | fromDictionary }}\n </span>\n </label>\n\n <foehn-validation-alerts\n [component]=\"this\"\n [shouldErrorsBeLive]=\"hasLiveUploadErrors()\"\n ></foehn-validation-alerts>\n\n <small\n *ngIf=\"helpText\"\n [attr.id]=\"buildChildId() + 'Help'\"\n class=\"form-text text-secondary\"\n [innerHTML]=\"helpText\"\n ></small>\n\n <!-- PRESTAKIT-309: Fake input with NgModel to be registered into Form controls -->\n <input type=\"hidden\" [name]=\"name || label\" [ngModel]=\"model\" />\n\n <ng-content></ng-content>\n\n <ng-container *ngIf=\"reference\">\n <div\n *ngFor=\"let document of model; trackBy: trackByDocument\"\n class=\"file file-uploaded\"\n >\n <!-- prettier-ignore -->\n <a [href]=\"multiUploadService.getDownloadUrl(url, document)\">{{ document.filename }}</a>\n <span class=\"ml-1 mr-1\">\n ({{ toMegaOctets(document.fileSize) }}\n <abbr\n [title]=\"\n 'foehn-uploader.abbr-megaoctet-title' | fromDictionary\n \"\n >\n {{ 'foehn-uploader.abbr-megaoctet' | fromDictionary }}\n </abbr>\n )\n </span>\n <button\n *ngIf=\"!readonly\"\n type=\"button\"\n class=\"btn icon-button delete-uploaded\"\n (click)=\"removeFile(document)\"\n >\n <foehn-icon-times\n [title]=\"\n 'foehn-uploader.delete-icon-title'\n | fromDictionary: { docName: document.filename }\n \"\n ></foehn-icon-times>\n </button>\n </div>\n\n <small\n class=\"form-text text-secondary uploaded-global-info\"\n *ngIf=\"showGlobalInfos(model)\"\n [innerHTML]=\"getGlobalInfos(model)\"\n ></small>\n </ng-container>\n\n <ng-container *ngIf=\"!reference\">\n <div\n *ngFor=\"let pending of pendingFiles; trackBy: trackByPending\"\n class=\"file file-pending\"\n >\n <span>{{ pending.name }}</span>\n <span class=\"ml-1 mr-1\">\n ({{ toMegaOctets(pending.size) }}\n <abbr\n [title]=\"\n 'foehn-uploader.abbr-megaoctet-title' | fromDictionary\n \"\n >\n {{ 'foehn-uploader.abbr-megaoctet' | fromDictionary }}\n </abbr>\n )\n </span>\n <button\n *ngIf=\"!readonly\"\n type=\"button\"\n class=\"btn icon-button delete-pending\"\n (click)=\"removeFile(pending)\"\n >\n <foehn-icon-times\n [title]=\"\n 'foehn-uploader.delete-icon-title'\n | fromDictionary: { docName: pending.name }\n \"\n ></foehn-icon-times>\n </button>\n </div>\n\n <small\n class=\"form-text text-secondary pending-global-info\"\n *ngIf=\"showGlobalInfos(pendingFiles)\"\n [innerHTML]=\"getGlobalInfos(pendingFiles)\"\n ></small>\n </ng-container>\n\n <ng-container *ngIf=\"canAddMoreFiles()\">\n <input\n class=\"form-control-file actual-input\"\n type=\"file\"\n [name]=\"name || label\"\n [multiple]=\"multiple\"\n [attr.accept]=\"\n overrideAcceptedExtensions\n ? overrideAcceptedExtensions\n : uploaderHelper.accept\n ? uploaderHelper.accept\n : null\n \"\n (change)=\"onFileChange($event)\"\n #inputFile\n />\n\n <button\n type=\"button\"\n class=\"btn btn-primary\"\n [ngClass]=\"{ 'sr-only': !showUploadButton }\"\n [attr.id]=\"buildChildId()\"\n [attr.aria-invalid]=\"hasErrorsToDisplay() || null\"\n [attr.aria-describedby]=\"buildId('ErrorsContainer')\"\n (click)=\"inputFile.click()\"\n #entryComponent\n >\n {{ multiple ? chooseButtonLabelMultiple : chooseButtonLabel }}\n </button>\n\n <div\n *ngIf=\"dragAndDrop\"\n aria-hidden=\"true\"\n class=\"dropfile\"\n [class.dropfile-border-transparent]=\"showDropZone\"\n (click)=\"inputFile.click()\"\n >\n {{ multiple ? dropZoneLabelMultiple : dropZoneLabel }}\n </div>\n </ng-container>\n</div>\n", styles: [".dropfile{width:300px;border:3px dashed #bbb;text-align:center;margin-top:10px;cursor:pointer;padding:15px 3px}.dropfile-border-transparent{border-color:var(--white)}.actual-input{display:none}.file-list{margin-top:20px}.icon-button{border:0;background-color:transparent}.icon-button:hover{cursor:pointer}:host ::ng-deep .svg-inline--fa{color:#000!important}.drop-zone-highlight{outline:3px dashed #bbb}\n"], components: [{ type: i6.FoehnValidationAlertsComponent, selector: "foehn-validation-alerts", inputs: ["component", "shouldErrorsBeLive"] }, { type: i7.FoehnIconTimesComponent, selector: "foehn-icon-times" }], directives: [{ type:
|
|
198
|
+
], usesInheritance: true, ngImport: i0, template: "<div\n class=\"form-group\"\n [class.has-danger]=\"hasErrorsToDisplay()\"\n [class.vd-form-group-danger]=\"hasErrorsToDisplay()\"\n [class.drop-zone-highlight]=\"showDropZone\"\n [attr.id]=\"buildId('Container')\"\n tabindex=\"-1\"\n (drop)=\"onDrop($event)\"\n (dragenter)=\"onDragenter($event)\"\n (dragleave)=\"onDragleave($event)\"\n (dragover)=\"onDragover($event)\"\n #fallBackTrigger\n>\n <label\n [attr.for]=\"buildChildId()\"\n *ngIf=\"!!label\"\n [ngClass]=\"isLabelSrOnly ? 'sr-only' : labelStyleModifier\"\n >\n <span [innerHTML]=\"label\"></span>\n <span\n *ngIf=\"!required && !hideNotRequiredExtraLabel\"\n aria-hidden=\"true\"\n >\n {{ 'foehn-input.optional' | fromDictionary }}\n </span>\n </label>\n\n <foehn-validation-alerts\n [component]=\"this\"\n [shouldErrorsBeLive]=\"hasLiveUploadErrors()\"\n ></foehn-validation-alerts>\n\n <small\n *ngIf=\"helpText\"\n [attr.id]=\"buildChildId() + 'Help'\"\n class=\"form-text text-secondary\"\n [innerHTML]=\"helpText\"\n ></small>\n\n <!-- PRESTAKIT-309: Fake input with NgModel to be registered into Form controls -->\n <input type=\"hidden\" [name]=\"name || label\" [ngModel]=\"model\" />\n\n <ng-content></ng-content>\n\n <ng-container *ngIf=\"reference\">\n <div\n *ngFor=\"let document of model; trackBy: trackByDocument\"\n class=\"file file-uploaded\"\n >\n <!-- prettier-ignore -->\n <a [href]=\"multiUploadService.getDownloadUrl(url, document)\">{{ document.filename }}</a>\n <span class=\"ml-1 mr-1\">\n ({{ toMegaOctets(document.fileSize) }}\n <abbr\n [title]=\"\n 'foehn-uploader.abbr-megaoctet-title' | fromDictionary\n \"\n >\n {{ 'foehn-uploader.abbr-megaoctet' | fromDictionary }}\n </abbr>\n )\n </span>\n <button\n *ngIf=\"!readonly\"\n type=\"button\"\n class=\"btn icon-button delete-uploaded\"\n (click)=\"removeFile(document)\"\n >\n <foehn-icon-times\n [title]=\"\n 'foehn-uploader.delete-icon-title'\n | fromDictionary: { docName: document.filename }\n \"\n ></foehn-icon-times>\n </button>\n </div>\n\n <small\n class=\"form-text text-secondary uploaded-global-info\"\n *ngIf=\"showGlobalInfos(model)\"\n [innerHTML]=\"getGlobalInfos(model)\"\n ></small>\n </ng-container>\n\n <ng-container *ngIf=\"!reference\">\n <div\n *ngFor=\"let pending of pendingFiles; trackBy: trackByPending\"\n class=\"file file-pending\"\n >\n <span>{{ pending.name }}</span>\n <span class=\"ml-1 mr-1\">\n ({{ toMegaOctets(pending.size) }}\n <abbr\n [title]=\"\n 'foehn-uploader.abbr-megaoctet-title' | fromDictionary\n \"\n >\n {{ 'foehn-uploader.abbr-megaoctet' | fromDictionary }}\n </abbr>\n )\n </span>\n <button\n *ngIf=\"!readonly\"\n type=\"button\"\n class=\"btn icon-button delete-pending\"\n (click)=\"removeFile(pending)\"\n >\n <foehn-icon-times\n [title]=\"\n 'foehn-uploader.delete-icon-title'\n | fromDictionary: { docName: pending.name }\n \"\n ></foehn-icon-times>\n </button>\n </div>\n\n <small\n class=\"form-text text-secondary pending-global-info\"\n *ngIf=\"showGlobalInfos(pendingFiles)\"\n [innerHTML]=\"getGlobalInfos(pendingFiles)\"\n ></small>\n </ng-container>\n\n <ng-container *ngIf=\"canAddMoreFiles()\">\n <input\n class=\"form-control-file actual-input\"\n type=\"file\"\n [name]=\"name || label\"\n [multiple]=\"multiple\"\n [attr.accept]=\"\n overrideAcceptedExtensions\n ? overrideAcceptedExtensions\n : uploaderHelper.accept\n ? uploaderHelper.accept\n : null\n \"\n (change)=\"onFileChange($event)\"\n #inputFile\n />\n\n <button\n type=\"button\"\n class=\"btn btn-primary\"\n [ngClass]=\"{ 'sr-only': !showUploadButton }\"\n [attr.id]=\"buildChildId()\"\n [attr.aria-invalid]=\"hasErrorsToDisplay() || null\"\n [attr.aria-describedby]=\"buildId('ErrorsContainer')\"\n (click)=\"inputFile.click()\"\n #entryComponent\n >\n {{ multiple ? chooseButtonLabelMultiple : chooseButtonLabel }}\n </button>\n\n <div\n *ngIf=\"dragAndDrop\"\n aria-hidden=\"true\"\n class=\"dropfile\"\n [class.dropfile-border-transparent]=\"showDropZone\"\n (click)=\"inputFile.click()\"\n >\n {{ multiple ? dropZoneLabelMultiple : dropZoneLabel }}\n </div>\n </ng-container>\n\n <foehn-upload-progress-bar\n *ngIf=\"reference\"\n [progressBarTriggerHtmlElement]=\"\n inputElement?.nativeElement || fallBackTrigger\n \"\n ></foehn-upload-progress-bar>\n</div>\n", styles: [".dropfile{width:300px;border:3px dashed #bbb;text-align:center;margin-top:10px;cursor:pointer;padding:15px 3px}.dropfile-border-transparent{border-color:var(--white)}.actual-input{display:none}.file-list{margin-top:20px}.icon-button{border:0;background-color:transparent}.icon-button:hover{cursor:pointer}:host ::ng-deep .svg-inline--fa{color:#000!important}.drop-zone-highlight{outline:3px dashed #bbb}\n"], components: [{ type: i6.FoehnValidationAlertsComponent, selector: "foehn-validation-alerts", inputs: ["component", "shouldErrorsBeLive"] }, { type: i7.FoehnIconTimesComponent, selector: "foehn-icon-times" }, { type: i8.FoehnUploadProgressBarComponent, selector: "foehn-upload-progress-bar", inputs: ["progressBarTriggerHtmlElement"] }], directives: [{ type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i9.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i10.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i10.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i10.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i9.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "fromDictionary": i11.SdkDictionaryPipe } });
|
|
198
199
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: FoehnMultiUploadComponent, decorators: [{
|
|
199
200
|
type: Component,
|
|
200
201
|
args: [{ selector: 'foehn-multi-upload', providers: [
|
|
@@ -203,7 +204,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
203
204
|
useExisting: forwardRef(() => FoehnMultiUploadComponent),
|
|
204
205
|
multi: true
|
|
205
206
|
}
|
|
206
|
-
], template: "<div\n class=\"form-group\"\n [class.has-danger]=\"hasErrorsToDisplay()\"\n [class.vd-form-group-danger]=\"hasErrorsToDisplay()\"\n [class.drop-zone-highlight]=\"showDropZone\"\n [attr.id]=\"buildId('Container')\"\n tabindex=\"-1\"\n (drop)=\"onDrop($event)\"\n (dragenter)=\"onDragenter($event)\"\n (dragleave)=\"onDragleave($event)\"\n (dragover)=\"onDragover($event)\"\n>\n <label\n [attr.for]=\"buildChildId()\"\n *ngIf=\"!!label\"\n [ngClass]=\"isLabelSrOnly ? 'sr-only' : labelStyleModifier\"\n >\n <span [innerHTML]=\"label\"></span>\n <span\n *ngIf=\"!required && !hideNotRequiredExtraLabel\"\n aria-hidden=\"true\"\n >\n {{ 'foehn-input.optional' | fromDictionary }}\n </span>\n </label>\n\n <foehn-validation-alerts\n [component]=\"this\"\n [shouldErrorsBeLive]=\"hasLiveUploadErrors()\"\n ></foehn-validation-alerts>\n\n <small\n *ngIf=\"helpText\"\n [attr.id]=\"buildChildId() + 'Help'\"\n class=\"form-text text-secondary\"\n [innerHTML]=\"helpText\"\n ></small>\n\n <!-- PRESTAKIT-309: Fake input with NgModel to be registered into Form controls -->\n <input type=\"hidden\" [name]=\"name || label\" [ngModel]=\"model\" />\n\n <ng-content></ng-content>\n\n <ng-container *ngIf=\"reference\">\n <div\n *ngFor=\"let document of model; trackBy: trackByDocument\"\n class=\"file file-uploaded\"\n >\n <!-- prettier-ignore -->\n <a [href]=\"multiUploadService.getDownloadUrl(url, document)\">{{ document.filename }}</a>\n <span class=\"ml-1 mr-1\">\n ({{ toMegaOctets(document.fileSize) }}\n <abbr\n [title]=\"\n 'foehn-uploader.abbr-megaoctet-title' | fromDictionary\n \"\n >\n {{ 'foehn-uploader.abbr-megaoctet' | fromDictionary }}\n </abbr>\n )\n </span>\n <button\n *ngIf=\"!readonly\"\n type=\"button\"\n class=\"btn icon-button delete-uploaded\"\n (click)=\"removeFile(document)\"\n >\n <foehn-icon-times\n [title]=\"\n 'foehn-uploader.delete-icon-title'\n | fromDictionary: { docName: document.filename }\n \"\n ></foehn-icon-times>\n </button>\n </div>\n\n <small\n class=\"form-text text-secondary uploaded-global-info\"\n *ngIf=\"showGlobalInfos(model)\"\n [innerHTML]=\"getGlobalInfos(model)\"\n ></small>\n </ng-container>\n\n <ng-container *ngIf=\"!reference\">\n <div\n *ngFor=\"let pending of pendingFiles; trackBy: trackByPending\"\n class=\"file file-pending\"\n >\n <span>{{ pending.name }}</span>\n <span class=\"ml-1 mr-1\">\n ({{ toMegaOctets(pending.size) }}\n <abbr\n [title]=\"\n 'foehn-uploader.abbr-megaoctet-title' | fromDictionary\n \"\n >\n {{ 'foehn-uploader.abbr-megaoctet' | fromDictionary }}\n </abbr>\n )\n </span>\n <button\n *ngIf=\"!readonly\"\n type=\"button\"\n class=\"btn icon-button delete-pending\"\n (click)=\"removeFile(pending)\"\n >\n <foehn-icon-times\n [title]=\"\n 'foehn-uploader.delete-icon-title'\n | fromDictionary: { docName: pending.name }\n \"\n ></foehn-icon-times>\n </button>\n </div>\n\n <small\n class=\"form-text text-secondary pending-global-info\"\n *ngIf=\"showGlobalInfos(pendingFiles)\"\n [innerHTML]=\"getGlobalInfos(pendingFiles)\"\n ></small>\n </ng-container>\n\n <ng-container *ngIf=\"canAddMoreFiles()\">\n <input\n class=\"form-control-file actual-input\"\n type=\"file\"\n [name]=\"name || label\"\n [multiple]=\"multiple\"\n [attr.accept]=\"\n overrideAcceptedExtensions\n ? overrideAcceptedExtensions\n : uploaderHelper.accept\n ? uploaderHelper.accept\n : null\n \"\n (change)=\"onFileChange($event)\"\n #inputFile\n />\n\n <button\n type=\"button\"\n class=\"btn btn-primary\"\n [ngClass]=\"{ 'sr-only': !showUploadButton }\"\n [attr.id]=\"buildChildId()\"\n [attr.aria-invalid]=\"hasErrorsToDisplay() || null\"\n [attr.aria-describedby]=\"buildId('ErrorsContainer')\"\n (click)=\"inputFile.click()\"\n #entryComponent\n >\n {{ multiple ? chooseButtonLabelMultiple : chooseButtonLabel }}\n </button>\n\n <div\n *ngIf=\"dragAndDrop\"\n aria-hidden=\"true\"\n class=\"dropfile\"\n [class.dropfile-border-transparent]=\"showDropZone\"\n (click)=\"inputFile.click()\"\n >\n {{ multiple ? dropZoneLabelMultiple : dropZoneLabel }}\n </div>\n </ng-container>\n</div>\n", styles: [".dropfile{width:300px;border:3px dashed #bbb;text-align:center;margin-top:10px;cursor:pointer;padding:15px 3px}.dropfile-border-transparent{border-color:var(--white)}.actual-input{display:none}.file-list{margin-top:20px}.icon-button{border:0;background-color:transparent}.icon-button:hover{cursor:pointer}:host ::ng-deep .svg-inline--fa{color:#000!important}.drop-zone-highlight{outline:3px dashed #bbb}\n"] }]
|
|
207
|
+
], template: "<div\n class=\"form-group\"\n [class.has-danger]=\"hasErrorsToDisplay()\"\n [class.vd-form-group-danger]=\"hasErrorsToDisplay()\"\n [class.drop-zone-highlight]=\"showDropZone\"\n [attr.id]=\"buildId('Container')\"\n tabindex=\"-1\"\n (drop)=\"onDrop($event)\"\n (dragenter)=\"onDragenter($event)\"\n (dragleave)=\"onDragleave($event)\"\n (dragover)=\"onDragover($event)\"\n #fallBackTrigger\n>\n <label\n [attr.for]=\"buildChildId()\"\n *ngIf=\"!!label\"\n [ngClass]=\"isLabelSrOnly ? 'sr-only' : labelStyleModifier\"\n >\n <span [innerHTML]=\"label\"></span>\n <span\n *ngIf=\"!required && !hideNotRequiredExtraLabel\"\n aria-hidden=\"true\"\n >\n {{ 'foehn-input.optional' | fromDictionary }}\n </span>\n </label>\n\n <foehn-validation-alerts\n [component]=\"this\"\n [shouldErrorsBeLive]=\"hasLiveUploadErrors()\"\n ></foehn-validation-alerts>\n\n <small\n *ngIf=\"helpText\"\n [attr.id]=\"buildChildId() + 'Help'\"\n class=\"form-text text-secondary\"\n [innerHTML]=\"helpText\"\n ></small>\n\n <!-- PRESTAKIT-309: Fake input with NgModel to be registered into Form controls -->\n <input type=\"hidden\" [name]=\"name || label\" [ngModel]=\"model\" />\n\n <ng-content></ng-content>\n\n <ng-container *ngIf=\"reference\">\n <div\n *ngFor=\"let document of model; trackBy: trackByDocument\"\n class=\"file file-uploaded\"\n >\n <!-- prettier-ignore -->\n <a [href]=\"multiUploadService.getDownloadUrl(url, document)\">{{ document.filename }}</a>\n <span class=\"ml-1 mr-1\">\n ({{ toMegaOctets(document.fileSize) }}\n <abbr\n [title]=\"\n 'foehn-uploader.abbr-megaoctet-title' | fromDictionary\n \"\n >\n {{ 'foehn-uploader.abbr-megaoctet' | fromDictionary }}\n </abbr>\n )\n </span>\n <button\n *ngIf=\"!readonly\"\n type=\"button\"\n class=\"btn icon-button delete-uploaded\"\n (click)=\"removeFile(document)\"\n >\n <foehn-icon-times\n [title]=\"\n 'foehn-uploader.delete-icon-title'\n | fromDictionary: { docName: document.filename }\n \"\n ></foehn-icon-times>\n </button>\n </div>\n\n <small\n class=\"form-text text-secondary uploaded-global-info\"\n *ngIf=\"showGlobalInfos(model)\"\n [innerHTML]=\"getGlobalInfos(model)\"\n ></small>\n </ng-container>\n\n <ng-container *ngIf=\"!reference\">\n <div\n *ngFor=\"let pending of pendingFiles; trackBy: trackByPending\"\n class=\"file file-pending\"\n >\n <span>{{ pending.name }}</span>\n <span class=\"ml-1 mr-1\">\n ({{ toMegaOctets(pending.size) }}\n <abbr\n [title]=\"\n 'foehn-uploader.abbr-megaoctet-title' | fromDictionary\n \"\n >\n {{ 'foehn-uploader.abbr-megaoctet' | fromDictionary }}\n </abbr>\n )\n </span>\n <button\n *ngIf=\"!readonly\"\n type=\"button\"\n class=\"btn icon-button delete-pending\"\n (click)=\"removeFile(pending)\"\n >\n <foehn-icon-times\n [title]=\"\n 'foehn-uploader.delete-icon-title'\n | fromDictionary: { docName: pending.name }\n \"\n ></foehn-icon-times>\n </button>\n </div>\n\n <small\n class=\"form-text text-secondary pending-global-info\"\n *ngIf=\"showGlobalInfos(pendingFiles)\"\n [innerHTML]=\"getGlobalInfos(pendingFiles)\"\n ></small>\n </ng-container>\n\n <ng-container *ngIf=\"canAddMoreFiles()\">\n <input\n class=\"form-control-file actual-input\"\n type=\"file\"\n [name]=\"name || label\"\n [multiple]=\"multiple\"\n [attr.accept]=\"\n overrideAcceptedExtensions\n ? overrideAcceptedExtensions\n : uploaderHelper.accept\n ? uploaderHelper.accept\n : null\n \"\n (change)=\"onFileChange($event)\"\n #inputFile\n />\n\n <button\n type=\"button\"\n class=\"btn btn-primary\"\n [ngClass]=\"{ 'sr-only': !showUploadButton }\"\n [attr.id]=\"buildChildId()\"\n [attr.aria-invalid]=\"hasErrorsToDisplay() || null\"\n [attr.aria-describedby]=\"buildId('ErrorsContainer')\"\n (click)=\"inputFile.click()\"\n #entryComponent\n >\n {{ multiple ? chooseButtonLabelMultiple : chooseButtonLabel }}\n </button>\n\n <div\n *ngIf=\"dragAndDrop\"\n aria-hidden=\"true\"\n class=\"dropfile\"\n [class.dropfile-border-transparent]=\"showDropZone\"\n (click)=\"inputFile.click()\"\n >\n {{ multiple ? dropZoneLabelMultiple : dropZoneLabel }}\n </div>\n </ng-container>\n\n <foehn-upload-progress-bar\n *ngIf=\"reference\"\n [progressBarTriggerHtmlElement]=\"\n inputElement?.nativeElement || fallBackTrigger\n \"\n ></foehn-upload-progress-bar>\n</div>\n", styles: [".dropfile{width:300px;border:3px dashed #bbb;text-align:center;margin-top:10px;cursor:pointer;padding:15px 3px}.dropfile-border-transparent{border-color:var(--white)}.actual-input{display:none}.file-list{margin-top:20px}.icon-button{border:0;background-color:transparent}.icon-button:hover{cursor:pointer}:host ::ng-deep .svg-inline--fa{color:#000!important}.drop-zone-highlight{outline:3px dashed #bbb}\n"] }]
|
|
207
208
|
}], ctorParameters: function () { return [{ type: i1.MultiUploadService }, { type: i2.PendingUploadService }, { type: i3.ApplicationInfoService }, { type: i4.FoehnConfirmModalService }, { type: i5.SdkDictionaryService }]; }, propDecorators: { url: [{
|
|
208
209
|
type: Input
|
|
209
210
|
}], reference: [{
|
|
@@ -211,4 +212,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
211
212
|
}], shouldDisplayFileSavedConfirmation: [{
|
|
212
213
|
type: Input
|
|
213
214
|
}] } });
|
|
214
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9laG4tbXVsdGktdXBsb2FkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXN0YXRpb25zLW5nL3NyYy9mb2Vobi11cGxvYWQvZm9laG4tbXVsdGktdXBsb2FkL2ZvZWhuLW11bHRpLXVwbG9hZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcmVzdGF0aW9ucy1uZy9zcmMvZm9laG4tdXBsb2FkL2ZvZWhuLW11bHRpLXVwbG9hZC9mb2Vobi1tdWx0aS11cGxvYWQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQVFoRixPQUFPLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHckUsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDdEYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUNBQXlDLENBQUM7Ozs7Ozs7Ozs7OztBQWM5RSxNQUFNLE9BQU8seUJBQ1QsU0FBUSw4QkFBbUQ7SUFnQjNELFlBQ0ksa0JBQXNDLEVBQ3RDLG9CQUEwQyxFQUNoQyxzQkFBOEMsRUFDOUMsbUJBQTZDLEVBQzdDLGlCQUF1QztRQUVqRCxLQUFLLENBQUMsc0JBQXNCLEVBQUUsbUJBQW1CLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztRQUo1RCwyQkFBc0IsR0FBdEIsc0JBQXNCLENBQXdCO1FBQzlDLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBMEI7UUFDN0Msc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFzQjtRQWxCckQsUUFBRyxHQUFHLGNBQWMsQ0FBQztRQU1yQix1Q0FBa0MsR0FBRyxJQUFJLENBQUM7UUFldEMsSUFBSSxDQUFDLG9CQUFvQixHQUFH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LENBQUMsT0FBTyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUUsQ0FDbkMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLEdBQUcsQ0FBQyxDQUNyQyxDQUFDO2FBQ0w7U0FDSjthQUFNO1lBQ0gsTUFBTSxtQkFBbUIsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQ25ELElBQUksbUJBQW1CLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtnQkFDaEMsOERBQThEO2dCQUM5RCxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRSxDQUNyQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsR0FBRyxDQUFDLENBQ3JDLENBQUM7YUFDTDtTQUNKO1FBQ0QsOERBQThEO1FBQzlELE9BQU8sS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDN0IsQ0FBQzs7dUhBbFNRLHlCQUF5QjsyR0FBekIseUJBQXlCLHVLQVJ2QjtRQUNQO1lBQ0ksT0FBTyxFQUFFLG1CQUFtQjtZQUM1QixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLHlCQUF5QixDQUFDO1lBQ3hELEtBQUssRUFBRSxJQUFJO1NBQ2Q7S0FDSixpREN4QkwsMmdMQW1LQTs0RkR6SWEseUJBQXlCO2tCQVpyQyxTQUFTOytCQUNJLG9CQUFvQixhQUduQjt3QkFDUDs0QkFDSSxPQUFPLEVBQUUsbUJBQW1COzRCQUM1QixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSwwQkFBMEIsQ0FBQzs0QkFDeEQsS0FBSyxFQUFFLElBQUk7eUJBQ2Q7cUJBQ0o7MlBBTUQsR0FBRztzQkFERixLQUFLO2dCQUlOLFNBQVM7c0JBRFIsS0FBSztnQkFJTixrQ0FBa0M7c0JBRGpDLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGZvcndhcmRSZWYsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTXVsdGlVcGxvYWRTZXJ2aWNlIH0gZnJvbSAnLi9tdWx0aS11cGxvYWQuc2VydmljZSc7XG5pbXBvcnQgeyBGb3JtRXJyb3IgfSBmcm9tICcuLi8uLi9mb3JtLWVycm9yJztcbmltcG9ydCB7IERvY3VtZW50RXJyb3IsIERvY3VtZW50c1dpdGhFcnJvcnMgfSBmcm9tICcuL211bHRpLXVwbG9hZC50eXBlJztcbmltcG9ydCB7IERvY3VtZW50UmVmZXJlbmNlIH0gZnJvbSAnLi4vZG9jdW1lbnQtcmVmZXJlbmNlJztcbmltcG9ydCB7IFBlbmRpbmdVcGxvYWRTZXJ2aWNlIH0gZnJvbSAnLi9wZW5kaW5nLXVwbG9hZC5zZXJ2aWNlJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQXBwbGljYXRpb25JbmZvU2VydmljZSB9IGZyb20gJy4uLy4uL3Nkay1hcHBpbmZvL2FwcGxpY2F0aW9uLWluZm8uc2VydmljZSc7XG5pbXBvcnQgeyBmaWx0ZXIsIG1lcmdlTWFwLCB0YXAsIHRocm90dGxlVGltZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEZvZWhuQ29uZmlybU1vZGFsU2VydmljZSB9IGZyb20gJy4uLy4uL2ZvZWhuLWNvbmZpcm0tbW9kYWwvZm9laG4tY29uZmlybS1tb2RhbC5zZXJ2aWNlJztcbmltcG9ydCB7IFNka0RpY3Rpb25hcnlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2RrLWRpY3Rpb25hcnkvc2RrLWRpY3Rpb25hcnkuc2VydmljZSc7XG5pbXBvcnQgeyBBYnN0cmFjdEZvZWhuVXBsb2FkZXJDb21wb25lbnQgfSBmcm9tICcuLi9hYnN0cmFjdC1mb2Vobi11cGxvYWRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgRm9laG5JbnB1dENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2ZvZWhuLWlucHV0L2ZvZWhuLWlucHV0LmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZm9laG4tbXVsdGktdXBsb2FkJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZm9laG4tbXVsdGktdXBsb2FkLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi4vZm9laG4tdXBsb2FkLmNvbXBvbmVudC5jc3MnXSxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogRm9laG5JbnB1dENvbXBvbmVudCxcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEZvZWhuTXVsdGlVcGxvYWRDb21wb25lbnQpLFxuICAgICAgICAgICAgbXVsdGk6IHRydWVcbiAgICAgICAgfVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgRm9laG5NdWx0aVVwbG9hZENvbXBvbmVudFxuICAgIGV4dGVuZHMgQWJzdHJhY3RGb2VoblVwbG9hZGVyQ29tcG9uZW50PERvY3VtZW50UmVmZXJlbmNlW10+XG4gICAgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gICAgQElucHV0KClcbiAgICB1cmwgPSAnYXBpL2RvY3VtZW50JztcblxuICAgIEBJbnB1dCgpXG4gICAgcmVmZXJlbmNlOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKVxuICAgIHNob3VsZERpc3BsYXlGaWxlU2F2ZWRDb25maXJtYXRpb24gPSB0cnVlO1xuXG4gICAgbXVsdGlVcGxvYWRTZXJ2aWNlOiBNdWx0aVVwbG9hZFNlcnZpY2U7XG4gICAgcGVuZGluZ1VwbG9hZFNlcnZpY2U6IFBlbmRpbmdVcGxvYWRTZXJ2aWNlO1xuXG4gICAgcHJpdmF0ZSBwZW5kaW5nVXBsb2FkZWRFcnJvcnNTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBtdWx0aVVwbG9hZFNlcnZpY2U6IE11bHRpVXBsb2FkU2VydmljZSxcbiAgICAgICAgcGVuZGluZ1VwbG9hZFNlcnZpY2U6IFBlbmRpbmdVcGxvYWRTZXJ2aWNlLFxuICAgICAgICBwcm90ZWN0ZWQgYXBwbGljYXRpb25JbmZvU2VydmljZTogQXBwbGljYXRpb25JbmZvU2VydmljZSxcbiAgICAgICAgcHJvdGVjdGVkIGNvbmZpcm1Nb2RhbFNlcnZpY2U6IEZvZWhuQ29uZmlybU1vZGFsU2VydmljZSxcbiAgICAgICAgcHJvdGVjdGVkIGRpY3Rpb25hcnlTZXJ2aWNlOiBTZGtEaWN0aW9uYXJ5U2VydmljZVxuICAgICkge1xuICAgICAgICBzdXBlcihhcHBsaWNhdGlvbkluZm9TZXJ2aWNlLCBjb25maXJtTW9kYWxTZXJ2aWNlLCBkaWN0aW9uYXJ5U2VydmljZSk7XG4gICAgICAgIHRoaXMucGVuZGluZ1VwbG9hZFNlcnZpY2UgPSBwZW5kaW5nVXBsb2FkU2VydmljZTtcbiAgICAgICAgdGhpcy5tdWx0aVVwbG9hZFNlcnZpY2UgPSBtdWx0aVVwbG9hZFNlcnZpY2U7XG4gICAgfVxuXG4gICAgZ2V0IHBlbmRpbmdGaWxlcygpOiBGaWxlW10ge1xuICAgICAgICByZXR1cm4gdGhpcy5wZW5kaW5nVXBsb2FkU2VydmljZS5nZXRQZW5kaW5nRmlsZXModGhpcy5uYW1lKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcblxuICAgICAgICB0aGlzLnBlbmRpbmdVcGxvYWRlZEVycm9yc1N1YnNjcmlwdGlvbiA9IHRoaXMucGVuZGluZ1VwbG9hZFNlcnZpY2UucGVuZGluZ1VwbG9hZGVkRXJyb3JzLnN1YnNjcmliZShcbiAgICAgICAgICAgIChyZXNwb25zZTogRG9jdW1lbnRzV2l0aEVycm9ycykgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZGlzcGxheVBlbmRpbmdVcGxvYWRlZEVycm9yc0Zyb21TZXJ2ZXJCeUZvcm1LZXkoXG4gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLmVycm9ycyxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5uYW1lXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcblxuICAgICAgICAvLyBBZGQgZmlsZXMgbG9naWNcbiAgICAgICAgdGhpcy51cGxvYWRGaWxlc1N1YnNjcmlwdGlvbiA9IHRoaXMudXBsb2FkRmlsZXNTdWJqZWN0XG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBmaWx0ZXIoZmlsZXMgPT4gISFmaWxlcyksXG4gICAgICAgICAgICAgICAgLy8gT25seSBvbmUgY2FsbCBldmVyeSAzMDBtcyB0byBzdG9wIGNvbmN1cnJlbnQgYWNjZXNzXG4gICAgICAgICAgICAgICAgdGhyb3R0bGVUaW1lKDMwMCksXG4gICAgICAgICAgICAgICAgLy8gT25seSBvbmUgY29uY3VycmVudCBjYWxsIGF0IHRoZSB0aW1lXG4gICAgICAgICAgICAgICAgbWVyZ2VNYXAoXG4gICAgICAgICAgICAgICAgICAgIGZpbGVzID0+XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm11bHRpVXBsb2FkU2VydmljZS51cGxvYWREb2N1bWVudHMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51cmwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubGFiZWwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5rZXksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tdWx0aXBsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRMYW5ndWFnZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3VsZERpc3BsYXlGaWxlU2F2ZWRDb25maXJtYXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKFxuICAgICAgICAgICAgICAgICh7IGRvY3VtZW50cywgZXJyb3JzIH0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kaXNwbGF5UmVzdWx0RnJvbVNlcnZlcihkb2N1bWVudHMsIGVycm9ycyk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAoZXJyb3I6IHVua25vd24pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZXJyb3JzOiBGb3JtRXJyb3JbXSA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgICAgICAgICAgICAgICBjb25zdCB7IHN0YXR1cyB9OiBhbnkgPSBlcnJvcjtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51cGxvYWRlckhlbHBlci5hZGRDdXN0b21FcnJvck9yRGVmYXVsdChcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGAke3N0YXR1c31gLFxuICAgICAgICAgICAgICAgICAgICAgICAgJycsXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmN1c3RvbUVycm9ycyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub3ZlcnJpZGVNYXhTaXplSW5NbyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub3ZlcnJpZGVBY2NlcHRlZEV4dGVuc2lvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm92ZXJyaWRlTWF4RmlsZU5hbWVMZW5ndGgsXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm92ZXJyaWRlSWxsZWdhbENoYXJhY3RlcnNcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWZyZXNoRXJyb3JzKFtlcnJvcnMsIHRydWVdKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApO1xuXG4gICAgICAgIC8vIERlbGV0ZSBkb2N1bWVudCBsb2dpY1xuICAgICAgICB0aGlzLmRlbGV0ZURvY3VtZW50U3Vic2NyaXB0aW9uID0gdGhpcy5kZWxldGVEb2N1bWVudFN1YmplY3RcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIGZpbHRlcihkb2N1bWVudCA9PiAhIWRvY3VtZW50KSxcbiAgICAgICAgICAgICAgICAvLyBPbmx5IG9uZSBjYWxsIGV2ZXJ5IDMwMCBtcyB0byBzdG9wIGNvbmN1cnJlbnQgYWNjZXNzXG4gICAgICAgICAgICAgICAgdGhyb3R0bGVUaW1lKDMwMCksXG4gICAgICAgICAgICAgICAgLy8gT25seSBvbmUgY29uY3VycmVudCBjYWxsIGF0IHRoZSB0aW1lXG4gICAgICAgICAgICAgICAgbWVyZ2VNYXAoXG4gICAgICAgICAgICAgICAgICAgIGRvY3VtZW50ID0+XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm11bHRpVXBsb2FkU2VydmljZS5kZWxldGVEb2N1bWVudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVybCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudFxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgLy8gU2lkZSBlZmZlY3Qgb25jZSB0aGUgZG9jdW1lbnQgaGFzIGJlZW4gZGVsZXRlZC5cbiAgICAgICAgICAgICAgICB0YXAoZG9jdW1lbnQgPT4gdGhpcy5yZW1vdmVEb2N1bWVudEZyb21Nb2RlbChkb2N1bWVudCkpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG5cbiAgICAgICAgaWYgKCEhdGhpcy5wZW5kaW5nVXBsb2FkZWRFcnJvcnNTdWJzY3JpcHRpb24pIHtcbiAgICAgICAgICAgIHRoaXMucGVuZGluZ1VwbG9hZGVkRXJyb3JzU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB0cmFja0J5UGVuZGluZyhwZW5kaW5nOiBGaWxlKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHBlbmRpbmcubGFzdE1vZGlmaWVkO1xuICAgIH1cblxuICAgIGNhbkFkZE1vcmVGaWxlcygpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKHRoaXMucmVhZG9ubHkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLm1vZGVsICYmICEhdGhpcy5tb2RlbC5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAhdGhpcy5wZW5kaW5nVXBsb2FkU2VydmljZS5oYXNQZW5kaW5nRmlsZXModGhpcy5uYW1lKTtcbiAgICB9XG5cbiAgICBvbkZpbGVDaGFuZ2UoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIC8vIFBSRVNUQUtJVC0zMDk6IE1hcmsgYXMgcHJpc3RpbmUgc28gZXJyb3JzIGNhbiBiZSBzaG93biBkaXJlY3RseSB0byB1c2VyIHdoZW4gdXBsb2FkaW5nIGZpbGVcbiAgICAgICAgdGhpcy5tYXJrQXNQcmlzdGluZSgpO1xuXG4gICAgICAgIGNvbnN0IHRhcmdldDogSFRNTElucHV0RWxlbWVudCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50O1xuICAgICAgICB0aGlzLnBvcHVsYXRlRmlsZUl0ZW1MaXN0KHRhcmdldC5maWxlcyk7XG4gICAgICAgIHRhcmdldC52YWx1ZSA9IG51bGw7IC8vIHJlc2V0IGhpZGRlbiBmaWxlIGlucHV0IHZhbHVlc1xuICAgIH1cblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgb25Ecm9wKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy51cGxvYWRlckhlbHBlci5wcmV2ZW50QW5kU3RvcChldmVudCk7XG4gICAgICAgIGlmICh0aGlzLmRyYWdBbmREcm9wKSB7XG4gICAgICAgICAgICBjb25zdCBmaWxlTGlzdDogRmlsZUxpc3QgPSB0aGlzLnVwbG9hZGVySGVscGVyLmdldFRyYW5zZmVyKGV2ZW50KTtcbiAgICAgICAgICAgIGlmIChmaWxlTGlzdCkge1xuICAgICAgICAgICAgICAgIHRoaXMucG9wdWxhdGVGaWxlSXRlbUxpc3QoZmlsZUxpc3QpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5zaG93RHJvcFpvbmUgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgcHJvdGVjdGVkIHJlbW92ZUZpbGVPbkNvbmZpcm1hdGlvbihkb2N1bWVudDogYW55KTogdm9pZCB7XG4gICAgICAgIGlmICghIXRoaXMucmVmZXJlbmNlKSB7XG4gICAgICAgICAgICBzdXBlci5yZW1vdmVGaWxlT25Db25maXJtYXRpb24oZG9jdW1lbnQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gVGhlIGRvY3VtZW50IGhhc24ndCBiZWVuIHVwbG9hZGVkLlxuICAgICAgICAgICAgdGhpcy5wZW5kaW5nVXBsb2FkU2VydmljZS5yZW1vdmVQZW5kaW5nRmlsZShkb2N1bWVudCwgdGhpcy5uYW1lKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgcG9wdWxhdGVGaWxlSXRlbUxpc3QoZmlsZUxpc3Q6IEZpbGVMaXN0KTogdm9pZCB7XG4gICAgICAgIGxldCBmaWxlcyA9IEFycmF5LmZyb20oZmlsZUxpc3QpO1xuXG4gICAgICAgIGlmICghZmlsZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBXaGVuIGRyYWcvZHJvcCBhbmQgYXNrZWQgZm9yIHNpbmdsZSB1cGxvYWQsIHdlIGVuc3VyZSB3ZSBzdG9yZSBvbmx5IG9uZSBmaWxlIGZvciB1cGxvYWRcbiAgICAgICAgaWYgKHRoaXMuZHJhZ0FuZERyb3AgJiYgIXRoaXMubXVsdGlwbGUpIHtcbiAgICAgICAgICAgIGZpbGVzID0gdGhpcy5tYW5hZ2VTaW5nbGVGaWxlKGZpbGVzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIERpc3BsYXkgbG9jYWwgZXJyb3JzIGFuZCBzdG9wIHByb2Nlc3NpbmdcbiAgICAgICAgY29uc3QgZmlsZXNFcnJvcnMgPSB0aGlzLmRpc3BsYXlMb2NhbEVycm9ycyhmaWxlcyk7XG4gICAgICAgIGlmIChmaWxlc0Vycm9ycy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEluaXRpYWxpemUgbW9kZWwgaWYgZW1wdHlcbiAgICAgICAgaWYgKCF0aGlzLm1vZGVsIHx8ICF0aGlzLm1vZGVsLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5tb2RlbCA9IFtdO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCEhdGhpcy5yZWZlcmVuY2UpIHtcbiAgICAgICAgICAgIC8vIFdoZW4gd2UgaGF2ZSBhIHJlZmVyZW5jZSwgd2Ugc2VuZCBmaWxlcyB0byBzZXJ2ZXJcbiAgICAgICAgICAgIHRoaXMudXBsb2FkRmlsZXNTdWJqZWN0Lm5leHQoZmlsZXMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gUFJFU1RBS0lULTMwOTogU2ltdWxhdGUgdXNlciBpbnRlcmFjdGlvbiB3aXRoIGNvbXBvbmVudFxuICAgICAgICAgICAgLy8gb25seSB3aGVuIG5vIGVycm9yIHNvIGlzUHJpc3RpbmUgaXMgc2V0IHRvIGZhbHNlIGZvciB2YWxpZGF0aW9uIHB1cnBvc2VcbiAgICAgICAgICAgIHRoaXMubWFya0FzRGlydHkoKTtcblxuICAgICAgICAgICAgLy8gT3RoZXJ3aXNlLCB3ZSBzdG9yZSBmaWxlcyBpbiBwZW5kaW5nIHN0b3JhZ2VcbiAgICAgICAgICAgIHRoaXMucGVuZGluZ1VwbG9hZFNlcnZpY2UuYWRkUGVuZGluZ0ZpbGVzKFxuICAgICAgICAgICAgICAgIHRoaXMudXJsLFxuICAgICAgICAgICAgICAgIHRoaXMubmFtZSxcbiAgICAgICAgICAgICAgICB0aGlzLmxhYmVsLFxuICAgICAgICAgICAgICAgIGZpbGVzLFxuICAgICAgICAgICAgICAgIHRoaXMua2V5LFxuICAgICAgICAgICAgICAgIHRoaXMubXVsdGlwbGUsXG4gICAgICAgICAgICAgICAgdGhpcy5zaG91bGREaXNwbGF5RmlsZVNhdmVkQ29uZmlybWF0aW9uXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBkaXNwbGF5UGVuZGluZ1VwbG9hZGVkRXJyb3JzRnJvbVNlcnZlckJ5Rm9ybUtleShcbiAgICAgICAgZXJyb3JzOiBEb2N1bWVudEVycm9yW10sXG4gICAgICAgIGZvcm1LZXk6IHN0cmluZ1xuICAgICk6IHZvaWQge1xuICAgICAgICBjb25zdCBlcnJvcnNCeUZvcm1LZXkgPSBlcnJvcnMuZmlsdGVyKFxuICAgICAgICAgICAgKGVycm9yOiBEb2N1bWVudEVycm9yKSA9PiBlcnJvci5mb3JtS2V5ID09PSBmb3JtS2V5XG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuZGlzcGxheUVycm9yc0Zyb21TZXJ2ZXIoZXJyb3JzQnlGb3JtS2V5KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGRpc3BsYXlSZXN1bHRGcm9tU2VydmVyKFxuICAgICAgICBkb2N1bWVudHM6IERvY3VtZW50UmVmZXJlbmNlW10sXG4gICAgICAgIGVycm9yczogRG9jdW1lbnRFcnJvcltdXG4gICAgKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGlzcGxheUVycm9yc0Zyb21TZXJ2ZXIoZXJyb3JzKTtcbiAgICAgICAgdGhpcy5tb2RlbCA9IFsuLi50aGlzLm1vZGVsLCAuLi4oZG9jdW1lbnRzIHx8IFtdKV07XG4gICAgICAgIHRoaXMudHJpZ2dlclVzZXJJbnB1dCh0aGlzLm1vZGVsKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlbW92ZURvY3VtZW50RnJvbU1vZGVsKGRvY3VtZW50OiBEb2N1bWVudFJlZmVyZW5jZSk6IHZvaWQge1xuICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMubW9kZWwuaW5kZXhPZihkb2N1bWVudCk7XG4gICAgICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICAgICAgICB0aGlzLm1vZGVsLnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgICAgICB0aGlzLm1vZGVsID0gWy4uLnRoaXMubW9kZWxdO1xuICAgICAgICAgICAgdGhpcy50cmlnZ2VyVXNlcklucHV0KHRoaXMubW9kZWwpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBkaXNwbGF5RXJyb3JzRnJvbVNlcnZlcihlcnJvcnM6IERvY3VtZW50RXJyb3JbXSk6IHZvaWQge1xuICAgICAgICBpZiAoIWVycm9ycyB8fCAhZXJyb3JzLmxlbmd0aCkge1xuICAgICAgICAgICAgLy8gUFJFU1RBS0lULTMwOTogU2ltdWxhdGUgdXNlciBpbnRlcmFjdGlvbiB3aXRoIGNvbXBvbmVudFxuICAgICAgICAgICAgLy8gb25seSB3aGVuIG5vIGVycm9yIHNvIGlzUHJpc3RpbmUgaXMgc2V0IHRvIGZhbHNlIGZvciB2YWxpZGF0aW9uIHB1cnBvc2VcbiAgICAgICAgICAgIHRoaXMubWFya0FzRGlydHkoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG5ld0Vycm9yczogRm9ybUVycm9yW10gPSBbXTtcbiAgICAgICAgZXJyb3JzLmZvckVhY2goZXJyb3IgPT5cbiAgICAgICAgICAgIHRoaXMudXBsb2FkZXJIZWxwZXIuYWRkQ3VzdG9tRXJyb3JPckRlZmF1bHQoXG4gICAgICAgICAgICAgICAgdGhpcy5uYW1lLFxuICAgICAgICAgICAgICAgIG5ld0Vycm9ycyxcbiAgICAgICAgICAgICAgICBgJHtlcnJvci5lcnJvckNvZGV9YCxcbiAgICAgICAgICAgICAgICBlcnJvci5sYWJlbCxcbiAgICAgICAgICAgICAgICB0aGlzLmN1c3RvbUVycm9ycyxcbiAgICAgICAgICAgICAgICB0aGlzLm92ZXJyaWRlTWF4U2l6ZUluTW8sXG4gICAgICAgICAgICAgICAgdGhpcy5vdmVycmlkZUFjY2VwdGVkRXh0ZW5zaW9ucyxcbiAgICAgICAgICAgICAgICB0aGlzLm92ZXJyaWRlTWF4RmlsZU5hbWVMZW5ndGgsXG4gICAgICAgICAgICAgICAgdGhpcy5vdmVycmlkZUlsbGVnYWxDaGFyYWN0ZXJzXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5yZWZyZXNoRXJyb3JzKFtuZXdFcnJvcnMsIHRydWVdKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG1hbmFnZVNpbmdsZUZpbGUoZmlsZXM6IEZpbGVbXSk6IEZpbGVbXSB7XG4gICAgICAgIC8vIEVkZ2UgYnJvd3NlciBsZXRzIHlvdSBkcm9wIGZpbGVzIGZyb20gZGlhbG9nIGJveCB3aGVuIHNlbGVjdGluZyBhIGZpbGUuXG4gICAgICAgIC8vIFdlIG5lZWQgdG8gbWFrZSBzdXJlIHdlIG9ubHkga2VlcCBsYXN0IHNlbGVjdGVkIGZpbGUgZnJvbSB1c2VyXG4gICAgICAgIGlmICghIXRoaXMucmVmZXJlbmNlKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5tb2RlbCAmJiB0aGlzLm1vZGVsLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50TW9kZWxGaWxlcyA9IFsuLi50aGlzLm1vZGVsXTtcbiAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgICAgICAgICAgIGN1cnJlbnRNb2RlbEZpbGVzLmZvckVhY2goKGRvYzogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbW92ZUZpbGVPbkNvbmZpcm1hdGlvbihkb2MpXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRQZW5kaW5nRmlsZXMgPSBbLi4udGhpcy5wZW5kaW5nRmlsZXNdO1xuICAgICAgICAgICAgaWYgKGN1cnJlbnRQZW5kaW5nRmlsZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgICAgICAgICAgICAgY3VycmVudFBlbmRpbmdGaWxlcy5mb3JFYWNoKChkb2M6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW1vdmVGaWxlT25Db25maXJtYXRpb24oZG9jKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gVGhlbiB3ZSBlbnN1cmUgd2UgdGFrZSBvbmx5IG9uZSBmaWxlIGZyb20gY3VycmVudCBzZWxlY3Rpb25cbiAgICAgICAgcmV0dXJuIGZpbGVzLnNsaWNlKDAsIDEpO1xuICAgIH1cbn1cbiIsIjxkaXZcbiAgICBjbGFzcz1cImZvcm0tZ3JvdXBcIlxuICAgIFtjbGFzcy5oYXMtZGFuZ2VyXT1cImhhc0Vycm9yc1RvRGlzcGxheSgpXCJcbiAgICBbY2xhc3MudmQtZm9ybS1ncm91cC1kYW5nZXJdPVwiaGFzRXJyb3JzVG9EaXNwbGF5KClcIlxuICAgIFtjbGFzcy5kcm9wLXpvbmUtaGlnaGxpZ2h0XT1cInNob3dEcm9wWm9uZVwiXG4gICAgW2F0dHIuaWRdPVwiYnVpbGRJZCgnQ29udGFpbmVyJylcIlxuICAgIHRhYmluZGV4PVwiLTFcIlxuICAgIChkcm9wKT1cIm9uRHJvcCgkZXZlbnQpXCJcbiAgICAoZHJhZ2VudGVyKT1cIm9uRHJhZ2VudGVyKCRldmVudClcIlxuICAgIChkcmFnbGVhdmUpPVwib25EcmFnbGVhdmUoJGV2ZW50KVwiXG4gICAgKGRyYWdvdmVyKT1cIm9uRHJhZ292ZXIoJGV2ZW50KVwiXG4+XG4gICAgPGxhYmVsXG4gICAgICAgIFthdHRyLmZvcl09XCJidWlsZENoaWxkSWQoKVwiXG4gICAgICAgICpuZ0lmPVwiISFsYWJlbFwiXG4gICAgICAgIFtuZ0NsYXNzXT1cImlzTGFiZWxTck9ubHkgPyAnc3Itb25seScgOiBsYWJlbFN0eWxlTW9kaWZpZXJcIlxuICAgID5cbiAgICAgICAgPHNwYW4gW2lubmVySFRNTF09XCJsYWJlbFwiPjwvc3Bhbj5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICpuZ0lmPVwiIXJlcXVpcmVkICYmICFoaWRlTm90UmVxdWlyZWRFeHRyYUxhYmVsXCJcbiAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgID5cbiAgICAgICAgICAgIHt7ICdmb2Vobi1pbnB1dC5vcHRpb25hbCcgfCBmcm9tRGljdGlvbmFyeSB9fVxuICAgICAgICA8L3NwYW4+XG4gICAgPC9sYWJlbD5cblxuICAgIDxmb2Vobi12YWxpZGF0aW9uLWFsZXJ0c1xuICAgICAgICBbY29tcG9uZW50XT1cInRoaXNcIlxuICAgICAgICBbc2hvdWxkRXJyb3JzQmVMaXZlXT1cImhhc0xpdmVVcGxvYWRFcnJvcnMoKVwiXG4gICAgPjwvZm9laG4tdmFsaWRhdGlvbi1hbGVydHM+XG5cbiAgICA8c21hbGxcbiAgICAgICAgKm5nSWY9XCJoZWxwVGV4dFwiXG4gICAgICAgIFthdHRyLmlkXT1cImJ1aWxkQ2hpbGRJZCgpICsgJ0hlbHAnXCJcbiAgICAgICAgY2xhc3M9XCJmb3JtLXRleHQgdGV4dC1zZWNvbmRhcnlcIlxuICAgICAgICBbaW5uZXJIVE1MXT1cImhlbHBUZXh0XCJcbiAgICA+PC9zbWFsbD5cblxuICAgIDwhLS0gUFJFU1RBS0lULTMwOTogRmFrZSBpbnB1dCB3aXRoIE5nTW9kZWwgdG8gYmUgcmVnaXN0ZXJlZCBpbnRvIEZvcm0gY29udHJvbHMgLS0+XG4gICAgPGlucHV0IHR5cGU9XCJoaWRkZW5cIiBbbmFtZV09XCJuYW1lIHx8IGxhYmVsXCIgW25nTW9kZWxdPVwibW9kZWxcIiAvPlxuXG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInJlZmVyZW5jZVwiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgZG9jdW1lbnQgb2YgbW9kZWw7IHRyYWNrQnk6IHRyYWNrQnlEb2N1bWVudFwiXG4gICAgICAgICAgICBjbGFzcz1cImZpbGUgZmlsZS11cGxvYWRlZFwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDwhLS0gcHJldHRpZXItaWdub3JlIC0tPlxuICAgICAgICAgICAgPGEgW2hyZWZdPVwibXVsdGlVcGxvYWRTZXJ2aWNlLmdldERvd25sb2FkVXJsKHVybCwgZG9jdW1lbnQpXCI+e3sgZG9jdW1lbnQuZmlsZW5hbWUgfX08L2E+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1sLTEgbXItMVwiPlxuICAgICAgICAgICAgICAgICh7eyB0b01lZ2FPY3RldHMoZG9jdW1lbnQuZmlsZVNpemUpIH19XG4gICAgICAgICAgICAgICAgPGFiYnJcbiAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvZWhuLXVwbG9hZGVyLmFiYnItbWVnYW9jdGV0LXRpdGxlJyB8IGZyb21EaWN0aW9uYXJ5XG4gICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7eyAnZm9laG4tdXBsb2FkZXIuYWJici1tZWdhb2N0ZXQnIHwgZnJvbURpY3Rpb25hcnkgfX1cbiAgICAgICAgICAgICAgICA8L2FiYnI+XG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICpuZ0lmPVwiIXJlYWRvbmx5XCJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBpY29uLWJ1dHRvbiBkZWxldGUtdXBsb2FkZWRcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmVGaWxlKGRvY3VtZW50KVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGZvZWhuLWljb24tdGltZXNcbiAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvZWhuLXVwbG9hZGVyLmRlbGV0ZS1pY29uLXRpdGxlJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZnJvbURpY3Rpb25hcnk6IHsgZG9jTmFtZTogZG9jdW1lbnQuZmlsZW5hbWUgfVxuICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgID48L2ZvZWhuLWljb24tdGltZXM+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPHNtYWxsXG4gICAgICAgICAgICBjbGFzcz1cImZvcm0tdGV4dCB0ZXh0LXNlY29uZGFyeSB1cGxvYWRlZC1nbG9iYWwtaW5mb1wiXG4gICAgICAgICAgICAqbmdJZj1cInNob3dHbG9iYWxJbmZvcyhtb2RlbClcIlxuICAgICAgICAgICAgW2lubmVySFRNTF09XCJnZXRHbG9iYWxJbmZvcyhtb2RlbClcIlxuICAgICAgICA+PC9zbWFsbD5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhcmVmZXJlbmNlXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBwZW5kaW5nIG9mIHBlbmRpbmdGaWxlczsgdHJhY2tCeTogdHJhY2tCeVBlbmRpbmdcIlxuICAgICAgICAgICAgY2xhc3M9XCJmaWxlIGZpbGUtcGVuZGluZ1wiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxzcGFuPnt7IHBlbmRpbmcubmFtZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWwtMSBtci0xXCI+XG4gICAgICAgICAgICAgICAgKHt7IHRvTWVnYU9jdGV0cyhwZW5kaW5nLnNpemUpIH19XG4gICAgICAgICAgICAgICAgPGFiYnJcbiAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvZWhuLXVwbG9hZGVyLmFiYnItbWVnYW9jdGV0LXRpdGxlJyB8IGZyb21EaWN0aW9uYXJ5XG4gICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7eyAnZm9laG4tdXBsb2FkZXIuYWJici1tZWdhb2N0ZXQnIHwgZnJvbURpY3Rpb25hcnkgfX1cbiAgICAgICAgICAgICAgICA8L2FiYnI+XG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICpuZ0lmPVwiIXJlYWRvbmx5XCJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBpY29uLWJ1dHRvbiBkZWxldGUtcGVuZGluZ1wiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZUZpbGUocGVuZGluZylcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxmb2Vobi1pY29uLXRpbWVzXG4gICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICdmb2Vobi11cGxvYWRlci5kZWxldGUtaWNvbi10aXRsZSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGZyb21EaWN0aW9uYXJ5OiB7IGRvY05hbWU6IHBlbmRpbmcubmFtZSB9XG4gICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgPjwvZm9laG4taWNvbi10aW1lcz5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8c21hbGxcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS10ZXh0IHRleHQtc2Vjb25kYXJ5IHBlbmRpbmctZ2xvYmFsLWluZm9cIlxuICAgICAgICAgICAgKm5nSWY9XCJzaG93R2xvYmFsSW5mb3MocGVuZGluZ0ZpbGVzKVwiXG4gICAgICAgICAgICBbaW5uZXJIVE1MXT1cImdldEdsb2JhbEluZm9zKHBlbmRpbmdGaWxlcylcIlxuICAgICAgICA+PC9zbWFsbD5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjYW5BZGRNb3JlRmlsZXMoKVwiPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sLWZpbGUgYWN0dWFsLWlucHV0XCJcbiAgICAgICAgICAgIHR5cGU9XCJmaWxlXCJcbiAgICAgICAgICAgIFtuYW1lXT1cIm5hbWUgfHwgbGFiZWxcIlxuICAgICAgICAgICAgW211bHRpcGxlXT1cIm11bHRpcGxlXCJcbiAgICAgICAgICAgIFthdHRyLmFjY2VwdF09XCJcbiAgICAgICAgICAgICAgICBvdmVycmlkZUFjY2VwdGVkRXh0ZW5zaW9uc1xuICAgICAgICAgICAgICAgICAgICA/IG92ZXJyaWRlQWNjZXB0ZWRFeHRlbnNpb25zXG4gICAgICAgICAgICAgICAgICAgIDogdXBsb2FkZXJIZWxwZXIuYWNjZXB0XG4gICAgICAgICAgICAgICAgICAgID8gdXBsb2FkZXJIZWxwZXIuYWNjZXB0XG4gICAgICAgICAgICAgICAgICAgIDogbnVsbFxuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIChjaGFuZ2UpPVwib25GaWxlQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgI2lucHV0RmlsZVxuICAgICAgICAvPlxuXG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnc3Itb25seSc6ICFzaG93VXBsb2FkQnV0dG9uIH1cIlxuICAgICAgICAgICAgW2F0dHIuaWRdPVwiYnVpbGRDaGlsZElkKClcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1pbnZhbGlkXT1cImhhc0Vycm9yc1RvRGlzcGxheSgpIHx8IG51bGxcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCJidWlsZElkKCdFcnJvcnNDb250YWluZXInKVwiXG4gICAgICAgICAgICAoY2xpY2spPVwiaW5wdXRGaWxlLmNsaWNrKClcIlxuICAgICAgICAgICAgI2VudHJ5Q29tcG9uZW50XG4gICAgICAgID5cbiAgICAgICAgICAgIHt7IG11bHRpcGxlID8gY2hvb3NlQnV0dG9uTGFiZWxNdWx0aXBsZSA6IGNob29zZUJ1dHRvbkxhYmVsIH19XG4gICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgICpuZ0lmPVwiZHJhZ0FuZERyb3BcIlxuICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZHJvcGZpbGVcIlxuICAgICAgICAgICAgW2NsYXNzLmRyb3BmaWxlLWJvcmRlci10cmFuc3BhcmVudF09XCJzaG93RHJvcFpvbmVcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImlucHV0RmlsZS5jbGljaygpXCJcbiAgICAgICAgPlxuICAgICAgICAgICAge3sgbXVsdGlwbGUgPyBkcm9wWm9uZUxhYmVsTXVsdGlwbGUgOiBkcm9wWm9uZUxhYmVsIH19XG4gICAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuPC9kaXY+XG4iXX0=
|
|
215
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9laG4tbXVsdGktdXBsb2FkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXN0YXRpb25zLW5nL3NyYy9mb2Vobi11cGxvYWQvZm9laG4tbXVsdGktdXBsb2FkL2ZvZWhuLW11bHRpLXVwbG9hZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcmVzdGF0aW9ucy1uZy9zcmMvZm9laG4tdXBsb2FkL2ZvZWhuLW11bHRpLXVwbG9hZC9mb2Vobi1tdWx0aS11cGxvYWQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQVFoRixPQUFPLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHckUsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDdEYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUNBQXlDLENBQUM7Ozs7Ozs7Ozs7Ozs7QUFjOUUsTUFBTSxPQUFPLHlCQUNULFNBQVEsOEJBQW1EO0lBZ0IzRCxZQUNJLGtCQUFzQyxFQUN0QyxvQkFBMEMsRUFDaEMsc0JBQThDLEVBQzlDLG1CQUE2QyxFQUM3QyxpQkFBdUM7UUFFakQsS0FBSyxDQUFDLHNCQUFzQixFQUFFLG1CQUFtQixFQUFFLGlCQUFpQixDQUFDLENBQUM7UUFKNUQsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUF3QjtRQUM5Qyx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQTBCO1FBQzdDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBc0I7UUFsQnJELFFBQUcsR0FBRyxjQUFjLENBQUM7UUFNckIsdUNBQWtDLEdBQUcsSUFBSSxDQUFDO1FBZXRDLElBQUksQ0FBQyxvQkFBb0IsR0FB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QixDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFLENBQ25DLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxHQUFHLENBQUMsQ0FDckMsQ0FBQzthQUNMO1NBQ0o7YUFBTTtZQUNILE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUNuRCxJQUFJLG1CQUFtQixDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7Z0JBQ2hDLDhEQUE4RDtnQkFDOUQsbUJBQW1CLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUUsQ0FDckMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLEdBQUcsQ0FBQyxDQUNyQyxDQUFDO2FBQ0w7U0FDSjtRQUNELDhEQUE4RDtRQUM5RCxPQUFPLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzdCLENBQUM7O3VIQWxTUSx5QkFBeUI7MkdBQXpCLHlCQUF5Qix1S0FSdkI7UUFDUDtZQUNJLE9BQU8sRUFBRSxtQkFBbUI7WUFDNUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyx5QkFBeUIsQ0FBQztZQUN4RCxLQUFLLEVBQUUsSUFBSTtTQUNkO0tBQ0osaURDeEJMLHV2TEEyS0E7NEZEakphLHlCQUF5QjtrQkFackMsU0FBUzsrQkFDSSxvQkFBb0IsYUFHbkI7d0JBQ1A7NEJBQ0ksT0FBTyxFQUFFLG1CQUFtQjs0QkFDNUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsMEJBQTBCLENBQUM7NEJBQ3hELEtBQUssRUFBRSxJQUFJO3lCQUNkO3FCQUNKOzJQQU1ELEdBQUc7c0JBREYsS0FBSztnQkFJTixTQUFTO3NCQURSLEtBQUs7Z0JBSU4sa0NBQWtDO3NCQURqQyxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBmb3J3YXJkUmVmLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE11bHRpVXBsb2FkU2VydmljZSB9IGZyb20gJy4vbXVsdGktdXBsb2FkLnNlcnZpY2UnO1xuaW1wb3J0IHsgRm9ybUVycm9yIH0gZnJvbSAnLi4vLi4vZm9ybS1lcnJvcic7XG5pbXBvcnQgeyBEb2N1bWVudEVycm9yLCBEb2N1bWVudHNXaXRoRXJyb3JzIH0gZnJvbSAnLi9tdWx0aS11cGxvYWQudHlwZSc7XG5pbXBvcnQgeyBEb2N1bWVudFJlZmVyZW5jZSB9IGZyb20gJy4uL2RvY3VtZW50LXJlZmVyZW5jZSc7XG5pbXBvcnQgeyBQZW5kaW5nVXBsb2FkU2VydmljZSB9IGZyb20gJy4vcGVuZGluZy11cGxvYWQuc2VydmljZSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEFwcGxpY2F0aW9uSW5mb1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZGstYXBwaW5mby9hcHBsaWNhdGlvbi1pbmZvLnNlcnZpY2UnO1xuaW1wb3J0IHsgZmlsdGVyLCBtZXJnZU1hcCwgdGFwLCB0aHJvdHRsZVRpbWUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBGb2VobkNvbmZpcm1Nb2RhbFNlcnZpY2UgfSBmcm9tICcuLi8uLi9mb2Vobi1jb25maXJtLW1vZGFsL2ZvZWhuLWNvbmZpcm0tbW9kYWwuc2VydmljZSc7XG5pbXBvcnQgeyBTZGtEaWN0aW9uYXJ5U2VydmljZSB9IGZyb20gJy4uLy4uL3Nkay1kaWN0aW9uYXJ5L3Nkay1kaWN0aW9uYXJ5LnNlcnZpY2UnO1xuaW1wb3J0IHsgQWJzdHJhY3RGb2VoblVwbG9hZGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vYWJzdHJhY3QtZm9laG4tdXBsb2FkZXIuY29tcG9uZW50JztcbmltcG9ydCB7IEZvZWhuSW5wdXRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9mb2Vobi1pbnB1dC9mb2Vobi1pbnB1dC5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZvZWhuLW11bHRpLXVwbG9hZCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2ZvZWhuLW11bHRpLXVwbG9hZC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4uL2ZvZWhuLXVwbG9hZC5jb21wb25lbnQuY3NzJ10sXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IEZvZWhuSW5wdXRDb21wb25lbnQsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBGb2Vobk11bHRpVXBsb2FkQ29tcG9uZW50KSxcbiAgICAgICAgICAgIG11bHRpOiB0cnVlXG4gICAgICAgIH1cbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIEZvZWhuTXVsdGlVcGxvYWRDb21wb25lbnRcbiAgICBleHRlbmRzIEFic3RyYWN0Rm9laG5VcGxvYWRlckNvbXBvbmVudDxEb2N1bWVudFJlZmVyZW5jZVtdPlxuICAgIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAgIEBJbnB1dCgpXG4gICAgdXJsID0gJ2FwaS9kb2N1bWVudCc7XG5cbiAgICBASW5wdXQoKVxuICAgIHJlZmVyZW5jZTogc3RyaW5nO1xuXG4gICAgQElucHV0KClcbiAgICBzaG91bGREaXNwbGF5RmlsZVNhdmVkQ29uZmlybWF0aW9uID0gdHJ1ZTtcblxuICAgIG11bHRpVXBsb2FkU2VydmljZTogTXVsdGlVcGxvYWRTZXJ2aWNlO1xuICAgIHBlbmRpbmdVcGxvYWRTZXJ2aWNlOiBQZW5kaW5nVXBsb2FkU2VydmljZTtcblxuICAgIHByaXZhdGUgcGVuZGluZ1VwbG9hZGVkRXJyb3JzU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgbXVsdGlVcGxvYWRTZXJ2aWNlOiBNdWx0aVVwbG9hZFNlcnZpY2UsXG4gICAgICAgIHBlbmRpbmdVcGxvYWRTZXJ2aWNlOiBQZW5kaW5nVXBsb2FkU2VydmljZSxcbiAgICAgICAgcHJvdGVjdGVkIGFwcGxpY2F0aW9uSW5mb1NlcnZpY2U6IEFwcGxpY2F0aW9uSW5mb1NlcnZpY2UsXG4gICAgICAgIHByb3RlY3RlZCBjb25maXJtTW9kYWxTZXJ2aWNlOiBGb2VobkNvbmZpcm1Nb2RhbFNlcnZpY2UsXG4gICAgICAgIHByb3RlY3RlZCBkaWN0aW9uYXJ5U2VydmljZTogU2RrRGljdGlvbmFyeVNlcnZpY2VcbiAgICApIHtcbiAgICAgICAgc3VwZXIoYXBwbGljYXRpb25JbmZvU2VydmljZSwgY29uZmlybU1vZGFsU2VydmljZSwgZGljdGlvbmFyeVNlcnZpY2UpO1xuICAgICAgICB0aGlzLnBlbmRpbmdVcGxvYWRTZXJ2aWNlID0gcGVuZGluZ1VwbG9hZFNlcnZpY2U7XG4gICAgICAgIHRoaXMubXVsdGlVcGxvYWRTZXJ2aWNlID0gbXVsdGlVcGxvYWRTZXJ2aWNlO1xuICAgIH1cblxuICAgIGdldCBwZW5kaW5nRmlsZXMoKTogRmlsZVtdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGVuZGluZ1VwbG9hZFNlcnZpY2UuZ2V0UGVuZGluZ0ZpbGVzKHRoaXMubmFtZSk7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XG5cbiAgICAgICAgdGhpcy5wZW5kaW5nVXBsb2FkZWRFcnJvcnNTdWJzY3JpcHRpb24gPSB0aGlzLnBlbmRpbmdVcGxvYWRTZXJ2aWNlLnBlbmRpbmdVcGxvYWRlZEVycm9ycy5zdWJzY3JpYmUoXG4gICAgICAgICAgICAocmVzcG9uc2U6IERvY3VtZW50c1dpdGhFcnJvcnMpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmRpc3BsYXlQZW5kaW5nVXBsb2FkZWRFcnJvcnNGcm9tU2VydmVyQnlGb3JtS2V5KFxuICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5lcnJvcnMsXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubmFtZVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG5cbiAgICAgICAgLy8gQWRkIGZpbGVzIGxvZ2ljXG4gICAgICAgIHRoaXMudXBsb2FkRmlsZXNTdWJzY3JpcHRpb24gPSB0aGlzLnVwbG9hZEZpbGVzU3ViamVjdFxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgZmlsdGVyKGZpbGVzID0+ICEhZmlsZXMpLFxuICAgICAgICAgICAgICAgIC8vIE9ubHkgb25lIGNhbGwgZXZlcnkgMzAwbXMgdG8gc3RvcCBjb25jdXJyZW50IGFjY2Vzc1xuICAgICAgICAgICAgICAgIHRocm90dGxlVGltZSgzMDApLFxuICAgICAgICAgICAgICAgIC8vIE9ubHkgb25lIGNvbmN1cnJlbnQgY2FsbCBhdCB0aGUgdGltZVxuICAgICAgICAgICAgICAgIG1lcmdlTWFwKFxuICAgICAgICAgICAgICAgICAgICBmaWxlcyA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tdWx0aVVwbG9hZFNlcnZpY2UudXBsb2FkRG9jdW1lbnRzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXJsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxhYmVsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMua2V5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubXVsdGlwbGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50TGFuZ3VhZ2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zaG91bGREaXNwbGF5RmlsZVNhdmVkQ29uZmlybWF0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZShcbiAgICAgICAgICAgICAgICAoeyBkb2N1bWVudHMsIGVycm9ycyB9KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGlzcGxheVJlc3VsdEZyb21TZXJ2ZXIoZG9jdW1lbnRzLCBlcnJvcnMpO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgKGVycm9yOiB1bmtub3duKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGVycm9yczogRm9ybUVycm9yW10gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBzdGF0dXMgfTogYW55ID0gZXJyb3I7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXBsb2FkZXJIZWxwZXIuYWRkQ3VzdG9tRXJyb3JPckRlZmF1bHQoXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMsXG4gICAgICAgICAgICAgICAgICAgICAgICBgJHtzdGF0dXN9YCxcbiAgICAgICAgICAgICAgICAgICAgICAgICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jdXN0b21FcnJvcnMsXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm92ZXJyaWRlTWF4U2l6ZUluTW8sXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm92ZXJyaWRlQWNjZXB0ZWRFeHRlbnNpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vdmVycmlkZU1heEZpbGVOYW1lTGVuZ3RoLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vdmVycmlkZUlsbGVnYWxDaGFyYWN0ZXJzXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVmcmVzaEVycm9ycyhbZXJyb3JzLCB0cnVlXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKTtcblxuICAgICAgICAvLyBEZWxldGUgZG9jdW1lbnQgbG9naWNcbiAgICAgICAgdGhpcy5kZWxldGVEb2N1bWVudFN1YnNjcmlwdGlvbiA9IHRoaXMuZGVsZXRlRG9jdW1lbnRTdWJqZWN0XG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBmaWx0ZXIoZG9jdW1lbnQgPT4gISFkb2N1bWVudCksXG4gICAgICAgICAgICAgICAgLy8gT25seSBvbmUgY2FsbCBldmVyeSAzMDAgbXMgdG8gc3RvcCBjb25jdXJyZW50IGFjY2Vzc1xuICAgICAgICAgICAgICAgIHRocm90dGxlVGltZSgzMDApLFxuICAgICAgICAgICAgICAgIC8vIE9ubHkgb25lIGNvbmN1cnJlbnQgY2FsbCBhdCB0aGUgdGltZVxuICAgICAgICAgICAgICAgIG1lcmdlTWFwKFxuICAgICAgICAgICAgICAgICAgICBkb2N1bWVudCA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tdWx0aVVwbG9hZFNlcnZpY2UuZGVsZXRlRG9jdW1lbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51cmwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIC8vIFNpZGUgZWZmZWN0IG9uY2UgdGhlIGRvY3VtZW50IGhhcyBiZWVuIGRlbGV0ZWQuXG4gICAgICAgICAgICAgICAgdGFwKGRvY3VtZW50ID0+IHRoaXMucmVtb3ZlRG9jdW1lbnRGcm9tTW9kZWwoZG9jdW1lbnQpKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xuXG4gICAgICAgIGlmICghIXRoaXMucGVuZGluZ1VwbG9hZGVkRXJyb3JzU3Vic2NyaXB0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLnBlbmRpbmdVcGxvYWRlZEVycm9yc1N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdHJhY2tCeVBlbmRpbmcocGVuZGluZzogRmlsZSk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiBwZW5kaW5nLmxhc3RNb2RpZmllZDtcbiAgICB9XG5cbiAgICBjYW5BZGRNb3JlRmlsZXMoKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICh0aGlzLnJlYWRvbmx5KSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5tb2RlbCAmJiAhIXRoaXMubW9kZWwubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gIXRoaXMucGVuZGluZ1VwbG9hZFNlcnZpY2UuaGFzUGVuZGluZ0ZpbGVzKHRoaXMubmFtZSk7XG4gICAgfVxuXG4gICAgb25GaWxlQ2hhbmdlKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgICAgICAvLyBQUkVTVEFLSVQtMzA5OiBNYXJrIGFzIHByaXN0aW5lIHNvIGVycm9ycyBjYW4gYmUgc2hvd24gZGlyZWN0bHkgdG8gdXNlciB3aGVuIHVwbG9hZGluZyBmaWxlXG4gICAgICAgIHRoaXMubWFya0FzUHJpc3RpbmUoKTtcblxuICAgICAgICBjb25zdCB0YXJnZXQ6IEhUTUxJbnB1dEVsZW1lbnQgPSBldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudDtcbiAgICAgICAgdGhpcy5wb3B1bGF0ZUZpbGVJdGVtTGlzdCh0YXJnZXQuZmlsZXMpO1xuICAgICAgICB0YXJnZXQudmFsdWUgPSBudWxsOyAvLyByZXNldCBoaWRkZW4gZmlsZSBpbnB1dCB2YWx1ZXNcbiAgICB9XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIG9uRHJvcChldmVudDogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMudXBsb2FkZXJIZWxwZXIucHJldmVudEFuZFN0b3AoZXZlbnQpO1xuICAgICAgICBpZiAodGhpcy5kcmFnQW5kRHJvcCkge1xuICAgICAgICAgICAgY29uc3QgZmlsZUxpc3Q6IEZpbGVMaXN0ID0gdGhpcy51cGxvYWRlckhlbHBlci5nZXRUcmFuc2ZlcihldmVudCk7XG4gICAgICAgICAgICBpZiAoZmlsZUxpc3QpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnBvcHVsYXRlRmlsZUl0ZW1MaXN0KGZpbGVMaXN0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuc2hvd0Ryb3Bab25lID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIHByb3RlY3RlZCByZW1vdmVGaWxlT25Db25maXJtYXRpb24oZG9jdW1lbnQ6IGFueSk6IHZvaWQge1xuICAgICAgICBpZiAoISF0aGlzLnJlZmVyZW5jZSkge1xuICAgICAgICAgICAgc3VwZXIucmVtb3ZlRmlsZU9uQ29uZmlybWF0aW9uKGRvY3VtZW50KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIFRoZSBkb2N1bWVudCBoYXNuJ3QgYmVlbiB1cGxvYWRlZC5cbiAgICAgICAgICAgIHRoaXMucGVuZGluZ1VwbG9hZFNlcnZpY2UucmVtb3ZlUGVuZGluZ0ZpbGUoZG9jdW1lbnQsIHRoaXMubmFtZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHBvcHVsYXRlRmlsZUl0ZW1MaXN0KGZpbGVMaXN0OiBGaWxlTGlzdCk6IHZvaWQge1xuICAgICAgICBsZXQgZmlsZXMgPSBBcnJheS5mcm9tKGZpbGVMaXN0KTtcblxuICAgICAgICBpZiAoIWZpbGVzLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gV2hlbiBkcmFnL2Ryb3AgYW5kIGFza2VkIGZvciBzaW5nbGUgdXBsb2FkLCB3ZSBlbnN1cmUgd2Ugc3RvcmUgb25seSBvbmUgZmlsZSBmb3IgdXBsb2FkXG4gICAgICAgIGlmICh0aGlzLmRyYWdBbmREcm9wICYmICF0aGlzLm11bHRpcGxlKSB7XG4gICAgICAgICAgICBmaWxlcyA9IHRoaXMubWFuYWdlU2luZ2xlRmlsZShmaWxlcyk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBEaXNwbGF5IGxvY2FsIGVycm9ycyBhbmQgc3RvcCBwcm9jZXNzaW5nXG4gICAgICAgIGNvbnN0IGZpbGVzRXJyb3JzID0gdGhpcy5kaXNwbGF5TG9jYWxFcnJvcnMoZmlsZXMpO1xuICAgICAgICBpZiAoZmlsZXNFcnJvcnMubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBJbml0aWFsaXplIG1vZGVsIGlmIGVtcHR5XG4gICAgICAgIGlmICghdGhpcy5tb2RlbCB8fCAhdGhpcy5tb2RlbC5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMubW9kZWwgPSBbXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghIXRoaXMucmVmZXJlbmNlKSB7XG4gICAgICAgICAgICAvLyBXaGVuIHdlIGhhdmUgYSByZWZlcmVuY2UsIHdlIHNlbmQgZmlsZXMgdG8gc2VydmVyXG4gICAgICAgICAgICB0aGlzLnVwbG9hZEZpbGVzU3ViamVjdC5uZXh0KGZpbGVzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIFBSRVNUQUtJVC0zMDk6IFNpbXVsYXRlIHVzZXIgaW50ZXJhY3Rpb24gd2l0aCBjb21wb25lbnRcbiAgICAgICAgICAgIC8vIG9ubHkgd2hlbiBubyBlcnJvciBzbyBpc1ByaXN0aW5lIGlzIHNldCB0byBmYWxzZSBmb3IgdmFsaWRhdGlvbiBwdXJwb3NlXG4gICAgICAgICAgICB0aGlzLm1hcmtBc0RpcnR5KCk7XG5cbiAgICAgICAgICAgIC8vIE90aGVyd2lzZSwgd2Ugc3RvcmUgZmlsZXMgaW4gcGVuZGluZyBzdG9yYWdlXG4gICAgICAgICAgICB0aGlzLnBlbmRpbmdVcGxvYWRTZXJ2aWNlLmFkZFBlbmRpbmdGaWxlcyhcbiAgICAgICAgICAgICAgICB0aGlzLnVybCxcbiAgICAgICAgICAgICAgICB0aGlzLm5hbWUsXG4gICAgICAgICAgICAgICAgdGhpcy5sYWJlbCxcbiAgICAgICAgICAgICAgICBmaWxlcyxcbiAgICAgICAgICAgICAgICB0aGlzLmtleSxcbiAgICAgICAgICAgICAgICB0aGlzLm11bHRpcGxlLFxuICAgICAgICAgICAgICAgIHRoaXMuc2hvdWxkRGlzcGxheUZpbGVTYXZlZENvbmZpcm1hdGlvblxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZGlzcGxheVBlbmRpbmdVcGxvYWRlZEVycm9yc0Zyb21TZXJ2ZXJCeUZvcm1LZXkoXG4gICAgICAgIGVycm9yczogRG9jdW1lbnRFcnJvcltdLFxuICAgICAgICBmb3JtS2V5OiBzdHJpbmdcbiAgICApOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZXJyb3JzQnlGb3JtS2V5ID0gZXJyb3JzLmZpbHRlcihcbiAgICAgICAgICAgIChlcnJvcjogRG9jdW1lbnRFcnJvcikgPT4gZXJyb3IuZm9ybUtleSA9PT0gZm9ybUtleVxuICAgICAgICApO1xuICAgICAgICB0aGlzLmRpc3BsYXlFcnJvcnNGcm9tU2VydmVyKGVycm9yc0J5Rm9ybUtleSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBkaXNwbGF5UmVzdWx0RnJvbVNlcnZlcihcbiAgICAgICAgZG9jdW1lbnRzOiBEb2N1bWVudFJlZmVyZW5jZVtdLFxuICAgICAgICBlcnJvcnM6IERvY3VtZW50RXJyb3JbXVxuICAgICk6IHZvaWQge1xuICAgICAgICB0aGlzLmRpc3BsYXlFcnJvcnNGcm9tU2VydmVyKGVycm9ycyk7XG4gICAgICAgIHRoaXMubW9kZWwgPSBbLi4udGhpcy5tb2RlbCwgLi4uKGRvY3VtZW50cyB8fCBbXSldO1xuICAgICAgICB0aGlzLnRyaWdnZXJVc2VySW5wdXQodGhpcy5tb2RlbCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZW1vdmVEb2N1bWVudEZyb21Nb2RlbChkb2N1bWVudDogRG9jdW1lbnRSZWZlcmVuY2UpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLm1vZGVsLmluZGV4T2YoZG9jdW1lbnQpO1xuICAgICAgICBpZiAoaW5kZXggPiAtMSkge1xuICAgICAgICAgICAgdGhpcy5tb2RlbC5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICAgICAgdGhpcy5tb2RlbCA9IFsuLi50aGlzLm1vZGVsXTtcbiAgICAgICAgICAgIHRoaXMudHJpZ2dlclVzZXJJbnB1dCh0aGlzLm1vZGVsKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZGlzcGxheUVycm9yc0Zyb21TZXJ2ZXIoZXJyb3JzOiBEb2N1bWVudEVycm9yW10pOiB2b2lkIHtcbiAgICAgICAgaWYgKCFlcnJvcnMgfHwgIWVycm9ycy5sZW5ndGgpIHtcbiAgICAgICAgICAgIC8vIFBSRVNUQUtJVC0zMDk6IFNpbXVsYXRlIHVzZXIgaW50ZXJhY3Rpb24gd2l0aCBjb21wb25lbnRcbiAgICAgICAgICAgIC8vIG9ubHkgd2hlbiBubyBlcnJvciBzbyBpc1ByaXN0aW5lIGlzIHNldCB0byBmYWxzZSBmb3IgdmFsaWRhdGlvbiBwdXJwb3NlXG4gICAgICAgICAgICB0aGlzLm1hcmtBc0RpcnR5KCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBuZXdFcnJvcnM6IEZvcm1FcnJvcltdID0gW107XG4gICAgICAgIGVycm9ycy5mb3JFYWNoKGVycm9yID0+XG4gICAgICAgICAgICB0aGlzLnVwbG9hZGVySGVscGVyLmFkZEN1c3RvbUVycm9yT3JEZWZhdWx0KFxuICAgICAgICAgICAgICAgIHRoaXMubmFtZSxcbiAgICAgICAgICAgICAgICBuZXdFcnJvcnMsXG4gICAgICAgICAgICAgICAgYCR7ZXJyb3IuZXJyb3JDb2RlfWAsXG4gICAgICAgICAgICAgICAgZXJyb3IubGFiZWwsXG4gICAgICAgICAgICAgICAgdGhpcy5jdXN0b21FcnJvcnMsXG4gICAgICAgICAgICAgICAgdGhpcy5vdmVycmlkZU1heFNpemVJbk1vLFxuICAgICAgICAgICAgICAgIHRoaXMub3ZlcnJpZGVBY2NlcHRlZEV4dGVuc2lvbnMsXG4gICAgICAgICAgICAgICAgdGhpcy5vdmVycmlkZU1heEZpbGVOYW1lTGVuZ3RoLFxuICAgICAgICAgICAgICAgIHRoaXMub3ZlcnJpZGVJbGxlZ2FsQ2hhcmFjdGVyc1xuICAgICAgICAgICAgKVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMucmVmcmVzaEVycm9ycyhbbmV3RXJyb3JzLCB0cnVlXSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBtYW5hZ2VTaW5nbGVGaWxlKGZpbGVzOiBGaWxlW10pOiBGaWxlW10ge1xuICAgICAgICAvLyBFZGdlIGJyb3dzZXIgbGV0cyB5b3UgZHJvcCBmaWxlcyBmcm9tIGRpYWxvZyBib3ggd2hlbiBzZWxlY3RpbmcgYSBmaWxlLlxuICAgICAgICAvLyBXZSBuZWVkIHRvIG1ha2Ugc3VyZSB3ZSBvbmx5IGtlZXAgbGFzdCBzZWxlY3RlZCBmaWxlIGZyb20gdXNlclxuICAgICAgICBpZiAoISF0aGlzLnJlZmVyZW5jZSkge1xuICAgICAgICAgICAgaWYgKHRoaXMubW9kZWwgJiYgdGhpcy5tb2RlbC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY3VycmVudE1vZGVsRmlsZXMgPSBbLi4udGhpcy5tb2RlbF07XG4gICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICAgICAgICAgICAgICBjdXJyZW50TW9kZWxGaWxlcy5mb3JFYWNoKChkb2M6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW1vdmVGaWxlT25Db25maXJtYXRpb24oZG9jKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50UGVuZGluZ0ZpbGVzID0gWy4uLnRoaXMucGVuZGluZ0ZpbGVzXTtcbiAgICAgICAgICAgIGlmIChjdXJyZW50UGVuZGluZ0ZpbGVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgICAgICAgICAgIGN1cnJlbnRQZW5kaW5nRmlsZXMuZm9yRWFjaCgoZG9jOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVtb3ZlRmlsZU9uQ29uZmlybWF0aW9uKGRvYylcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIFRoZW4gd2UgZW5zdXJlIHdlIHRha2Ugb25seSBvbmUgZmlsZSBmcm9tIGN1cnJlbnQgc2VsZWN0aW9uXG4gICAgICAgIHJldHVybiBmaWxlcy5zbGljZSgwLCAxKTtcbiAgICB9XG59XG4iLCI8ZGl2XG4gICAgY2xhc3M9XCJmb3JtLWdyb3VwXCJcbiAgICBbY2xhc3MuaGFzLWRhbmdlcl09XCJoYXNFcnJvcnNUb0Rpc3BsYXkoKVwiXG4gICAgW2NsYXNzLnZkLWZvcm0tZ3JvdXAtZGFuZ2VyXT1cImhhc0Vycm9yc1RvRGlzcGxheSgpXCJcbiAgICBbY2xhc3MuZHJvcC16b25lLWhpZ2hsaWdodF09XCJzaG93RHJvcFpvbmVcIlxuICAgIFthdHRyLmlkXT1cImJ1aWxkSWQoJ0NvbnRhaW5lcicpXCJcbiAgICB0YWJpbmRleD1cIi0xXCJcbiAgICAoZHJvcCk9XCJvbkRyb3AoJGV2ZW50KVwiXG4gICAgKGRyYWdlbnRlcik9XCJvbkRyYWdlbnRlcigkZXZlbnQpXCJcbiAgICAoZHJhZ2xlYXZlKT1cIm9uRHJhZ2xlYXZlKCRldmVudClcIlxuICAgIChkcmFnb3Zlcik9XCJvbkRyYWdvdmVyKCRldmVudClcIlxuICAgICNmYWxsQmFja1RyaWdnZXJcbj5cbiAgICA8bGFiZWxcbiAgICAgICAgW2F0dHIuZm9yXT1cImJ1aWxkQ2hpbGRJZCgpXCJcbiAgICAgICAgKm5nSWY9XCIhIWxhYmVsXCJcbiAgICAgICAgW25nQ2xhc3NdPVwiaXNMYWJlbFNyT25seSA/ICdzci1vbmx5JyA6IGxhYmVsU3R5bGVNb2RpZmllclwiXG4gICAgPlxuICAgICAgICA8c3BhbiBbaW5uZXJIVE1MXT1cImxhYmVsXCI+PC9zcGFuPlxuICAgICAgICA8c3BhblxuICAgICAgICAgICAgKm5nSWY9XCIhcmVxdWlyZWQgJiYgIWhpZGVOb3RSZXF1aXJlZEV4dHJhTGFiZWxcIlxuICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgPlxuICAgICAgICAgICAge3sgJ2ZvZWhuLWlucHV0Lm9wdGlvbmFsJyB8IGZyb21EaWN0aW9uYXJ5IH19XG4gICAgICAgIDwvc3Bhbj5cbiAgICA8L2xhYmVsPlxuXG4gICAgPGZvZWhuLXZhbGlkYXRpb24tYWxlcnRzXG4gICAgICAgIFtjb21wb25lbnRdPVwidGhpc1wiXG4gICAgICAgIFtzaG91bGRFcnJvcnNCZUxpdmVdPVwiaGFzTGl2ZVVwbG9hZEVycm9ycygpXCJcbiAgICA+PC9mb2Vobi12YWxpZGF0aW9uLWFsZXJ0cz5cblxuICAgIDxzbWFsbFxuICAgICAgICAqbmdJZj1cImhlbHBUZXh0XCJcbiAgICAgICAgW2F0dHIuaWRdPVwiYnVpbGRDaGlsZElkKCkgKyAnSGVscCdcIlxuICAgICAgICBjbGFzcz1cImZvcm0tdGV4dCB0ZXh0LXNlY29uZGFyeVwiXG4gICAgICAgIFtpbm5lckhUTUxdPVwiaGVscFRleHRcIlxuICAgID48L3NtYWxsPlxuXG4gICAgPCEtLSBQUkVTVEFLSVQtMzA5OiBGYWtlIGlucHV0IHdpdGggTmdNb2RlbCB0byBiZSByZWdpc3RlcmVkIGludG8gRm9ybSBjb250cm9scyAtLT5cbiAgICA8aW5wdXQgdHlwZT1cImhpZGRlblwiIFtuYW1lXT1cIm5hbWUgfHwgbGFiZWxcIiBbbmdNb2RlbF09XCJtb2RlbFwiIC8+XG5cbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicmVmZXJlbmNlXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBkb2N1bWVudCBvZiBtb2RlbDsgdHJhY2tCeTogdHJhY2tCeURvY3VtZW50XCJcbiAgICAgICAgICAgIGNsYXNzPVwiZmlsZSBmaWxlLXVwbG9hZGVkXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPCEtLSBwcmV0dGllci1pZ25vcmUgLS0+XG4gICAgICAgICAgICA8YSBbaHJlZl09XCJtdWx0aVVwbG9hZFNlcnZpY2UuZ2V0RG93bmxvYWRVcmwodXJsLCBkb2N1bWVudClcIj57eyBkb2N1bWVudC5maWxlbmFtZSB9fTwvYT5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWwtMSBtci0xXCI+XG4gICAgICAgICAgICAgICAgKHt7IHRvTWVnYU9jdGV0cyhkb2N1bWVudC5maWxlU2l6ZSkgfX1cbiAgICAgICAgICAgICAgICA8YWJiclxuICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAnZm9laG4tdXBsb2FkZXIuYWJici1tZWdhb2N0ZXQtdGl0bGUnIHwgZnJvbURpY3Rpb25hcnlcbiAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHt7ICdmb2Vobi11cGxvYWRlci5hYmJyLW1lZ2FvY3RldCcgfCBmcm9tRGljdGlvbmFyeSB9fVxuICAgICAgICAgICAgICAgIDwvYWJicj5cbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgKm5nSWY9XCIhcmVhZG9ubHlcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGljb24tYnV0dG9uIGRlbGV0ZS11cGxvYWRlZFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZUZpbGUoZG9jdW1lbnQpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8Zm9laG4taWNvbi10aW1lc1xuICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAnZm9laG4tdXBsb2FkZXIuZGVsZXRlLWljb24tdGl0bGUnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBmcm9tRGljdGlvbmFyeTogeyBkb2NOYW1lOiBkb2N1bWVudC5maWxlbmFtZSB9XG4gICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgPjwvZm9laG4taWNvbi10aW1lcz5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8c21hbGxcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS10ZXh0IHRleHQtc2Vjb25kYXJ5IHVwbG9hZGVkLWdsb2JhbC1pbmZvXCJcbiAgICAgICAgICAgICpuZ0lmPVwic2hvd0dsb2JhbEluZm9zKG1vZGVsKVwiXG4gICAgICAgICAgICBbaW5uZXJIVE1MXT1cImdldEdsb2JhbEluZm9zKG1vZGVsKVwiXG4gICAgICAgID48L3NtYWxsPlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFyZWZlcmVuY2VcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IHBlbmRpbmcgb2YgcGVuZGluZ0ZpbGVzOyB0cmFja0J5OiB0cmFja0J5UGVuZGluZ1wiXG4gICAgICAgICAgICBjbGFzcz1cImZpbGUgZmlsZS1wZW5kaW5nXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPHNwYW4+e3sgcGVuZGluZy5uYW1lIH19PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtbC0xIG1yLTFcIj5cbiAgICAgICAgICAgICAgICAoe3sgdG9NZWdhT2N0ZXRzKHBlbmRpbmcuc2l6ZSkgfX1cbiAgICAgICAgICAgICAgICA8YWJiclxuICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAnZm9laG4tdXBsb2FkZXIuYWJici1tZWdhb2N0ZXQtdGl0bGUnIHwgZnJvbURpY3Rpb25hcnlcbiAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHt7ICdmb2Vobi11cGxvYWRlci5hYmJyLW1lZ2FvY3RldCcgfCBmcm9tRGljdGlvbmFyeSB9fVxuICAgICAgICAgICAgICAgIDwvYWJicj5cbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgKm5nSWY9XCIhcmVhZG9ubHlcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGljb24tYnV0dG9uIGRlbGV0ZS1wZW5kaW5nXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlRmlsZShwZW5kaW5nKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGZvZWhuLWljb24tdGltZXNcbiAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvZWhuLXVwbG9hZGVyLmRlbGV0ZS1pY29uLXRpdGxlJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZnJvbURpY3Rpb25hcnk6IHsgZG9jTmFtZTogcGVuZGluZy5uYW1lIH1cbiAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICA+PC9mb2Vobi1pY29uLXRpbWVzPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxzbWFsbFxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLXRleHQgdGV4dC1zZWNvbmRhcnkgcGVuZGluZy1nbG9iYWwtaW5mb1wiXG4gICAgICAgICAgICAqbmdJZj1cInNob3dHbG9iYWxJbmZvcyhwZW5kaW5nRmlsZXMpXCJcbiAgICAgICAgICAgIFtpbm5lckhUTUxdPVwiZ2V0R2xvYmFsSW5mb3MocGVuZGluZ0ZpbGVzKVwiXG4gICAgICAgID48L3NtYWxsPlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNhbkFkZE1vcmVGaWxlcygpXCI+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wtZmlsZSBhY3R1YWwtaW5wdXRcIlxuICAgICAgICAgICAgdHlwZT1cImZpbGVcIlxuICAgICAgICAgICAgW25hbWVdPVwibmFtZSB8fCBsYWJlbFwiXG4gICAgICAgICAgICBbbXVsdGlwbGVdPVwibXVsdGlwbGVcIlxuICAgICAgICAgICAgW2F0dHIuYWNjZXB0XT1cIlxuICAgICAgICAgICAgICAgIG92ZXJyaWRlQWNjZXB0ZWRFeHRlbnNpb25zXG4gICAgICAgICAgICAgICAgICAgID8gb3ZlcnJpZGVBY2NlcHRlZEV4dGVuc2lvbnNcbiAgICAgICAgICAgICAgICAgICAgOiB1cGxvYWRlckhlbHBlci5hY2NlcHRcbiAgICAgICAgICAgICAgICAgICAgPyB1cGxvYWRlckhlbHBlci5hY2NlcHRcbiAgICAgICAgICAgICAgICAgICAgOiBudWxsXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgKGNoYW5nZSk9XCJvbkZpbGVDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICAjaW5wdXRGaWxlXG4gICAgICAgIC8+XG5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdzci1vbmx5JzogIXNob3dVcGxvYWRCdXR0b24gfVwiXG4gICAgICAgICAgICBbYXR0ci5pZF09XCJidWlsZENoaWxkSWQoKVwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWludmFsaWRdPVwiaGFzRXJyb3JzVG9EaXNwbGF5KCkgfHwgbnVsbFwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cImJ1aWxkSWQoJ0Vycm9yc0NvbnRhaW5lcicpXCJcbiAgICAgICAgICAgIChjbGljayk9XCJpbnB1dEZpbGUuY2xpY2soKVwiXG4gICAgICAgICAgICAjZW50cnlDb21wb25lbnRcbiAgICAgICAgPlxuICAgICAgICAgICAge3sgbXVsdGlwbGUgPyBjaG9vc2VCdXR0b25MYWJlbE11bHRpcGxlIDogY2hvb3NlQnV0dG9uTGFiZWwgfX1cbiAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgKm5nSWY9XCJkcmFnQW5kRHJvcFwiXG4gICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAgICAgY2xhc3M9XCJkcm9wZmlsZVwiXG4gICAgICAgICAgICBbY2xhc3MuZHJvcGZpbGUtYm9yZGVyLXRyYW5zcGFyZW50XT1cInNob3dEcm9wWm9uZVwiXG4gICAgICAgICAgICAoY2xpY2spPVwiaW5wdXRGaWxlLmNsaWNrKClcIlxuICAgICAgICA+XG4gICAgICAgICAgICB7eyBtdWx0aXBsZSA/IGRyb3Bab25lTGFiZWxNdWx0aXBsZSA6IGRyb3Bab25lTGFiZWwgfX1cbiAgICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8Zm9laG4tdXBsb2FkLXByb2dyZXNzLWJhclxuICAgICAgICAqbmdJZj1cInJlZmVyZW5jZVwiXG4gICAgICAgIFtwcm9ncmVzc0JhclRyaWdnZXJIdG1sRWxlbWVudF09XCJcbiAgICAgICAgICAgIGlucHV0RWxlbWVudD8ubmF0aXZlRWxlbWVudCB8fCBmYWxsQmFja1RyaWdnZXJcbiAgICAgICAgXCJcbiAgICA+PC9mb2Vobi11cGxvYWQtcHJvZ3Jlc3MtYmFyPlxuPC9kaXY+XG4iXX0=
|
|
@@ -5,6 +5,7 @@ import { FoehnValidationAlertsModule } from '../../foehn-validation-alerts/foehn
|
|
|
5
5
|
import { FoehnMultiUploadComponent } from './foehn-multi-upload.component';
|
|
6
6
|
import { SdkDictionaryModule } from '../../sdk-dictionary/sdk-dictionary.module';
|
|
7
7
|
import { FormsModule } from '@angular/forms';
|
|
8
|
+
import { FoehnUploadProgressBarModule } from '../foehn-upload-progress-bar/foehn-upload-progress-bar.module';
|
|
8
9
|
import * as i0 from "@angular/core";
|
|
9
10
|
export class FoehnMultiUploadModule {
|
|
10
11
|
}
|
|
@@ -13,13 +14,15 @@ FoehnMultiUploadModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0",
|
|
|
13
14
|
FoehnIconsModule,
|
|
14
15
|
FoehnValidationAlertsModule,
|
|
15
16
|
SdkDictionaryModule,
|
|
16
|
-
FormsModule
|
|
17
|
+
FormsModule,
|
|
18
|
+
FoehnUploadProgressBarModule], exports: [FoehnMultiUploadComponent] });
|
|
17
19
|
FoehnMultiUploadModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: FoehnMultiUploadModule, imports: [[
|
|
18
20
|
CommonModule,
|
|
19
21
|
FoehnIconsModule,
|
|
20
22
|
FoehnValidationAlertsModule,
|
|
21
23
|
SdkDictionaryModule,
|
|
22
|
-
FormsModule
|
|
24
|
+
FormsModule,
|
|
25
|
+
FoehnUploadProgressBarModule
|
|
23
26
|
]] });
|
|
24
27
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: FoehnMultiUploadModule, decorators: [{
|
|
25
28
|
type: NgModule,
|
|
@@ -29,10 +32,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
29
32
|
FoehnIconsModule,
|
|
30
33
|
FoehnValidationAlertsModule,
|
|
31
34
|
SdkDictionaryModule,
|
|
32
|
-
FormsModule
|
|
35
|
+
FormsModule,
|
|
36
|
+
FoehnUploadProgressBarModule
|
|
33
37
|
],
|
|
34
38
|
declarations: [FoehnMultiUploadComponent],
|
|
35
39
|
exports: [FoehnMultiUploadComponent]
|
|
36
40
|
}]
|
|
37
41
|
}] });
|
|
38
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
42
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9laG4tbXVsdGktdXBsb2FkLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXN0YXRpb25zLW5nL3NyYy9mb2Vobi11cGxvYWQvZm9laG4tbXVsdGktdXBsb2FkL2ZvZWhuLW11bHRpLXVwbG9hZC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDeEUsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sOERBQThELENBQUM7QUFDM0csT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDM0UsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDakYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLCtEQUErRCxDQUFDOztBQWM3RyxNQUFNLE9BQU8sc0JBQXNCOztvSEFBdEIsc0JBQXNCO3FIQUF0QixzQkFBc0IsaUJBSGhCLHlCQUF5QixhQVBwQyxZQUFZO1FBQ1osZ0JBQWdCO1FBQ2hCLDJCQUEyQjtRQUMzQixtQkFBbUI7UUFDbkIsV0FBVztRQUNYLDRCQUE0QixhQUd0Qix5QkFBeUI7cUhBRTFCLHNCQUFzQixZQVh0QjtZQUNMLFlBQVk7WUFDWixnQkFBZ0I7WUFDaEIsMkJBQTJCO1lBQzNCLG1CQUFtQjtZQUNuQixXQUFXO1lBQ1gsNEJBQTRCO1NBQy9COzRGQUlRLHNCQUFzQjtrQkFabEMsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUU7d0JBQ0wsWUFBWTt3QkFDWixnQkFBZ0I7d0JBQ2hCLDJCQUEyQjt3QkFDM0IsbUJBQW1CO3dCQUNuQixXQUFXO3dCQUNYLDRCQUE0QjtxQkFDL0I7b0JBQ0QsWUFBWSxFQUFFLENBQUMseUJBQXlCLENBQUM7b0JBQ3pDLE9BQU8sRUFBRSxDQUFDLHlCQUF5QixDQUFDO2lCQUN2QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRm9laG5JY29uc01vZHVsZSB9IGZyb20gJy4uLy4uL2ZvZWhuLWljb25zL2ZvZWhuLWljb25zLm1vZHVsZSc7XG5pbXBvcnQgeyBGb2VoblZhbGlkYXRpb25BbGVydHNNb2R1bGUgfSBmcm9tICcuLi8uLi9mb2Vobi12YWxpZGF0aW9uLWFsZXJ0cy9mb2Vobi12YWxpZGF0aW9uLWFsZXJ0cy5tb2R1bGUnO1xuaW1wb3J0IHsgRm9laG5NdWx0aVVwbG9hZENvbXBvbmVudCB9IGZyb20gJy4vZm9laG4tbXVsdGktdXBsb2FkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTZGtEaWN0aW9uYXJ5TW9kdWxlIH0gZnJvbSAnLi4vLi4vc2RrLWRpY3Rpb25hcnkvc2RrLWRpY3Rpb25hcnkubW9kdWxlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRm9laG5VcGxvYWRQcm9ncmVzc0Jhck1vZHVsZSB9IGZyb20gJy4uL2ZvZWhuLXVwbG9hZC1wcm9ncmVzcy1iYXIvZm9laG4tdXBsb2FkLXByb2dyZXNzLWJhci5tb2R1bGUnO1xuXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHM6IFtcbiAgICAgICAgQ29tbW9uTW9kdWxlLFxuICAgICAgICBGb2Vobkljb25zTW9kdWxlLFxuICAgICAgICBGb2VoblZhbGlkYXRpb25BbGVydHNNb2R1bGUsXG4gICAgICAgIFNka0RpY3Rpb25hcnlNb2R1bGUsXG4gICAgICAgIEZvcm1zTW9kdWxlLFxuICAgICAgICBGb2VoblVwbG9hZFByb2dyZXNzQmFyTW9kdWxlXG4gICAgXSxcbiAgICBkZWNsYXJhdGlvbnM6IFtGb2Vobk11bHRpVXBsb2FkQ29tcG9uZW50XSxcbiAgICBleHBvcnRzOiBbRm9laG5NdWx0aVVwbG9hZENvbXBvbmVudF1cbn0pXG5leHBvcnQgY2xhc3MgRm9laG5NdWx0aVVwbG9hZE1vZHVsZSB7fVxuIl19
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Injectable } from '@angular/core';
|
|
2
|
-
import { catchError, map, tap } from 'rxjs/operators';
|
|
2
|
+
import { catchError, filter, map, tap } from 'rxjs/operators';
|
|
3
3
|
import { EMPTY, throwError } from 'rxjs';
|
|
4
4
|
import { GrowlType } from '../../foehn-growl/growl-types';
|
|
5
5
|
import { UploaderHelper } from '../uploader.helper';
|
|
@@ -10,14 +10,16 @@ import * as i3 from "../../gesdem/gesdem-event.service";
|
|
|
10
10
|
import * as i4 from "../../gesdem/gesdem-handler.service";
|
|
11
11
|
import * as i5 from "../../sdk-appinfo/application-info.service";
|
|
12
12
|
import * as i6 from "../../sdk-dictionary/sdk-dictionary.service";
|
|
13
|
+
import * as i7 from "../foehn-upload-progress-bar/upload-progress.service";
|
|
13
14
|
export class MultiUploadService {
|
|
14
|
-
constructor(httpClient, growlService, gesdemEventService, gesdemHandlerService, applicationInfoService, dictionaryService) {
|
|
15
|
+
constructor(httpClient, growlService, gesdemEventService, gesdemHandlerService, applicationInfoService, dictionaryService, uploadProgressService) {
|
|
15
16
|
this.httpClient = httpClient;
|
|
16
17
|
this.growlService = growlService;
|
|
17
18
|
this.gesdemEventService = gesdemEventService;
|
|
18
19
|
this.gesdemHandlerService = gesdemHandlerService;
|
|
19
20
|
this.applicationInfoService = applicationInfoService;
|
|
20
21
|
this.dictionaryService = dictionaryService;
|
|
22
|
+
this.uploadProgressService = uploadProgressService;
|
|
21
23
|
// A way to have a unique Id per file
|
|
22
24
|
this.globalSequence = 0;
|
|
23
25
|
this.uniqPrefix = new Date().getTime();
|
|
@@ -32,8 +34,12 @@ export class MultiUploadService {
|
|
|
32
34
|
const formData = this.uploaderHelper.mapToFormData(documents, formKey, language);
|
|
33
35
|
const url = `${baseUrl}/upload/${this.reference}`;
|
|
34
36
|
return this.httpClient
|
|
35
|
-
.post(url, formData
|
|
36
|
-
|
|
37
|
+
.post(url, formData, {
|
|
38
|
+
reportProgress: true,
|
|
39
|
+
observe: 'events',
|
|
40
|
+
responseType: 'json'
|
|
41
|
+
})
|
|
42
|
+
.pipe(filter((e) => this.uploadProgressService.manageUploadEventFilter(e)), map((e) => e.body), tap(result => {
|
|
37
43
|
const successfulDocumentsCount = result.documents && result.documents.length;
|
|
38
44
|
if (successfulDocumentsCount &&
|
|
39
45
|
shouldDisplayFileSavedConfirmation) {
|
|
@@ -66,12 +72,12 @@ export class MultiUploadService {
|
|
|
66
72
|
return `${baseUrl}/download/${this.reference}/doc/${document.reference}`;
|
|
67
73
|
}
|
|
68
74
|
}
|
|
69
|
-
MultiUploadService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: MultiUploadService, deps: [{ token: i1.HttpClient }, { token: i2.GrowlBrokerService }, { token: i3.GesdemEventService }, { token: i4.GesdemHandlerService }, { token: i5.ApplicationInfoService }, { token: i6.SdkDictionaryService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
75
|
+
MultiUploadService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: MultiUploadService, deps: [{ token: i1.HttpClient }, { token: i2.GrowlBrokerService }, { token: i3.GesdemEventService }, { token: i4.GesdemHandlerService }, { token: i5.ApplicationInfoService }, { token: i6.SdkDictionaryService }, { token: i7.UploadProgressService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
70
76
|
MultiUploadService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: MultiUploadService, providedIn: 'root' });
|
|
71
77
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: MultiUploadService, decorators: [{
|
|
72
78
|
type: Injectable,
|
|
73
79
|
args: [{
|
|
74
80
|
providedIn: 'root'
|
|
75
81
|
}]
|
|
76
|
-
}], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.GrowlBrokerService }, { type: i3.GesdemEventService }, { type: i4.GesdemHandlerService }, { type: i5.ApplicationInfoService }, { type: i6.SdkDictionaryService }]; } });
|
|
77
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGktdXBsb2FkLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcmVzdGF0aW9ucy1uZy9zcmMvZm9laG4tdXBsb2FkL2ZvZWhuLW11bHRpLXVwbG9hZC9tdWx0aS11cGxvYWQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxLQUFLLEVBQWMsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXJELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQU8xRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7Ozs7Ozs7O0FBS3BELE1BQU0sT0FBTyxrQkFBa0I7SUFRM0IsWUFDWSxVQUFzQixFQUN0QixZQUFnQyxFQUNoQyxrQkFBc0MsRUFDdEMsb0JBQTBDLEVBQzFDLHNCQUE4QyxFQUM5QyxpQkFBdUM7UUFMdkMsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixpQkFBWSxHQUFaLFlBQVksQ0FBb0I7UUFDaEMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUN0Qyx5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXNCO1FBQzFDLDJCQUFzQixHQUF0QixzQkFBc0IsQ0FBd0I7UUFDOUMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFzQjtRQVhuRCxxQ0FBcUM7UUFDN0IsbUJBQWMsR0FBRyxDQUFDLENBQUM7UUFDbkIsZUFBVSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUM7UUFXdEMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLDRCQUE0QixFQUFFLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNsRSxJQUFJLENB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LE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztZQUN6RCxPQUFPLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN6QixDQUFDLENBQUMsQ0FDTCxDQUFDO0lBQ04sQ0FBQztJQUVELGNBQWMsQ0FBQyxPQUFlLEVBQUUsUUFBMkI7UUFDdkQsT0FBTyxHQUFHLE9BQU8sYUFBYSxJQUFJLENBQUMsU0FBUyxRQUFRLFFBQVEsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUM3RSxDQUFDOztnSEE3R1Esa0JBQWtCO29IQUFsQixrQkFBa0IsY0FGZixNQUFNOzRGQUVULGtCQUFrQjtrQkFIOUIsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgbWFwLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBFTVBUWSwgT2JzZXJ2YWJsZSwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRG9jdW1lbnRzV2l0aEVycm9ycyB9IGZyb20gJy4vbXVsdGktdXBsb2FkLnR5cGUnO1xuaW1wb3J0IHsgR3Jvd2xUeXBlIH0gZnJvbSAnLi4vLi4vZm9laG4tZ3Jvd2wvZ3Jvd2wtdHlwZXMnO1xuaW1wb3J0IHsgR3Jvd2xCcm9rZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZm9laG4tZ3Jvd2wvZ3Jvd2wtYnJva2VyLnNlcnZpY2UnO1xuaW1wb3J0IHsgR2VzZGVtRXZlbnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZ2VzZGVtL2dlc2RlbS1ldmVudC5zZXJ2aWNlJztcbmltcG9ydCB7IEdlc2RlbUhhbmRsZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZ2VzZGVtL2dlc2RlbS1oYW5kbGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgRG9jdW1lbnRSZWZlcmVuY2UgfSBmcm9tICcuLi9kb2N1bWVudC1yZWZlcmVuY2UnO1xuaW1wb3J0IHsgQXBwbGljYXRpb25JbmZvU2VydmljZSB9IGZyb20gJy4uLy4uL3Nkay1hcHBpbmZvL2FwcGxpY2F0aW9uLWluZm8uc2VydmljZSc7XG5pbXBvcnQgeyBTZGtEaWN0aW9uYXJ5U2VydmljZSB9IGZyb20gJy4uLy4uL3Nkay1kaWN0aW9uYXJ5L3Nkay1kaWN0aW9uYXJ5LnNlcnZpY2UnO1xuaW1wb3J0IHsgVXBsb2FkZXJIZWxwZXIgfSBmcm9tICcuLi91cGxvYWRlci5oZWxwZXInO1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIE11bHRpVXBsb2FkU2VydmljZSB7XG4gICAgcHJpdmF0ZSByZWZlcmVuY2U6IHN0cmluZztcblxuICAgIC8vIEEgd2F5IHRvIGhhdmUgYSB1bmlxdWUgSWQgcGVyIGZpbGVcbiAgICBwcml2YXRlIGdsb2JhbFNlcXVlbmNlID0gMDtcbiAgICBwcml2YXRlIHVuaXFQcmVmaXggPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcbiAgICBwcml2YXRlIHVwbG9hZGVySGVscGVyOiBVcGxvYWRlckhlbHBlcjtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGh0dHBDbGllbnQ6IEh0dHBDbGllbnQsXG4gICAgICAgIHByaXZhdGUgZ3Jvd2xTZXJ2aWNlOiBHcm93bEJyb2tlclNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgZ2VzZGVtRXZlbnRTZXJ2aWNlOiBHZXNkZW1FdmVudFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgZ2VzZGVtSGFuZGxlclNlcnZpY2U6IEdlc2RlbUhhbmRsZXJTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGFwcGxpY2F0aW9uSW5mb1NlcnZpY2U6IEFwcGxpY2F0aW9uSW5mb1NlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgZGljdGlvbmFyeVNlcnZpY2U6IFNka0RpY3Rpb25hcnlTZXJ2aWNlXG4gICAgKSB7XG4gICAgICAgIHRoaXMuZ2VzZGVtRXZlbnRTZXJ2aWNlLmZvcm1Jbml0aWFsaXphdGlvbk9ic2VydmFibGUoKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5yZWZlcmVuY2UgPSB0aGlzLmdlc2RlbUhhbmRsZXJTZXJ2aWNlLmxhc3RSZXNwb25zZS5tZXRhLnJlZmVyZW5jZTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMudXBsb2FkZXJIZWxwZXIgPSBuZXcgVXBsb2FkZXJIZWxwZXIoXG4gICAgICAgICAgICBkaWN0aW9uYXJ5U2VydmljZSxcbiAgICAgICAgICAgIGFwcGxpY2F0aW9uSW5mb1NlcnZpY2VcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICB1cGxvYWREb2N1bWVudHMoXG4gICAgICAgIGJhc2VVcmw6IHN0cmluZyxcbiAgICAgICAgZm9ybUtleTogc3RyaW5nLFxuICAgICAgICBsYWJlbDogc3RyaW5nLFxuICAgICAgICBmaWxlczogRmlsZVtdLFxuICAgICAgICBrZXk6IHN0cmluZyxcbiAgICAgICAgaXNNdWx0aXBsZTogYm9vbGVhbixcbiAgICAgICAgbGFuZ3VhZ2U6IHN0cmluZyxcbiAgICAgICAgc2hvdWxkRGlzcGxheUZpbGVTYXZlZENvbmZpcm1hdGlvbjogYm9vbGVhblxuICAgICk6IE9ic2VydmFibGU8RG9jdW1lbnRzV2l0aEVycm9ycz4ge1xuICAgICAgICBpZiAodGhpcy5yZWZlcmVuY2UpIHtcbiAgICAgICAgICAgIGNvbnN0IGRvY3VtZW50cyA9IGZpbGVzLm1hcChmaWxlID0+XG4gICAgICAgICAgICAgICAgdGhpcy51cGxvYWRlckhlbHBlci5tYXBUb0RvY3VtZW50UmVmZXJlbmNlKFxuICAgICAgICAgICAgICAgICAgICBmaWxlLFxuICAgICAgICAgICAgICAgICAgICBsYWJlbCxcbiAgICAgICAgICAgICAgICAgICAga2V5LFxuICAgICAgICAgICAgICAgICAgICBpc011bHRpcGxlLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLnVuaXFQcmVmaXgsXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2xvYmFsU2VxdWVuY2UrK1xuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBjb25zdCBmb3JtRGF0YSA9IHRoaXMudXBsb2FkZXJIZWxwZXIubWFwVG9Gb3JtRGF0YShcbiAgICAgICAgICAgICAgICBkb2N1bWVudHMsXG4gICAgICAgICAgICAgICAgZm9ybUtleSxcbiAgICAgICAgICAgICAgICBsYW5ndWFnZVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGNvbnN0IHVybCA9IGAke2Jhc2VVcmx9L3VwbG9hZC8ke3RoaXMucmVmZXJlbmNlfWA7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50XG4gICAgICAgICAgICAgICAgLnBvc3Q8RG9jdW1lbnRzV2l0aEVycm9ycz4odXJsLCBmb3JtRGF0YSlcbiAgICAgICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICAgICAgdGFwKHJlc3VsdCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdWNjZXNzZnVsRG9jdW1lbnRzQ291bnQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5kb2N1bWVudHMgJiYgcmVzdWx0LmRvY3VtZW50cy5sZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VjY2Vzc2Z1bERvY3VtZW50c0NvdW50ICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvdWxkRGlzcGxheUZpbGVTYXZlZENvbmZpcm1hdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWVzc2FnZSA9IGAke3N1Y2Nlc3NmdWxEb2N1bWVudHNDb3VudH0gZmljaGllcihzKSBzYXV2ZWdhcmTDqShzKSBhdmVjIHN1Y2PDqHNgO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZ3Jvd2xTZXJ2aWNlLmFkZFdpdGhUeXBlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHcm93bFR5cGUuU1VDQ0VTUyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlOiB1bmtub3duKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtZXNzYWdlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnVW5lIGVycmV1ciBlc3Qgc3VydmVudWUgbG9ycyBkZSBsYSB0cmFuc21pc3Npb24gZGUgdm9zIGRvY3VtZW50cyc7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmdyb3dsU2VydmljZS5hZGRXaXRoVHlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBHcm93bFR5cGUuREFOR0VSLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihlKTtcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIEVNUFRZO1xuICAgIH1cblxuICAgIGRlbGV0ZURvY3VtZW50KFxuICAgICAgICBiYXNlVXJsOiBzdHJpbmcsXG4gICAgICAgIGRvY3VtZW50OiBEb2N1bWVudFJlZmVyZW5jZVxuICAgICk6IE9ic2VydmFibGU8RG9jdW1lbnRSZWZlcmVuY2U+IHtcbiAgICAgICAgY29uc3QgeyByZWZlcmVuY2UgfSA9IHRoaXMuZ2VzZGVtSGFuZGxlclNlcnZpY2UubGFzdFJlc3BvbnNlLm1ldGE7XG4gICAgICAgIGNvbnN0IHVybCA9IGAke2Jhc2VVcmx9L2RlbGV0ZS8ke3JlZmVyZW5jZX0vZG9jLyR7ZG9jdW1lbnQucmVmZXJlbmNlfWA7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5kZWxldGUodXJsKS5waXBlKFxuICAgICAgICAgICAgLy8gUmVmbGVjdCB0aGUgZG9jdW1lbnQgb25jZSB0aGUgdXBkYXRlIGlzIGRvbmUgdG8gZWFzZSBjaGFpbmluZyBvYnNlcnZhYmxlcy5cbiAgICAgICAgICAgIG1hcCgoKSA9PiBkb2N1bWVudCksXG4gICAgICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBgU3VwcHJlc3Npb24gZHUgZmljaGllciAke2RvY3VtZW50LmZpbGVuYW1lfSByw6l1c3NpZWA7XG4gICAgICAgICAgICAgICAgdGhpcy5ncm93bFNlcnZpY2UuYWRkV2l0aFR5cGUoR3Jvd2xUeXBlLlNVQ0NFU1MsIG1lc3NhZ2UpO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBjYXRjaEVycm9yKChlOiB1bmtub3duKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgbWVzc2FnZSA9XG4gICAgICAgICAgICAgICAgICAgICdVbmUgZXJyZXVyIGVzdCBzdXJ2ZW51ZSBsb3JzIGRlIGxhIHN1cHByZXNzaW9uIGRlIHZvdHJlIGRvY3VtZW50JztcbiAgICAgICAgICAgICAgICB0aGlzLmdyb3dsU2VydmljZS5hZGRXaXRoVHlwZShHcm93bFR5cGUuREFOR0VSLCBtZXNzYWdlKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihlKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZ2V0RG93bmxvYWRVcmwoYmFzZVVybDogc3RyaW5nLCBkb2N1bWVudDogRG9jdW1lbnRSZWZlcmVuY2UpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gYCR7YmFzZVVybH0vZG93bmxvYWQvJHt0aGlzLnJlZmVyZW5jZX0vZG9jLyR7ZG9jdW1lbnQucmVmZXJlbmNlfWA7XG4gICAgfVxufVxuIl19
|
|
82
|
+
}], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.GrowlBrokerService }, { type: i3.GesdemEventService }, { type: i4.GesdemHandlerService }, { type: i5.ApplicationInfoService }, { type: i6.SdkDictionaryService }, { type: i7.UploadProgressService }]; } });
|
|
83
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGktdXBsb2FkLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcmVzdGF0aW9ucy1uZy9zcmMvZm9laG4tdXBsb2FkL2ZvZWhuLW11bHRpLXVwbG9hZC9tdWx0aS11cGxvYWQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsS0FBSyxFQUFjLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVyRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFPMUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDOzs7Ozs7Ozs7QUFNcEQsTUFBTSxPQUFPLGtCQUFrQjtJQVEzQixZQUNZLFVBQXNCLEVBQ3RCLFlBQWdDLEVBQ2hDLGtCQUFzQyxFQUN0QyxvQkFBMEMsRUFDMUMsc0JBQThDLEVBQzlDLGlCQUF1QyxFQUN2QyxxQkFBNEM7UUFONUMsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixpQkFBWSxHQUFaLFlBQVksQ0FBb0I7UUFDaEMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUN0Qyx5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXNCO1FBQzFDLDJCQUFzQixHQUF0QixzQkFBc0IsQ0FBd0I7UUFDOUMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFzQjtRQUN2QywwQkFBcUIsR0FBckIscUJBQXFCLENBQXVCO1FBWnhELHFDQUFxQztRQUM3QixtQkFBYyxHQUFHLENBQUMsQ0FBQztRQUNuQixlQUFVLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQVl0QyxJQUFJLENBQUMsa0JBQWtC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UUFBUSxDQUFDLEVBQ25CLEdBQUcsQ0FBQyxHQUFHLEVBQUU7WUFDTCxNQUFNLE9BQU8sR0FBRywwQkFBMEIsUUFBUSxDQUFDLFFBQVEsVUFBVSxDQUFDO1lBQ3RFLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDOUQsQ0FBQyxDQUFDLEVBQ0YsVUFBVSxDQUFDLENBQUMsQ0FBVSxFQUFFLEVBQUU7WUFDdEIsTUFBTSxPQUFPLEdBQ1Qsa0VBQWtFLENBQUM7WUFDdkUsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztZQUN6RCxPQUFPLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN6QixDQUFDLENBQUMsQ0FDTCxDQUFDO0lBQ04sQ0FBQztJQUVELGNBQWMsQ0FBQyxPQUFlLEVBQUUsUUFBMkI7UUFDdkQsT0FBTyxHQUFHLE9BQU8sYUFBYSxJQUFJLENBQUMsU0FBUyxRQUFRLFFBQVEsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUM3RSxDQUFDOztnSEF6SFEsa0JBQWtCO29IQUFsQixrQkFBa0IsY0FGZixNQUFNOzRGQUVULGtCQUFrQjtrQkFIOUIsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwRXZlbnQsIEh0dHBSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGZpbHRlciwgbWFwLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBFTVBUWSwgT2JzZXJ2YWJsZSwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRG9jdW1lbnRzV2l0aEVycm9ycyB9IGZyb20gJy4vbXVsdGktdXBsb2FkLnR5cGUnO1xuaW1wb3J0IHsgR3Jvd2xUeXBlIH0gZnJvbSAnLi4vLi4vZm9laG4tZ3Jvd2wvZ3Jvd2wtdHlwZXMnO1xuaW1wb3J0IHsgR3Jvd2xCcm9rZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZm9laG4tZ3Jvd2wvZ3Jvd2wtYnJva2VyLnNlcnZpY2UnO1xuaW1wb3J0IHsgR2VzZGVtRXZlbnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZ2VzZGVtL2dlc2RlbS1ldmVudC5zZXJ2aWNlJztcbmltcG9ydCB7IEdlc2RlbUhhbmRsZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZ2VzZGVtL2dlc2RlbS1oYW5kbGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgRG9jdW1lbnRSZWZlcmVuY2UgfSBmcm9tICcuLi9kb2N1bWVudC1yZWZlcmVuY2UnO1xuaW1wb3J0IHsgQXBwbGljYXRpb25JbmZvU2VydmljZSB9IGZyb20gJy4uLy4uL3Nkay1hcHBpbmZvL2FwcGxpY2F0aW9uLWluZm8uc2VydmljZSc7XG5pbXBvcnQgeyBTZGtEaWN0aW9uYXJ5U2VydmljZSB9IGZyb20gJy4uLy4uL3Nkay1kaWN0aW9uYXJ5L3Nkay1kaWN0aW9uYXJ5LnNlcnZpY2UnO1xuaW1wb3J0IHsgVXBsb2FkZXJIZWxwZXIgfSBmcm9tICcuLi91cGxvYWRlci5oZWxwZXInO1xuaW1wb3J0IHsgVXBsb2FkUHJvZ3Jlc3NTZXJ2aWNlIH0gZnJvbSAnLi4vZm9laG4tdXBsb2FkLXByb2dyZXNzLWJhci91cGxvYWQtcHJvZ3Jlc3Muc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgTXVsdGlVcGxvYWRTZXJ2aWNlIHtcbiAgICBwcml2YXRlIHJlZmVyZW5jZTogc3RyaW5nO1xuXG4gICAgLy8gQSB3YXkgdG8gaGF2ZSBhIHVuaXF1ZSBJZCBwZXIgZmlsZVxuICAgIHByaXZhdGUgZ2xvYmFsU2VxdWVuY2UgPSAwO1xuICAgIHByaXZhdGUgdW5pcVByZWZpeCA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuICAgIHByaXZhdGUgdXBsb2FkZXJIZWxwZXI6IFVwbG9hZGVySGVscGVyO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgaHR0cENsaWVudDogSHR0cENsaWVudCxcbiAgICAgICAgcHJpdmF0ZSBncm93bFNlcnZpY2U6IEdyb3dsQnJva2VyU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBnZXNkZW1FdmVudFNlcnZpY2U6IEdlc2RlbUV2ZW50U2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBnZXNkZW1IYW5kbGVyU2VydmljZTogR2VzZGVtSGFuZGxlclNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgYXBwbGljYXRpb25JbmZvU2VydmljZTogQXBwbGljYXRpb25JbmZvU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBkaWN0aW9uYXJ5U2VydmljZTogU2RrRGljdGlvbmFyeVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgdXBsb2FkUHJvZ3Jlc3NTZXJ2aWNlOiBVcGxvYWRQcm9ncmVzc1NlcnZpY2VcbiAgICApIHtcbiAgICAgICAgdGhpcy5nZXNkZW1FdmVudFNlcnZpY2UuZm9ybUluaXRpYWxpemF0aW9uT2JzZXJ2YWJsZSgpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnJlZmVyZW5jZSA9IHRoaXMuZ2VzZGVtSGFuZGxlclNlcnZpY2UubGFzdFJlc3BvbnNlLm1ldGEucmVmZXJlbmNlO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy51cGxvYWRlckhlbHBlciA9IG5ldyBVcGxvYWRlckhlbHBlcihcbiAgICAgICAgICAgIGRpY3Rpb25hcnlTZXJ2aWNlLFxuICAgICAgICAgICAgYXBwbGljYXRpb25JbmZvU2VydmljZVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHVwbG9hZERvY3VtZW50cyhcbiAgICAgICAgYmFzZVVybDogc3RyaW5nLFxuICAgICAgICBmb3JtS2V5OiBzdHJpbmcsXG4gICAgICAgIGxhYmVsOiBzdHJpbmcsXG4gICAgICAgIGZpbGVzOiBGaWxlW10sXG4gICAgICAgIGtleTogc3RyaW5nLFxuICAgICAgICBpc011bHRpcGxlOiBib29sZWFuLFxuICAgICAgICBsYW5ndWFnZTogc3RyaW5nLFxuICAgICAgICBzaG91bGREaXNwbGF5RmlsZVNhdmVkQ29uZmlybWF0aW9uOiBib29sZWFuXG4gICAgKTogT2JzZXJ2YWJsZTxEb2N1bWVudHNXaXRoRXJyb3JzPiB7XG4gICAgICAgIGlmICh0aGlzLnJlZmVyZW5jZSkge1xuICAgICAgICAgICAgY29uc3QgZG9jdW1lbnRzID0gZmlsZXMubWFwKGZpbGUgPT5cbiAgICAgICAgICAgICAgICB0aGlzLnVwbG9hZGVySGVscGVyLm1hcFRvRG9jdW1lbnRSZWZlcmVuY2UoXG4gICAgICAgICAgICAgICAgICAgIGZpbGUsXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsLFxuICAgICAgICAgICAgICAgICAgICBrZXksXG4gICAgICAgICAgICAgICAgICAgIGlzTXVsdGlwbGUsXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudW5pcVByZWZpeCxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nbG9iYWxTZXF1ZW5jZSsrXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGNvbnN0IGZvcm1EYXRhID0gdGhpcy51cGxvYWRlckhlbHBlci5tYXBUb0Zvcm1EYXRhKFxuICAgICAgICAgICAgICAgIGRvY3VtZW50cyxcbiAgICAgICAgICAgICAgICBmb3JtS2V5LFxuICAgICAgICAgICAgICAgIGxhbmd1YWdlXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgY29uc3QgdXJsID0gYCR7YmFzZVVybH0vdXBsb2FkLyR7dGhpcy5yZWZlcmVuY2V9YDtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnRcbiAgICAgICAgICAgICAgICAucG9zdDxEb2N1bWVudHNXaXRoRXJyb3JzPih1cmwsIGZvcm1EYXRhLCB7XG4gICAgICAgICAgICAgICAgICAgIHJlcG9ydFByb2dyZXNzOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBvYnNlcnZlOiAnZXZlbnRzJyxcbiAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2VUeXBlOiAnanNvbidcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgICAgICBmaWx0ZXIoKGU6IEh0dHBFdmVudDxEb2N1bWVudHNXaXRoRXJyb3JzPikgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBsb2FkUHJvZ3Jlc3NTZXJ2aWNlLm1hbmFnZVVwbG9hZEV2ZW50RmlsdGVyKGUpXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIG1hcChcbiAgICAgICAgICAgICAgICAgICAgICAgIChlOiBIdHRwRXZlbnQ8RG9jdW1lbnRzV2l0aEVycm9ycz4pID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGUgYXMgSHR0cFJlc3BvbnNlPERvY3VtZW50c1dpdGhFcnJvcnM+KS5ib2R5XG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIHRhcChyZXN1bHQgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3VjY2Vzc2Z1bERvY3VtZW50c0NvdW50ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuZG9jdW1lbnRzICYmIHJlc3VsdC5kb2N1bWVudHMubGVuZ3RoO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3NmdWxEb2N1bWVudHNDb3VudCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3VsZERpc3BsYXlGaWxlU2F2ZWRDb25maXJtYXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBgJHtzdWNjZXNzZnVsRG9jdW1lbnRzQ291bnR9IGZpY2hpZXIocykgc2F1dmVnYXJkw6kocykgYXZlYyBzdWNjw6hzYDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmdyb3dsU2VydmljZS5hZGRXaXRoVHlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3Jvd2xUeXBlLlNVQ0NFU1MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZTogdW5rbm93bikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWVzc2FnZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1VuZSBlcnJldXIgZXN0IHN1cnZlbnVlIGxvcnMgZGUgbGEgdHJhbnNtaXNzaW9uIGRlIHZvcyBkb2N1bWVudHMnO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ncm93bFNlcnZpY2UuYWRkV2l0aFR5cGUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgR3Jvd2xUeXBlLkRBTkdFUixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZSk7XG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBFTVBUWTtcbiAgICB9XG5cbiAgICBkZWxldGVEb2N1bWVudChcbiAgICAgICAgYmFzZVVybDogc3RyaW5nLFxuICAgICAgICBkb2N1bWVudDogRG9jdW1lbnRSZWZlcmVuY2VcbiAgICApOiBPYnNlcnZhYmxlPERvY3VtZW50UmVmZXJlbmNlPiB7XG4gICAgICAgIGNvbnN0IHsgcmVmZXJlbmNlIH0gPSB0aGlzLmdlc2RlbUhhbmRsZXJTZXJ2aWNlLmxhc3RSZXNwb25zZS5tZXRhO1xuICAgICAgICBjb25zdCB1cmwgPSBgJHtiYXNlVXJsfS9kZWxldGUvJHtyZWZlcmVuY2V9L2RvYy8ke2RvY3VtZW50LnJlZmVyZW5jZX1gO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZGVsZXRlKHVybCkucGlwZShcbiAgICAgICAgICAgIC8vIFJlZmxlY3QgdGhlIGRvY3VtZW50IG9uY2UgdGhlIHVwZGF0ZSBpcyBkb25lIHRvIGVhc2UgY2hhaW5pbmcgb2JzZXJ2YWJsZXMuXG4gICAgICAgICAgICBtYXAoKCkgPT4gZG9jdW1lbnQpLFxuICAgICAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBtZXNzYWdlID0gYFN1cHByZXNzaW9uIGR1IGZpY2hpZXIgJHtkb2N1bWVudC5maWxlbmFtZX0gcsOpdXNzaWVgO1xuICAgICAgICAgICAgICAgIHRoaXMuZ3Jvd2xTZXJ2aWNlLmFkZFdpdGhUeXBlKEdyb3dsVHlwZS5TVUNDRVNTLCBtZXNzYWdlKTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgY2F0Y2hFcnJvcigoZTogdW5rbm93bikgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IG1lc3NhZ2UgPVxuICAgICAgICAgICAgICAgICAgICAnVW5lIGVycmV1ciBlc3Qgc3VydmVudWUgbG9ycyBkZSBsYSBzdXBwcmVzc2lvbiBkZSB2b3RyZSBkb2N1bWVudCc7XG4gICAgICAgICAgICAgICAgdGhpcy5ncm93bFNlcnZpY2UuYWRkV2l0aFR5cGUoR3Jvd2xUeXBlLkRBTkdFUiwgbWVzc2FnZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZSk7XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGdldERvd25sb2FkVXJsKGJhc2VVcmw6IHN0cmluZywgZG9jdW1lbnQ6IERvY3VtZW50UmVmZXJlbmNlKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGAke2Jhc2VVcmx9L2Rvd25sb2FkLyR7dGhpcy5yZWZlcmVuY2V9L2RvYy8ke2RvY3VtZW50LnJlZmVyZW5jZX1gO1xuICAgIH1cbn1cbiJdfQ==
|
package/esm2020/foehn-upload/foehn-upload-progress-bar/foehn-upload-progress-bar.component.mjs
ADDED
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { Component, Input, ViewChild } from '@angular/core';
|
|
2
|
+
import { combineLatest, map } from 'rxjs';
|
|
3
|
+
import { shareReplay, tap } from 'rxjs/operators';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "./upload-progress.service";
|
|
6
|
+
import * as i2 from "@angular/common";
|
|
7
|
+
import * as i3 from "@angular/cdk/a11y";
|
|
8
|
+
import * as i4 from "../../sdk-dictionary/sdk-dictionary.pipe";
|
|
9
|
+
export class FoehnUploadProgressBarComponent {
|
|
10
|
+
constructor(uploadProgressService) {
|
|
11
|
+
this.uploadProgressService = uploadProgressService;
|
|
12
|
+
this.showProgress = this.uploadProgressService.showProgressSubject.pipe(tap(showProgress => {
|
|
13
|
+
if (showProgress) {
|
|
14
|
+
this.focusOnContainer();
|
|
15
|
+
}
|
|
16
|
+
}), shareReplay(1));
|
|
17
|
+
this.analysisProgress = this.uploadProgressService.analysisProgressSubject.pipe(shareReplay(1));
|
|
18
|
+
this.currentUploadPercentage = this.uploadProgressService.uploadProgressSubject.pipe(map((progress) => this.calculateProgressPercentage(progress)), shareReplay(1));
|
|
19
|
+
this.progressBarTriggerSubscription = combineLatest([
|
|
20
|
+
this.showProgress,
|
|
21
|
+
this.analysisProgress,
|
|
22
|
+
this.currentUploadPercentage
|
|
23
|
+
])
|
|
24
|
+
.pipe(tap(([showProgress, analysisProgress, currentUploadPercentage]) => {
|
|
25
|
+
if (!showProgress &&
|
|
26
|
+
!analysisProgress &&
|
|
27
|
+
currentUploadPercentage === 100) {
|
|
28
|
+
// Reset progress for next upload
|
|
29
|
+
this.uploadProgressService.uploadProgress.next(null);
|
|
30
|
+
// Focus back on the trigger. No need for a setTimeout as the trigger should still be in the DOM.
|
|
31
|
+
// Only does it when progress bar is hidden, analysis is finished and upload is a 100%
|
|
32
|
+
if (this.progressBarTriggerHtmlElement) {
|
|
33
|
+
this.progressBarTriggerHtmlElement.focus();
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}))
|
|
37
|
+
.subscribe();
|
|
38
|
+
}
|
|
39
|
+
ngOnDestroy() {
|
|
40
|
+
if (this.progressBarTriggerSubscription) {
|
|
41
|
+
this.progressBarTriggerSubscription.unsubscribe();
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
calculateProgressPercentage(progress) {
|
|
45
|
+
if (!progress) {
|
|
46
|
+
return 0;
|
|
47
|
+
}
|
|
48
|
+
const percent = Math.round((progress.loaded * 100) / progress.total);
|
|
49
|
+
if (percent === 100) {
|
|
50
|
+
this.uploadProgressService.analysisProgress.next(true);
|
|
51
|
+
}
|
|
52
|
+
return percent;
|
|
53
|
+
}
|
|
54
|
+
focusOnContainer() {
|
|
55
|
+
// Has to be a setTimeout as we're affecting the DOM outside of the Angular lifecycle.
|
|
56
|
+
setTimeout(() => {
|
|
57
|
+
if (this.progressBarPanel) {
|
|
58
|
+
this.progressBarPanel.nativeElement.focus();
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
FoehnUploadProgressBarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: FoehnUploadProgressBarComponent, deps: [{ token: i1.UploadProgressService }], target: i0.ɵɵFactoryTarget.Component });
|
|
64
|
+
FoehnUploadProgressBarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: FoehnUploadProgressBarComponent, selector: "foehn-upload-progress-bar", inputs: { progressBarTriggerHtmlElement: "progressBarTriggerHtmlElement" }, viewQueries: [{ propertyName: "progressBarPanel", first: true, predicate: ["progressBarPanel"], descendants: true }], ngImport: i0, template: "<div\n *ngIf=\"(showProgress | async) === true\"\n role=\"dialog\"\n class=\"progress-bar-container d-flex justify-content-center\"\n tabindex=\"-1\"\n cdkTrapFocus\n>\n <div\n class=\"progress-bar-panel d-flex flex-column align-self-center\"\n tabindex=\"-1\"\n #progressBarPanel\n >\n <div class=\"progress-bar-panel-title py-2 px-3\">\n <h2\n class=\"h5\"\n [innerHTML]=\"'foehn-upload-progress-bar.title' | fromDictionary\"\n ></h2>\n </div>\n <div class=\"progress-bar-panel-body p-3\">\n <p\n *ngIf=\"(analysisProgress | async) === false\"\n [innerHTML]=\"\n 'foehn-upload-progress-bar.upload' | fromDictionary\n \"\n ></p>\n <p\n *ngIf=\"(analysisProgress | async) === true\"\n [innerHTML]=\"\n 'foehn-upload-progress-bar.analysis' | fromDictionary\n \"\n ></p>\n <!-- Need to add a tabindex=\"0\" (here on progress) otherwise cdkTrapFocus will not work -->\n <div class=\"progress\" tabindex=\"0\">\n <div\n *ngIf=\"currentUploadPercentage | async as progress\"\n role=\"progressbar\"\n class=\"progress-bar bg-success\"\n [class.progress-bar-animated]=\"\n (analysisProgress | async) === true\n \"\n [class.progress-bar-striped]=\"\n (analysisProgress | async) === true\n \"\n [style.width]=\"progress + '%'\"\n [attr.aria-valuenow]=\"progress\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n >\n <ng-container *ngIf=\"(analysisProgress | async) === false\">\n {{ progress + '%' }}\n </ng-container>\n </div>\n </div>\n </div>\n </div>\n</div>\n", styles: [".progress-bar-container{top:0;left:0;height:100%;width:100%;position:fixed;z-index:10000;overflow:auto;background-color:#000;background-color:#0006}.progress-bar-panel{width:30%;background-color:#fff}.progress-bar-panel-title{background-color:var(--vd-neutral-lighter)}.progress-bar-panel-title h2{margin-top:.5rem}.progress{width:100%;background-color:var(--vd-neutral-lighter);box-shadow:none}.progress:focus{outline:0;box-shadow:inset 0 1px 1px #00000013,0 0 0 .2rem var(--vd-focus)}\n"], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }], pipes: { "async": i2.AsyncPipe, "fromDictionary": i4.SdkDictionaryPipe } });
|
|
65
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: FoehnUploadProgressBarComponent, decorators: [{
|
|
66
|
+
type: Component,
|
|
67
|
+
args: [{ selector: 'foehn-upload-progress-bar', template: "<div\n *ngIf=\"(showProgress | async) === true\"\n role=\"dialog\"\n class=\"progress-bar-container d-flex justify-content-center\"\n tabindex=\"-1\"\n cdkTrapFocus\n>\n <div\n class=\"progress-bar-panel d-flex flex-column align-self-center\"\n tabindex=\"-1\"\n #progressBarPanel\n >\n <div class=\"progress-bar-panel-title py-2 px-3\">\n <h2\n class=\"h5\"\n [innerHTML]=\"'foehn-upload-progress-bar.title' | fromDictionary\"\n ></h2>\n </div>\n <div class=\"progress-bar-panel-body p-3\">\n <p\n *ngIf=\"(analysisProgress | async) === false\"\n [innerHTML]=\"\n 'foehn-upload-progress-bar.upload' | fromDictionary\n \"\n ></p>\n <p\n *ngIf=\"(analysisProgress | async) === true\"\n [innerHTML]=\"\n 'foehn-upload-progress-bar.analysis' | fromDictionary\n \"\n ></p>\n <!-- Need to add a tabindex=\"0\" (here on progress) otherwise cdkTrapFocus will not work -->\n <div class=\"progress\" tabindex=\"0\">\n <div\n *ngIf=\"currentUploadPercentage | async as progress\"\n role=\"progressbar\"\n class=\"progress-bar bg-success\"\n [class.progress-bar-animated]=\"\n (analysisProgress | async) === true\n \"\n [class.progress-bar-striped]=\"\n (analysisProgress | async) === true\n \"\n [style.width]=\"progress + '%'\"\n [attr.aria-valuenow]=\"progress\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n >\n <ng-container *ngIf=\"(analysisProgress | async) === false\">\n {{ progress + '%' }}\n </ng-container>\n </div>\n </div>\n </div>\n </div>\n</div>\n", styles: [".progress-bar-container{top:0;left:0;height:100%;width:100%;position:fixed;z-index:10000;overflow:auto;background-color:#000;background-color:#0006}.progress-bar-panel{width:30%;background-color:#fff}.progress-bar-panel-title{background-color:var(--vd-neutral-lighter)}.progress-bar-panel-title h2{margin-top:.5rem}.progress{width:100%;background-color:var(--vd-neutral-lighter);box-shadow:none}.progress:focus{outline:0;box-shadow:inset 0 1px 1px #00000013,0 0 0 .2rem var(--vd-focus)}\n"] }]
|
|
68
|
+
}], ctorParameters: function () { return [{ type: i1.UploadProgressService }]; }, propDecorators: { progressBarTriggerHtmlElement: [{
|
|
69
|
+
type: Input
|
|
70
|
+
}], progressBarPanel: [{
|
|
71
|
+
type: ViewChild,
|
|
72
|
+
args: ['progressBarPanel', { static: false }]
|
|
73
|
+
}] } });
|
|
74
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9laG4tdXBsb2FkLXByb2dyZXNzLWJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcmVzdGF0aW9ucy1uZy9zcmMvZm9laG4tdXBsb2FkL2ZvZWhuLXVwbG9hZC1wcm9ncmVzcy1iYXIvZm9laG4tdXBsb2FkLXByb2dyZXNzLWJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcmVzdGF0aW9ucy1uZy9zcmMvZm9laG4tdXBsb2FkL2ZvZWhuLXVwbG9hZC1wcm9ncmVzcy1iYXIvZm9laG4tdXBsb2FkLXByb2dyZXNzLWJhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUVULEtBQUssRUFFTCxTQUFTLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGFBQWEsRUFBRSxHQUFHLEVBQTRCLE1BQU0sTUFBTSxDQUFDO0FBRXBFLE9BQU8sRUFBRSxXQUFXLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7OztBQU9sRCxNQUFNLE9BQU8sK0JBQStCO0lBYXhDLFlBQW9CLHFCQUE0QztRQUE1QywwQkFBcUIsR0FBckIscUJBQXFCLENBQXVCO1FBQzVELElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FDbkUsR0FBRyxDQUFDLFlBQVksQ0FBQyxFQUFFO1lBQ2YsSUFBSSxZQUFZLEVBQUU7Z0JBQ2QsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7YUFDM0I7UUFDTCxDQUFDLENBQUMsRUFDRixXQUFXLENBQUMsQ0FBQyxDQUFDLENBQ2pCLENBQUM7UUFDRixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FDM0UsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUNqQixDQUFDO1FBQ0YsSUFBSSxDQUFDLHVCQUF1QixHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQ2hGLEdBQUcsQ0FBQyxDQUFDLFFBQXdCLEVBQUUsRUFBRSxDQUM3QixJQUFJLENBQUMsMkJBQTJCLENBQUMsUUFBUSxDQUFDLENBQzdDLEVBQ0QsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUNqQixDQUFDO1FBQ0YsSUFBSSxDQUFDLDhCQUE4QixHQUFHLGFBQWEsQ0FBQztZQUNoRCxJQUFJLENBQUMsWUFBWTtZQUNqQixJQUFJLENBQUMsZ0JBQWdCO1lBQ3JCLElBQUksQ0FBQyx1QkFBdUI7U0FDL0IsQ0FBQzthQUNHLElBQUksQ0FDRCxHQUFHLENBQ0MsQ0FBQyxDQUNHLFlBQVksRUFDWixnQkFBZ0IsRUFDaEIsdUJBQXVCLENBQzFCLEVBQUUsRUFBRTtZQUNELElBQ0ksQ0FBQyxZQUFZO2dCQUNiLENBQUMsZ0JBQWdCO2dCQUNqQix1QkFBdUIsS0FBSyxHQUFHLEVBQ2pDO2dCQUNFLGlDQUFpQztnQkFDakMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQzFDLElBQUksQ0FDUCxDQUFDO2dCQUNGLGlHQUFpRztnQkFDakcsc0ZBQXNGO2dCQUN0RixJQUFJLElBQUksQ0FBQyw2QkFBNkIsRUFBRTtvQkFDcEMsSUFBSSxDQUFDLDZCQUE2QixDQUFDLEtBQUssRUFBRSxDQUFDO2lCQUM5QzthQUNKO1FBQ0wsQ0FBQyxDQUNKLENBQ0o7YUFDQSxTQUFTLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRUQsV0FBVztRQUNQLElBQUksSUFBSSxDQUFDLDhCQUE4QixFQUFFO1lBQ3JDLElBQUksQ0FBQyw4QkFBOEIsQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUNyRDtJQUNMLENBQUM7SUFFTywyQkFBMkIsQ0FBQyxRQUF3QjtRQUN4RCxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ1gsT0FBTyxDQUFDLENBQUM7U0FDWjtRQUNELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNyRSxJQUFJLE9BQU8sS0FBSyxHQUFHLEVBQUU7WUFDakIsSUFBSSxDQUFDLHFCQUFxQixDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUMxRDtRQUNELE9BQU8sT0FBTyxDQUFDO0lBQ25CLENBQUM7SUFFTyxnQkFBZ0I7UUFDcEIsc0ZBQXNGO1FBQ3RGLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDWixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtnQkFDdkIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQzthQUMvQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzs7NkhBeEZRLCtCQUErQjtpSEFBL0IsK0JBQStCLG1RQ2pCNUMsb21FQXdEQTs0RkR2Q2EsK0JBQStCO2tCQUwzQyxTQUFTOytCQUNJLDJCQUEyQjs0R0FNckMsNkJBQTZCO3NCQUQ1QixLQUFLO2dCQUlOLGdCQUFnQjtzQkFEZixTQUFTO3VCQUFDLGtCQUFrQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgSW5wdXQsXG4gICAgT25EZXN0cm95LFxuICAgIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFVwbG9hZFByb2dyZXNzIH0gZnJvbSAnLi91cGxvYWQtcHJvZ3Jlc3MudHlwZSc7XG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0LCBtYXAsIE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgVXBsb2FkUHJvZ3Jlc3NTZXJ2aWNlIH0gZnJvbSAnLi91cGxvYWQtcHJvZ3Jlc3Muc2VydmljZSc7XG5pbXBvcnQgeyBzaGFyZVJlcGxheSwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZvZWhuLXVwbG9hZC1wcm9ncmVzcy1iYXInLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9mb2Vobi11cGxvYWQtcHJvZ3Jlc3MtYmFyLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9mb2Vobi11cGxvYWQtcHJvZ3Jlc3MtYmFyLmNvbXBvbmVudC5jc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBGb2VoblVwbG9hZFByb2dyZXNzQmFyQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgICBASW5wdXQoKVxuICAgIHByb2dyZXNzQmFyVHJpZ2dlckh0bWxFbGVtZW50OiBIVE1MRWxlbWVudDtcblxuICAgIEBWaWV3Q2hpbGQoJ3Byb2dyZXNzQmFyUGFuZWwnLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgICBwcm9ncmVzc0JhclBhbmVsOiBFbGVtZW50UmVmO1xuXG4gICAgc2hvd1Byb2dyZXNzOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICAgIGFuYWx5c2lzUHJvZ3Jlc3M6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gICAgY3VycmVudFVwbG9hZFBlcmNlbnRhZ2U6IE9ic2VydmFibGU8bnVtYmVyPjtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgcHJvZ3Jlc3NCYXJUcmlnZ2VyU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHVwbG9hZFByb2dyZXNzU2VydmljZTogVXBsb2FkUHJvZ3Jlc3NTZXJ2aWNlKSB7XG4gICAgICAgIHRoaXMuc2hvd1Byb2dyZXNzID0gdGhpcy51cGxvYWRQcm9ncmVzc1NlcnZpY2Uuc2hvd1Byb2dyZXNzU3ViamVjdC5waXBlKFxuICAgICAgICAgICAgdGFwKHNob3dQcm9ncmVzcyA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHNob3dQcm9ncmVzcykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvY3VzT25Db250YWluZXIoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHNoYXJlUmVwbGF5KDEpXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuYW5hbHlzaXNQcm9ncmVzcyA9IHRoaXMudXBsb2FkUHJvZ3Jlc3NTZXJ2aWNlLmFuYWx5c2lzUHJvZ3Jlc3NTdWJqZWN0LnBpcGUoXG4gICAgICAgICAgICBzaGFyZVJlcGxheSgxKVxuICAgICAgICApO1xuICAgICAgICB0aGlzLmN1cnJlbnRVcGxvYWRQZXJjZW50YWdlID0gdGhpcy51cGxvYWRQcm9ncmVzc1NlcnZpY2UudXBsb2FkUHJvZ3Jlc3NTdWJqZWN0LnBpcGUoXG4gICAgICAgICAgICBtYXAoKHByb2dyZXNzOiBVcGxvYWRQcm9ncmVzcykgPT5cbiAgICAgICAgICAgICAgICB0aGlzLmNhbGN1bGF0ZVByb2dyZXNzUGVyY2VudGFnZShwcm9ncmVzcylcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBzaGFyZVJlcGxheSgxKVxuICAgICAgICApO1xuICAgICAgICB0aGlzLnByb2dyZXNzQmFyVHJpZ2dlclN1YnNjcmlwdGlvbiA9IGNvbWJpbmVMYXRlc3QoW1xuICAgICAgICAgICAgdGhpcy5zaG93UHJvZ3Jlc3MsXG4gICAgICAgICAgICB0aGlzLmFuYWx5c2lzUHJvZ3Jlc3MsXG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRVcGxvYWRQZXJjZW50YWdlXG4gICAgICAgIF0pXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICB0YXAoXG4gICAgICAgICAgICAgICAgICAgIChbXG4gICAgICAgICAgICAgICAgICAgICAgICBzaG93UHJvZ3Jlc3MsXG4gICAgICAgICAgICAgICAgICAgICAgICBhbmFseXNpc1Byb2dyZXNzLFxuICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudFVwbG9hZFBlcmNlbnRhZ2VcbiAgICAgICAgICAgICAgICAgICAgXSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICFzaG93UHJvZ3Jlc3MgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAhYW5hbHlzaXNQcm9ncmVzcyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRVcGxvYWRQZXJjZW50YWdlID09PSAxMDBcbiAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJlc2V0IHByb2dyZXNzIGZvciBuZXh0IHVwbG9hZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBsb2FkUHJvZ3Jlc3NTZXJ2aWNlLnVwbG9hZFByb2dyZXNzLm5leHQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZvY3VzIGJhY2sgb24gdGhlIHRyaWdnZXIuIE5vIG5lZWQgZm9yIGEgc2V0VGltZW91dCBhcyB0aGUgdHJpZ2dlciBzaG91bGQgc3RpbGwgYmUgaW4gdGhlIERPTS5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBPbmx5IGRvZXMgaXQgd2hlbiBwcm9ncmVzcyBiYXIgaXMgaGlkZGVuLCBhbmFseXNpcyBpcyBmaW5pc2hlZCBhbmQgdXBsb2FkIGlzIGEgMTAwJVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnByb2dyZXNzQmFyVHJpZ2dlckh0bWxFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucHJvZ3Jlc3NCYXJUcmlnZ2VySHRtbEVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnByb2dyZXNzQmFyVHJpZ2dlclN1YnNjcmlwdGlvbikge1xuICAgICAgICAgICAgdGhpcy5wcm9ncmVzc0JhclRyaWdnZXJTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgY2FsY3VsYXRlUHJvZ3Jlc3NQZXJjZW50YWdlKHByb2dyZXNzOiBVcGxvYWRQcm9ncmVzcyk6IG51bWJlciB7XG4gICAgICAgIGlmICghcHJvZ3Jlc3MpIHtcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHBlcmNlbnQgPSBNYXRoLnJvdW5kKChwcm9ncmVzcy5sb2FkZWQgKiAxMDApIC8gcHJvZ3Jlc3MudG90YWwpO1xuICAgICAgICBpZiAocGVyY2VudCA9PT0gMTAwKSB7XG4gICAgICAgICAgICB0aGlzLnVwbG9hZFByb2dyZXNzU2VydmljZS5hbmFseXNpc1Byb2dyZXNzLm5leHQodHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHBlcmNlbnQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmb2N1c09uQ29udGFpbmVyKCk6IHZvaWQge1xuICAgICAgICAvLyBIYXMgdG8gYmUgYSBzZXRUaW1lb3V0IGFzIHdlJ3JlIGFmZmVjdGluZyB0aGUgRE9NIG91dHNpZGUgb2YgdGhlIEFuZ3VsYXIgbGlmZWN5Y2xlLlxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLnByb2dyZXNzQmFyUGFuZWwpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnByb2dyZXNzQmFyUGFuZWwubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG59XG4iLCI8ZGl2XG4gICAgKm5nSWY9XCIoc2hvd1Byb2dyZXNzIHwgYXN5bmMpID09PSB0cnVlXCJcbiAgICByb2xlPVwiZGlhbG9nXCJcbiAgICBjbGFzcz1cInByb2dyZXNzLWJhci1jb250YWluZXIgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXJcIlxuICAgIHRhYmluZGV4PVwiLTFcIlxuICAgIGNka1RyYXBGb2N1c1xuPlxuICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJwcm9ncmVzcy1iYXItcGFuZWwgZC1mbGV4IGZsZXgtY29sdW1uIGFsaWduLXNlbGYtY2VudGVyXCJcbiAgICAgICAgdGFiaW5kZXg9XCItMVwiXG4gICAgICAgICNwcm9ncmVzc0JhclBhbmVsXG4gICAgPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicHJvZ3Jlc3MtYmFyLXBhbmVsLXRpdGxlIHB5LTIgcHgtM1wiPlxuICAgICAgICAgICAgPGgyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJoNVwiXG4gICAgICAgICAgICAgICAgW2lubmVySFRNTF09XCInZm9laG4tdXBsb2FkLXByb2dyZXNzLWJhci50aXRsZScgfCBmcm9tRGljdGlvbmFyeVwiXG4gICAgICAgICAgICA+PC9oMj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJwcm9ncmVzcy1iYXItcGFuZWwtYm9keSBwLTNcIj5cbiAgICAgICAgICAgIDxwXG4gICAgICAgICAgICAgICAgKm5nSWY9XCIoYW5hbHlzaXNQcm9ncmVzcyB8IGFzeW5jKSA9PT0gZmFsc2VcIlxuICAgICAgICAgICAgICAgIFtpbm5lckhUTUxdPVwiXG4gICAgICAgICAgICAgICAgICAgICdmb2Vobi11cGxvYWQtcHJvZ3Jlc3MtYmFyLnVwbG9hZCcgfCBmcm9tRGljdGlvbmFyeVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICA+PC9wPlxuICAgICAgICAgICAgPHBcbiAgICAgICAgICAgICAgICAqbmdJZj1cIihhbmFseXNpc1Byb2dyZXNzIHwgYXN5bmMpID09PSB0cnVlXCJcbiAgICAgICAgICAgICAgICBbaW5uZXJIVE1MXT1cIlxuICAgICAgICAgICAgICAgICAgICAnZm9laG4tdXBsb2FkLXByb2dyZXNzLWJhci5hbmFseXNpcycgfCBmcm9tRGljdGlvbmFyeVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICA+PC9wPlxuICAgICAgICAgICAgPCEtLSBOZWVkIHRvIGFkZCBhIHRhYmluZGV4PVwiMFwiIChoZXJlIG9uIHByb2dyZXNzKSBvdGhlcndpc2UgY2RrVHJhcEZvY3VzIHdpbGwgbm90IHdvcmsgLS0+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJvZ3Jlc3NcIiB0YWJpbmRleD1cIjBcIj5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY3VycmVudFVwbG9hZFBlcmNlbnRhZ2UgfCBhc3luYyBhcyBwcm9ncmVzc1wiXG4gICAgICAgICAgICAgICAgICAgIHJvbGU9XCJwcm9ncmVzc2JhclwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicHJvZ3Jlc3MtYmFyIGJnLXN1Y2Nlc3NcIlxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MucHJvZ3Jlc3MtYmFyLWFuaW1hdGVkXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGFuYWx5c2lzUHJvZ3Jlc3MgfCBhc3luYykgPT09IHRydWVcbiAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLnByb2dyZXNzLWJhci1zdHJpcGVkXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGFuYWx5c2lzUHJvZ3Jlc3MgfCBhc3luYykgPT09IHRydWVcbiAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlLndpZHRoXT1cInByb2dyZXNzICsgJyUnXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS12YWx1ZW5vd109XCJwcm9ncmVzc1wiXG4gICAgICAgICAgICAgICAgICAgIGFyaWEtdmFsdWVtaW49XCIwXCJcbiAgICAgICAgICAgICAgICAgICAgYXJpYS12YWx1ZW1heD1cIjEwMFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiKGFuYWx5c2lzUHJvZ3Jlc3MgfCBhc3luYykgPT09IGZhbHNlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBwcm9ncmVzcyArICclJyB9fVxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { FoehnUploadProgressBarComponent } from './foehn-upload-progress-bar.component';
|
|
4
|
+
import { A11yModule } from '@angular/cdk/a11y';
|
|
5
|
+
import { PipeModule } from '../../pipes/pipes.module';
|
|
6
|
+
import { SdkDictionaryModule } from '../../sdk-dictionary/sdk-dictionary.module';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
export class FoehnUploadProgressBarModule {
|
|
9
|
+
}
|
|
10
|
+
FoehnUploadProgressBarModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: FoehnUploadProgressBarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
11
|
+
FoehnUploadProgressBarModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: FoehnUploadProgressBarModule, declarations: [FoehnUploadProgressBarComponent], imports: [CommonModule, A11yModule, PipeModule, SdkDictionaryModule], exports: [FoehnUploadProgressBarComponent] });
|
|
12
|
+
FoehnUploadProgressBarModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: FoehnUploadProgressBarModule, imports: [[CommonModule, A11yModule, PipeModule, SdkDictionaryModule]] });
|
|
13
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: FoehnUploadProgressBarModule, decorators: [{
|
|
14
|
+
type: NgModule,
|
|
15
|
+
args: [{
|
|
16
|
+
imports: [CommonModule, A11yModule, PipeModule, SdkDictionaryModule],
|
|
17
|
+
declarations: [FoehnUploadProgressBarComponent],
|
|
18
|
+
exports: [FoehnUploadProgressBarComponent]
|
|
19
|
+
}]
|
|
20
|
+
}] });
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9laG4tdXBsb2FkLXByb2dyZXNzLWJhci5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcmVzdGF0aW9ucy1uZy9zcmMvZm9laG4tdXBsb2FkL2ZvZWhuLXVwbG9hZC1wcm9ncmVzcy1iYXIvZm9laG4tdXBsb2FkLXByb2dyZXNzLWJhci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDeEYsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQzs7QUFPakYsTUFBTSxPQUFPLDRCQUE0Qjs7MEhBQTVCLDRCQUE0QjsySEFBNUIsNEJBQTRCLGlCQUh0QiwrQkFBK0IsYUFEcEMsWUFBWSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsbUJBQW1CLGFBRXpELCtCQUErQjsySEFFaEMsNEJBQTRCLFlBSjVCLENBQUMsWUFBWSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsbUJBQW1CLENBQUM7NEZBSTNELDRCQUE0QjtrQkFMeEMsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxtQkFBbUIsQ0FBQztvQkFDcEUsWUFBWSxFQUFFLENBQUMsK0JBQStCLENBQUM7b0JBQy9DLE9BQU8sRUFBRSxDQUFDLCtCQUErQixDQUFDO2lCQUM3QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRm9laG5VcGxvYWRQcm9ncmVzc0JhckNvbXBvbmVudCB9IGZyb20gJy4vZm9laG4tdXBsb2FkLXByb2dyZXNzLWJhci5jb21wb25lbnQnO1xuaW1wb3J0IHsgQTExeU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7IFBpcGVNb2R1bGUgfSBmcm9tICcuLi8uLi9waXBlcy9waXBlcy5tb2R1bGUnO1xuaW1wb3J0IHsgU2RrRGljdGlvbmFyeU1vZHVsZSB9IGZyb20gJy4uLy4uL3Nkay1kaWN0aW9uYXJ5L3Nkay1kaWN0aW9uYXJ5Lm1vZHVsZSc7XG5cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgQTExeU1vZHVsZSwgUGlwZU1vZHVsZSwgU2RrRGljdGlvbmFyeU1vZHVsZV0sXG4gICAgZGVjbGFyYXRpb25zOiBbRm9laG5VcGxvYWRQcm9ncmVzc0JhckNvbXBvbmVudF0sXG4gICAgZXhwb3J0czogW0ZvZWhuVXBsb2FkUHJvZ3Jlc3NCYXJDb21wb25lbnRdXG59KVxuZXhwb3J0IGNsYXNzIEZvZWhuVXBsb2FkUHJvZ3Jlc3NCYXJNb2R1bGUge31cbiJdfQ==
|