libey-ng-component-library 0.0.19 → 0.0.21
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/bundles/libey-ng-component-library.umd.js +130 -41
- package/bundles/libey-ng-component-library.umd.js.map +1 -1
- package/esm2015/lib/signature/libey-ng-signature/libey-ng-signature.component.js +109 -40
- package/esm2015/utils/SigWeb/SigWeb.js +21 -2
- package/fesm2015/libey-ng-component-library.js +128 -40
- package/fesm2015/libey-ng-component-library.js.map +1 -1
- package/lib/signature/libey-ng-signature/libey-ng-signature.component.d.ts +6 -2
- package/package.json +2 -2
- package/utils/SigWeb/SigWeb.d.ts +1 -0
|
@@ -22,8 +22,10 @@ export class LibeyNgSignatureComponent {
|
|
|
22
22
|
minWidth: 5,
|
|
23
23
|
canvasWidth: this.widthView,
|
|
24
24
|
canvasHeight: this.heightView,
|
|
25
|
-
backgroundColor: 'rgba(242,242,242,1)',
|
|
26
25
|
};
|
|
26
|
+
this.FileValidated = false;
|
|
27
|
+
this.NotDriver = false;
|
|
28
|
+
this.UploadFile = null;
|
|
27
29
|
}
|
|
28
30
|
ngAfterViewInit() {
|
|
29
31
|
this.InitDevice();
|
|
@@ -33,6 +35,9 @@ export class LibeyNgSignatureComponent {
|
|
|
33
35
|
this._destroy$.next(true);
|
|
34
36
|
}
|
|
35
37
|
ChangeDevice() {
|
|
38
|
+
this.NotDriver = false;
|
|
39
|
+
this.UploadFile = null;
|
|
40
|
+
this.File = null;
|
|
36
41
|
setTimeout(() => {
|
|
37
42
|
this.InitDevice();
|
|
38
43
|
}, 200);
|
|
@@ -51,62 +56,126 @@ export class LibeyNgSignatureComponent {
|
|
|
51
56
|
SigWebTablet.SetTabletState(0, this.tmr, null);
|
|
52
57
|
}
|
|
53
58
|
onSign() {
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
SigWebTablet.
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
SigWebTablet.ClearTablet();
|
|
60
|
-
if (this.tmr == null) {
|
|
61
|
-
this.tmr = SigWebTablet.SetTabletState(1, this.cnvContext, 50);
|
|
59
|
+
this.NotDriver = false;
|
|
60
|
+
this.UploadFile = null;
|
|
61
|
+
var driver = SigWebTablet.GetVersionString();
|
|
62
|
+
if (driver == null) {
|
|
63
|
+
this.NotDriver = true;
|
|
62
64
|
}
|
|
63
65
|
else {
|
|
66
|
+
this.NotDriver = false;
|
|
67
|
+
console.log('onSign Clicked!');
|
|
68
|
+
SigWebTablet.SetDisplayXSize(this.widthRender);
|
|
69
|
+
SigWebTablet.SetDisplayYSize(this.heightRender);
|
|
64
70
|
SigWebTablet.SetTabletState(0, this.tmr, null);
|
|
65
|
-
|
|
66
|
-
|
|
71
|
+
SigWebTablet.SetJustifyMode(0);
|
|
72
|
+
SigWebTablet.ClearTablet();
|
|
73
|
+
if (this.tmr == null) {
|
|
74
|
+
this.tmr = SigWebTablet.SetTabletState(1, this.cnvContext, 50);
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
SigWebTablet.SetTabletState(0, this.tmr, null);
|
|
78
|
+
this.tmr = null;
|
|
79
|
+
this.tmr = SigWebTablet.SetTabletState(1, this.cnvContext, 50);
|
|
80
|
+
}
|
|
67
81
|
}
|
|
68
82
|
}
|
|
69
83
|
onClear() {
|
|
70
|
-
if (this.
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
this.cnvContext
|
|
84
|
+
if (this.UploadFile == null) {
|
|
85
|
+
if (this.DeviceType == 'pinpad') {
|
|
86
|
+
SigWebTablet.ClearTablet();
|
|
87
|
+
if (this.cnvContext) {
|
|
88
|
+
this.cnvContext.clearRect(0, 0, this.canvas.nativeElement.width, this.canvas.nativeElement.height);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
if (this.DeviceType == 'mousepad') {
|
|
92
|
+
this.signaturePad.clear();
|
|
74
93
|
}
|
|
75
94
|
}
|
|
76
|
-
|
|
77
|
-
this.
|
|
95
|
+
else {
|
|
96
|
+
this.File = null;
|
|
97
|
+
this.UploadFile = null;
|
|
98
|
+
this.ChangeDevice();
|
|
78
99
|
}
|
|
79
100
|
}
|
|
80
101
|
onDone() {
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
102
|
+
var result = new OutputMessage();
|
|
103
|
+
if (this.UploadFile == null) {
|
|
104
|
+
if (this.DeviceType == 'pinpad') {
|
|
105
|
+
// if (Number(SigWebTablet.NumberOfTabletPoints()) === 0) {
|
|
106
|
+
// alert('Por favor firme antes de continuar');
|
|
107
|
+
// } else {
|
|
108
|
+
SigWebTablet.SetTabletState(0, this.tmr, null);
|
|
109
|
+
SigWebTablet.SetSigCompressionMode(1);
|
|
110
|
+
result.bioSigData = SigWebTablet.GetSigString();
|
|
111
|
+
result.sigImgData = SigWebTablet.GetSigString();
|
|
112
|
+
SigWebTablet.SetImageXSize(this.widthRender);
|
|
113
|
+
SigWebTablet.SetImageYSize(this.heightRender);
|
|
114
|
+
SigWebTablet.SetImagePenWidth(5);
|
|
115
|
+
SigWebTablet.GetSigImageB64((base64) => {
|
|
116
|
+
result.sigString = "data:image/png;base64," + base64;
|
|
117
|
+
this.OutputSignature.emit(result);
|
|
118
|
+
});
|
|
119
|
+
// }
|
|
120
|
+
}
|
|
121
|
+
if (this.DeviceType == 'mousepad') {
|
|
122
|
+
var result = new OutputMessage();
|
|
123
|
+
result.sigString = this.signaturePad.toDataURL();
|
|
95
124
|
this.OutputSignature.emit(result);
|
|
96
|
-
}
|
|
97
|
-
// }
|
|
125
|
+
}
|
|
98
126
|
}
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
result.sigString = this.signaturePad.toDataURL();
|
|
127
|
+
else {
|
|
128
|
+
result.sigString = this.UploadFile;
|
|
102
129
|
this.OutputSignature.emit(result);
|
|
103
130
|
}
|
|
104
131
|
}
|
|
105
|
-
|
|
106
|
-
|
|
132
|
+
fileEvent(event) {
|
|
133
|
+
this.UploadFile = null;
|
|
134
|
+
this.FileValidated = false;
|
|
135
|
+
const file = event.target.files[0];
|
|
136
|
+
if (file.type == 'image/jpeg' || file.type == 'image/png') {
|
|
137
|
+
this.FileValidated = false;
|
|
138
|
+
const newWidth = this.widthRender;
|
|
139
|
+
const newHeight = this.heightRender;
|
|
140
|
+
this.resizeImage(file, newWidth, newHeight)
|
|
141
|
+
.then((resizedImageDataUrl) => {
|
|
142
|
+
this.UploadFile = resizedImageDataUrl;
|
|
143
|
+
})
|
|
144
|
+
.catch((error) => {
|
|
145
|
+
console.error('Error al redimensionar la imagen:', error);
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
else {
|
|
149
|
+
this.File = null;
|
|
150
|
+
this.UploadFile = null;
|
|
151
|
+
this.FileValidated = true;
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
resizeImage(image, newWidth, newHeight) {
|
|
155
|
+
return new Promise((resolve, reject) => {
|
|
156
|
+
const reader = new FileReader();
|
|
157
|
+
reader.onload = (e) => {
|
|
158
|
+
const img = new Image();
|
|
159
|
+
img.src = e.target.result;
|
|
160
|
+
img.onload = () => {
|
|
161
|
+
const canvas = document.createElement('canvas');
|
|
162
|
+
const ctx = canvas.getContext('2d');
|
|
163
|
+
canvas.width = newWidth;
|
|
164
|
+
canvas.height = newHeight;
|
|
165
|
+
ctx.drawImage(img, 0, 0, newWidth, newHeight);
|
|
166
|
+
const resizedImageDataUrl = canvas.toDataURL(image.type);
|
|
167
|
+
resolve(resizedImageDataUrl);
|
|
168
|
+
};
|
|
169
|
+
img.onerror = (error) => {
|
|
170
|
+
reject(error);
|
|
171
|
+
};
|
|
172
|
+
};
|
|
173
|
+
reader.readAsDataURL(image);
|
|
174
|
+
});
|
|
175
|
+
}
|
|
107
176
|
}
|
|
108
177
|
LibeyNgSignatureComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: LibeyNgSignatureComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
109
|
-
LibeyNgSignatureComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: LibeyNgSignatureComponent, selector: "lib-libey-ng-signature", inputs: { DeviceType: "DeviceType" }, outputs: { OutputSignature: "OutputSignature" }, viewQueries: [{ propertyName: "canvas", first: true, predicate: ["sigImg"], descendants: true }, { propertyName: "signaturePad", first: true, predicate: SignaturePad, descendants: true }], ngImport: i0, template: "<div class=\"container\">\n <div *ngIf=\"DeviceType=='pinpad'\">\n
|
|
178
|
+
LibeyNgSignatureComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: LibeyNgSignatureComponent, selector: "lib-libey-ng-signature", inputs: { DeviceType: "DeviceType" }, outputs: { OutputSignature: "OutputSignature" }, viewQueries: [{ propertyName: "canvas", first: true, predicate: ["sigImg"], descendants: true }, { propertyName: "signaturePad", first: true, predicate: SignaturePad, descendants: true }], ngImport: i0, template: "<div class=\"container\">\n <div *ngIf=\"UploadFile==null\">\n <div *ngIf=\"DeviceType=='pinpad'\" style=\"cursor: pointer; border: 1px ridge #d2d2d2;\">\n <canvas (click)=\"onSign()\" #sigImg [width]=\"widthView\" [height]=\"heightView\"></canvas> \n </div>\n <div *ngIf=\"DeviceType=='mousepad'\" style=\"border: 1px ridge #d2d2d2;\">\n <signature-pad [options]=\"signaturePadOptions\"></signature-pad>\n </div>\n </div>\n <div *ngIf=\"UploadFile!=null\" style=\"border: 1px ridge #d2d2d2;\">\n <img [src]=\"UploadFile\" [width]=\"widthView\" [height]=\"heightView\" />\n </div>\n</div>\n<div class=\"row\">\n <div class=\"col-md-12\" style=\"padding-top: 17px !important; padding-bottom: 17px !important;\">\n <input type=\"file\" (change)=\"fileEvent($event)\" [(ngModel)]=\"File\" class=\"form-control form-control-ph\"\n accept=\"image/png, image/jpeg\" style=\"border: none;\">\n <label *ngIf=\"FileValidated\" [ngClass]=\"'text-danger'\">Archivo requerido. Formatos permitidos (jpeg, jpg, png)</label>\n </div>\n</div>\n<div class=\"row\">\n <div class=\"col-md-6\">\n <ng-select [(ngModel)]=\"DeviceType\" class=\"ng-select\" placeholder=\"Seleccionar\" [clearable]=\"false\"\n (change)=\"ChangeDevice()\">\n <ng-option [value]=\"'pinpad'\">Pinpad</ng-option>\n <ng-option [value]=\"'mousepad'\">Mousepad</ng-option>\n </ng-select>\n <label *ngIf=\"NotDriver\" [ngClass]=\"'text-danger'\">No tiene el driver instalado</label>\n </div>\n <div class=\"col-md-6\">\n <p class=\"text-primary font-link-rp\" style=\"text-align: right; cursor: pointer;\" (click)=\"onClear()\">\n Limpiar firma\n </p>\n </div>\n</div>\n\n<div class=\"modal-footer mt-15 mb-4\">\n <button type=\"button\" class=\"btn btn-primary btn-save-rp\" (click)=\"onDone()\"> \n <i class=\"icon-save-white\"></i> Guardar\n </button>\n</div>", styles: [".container{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center}\n"], components: [{ type: i1.SignaturePad, selector: "signature-pad", inputs: ["options"], outputs: ["onBeginEvent", "onEndEvent"] }, { type: i2.NgSelectComponent, selector: "ng-select", inputs: ["markFirst", "dropdownPosition", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "bufferAmount", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "keyDownFn", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd", "bindLabel", "placeholder", "notFoundText", "typeToSearchText", "addTagText", "loadingText", "clearAllText", "virtualScroll", "openOnEnter", "appendTo", "bindValue", "appearance", "maxSelectedItems", "groupBy", "groupValue", "tabIndex", "typeahead"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }, { type: i2.ɵr, selector: "ng-option", inputs: ["disabled", "value"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
|
|
110
179
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: LibeyNgSignatureComponent, decorators: [{
|
|
111
180
|
type: Component,
|
|
112
181
|
args: [{
|
|
@@ -125,4 +194,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
125
194
|
type: ViewChild,
|
|
126
195
|
args: [SignaturePad]
|
|
127
196
|
}] } });
|
|
128
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliZXktbmctc2lnbmF0dXJlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2xpYmV5LW5nLWNvbXBvbmVudC1saWJyYXJ5L3NyYy9saWIvc2lnbmF0dXJlL2xpYmV5LW5nLXNpZ25hdHVyZS9saWJleS1uZy1zaWduYXR1cmUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbGliZXktbmctY29tcG9uZW50LWxpYnJhcnkvc3JjL2xpYi9zaWduYXR1cmUvbGliZXktbmctc2lnbmF0dXJlL2xpYmV5LW5nLXNpZ25hdHVyZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUdULFNBQVMsRUFDVCxNQUFNLEVBQ04sWUFBWSxFQUNaLEtBQUssR0FDTixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFNUQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7Ozs7OztBQU9yRCxNQUFNLGFBQWE7Q0FJbEI7QUFPRCxNQUFNLE9BQU8seUJBQXlCO0lBcUJwQztRQXBCVSxvQkFBZSxHQUFHLElBQUksWUFBWSxFQUFrQixDQUFDO1FBQ3RELGVBQVUsR0FBVyxVQUFVLENBQUM7UUFFakMsY0FBUyxHQUFxQixJQUFJLE9BQU8sRUFBVyxDQUFDO1FBTTdELGNBQVMsR0FBVyxHQUFHLENBQUM7UUFDeEIsZUFBVSxHQUFXLEdBQUcsQ0FBQztRQUN6QixnQkFBVyxHQUFXLEdBQUcsQ0FBQztRQUMxQixpQkFBWSxHQUFXLEdBQUcsQ0FBQztRQUMzQix3QkFBbUIsR0FBVztZQUM1QixRQUFRLEVBQUUsQ0FBQztZQUNYLFdBQVcsRUFBRSxJQUFJLENBQUMsU0FBUztZQUMz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dUhBckhILHlCQUF5QjsyR0FBekIseUJBQXlCLHNSQU96QixZQUFZLGdEQ3RDekIsNDlCQW1CTTs0RkRZTyx5QkFBeUI7a0JBTHJDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHdCQUF3QjtvQkFDbEMsV0FBVyxFQUFFLHFDQUFxQztvQkFDbEQsU0FBUyxFQUFFLENBQUMsb0NBQW9DLENBQUM7aUJBQ2xEOzBFQUVXLGVBQWU7c0JBQXhCLE1BQU07Z0JBQ0UsVUFBVTtzQkFBbEIsS0FBSztnQkFJTixNQUFNO3NCQURMLFNBQVM7dUJBQUMsUUFBUSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFFYixZQUFZO3NCQUFwQyxTQUFTO3VCQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIE9uRGVzdHJveSxcbiAgVmlld0NoaWxkLFxuICBPdXRwdXQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2lnV2ViVGFibGV0IH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvU2lnV2ViL1NpZ1dlYic7XG5pbXBvcnQgeyBGb3JtLCBGb3JtQnVpbGRlciwgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFNpZ25hdHVyZVBhZCB9IGZyb20gJ2FuZ3VsYXIyLXNpZ25hdHVyZXBhZCc7XG5pbnRlcmZhY2UgSU91dHB1dE1lc3NhZ2Uge1xuICBiaW9TaWdEYXRhOiBzdHJpbmc7XG4gIHNpZ0ltZ0RhdGE6IHN0cmluZztcbiAgc2lnU3RyaW5nOiBzdHJpbmc7XG59XG5cbmNsYXNzIE91dHB1dE1lc3NhZ2UgaW1wbGVtZW50cyBJT3V0cHV0TWVzc2FnZSB7XG4gIGJpb1NpZ0RhdGE6IHN0cmluZztcbiAgc2lnSW1nRGF0YTogc3RyaW5nO1xuICBzaWdTdHJpbmc6IHN0cmluZztcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLWxpYmV5LW5nLXNpZ25hdHVyZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9saWJleS1uZy1zaWduYXR1cmUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9saWJleS1uZy1zaWduYXR1cmUuY29tcG9uZW50LmNzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBMaWJleU5nU2lnbmF0dXJlQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgQE91dHB1dCgpIE91dHB1dFNpZ25hdHVyZSA9IG5ldyBFdmVudEVtaXR0ZXI8SU91dHB1dE1lc3NhZ2U+KCk7XG4gIEBJbnB1dCgpIERldmljZVR5cGU6IHN0cmluZyA9ICdtb3VzZXBhZCc7XG5cbiAgcHJpdmF0ZSBfZGVzdHJveSQ6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuICBAVmlld0NoaWxkKCdzaWdJbWcnLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgY2FudmFzITogRWxlbWVudFJlZjxIVE1MQ2FudmFzRWxlbWVudD47XG4gIEBWaWV3Q2hpbGQoU2lnbmF0dXJlUGFkKSBzaWduYXR1cmVQYWQ6IFNpZ25hdHVyZVBhZDtcbiAgY252Q29udGV4dDogQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEO1xuICB0bXI6IGFueTtcbiAgd2lkdGhWaWV3OiBudW1iZXIgPSA1MDA7XG4gIGhlaWdodFZpZXc6IG51bWJlciA9IDIwMDtcbiAgd2lkdGhSZW5kZXI6IG51bWJlciA9IDUwMDtcbiAgaGVpZ2h0UmVuZGVyOiBudW1iZXIgPSAyMDA7XG4gIHNpZ25hdHVyZVBhZE9wdGlvbnM6IE9iamVjdCA9IHtcbiAgICBtaW5XaWR0aDogNSxcbiAgICBjYW52YXNXaWR0aDogdGhpcy53aWR0aFZpZXcsXG4gICAgY2FudmFzSGVpZ2h0OiB0aGlzLmhlaWdodFZpZXcsXG4gICAgYmFja2dyb3VuZENvbG9yOiAncmdiYSgyNDIsMjQyLDI0MiwxKScsXG4gIH07XG5cbiAgY29uc3RydWN0b3IoKSB7fVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLkluaXREZXZpY2UoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuY2xvc2luZ1NpZ1dlYigpO1xuICAgIHRoaXMuX2Rlc3Ryb3kkLm5leHQodHJ1ZSk7XG4gIH1cblxuICBDaGFuZ2VEZXZpY2UoKSB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLkluaXREZXZpY2UoKTtcbiAgICB9LCAyMDApO1xuICB9XG5cbiAgSW5pdERldmljZSgpIHtcbiAgICBpZiAodGhpcy5EZXZpY2VUeXBlID09ICdwaW5wYWQnKSB7XG4gICAgICB0aGlzLmNudkNvbnRleHQgPSAoPEhUTUxDYW52YXNFbGVtZW50PihcbiAgICAgICAgdGhpcy5jYW52YXMubmF0aXZlRWxlbWVudFxuICAgICAgKSkuZ2V0Q29udGV4dCgnMmQnKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuRGV2aWNlVHlwZSA9PSAnbW91c2VwYWQnKSB7XG4gICAgICB0aGlzLnNpZ25hdHVyZVBhZC5zZXQoJ21pbldpZHRoJywgNSk7XG4gICAgICB0aGlzLnNpZ25hdHVyZVBhZC5jbGVhcigpO1xuICAgIH1cbiAgfVxuXG4gIGNsb3NpbmdTaWdXZWIoKSB7XG4gICAgU2lnV2ViVGFibGV0LkNsZWFyVGFibGV0KCk7XG4gICAgU2lnV2ViVGFibGV0LlNldFRhYmxldFN0YXRlKDAsIHRoaXMudG1yLCBudWxsKTtcbiAgfVxuXG4gIG9uU2lnbigpIHtcbiAgICBjb25zb2xlLmxvZygnb25TaWduIENsaWNrZWQhJyk7XG4gICAgU2lnV2ViVGFibGV0LlNldERpc3BsYXlYU2l6ZSh0aGlzLndpZHRoUmVuZGVyKTtcbiAgICBTaWdXZWJUYWJsZXQuU2V0RGlzcGxheVlTaXplKHRoaXMuaGVpZ2h0UmVuZGVyKTtcbiAgICBTaWdXZWJUYWJsZXQuU2V0VGFibGV0U3RhdGUoMCwgdGhpcy50bXIsIG51bGwpO1xuICAgIFNpZ1dlYlRhYmxldC5TZXRKdXN0aWZ5TW9kZSgwKTtcbiAgICBTaWdXZWJUYWJsZXQuQ2xlYXJUYWJsZXQoKTtcblxuICAgIGlmICh0aGlzLnRtciA9PSBudWxsKSB7XG4gICAgICB0aGlzLnRtciA9IFNpZ1dlYlRhYmxldC5TZXRUYWJsZXRTdGF0ZSgxLCB0aGlzLmNudkNvbnRleHQsIDUwKTtcbiAgICB9IGVsc2Uge1xuICAgICAgU2lnV2ViVGFibGV0LlNldFRhYmxldFN0YXRlKDAsIHRoaXMudG1yLCBudWxsKTtcbiAgICAgIHRoaXMudG1yID0gbnVsbDtcbiAgICAgIHRoaXMudG1yID0gU2lnV2ViVGFibGV0LlNldFRhYmxldFN0YXRlKDEsIHRoaXMuY252Q29udGV4dCwgNTApO1xuICAgIH1cbiAgfVxuXG4gIG9uQ2xlYXIoKSB7XG4gICAgaWYgKHRoaXMuRGV2aWNlVHlwZSA9PSAncGlucGFkJykge1xuICAgICAgU2lnV2ViVGFibGV0LkNsZWFyVGFibGV0KCk7XG4gICAgICBpZiAodGhpcy5jbnZDb250ZXh0KSB7XG4gICAgICAgIHRoaXMuY252Q29udGV4dC5jbGVhclJlY3QoXG4gICAgICAgICAgMCxcbiAgICAgICAgICAwLFxuICAgICAgICAgIHRoaXMuY2FudmFzLm5hdGl2ZUVsZW1lbnQud2lkdGgsXG4gICAgICAgICAgdGhpcy5jYW52YXMubmF0aXZlRWxlbWVudC5oZWlnaHRcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHRoaXMuRGV2aWNlVHlwZSA9PSAnbW91c2VwYWQnKSB7XG4gICAgICB0aGlzLnNpZ25hdHVyZVBhZC5jbGVhcigpO1xuICAgIH1cbiAgfVxuXG4gIG9uRG9uZSgpIHtcbiAgICBpZiAodGhpcy5EZXZpY2VUeXBlID09ICdwaW5wYWQnKSB7XG4gICAgICAvLyBpZiAoTnVtYmVyKFNpZ1dlYlRhYmxldC5OdW1iZXJPZlRhYmxldFBvaW50cygpKSA9PT0gMCkge1xuICAgICAgLy8gICBhbGVydCgnUG9yIGZhdm9yIGZpcm1lIGFudGVzIGRlIGNvbnRpbnVhcicpO1xuICAgICAgLy8gfSBlbHNlIHtcbiAgICAgIFNpZ1dlYlRhYmxldC5TZXRUYWJsZXRTdGF0ZSgwLCB0aGlzLnRtciwgbnVsbCk7XG5cbiAgICAgIFNpZ1dlYlRhYmxldC5TZXRTaWdDb21wcmVzc2lvbk1vZGUoMSk7XG4gICAgICB2YXIgcmVzdWx0ID0gbmV3IE91dHB1dE1lc3NhZ2UoKTtcbiAgICAgIHJlc3VsdC5iaW9TaWdEYXRhID0gU2lnV2ViVGFibGV0LkdldFNpZ1N0cmluZygpO1xuICAgICAgcmVzdWx0LnNpZ0ltZ0RhdGEgPSBTaWdXZWJUYWJsZXQuR2V0U2lnU3RyaW5nKCk7XG4gICAgICBTaWdXZWJUYWJsZXQuU2V0SW1hZ2VYU2l6ZSh0aGlzLndpZHRoUmVuZGVyKTtcbiAgICAgIFNpZ1dlYlRhYmxldC5TZXRJbWFnZVlTaXplKHRoaXMuaGVpZ2h0UmVuZGVyKTtcbiAgICAgIFNpZ1dlYlRhYmxldC5TZXRJbWFnZVBlbldpZHRoKDUpO1xuICAgICAgU2lnV2ViVGFibGV0LkdldFNpZ0ltYWdlQjY0KChiYXNlNjQ6IHN0cmluZykgPT4ge1xuICAgICAgICByZXN1bHQuc2lnU3RyaW5nID0gXCJkYXRhOmltYWdlL3BuZztiYXNlNjQsXCIgKyBiYXNlNjQ7XG4gICAgICAgIHRoaXMuT3V0cHV0U2lnbmF0dXJlLmVtaXQocmVzdWx0KTtcbiAgICAgIH0pO1xuICAgICAgLy8gfVxuICAgIH1cbiAgICBpZiAodGhpcy5EZXZpY2VUeXBlID09ICdtb3VzZXBhZCcpIHtcbiAgICAgIHZhciByZXN1bHQgPSBuZXcgT3V0cHV0TWVzc2FnZSgpO1xuICAgICAgcmVzdWx0LnNpZ1N0cmluZyA9IHRoaXMuc2lnbmF0dXJlUGFkLnRvRGF0YVVSTCgpO1xuICAgICAgdGhpcy5PdXRwdXRTaWduYXR1cmUuZW1pdChyZXN1bHQpO1xuICAgIH1cbiAgfVxuICBkcmF3Q29tcGxldGUoKSB7fVxuXG4gIGRyYXdTdGFydCgpIHt9XG59XG4iLCI8ZGl2IGNsYXNzPVwiY29udGFpbmVyXCI+XG4gIDxkaXYgKm5nSWY9XCJEZXZpY2VUeXBlPT0ncGlucGFkJ1wiPlxuICAgIDxjYW52YXMgI3NpZ0ltZyBbd2lkdGhdPVwid2lkdGhWaWV3XCIgW2hlaWdodF09XCJoZWlnaHRWaWV3XCIgc3R5bGU9XCJiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI0MiwyNDIsMjQyLDEpO1wiPjwvY2FudmFzPiAgXG4gIDwvZGl2PlxuICA8ZGl2ICpuZ0lmPVwiRGV2aWNlVHlwZT09J21vdXNlcGFkJ1wiPlxuICAgIDxzaWduYXR1cmUtcGFkIFtvcHRpb25zXT1cInNpZ25hdHVyZVBhZE9wdGlvbnNcIiAob25CZWdpbkV2ZW50KT1cImRyYXdTdGFydCgpXCIgKG9uRW5kRXZlbnQpPVwiZHJhd0NvbXBsZXRlKClcIj48L3NpZ25hdHVyZS1wYWQ+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgPGJ1dHRvbiAqbmdJZj1cIkRldmljZVR5cGU9PSdwaW5wYWQnXCIgbWF0LXJhaXNlZC1idXR0b24gKGNsaWNrKT1cIm9uU2lnbigpXCI+RmlybWFyPC9idXR0b24+XG4gICAgPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiAoY2xpY2spPVwib25DbGVhcigpXCI+TGltcGlhcjwvYnV0dG9uPlxuICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gKGNsaWNrKT1cIm9uRG9uZSgpXCI+R3VhcmRhcjwvYnV0dG9uPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgIDxuZy1zZWxlY3QgWyhuZ01vZGVsKV09XCJEZXZpY2VUeXBlXCIgY2xhc3M9XCJuZy1zZWxlY3RcIiBwbGFjZWhvbGRlcj1cIlNlbGVjY2lvbmFyXCIgW2NsZWFyYWJsZV09XCJmYWxzZVwiXG4gICAgKGNoYW5nZSk9XCJDaGFuZ2VEZXZpY2UoKVwiPlxuICAgICAgPG5nLW9wdGlvbiBbdmFsdWVdPVwiJ3BpbnBhZCdcIj5QaW5wYWQ8L25nLW9wdGlvbj5cbiAgICAgIDxuZy1vcHRpb24gW3ZhbHVlXT1cIidtb3VzZXBhZCdcIj5Nb3VzZXBhZDwvbmctb3B0aW9uPlxuICAgIDwvbmctc2VsZWN0PlxuICA8L2Rpdj5cbjwvZGl2PiJdfQ==
|
|
197
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliZXktbmctc2lnbmF0dXJlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2xpYmV5LW5nLWNvbXBvbmVudC1saWJyYXJ5L3NyYy9saWIvc2lnbmF0dXJlL2xpYmV5LW5nLXNpZ25hdHVyZS9saWJleS1uZy1zaWduYXR1cmUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbGliZXktbmctY29tcG9uZW50LWxpYnJhcnkvc3JjL2xpYi9zaWduYXR1cmUvbGliZXktbmctc2lnbmF0dXJlL2xpYmV5LW5nLXNpZ25hdHVyZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUdULFNBQVMsRUFDVCxNQUFNLEVBQ04sWUFBWSxFQUNaLEtBQUssR0FDTixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFNUQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7Ozs7OztBQU9yRCxNQUFNLGFBQWE7Q0FJbEI7QUFPRCxNQUFNLE9BQU8seUJBQXlCO0lBdUJwQztRQXRCVSxvQkFBZSxHQUFHLElBQUksWUFBWSxFQUFrQixDQUFDO1FBQ3RELGVBQVUsR0FBVyxVQUFVLENBQUM7UUFFakMsY0FBUyxHQUFxQixJQUFJLE9BQU8sRUFBVyxDQUFDO1FBTTdELGNBQVMsR0FBVyxHQUFHLENBQUM7UUFDeEIsZUFBVSxHQUFXLEdBQUcsQ0FBQztRQUN6QixnQkFBVyxHQUFXLEdBQUcsQ0FBQztRQUMxQixpQkFBWSxHQUFXLEdBQUcsQ0FBQztRQUMzQix3QkFBbUIsR0FBVztZQUM1QixRQUFRLEVBQUUsQ0FBQztZQUNYLFdBQVcsRUFBRSxJQUFJLENBQUMsU0FBUztZQUMz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bXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgT25EZXN0cm95LFxuICBWaWV3Q2hpbGQsXG4gIE91dHB1dCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTaWdXZWJUYWJsZXQgfSBmcm9tICcuLi8uLi8uLi91dGlscy9TaWdXZWIvU2lnV2ViJztcbmltcG9ydCB7IEZvcm0sIEZvcm1CdWlsZGVyLCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgU2lnbmF0dXJlUGFkIH0gZnJvbSAnYW5ndWxhcjItc2lnbmF0dXJlcGFkJztcbmludGVyZmFjZSBJT3V0cHV0TWVzc2FnZSB7XG4gIGJpb1NpZ0RhdGE6IHN0cmluZztcbiAgc2lnSW1nRGF0YTogc3RyaW5nO1xuICBzaWdTdHJpbmc6IHN0cmluZztcbn1cblxuY2xhc3MgT3V0cHV0TWVzc2FnZSBpbXBsZW1lbnRzIElPdXRwdXRNZXNzYWdlIHtcbiAgYmlvU2lnRGF0YTogc3RyaW5nO1xuICBzaWdJbWdEYXRhOiBzdHJpbmc7XG4gIHNpZ1N0cmluZzogc3RyaW5nO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItbGliZXktbmctc2lnbmF0dXJlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2xpYmV5LW5nLXNpZ25hdHVyZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2xpYmV5LW5nLXNpZ25hdHVyZS5jb21wb25lbnQuY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIExpYmV5TmdTaWduYXR1cmVDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICBAT3V0cHV0KCkgT3V0cHV0U2lnbmF0dXJlID0gbmV3IEV2ZW50RW1pdHRlcjxJT3V0cHV0TWVzc2FnZT4oKTtcbiAgQElucHV0KCkgRGV2aWNlVHlwZTogc3RyaW5nID0gJ21vdXNlcGFkJztcblxuICBwcml2YXRlIF9kZXN0cm95JDogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG4gIEBWaWV3Q2hpbGQoJ3NpZ0ltZycsIHsgc3RhdGljOiBmYWxzZSB9KVxuICBjYW52YXMhOiBFbGVtZW50UmVmPEhUTUxDYW52YXNFbGVtZW50PjtcbiAgQFZpZXdDaGlsZChTaWduYXR1cmVQYWQpIHNpZ25hdHVyZVBhZDogU2lnbmF0dXJlUGFkO1xuICBjbnZDb250ZXh0OiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ7XG4gIHRtcjogYW55O1xuICB3aWR0aFZpZXc6IG51bWJlciA9IDUwMDtcbiAgaGVpZ2h0VmlldzogbnVtYmVyID0gMjAwO1xuICB3aWR0aFJlbmRlcjogbnVtYmVyID0gNTAwO1xuICBoZWlnaHRSZW5kZXI6IG51bWJlciA9IDIwMDtcbiAgc2lnbmF0dXJlUGFkT3B0aW9uczogT2JqZWN0ID0ge1xuICAgIG1pbldpZHRoOiA1LFxuICAgIGNhbnZhc1dpZHRoOiB0aGlzLndpZHRoVmlldyxcbiAgICBjYW52YXNIZWlnaHQ6IHRoaXMuaGVpZ2h0VmlldyxcbiAgfTtcbiAgRmlsZVZhbGlkYXRlZCA9IGZhbHNlO1xuICBOb3REcml2ZXIgPSBmYWxzZTtcbiAgVXBsb2FkRmlsZTogc3RyaW5nID0gbnVsbDtcbiAgRmlsZTogYW55O1xuICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuSW5pdERldmljZSgpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5jbG9zaW5nU2lnV2ViKCk7XG4gICAgdGhpcy5fZGVzdHJveSQubmV4dCh0cnVlKTtcbiAgfVxuXG4gIENoYW5nZURldmljZSgpIHtcbiAgICB0aGlzLk5vdERyaXZlciA9IGZhbHNlO1xuICAgIHRoaXMuVXBsb2FkRmlsZSA9IG51bGw7XG4gICAgdGhpcy5GaWxlID0gbnVsbDtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuSW5pdERldmljZSgpO1xuICAgIH0sIDIwMCk7XG4gIH1cblxuICBJbml0RGV2aWNlKCkge1xuICAgIGlmICh0aGlzLkRldmljZVR5cGUgPT0gJ3BpbnBhZCcpIHtcbiAgICAgIHRoaXMuY252Q29udGV4dCA9ICg8SFRNTENhbnZhc0VsZW1lbnQ+KFxuICAgICAgICB0aGlzLmNhbnZhcy5uYXRpdmVFbGVtZW50XG4gICAgICApKS5nZXRDb250ZXh0KCcyZCcpO1xuICAgIH1cbiAgICBpZiAodGhpcy5EZXZpY2VUeXBlID09ICdtb3VzZXBhZCcpIHtcbiAgICAgIHRoaXMuc2lnbmF0dXJlUGFkLnNldCgnbWluV2lkdGgnLCA1KTtcbiAgICAgIHRoaXMuc2lnbmF0dXJlUGFkLmNsZWFyKCk7XG4gICAgfVxuICB9XG5cbiAgY2xvc2luZ1NpZ1dlYigpIHtcbiAgICBTaWdXZWJUYWJsZXQuQ2xlYXJUYWJsZXQoKTtcbiAgICBTaWdXZWJUYWJsZXQuU2V0VGFibGV0U3RhdGUoMCwgdGhpcy50bXIsIG51bGwpO1xuICB9XG5cbiAgb25TaWduKCkge1xuICAgIHRoaXMuTm90RHJpdmVyID0gZmFsc2U7XG4gICAgdGhpcy5VcGxvYWRGaWxlID0gbnVsbDtcbiAgICB2YXIgZHJpdmVyID0gU2lnV2ViVGFibGV0LkdldFZlcnNpb25TdHJpbmcoKTtcbiAgICBpZihkcml2ZXIgPT0gbnVsbCl7XG4gICAgICB0aGlzLk5vdERyaXZlciA9IHRydWU7XG4gICAgfWVsc2V7XG4gICAgICB0aGlzLk5vdERyaXZlciA9IGZhbHNlO1xuICAgICAgY29uc29sZS5sb2coJ29uU2lnbiBDbGlja2VkIScpO1xuICAgICAgU2lnV2ViVGFibGV0LlNldERpc3BsYXlYU2l6ZSh0aGlzLndpZHRoUmVuZGVyKTtcbiAgICAgIFNpZ1dlYlRhYmxldC5TZXREaXNwbGF5WVNpemUodGhpcy5oZWlnaHRSZW5kZXIpO1xuICAgICAgU2lnV2ViVGFibGV0LlNldFRhYmxldFN0YXRlKDAsIHRoaXMudG1yLCBudWxsKTtcbiAgICAgIFNpZ1dlYlRhYmxldC5TZXRKdXN0aWZ5TW9kZSgwKTtcbiAgICAgIFNpZ1dlYlRhYmxldC5DbGVhclRhYmxldCgpO1xuXG4gICAgICBpZiAodGhpcy50bXIgPT0gbnVsbCkge1xuICAgICAgICB0aGlzLnRtciA9IFNpZ1dlYlRhYmxldC5TZXRUYWJsZXRTdGF0ZSgxLCB0aGlzLmNudkNvbnRleHQsIDUwKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIFNpZ1dlYlRhYmxldC5TZXRUYWJsZXRTdGF0ZSgwLCB0aGlzLnRtciwgbnVsbCk7XG4gICAgICAgIHRoaXMudG1yID0gbnVsbDtcbiAgICAgICAgdGhpcy50bXIgPSBTaWdXZWJUYWJsZXQuU2V0VGFibGV0U3RhdGUoMSwgdGhpcy5jbnZDb250ZXh0LCA1MCk7XG4gICAgICB9XG4gICAgfSAgICBcbiAgfVxuXG4gIG9uQ2xlYXIoKSB7XG4gICAgaWYodGhpcy5VcGxvYWRGaWxlID09IG51bGwpe1xuICAgICAgaWYgKHRoaXMuRGV2aWNlVHlwZSA9PSAncGlucGFkJykge1xuICAgICAgICBTaWdXZWJUYWJsZXQuQ2xlYXJUYWJsZXQoKTtcbiAgICAgICAgaWYgKHRoaXMuY252Q29udGV4dCkge1xuICAgICAgICAgIHRoaXMuY252Q29udGV4dC5jbGVhclJlY3QoXG4gICAgICAgICAgICAwLFxuICAgICAgICAgICAgMCxcbiAgICAgICAgICAgIHRoaXMuY2FudmFzLm5hdGl2ZUVsZW1lbnQud2lkdGgsXG4gICAgICAgICAgICB0aGlzLmNhbnZhcy5uYXRpdmVFbGVtZW50LmhlaWdodFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLkRldmljZVR5cGUgPT0gJ21vdXNlcGFkJykge1xuICAgICAgICB0aGlzLnNpZ25hdHVyZVBhZC5jbGVhcigpO1xuICAgICAgfVxuICAgIH1lbHNle1xuICAgICAgdGhpcy5GaWxlID0gbnVsbDtcbiAgICAgIHRoaXMuVXBsb2FkRmlsZSA9IG51bGw7XG4gICAgICB0aGlzLkNoYW5nZURldmljZSgpO1xuICAgIH1cbiAgfVxuXG4gIG9uRG9uZSgpIHtcbiAgICB2YXIgcmVzdWx0ID0gbmV3IE91dHB1dE1lc3NhZ2UoKTtcbiAgICBpZih0aGlzLlVwbG9hZEZpbGUgPT0gbnVsbCl7XG4gICAgICBpZiAodGhpcy5EZXZpY2VUeXBlID09ICdwaW5wYWQnKSB7XG4gICAgICAgIC8vIGlmIChOdW1iZXIoU2lnV2ViVGFibGV0Lk51bWJlck9mVGFibGV0UG9pbnRzKCkpID09PSAwKSB7XG4gICAgICAgIC8vICAgYWxlcnQoJ1BvciBmYXZvciBmaXJtZSBhbnRlcyBkZSBjb250aW51YXInKTtcbiAgICAgICAgLy8gfSBlbHNlIHtcbiAgICAgICAgU2lnV2ViVGFibGV0LlNldFRhYmxldFN0YXRlKDAsIHRoaXMudG1yLCBudWxsKTtcblxuICAgICAgICBTaWdXZWJUYWJsZXQuU2V0U2lnQ29tcHJlc3Npb25Nb2RlKDEpO1xuICAgICAgICByZXN1bHQuYmlvU2lnRGF0YSA9IFNpZ1dlYlRhYmxldC5HZXRTaWdTdHJpbmcoKTtcbiAgICAgICAgcmVzdWx0LnNpZ0ltZ0RhdGEgPSBTaWdXZWJUYWJsZXQuR2V0U2lnU3RyaW5nKCk7XG4gICAgICAgIFNpZ1dlYlRhYmxldC5TZXRJbWFnZVhTaXplKHRoaXMud2lkdGhSZW5kZXIpO1xuICAgICAgICBTaWdXZWJUYWJsZXQuU2V0SW1hZ2VZU2l6ZSh0aGlzLmhlaWdodFJlbmRlcik7XG4gICAgICAgIFNpZ1dlYlRhYmxldC5TZXRJbWFnZVBlbldpZHRoKDUpO1xuICAgICAgICBTaWdXZWJUYWJsZXQuR2V0U2lnSW1hZ2VCNjQoKGJhc2U2NDogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgcmVzdWx0LnNpZ1N0cmluZyA9IFwiZGF0YTppbWFnZS9wbmc7YmFzZTY0LFwiICsgYmFzZTY0O1xuICAgICAgICAgIHRoaXMuT3V0cHV0U2lnbmF0dXJlLmVtaXQocmVzdWx0KTtcbiAgICAgICAgfSk7XG4gICAgICAgIC8vIH1cbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLkRldmljZVR5cGUgPT0gJ21vdXNlcGFkJykge1xuICAgICAgICB2YXIgcmVzdWx0ID0gbmV3IE91dHB1dE1lc3NhZ2UoKTtcbiAgICAgICAgcmVzdWx0LnNpZ1N0cmluZyA9IHRoaXMuc2lnbmF0dXJlUGFkLnRvRGF0YVVSTCgpO1xuICAgICAgICB0aGlzLk91dHB1dFNpZ25hdHVyZS5lbWl0KHJlc3VsdCk7XG4gICAgICB9XG4gICAgfWVsc2V7XG4gICAgICByZXN1bHQuc2lnU3RyaW5nID0gdGhpcy5VcGxvYWRGaWxlO1xuICAgICAgdGhpcy5PdXRwdXRTaWduYXR1cmUuZW1pdChyZXN1bHQpO1xuICAgIH1cbiAgfVxuICBmaWxlRXZlbnQoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMuVXBsb2FkRmlsZSA9IG51bGw7XG4gICAgdGhpcy5GaWxlVmFsaWRhdGVkID0gZmFsc2U7XG4gICAgY29uc3QgZmlsZSA9IGV2ZW50LnRhcmdldC5maWxlc1swXTtcbiAgICBpZiAoZmlsZS50eXBlID09ICdpbWFnZS9qcGVnJyB8fCBmaWxlLnR5cGUgPT0gJ2ltYWdlL3BuZycpIHtcbiAgICAgIHRoaXMuRmlsZVZhbGlkYXRlZCA9IGZhbHNlO1xuICAgICAgY29uc3QgbmV3V2lkdGggPSB0aGlzLndpZHRoUmVuZGVyO1xuICAgICAgY29uc3QgbmV3SGVpZ2h0ID0gdGhpcy5oZWlnaHRSZW5kZXI7XG4gICAgICB0aGlzLnJlc2l6ZUltYWdlKGZpbGUsIG5ld1dpZHRoLCBuZXdIZWlnaHQpXG4gICAgICAgIC50aGVuKChyZXNpemVkSW1hZ2VEYXRhVXJsKSA9PiB7XG4gICAgICAgICAgdGhpcy5VcGxvYWRGaWxlID0gcmVzaXplZEltYWdlRGF0YVVybDtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGFsIHJlZGltZW5zaW9uYXIgbGEgaW1hZ2VuOicsIGVycm9yKTtcbiAgICAgICAgfSk7XG4gICAgfWVsc2V7XG4gICAgICB0aGlzLkZpbGUgPSBudWxsO1xuICAgICAgdGhpcy5VcGxvYWRGaWxlID0gbnVsbDtcbiAgICAgIHRoaXMuRmlsZVZhbGlkYXRlZCA9IHRydWU7XG4gICAgfVxuICB9XG4gIHJlc2l6ZUltYWdlKGltYWdlOiBGaWxlLCBuZXdXaWR0aDogbnVtYmVyLCBuZXdIZWlnaHQ6IG51bWJlcik6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG4gICAgICByZWFkZXIub25sb2FkID0gKGUpID0+IHtcbiAgICAgICAgY29uc3QgaW1nID0gbmV3IEltYWdlKCk7XG4gICAgICAgIGltZy5zcmMgPSBlLnRhcmdldC5yZXN1bHQgYXMgc3RyaW5nO1xuICAgICAgICBpbWcub25sb2FkID0gKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpO1xuICAgICAgICAgIGNvbnN0IGN0eCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpO1xuICAgICAgICAgIGNhbnZhcy53aWR0aCA9IG5ld1dpZHRoO1xuICAgICAgICAgIGNhbnZhcy5oZWlnaHQgPSBuZXdIZWlnaHQ7XG4gICAgICAgICAgY3R4LmRyYXdJbWFnZShpbWcsIDAsIDAsIG5ld1dpZHRoLCBuZXdIZWlnaHQpO1xuICAgICAgICAgIGNvbnN0IHJlc2l6ZWRJbWFnZURhdGFVcmwgPSBjYW52YXMudG9EYXRhVVJMKGltYWdlLnR5cGUpO1xuICAgICAgICAgIHJlc29sdmUocmVzaXplZEltYWdlRGF0YVVybCk7XG4gICAgICAgIH07XG4gICAgICAgIGltZy5vbmVycm9yID0gKGVycm9yKSA9PiB7XG4gICAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICByZWFkZXIucmVhZEFzRGF0YVVSTChpbWFnZSk7XG4gICAgfSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJjb250YWluZXJcIj5cbiAgPGRpdiAqbmdJZj1cIlVwbG9hZEZpbGU9PW51bGxcIj5cbiAgICA8ZGl2ICpuZ0lmPVwiRGV2aWNlVHlwZT09J3BpbnBhZCdcIiBzdHlsZT1cImN1cnNvcjogcG9pbnRlcjsgYm9yZGVyOiAxcHggcmlkZ2UgI2QyZDJkMjtcIj5cbiAgICAgIDxjYW52YXMgIChjbGljayk9XCJvblNpZ24oKVwiICNzaWdJbWcgW3dpZHRoXT1cIndpZHRoVmlld1wiIFtoZWlnaHRdPVwiaGVpZ2h0Vmlld1wiPjwvY2FudmFzPiAgXG4gICAgPC9kaXY+XG4gICAgPGRpdiAqbmdJZj1cIkRldmljZVR5cGU9PSdtb3VzZXBhZCdcIiBzdHlsZT1cImJvcmRlcjogMXB4IHJpZGdlICNkMmQyZDI7XCI+XG4gICAgICA8c2lnbmF0dXJlLXBhZCBbb3B0aW9uc109XCJzaWduYXR1cmVQYWRPcHRpb25zXCI+PC9zaWduYXR1cmUtcGFkPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiAqbmdJZj1cIlVwbG9hZEZpbGUhPW51bGxcIiBzdHlsZT1cImJvcmRlcjogMXB4IHJpZGdlICNkMmQyZDI7XCI+XG4gICAgPGltZyBbc3JjXT1cIlVwbG9hZEZpbGVcIiBbd2lkdGhdPVwid2lkdGhWaWV3XCIgW2hlaWdodF09XCJoZWlnaHRWaWV3XCIgLz5cbiAgPC9kaXY+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiIHN0eWxlPVwicGFkZGluZy10b3A6IDE3cHggIWltcG9ydGFudDsgcGFkZGluZy1ib3R0b206IDE3cHggIWltcG9ydGFudDtcIj5cbiAgICA8aW5wdXQgdHlwZT1cImZpbGVcIiAoY2hhbmdlKT1cImZpbGVFdmVudCgkZXZlbnQpXCIgWyhuZ01vZGVsKV09XCJGaWxlXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXBoXCJcbiAgICBhY2NlcHQ9XCJpbWFnZS9wbmcsIGltYWdlL2pwZWdcIiBzdHlsZT1cImJvcmRlcjogbm9uZTtcIj5cbiAgICA8bGFiZWwgKm5nSWY9XCJGaWxlVmFsaWRhdGVkXCIgW25nQ2xhc3NdPVwiJ3RleHQtZGFuZ2VyJ1wiPkFyY2hpdm8gcmVxdWVyaWRvLiBGb3JtYXRvcyBwZXJtaXRpZG9zIChqcGVnLCBqcGcsIHBuZyk8L2xhYmVsPlxuICA8L2Rpdj5cbjwvZGl2PlxuPGRpdiBjbGFzcz1cInJvd1wiPlxuICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cbiAgICAgIDxuZy1zZWxlY3QgWyhuZ01vZGVsKV09XCJEZXZpY2VUeXBlXCIgY2xhc3M9XCJuZy1zZWxlY3RcIiBwbGFjZWhvbGRlcj1cIlNlbGVjY2lvbmFyXCIgW2NsZWFyYWJsZV09XCJmYWxzZVwiXG4gICAgICAoY2hhbmdlKT1cIkNoYW5nZURldmljZSgpXCI+XG4gICAgICAgICAgPG5nLW9wdGlvbiBbdmFsdWVdPVwiJ3BpbnBhZCdcIj5QaW5wYWQ8L25nLW9wdGlvbj5cbiAgICAgICAgICA8bmctb3B0aW9uIFt2YWx1ZV09XCInbW91c2VwYWQnXCI+TW91c2VwYWQ8L25nLW9wdGlvbj5cbiAgICAgIDwvbmctc2VsZWN0PlxuICAgICAgPGxhYmVsICpuZ0lmPVwiTm90RHJpdmVyXCIgW25nQ2xhc3NdPVwiJ3RleHQtZGFuZ2VyJ1wiPk5vIHRpZW5lIGVsIGRyaXZlciBpbnN0YWxhZG88L2xhYmVsPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XG4gICAgICA8cCBjbGFzcz1cInRleHQtcHJpbWFyeSBmb250LWxpbmstcnBcIiBzdHlsZT1cInRleHQtYWxpZ246IHJpZ2h0OyBjdXJzb3I6IHBvaW50ZXI7XCIgKGNsaWNrKT1cIm9uQ2xlYXIoKVwiPlxuICAgICAgICAgIExpbXBpYXIgZmlybWFcbiAgICAgIDwvcD5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPGRpdiBjbGFzcz1cIm1vZGFsLWZvb3RlciBtdC0xNSBtYi00XCI+XG4gIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zYXZlLXJwXCIgKGNsaWNrKT1cIm9uRG9uZSgpXCI+IFxuICAgICAgPGkgY2xhc3M9XCJpY29uLXNhdmUtd2hpdGVcIj48L2k+IEd1YXJkYXJcbiAgPC9idXR0b24+XG48L2Rpdj4iXX0=
|