@wizishop/img-manager 0.2.99 → 0.2.102
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/assets/i18n/fr.json +1 -1
- package/bundles/wizishop-img-manager.umd.js +238 -195
- package/bundles/wizishop-img-manager.umd.js.map +1 -1
- package/bundles/wizishop-img-manager.umd.min.js +2 -2
- package/bundles/wizishop-img-manager.umd.min.js.map +1 -1
- package/esm2015/lib/components/canva-btn/canva-btn.component.js +7 -82
- package/esm2015/lib/components/images-view/images-view.component.js +2 -2
- package/esm2015/lib/components/img-editor/img-editor.component.js +2 -2
- package/esm2015/lib/components/img-upload/img-upload.component.js +23 -4
- package/esm2015/lib/components/pexels-lib/pexels-lib.component.js +5 -2
- package/esm2015/lib/components/upload-list/upload-list.component.js +2 -2
- package/esm2015/lib/services/canva.service.js +88 -5
- package/esm2015/lib/wz-img-manager.component.js +15 -1
- package/esm2015/wizishop-img-manager.js +4 -4
- package/esm5/lib/components/canva-btn/canva-btn.component.js +7 -88
- package/esm5/lib/components/images-view/images-view.component.js +2 -2
- package/esm5/lib/components/img-editor/img-editor.component.js +2 -2
- package/esm5/lib/components/img-upload/img-upload.component.js +23 -4
- package/esm5/lib/components/pexels-lib/pexels-lib.component.js +5 -2
- package/esm5/lib/components/upload-list/upload-list.component.js +2 -2
- package/esm5/lib/services/canva.service.js +94 -5
- package/esm5/lib/wz-img-manager.component.js +19 -1
- package/esm5/wizishop-img-manager.js +4 -4
- package/fesm2015/wizishop-img-manager.js +221 -182
- package/fesm2015/wizishop-img-manager.js.map +1 -1
- package/fesm5/wizishop-img-manager.js +236 -193
- package/fesm5/wizishop-img-manager.js.map +1 -1
- package/lib/components/canva-btn/canva-btn.component.d.ts +2 -19
- package/lib/components/img-upload/img-upload.component.d.ts +3 -0
- package/lib/services/canva.service.d.ts +20 -1
- package/lib/wz-img-manager.component.d.ts +2 -0
- package/package.json +1 -1
- package/wizishop-img-manager-0.2.102.tgz +0 -0
- package/wizishop-img-manager.d.ts +3 -3
- package/wizishop-img-manager.metadata.json +1 -1
- package/wz-img-manager.scss +2563 -2559
- package/wizishop-img-manager-0.2.99.tgz +0 -0
|
@@ -1,18 +1,9 @@
|
|
|
1
1
|
import { __decorate, __metadata } from "tslib";
|
|
2
|
-
import { Component,
|
|
2
|
+
import { Component, Output, EventEmitter, Input } from '@angular/core';
|
|
3
3
|
import { CanvaService } from '../../services/canva.service';
|
|
4
|
-
import { ImgEventService } from '../../services/img-event.service';
|
|
5
|
-
import { ImgManagerService } from '../../services/img-manager.service';
|
|
6
|
-
import { TranslateService } from '@ngx-translate/core';
|
|
7
|
-
import { AlertService } from '../../services/alert.service';
|
|
8
4
|
var CanvaBtnComponent = /** @class */ (function () {
|
|
9
|
-
function CanvaBtnComponent(canvaService
|
|
5
|
+
function CanvaBtnComponent(canvaService) {
|
|
10
6
|
this.canvaService = canvaService;
|
|
11
|
-
this.imgManager = imgManager;
|
|
12
|
-
this.wzImgEventService = wzImgEventService;
|
|
13
|
-
this.translateService = translateService;
|
|
14
|
-
this.alertService = alertService;
|
|
15
|
-
this.renderer = renderer;
|
|
16
7
|
this.showImgUploaded = new EventEmitter();
|
|
17
8
|
this.imgLoading = false;
|
|
18
9
|
this.availableFormat = {
|
|
@@ -31,10 +22,6 @@ var CanvaBtnComponent = /** @class */ (function () {
|
|
|
31
22
|
};
|
|
32
23
|
this.openDropDownMenu = false;
|
|
33
24
|
this.subs = [];
|
|
34
|
-
this.uploadingImg = 'ImgManager.CanvaBtn.uploadingImg';
|
|
35
|
-
this.successUploadPhoto = 'ImgManager.CanvaBtn.successImport';
|
|
36
|
-
this.errorUploadCanvaImg = 'ImgManager.CanvaBtn.errorUploadCanvaImg';
|
|
37
|
-
this.errorRenameCanvaImg = 'ImgManager.CanvaBtn.errorRenameCanvaImg';
|
|
38
25
|
}
|
|
39
26
|
CanvaBtnComponent.prototype.ngOnInit = function () {
|
|
40
27
|
this.canvaLogoRouteAssets = this.canvaService.getCanvaLogo();
|
|
@@ -56,76 +43,13 @@ var CanvaBtnComponent = /** @class */ (function () {
|
|
|
56
43
|
this.subs.push(subExpectedImgSizesChange);
|
|
57
44
|
};
|
|
58
45
|
CanvaBtnComponent.prototype.onOpenCanva = function (width, height) {
|
|
59
|
-
|
|
60
|
-
if (this.imgLoading) {
|
|
61
|
-
return;
|
|
62
|
-
}
|
|
63
|
-
var subCanvaApi = this.canvaService.getCanvaApi().subscribe(function (api) {
|
|
64
|
-
_this.canvaApi = api;
|
|
65
|
-
_this.addOverflowBody();
|
|
66
|
-
_this.createDesign(width, height);
|
|
67
|
-
});
|
|
68
|
-
this.subs.push(subCanvaApi);
|
|
69
|
-
};
|
|
70
|
-
CanvaBtnComponent.prototype.createDesign = function (width, height) {
|
|
71
|
-
var _this = this;
|
|
72
|
-
var createDesign = {
|
|
73
|
-
type: 'EtsyShopIcon',
|
|
74
|
-
dimensions: {
|
|
75
|
-
units: 'px',
|
|
76
|
-
width: width ? width : undefined,
|
|
77
|
-
height: height ? height : undefined,
|
|
78
|
-
},
|
|
79
|
-
publishLabel: this.translateService.instant('ImgManager.CanvaBtn.publish'),
|
|
80
|
-
};
|
|
81
|
-
this.canvaApi.createDesign({
|
|
82
|
-
design: createDesign,
|
|
83
|
-
onDesignPublish: function (_a) {
|
|
84
|
-
var exportUrl = _a.exportUrl, designTitle = _a.designTitle;
|
|
85
|
-
return _this.designPublished(exportUrl, designTitle);
|
|
86
|
-
},
|
|
87
|
-
onDesignClose: function () {
|
|
88
|
-
_this.removeOverflowBody();
|
|
89
|
-
}
|
|
90
|
-
});
|
|
91
|
-
};
|
|
92
|
-
CanvaBtnComponent.prototype.designPublished = function (exportUrl, designTitle) {
|
|
93
|
-
var _this = this;
|
|
94
|
-
this.alertService.openAlert(this.uploadingImg);
|
|
95
|
-
this.imgLoading = true;
|
|
96
|
-
var subUploadImg = this.imgManager.uploadFileByUrl(exportUrl, designTitle).subscribe(function (img) {
|
|
97
|
-
_this.imgLoading = false;
|
|
98
|
-
_this.removeOverflowBody();
|
|
99
|
-
_this.wzImgEventService.emitImgAdded(img.id_file);
|
|
100
|
-
_this.alertService.openAlert(_this.successUploadPhoto);
|
|
101
|
-
}, function (error) {
|
|
102
|
-
_this.imgLoading = false;
|
|
103
|
-
_this.removeOverflowBody();
|
|
104
|
-
if (error.error.code === 406 && error.error.message) {
|
|
105
|
-
_this.alertService.openAlertWithBackendRespons(_this.errorUploadCanvaImg, error.error.message);
|
|
106
|
-
}
|
|
107
|
-
else {
|
|
108
|
-
_this.alertService.openAlert(_this.errorUploadCanvaImg);
|
|
109
|
-
}
|
|
110
|
-
});
|
|
111
|
-
this.subs.push(subUploadImg);
|
|
112
|
-
};
|
|
113
|
-
CanvaBtnComponent.prototype.addOverflowBody = function () {
|
|
114
|
-
this.renderer.addClass(document.body, 'ovh-canva');
|
|
115
|
-
};
|
|
116
|
-
CanvaBtnComponent.prototype.removeOverflowBody = function () {
|
|
117
|
-
this.renderer.removeClass(document.body, 'ovh-canva');
|
|
46
|
+
this.canvaService.openCanva(width, height);
|
|
118
47
|
};
|
|
119
48
|
CanvaBtnComponent.prototype.ngOnDestroy = function () {
|
|
120
49
|
this.subs.forEach(function (sub) { return sub.unsubscribe(); });
|
|
121
50
|
};
|
|
122
51
|
CanvaBtnComponent.ctorParameters = function () { return [
|
|
123
|
-
{ type: CanvaService }
|
|
124
|
-
{ type: ImgManagerService },
|
|
125
|
-
{ type: ImgEventService },
|
|
126
|
-
{ type: TranslateService },
|
|
127
|
-
{ type: AlertService },
|
|
128
|
-
{ type: Renderer2 }
|
|
52
|
+
{ type: CanvaService }
|
|
129
53
|
]; };
|
|
130
54
|
__decorate([
|
|
131
55
|
Input(),
|
|
@@ -138,16 +62,11 @@ var CanvaBtnComponent = /** @class */ (function () {
|
|
|
138
62
|
CanvaBtnComponent = __decorate([
|
|
139
63
|
Component({
|
|
140
64
|
selector: 'canva-btn',
|
|
141
|
-
template: "<div class=\"canva dropdown is-right is-hoverable\"\n wzAutoHide (clickOutside)=\"openDropDownMenu = false;\"\n [ngClass]=\"{'is-up': stateDisplayed === 'small', 'noTooltip': stateDisplayed !== 'small'}\"\n >\n <div class=\"dropdown-trigger\">\n <div\n class=\"button canva-btn\"\n aria-controls=\"dropdown-menuCanva\"\n (click)=\"openDropDownMenu = true;\"\n >\n <span>{{'ImgManager.CanvaBtn.createImg' | translate}}</span>\n <img [src]=\"canvaLogoRouteAssets\" class=\"canva-btn__logo\">\n\n <span btnLoadingAnim class=\"btnLoadingAnnimation\" *ngIf=\"imgLoading\"></span>\n </div>\n </div>\n <div\n class=\"dropdown-menu dropDownShadow\"\n [ngClass]=\"{'displayDropDownMenu': openDropDownMenu }\"\n id=\"dropdown-menuCanva\"\n role=\"menu\">\n <
|
|
65
|
+
template: "<div class=\"canva dropdown is-right is-hoverable\"\n wzAutoHide (clickOutside)=\"openDropDownMenu = false;\"\n [ngClass]=\"{'is-up': stateDisplayed === 'small', 'noTooltip': stateDisplayed !== 'small'}\"\n >\n <div class=\"dropdown-trigger\">\n <div\n class=\"button canva-btn\"\n aria-controls=\"dropdown-menuCanva\"\n (click)=\"openDropDownMenu = true;\"\n >\n <span>{{'ImgManager.CanvaBtn.createImg' | translate}}</span>\n <img [src]=\"canvaLogoRouteAssets\" class=\"canva-btn__logo\">\n\n <span btnLoadingAnim class=\"btnLoadingAnnimation\" *ngIf=\"imgLoading\"></span>\n </div>\n </div>\n <div\n class=\"dropdown-menu dropDownShadow\"\n [ngClass]=\"{'displayDropDownMenu': openDropDownMenu }\"\n id=\"dropdown-menuCanva\"\n role=\"menu\">\n <perfect-scrollbar\n class=\"smallScroll\"\n >\n <div class=\"dropdown-content\">\n <div class=\"dropdownTitle\">\n <p>{{'ImgManager.CanvaBtn.createImg.title' | translate}}</p>\n </div>\n\n <div class=\"infoItem\">\n <p>{{'ImgManager.CanvaBtn.info' | translate}}</p>\n </div>\n\n <ng-container >\n <div\n *ngIf=\"expectedWidth && expectedHeight\"\n class=\"dropdown-item-wrapper\"\n >\n <div class=\"dropdown-item expectedSizes\" (click)=\"onOpenCanva(expectedWidth, expectedHeight)\">\n <p>{{'ImgManager.CanvaBtn.recommanded' | translate}}</p><p>{{expectedWidth}}*{{expectedHeight}}</p>\n </div>\n </div>\n </ng-container>\n\n <div\n *ngFor=\"let format of availableFormat| keyvalue\"\n class=\"dropdown-item-wrapper\">\n <div\n (click)=\"onOpenCanva(format.value.width, format.value.height)\"\n class=\"dropdown-item\">\n <p>{{format.key | translate}}</p><p>{{format.value.width}}*{{format.value.height}}</p>\n </div>\n </div>\n </div>\n </perfect-scrollbar>\n </div>\n</div>\n"
|
|
142
66
|
}),
|
|
143
|
-
__metadata("design:paramtypes", [CanvaService
|
|
144
|
-
ImgManagerService,
|
|
145
|
-
ImgEventService,
|
|
146
|
-
TranslateService,
|
|
147
|
-
AlertService,
|
|
148
|
-
Renderer2])
|
|
67
|
+
__metadata("design:paramtypes", [CanvaService])
|
|
149
68
|
], CanvaBtnComponent);
|
|
150
69
|
return CanvaBtnComponent;
|
|
151
70
|
}());
|
|
152
71
|
export { CanvaBtnComponent };
|
|
153
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FudmEtYnRuLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0B3aXppc2hvcC9pbWctbWFuYWdlci8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnRzL2NhbnZhLWJ0bi9jYW52YS1idG4uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUMzRyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFHNUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBSXZELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQVE1RDtJQW9DRSwyQkFDVSxZQUEwQixFQUMxQixVQUE2QixFQUM3QixpQkFBa0MsRUFDbEMsZ0JBQWtDLEVBQ2xDLFlBQTBCLEVBQzFCLFFBQW1CO1FBTG5CLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLGVBQVUsR0FBVixVQUFVLENBQW1CO1FBQzdCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBaUI7UUFDbEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixhQUFRLEdBQVIsUUFBUSxDQUFXO1FBdENuQixvQkFBZSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFJL0MsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUVuQixvQkFBZSxHQUFHO1lBQ2hCLGlDQUFpQyxFQUFHO2dCQUNsQyxPQUFPLEVBQUcsR0FBRztnQkFDYixRQUFRLEVBQUcsR0FBRzthQUNmO1lBQ0Qsa0NBQWtDLEVBQUc7Z0JBQ25DLE9BQU8sRUFBRyxJQUFJO2dCQUNkLFFBQVEsRUFBRyxJQUFJO2FBQ2hCO1lBQ0QsK0JBQStCLEVBQUc7Z0JBQ2hDLE9BQU8sRUFBRyxJQUFJO2dCQUNkLFFBQVEsRUFBRyxJQUFJO2FBQ2hCO1NBQ0YsQ0FBQTtRQUVELHFCQUFnQixHQUFZLEtBQUssQ0FBQztRQUlsQyxTQUFJLEdBQW1CLEVBQUUsQ0FBQztRQUUxQixpQkFBWSxHQUFHLGtDQUFrQyxDQUFDO1FBQ2xELHVCQUFrQixHQUFHLG1DQUFtQyxDQUFDO1FBQ3pELHdCQUFtQixHQUFHLHlDQUF5QyxDQUFDO1FBQ2hFLHdCQUFtQixHQUFHLHlDQUF5QyxDQUFDO0lBUzFELENBQUM7SUFFUCxvQ0FBUSxHQUFSO1FBQ0UsSUFBSSxDQUFDLG9CQUFvQixHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDN0QsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7SUFDakMsQ0FBQztJQUVELG1EQUF1QixHQUF2QjtRQUFBLGlCQWFDO1FBWkMscUNBQXFDO1FBQ3JDLElBQU0seUJBQXlCLEdBQzdCLElBQUksQ0FBQyxZQUFZLENBQUMsK0JBQStCLEVBQUUsQ0FBQyxTQUFTLENBQUUsVUFBQyxRQUEyQjtZQUN6RixJQUFJLFFBQVEsRUFBRTtnQkFDWixLQUFJLENBQUMsYUFBYSxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUN4RCxLQUFJLENBQUMsY0FBYyxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUMsWUFBWSxFQUFFLEVBQUUsQ0FBQyxDQUFDO2FBQzNEO2lCQUFNO2dCQUNMLEtBQUksQ0FBQyxhQUFhLEdBQUcsU0FBUyxDQUFDO2dCQUMvQixLQUFJLENBQUMsY0FBYyxHQUFHLFNBQVMsQ0FBQzthQUNqQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0wsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQsdUNBQVcsR0FBWCxVQUFZLEtBQWEsRUFBRSxNQUFjO1FBQXpDLGlCQVdDO1FBVkMsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ25CLE9BQU87U0FDUjtRQUNELElBQU0sV0FBVyxHQUNmLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUMsU0FBUyxDQUFDLFVBQUMsR0FBbUI7WUFDNUQsS0FBSSxDQUFDLFFBQVEsR0FBRyxHQUFHLENBQUM7WUFDcEIsS0FBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3ZCLEtBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ25DLENBQUMsQ0FBQyxDQUFDO1FBQ0wsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVPLHdDQUFZLEdBQXBCLFVBQXFCLEtBQWEsRUFBRSxNQUFjO1FBQWxELGlCQWtCQztRQWpCQyxJQUFPLFlBQVksR0FBc0I7WUFDdkMsSUFBSSxFQUFFLGNBQWM7WUFDcEIsVUFBVSxFQUFHO2dCQUNYLEtBQUssRUFBRSxJQUFJO2dCQUNYLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsU0FBUztnQkFDaEMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxTQUFTO2FBQ3BDO1lBQ0QsWUFBWSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsNkJBQTZCLENBQUM7U0FDM0UsQ0FBQztRQUNGLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDO1lBQ3pCLE1BQU0sRUFBRSxZQUFZO1lBQ3BCLGVBQWUsRUFBRSxVQUFDLEVBQTBCO29CQUF4Qix3QkFBUyxFQUFFLDRCQUFXO2dCQUFPLE9BQUEsS0FBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLEVBQUUsV0FBVyxDQUFDO1lBQTVDLENBQTRDO1lBQzdGLGFBQWEsRUFBRTtnQkFDYixLQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUM1QixDQUFDO1NBRUYsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLDJDQUFlLEdBQXZCLFVBQXdCLFNBQWlCLEVBQUUsV0FBbUI7UUFBOUQsaUJBMkJDO1FBMUJDLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUMvQyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztRQUV2QixJQUFNLFlBQVksR0FDaEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUMsU0FBUyxFQUFFLFdBQVcsQ0FBQyxDQUFDLFNBQVMsQ0FDL0QsVUFBQyxHQUFrQjtZQUNqQixLQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztZQUN4QixLQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUUxQixLQUFJLENBQUMsaUJBQWlCLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNqRCxLQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxLQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUN2RCxDQUFDLEVBQ0QsVUFBQSxLQUFLO1lBQ0gsS0FBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7WUFDeEIsS0FBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7WUFFMUIsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxHQUFHLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUU7Z0JBQ25ELEtBQUksQ0FBQyxZQUFZLENBQUMsMkJBQTJCLENBQUMsS0FBSSxDQUFDLG1CQUFtQixFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUE7YUFDN0Y7aUJBQU07Z0JBQ0wsS0FBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsS0FBSSxDQUFDLG1CQUFtQixDQUFDLENBQUM7YUFDdkQ7UUFDSCxDQUFDLENBQ0YsQ0FBQztRQUVKLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBRS9CLENBQUM7SUFFTywyQ0FBZSxHQUF2QjtRQUNFLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUVPLDhDQUFrQixHQUExQjtRQUNFLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUVELHVDQUFXLEdBQVg7UUFDRSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFBLEdBQUcsSUFBSSxPQUFBLEdBQUcsQ0FBQyxXQUFXLEVBQUUsRUFBakIsQ0FBaUIsQ0FBQyxDQUFDO0lBQzlDLENBQUM7O2dCQXBHdUIsWUFBWTtnQkFDZCxpQkFBaUI7Z0JBQ1YsZUFBZTtnQkFDaEIsZ0JBQWdCO2dCQUNwQixZQUFZO2dCQUNoQixTQUFTOztJQXhDcEI7UUFBUixLQUFLLEVBQUU7OzZEQUFnQztJQUU5QjtRQUFULE1BQU0sRUFBRTs7OERBQXNDO0lBSnBDLGlCQUFpQjtRQUo3QixTQUFTLENBQUM7WUFDVCxRQUFRLEVBQUUsV0FBVztZQUNyQiwyNEVBQXlDO1NBQzFDLENBQUM7eUNBc0N3QixZQUFZO1lBQ2QsaUJBQWlCO1lBQ1YsZUFBZTtZQUNoQixnQkFBZ0I7WUFDcEIsWUFBWTtZQUNoQixTQUFTO09BMUNsQixpQkFBaUIsQ0EwSTdCO0lBQUQsd0JBQUM7Q0FBQSxBQTFJRCxJQTBJQztTQTFJWSxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgT25Jbml0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uRGVzdHJveSwgSW5qZWN0LCBSZW5kZXJlcjJ9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ2FudmFTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvY2FudmEuc2VydmljZSc7XG5pbXBvcnQgeyBDYW52YUJ1dHRvbkFwaSB9IGZyb20gJy4uLy4uL2R0by9jYW52YS5kdG8nO1xuaW1wb3J0IHsgSW1nUGljdHVyZURUTyB9IGZyb20gJy4uLy4uL2R0by9pbWctbWFuYWdlci5kdG8nO1xuaW1wb3J0IHsgSW1nRXZlbnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvaW1nLWV2ZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgSW1nTWFuYWdlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9pbWctbWFuYWdlci5zZXJ2aWNlJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IFdpemlCbG9ja01lZGlhRHRvIH0gZnJvbSAnLi4vLi4vZHRvL3dpemktYmxvY2stbWVkaWEuZHRvJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgSW1nU2VsZWN0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2ltZy1zZWxlY3Rpb24uc2VydmljZSc7XG5pbXBvcnQgeyBBbGVydFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9hbGVydC5zZXJ2aWNlJztcbmltcG9ydCB7IHN0YXRlRGlzcGxheWVkIH0gZnJvbSAnLi4vLi4vZHRvL2V4cG9ydC1kdG9zLmFwaSc7XG5pbXBvcnQgeyBDYW52YUNyZWF0ZURlc2lnbiB9IGZyb20gJy4uLy4uL2R0by9jYW52YS1jcmVhdGUtZGVzaWduLmR0byc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NhbnZhLWJ0bicsXG4gIHRlbXBsYXRlVXJsOiAnLi9jYW52YS1idG4uY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIENhbnZhQnRuQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuXG4gIEBJbnB1dCgpIHN0YXRlRGlzcGxheWVkOiBzdGF0ZURpc3BsYXllZDtcblxuICBAT3V0cHV0KCkgc2hvd0ltZ1VwbG9hZGVkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIGNhbnZhQXBpOiBDYW52YUJ1dHRvbkFwaTtcbiAgY2FudmFMb2dvUm91dGVBc3NldHM6IHN0cmluZztcbiAgaW1nTG9hZGluZyA9IGZhbHNlO1xuXG4gIGF2YWlsYWJsZUZvcm1hdCA9IHtcbiAgICAnSW1nTWFuYWdlci5DYW52YUJ0bi5zbWFsbFNxdWFyZScgOiB7XG4gICAgICAnd2lkdGgnIDogNTAwLFxuICAgICAgJ2hlaWdodCcgOiA1MDBcbiAgICB9LFxuICAgICdJbWdNYW5hZ2VyLkNhbnZhQnRuLm1lZGl1bVNxdWFyZScgOiB7XG4gICAgICAnd2lkdGgnIDogMTAwMCxcbiAgICAgICdoZWlnaHQnIDogMTAwMFxuICAgIH0sXG4gICAgJ0ltZ01hbmFnZXIuQ2FudmFCdG4uYmlnU3F1YXJlJyA6IHtcbiAgICAgICd3aWR0aCcgOiAyNTAwLFxuICAgICAgJ2hlaWdodCcgOiAyNTAwXG4gICAgfVxuICB9XG5cbiAgb3BlbkRyb3BEb3duTWVudTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIGV4cGVjdGVkSGVpZ2h0OiBudW1iZXI7XG4gIGV4cGVjdGVkV2lkdGg6IG51bWJlcjtcbiAgc3ViczogU3Vic2NyaXB0aW9uW10gPSBbXTtcblxuICB1cGxvYWRpbmdJbWcgPSAnSW1nTWFuYWdlci5DYW52YUJ0bi51cGxvYWRpbmdJbWcnO1xuICBzdWNjZXNzVXBsb2FkUGhvdG8gPSAnSW1nTWFuYWdlci5DYW52YUJ0bi5zdWNjZXNzSW1wb3J0JztcbiAgZXJyb3JVcGxvYWRDYW52YUltZyA9ICdJbWdNYW5hZ2VyLkNhbnZhQnRuLmVycm9yVXBsb2FkQ2FudmFJbWcnO1xuICBlcnJvclJlbmFtZUNhbnZhSW1nID0gJ0ltZ01hbmFnZXIuQ2FudmFCdG4uZXJyb3JSZW5hbWVDYW52YUltZyc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjYW52YVNlcnZpY2U6IENhbnZhU2VydmljZSxcbiAgICBwcml2YXRlIGltZ01hbmFnZXI6IEltZ01hbmFnZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgd3pJbWdFdmVudFNlcnZpY2U6IEltZ0V2ZW50U2VydmljZSxcbiAgICBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhbGVydFNlcnZpY2U6IEFsZXJ0U2VydmljZSxcbiAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjJcbiAgICApIHsgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuY2FudmFMb2dvUm91dGVBc3NldHMgPSB0aGlzLmNhbnZhU2VydmljZS5nZXRDYW52YUxvZ28oKTtcbiAgICB0aGlzLmxpc3RlbkNhbnZhRXhwZWN0ZWRTaXplKCk7XG4gIH1cblxuICBsaXN0ZW5DYW52YUV4cGVjdGVkU2l6ZSgpIHtcbiAgICAvLyBTdWJjcmliZSB0byBhc2tJbWcgZnJvbSB3aXppLWJsb2NrXG4gICAgY29uc3Qgc3ViRXhwZWN0ZWRJbWdTaXplc0NoYW5nZSA9XG4gICAgICB0aGlzLmNhbnZhU2VydmljZS5iaW5kRXZlbnRFeGVwZWN0ZWRJbWdTaXplQ2hhbmdlKCkuc3Vic2NyaWJlKCAobWVkaWFEVE86IFdpemlCbG9ja01lZGlhRHRvKSA9PiB7XG4gICAgICAgIGlmIChtZWRpYURUTykge1xuICAgICAgICAgIHRoaXMuZXhwZWN0ZWRXaWR0aCA9IHBhcnNlSW50KG1lZGlhRFRPLmltYWdlX3dpZHRoLCAxMCk7XG4gICAgICAgICAgdGhpcy5leHBlY3RlZEhlaWdodCA9IHBhcnNlSW50KG1lZGlhRFRPLmltYWdlX2hlaWdodCwgMTApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuZXhwZWN0ZWRXaWR0aCA9IHVuZGVmaW5lZDtcbiAgICAgICAgICB0aGlzLmV4cGVjdGVkSGVpZ2h0ID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB0aGlzLnN1YnMucHVzaChzdWJFeHBlY3RlZEltZ1NpemVzQ2hhbmdlKTtcbiAgfVxuXG4gIG9uT3BlbkNhbnZhKHdpZHRoOiBudW1iZXIsIGhlaWdodDogbnVtYmVyKSB7XG4gICAgaWYgKHRoaXMuaW1nTG9hZGluZykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBzdWJDYW52YUFwaSA9XG4gICAgICB0aGlzLmNhbnZhU2VydmljZS5nZXRDYW52YUFwaSgpLnN1YnNjcmliZSgoYXBpOiBDYW52YUJ1dHRvbkFwaSkgPT4ge1xuICAgICAgICB0aGlzLmNhbnZhQXBpID0gYXBpO1xuICAgICAgICB0aGlzLmFkZE92ZXJmbG93Qm9keSgpO1xuICAgICAgICB0aGlzLmNyZWF0ZURlc2lnbih3aWR0aCwgaGVpZ2h0KTtcbiAgICAgIH0pO1xuICAgIHRoaXMuc3Vicy5wdXNoKHN1YkNhbnZhQXBpKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlRGVzaWduKHdpZHRoOiBudW1iZXIsIGhlaWdodDogbnVtYmVyKSB7XG4gICAgY29uc3QgIGNyZWF0ZURlc2lnbjogQ2FudmFDcmVhdGVEZXNpZ24gPSB7XG4gICAgICB0eXBlOiAnRXRzeVNob3BJY29uJyxcbiAgICAgIGRpbWVuc2lvbnMgOiB7XG4gICAgICAgIHVuaXRzOiAncHgnLFxuICAgICAgICB3aWR0aDogd2lkdGggPyB3aWR0aCA6IHVuZGVmaW5lZCxcbiAgICAgICAgaGVpZ2h0OiBoZWlnaHQgPyBoZWlnaHQgOiB1bmRlZmluZWQsXG4gICAgICB9LFxuICAgICAgcHVibGlzaExhYmVsOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnSW1nTWFuYWdlci5DYW52YUJ0bi5wdWJsaXNoJyksXG4gICAgfTtcbiAgICB0aGlzLmNhbnZhQXBpLmNyZWF0ZURlc2lnbih7XG4gICAgICBkZXNpZ246IGNyZWF0ZURlc2lnbixcbiAgICAgIG9uRGVzaWduUHVibGlzaDogKHsgZXhwb3J0VXJsLCBkZXNpZ25UaXRsZSB9KSA9PiB0aGlzLmRlc2lnblB1Ymxpc2hlZChleHBvcnRVcmwsIGRlc2lnblRpdGxlKSxcbiAgICAgIG9uRGVzaWduQ2xvc2U6ICgpID0+IHtcbiAgICAgICAgdGhpcy5yZW1vdmVPdmVyZmxvd0JvZHkoKTtcbiAgICAgIH1cblxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBkZXNpZ25QdWJsaXNoZWQoZXhwb3J0VXJsOiBzdHJpbmcsIGRlc2lnblRpdGxlOiBzdHJpbmcpIHtcbiAgICB0aGlzLmFsZXJ0U2VydmljZS5vcGVuQWxlcnQodGhpcy51cGxvYWRpbmdJbWcpO1xuICAgIHRoaXMuaW1nTG9hZGluZyA9IHRydWU7XG5cbiAgICBjb25zdCBzdWJVcGxvYWRJbWcgPVxuICAgICAgdGhpcy5pbWdNYW5hZ2VyLnVwbG9hZEZpbGVCeVVybChleHBvcnRVcmwsIGRlc2lnblRpdGxlKS5zdWJzY3JpYmUoXG4gICAgICAgIChpbWc6IEltZ1BpY3R1cmVEVE8pID0+IHtcbiAgICAgICAgICB0aGlzLmltZ0xvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLnJlbW92ZU92ZXJmbG93Qm9keSgpO1xuXG4gICAgICAgICAgdGhpcy53ekltZ0V2ZW50U2VydmljZS5lbWl0SW1nQWRkZWQoaW1nLmlkX2ZpbGUpO1xuICAgICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLm9wZW5BbGVydCh0aGlzLnN1Y2Nlc3NVcGxvYWRQaG90byk7XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yID0+IHtcbiAgICAgICAgICB0aGlzLmltZ0xvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLnJlbW92ZU92ZXJmbG93Qm9keSgpO1xuXG4gICAgICAgICAgaWYgKGVycm9yLmVycm9yLmNvZGUgPT09IDQwNiAmJiBlcnJvci5lcnJvci5tZXNzYWdlKSB7XG4gICAgICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5vcGVuQWxlcnRXaXRoQmFja2VuZFJlc3BvbnModGhpcy5lcnJvclVwbG9hZENhbnZhSW1nLCBlcnJvci5lcnJvci5tZXNzYWdlKVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5vcGVuQWxlcnQodGhpcy5lcnJvclVwbG9hZENhbnZhSW1nKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICk7XG5cbiAgICB0aGlzLnN1YnMucHVzaChzdWJVcGxvYWRJbWcpO1xuXG4gIH1cblxuICBwcml2YXRlIGFkZE92ZXJmbG93Qm9keSgpIHtcbiAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKGRvY3VtZW50LmJvZHksICdvdmgtY2FudmEnKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVtb3ZlT3ZlcmZsb3dCb2R5KCkge1xuICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3MoZG9jdW1lbnQuYm9keSwgJ292aC1jYW52YScpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5zdWJzLmZvckVhY2goc3ViID0+IHN1Yi51bnN1YnNjcmliZSgpKTtcbiAgfVxufVxuIl19
|
|
72
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FudmEtYnRuLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0B3aXppc2hvcC9pbWctbWFuYWdlci8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnRzL2NhbnZhLWJ0bi9jYW52YS1idG4uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFVLE1BQU0sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUErQixNQUFNLGVBQWUsQ0FBQztBQUMzRyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFpQjVEO0lBK0JFLDJCQUNVLFlBQTBCO1FBQTFCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBNUIxQixvQkFBZSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFJL0MsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUVuQixvQkFBZSxHQUFHO1lBQ2hCLGlDQUFpQyxFQUFHO2dCQUNsQyxPQUFPLEVBQUcsR0FBRztnQkFDYixRQUFRLEVBQUcsR0FBRzthQUNmO1lBQ0Qsa0NBQWtDLEVBQUc7Z0JBQ25DLE9BQU8sRUFBRyxJQUFJO2dCQUNkLFFBQVEsRUFBRyxJQUFJO2FBQ2hCO1lBQ0QsK0JBQStCLEVBQUc7Z0JBQ2hDLE9BQU8sRUFBRyxJQUFJO2dCQUNkLFFBQVEsRUFBRyxJQUFJO2FBQ2hCO1NBQ0YsQ0FBQTtRQUVELHFCQUFnQixHQUFZLEtBQUssQ0FBQztRQUlsQyxTQUFJLEdBQW1CLEVBQUUsQ0FBQztJQUlwQixDQUFDO0lBRVAsb0NBQVEsR0FBUjtRQUNFLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQzdELElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO0lBQ2pDLENBQUM7SUFFRCxtREFBdUIsR0FBdkI7UUFBQSxpQkFhQztRQVpDLHFDQUFxQztRQUNyQyxJQUFNLHlCQUF5QixHQUM3QixJQUFJLENBQUMsWUFBWSxDQUFDLCtCQUErQixFQUFFLENBQUMsU0FBUyxDQUFFLFVBQUMsUUFBMkI7WUFDekYsSUFBSSxRQUFRLEVBQUU7Z0JBQ1osS0FBSSxDQUFDLGFBQWEsR0FBRyxRQUFRLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDeEQsS0FBSSxDQUFDLGNBQWMsR0FBRyxRQUFRLENBQUMsUUFBUSxDQUFDLFlBQVksRUFBRSxFQUFFLENBQUMsQ0FBQzthQUMzRDtpQkFBTTtnQkFDTCxLQUFJLENBQUMsYUFBYSxHQUFHLFNBQVMsQ0FBQztnQkFDL0IsS0FBSSxDQUFDLGNBQWMsR0FBRyxTQUFTLENBQUM7YUFDakM7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUNMLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLHlCQUF5QixDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVELHVDQUFXLEdBQVgsVUFBWSxLQUFhLEVBQUUsTUFBYztRQUN2QyxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVELHVDQUFXLEdBQVg7UUFDRSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFBLEdBQUcsSUFBSSxPQUFBLEdBQUcsQ0FBQyxXQUFXLEVBQUUsRUFBakIsQ0FBaUIsQ0FBQyxDQUFDO0lBQzlDLENBQUM7O2dCQTdCdUIsWUFBWTs7SUE5QjNCO1FBQVIsS0FBSyxFQUFFOzs2REFBZ0M7SUFFOUI7UUFBVCxNQUFNLEVBQUU7OzhEQUFzQztJQUpwQyxpQkFBaUI7UUFKN0IsU0FBUyxDQUFDO1lBQ1QsUUFBUSxFQUFFLFdBQVc7WUFDckIsczFFQUF5QztTQUMxQyxDQUFDO3lDQWlDd0IsWUFBWTtPQWhDekIsaUJBQWlCLENBOEQ3QjtJQUFELHdCQUFDO0NBQUEsQUE5REQsSUE4REM7U0E5RFksaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIE9uSW5pdCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkRlc3Ryb3ksIEluamVjdCwgUmVuZGVyZXIyfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENhbnZhU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2NhbnZhLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2FudmFCdXR0b25BcGkgfSBmcm9tICcuLi8uLi9kdG8vY2FudmEuZHRvJztcbmltcG9ydCB7IEltZ1BpY3R1cmVEVE8gfSBmcm9tICcuLi8uLi9kdG8vaW1nLW1hbmFnZXIuZHRvJztcbmltcG9ydCB7IEltZ0V2ZW50U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2ltZy1ldmVudC5zZXJ2aWNlJztcbmltcG9ydCB7IEltZ01hbmFnZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvaW1nLW1hbmFnZXIuc2VydmljZSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBXaXppQmxvY2tNZWRpYUR0byB9IGZyb20gJy4uLy4uL2R0by93aXppLWJsb2NrLW1lZGlhLmR0byc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEltZ1NlbGVjdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9pbWctc2VsZWN0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgQWxlcnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvYWxlcnQuc2VydmljZSc7XG5pbXBvcnQgeyBzdGF0ZURpc3BsYXllZCB9IGZyb20gJy4uLy4uL2R0by9leHBvcnQtZHRvcy5hcGknO1xuaW1wb3J0IHsgQ2FudmFDcmVhdGVEZXNpZ24gfSBmcm9tICcuLi8uLi9kdG8vY2FudmEtY3JlYXRlLWRlc2lnbi5kdG8nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjYW52YS1idG4nLFxuICB0ZW1wbGF0ZVVybDogJy4vY2FudmEtYnRuLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBDYW52YUJ0bkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcblxuICBASW5wdXQoKSBzdGF0ZURpc3BsYXllZDogc3RhdGVEaXNwbGF5ZWQ7XG5cbiAgQE91dHB1dCgpIHNob3dJbWdVcGxvYWRlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBjYW52YUFwaTogQ2FudmFCdXR0b25BcGk7XG4gIGNhbnZhTG9nb1JvdXRlQXNzZXRzOiBzdHJpbmc7XG4gIGltZ0xvYWRpbmcgPSBmYWxzZTtcblxuICBhdmFpbGFibGVGb3JtYXQgPSB7XG4gICAgJ0ltZ01hbmFnZXIuQ2FudmFCdG4uc21hbGxTcXVhcmUnIDoge1xuICAgICAgJ3dpZHRoJyA6IDUwMCxcbiAgICAgICdoZWlnaHQnIDogNTAwXG4gICAgfSxcbiAgICAnSW1nTWFuYWdlci5DYW52YUJ0bi5tZWRpdW1TcXVhcmUnIDoge1xuICAgICAgJ3dpZHRoJyA6IDEwMDAsXG4gICAgICAnaGVpZ2h0JyA6IDEwMDBcbiAgICB9LFxuICAgICdJbWdNYW5hZ2VyLkNhbnZhQnRuLmJpZ1NxdWFyZScgOiB7XG4gICAgICAnd2lkdGgnIDogMjUwMCxcbiAgICAgICdoZWlnaHQnIDogMjUwMFxuICAgIH1cbiAgfVxuXG4gIG9wZW5Ecm9wRG93bk1lbnU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBleHBlY3RlZEhlaWdodDogbnVtYmVyO1xuICBleHBlY3RlZFdpZHRoOiBudW1iZXI7XG4gIHN1YnM6IFN1YnNjcmlwdGlvbltdID0gW107XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjYW52YVNlcnZpY2U6IENhbnZhU2VydmljZVxuICAgICkgeyB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5jYW52YUxvZ29Sb3V0ZUFzc2V0cyA9IHRoaXMuY2FudmFTZXJ2aWNlLmdldENhbnZhTG9nbygpO1xuICAgIHRoaXMubGlzdGVuQ2FudmFFeHBlY3RlZFNpemUoKTtcbiAgfVxuXG4gIGxpc3RlbkNhbnZhRXhwZWN0ZWRTaXplKCkge1xuICAgIC8vIFN1YmNyaWJlIHRvIGFza0ltZyBmcm9tIHdpemktYmxvY2tcbiAgICBjb25zdCBzdWJFeHBlY3RlZEltZ1NpemVzQ2hhbmdlID1cbiAgICAgIHRoaXMuY2FudmFTZXJ2aWNlLmJpbmRFdmVudEV4ZXBlY3RlZEltZ1NpemVDaGFuZ2UoKS5zdWJzY3JpYmUoIChtZWRpYURUTzogV2l6aUJsb2NrTWVkaWFEdG8pID0+IHtcbiAgICAgICAgaWYgKG1lZGlhRFRPKSB7XG4gICAgICAgICAgdGhpcy5leHBlY3RlZFdpZHRoID0gcGFyc2VJbnQobWVkaWFEVE8uaW1hZ2Vfd2lkdGgsIDEwKTtcbiAgICAgICAgICB0aGlzLmV4cGVjdGVkSGVpZ2h0ID0gcGFyc2VJbnQobWVkaWFEVE8uaW1hZ2VfaGVpZ2h0LCAxMCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5leHBlY3RlZFdpZHRoID0gdW5kZWZpbmVkO1xuICAgICAgICAgIHRoaXMuZXhwZWN0ZWRIZWlnaHQgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIHRoaXMuc3Vicy5wdXNoKHN1YkV4cGVjdGVkSW1nU2l6ZXNDaGFuZ2UpO1xuICB9XG5cbiAgb25PcGVuQ2FudmEod2lkdGg6IG51bWJlciwgaGVpZ2h0OiBudW1iZXIpIHtcbiAgICB0aGlzLmNhbnZhU2VydmljZS5vcGVuQ2FudmEod2lkdGgsIGhlaWdodCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnN1YnMuZm9yRWFjaChzdWIgPT4gc3ViLnVuc3Vic2NyaWJlKCkpO1xuICB9XG59XG4iXX0=
|
|
@@ -516,7 +516,7 @@ var ImagesViewComponent = /** @class */ (function () {
|
|
|
516
516
|
ImagesViewComponent = __decorate([
|
|
517
517
|
Component({
|
|
518
518
|
selector: 'images-view',
|
|
519
|
-
template: "<div class=\"images-view\" [ngClass]=\"{'fullSize': fullSize, 'small': stateDisplayed === 'small'}\" [@easeInOut]=\"'in'\">\n <!-- Subheader : Img number and actions btn (sup img list, switch forma display) -->\n <div\n *ngIf=\"(stateDisplayed !== 'small' || tabDisplayed === 'img-upload')\"\n class=\"images-view__container\"\n [ngClass]=\"{'images-view__container--uploadTab': tabDisplayed === 'img-upload', 'images-view__container--window': stateDisplayed === 'window'}\"\n >\n\n <div *ngIf=\"tabDisplayed !== 'img-upload'\">\n <p class=\"mainColor\">{{ 'ImgManager.ImgLib.nbImg' | translate }} : {{length}}</p>\n </div>\n <div *ngIf=\"tabDisplayed === 'img-upload'\">\n <p class=\"mainColor\">{{ 'ImgManager.ImgLib.lastImgs' | translate }}</p>\n </div>\n\n <div class=\"field has-addons subHeaderActions\" *ngIf=\"tabDisplayed !== 'img-upload'\">\n\n <!-- For listforma : Display btn del multiple img & Confirm action -->\n <div class=\"images-view__container__boxAction\">\n\n\n <!-- S\u00E9lectionner -->\n <button\n class=\"button success images-view__container__boxAction__import\"\n @insertRemoveAnnim\n *ngIf=\"listDisplayed && nbImgToDelSelected && !confirmImgSup && !delListImgLoader && multipleImgMode\"\n (click)=\"selectImgChosen()\"\n >\n <i class=\"fal fa-check\"></i>\n {{ 'ImgManager.ImgLib.select' | translate }} ({{nbImgToDelSelected}})\n </button>\n\n <!-- Display btn del multiple img -->\n <button\n *ngIf=\"listDisplayed && nbImgToDelSelected && !confirmImgSup\"\n (click)=\"displayConfirmImgSup()\"\n class=\"button images-view__container__boxAction__delBtn danger\"\n @insertRemoveAnnim\n >\n <i class=\"fal fa-times\"></i>{{ 'ImgManager.ImgLib.delMlt' | translate }} ({{nbImgToDelSelected}})\n <span btnLoadingAnim *ngIf=\"delListImgLoader\" class=\"btnLoadingAnnimation\"></span>\n </button>\n\n <!-- Confirm action -->\n <div\n class=\"images-view__container__boxAction__confirmSup\"\n [ngClass]=\"{'images-view__container__boxAction__confirmSup--visible': confirmImgSup}\">\n <p *ngIf=\"nbImgToDelSelected > 1\" class=\"images-view__container__boxAction__confirmSup__text\">{{ 'ImgManager.ImgLib.confirmSupQuestions' | translate:{nbImage: nbImgToDelSelected} }}</p>\n <p *ngIf=\"nbImgToDelSelected === 1\" class=\"images-view__container__boxAction__confirmSup__text\">{{ 'ImgManager.ImgLib.confirmSupQuestion' | translate:{nbImage: nbImgToDelSelected} }}</p>\n <div>\n <button\n class=\"button images-view__container__boxAction__confirmSup__cancel\"\n (click)=\"cancelSup()\"\n >\n {{ 'ImgManager.ImgLib.cancel' | translate }}\n </button>\n <button\n (click)=\"removeListImg()\"\n class=\"button images-view__container__delBtn danger\"\n >\n {{ 'ImgManager.ImgLib.confirm' | translate }}\n </button>\n </div>\n </div>\n\n </div>\n\n\n <!-- Swith mosaic/list forma -->\n <div class=\"field has-addons images-view__container__buttonBox\">\n <div class=\"control\">\n <div\n class=\"button is-lighted images-view__container__buttonBox__btn\"\n [ngClass]=\"{'actifDisplayed': !listDisplayed}\"\n (click)=\"onSwitchFormatDisplayed(false)\"\n >\n <span class=\"icon is-small\">\n <i class=\"far fa-th\"></i>\n </span>\n </div>\n </div>\n\n <div class=\"control\">\n <div class=\"button is-lighted images-view__container__buttonBox__btn\"\n [ngClass]=\"{'actifDisplayed': listDisplayed}\"\n (click)=\"onSwitchFormatDisplayed(true)\"\n >\n <span class=\"icon is-small\">\n <i class=\"fas fa-bars\"></i>\n </span>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n\n\n <!-- Images section -->\n<
|
|
519
|
+
template: "<div class=\"images-view\" [ngClass]=\"{'fullSize': fullSize, 'small': stateDisplayed === 'small'}\" [@easeInOut]=\"'in'\">\n <!-- Subheader : Img number and actions btn (sup img list, switch forma display) -->\n <div\n *ngIf=\"(stateDisplayed !== 'small' || tabDisplayed === 'img-upload')\"\n class=\"images-view__container\"\n [ngClass]=\"{'images-view__container--uploadTab': tabDisplayed === 'img-upload', 'images-view__container--window': stateDisplayed === 'window'}\"\n >\n\n <div *ngIf=\"tabDisplayed !== 'img-upload'\">\n <p class=\"mainColor\">{{ 'ImgManager.ImgLib.nbImg' | translate }} : {{length}}</p>\n </div>\n <div *ngIf=\"tabDisplayed === 'img-upload'\">\n <p class=\"mainColor\">{{ 'ImgManager.ImgLib.lastImgs' | translate }}</p>\n </div>\n\n <div class=\"field has-addons subHeaderActions\" *ngIf=\"tabDisplayed !== 'img-upload'\">\n\n <!-- For listforma : Display btn del multiple img & Confirm action -->\n <div class=\"images-view__container__boxAction\">\n\n\n <!-- S\u00E9lectionner -->\n <button\n class=\"button success images-view__container__boxAction__import\"\n @insertRemoveAnnim\n *ngIf=\"listDisplayed && nbImgToDelSelected && !confirmImgSup && !delListImgLoader && multipleImgMode\"\n (click)=\"selectImgChosen()\"\n >\n <i class=\"fal fa-check\"></i>\n {{ 'ImgManager.ImgLib.select' | translate }} ({{nbImgToDelSelected}})\n </button>\n\n <!-- Display btn del multiple img -->\n <button\n *ngIf=\"listDisplayed && nbImgToDelSelected && !confirmImgSup\"\n (click)=\"displayConfirmImgSup()\"\n class=\"button images-view__container__boxAction__delBtn danger\"\n @insertRemoveAnnim\n >\n <i class=\"fal fa-times\"></i>{{ 'ImgManager.ImgLib.delMlt' | translate }} ({{nbImgToDelSelected}})\n <span btnLoadingAnim *ngIf=\"delListImgLoader\" class=\"btnLoadingAnnimation\"></span>\n </button>\n\n <!-- Confirm action -->\n <div\n class=\"images-view__container__boxAction__confirmSup\"\n [ngClass]=\"{'images-view__container__boxAction__confirmSup--visible': confirmImgSup}\">\n <p *ngIf=\"nbImgToDelSelected > 1\" class=\"images-view__container__boxAction__confirmSup__text\">{{ 'ImgManager.ImgLib.confirmSupQuestions' | translate:{nbImage: nbImgToDelSelected} }}</p>\n <p *ngIf=\"nbImgToDelSelected === 1\" class=\"images-view__container__boxAction__confirmSup__text\">{{ 'ImgManager.ImgLib.confirmSupQuestion' | translate:{nbImage: nbImgToDelSelected} }}</p>\n <div>\n <button\n class=\"button images-view__container__boxAction__confirmSup__cancel\"\n (click)=\"cancelSup()\"\n >\n {{ 'ImgManager.ImgLib.cancel' | translate }}\n </button>\n <button\n (click)=\"removeListImg()\"\n class=\"button images-view__container__delBtn danger\"\n >\n {{ 'ImgManager.ImgLib.confirm' | translate }}\n </button>\n </div>\n </div>\n\n </div>\n\n\n <!-- Swith mosaic/list forma -->\n <div class=\"field has-addons images-view__container__buttonBox\">\n <div class=\"control\">\n <div\n class=\"button is-lighted images-view__container__buttonBox__btn\"\n [ngClass]=\"{'actifDisplayed': !listDisplayed}\"\n (click)=\"onSwitchFormatDisplayed(false)\"\n >\n <span class=\"icon is-small\">\n <i class=\"far fa-th\"></i>\n </span>\n </div>\n </div>\n\n <div class=\"control\">\n <div class=\"button is-lighted images-view__container__buttonBox__btn\"\n [ngClass]=\"{'actifDisplayed': listDisplayed}\"\n (click)=\"onSwitchFormatDisplayed(true)\"\n >\n <span class=\"icon is-small\">\n <i class=\"fas fa-bars\"></i>\n </span>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n\n\n <!-- Images section -->\n<perfect-scrollbar\n class=\"images-view__scroll\"\n [ngClass]=\"{\n 'images-view__scroll--hide--mosaic': displayPexelsResults && !listDisplayed,\n 'images-view__scroll--hide--mosaic--small': displayPexelsResults && !listDisplayed && stateDisplayed === 'small',\n 'images-view__scroll--hide--table': displayPexelsResults && listDisplayed,\n 'images-view__scroll--full': stateDisplayed === 'full',\n 'images-view__scroll--smallDisplay' : stateDisplayed === 'small' && tabDisplayed !== 'img-upload',\n 'images-view__scroll--smallUploadDisplay' : stateDisplayed === 'small' && tabDisplayed === 'img-upload',\n 'images-view__scroll--window': stateDisplayed === 'window'\n}\"\n>\n <div #imgLibContainer class=\"images-view__wrapper\">\n <div *ngIf=\"!listDisplayed || stateDisplayed === 'small'\" [@easeInOut]=\"'in'\">\n <mosaic-view\n [picturesList]=\"picturesList\"\n (picturesListChange)=\"onPicturesListChange()\"\n [tableFilters]=\"tableFilters\"\n (filtersChange)=\"onFiltersChange()\"\n [(disable)]=\"disable\"\n (pictureNameChange)=\"onRenamePicture($event)\"\n (switchDisplayWindow)=\"switchDisplayWindowMosaic()\"\n [nbFakeImg]=\"nbFakeImg\"\n [stateDisplayed]=\"stateDisplayed\"\n [tabDisplayed]=\"tabDisplayed\"\n [displayPexelsResults]=\"displayPexelsResults\"\n [isLoading]=\"isLoading\"\n [fullSize]=\"fullSize\"\n >\n </mosaic-view>\n </div>\n\n <div *ngIf=\"listDisplayed && stateDisplayed !== 'small'\" [@easeInOut]=\"'in'\">\n <table-view\n [picturesList]=\"picturesList\"\n (picturesListChange)=\"onPicturesListChange()\"\n [tableFilters]=\"tableFilters\"\n (filtersChange)=\"onFiltersChange()\"\n [(disable)]=\"disable\"\n (pictureNameChange)=\"onRenamePicture($event)\"\n [displayPexelsResults]=\"displayPexelsResults\"\n [stateDisplayed]=\"stateDisplayed\"\n [isLoading]=\"isLoading\"\n >\n </table-view>\n </div>\n\n </div>\n</perfect-scrollbar>\n\n<!-- Pexels Section - When no img found -->\n<div\n *ngIf=\"displayPexelsResults\"\n class=\"images-view--pexels\"\n [@easeInOut]=\"'in'\">\n <pexels-lib\n [searchValue]=\"tableFilters.searchValue\"\n (showImgUploaded)=\"onShowImgUploaded()\"\n [disableSearch]=\"true\"\n >\n </pexels-lib>\n</div>\n",
|
|
520
520
|
animations: [
|
|
521
521
|
easeInOut,
|
|
522
522
|
insertRemove
|
|
@@ -532,4 +532,4 @@ var ImagesViewComponent = /** @class */ (function () {
|
|
|
532
532
|
return ImagesViewComponent;
|
|
533
533
|
}());
|
|
534
534
|
export { ImagesViewComponent };
|
|
535
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2VzLXZpZXcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHdpemlzaG9wL2ltZy1tYW5hZ2VyLyIsInNvdXJjZXMiOlsibGliL2NvbXBvbmVudHMvaW1hZ2VzLXZpZXcvaW1hZ2VzLXZpZXcuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFVLEtBQUssRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFpQixNQUFNLEVBQUUsWUFBWSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRW5ILE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBZ0IsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDcEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBRzNFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUM3RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sdURBQXVELENBQUM7QUFFckYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDN0UsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBVTVEO0lBd0lFLDZCQUNVLFVBQTZCLEVBQzdCLGVBQWdDLEVBQ2hDLG1CQUF3QyxFQUN4QyxZQUEwQixFQUMxQixtQkFBd0MsRUFDeEMsb0JBQTBDO1FBTDFDLGVBQVUsR0FBVixVQUFVLENBQW1CO1FBQzdCLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNoQyx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBQ3hDLGlC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RSxhQUFhO1lBQ3ZCLGsyTkFBMkM7WUFDM0MsVUFBVSxFQUFFO2dCQUNWLFNBQVM7Z0JBQ1QsWUFBWTthQUNiO1NBQ0YsQ0FBQzt5Q0EwSXNCLGlCQUFpQjtZQUNaLGVBQWU7WUFDWCxtQkFBbUI7WUFDMUIsWUFBWTtZQUNMLG1CQUFtQjtZQUNsQixvQkFBb0I7T0E5SXpDLG1CQUFtQixDQXVnQi9CO0lBQUQsMEJBQUM7Q0FBQSxBQXZnQkQsSUF1Z0JDO1NBdmdCWSxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgVmlld0NoaWxkLCBFbGVtZW50UmVmLCBBZnRlclZpZXdJbml0LCBPdXRwdXQsIEV2ZW50RW1pdHRlcn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJbWdQaWN0dXJlRFRPLCBJbWdQaWN0dXJlc0RUTywgUGFyYW1zSW1nTWFuYWdlckRUTyB9IGZyb20gJy4uLy4uL2R0by9pbWctbWFuYWdlci5kdG8nO1xuaW1wb3J0IHsgSW1nTWFuYWdlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9pbWctbWFuYWdlci5zZXJ2aWNlJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiwgU3ViamVjdH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBJbWdFdmVudFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9pbWctZXZlbnQuc2VydmljZSc7XG5pbXBvcnQgeyBJbWdTZWxlY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvaW1nLXNlbGVjdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IFVzZXJTZXR0aW5nc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy91c2VyLXNldHRpbmdzLnNlcnZpY2UnO1xuaW1wb3J0IHsgVGFibGVGaWx0ZXJzIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdGFibGUvZmlsdGVycy10YWJsZS5zZXJ2aWNlJztcbmltcG9ydCB7IFBpY3R1cmVOYW1lVXBkYXRlIH0gZnJvbSAnLi4vLi4vZHRvL3BpY3R1cmUtbmFtZS11cGRhdGUuZHRvJztcbmltcG9ydCB7IGVhc2VJbk91dCB9IGZyb20gJy4uLy4uL2FuaW1hdGlvbnMvZWFzZUluT3V0L2Vhc2UtaW4tb3V0LmFuaW1hdGlvbic7XG5pbXBvcnQgeyBpbnNlcnRSZW1vdmUgfSBmcm9tICcuLi8uLi9hbmltYXRpb25zL2luc2VydFJlbW92ZS9pbnNlcnQtcmVtb3ZlLmFuaW1hdGlvbic7XG5pbXBvcnQgeyBzdGF0ZURpc3BsYXllZCwgdGFiRGlzcGxheWVkIH0gZnJvbSAnLi4vLi4vZHRvL2V4cG9ydC1kdG9zLmFwaSc7XG5pbXBvcnQgeyBSZW5hbWVQaWN0dXJlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3JlbmFtZS1waWN0dXJlLnNlcnZpY2UnO1xuaW1wb3J0IHsgQWxlcnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvYWxlcnQuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2ltYWdlcy12aWV3JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2ltYWdlcy12aWV3LmNvbXBvbmVudC5odG1sJyxcbiAgYW5pbWF0aW9uczogW1xuICAgIGVhc2VJbk91dCxcbiAgICBpbnNlcnRSZW1vdmVcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBJbWFnZXNWaWV3Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcblxuICBASW5wdXQoKSBzdGF0ZURpc3BsYXllZDogc3RhdGVEaXNwbGF5ZWQ7XG4gIEBJbnB1dCgpIHRhYkRpc3BsYXllZDogdGFiRGlzcGxheWVkO1xuICBASW5wdXQoKSBmdWxsU2l6ZTogYm9vbGVhbjtcbiAgQElucHV0KCkgbWF4TGVuZ3RoQ2FyZFNob3c6IG51bWJlcjtcbiAgQElucHV0KCkgbmJSb3dUb1Nob3c6IG51bWJlcjtcbiAgQElucHV0KCkgbGlzdERpc3BsYXllZCA9IGZhbHNlOyAvLyBEaXNwbGF5IGZvcm1hdCBsaXN0IG9yIG1vc2FpY1xuICBASW5wdXQoKSBtdWx0aXBsZUltZ01vZGUgPSBmYWxzZTtcbiAgQE91dHB1dCgpXG4gIHN3aXRjaERpc3BsYXlXaW5kb3c6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAvLyBEYXRhIGZpbHRlcnNcbiAgdGFibGVGaWx0ZXJzOiBUYWJsZUZpbHRlcnMgPSB7XG4gICAgc29ydDogdW5kZWZpbmVkLFxuICAgIG9yZGVyOiB1bmRlZmluZWQsXG4gICAgc2VhcmNoVmFsdWU6ICcnLFxuICAgIHRvdGFsSXRlbXM6IDAsXG4gICAgaXRlbXNQZXJQYWdlOiAwLFxuICAgIGN1cnJlbnRQYWdlOiAxXG4gIH07XG5cbiAgQFZpZXdDaGlsZCgnaW1nTGliQ29udGFpbmVyJykgaW1nTGliQ29udGFpbmVyIDogRWxlbWVudFJlZjtcbiAgd2lkdGhMYXJnZUNhcmQ6IG51bWJlciA9IDIxOTsgLy8gRGVmYXVsdCB2YWx1ZSBvZiBhIGNhcmQgd2lkdGggMTk5ICsgbWFyZ2luIDIwXG4gIHdpZHRoU21hbGxDYXJkOiBudW1iZXIgPSAxNjA7IC8vIERlZmF1bHQgdmFsdWUgb2YgYSBjYXJkIHdpZHRoIDE0MCArIG1hcmdpbiAyMFxuICBuYk1pbkltZ1BlckxpbmU6IG51bWJlcjtcbiAgbmJNYXhJbWdQZXJMaW5lOiBudW1iZXI7XG4gIG5iRmFrZUltZzogbnVtYmVyID0gMDtcblxuICBpbWdGdWxsV2lkdGhDb25maWc6YW55ID0gW1xuICAgIHtcbiAgICAgIG1heDogNDE5LFxuICAgICAgbGFyZ2VJbWdXaWR0aEZhY3RvciA6IDEsXG4gICAgICBzbWFsbEltZ1dpZHRoRmFjdG9yIDogMC41XG4gICAgfSxcbiAgICB7XG4gICAgICBtYXg6IDQ5OSxcbiAgICAgIGxhcmdlSW1nV2lkdGhGYWN0b3IgOiAxLFxuICAgICAgc21hbGxJbWdXaWR0aEZhY3RvciA6IDAuNVxuICAgIH0sXG4gICAge1xuICAgICAgbWF4OiA3MTksIC8vIHRhYmxldFxuICAgICAgbGFyZ2VJbWdXaWR0aEZhY3RvciA6IDAuNSxcbiAgICAgIHNtYWxsSW1nV2lkdGhGYWN0b3IgOiAwLjMzMzNcbiAgICB9LFxuICAgIHtcbiAgICAgIG1heDogMTAyMywgLy8gZGVza29wXG4gICAgICBsYXJnZUltZ1dpZHRoRmFjdG9yIDogMC4zMzMzLFxuICAgICAgc21hbGxJbWdXaWR0aEZhY3RvciA6IDAuMlxuICAgIH0sXG4gICAge1xuICAgICAgbWF4OiAxMzk5LFxuICAgICAgbGFyZ2VJbWdXaWR0aEZhY3RvciA6IDAuMjUsXG4gICAgICBzbWFsbEltZ1dpZHRoRmFjdG9yIDogMC4xMjVcbiAgICB9LFxuICAgIHtcbiAgICAgIG1heDogMTU5OSxcbiAgICAgIGxhcmdlSW1nV2lkdGhGYWN0b3IgOiAwLjIsXG4gICAgICBzbWFsbEltZ1dpZHRoRmFjdG9yIDogMC4xMTExXG4gICAgfSxcbiAgICB7XG4gICAgICBsYXJnZUltZ1dpZHRoRmFjdG9yIDogMC4xNjY2LFxuICAgICAgc21hbGxJbWdXaWR0aEZhY3RvciA6IDAuMVxuICAgIH1cbiAgXTtcblxuICBpbWdXaWR0aENvbmZpZzphbnkgPSBbXG4gICAge1xuICAgICAgbWF4OiAxMDI0LFxuICAgICAgbGFyZ2VJbWdXaWR0aEZhY3RvciA6IDAuMjUsXG4gICAgICBzbWFsbEltZ1dpZHRoRmFjdG9yIDogMC4xMjVcbiAgICB9LFxuICAgIHtcbiAgICAgIG1heDogMTE5OSxcbiAgICAgIGxhcmdlSW1nV2lkdGhGYWN0b3IgOiAwLjMzMzMsXG4gICAgICBzbWFsbEltZ1dpZHRoRmFjdG9yIDogMC4yXG4gICAgfSxcbiAgICB7XG4gICAgICBtYXg6IDEyOTksXG4gICAgICBsYXJnZUltZ1dpZHRoRmFjdG9yIDogMC4zMzMzLFxuICAgICAgc21hbGxJbWdXaWR0aEZhY3RvciA6IDAuMTY2NlxuICAgIH0sXG4gICAge1xuICAgICAgbWF4OiAxMzk5LFxuICAgICAgbGFyZ2VJbWdXaWR0aEZhY3RvciA6IDAuMjUsXG4gICAgICBzbWFsbEltZ1dpZHRoRmFjdG9yIDogMC4xNjY2XG4gICAgfSxcbiAgICB7XG4gICAgICBtYXg6IDE1OTksXG4gICAgICBsYXJnZUltZ1dpZHRoRmFjdG9yIDogMC4yNSxcbiAgICAgIHNtYWxsSW1nV2lkdGhGYWN0b3IgOiAwLjE0XG4gICAgfSxcbiAgICB7XG4gICAgICBsYXJnZUltZ1dpZHRoRmFjdG9yIDogMC4yNSxcbiAgICAgIHNtYWxsSW1nV2lkdGhGYWN0b3IgOiAwLjEyNVxuICAgIH1cbiAgXTtcblxuICBpbWdTdWJzY3JpYmU6IFN1YnNjcmlwdGlvbjtcbiAgaW1nUmVtb3ZlZEV2ZW50OiBTdWJzY3JpcHRpb247XG4gIGltZ0FkZGVkRXZlbnQ6IFN1YnNjcmlwdGlvbjtcbiAgaW1nU2VsZWN0aW9uQ2hhbmdlOiBTdWJzY3JpcHRpb247XG4gIHNlYXJjaFF1ZXJ5Q2hhbmdlZDogU3ViamVjdDxzdHJpbmc+ID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpO1xuICBmaWx0ZXJzQ2hhbmdlZDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgcGljdHVyZXNMaXN0OiBJbWdQaWN0dXJlRFRPW10gPSBbXTtcbiAgc2F2ZVBpY3R1cmVMaXN0OiBJbWdQaWN0dXJlRFRPW10gPSBbXTtcbiAgaW1nU2VsZWN0ZWRMaXN0OiBJbWdQaWN0dXJlRFRPW107XG4gIHNlYXJjaGVkVmFsdWU6IHN0cmluZzsgLy8gVmFsdWUgZnJvbSB0aGUgc2VhcmNoIGJhciBvciBpbWcgYWRkZWQgYnkgY2FudmFcbiAgbmJJbWdUb0RlbFNlbGVjdGVkOiBudW1iZXIgPSAwO1xuICBkaXNhYmxlOiBib29sZWFuID0gZmFsc2U7IC8vIFVzZSB0byBkaXNhYmxlIGFjdGlvbiBkdXJpbmcgc2VydmVyIHJlcXVlc3RcbiAgaXNMb2FkaW5nOiBib29sZWFuID0gdHJ1ZTtcbiAgaXNUb3RhbFJldGlldmVkOiBib29sZWFuID0gZmFsc2U7XG4gIGRlbExpc3RJbWdMb2FkZXIgPSBmYWxzZTtcbiAgaW5pdENvbXBvbmVudDogYm9vbGVhbiA9IHRydWU7XG4gIGZhaWxMb2FkZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgZGlzcGxheVBleGVsc1Jlc3VsdHM6IGJvb2xlYW4gPSBmYWxzZTsgLy8gVXNlIHdoZW4gbm8gaW1nIGZpbmQgYnkgbmFtZSwgZGlzcGxheSBpbWcgZnJvbSBQZXhlbHNcbiAgc2VhcmNoVGV4dDogc3RyaW5nO1xuICBjb25maXJtSW1nU3VwOmJvb2xlYW4gPSBmYWxzZTtcbiAgcHJldmlvdXNTZWFyY2hWYWx1ZTogc3RyaW5nO1xuXG4gIC8vIFBhZ2luYXRvciBQYXJhbXNcbiAgcGFnZUluZGV4OiBudW1iZXIgPTA7XG4gIGxlbmd0aDogbnVtYmVyID0gMDtcbiAgcGFnZVNpemU6IG51bWJlciA9IDMwOyAvLyBEZWZhdWx0IHZhbHVlXG4gIHBhZ2VTaXplT3B0aW9uczogbnVtYmVyW10gPSBbMjUsIDUwLCAxMDAsIDI1MF07XG5cbiAgLy8gQXBpIEltZyBtYW5hZ2VyIFBhcmFtc1xuICBwYXJhbXM6UGFyYW1zSW1nTWFuYWdlckRUTztcblxuICBwcml2YXRlIGVycm9yR2V0QWxsSW1nID0gJ0ltZ01hbmFnZXIuSW1nTGliLmVycm9yR2V0QWxsSW1nJztcbiAgcHJpdmF0ZSBlcnJvckdldFRvdGFsSW1nID0gJ0ltZ01hbmFnZXIuSW1nTGliLmVycm9yR2V0VG90YWxJbWcnO1xuICBwcml2YXRlIGVycm9yR2V0SW1nID0gJ0ltZ01hbmFnZXIuSW1nTGliLmVycm9yR2V0Q2FudmFJbWcnO1xuICBwcml2YXRlIG1zZ05vSW1nRm91bmQgPSAnSW1nTWFuYWdlci5JbWdMaWIubm9JbWdGb3VuZCc7XG4gIHByaXZhdGUgZXJyb3JSZW1vdmVJbWcgPSAnSW1nTWFuYWdlci5JbWdMaXN0LmVycm9yUmVtb3ZlSW1nJztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGltZ01hbmFnZXI6IEltZ01hbmFnZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgaW1nRXZlbnRTZXJ2aWNlOiBJbWdFdmVudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBpbWdTZWxlY3Rpb25TZXJ2aWNlOiBJbWdTZWxlY3Rpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgYWxlcnRTZXJ2aWNlOiBBbGVydFNlcnZpY2UsXG4gICAgcHJpdmF0ZSB1c2VyU2V0dGluZ3NTZXJ2aWNlOiBVc2VyU2V0dGluZ3NTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVuYW1lUGljdHVyZVNlcnZpY2U6IFJlbmFtZVBpY3R1cmVTZXJ2aWNlKSB7IH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAvKiBpZiAodGhpcy5tYXhMZW5ndGhDYXJkU2hvdykge1xuICAgICAgdGhpcy5yZWR1Y2VQaWN0dXJlTGlzdE1heExlbmd0aCgpO1xuICAgIH0gKi9cbiAgICB0aGlzLnNldEV2ZW50cygpO1xuICAgIHRoaXMuaW1nU2VsZWN0ZWRMaXN0ID0gdGhpcy5pbWdTZWxlY3Rpb25TZXJ2aWNlLmdldEltZ1NlbGVjdGlvbigpO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHRoaXMuc2V0TmJJbWdUb0Rpc3BsYXkoKTtcbiAgICB0aGlzLl9nZXRJbWdMaXN0KCk7XG4gICAgaWYgKCF0aGlzLnNhdmVQaWN0dXJlTGlzdCkge1xuICAgICAgdGhpcy5zYXZlUGljdHVyZUxpc3QgPSB0aGlzLnBpY3R1cmVzTGlzdDtcbiAgICB9XG4gIH1cblxuICAvKiByZWR1Y2VQaWN0dXJlTGlzdE1heExlbmd0aCgpIHtcbiAgICB0aGlzLnBpY3R1cmVzTGlzdC5zcGxpY2UoMCwgdGhpcy5tYXhMZW5ndGhDYXJkU2hvdyk7XG4gIH0gKi9cblxuICBnZXRJbWdMaXN0KCkge1xuICAgIHRoaXMuZmlsdGVyc0NoYW5nZWQubmV4dCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIHRydWUgOiBnbyB0byBsaXN0IGRpc3BsYXlcbiAgICogZmFsc2UgOiBnbyB0byBtb3NhaWMgZGlzcGxheVxuICAgKiBAcGFyYW0gYWN0aXZhdGVcbiAgICovXG4gIG9uU3dpdGNoRm9ybWF0RGlzcGxheWVkKGFjdGl2YXRlOiBib29sZWFuKSB7XG4gICAgdGhpcy5saXN0RGlzcGxheWVkID0gYWN0aXZhdGU7XG4gICAgdGhpcy51c2VyU2V0dGluZ3NTZXJ2aWNlLnNldFVzZXJEaXNwbGF5UHJlZmVyZW5jZShhY3RpdmF0ZSk7XG4gICAgdGhpcy5pbWdFdmVudFNlcnZpY2UuZW1pdGxpc3REaXNwbGF5ZWRDaGFuZ2UoYWN0aXZhdGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGN1bCB0aGUgbnVtYmVyIG9mIGltZyBzZWxlY3RlZCBmb3IgbWFzc2UgZGVsZXRpb25cbiAgICovXG4gIG9uSW1nU2VsZWN0ZWQoKSB7XG4gICAgdGhpcy5zZXROYkltZ1RvRGVsU2VsZWN0ZWQoKTtcbiAgfVxuXG4gIG9uU2hvd0ltZ1VwbG9hZGVkKCkge1xuICAgIHRoaXMuc2VhcmNoVGV4dCA9IG51bGw7XG4gICAgdGhpcy5zZWFyY2hlZFZhbHVlID0gbnVsbDtcbiAgICB0aGlzLmdldEltZ0xpc3QoKTtcbiAgfVxuXG4gIG9uUmVuYW1lUGljdHVyZShwaWN0dXJlUmVuYW1lZDogUGljdHVyZU5hbWVVcGRhdGUpIHtcbiAgICBjb25zb2xlLmxvZygnb25SZW5hbWVQaWN0dXJlIHBpY3R1cmVSZW5hbWVkJywgcGljdHVyZVJlbmFtZWQpO1xuICAgIHRoaXMucmVuYW1lUGljdHVyZVNlcnZpY2Uub25SZW5hbWVQaWN0dXJlKHBpY3R1cmVSZW5hbWVkKTtcbiAgfVxuXG4gIHJlbW92ZUxpc3RJbWcoKSB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmRpc2FibGUgPSB0cnVlO1xuICAgIHRoaXMuZGVsTGlzdEltZ0xvYWRlciA9IHRydWU7XG4gICAgdGhpcy5jb25maXJtSW1nU3VwID0gZmFsc2U7XG5cbiAgICAvLyBHZXQgdGhlIGlkIG9mIHRoZSBpbWcgdG8gcmVtb3ZlXG4gICAgLy8gQW5kIGFkZCBkZWxldGVkIHByb3BlcnR5XG4gICAgY29uc3QgaWRJbWdUb1JlbW92ZTogc3RyaW5nW10gPSBbXTtcbiAgICB0aGlzLnBpY3R1cmVzTGlzdC5mb3JFYWNoKCBpbWcgPT4ge1xuICAgICAgaWYgKGltZy5kZWxTZWxlY3RlZCkge1xuICAgICAgICBpbWcuZGVsZXRlZCA9IHRydWU7XG4gICAgICAgIGlkSW1nVG9SZW1vdmUucHVzaChpbWcuaWRfZmlsZSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLmltZ01hbmFnZXIucmVtb3ZlTXVsdGlwbGVJbWcoaWRJbWdUb1JlbW92ZSkuc3Vic2NyaWJlKFxuICAgICAgKCkgPT4ge1xuICAgICAgICB0aGlzLmdldEltZ0xpc3QoKTtcbiAgICAgICAgdGhpcy5pbWdTZWxlY3Rpb25TZXJ2aWNlLnJlbW92ZUltZ1NlbGVjdGlvbkJ5SWRzKGlkSW1nVG9SZW1vdmUpO1xuICAgICAgfSxcbiAgICAgIGVycm9yID0+IHtcbiAgICAgICAgdGhpcy5nZXRJbWdMaXN0KCk7XG4gICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLm9wZW5BbGVydCh0aGlzLmVycm9yUmVtb3ZlSW1nKTtcbiAgICAgIH1cbiAgICApO1xuXG5cbiAgfVxuXG4gIHNlbGVjdEltZ0Nob3NlbigpIHtcbiAgICBpZiAodGhpcy5kaXNhYmxlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHBpY3R1cmVzTGlzdFNlbGVjdGVkOiBJbWdQaWN0dXJlRFRPW10gPSBbXTtcbiAgICB0aGlzLnBpY3R1cmVzTGlzdC5tYXAoaW1nID0+IHtcbiAgICAgIGlmKGltZy5kZWxTZWxlY3RlZCkge1xuICAgICAgICBpbWcuZGVsU2VsZWN0ZWQgPWZhbHNlO1xuICAgICAgICBpbWcuc2VsZWN0ZWQgPSB0cnVlO1xuICAgICAgfVxuICAgICAgaWYgKGltZy5zZWxlY3RlZCkge1xuICAgICAgICBwaWN0dXJlc0xpc3RTZWxlY3RlZC5wdXNoKGltZyk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5zZXROYkltZ1RvRGVsU2VsZWN0ZWQoKTtcbiAgICB0aGlzLmltZ1NlbGVjdGlvblNlcnZpY2Uuc2V0SW1nU2VsZWN0aW9uKHBpY3R1cmVzTGlzdFNlbGVjdGVkKTtcbiAgfVxuXG4gIGRpc3BsYXlDb25maXJtSW1nU3VwKCl7XG4gICAgaWYgKHRoaXMuZGlzYWJsZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmNvbmZpcm1JbWdTdXAgPSB0cnVlO1xuICB9XG5cbiAgY2FuY2VsU3VwKCkge1xuICAgIHRoaXMuY29uZmlybUltZ1N1cCA9IGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIEV2ZW50IGVtaXQgd2hlbiBhIGltZyBzZWxlY3RlZCBpbiBvcmRlciB0byBkZWxldGVcbiAgICovXG4gIG9uUGljdHVyZXNMaXN0Q2hhbmdlKCkge1xuICAgIHRoaXMuc2V0TmJJbWdUb0RlbFNlbGVjdGVkKCk7XG4gIH1cblxuICBvbkZpbHRlcnNDaGFuZ2UoKSB7XG4gICAgdGhpcy5nZXRJbWdMaXN0KCk7XG4gIH1cblxuICAvKipcbiAgICogU2V0IGRlZmF1bHQgbnVtYmVyIG9mIGltZyBwZXIgcGFnZSB0byBkaXNwbGF5IGF0IHRoZSBpbml0aWFsaXNhdGlvblxuICAgKiBUaGlzIG51bWJlciBpcyBiZXR3ZWVuIDMwIGFuZCA1MFxuICAgKi9cbiAgcHJpdmF0ZSBzZXROYkltZ1RvRGlzcGxheSgpIHtcbiAgICBjb25zdCBjb250YWluZXJXaWR0aCA9IHRoaXMuaW1nTGliQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGggKyAzMDsgLy8gKyAzMHB4IC0+IGxlZnQgKyByaWdodCBtYXJnaW5cbiAgICBjb25zdCBzY3JvbGxXaWR0aCA9IHdpbmRvdy5pbm5lcldpZHRoIC0gZG9jdW1lbnQuYm9keS5vZmZzZXRXaWR0aDtcblxuICAgIGNvbnN0IFttYXhJbWdXaWR0aEZhY3RvciwgbWluSW1nV2lkdGhGYWN0b3JdID0gdGhpcy5nZXRJbWdXaWR0aEZhY3RvcnMoKTtcblxuICAgIGNvbnN0IG1pbkltZ1dpZHRoID0gTWF0aC5mbG9vcihjb250YWluZXJXaWR0aCAqIG1pbkltZ1dpZHRoRmFjdG9yKTtcbiAgICBjb25zdCBtYXhJbWdXaWR0aCA9IE1hdGguY2VpbCgoY29udGFpbmVyV2lkdGggKyBzY3JvbGxXaWR0aCApICogbWF4SW1nV2lkdGhGYWN0b3IpO1xuXG4gICAgdGhpcy5uYk1heEltZ1BlckxpbmUgPSBNYXRoLmZsb29yKGNvbnRhaW5lcldpZHRoIC8gbWluSW1nV2lkdGgpO1xuICAgIHRoaXMubmJNaW5JbWdQZXJMaW5lID0gTWF0aC5mbG9vciggKGNvbnRhaW5lcldpZHRoICsgc2Nyb2xsV2lkdGggKSAvIG1heEltZ1dpZHRoKTtcblxuICAgIHRoaXMucGFnZVNpemUgPSB0aGlzLmdldFRvdGFsSW1nUGVyUGFnZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRJbWdXaWR0aEZhY3RvcnMoKTogbnVtYmVyW10ge1xuICAgIGNvbnN0IHNjcmVlbldpZHRoID0gd2luZG93LmlubmVyV2lkdGg7XG4gICAgbGV0IG1pbldpZHRoOm51bWJlciA9IDA7XG4gICAgbGV0IGltZ1NpemVzQ29uZmlnOiBudW1iZXJbXSA9IFtdO1xuXG4gICAgY29uc3QgY3VycmVudEltZ1dpZHRoQ29uZmlnID0gdGhpcy5mdWxsU2l6ZSA/IHRoaXMuaW1nRnVsbFdpZHRoQ29uZmlnIDogdGhpcy5pbWdXaWR0aENvbmZpZztcblxuICAgIGZvciAoY29uc3Qgd2lkdGhDb25maWcgb2YgY3VycmVudEltZ1dpZHRoQ29uZmlnKSB7XG4gICAgICAgIGlmICghd2lkdGhDb25maWcubWF4KSB7XG4gICAgICAgICAgaW1nU2l6ZXNDb25maWcgPSBbd2lkdGhDb25maWcubGFyZ2VJbWdXaWR0aEZhY3Rvciwgd2lkdGhDb25maWcuc21hbGxJbWdXaWR0aEZhY3Rvcl07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG1pbldpZHRoIDwgc2NyZWVuV2lkdGggJiYgc2NyZWVuV2lkdGggPD0gd2lkdGhDb25maWcubWF4KSB7XG4gICAgICAgICAgaW1nU2l6ZXNDb25maWcgPSBbd2lkdGhDb25maWcubGFyZ2VJbWdXaWR0aEZhY3Rvciwgd2lkdGhDb25maWcuc21hbGxJbWdXaWR0aEZhY3Rvcl07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgbWluV2lkdGggPSB3aWR0aENvbmZpZy5tYXg7XG4gICAgfVxuICAgIHJldHVybiBpbWdTaXplc0NvbmZpZztcbiAgfVxuXG4gIHByaXZhdGUgZ2V0VG90YWxJbWdQZXJQYWdlKCk6IG51bWJlciB7XG4gICAgaWYgKHRoaXMubmJSb3dUb1Nob3cpIHtcbiAgICAgIGNvbnN0IG5iSW1nUGVyTGluZSA9IHRoaXMuc3RhdGVEaXNwbGF5ZWQgPT09ICdmdWxsJyA/IHRoaXMubmJNaW5JbWdQZXJMaW5lIDogdGhpcy5uYk1heEltZ1BlckxpbmU7XG4gICAgICByZXR1cm4gbmJJbWdQZXJMaW5lICogdGhpcy5uYlJvd1RvU2hvdztcbiAgICB9XG5cbiAgICBsZXQgdG90YWwgPSB0aGlzLm5iTWluSW1nUGVyTGluZTtcblxuICAgIHdoaWxlICh0b3RhbCA8IDMwIHx8IHRvdGFsICUgdGhpcy5uYk1heEltZ1BlckxpbmUgIT09IDAgfHwgIHRvdGFsICUgdGhpcy5uYk1pbkltZ1BlckxpbmUgIT09IDApIHtcbiAgICAgIHRvdGFsICs9IHRoaXMubmJNaW5JbWdQZXJMaW5lO1xuICAgIH1cbiAgICByZXR1cm4gdG90YWw7XG4gIH1cblxuICBwcml2YXRlIHNldFBhcmFtcygpIHtcbiAgICB0aGlzLnBhcmFtcyA9IHtcbiAgICAgIGxpbWl0OiB0aGlzLm1heExlbmd0aENhcmRTaG93Py50b1N0cmluZygpIHx8ICh0aGlzLnRhYmxlRmlsdGVycy5pdGVtc1BlclBhZ2UgPyB0aGlzLnRhYmxlRmlsdGVycy5pdGVtc1BlclBhZ2UudG9TdHJpbmcoKSA6IHRoaXMucGFnZVNpemUudG9TdHJpbmcoKSksXG4gICAgICBwYWdlOiB0aGlzLnRhYmxlRmlsdGVycy5jdXJyZW50UGFnZS50b1N0cmluZygpXG4gICAgfTtcbiAgICBpZiAodGhpcy50YWJsZUZpbHRlcnMuc2VhcmNoVmFsdWUpIHtcbiAgICAgIHRoaXMucGFyYW1zW1wiZGlzcGxheV9uYW1lOmNvbnRhaW5zXCJdID0gdGhpcy50YWJsZUZpbHRlcnMuc2VhcmNoVmFsdWUudG9TdHJpbmcoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGluaXRWYXJpYWJsZXMobG9hZGluZ1N1Y2Nlc3M6IGJvb2xlYW4pIHtcbiAgICB0aGlzLm5iSW1nVG9EZWxTZWxlY3RlZCA9IDA7XG4gICAgdGhpcy5kaXNhYmxlID0gZmFsc2U7XG4gICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgICB0aGlzLmRlbExpc3RJbWdMb2FkZXIgPSBmYWxzZTtcbiAgICB0aGlzLmluaXRDb21wb25lbnQgPSBmYWxzZTtcbiAgICB0aGlzLmRpc3BsYXlQZXhlbHNSZXN1bHRzID0gZmFsc2U7XG4gICAgdGhpcy5mYWlsTG9hZGVkID0gIWxvYWRpbmdTdWNjZXNzO1xuICAgIHRoaXMubmJGYWtlSW1nID0gMDtcbiAgfVxuXG4gIHByaXZhdGUgc2VsZWN0SW1nU2VsZWN0ZWQgKCkge1xuICAgIGlmICghdGhpcy5pbWdTZWxlY3RlZExpc3QgfHwgIXRoaXMuaW1nU2VsZWN0ZWRMaXN0Lmxlbmd0aCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGlkSW1nU2xlY3RlZExpc3Q6IHN0cmluZ1tdID0gW107XG5cbiAgICB0aGlzLmltZ1NlbGVjdGVkTGlzdC5mb3JFYWNoKGltZyA9PlxuICAgICAgaWRJbWdTbGVjdGVkTGlzdC5wdXNoKGltZy5pZF9maWxlKVxuICAgICk7XG5cbiAgICB0aGlzLnBpY3R1cmVzTGlzdC5mb3JFYWNoKHBpY3R1cmUgPT4ge1xuICAgICAgaWYgKGlkSW1nU2xlY3RlZExpc3QuaW5kZXhPZihwaWN0dXJlLmlkX2ZpbGUpICE9PSAtMSkge1xuICAgICAgICBwaWN0dXJlLnNlbGVjdGVkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZGlzcGxheVBleGVsc0xpYiAoKSB7XG4gICAgdGhpcy5kaXNwbGF5UGV4ZWxzUmVzdWx0cyA9IHRydWU7XG4gICAgdGhpcy5hbGVydFNlcnZpY2Uub3BlbkFsZXJ0KHRoaXMubXNnTm9JbWdGb3VuZCk7XG4gIH1cblxuICAvKipcbiAgICogU2V0IGEgaW1nIGxpc3QgaW4gb3JkZXIgdG8gZmlsbCBwcm9wZXJseSBhbGwgdGhlIGxpbmUgb2YgaW1hZ2VzIGRpc3BsYXllZCBpbiBtb3NhaWMuXG4gICAqIE90aGVyd2lzZSwgdGhlIHNwYWNlLWJldHdlZW4gY3NzIHdpbGwgZG8gYSBiYWQgZGlzcGxheVxuICAgKi9cbiAgcHJpdmF0ZSBjYWxjdWxOYkltZ0Zha2UobmJJbWdEaXNwbGF5ZWQ6IG51bWJlcikge1xuICAgIGNvbnN0IG5iSW1nUGVyTGluZSA9IHRoaXMuc3RhdGVEaXNwbGF5ZWQgPT09ICdzbWFsbCcgfHwgdGhpcy50YWJEaXNwbGF5ZWQgPT09ICdpbWctdXBsb2FkJyA/IHRoaXMubmJNYXhJbWdQZXJMaW5lIDogdGhpcy5uYk1pbkltZ1BlckxpbmU7XG5cbiAgICBpZiAobmJJbWdEaXNwbGF5ZWQgJSBuYkltZ1BlckxpbmUgIT09IDApIHtcbiAgICAgIHRoaXMubmJGYWtlSW1nID0gbmJJbWdQZXJMaW5lIC0gbmJJbWdEaXNwbGF5ZWQgJSBuYkltZ1BlckxpbmU7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRJbWcgKGlkX2ZpbGU6IHN0cmluZykge1xuICAgIHRoaXMuaW1nTWFuYWdlci5nZXRTaG9wSW1nKGlkX2ZpbGUpLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKFxuICAgICAgKHBpY3R1cmU6IEltZ1BpY3R1cmVEVE8pID0+IHtcblxuICAgICAgICBpZiAoIXRoaXMuaW1nQWxyZWFkeUV4aXN0KHBpY3R1cmUuaWRfZmlsZSkpIHtcbiAgICAgICAgICAvLyBjaGVjayB0aGUgaW1nIGlzIG5vdCBhbHJlYWR5IHByZXNlbnRcbiAgICAgICAgICB0aGlzLnBpY3R1cmVzTGlzdC51bnNoaWZ0KHBpY3R1cmUpO1xuICAgICAgICAgIHRoaXMubGVuZ3RoICs9IDE7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBlcnJvciA9PiB7XG4gICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLm9wZW5BbGVydCh0aGlzLmVycm9yR2V0SW1nKTtcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBpbWdBbHJlYWR5RXhpc3QgKGlkX2ZpbGU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGZvciAoY29uc3QgaW1nIG9mIHRoaXMucGljdHVyZXNMaXN0KSB7XG4gICAgICBpZiAoaW1nLmlkX2ZpbGUgPT09IGlkX2ZpbGUpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0TmJJbWdUb0RlbFNlbGVjdGVkICgpIHtcbiAgICB0aGlzLm5iSW1nVG9EZWxTZWxlY3RlZCA9IHRoaXMucGljdHVyZXNMaXN0LmZpbHRlcihpbWcgPT5cbiAgICAgIGltZy5kZWxTZWxlY3RlZCkubGVuZ3RoO1xuXG4gICAgaWYgKCF0aGlzLm5iSW1nVG9EZWxTZWxlY3RlZCkge1xuICAgICAgdGhpcy5jb25maXJtSW1nU3VwID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXRFdmVudHMoKSB7XG4gICAgLy8gQWRkIGEgdGltZXIgdG8gcmV0cmlldmUgaW1nIHdoZW4gdGhlIHNlYXJjaCBiYXIgb3IgdGhlIHBhZ2luYXRvciBhcmUgdXNlZFxuICAgIHRoaXMuc2VhcmNoUXVlcnlDaGFuZ2VkXG4gICAgICAucGlwZShkZWJvdW5jZVRpbWUoNDAwKSkgLy8gd2FpdCAwLjUgc2VjIGFmdGVyIHRoZSBsYXN0IGV2ZW50IGJlZm9yZSBlbWl0dGluZyBsYXN0IGV2ZW50XG4gICAgICAuc3Vic2NyaWJlKGRhdGEgPT4ge1xuICAgICAgICAgIHRoaXMuZ2V0SW1nTGlzdCgpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5maWx0ZXJzQ2hhbmdlZFxuICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKDgwMCkpIC8vIHdhaXQgMC44IHNlYyBhZnRlciB0aGUgbGFzdCBldmVudCBiZWZvcmUgZW1pdHRpbmcgbGFzdCBldmVudFxuICAgICAgLnN1YnNjcmliZShkYXRhID0+IHtcbiAgICAgICAgICB0aGlzLl9nZXRJbWdMaXN0KCk7XG4gICAgfSk7XG5cbiAgICAvLyBSZWxvYWQgaW1nIHdoZW4gaW1nIGlzL2FyZSByZW1vdmVkXG4gICAgdGhpcy5pbWdSZW1vdmVkRXZlbnQgPSB0aGlzLmltZ0V2ZW50U2VydmljZS5nZXRJbWdSZW1vdmVkRXZlbnRMaXN0bmVyKCkuc3Vic2NyaWJlKGlkX2ZpbGUgPT57XG4gICAgICB0aGlzLmdldEltZ0xpc3QoKTtcbiAgICB9KTtcblxuICAgIC8vIENyZWF0ZSBpbWcgZnJvbSBDYW52YVxuICAgIHRoaXMuaW1nQWRkZWRFdmVudCA9IHRoaXMuaW1nRXZlbnRTZXJ2aWNlLmdldEltZ0FkZGVkRXZlbnRMaXN0bmVyKCkuc3Vic2NyaWJlKGlkX2ZpbGUgPT57XG4gICAgICBpZiAoaWRfZmlsZSAmJiAhdGhpcy5pbWdBbHJlYWR5RXhpc3QoaWRfZmlsZSkpIHtcbiAgICAgICAgdGhpcy5nZXRJbWcoaWRfZmlsZSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLmltZ1NlbGVjdGlvbkNoYW5nZSA9IHRoaXMuaW1nU2VsZWN0aW9uU2VydmljZS5nZXRJbWdTZWxlY3Rpb25DaGFuZ2UoKS5zdWJzY3JpYmUoaW1nU2VsZWN0aW9uID0+e1xuICAgICAgaWYgKHRoaXMubGlzdERpc3BsYXllZCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjb25zdCBpZEZpbGVMaXN0ID0gW107XG4gICAgICBpbWdTZWxlY3Rpb24ubWFwKGltZyA9PiBpZEZpbGVMaXN0LnB1c2goaW1nLmlkX2ZpbGUpKTtcbiAgICAgIGZvciAoY29uc3QgcGljdHVyZSBvZiB0aGlzLnBpY3R1cmVzTGlzdCkge1xuICAgICAgICBpZiAoaWRGaWxlTGlzdC5pbmRleE9mKHBpY3R1cmUuaWRfZmlsZSkgPT09IC0xKSB7XG4gICAgICAgICAgcGljdHVyZS5zZWxlY3RlZCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9nZXRJbWdMaXN0KCkge1xuICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcbiAgICB0aGlzLmRpc3BsYXlQZXhlbHNSZXN1bHRzID0gZmFsc2U7XG4gICAgdGhpcy5zZXRQYXJhbXMoKTtcblxuICAgIHRoaXMucmVmcmVzaFRvdGFsSW1nTGlzdCgpO1xuXG4gICAgdGhpcy5pbWdNYW5hZ2VyLmdldFNob3BJbWdMaXN0KHRoaXMucGFyYW1zKS5waXBlKHRha2UoMSkpLnN1YnNjcmliZSgoZGF0YTogSW1nUGljdHVyZXNEVE8pID0+IHtcbiAgICAgIHRoaXMuaW5pdFZhcmlhYmxlcyh0cnVlKTtcbiAgICAgIGNvbnN0IG5iSW1nRGlzcGxheWVkID0gZGF0YS5kYXRhLmxlbmd0aDtcbiAgICAgIHRoaXMuY2FsY3VsTmJJbWdGYWtlKG5iSW1nRGlzcGxheWVkKTtcbiAgICAgIHRoaXMucGljdHVyZXNMaXN0ID0gZGF0YS5kYXRhO1xuICAgICAgdGhpcy5yZW5hbWVQaWN0dXJlU2VydmljZS5zZXRQaWN0dXJlc0xpc3QodGhpcy5waWN0dXJlc0xpc3QpO1xuICAgICAgdGhpcy5zZWxlY3RJbWdTZWxlY3RlZCgpO1xuXG4gICAgICB0aGlzLmxlbmd0aCA9IHRoaXMuaXNUb3RhbFJldGlldmVkID8gdGhpcy5sZW5ndGggOiBkYXRhLnRvdGFsUmVjb3JkcztcbiAgICAgIHRoaXMudGFibGVGaWx0ZXJzLnRvdGFsSXRlbXMgPSB0aGlzLmlzVG90YWxSZXRpZXZlZCA/IHRoaXMudGFibGVGaWx0ZXJzLnRvdGFsSXRlbXMgOiBkYXRhLnRvdGFsUmVjb3JkcztcbiAgICAgIHRoaXMudGFibGVGaWx0ZXJzLml0ZW1zUGVyUGFnZSA9ICB0aGlzLnRhYmxlRmlsdGVycy5pdGVtc1BlclBhZ2UgPyAgdGhpcy50YWJsZUZpbHRlcnMuaXRlbXNQZXJQYWdlIDogdGhpcy5wYWdlU2l6ZTtcblxuICAgICAgLy8gRGlzcGxheSBQZXhlbHMgaWYgbm8gcmVzdWx0XG4gICAgICBpZiAoZGF0YS50b3RhbFJlY29yZHMgPT09IDApIHtcbiAgICAgICAgdGhpcy5kaXNwbGF5UGV4ZWxzTGliKCk7XG4gICAgICB9XG5cbiAgICB9LFxuICAgIGVycm9yID0+IHtcbiAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLm9wZW5BbGVydCh0aGlzLmVycm9yR2V0QWxsSW1nKTtcbiAgICAgIHRoaXMuaW5pdFZhcmlhYmxlcyhmYWxzZSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHJlZnJlc2hUb3RhbEltZ0xpc3QoKSB7XG4gICAgY29uc3Qgc2VhcmNoVmFsdWUgPSB0aGlzLnRhYmxlRmlsdGVycy5zZWFyY2hWYWx1ZTtcblxuICAgIGlmICh0aGlzLmlzVG90YWxSZXRpZXZlZCAmJiBzZWFyY2hWYWx1ZSA9PT0gdGhpcy5wcmV2aW91c1NlYXJjaFZhbHVlKSB7XG4gICAgICAvLyBLZWVwIGN1cnJlbnQgdG90YWwgcmVzdWx0XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5pc1RvdGFsUmV0aWV2ZWQgPSBmYWxzZTtcblxuICAgIHRoaXMuaW1nTWFuYWdlci5nZXRTaG9wVG90YWxJbWdMaXN0KHRoaXMucGFyYW1zKS5waXBlKHRha2UoMSkpLnN1YnNjcmliZShcblxuICAgICAgKGRhdGE6IEltZ1BpY3R1cmVzRFRPKSA9PiB7XG4gICAgICAgIHRoaXMucHJldmlvdXNTZWFyY2hWYWx1ZSA9IHNlYXJjaFZhbHVlO1xuICAgICAgICB0aGlzLmlzVG90YWxSZXRpZXZlZCA9IHRydWU7XG4gICAgICAgIHRoaXMubGVuZ3RoID0gZGF0YS50b3RhbFJlY29yZHM7XG4gICAgICAgIHRoaXMudGFibGVGaWx0ZXJzLnRvdGFsSXRlbXMgPSBkYXRhLnRvdGFsUmVjb3JkcztcbiAgICAgIH0sXG5cbiAgICAgIGVycm9yID0+IHtcbiAgICAgICAgLy90aGlzLmFsZXJ0U2VydmljZS5vcGVuQWxlcnQodGhpcy5lcnJvckdldFRvdGFsSW1nKTtcbiAgICAgICAgdGhpcy5pbml0VmFyaWFibGVzKGZhbHNlKTtcbiAgICB9KTtcbiAgfVxuXG4gIHN3aXRjaERpc3BsYXlXaW5kb3dNb3NhaWMoKSB7XG4gICAgdGhpcy5zd2l0Y2hEaXNwbGF5V2luZG93LmVtaXQodHJ1ZSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnNlYXJjaFF1ZXJ5Q2hhbmdlZC51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuaW1nUmVtb3ZlZEV2ZW50LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5pbWdBZGRlZEV2ZW50LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5pbWdTZWxlY3Rpb25DaGFuZ2UudW5zdWJzY3JpYmUoKTtcbiAgfVxufVxuIl19
|
|
535
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2VzLXZpZXcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHdpemlzaG9wL2ltZy1tYW5hZ2VyLyIsInNvdXJjZXMiOlsibGliL2NvbXBvbmVudHMvaW1hZ2VzLXZpZXcvaW1hZ2VzLXZpZXcuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFVLEtBQUssRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFpQixNQUFNLEVBQUUsWUFBWSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRW5ILE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBZ0IsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDcEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBRzNFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUM3RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sdURBQXVELENBQUM7QUFFckYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDN0UsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBVTVEO0lBd0lFLDZCQUNVLFVBQTZCLEVBQzdCLGVBQWdDLEVBQ2hDLG1CQUF3QyxFQUN4QyxZQUEwQixFQUMxQixtQkFBd0MsRUFDeEMsb0JBQTBDO1FBTDFDLGVBQVUsR0FBVixVQUFVLENBQW1CO1FBQzdCLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNoQyx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBQ3hDLGlC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RSxhQUFhO1lBQ3ZCLGcwTkFBMkM7WUFDM0MsVUFBVSxFQUFFO2dCQUNWLFNBQVM7Z0JBQ1QsWUFBWTthQUNiO1NBQ0YsQ0FBQzt5Q0EwSXNCLGlCQUFpQjtZQUNaLGVBQWU7WUFDWCxtQkFBbUI7WUFDMUIsWUFBWTtZQUNMLG1CQUFtQjtZQUNsQixvQkFBb0I7T0E5SXpDLG1CQUFtQixDQXVnQi9CO0lBQUQsMEJBQUM7Q0FBQSxBQXZnQkQsSUF1Z0JDO1NBdmdCWSxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgVmlld0NoaWxkLCBFbGVtZW50UmVmLCBBZnRlclZpZXdJbml0LCBPdXRwdXQsIEV2ZW50RW1pdHRlcn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJbWdQaWN0dXJlRFRPLCBJbWdQaWN0dXJlc0RUTywgUGFyYW1zSW1nTWFuYWdlckRUTyB9IGZyb20gJy4uLy4uL2R0by9pbWctbWFuYWdlci5kdG8nO1xuaW1wb3J0IHsgSW1nTWFuYWdlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9pbWctbWFuYWdlci5zZXJ2aWNlJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiwgU3ViamVjdH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBJbWdFdmVudFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9pbWctZXZlbnQuc2VydmljZSc7XG5pbXBvcnQgeyBJbWdTZWxlY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvaW1nLXNlbGVjdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IFVzZXJTZXR0aW5nc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy91c2VyLXNldHRpbmdzLnNlcnZpY2UnO1xuaW1wb3J0IHsgVGFibGVGaWx0ZXJzIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdGFibGUvZmlsdGVycy10YWJsZS5zZXJ2aWNlJztcbmltcG9ydCB7IFBpY3R1cmVOYW1lVXBkYXRlIH0gZnJvbSAnLi4vLi4vZHRvL3BpY3R1cmUtbmFtZS11cGRhdGUuZHRvJztcbmltcG9ydCB7IGVhc2VJbk91dCB9IGZyb20gJy4uLy4uL2FuaW1hdGlvbnMvZWFzZUluT3V0L2Vhc2UtaW4tb3V0LmFuaW1hdGlvbic7XG5pbXBvcnQgeyBpbnNlcnRSZW1vdmUgfSBmcm9tICcuLi8uLi9hbmltYXRpb25zL2luc2VydFJlbW92ZS9pbnNlcnQtcmVtb3ZlLmFuaW1hdGlvbic7XG5pbXBvcnQgeyBzdGF0ZURpc3BsYXllZCwgdGFiRGlzcGxheWVkIH0gZnJvbSAnLi4vLi4vZHRvL2V4cG9ydC1kdG9zLmFwaSc7XG5pbXBvcnQgeyBSZW5hbWVQaWN0dXJlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3JlbmFtZS1waWN0dXJlLnNlcnZpY2UnO1xuaW1wb3J0IHsgQWxlcnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvYWxlcnQuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2ltYWdlcy12aWV3JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2ltYWdlcy12aWV3LmNvbXBvbmVudC5odG1sJyxcbiAgYW5pbWF0aW9uczogW1xuICAgIGVhc2VJbk91dCxcbiAgICBpbnNlcnRSZW1vdmVcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBJbWFnZXNWaWV3Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcblxuICBASW5wdXQoKSBzdGF0ZURpc3BsYXllZDogc3RhdGVEaXNwbGF5ZWQ7XG4gIEBJbnB1dCgpIHRhYkRpc3BsYXllZDogdGFiRGlzcGxheWVkO1xuICBASW5wdXQoKSBmdWxsU2l6ZTogYm9vbGVhbjtcbiAgQElucHV0KCkgbWF4TGVuZ3RoQ2FyZFNob3c6IG51bWJlcjtcbiAgQElucHV0KCkgbmJSb3dUb1Nob3c6IG51bWJlcjtcbiAgQElucHV0KCkgbGlzdERpc3BsYXllZCA9IGZhbHNlOyAvLyBEaXNwbGF5IGZvcm1hdCBsaXN0IG9yIG1vc2FpY1xuICBASW5wdXQoKSBtdWx0aXBsZUltZ01vZGUgPSBmYWxzZTtcbiAgQE91dHB1dCgpXG4gIHN3aXRjaERpc3BsYXlXaW5kb3c6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAvLyBEYXRhIGZpbHRlcnNcbiAgdGFibGVGaWx0ZXJzOiBUYWJsZUZpbHRlcnMgPSB7XG4gICAgc29ydDogdW5kZWZpbmVkLFxuICAgIG9yZGVyOiB1bmRlZmluZWQsXG4gICAgc2VhcmNoVmFsdWU6ICcnLFxuICAgIHRvdGFsSXRlbXM6IDAsXG4gICAgaXRlbXNQZXJQYWdlOiAwLFxuICAgIGN1cnJlbnRQYWdlOiAxXG4gIH07XG5cbiAgQFZpZXdDaGlsZCgnaW1nTGliQ29udGFpbmVyJykgaW1nTGliQ29udGFpbmVyIDogRWxlbWVudFJlZjtcbiAgd2lkdGhMYXJnZUNhcmQ6IG51bWJlciA9IDIxOTsgLy8gRGVmYXVsdCB2YWx1ZSBvZiBhIGNhcmQgd2lkdGggMTk5ICsgbWFyZ2luIDIwXG4gIHdpZHRoU21hbGxDYXJkOiBudW1iZXIgPSAxNjA7IC8vIERlZmF1bHQgdmFsdWUgb2YgYSBjYXJkIHdpZHRoIDE0MCArIG1hcmdpbiAyMFxuICBuYk1pbkltZ1BlckxpbmU6IG51bWJlcjtcbiAgbmJNYXhJbWdQZXJMaW5lOiBudW1iZXI7XG4gIG5iRmFrZUltZzogbnVtYmVyID0gMDtcblxuICBpbWdGdWxsV2lkdGhDb25maWc6YW55ID0gW1xuICAgIHtcbiAgICAgIG1heDogNDE5LFxuICAgICAgbGFyZ2VJbWdXaWR0aEZhY3RvciA6IDEsXG4gICAgICBzbWFsbEltZ1dpZHRoRmFjdG9yIDogMC41XG4gICAgfSxcbiAgICB7XG4gICAgICBtYXg6IDQ5OSxcbiAgICAgIGxhcmdlSW1nV2lkdGhGYWN0b3IgOiAxLFxuICAgICAgc21hbGxJbWdXaWR0aEZhY3RvciA6IDAuNVxuICAgIH0sXG4gICAge1xuICAgICAgbWF4OiA3MTksIC8vIHRhYmxldFxuICAgICAgbGFyZ2VJbWdXaWR0aEZhY3RvciA6IDAuNSxcbiAgICAgIHNtYWxsSW1nV2lkdGhGYWN0b3IgOiAwLjMzMzNcbiAgICB9LFxuICAgIHtcbiAgICAgIG1heDogMTAyMywgLy8gZGVza29wXG4gICAgICBsYXJnZUltZ1dpZHRoRmFjdG9yIDogMC4zMzMzLFxuICAgICAgc21hbGxJbWdXaWR0aEZhY3RvciA6IDAuMlxuICAgIH0sXG4gICAge1xuICAgICAgbWF4OiAxMzk5LFxuICAgICAgbGFyZ2VJbWdXaWR0aEZhY3RvciA6IDAuMjUsXG4gICAgICBzbWFsbEltZ1dpZHRoRmFjdG9yIDogMC4xMjVcbiAgICB9LFxuICAgIHtcbiAgICAgIG1heDogMTU5OSxcbiAgICAgIGxhcmdlSW1nV2lkdGhGYWN0b3IgOiAwLjIsXG4gICAgICBzbWFsbEltZ1dpZHRoRmFjdG9yIDogMC4xMTExXG4gICAgfSxcbiAgICB7XG4gICAgICBsYXJnZUltZ1dpZHRoRmFjdG9yIDogMC4xNjY2LFxuICAgICAgc21hbGxJbWdXaWR0aEZhY3RvciA6IDAuMVxuICAgIH1cbiAgXTtcblxuICBpbWdXaWR0aENvbmZpZzphbnkgPSBbXG4gICAge1xuICAgICAgbWF4OiAxMDI0LFxuICAgICAgbGFyZ2VJbWdXaWR0aEZhY3RvciA6IDAuMjUsXG4gICAgICBzbWFsbEltZ1dpZHRoRmFjdG9yIDogMC4xMjVcbiAgICB9LFxuICAgIHtcbiAgICAgIG1heDogMTE5OSxcbiAgICAgIGxhcmdlSW1nV2lkdGhGYWN0b3IgOiAwLjMzMzMsXG4gICAgICBzbWFsbEltZ1dpZHRoRmFjdG9yIDogMC4yXG4gICAgfSxcbiAgICB7XG4gICAgICBtYXg6IDEyOTksXG4gICAgICBsYXJnZUltZ1dpZHRoRmFjdG9yIDogMC4zMzMzLFxuICAgICAgc21hbGxJbWdXaWR0aEZhY3RvciA6IDAuMTY2NlxuICAgIH0sXG4gICAge1xuICAgICAgbWF4OiAxMzk5LFxuICAgICAgbGFyZ2VJbWdXaWR0aEZhY3RvciA6IDAuMjUsXG4gICAgICBzbWFsbEltZ1dpZHRoRmFjdG9yIDogMC4xNjY2XG4gICAgfSxcbiAgICB7XG4gICAgICBtYXg6IDE1OTksXG4gICAgICBsYXJnZUltZ1dpZHRoRmFjdG9yIDogMC4yNSxcbiAgICAgIHNtYWxsSW1nV2lkdGhGYWN0b3IgOiAwLjE0XG4gICAgfSxcbiAgICB7XG4gICAgICBsYXJnZUltZ1dpZHRoRmFjdG9yIDogMC4yNSxcbiAgICAgIHNtYWxsSW1nV2lkdGhGYWN0b3IgOiAwLjEyNVxuICAgIH1cbiAgXTtcblxuICBpbWdTdWJzY3JpYmU6IFN1YnNjcmlwdGlvbjtcbiAgaW1nUmVtb3ZlZEV2ZW50OiBTdWJzY3JpcHRpb247XG4gIGltZ0FkZGVkRXZlbnQ6IFN1YnNjcmlwdGlvbjtcbiAgaW1nU2VsZWN0aW9uQ2hhbmdlOiBTdWJzY3JpcHRpb247XG4gIHNlYXJjaFF1ZXJ5Q2hhbmdlZDogU3ViamVjdDxzdHJpbmc+ID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpO1xuICBmaWx0ZXJzQ2hhbmdlZDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgcGljdHVyZXNMaXN0OiBJbWdQaWN0dXJlRFRPW10gPSBbXTtcbiAgc2F2ZVBpY3R1cmVMaXN0OiBJbWdQaWN0dXJlRFRPW10gPSBbXTtcbiAgaW1nU2VsZWN0ZWRMaXN0OiBJbWdQaWN0dXJlRFRPW107XG4gIHNlYXJjaGVkVmFsdWU6IHN0cmluZzsgLy8gVmFsdWUgZnJvbSB0aGUgc2VhcmNoIGJhciBvciBpbWcgYWRkZWQgYnkgY2FudmFcbiAgbmJJbWdUb0RlbFNlbGVjdGVkOiBudW1iZXIgPSAwO1xuICBkaXNhYmxlOiBib29sZWFuID0gZmFsc2U7IC8vIFVzZSB0byBkaXNhYmxlIGFjdGlvbiBkdXJpbmcgc2VydmVyIHJlcXVlc3RcbiAgaXNMb2FkaW5nOiBib29sZWFuID0gdHJ1ZTtcbiAgaXNUb3RhbFJldGlldmVkOiBib29sZWFuID0gZmFsc2U7XG4gIGRlbExpc3RJbWdMb2FkZXIgPSBmYWxzZTtcbiAgaW5pdENvbXBvbmVudDogYm9vbGVhbiA9IHRydWU7XG4gIGZhaWxMb2FkZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgZGlzcGxheVBleGVsc1Jlc3VsdHM6IGJvb2xlYW4gPSBmYWxzZTsgLy8gVXNlIHdoZW4gbm8gaW1nIGZpbmQgYnkgbmFtZSwgZGlzcGxheSBpbWcgZnJvbSBQZXhlbHNcbiAgc2VhcmNoVGV4dDogc3RyaW5nO1xuICBjb25maXJtSW1nU3VwOmJvb2xlYW4gPSBmYWxzZTtcbiAgcHJldmlvdXNTZWFyY2hWYWx1ZTogc3RyaW5nO1xuXG4gIC8vIFBhZ2luYXRvciBQYXJhbXNcbiAgcGFnZUluZGV4OiBudW1iZXIgPTA7XG4gIGxlbmd0aDogbnVtYmVyID0gMDtcbiAgcGFnZVNpemU6IG51bWJlciA9IDMwOyAvLyBEZWZhdWx0IHZhbHVlXG4gIHBhZ2VTaXplT3B0aW9uczogbnVtYmVyW10gPSBbMjUsIDUwLCAxMDAsIDI1MF07XG5cbiAgLy8gQXBpIEltZyBtYW5hZ2VyIFBhcmFtc1xuICBwYXJhbXM6UGFyYW1zSW1nTWFuYWdlckRUTztcblxuICBwcml2YXRlIGVycm9yR2V0QWxsSW1nID0gJ0ltZ01hbmFnZXIuSW1nTGliLmVycm9yR2V0QWxsSW1nJztcbiAgcHJpdmF0ZSBlcnJvckdldFRvdGFsSW1nID0gJ0ltZ01hbmFnZXIuSW1nTGliLmVycm9yR2V0VG90YWxJbWcnO1xuICBwcml2YXRlIGVycm9yR2V0SW1nID0gJ0ltZ01hbmFnZXIuSW1nTGliLmVycm9yR2V0Q2FudmFJbWcnO1xuICBwcml2YXRlIG1zZ05vSW1nRm91bmQgPSAnSW1nTWFuYWdlci5JbWdMaWIubm9JbWdGb3VuZCc7XG4gIHByaXZhdGUgZXJyb3JSZW1vdmVJbWcgPSAnSW1nTWFuYWdlci5JbWdMaXN0LmVycm9yUmVtb3ZlSW1nJztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGltZ01hbmFnZXI6IEltZ01hbmFnZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgaW1nRXZlbnRTZXJ2aWNlOiBJbWdFdmVudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBpbWdTZWxlY3Rpb25TZXJ2aWNlOiBJbWdTZWxlY3Rpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgYWxlcnRTZXJ2aWNlOiBBbGVydFNlcnZpY2UsXG4gICAgcHJpdmF0ZSB1c2VyU2V0dGluZ3NTZXJ2aWNlOiBVc2VyU2V0dGluZ3NTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVuYW1lUGljdHVyZVNlcnZpY2U6IFJlbmFtZVBpY3R1cmVTZXJ2aWNlKSB7IH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAvKiBpZiAodGhpcy5tYXhMZW5ndGhDYXJkU2hvdykge1xuICAgICAgdGhpcy5yZWR1Y2VQaWN0dXJlTGlzdE1heExlbmd0aCgpO1xuICAgIH0gKi9cbiAgICB0aGlzLnNldEV2ZW50cygpO1xuICAgIHRoaXMuaW1nU2VsZWN0ZWRMaXN0ID0gdGhpcy5pbWdTZWxlY3Rpb25TZXJ2aWNlLmdldEltZ1NlbGVjdGlvbigpO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHRoaXMuc2V0TmJJbWdUb0Rpc3BsYXkoKTtcbiAgICB0aGlzLl9nZXRJbWdMaXN0KCk7XG4gICAgaWYgKCF0aGlzLnNhdmVQaWN0dXJlTGlzdCkge1xuICAgICAgdGhpcy5zYXZlUGljdHVyZUxpc3QgPSB0aGlzLnBpY3R1cmVzTGlzdDtcbiAgICB9XG4gIH1cblxuICAvKiByZWR1Y2VQaWN0dXJlTGlzdE1heExlbmd0aCgpIHtcbiAgICB0aGlzLnBpY3R1cmVzTGlzdC5zcGxpY2UoMCwgdGhpcy5tYXhMZW5ndGhDYXJkU2hvdyk7XG4gIH0gKi9cblxuICBnZXRJbWdMaXN0KCkge1xuICAgIHRoaXMuZmlsdGVyc0NoYW5nZWQubmV4dCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIHRydWUgOiBnbyB0byBsaXN0IGRpc3BsYXlcbiAgICogZmFsc2UgOiBnbyB0byBtb3NhaWMgZGlzcGxheVxuICAgKiBAcGFyYW0gYWN0aXZhdGVcbiAgICovXG4gIG9uU3dpdGNoRm9ybWF0RGlzcGxheWVkKGFjdGl2YXRlOiBib29sZWFuKSB7XG4gICAgdGhpcy5saXN0RGlzcGxheWVkID0gYWN0aXZhdGU7XG4gICAgdGhpcy51c2VyU2V0dGluZ3NTZXJ2aWNlLnNldFVzZXJEaXNwbGF5UHJlZmVyZW5jZShhY3RpdmF0ZSk7XG4gICAgdGhpcy5pbWdFdmVudFNlcnZpY2UuZW1pdGxpc3REaXNwbGF5ZWRDaGFuZ2UoYWN0aXZhdGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGN1bCB0aGUgbnVtYmVyIG9mIGltZyBzZWxlY3RlZCBmb3IgbWFzc2UgZGVsZXRpb25cbiAgICovXG4gIG9uSW1nU2VsZWN0ZWQoKSB7XG4gICAgdGhpcy5zZXROYkltZ1RvRGVsU2VsZWN0ZWQoKTtcbiAgfVxuXG4gIG9uU2hvd0ltZ1VwbG9hZGVkKCkge1xuICAgIHRoaXMuc2VhcmNoVGV4dCA9IG51bGw7XG4gICAgdGhpcy5zZWFyY2hlZFZhbHVlID0gbnVsbDtcbiAgICB0aGlzLmdldEltZ0xpc3QoKTtcbiAgfVxuXG4gIG9uUmVuYW1lUGljdHVyZShwaWN0dXJlUmVuYW1lZDogUGljdHVyZU5hbWVVcGRhdGUpIHtcbiAgICBjb25zb2xlLmxvZygnb25SZW5hbWVQaWN0dXJlIHBpY3R1cmVSZW5hbWVkJywgcGljdHVyZVJlbmFtZWQpO1xuICAgIHRoaXMucmVuYW1lUGljdHVyZVNlcnZpY2Uub25SZW5hbWVQaWN0dXJlKHBpY3R1cmVSZW5hbWVkKTtcbiAgfVxuXG4gIHJlbW92ZUxpc3RJbWcoKSB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmRpc2FibGUgPSB0cnVlO1xuICAgIHRoaXMuZGVsTGlzdEltZ0xvYWRlciA9IHRydWU7XG4gICAgdGhpcy5jb25maXJtSW1nU3VwID0gZmFsc2U7XG5cbiAgICAvLyBHZXQgdGhlIGlkIG9mIHRoZSBpbWcgdG8gcmVtb3ZlXG4gICAgLy8gQW5kIGFkZCBkZWxldGVkIHByb3BlcnR5XG4gICAgY29uc3QgaWRJbWdUb1JlbW92ZTogc3RyaW5nW10gPSBbXTtcbiAgICB0aGlzLnBpY3R1cmVzTGlzdC5mb3JFYWNoKCBpbWcgPT4ge1xuICAgICAgaWYgKGltZy5kZWxTZWxlY3RlZCkge1xuICAgICAgICBpbWcuZGVsZXRlZCA9IHRydWU7XG4gICAgICAgIGlkSW1nVG9SZW1vdmUucHVzaChpbWcuaWRfZmlsZSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLmltZ01hbmFnZXIucmVtb3ZlTXVsdGlwbGVJbWcoaWRJbWdUb1JlbW92ZSkuc3Vic2NyaWJlKFxuICAgICAgKCkgPT4ge1xuICAgICAgICB0aGlzLmdldEltZ0xpc3QoKTtcbiAgICAgICAgdGhpcy5pbWdTZWxlY3Rpb25TZXJ2aWNlLnJlbW92ZUltZ1NlbGVjdGlvbkJ5SWRzKGlkSW1nVG9SZW1vdmUpO1xuICAgICAgfSxcbiAgICAgIGVycm9yID0+IHtcbiAgICAgICAgdGhpcy5nZXRJbWdMaXN0KCk7XG4gICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLm9wZW5BbGVydCh0aGlzLmVycm9yUmVtb3ZlSW1nKTtcbiAgICAgIH1cbiAgICApO1xuXG5cbiAgfVxuXG4gIHNlbGVjdEltZ0Nob3NlbigpIHtcbiAgICBpZiAodGhpcy5kaXNhYmxlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHBpY3R1cmVzTGlzdFNlbGVjdGVkOiBJbWdQaWN0dXJlRFRPW10gPSBbXTtcbiAgICB0aGlzLnBpY3R1cmVzTGlzdC5tYXAoaW1nID0+IHtcbiAgICAgIGlmKGltZy5kZWxTZWxlY3RlZCkge1xuICAgICAgICBpbWcuZGVsU2VsZWN0ZWQgPWZhbHNlO1xuICAgICAgICBpbWcuc2VsZWN0ZWQgPSB0cnVlO1xuICAgICAgfVxuICAgICAgaWYgKGltZy5zZWxlY3RlZCkge1xuICAgICAgICBwaWN0dXJlc0xpc3RTZWxlY3RlZC5wdXNoKGltZyk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5zZXROYkltZ1RvRGVsU2VsZWN0ZWQoKTtcbiAgICB0aGlzLmltZ1NlbGVjdGlvblNlcnZpY2Uuc2V0SW1nU2VsZWN0aW9uKHBpY3R1cmVzTGlzdFNlbGVjdGVkKTtcbiAgfVxuXG4gIGRpc3BsYXlDb25maXJtSW1nU3VwKCl7XG4gICAgaWYgKHRoaXMuZGlzYWJsZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmNvbmZpcm1JbWdTdXAgPSB0cnVlO1xuICB9XG5cbiAgY2FuY2VsU3VwKCkge1xuICAgIHRoaXMuY29uZmlybUltZ1N1cCA9IGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIEV2ZW50IGVtaXQgd2hlbiBhIGltZyBzZWxlY3RlZCBpbiBvcmRlciB0byBkZWxldGVcbiAgICovXG4gIG9uUGljdHVyZXNMaXN0Q2hhbmdlKCkge1xuICAgIHRoaXMuc2V0TmJJbWdUb0RlbFNlbGVjdGVkKCk7XG4gIH1cblxuICBvbkZpbHRlcnNDaGFuZ2UoKSB7XG4gICAgdGhpcy5nZXRJbWdMaXN0KCk7XG4gIH1cblxuICAvKipcbiAgICogU2V0IGRlZmF1bHQgbnVtYmVyIG9mIGltZyBwZXIgcGFnZSB0byBkaXNwbGF5IGF0IHRoZSBpbml0aWFsaXNhdGlvblxuICAgKiBUaGlzIG51bWJlciBpcyBiZXR3ZWVuIDMwIGFuZCA1MFxuICAgKi9cbiAgcHJpdmF0ZSBzZXROYkltZ1RvRGlzcGxheSgpIHtcbiAgICBjb25zdCBjb250YWluZXJXaWR0aCA9IHRoaXMuaW1nTGliQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGggKyAzMDsgLy8gKyAzMHB4IC0+IGxlZnQgKyByaWdodCBtYXJnaW5cbiAgICBjb25zdCBzY3JvbGxXaWR0aCA9IHdpbmRvdy5pbm5lcldpZHRoIC0gZG9jdW1lbnQuYm9keS5vZmZzZXRXaWR0aDtcblxuICAgIGNvbnN0IFttYXhJbWdXaWR0aEZhY3RvciwgbWluSW1nV2lkdGhGYWN0b3JdID0gdGhpcy5nZXRJbWdXaWR0aEZhY3RvcnMoKTtcblxuICAgIGNvbnN0IG1pbkltZ1dpZHRoID0gTWF0aC5mbG9vcihjb250YWluZXJXaWR0aCAqIG1pbkltZ1dpZHRoRmFjdG9yKTtcbiAgICBjb25zdCBtYXhJbWdXaWR0aCA9IE1hdGguY2VpbCgoY29udGFpbmVyV2lkdGggKyBzY3JvbGxXaWR0aCApICogbWF4SW1nV2lkdGhGYWN0b3IpO1xuXG4gICAgdGhpcy5uYk1heEltZ1BlckxpbmUgPSBNYXRoLmZsb29yKGNvbnRhaW5lcldpZHRoIC8gbWluSW1nV2lkdGgpO1xuICAgIHRoaXMubmJNaW5JbWdQZXJMaW5lID0gTWF0aC5mbG9vciggKGNvbnRhaW5lcldpZHRoICsgc2Nyb2xsV2lkdGggKSAvIG1heEltZ1dpZHRoKTtcblxuICAgIHRoaXMucGFnZVNpemUgPSB0aGlzLmdldFRvdGFsSW1nUGVyUGFnZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRJbWdXaWR0aEZhY3RvcnMoKTogbnVtYmVyW10ge1xuICAgIGNvbnN0IHNjcmVlbldpZHRoID0gd2luZG93LmlubmVyV2lkdGg7XG4gICAgbGV0IG1pbldpZHRoOm51bWJlciA9IDA7XG4gICAgbGV0IGltZ1NpemVzQ29uZmlnOiBudW1iZXJbXSA9IFtdO1xuXG4gICAgY29uc3QgY3VycmVudEltZ1dpZHRoQ29uZmlnID0gdGhpcy5mdWxsU2l6ZSA/IHRoaXMuaW1nRnVsbFdpZHRoQ29uZmlnIDogdGhpcy5pbWdXaWR0aENvbmZpZztcblxuICAgIGZvciAoY29uc3Qgd2lkdGhDb25maWcgb2YgY3VycmVudEltZ1dpZHRoQ29uZmlnKSB7XG4gICAgICAgIGlmICghd2lkdGhDb25maWcubWF4KSB7XG4gICAgICAgICAgaW1nU2l6ZXNDb25maWcgPSBbd2lkdGhDb25maWcubGFyZ2VJbWdXaWR0aEZhY3Rvciwgd2lkdGhDb25maWcuc21hbGxJbWdXaWR0aEZhY3Rvcl07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG1pbldpZHRoIDwgc2NyZWVuV2lkdGggJiYgc2NyZWVuV2lkdGggPD0gd2lkdGhDb25maWcubWF4KSB7XG4gICAgICAgICAgaW1nU2l6ZXNDb25maWcgPSBbd2lkdGhDb25maWcubGFyZ2VJbWdXaWR0aEZhY3Rvciwgd2lkdGhDb25maWcuc21hbGxJbWdXaWR0aEZhY3Rvcl07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgbWluV2lkdGggPSB3aWR0aENvbmZpZy5tYXg7XG4gICAgfVxuICAgIHJldHVybiBpbWdTaXplc0NvbmZpZztcbiAgfVxuXG4gIHByaXZhdGUgZ2V0VG90YWxJbWdQZXJQYWdlKCk6IG51bWJlciB7XG4gICAgaWYgKHRoaXMubmJSb3dUb1Nob3cpIHtcbiAgICAgIGNvbnN0IG5iSW1nUGVyTGluZSA9IHRoaXMuc3RhdGVEaXNwbGF5ZWQgPT09ICdmdWxsJyA/IHRoaXMubmJNaW5JbWdQZXJMaW5lIDogdGhpcy5uYk1heEltZ1BlckxpbmU7XG4gICAgICByZXR1cm4gbmJJbWdQZXJMaW5lICogdGhpcy5uYlJvd1RvU2hvdztcbiAgICB9XG5cbiAgICBsZXQgdG90YWwgPSB0aGlzLm5iTWluSW1nUGVyTGluZTtcblxuICAgIHdoaWxlICh0b3RhbCA8IDMwIHx8IHRvdGFsICUgdGhpcy5uYk1heEltZ1BlckxpbmUgIT09IDAgfHwgIHRvdGFsICUgdGhpcy5uYk1pbkltZ1BlckxpbmUgIT09IDApIHtcbiAgICAgIHRvdGFsICs9IHRoaXMubmJNaW5JbWdQZXJMaW5lO1xuICAgIH1cbiAgICByZXR1cm4gdG90YWw7XG4gIH1cblxuICBwcml2YXRlIHNldFBhcmFtcygpIHtcbiAgICB0aGlzLnBhcmFtcyA9IHtcbiAgICAgIGxpbWl0OiB0aGlzLm1heExlbmd0aENhcmRTaG93Py50b1N0cmluZygpIHx8ICh0aGlzLnRhYmxlRmlsdGVycy5pdGVtc1BlclBhZ2UgPyB0aGlzLnRhYmxlRmlsdGVycy5pdGVtc1BlclBhZ2UudG9TdHJpbmcoKSA6IHRoaXMucGFnZVNpemUudG9TdHJpbmcoKSksXG4gICAgICBwYWdlOiB0aGlzLnRhYmxlRmlsdGVycy5jdXJyZW50UGFnZS50b1N0cmluZygpXG4gICAgfTtcbiAgICBpZiAodGhpcy50YWJsZUZpbHRlcnMuc2VhcmNoVmFsdWUpIHtcbiAgICAgIHRoaXMucGFyYW1zW1wiZGlzcGxheV9uYW1lOmNvbnRhaW5zXCJdID0gdGhpcy50YWJsZUZpbHRlcnMuc2VhcmNoVmFsdWUudG9TdHJpbmcoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGluaXRWYXJpYWJsZXMobG9hZGluZ1N1Y2Nlc3M6IGJvb2xlYW4pIHtcbiAgICB0aGlzLm5iSW1nVG9EZWxTZWxlY3RlZCA9IDA7XG4gICAgdGhpcy5kaXNhYmxlID0gZmFsc2U7XG4gICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgICB0aGlzLmRlbExpc3RJbWdMb2FkZXIgPSBmYWxzZTtcbiAgICB0aGlzLmluaXRDb21wb25lbnQgPSBmYWxzZTtcbiAgICB0aGlzLmRpc3BsYXlQZXhlbHNSZXN1bHRzID0gZmFsc2U7XG4gICAgdGhpcy5mYWlsTG9hZGVkID0gIWxvYWRpbmdTdWNjZXNzO1xuICAgIHRoaXMubmJGYWtlSW1nID0gMDtcbiAgfVxuXG4gIHByaXZhdGUgc2VsZWN0SW1nU2VsZWN0ZWQgKCkge1xuICAgIGlmICghdGhpcy5pbWdTZWxlY3RlZExpc3QgfHwgIXRoaXMuaW1nU2VsZWN0ZWRMaXN0Lmxlbmd0aCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGlkSW1nU2xlY3RlZExpc3Q6IHN0cmluZ1tdID0gW107XG5cbiAgICB0aGlzLmltZ1NlbGVjdGVkTGlzdC5mb3JFYWNoKGltZyA9PlxuICAgICAgaWRJbWdTbGVjdGVkTGlzdC5wdXNoKGltZy5pZF9maWxlKVxuICAgICk7XG5cbiAgICB0aGlzLnBpY3R1cmVzTGlzdC5mb3JFYWNoKHBpY3R1cmUgPT4ge1xuICAgICAgaWYgKGlkSW1nU2xlY3RlZExpc3QuaW5kZXhPZihwaWN0dXJlLmlkX2ZpbGUpICE9PSAtMSkge1xuICAgICAgICBwaWN0dXJlLnNlbGVjdGVkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZGlzcGxheVBleGVsc0xpYiAoKSB7XG4gICAgdGhpcy5kaXNwbGF5UGV4ZWxzUmVzdWx0cyA9IHRydWU7XG4gICAgdGhpcy5hbGVydFNlcnZpY2Uub3BlbkFsZXJ0KHRoaXMubXNnTm9JbWdGb3VuZCk7XG4gIH1cblxuICAvKipcbiAgICogU2V0IGEgaW1nIGxpc3QgaW4gb3JkZXIgdG8gZmlsbCBwcm9wZXJseSBhbGwgdGhlIGxpbmUgb2YgaW1hZ2VzIGRpc3BsYXllZCBpbiBtb3NhaWMuXG4gICAqIE90aGVyd2lzZSwgdGhlIHNwYWNlLWJldHdlZW4gY3NzIHdpbGwgZG8gYSBiYWQgZGlzcGxheVxuICAgKi9cbiAgcHJpdmF0ZSBjYWxjdWxOYkltZ0Zha2UobmJJbWdEaXNwbGF5ZWQ6IG51bWJlcikge1xuICAgIGNvbnN0IG5iSW1nUGVyTGluZSA9IHRoaXMuc3RhdGVEaXNwbGF5ZWQgPT09ICdzbWFsbCcgfHwgdGhpcy50YWJEaXNwbGF5ZWQgPT09ICdpbWctdXBsb2FkJyA/IHRoaXMubmJNYXhJbWdQZXJMaW5lIDogdGhpcy5uYk1pbkltZ1BlckxpbmU7XG5cbiAgICBpZiAobmJJbWdEaXNwbGF5ZWQgJSBuYkltZ1BlckxpbmUgIT09IDApIHtcbiAgICAgIHRoaXMubmJGYWtlSW1nID0gbmJJbWdQZXJMaW5lIC0gbmJJbWdEaXNwbGF5ZWQgJSBuYkltZ1BlckxpbmU7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRJbWcgKGlkX2ZpbGU6IHN0cmluZykge1xuICAgIHRoaXMuaW1nTWFuYWdlci5nZXRTaG9wSW1nKGlkX2ZpbGUpLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKFxuICAgICAgKHBpY3R1cmU6IEltZ1BpY3R1cmVEVE8pID0+IHtcblxuICAgICAgICBpZiAoIXRoaXMuaW1nQWxyZWFkeUV4aXN0KHBpY3R1cmUuaWRfZmlsZSkpIHtcbiAgICAgICAgICAvLyBjaGVjayB0aGUgaW1nIGlzIG5vdCBhbHJlYWR5IHByZXNlbnRcbiAgICAgICAgICB0aGlzLnBpY3R1cmVzTGlzdC51bnNoaWZ0KHBpY3R1cmUpO1xuICAgICAgICAgIHRoaXMubGVuZ3RoICs9IDE7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBlcnJvciA9PiB7XG4gICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLm9wZW5BbGVydCh0aGlzLmVycm9yR2V0SW1nKTtcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBpbWdBbHJlYWR5RXhpc3QgKGlkX2ZpbGU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGZvciAoY29uc3QgaW1nIG9mIHRoaXMucGljdHVyZXNMaXN0KSB7XG4gICAgICBpZiAoaW1nLmlkX2ZpbGUgPT09IGlkX2ZpbGUpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0TmJJbWdUb0RlbFNlbGVjdGVkICgpIHtcbiAgICB0aGlzLm5iSW1nVG9EZWxTZWxlY3RlZCA9IHRoaXMucGljdHVyZXNMaXN0LmZpbHRlcihpbWcgPT5cbiAgICAgIGltZy5kZWxTZWxlY3RlZCkubGVuZ3RoO1xuXG4gICAgaWYgKCF0aGlzLm5iSW1nVG9EZWxTZWxlY3RlZCkge1xuICAgICAgdGhpcy5jb25maXJtSW1nU3VwID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXRFdmVudHMoKSB7XG4gICAgLy8gQWRkIGEgdGltZXIgdG8gcmV0cmlldmUgaW1nIHdoZW4gdGhlIHNlYXJjaCBiYXIgb3IgdGhlIHBhZ2luYXRvciBhcmUgdXNlZFxuICAgIHRoaXMuc2VhcmNoUXVlcnlDaGFuZ2VkXG4gICAgICAucGlwZShkZWJvdW5jZVRpbWUoNDAwKSkgLy8gd2FpdCAwLjUgc2VjIGFmdGVyIHRoZSBsYXN0IGV2ZW50IGJlZm9yZSBlbWl0dGluZyBsYXN0IGV2ZW50XG4gICAgICAuc3Vic2NyaWJlKGRhdGEgPT4ge1xuICAgICAgICAgIHRoaXMuZ2V0SW1nTGlzdCgpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5maWx0ZXJzQ2hhbmdlZFxuICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKDgwMCkpIC8vIHdhaXQgMC44IHNlYyBhZnRlciB0aGUgbGFzdCBldmVudCBiZWZvcmUgZW1pdHRpbmcgbGFzdCBldmVudFxuICAgICAgLnN1YnNjcmliZShkYXRhID0+IHtcbiAgICAgICAgICB0aGlzLl9nZXRJbWdMaXN0KCk7XG4gICAgfSk7XG5cbiAgICAvLyBSZWxvYWQgaW1nIHdoZW4gaW1nIGlzL2FyZSByZW1vdmVkXG4gICAgdGhpcy5pbWdSZW1vdmVkRXZlbnQgPSB0aGlzLmltZ0V2ZW50U2VydmljZS5nZXRJbWdSZW1vdmVkRXZlbnRMaXN0bmVyKCkuc3Vic2NyaWJlKGlkX2ZpbGUgPT57XG4gICAgICB0aGlzLmdldEltZ0xpc3QoKTtcbiAgICB9KTtcblxuICAgIC8vIENyZWF0ZSBpbWcgZnJvbSBDYW52YVxuICAgIHRoaXMuaW1nQWRkZWRFdmVudCA9IHRoaXMuaW1nRXZlbnRTZXJ2aWNlLmdldEltZ0FkZGVkRXZlbnRMaXN0bmVyKCkuc3Vic2NyaWJlKGlkX2ZpbGUgPT57XG4gICAgICBpZiAoaWRfZmlsZSAmJiAhdGhpcy5pbWdBbHJlYWR5RXhpc3QoaWRfZmlsZSkpIHtcbiAgICAgICAgdGhpcy5nZXRJbWcoaWRfZmlsZSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLmltZ1NlbGVjdGlvbkNoYW5nZSA9IHRoaXMuaW1nU2VsZWN0aW9uU2VydmljZS5nZXRJbWdTZWxlY3Rpb25DaGFuZ2UoKS5zdWJzY3JpYmUoaW1nU2VsZWN0aW9uID0+e1xuICAgICAgaWYgKHRoaXMubGlzdERpc3BsYXllZCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjb25zdCBpZEZpbGVMaXN0ID0gW107XG4gICAgICBpbWdTZWxlY3Rpb24ubWFwKGltZyA9PiBpZEZpbGVMaXN0LnB1c2goaW1nLmlkX2ZpbGUpKTtcbiAgICAgIGZvciAoY29uc3QgcGljdHVyZSBvZiB0aGlzLnBpY3R1cmVzTGlzdCkge1xuICAgICAgICBpZiAoaWRGaWxlTGlzdC5pbmRleE9mKHBpY3R1cmUuaWRfZmlsZSkgPT09IC0xKSB7XG4gICAgICAgICAgcGljdHVyZS5zZWxlY3RlZCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9nZXRJbWdMaXN0KCkge1xuICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcbiAgICB0aGlzLmRpc3BsYXlQZXhlbHNSZXN1bHRzID0gZmFsc2U7XG4gICAgdGhpcy5zZXRQYXJhbXMoKTtcblxuICAgIHRoaXMucmVmcmVzaFRvdGFsSW1nTGlzdCgpO1xuXG4gICAgdGhpcy5pbWdNYW5hZ2VyLmdldFNob3BJbWdMaXN0KHRoaXMucGFyYW1zKS5waXBlKHRha2UoMSkpLnN1YnNjcmliZSgoZGF0YTogSW1nUGljdHVyZXNEVE8pID0+IHtcbiAgICAgIHRoaXMuaW5pdFZhcmlhYmxlcyh0cnVlKTtcbiAgICAgIGNvbnN0IG5iSW1nRGlzcGxheWVkID0gZGF0YS5kYXRhLmxlbmd0aDtcbiAgICAgIHRoaXMuY2FsY3VsTmJJbWdGYWtlKG5iSW1nRGlzcGxheWVkKTtcbiAgICAgIHRoaXMucGljdHVyZXNMaXN0ID0gZGF0YS5kYXRhO1xuICAgICAgdGhpcy5yZW5hbWVQaWN0dXJlU2VydmljZS5zZXRQaWN0dXJlc0xpc3QodGhpcy5waWN0dXJlc0xpc3QpO1xuICAgICAgdGhpcy5zZWxlY3RJbWdTZWxlY3RlZCgpO1xuXG4gICAgICB0aGlzLmxlbmd0aCA9IHRoaXMuaXNUb3RhbFJldGlldmVkID8gdGhpcy5sZW5ndGggOiBkYXRhLnRvdGFsUmVjb3JkcztcbiAgICAgIHRoaXMudGFibGVGaWx0ZXJzLnRvdGFsSXRlbXMgPSB0aGlzLmlzVG90YWxSZXRpZXZlZCA/IHRoaXMudGFibGVGaWx0ZXJzLnRvdGFsSXRlbXMgOiBkYXRhLnRvdGFsUmVjb3JkcztcbiAgICAgIHRoaXMudGFibGVGaWx0ZXJzLml0ZW1zUGVyUGFnZSA9ICB0aGlzLnRhYmxlRmlsdGVycy5pdGVtc1BlclBhZ2UgPyAgdGhpcy50YWJsZUZpbHRlcnMuaXRlbXNQZXJQYWdlIDogdGhpcy5wYWdlU2l6ZTtcblxuICAgICAgLy8gRGlzcGxheSBQZXhlbHMgaWYgbm8gcmVzdWx0XG4gICAgICBpZiAoZGF0YS50b3RhbFJlY29yZHMgPT09IDApIHtcbiAgICAgICAgdGhpcy5kaXNwbGF5UGV4ZWxzTGliKCk7XG4gICAgICB9XG5cbiAgICB9LFxuICAgIGVycm9yID0+IHtcbiAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLm9wZW5BbGVydCh0aGlzLmVycm9yR2V0QWxsSW1nKTtcbiAgICAgIHRoaXMuaW5pdFZhcmlhYmxlcyhmYWxzZSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHJlZnJlc2hUb3RhbEltZ0xpc3QoKSB7XG4gICAgY29uc3Qgc2VhcmNoVmFsdWUgPSB0aGlzLnRhYmxlRmlsdGVycy5zZWFyY2hWYWx1ZTtcblxuICAgIGlmICh0aGlzLmlzVG90YWxSZXRpZXZlZCAmJiBzZWFyY2hWYWx1ZSA9PT0gdGhpcy5wcmV2aW91c1NlYXJjaFZhbHVlKSB7XG4gICAgICAvLyBLZWVwIGN1cnJlbnQgdG90YWwgcmVzdWx0XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5pc1RvdGFsUmV0aWV2ZWQgPSBmYWxzZTtcblxuICAgIHRoaXMuaW1nTWFuYWdlci5nZXRTaG9wVG90YWxJbWdMaXN0KHRoaXMucGFyYW1zKS5waXBlKHRha2UoMSkpLnN1YnNjcmliZShcblxuICAgICAgKGRhdGE6IEltZ1BpY3R1cmVzRFRPKSA9PiB7XG4gICAgICAgIHRoaXMucHJldmlvdXNTZWFyY2hWYWx1ZSA9IHNlYXJjaFZhbHVlO1xuICAgICAgICB0aGlzLmlzVG90YWxSZXRpZXZlZCA9IHRydWU7XG4gICAgICAgIHRoaXMubGVuZ3RoID0gZGF0YS50b3RhbFJlY29yZHM7XG4gICAgICAgIHRoaXMudGFibGVGaWx0ZXJzLnRvdGFsSXRlbXMgPSBkYXRhLnRvdGFsUmVjb3JkcztcbiAgICAgIH0sXG5cbiAgICAgIGVycm9yID0+IHtcbiAgICAgICAgLy90aGlzLmFsZXJ0U2VydmljZS5vcGVuQWxlcnQodGhpcy5lcnJvckdldFRvdGFsSW1nKTtcbiAgICAgICAgdGhpcy5pbml0VmFyaWFibGVzKGZhbHNlKTtcbiAgICB9KTtcbiAgfVxuXG4gIHN3aXRjaERpc3BsYXlXaW5kb3dNb3NhaWMoKSB7XG4gICAgdGhpcy5zd2l0Y2hEaXNwbGF5V2luZG93LmVtaXQodHJ1ZSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnNlYXJjaFF1ZXJ5Q2hhbmdlZC51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuaW1nUmVtb3ZlZEV2ZW50LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5pbWdBZGRlZEV2ZW50LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5pbWdTZWxlY3Rpb25DaGFuZ2UudW5zdWJzY3JpYmUoKTtcbiAgfVxufVxuIl19
|
|
@@ -102,7 +102,7 @@ var ImgEditorComponent = /** @class */ (function () {
|
|
|
102
102
|
ImgEditorComponent = __decorate([
|
|
103
103
|
Component({
|
|
104
104
|
selector: 'img-editor',
|
|
105
|
-
template: "<div class=\"img-editor\" [@easeInOut]=\"'in'\">\n\n <
|
|
105
|
+
template: "<div class=\"img-editor\" [@easeInOut]=\"'in'\">\n\n <perfect-scrollbar\n class=\"img-editor__scroll\"\n [ngClass]=\"{\n 'img-editor__scroll--full': stateDisplayed === 'full',\n 'img-editor__scroll--smallDisplay': stateDisplayed === 'small',\n 'img-editor__scroll--window': stateDisplayed === 'window'\n }\"\n >\n <div class=\"columns\">\n <!-- Left section -->\n <div class=\"column is-one-third img-editor__infoSection\">\n\n <info-section\n [imgToEdit]=\"imgToEdit\"\n [(isNameModified)]=\"isNameModified\"\n >\n </info-section>\n\n <!-- Button Action Section -->\n\n <div class=\"img-editor__infoSection__actions\">\n <div>\n <button\n class=\"button img-editor__infoSection__actions__cancel\"\n (click)=\"onCancel()\"\n [disabled]=\"isLoading || (!isImgModified && !isNameModified)\"\n >\n {{ 'ImgManager.ImgLib.cancel' | translate }}\n </button>\n <div\n class=\"button danger button img-editor__infoSection__actions__save\"\n [ngClass]=\"{'img-editor__infoSection__actions__save--disable': isLoading}\"\n (click)=\"onSave()\"\n >\n {{ 'ImgManager.ImgEditor.saveBtn' | translate }}\n <span btnLoadingAnim *ngIf=\"isLoading\" class=\"btnLoadingAnnimation\"></span>\n </div>\n\n </div>\n </div>\n </div>\n\n\n <!-- Right section -->\n <div class=\"column img-editor__container\">\n <cropper\n [imgToEdit]=\"imgToEdit\"\n [(isImgModified)]=\"isImgModified\"\n (currentCroppedImageChange)=\"onImgCropped($event)\"\n (editClosed)=\"onEditClosed($event)\">\n </cropper>\n </div>\n </div>\n </perfect-scrollbar>\n</div>\n",
|
|
106
106
|
animations: [
|
|
107
107
|
easeInOut
|
|
108
108
|
]
|
|
@@ -112,4 +112,4 @@ var ImgEditorComponent = /** @class */ (function () {
|
|
|
112
112
|
return ImgEditorComponent;
|
|
113
113
|
}());
|
|
114
114
|
export { ImgEditorComponent };
|
|
115
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
115
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1nLWVkaXRvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ad2l6aXNob3AvaW1nLW1hbmFnZXIvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50cy9pbWctZWRpdG9yL2ltZy1lZGl0b3IuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUc5RixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFTN0U7SUFtQkUsNEJBQ1UsaUJBQW9DO1FBQXBDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFicEMsZUFBVSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFFMUMsY0FBUyxHQUFZLEtBQUssQ0FBQztRQUMzQixrQkFBYSxHQUFZLEtBQUssQ0FBQztRQUMvQixtQkFBYyxHQUFZLEtBQUssQ0FBQztRQUNoQyx3QkFBbUIsR0FBVyxFQUFFLENBQUMsQ0FBQywrQ0FBK0M7UUFHakYsZ0JBQVcsR0FBVyxrQ0FBa0MsQ0FBQztRQUN6RCxnQkFBVyxHQUFXLGtDQUFrQyxDQUFDO1FBQ3pELG1CQUFjLEdBQVcseURBQXlELENBQUE7SUFJNUUsQ0FBQztJQUVQLHFDQUFRLEdBQVI7UUFDRSxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDO0lBQ2xELENBQUM7SUFFRCxtQ0FBTSxHQUFOO1FBQUEsaUJBNkNDO1FBNUNDLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNsQixPQUFPO1NBQ1I7UUFDRCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztRQUV0QixJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsSUFBSyxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUU7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LENBQUM7WUFDekMsQ0FBQyxFQUNELFVBQUEsS0FBSztnQkFDSCxLQUFJLENBQUMsWUFBWSxDQUFDLEtBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUN0QyxDQUFDLENBQ0YsQ0FBQztRQUNKLENBQUMsRUFDRCxVQUFBLEtBQUs7WUFDSCxLQUFJLENBQUMsWUFBWSxDQUFDLEtBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN0QyxDQUFDLENBQ0YsQ0FBQztJQUNKLENBQUM7O2dCQXpGNEIsaUJBQWlCOztJQWpCOUM7UUFEQyxLQUFLLEVBQUU7OzhEQUNPO0lBRWY7UUFEQyxLQUFLLEVBQUU7O3lEQUNpQjtJQUVmO1FBQVQsTUFBTSxFQUFFOzswREFBaUM7SUFQL0Isa0JBQWtCO1FBUDlCLFNBQVMsQ0FBQztZQUNULFFBQVEsRUFBRSxZQUFZO1lBQ3RCLDZtRUFBMEM7WUFDMUMsVUFBVSxFQUFFO2dCQUNWLFNBQVM7YUFDVjtTQUNGLENBQUM7eUNBcUI2QixpQkFBaUI7T0FwQm5DLGtCQUFrQixDQThHOUI7SUFBRCx5QkFBQztDQUFBLEFBOUdELElBOEdDO1NBOUdZLGtCQUFrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIEFmdGVyVmlld0luaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEltZ1BpY3R1cmVEVE8gfSBmcm9tICcuLi8uLi9kdG8vaW1nLW1hbmFnZXIuZHRvJztcbmltcG9ydCB7IE9ic2VydmFibGUsIGZvcmtKb2luIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBJbWdNYW5hZ2VyU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2ltZy1tYW5hZ2VyLnNlcnZpY2UnO1xuaW1wb3J0IHsgZWFzZUluT3V0IH0gZnJvbSAnLi4vLi4vYW5pbWF0aW9ucy9lYXNlSW5PdXQvZWFzZS1pbi1vdXQuYW5pbWF0aW9uJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaW1nLWVkaXRvcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9pbWctZWRpdG9yLmNvbXBvbmVudC5odG1sJyxcbiAgYW5pbWF0aW9uczogW1xuICAgIGVhc2VJbk91dFxuICBdXG59KVxuZXhwb3J0IGNsYXNzIEltZ0VkaXRvckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgQElucHV0KClcbiAgc3RhdGVEaXNwbGF5ZWQ7XG4gIEBJbnB1dCgpXG4gIGltZ1RvRWRpdDogSW1nUGljdHVyZURUTztcblxuICBAT3V0cHV0KCkgZWRpdENsb3NlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBpc0xvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgaXNJbWdNb2RpZmllZDogYm9vbGVhbiA9IGZhbHNlO1xuICBpc05hbWVNb2RpZmllZDogYm9vbGVhbiA9IGZhbHNlO1xuICBjdXJyZW50Q3JvcHBlZEltYWdlOiBzdHJpbmcgPSAnJzsgLy8gSW1nIG1vZGlmaWVkIHJldHVybiBpbiBiYXNlNjQgYnkgdGhlIGNyb3BwZXJcbiAgcHJpdmF0ZSBwcmV2aW91c05hbWU6IHN0cmluZztcblxuICBtc2dGYWlsU2F2ZTogc3RyaW5nID0gJ0ltZ01hbmFnZXIuSW1nRWRpdG9yLm1zZ0ZhaWxTYXZlJztcbiAgbXNnRmFpbExvYWQ6IHN0cmluZyA9ICdJbWdNYW5hZ2VyLkltZ0VkaXRvci5tc2dGYWlsTG9hZCc7XG4gIG1zZ1N1Y2Nlc3NFZGl0OiBzdHJpbmcgPSBcIkxlcyBtb2RpZmljYXRpb25zIGRlIGwnaW1hZ2Ugb250IGJpZW4gw6l0w6kgZW5yZWdpc3Ryw6llcy5cIlxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgaW1nTWFuYWdlclNlcnZpY2U6IEltZ01hbmFnZXJTZXJ2aWNlLFxuICAgICkgeyB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5wcmV2aW91c05hbWUgPSB0aGlzLmltZ1RvRWRpdC5kaXNwbGF5X25hbWU7XG4gIH1cblxuICBvblNhdmUoKSB7XG4gICAgaWYgKHRoaXMuaXNMb2FkaW5nKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcblxuICAgIGlmICghdGhpcy5pc0ltZ01vZGlmaWVkICAmJiAhdGhpcy5pc05hbWVNb2RpZmllZCkge1xuICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgICAgIHRoaXMub25FZGl0Q2xvc2VkKCk7XG4gICAgfVxuXG4gICAgY29uc3Qgb2JzUmVwbGFjZUltZzogT2JzZXJ2YWJsZTxhbnk+ID0gdGhpcy5pbWdNYW5hZ2VyU2VydmljZS5yZXBsYWNlSW1nKHRoaXMuY3VycmVudENyb3BwZWRJbWFnZSwgdGhpcy5pbWdUb0VkaXQuaWRfZmlsZSk7XG4gICAgY29uc3Qgb2JzQ2hhbmdlSW1nTmFtZTogT2JzZXJ2YWJsZTxhbnk+ID0gdGhpcy5pbWdNYW5hZ2VyU2VydmljZS5jaGFuZ2VJbWdOYW1lKHRoaXMuaW1nVG9FZGl0LmRpc3BsYXlfbmFtZSwgdGhpcy5pbWdUb0VkaXQuaWRfZmlsZSk7XG5cbiAgICBpZih0aGlzLmlzSW1nTW9kaWZpZWQgJiYgdGhpcy5pc05hbWVNb2RpZmllZCkge1xuICAgICAgdGhpcy5yYW5hbWVBbmRSZXBsYWNlSW1nKG9ic0NoYW5nZUltZ05hbWUsIG9ic1JlcGxhY2VJbWcpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmKHRoaXMuaXNJbWdNb2RpZmllZCl7XG4gICAgICBvYnNSZXBsYWNlSW1nLnN1YnNjcmliZShkYXRhID0+IHtcbiAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5vbkVkaXRDbG9zZWQodGhpcy5tc2dTdWNjZXNzRWRpdCk7XG4gICAgICB9LFxuICAgICAgZXJyb3IgPT4ge1xuICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICB0aGlzLmN1cnJlbnRDcm9wcGVkSW1hZ2UgPSAnJztcbiAgICAgICAgdGhpcy5vbkVkaXRDbG9zZWQodGhpcy5tc2dGYWlsU2F2ZSk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5pc05hbWVNb2RpZmllZCkge1xuICAgICAgb2JzQ2hhbmdlSW1nTmFtZS5zdWJzY3JpYmUoZGF0YSA9PiB7XG4gICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgICAgIHRoaXMucHJldmlvdXNOYW1lID0gdGhpcy5pbWdUb0VkaXQuZGlzcGxheV9uYW1lO1xuICAgICAgICB0aGlzLm9uRWRpdENsb3NlZCh0aGlzLm1zZ1N1Y2Nlc3NFZGl0KTtcbiAgICAgIH0sXG4gICAgICBlcnJvciA9PiB7XG4gICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgICAgIHRoaXMuaW1nVG9FZGl0LmRpc3BsYXlfbmFtZSA9IHRoaXMucHJldmlvdXNOYW1lO1xuICAgICAgICB0aGlzLm9uRWRpdENsb3NlZCh0aGlzLm1zZ0ZhaWxTYXZlKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICB0aGlzLmlzTmFtZU1vZGlmaWVkID0gZmFsc2U7XG4gIH1cblxuICBvbkVkaXRDbG9zZWQobXNnS2V5Pzogc3RyaW5nKSB7XG4gICAgdGhpcy5lZGl0Q2xvc2VkLmVtaXQobXNnS2V5KTtcbiAgfVxuXG4gIG9uUmVzdGFydEVkaXQoKSB7XG4gICAgdGhpcy5pc0ltZ01vZGlmaWVkID0gZmFsc2U7XG4gICAgdGhpcy5pc05hbWVNb2RpZmllZCA9IGZhbHNlO1xuICAgIHRoaXMuaW1nVG9FZGl0LmRpc3BsYXlfbmFtZSA9IHRoaXMucHJldmlvdXNOYW1lO1xuICB9XG5cbiAgb25DYW5jZWwoKSB7XG4gICAgdGhpcy5vbkVkaXRDbG9zZWQoJycpO1xuICB9XG5cbiAgb25JbWdDcm9wcGVkKGltZ0Jhc2U2NDogc3RyaW5nKSB7XG4gICAgdGhpcy5jdXJyZW50Q3JvcHBlZEltYWdlID0gaW1nQmFzZTY0O1xuICB9XG5cbiAgcHJpdmF0ZSByYW5hbWVBbmRSZXBsYWNlSW1nKG9ic0NoYW5nZUltZ05hbWU6IE9ic2VydmFibGU8YW55Piwgb2JzUmVwbGFjZUltZzogT2JzZXJ2YWJsZTxhbnk+KSB7XG4gICAgLy8gQXZvaWQgdG8gdXNlIGZvcmtqb2luLCBiZWNhdXNlIGl0IGNhbiBjcmVhdGUgY29uZmxpY3QgYW5kIGxvb3MgdGhlIGltZ1xuICAgIG9ic0NoYW5nZUltZ05hbWUuc3Vic2NyaWJlKFxuICAgICAgcmVzMSA9PiB7XG4gICAgICAgIG9ic1JlcGxhY2VJbWcuc3Vic2NyaWJlKFxuICAgICAgICAgIHJlczIgPT4ge1xuICAgICAgICAgICAgdGhpcy5vbkVkaXRDbG9zZWQodGhpcy5tc2dTdWNjZXNzRWRpdCk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBlcnJvciA9PiB7XG4gICAgICAgICAgICB0aGlzLm9uRWRpdENsb3NlZCh0aGlzLm1zZ0ZhaWxTYXZlKTtcbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgICB9LFxuICAgICAgZXJyb3IgPT4ge1xuICAgICAgICB0aGlzLm9uRWRpdENsb3NlZCh0aGlzLm1zZ0ZhaWxTYXZlKTtcbiAgICAgIH1cbiAgICApO1xuICB9XG59XG4iXX0=
|
|
@@ -16,6 +16,7 @@ var ImgUploadComponent = /** @class */ (function () {
|
|
|
16
16
|
this.loadingText = 'ImgManager.ImgUpload.loading';
|
|
17
17
|
this.errorUploadingImg = 'ImgManager.ImgUpload.errorUploadingImg';
|
|
18
18
|
this.errorNotImg = 'ImgManager.ImgUpload.errorNotImg';
|
|
19
|
+
this.MAX_IMAGE_SIZE = 10000000; // In bytes
|
|
19
20
|
}
|
|
20
21
|
ImgUploadComponent.prototype.ngOnInit = function () {
|
|
21
22
|
this.assetsIcon = this.getAssets();
|
|
@@ -41,13 +42,19 @@ var ImgUploadComponent = /** @class */ (function () {
|
|
|
41
42
|
try {
|
|
42
43
|
for (var files_1 = __values(files), files_1_1 = files_1.next(); !files_1_1.done; files_1_1 = files_1.next()) {
|
|
43
44
|
var file = files_1_1.value;
|
|
44
|
-
|
|
45
|
-
formData.append('image', file, file.name);
|
|
45
|
+
console.log('file', file.size);
|
|
46
46
|
if (!this.isFileImage(file.type)) {
|
|
47
47
|
this.alertService.openAlert(this.errorNotImg);
|
|
48
48
|
this.isLoading = false;
|
|
49
49
|
continue;
|
|
50
50
|
}
|
|
51
|
+
if (!this.isSizeValid(file.size)) {
|
|
52
|
+
this.alertService.openAlert("L'image : " + file.name + " est trop grande (" + this.getImageSizeInKo(file.size) + "ko). Taille maximum accept\u00E9e: " + this.getImageSizeInKo(this.MAX_IMAGE_SIZE) + "ko");
|
|
53
|
+
this.isLoading = false;
|
|
54
|
+
continue;
|
|
55
|
+
}
|
|
56
|
+
var formData = new FormData();
|
|
57
|
+
formData.append('image', file, file.name);
|
|
51
58
|
imgToUploadList.push(this.imgManager.uploadFile(formData));
|
|
52
59
|
}
|
|
53
60
|
}
|
|
@@ -62,7 +69,13 @@ var ImgUploadComponent = /** @class */ (function () {
|
|
|
62
69
|
_this.onImgUpload(img),
|
|
63
70
|
_this.isLoading = false;
|
|
64
71
|
}, function (error) {
|
|
65
|
-
|
|
72
|
+
var _a, _b;
|
|
73
|
+
if (((_b = (_a = error) === null || _a === void 0 ? void 0 : _a.error) === null || _b === void 0 ? void 0 : _b.message) && error.statusText !== 'Bad Request') {
|
|
74
|
+
_this.alertService.openAlertWithBackendRespons(_this.errorUploadingImg, error.error.message);
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
_this.alertService.openAlert(_this.errorUploadingImg);
|
|
78
|
+
}
|
|
66
79
|
_this.isLoading = false;
|
|
67
80
|
});
|
|
68
81
|
};
|
|
@@ -77,6 +90,12 @@ var ImgUploadComponent = /** @class */ (function () {
|
|
|
77
90
|
ImgUploadComponent.prototype.isFileImage = function (fileType) {
|
|
78
91
|
return fileType.split('/')[0] === 'image';
|
|
79
92
|
};
|
|
93
|
+
ImgUploadComponent.prototype.isSizeValid = function (imageBytesSize) {
|
|
94
|
+
return imageBytesSize < this.MAX_IMAGE_SIZE;
|
|
95
|
+
};
|
|
96
|
+
ImgUploadComponent.prototype.getImageSizeInKo = function (size) {
|
|
97
|
+
return Math.round(size / 1024);
|
|
98
|
+
};
|
|
80
99
|
/**
|
|
81
100
|
* Remove the style of the drag and drop box
|
|
82
101
|
* After an img is droped, the box is still grey
|
|
@@ -116,4 +135,4 @@ var ImgUploadComponent = /** @class */ (function () {
|
|
|
116
135
|
return ImgUploadComponent;
|
|
117
136
|
}());
|
|
118
137
|
export { ImgUploadComponent };
|
|
119
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
138
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1nLXVwbG9hZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ad2l6aXNob3AvaW1nLW1hbmFnZXIvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50cy9pbWctdXBsb2FkL2ltZy11cGxvYWQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFVLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDcEcsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDdkUsT0FBTyxFQUFjLFFBQVEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUU1QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFDN0UsT0FBTyxFQUFDLHVCQUF1QixFQUFDLE1BQU0sK0NBQStDLENBQUM7QUFFdEYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBUzVEO0lBZ0JFLDRCQUNVLFVBQTZCLEVBQzdCLFlBQTBCLEVBQzFCLHFCQUE4QztRQUY5QyxlQUFVLEdBQVYsVUFBVSxDQUFtQjtRQUM3QixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQiwwQkFBcUIsR0FBckIscUJBQXFCLENBQXlCO1FBakJ4RCxVQUFLLEdBQVEsRUFBRSxDQUFDO1FBQ2hCLGNBQVMsR0FBWSxLQUFLLENBQUM7UUFHakIsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBSTNDLGdCQUFXLEdBQUcsOEJBQThCLENBQUM7UUFDN0Msc0JBQWlCLEdBQUcsd0NBQXdDLENBQUM7UUFDN0QsZ0JBQVcsR0FBRyxrQ0FBa0MsQ0FBQztRQUVqRCxtQkFBYyxHQUFHLFFBQVEsQ0FBQyxDQUFDLFdBQVc7SUFNakMsQ0FBQztJQUVOLHFDQUFRLEdBQVI7UUFDRSxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNyQyxDQUFDO0lBRUQsK0NBQWtCLEdBQWxCLFVBQW1CLEtBQVU7UUFDM0IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRCxzQ0FBUyxHQUFUO1FBQ0UsT0FBTyxJQUFJLENBQUMscUJBQXFCLENBQUMsY0FBYyxFQUFFLEdBQUcsc0JBQXNCLENBQUM7SUFDOUUsQ0FBQztJQUVELHFEQUF3QixHQUF4QixVQUF5QixTQUFpQjtRQUN4QyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztRQUM5QixJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFRCx1Q0FBVSxHQUFWLFVBQVcsS0FBYTs7UUFBeEIsaUJBMkNDO1FBMUNDLElBQUksS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRTtZQUMxQixPQUFPO1NBQ1I7UUFFRCxJQUFJLENBQUMsU0FBUyxHQUFFLElBQUksQ0FBQztRQUNyQixJQUFNLGVBQWUsR0FBc0IsRUFBRSxDQUFDOztZQUM5QyxLQUFtQixJQUFBLFVBQUEsU0FBQSxLQUFLLENBQUEsNEJBQUEsK0NBQUU7Z0JBQXJCLElBQU0sSUFBSSxrQkFBQTtnQkFDYixPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBRS9CLElBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRTtvQkFDL0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO29CQUM5QyxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztvQkFDdkIsU0FBUztpQkFDVjtnQkFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUU7b0JBQ2hDLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLGVBQWEsSUFBSSxDQUFDLElBQUksMEJBQXFCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLDJDQUFpQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFJLENBQUMsQ0FBQztvQkFDeEwsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7b0JBQ3ZCLFNBQVM7aUJBQ1Y7Z0JBRUQsSUFBTSxRQUFRLEdBQUcsSUFBSSxRQUFRLEVBQUUsQ0FBQztnQkFDaEMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFHMUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO2FBQzVEOzs7Ozs7Ozs7UUFFRCxRQUFRLENBQUMsZUFBZSxDQUFDLENBQUMsU0FBUyxDQUNqQyxVQUFDLEdBQW9CO1lBQ25CLEtBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDO2dCQUNyQixLQUFJLENBQUMsU0FBUyxHQUFFLEtBQUssQ0FBQztRQUN4QixDQUFDLEVBQ0QsVUFBQSxLQUFLOztZQUNILElBQUksYUFBQSxLQUFLLDBDQUFFLEtBQUssMENBQUUsT0FBTyxLQUFJLEtBQUssQ0FBQyxVQUFVLEtBQUssYUFBYSxFQUFFO2dCQUMvRCxLQUFJLENBQUMsWUFBWSxDQUFDLDJCQUEyQixDQUFDLEtBQUksQ0FBQyxpQkFBaUIsRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQzVGO2lCQUFNO2dCQUNMLEtBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLEtBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO2FBQ3JEO1lBQ0QsS0FBSSxDQUFDLFNBQVMsR0FBRSxLQUFLLENBQUM7UUFDeEIsQ0FBQyxDQUNGLENBQUE7SUFDSCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILHdDQUFXLEdBQVgsVUFBWSxHQUFvQjtRQUM5QixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQsd0NBQVcsR0FBWCxVQUFZLFFBQWdCO1FBQzFCLE9BQU8sUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxPQUFPLENBQUM7SUFDNUMsQ0FBQztJQUVELHdDQUFXLEdBQVgsVUFBWSxjQUFzQjtRQUNoQyxPQUFPLGNBQWMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDO0lBQzlDLENBQUM7SUFFRCw2Q0FBZ0IsR0FBaEIsVUFBaUIsSUFBWTtRQUMzQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRDs7O09BR0c7SUFDSCxtREFBc0IsR0FBdEI7UUFDRSxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO0lBQy9DLENBQUM7O2dCQTlGcUIsaUJBQWlCO2dCQUNmLFlBQVk7Z0JBQ0gsdUJBQXVCOztJQWQvQztRQUFSLEtBQUssRUFBRTs7OERBQWdDO0lBQzlCO1FBQVQsTUFBTSxFQUFFOzsyREFBa0M7SUFFZDtRQUE1QixTQUFTLENBQUMsZ0JBQWdCLENBQUM7a0NBQWlCLFVBQVU7OERBQUM7SUFSN0Msa0JBQWtCO1FBUDlCLFNBQVMsQ0FBQztZQUNULFFBQVEsRUFBRSxZQUFZO1lBQ3RCLGt6Q0FBMEM7WUFDMUMsVUFBVSxFQUFFO2dCQUNWLFNBQVM7YUFDVjtTQUNGLENBQUM7eUNBa0JzQixpQkFBaUI7WUFDZixZQUFZO1lBQ0gsdUJBQXVCO09BbkI3QyxrQkFBa0IsQ0FnSDlCO0lBQUQseUJBQUM7Q0FBQSxBQWhIRCxJQWdIQztTQWhIWSxrQkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIFZpZXdDaGlsZCwgRWxlbWVudFJlZn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJbWdNYW5hZ2VyU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2ltZy1tYW5hZ2VyLnNlcnZpY2UnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgZm9ya0pvaW4gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEltZ1BpY3R1cmVEVE8gfSBmcm9tICcuLi8uLi9kdG8vaW1nLW1hbmFnZXIuZHRvJztcbmltcG9ydCB7IGVhc2VJbk91dCB9IGZyb20gJy4uLy4uL2FuaW1hdGlvbnMvZWFzZUluT3V0L2Vhc2UtaW4tb3V0LmFuaW1hdGlvbic7XG5pbXBvcnQge0ltZ01hbmFnZXJDb25maWdTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvY29uZmlnL2V4dGVybmFsLWNvbmZpZy5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBzdGF0ZURpc3BsYXllZCB9IGZyb20gJy4uLy4uL2R0by9leHBvcnQtZHRvcy5hcGknO1xuaW1wb3J0IHsgQWxlcnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvYWxlcnQuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2ltZy11cGxvYWQnLFxuICB0ZW1wbGF0ZVVybDogJy4vaW1nLXVwbG9hZC5jb21wb25lbnQuaHRtbCcsXG4gIGFuaW1hdGlvbnM6IFtcbiAgICBlYXNlSW5PdXRcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBJbWdVcGxvYWRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIGZpbGVzOiBhbnkgPSBbXTtcbiAgaXNMb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XG4gIGFzc2V0c0ljb246IHN0cmluZztcbiAgQElucHV0KCkgc3RhdGVEaXNwbGF5ZWQ6IHN0YXRlRGlzcGxheWVkO1xuICBAT3V0cHV0KCkgaW1nVXBsb2FkZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgQFZpZXdDaGlsZCgnZHJhZ0FuZERyb3BCb3gnKSBkcmFnQW5kRHJvcEJveDogRWxlbWVudFJlZjtcblxuICBsb2FkaW5nVGV4dCA9ICdJbWdNYW5hZ2VyLkltZ1VwbG9hZC5sb2FkaW5nJztcbiAgZXJyb3JVcGxvYWRpbmdJbWcgPSAnSW1nTWFuYWdlci5JbWdVcGxvYWQuZXJyb3JVcGxvYWRpbmdJbWcnO1xuICBlcnJvck5vdEltZyA9ICdJbWdNYW5hZ2VyLkltZ1VwbG9hZC5lcnJvck5vdEltZyc7XG5cbiAgTUFYX0lNQUdFX1NJWkUgPSAxMDAwMDAwMDsgLy8gSW4gYnl0ZXNcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGltZ01hbmFnZXI6IEltZ01hbmFnZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgYWxlcnRTZXJ2aWNlOiBBbGVydFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBleHRlcm5hbENvbmZpZ1NlcnZpY2U6IEltZ01hbmFnZXJDb25maWdTZXJ2aWNlXG4gICAgKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuYXNzZXRzSWNvbiA9IHRoaXMuZ2V0QXNzZXRzKCk7XG4gIH1cblxuICBmaWxlc0NoYW5nZUJ5Q2xpY2soZXZlbnQ6IGFueSkge1xuICAgIHRoaXMudXBsb2FkRmlsZShldmVudC50YXJnZXQuZmlsZXMpO1xuICB9XG5cbiAgZ2V0QXNzZXRzKCkge1xuICAgIHJldHVybiB0aGlzLmV4dGVybmFsQ29uZmlnU2VydmljZS5nZXRSb3V0ZUFzc2V0cygpICsgXCJpbWcvaWNvbl9waWN0dXJlLnN2Z1wiO1xuICB9XG5cbiAgZmlsZXNDaGFuZ2VCeURyYWdBbmREcm9wKGZpbGVzTGlzdDogRmlsZVtdKSB7XG4gICAgdGhpcy5yZW1vdmVEcmFnQW5kRHJvcFN0eWxlKCk7XG4gICAgdGhpcy51cGxvYWRGaWxlKGZpbGVzTGlzdCk7XG4gIH1cblxuICB1cGxvYWRGaWxlKGZpbGVzOiBGaWxlW10pIHtcbiAgICBpZiAoZmlsZXMgJiYgIWZpbGVzLmxlbmd0aCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuaXNMb2FkaW5nID10cnVlO1xuICAgIGNvbnN0IGltZ1RvVXBsb2FkTGlzdDogT2JzZXJ2YWJsZTxhbnk+W10gPSBbXTtcbiAgICBmb3IgKGNvbnN0IGZpbGUgb2YgZmlsZXMpIHtcbiAgICAgIGNvbnNvbGUubG9nKCdmaWxlJywgZmlsZS5zaXplKTtcblxuICAgICAgaWYoIXRoaXMuaXNGaWxlSW1hZ2UoZmlsZS50eXBlKSkge1xuICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5vcGVuQWxlcnQodGhpcy5lcnJvck5vdEltZyk7XG4gICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoIXRoaXMuaXNTaXplVmFsaWQoZmlsZS5zaXplKSkge1xuICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5vcGVuQWxlcnQoYEwnaW1hZ2UgOiAke2ZpbGUubmFtZX0gZXN0IHRyb3AgZ3JhbmRlICgke3RoaXMuZ2V0SW1hZ2VTaXplSW5LbyhmaWxlLnNpemUpfWtvKS4gVGFpbGxlIG1heGltdW0gYWNjZXB0w6llOiAke3RoaXMuZ2V0SW1hZ2VTaXplSW5Lbyh0aGlzLk1BWF9JTUFHRV9TSVpFKX1rb2ApO1xuICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcbiAgICAgIGZvcm1EYXRhLmFwcGVuZCgnaW1hZ2UnLCBmaWxlLCBmaWxlLm5hbWUpO1xuXG5cbiAgICAgIGltZ1RvVXBsb2FkTGlzdC5wdXNoKHRoaXMuaW1nTWFuYWdlci51cGxvYWRGaWxlKGZvcm1EYXRhKSk7XG4gICAgfVxuXG4gICAgZm9ya0pvaW4oaW1nVG9VcGxvYWRMaXN0KS5zdWJzY3JpYmUoXG4gICAgICAoaW1nOiBJbWdQaWN0dXJlRFRPW10pID0+IHtcbiAgICAgICAgdGhpcy5vbkltZ1VwbG9hZChpbWcpLFxuICAgICAgICB0aGlzLmlzTG9hZGluZyA9ZmFsc2U7XG4gICAgICB9LFxuICAgICAgZXJyb3IgPT4ge1xuICAgICAgICBpZiAoZXJyb3I/LmVycm9yPy5tZXNzYWdlICYmIGVycm9yLnN0YXR1c1RleHQgIT09ICdCYWQgUmVxdWVzdCcpIHtcbiAgICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5vcGVuQWxlcnRXaXRoQmFja2VuZFJlc3BvbnModGhpcy5lcnJvclVwbG9hZGluZ0ltZywgZXJyb3IuZXJyb3IubWVzc2FnZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5hbGVydFNlcnZpY2Uub3BlbkFsZXJ0KHRoaXMuZXJyb3JVcGxvYWRpbmdJbWcpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaXNMb2FkaW5nID1mYWxzZTtcbiAgICAgIH1cbiAgICApXG4gIH1cblxuICAvKipcbiAgICogU2VuZCB0aGUgaW1nIHVwbG9hZGVkIHRvIHRoZSB0YWJzIGNvbXBvbmVudHMsXG4gICAqIFRoZW4gdGhlIHRhYnMgY29tcG9uZW50cyBhZGQgdGhlIGltZyB0byB1cGxvYWQgbGlzdCBieSBjYWxsaW5nIHRoZSBtZXRob2Qgb25JbWdVcGxvYWRlZCBvZiB0aGUgdXBsb2FkLWxpc3QgY29tcG9uZW50XG4gICAqIEBwYXJhbSBpbWdcbiAgICovXG4gIG9uSW1nVXBsb2FkKGltZzogSW1nUGljdHVyZURUT1tdKSB7XG4gICAgdGhpcy5pbWdVcGxvYWRlZC5lbWl0KGltZyk7XG4gIH1cblxuICBpc0ZpbGVJbWFnZShmaWxlVHlwZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGZpbGVUeXBlLnNwbGl0KCcvJylbMF0gPT09ICdpbWFnZSc7XG4gIH1cblxuICBpc1NpemVWYWxpZChpbWFnZUJ5dGVzU2l6ZTogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGltYWdlQnl0ZXNTaXplIDwgdGhpcy5NQVhfSU1BR0VfU0laRTtcbiAgfVxuXG4gIGdldEltYWdlU2l6ZUluS28oc2l6ZTogbnVtYmVyKSB7XG4gICAgcmV0dXJuIE1hdGgucm91bmQoc2l6ZSAvIDEwMjQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZSB0aGUgc3R5bGUgb2YgdGhlIGRyYWcgYW5kIGRyb3AgYm94XG4gICAqIEFmdGVyIGFuIGltZyBpcyBkcm9wZWQsIHRoZSBib3ggaXMgc3RpbGwgZ3JleVxuICAgKi9cbiAgcmVtb3ZlRHJhZ0FuZERyb3BTdHlsZSgpIHtcbiAgICB0aGlzLmRyYWdBbmREcm9wQm94Lm5hdGl2ZUVsZW1lbnQuc3R5bGUgPSAnJztcbiAgfVxufVxuIl19
|