myrta-ui 1.0.29 → 1.0.31
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/esm2020/lib/components/form/input-opt/components/input-opt/input-opt.component.mjs +29 -22
- package/esm2020/lib/components/form/input-opt/components/input-opt/input-opt.enum.mjs +8 -0
- package/esm2020/lib/components/gallery/components/gallery-item/gallery-item.component.mjs +18 -11
- package/esm2020/lib/components/gallery/gallery.module.mjs +8 -4
- package/esm2020/lib/components/gallery/services/gallery.service.mjs +6 -4
- package/fesm2015/myrta-ui.mjs +58 -34
- package/fesm2015/myrta-ui.mjs.map +1 -1
- package/fesm2020/myrta-ui.mjs +58 -34
- package/fesm2020/myrta-ui.mjs.map +1 -1
- package/lib/components/form/input-opt/components/input-opt/input-opt.component.d.ts +9 -6
- package/lib/components/form/input-opt/components/input-opt/input-opt.enum.d.ts +7 -0
- package/lib/components/gallery/components/gallery-item/gallery-item.component.d.ts +6 -1
- package/lib/components/gallery/gallery.module.d.ts +2 -1
- package/lib/components/gallery/services/gallery.service.d.ts +3 -1
- package/package.json +1 -1
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { ChangeDetectionStrategy, Component, EventEmitter, HostListener, Input, Output, ViewChildren } from '@angular/core';
|
|
2
2
|
import { FormArray, FormControl, Validators } from '@angular/forms';
|
|
3
3
|
import { NgxOtpBehavior } from '../../models/input-opt.model';
|
|
4
|
+
import { InputOptSizesEnum } from "./input-opt.enum";
|
|
4
5
|
import * as i0 from "@angular/core";
|
|
5
6
|
import * as i1 from "../../services/input-opt.service";
|
|
6
7
|
import * as i2 from "../../../../error-message/error-message.component";
|
|
@@ -35,16 +36,13 @@ export class InputOptComponent {
|
|
|
35
36
|
inputError: '',
|
|
36
37
|
}
|
|
37
38
|
};
|
|
38
|
-
this.
|
|
39
|
-
this.
|
|
39
|
+
this.size = 'large';
|
|
40
|
+
this.customClasses = '';
|
|
40
41
|
this.invalid = false;
|
|
41
42
|
this.invalidMessage = '';
|
|
42
43
|
this.checkInvalid = null;
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
event.preventDefault();
|
|
46
|
-
// @ts-ignore
|
|
47
|
-
this.handlePaste(event.clipboardData.getData('text'));
|
|
44
|
+
this.change = new EventEmitter();
|
|
45
|
+
this.fillChange = new EventEmitter();
|
|
48
46
|
}
|
|
49
47
|
set disable(isDisabled) {
|
|
50
48
|
this.handleDisable(isDisabled);
|
|
@@ -86,8 +84,8 @@ export class InputOptComponent {
|
|
|
86
84
|
'mrx-input-checked-success' :
|
|
87
85
|
this.checkInvalid === true ? 'mrx-input-checked-error' : '';
|
|
88
86
|
}
|
|
89
|
-
getClasses(
|
|
90
|
-
return
|
|
87
|
+
get getClasses() {
|
|
88
|
+
return `${InputOptSizesEnum[this.size]} ${this.customClasses}`;
|
|
91
89
|
}
|
|
92
90
|
convertToFormControl(absCtrl) {
|
|
93
91
|
return absCtrl;
|
|
@@ -251,22 +249,21 @@ export class InputOptComponent {
|
|
|
251
249
|
removeStyleFromAll(styles) {
|
|
252
250
|
this.styles = this.otpService.removeItemFromAll(this.styles, this.otpService.toArray(styles));
|
|
253
251
|
}
|
|
252
|
+
onPaste(event) {
|
|
253
|
+
event.preventDefault();
|
|
254
|
+
// @ts-ignore
|
|
255
|
+
this.handlePaste(event.clipboardData.getData('text'));
|
|
256
|
+
}
|
|
254
257
|
}
|
|
255
258
|
InputOptComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: InputOptComponent, deps: [{ token: i1.InputOptService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
256
|
-
InputOptComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: InputOptComponent, selector: "mrx-input-opt", inputs: { invalid: "invalid", invalidMessage: "invalidMessage", checkInvalid: "checkInvalid", disable: "disable", config: "config", status: "status" }, outputs: { change: "change", fillChange: "fillChange" }, host: { listeners: { "paste": "onPaste($event)" } }, viewQueries: [{ propertyName: "otpInputElements", predicate: ["otpInputElement"], descendants: true }], ngImport: i0, template: "<form\r\n [ngClass]=\"otpConfig.classList.container\"\r\n class=\"mrx-input-otp-container\"\r\n>\r\n <div\r\n *ngFor=\"let control of ngxOtpArray.controls; let i = index\"\r\n [ngClass]=\"otpConfig.classList.inputBox\"\r\n [class.mrx-input-error]=\"invalid\"\r\n [class]=\"checkValidClasses\"\r\n class=\"mrx-input-otp-box\"\r\n >\r\n <label [attr.aria-label]=\"ariaLabels[i]\">\r\n <input\r\n #otpInputElement\r\n [id]=\"'mrx-input-otp-' + i\"\r\n [formControl]=\"convertToFormControl(control)\"\r\n [mrxOptPattern]=\"otpConfig.pattern\"\r\n [type]=\"otpConfig.isPasswordInput ? 'password' : 'text'\"\r\n [ngClass]=\"styles[i]\"\r\n (keyup)=\"handleKeyUp(i, $event.key)\"\r\n (keyup.backspace)=\"handleDelete(i)\"\r\n (keyup.arrowLeft)=\"stepBackward(i)\"\r\n (keyup.arrowRight)=\"stepForward(i)\"\r\n (focus)=\"handleFocus(i)\"\r\n class=\"mrx-input-otp\"\r\n maxlength=\"1\"\r\n autocapitalize=\"off\"\r\n spellcheck=\"false\"\r\n />\r\n </label>\r\n </div>\r\n</form>\r\n\r\n<mrx-error-message\r\n *ngIf=\"invalid && isInvalidMessage\"\r\n [invalidMessage]=\"invalidMessage\"\r\n></mrx-error-message>\r\n", styles: [".mrx-input-otp{width:var(--sizing-12);height:var(--sizing-12);border-radius:var(--border-radius-1);border:1px solid var(--neutral-bg-stroke-default, #DAD5CE);
|
|
259
|
+
InputOptComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: InputOptComponent, selector: "mrx-input-opt", inputs: { size: "size", customClasses: "customClasses", invalid: "invalid", invalidMessage: "invalidMessage", checkInvalid: "checkInvalid", disable: "disable", config: "config", status: "status" }, outputs: { change: "change", fillChange: "fillChange" }, host: { listeners: { "paste": "onPaste($event)" } }, viewQueries: [{ propertyName: "otpInputElements", predicate: ["otpInputElement"], descendants: true }], ngImport: i0, template: "<form\r\n [ngClass]=\"otpConfig.classList.container\"\r\n class=\"mrx-input-otp-container\"\r\n [class]=\"getClasses\"\r\n>\r\n <div\r\n *ngFor=\"let control of ngxOtpArray.controls; let i = index\"\r\n [ngClass]=\"otpConfig.classList.inputBox\"\r\n [class.mrx-input-error]=\"invalid\"\r\n [class]=\"checkValidClasses\"\r\n class=\"mrx-input-otp-box\"\r\n >\r\n <label [attr.aria-label]=\"ariaLabels[i]\">\r\n <input\r\n #otpInputElement\r\n [id]=\"'mrx-input-otp-' + i\"\r\n [formControl]=\"convertToFormControl(control)\"\r\n [mrxOptPattern]=\"otpConfig.pattern\"\r\n [type]=\"otpConfig.isPasswordInput ? 'password' : 'text'\"\r\n [ngClass]=\"styles[i]\"\r\n (keyup)=\"handleKeyUp(i, $event.key)\"\r\n (keyup.backspace)=\"handleDelete(i)\"\r\n (keyup.arrowLeft)=\"stepBackward(i)\"\r\n (keyup.arrowRight)=\"stepForward(i)\"\r\n (focus)=\"handleFocus(i)\"\r\n class=\"mrx-input-otp\"\r\n maxlength=\"1\"\r\n autocapitalize=\"off\"\r\n spellcheck=\"false\"\r\n />\r\n </label>\r\n </div>\r\n</form>\r\n\r\n<mrx-error-message\r\n *ngIf=\"invalid && isInvalidMessage\"\r\n customClasses=\"text-left\"\r\n [invalidMessage]=\"invalidMessage\"\r\n></mrx-error-message>\r\n", styles: [".mrx-input-otp{background:var(--brand-bg-tertiary-default, #FFF);color:var(--neutral-text-primary, #262626);text-align:center;outline:0}.mrx-input-otp-container{display:flex}.mrx-input-otp-box label{margin-bottom:0}.mrx-input-otp-disabled{opacity:.3}.mrx-input-otp-container.mrx-input-opt-lg{gap:12px}.mrx-input-otp-container.mrx-input-opt-lg .mrx-input-otp{width:var(--sizing-12);height:var(--sizing-12);border-radius:var(--border-radius-1);border:1px solid var(--neutral-bg-stroke-default, #DAD5CE);font-family:var(--headlines-lvl-3-font-family);font-weight:var(--headlines-lvl-3-font-weight);line-height:var(--headlines-lvl-3-line-height);font-size:var(--headlines-lvl-3-font-size)}.mrx-input-otp-container.mrx-input-opt-md{gap:10px}.mrx-input-otp-container.mrx-input-opt-md .mrx-input-otp{width:var(--sizing-10);height:var(--sizing-10);border-radius:var(--border-radius-1);border:1px solid var(--neutral-bg-stroke-default, #DAD5CE);font-family:var(--headlines-lvl-4-font-family);font-weight:var(--headlines-lvl-4-font-weight);line-height:var(--headlines-lvl-4-line-height);font-size:var(--headlines-lvl-4-font-size)}.mrx-input-otp-container.mrx-input-opt-responsive{flex-wrap:wrap;gap:12px}.mrx-input-otp-container.mrx-input-opt-responsive .mrx-input-otp{width:var(--sizing-12);height:var(--sizing-12);border-radius:var(--border-radius-1);border:1px solid var(--neutral-bg-stroke-default, #DAD5CE);font-family:var(--headlines-lvl-3-font-family);font-weight:var(--headlines-lvl-3-font-weight);line-height:var(--headlines-lvl-3-line-height);font-size:var(--headlines-lvl-3-font-size)}@media (max-width: 576px){.mrx-input-otp-container.mrx-input-opt-responsive{gap:10px}.mrx-input-otp-container.mrx-input-opt-responsive .mrx-input-otp{width:var(--sizing-10);height:var(--sizing-10);font-family:var(--headlines-lvl-4-font-family);font-weight:var(--headlines-lvl-4-font-weight);line-height:var(--headlines-lvl-4-line-height);font-size:var(--headlines-lvl-4-font-size)}}@media (max-width: 370px){.mrx-input-otp-container.mrx-input-opt-responsive{gap:8px}.mrx-input-otp-container.mrx-input-opt-responsive .mrx-input-otp{width:var(--sizing-8);height:var(--sizing-8);font-family:var(--headlines-lvl-5-font-family);font-weight:var(--headlines-lvl-5-font-weight);line-height:var(--headlines-lvl-5-line-height);font-size:var(--headlines-lvl-5-font-size)}}.mrx-input-otp-container .mrx-input-otp-box.mrx-input-error .mrx-input-otp{border-color:var(--system-bg-controls-negative-default)}.mrx-input-otp-container .mrx-input-otp-box.mrx-input-checked-error .mrx-input-otp{border-color:var(--system-bg-controls-negative-default);background-color:var(--system-bg-negative-secondary)}.mrx-input-otp-container .mrx-input-otp-box.mrx-input-checked-success .mrx-input-otp{background-color:var(--system-bg-positive-secondary);border-color:var(--system-bg-controls-positive-default)}\n"], components: [{ type: i2.ErrorMessageComponent, selector: "mrx-error-message", inputs: ["invalidMessage", "customClasses"] }], directives: [{ type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i3.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3.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: i3.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i5.OptPatternDirective, selector: "[mrxOptPattern]", inputs: ["mrxOptPattern"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
257
260
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: InputOptComponent, decorators: [{
|
|
258
261
|
type: Component,
|
|
259
|
-
args: [{ selector: 'mrx-input-opt', changeDetection: ChangeDetectionStrategy.OnPush, template: "<form\r\n [ngClass]=\"otpConfig.classList.container\"\r\n class=\"mrx-input-otp-container\"\r\n>\r\n <div\r\n *ngFor=\"let control of ngxOtpArray.controls; let i = index\"\r\n [ngClass]=\"otpConfig.classList.inputBox\"\r\n [class.mrx-input-error]=\"invalid\"\r\n [class]=\"checkValidClasses\"\r\n class=\"mrx-input-otp-box\"\r\n >\r\n <label [attr.aria-label]=\"ariaLabels[i]\">\r\n <input\r\n #otpInputElement\r\n [id]=\"'mrx-input-otp-' + i\"\r\n [formControl]=\"convertToFormControl(control)\"\r\n [mrxOptPattern]=\"otpConfig.pattern\"\r\n [type]=\"otpConfig.isPasswordInput ? 'password' : 'text'\"\r\n [ngClass]=\"styles[i]\"\r\n (keyup)=\"handleKeyUp(i, $event.key)\"\r\n (keyup.backspace)=\"handleDelete(i)\"\r\n (keyup.arrowLeft)=\"stepBackward(i)\"\r\n (keyup.arrowRight)=\"stepForward(i)\"\r\n (focus)=\"handleFocus(i)\"\r\n class=\"mrx-input-otp\"\r\n maxlength=\"1\"\r\n autocapitalize=\"off\"\r\n spellcheck=\"false\"\r\n />\r\n </label>\r\n </div>\r\n</form>\r\n\r\n<mrx-error-message\r\n *ngIf=\"invalid && isInvalidMessage\"\r\n [invalidMessage]=\"invalidMessage\"\r\n></mrx-error-message>\r\n", styles: [".mrx-input-otp{width:var(--sizing-12);height:var(--sizing-12);border-radius:var(--border-radius-1);border:1px solid var(--neutral-bg-stroke-default, #DAD5CE);
|
|
260
|
-
}], ctorParameters: function () { return [{ type: i1.InputOptService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: {
|
|
261
|
-
type:
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
type: Output
|
|
265
|
-
}], fillChange: [{
|
|
266
|
-
type: Output
|
|
267
|
-
}], onPaste: [{
|
|
268
|
-
type: HostListener,
|
|
269
|
-
args: ['paste', ['$event']]
|
|
262
|
+
args: [{ selector: 'mrx-input-opt', changeDetection: ChangeDetectionStrategy.OnPush, template: "<form\r\n [ngClass]=\"otpConfig.classList.container\"\r\n class=\"mrx-input-otp-container\"\r\n [class]=\"getClasses\"\r\n>\r\n <div\r\n *ngFor=\"let control of ngxOtpArray.controls; let i = index\"\r\n [ngClass]=\"otpConfig.classList.inputBox\"\r\n [class.mrx-input-error]=\"invalid\"\r\n [class]=\"checkValidClasses\"\r\n class=\"mrx-input-otp-box\"\r\n >\r\n <label [attr.aria-label]=\"ariaLabels[i]\">\r\n <input\r\n #otpInputElement\r\n [id]=\"'mrx-input-otp-' + i\"\r\n [formControl]=\"convertToFormControl(control)\"\r\n [mrxOptPattern]=\"otpConfig.pattern\"\r\n [type]=\"otpConfig.isPasswordInput ? 'password' : 'text'\"\r\n [ngClass]=\"styles[i]\"\r\n (keyup)=\"handleKeyUp(i, $event.key)\"\r\n (keyup.backspace)=\"handleDelete(i)\"\r\n (keyup.arrowLeft)=\"stepBackward(i)\"\r\n (keyup.arrowRight)=\"stepForward(i)\"\r\n (focus)=\"handleFocus(i)\"\r\n class=\"mrx-input-otp\"\r\n maxlength=\"1\"\r\n autocapitalize=\"off\"\r\n spellcheck=\"false\"\r\n />\r\n </label>\r\n </div>\r\n</form>\r\n\r\n<mrx-error-message\r\n *ngIf=\"invalid && isInvalidMessage\"\r\n customClasses=\"text-left\"\r\n [invalidMessage]=\"invalidMessage\"\r\n></mrx-error-message>\r\n", styles: [".mrx-input-otp{background:var(--brand-bg-tertiary-default, #FFF);color:var(--neutral-text-primary, #262626);text-align:center;outline:0}.mrx-input-otp-container{display:flex}.mrx-input-otp-box label{margin-bottom:0}.mrx-input-otp-disabled{opacity:.3}.mrx-input-otp-container.mrx-input-opt-lg{gap:12px}.mrx-input-otp-container.mrx-input-opt-lg .mrx-input-otp{width:var(--sizing-12);height:var(--sizing-12);border-radius:var(--border-radius-1);border:1px solid var(--neutral-bg-stroke-default, #DAD5CE);font-family:var(--headlines-lvl-3-font-family);font-weight:var(--headlines-lvl-3-font-weight);line-height:var(--headlines-lvl-3-line-height);font-size:var(--headlines-lvl-3-font-size)}.mrx-input-otp-container.mrx-input-opt-md{gap:10px}.mrx-input-otp-container.mrx-input-opt-md .mrx-input-otp{width:var(--sizing-10);height:var(--sizing-10);border-radius:var(--border-radius-1);border:1px solid var(--neutral-bg-stroke-default, #DAD5CE);font-family:var(--headlines-lvl-4-font-family);font-weight:var(--headlines-lvl-4-font-weight);line-height:var(--headlines-lvl-4-line-height);font-size:var(--headlines-lvl-4-font-size)}.mrx-input-otp-container.mrx-input-opt-responsive{flex-wrap:wrap;gap:12px}.mrx-input-otp-container.mrx-input-opt-responsive .mrx-input-otp{width:var(--sizing-12);height:var(--sizing-12);border-radius:var(--border-radius-1);border:1px solid var(--neutral-bg-stroke-default, #DAD5CE);font-family:var(--headlines-lvl-3-font-family);font-weight:var(--headlines-lvl-3-font-weight);line-height:var(--headlines-lvl-3-line-height);font-size:var(--headlines-lvl-3-font-size)}@media (max-width: 576px){.mrx-input-otp-container.mrx-input-opt-responsive{gap:10px}.mrx-input-otp-container.mrx-input-opt-responsive .mrx-input-otp{width:var(--sizing-10);height:var(--sizing-10);font-family:var(--headlines-lvl-4-font-family);font-weight:var(--headlines-lvl-4-font-weight);line-height:var(--headlines-lvl-4-line-height);font-size:var(--headlines-lvl-4-font-size)}}@media (max-width: 370px){.mrx-input-otp-container.mrx-input-opt-responsive{gap:8px}.mrx-input-otp-container.mrx-input-opt-responsive .mrx-input-otp{width:var(--sizing-8);height:var(--sizing-8);font-family:var(--headlines-lvl-5-font-family);font-weight:var(--headlines-lvl-5-font-weight);line-height:var(--headlines-lvl-5-line-height);font-size:var(--headlines-lvl-5-font-size)}}.mrx-input-otp-container .mrx-input-otp-box.mrx-input-error .mrx-input-otp{border-color:var(--system-bg-controls-negative-default)}.mrx-input-otp-container .mrx-input-otp-box.mrx-input-checked-error .mrx-input-otp{border-color:var(--system-bg-controls-negative-default);background-color:var(--system-bg-negative-secondary)}.mrx-input-otp-container .mrx-input-otp-box.mrx-input-checked-success .mrx-input-otp{background-color:var(--system-bg-positive-secondary);border-color:var(--system-bg-controls-positive-default)}\n"] }]
|
|
263
|
+
}], ctorParameters: function () { return [{ type: i1.InputOptService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { size: [{
|
|
264
|
+
type: Input
|
|
265
|
+
}], customClasses: [{
|
|
266
|
+
type: Input
|
|
270
267
|
}], invalid: [{
|
|
271
268
|
type: Input
|
|
272
269
|
}], invalidMessage: [{
|
|
@@ -279,5 +276,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
|
|
|
279
276
|
type: Input
|
|
280
277
|
}], status: [{
|
|
281
278
|
type: Input
|
|
279
|
+
}], otpInputElements: [{
|
|
280
|
+
type: ViewChildren,
|
|
281
|
+
args: ['otpInputElement']
|
|
282
|
+
}], change: [{
|
|
283
|
+
type: Output
|
|
284
|
+
}], fillChange: [{
|
|
285
|
+
type: Output
|
|
286
|
+
}], onPaste: [{
|
|
287
|
+
type: HostListener,
|
|
288
|
+
args: ['paste', ['$event']]
|
|
282
289
|
}] } });
|
|
283
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtb3B0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cnRhLXVpL3NyYy9saWIvY29tcG9uZW50cy9mb3JtL2lucHV0LW9wdC9jb21wb25lbnRzL2lucHV0LW9wdC9pbnB1dC1vcHQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlydGEtdWkvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0vaW5wdXQtb3B0L2NvbXBvbmVudHMvaW5wdXQtb3B0L2lucHV0LW9wdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFFVCxZQUFZLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFFakMsTUFBTSxFQUVOLFlBQVksRUFDYixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQW1CLFNBQVMsRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckYsT0FBTyxFQUFFLGNBQWMsRUFBbUMsTUFBTSw4QkFBOEIsQ0FBQzs7Ozs7OztBQVUvRixNQUFNLE9BQU8saUJBQWlCO0lBa0U1QixZQUNtQixVQUEyQixFQUMzQixHQUFzQjtRQUR0QixlQUFVLEdBQVYsVUFBVSxDQUFpQjtRQUMzQixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQW5FakMsbUJBQWMsR0FBRyxNQUFNLENBQUM7UUFDeEIsdUJBQWtCLEdBQUcseUJBQXlCLENBQUM7UUFHL0MsMEJBQXFCLEdBQUcsS0FBSyxDQUFDO1FBRTlCLHlCQUFvQixHQUFHLEtBQUssQ0FBQztRQUM3QixXQUFNLEdBQUcsS0FBSyxDQUFBO1FBRXRCLGdCQUFXLEdBQUcsSUFBSSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDaEMsZUFBVSxHQUFhLEVBQUUsQ0FBQztRQUUxQixXQUFNLEdB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TUFBTTtzQkFBbEIsS0FBSztnQkFVTyxNQUFNO3NCQUFsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBBZnRlclZpZXdJbml0LFxyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBDb21wb25lbnQsXHJcbiAgRWxlbWVudFJlZixcclxuICBFdmVudEVtaXR0ZXIsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIE9uRGVzdHJveSxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG4gIFF1ZXJ5TGlzdCxcclxuICBWaWV3Q2hpbGRyZW5cclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBGb3JtQXJyYXksIEZvcm1Db250cm9sLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBOZ3hPdHBCZWhhdmlvciwgTmd4T3RwSW5wdXRDb25maWcsIE5neE90cFN0YXR1cyB9IGZyb20gJy4uLy4uL21vZGVscy9pbnB1dC1vcHQubW9kZWwnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgSW5wdXRPcHRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvaW5wdXQtb3B0LnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdtcngtaW5wdXQtb3B0JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vaW5wdXQtb3B0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9pbnB1dC1vcHQuY29tcG9uZW50Lmxlc3MnXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxufSlcclxuZXhwb3J0IGNsYXNzIElucHV0T3B0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xyXG4gIHByaXZhdGUgZGVmYXVsdFBhdHRlcm4gPSAvXi4rJC87XHJcbiAgcHJpdmF0ZSBERUZBVUxUX0FSSUFfTEFCRUwgPSAnT25lIHRpbWUgcGFzc3dvcmQgaW5wdXQnO1xyXG4gIHByaXZhdGUgTEFTVF9JTlBVVF9JTkRFWCE6IG51bWJlcjtcclxuICBwcml2YXRlIGlucHV0cyE6IEhUTUxJbnB1dEVsZW1lbnRbXTtcclxuICBwcml2YXRlIGlzTmd4T3RwQXJyYXlEaXNhYmxlZCA9IGZhbHNlO1xyXG4gIHByaXZhdGUgbmd4T3RwQXJyYXkkITogU3Vic2NyaXB0aW9uO1xyXG4gIHByaXZhdGUgZm9jdXNlZElucHV0SGFzVmFsdWUgPSBmYWxzZTtcclxuICBwcml2YXRlIGlzSW5pdCA9IGZhbHNlXHJcblxyXG4gIG5neE90cEFycmF5ID0gbmV3IEZvcm1BcnJheShbXSk7XHJcbiAgYXJpYUxhYmVsczogc3RyaW5nW10gPSBbXTtcclxuICBwYXR0ZXJuITogUmVnRXhwO1xyXG4gIHN0eWxlczogc3RyaW5nW11bXSA9IFtdO1xyXG5cclxuICBvdHBDb25maWc6IE5neE90cElucHV0Q29uZmlnID0ge1xyXG4gICAgb3RwTGVuZ3RoOiA2LFxyXG4gICAgYXV0b2ZvY3VzOiB0cnVlLFxyXG4gICAgYXV0b2JsdXI6IHRydWUsXHJcbiAgICBiZWhhdmlvcjogTmd4T3RwQmVoYXZpb3IuREVGQVVMVCxcclxuICAgIHBhdHRlcm46IHRoaXMuZGVmYXVsdFBhdHRlcm4sXHJcbiAgICBjbGFzc0xpc3Q6IHtcclxuICAgICAgY29udGFpbmVyOiAnJyxcclxuICAgICAgaW5wdXRCb3g6ICcnLFxyXG4gICAgICBpbnB1dDogJycsXHJcbiAgICAgIGlucHV0RmlsbGVkOiAnJyxcclxuICAgICAgaW5wdXREaXNhYmxlZDogJycsXHJcbiAgICAgIGlucHV0U3VjY2VzczogJycsXHJcbiAgICAgIGlucHV0RXJyb3I6ICcnLFxyXG4gICAgfVxyXG4gIH07XHJcblxyXG4gIEBWaWV3Q2hpbGRyZW4oJ290cElucHV0RWxlbWVudCcpIG90cElucHV0RWxlbWVudHMhOiBRdWVyeUxpc3Q8RWxlbWVudFJlZj47XHJcblxyXG4gIEBPdXRwdXQoKSBjaGFuZ2U6IEV2ZW50RW1pdHRlcjxzdHJpbmdbXT4gPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZ1tdPigpO1xyXG4gIEBPdXRwdXQoKSBmaWxsQ2hhbmdlOiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG5cclxuICBASG9zdExpc3RlbmVyKCdwYXN0ZScsIFsnJGV2ZW50J10pIG9uUGFzdGUoZXZlbnQ6IENsaXBib2FyZEV2ZW50KTogdm9pZCB7XHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgdGhpcy5oYW5kbGVQYXN0ZShldmVudC5jbGlwYm9hcmREYXRhLmdldERhdGEoJ3RleHQnKSk7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKSBwdWJsaWMgaW52YWxpZCA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBpbnZhbGlkTWVzc2FnZTogc3RyaW5nIHwgc3RyaW5nW10gPSAnJztcclxuICBASW5wdXQoKSBwdWJsaWMgY2hlY2tJbnZhbGlkOiB0cnVlIHwgZmFsc2UgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgQElucHV0KCkgc2V0IGRpc2FibGUoaXNEaXNhYmxlZDogYm9vbGVhbikge1xyXG4gICAgdGhpcy5oYW5kbGVEaXNhYmxlKGlzRGlzYWJsZWQpO1xyXG4gICAgdGhpcy5pc05neE90cEFycmF5RGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KCkgc2V0IGNvbmZpZyhjOiBOZ3hPdHBJbnB1dENvbmZpZykge1xyXG4gICAgdGhpcy5vdHBDb25maWcgPSB7IC4uLnRoaXMub3RwQ29uZmlnLCAuLi5jIH07XHJcbiAgICBpZiAodGhpcy5vdHBDb25maWcuY2xhc3NMaXN0Py5pbnB1dCkge1xyXG4gICAgICB0aGlzLnNldEluaXRpYWxTdHlsZXMoKTtcclxuICAgIH1cclxuICAgIGlmICghYy5wYXR0ZXJuKSB7XHJcbiAgICAgIHRoaXMub3RwQ29uZmlnLnBhdHRlcm4gPSB0aGlzLmRlZmF1bHRQYXR0ZXJuO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQElucHV0KCkgc2V0IHN0YXR1cyhzdGF0dXM6IE5neE90cFN0YXR1cykge1xyXG4gICAgdGhpcy5oYW5kbGVTdGF0dXNDaGFuZ2Uoc3RhdHVzKTtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBvdHBTZXJ2aWNlOiBJbnB1dE9wdFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJlZjogQ2hhbmdlRGV0ZWN0b3JSZWZcclxuICApIHt9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zZXRVcE90cEZvcm0oKTtcclxuICAgIHRoaXMuc2V0VXBBcmlhTGFiZWxzKCk7XHJcbiAgICB0aGlzLkxBU1RfSU5QVVRfSU5ERVggPSB0aGlzLm90cENvbmZpZy5vdHBMZW5ndGggLSAxO1xyXG4gICAgdGhpcy5vdHBGb3JtQ2hhbmdlTGlzdGVuZXIoKTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuc2V0TmF0aXZlSFRNTEVsZW1lbnRzKCk7XHJcbiAgICB0aGlzLnNldEluaXRpYWxGb2N1cygpO1xyXG4gICAgdGhpcy5zZXROdW1lcmljSW5wdXRJZlBvc3NpYmxlKCk7XHJcbiAgICB0aGlzLmhhbmRsZURpc2FibGUodGhpcy5pc05neE90cEFycmF5RGlzYWJsZWQpO1xyXG4gICAgdGhpcy5pc0luaXQgPSB0cnVlXHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMubmd4T3RwQXJyYXkkLnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGlzSW52YWxpZE1lc3NhZ2UoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gISF0aGlzLmludmFsaWRNZXNzYWdlIHx8ICEhdGhpcy5pbnZhbGlkTWVzc2FnZS5sZW5ndGg7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGNoZWNrVmFsaWRDbGFzc2VzKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5jaGVja0ludmFsaWQgPT09IGZhbHNlID9cclxuICAgICAgJ21yeC1pbnB1dC1jaGVja2VkLXN1Y2Nlc3MnIDpcclxuICAgICAgdGhpcy5jaGVja0ludmFsaWQgPT09IHRydWUgPyAnbXJ4LWlucHV0LWNoZWNrZWQtZXJyb3InIDogJydcclxuICB9XHJcblxyXG4gIGdldENsYXNzZXMoY29udGFpbmVyOiBzdHJpbmcgfCBzdHJpbmdbXSkge1xyXG4gICAgcmV0dXJuIEFycmF5LmlzQXJyYXkoY29udGFpbmVyKSA/IGNvbnRhaW5lci5qb2luKCcgJykgOiBjb250YWluZXI7XHJcbiAgfVxyXG5cclxuICBjb252ZXJ0VG9Gb3JtQ29udHJvbChhYnNDdHJsOiBBYnN0cmFjdENvbnRyb2wgfCBudWxsKTogRm9ybUNvbnRyb2wge1xyXG4gICAgcmV0dXJuIGFic0N0cmwgYXMgRm9ybUNvbnRyb2w7XHJcbiAgfVxyXG5cclxuICBjbGVhcigpOiB2b2lkIHtcclxuICAgIHRoaXMucmVtb3ZlU3R5bGVGcm9tQWxsKHRoaXMub3RwQ29uZmlnLmNsYXNzTGlzdC5pbnB1dEZpbGxlZCk7XHJcbiAgICB0aGlzLm5neE90cEFycmF5LnJlc2V0KCk7XHJcbiAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcblxyXG4gICAgaWYgKHRoaXMub3RwQ29uZmlnLmF1dG9mb2N1cykge1xyXG4gICAgICB0aGlzLnNldEZvY3VzKDApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaGFuZGxlS2V5VXAoaW5kZXg6IG51bWJlciwgdmFsdWU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMub3RwQ29uZmlnLnBhdHRlcm4udGVzdCh2YWx1ZSkgJiYgdmFsdWUgIT09ICdCYWNrc3BhY2UnKSB7XHJcbiAgICAgIHRoaXMuYWRkU3R5bGUoaW5kZXgsIHRoaXMub3RwQ29uZmlnLmNsYXNzTGlzdC5pbnB1dEZpbGxlZCk7XHJcbiAgICAgIGlmICghdGhpcy5uZ3hPdHBBcnJheS52YWxpZCkge1xyXG4gICAgICAgIHRoaXMuZ2V0Rm9ybUNvbnRyb2xCeUluZGV4KGluZGV4KS5zZXRWYWx1ZSh2YWx1ZSwge2VtaXRFdmVudDogZmFsc2V9KTtcclxuICAgICAgICB0aGlzLnN0ZXBGb3J3YXJkKGluZGV4KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmJsdXIoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaGFuZGxlRGVsZXRlKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcclxuICAgIHRoaXMucmVtb3ZlU3R5bGUoaW5kZXgsIHRoaXMub3RwQ29uZmlnLmNsYXNzTGlzdC5pbnB1dEZpbGxlZCk7XHJcbiAgICBpZiAoXHJcbiAgICAgICh0aGlzLm90cENvbmZpZy5iZWhhdmlvciA9PT0gTmd4T3RwQmVoYXZpb3IuTEVHQUNZICYmXHJcbiAgICAgICAgIXRoaXMuZm9jdXNlZElucHV0SGFzVmFsdWUpIHx8XHJcbiAgICAgIHRoaXMub3RwQ29uZmlnLmJlaGF2aW9yICE9PSBOZ3hPdHBCZWhhdmlvci5MRUdBQ1lcclxuICAgICkge1xyXG4gICAgICB0aGlzLnN0ZXBCYWNrd2FyZChpbmRleCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmZvY3VzZWRJbnB1dEhhc1ZhbHVlID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBoYW5kbGVGb2N1cyhpbmRleDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICB0aGlzLmZvY3VzZWRJbnB1dEhhc1ZhbHVlID0gISF0aGlzLm5neE90cEFycmF5LmNvbnRyb2xzW2luZGV4XS52YWx1ZTtcclxuICAgIGlmIChcclxuICAgICAgdGhpcy5vdHBDb25maWcuYmVoYXZpb3IgPT09IE5neE90cEJlaGF2aW9yLkxFR0FDWSAmJlxyXG4gICAgICB0aGlzLmZvY3VzZWRJbnB1dEhhc1ZhbHVlXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5pbnB1dHNbaW5kZXhdLnNlbGVjdCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc3RlcEJhY2t3YXJkKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcclxuICAgIGlmIChpbmRleCA+IDApIHtcclxuICAgICAgdGhpcy5zZXRGb2N1cyhpbmRleCAtIDEpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc3RlcEZvcndhcmQoaW5kZXg6IG51bWJlcik6IHZvaWQge1xyXG4gICAgaWYgKGluZGV4IDwgdGhpcy5MQVNUX0lOUFVUX0lOREVYKSB7XHJcbiAgICAgIHRoaXMuc2V0Rm9jdXMoaW5kZXggKyAxKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgb3RwRm9ybUNoYW5nZUxpc3RlbmVyKCk6IHZvaWQge1xyXG4gICAgdGhpcy5uZ3hPdHBBcnJheSQgPSB0aGlzLm5neE90cEFycmF5LnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKHZhbHVlcykgPT4ge1xyXG4gICAgICBpZiAodGhpcy5pc0luaXQpIHtcclxuICAgICAgICB0aGlzLmNoYW5nZS5lbWl0KHZhbHVlcyk7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLm5neE90cEFycmF5LnZhbGlkKSB7XHJcbiAgICAgICAgICB0aGlzLmZpbGxDaGFuZ2UuZW1pdCh2YWx1ZXMuam9pbignJykpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldFVwT3RwRm9ybSgpOiB2b2lkIHtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5vdHBDb25maWcub3RwTGVuZ3RoOyBpKyspIHtcclxuICAgICAgdGhpcy5uZ3hPdHBBcnJheS5wdXNoKG5ldyBGb3JtQ29udHJvbCgnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldFVwQXJpYUxhYmVscygpOiB2b2lkIHtcclxuICAgIGNvbnN0IGxhYmVscyA9IHRoaXMub3RwQ29uZmlnLmFyaWFMYWJlbHM7XHJcblxyXG4gICAgdGhpcy5hcmlhTGFiZWxzID0gQXJyYXkuaXNBcnJheShsYWJlbHMpXHJcbiAgICAgID8gbGFiZWxzXHJcbiAgICAgIDogbmV3IEFycmF5KHRoaXMub3RwQ29uZmlnLm90cExlbmd0aCkuZmlsbChcclxuICAgICAgICBsYWJlbHMgfHwgdGhpcy5ERUZBVUxUX0FSSUFfTEFCRUxcclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0TmF0aXZlSFRNTEVsZW1lbnRzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5pbnB1dHMgPSB0aGlzLm90cElucHV0RWxlbWVudHMubWFwKChlbGVtZW50KSA9PiBlbGVtZW50Lm5hdGl2ZUVsZW1lbnQpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRJbml0aWFsRm9jdXMoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5vdHBDb25maWcuYXV0b2ZvY3VzKSB7XHJcbiAgICAgIHRoaXMuc2V0Rm9jdXMoMCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldEluaXRpYWxTdHlsZXMoKTogdm9pZCB7XHJcbiAgICB0aGlzLnN0eWxlcyA9IHRoaXMub3RwU2VydmljZS5pbml0MkRBcnJheSh0aGlzLm90cENvbmZpZy5vdHBMZW5ndGgpO1xyXG4gICAgdGhpcy5hZGRTdHlsZVRvQWxsKHRoaXMub3RwQ29uZmlnLmNsYXNzTGlzdC5pbnB1dCk7XHJcbiAgICBjb25zb2xlLmxvZyh0aGlzLnN0eWxlcyk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldEZvY3VzKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcclxuICAgIHRoaXMuaW5wdXRzW2luZGV4XS5mb2N1cygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXROdW1lcmljSW5wdXRJZlBvc3NpYmxlKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMub3RwQ29uZmlnLm51bWVyaWNJbnB1dE1vZGUpIHtcclxuICAgICAgdGhpcy5vdHBDb25maWcucGF0dGVybiA9IHRoaXMuZGVmYXVsdFBhdHRlcm47XHJcbiAgICAgIHRoaXMuaW5wdXRzLm1hcCgoZWxlbWVudCkgPT4ge1xyXG4gICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCdpbnB1dG1vZGUnLCAnbnVtZXJpYycpO1xyXG4gICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCdwYXR0ZXJuJywgJ1swLTldKicpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgYmx1cigpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLm90cENvbmZpZy5hdXRvYmx1cikge1xyXG4gICAgICB0aGlzLmlucHV0cy5tYXAoKGlucHV0KSA9PiBpbnB1dC5ibHVyKCkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBoYW5kbGVQYXN0ZSh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5vdHBDb25maWcucGF0dGVybi50ZXN0KHZhbHVlKSkge1xyXG4gICAgICBsZXQgbGFzdEluZGV4ID0gMDtcclxuICAgICAgdmFsdWVcclxuICAgICAgICAuc3BsaXQoJycpXHJcbiAgICAgICAgLnNsaWNlKDAsIHRoaXMub3RwQ29uZmlnLm90cExlbmd0aClcclxuICAgICAgICAubWFwKChjaGFyYWN0ZXI6IHN0cmluZywgaW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgICAgICAgdGhpcy5hZGRTdHlsZShpbmRleCwgdGhpcy5vdHBDb25maWcuY2xhc3NMaXN0LmlucHV0RmlsbGVkKTtcclxuICAgICAgICAgIHRoaXMuZ2V0Rm9ybUNvbnRyb2xCeUluZGV4KGluZGV4KS5zZXRWYWx1ZShjaGFyYWN0ZXIpO1xyXG4gICAgICAgICAgbGFzdEluZGV4ID0gaW5kZXg7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICBpZiAodGhpcy5uZ3hPdHBBcnJheS52YWxpZCkge1xyXG4gICAgICAgIHRoaXMuYmx1cigpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuc2V0Rm9jdXMobGFzdEluZGV4ICsgMSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFuZGxlRGlzYWJsZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICBpZiAoaXNEaXNhYmxlZCkge1xyXG4gICAgICB0aGlzLm5neE90cEFycmF5LmRpc2FibGUoKTtcclxuICAgICAgdGhpcy5hZGRTdHlsZVRvQWxsKHRoaXMub3RwQ29uZmlnLmNsYXNzTGlzdC5pbnB1dERpc2FibGVkKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMubmd4T3RwQXJyYXkuZW5hYmxlKCk7XHJcbiAgICAgIHRoaXMucmVtb3ZlU3R5bGVGcm9tQWxsKHRoaXMub3RwQ29uZmlnLmNsYXNzTGlzdC5pbnB1dERpc2FibGVkKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFuZGxlU3RhdHVzQ2hhbmdlKHN0YXR1czogTmd4T3RwU3RhdHVzKTogdm9pZCB7XHJcbiAgICB0aGlzLnJlbW92ZVN0eWxlRnJvbUFsbChbXHJcbiAgICAgIC4uLnRoaXMub3RwU2VydmljZS50b0FycmF5KFxyXG4gICAgICAgIHRoaXMub3RwQ29uZmlnLmNsYXNzTGlzdC5pbnB1dFN1Y2Nlc3NcclxuICAgICAgKSxcclxuICAgICAgLi4udGhpcy5vdHBTZXJ2aWNlLnRvQXJyYXkodGhpcy5vdHBDb25maWcuY2xhc3NMaXN0LmlucHV0RXJyb3IpLFxyXG4gICAgXSk7XHJcblxyXG4gICAgaWYgKHN0YXR1cykge1xyXG4gICAgICBpZiAoc3RhdHVzID09PSAnc3VjY2VzcycpIHtcclxuICAgICAgICB0aGlzLmFkZFN0eWxlVG9BbGwodGhpcy5vdHBDb25maWcuY2xhc3NMaXN0LmlucHV0U3VjY2Vzcyk7XHJcbiAgICAgIH0gZWxzZSBpZiAoc3RhdHVzID09PSAnZXJyb3InKSB7XHJcbiAgICAgICAgY29uc29sZS5sb2codGhpcy5vdHBDb25maWcpO1xyXG4gICAgICAgIHRoaXMuYWRkU3R5bGVUb0FsbCh0aGlzLm90cENvbmZpZy5jbGFzc0xpc3QuaW5wdXRFcnJvcik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0Rm9ybUNvbnRyb2xCeUluZGV4KGluZGV4OiBudW1iZXIpOiBGb3JtQ29udHJvbCB7XHJcbiAgICByZXR1cm4gdGhpcy5uZ3hPdHBBcnJheS5jb250cm9sc1tpbmRleF0gYXMgRm9ybUNvbnRyb2w7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFkZFN0eWxlKGluZGV4OiBudW1iZXIsIHN0eWxlczogc3RyaW5nIHwgc3RyaW5nW10pOiB2b2lkIHtcclxuICAgIHRoaXMuc3R5bGVzID0gdGhpcy5vdHBTZXJ2aWNlLmFkZEl0ZW1BdEluZGV4KFxyXG4gICAgICB0aGlzLnN0eWxlcyxcclxuICAgICAgaW5kZXgsXHJcbiAgICAgIHRoaXMub3RwU2VydmljZS50b0FycmF5KHN0eWxlcylcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFkZFN0eWxlVG9BbGwoc3R5bGVzOiBzdHJpbmcgfCBzdHJpbmdbXSk6IHZvaWQge1xyXG4gICAgdGhpcy5zdHlsZXMgPSB0aGlzLm90cFNlcnZpY2UuYWRkSXRlbVRvQWxsKFxyXG4gICAgICB0aGlzLnN0eWxlcyxcclxuICAgICAgdGhpcy5vdHBTZXJ2aWNlLnRvQXJyYXkoc3R5bGVzKVxyXG4gICAgKTtcclxuICAgIGNvbnNvbGUubG9nKHN0eWxlcyk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlbW92ZVN0eWxlKGluZGV4OiBudW1iZXIsIHN0eWxlczogc3RyaW5nIHwgc3RyaW5nW10pOiB2b2lkIHtcclxuICAgIHRoaXMuc3R5bGVzID0gdGhpcy5vdHBTZXJ2aWNlLnJlbW92ZUl0ZW1BdEluZGV4KFxyXG4gICAgICB0aGlzLnN0eWxlcyxcclxuICAgICAgaW5kZXgsXHJcbiAgICAgIHRoaXMub3RwU2VydmljZS50b0FycmF5KHN0eWxlcylcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlbW92ZVN0eWxlRnJvbUFsbChzdHlsZXM6IHN0cmluZyB8IHN0cmluZ1tdKTogdm9pZCB7XHJcbiAgICB0aGlzLnN0eWxlcyA9IHRoaXMub3RwU2VydmljZS5yZW1vdmVJdGVtRnJvbUFsbChcclxuICAgICAgdGhpcy5zdHlsZXMsXHJcbiAgICAgIHRoaXMub3RwU2VydmljZS50b0FycmF5KHN0eWxlcylcclxuICAgICk7XHJcbiAgfVxyXG59XHJcbiIsIjxmb3JtXHJcbiAgW25nQ2xhc3NdPVwib3RwQ29uZmlnLmNsYXNzTGlzdC5jb250YWluZXJcIlxyXG4gIGNsYXNzPVwibXJ4LWlucHV0LW90cC1jb250YWluZXJcIlxyXG4+XHJcbiAgPGRpdlxyXG4gICAgKm5nRm9yPVwibGV0IGNvbnRyb2wgb2Ygbmd4T3RwQXJyYXkuY29udHJvbHM7IGxldCBpID0gaW5kZXhcIlxyXG4gICAgW25nQ2xhc3NdPVwib3RwQ29uZmlnLmNsYXNzTGlzdC5pbnB1dEJveFwiXHJcbiAgICBbY2xhc3MubXJ4LWlucHV0LWVycm9yXT1cImludmFsaWRcIlxyXG4gICAgW2NsYXNzXT1cImNoZWNrVmFsaWRDbGFzc2VzXCJcclxuICAgIGNsYXNzPVwibXJ4LWlucHV0LW90cC1ib3hcIlxyXG4gID5cclxuICAgIDxsYWJlbCBbYXR0ci5hcmlhLWxhYmVsXT1cImFyaWFMYWJlbHNbaV1cIj5cclxuICAgICAgPGlucHV0XHJcbiAgICAgICAgI290cElucHV0RWxlbWVudFxyXG4gICAgICAgIFtpZF09XCInbXJ4LWlucHV0LW90cC0nICsgaVwiXHJcbiAgICAgICAgW2Zvcm1Db250cm9sXT1cImNvbnZlcnRUb0Zvcm1Db250cm9sKGNvbnRyb2wpXCJcclxuICAgICAgICBbbXJ4T3B0UGF0dGVybl09XCJvdHBDb25maWcucGF0dGVyblwiXHJcbiAgICAgICAgW3R5cGVdPVwib3RwQ29uZmlnLmlzUGFzc3dvcmRJbnB1dCA/ICdwYXNzd29yZCcgOiAndGV4dCdcIlxyXG4gICAgICAgIFtuZ0NsYXNzXT1cInN0eWxlc1tpXVwiXHJcbiAgICAgICAgKGtleXVwKT1cImhhbmRsZUtleVVwKGksICRldmVudC5rZXkpXCJcclxuICAgICAgICAoa2V5dXAuYmFja3NwYWNlKT1cImhhbmRsZURlbGV0ZShpKVwiXHJcbiAgICAgICAgKGtleXVwLmFycm93TGVmdCk9XCJzdGVwQmFja3dhcmQoaSlcIlxyXG4gICAgICAgIChrZXl1cC5hcnJvd1JpZ2h0KT1cInN0ZXBGb3J3YXJkKGkpXCJcclxuICAgICAgICAoZm9jdXMpPVwiaGFuZGxlRm9jdXMoaSlcIlxyXG4gICAgICAgIGNsYXNzPVwibXJ4LWlucHV0LW90cFwiXHJcbiAgICAgICAgbWF4bGVuZ3RoPVwiMVwiXHJcbiAgICAgICAgYXV0b2NhcGl0YWxpemU9XCJvZmZcIlxyXG4gICAgICAgIHNwZWxsY2hlY2s9XCJmYWxzZVwiXHJcbiAgICAgIC8+XHJcbiAgICA8L2xhYmVsPlxyXG4gIDwvZGl2PlxyXG48L2Zvcm0+XHJcblxyXG48bXJ4LWVycm9yLW1lc3NhZ2VcclxuICAqbmdJZj1cImludmFsaWQgJiYgaXNJbnZhbGlkTWVzc2FnZVwiXHJcbiAgW2ludmFsaWRNZXNzYWdlXT1cImludmFsaWRNZXNzYWdlXCJcclxuPjwvbXJ4LWVycm9yLW1lc3NhZ2U+XHJcbiJdfQ==
|
|
290
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtb3B0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cnRhLXVpL3NyYy9saWIvY29tcG9uZW50cy9mb3JtL2lucHV0LW9wdC9jb21wb25lbnRzL2lucHV0LW9wdC9pbnB1dC1vcHQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlydGEtdWkvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0vaW5wdXQtb3B0L2NvbXBvbmVudHMvaW5wdXQtb3B0L2lucHV0LW9wdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFFVCxZQUFZLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFFakMsTUFBTSxFQUVOLFlBQVksRUFDYixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQW1CLFNBQVMsRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckYsT0FBTyxFQUFFLGNBQWMsRUFBbUMsTUFBTSw4QkFBOEIsQ0FBQztBQUcvRixPQUFPLEVBQUUsaUJBQWlCLEVBQXNCLE1BQU0sa0JBQWtCLENBQUM7Ozs7Ozs7QUFRekUsTUFBTSxPQUFPLGlCQUFpQjtJQThENUIsWUFDbUIsVUFBMkIsRUFDM0IsR0FBc0I7UUFEdEIsZUFBVSxHQUFWLFVBQVUsQ0FBaUI7UUFDM0IsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUEvRGpDLG1CQUFjLEdBQUcsTUFBTSxDQUFDO1FBQ3hCLHVCQUFrQixHQUFHLHlCQUF5QixDQUFDO1FBRy9DLDBCQUFxQixHQUFHLEtBQUssQ0FBQztRQUU5Qix5QkFBb0IsR0FBRyxLQUFLLENBQUM7UUFDN0IsV0FBTSxHQUFHLEtBQUssQ0FBQTtRQUV0QixnQkFBVyxHQUFHLElBQUksU0FBUyxDQUFDLEVBQUUsQ0FB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bEIsS0FBSztnQkFJMkIsZ0JBQWdCO3NCQUFoRCxZQUFZO3VCQUFDLGlCQUFpQjtnQkFFckIsTUFBTTtzQkFBZixNQUFNO2dCQUNHLFVBQVU7c0JBQW5CLE1BQU07Z0JBd1A0QixPQUFPO3NCQUF6QyxZQUFZO3VCQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQWZ0ZXJWaWV3SW5pdCxcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ29tcG9uZW50LFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgRXZlbnRFbWl0dGVyLCBIb3N0TGlzdGVuZXIsIElucHV0LCBPbkRlc3Ryb3ksXHJcbiAgT25Jbml0LFxyXG4gIE91dHB1dCxcclxuICBRdWVyeUxpc3QsXHJcbiAgVmlld0NoaWxkcmVuXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgRm9ybUFycmF5LCBGb3JtQ29udHJvbCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgTmd4T3RwQmVoYXZpb3IsIE5neE90cElucHV0Q29uZmlnLCBOZ3hPdHBTdGF0dXMgfSBmcm9tICcuLi8uLi9tb2RlbHMvaW5wdXQtb3B0Lm1vZGVsJztcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IElucHV0T3B0U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2lucHV0LW9wdC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSW5wdXRPcHRTaXplc0VudW0sIElucHV0T3B0U2l6ZXNUeXBlcyB9IGZyb20gXCIuL2lucHV0LW9wdC5lbnVtXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ21yeC1pbnB1dC1vcHQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9pbnB1dC1vcHQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2lucHV0LW9wdC5jb21wb25lbnQubGVzcyddLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgSW5wdXRPcHRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XHJcbiAgcHJpdmF0ZSBkZWZhdWx0UGF0dGVybiA9IC9eLiskLztcclxuICBwcml2YXRlIERFRkFVTFRfQVJJQV9MQUJFTCA9ICdPbmUgdGltZSBwYXNzd29yZCBpbnB1dCc7XHJcbiAgcHJpdmF0ZSBMQVNUX0lOUFVUX0lOREVYITogbnVtYmVyO1xyXG4gIHByaXZhdGUgaW5wdXRzITogSFRNTElucHV0RWxlbWVudFtdO1xyXG4gIHByaXZhdGUgaXNOZ3hPdHBBcnJheURpc2FibGVkID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBuZ3hPdHBBcnJheSQhOiBTdWJzY3JpcHRpb247XHJcbiAgcHJpdmF0ZSBmb2N1c2VkSW5wdXRIYXNWYWx1ZSA9IGZhbHNlO1xyXG4gIHByaXZhdGUgaXNJbml0ID0gZmFsc2VcclxuXHJcbiAgbmd4T3RwQXJyYXkgPSBuZXcgRm9ybUFycmF5KFtdKTtcclxuICBhcmlhTGFiZWxzOiBzdHJpbmdbXSA9IFtdO1xyXG4gIHBhdHRlcm4hOiBSZWdFeHA7XHJcbiAgc3R5bGVzOiBzdHJpbmdbXVtdID0gW107XHJcblxyXG4gIG90cENvbmZpZzogTmd4T3RwSW5wdXRDb25maWcgPSB7XHJcbiAgICBvdHBMZW5ndGg6IDYsXHJcbiAgICBhdXRvZm9jdXM6IHRydWUsXHJcbiAgICBhdXRvYmx1cjogdHJ1ZSxcclxuICAgIGJlaGF2aW9yOiBOZ3hPdHBCZWhhdmlvci5ERUZBVUxULFxyXG4gICAgcGF0dGVybjogdGhpcy5kZWZhdWx0UGF0dGVybixcclxuICAgIGNsYXNzTGlzdDoge1xyXG4gICAgICBjb250YWluZXI6ICcnLFxyXG4gICAgICBpbnB1dEJveDogJycsXHJcbiAgICAgIGlucHV0OiAnJyxcclxuICAgICAgaW5wdXRGaWxsZWQ6ICcnLFxyXG4gICAgICBpbnB1dERpc2FibGVkOiAnJyxcclxuICAgICAgaW5wdXRTdWNjZXNzOiAnJyxcclxuICAgICAgaW5wdXRFcnJvcjogJycsXHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgQElucHV0KCkgcHVibGljIHNpemU6IElucHV0T3B0U2l6ZXNUeXBlcyA9ICdsYXJnZSdcclxuICBASW5wdXQoKSBwdWJsaWMgY3VzdG9tQ2xhc3NlcyA9ICcnO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBpbnZhbGlkID0gZmFsc2U7XHJcbiAgQElucHV0KCkgcHVibGljIGludmFsaWRNZXNzYWdlOiBzdHJpbmcgfCBzdHJpbmdbXSA9ICcnO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBjaGVja0ludmFsaWQ6IHRydWUgfCBmYWxzZSB8IG51bGwgPSBudWxsO1xyXG5cclxuICBASW5wdXQoKSBzZXQgZGlzYWJsZShpc0Rpc2FibGVkOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLmhhbmRsZURpc2FibGUoaXNEaXNhYmxlZCk7XHJcbiAgICB0aGlzLmlzTmd4T3RwQXJyYXlEaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKSBzZXQgY29uZmlnKGM6IE5neE90cElucHV0Q29uZmlnKSB7XHJcbiAgICB0aGlzLm90cENvbmZpZyA9IHsgLi4udGhpcy5vdHBDb25maWcsIC4uLmMgfTtcclxuICAgIGlmICh0aGlzLm90cENvbmZpZy5jbGFzc0xpc3Q/LmlucHV0KSB7XHJcbiAgICAgIHRoaXMuc2V0SW5pdGlhbFN0eWxlcygpO1xyXG4gICAgfVxyXG4gICAgaWYgKCFjLnBhdHRlcm4pIHtcclxuICAgICAgdGhpcy5vdHBDb25maWcucGF0dGVybiA9IHRoaXMuZGVmYXVsdFBhdHRlcm47XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKSBzZXQgc3RhdHVzKHN0YXR1czogTmd4T3RwU3RhdHVzKSB7XHJcbiAgICB0aGlzLmhhbmRsZVN0YXR1c0NoYW5nZShzdGF0dXMpO1xyXG4gIH1cclxuXHJcbiAgQFZpZXdDaGlsZHJlbignb3RwSW5wdXRFbGVtZW50Jykgb3RwSW5wdXRFbGVtZW50cyE6IFF1ZXJ5TGlzdDxFbGVtZW50UmVmPjtcclxuXHJcbiAgQE91dHB1dCgpIGNoYW5nZTogRXZlbnRFbWl0dGVyPHN0cmluZ1tdPiA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nW10+KCk7XHJcbiAgQE91dHB1dCgpIGZpbGxDaGFuZ2U6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBvdHBTZXJ2aWNlOiBJbnB1dE9wdFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJlZjogQ2hhbmdlRGV0ZWN0b3JSZWZcclxuICApIHt9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zZXRVcE90cEZvcm0oKTtcclxuICAgIHRoaXMuc2V0VXBBcmlhTGFiZWxzKCk7XHJcbiAgICB0aGlzLkxBU1RfSU5QVVRfSU5ERVggPSB0aGlzLm90cENvbmZpZy5vdHBMZW5ndGggLSAxO1xyXG4gICAgdGhpcy5vdHBGb3JtQ2hhbmdlTGlzdGVuZXIoKTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuc2V0TmF0aXZlSFRNTEVsZW1lbnRzKCk7XHJcbiAgICB0aGlzLnNldEluaXRpYWxGb2N1cygpO1xyXG4gICAgdGhpcy5zZXROdW1lcmljSW5wdXRJZlBvc3NpYmxlKCk7XHJcbiAgICB0aGlzLmhhbmRsZURpc2FibGUodGhpcy5pc05neE90cEFycmF5RGlzYWJsZWQpO1xyXG4gICAgdGhpcy5pc0luaXQgPSB0cnVlXHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMubmd4T3RwQXJyYXkkLnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGlzSW52YWxpZE1lc3NhZ2UoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gISF0aGlzLmludmFsaWRNZXNzYWdlIHx8ICEhdGhpcy5pbnZhbGlkTWVzc2FnZS5sZW5ndGg7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGNoZWNrVmFsaWRDbGFzc2VzKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5jaGVja0ludmFsaWQgPT09IGZhbHNlID9cclxuICAgICAgJ21yeC1pbnB1dC1jaGVja2VkLXN1Y2Nlc3MnIDpcclxuICAgICAgdGhpcy5jaGVja0ludmFsaWQgPT09IHRydWUgPyAnbXJ4LWlucHV0LWNoZWNrZWQtZXJyb3InIDogJydcclxuICB9XHJcblxyXG4gIGdldCBnZXRDbGFzc2VzKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gYCR7SW5wdXRPcHRTaXplc0VudW1bdGhpcy5zaXplXX0gJHt0aGlzLmN1c3RvbUNsYXNzZXN9YFxyXG4gIH1cclxuXHJcbiAgY29udmVydFRvRm9ybUNvbnRyb2woYWJzQ3RybDogQWJzdHJhY3RDb250cm9sIHwgbnVsbCk6IEZvcm1Db250cm9sIHtcclxuICAgIHJldHVybiBhYnNDdHJsIGFzIEZvcm1Db250cm9sO1xyXG4gIH1cclxuXHJcbiAgY2xlYXIoKTogdm9pZCB7XHJcbiAgICB0aGlzLnJlbW92ZVN0eWxlRnJvbUFsbCh0aGlzLm90cENvbmZpZy5jbGFzc0xpc3QuaW5wdXRGaWxsZWQpO1xyXG4gICAgdGhpcy5uZ3hPdHBBcnJheS5yZXNldCgpO1xyXG4gICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG5cclxuICAgIGlmICh0aGlzLm90cENvbmZpZy5hdXRvZm9jdXMpIHtcclxuICAgICAgdGhpcy5zZXRGb2N1cygwKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGhhbmRsZUtleVVwKGluZGV4OiBudW1iZXIsIHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLm90cENvbmZpZy5wYXR0ZXJuLnRlc3QodmFsdWUpICYmIHZhbHVlICE9PSAnQmFja3NwYWNlJykge1xyXG4gICAgICB0aGlzLmFkZFN0eWxlKGluZGV4LCB0aGlzLm90cENvbmZpZy5jbGFzc0xpc3QuaW5wdXRGaWxsZWQpO1xyXG4gICAgICBpZiAoIXRoaXMubmd4T3RwQXJyYXkudmFsaWQpIHtcclxuICAgICAgICB0aGlzLmdldEZvcm1Db250cm9sQnlJbmRleChpbmRleCkuc2V0VmFsdWUodmFsdWUsIHtlbWl0RXZlbnQ6IGZhbHNlfSk7XHJcbiAgICAgICAgdGhpcy5zdGVwRm9yd2FyZChpbmRleCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5ibHVyKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGhhbmRsZURlbGV0ZShpbmRleDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICB0aGlzLnJlbW92ZVN0eWxlKGluZGV4LCB0aGlzLm90cENvbmZpZy5jbGFzc0xpc3QuaW5wdXRGaWxsZWQpO1xyXG4gICAgaWYgKFxyXG4gICAgICAodGhpcy5vdHBDb25maWcuYmVoYXZpb3IgPT09IE5neE90cEJlaGF2aW9yLkxFR0FDWSAmJlxyXG4gICAgICAgICF0aGlzLmZvY3VzZWRJbnB1dEhhc1ZhbHVlKSB8fFxyXG4gICAgICB0aGlzLm90cENvbmZpZy5iZWhhdmlvciAhPT0gTmd4T3RwQmVoYXZpb3IuTEVHQUNZXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5zdGVwQmFja3dhcmQoaW5kZXgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5mb2N1c2VkSW5wdXRIYXNWYWx1ZSA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaGFuZGxlRm9jdXMoaW5kZXg6IG51bWJlcik6IHZvaWQge1xyXG4gICAgdGhpcy5mb2N1c2VkSW5wdXRIYXNWYWx1ZSA9ICEhdGhpcy5uZ3hPdHBBcnJheS5jb250cm9sc1tpbmRleF0udmFsdWU7XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMub3RwQ29uZmlnLmJlaGF2aW9yID09PSBOZ3hPdHBCZWhhdmlvci5MRUdBQ1kgJiZcclxuICAgICAgdGhpcy5mb2N1c2VkSW5wdXRIYXNWYWx1ZVxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMuaW5wdXRzW2luZGV4XS5zZWxlY3QoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHN0ZXBCYWNrd2FyZChpbmRleDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICBpZiAoaW5kZXggPiAwKSB7XHJcbiAgICAgIHRoaXMuc2V0Rm9jdXMoaW5kZXggLSAxKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHN0ZXBGb3J3YXJkKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcclxuICAgIGlmIChpbmRleCA8IHRoaXMuTEFTVF9JTlBVVF9JTkRFWCkge1xyXG4gICAgICB0aGlzLnNldEZvY3VzKGluZGV4ICsgMSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG90cEZvcm1DaGFuZ2VMaXN0ZW5lcigpOiB2b2lkIHtcclxuICAgIHRoaXMubmd4T3RwQXJyYXkkID0gdGhpcy5uZ3hPdHBBcnJheS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCh2YWx1ZXMpID0+IHtcclxuICAgICAgaWYgKHRoaXMuaXNJbml0KSB7XHJcbiAgICAgICAgdGhpcy5jaGFuZ2UuZW1pdCh2YWx1ZXMpO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5uZ3hPdHBBcnJheS52YWxpZCkge1xyXG4gICAgICAgICAgdGhpcy5maWxsQ2hhbmdlLmVtaXQodmFsdWVzLmpvaW4oJycpKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRVcE90cEZvcm0oKTogdm9pZCB7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMub3RwQ29uZmlnLm90cExlbmd0aDsgaSsrKSB7XHJcbiAgICAgIHRoaXMubmd4T3RwQXJyYXkucHVzaChuZXcgRm9ybUNvbnRyb2woJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRVcEFyaWFMYWJlbHMoKTogdm9pZCB7XHJcbiAgICBjb25zdCBsYWJlbHMgPSB0aGlzLm90cENvbmZpZy5hcmlhTGFiZWxzO1xyXG5cclxuICAgIHRoaXMuYXJpYUxhYmVscyA9IEFycmF5LmlzQXJyYXkobGFiZWxzKVxyXG4gICAgICA/IGxhYmVsc1xyXG4gICAgICA6IG5ldyBBcnJheSh0aGlzLm90cENvbmZpZy5vdHBMZW5ndGgpLmZpbGwoXHJcbiAgICAgICAgbGFiZWxzIHx8IHRoaXMuREVGQVVMVF9BUklBX0xBQkVMXHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldE5hdGl2ZUhUTUxFbGVtZW50cygpOiB2b2lkIHtcclxuICAgIHRoaXMuaW5wdXRzID0gdGhpcy5vdHBJbnB1dEVsZW1lbnRzLm1hcCgoZWxlbWVudCkgPT4gZWxlbWVudC5uYXRpdmVFbGVtZW50KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0SW5pdGlhbEZvY3VzKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMub3RwQ29uZmlnLmF1dG9mb2N1cykge1xyXG4gICAgICB0aGlzLnNldEZvY3VzKDApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRJbml0aWFsU3R5bGVzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5zdHlsZXMgPSB0aGlzLm90cFNlcnZpY2UuaW5pdDJEQXJyYXkodGhpcy5vdHBDb25maWcub3RwTGVuZ3RoKTtcclxuICAgIHRoaXMuYWRkU3R5bGVUb0FsbCh0aGlzLm90cENvbmZpZy5jbGFzc0xpc3QuaW5wdXQpO1xyXG4gICAgY29uc29sZS5sb2codGhpcy5zdHlsZXMpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRGb2N1cyhpbmRleDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICB0aGlzLmlucHV0c1tpbmRleF0uZm9jdXMoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0TnVtZXJpY0lucHV0SWZQb3NzaWJsZSgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLm90cENvbmZpZy5udW1lcmljSW5wdXRNb2RlKSB7XHJcbiAgICAgIHRoaXMub3RwQ29uZmlnLnBhdHRlcm4gPSB0aGlzLmRlZmF1bHRQYXR0ZXJuO1xyXG4gICAgICB0aGlzLmlucHV0cy5tYXAoKGVsZW1lbnQpID0+IHtcclxuICAgICAgICBlbGVtZW50LnNldEF0dHJpYnV0ZSgnaW5wdXRtb2RlJywgJ251bWVyaWMnKTtcclxuICAgICAgICBlbGVtZW50LnNldEF0dHJpYnV0ZSgncGF0dGVybicsICdbMC05XSonKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGJsdXIoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5vdHBDb25maWcuYXV0b2JsdXIpIHtcclxuICAgICAgdGhpcy5pbnB1dHMubWFwKChpbnB1dCkgPT4gaW5wdXQuYmx1cigpKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFuZGxlUGFzdGUodmFsdWU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMub3RwQ29uZmlnLnBhdHRlcm4udGVzdCh2YWx1ZSkpIHtcclxuICAgICAgbGV0IGxhc3RJbmRleCA9IDA7XHJcbiAgICAgIHZhbHVlXHJcbiAgICAgICAgLnNwbGl0KCcnKVxyXG4gICAgICAgIC5zbGljZSgwLCB0aGlzLm90cENvbmZpZy5vdHBMZW5ndGgpXHJcbiAgICAgICAgLm1hcCgoY2hhcmFjdGVyOiBzdHJpbmcsIGluZGV4OiBudW1iZXIpID0+IHtcclxuICAgICAgICAgIHRoaXMuYWRkU3R5bGUoaW5kZXgsIHRoaXMub3RwQ29uZmlnLmNsYXNzTGlzdC5pbnB1dEZpbGxlZCk7XHJcbiAgICAgICAgICB0aGlzLmdldEZvcm1Db250cm9sQnlJbmRleChpbmRleCkuc2V0VmFsdWUoY2hhcmFjdGVyKTtcclxuICAgICAgICAgIGxhc3RJbmRleCA9IGluZGV4O1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgaWYgKHRoaXMubmd4T3RwQXJyYXkudmFsaWQpIHtcclxuICAgICAgICB0aGlzLmJsdXIoKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnNldEZvY3VzKGxhc3RJbmRleCArIDEpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhbmRsZURpc2FibGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgaWYgKGlzRGlzYWJsZWQpIHtcclxuICAgICAgdGhpcy5uZ3hPdHBBcnJheS5kaXNhYmxlKCk7XHJcbiAgICAgIHRoaXMuYWRkU3R5bGVUb0FsbCh0aGlzLm90cENvbmZpZy5jbGFzc0xpc3QuaW5wdXREaXNhYmxlZCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLm5neE90cEFycmF5LmVuYWJsZSgpO1xyXG4gICAgICB0aGlzLnJlbW92ZVN0eWxlRnJvbUFsbCh0aGlzLm90cENvbmZpZy5jbGFzc0xpc3QuaW5wdXREaXNhYmxlZCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhbmRsZVN0YXR1c0NoYW5nZShzdGF0dXM6IE5neE90cFN0YXR1cyk6IHZvaWQge1xyXG4gICAgdGhpcy5yZW1vdmVTdHlsZUZyb21BbGwoW1xyXG4gICAgICAuLi50aGlzLm90cFNlcnZpY2UudG9BcnJheShcclxuICAgICAgICB0aGlzLm90cENvbmZpZy5jbGFzc0xpc3QuaW5wdXRTdWNjZXNzXHJcbiAgICAgICksXHJcbiAgICAgIC4uLnRoaXMub3RwU2VydmljZS50b0FycmF5KHRoaXMub3RwQ29uZmlnLmNsYXNzTGlzdC5pbnB1dEVycm9yKSxcclxuICAgIF0pO1xyXG5cclxuICAgIGlmIChzdGF0dXMpIHtcclxuICAgICAgaWYgKHN0YXR1cyA9PT0gJ3N1Y2Nlc3MnKSB7XHJcbiAgICAgICAgdGhpcy5hZGRTdHlsZVRvQWxsKHRoaXMub3RwQ29uZmlnLmNsYXNzTGlzdC5pbnB1dFN1Y2Nlc3MpO1xyXG4gICAgICB9IGVsc2UgaWYgKHN0YXR1cyA9PT0gJ2Vycm9yJykge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKHRoaXMub3RwQ29uZmlnKTtcclxuICAgICAgICB0aGlzLmFkZFN0eWxlVG9BbGwodGhpcy5vdHBDb25maWcuY2xhc3NMaXN0LmlucHV0RXJyb3IpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldEZvcm1Db250cm9sQnlJbmRleChpbmRleDogbnVtYmVyKTogRm9ybUNvbnRyb2wge1xyXG4gICAgcmV0dXJuIHRoaXMubmd4T3RwQXJyYXkuY29udHJvbHNbaW5kZXhdIGFzIEZvcm1Db250cm9sO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhZGRTdHlsZShpbmRleDogbnVtYmVyLCBzdHlsZXM6IHN0cmluZyB8IHN0cmluZ1tdKTogdm9pZCB7XHJcbiAgICB0aGlzLnN0eWxlcyA9IHRoaXMub3RwU2VydmljZS5hZGRJdGVtQXRJbmRleChcclxuICAgICAgdGhpcy5zdHlsZXMsXHJcbiAgICAgIGluZGV4LFxyXG4gICAgICB0aGlzLm90cFNlcnZpY2UudG9BcnJheShzdHlsZXMpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhZGRTdHlsZVRvQWxsKHN0eWxlczogc3RyaW5nIHwgc3RyaW5nW10pOiB2b2lkIHtcclxuICAgIHRoaXMuc3R5bGVzID0gdGhpcy5vdHBTZXJ2aWNlLmFkZEl0ZW1Ub0FsbChcclxuICAgICAgdGhpcy5zdHlsZXMsXHJcbiAgICAgIHRoaXMub3RwU2VydmljZS50b0FycmF5KHN0eWxlcylcclxuICAgICk7XHJcbiAgICBjb25zb2xlLmxvZyhzdHlsZXMpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZW1vdmVTdHlsZShpbmRleDogbnVtYmVyLCBzdHlsZXM6IHN0cmluZyB8IHN0cmluZ1tdKTogdm9pZCB7XHJcbiAgICB0aGlzLnN0eWxlcyA9IHRoaXMub3RwU2VydmljZS5yZW1vdmVJdGVtQXRJbmRleChcclxuICAgICAgdGhpcy5zdHlsZXMsXHJcbiAgICAgIGluZGV4LFxyXG4gICAgICB0aGlzLm90cFNlcnZpY2UudG9BcnJheShzdHlsZXMpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZW1vdmVTdHlsZUZyb21BbGwoc3R5bGVzOiBzdHJpbmcgfCBzdHJpbmdbXSk6IHZvaWQge1xyXG4gICAgdGhpcy5zdHlsZXMgPSB0aGlzLm90cFNlcnZpY2UucmVtb3ZlSXRlbUZyb21BbGwoXHJcbiAgICAgIHRoaXMuc3R5bGVzLFxyXG4gICAgICB0aGlzLm90cFNlcnZpY2UudG9BcnJheShzdHlsZXMpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcigncGFzdGUnLCBbJyRldmVudCddKSBvblBhc3RlKGV2ZW50OiBDbGlwYm9hcmRFdmVudCk6IHZvaWQge1xyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIC8vIEB0cy1pZ25vcmVcclxuICAgIHRoaXMuaGFuZGxlUGFzdGUoZXZlbnQuY2xpcGJvYXJkRGF0YS5nZXREYXRhKCd0ZXh0JykpO1xyXG4gIH1cclxufVxyXG4iLCI8Zm9ybVxyXG4gIFtuZ0NsYXNzXT1cIm90cENvbmZpZy5jbGFzc0xpc3QuY29udGFpbmVyXCJcclxuICBjbGFzcz1cIm1yeC1pbnB1dC1vdHAtY29udGFpbmVyXCJcclxuICBbY2xhc3NdPVwiZ2V0Q2xhc3Nlc1wiXHJcbj5cclxuICA8ZGl2XHJcbiAgICAqbmdGb3I9XCJsZXQgY29udHJvbCBvZiBuZ3hPdHBBcnJheS5jb250cm9sczsgbGV0IGkgPSBpbmRleFwiXHJcbiAgICBbbmdDbGFzc109XCJvdHBDb25maWcuY2xhc3NMaXN0LmlucHV0Qm94XCJcclxuICAgIFtjbGFzcy5tcngtaW5wdXQtZXJyb3JdPVwiaW52YWxpZFwiXHJcbiAgICBbY2xhc3NdPVwiY2hlY2tWYWxpZENsYXNzZXNcIlxyXG4gICAgY2xhc3M9XCJtcngtaW5wdXQtb3RwLWJveFwiXHJcbiAgPlxyXG4gICAgPGxhYmVsIFthdHRyLmFyaWEtbGFiZWxdPVwiYXJpYUxhYmVsc1tpXVwiPlxyXG4gICAgICA8aW5wdXRcclxuICAgICAgICAjb3RwSW5wdXRFbGVtZW50XHJcbiAgICAgICAgW2lkXT1cIidtcngtaW5wdXQtb3RwLScgKyBpXCJcclxuICAgICAgICBbZm9ybUNvbnRyb2xdPVwiY29udmVydFRvRm9ybUNvbnRyb2woY29udHJvbClcIlxyXG4gICAgICAgIFttcnhPcHRQYXR0ZXJuXT1cIm90cENvbmZpZy5wYXR0ZXJuXCJcclxuICAgICAgICBbdHlwZV09XCJvdHBDb25maWcuaXNQYXNzd29yZElucHV0ID8gJ3Bhc3N3b3JkJyA6ICd0ZXh0J1wiXHJcbiAgICAgICAgW25nQ2xhc3NdPVwic3R5bGVzW2ldXCJcclxuICAgICAgICAoa2V5dXApPVwiaGFuZGxlS2V5VXAoaSwgJGV2ZW50LmtleSlcIlxyXG4gICAgICAgIChrZXl1cC5iYWNrc3BhY2UpPVwiaGFuZGxlRGVsZXRlKGkpXCJcclxuICAgICAgICAoa2V5dXAuYXJyb3dMZWZ0KT1cInN0ZXBCYWNrd2FyZChpKVwiXHJcbiAgICAgICAgKGtleXVwLmFycm93UmlnaHQpPVwic3RlcEZvcndhcmQoaSlcIlxyXG4gICAgICAgIChmb2N1cyk9XCJoYW5kbGVGb2N1cyhpKVwiXHJcbiAgICAgICAgY2xhc3M9XCJtcngtaW5wdXQtb3RwXCJcclxuICAgICAgICBtYXhsZW5ndGg9XCIxXCJcclxuICAgICAgICBhdXRvY2FwaXRhbGl6ZT1cIm9mZlwiXHJcbiAgICAgICAgc3BlbGxjaGVjaz1cImZhbHNlXCJcclxuICAgICAgLz5cclxuICAgIDwvbGFiZWw+XHJcbiAgPC9kaXY+XHJcbjwvZm9ybT5cclxuXHJcbjxtcngtZXJyb3ItbWVzc2FnZVxyXG4gICpuZ0lmPVwiaW52YWxpZCAmJiBpc0ludmFsaWRNZXNzYWdlXCJcclxuICBjdXN0b21DbGFzc2VzPVwidGV4dC1sZWZ0XCJcclxuICBbaW52YWxpZE1lc3NhZ2VdPVwiaW52YWxpZE1lc3NhZ2VcIlxyXG4+PC9tcngtZXJyb3ItbWVzc2FnZT5cclxuIl19
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export var InputOptSizesEnum;
|
|
2
|
+
(function (InputOptSizesEnum) {
|
|
3
|
+
InputOptSizesEnum["small"] = "mrx-input-opt-sm";
|
|
4
|
+
InputOptSizesEnum["medium"] = "mrx-input-opt-md";
|
|
5
|
+
InputOptSizesEnum["large"] = "mrx-input-opt-lg";
|
|
6
|
+
InputOptSizesEnum["responsive"] = "mrx-input-opt-responsive";
|
|
7
|
+
})(InputOptSizesEnum || (InputOptSizesEnum = {}));
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtb3B0LmVudW0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJ0YS11aS9zcmMvbGliL2NvbXBvbmVudHMvZm9ybS9pbnB1dC1vcHQvY29tcG9uZW50cy9pbnB1dC1vcHQvaW5wdXQtb3B0LmVudW0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFOLElBQVksaUJBS1g7QUFMRCxXQUFZLGlCQUFpQjtJQUMzQiwrQ0FBNEIsQ0FBQTtJQUM1QixnREFBNkIsQ0FBQTtJQUM3QiwrQ0FBNEIsQ0FBQTtJQUM1Qiw0REFBeUMsQ0FBQTtBQUMzQyxDQUFDLEVBTFcsaUJBQWlCLEtBQWpCLGlCQUFpQixRQUs1QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIElucHV0T3B0U2l6ZXNFbnVtIHtcclxuICAnc21hbGwnID0gJ21yeC1pbnB1dC1vcHQtc20nLFxyXG4gICdtZWRpdW0nID0gJ21yeC1pbnB1dC1vcHQtbWQnLFxyXG4gICdsYXJnZScgPSAnbXJ4LWlucHV0LW9wdC1sZycsXHJcbiAgJ3Jlc3BvbnNpdmUnID0gJ21yeC1pbnB1dC1vcHQtcmVzcG9uc2l2ZScsXHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIElucHV0T3B0U2l6ZXNUeXBlcyA9ICdzbWFsbCcgfCAnbWVkaXVtJyB8ICdsYXJnZScgfCAncmVzcG9uc2l2ZSc7XHJcbiJdfQ==
|
|
@@ -1,19 +1,22 @@
|
|
|
1
1
|
import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
2
|
import { GalleryConfirmModalComponent } from '../gallery-confirm-modal/gallery-confirm-modal.component';
|
|
3
|
-
import { MrxAutosaveService } from '../../../../services';
|
|
3
|
+
import { autosaveAddId, autosaveErrorFor, autosaveStartFor, autosaveSuccessFor, MrxAutosaveService, selectFields } from '../../../../services';
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
5
|
import * as i1 from "../../services/gallery.service";
|
|
6
6
|
import * as i2 from "ngx-simple-modal";
|
|
7
|
-
import * as i3 from "
|
|
8
|
-
import * as i4 from "../../../
|
|
9
|
-
import * as i5 from "
|
|
10
|
-
import * as i6 from "@angular/
|
|
7
|
+
import * as i3 from "@ngrx/store";
|
|
8
|
+
import * as i4 from "../../../loader/loader.component";
|
|
9
|
+
import * as i5 from "../../../form/input-textarea/input-textarea.component";
|
|
10
|
+
import * as i6 from "@angular/common";
|
|
11
|
+
import * as i7 from "@angular/forms";
|
|
11
12
|
export class GalleryItemComponent {
|
|
12
|
-
constructor(galleryService, _simpleModalService) {
|
|
13
|
+
constructor(galleryService, _simpleModalService, _store) {
|
|
13
14
|
this.galleryService = galleryService;
|
|
14
15
|
this._simpleModalService = _simpleModalService;
|
|
16
|
+
this._store = _store;
|
|
15
17
|
this.timeStamp = (new Date()).getTime();
|
|
16
18
|
this.isLoading = false;
|
|
19
|
+
this.fields$ = this._store.select(selectFields);
|
|
17
20
|
this.isEditing = false;
|
|
18
21
|
this.descriptionMaxLength = 0;
|
|
19
22
|
this.rotateSlides = [];
|
|
@@ -55,20 +58,24 @@ export class GalleryItemComponent {
|
|
|
55
58
|
}
|
|
56
59
|
changeDescription(obj) {
|
|
57
60
|
clearTimeout(this._timer);
|
|
61
|
+
this._store.dispatch(autosaveAddId({ id: obj.id }));
|
|
62
|
+
this._store.dispatch(autosaveStartFor({ id: obj.id }));
|
|
58
63
|
this._timer = setTimeout(() => {
|
|
59
64
|
this.galleryService.update(this.updateEndPoint, this.preview.uuid, obj.value).subscribe(res => {
|
|
60
65
|
this.updatePhoto.emit(res);
|
|
66
|
+
this._store.dispatch(autosaveSuccessFor({ id: obj.id }));
|
|
61
67
|
}, () => {
|
|
68
|
+
this._store.dispatch(autosaveErrorFor({ id: obj.id }));
|
|
62
69
|
});
|
|
63
70
|
}, 1500);
|
|
64
71
|
}
|
|
65
72
|
}
|
|
66
|
-
GalleryItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: GalleryItemComponent, deps: [{ token: i1.GalleryService }, { token: i2.SimpleModalService }], target: i0.ɵɵFactoryTarget.Component });
|
|
67
|
-
GalleryItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: GalleryItemComponent, selector: "mrx-gallery-item", inputs: { preview: "preview", index: "index", isEditing: "isEditing", descriptionMaxLength: "descriptionMaxLength", deleteEndPoint: "deleteEndPoint", updateEndPoint: "updateEndPoint", rotateSlides: "rotateSlides", setIsLoading: ["isLoading", "setIsLoading"] }, outputs: { openGalleryModal: "openGalleryModal", deletePhoto: "deletePhoto", updatePhoto: "updatePhoto" }, providers: [MrxAutosaveService], ngImport: i0, template: "<div class=\"mrx-gallery-item\">\r\n <div class=\"mrx-gallery-item__preview\" (click)=\"onOpenGalleryModal()\">\r\n\r\n <img [src]=\"getImageUrl()\" [alt]=\"preview.imageName || 'image'\" *ngIf=\"!isLoadingImage; else skeletonTemplate\">\r\n\r\n <ng-template #skeletonTemplate>\r\n <div class=\"d-flex align-items-center justify-content-center w-100 h-100\">\r\n <mrx-loader size=\"medium\" color=\"brand\"></mrx-loader>\r\n </div>\r\n </ng-template>\r\n\r\n <div class=\"mrx-gallery-item__preview-overlay\" *ngIf=\"!isLoadingImage\"></div>\r\n\r\n <div class=\"mrx-gallery-item__preview-controls\" *ngIf=\"!isLoadingImage\">\r\n <a class=\"mrx-gallery-item__preview-controls--icon\" [href]=\"yandexCheckUrl\" target=\"_blank\" (click)=\"$event.stopPropagation()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_12346_12076)\">\r\n <path d=\"M8.00031 15.9838C12.4096 15.9838 15.984 12.4093 15.984 8.00006C15.984 3.59078 12.4096 0.0163574 8.00031 0.0163574C3.59103 0.0163574 0.0166016 3.59078 0.0166016 8.00006C0.0166016 12.4093 3.59103 15.9838 8.00031 15.9838Z\" fill=\"white\"/>\r\n <path d=\"M10.8893 13.0118H9.1367V4.34361H8.35596C6.92484 4.34361 6.17521 5.05916 6.17521 6.12731C6.17521 7.33916 6.69225 7.90065 7.76188 8.6162L8.64336 9.21028L6.11003 13.0103H4.22559L6.50559 9.61768C5.19447 8.68139 4.4567 7.76731 4.4567 6.22509C4.4567 4.29768 5.8004 2.98657 8.3441 2.98657H10.8774V13.0088H10.8893V13.0118Z\" fill=\"#FC3F1D\"/>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_12346_12076\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\"/>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </a>\r\n\r\n <a class=\"mrx-gallery-item__preview-controls--icon\" [href]=\"googleCheckUrl\" target=\"_blank\" (click)=\"$event.stopPropagation()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <path d=\"M11.5561 4.8901H11.0997V4.86659H5.99967V7.13325H9.20219C8.73497 8.45273 7.47952 9.39992 5.99967 9.39992C4.12202 9.39992 2.59967 7.87757 2.59967 5.99992C2.59967 4.12227 4.12202 2.59992 5.99967 2.59992C6.86639 2.59992 7.65491 2.92689 8.25529 3.46097L9.85811 1.85815C8.84604 0.914935 7.49227 0.333252 5.99967 0.333252C2.87026 0.333252 0.333008 2.8705 0.333008 5.99992C0.333008 9.12934 2.87026 11.6666 5.99967 11.6666C9.12909 11.6666 11.6663 9.12934 11.6663 5.99992C11.6663 5.61997 11.6272 5.24909 11.5561 4.8901Z\" fill=\"#FBC02D\"/>\r\n <path d=\"M0.987305 3.36237L2.84909 4.72775C3.35285 3.48052 4.57289 2.59992 6.0006 2.59992C6.86732 2.59992 7.65584 2.92689 8.25622 3.46097L9.85904 1.85815C8.84697 0.914935 7.4932 0.333252 6.0006 0.333252C3.82404 0.333252 1.93647 1.56207 0.987305 3.36237Z\" fill=\"#E53935\"/>\r\n <path d=\"M6.0008 11.6665C7.4645 11.6665 8.79447 11.1063 9.80002 10.1954L8.04619 8.7113C7.47725 9.14225 6.77005 9.3998 6.0008 9.3998C4.5269 9.3998 3.27542 8.45999 2.80395 7.14844L0.956055 8.57219C1.89389 10.4073 3.79845 11.6665 6.0008 11.6665Z\" fill=\"#4CAF50\"/>\r\n <path d=\"M11.5564 4.88997L11.5519 4.86646H11.1H6V7.13312H9.20252C8.97812 7.76694 8.5704 8.31349 8.04453 8.71157C8.04482 8.71129 8.0451 8.71129 8.04538 8.71101L9.79922 10.1951C9.67512 10.3079 11.6667 8.83312 11.6667 5.99979C11.6667 5.61984 11.6276 5.24896 11.5564 4.88997Z\" fill=\"#1565C0\"/>\r\n </svg>\r\n </a>\r\n\r\n <div class=\"mrx-gallery-item__preview-controls__button d-flex align-items-center justify-content-center\" *ngIf=\"isEditing\" (click)=\"$event.stopPropagation()\">\r\n <span class=\"mrx-icon icon-delete icon-font-16 text-bold\" (click)=\"deleteImage()\"></span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"mrx-gallery-item__description\">\r\n <mrx-input-textarea\r\n *ngIf=\"isEditing; else textTemplate\"\r\n [ngModel]=\"preview.description\"\r\n [autosize]=\"false\"\r\n [rows]=\"2\"\r\n [maxlength]=\"descriptionMaxLength\"\r\n (modelChange)=\"changeDescription($event)\"\r\n ></mrx-input-textarea>\r\n\r\n <ng-template #textTemplate>\r\n {{ preview.description }}\r\n </ng-template>\r\n </div>\r\n</div>\r\n", styles: [".mrx-gallery-item{cursor:pointer}.mrx-gallery-item__preview{width:100%;height:180px;border-radius:4px;overflow:hidden;position:relative;margin-bottom:8px}.mrx-gallery-item__preview img{width:100%;height:100%;object-fit:cover;object-position:center top}.mrx-gallery-item__preview-overlay{position:absolute;inset:0;z-index:1;background:linear-gradient(180deg,rgba(0,0,0,0) 78.93%,rgba(0,0,0,.35) 91.52%)}.mrx-gallery-item__preview-controls{position:absolute;bottom:0;left:0;right:0;z-index:2;padding:8px;display:flex;align-items:center;justify-content:flex-end;gap:8px}.mrx-gallery-item__preview-controls--text{font-family:var(--body-sm-font-family);font-size:var(--body-sm-font-size);font-weight:var(--body-sm-font-weight);line-height:var(--body-sm-line-height);color:var(--neutral-text-inverse);opacity:.8}.mrx-gallery-item__preview-controls--icon{width:16px;height:16px;display:flex;align-items:center;justify-content:center;background-color:#fff;border-radius:50%}.mrx-gallery-item__preview-controls__button{padding:4px;border-radius:4px;background:var(--system-white, #FFF)}.mrx-gallery-item__description{font-family:var(--body-md-font-family);font-size:var(--body-md-font-size);font-weight:var(--body-md-font-weight);line-height:var(--body-md-line-height);color:var(--neutral-text-primary)}\n"], components: [{ type:
|
|
73
|
+
GalleryItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: GalleryItemComponent, deps: [{ token: i1.GalleryService }, { token: i2.SimpleModalService }, { token: i3.Store }], target: i0.ɵɵFactoryTarget.Component });
|
|
74
|
+
GalleryItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: GalleryItemComponent, selector: "mrx-gallery-item", inputs: { preview: "preview", index: "index", isEditing: "isEditing", descriptionMaxLength: "descriptionMaxLength", deleteEndPoint: "deleteEndPoint", updateEndPoint: "updateEndPoint", rotateSlides: "rotateSlides", setIsLoading: ["isLoading", "setIsLoading"] }, outputs: { openGalleryModal: "openGalleryModal", deletePhoto: "deletePhoto", updatePhoto: "updatePhoto" }, providers: [MrxAutosaveService], ngImport: i0, template: "<div class=\"mrx-gallery-item\">\r\n <div class=\"mrx-gallery-item__preview\" (click)=\"onOpenGalleryModal()\">\r\n\r\n <img [src]=\"getImageUrl()\" [alt]=\"preview.imageName || 'image'\" *ngIf=\"!isLoadingImage; else skeletonTemplate\">\r\n\r\n <ng-template #skeletonTemplate>\r\n <div class=\"d-flex align-items-center justify-content-center w-100 h-100\">\r\n <mrx-loader size=\"medium\" color=\"brand\"></mrx-loader>\r\n </div>\r\n </ng-template>\r\n\r\n <div class=\"mrx-gallery-item__preview-overlay\" *ngIf=\"!isLoadingImage\"></div>\r\n\r\n <div class=\"mrx-gallery-item__preview-controls\" *ngIf=\"!isLoadingImage\">\r\n <a class=\"mrx-gallery-item__preview-controls--icon\" [href]=\"yandexCheckUrl\" target=\"_blank\" (click)=\"$event.stopPropagation()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_12346_12076)\">\r\n <path d=\"M8.00031 15.9838C12.4096 15.9838 15.984 12.4093 15.984 8.00006C15.984 3.59078 12.4096 0.0163574 8.00031 0.0163574C3.59103 0.0163574 0.0166016 3.59078 0.0166016 8.00006C0.0166016 12.4093 3.59103 15.9838 8.00031 15.9838Z\" fill=\"white\"/>\r\n <path d=\"M10.8893 13.0118H9.1367V4.34361H8.35596C6.92484 4.34361 6.17521 5.05916 6.17521 6.12731C6.17521 7.33916 6.69225 7.90065 7.76188 8.6162L8.64336 9.21028L6.11003 13.0103H4.22559L6.50559 9.61768C5.19447 8.68139 4.4567 7.76731 4.4567 6.22509C4.4567 4.29768 5.8004 2.98657 8.3441 2.98657H10.8774V13.0088H10.8893V13.0118Z\" fill=\"#FC3F1D\"/>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_12346_12076\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\"/>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </a>\r\n\r\n <a class=\"mrx-gallery-item__preview-controls--icon\" [href]=\"googleCheckUrl\" target=\"_blank\" (click)=\"$event.stopPropagation()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <path d=\"M11.5561 4.8901H11.0997V4.86659H5.99967V7.13325H9.20219C8.73497 8.45273 7.47952 9.39992 5.99967 9.39992C4.12202 9.39992 2.59967 7.87757 2.59967 5.99992C2.59967 4.12227 4.12202 2.59992 5.99967 2.59992C6.86639 2.59992 7.65491 2.92689 8.25529 3.46097L9.85811 1.85815C8.84604 0.914935 7.49227 0.333252 5.99967 0.333252C2.87026 0.333252 0.333008 2.8705 0.333008 5.99992C0.333008 9.12934 2.87026 11.6666 5.99967 11.6666C9.12909 11.6666 11.6663 9.12934 11.6663 5.99992C11.6663 5.61997 11.6272 5.24909 11.5561 4.8901Z\" fill=\"#FBC02D\"/>\r\n <path d=\"M0.987305 3.36237L2.84909 4.72775C3.35285 3.48052 4.57289 2.59992 6.0006 2.59992C6.86732 2.59992 7.65584 2.92689 8.25622 3.46097L9.85904 1.85815C8.84697 0.914935 7.4932 0.333252 6.0006 0.333252C3.82404 0.333252 1.93647 1.56207 0.987305 3.36237Z\" fill=\"#E53935\"/>\r\n <path d=\"M6.0008 11.6665C7.4645 11.6665 8.79447 11.1063 9.80002 10.1954L8.04619 8.7113C7.47725 9.14225 6.77005 9.3998 6.0008 9.3998C4.5269 9.3998 3.27542 8.45999 2.80395 7.14844L0.956055 8.57219C1.89389 10.4073 3.79845 11.6665 6.0008 11.6665Z\" fill=\"#4CAF50\"/>\r\n <path d=\"M11.5564 4.88997L11.5519 4.86646H11.1H6V7.13312H9.20252C8.97812 7.76694 8.5704 8.31349 8.04453 8.71157C8.04482 8.71129 8.0451 8.71129 8.04538 8.71101L9.79922 10.1951C9.67512 10.3079 11.6667 8.83312 11.6667 5.99979C11.6667 5.61984 11.6276 5.24896 11.5564 4.88997Z\" fill=\"#1565C0\"/>\r\n </svg>\r\n </a>\r\n\r\n <div class=\"mrx-gallery-item__preview-controls__button d-flex align-items-center justify-content-center\" *ngIf=\"isEditing\" (click)=\"$event.stopPropagation()\">\r\n <span class=\"mrx-icon icon-delete icon-font-16 text-bold\" (click)=\"deleteImage()\"></span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"mrx-gallery-item__description\">\r\n <mrx-input-textarea\r\n *ngIf=\"isEditing; else textTemplate\"\r\n [fields]=\"(fields$ | async)!\"\r\n [ngModel]=\"preview.description\"\r\n [autosize]=\"false\"\r\n [rows]=\"2\"\r\n [maxlength]=\"descriptionMaxLength\"\r\n (modelChange)=\"changeDescription($event)\"\r\n ></mrx-input-textarea>\r\n\r\n <ng-template #textTemplate>\r\n {{ preview.description }}\r\n </ng-template>\r\n </div>\r\n</div>\r\n", styles: [".mrx-gallery-item{cursor:pointer}.mrx-gallery-item__preview{width:100%;height:180px;border-radius:4px;overflow:hidden;position:relative;margin-bottom:8px}.mrx-gallery-item__preview img{width:100%;height:100%;object-fit:cover;object-position:center top}.mrx-gallery-item__preview-overlay{position:absolute;inset:0;z-index:1;background:linear-gradient(180deg,rgba(0,0,0,0) 78.93%,rgba(0,0,0,.35) 91.52%)}.mrx-gallery-item__preview-controls{position:absolute;bottom:0;left:0;right:0;z-index:2;padding:8px;display:flex;align-items:center;justify-content:flex-end;gap:8px}.mrx-gallery-item__preview-controls--text{font-family:var(--body-sm-font-family);font-size:var(--body-sm-font-size);font-weight:var(--body-sm-font-weight);line-height:var(--body-sm-line-height);color:var(--neutral-text-inverse);opacity:.8}.mrx-gallery-item__preview-controls--icon{width:16px;height:16px;display:flex;align-items:center;justify-content:center;background-color:#fff;border-radius:50%}.mrx-gallery-item__preview-controls__button{padding:4px;border-radius:4px;background:var(--system-white, #FFF)}.mrx-gallery-item__description{font-family:var(--body-md-font-family);font-size:var(--body-md-font-size);font-weight:var(--body-md-font-weight);line-height:var(--body-md-line-height);color:var(--neutral-text-primary)}\n"], components: [{ type: i4.LoaderComponent, selector: "mrx-loader", inputs: ["size", "color", "customClasses"] }, { type: i5.InputTextareaComponent, selector: "mrx-input-textarea", inputs: ["fields", "disabled", "readonly", "autosize", "maxlength", "minlength", "rows", "placeholder", "invalid", "invalidMessage", "checkInvalid", "customClasses", "mask", "size"], outputs: ["changed", "blurred", "modelChange"] }], directives: [{ type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i7.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i7.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }], pipes: { "async": i6.AsyncPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
68
75
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: GalleryItemComponent, decorators: [{
|
|
69
76
|
type: Component,
|
|
70
|
-
args: [{ selector: 'mrx-gallery-item', changeDetection: ChangeDetectionStrategy.OnPush, providers: [MrxAutosaveService], template: "<div class=\"mrx-gallery-item\">\r\n <div class=\"mrx-gallery-item__preview\" (click)=\"onOpenGalleryModal()\">\r\n\r\n <img [src]=\"getImageUrl()\" [alt]=\"preview.imageName || 'image'\" *ngIf=\"!isLoadingImage; else skeletonTemplate\">\r\n\r\n <ng-template #skeletonTemplate>\r\n <div class=\"d-flex align-items-center justify-content-center w-100 h-100\">\r\n <mrx-loader size=\"medium\" color=\"brand\"></mrx-loader>\r\n </div>\r\n </ng-template>\r\n\r\n <div class=\"mrx-gallery-item__preview-overlay\" *ngIf=\"!isLoadingImage\"></div>\r\n\r\n <div class=\"mrx-gallery-item__preview-controls\" *ngIf=\"!isLoadingImage\">\r\n <a class=\"mrx-gallery-item__preview-controls--icon\" [href]=\"yandexCheckUrl\" target=\"_blank\" (click)=\"$event.stopPropagation()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_12346_12076)\">\r\n <path d=\"M8.00031 15.9838C12.4096 15.9838 15.984 12.4093 15.984 8.00006C15.984 3.59078 12.4096 0.0163574 8.00031 0.0163574C3.59103 0.0163574 0.0166016 3.59078 0.0166016 8.00006C0.0166016 12.4093 3.59103 15.9838 8.00031 15.9838Z\" fill=\"white\"/>\r\n <path d=\"M10.8893 13.0118H9.1367V4.34361H8.35596C6.92484 4.34361 6.17521 5.05916 6.17521 6.12731C6.17521 7.33916 6.69225 7.90065 7.76188 8.6162L8.64336 9.21028L6.11003 13.0103H4.22559L6.50559 9.61768C5.19447 8.68139 4.4567 7.76731 4.4567 6.22509C4.4567 4.29768 5.8004 2.98657 8.3441 2.98657H10.8774V13.0088H10.8893V13.0118Z\" fill=\"#FC3F1D\"/>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_12346_12076\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\"/>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </a>\r\n\r\n <a class=\"mrx-gallery-item__preview-controls--icon\" [href]=\"googleCheckUrl\" target=\"_blank\" (click)=\"$event.stopPropagation()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <path d=\"M11.5561 4.8901H11.0997V4.86659H5.99967V7.13325H9.20219C8.73497 8.45273 7.47952 9.39992 5.99967 9.39992C4.12202 9.39992 2.59967 7.87757 2.59967 5.99992C2.59967 4.12227 4.12202 2.59992 5.99967 2.59992C6.86639 2.59992 7.65491 2.92689 8.25529 3.46097L9.85811 1.85815C8.84604 0.914935 7.49227 0.333252 5.99967 0.333252C2.87026 0.333252 0.333008 2.8705 0.333008 5.99992C0.333008 9.12934 2.87026 11.6666 5.99967 11.6666C9.12909 11.6666 11.6663 9.12934 11.6663 5.99992C11.6663 5.61997 11.6272 5.24909 11.5561 4.8901Z\" fill=\"#FBC02D\"/>\r\n <path d=\"M0.987305 3.36237L2.84909 4.72775C3.35285 3.48052 4.57289 2.59992 6.0006 2.59992C6.86732 2.59992 7.65584 2.92689 8.25622 3.46097L9.85904 1.85815C8.84697 0.914935 7.4932 0.333252 6.0006 0.333252C3.82404 0.333252 1.93647 1.56207 0.987305 3.36237Z\" fill=\"#E53935\"/>\r\n <path d=\"M6.0008 11.6665C7.4645 11.6665 8.79447 11.1063 9.80002 10.1954L8.04619 8.7113C7.47725 9.14225 6.77005 9.3998 6.0008 9.3998C4.5269 9.3998 3.27542 8.45999 2.80395 7.14844L0.956055 8.57219C1.89389 10.4073 3.79845 11.6665 6.0008 11.6665Z\" fill=\"#4CAF50\"/>\r\n <path d=\"M11.5564 4.88997L11.5519 4.86646H11.1H6V7.13312H9.20252C8.97812 7.76694 8.5704 8.31349 8.04453 8.71157C8.04482 8.71129 8.0451 8.71129 8.04538 8.71101L9.79922 10.1951C9.67512 10.3079 11.6667 8.83312 11.6667 5.99979C11.6667 5.61984 11.6276 5.24896 11.5564 4.88997Z\" fill=\"#1565C0\"/>\r\n </svg>\r\n </a>\r\n\r\n <div class=\"mrx-gallery-item__preview-controls__button d-flex align-items-center justify-content-center\" *ngIf=\"isEditing\" (click)=\"$event.stopPropagation()\">\r\n <span class=\"mrx-icon icon-delete icon-font-16 text-bold\" (click)=\"deleteImage()\"></span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"mrx-gallery-item__description\">\r\n <mrx-input-textarea\r\n *ngIf=\"isEditing; else textTemplate\"\r\n [ngModel]=\"preview.description\"\r\n [autosize]=\"false\"\r\n [rows]=\"2\"\r\n [maxlength]=\"descriptionMaxLength\"\r\n (modelChange)=\"changeDescription($event)\"\r\n ></mrx-input-textarea>\r\n\r\n <ng-template #textTemplate>\r\n {{ preview.description }}\r\n </ng-template>\r\n </div>\r\n</div>\r\n", styles: [".mrx-gallery-item{cursor:pointer}.mrx-gallery-item__preview{width:100%;height:180px;border-radius:4px;overflow:hidden;position:relative;margin-bottom:8px}.mrx-gallery-item__preview img{width:100%;height:100%;object-fit:cover;object-position:center top}.mrx-gallery-item__preview-overlay{position:absolute;inset:0;z-index:1;background:linear-gradient(180deg,rgba(0,0,0,0) 78.93%,rgba(0,0,0,.35) 91.52%)}.mrx-gallery-item__preview-controls{position:absolute;bottom:0;left:0;right:0;z-index:2;padding:8px;display:flex;align-items:center;justify-content:flex-end;gap:8px}.mrx-gallery-item__preview-controls--text{font-family:var(--body-sm-font-family);font-size:var(--body-sm-font-size);font-weight:var(--body-sm-font-weight);line-height:var(--body-sm-line-height);color:var(--neutral-text-inverse);opacity:.8}.mrx-gallery-item__preview-controls--icon{width:16px;height:16px;display:flex;align-items:center;justify-content:center;background-color:#fff;border-radius:50%}.mrx-gallery-item__preview-controls__button{padding:4px;border-radius:4px;background:var(--system-white, #FFF)}.mrx-gallery-item__description{font-family:var(--body-md-font-family);font-size:var(--body-md-font-size);font-weight:var(--body-md-font-weight);line-height:var(--body-md-line-height);color:var(--neutral-text-primary)}\n"] }]
|
|
71
|
-
}], ctorParameters: function () { return [{ type: i1.GalleryService }, { type: i2.SimpleModalService }]; }, propDecorators: { preview: [{
|
|
77
|
+
args: [{ selector: 'mrx-gallery-item', changeDetection: ChangeDetectionStrategy.OnPush, providers: [MrxAutosaveService], template: "<div class=\"mrx-gallery-item\">\r\n <div class=\"mrx-gallery-item__preview\" (click)=\"onOpenGalleryModal()\">\r\n\r\n <img [src]=\"getImageUrl()\" [alt]=\"preview.imageName || 'image'\" *ngIf=\"!isLoadingImage; else skeletonTemplate\">\r\n\r\n <ng-template #skeletonTemplate>\r\n <div class=\"d-flex align-items-center justify-content-center w-100 h-100\">\r\n <mrx-loader size=\"medium\" color=\"brand\"></mrx-loader>\r\n </div>\r\n </ng-template>\r\n\r\n <div class=\"mrx-gallery-item__preview-overlay\" *ngIf=\"!isLoadingImage\"></div>\r\n\r\n <div class=\"mrx-gallery-item__preview-controls\" *ngIf=\"!isLoadingImage\">\r\n <a class=\"mrx-gallery-item__preview-controls--icon\" [href]=\"yandexCheckUrl\" target=\"_blank\" (click)=\"$event.stopPropagation()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_12346_12076)\">\r\n <path d=\"M8.00031 15.9838C12.4096 15.9838 15.984 12.4093 15.984 8.00006C15.984 3.59078 12.4096 0.0163574 8.00031 0.0163574C3.59103 0.0163574 0.0166016 3.59078 0.0166016 8.00006C0.0166016 12.4093 3.59103 15.9838 8.00031 15.9838Z\" fill=\"white\"/>\r\n <path d=\"M10.8893 13.0118H9.1367V4.34361H8.35596C6.92484 4.34361 6.17521 5.05916 6.17521 6.12731C6.17521 7.33916 6.69225 7.90065 7.76188 8.6162L8.64336 9.21028L6.11003 13.0103H4.22559L6.50559 9.61768C5.19447 8.68139 4.4567 7.76731 4.4567 6.22509C4.4567 4.29768 5.8004 2.98657 8.3441 2.98657H10.8774V13.0088H10.8893V13.0118Z\" fill=\"#FC3F1D\"/>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_12346_12076\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\"/>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </a>\r\n\r\n <a class=\"mrx-gallery-item__preview-controls--icon\" [href]=\"googleCheckUrl\" target=\"_blank\" (click)=\"$event.stopPropagation()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <path d=\"M11.5561 4.8901H11.0997V4.86659H5.99967V7.13325H9.20219C8.73497 8.45273 7.47952 9.39992 5.99967 9.39992C4.12202 9.39992 2.59967 7.87757 2.59967 5.99992C2.59967 4.12227 4.12202 2.59992 5.99967 2.59992C6.86639 2.59992 7.65491 2.92689 8.25529 3.46097L9.85811 1.85815C8.84604 0.914935 7.49227 0.333252 5.99967 0.333252C2.87026 0.333252 0.333008 2.8705 0.333008 5.99992C0.333008 9.12934 2.87026 11.6666 5.99967 11.6666C9.12909 11.6666 11.6663 9.12934 11.6663 5.99992C11.6663 5.61997 11.6272 5.24909 11.5561 4.8901Z\" fill=\"#FBC02D\"/>\r\n <path d=\"M0.987305 3.36237L2.84909 4.72775C3.35285 3.48052 4.57289 2.59992 6.0006 2.59992C6.86732 2.59992 7.65584 2.92689 8.25622 3.46097L9.85904 1.85815C8.84697 0.914935 7.4932 0.333252 6.0006 0.333252C3.82404 0.333252 1.93647 1.56207 0.987305 3.36237Z\" fill=\"#E53935\"/>\r\n <path d=\"M6.0008 11.6665C7.4645 11.6665 8.79447 11.1063 9.80002 10.1954L8.04619 8.7113C7.47725 9.14225 6.77005 9.3998 6.0008 9.3998C4.5269 9.3998 3.27542 8.45999 2.80395 7.14844L0.956055 8.57219C1.89389 10.4073 3.79845 11.6665 6.0008 11.6665Z\" fill=\"#4CAF50\"/>\r\n <path d=\"M11.5564 4.88997L11.5519 4.86646H11.1H6V7.13312H9.20252C8.97812 7.76694 8.5704 8.31349 8.04453 8.71157C8.04482 8.71129 8.0451 8.71129 8.04538 8.71101L9.79922 10.1951C9.67512 10.3079 11.6667 8.83312 11.6667 5.99979C11.6667 5.61984 11.6276 5.24896 11.5564 4.88997Z\" fill=\"#1565C0\"/>\r\n </svg>\r\n </a>\r\n\r\n <div class=\"mrx-gallery-item__preview-controls__button d-flex align-items-center justify-content-center\" *ngIf=\"isEditing\" (click)=\"$event.stopPropagation()\">\r\n <span class=\"mrx-icon icon-delete icon-font-16 text-bold\" (click)=\"deleteImage()\"></span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"mrx-gallery-item__description\">\r\n <mrx-input-textarea\r\n *ngIf=\"isEditing; else textTemplate\"\r\n [fields]=\"(fields$ | async)!\"\r\n [ngModel]=\"preview.description\"\r\n [autosize]=\"false\"\r\n [rows]=\"2\"\r\n [maxlength]=\"descriptionMaxLength\"\r\n (modelChange)=\"changeDescription($event)\"\r\n ></mrx-input-textarea>\r\n\r\n <ng-template #textTemplate>\r\n {{ preview.description }}\r\n </ng-template>\r\n </div>\r\n</div>\r\n", styles: [".mrx-gallery-item{cursor:pointer}.mrx-gallery-item__preview{width:100%;height:180px;border-radius:4px;overflow:hidden;position:relative;margin-bottom:8px}.mrx-gallery-item__preview img{width:100%;height:100%;object-fit:cover;object-position:center top}.mrx-gallery-item__preview-overlay{position:absolute;inset:0;z-index:1;background:linear-gradient(180deg,rgba(0,0,0,0) 78.93%,rgba(0,0,0,.35) 91.52%)}.mrx-gallery-item__preview-controls{position:absolute;bottom:0;left:0;right:0;z-index:2;padding:8px;display:flex;align-items:center;justify-content:flex-end;gap:8px}.mrx-gallery-item__preview-controls--text{font-family:var(--body-sm-font-family);font-size:var(--body-sm-font-size);font-weight:var(--body-sm-font-weight);line-height:var(--body-sm-line-height);color:var(--neutral-text-inverse);opacity:.8}.mrx-gallery-item__preview-controls--icon{width:16px;height:16px;display:flex;align-items:center;justify-content:center;background-color:#fff;border-radius:50%}.mrx-gallery-item__preview-controls__button{padding:4px;border-radius:4px;background:var(--system-white, #FFF)}.mrx-gallery-item__description{font-family:var(--body-md-font-family);font-size:var(--body-md-font-size);font-weight:var(--body-md-font-weight);line-height:var(--body-md-line-height);color:var(--neutral-text-primary)}\n"] }]
|
|
78
|
+
}], ctorParameters: function () { return [{ type: i1.GalleryService }, { type: i2.SimpleModalService }, { type: i3.Store }]; }, propDecorators: { preview: [{
|
|
72
79
|
type: Input
|
|
73
80
|
}], index: [{
|
|
74
81
|
type: Input
|
|
@@ -92,4 +99,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
|
|
|
92
99
|
}], updatePhoto: [{
|
|
93
100
|
type: Output
|
|
94
101
|
}] } });
|
|
95
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2FsbGVyeS1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cnRhLXVpL3NyYy9saWIvY29tcG9uZW50cy9nYWxsZXJ5L2NvbXBvbmVudHMvZ2FsbGVyeS1pdGVtL2dhbGxlcnktaXRlbS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJ0YS11aS9zcmMvbGliL2NvbXBvbmVudHMvZ2FsbGVyeS9jb21wb25lbnRzL2dhbGxlcnktaXRlbS9nYWxsZXJ5LWl0ZW0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUloRyxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSwwREFBMEQsQ0FBQztBQUN4RyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7Ozs7Ozs7QUFTMUQsTUFBTSxPQUFPLG9CQUFvQjtJQXNCL0IsWUFDVSxjQUE4QixFQUM5QixtQkFBdUM7UUFEdkMsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBb0I7UUF2QnpDLGNBQVMsR0FBVyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUMzQyxjQUFTLEdBQUcsS0FBSyxDQUFDO1FBS2pCLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFDbEIseUJBQW9CLEdBQUcsQ0FBQyxDQUFDO1FBR3pCLGlCQUFZLEdBQTBCLEVBQUUsQ0FBQztRQU94QyxxQkFBZ0IsR0FBeUIsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUNwRSxnQkFBVyxHQUFzQixJQUFJLFlBQVksRUFBTyxDQUFDO1FBQ3pELGdCQUFXLEdBQXNC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S0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUVrQixZQUFZO3NCQUFuQyxLQUFLO3VCQUFDLFdBQVc7Z0JBS1IsZ0JBQWdCO3NCQUF6QixNQUFNO2dCQUNHLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBHYWxsZXJ5SXRlbU1vZGVsLCBHYWxsZXJ5Um90YXRlU2xpZGVzIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2dhbGxlcnktaXRlbS5tb2RlbCc7XHJcbmltcG9ydCB7IEdhbGxlcnlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZ2FsbGVyeS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU2ltcGxlTW9kYWxTZXJ2aWNlIH0gZnJvbSAnbmd4LXNpbXBsZS1tb2RhbCc7XHJcbmltcG9ydCB7IEdhbGxlcnlDb25maXJtTW9kYWxDb21wb25lbnQgfSBmcm9tICcuLi9nYWxsZXJ5LWNvbmZpcm0tbW9kYWwvZ2FsbGVyeS1jb25maXJtLW1vZGFsLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE1yeEF1dG9zYXZlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL3NlcnZpY2VzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbXJ4LWdhbGxlcnktaXRlbScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2dhbGxlcnktaXRlbS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZ2FsbGVyeS1pdGVtLmNvbXBvbmVudC5sZXNzJ10sXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgcHJvdmlkZXJzOiBbTXJ4QXV0b3NhdmVTZXJ2aWNlXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgR2FsbGVyeUl0ZW1Db21wb25lbnQge1xyXG4gIHByaXZhdGUgdGltZVN0YW1wOiBudW1iZXIgPSAobmV3IERhdGUoKSkuZ2V0VGltZSgpO1xyXG4gIHByaXZhdGUgaXNMb2FkaW5nID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBfdGltZXIhOiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PjtcclxuXHJcbiAgQElucHV0KCkgcHJldmlldyE6IEdhbGxlcnlJdGVtTW9kZWw7XHJcbiAgQElucHV0KCkgaW5kZXghOiBudW1iZXI7XHJcbiAgQElucHV0KCkgaXNFZGl0aW5nID0gZmFsc2U7XHJcbiAgQElucHV0KCkgZGVzY3JpcHRpb25NYXhMZW5ndGggPSAwO1xyXG4gIEBJbnB1dCgpIGRlbGV0ZUVuZFBvaW50ITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHVwZGF0ZUVuZFBvaW50ITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHJvdGF0ZVNsaWRlczogR2FsbGVyeVJvdGF0ZVNsaWRlc1tdID0gW107XHJcblxyXG4gIEBJbnB1dCgnaXNMb2FkaW5nJykgc2V0IHNldElzTG9hZGluZyh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgdGhpcy5pc0xvYWRpbmcgPSB2YWx1ZTtcclxuICAgIHRoaXMudGltZVN0YW1wID0gKG5ldyBEYXRlKCkpLmdldFRpbWUoKTtcclxuICB9XHJcblxyXG4gIEBPdXRwdXQoKSBvcGVuR2FsbGVyeU1vZGFsOiBFdmVudEVtaXR0ZXI8bnVtYmVyPiA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xyXG4gIEBPdXRwdXQoKSBkZWxldGVQaG90bzogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBAT3V0cHV0KCkgdXBkYXRlUGhvdG86IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBnYWxsZXJ5U2VydmljZTogR2FsbGVyeVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9zaW1wbGVNb2RhbFNlcnZpY2U6IFNpbXBsZU1vZGFsU2VydmljZSxcclxuICApIHtcclxuICB9XHJcblxyXG4gIGdldEltYWdlVXJsKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5wcmV2aWV3LnByZXZpZXdVcmwgKyAnPycgKyB0aGlzLnRpbWVTdGFtcDtcclxuICB9XHJcblxyXG4gIGdldCB5YW5kZXhDaGVja1VybCgpIHtcclxuICAgIHJldHVybiBgaHR0cHM6Ly95YW5kZXgucnUvaW1hZ2VzL3NlYXJjaD9zb3VyY2U9Y29sbGVjdGlvbnMmcnB0PWltYWdldmlldyZ1cmw9JHt0aGlzLnByZXZpZXcudXJsfWA7XHJcbiAgfVxyXG5cclxuICBnZXQgZ29vZ2xlQ2hlY2tVcmwoKSB7XHJcbiAgICByZXR1cm4gYGh0dHBzOi8vbGVucy5nb29nbGUuY29tL3VwbG9hZGJ5dXJsP3VybD0ke3RoaXMucHJldmlldy51cmx9YDtcclxuICB9XHJcblxyXG4gIGdldCBpc0xvYWRpbmdJbWFnZSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmlzTG9hZGluZyAmJiAhIXRoaXMucm90YXRlU2xpZGVzLmZpbmQoKHMpID0+IHMucHJldmlld0ltYWdlSWQgPT09IHRoaXMucHJldmlldy5wcmV2aWV3SW1hZ2VJZCk7XHJcbiAgfVxyXG5cclxuICBvbk9wZW5HYWxsZXJ5TW9kYWwoKSB7XHJcbiAgICB0aGlzLm9wZW5HYWxsZXJ5TW9kYWwuZW1pdCh0aGlzLmluZGV4KTtcclxuICB9XHJcblxyXG4gIGRlbGV0ZUltYWdlKCkge1xyXG4gICAgdGhpcy5fc2ltcGxlTW9kYWxTZXJ2aWNlLmFkZE1vZGFsKEdhbGxlcnlDb25maXJtTW9kYWxDb21wb25lbnQsIHtcclxuICAgICAgdGl0bGU6ICfQo9CU0JDQm9CV0J3QmNCVINCU0JDQndCd0KvQpScsXHJcbiAgICAgIG1lc3NhZ2U6ICfQktGLINGD0LLQtdGA0LXQvdGLLCDRh9GC0L4g0YXQvtGC0LjRgtC1INGD0LTQsNC70LjRgtGMINGE0LDQudC7PydcclxuICAgIH0sIHt3cmFwcGVyRGVmYXVsdENsYXNzZXM6ICdtcngtbW9kYWwgZmFkZS1hbmltJ30pXHJcbiAgICAgIC5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG4gICAgICAgIGlmIChyZXMucmVzdWx0KSB7XHJcbiAgICAgICAgICB0aGlzLmdhbGxlcnlTZXJ2aWNlLmRlbGV0ZSh0aGlzLmRlbGV0ZUVuZFBvaW50LCB0aGlzLnByZXZpZXcudXVpZCkuc3Vic2NyaWJlKHJlcyA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuZGVsZXRlUGhvdG8uZW1pdChyZXMpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gIH1cclxuXHJcbiAgY2hhbmdlRGVzY3JpcHRpb24ob2JqOiBhbnkpIHtcclxuICAgIGNsZWFyVGltZW91dCh0aGlzLl90aW1lcik7XHJcblxyXG4gICAgdGhpcy5fdGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5nYWxsZXJ5U2VydmljZS51cGRhdGUodGhpcy51cGRhdGVFbmRQb2ludCwgdGhpcy5wcmV2aWV3LnV1aWQsIG9iai52YWx1ZSkuc3Vic2NyaWJlKHJlcyA9PiB7XHJcbiAgICAgICAgdGhpcy51cGRhdGVQaG90by5lbWl0KHJlcyk7XHJcbiAgICAgIH0sICgpID0+IHtcclxuXHJcbiAgICAgIH0pO1xyXG4gICAgfSwgMTUwMCk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJtcngtZ2FsbGVyeS1pdGVtXCI+XHJcbiAgPGRpdiBjbGFzcz1cIm1yeC1nYWxsZXJ5LWl0ZW1fX3ByZXZpZXdcIiAoY2xpY2spPVwib25PcGVuR2FsbGVyeU1vZGFsKClcIj5cclxuXHJcbiAgICA8aW1nIFtzcmNdPVwiZ2V0SW1hZ2VVcmwoKVwiIFthbHRdPVwicHJldmlldy5pbWFnZU5hbWUgfHwgJ2ltYWdlJ1wiICpuZ0lmPVwiIWlzTG9hZGluZ0ltYWdlOyBlbHNlIHNrZWxldG9uVGVtcGxhdGVcIj5cclxuXHJcbiAgICA8bmctdGVtcGxhdGUgI3NrZWxldG9uVGVtcGxhdGU+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXIgdy0xMDAgaC0xMDBcIj5cclxuICAgICAgICA8bXJ4LWxvYWRlciBzaXplPVwibWVkaXVtXCIgY29sb3I9XCJicmFuZFwiPjwvbXJ4LWxvYWRlcj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJtcngtZ2FsbGVyeS1pdGVtX19wcmV2aWV3LW92ZXJsYXlcIiAqbmdJZj1cIiFpc0xvYWRpbmdJbWFnZVwiPjwvZGl2PlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJtcngtZ2FsbGVyeS1pdGVtX19wcmV2aWV3LWNvbnRyb2xzXCIgKm5nSWY9XCIhaXNMb2FkaW5nSW1hZ2VcIj5cclxuICAgICAgPGEgY2xhc3M9XCJtcngtZ2FsbGVyeS1pdGVtX19wcmV2aWV3LWNvbnRyb2xzLS1pY29uXCIgW2hyZWZdPVwieWFuZGV4Q2hlY2tVcmxcIiB0YXJnZXQ9XCJfYmxhbmtcIiAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCI+XHJcbiAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzEyMzQ2XzEyMDc2KVwiPlxyXG4gICAgICAgICAgICA8cGF0aCBkPVwiTTguMDAwMzEgMTUuOTgzOEMxMi40MDk2IDE1Ljk4MzggMTUuOTg0IDEyLjQwOTMgMTUuOTg0IDguMDAwMDZDMTUuOTg0IDMuNTkwNzggMTIuNDA5NiAwLjAxNjM1NzQgOC4wMDAzMSAwLjAxNjM1NzRDMy41OTEwMyAwLjAxNjM1NzQgMC4wMTY2MDE2IDMuNTkwNzggMC4wMTY2MDE2IDguMDAwMDZDMC4wMTY2MDE2IDEyLjQwOTMgMy41OTEwMyAxNS45ODM4IDguMDAwMzEgMTUuOTgzOFpcIiBmaWxsPVwid2hpdGVcIi8+XHJcbiAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTAuODg5MyAxMy4wMTE4SDkuMTM2N1Y0LjM0MzYxSDguMzU1OTZDNi45MjQ4NCA0LjM0MzYxIDYuMTc1MjEgNS4wNTkxNiA2LjE3NTIxIDYuMTI3MzFDNi4xNzUyMSA3LjMzOTE2IDYuNjkyMjUgNy45MDA2NSA3Ljc2MTg4IDguNjE2Mkw4LjY0MzM2IDkuMjEwMjhMNi4xMTAwMyAxMy4wMTAzSDQuMjI1NTlMNi41MDU1OSA5LjYxNzY4QzUuMTk0NDcgOC42ODEzOSA0LjQ1NjcgNy43NjczMSA0LjQ1NjcgNi4yMjUwOUM0LjQ1NjcgNC4yOTc2OCA1LjgwMDQgMi45ODY1NyA4LjM0NDEgMi45ODY1N0gxMC44Nzc0VjEzLjAwODhIMTAuODg5M1YxMy4wMTE4WlwiIGZpbGw9XCIjRkMzRjFEXCIvPlxyXG4gICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzEyMzQ2XzEyMDc2XCI+XHJcbiAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgZmlsbD1cIndoaXRlXCIvPlxyXG4gICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgIDwvc3ZnPlxyXG4gICAgICA8L2E+XHJcblxyXG4gICAgICA8YSBjbGFzcz1cIm1yeC1nYWxsZXJ5LWl0ZW1fX3ByZXZpZXctY29udHJvbHMtLWljb25cIiBbaHJlZl09XCJnb29nbGVDaGVja1VybFwiIHRhcmdldD1cIl9ibGFua1wiIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIj5cclxuICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgIDxwYXRoIGQ9XCJNMTEuNTU2MSA0Ljg5MDFIMTEuMDk5N1Y0Ljg2NjU5SDUuOTk5NjdWNy4xMzMyNUg5LjIwMjE5QzguNzM0OTcgOC40NTI3MyA3LjQ3OTUyIDkuMzk5OTIgNS45OTk2NyA5LjM5OTkyQzQuMTIyMDIgOS4zOTk5MiAyLjU5OTY3IDcuODc3NTcgMi41OTk2NyA1Ljk5OTkyQzIuNTk5NjcgNC4xMjIyNyA0LjEyMjAyIDIuNTk5OTIgNS45OTk2NyAyLjU5OTkyQzYuODY2MzkgMi41OTk5MiA3LjY1NDkxIDIuOTI2ODkgOC4yNTUyOSAzLjQ2MDk3TDkuODU4MTEgMS44NTgxNUM4Ljg0NjA0IDAuOTE0OTM1IDcuNDkyMjcgMC4zMzMyNTIgNS45OTk2NyAwLjMzMzI1MkMyLjg3MDI2IDAuMzMzMjUyIDAuMzMzMDA4IDIuODcwNSAwLjMzMzAwOCA1Ljk5OTkyQzAuMzMzMDA4IDkuMTI5MzQgMi44NzAyNiAxMS42NjY2IDUuOTk5NjcgMTEuNjY2NkM5LjEyOTA5IDExLjY2NjYgMTEuNjY2MyA5LjEyOTM0IDExLjY2NjMgNS45OTk5MkMxMS42NjYzIDUuNjE5OTcgMTEuNjI3MiA1LjI0OTA5IDExLjU1NjEgNC44OTAxWlwiIGZpbGw9XCIjRkJDMDJEXCIvPlxyXG4gICAgICAgICAgPHBhdGggZD1cIk0wLjk4NzMwNSAzLjM2MjM3TDIuODQ5MDkgNC43Mjc3NUMzLjM1Mjg1IDMuNDgwNTIgNC41NzI4OSAyLjU5OTkyIDYuMDAwNiAyLjU5OTkyQzYuODY3MzIgMi41OTk5MiA3LjY1NTg0IDIuOTI2ODkgOC4yNTYyMiAzLjQ2MDk3TDkuODU5MDQgMS44NTgxNUM4Ljg0Njk3IDAuOTE0OTM1IDcuNDkzMiAwLjMzMzI1MiA2LjAwMDYgMC4zMzMyNTJDMy44MjQwNCAwLjMzMzI1MiAxLjkzNjQ3IDEuNTYyMDcgMC45ODczMDUgMy4zNjIzN1pcIiBmaWxsPVwiI0U1MzkzNVwiLz5cclxuICAgICAgICAgIDxwYXRoIGQ9XCJNNi4wMDA4IDExLjY2NjVDNy40NjQ1IDExLjY2NjUgOC43OTQ0NyAxMS4xMDYzIDkuODAwMDIgMTAuMTk1NEw4LjA0NjE5IDguNzExM0M3LjQ3NzI1IDkuMTQyMjUgNi43NzAwNSA5LjM5OTggNi4wMDA4IDkuMzk5OEM0LjUyNjkgOS4zOTk4IDMuMjc1NDIgOC40NTk5OSAyLjgwMzk1IDcuMTQ4NDRMMC45NTYwNTUgOC41NzIxOUMxLjg5Mzg5IDEwLjQwNzMgMy43OTg0NSAxMS42NjY1IDYuMDAwOCAxMS42NjY1WlwiIGZpbGw9XCIjNENBRjUwXCIvPlxyXG4gICAgICAgICAgPHBhdGggZD1cIk0xMS41NTY0IDQuODg5OTdMMTEuNTUxOSA0Ljg2NjQ2SDExLjFINlY3LjEzMzEySDkuMjAyNTJDOC45NzgxMiA3Ljc2Njk0IDguNTcwNCA4LjMxMzQ5IDguMDQ0NTMgOC43MTE1N0M4LjA0NDgyIDguNzExMjkgOC4wNDUxIDguNzExMjkgOC4wNDUzOCA4LjcxMTAxTDkuNzk5MjIgMTAuMTk1MUM5LjY3NTEyIDEwLjMwNzkgMTEuNjY2NyA4LjgzMzEyIDExLjY2NjcgNS45OTk3OUMxMS42NjY3IDUuNjE5ODQgMTEuNjI3NiA1LjI0ODk2IDExLjU1NjQgNC44ODk5N1pcIiBmaWxsPVwiIzE1NjVDMFwiLz5cclxuICAgICAgICA8L3N2Zz5cclxuICAgICAgPC9hPlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cIm1yeC1nYWxsZXJ5LWl0ZW1fX3ByZXZpZXctY29udHJvbHNfX2J1dHRvbiBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXJcIiAqbmdJZj1cImlzRWRpdGluZ1wiIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cIm1yeC1pY29uIGljb24tZGVsZXRlIGljb24tZm9udC0xNiB0ZXh0LWJvbGRcIiAoY2xpY2spPVwiZGVsZXRlSW1hZ2UoKVwiPjwvc3Bhbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwibXJ4LWdhbGxlcnktaXRlbV9fZGVzY3JpcHRpb25cIj5cclxuICAgIDxtcngtaW5wdXQtdGV4dGFyZWFcclxuICAgICAgKm5nSWY9XCJpc0VkaXRpbmc7IGVsc2UgdGV4dFRlbXBsYXRlXCJcclxuICAgICAgW25nTW9kZWxdPVwicHJldmlldy5kZXNjcmlwdGlvblwiXHJcbiAgICAgIFthdXRvc2l6ZV09XCJmYWxzZVwiXHJcbiAgICAgIFtyb3dzXT1cIjJcIlxyXG4gICAgICBbbWF4bGVuZ3RoXT1cImRlc2NyaXB0aW9uTWF4TGVuZ3RoXCJcclxuICAgICAgKG1vZGVsQ2hhbmdlKT1cImNoYW5nZURlc2NyaXB0aW9uKCRldmVudClcIlxyXG4gICAgPjwvbXJ4LWlucHV0LXRleHRhcmVhPlxyXG5cclxuICAgIDxuZy10ZW1wbGF0ZSAjdGV4dFRlbXBsYXRlPlxyXG4gICAgICB7eyBwcmV2aWV3LmRlc2NyaXB0aW9uIH19XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
|
|
102
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2FsbGVyeS1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cnRhLXVpL3NyYy9saWIvY29tcG9uZW50cy9nYWxsZXJ5L2NvbXBvbmVudHMvZ2FsbGVyeS1pdGVtL2dhbGxlcnktaXRlbS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJ0YS11aS9zcmMvbGliL2NvbXBvbmVudHMvZ2FsbGVyeS9jb21wb25lbnRzL2dhbGxlcnktaXRlbS9nYWxsZXJ5LWl0ZW0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUloRyxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSwwREFBMEQsQ0FBQztBQUN4RyxPQUFPLEVBQ0wsYUFBYSxFQUFpQixnQkFBZ0IsRUFDL0IsZ0JBQWdCLEVBQ0Esa0JBQWtCLEVBRWpELGtCQUFrQixFQUNsQixZQUFZLEVBQ2IsTUFBTSxzQkFBc0IsQ0FBQzs7Ozs7Ozs7O0FBVzlCLE1BQU0sT0FBTyxvQkFBb0I7SUF3Qi9CLFlBQ1UsY0FBOEIsRUFDOUIsbUJBQXVDLEVBQ3ZDLE1BQWE7UUFGYixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFvQjtRQUN2QyxXQUFNLEdBQU4sTUFBTSxDQUFPO1FBMUJmLGNBQVMsR0FBVyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUMzQyxjQUFTLEdBQUcsS0FBSyxDQUFDO1FBR25CLFlBQU8sR0FBd0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUE7UUFJN0QsY0FBUyxHQUFHLEtB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LENBQUMsUUFBUSxDQUFDLGtCQUFrQixDQUFDLEVBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLENBQUE7WUFDeEQsQ0FBQyxFQUFFLEdBQUcsRUFBRTtnQkFDTixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxDQUFBO1lBQ3RELENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ1gsQ0FBQzs7aUhBL0VVLG9CQUFvQjtxR0FBcEIsb0JBQW9CLDJaQUZwQixDQUFDLGtCQUFrQixDQUFDLDBCQ3JCakMsaXpJQTBEQTsyRkRuQ2Esb0JBQW9CO2tCQVBoQyxTQUFTOytCQUNFLGtCQUFrQixtQkFHWCx1QkFBdUIsQ0FBQyxNQUFNLGFBQ3BDLENBQUMsa0JBQWtCLENBQUM7MEpBU3RCLE9BQU87c0JBQWYsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBRWtCLFlBQVk7c0JBQW5DLEtBQUs7dUJBQUMsV0FBVztnQkFLUixnQkFBZ0I7c0JBQXpCLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEdhbGxlcnlJdGVtTW9kZWwsIEdhbGxlcnlSb3RhdGVTbGlkZXMgfSBmcm9tICcuLi8uLi9tb2RlbHMvZ2FsbGVyeS1pdGVtLm1vZGVsJztcclxuaW1wb3J0IHsgR2FsbGVyeVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9nYWxsZXJ5LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTaW1wbGVNb2RhbFNlcnZpY2UgfSBmcm9tICduZ3gtc2ltcGxlLW1vZGFsJztcclxuaW1wb3J0IHsgR2FsbGVyeUNvbmZpcm1Nb2RhbENvbXBvbmVudCB9IGZyb20gJy4uL2dhbGxlcnktY29uZmlybS1tb2RhbC9nYWxsZXJ5LWNvbmZpcm0tbW9kYWwuY29tcG9uZW50JztcclxuaW1wb3J0IHtcclxuICBhdXRvc2F2ZUFkZElkLCBhdXRvc2F2ZUVycm9yLCBhdXRvc2F2ZUVycm9yRm9yLFxyXG4gIGF1dG9zYXZlU3RhcnQsIGF1dG9zYXZlU3RhcnRGb3IsXHJcbiAgYXV0b3NhdmVTdG9wLCBhdXRvc2F2ZVN1Y2Nlc3MsIGF1dG9zYXZlU3VjY2Vzc0ZvcixcclxuICBGaWVsZCxcclxuICBNcnhBdXRvc2F2ZVNlcnZpY2UsXHJcbiAgc2VsZWN0RmllbGRzXHJcbn0gZnJvbSAnLi4vLi4vLi4vLi4vc2VydmljZXMnO1xyXG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gXCJAbmdyeC9zdG9yZVwiO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSBcInJ4anNcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbXJ4LWdhbGxlcnktaXRlbScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2dhbGxlcnktaXRlbS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZ2FsbGVyeS1pdGVtLmNvbXBvbmVudC5sZXNzJ10sXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgcHJvdmlkZXJzOiBbTXJ4QXV0b3NhdmVTZXJ2aWNlXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgR2FsbGVyeUl0ZW1Db21wb25lbnQge1xyXG4gIHByaXZhdGUgdGltZVN0YW1wOiBudW1iZXIgPSAobmV3IERhdGUoKSkuZ2V0VGltZSgpO1xyXG4gIHByaXZhdGUgaXNMb2FkaW5nID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBfdGltZXIhOiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PjtcclxuXHJcbiAgcHVibGljIGZpZWxkcyQ6IE9ic2VydmFibGU8RmllbGRbXT4gPSB0aGlzLl9zdG9yZS5zZWxlY3Qoc2VsZWN0RmllbGRzKVxyXG5cclxuICBASW5wdXQoKSBwcmV2aWV3ITogR2FsbGVyeUl0ZW1Nb2RlbDtcclxuICBASW5wdXQoKSBpbmRleCE6IG51bWJlcjtcclxuICBASW5wdXQoKSBpc0VkaXRpbmcgPSBmYWxzZTtcclxuICBASW5wdXQoKSBkZXNjcmlwdGlvbk1heExlbmd0aCA9IDA7XHJcbiAgQElucHV0KCkgZGVsZXRlRW5kUG9pbnQhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgdXBkYXRlRW5kUG9pbnQhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgcm90YXRlU2xpZGVzOiBHYWxsZXJ5Um90YXRlU2xpZGVzW10gPSBbXTtcclxuXHJcbiAgQElucHV0KCdpc0xvYWRpbmcnKSBzZXQgc2V0SXNMb2FkaW5nKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLmlzTG9hZGluZyA9IHZhbHVlO1xyXG4gICAgdGhpcy50aW1lU3RhbXAgPSAobmV3IERhdGUoKSkuZ2V0VGltZSgpO1xyXG4gIH1cclxuXHJcbiAgQE91dHB1dCgpIG9wZW5HYWxsZXJ5TW9kYWw6IEV2ZW50RW1pdHRlcjxudW1iZXI+ID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XHJcbiAgQE91dHB1dCgpIGRlbGV0ZVBob3RvOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIEBPdXRwdXQoKSB1cGRhdGVQaG90bzogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGdhbGxlcnlTZXJ2aWNlOiBHYWxsZXJ5U2VydmljZSxcclxuICAgIHByaXZhdGUgX3NpbXBsZU1vZGFsU2VydmljZTogU2ltcGxlTW9kYWxTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfc3RvcmU6IFN0b3JlXHJcbiAgKSB7XHJcbiAgfVxyXG5cclxuICBnZXRJbWFnZVVybCgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMucHJldmlldy5wcmV2aWV3VXJsICsgJz8nICsgdGhpcy50aW1lU3RhbXA7XHJcbiAgfVxyXG5cclxuICBnZXQgeWFuZGV4Q2hlY2tVcmwoKSB7XHJcbiAgICByZXR1cm4gYGh0dHBzOi8veWFuZGV4LnJ1L2ltYWdlcy9zZWFyY2g/c291cmNlPWNvbGxlY3Rpb25zJnJwdD1pbWFnZXZpZXcmdXJsPSR7dGhpcy5wcmV2aWV3LnVybH1gO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGdvb2dsZUNoZWNrVXJsKCkge1xyXG4gICAgcmV0dXJuIGBodHRwczovL2xlbnMuZ29vZ2xlLmNvbS91cGxvYWRieXVybD91cmw9JHt0aGlzLnByZXZpZXcudXJsfWA7XHJcbiAgfVxyXG5cclxuICBnZXQgaXNMb2FkaW5nSW1hZ2UoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5pc0xvYWRpbmcgJiYgISF0aGlzLnJvdGF0ZVNsaWRlcy5maW5kKChzKSA9PiBzLnByZXZpZXdJbWFnZUlkID09PSB0aGlzLnByZXZpZXcucHJldmlld0ltYWdlSWQpO1xyXG4gIH1cclxuXHJcbiAgb25PcGVuR2FsbGVyeU1vZGFsKCkge1xyXG4gICAgdGhpcy5vcGVuR2FsbGVyeU1vZGFsLmVtaXQodGhpcy5pbmRleCk7XHJcbiAgfVxyXG5cclxuICBkZWxldGVJbWFnZSgpIHtcclxuICAgIHRoaXMuX3NpbXBsZU1vZGFsU2VydmljZS5hZGRNb2RhbChHYWxsZXJ5Q29uZmlybU1vZGFsQ29tcG9uZW50LCB7XHJcbiAgICAgIHRpdGxlOiAn0KPQlNCQ0JvQldCd0JjQlSDQlNCQ0J3QndCr0KUnLFxyXG4gICAgICBtZXNzYWdlOiAn0JLRiyDRg9Cy0LXRgNC10L3Riywg0YfRgtC+INGF0L7RgtC40YLQtSDRg9C00LDQu9C40YLRjCDRhNCw0LnQuz8nXHJcbiAgICB9LCB7d3JhcHBlckRlZmF1bHRDbGFzc2VzOiAnbXJ4LW1vZGFsIGZhZGUtYW5pbSd9KVxyXG4gICAgICAuc3Vic2NyaWJlKChyZXMpID0+IHtcclxuICAgICAgICBpZiAocmVzLnJlc3VsdCkge1xyXG4gICAgICAgICAgdGhpcy5nYWxsZXJ5U2VydmljZS5kZWxldGUodGhpcy5kZWxldGVFbmRQb2ludCwgdGhpcy5wcmV2aWV3LnV1aWQpLnN1YnNjcmliZShyZXMgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmRlbGV0ZVBob3RvLmVtaXQocmVzKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICB9XHJcblxyXG4gIGNoYW5nZURlc2NyaXB0aW9uKG9iajogYW55KSB7XHJcbiAgICBjbGVhclRpbWVvdXQodGhpcy5fdGltZXIpO1xyXG5cclxuICAgIHRoaXMuX3N0b3JlLmRpc3BhdGNoKGF1dG9zYXZlQWRkSWQoe2lkOiBvYmouaWR9KSlcclxuICAgIHRoaXMuX3N0b3JlLmRpc3BhdGNoKGF1dG9zYXZlU3RhcnRGb3Ioe2lkOiBvYmouaWR9KSlcclxuXHJcbiAgICB0aGlzLl90aW1lciA9IHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLmdhbGxlcnlTZXJ2aWNlLnVwZGF0ZSh0aGlzLnVwZGF0ZUVuZFBvaW50LCB0aGlzLnByZXZpZXcudXVpZCwgb2JqLnZhbHVlKS5zdWJzY3JpYmUocmVzID0+IHtcclxuICAgICAgICB0aGlzLnVwZGF0ZVBob3RvLmVtaXQocmVzKTtcclxuICAgICAgICB0aGlzLl9zdG9yZS5kaXNwYXRjaChhdXRvc2F2ZVN1Y2Nlc3NGb3Ioe2lkOiBvYmouaWR9KSlcclxuICAgICAgfSwgKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuX3N0b3JlLmRpc3BhdGNoKGF1dG9zYXZlRXJyb3JGb3Ioe2lkOiBvYmouaWR9KSlcclxuICAgICAgfSk7XHJcbiAgICB9LCAxNTAwKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cIm1yeC1nYWxsZXJ5LWl0ZW1cIj5cclxuICA8ZGl2IGNsYXNzPVwibXJ4LWdhbGxlcnktaXRlbV9fcHJldmlld1wiIChjbGljayk9XCJvbk9wZW5HYWxsZXJ5TW9kYWwoKVwiPlxyXG5cclxuICAgIDxpbWcgW3NyY109XCJnZXRJbWFnZVVybCgpXCIgW2FsdF09XCJwcmV2aWV3LmltYWdlTmFtZSB8fCAnaW1hZ2UnXCIgKm5nSWY9XCIhaXNMb2FkaW5nSW1hZ2U7IGVsc2Ugc2tlbGV0b25UZW1wbGF0ZVwiPlxyXG5cclxuICAgIDxuZy10ZW1wbGF0ZSAjc2tlbGV0b25UZW1wbGF0ZT5cclxuICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciB3LTEwMCBoLTEwMFwiPlxyXG4gICAgICAgIDxtcngtbG9hZGVyIHNpemU9XCJtZWRpdW1cIiBjb2xvcj1cImJyYW5kXCI+PC9tcngtbG9hZGVyPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cIm1yeC1nYWxsZXJ5LWl0ZW1fX3ByZXZpZXctb3ZlcmxheVwiICpuZ0lmPVwiIWlzTG9hZGluZ0ltYWdlXCI+PC9kaXY+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cIm1yeC1nYWxsZXJ5LWl0ZW1fX3ByZXZpZXctY29udHJvbHNcIiAqbmdJZj1cIiFpc0xvYWRpbmdJbWFnZVwiPlxyXG4gICAgICA8YSBjbGFzcz1cIm1yeC1nYWxsZXJ5LWl0ZW1fX3ByZXZpZXctY29udHJvbHMtLWljb25cIiBbaHJlZl09XCJ5YW5kZXhDaGVja1VybFwiIHRhcmdldD1cIl9ibGFua1wiIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIj5cclxuICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMTIzNDZfMTIwNzYpXCI+XHJcbiAgICAgICAgICAgIDxwYXRoIGQ9XCJNOC4wMDAzMSAxNS45ODM4QzEyLjQwOTYgMTUuOTgzOCAxNS45ODQgMTIuNDA5MyAxNS45ODQgOC4wMDAwNkMxNS45ODQgMy41OTA3OCAxMi40MDk2IDAuMDE2MzU3NCA4LjAwMDMxIDAuMDE2MzU3NEMzLjU5MTAzIDAuMDE2MzU3NCAwLjAxNjYwMTYgMy41OTA3OCAwLjAxNjYwMTYgOC4wMDAwNkMwLjAxNjYwMTYgMTIuNDA5MyAzLjU5MTAzIDE1Ljk4MzggOC4wMDAzMSAxNS45ODM4WlwiIGZpbGw9XCJ3aGl0ZVwiLz5cclxuICAgICAgICAgICAgPHBhdGggZD1cIk0xMC44ODkzIDEzLjAxMThIOS4xMzY3VjQuMzQzNjFIOC4zNTU5NkM2LjkyNDg0IDQuMzQzNjEgNi4xNzUyMSA1LjA1OTE2IDYuMTc1MjEgNi4xMjczMUM2LjE3NTIxIDcuMzM5MTYgNi42OTIyNSA3LjkwMDY1IDcuNzYxODggOC42MTYyTDguNjQzMzYgOS4yMTAyOEw2LjExMDAzIDEzLjAxMDNINC4yMjU1OUw2LjUwNTU5IDkuNjE3NjhDNS4xOTQ0NyA4LjY4MTM5IDQuNDU2NyA3Ljc2NzMxIDQuNDU2NyA2LjIyNTA5QzQuNDU2NyA0LjI5NzY4IDUuODAwNCAyLjk4NjU3IDguMzQ0MSAyLjk4NjU3SDEwLjg3NzRWMTMuMDA4OEgxMC44ODkzVjEzLjAxMThaXCIgZmlsbD1cIiNGQzNGMURcIi8+XHJcbiAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMTIzNDZfMTIwNzZcIj5cclxuICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiBmaWxsPVwid2hpdGVcIi8+XHJcbiAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgPC9zdmc+XHJcbiAgICAgIDwvYT5cclxuXHJcbiAgICAgIDxhIGNsYXNzPVwibXJ4LWdhbGxlcnktaXRlbV9fcHJldmlldy1jb250cm9scy0taWNvblwiIFtocmVmXT1cImdvb2dsZUNoZWNrVXJsXCIgdGFyZ2V0PVwiX2JsYW5rXCIgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiPlxyXG4gICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIHZpZXdCb3g9XCIwIDAgMTIgMTJcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgPHBhdGggZD1cIk0xMS41NTYxIDQuODkwMUgxMS4wOTk3VjQuODY2NTlINS45OTk2N1Y3LjEzMzI1SDkuMjAyMTlDOC43MzQ5NyA4LjQ1MjczIDcuNDc5NTIgOS4zOTk5MiA1Ljk5OTY3IDkuMzk5OTJDNC4xMjIwMiA5LjM5OTkyIDIuNTk5NjcgNy44Nzc1NyAyLjU5OTY3IDUuOTk5OTJDMi41OTk2NyA0LjEyMjI3IDQuMTIyMDIgMi41OTk5MiA1Ljk5OTY3IDIuNTk5OTJDNi44NjYzOSAyLjU5OTkyIDcuNjU0OTEgMi45MjY4OSA4LjI1NTI5IDMuNDYwOTdMOS44NTgxMSAxLjg1ODE1QzguODQ2MDQgMC45MTQ5MzUgNy40OTIyNyAwLjMzMzI1MiA1Ljk5OTY3IDAuMzMzMjUyQzIuODcwMjYgMC4zMzMyNTIgMC4zMzMwMDggMi44NzA1IDAuMzMzMDA4IDUuOTk5OTJDMC4zMzMwMDggOS4xMjkzNCAyLjg3MDI2IDExLjY2NjYgNS45OTk2NyAxMS42NjY2QzkuMTI5MDkgMTEuNjY2NiAxMS42NjYzIDkuMTI5MzQgMTEuNjY2MyA1Ljk5OTkyQzExLjY2NjMgNS42MTk5NyAxMS42MjcyIDUuMjQ5MDkgMTEuNTU2MSA0Ljg5MDFaXCIgZmlsbD1cIiNGQkMwMkRcIi8+XHJcbiAgICAgICAgICA8cGF0aCBkPVwiTTAuOTg3MzA1IDMuMzYyMzdMMi44NDkwOSA0LjcyNzc1QzMuMzUyODUgMy40ODA1MiA0LjU3Mjg5IDIuNTk5OTIgNi4wMDA2IDIuNTk5OTJDNi44NjczMiAyLjU5OTkyIDcuNjU1ODQgMi45MjY4OSA4LjI1NjIyIDMuNDYwOTdMOS44NTkwNCAxLjg1ODE1QzguODQ2OTcgMC45MTQ5MzUgNy40OTMyIDAuMzMzMjUyIDYuMDAwNiAwLjMzMzI1MkMzLjgyNDA0IDAuMzMzMjUyIDEuOTM2NDcgMS41NjIwNyAwLjk4NzMwNSAzLjM2MjM3WlwiIGZpbGw9XCIjRTUzOTM1XCIvPlxyXG4gICAgICAgICAgPHBhdGggZD1cIk02LjAwMDggMTEuNjY2NUM3LjQ2NDUgMTEuNjY2NSA4Ljc5NDQ3IDExLjEwNjMgOS44MDAwMiAxMC4xOTU0TDguMDQ2MTkgOC43MTEzQzcuNDc3MjUgOS4xNDIyNSA2Ljc3MDA1IDkuMzk5OCA2LjAwMDggOS4zOTk4QzQuNTI2OSA5LjM5OTggMy4yNzU0MiA4LjQ1OTk5IDIuODAzOTUgNy4xNDg0NEwwLjk1NjA1NSA4LjU3MjE5QzEuODkzODkgMTAuNDA3MyAzLjc5ODQ1IDExLjY2NjUgNi4wMDA4IDExLjY2NjVaXCIgZmlsbD1cIiM0Q0FGNTBcIi8+XHJcbiAgICAgICAgICA8cGF0aCBkPVwiTTExLjU1NjQgNC44ODk5N0wxMS41NTE5IDQuODY2NDZIMTEuMUg2VjcuMTMzMTJIOS4yMDI1MkM4Ljk3ODEyIDcuNzY2OTQgOC41NzA0IDguMzEzNDkgOC4wNDQ1MyA4LjcxMTU3QzguMDQ0ODIgOC43MTEyOSA4LjA0NTEgOC43MTEyOSA4LjA0NTM4IDguNzExMDFMOS43OTkyMiAxMC4xOTUxQzkuNjc1MTIgMTAuMzA3OSAxMS42NjY3IDguODMzMTIgMTEuNjY2NyA1Ljk5OTc5QzExLjY2NjcgNS42MTk4NCAxMS42Mjc2IDUuMjQ4OTYgMTEuNTU2NCA0Ljg4OTk3WlwiIGZpbGw9XCIjMTU2NUMwXCIvPlxyXG4gICAgICAgIDwvc3ZnPlxyXG4gICAgICA8L2E+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwibXJ4LWdhbGxlcnktaXRlbV9fcHJldmlldy1jb250cm9sc19fYnV0dG9uIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlclwiICpuZ0lmPVwiaXNFZGl0aW5nXCIgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwibXJ4LWljb24gaWNvbi1kZWxldGUgaWNvbi1mb250LTE2IHRleHQtYm9sZFwiIChjbGljayk9XCJkZWxldGVJbWFnZSgpXCI+PC9zcGFuPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJtcngtZ2FsbGVyeS1pdGVtX19kZXNjcmlwdGlvblwiPlxyXG4gICAgPG1yeC1pbnB1dC10ZXh0YXJlYVxyXG4gICAgICAqbmdJZj1cImlzRWRpdGluZzsgZWxzZSB0ZXh0VGVtcGxhdGVcIlxyXG4gICAgICBbZmllbGRzXT1cIihmaWVsZHMkIHwgYXN5bmMpIVwiXHJcbiAgICAgIFtuZ01vZGVsXT1cInByZXZpZXcuZGVzY3JpcHRpb25cIlxyXG4gICAgICBbYXV0b3NpemVdPVwiZmFsc2VcIlxyXG4gICAgICBbcm93c109XCIyXCJcclxuICAgICAgW21heGxlbmd0aF09XCJkZXNjcmlwdGlvbk1heExlbmd0aFwiXHJcbiAgICAgIChtb2RlbENoYW5nZSk9XCJjaGFuZ2VEZXNjcmlwdGlvbigkZXZlbnQpXCJcclxuICAgID48L21yeC1pbnB1dC10ZXh0YXJlYT5cclxuXHJcbiAgICA8bmctdGVtcGxhdGUgI3RleHRUZW1wbGF0ZT5cclxuICAgICAge3sgcHJldmlldy5kZXNjcmlwdGlvbiB9fVxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
|
|
@@ -8,6 +8,7 @@ import { InputTextareaModule } from '../form/input-textarea/input-textarea.modul
|
|
|
8
8
|
import { LoaderModule } from '../loader/loader.module';
|
|
9
9
|
import { ModalModule } from '../modal/modal.module';
|
|
10
10
|
import { GalleryConfirmModalComponent } from './components/gallery-confirm-modal/gallery-confirm-modal.component';
|
|
11
|
+
import { SaveStoreModule } from "../../services";
|
|
11
12
|
import * as i0 from "@angular/core";
|
|
12
13
|
export class GalleryModule {
|
|
13
14
|
}
|
|
@@ -19,14 +20,16 @@ GalleryModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version:
|
|
|
19
20
|
ButtonModule,
|
|
20
21
|
InputTextareaModule,
|
|
21
22
|
LoaderModule,
|
|
22
|
-
ModalModule
|
|
23
|
+
ModalModule,
|
|
24
|
+
SaveStoreModule], exports: [GalleryComponent] });
|
|
23
25
|
GalleryModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: GalleryModule, imports: [[
|
|
24
26
|
CommonModule,
|
|
25
27
|
FormsModule,
|
|
26
28
|
ButtonModule,
|
|
27
29
|
InputTextareaModule,
|
|
28
30
|
LoaderModule,
|
|
29
|
-
ModalModule
|
|
31
|
+
ModalModule,
|
|
32
|
+
SaveStoreModule
|
|
30
33
|
]] });
|
|
31
34
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: GalleryModule, decorators: [{
|
|
32
35
|
type: NgModule,
|
|
@@ -42,11 +45,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
|
|
|
42
45
|
ButtonModule,
|
|
43
46
|
InputTextareaModule,
|
|
44
47
|
LoaderModule,
|
|
45
|
-
ModalModule
|
|
48
|
+
ModalModule,
|
|
49
|
+
SaveStoreModule
|
|
46
50
|
],
|
|
47
51
|
exports: [
|
|
48
52
|
GalleryComponent
|
|
49
53
|
]
|
|
50
54
|
}]
|
|
51
55
|
}] });
|
|
52
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
56
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2FsbGVyeS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJ0YS11aS9zcmMvbGliL2NvbXBvbmVudHMvZ2FsbGVyeS9nYWxsZXJ5Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFDeEYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQ25GLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDcEQsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sb0VBQW9FLENBQUM7QUFDbEgsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQXFCakQsTUFBTSxPQUFPLGFBQWE7OzBHQUFiLGFBQWE7MkdBQWIsYUFBYSxpQkFqQnRCLGdCQUFnQjtRQUNoQixvQkFBb0I7UUFDcEIsNEJBQTRCLGFBRzVCLFlBQVk7UUFDWixXQUFXO1FBQ1gsWUFBWTtRQUNaLG1CQUFtQjtRQUNuQixZQUFZO1FBQ1osV0FBVztRQUNYLGVBQWUsYUFHZixnQkFBZ0I7MkdBR1AsYUFBYSxZQWJmO1lBQ1AsWUFBWTtZQUNaLFdBQVc7WUFDWCxZQUFZO1lBQ1osbUJBQW1CO1lBQ25CLFlBQVk7WUFDWixXQUFXO1lBQ1gsZUFBZTtTQUNoQjsyRkFLVSxhQUFhO2tCQW5CekIsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUU7d0JBQ1osZ0JBQWdCO3dCQUNoQixvQkFBb0I7d0JBQ3BCLDRCQUE0QjtxQkFDN0I7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osV0FBVzt3QkFDWCxZQUFZO3dCQUNaLG1CQUFtQjt3QkFDbkIsWUFBWTt3QkFDWixXQUFXO3dCQUNYLGVBQWU7cUJBQ2hCO29CQUNELE9BQU8sRUFBRTt3QkFDUCxnQkFBZ0I7cUJBQ2pCO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEdhbGxlcnlDb21wb25lbnQgfSBmcm9tICcuL2dhbGxlcnkuY29tcG9uZW50JztcclxuaW1wb3J0IHsgR2FsbGVyeUl0ZW1Db21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvZ2FsbGVyeS1pdGVtL2dhbGxlcnktaXRlbS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBCdXR0b25Nb2R1bGUgfSBmcm9tICcuLi9idXR0b24vYnV0dG9uLm1vZHVsZSc7XHJcbmltcG9ydCB7IElucHV0VGV4dGFyZWFNb2R1bGUgfSBmcm9tICcuLi9mb3JtL2lucHV0LXRleHRhcmVhL2lucHV0LXRleHRhcmVhLm1vZHVsZSc7XHJcbmltcG9ydCB7IExvYWRlck1vZHVsZSB9IGZyb20gJy4uL2xvYWRlci9sb2FkZXIubW9kdWxlJztcclxuaW1wb3J0IHsgTW9kYWxNb2R1bGUgfSBmcm9tICcuLi9tb2RhbC9tb2RhbC5tb2R1bGUnO1xyXG5pbXBvcnQgeyBHYWxsZXJ5Q29uZmlybU1vZGFsQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2dhbGxlcnktY29uZmlybS1tb2RhbC9nYWxsZXJ5LWNvbmZpcm0tbW9kYWwuY29tcG9uZW50JztcclxuaW1wb3J0IHsgU2F2ZVN0b3JlTW9kdWxlIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzXCI7XHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gIGRlY2xhcmF0aW9uczogW1xyXG4gICAgR2FsbGVyeUNvbXBvbmVudCxcclxuICAgIEdhbGxlcnlJdGVtQ29tcG9uZW50LFxyXG4gICAgR2FsbGVyeUNvbmZpcm1Nb2RhbENvbXBvbmVudFxyXG4gIF0sXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgRm9ybXNNb2R1bGUsXHJcbiAgICBCdXR0b25Nb2R1bGUsXHJcbiAgICBJbnB1dFRleHRhcmVhTW9kdWxlLFxyXG4gICAgTG9hZGVyTW9kdWxlLFxyXG4gICAgTW9kYWxNb2R1bGUsXHJcbiAgICBTYXZlU3RvcmVNb2R1bGVcclxuICBdLFxyXG4gIGV4cG9ydHM6IFtcclxuICAgIEdhbGxlcnlDb21wb25lbnRcclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBHYWxsZXJ5TW9kdWxlIHsgfVxyXG4iXX0=
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import { Injectable } from '@angular/core';
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
3
|
import * as i1 from "@angular/common/http";
|
|
4
|
+
import * as i2 from "@ngrx/store";
|
|
4
5
|
export class GalleryService {
|
|
5
|
-
constructor(http) {
|
|
6
|
+
constructor(http, _store) {
|
|
6
7
|
this.http = http;
|
|
8
|
+
this._store = _store;
|
|
7
9
|
}
|
|
8
10
|
rotate(rotatePhotos, url) {
|
|
9
11
|
return this.http.post(`${url}`, rotatePhotos);
|
|
@@ -18,12 +20,12 @@ export class GalleryService {
|
|
|
18
20
|
});
|
|
19
21
|
}
|
|
20
22
|
}
|
|
21
|
-
GalleryService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: GalleryService, deps: [{ token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
23
|
+
GalleryService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: GalleryService, deps: [{ token: i1.HttpClient }, { token: i2.Store }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
22
24
|
GalleryService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: GalleryService, providedIn: 'root' });
|
|
23
25
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: GalleryService, decorators: [{
|
|
24
26
|
type: Injectable,
|
|
25
27
|
args: [{
|
|
26
28
|
providedIn: 'root'
|
|
27
29
|
}]
|
|
28
|
-
}], ctorParameters: function () { return [{ type: i1.HttpClient }]; } });
|
|
29
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
30
|
+
}], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.Store }]; } });
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2FsbGVyeS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlydGEtdWkvc3JjL2xpYi9jb21wb25lbnRzL2dhbGxlcnkvc2VydmljZXMvZ2FsbGVyeS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7QUFVM0MsTUFBTSxPQUFPLGNBQWM7SUFFekIsWUFDVSxJQUFnQixFQUNoQixNQUFhO1FBRGIsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNoQixXQUFNLEdBQU4sTUFBTSxDQUFPO0lBRXZCLENBQUM7SUFFRCxNQUFNLENBQUMsWUFBbUIsRUFBRSxHQUFXO1FBQ3JDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQU0sR0FBRyxHQUFHLEVBQUUsRUFBRSxZQUFZLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQsTUFBTSxDQUFDLEdBQVcsRUFBRSxJQUFZO1FBQzlCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQU0sR0FBRyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRUQsTUFBTSxDQUFDLEdBQVcsRUFBRSxJQUFZLEVBQUUsUUFBZ0I7UUFDaEQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBTSxHQUFHLEdBQUcsRUFBRSxFQUFFO1lBQ2xDLElBQUksRUFBRSxJQUFJO1lBQ1YsV0FBVyxFQUFFLFFBQVE7U0FDdEIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7MkdBckJVLGNBQWM7K0dBQWQsY0FBYyxjQUZiLE1BQU07MkZBRVAsY0FBYztrQkFIMUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgU3RvcmUgfSBmcm9tIFwiQG5ncngvc3RvcmVcIjtcclxuXHJcbmRlY2xhcmUgbGV0ICQ6IGFueTtcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEdhbGxlcnlTZXJ2aWNlIHtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXHJcbiAgICBwcml2YXRlIF9zdG9yZTogU3RvcmVcclxuICApIHtcclxuICB9XHJcblxyXG4gIHJvdGF0ZShyb3RhdGVQaG90b3M6IGFueVtdLCB1cmw6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8YW55PihgJHt1cmx9YCwgcm90YXRlUGhvdG9zKTtcclxuICB9XHJcblxyXG4gIGRlbGV0ZSh1cmw6IHN0cmluZywgdXVpZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZGVsZXRlPGFueT4oYCR7dXJsfS8ke3V1aWR9YCk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGUodXJsOiBzdHJpbmcsIHV1aWQ6IHN0cmluZywgbmV3VmFsdWU6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dDxhbnk+KGAke3VybH1gLCB7XHJcbiAgICAgIHV1aWQ6IHV1aWQsXHJcbiAgICAgIGRlc2NyaXB0aW9uOiBuZXdWYWx1ZVxyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|