myrta-ui 17.0.69 → 17.0.71

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.
@@ -30,14 +30,6 @@ export class FileImageEditModalComponent extends ModalServiceComponent {
30
30
  this.aspectRatio = data.aspectRatio;
31
31
  this.maintainAspectRatio = data.maintainAspectRatio;
32
32
  }
33
- async ok() {
34
- this.result = {
35
- result: true,
36
- fileImage: convertBase64ToFile(this.croppedImage, this.fileImage.name, this.fileImage.type),
37
- fileUrl: this.croppedImage
38
- };
39
- this.close();
40
- }
41
33
  rotateLeft() {
42
34
  this.canvasRotation--;
43
35
  this.flipAfterRotate();
@@ -72,18 +64,29 @@ export class FileImageEditModalComponent extends ModalServiceComponent {
72
64
  loadImageFailed() {
73
65
  // show message
74
66
  }
75
- close() {
67
+ async ok() {
68
+ this.result = {
69
+ result: true,
70
+ fileImage: convertBase64ToFile(this.croppedImage, this.fileImage.name, this.fileImage.type),
71
+ fileUrl: this.croppedImage
72
+ };
73
+ this.close();
74
+ }
75
+ cancel() {
76
76
  this.result = { result: false };
77
+ this.close();
78
+ }
79
+ close() {
77
80
  this.dialogRef.close(this.result);
78
81
  }
79
82
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FileImageEditModalComponent, deps: [{ token: i1.ModalRef }, { token: MODAL_DATA }], target: i0.ɵɵFactoryTarget.Component });
80
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: FileImageEditModalComponent, selector: "mrx-file-image-edit-modal", usesInheritance: true, ngImport: i0, template: "<mrx-modal\r\n [title]=\"title\"\r\n [size]=\"'medium'\"\r\n (close)=\"close()\"\r\n>\r\n <div class=\"row\">\r\n <div class=\"col col-12\">\r\n <p>\u0412\u044B\u0431\u0440\u0430\u043D\u043D\u0430\u044F \u043E\u0431\u043B\u0430\u0441\u0442\u044C \u0431\u0443\u0434\u0435\u0442 \u043F\u043E\u043A\u0430\u0437\u044B\u0432\u0430\u0442\u044C\u0441\u044F \u043D\u0430 \u043E\u0431\u043B\u043E\u0436\u043A\u0435 \u0441\u0442\u0440\u0430\u043D\u0438\u0446\u044B</p>\r\n </div>\r\n\r\n <div class=\"col col-12\">\r\n <div class=\"mrx-input-image-cropper__wrapper\">\r\n <image-cropper\r\n format=\"png\"\r\n output=\"base64\"\r\n [alignImage]=\"'center'\"\r\n [imageFile]=\"fileImage\"\r\n [maintainAspectRatio]=\"maintainAspectRatio\"\r\n [aspectRatio]=\"aspectRatio\"\r\n [backgroundColor]=\"'#000000'\"\r\n [canvasRotation]=\"canvasRotation\"\r\n [transform]=\"transform\"\r\n [cropperMaxWidth]=\"cropperMaxWidth\"\r\n [cropperMaxHeight]=\"cropperMaxHeight\"\r\n (loadImageFailed)=\"loadImageFailed()\"\r\n (imageCropped)=\"imageCropped($event)\"\r\n (imageLoaded)=\"imageLoaded($event)\"\r\n (cropperReady)=\"cropperReady()\"\r\n ></image-cropper>\r\n\r\n <div class=\"mrx-input-image-cropper__controls\">\r\n <svg (click)=\"rotateLeft()\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"2\" y=\"15\" width=\"8\" height=\"8\" rx=\"0.888889\" stroke=\"white\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M4.5 18.5C5.05228 18.5 5.5 18.0523 5.5 17.5C5.5 16.9477 5.05228 16.5 4.5 16.5C3.94772 16.5 3.5 16.9477 3.5 17.5C3.5 18.0523 3.94772 18.5 4.5 18.5Z\" stroke=\"white\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n <path d=\"M9.99978 20.3333L7.77756 18.1111L2.88867 23\" stroke=\"white\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n <path d=\"M13.1575 21.6842C18.5932 21.6842 22.9996 17.2777 22.9996 11.8421C22.9996 6.40646 18.5932 2 13.1575 2C7.72189 2 3.31543 6.40646 3.31543 11.8421\" stroke=\"white\" stroke-width=\"1.5\" stroke-linecap=\"round\"/>\r\n <path d=\"M1.00026 10.1052L3.31605 12.421L5.63184 10.1052\" stroke=\"white\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n\r\n <svg (click)=\"rotateRight()\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"14\" y=\"15\" width=\"8\" height=\"8\" rx=\"0.888889\" stroke=\"white\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M16.5 18.5C17.0523 18.5 17.5 18.0523 17.5 17.5C17.5 16.9477 17.0523 16.5 16.5 16.5C15.9477 16.5 15.5 16.9477 15.5 17.5C15.5 18.0523 15.9477 18.5 16.5 18.5Z\" stroke=\"white\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n <path d=\"M21.9998 20.3333L19.7776 18.1111L14.8887 23\" stroke=\"white\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n <path d=\"M10.8425 21.6842C5.40682 21.6842 1.00036 17.2777 1.00036 11.8421C1.00036 6.40646 5.40682 2 10.8425 2C16.2781 2 20.6846 6.40646 20.6846 11.8421\" stroke=\"white\" stroke-width=\"1.5\" stroke-linecap=\"round\"/>\r\n <path d=\"M22.9997 10.1052L20.684 12.421L18.3682 10.1052\" stroke=\"white\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <ng-template #footerContent>\r\n <mrx-button\r\n [customClasses]=\"'mr-3'\"\r\n [type]=\"'secondary'\"\r\n [size]=\"'medium'\"\r\n (click)=\"close()\"\r\n >\u041E\u0442\u043C\u0435\u043D\u0438\u0442\u044C\r\n </mrx-button>\r\n <mrx-button\r\n [type]=\"'primary'\"\r\n [size]=\"'medium'\"\r\n (click)=\"ok()\"\r\n >\u041F\u043E\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u044C\r\n </mrx-button>\r\n </ng-template>\r\n</mrx-modal>\r\n\r\n\r\n", styles: [":host::ng-deep .mrx-input-image-cropper__wrapper{position:relative}:host::ng-deep .mrx-input-image-cropper__controls{padding:8px;background:#1f222680;border-radius:4px;position:absolute;left:50%;bottom:24px;transform:translate(-50%)}:host::ng-deep .mrx-input-image-cropper__controls svg{cursor:pointer}:host::ng-deep .mrx-input-image-cropper__controls svg:not(:last-child){margin-right:16px}\n"], dependencies: [{ kind: "component", type: i2.ModalComponent, selector: "mrx-modal", inputs: ["title", "message", "alert", "okText", "closeText", "size", "color", "customClasses", "expandable", "isEmbed", "isClose", "isBack", "backText", "enableFooter", "alignButtons", "isLoading", "iconPosition"], outputs: ["ok", "close", "back"] }, { kind: "component", type: i3.ButtonComponent, selector: "mrx-button", inputs: ["size", "type", "color", "iconPosition", "active", "disabled", "isLoading", "iconOnly", "customClasses", "label", "icon", "iconClass", "buttonType", "href", "target", "routerLink", "queryParams"], outputs: ["mrxClick"] }, { kind: "component", type: i4.ImageCropperComponent, selector: "image-cropper", inputs: ["imageChangedEvent", "imageURL", "imageBase64", "imageFile", "imageAltText", "options", "cropperFrameAriaLabel", "output", "format", "autoCrop", "cropper", "transform", "maintainAspectRatio", "aspectRatio", "resetCropOnAspectRatioChange", "resizeToWidth", "resizeToHeight", "cropperMinWidth", "cropperMinHeight", "cropperMaxHeight", "cropperMaxWidth", "cropperStaticWidth", "cropperStaticHeight", "canvasRotation", "initialStepSize", "roundCropper", "onlyScaleDown", "imageQuality", "backgroundColor", "containWithinAspectRatio", "hideResizeSquares", "allowMoveImage", "checkImageType", "alignImage", "disabled", "hidden"], outputs: ["imageCropped", "startCropImage", "imageLoaded", "cropperReady", "loadImageFailed", "transformChange", "cropperChange"] }] });
83
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: FileImageEditModalComponent, selector: "mrx-file-image-edit-modal", usesInheritance: true, ngImport: i0, template: "<mrx-modal\r\n [title]=\"title\"\r\n [size]=\"'medium'\"\r\n (close)=\"cancel()\"\r\n>\r\n <div class=\"row\">\r\n <div class=\"col col-12\">\r\n <p>\u0412\u044B\u0431\u0440\u0430\u043D\u043D\u0430\u044F \u043E\u0431\u043B\u0430\u0441\u0442\u044C \u0431\u0443\u0434\u0435\u0442 \u043F\u043E\u043A\u0430\u0437\u044B\u0432\u0430\u0442\u044C\u0441\u044F \u043D\u0430 \u043E\u0431\u043B\u043E\u0436\u043A\u0435 \u0441\u0442\u0440\u0430\u043D\u0438\u0446\u044B</p>\r\n </div>\r\n\r\n <div class=\"col col-12\">\r\n <div class=\"mrx-input-image-cropper__wrapper\">\r\n <image-cropper\r\n format=\"png\"\r\n output=\"base64\"\r\n [alignImage]=\"'center'\"\r\n [imageFile]=\"fileImage\"\r\n [maintainAspectRatio]=\"maintainAspectRatio\"\r\n [aspectRatio]=\"aspectRatio\"\r\n [backgroundColor]=\"'#000000'\"\r\n [canvasRotation]=\"canvasRotation\"\r\n [transform]=\"transform\"\r\n [cropperMaxWidth]=\"cropperMaxWidth\"\r\n [cropperMaxHeight]=\"cropperMaxHeight\"\r\n (loadImageFailed)=\"loadImageFailed()\"\r\n (imageCropped)=\"imageCropped($event)\"\r\n (imageLoaded)=\"imageLoaded($event)\"\r\n (cropperReady)=\"cropperReady()\"\r\n ></image-cropper>\r\n\r\n <div class=\"mrx-input-image-cropper__controls\">\r\n <svg (click)=\"rotateLeft()\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"2\" y=\"15\" width=\"8\" height=\"8\" rx=\"0.888889\" stroke=\"white\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M4.5 18.5C5.05228 18.5 5.5 18.0523 5.5 17.5C5.5 16.9477 5.05228 16.5 4.5 16.5C3.94772 16.5 3.5 16.9477 3.5 17.5C3.5 18.0523 3.94772 18.5 4.5 18.5Z\" stroke=\"white\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n <path d=\"M9.99978 20.3333L7.77756 18.1111L2.88867 23\" stroke=\"white\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n <path d=\"M13.1575 21.6842C18.5932 21.6842 22.9996 17.2777 22.9996 11.8421C22.9996 6.40646 18.5932 2 13.1575 2C7.72189 2 3.31543 6.40646 3.31543 11.8421\" stroke=\"white\" stroke-width=\"1.5\" stroke-linecap=\"round\"/>\r\n <path d=\"M1.00026 10.1052L3.31605 12.421L5.63184 10.1052\" stroke=\"white\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n\r\n <svg (click)=\"rotateRight()\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"14\" y=\"15\" width=\"8\" height=\"8\" rx=\"0.888889\" stroke=\"white\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M16.5 18.5C17.0523 18.5 17.5 18.0523 17.5 17.5C17.5 16.9477 17.0523 16.5 16.5 16.5C15.9477 16.5 15.5 16.9477 15.5 17.5C15.5 18.0523 15.9477 18.5 16.5 18.5Z\" stroke=\"white\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n <path d=\"M21.9998 20.3333L19.7776 18.1111L14.8887 23\" stroke=\"white\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n <path d=\"M10.8425 21.6842C5.40682 21.6842 1.00036 17.2777 1.00036 11.8421C1.00036 6.40646 5.40682 2 10.8425 2C16.2781 2 20.6846 6.40646 20.6846 11.8421\" stroke=\"white\" stroke-width=\"1.5\" stroke-linecap=\"round\"/>\r\n <path d=\"M22.9997 10.1052L20.684 12.421L18.3682 10.1052\" stroke=\"white\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <ng-template #footerContent>\r\n <mrx-button\r\n [customClasses]=\"'mr-3'\"\r\n [type]=\"'secondary'\"\r\n [size]=\"'medium'\"\r\n (click)=\"cancel()\"\r\n >\u041E\u0442\u043C\u0435\u043D\u0438\u0442\u044C\r\n </mrx-button>\r\n <mrx-button\r\n [type]=\"'primary'\"\r\n [size]=\"'medium'\"\r\n (click)=\"ok()\"\r\n >\u041F\u043E\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u044C\r\n </mrx-button>\r\n </ng-template>\r\n</mrx-modal>\r\n\r\n\r\n", styles: [":host::ng-deep .mrx-input-image-cropper__wrapper{position:relative}:host::ng-deep .mrx-input-image-cropper__controls{padding:8px;background:#1f222680;border-radius:4px;position:absolute;left:50%;bottom:24px;transform:translate(-50%)}:host::ng-deep .mrx-input-image-cropper__controls svg{cursor:pointer}:host::ng-deep .mrx-input-image-cropper__controls svg:not(:last-child){margin-right:16px}\n"], dependencies: [{ kind: "component", type: i2.ModalComponent, selector: "mrx-modal", inputs: ["title", "message", "alert", "okText", "closeText", "size", "color", "customClasses", "expandable", "isEmbed", "isClose", "isBack", "backText", "enableFooter", "alignButtons", "isLoading", "iconPosition"], outputs: ["ok", "close", "back"] }, { kind: "component", type: i3.ButtonComponent, selector: "mrx-button", inputs: ["size", "type", "color", "iconPosition", "active", "disabled", "isLoading", "iconOnly", "customClasses", "label", "icon", "iconClass", "buttonType", "href", "target", "routerLink", "queryParams"], outputs: ["mrxClick"] }, { kind: "component", type: i4.ImageCropperComponent, selector: "image-cropper", inputs: ["imageChangedEvent", "imageURL", "imageBase64", "imageFile", "imageAltText", "options", "cropperFrameAriaLabel", "output", "format", "autoCrop", "cropper", "transform", "maintainAspectRatio", "aspectRatio", "resetCropOnAspectRatioChange", "resizeToWidth", "resizeToHeight", "cropperMinWidth", "cropperMinHeight", "cropperMaxHeight", "cropperMaxWidth", "cropperStaticWidth", "cropperStaticHeight", "canvasRotation", "initialStepSize", "roundCropper", "onlyScaleDown", "imageQuality", "backgroundColor", "containWithinAspectRatio", "hideResizeSquares", "allowMoveImage", "checkImageType", "alignImage", "disabled", "hidden"], outputs: ["imageCropped", "startCropImage", "imageLoaded", "cropperReady", "loadImageFailed", "transformChange", "cropperChange"] }] });
81
84
  }
82
85
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FileImageEditModalComponent, decorators: [{
83
86
  type: Component,
84
- args: [{ selector: 'mrx-file-image-edit-modal', template: "<mrx-modal\r\n [title]=\"title\"\r\n [size]=\"'medium'\"\r\n (close)=\"close()\"\r\n>\r\n <div class=\"row\">\r\n <div class=\"col col-12\">\r\n <p>\u0412\u044B\u0431\u0440\u0430\u043D\u043D\u0430\u044F \u043E\u0431\u043B\u0430\u0441\u0442\u044C \u0431\u0443\u0434\u0435\u0442 \u043F\u043E\u043A\u0430\u0437\u044B\u0432\u0430\u0442\u044C\u0441\u044F \u043D\u0430 \u043E\u0431\u043B\u043E\u0436\u043A\u0435 \u0441\u0442\u0440\u0430\u043D\u0438\u0446\u044B</p>\r\n </div>\r\n\r\n <div class=\"col col-12\">\r\n <div class=\"mrx-input-image-cropper__wrapper\">\r\n <image-cropper\r\n format=\"png\"\r\n output=\"base64\"\r\n [alignImage]=\"'center'\"\r\n [imageFile]=\"fileImage\"\r\n [maintainAspectRatio]=\"maintainAspectRatio\"\r\n [aspectRatio]=\"aspectRatio\"\r\n [backgroundColor]=\"'#000000'\"\r\n [canvasRotation]=\"canvasRotation\"\r\n [transform]=\"transform\"\r\n [cropperMaxWidth]=\"cropperMaxWidth\"\r\n [cropperMaxHeight]=\"cropperMaxHeight\"\r\n (loadImageFailed)=\"loadImageFailed()\"\r\n (imageCropped)=\"imageCropped($event)\"\r\n (imageLoaded)=\"imageLoaded($event)\"\r\n (cropperReady)=\"cropperReady()\"\r\n ></image-cropper>\r\n\r\n <div class=\"mrx-input-image-cropper__controls\">\r\n <svg (click)=\"rotateLeft()\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"2\" y=\"15\" width=\"8\" height=\"8\" rx=\"0.888889\" stroke=\"white\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M4.5 18.5C5.05228 18.5 5.5 18.0523 5.5 17.5C5.5 16.9477 5.05228 16.5 4.5 16.5C3.94772 16.5 3.5 16.9477 3.5 17.5C3.5 18.0523 3.94772 18.5 4.5 18.5Z\" stroke=\"white\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n <path d=\"M9.99978 20.3333L7.77756 18.1111L2.88867 23\" stroke=\"white\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n <path d=\"M13.1575 21.6842C18.5932 21.6842 22.9996 17.2777 22.9996 11.8421C22.9996 6.40646 18.5932 2 13.1575 2C7.72189 2 3.31543 6.40646 3.31543 11.8421\" stroke=\"white\" stroke-width=\"1.5\" stroke-linecap=\"round\"/>\r\n <path d=\"M1.00026 10.1052L3.31605 12.421L5.63184 10.1052\" stroke=\"white\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n\r\n <svg (click)=\"rotateRight()\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"14\" y=\"15\" width=\"8\" height=\"8\" rx=\"0.888889\" stroke=\"white\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M16.5 18.5C17.0523 18.5 17.5 18.0523 17.5 17.5C17.5 16.9477 17.0523 16.5 16.5 16.5C15.9477 16.5 15.5 16.9477 15.5 17.5C15.5 18.0523 15.9477 18.5 16.5 18.5Z\" stroke=\"white\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n <path d=\"M21.9998 20.3333L19.7776 18.1111L14.8887 23\" stroke=\"white\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n <path d=\"M10.8425 21.6842C5.40682 21.6842 1.00036 17.2777 1.00036 11.8421C1.00036 6.40646 5.40682 2 10.8425 2C16.2781 2 20.6846 6.40646 20.6846 11.8421\" stroke=\"white\" stroke-width=\"1.5\" stroke-linecap=\"round\"/>\r\n <path d=\"M22.9997 10.1052L20.684 12.421L18.3682 10.1052\" stroke=\"white\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <ng-template #footerContent>\r\n <mrx-button\r\n [customClasses]=\"'mr-3'\"\r\n [type]=\"'secondary'\"\r\n [size]=\"'medium'\"\r\n (click)=\"close()\"\r\n >\u041E\u0442\u043C\u0435\u043D\u0438\u0442\u044C\r\n </mrx-button>\r\n <mrx-button\r\n [type]=\"'primary'\"\r\n [size]=\"'medium'\"\r\n (click)=\"ok()\"\r\n >\u041F\u043E\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u044C\r\n </mrx-button>\r\n </ng-template>\r\n</mrx-modal>\r\n\r\n\r\n", styles: [":host::ng-deep .mrx-input-image-cropper__wrapper{position:relative}:host::ng-deep .mrx-input-image-cropper__controls{padding:8px;background:#1f222680;border-radius:4px;position:absolute;left:50%;bottom:24px;transform:translate(-50%)}:host::ng-deep .mrx-input-image-cropper__controls svg{cursor:pointer}:host::ng-deep .mrx-input-image-cropper__controls svg:not(:last-child){margin-right:16px}\n"] }]
87
+ args: [{ selector: 'mrx-file-image-edit-modal', template: "<mrx-modal\r\n [title]=\"title\"\r\n [size]=\"'medium'\"\r\n (close)=\"cancel()\"\r\n>\r\n <div class=\"row\">\r\n <div class=\"col col-12\">\r\n <p>\u0412\u044B\u0431\u0440\u0430\u043D\u043D\u0430\u044F \u043E\u0431\u043B\u0430\u0441\u0442\u044C \u0431\u0443\u0434\u0435\u0442 \u043F\u043E\u043A\u0430\u0437\u044B\u0432\u0430\u0442\u044C\u0441\u044F \u043D\u0430 \u043E\u0431\u043B\u043E\u0436\u043A\u0435 \u0441\u0442\u0440\u0430\u043D\u0438\u0446\u044B</p>\r\n </div>\r\n\r\n <div class=\"col col-12\">\r\n <div class=\"mrx-input-image-cropper__wrapper\">\r\n <image-cropper\r\n format=\"png\"\r\n output=\"base64\"\r\n [alignImage]=\"'center'\"\r\n [imageFile]=\"fileImage\"\r\n [maintainAspectRatio]=\"maintainAspectRatio\"\r\n [aspectRatio]=\"aspectRatio\"\r\n [backgroundColor]=\"'#000000'\"\r\n [canvasRotation]=\"canvasRotation\"\r\n [transform]=\"transform\"\r\n [cropperMaxWidth]=\"cropperMaxWidth\"\r\n [cropperMaxHeight]=\"cropperMaxHeight\"\r\n (loadImageFailed)=\"loadImageFailed()\"\r\n (imageCropped)=\"imageCropped($event)\"\r\n (imageLoaded)=\"imageLoaded($event)\"\r\n (cropperReady)=\"cropperReady()\"\r\n ></image-cropper>\r\n\r\n <div class=\"mrx-input-image-cropper__controls\">\r\n <svg (click)=\"rotateLeft()\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"2\" y=\"15\" width=\"8\" height=\"8\" rx=\"0.888889\" stroke=\"white\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M4.5 18.5C5.05228 18.5 5.5 18.0523 5.5 17.5C5.5 16.9477 5.05228 16.5 4.5 16.5C3.94772 16.5 3.5 16.9477 3.5 17.5C3.5 18.0523 3.94772 18.5 4.5 18.5Z\" stroke=\"white\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n <path d=\"M9.99978 20.3333L7.77756 18.1111L2.88867 23\" stroke=\"white\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n <path d=\"M13.1575 21.6842C18.5932 21.6842 22.9996 17.2777 22.9996 11.8421C22.9996 6.40646 18.5932 2 13.1575 2C7.72189 2 3.31543 6.40646 3.31543 11.8421\" stroke=\"white\" stroke-width=\"1.5\" stroke-linecap=\"round\"/>\r\n <path d=\"M1.00026 10.1052L3.31605 12.421L5.63184 10.1052\" stroke=\"white\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n\r\n <svg (click)=\"rotateRight()\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"14\" y=\"15\" width=\"8\" height=\"8\" rx=\"0.888889\" stroke=\"white\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M16.5 18.5C17.0523 18.5 17.5 18.0523 17.5 17.5C17.5 16.9477 17.0523 16.5 16.5 16.5C15.9477 16.5 15.5 16.9477 15.5 17.5C15.5 18.0523 15.9477 18.5 16.5 18.5Z\" stroke=\"white\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n <path d=\"M21.9998 20.3333L19.7776 18.1111L14.8887 23\" stroke=\"white\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n <path d=\"M10.8425 21.6842C5.40682 21.6842 1.00036 17.2777 1.00036 11.8421C1.00036 6.40646 5.40682 2 10.8425 2C16.2781 2 20.6846 6.40646 20.6846 11.8421\" stroke=\"white\" stroke-width=\"1.5\" stroke-linecap=\"round\"/>\r\n <path d=\"M22.9997 10.1052L20.684 12.421L18.3682 10.1052\" stroke=\"white\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <ng-template #footerContent>\r\n <mrx-button\r\n [customClasses]=\"'mr-3'\"\r\n [type]=\"'secondary'\"\r\n [size]=\"'medium'\"\r\n (click)=\"cancel()\"\r\n >\u041E\u0442\u043C\u0435\u043D\u0438\u0442\u044C\r\n </mrx-button>\r\n <mrx-button\r\n [type]=\"'primary'\"\r\n [size]=\"'medium'\"\r\n (click)=\"ok()\"\r\n >\u041F\u043E\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u044C\r\n </mrx-button>\r\n </ng-template>\r\n</mrx-modal>\r\n\r\n\r\n", styles: [":host::ng-deep .mrx-input-image-cropper__wrapper{position:relative}:host::ng-deep .mrx-input-image-cropper__controls{padding:8px;background:#1f222680;border-radius:4px;position:absolute;left:50%;bottom:24px;transform:translate(-50%)}:host::ng-deep .mrx-input-image-cropper__controls svg{cursor:pointer}:host::ng-deep .mrx-input-image-cropper__controls svg:not(:last-child){margin-right:16px}\n"] }]
85
88
  }], ctorParameters: () => [{ type: i1.ModalRef }, { type: undefined, decorators: [{
86
89
  type: Inject,
87
90
  args: [MODAL_DATA]
88
91
  }] }] });
89
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1pbWFnZS1lZGl0LW1vZGFsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cnRhLXVpL3NyYy9saWIvY29tcG9uZW50cy9mb3JtL2lucHV0LWZpbGUtaW1hZ2UvY29tcG9uZW50cy9maWxlLWltYWdlLWVkaXQtbW9kYWwvZmlsZS1pbWFnZS1lZGl0LW1vZGFsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cnRhLXVpL3NyYy9saWIvY29tcG9uZW50cy9mb3JtL2lucHV0LWZpbGUtaW1hZ2UvY29tcG9uZW50cy9maWxlLWltYWdlLWVkaXQtbW9kYWwvZmlsZS1pbWFnZS1lZGl0LW1vZGFsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWxELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLCtEQUErRCxDQUFDO0FBRXRHLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSw0REFBNEQsQ0FBQztBQUN4RixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7O0FBc0I3RCxNQUFNLE9BQU8sMkJBQTRCLFNBQVEscUJBQXVEO0lBYzVGO0lBWlYsS0FBSyxDQUFVO0lBQ2YsU0FBUyxDQUFPO0lBQ2hCLGVBQWUsQ0FBVTtJQUN6QixnQkFBZ0IsQ0FBVTtJQUMxQixXQUFXLENBQVU7SUFDckIsbUJBQW1CLENBQVc7SUFDOUIsaUJBQWlCLEdBQVEsRUFBRSxDQUFDO0lBQzVCLFlBQVksR0FBRyxFQUFFLENBQUM7SUFDbEIsY0FBYyxHQUFHLENBQUMsQ0FBQztJQUNuQixTQUFTLEdBQW1CLEVBQUUsQ0FBQztJQUUvQixZQUNVLFNBQW9DLEVBQ3hCLElBQXFCO1FBRXpDLEtBQUssRUFBRSxDQUFDO1FBSEEsY0FBUyxHQUFULFNBQVMsQ0FBMkI7UUFJNUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUMsQ0FBQztRQUU5QixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUE7UUFDdkIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFBO1FBQy9CLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQTtRQUMzQyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFBO1FBQzdDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQTtRQUNuQyxJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFBO0lBQ3JELENBQUM7SUFFTSxLQUFLLENBQUMsRUFBRTtRQUNiLElBQUksQ0FBQyxNQUFNLEdBQUc7WUFDWixNQUFNLEVBQUUsSUFBSTtZQUNaLFNBQVMsRUFBRSxtQkFBbUIsQ0FDNUIsSUFBSSxDQUFDLFlBQVksRUFDakIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQ25CLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUNwQjtZQUNELE9BQU8sRUFBRSxJQUFJLENBQUMsWUFBWTtTQUMzQixDQUFDO1FBQ0YsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ2YsQ0FBQztJQUVELFVBQVU7UUFDUixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRU8sZUFBZTtRQUNyQixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQztRQUN0QyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQztRQUN0QyxJQUFJLENBQUMsU0FBUyxHQUFHO1lBQ2YsR0FBRyxJQUFJLENBQUMsU0FBUztZQUNqQixLQUFLLEVBQUUsUUFBUTtZQUNmLEtBQUssRUFBRSxRQUFRO1NBQ2hCLENBQUM7SUFDSixDQUFDO0lBRUQsZUFBZSxDQUFDLEtBQVU7UUFDeEIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQztJQUNqQyxDQUFDO0lBRUQsWUFBWSxDQUFDLEtBQXdCO1FBQ25DLElBQUksS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQztRQUNuQyxDQUFDO0lBQ0gsQ0FBQztJQUVELFdBQVcsQ0FBQyxLQUFrQjtRQUM1QixxQkFBcUI7SUFDdkIsQ0FBQztJQUVELFlBQVk7UUFDVixnQkFBZ0I7SUFDbEIsQ0FBQztJQUVELGVBQWU7UUFDYixlQUFlO0lBQ2pCLENBQUM7SUFFRCxLQUFLO1FBQ0gsSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUMsQ0FBQTtRQUM3QixJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDcEMsQ0FBQzt3R0F0RlUsMkJBQTJCLDBDQWU1QixVQUFVOzRGQWZULDJCQUEyQix3RkMzQnhDLDJwSUFxRUE7OzRGRDFDYSwyQkFBMkI7a0JBTHZDLFNBQVM7K0JBQ0UsMkJBQTJCOzswQkFtQmxDLE1BQU07MkJBQUMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEltYWdlQ3JvcHBlZEV2ZW50LCBJbWFnZVRyYW5zZm9ybSwgTG9hZGVkSW1hZ2UgfSBmcm9tICduZ3gtaW1hZ2UtY3JvcHBlcic7XHJcbmltcG9ydCB7IE1vZGFsU2VydmljZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3NlcnZpY2VzL21vZGFsLXNlcnZpY2UvaGVscGVycy9tb2RhbC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBNb2RhbFJlZiB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3NlcnZpY2VzL21vZGFsLXNlcnZpY2UvaGVscGVycy9tb2RhbC1yZWYnO1xyXG5pbXBvcnQgeyBNT0RBTF9EQVRBIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vc2VydmljZXMvbW9kYWwtc2VydmljZS9oZWxwZXJzL21vZGFsLXRva2Vucyc7XHJcbmltcG9ydCB7IGNvbnZlcnRCYXNlNjRUb0ZpbGUgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9oZWxwZXJzJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSW1hZ2VFZGl0U2VsZWN0IHtcclxuICB0aXRsZTogc3RyaW5nO1xyXG4gIGZpbGVJbWFnZT86IGFueTtcclxuICBjcm9wcGVyTWF4V2lkdGg6IG51bWJlcjtcclxuICBjcm9wcGVyTWF4SGVpZ2h0OiBudW1iZXI7XHJcbiAgYXNwZWN0UmF0aW86IG51bWJlcjtcclxuICBtYWludGFpbkFzcGVjdFJhdGlvOiBib29sZWFuO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEltYWdlRWRpdFJlc3VsdCB7XHJcbiAgcmVzdWx0OiBib29sZWFuLFxyXG4gIGZpbGVJbWFnZT86IEZpbGUsXHJcbiAgZmlsZVVybD86IHN0cmluZ1xyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ21yeC1maWxlLWltYWdlLWVkaXQtbW9kYWwnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9maWxlLWltYWdlLWVkaXQtbW9kYWwuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2ZpbGUtaW1hZ2UtZWRpdC1tb2RhbC5jb21wb25lbnQubGVzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGaWxlSW1hZ2VFZGl0TW9kYWxDb21wb25lbnQgZXh0ZW5kcyBNb2RhbFNlcnZpY2VDb21wb25lbnQ8SW1hZ2VFZGl0U2VsZWN0LCBJbWFnZUVkaXRSZXN1bHQ+IHtcclxuXHJcbiAgdGl0bGUhOiBzdHJpbmc7XHJcbiAgZmlsZUltYWdlPzogYW55O1xyXG4gIGNyb3BwZXJNYXhXaWR0aCE6IG51bWJlcjtcclxuICBjcm9wcGVyTWF4SGVpZ2h0ITogbnVtYmVyO1xyXG4gIGFzcGVjdFJhdGlvITogbnVtYmVyO1xyXG4gIG1haW50YWluQXNwZWN0UmF0aW8hOiBib29sZWFuO1xyXG4gIGltYWdlQ2hhbmdlZEV2ZW50OiBhbnkgPSAnJztcclxuICBjcm9wcGVkSW1hZ2UgPSAnJztcclxuICBjYW52YXNSb3RhdGlvbiA9IDA7XHJcbiAgdHJhbnNmb3JtOiBJbWFnZVRyYW5zZm9ybSA9IHt9O1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgZGlhbG9nUmVmOiBNb2RhbFJlZjxJbWFnZUVkaXRSZXN1bHQ+LFxyXG4gICAgQEluamVjdChNT0RBTF9EQVRBKSBkYXRhOiBJbWFnZUVkaXRTZWxlY3QsXHJcbiAgKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gICAgdGhpcy5yZXN1bHQgPSB7cmVzdWx0OiBmYWxzZX07XHJcblxyXG4gICAgdGhpcy50aXRsZSA9IGRhdGEudGl0bGVcclxuICAgIHRoaXMuZmlsZUltYWdlID0gZGF0YS5maWxlSW1hZ2VcclxuICAgIHRoaXMuY3JvcHBlck1heFdpZHRoID0gZGF0YS5jcm9wcGVyTWF4V2lkdGhcclxuICAgIHRoaXMuY3JvcHBlck1heEhlaWdodCA9IGRhdGEuY3JvcHBlck1heEhlaWdodFxyXG4gICAgdGhpcy5hc3BlY3RSYXRpbyA9IGRhdGEuYXNwZWN0UmF0aW9cclxuICAgIHRoaXMubWFpbnRhaW5Bc3BlY3RSYXRpbyA9IGRhdGEubWFpbnRhaW5Bc3BlY3RSYXRpb1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIG9rKCkge1xyXG4gICAgdGhpcy5yZXN1bHQgPSB7XHJcbiAgICAgIHJlc3VsdDogdHJ1ZSxcclxuICAgICAgZmlsZUltYWdlOiBjb252ZXJ0QmFzZTY0VG9GaWxlKFxyXG4gICAgICAgIHRoaXMuY3JvcHBlZEltYWdlLFxyXG4gICAgICAgIHRoaXMuZmlsZUltYWdlLm5hbWUsXHJcbiAgICAgICAgdGhpcy5maWxlSW1hZ2UudHlwZVxyXG4gICAgICApLFxyXG4gICAgICBmaWxlVXJsOiB0aGlzLmNyb3BwZWRJbWFnZVxyXG4gICAgfTtcclxuICAgIHRoaXMuY2xvc2UoKTtcclxuICB9XHJcblxyXG4gIHJvdGF0ZUxlZnQoKSB7XHJcbiAgICB0aGlzLmNhbnZhc1JvdGF0aW9uLS07XHJcbiAgICB0aGlzLmZsaXBBZnRlclJvdGF0ZSgpO1xyXG4gIH1cclxuXHJcbiAgcm90YXRlUmlnaHQoKSB7XHJcbiAgICB0aGlzLmNhbnZhc1JvdGF0aW9uKys7XHJcbiAgICB0aGlzLmZsaXBBZnRlclJvdGF0ZSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmbGlwQWZ0ZXJSb3RhdGUoKSB7XHJcbiAgICBjb25zdCBmbGlwcGVkSCA9IHRoaXMudHJhbnNmb3JtLmZsaXBIO1xyXG4gICAgY29uc3QgZmxpcHBlZFYgPSB0aGlzLnRyYW5zZm9ybS5mbGlwVjtcclxuICAgIHRoaXMudHJhbnNmb3JtID0ge1xyXG4gICAgICAuLi50aGlzLnRyYW5zZm9ybSxcclxuICAgICAgZmxpcEg6IGZsaXBwZWRWLFxyXG4gICAgICBmbGlwVjogZmxpcHBlZEhcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBmaWxlQ2hhbmdlRXZlbnQoZXZlbnQ6IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5pbWFnZUNoYW5nZWRFdmVudCA9IGV2ZW50O1xyXG4gIH1cclxuXHJcbiAgaW1hZ2VDcm9wcGVkKGV2ZW50OiBJbWFnZUNyb3BwZWRFdmVudCk6IHZvaWQge1xyXG4gICAgaWYgKGV2ZW50LmJhc2U2NCkge1xyXG4gICAgICB0aGlzLmNyb3BwZWRJbWFnZSA9IGV2ZW50LmJhc2U2NDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGltYWdlTG9hZGVkKGltYWdlOiBMb2FkZWRJbWFnZSkge1xyXG4gICAgLy8gY29uc29sZS5sb2coaW1hZ2UpXHJcbiAgfVxyXG5cclxuICBjcm9wcGVyUmVhZHkoKSB7XHJcbiAgICAvLyBjcm9wcGVyIHJlYWR5XHJcbiAgfVxyXG5cclxuICBsb2FkSW1hZ2VGYWlsZWQoKSB7XHJcbiAgICAvLyBzaG93IG1lc3NhZ2VcclxuICB9XHJcblxyXG4gIGNsb3NlKCkge1xyXG4gICAgdGhpcy5yZXN1bHQgPSB7cmVzdWx0OiBmYWxzZX1cclxuICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKHRoaXMucmVzdWx0KTtcclxuICB9XHJcbn1cclxuIiwiPG1yeC1tb2RhbFxyXG4gIFt0aXRsZV09XCJ0aXRsZVwiXHJcbiAgW3NpemVdPVwiJ21lZGl1bSdcIlxyXG4gIChjbG9zZSk9XCJjbG9zZSgpXCJcclxuPlxyXG4gIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wgY29sLTEyXCI+XHJcbiAgICAgIDxwPtCS0YvQsdGA0LDQvdC90LDRjyDQvtCx0LvQsNGB0YLRjCDQsdGD0LTQtdGCINC/0L7QutCw0LfRi9Cy0LDRgtGM0YHRjyDQvdCwINC+0LHQu9C+0LbQutC1INGB0YLRgNCw0L3QuNGG0Ys8L3A+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sIGNvbC0xMlwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibXJ4LWlucHV0LWltYWdlLWNyb3BwZXJfX3dyYXBwZXJcIj5cclxuICAgICAgICA8aW1hZ2UtY3JvcHBlclxyXG4gICAgICAgICAgZm9ybWF0PVwicG5nXCJcclxuICAgICAgICAgIG91dHB1dD1cImJhc2U2NFwiXHJcbiAgICAgICAgICBbYWxpZ25JbWFnZV09XCInY2VudGVyJ1wiXHJcbiAgICAgICAgICBbaW1hZ2VGaWxlXT1cImZpbGVJbWFnZVwiXHJcbiAgICAgICAgICBbbWFpbnRhaW5Bc3BlY3RSYXRpb109XCJtYWludGFpbkFzcGVjdFJhdGlvXCJcclxuICAgICAgICAgIFthc3BlY3RSYXRpb109XCJhc3BlY3RSYXRpb1wiXHJcbiAgICAgICAgICBbYmFja2dyb3VuZENvbG9yXT1cIicjMDAwMDAwJ1wiXHJcbiAgICAgICAgICBbY2FudmFzUm90YXRpb25dPVwiY2FudmFzUm90YXRpb25cIlxyXG4gICAgICAgICAgW3RyYW5zZm9ybV09XCJ0cmFuc2Zvcm1cIlxyXG4gICAgICAgICAgW2Nyb3BwZXJNYXhXaWR0aF09XCJjcm9wcGVyTWF4V2lkdGhcIlxyXG4gICAgICAgICAgW2Nyb3BwZXJNYXhIZWlnaHRdPVwiY3JvcHBlck1heEhlaWdodFwiXHJcbiAgICAgICAgICAobG9hZEltYWdlRmFpbGVkKT1cImxvYWRJbWFnZUZhaWxlZCgpXCJcclxuICAgICAgICAgIChpbWFnZUNyb3BwZWQpPVwiaW1hZ2VDcm9wcGVkKCRldmVudClcIlxyXG4gICAgICAgICAgKGltYWdlTG9hZGVkKT1cImltYWdlTG9hZGVkKCRldmVudClcIlxyXG4gICAgICAgICAgKGNyb3BwZXJSZWFkeSk9XCJjcm9wcGVyUmVhZHkoKVwiXHJcbiAgICAgICAgPjwvaW1hZ2UtY3JvcHBlcj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm1yeC1pbnB1dC1pbWFnZS1jcm9wcGVyX19jb250cm9sc1wiPlxyXG4gICAgICAgICAgPHN2ZyAoY2xpY2spPVwicm90YXRlTGVmdCgpXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gICAgICAgICAgICA8cmVjdCB4PVwiMlwiIHk9XCIxNVwiIHdpZHRoPVwiOFwiIGhlaWdodD1cIjhcIiByeD1cIjAuODg4ODg5XCIgc3Ryb2tlPVwid2hpdGVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XHJcbiAgICAgICAgICAgIDxwYXRoIGZpbGwtcnVsZT1cImV2ZW5vZGRcIiBjbGlwLXJ1bGU9XCJldmVub2RkXCIgZD1cIk00LjUgMTguNUM1LjA1MjI4IDE4LjUgNS41IDE4LjA1MjMgNS41IDE3LjVDNS41IDE2Ljk0NzcgNS4wNTIyOCAxNi41IDQuNSAxNi41QzMuOTQ3NzIgMTYuNSAzLjUgMTYuOTQ3NyAzLjUgMTcuNUMzLjUgMTguMDUyMyAzLjk0NzcyIDE4LjUgNC41IDE4LjVaXCIgc3Ryb2tlPVwid2hpdGVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XHJcbiAgICAgICAgICAgIDxwYXRoIGQ9XCJNOS45OTk3OCAyMC4zMzMzTDcuNzc3NTYgMTguMTExMUwyLjg4ODY3IDIzXCIgc3Ryb2tlPVwid2hpdGVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XHJcbiAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTMuMTU3NSAyMS42ODQyQzE4LjU5MzIgMjEuNjg0MiAyMi45OTk2IDE3LjI3NzcgMjIuOTk5NiAxMS44NDIxQzIyLjk5OTYgNi40MDY0NiAxOC41OTMyIDIgMTMuMTU3NSAyQzcuNzIxODkgMiAzLjMxNTQzIDYuNDA2NDYgMy4zMTU0MyAxMS44NDIxXCIgc3Ryb2tlPVwid2hpdGVcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIvPlxyXG4gICAgICAgICAgICA8cGF0aCBkPVwiTTEuMDAwMjYgMTAuMTA1MkwzLjMxNjA1IDEyLjQyMUw1LjYzMTg0IDEwLjEwNTJcIiBzdHJva2U9XCJ3aGl0ZVwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cclxuICAgICAgICAgIDwvc3ZnPlxyXG5cclxuICAgICAgICAgIDxzdmcgKGNsaWNrKT1cInJvdGF0ZVJpZ2h0KClcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgIDxyZWN0IHg9XCIxNFwiIHk9XCIxNVwiIHdpZHRoPVwiOFwiIGhlaWdodD1cIjhcIiByeD1cIjAuODg4ODg5XCIgc3Ryb2tlPVwid2hpdGVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XHJcbiAgICAgICAgICAgIDxwYXRoIGZpbGwtcnVsZT1cImV2ZW5vZGRcIiBjbGlwLXJ1bGU9XCJldmVub2RkXCIgZD1cIk0xNi41IDE4LjVDMTcuMDUyMyAxOC41IDE3LjUgMTguMDUyMyAxNy41IDE3LjVDMTcuNSAxNi45NDc3IDE3LjA1MjMgMTYuNSAxNi41IDE2LjVDMTUuOTQ3NyAxNi41IDE1LjUgMTYuOTQ3NyAxNS41IDE3LjVDMTUuNSAxOC4wNTIzIDE1Ljk0NzcgMTguNSAxNi41IDE4LjVaXCIgc3Ryb2tlPVwid2hpdGVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XHJcbiAgICAgICAgICAgIDxwYXRoIGQ9XCJNMjEuOTk5OCAyMC4zMzMzTDE5Ljc3NzYgMTguMTExMUwxNC44ODg3IDIzXCIgc3Ryb2tlPVwid2hpdGVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XHJcbiAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTAuODQyNSAyMS42ODQyQzUuNDA2ODIgMjEuNjg0MiAxLjAwMDM2IDE3LjI3NzcgMS4wMDAzNiAxMS44NDIxQzEuMDAwMzYgNi40MDY0NiA1LjQwNjgyIDIgMTAuODQyNSAyQzE2LjI3ODEgMiAyMC42ODQ2IDYuNDA2NDYgMjAuNjg0NiAxMS44NDIxXCIgc3Ryb2tlPVwid2hpdGVcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIvPlxyXG4gICAgICAgICAgICA8cGF0aCBkPVwiTTIyLjk5OTcgMTAuMTA1MkwyMC42ODQgMTIuNDIxTDE4LjM2ODIgMTAuMTA1MlwiIHN0cm9rZT1cIndoaXRlXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxyXG4gICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxuZy10ZW1wbGF0ZSAjZm9vdGVyQ29udGVudD5cclxuICAgIDxtcngtYnV0dG9uXHJcbiAgICAgIFtjdXN0b21DbGFzc2VzXT1cIidtci0zJ1wiXHJcbiAgICAgIFt0eXBlXT1cIidzZWNvbmRhcnknXCJcclxuICAgICAgW3NpemVdPVwiJ21lZGl1bSdcIlxyXG4gICAgICAoY2xpY2spPVwiY2xvc2UoKVwiXHJcbiAgICA+0J7RgtC80LXQvdC40YLRjFxyXG4gICAgPC9tcngtYnV0dG9uPlxyXG4gICAgPG1yeC1idXR0b25cclxuICAgICAgW3R5cGVdPVwiJ3ByaW1hcnknXCJcclxuICAgICAgW3NpemVdPVwiJ21lZGl1bSdcIlxyXG4gICAgICAoY2xpY2spPVwib2soKVwiXHJcbiAgICA+0J/QvtC00YLQstC10YDQtNC40YLRjFxyXG4gICAgPC9tcngtYnV0dG9uPlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcbjwvbXJ4LW1vZGFsPlxyXG5cclxuXHJcbiJdfQ==
92
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1pbWFnZS1lZGl0LW1vZGFsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cnRhLXVpL3NyYy9saWIvY29tcG9uZW50cy9mb3JtL2lucHV0LWZpbGUtaW1hZ2UvY29tcG9uZW50cy9maWxlLWltYWdlLWVkaXQtbW9kYWwvZmlsZS1pbWFnZS1lZGl0LW1vZGFsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cnRhLXVpL3NyYy9saWIvY29tcG9uZW50cy9mb3JtL2lucHV0LWZpbGUtaW1hZ2UvY29tcG9uZW50cy9maWxlLWltYWdlLWVkaXQtbW9kYWwvZmlsZS1pbWFnZS1lZGl0LW1vZGFsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWxELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLCtEQUErRCxDQUFDO0FBRXRHLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSw0REFBNEQsQ0FBQztBQUN4RixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7O0FBc0I3RCxNQUFNLE9BQU8sMkJBQTRCLFNBQVEscUJBQXVEO0lBYzVGO0lBWlYsS0FBSyxDQUFVO0lBQ2YsU0FBUyxDQUFPO0lBQ2hCLGVBQWUsQ0FBVTtJQUN6QixnQkFBZ0IsQ0FBVTtJQUMxQixXQUFXLENBQVU7SUFDckIsbUJBQW1CLENBQVc7SUFDOUIsaUJBQWlCLEdBQVEsRUFBRSxDQUFDO0lBQzVCLFlBQVksR0FBRyxFQUFFLENBQUM7SUFDbEIsY0FBYyxHQUFHLENBQUMsQ0FBQztJQUNuQixTQUFTLEdBQW1CLEVBQUUsQ0FBQztJQUUvQixZQUNVLFNBQW9DLEVBQ3hCLElBQXFCO1FBRXpDLEtBQUssRUFBRSxDQUFDO1FBSEEsY0FBUyxHQUFULFNBQVMsQ0FBMkI7UUFJNUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUMsQ0FBQztRQUU5QixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUE7UUFDdkIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFBO1FBQy9CLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQTtRQUMzQyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFBO1FBQzdDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQTtRQUNuQyxJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFBO0lBQ3JELENBQUM7SUFFRCxVQUFVO1FBQ1IsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVPLGVBQWU7UUFDckIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUM7UUFDdEMsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUM7UUFDdEMsSUFBSSxDQUFDLFNBQVMsR0FBRztZQUNmLEdBQUcsSUFBSSxDQUFDLFNBQVM7WUFDakIsS0FBSyxFQUFFLFFBQVE7WUFDZixLQUFLLEVBQUUsUUFBUTtTQUNoQixDQUFDO0lBQ0osQ0FBQztJQUVELGVBQWUsQ0FBQyxLQUFVO1FBQ3hCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxLQUFLLENBQUM7SUFDakMsQ0FBQztJQUVELFlBQVksQ0FBQyxLQUF3QjtRQUNuQyxJQUFJLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNqQixJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7UUFDbkMsQ0FBQztJQUNILENBQUM7SUFFRCxXQUFXLENBQUMsS0FBa0I7UUFDNUIscUJBQXFCO0lBQ3ZCLENBQUM7SUFFRCxZQUFZO1FBQ1YsZ0JBQWdCO0lBQ2xCLENBQUM7SUFFRCxlQUFlO1FBQ2IsZUFBZTtJQUNqQixDQUFDO0lBRU0sS0FBSyxDQUFDLEVBQUU7UUFDYixJQUFJLENBQUMsTUFBTSxHQUFHO1lBQ1osTUFBTSxFQUFFLElBQUk7WUFDWixTQUFTLEVBQUUsbUJBQW1CLENBQzVCLElBQUksQ0FBQyxZQUFZLEVBQ2pCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUNuQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FDcEI7WUFDRCxPQUFPLEVBQUUsSUFBSSxDQUFDLFlBQVk7U0FDM0IsQ0FBQztRQUVGLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNmLENBQUM7SUFFRCxNQUFNO1FBQ0osSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUMsQ0FBQTtRQUM3QixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUE7SUFDZCxDQUFDO0lBRUQsS0FBSztRQUNILElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNwQyxDQUFDO3dHQTNGVSwyQkFBMkIsMENBZTVCLFVBQVU7NEZBZlQsMkJBQTJCLHdGQzNCeEMsNnBJQXFFQTs7NEZEMUNhLDJCQUEyQjtrQkFMdkMsU0FBUzsrQkFDRSwyQkFBMkI7OzBCQW1CbEMsTUFBTTsyQkFBQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSW1hZ2VDcm9wcGVkRXZlbnQsIEltYWdlVHJhbnNmb3JtLCBMb2FkZWRJbWFnZSB9IGZyb20gJ25neC1pbWFnZS1jcm9wcGVyJztcclxuaW1wb3J0IHsgTW9kYWxTZXJ2aWNlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vc2VydmljZXMvbW9kYWwtc2VydmljZS9oZWxwZXJzL21vZGFsLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE1vZGFsUmVmIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vc2VydmljZXMvbW9kYWwtc2VydmljZS9oZWxwZXJzL21vZGFsLXJlZic7XHJcbmltcG9ydCB7IE1PREFMX0RBVEEgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9zZXJ2aWNlcy9tb2RhbC1zZXJ2aWNlL2hlbHBlcnMvbW9kYWwtdG9rZW5zJztcclxuaW1wb3J0IHsgY29udmVydEJhc2U2NFRvRmlsZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2hlbHBlcnMnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJbWFnZUVkaXRTZWxlY3Qge1xyXG4gIHRpdGxlOiBzdHJpbmc7XHJcbiAgZmlsZUltYWdlPzogYW55O1xyXG4gIGNyb3BwZXJNYXhXaWR0aDogbnVtYmVyO1xyXG4gIGNyb3BwZXJNYXhIZWlnaHQ6IG51bWJlcjtcclxuICBhc3BlY3RSYXRpbzogbnVtYmVyO1xyXG4gIG1haW50YWluQXNwZWN0UmF0aW86IGJvb2xlYW47XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSW1hZ2VFZGl0UmVzdWx0IHtcclxuICByZXN1bHQ6IGJvb2xlYW4sXHJcbiAgZmlsZUltYWdlPzogRmlsZSxcclxuICBmaWxlVXJsPzogc3RyaW5nXHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbXJ4LWZpbGUtaW1hZ2UtZWRpdC1tb2RhbCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2ZpbGUtaW1hZ2UtZWRpdC1tb2RhbC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZmlsZS1pbWFnZS1lZGl0LW1vZGFsLmNvbXBvbmVudC5sZXNzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIEZpbGVJbWFnZUVkaXRNb2RhbENvbXBvbmVudCBleHRlbmRzIE1vZGFsU2VydmljZUNvbXBvbmVudDxJbWFnZUVkaXRTZWxlY3QsIEltYWdlRWRpdFJlc3VsdD4ge1xyXG5cclxuICB0aXRsZSE6IHN0cmluZztcclxuICBmaWxlSW1hZ2U/OiBhbnk7XHJcbiAgY3JvcHBlck1heFdpZHRoITogbnVtYmVyO1xyXG4gIGNyb3BwZXJNYXhIZWlnaHQhOiBudW1iZXI7XHJcbiAgYXNwZWN0UmF0aW8hOiBudW1iZXI7XHJcbiAgbWFpbnRhaW5Bc3BlY3RSYXRpbyE6IGJvb2xlYW47XHJcbiAgaW1hZ2VDaGFuZ2VkRXZlbnQ6IGFueSA9ICcnO1xyXG4gIGNyb3BwZWRJbWFnZSA9ICcnO1xyXG4gIGNhbnZhc1JvdGF0aW9uID0gMDtcclxuICB0cmFuc2Zvcm06IEltYWdlVHJhbnNmb3JtID0ge307XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBkaWFsb2dSZWY6IE1vZGFsUmVmPEltYWdlRWRpdFJlc3VsdD4sXHJcbiAgICBASW5qZWN0KE1PREFMX0RBVEEpIGRhdGE6IEltYWdlRWRpdFNlbGVjdCxcclxuICApIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgICB0aGlzLnJlc3VsdCA9IHtyZXN1bHQ6IGZhbHNlfTtcclxuXHJcbiAgICB0aGlzLnRpdGxlID0gZGF0YS50aXRsZVxyXG4gICAgdGhpcy5maWxlSW1hZ2UgPSBkYXRhLmZpbGVJbWFnZVxyXG4gICAgdGhpcy5jcm9wcGVyTWF4V2lkdGggPSBkYXRhLmNyb3BwZXJNYXhXaWR0aFxyXG4gICAgdGhpcy5jcm9wcGVyTWF4SGVpZ2h0ID0gZGF0YS5jcm9wcGVyTWF4SGVpZ2h0XHJcbiAgICB0aGlzLmFzcGVjdFJhdGlvID0gZGF0YS5hc3BlY3RSYXRpb1xyXG4gICAgdGhpcy5tYWludGFpbkFzcGVjdFJhdGlvID0gZGF0YS5tYWludGFpbkFzcGVjdFJhdGlvXHJcbiAgfVxyXG5cclxuICByb3RhdGVMZWZ0KCkge1xyXG4gICAgdGhpcy5jYW52YXNSb3RhdGlvbi0tO1xyXG4gICAgdGhpcy5mbGlwQWZ0ZXJSb3RhdGUoKTtcclxuICB9XHJcblxyXG4gIHJvdGF0ZVJpZ2h0KCkge1xyXG4gICAgdGhpcy5jYW52YXNSb3RhdGlvbisrO1xyXG4gICAgdGhpcy5mbGlwQWZ0ZXJSb3RhdGUoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZmxpcEFmdGVyUm90YXRlKCkge1xyXG4gICAgY29uc3QgZmxpcHBlZEggPSB0aGlzLnRyYW5zZm9ybS5mbGlwSDtcclxuICAgIGNvbnN0IGZsaXBwZWRWID0gdGhpcy50cmFuc2Zvcm0uZmxpcFY7XHJcbiAgICB0aGlzLnRyYW5zZm9ybSA9IHtcclxuICAgICAgLi4udGhpcy50cmFuc2Zvcm0sXHJcbiAgICAgIGZsaXBIOiBmbGlwcGVkVixcclxuICAgICAgZmxpcFY6IGZsaXBwZWRIXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgZmlsZUNoYW5nZUV2ZW50KGV2ZW50OiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMuaW1hZ2VDaGFuZ2VkRXZlbnQgPSBldmVudDtcclxuICB9XHJcblxyXG4gIGltYWdlQ3JvcHBlZChldmVudDogSW1hZ2VDcm9wcGVkRXZlbnQpOiB2b2lkIHtcclxuICAgIGlmIChldmVudC5iYXNlNjQpIHtcclxuICAgICAgdGhpcy5jcm9wcGVkSW1hZ2UgPSBldmVudC5iYXNlNjQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpbWFnZUxvYWRlZChpbWFnZTogTG9hZGVkSW1hZ2UpIHtcclxuICAgIC8vIGNvbnNvbGUubG9nKGltYWdlKVxyXG4gIH1cclxuXHJcbiAgY3JvcHBlclJlYWR5KCkge1xyXG4gICAgLy8gY3JvcHBlciByZWFkeVxyXG4gIH1cclxuXHJcbiAgbG9hZEltYWdlRmFpbGVkKCkge1xyXG4gICAgLy8gc2hvdyBtZXNzYWdlXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgb2soKSB7XHJcbiAgICB0aGlzLnJlc3VsdCA9IHtcclxuICAgICAgcmVzdWx0OiB0cnVlLFxyXG4gICAgICBmaWxlSW1hZ2U6IGNvbnZlcnRCYXNlNjRUb0ZpbGUoXHJcbiAgICAgICAgdGhpcy5jcm9wcGVkSW1hZ2UsXHJcbiAgICAgICAgdGhpcy5maWxlSW1hZ2UubmFtZSxcclxuICAgICAgICB0aGlzLmZpbGVJbWFnZS50eXBlXHJcbiAgICAgICksXHJcbiAgICAgIGZpbGVVcmw6IHRoaXMuY3JvcHBlZEltYWdlXHJcbiAgICB9O1xyXG5cclxuICAgIHRoaXMuY2xvc2UoKTtcclxuICB9XHJcblxyXG4gIGNhbmNlbCgpIHtcclxuICAgIHRoaXMucmVzdWx0ID0ge3Jlc3VsdDogZmFsc2V9XHJcbiAgICB0aGlzLmNsb3NlKClcclxuICB9XHJcblxyXG4gIGNsb3NlKCkge1xyXG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UodGhpcy5yZXN1bHQpO1xyXG4gIH1cclxufVxyXG4iLCI8bXJ4LW1vZGFsXHJcbiAgW3RpdGxlXT1cInRpdGxlXCJcclxuICBbc2l6ZV09XCInbWVkaXVtJ1wiXHJcbiAgKGNsb3NlKT1cImNhbmNlbCgpXCJcclxuPlxyXG4gIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wgY29sLTEyXCI+XHJcbiAgICAgIDxwPtCS0YvQsdGA0LDQvdC90LDRjyDQvtCx0LvQsNGB0YLRjCDQsdGD0LTQtdGCINC/0L7QutCw0LfRi9Cy0LDRgtGM0YHRjyDQvdCwINC+0LHQu9C+0LbQutC1INGB0YLRgNCw0L3QuNGG0Ys8L3A+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sIGNvbC0xMlwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibXJ4LWlucHV0LWltYWdlLWNyb3BwZXJfX3dyYXBwZXJcIj5cclxuICAgICAgICA8aW1hZ2UtY3JvcHBlclxyXG4gICAgICAgICAgZm9ybWF0PVwicG5nXCJcclxuICAgICAgICAgIG91dHB1dD1cImJhc2U2NFwiXHJcbiAgICAgICAgICBbYWxpZ25JbWFnZV09XCInY2VudGVyJ1wiXHJcbiAgICAgICAgICBbaW1hZ2VGaWxlXT1cImZpbGVJbWFnZVwiXHJcbiAgICAgICAgICBbbWFpbnRhaW5Bc3BlY3RSYXRpb109XCJtYWludGFpbkFzcGVjdFJhdGlvXCJcclxuICAgICAgICAgIFthc3BlY3RSYXRpb109XCJhc3BlY3RSYXRpb1wiXHJcbiAgICAgICAgICBbYmFja2dyb3VuZENvbG9yXT1cIicjMDAwMDAwJ1wiXHJcbiAgICAgICAgICBbY2FudmFzUm90YXRpb25dPVwiY2FudmFzUm90YXRpb25cIlxyXG4gICAgICAgICAgW3RyYW5zZm9ybV09XCJ0cmFuc2Zvcm1cIlxyXG4gICAgICAgICAgW2Nyb3BwZXJNYXhXaWR0aF09XCJjcm9wcGVyTWF4V2lkdGhcIlxyXG4gICAgICAgICAgW2Nyb3BwZXJNYXhIZWlnaHRdPVwiY3JvcHBlck1heEhlaWdodFwiXHJcbiAgICAgICAgICAobG9hZEltYWdlRmFpbGVkKT1cImxvYWRJbWFnZUZhaWxlZCgpXCJcclxuICAgICAgICAgIChpbWFnZUNyb3BwZWQpPVwiaW1hZ2VDcm9wcGVkKCRldmVudClcIlxyXG4gICAgICAgICAgKGltYWdlTG9hZGVkKT1cImltYWdlTG9hZGVkKCRldmVudClcIlxyXG4gICAgICAgICAgKGNyb3BwZXJSZWFkeSk9XCJjcm9wcGVyUmVhZHkoKVwiXHJcbiAgICAgICAgPjwvaW1hZ2UtY3JvcHBlcj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm1yeC1pbnB1dC1pbWFnZS1jcm9wcGVyX19jb250cm9sc1wiPlxyXG4gICAgICAgICAgPHN2ZyAoY2xpY2spPVwicm90YXRlTGVmdCgpXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gICAgICAgICAgICA8cmVjdCB4PVwiMlwiIHk9XCIxNVwiIHdpZHRoPVwiOFwiIGhlaWdodD1cIjhcIiByeD1cIjAuODg4ODg5XCIgc3Ryb2tlPVwid2hpdGVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XHJcbiAgICAgICAgICAgIDxwYXRoIGZpbGwtcnVsZT1cImV2ZW5vZGRcIiBjbGlwLXJ1bGU9XCJldmVub2RkXCIgZD1cIk00LjUgMTguNUM1LjA1MjI4IDE4LjUgNS41IDE4LjA1MjMgNS41IDE3LjVDNS41IDE2Ljk0NzcgNS4wNTIyOCAxNi41IDQuNSAxNi41QzMuOTQ3NzIgMTYuNSAzLjUgMTYuOTQ3NyAzLjUgMTcuNUMzLjUgMTguMDUyMyAzLjk0NzcyIDE4LjUgNC41IDE4LjVaXCIgc3Ryb2tlPVwid2hpdGVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XHJcbiAgICAgICAgICAgIDxwYXRoIGQ9XCJNOS45OTk3OCAyMC4zMzMzTDcuNzc3NTYgMTguMTExMUwyLjg4ODY3IDIzXCIgc3Ryb2tlPVwid2hpdGVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XHJcbiAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTMuMTU3NSAyMS42ODQyQzE4LjU5MzIgMjEuNjg0MiAyMi45OTk2IDE3LjI3NzcgMjIuOTk5NiAxMS44NDIxQzIyLjk5OTYgNi40MDY0NiAxOC41OTMyIDIgMTMuMTU3NSAyQzcuNzIxODkgMiAzLjMxNTQzIDYuNDA2NDYgMy4zMTU0MyAxMS44NDIxXCIgc3Ryb2tlPVwid2hpdGVcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIvPlxyXG4gICAgICAgICAgICA8cGF0aCBkPVwiTTEuMDAwMjYgMTAuMTA1MkwzLjMxNjA1IDEyLjQyMUw1LjYzMTg0IDEwLjEwNTJcIiBzdHJva2U9XCJ3aGl0ZVwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cclxuICAgICAgICAgIDwvc3ZnPlxyXG5cclxuICAgICAgICAgIDxzdmcgKGNsaWNrKT1cInJvdGF0ZVJpZ2h0KClcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgIDxyZWN0IHg9XCIxNFwiIHk9XCIxNVwiIHdpZHRoPVwiOFwiIGhlaWdodD1cIjhcIiByeD1cIjAuODg4ODg5XCIgc3Ryb2tlPVwid2hpdGVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XHJcbiAgICAgICAgICAgIDxwYXRoIGZpbGwtcnVsZT1cImV2ZW5vZGRcIiBjbGlwLXJ1bGU9XCJldmVub2RkXCIgZD1cIk0xNi41IDE4LjVDMTcuMDUyMyAxOC41IDE3LjUgMTguMDUyMyAxNy41IDE3LjVDMTcuNSAxNi45NDc3IDE3LjA1MjMgMTYuNSAxNi41IDE2LjVDMTUuOTQ3NyAxNi41IDE1LjUgMTYuOTQ3NyAxNS41IDE3LjVDMTUuNSAxOC4wNTIzIDE1Ljk0NzcgMTguNSAxNi41IDE4LjVaXCIgc3Ryb2tlPVwid2hpdGVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XHJcbiAgICAgICAgICAgIDxwYXRoIGQ9XCJNMjEuOTk5OCAyMC4zMzMzTDE5Ljc3NzYgMTguMTExMUwxNC44ODg3IDIzXCIgc3Ryb2tlPVwid2hpdGVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XHJcbiAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTAuODQyNSAyMS42ODQyQzUuNDA2ODIgMjEuNjg0MiAxLjAwMDM2IDE3LjI3NzcgMS4wMDAzNiAxMS44NDIxQzEuMDAwMzYgNi40MDY0NiA1LjQwNjgyIDIgMTAuODQyNSAyQzE2LjI3ODEgMiAyMC42ODQ2IDYuNDA2NDYgMjAuNjg0NiAxMS44NDIxXCIgc3Ryb2tlPVwid2hpdGVcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIvPlxyXG4gICAgICAgICAgICA8cGF0aCBkPVwiTTIyLjk5OTcgMTAuMTA1MkwyMC42ODQgMTIuNDIxTDE4LjM2ODIgMTAuMTA1MlwiIHN0cm9rZT1cIndoaXRlXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxyXG4gICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxuZy10ZW1wbGF0ZSAjZm9vdGVyQ29udGVudD5cclxuICAgIDxtcngtYnV0dG9uXHJcbiAgICAgIFtjdXN0b21DbGFzc2VzXT1cIidtci0zJ1wiXHJcbiAgICAgIFt0eXBlXT1cIidzZWNvbmRhcnknXCJcclxuICAgICAgW3NpemVdPVwiJ21lZGl1bSdcIlxyXG4gICAgICAoY2xpY2spPVwiY2FuY2VsKClcIlxyXG4gICAgPtCe0YLQvNC10L3QuNGC0YxcclxuICAgIDwvbXJ4LWJ1dHRvbj5cclxuICAgIDxtcngtYnV0dG9uXHJcbiAgICAgIFt0eXBlXT1cIidwcmltYXJ5J1wiXHJcbiAgICAgIFtzaXplXT1cIidtZWRpdW0nXCJcclxuICAgICAgKGNsaWNrKT1cIm9rKClcIlxyXG4gICAgPtCf0L7QtNGC0LLQtdGA0LTQuNGC0YxcclxuICAgIDwvbXJ4LWJ1dHRvbj5cclxuICA8L25nLXRlbXBsYXRlPlxyXG48L21yeC1tb2RhbD5cclxuXHJcblxyXG4iXX0=
@@ -32,7 +32,7 @@ export class InputFileImageComponent {
32
32
  cropperMaxWidth = 0;
33
33
  cropperMaxHeight = 0;
34
34
  aspectRatio = 1 / 1;
35
- maintainAspectRatio = false;
35
+ maintainAspectRatio = true;
36
36
  uploadEndPoint;
37
37
  deleteEndPoint;
38
38
  downloadEndPoint;
@@ -127,13 +127,19 @@ export class InputFileImageComponent {
127
127
  cropperMaxHeight: this.cropperMaxHeight,
128
128
  aspectRatio: this.aspectRatio,
129
129
  maintainAspectRatio: this.maintainAspectRatio
130
- })
130
+ }, {})
131
131
  .afterClosed()
132
132
  .subscribe((res) => {
133
133
  if (res.result && res.fileImage) {
134
134
  data.file = res.fileImage;
135
+ this._uploadFile(data);
136
+ }
137
+ else {
138
+ const findIdx = this.files.findIndex(d => d.tempUuid === data.tempUuid);
139
+ if (findIdx != -1) {
140
+ this.files = this.files.filter((f, idx) => idx !== findIdx);
141
+ }
135
142
  }
136
- this._uploadFile(data);
137
143
  });
138
144
  }
139
145
  });
@@ -149,7 +155,7 @@ export class InputFileImageComponent {
149
155
  cropperMaxHeight: this.cropperMaxHeight,
150
156
  aspectRatio: this.aspectRatio,
151
157
  maintainAspectRatio: this.maintainAspectRatio
152
- })
158
+ }, {})
153
159
  .afterClosed()
154
160
  .subscribe((res) => {
155
161
  if (res.result && res.fileImage) {
@@ -347,4 +353,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
347
353
  }], filesChanged: [{
348
354
  type: Output
349
355
  }] } });
350
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtZmlsZS1pbWFnZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJ0YS11aS9zcmMvbGliL2NvbXBvbmVudHMvZm9ybS9pbnB1dC1maWxlLWltYWdlL2lucHV0LWZpbGUtaW1hZ2UuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlydGEtdWkvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0vaW5wdXQtZmlsZS1pbWFnZS9pbnB1dC1maWxlLWltYWdlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFFdkIsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUNOLGlCQUFpQixFQUNsQixNQUFNLGVBQWUsQ0FBQztBQUl2QixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsV0FBVyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDdEYsT0FBTyxFQUFFLEVBQUUsSUFBSSxNQUFNLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDN0IsT0FBTyxFQUFhLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLG9FQUFvRSxDQUFDO0FBQ2pILE9BQU8sRUFBRSxzQkFBc0IsRUFBMkIsTUFBTSx5QkFBeUIsQ0FBQzs7Ozs7QUFVMUYsTUFBTSxPQUFPLHVCQUF1QjtJQTBEeEI7SUFDQTtJQUNBO0lBM0RWLFdBQVcsR0FBRyxXQUFXLENBQUM7SUFDMUIsVUFBVSxDQUFVO0lBQ3BCLGlCQUFpQixHQUFhLEVBQUUsQ0FBQztJQUNqQyxLQUFLLEdBQXFCLEVBQUUsQ0FB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QUNyQyxDQUFDOzRCQUVELElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxFQUFFLENBQUM7d0JBQ2pDLENBQUM7Z0JBQ0wsQ0FBQztZQUNILENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQztJQUNILENBQUM7d0dBL1VVLHVCQUF1Qjs0RkFBdkIsdUJBQXVCLHFzQkM1QnBDLDR6T0F1SkE7OzRGRDNIYSx1QkFBdUI7a0JBUm5DLFNBQVM7K0JBQ0Usc0JBQXNCLGlCQUdqQixpQkFBaUIsQ0FBQyxJQUFJLG1CQUNwQix1QkFBdUIsQ0FBQyxNQUFNO2lKQVMvQixJQUFJO3NCQUFuQixLQUFLO2dCQUVVLGFBQWE7c0JBQTVCLEtBQUs7Z0JBQ1UsV0FBVztzQkFBMUIsS0FBSztnQkFDVSxRQUFRO3NCQUF2QixLQUFLO2dCQUNVLFFBQVE7c0JBQXZCLEtBQUs7Z0JBQ1UsT0FBTztzQkFBdEIsS0FBSztnQkFDVSxRQUFRO3NCQUF2QixLQUFLO2dCQUNVLFFBQVE7c0JBQXZCLEtBQUs7Z0JBR1UsUUFBUTtzQkFBdkIsS0FBSztnQkFHVSxlQUFlO3NCQUE5QixLQUFLO2dCQUNVLGdCQUFnQjtzQkFBL0IsS0FBSztnQkFDVSxXQUFXO3NCQUExQixLQUFLO2dCQUNVLG1CQUFtQjtzQkFBbEMsS0FBSztnQkFFVSxjQUFjO3NCQUE3QixLQUFLO2dCQUNVLGNBQWM7c0JBQTdCLEtBQUs7Z0JBQ1UsZ0JBQWdCO3NCQUEvQixLQUFLO2dCQUVVLGFBQWE7c0JBQTVCLEtBQUs7Z0JBR0YsU0FBUztzQkFEWixLQUFLO3VCQUFDLE9BQU87Z0JBY0gscUJBQXFCO3NCQUQvQixLQUFLO3VCQUFDLG1CQUFtQjtnQkFXVCxZQUFZO3NCQUE1QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBDb21wb25lbnQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIElucHV0LFxyXG4gIE91dHB1dCxcclxuICBWaWV3RW5jYXBzdWxhdGlvblxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBJbnB1dEZpbGVNb2RlbCwgVXBsb2FkZWRGaWxlTW9kZWwsIFVwbG9hZGVkUmVzdWx0TW9kZWwgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMnO1xyXG5pbXBvcnQgeyBGaWxlVXBsb2FkU2VydmljZSwgTW9kYWxTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMnO1xyXG5pbXBvcnQgeyBGaWxlU3lzdGVtRmlsZUVudHJ5LCBOZ3hGaWxlRHJvcEVudHJ5IH0gZnJvbSAnbmd4LWZpbGUtZHJvcCc7XHJcbmltcG9ydCB7IGNvbnZlcnRCYXNlNjRUb0ZpbGUsIGZvcm1hdEJ5dGVzLCBnZXRCYXNlNjRGcm9tVXJsIH0gZnJvbSAnLi4vLi4vLi4vaGVscGVycyc7XHJcbmltcG9ydCB7IHY0IGFzIHV1aWR2NCB9IGZyb20gJ3V1aWQnO1xyXG5pbXBvcnQgeyBjYXRjaEVycm9yIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBFTVBUWSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBIdHRwRXZlbnQsIEh0dHBFdmVudFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IEZpbGVJbWFnZUVkaXRNb2RhbENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9maWxlLWltYWdlLWVkaXQtbW9kYWwvZmlsZS1pbWFnZS1lZGl0LW1vZGFsLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IElucHV0RmlsZUltYWdlVHlwZUVudW0sIElucHV0RmlsZUltYWdlVHlwZVR5cGVzIH0gZnJvbSAnLi9pbnB1dC1maWxlLWltYWdlLmVudW0nO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdtcngtaW5wdXQtZmlsZS1pbWFnZScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2lucHV0LWZpbGUtaW1hZ2UuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2lucHV0LWZpbGUtaW1hZ2UuY29tcG9uZW50Lmxlc3MnXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXHJcbn0pXHJcblxyXG5leHBvcnQgY2xhc3MgSW5wdXRGaWxlSW1hZ2VDb21wb25lbnQge1xyXG4gIGZvcm1hdEJ5dGVzID0gZm9ybWF0Qnl0ZXM7XHJcbiAgZXh0ZW5zaW9ucz86IHN0cmluZztcclxuICBhbGxvd2VkRXh0ZW5zaW9uczogc3RyaW5nW10gPSBbXTtcclxuICBmaWxlczogSW5wdXRGaWxlTW9kZWxbXSA9IFtdO1xyXG5cclxuICBASW5wdXQoKSBwdWJsaWMgdHlwZTogSW5wdXRGaWxlSW1hZ2VUeXBlVHlwZXMgPSAnZGVmYXVsdCc7XHJcblxyXG4gIEBJbnB1dCgpIHB1YmxpYyBjdXN0b21DbGFzc2VzID0gJyc7XHJcbiAgQElucHV0KCkgcHVibGljIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBkaXNhYmxlZCA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyByZWFkb25seSA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBtYXhTaXplID0gMzE0NTcyODA7XHJcbiAgQElucHV0KCkgcHVibGljIG1heEZpbGVzID0gNTtcclxuICBASW5wdXQoKSBwdWJsaWMgbWluRmlsZXMgPSAwO1xyXG5cclxuICAvLyDQn9Cw0YDQsNC80LXRgtGA0YssINC60L7RgtC+0YDRi9C1INCx0YPQtNGD0YIg0L/QtdGA0LXQtNCw0LLQsNGC0YzRgdGPINCyINGE0L7RgNC80LVcclxuICBASW5wdXQoKSBwdWJsaWMgZm9ybURhdGE6IGFueSA9IHt9O1xyXG5cclxuICAvLyBDUk9QUEVSXHJcbiAgQElucHV0KCkgcHVibGljIGNyb3BwZXJNYXhXaWR0aCA9IDA7XHJcbiAgQElucHV0KCkgcHVibGljIGNyb3BwZXJNYXhIZWlnaHQgPSAwO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBhc3BlY3RSYXRpbyA9IDEgLyAxO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBtYWludGFpbkFzcGVjdFJhdGlvID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpIHB1YmxpYyB1cGxvYWRFbmRQb2ludCE6IHN0cmluZztcclxuICBASW5wdXQoKSBwdWJsaWMgZGVsZXRlRW5kUG9pbnQ/OiBzdHJpbmc7XHJcbiAgQElucHV0KCkgcHVibGljIGRvd25sb2FkRW5kUG9pbnQ/OiBzdHJpbmc7XHJcblxyXG4gIEBJbnB1dCgpIHB1YmxpYyBkZWxldGVDb25maXJtPzogKGZpbGU6IFVwbG9hZGVkRmlsZU1vZGVsLCByZXN1bHQ6IChvazogYm9vbGVhbikgPT4gdm9pZCkgPT4gdm9pZDtcclxuXHJcbiAgQElucHV0KCdmaWxlcycpXHJcbiAgc2V0IGluaXRGaWxlcyhkYXRhOiBVcGxvYWRlZEZpbGVNb2RlbFtdIHwgVXBsb2FkZWRGaWxlTW9kZWwpIHtcclxuICAgIGlmIChkYXRhKSB7XHJcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KGRhdGEpKSB7XHJcbiAgICAgICAgdGhpcy5maWxlcyA9IGRhdGEubWFwKHMgPT4gKHsuLi5zfSkpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuZmlsZXMgPSBbey4uLmRhdGF9XTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5maWxlcyA9IFtdO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQElucHV0KCdhbGxvd2VkRXh0ZW5zaW9ucycpXHJcbiAgcHVibGljIHNldCBpbml0QWxsb3dlZEV4dGVuc2lvbnModmFsOiBzdHJpbmdbXSkge1xyXG4gICAgaWYgKHZhbCkge1xyXG4gICAgICB0aGlzLmFsbG93ZWRFeHRlbnNpb25zID0gdmFsO1xyXG4gICAgICB0aGlzLmV4dGVuc2lvbnMgPSB2YWwuam9pbignLCAnKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuYWxsb3dlZEV4dGVuc2lvbnMgPSBbXTtcclxuICAgICAgdGhpcy5leHRlbnNpb25zID0gdW5kZWZpbmVkO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQE91dHB1dCgpIHB1YmxpYyBmaWxlc0NoYW5nZWQ6IEV2ZW50RW1pdHRlcjxJbnB1dEZpbGVNb2RlbFtdPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGltYWdlVXBsb2FkU2VydmljZTogRmlsZVVwbG9hZFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9tb2RhbFNlcnZpY2U6IE1vZGFsU2VydmljZSxcclxuICAgIHByaXZhdGUgX2RldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZlxyXG4gICkge1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBnZXREZWZhdWx0UGxhY2Vob2xkZXIoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLnR5cGUgPT09ICdhdmF0YXInID9cclxuICAgICAgJ9CX0LDQs9GA0YPQt9C40YLQtSDRhNC+0YLQvtCz0YDQsNGE0LjRjicgOlxyXG4gICAgICAn0J/QtdGA0LXQvdC10YHQuNGC0LUg0YTQsNC50Lsg0YEg0YPRgdGC0YDQvtC50YHRgtCy0LAg0LjQu9C4INC90LDQttC80LjRgtC1INC90LAg0LTQsNC90L3QvtC1INC/0L7Qu9C1INC00LvRjyDQtNC+0LHQsNCy0LvQtdC90LjRjyDRhNCw0LnQu9CwJztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgZ2V0Q2xhc3NlcygpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIGAke0lucHV0RmlsZUltYWdlVHlwZUVudW1bdGhpcy50eXBlXX0gJHt0aGlzLmN1c3RvbUNsYXNzZXN9YDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgZ2V0RHJvcFpvbmVDbGFzc2VzKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gYG1yeC1pbnB1dC1maWxlLWltYWdlLWRyb3AgJHt0aGlzLmRpc2FibGVkID8gJ21yeC1pbnB1dC1maWxlLXBpY3R1cmUtZHJvcC1kaXNhYmxlZCcgOiAnJ31gO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBjYW5BZGQoKSB7XHJcbiAgICBpZiAodGhpcy50eXBlID09PSAnYXZhdGFyJykge1xyXG4gICAgICByZXR1cm4gdGhpcy5maWxlcy5sZW5ndGggPCAxO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHRoaXMubWF4RmlsZXMgPiB0aGlzLmZpbGVzLmZpbHRlcihzID0+ICFzLmVycm9yKS5sZW5ndGg7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9jaGVja0Vycm9ycygpIHtcclxuXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZHJvcHBlZChmaWxlczogTmd4RmlsZURyb3BFbnRyeVtdKSB7XHJcbiAgICBjb25zdCBkcm9wcGVkRmlsZSA9IGZpbGVzWzBdO1xyXG5cclxuICAgIGlmIChkcm9wcGVkRmlsZS5maWxlRW50cnkuaXNGaWxlKSB7XHJcbiAgICAgIGNvbnN0IGZpbGVFbnRyeSA9IGRyb3BwZWRGaWxlLmZpbGVFbnRyeSBhcyBGaWxlU3lzdGVtRmlsZUVudHJ5O1xyXG5cclxuICAgICAgZmlsZUVudHJ5LmZpbGUoKGZpbGU6IEZpbGUpID0+IHtcclxuICAgICAgICBjb25zdCBkYXRhOiBJbnB1dEZpbGVNb2RlbCA9IHtcclxuICAgICAgICAgIGlkOiAnJyxcclxuICAgICAgICAgIHRlbXBVdWlkOiB1dWlkdjQoKSxcclxuICAgICAgICAgIG5hbWU6IGZpbGUubmFtZSxcclxuICAgICAgICAgIGxlbmd0aDogZmlsZS5zaXplLFxyXG4gICAgICAgICAgdXBsb2FkaW5nOiB0cnVlLFxyXG4gICAgICAgICAgcGVyY2VudGFnZTogMCxcclxuICAgICAgICAgIGZpbGU6IGZpbGUsXHJcbiAgICAgICAgfSBhcyBJbnB1dEZpbGVNb2RlbDtcclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLmNhbkFkZCkge1xyXG4gICAgICAgICAgZGF0YS5lcnJvciA9ICfQodC70LjRiNC60L7QvCDQvNC90L7Qs9C+INGE0LDQudC70L7Qsic7XHJcbiAgICAgICAgICBkYXRhLnVwbG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5maWxlcy5wdXNoKGRhdGEpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5maWxlcy5wdXNoKGRhdGEpO1xyXG5cclxuICAgICAgICBpZiAoZGF0YS5maWxlICYmIGRhdGEuZmlsZS5zaXplID4gdGhpcy5tYXhTaXplKSB7XHJcbiAgICAgICAgICBkYXRhLmVycm9yID0gJ9Ch0LvQuNGI0LrQvtC8INCx0L7Qu9GM0YjQvtC5INGE0LDQudC7JztcclxuICAgICAgICAgIGRhdGEudXBsb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoZGF0YS5maWxlICYmIGRhdGEuZmlsZS5zaXplID09IDApIHtcclxuICAgICAgICAgIGRhdGEuZXJyb3IgPSAn0J/Rg9GB0YLQvtC5INGE0LDQudC7JztcclxuICAgICAgICAgIGRhdGEudXBsb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5hbGxvd2VkRXh0ZW5zaW9ucy5sZW5ndGggPiAwICYmICF0aGlzLmFsbG93ZWRFeHRlbnNpb25zLnNvbWUoXHJcbiAgICAgICAgICBzID0+IGRhdGEuZmlsZT8ubmFtZS50b0xvd2VyQ2FzZSgpLmVuZHNXaXRoKHMudG9Mb3dlckNhc2UoKSkpKSB7XHJcbiAgICAgICAgICBkYXRhLmVycm9yID0gJ9Cd0LXQstC10YDQvdGL0Lkg0YTQvtGA0LzQsNGCINGE0LDQudC70LAnO1xyXG4gICAgICAgICAgZGF0YS51cGxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICghZGF0YS5lcnJvcikge1xyXG4gICAgICAgICAgdGhpcy5fbW9kYWxTZXJ2aWNlLm9wZW4oRmlsZUltYWdlRWRpdE1vZGFsQ29tcG9uZW50LCB7XHJcbiAgICAgICAgICAgIHRpdGxlOiAn0KDQldCU0JDQmtCi0JjQoNCe0JLQkNCd0JjQlSDQmNCX0J7QkdCg0JDQltCV0J3QmNCvJyxcclxuICAgICAgICAgICAgZmlsZUltYWdlOiBmaWxlLFxyXG4gICAgICAgICAgICBjcm9wcGVyTWF4V2lkdGg6IHRoaXMuY3JvcHBlck1heFdpZHRoLFxyXG4gICAgICAgICAgICBjcm9wcGVyTWF4SGVpZ2h0OiB0aGlzLmNyb3BwZXJNYXhIZWlnaHQsXHJcbiAgICAgICAgICAgIGFzcGVjdFJhdGlvOiB0aGlzLmFzcGVjdFJhdGlvLFxyXG4gICAgICAgICAgICBtYWludGFpbkFzcGVjdFJhdGlvOiB0aGlzLm1haW50YWluQXNwZWN0UmF0aW9cclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIC5hZnRlckNsb3NlZCgpXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG4gICAgICAgICAgICAgIGlmIChyZXMucmVzdWx0ICYmIHJlcy5maWxlSW1hZ2UpIHtcclxuICAgICAgICAgICAgICAgIGRhdGEuZmlsZSA9IHJlcy5maWxlSW1hZ2VcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgdGhpcy5fdXBsb2FkRmlsZShkYXRhKVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGNoYW5nZVByZXZpZXcoZXZlbnQ6IGFueSwgZmlsZTogSW5wdXRGaWxlTW9kZWwpIHtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG5cclxuICAgIGdldEJhc2U2NEZyb21VcmwodGhpcy5kb3dubG9hZFVybChmaWxlKSkudGhlbigoYmFzZTY0VXJsOiBhbnkpID0+IHtcclxuICAgICAgdGhpcy5fbW9kYWxTZXJ2aWNlLm9wZW4oRmlsZUltYWdlRWRpdE1vZGFsQ29tcG9uZW50LCB7XHJcbiAgICAgICAgdGl0bGU6ICfQoNCV0JTQkNCa0KLQmNCg0J7QktCQ0J3QmNCVINCY0JfQntCR0KDQkNCW0JXQndCY0K8nLFxyXG4gICAgICAgIGZpbGVJbWFnZTogY29udmVydEJhc2U2NFRvRmlsZShiYXNlNjRVcmwsIGZpbGUubmFtZSB8fCAnJywgJ2ltYWdlL3BuZycpLFxyXG4gICAgICAgIGNyb3BwZXJNYXhXaWR0aDogdGhpcy5jcm9wcGVyTWF4V2lkdGgsXHJcbiAgICAgICAgY3JvcHBlck1heEhlaWdodDogdGhpcy5jcm9wcGVyTWF4SGVpZ2h0LFxyXG4gICAgICAgIGFzcGVjdFJhdGlvOiB0aGlzLmFzcGVjdFJhdGlvLFxyXG4gICAgICAgIG1haW50YWluQXNwZWN0UmF0aW86IHRoaXMubWFpbnRhaW5Bc3BlY3RSYXRpb1xyXG4gICAgICB9KVxyXG4gICAgICAgIC5hZnRlckNsb3NlZCgpXHJcbiAgICAgICAgLnN1YnNjcmliZSgocmVzKSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzLnJlc3VsdCAmJiByZXMuZmlsZUltYWdlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUZpbGUoZmlsZSwgcmVzLmZpbGVJbWFnZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBkZWxldGUoZXZlbnQ6IGFueSwgZmlsZTogSW5wdXRGaWxlTW9kZWwpOiB2b2lkIHtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG5cclxuICAgIGlmICh0aGlzLmRlbGV0ZUNvbmZpcm0pIHtcclxuICAgICAgdGhpcy5kZWxldGVDb25maXJtKGZpbGUsIChvaykgPT4ge1xyXG4gICAgICAgIGlmIChvaykge1xyXG4gICAgICAgICAgdGhpcy5fZGVsZXRlRmlsZShmaWxlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5fZGVsZXRlRmlsZShmaWxlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBjbGVhcihmaWxlOiBJbnB1dEZpbGVNb2RlbCk6IHZvaWQge1xyXG4gICAgaWYgKGZpbGUudXBsb2FkaW5nKSB7XHJcbiAgICAgIGlmIChmaWxlLmV4ZWN1dGlvbikge1xyXG4gICAgICAgIGZpbGUuZXhlY3V0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBmaW5kRmlsZUlkeCA9IHRoaXMuZmlsZXMuaW5kZXhPZihmaWxlKTtcclxuXHJcbiAgICBpZiAoZmluZEZpbGVJZHggPj0gMCkge1xyXG4gICAgICB0aGlzLmZpbGVzLnNwbGljZShmaW5kRmlsZUlkeCwgMSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZG93bmxvYWRVcmwoZmlsZTogVXBsb2FkZWRGaWxlTW9kZWwpOiBzdHJpbmcge1xyXG4gICAgaWYgKHRoaXMuZG93bmxvYWRFbmRQb2ludCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5fdHJhbnNmb3JtVXJsKHRoaXMuZG93bmxvYWRFbmRQb2ludCwgZmlsZSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gJyc7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZmlsZU92ZXIoZXZlbnQ6IGFueSkge1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGZpbGVMZWF2ZShldmVudDogYW55KSB7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF90cmFuc2Zvcm1VcmwodXJsOiBzdHJpbmcsIGZpbGU6IFVwbG9hZGVkRmlsZU1vZGVsKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB1cmwucmVwbGFjZSgve2lkfS8sIGZpbGUuaWQpXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9mb3JtRGF0YUtleXMoKTogc3RyaW5nW10ge1xyXG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuZm9ybURhdGEpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfY3JlYXRlRm9ybURhdGEoKTogRm9ybURhdGEge1xyXG4gICAgY29uc3QgZm9ybSA9IG5ldyBGb3JtRGF0YSgpO1xyXG4gICAgaWYgKHRoaXMubWF4RmlsZXMpIHtcclxuICAgICAgZm9ybS5hcHBlbmQoJ01heEZpbGVzJywgdGhpcy5tYXhGaWxlcy50b1N0cmluZygxMCkpO1xyXG4gICAgfVxyXG4gICAgY29uc3Qga2V5cyA9IHRoaXMuX2Zvcm1EYXRhS2V5cygpO1xyXG4gICAga2V5cy5mb3JFYWNoKGtleSA9PiBmb3JtLmFwcGVuZChrZXksIHRoaXMuZm9ybURhdGFba2V5XSkpO1xyXG4gICAgcmV0dXJuIGZvcm07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9kZWxldGVGaWxlKGZpbGU6IElucHV0RmlsZU1vZGVsKSB7XHJcbiAgICBjb25zdCBmaW5kRmlsZSA9IHRoaXMuZmlsZXMuZmluZChzID0+IHMuaWQgPT09IGZpbGUuaWQpO1xyXG5cclxuICAgIGlmIChmaW5kRmlsZSkge1xyXG4gICAgICBpZiAodGhpcy5kZWxldGVFbmRQb2ludCkge1xyXG4gICAgICAgIGZpbmRGaWxlLmRlbGV0aW5nID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgdGhpcy5pbWFnZVVwbG9hZFNlcnZpY2UuZGVsZXRlKHRoaXMuZGVsZXRlRW5kUG9pbnQpLnN1YnNjcmliZShyZXN1bHQgPT4ge1xyXG4gICAgICAgICAgdGhpcy5maWxlcy5zcGxpY2UodGhpcy5maWxlcy5pbmRleE9mKGZpbmRGaWxlKSwgMSk7XHJcbiAgICAgICAgICB0aGlzLmZpbGVzQ2hhbmdlZC5lbWl0KHRoaXMuZmlsZXMpO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmZpbGVzLnNwbGljZSh0aGlzLmZpbGVzLmluZGV4T2YoZmluZEZpbGUpLCAxKTtcclxuICAgICAgICB0aGlzLmZpbGVzQ2hhbmdlZC5lbWl0KHRoaXMuZmlsZXMpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF91cGRhdGVGaWxlKG9sZEZpbGU6IElucHV0RmlsZU1vZGVsLCBuZXdGaWxlOiBGaWxlKSB7XHJcbiAgICBjb25zdCBmaW5kRmlsZSA9IHRoaXMuZmlsZXMuZmluZCgoczogSW5wdXRGaWxlTW9kZWwpID0+IHtcclxuICAgICAgaWYgKHMuaWQgIT09ICcnKSB7XHJcbiAgICAgICAgcmV0dXJuIHMuaWQgPT09IG9sZEZpbGUuaWQ7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIHMudGVtcFV1aWQgPT09IG9sZEZpbGUudGVtcFV1aWQ7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIGlmIChmaW5kRmlsZSkge1xyXG4gICAgICBjb25zdCBkYXRhOiBJbnB1dEZpbGVNb2RlbCA9IHtcclxuICAgICAgICBpZDogJycsXHJcbiAgICAgICAgdGVtcFV1aWQ6IHV1aWR2NCgpLFxyXG4gICAgICAgIG5hbWU6IG5ld0ZpbGUubmFtZSxcclxuICAgICAgICBsZW5ndGg6IG5ld0ZpbGUuc2l6ZSxcclxuICAgICAgICB1cGxvYWRpbmc6IHRydWUsXHJcbiAgICAgICAgcGVyY2VudGFnZTogMCxcclxuICAgICAgICBmaWxlOiBuZXdGaWxlLFxyXG4gICAgICB9IGFzIElucHV0RmlsZU1vZGVsO1xyXG5cclxuICAgICAgaWYgKHRoaXMuZGVsZXRlRW5kUG9pbnQpIHtcclxuICAgICAgICBmaW5kRmlsZS5kZWxldGluZyA9IHRydWU7XHJcblxyXG4gICAgICAgIHRoaXMuaW1hZ2VVcGxvYWRTZXJ2aWNlLmRlbGV0ZSh0aGlzLmRlbGV0ZUVuZFBvaW50KS5zdWJzY3JpYmUocmVzdWx0ID0+IHtcclxuICAgICAgICAgIHRoaXMuZmlsZXMuc3BsaWNlKHRoaXMuZmlsZXMuaW5kZXhPZihmaW5kRmlsZSksIDEpO1xyXG4gICAgICAgICAgdGhpcy5maWxlcy5wdXNoKGRhdGEpO1xyXG4gICAgICAgICAgdGhpcy5fdXBsb2FkRmlsZShkYXRhKTtcclxuXHJcbiAgICAgICAgICB0aGlzLl9kZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuZmlsZXMucHVzaChkYXRhKTtcclxuICAgICAgICB0aGlzLl91cGxvYWRGaWxlKGRhdGEpO1xyXG5cclxuICAgICAgICB0aGlzLl9kZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3VwbG9hZEZpbGUoZGF0YTogSW5wdXRGaWxlTW9kZWwpIHtcclxuICAgIGNvbnN0IGZvcm1EYXRhID0gdGhpcy5fY3JlYXRlRm9ybURhdGEoKTtcclxuXHJcbiAgICBpZiAoZGF0YS5maWxlKSB7XHJcbiAgICAgIGZvcm1EYXRhLmFwcGVuZCgnRmlsZScsIGRhdGEuZmlsZSk7XHJcblxyXG4gICAgICBkYXRhLmV4ZWN1dGlvbiA9IHRoaXMuaW1hZ2VVcGxvYWRTZXJ2aWNlLnVwbG9hZCh0aGlzLnVwbG9hZEVuZFBvaW50LCBmb3JtRGF0YSkucGlwZShcclxuICAgICAgICBjYXRjaEVycm9yKChlcnIpID0+IHtcclxuICAgICAgICAgIGRhdGEudXBsb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICByZXR1cm4gRU1QVFk7XHJcbiAgICAgICAgfSlcclxuICAgICAgKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKGV2ZW50OiBIdHRwRXZlbnQ8VXBsb2FkZWRSZXN1bHRNb2RlbD4pID0+IHtcclxuICAgICAgICAgIHN3aXRjaCAoZXZlbnQudHlwZSkge1xyXG4gICAgICAgICAgICBjYXNlIEh0dHBFdmVudFR5cGUuU2VudDpcclxuICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBIdHRwRXZlbnRUeXBlLlJlc3BvbnNlSGVhZGVyOlxyXG4gICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIEh0dHBFdmVudFR5cGUuVXBsb2FkUHJvZ3Jlc3M6XHJcbiAgICAgICAgICAgICAgaWYgKGV2ZW50LnRvdGFsKSB7XHJcbiAgICAgICAgICAgICAgICBkYXRhLnBlcmNlbnRhZ2UgPSBNYXRoLnJvdW5kKGV2ZW50LmxvYWRlZCAvIGV2ZW50LnRvdGFsICogMTAwKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgSHR0cEV2ZW50VHlwZS5SZXNwb25zZTpcclxuICAgICAgICAgICAgICBpZiAoZXZlbnQuYm9keSkge1xyXG4gICAgICAgICAgICAgICAgZGF0YS51cGxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIGRhdGEucGVyY2VudGFnZSA9IDA7XHJcbiAgICAgICAgICAgICAgICBkYXRhLmlkID0gZXZlbnQuYm9keS51dWlkO1xyXG4gICAgICAgICAgICAgICAgZGF0YS5maWxlID0gdW5kZWZpbmVkO1xyXG4gICAgICAgICAgICAgICAgZGF0YS5lcnJvciA9IGV2ZW50LmJvZHkubWVzc2FnZTtcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAoZGF0YS5leGVjdXRpb24pIHtcclxuICAgICAgICAgICAgICAgICAgZGF0YS5leGVjdXRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmZpbGVzLmV2ZXJ5KHMgPT4gIXMudXBsb2FkaW5nKSkge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmZpbGVzQ2hhbmdlZC5lbWl0KHRoaXMuZmlsZXMpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMuX2RldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJtcngtaW5wdXQtZmlsZS1pbWFnZVwiIFtjbGFzc109XCJnZXRDbGFzc2VzXCI+XHJcbiAgQHN3aXRjaCAodHlwZSkge1xyXG4gICAgQGNhc2UgKCdhdmF0YXInKSB7XHJcbiAgICAgIDxuZ3gtZmlsZS1kcm9wXHJcbiAgICAgICAgW2NsYXNzTmFtZV09XCJnZXREcm9wWm9uZUNsYXNzZXNcIlxyXG4gICAgICAgIFthY2NlcHRdPVwiZXh0ZW5zaW9ucyB8fCAnJ1wiXHJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcclxuICAgICAgICAob25GaWxlRHJvcCk9XCJkcm9wcGVkKCRldmVudClcIlxyXG4gICAgICAgIChvbkZpbGVPdmVyKT1cImZpbGVPdmVyKCRldmVudClcIiAob25GaWxlTGVhdmUpPVwiZmlsZUxlYXZlKCRldmVudClcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlIG5neC1maWxlLWRyb3AtY29udGVudC10bXAgbGV0LW9wZW5GaWxlU2VsZWN0b3I9XCJvcGVuRmlsZVNlbGVjdG9yXCI+XHJcbiAgICAgICAgICBAaWYgKGZpbGVzLmxlbmd0aCkge1xyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXJ4LWlucHV0LWZpbGUtaW1hZ2UtYXZhdGFyXCI+XHJcblxyXG4gICAgICAgICAgICAgIEBmb3IgKGZpbGUgb2YgZmlsZXM7IHRyYWNrIGZpbGUuaWQpIHtcclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LTEwMCBoLTEwMFwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXJ4LWlucHV0LWZpbGUtaW1hZ2UtYXZhdGFyLWl0ZW1cIiBbY2xhc3MubXJ4LWlucHV0LWZpbGUtaW1hZ2UtZXJyb3JdPVwiZmlsZS5lcnJvclwiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICBAaWYgKGZpbGUuZXJyb3IpIHtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1yeC1pY29uIGljb24tY2xvc2UgaWNvbi1mb250LTI0XCIgKGNsaWNrKT1cImNsZWFyKGZpbGUpXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1yeC1pbnB1dC1maWxlLWltYWdlLWF2YXRhci1pdGVtLWVycm9yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXJ4LWljb24gaWNvbi1pbWFnZSBpY29uLWZvbnQtMjQgaWNvbi1maWxsZWQtY29sb3ItbmVnYXRpdmVcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGZpbGUuZXJyb3IgfX1cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIGlmIChmaWxlLnVwbG9hZGluZyAmJiAhZmlsZS5lcnJvcikge1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXJ4LWljb24gaWNvbi1jbG9zZSBpY29uLWZvbnQtMjRcIiAoY2xpY2spPVwiZGVsZXRlKCRldmVudCwgZmlsZSlcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXJ4LWlucHV0LWZpbGUtaW1hZ2UtYXZhdGFyLWl0ZW0tdXBsb2FkaW5nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXJ4LWlucHV0LWZpbGUtaW1hZ2UtYXZhdGFyLWl0ZW0tdXBsb2FkaW5nLXRleHRcIj7Ql9Cw0LPRgNGD0LfQutCwLi4uPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXJ4LWlucHV0LWZpbGUtaW1hZ2UtYXZhdGFyLWl0ZW0tdXBsb2FkaW5nLXByb2dyZXNzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gW25nU3R5bGVdPVwie3dpZHRoOiBmaWxlLnBlcmNlbnRhZ2UgKyAnJSd9XCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIGlmICghZmlsZS51cGxvYWRpbmcgJiYgIWZpbGUuZXJyb3IpIHtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICA8aW1nIFtzcmNdPVwiZG93bmxvYWRVcmwoZmlsZSlcIiBbYWx0XT1cImZpbGUubmFtZVwiIGhlaWdodD1cIjE1NFwiIHdpZHRoPVwiMTU0XCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1yeC1pbnB1dC1maWxlLWltYWdlLWNvbnRyb2xzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtcngtaW5wdXQtZmlsZS1pbWFnZS1jb250cm9scy1pdGVtXCIgKGNsaWNrKT1cImNoYW5nZVByZXZpZXcoJGV2ZW50LCBmaWxlKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXJ4LWljb24gaWNvbi1wZW4gaWNvbi1mb250LTE2XCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1yeC1pbnB1dC1maWxlLWltYWdlLWNvbnRyb2xzLWl0ZW1cIiAoY2xpY2spPVwiZGVsZXRlKCRldmVudCwgZmlsZSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1yeC1pY29uIGljb24tZGVsZXRlIGljb24tZm9udC0xNlwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICB9IEBlbHNlIHtcclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwibXJ4LWlucHV0LWZpbGUtaW1hZ2UtaW5wdXRcIlxyXG4gICAgICAgICAgICAgIFtjbGFzcy5tcngtaW5wdXQtZmlsZS1pbWFnZV9fZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCIhZGlzYWJsZWQgPyBvcGVuRmlsZVNlbGVjdG9yKCkgOiB1bmRlZmluZWRcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcngtaW5wdXQtZmlsZS1pbWFnZS1pbnB1dC1wbGFjZWhvbGRlclwiPnt7IHBsYWNlaG9sZGVyIHx8IGdldERlZmF1bHRQbGFjZWhvbGRlciB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXJ4LWlucHV0LWZpbGUtaW1hZ2UtaW5wdXQtaW5mb1wiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4+0KDQsNC30LzQtdGAOiDQtNC+IHt7IGZvcm1hdEJ5dGVzKG1heFNpemUpIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJleHRlbnNpb25zXCI+0KTQvtGA0LzQsNGCOiB7eyBleHRlbnNpb25zIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIH1cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICA8L25neC1maWxlLWRyb3A+XHJcbiAgICB9XHJcbiAgICBAZGVmYXVsdCB7XHJcbiAgICAgIEBpZiAoY2FuQWRkKSB7XHJcbiAgICAgICAgPG5neC1maWxlLWRyb3BcclxuICAgICAgICAgIFtjbGFzc05hbWVdPVwiZ2V0RHJvcFpvbmVDbGFzc2VzXCJcclxuICAgICAgICAgIFthY2NlcHRdPVwiZXh0ZW5zaW9ucyB8fCAnJ1wiXHJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxyXG4gICAgICAgICAgKG9uRmlsZURyb3ApPVwiZHJvcHBlZCgkZXZlbnQpXCJcclxuICAgICAgICAgIChvbkZpbGVPdmVyKT1cImZpbGVPdmVyKCRldmVudClcIiAob25GaWxlTGVhdmUpPVwiZmlsZUxlYXZlKCRldmVudClcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBuZ3gtZmlsZS1kcm9wLWNvbnRlbnQtdG1wIGxldC1vcGVuRmlsZVNlbGVjdG9yPVwib3BlbkZpbGVTZWxlY3RvclwiPlxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJtcngtaW5wdXQtZmlsZS1pbWFnZS1pbnB1dFwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIiFkaXNhYmxlZCA/IG9wZW5GaWxlU2VsZWN0b3IoKSA6IHVuZGVmaW5lZFwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1yeC1pbnB1dC1maWxlLWltYWdlLWlucHV0LXBsYWNlaG9sZGVyXCI+XHJcbiAgICAgICAgICAgICAgICB7eyBwbGFjZWhvbGRlciB8fCBnZXREZWZhdWx0UGxhY2Vob2xkZXIgfX1cclxuICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1yeC1pbnB1dC1maWxlLWltYWdlLWlucHV0LWluZm9cIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuPtCg0LDQt9C80LXRgDog0LTQviB7eyBmb3JtYXRCeXRlcyhtYXhTaXplKSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZXh0ZW5zaW9uc1wiPtCk0L7RgNC80LDRgjoge3sgZXh0ZW5zaW9ucyB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDwvbmd4LWZpbGUtZHJvcD5cclxuICAgICAgfVxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cIm1yeC1pbnB1dC1maWxlLWltYWdlLXByZXZpZXdcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICBAZm9yIChmaWxlIG9mIGZpbGVzOyB0cmFjayBmaWxlLmlkKSB7XHJcblxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sIGNvbC0xMiBjb2wtc20tNiBjb2wtbWQtNCBjb2wtbGctM1wiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtcngtaW5wdXQtZmlsZS1pbWFnZS1wcmV2aWV3LWl0ZW1cIiBbY2xhc3MubXJ4LWlucHV0LWZpbGUtaW1hZ2UtZXJyb3JdPVwiZmlsZS5lcnJvclwiPlxyXG4gICAgICAgICAgICAgICAgQGlmIChmaWxlLmVycm9yKSB7XHJcblxyXG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1yeC1pY29uIGljb24tY2xvc2UgaWNvbi1mb250LTI0XCIgKGNsaWNrKT1cImRlbGV0ZSgkZXZlbnQsIGZpbGUpXCI+PC9zcGFuPlxyXG5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1yeC1pbnB1dC1maWxlLWltYWdlLXByZXZpZXctaXRlbS1lcnJvclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXJ4LWljb24gaWNvbi1pbWFnZSBpY29uLWZvbnQtMjQgaWNvbi1maWxsZWQtY29sb3ItbmVnYXRpdmVcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAge3sgZmlsZS5lcnJvciB9fVxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1yeC1pbnB1dC1maWxlLWltYWdlLXByZXZpZXctaXRlbS1uYW1lXCI+e3sgZmlsZS5uYW1lIH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtcngtaW5wdXQtZmlsZS1pbWFnZS1wcmV2aWV3LWl0ZW0tZGVzY3JpcHRpb25cIj57eyBmb3JtYXRCeXRlcyhmaWxlLmxlbmd0aCkgfX08L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICB9IEBlbHNlIGlmIChmaWxlLnVwbG9hZGluZyAmJiAhZmlsZS5lcnJvcikge1xyXG5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1yeC1pbnB1dC1maWxlLWltYWdlLXByZXZpZXctaXRlbS11cGxvYWRpbmdcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1yeC1pbnB1dC1maWxlLWltYWdlLXByZXZpZXctaXRlbS11cGxvYWRpbmctdGV4dFwiPtCX0LDQs9GA0YPQt9C60LAuLi48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1yeC1pbnB1dC1maWxlLWltYWdlLXByZXZpZXctaXRlbS11cGxvYWRpbmctcHJvZ3Jlc3NcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIFtuZ1N0eWxlXT1cInt3aWR0aDogZmlsZS5wZXJjZW50YWdlICsgJyUnfVwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgfSBAZWxzZSBpZiAoIWZpbGUudXBsb2FkaW5nICYmICFmaWxlLmVycm9yKSB7XHJcblxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXJ4LWlucHV0LWZpbGUtaW1hZ2UtcHJldmlldy1pdGVtX19pbWFnZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbWcgW3NyY109XCJkb3dubG9hZFVybChmaWxlKVwiIFthbHRdPVwiZmlsZS5uYW1lXCI+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1yeC1pbnB1dC1maWxlLWltYWdlLXByZXZpZXctaXRlbS1pbmZvXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1yeC1pbnB1dC1maWxlLWltYWdlLXByZXZpZXctaXRlbS1uYW1lXCI+e3sgZmlsZS5uYW1lIH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1yeC1pbnB1dC1maWxlLWltYWdlLXByZXZpZXctaXRlbS1kZXNjcmlwdGlvblwiPnt7IGZvcm1hdEJ5dGVzKGZpbGUubGVuZ3RoKSB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtcngtaW5wdXQtZmlsZS1pbWFnZS1jb250cm9sc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtcngtaW5wdXQtZmlsZS1pbWFnZS1jb250cm9scy1pdGVtXCIgKGNsaWNrKT1cImNoYW5nZVByZXZpZXcoJGV2ZW50LCBmaWxlKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcngtaWNvbiBpY29uLXBlbiBpY29uLWZvbnQtMTZcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1yeC1pbnB1dC1maWxlLWltYWdlLWNvbnRyb2xzLWl0ZW1cIiAoY2xpY2spPVwiZGVsZXRlKCRldmVudCwgZmlsZSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXJ4LWljb24gaWNvbi1kZWxldGUgaWNvbi1mb250LTE2XCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIH1cclxuICB9XHJcbjwvZGl2PlxyXG4iXX0=
356
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtZmlsZS1pbWFnZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJ0YS11aS9zcmMvbGliL2NvbXBvbmVudHMvZm9ybS9pbnB1dC1maWxlLWltYWdlL2lucHV0LWZpbGUtaW1hZ2UuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlydGEtdWkvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0vaW5wdXQtZmlsZS1pbWFnZS9pbnB1dC1maWxlLWltYWdlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFFdkIsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUNOLGlCQUFpQixFQUNsQixNQUFNLGVBQWUsQ0FBQztBQUl2QixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsV0FBVyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDdEYsT0FBTyxFQUFFLEVBQUUsSUFBSSxNQUFNLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDN0IsT0FBTyxFQUFhLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLG9FQUFvRSxDQUFDO0FBQ2pILE9BQU8sRUFBRSxzQkFBc0IsRUFBMkIsTUFBTSx5QkFBeUIsQ0FBQzs7Ozs7QUFVMUYsTUFBTSxPQUFPLHVCQUF1QjtJQTBEeEI7SUFDQTtJQUNBO0lBM0RWLFdBQVcsR0FBRyxXQUFXLENBQUM7SUFDMUIsVUFBVSxDQUFVO0lBQ3BCLGlCQUFpQixHQUFhLEVBQUUsQ0FBQztJQUNqQyxLQUFLLEdBQXFCLEVBQUUsQ0FB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QUs7Z0JBQ1UsY0FBYztzQkFBN0IsS0FBSztnQkFDVSxnQkFBZ0I7c0JBQS9CLEtBQUs7Z0JBRVUsYUFBYTtzQkFBNUIsS0FBSztnQkFHRixTQUFTO3NCQURaLEtBQUs7dUJBQUMsT0FBTztnQkFjSCxxQkFBcUI7c0JBRC9CLEtBQUs7dUJBQUMsbUJBQW1CO2dCQVdULFlBQVk7c0JBQTVCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENvbXBvbmVudCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSW5wdXQsXHJcbiAgT3V0cHV0LFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IElucHV0RmlsZU1vZGVsLCBVcGxvYWRlZEZpbGVNb2RlbCwgVXBsb2FkZWRSZXN1bHRNb2RlbCB9IGZyb20gJy4uLy4uLy4uL21vZGVscyc7XHJcbmltcG9ydCB7IEZpbGVVcGxvYWRTZXJ2aWNlLCBNb2RhbFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcyc7XHJcbmltcG9ydCB7IEZpbGVTeXN0ZW1GaWxlRW50cnksIE5neEZpbGVEcm9wRW50cnkgfSBmcm9tICduZ3gtZmlsZS1kcm9wJztcclxuaW1wb3J0IHsgY29udmVydEJhc2U2NFRvRmlsZSwgZm9ybWF0Qnl0ZXMsIGdldEJhc2U2NEZyb21VcmwgfSBmcm9tICcuLi8uLi8uLi9oZWxwZXJzJztcclxuaW1wb3J0IHsgdjQgYXMgdXVpZHY0IH0gZnJvbSAndXVpZCc7XHJcbmltcG9ydCB7IGNhdGNoRXJyb3IgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IEVNUFRZIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEh0dHBFdmVudCwgSHR0cEV2ZW50VHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgRmlsZUltYWdlRWRpdE1vZGFsQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2ZpbGUtaW1hZ2UtZWRpdC1tb2RhbC9maWxlLWltYWdlLWVkaXQtbW9kYWwuY29tcG9uZW50JztcclxuaW1wb3J0IHsgSW5wdXRGaWxlSW1hZ2VUeXBlRW51bSwgSW5wdXRGaWxlSW1hZ2VUeXBlVHlwZXMgfSBmcm9tICcuL2lucHV0LWZpbGUtaW1hZ2UuZW51bSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ21yeC1pbnB1dC1maWxlLWltYWdlJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vaW5wdXQtZmlsZS1pbWFnZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vaW5wdXQtZmlsZS1pbWFnZS5jb21wb25lbnQubGVzcyddLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcclxufSlcclxuXHJcbmV4cG9ydCBjbGFzcyBJbnB1dEZpbGVJbWFnZUNvbXBvbmVudCB7XHJcbiAgZm9ybWF0Qnl0ZXMgPSBmb3JtYXRCeXRlcztcclxuICBleHRlbnNpb25zPzogc3RyaW5nO1xyXG4gIGFsbG93ZWRFeHRlbnNpb25zOiBzdHJpbmdbXSA9IFtdO1xyXG4gIGZpbGVzOiBJbnB1dEZpbGVNb2RlbFtdID0gW107XHJcblxyXG4gIEBJbnB1dCgpIHB1YmxpYyB0eXBlOiBJbnB1dEZpbGVJbWFnZVR5cGVUeXBlcyA9ICdkZWZhdWx0JztcclxuXHJcbiAgQElucHV0KCkgcHVibGljIGN1c3RvbUNsYXNzZXMgPSAnJztcclxuICBASW5wdXQoKSBwdWJsaWMgcGxhY2Vob2xkZXI/OiBzdHJpbmc7XHJcbiAgQElucHV0KCkgcHVibGljIGRpc2FibGVkID0gZmFsc2U7XHJcbiAgQElucHV0KCkgcHVibGljIHJlYWRvbmx5ID0gZmFsc2U7XHJcbiAgQElucHV0KCkgcHVibGljIG1heFNpemUgPSAzMTQ1NzI4MDtcclxuICBASW5wdXQoKSBwdWJsaWMgbWF4RmlsZXMgPSA1O1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBtaW5GaWxlcyA9IDA7XHJcblxyXG4gIC8vINCf0LDRgNCw0LzQtdGC0YDRiywg0LrQvtGC0L7RgNGL0LUg0LHRg9C00YPRgiDQv9C10YDQtdC00LDQstCw0YLRjNGB0Y8g0LIg0YTQvtGA0LzQtVxyXG4gIEBJbnB1dCgpIHB1YmxpYyBmb3JtRGF0YTogYW55ID0ge307XHJcblxyXG4gIC8vIENST1BQRVJcclxuICBASW5wdXQoKSBwdWJsaWMgY3JvcHBlck1heFdpZHRoID0gMDtcclxuICBASW5wdXQoKSBwdWJsaWMgY3JvcHBlck1heEhlaWdodCA9IDA7XHJcbiAgQElucHV0KCkgcHVibGljIGFzcGVjdFJhdGlvID0gMSAvIDE7XHJcbiAgQElucHV0KCkgcHVibGljIG1haW50YWluQXNwZWN0UmF0aW8gPSB0cnVlO1xyXG5cclxuICBASW5wdXQoKSBwdWJsaWMgdXBsb2FkRW5kUG9pbnQhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgcHVibGljIGRlbGV0ZUVuZFBvaW50Pzogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBkb3dubG9hZEVuZFBvaW50Pzogc3RyaW5nO1xyXG5cclxuICBASW5wdXQoKSBwdWJsaWMgZGVsZXRlQ29uZmlybT86IChmaWxlOiBVcGxvYWRlZEZpbGVNb2RlbCwgcmVzdWx0OiAob2s6IGJvb2xlYW4pID0+IHZvaWQpID0+IHZvaWQ7XHJcblxyXG4gIEBJbnB1dCgnZmlsZXMnKVxyXG4gIHNldCBpbml0RmlsZXMoZGF0YTogVXBsb2FkZWRGaWxlTW9kZWxbXSB8IFVwbG9hZGVkRmlsZU1vZGVsKSB7XHJcbiAgICBpZiAoZGF0YSkge1xyXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShkYXRhKSkge1xyXG4gICAgICAgIHRoaXMuZmlsZXMgPSBkYXRhLm1hcChzID0+ICh7Li4uc30pKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmZpbGVzID0gW3suLi5kYXRhfV07XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZmlsZXMgPSBbXTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBJbnB1dCgnYWxsb3dlZEV4dGVuc2lvbnMnKVxyXG4gIHB1YmxpYyBzZXQgaW5pdEFsbG93ZWRFeHRlbnNpb25zKHZhbDogc3RyaW5nW10pIHtcclxuICAgIGlmICh2YWwpIHtcclxuICAgICAgdGhpcy5hbGxvd2VkRXh0ZW5zaW9ucyA9IHZhbDtcclxuICAgICAgdGhpcy5leHRlbnNpb25zID0gdmFsLmpvaW4oJywgJyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmFsbG93ZWRFeHRlbnNpb25zID0gW107XHJcbiAgICAgIHRoaXMuZXh0ZW5zaW9ucyA9IHVuZGVmaW5lZDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBPdXRwdXQoKSBwdWJsaWMgZmlsZXNDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8SW5wdXRGaWxlTW9kZWxbXT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBpbWFnZVVwbG9hZFNlcnZpY2U6IEZpbGVVcGxvYWRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfbW9kYWxTZXJ2aWNlOiBNb2RhbFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9kZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWZcclxuICApIHtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgZ2V0RGVmYXVsdFBsYWNlaG9sZGVyKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy50eXBlID09PSAnYXZhdGFyJyA/XHJcbiAgICAgICfQl9Cw0LPRgNGD0LfQuNGC0LUg0YTQvtGC0L7Qs9GA0LDRhNC40Y4nIDpcclxuICAgICAgJ9Cf0LXRgNC10L3QtdGB0LjRgtC1INGE0LDQudC7INGBINGD0YHRgtGA0L7QudGB0YLQstCwINC40LvQuCDQvdCw0LbQvNC40YLQtSDQvdCwINC00LDQvdC90L7QtSDQv9C+0LvQtSDQtNC70Y8g0LTQvtCx0LDQstC70LXQvdC40Y8g0YTQsNC50LvQsCc7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGdldENsYXNzZXMoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBgJHtJbnB1dEZpbGVJbWFnZVR5cGVFbnVtW3RoaXMudHlwZV19ICR7dGhpcy5jdXN0b21DbGFzc2VzfWA7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGdldERyb3Bab25lQ2xhc3NlcygpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIGBtcngtaW5wdXQtZmlsZS1pbWFnZS1kcm9wICR7dGhpcy5kaXNhYmxlZCA/ICdtcngtaW5wdXQtZmlsZS1waWN0dXJlLWRyb3AtZGlzYWJsZWQnIDogJyd9YDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgY2FuQWRkKCkge1xyXG4gICAgaWYgKHRoaXMudHlwZSA9PT0gJ2F2YXRhcicpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuZmlsZXMubGVuZ3RoIDwgMTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB0aGlzLm1heEZpbGVzID4gdGhpcy5maWxlcy5maWx0ZXIocyA9PiAhcy5lcnJvcikubGVuZ3RoO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfY2hlY2tFcnJvcnMoKSB7XHJcblxyXG4gIH1cclxuXHJcbiAgcHVibGljIGRyb3BwZWQoZmlsZXM6IE5neEZpbGVEcm9wRW50cnlbXSkge1xyXG4gICAgY29uc3QgZHJvcHBlZEZpbGUgPSBmaWxlc1swXTtcclxuXHJcbiAgICBpZiAoZHJvcHBlZEZpbGUuZmlsZUVudHJ5LmlzRmlsZSkge1xyXG4gICAgICBjb25zdCBmaWxlRW50cnkgPSBkcm9wcGVkRmlsZS5maWxlRW50cnkgYXMgRmlsZVN5c3RlbUZpbGVFbnRyeTtcclxuXHJcbiAgICAgIGZpbGVFbnRyeS5maWxlKChmaWxlOiBGaWxlKSA9PiB7XHJcbiAgICAgICAgY29uc3QgZGF0YTogSW5wdXRGaWxlTW9kZWwgPSB7XHJcbiAgICAgICAgICBpZDogJycsXHJcbiAgICAgICAgICB0ZW1wVXVpZDogdXVpZHY0KCksXHJcbiAgICAgICAgICBuYW1lOiBmaWxlLm5hbWUsXHJcbiAgICAgICAgICBsZW5ndGg6IGZpbGUuc2l6ZSxcclxuICAgICAgICAgIHVwbG9hZGluZzogdHJ1ZSxcclxuICAgICAgICAgIHBlcmNlbnRhZ2U6IDAsXHJcbiAgICAgICAgICBmaWxlOiBmaWxlLFxyXG4gICAgICAgIH0gYXMgSW5wdXRGaWxlTW9kZWw7XHJcblxyXG4gICAgICAgIGlmICghdGhpcy5jYW5BZGQpIHtcclxuICAgICAgICAgIGRhdGEuZXJyb3IgPSAn0KHQu9C40YjQutC+0Lwg0LzQvdC+0LPQviDRhNCw0LnQu9C+0LInO1xyXG4gICAgICAgICAgZGF0YS51cGxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuZmlsZXMucHVzaChkYXRhKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuZmlsZXMucHVzaChkYXRhKTtcclxuXHJcbiAgICAgICAgaWYgKGRhdGEuZmlsZSAmJiBkYXRhLmZpbGUuc2l6ZSA+IHRoaXMubWF4U2l6ZSkge1xyXG4gICAgICAgICAgZGF0YS5lcnJvciA9ICfQodC70LjRiNC60L7QvCDQsdC+0LvRjNGI0L7QuSDRhNCw0LnQuyc7XHJcbiAgICAgICAgICBkYXRhLnVwbG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGRhdGEuZmlsZSAmJiBkYXRhLmZpbGUuc2l6ZSA9PSAwKSB7XHJcbiAgICAgICAgICBkYXRhLmVycm9yID0gJ9Cf0YPRgdGC0L7QuSDRhNCw0LnQuyc7XHJcbiAgICAgICAgICBkYXRhLnVwbG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMuYWxsb3dlZEV4dGVuc2lvbnMubGVuZ3RoID4gMCAmJiAhdGhpcy5hbGxvd2VkRXh0ZW5zaW9ucy5zb21lKFxyXG4gICAgICAgICAgcyA9PiBkYXRhLmZpbGU/Lm5hbWUudG9Mb3dlckNhc2UoKS5lbmRzV2l0aChzLnRvTG93ZXJDYXNlKCkpKSkge1xyXG4gICAgICAgICAgZGF0YS5lcnJvciA9ICfQndC10LLQtdGA0L3Ri9C5INGE0L7RgNC80LDRgiDRhNCw0LnQu9CwJztcclxuICAgICAgICAgIGRhdGEudXBsb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoIWRhdGEuZXJyb3IpIHtcclxuICAgICAgICAgIHRoaXMuX21vZGFsU2VydmljZS5vcGVuKEZpbGVJbWFnZUVkaXRNb2RhbENvbXBvbmVudCwge1xyXG4gICAgICAgICAgICB0aXRsZTogJ9Cg0JXQlNCQ0JrQotCY0KDQntCS0JDQndCY0JUg0JjQl9Ce0JHQoNCQ0JbQldCd0JjQrycsXHJcbiAgICAgICAgICAgIGZpbGVJbWFnZTogZmlsZSxcclxuICAgICAgICAgICAgY3JvcHBlck1heFdpZHRoOiB0aGlzLmNyb3BwZXJNYXhXaWR0aCxcclxuICAgICAgICAgICAgY3JvcHBlck1heEhlaWdodDogdGhpcy5jcm9wcGVyTWF4SGVpZ2h0LFxyXG4gICAgICAgICAgICBhc3BlY3RSYXRpbzogdGhpcy5hc3BlY3RSYXRpbyxcclxuICAgICAgICAgICAgbWFpbnRhaW5Bc3BlY3RSYXRpbzogdGhpcy5tYWludGFpbkFzcGVjdFJhdGlvXHJcbiAgICAgICAgICB9LCB7fSlcclxuICAgICAgICAgICAgLmFmdGVyQ2xvc2VkKClcclxuICAgICAgICAgICAgLnN1YnNjcmliZSgocmVzKSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKHJlcy5yZXN1bHQgJiYgcmVzLmZpbGVJbWFnZSkge1xyXG4gICAgICAgICAgICAgICAgZGF0YS5maWxlID0gcmVzLmZpbGVJbWFnZVxyXG4gICAgICAgICAgICAgICAgdGhpcy5fdXBsb2FkRmlsZShkYXRhKVxyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBmaW5kSWR4ID0gdGhpcy5maWxlcy5maW5kSW5kZXgoZCA9PiBkLnRlbXBVdWlkID09PSBkYXRhLnRlbXBVdWlkKVxyXG5cclxuICAgICAgICAgICAgICAgIGlmIChmaW5kSWR4ICE9IC0xKSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuZmlsZXMgPSB0aGlzLmZpbGVzLmZpbHRlcigoZiwgaWR4KSA9PiBpZHggIT09IGZpbmRJZHgpXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGNoYW5nZVByZXZpZXcoZXZlbnQ6IGFueSwgZmlsZTogSW5wdXRGaWxlTW9kZWwpIHtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG5cclxuICAgIGdldEJhc2U2NEZyb21VcmwodGhpcy5kb3dubG9hZFVybChmaWxlKSkudGhlbigoYmFzZTY0VXJsOiBhbnkpID0+IHtcclxuICAgICAgdGhpcy5fbW9kYWxTZXJ2aWNlLm9wZW4oRmlsZUltYWdlRWRpdE1vZGFsQ29tcG9uZW50LCB7XHJcbiAgICAgICAgdGl0bGU6ICfQoNCV0JTQkNCa0KLQmNCg0J7QktCQ0J3QmNCVINCY0JfQntCR0KDQkNCW0JXQndCY0K8nLFxyXG4gICAgICAgIGZpbGVJbWFnZTogY29udmVydEJhc2U2NFRvRmlsZShiYXNlNjRVcmwsIGZpbGUubmFtZSB8fCAnJywgJ2ltYWdlL3BuZycpLFxyXG4gICAgICAgIGNyb3BwZXJNYXhXaWR0aDogdGhpcy5jcm9wcGVyTWF4V2lkdGgsXHJcbiAgICAgICAgY3JvcHBlck1heEhlaWdodDogdGhpcy5jcm9wcGVyTWF4SGVpZ2h0LFxyXG4gICAgICAgIGFzcGVjdFJhdGlvOiB0aGlzLmFzcGVjdFJhdGlvLFxyXG4gICAgICAgIG1haW50YWluQXNwZWN0UmF0aW86IHRoaXMubWFpbnRhaW5Bc3BlY3RSYXRpb1xyXG4gICAgICB9LCB7fSlcclxuICAgICAgICAuYWZ0ZXJDbG9zZWQoKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlcy5yZXN1bHQgJiYgcmVzLmZpbGVJbWFnZSkge1xyXG4gICAgICAgICAgICB0aGlzLl91cGRhdGVGaWxlKGZpbGUsIHJlcy5maWxlSW1hZ2UpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZGVsZXRlKGV2ZW50OiBhbnksIGZpbGU6IElucHV0RmlsZU1vZGVsKTogdm9pZCB7XHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuXHJcbiAgICBpZiAodGhpcy5kZWxldGVDb25maXJtKSB7XHJcbiAgICAgIHRoaXMuZGVsZXRlQ29uZmlybShmaWxlLCAob2spID0+IHtcclxuICAgICAgICBpZiAob2spIHtcclxuICAgICAgICAgIHRoaXMuX2RlbGV0ZUZpbGUoZmlsZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuX2RlbGV0ZUZpbGUoZmlsZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2xlYXIoZmlsZTogSW5wdXRGaWxlTW9kZWwpOiB2b2lkIHtcclxuICAgIGlmIChmaWxlLnVwbG9hZGluZykge1xyXG4gICAgICBpZiAoZmlsZS5leGVjdXRpb24pIHtcclxuICAgICAgICBmaWxlLmV4ZWN1dGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgZmluZEZpbGVJZHggPSB0aGlzLmZpbGVzLmluZGV4T2YoZmlsZSk7XHJcblxyXG4gICAgaWYgKGZpbmRGaWxlSWR4ID49IDApIHtcclxuICAgICAgdGhpcy5maWxlcy5zcGxpY2UoZmluZEZpbGVJZHgsIDEpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGRvd25sb2FkVXJsKGZpbGU6IFVwbG9hZGVkRmlsZU1vZGVsKTogc3RyaW5nIHtcclxuICAgIGlmICh0aGlzLmRvd25sb2FkRW5kUG9pbnQpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuX3RyYW5zZm9ybVVybCh0aGlzLmRvd25sb2FkRW5kUG9pbnQsIGZpbGUpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuICcnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGZpbGVPdmVyKGV2ZW50OiBhbnkpIHtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBmaWxlTGVhdmUoZXZlbnQ6IGFueSkge1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfdHJhbnNmb3JtVXJsKHVybDogc3RyaW5nLCBmaWxlOiBVcGxvYWRlZEZpbGVNb2RlbCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdXJsLnJlcGxhY2UoL3tpZH0vLCBmaWxlLmlkKVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfZm9ybURhdGFLZXlzKCk6IHN0cmluZ1tdIHtcclxuICAgIHJldHVybiBPYmplY3Qua2V5cyh0aGlzLmZvcm1EYXRhKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2NyZWF0ZUZvcm1EYXRhKCk6IEZvcm1EYXRhIHtcclxuICAgIGNvbnN0IGZvcm0gPSBuZXcgRm9ybURhdGEoKTtcclxuICAgIGlmICh0aGlzLm1heEZpbGVzKSB7XHJcbiAgICAgIGZvcm0uYXBwZW5kKCdNYXhGaWxlcycsIHRoaXMubWF4RmlsZXMudG9TdHJpbmcoMTApKTtcclxuICAgIH1cclxuICAgIGNvbnN0IGtleXMgPSB0aGlzLl9mb3JtRGF0YUtleXMoKTtcclxuICAgIGtleXMuZm9yRWFjaChrZXkgPT4gZm9ybS5hcHBlbmQoa2V5LCB0aGlzLmZvcm1EYXRhW2tleV0pKTtcclxuICAgIHJldHVybiBmb3JtO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfZGVsZXRlRmlsZShmaWxlOiBJbnB1dEZpbGVNb2RlbCkge1xyXG4gICAgY29uc3QgZmluZEZpbGUgPSB0aGlzLmZpbGVzLmZpbmQocyA9PiBzLmlkID09PSBmaWxlLmlkKTtcclxuXHJcbiAgICBpZiAoZmluZEZpbGUpIHtcclxuICAgICAgaWYgKHRoaXMuZGVsZXRlRW5kUG9pbnQpIHtcclxuICAgICAgICBmaW5kRmlsZS5kZWxldGluZyA9IHRydWU7XHJcblxyXG4gICAgICAgIHRoaXMuaW1hZ2VVcGxvYWRTZXJ2aWNlLmRlbGV0ZSh0aGlzLmRlbGV0ZUVuZFBvaW50KS5zdWJzY3JpYmUocmVzdWx0ID0+IHtcclxuICAgICAgICAgIHRoaXMuZmlsZXMuc3BsaWNlKHRoaXMuZmlsZXMuaW5kZXhPZihmaW5kRmlsZSksIDEpO1xyXG4gICAgICAgICAgdGhpcy5maWxlc0NoYW5nZWQuZW1pdCh0aGlzLmZpbGVzKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5maWxlcy5zcGxpY2UodGhpcy5maWxlcy5pbmRleE9mKGZpbmRGaWxlKSwgMSk7XHJcbiAgICAgICAgdGhpcy5maWxlc0NoYW5nZWQuZW1pdCh0aGlzLmZpbGVzKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfdXBkYXRlRmlsZShvbGRGaWxlOiBJbnB1dEZpbGVNb2RlbCwgbmV3RmlsZTogRmlsZSkge1xyXG4gICAgY29uc3QgZmluZEZpbGUgPSB0aGlzLmZpbGVzLmZpbmQoKHM6IElucHV0RmlsZU1vZGVsKSA9PiB7XHJcbiAgICAgIGlmIChzLmlkICE9PSAnJykge1xyXG4gICAgICAgIHJldHVybiBzLmlkID09PSBvbGRGaWxlLmlkO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiBzLnRlbXBVdWlkID09PSBvbGRGaWxlLnRlbXBVdWlkO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICBpZiAoZmluZEZpbGUpIHtcclxuICAgICAgY29uc3QgZGF0YTogSW5wdXRGaWxlTW9kZWwgPSB7XHJcbiAgICAgICAgaWQ6ICcnLFxyXG4gICAgICAgIHRlbXBVdWlkOiB1dWlkdjQoKSxcclxuICAgICAgICBuYW1lOiBuZXdGaWxlLm5hbWUsXHJcbiAgICAgICAgbGVuZ3RoOiBuZXdGaWxlLnNpemUsXHJcbiAgICAgICAgdXBsb2FkaW5nOiB0cnVlLFxyXG4gICAgICAgIHBlcmNlbnRhZ2U6IDAsXHJcbiAgICAgICAgZmlsZTogbmV3RmlsZSxcclxuICAgICAgfSBhcyBJbnB1dEZpbGVNb2RlbDtcclxuXHJcbiAgICAgIGlmICh0aGlzLmRlbGV0ZUVuZFBvaW50KSB7XHJcbiAgICAgICAgZmluZEZpbGUuZGVsZXRpbmcgPSB0cnVlO1xyXG5cclxuICAgICAgICB0aGlzLmltYWdlVXBsb2FkU2VydmljZS5kZWxldGUodGhpcy5kZWxldGVFbmRQb2ludCkuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XHJcbiAgICAgICAgICB0aGlzLmZpbGVzLnNwbGljZSh0aGlzLmZpbGVzLmluZGV4T2YoZmluZEZpbGUpLCAxKTtcclxuICAgICAgICAgIHRoaXMuZmlsZXMucHVzaChkYXRhKTtcclxuICAgICAgICAgIHRoaXMuX3VwbG9hZEZpbGUoZGF0YSk7XHJcblxyXG4gICAgICAgICAgdGhpcy5fZGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmZpbGVzLnB1c2goZGF0YSk7XHJcbiAgICAgICAgdGhpcy5fdXBsb2FkRmlsZShkYXRhKTtcclxuXHJcbiAgICAgICAgdGhpcy5fZGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF91cGxvYWRGaWxlKGRhdGE6IElucHV0RmlsZU1vZGVsKSB7XHJcbiAgICBjb25zdCBmb3JtRGF0YSA9IHRoaXMuX2NyZWF0ZUZvcm1EYXRhKCk7XHJcblxyXG4gICAgaWYgKGRhdGEuZmlsZSkge1xyXG4gICAgICBmb3JtRGF0YS5hcHBlbmQoJ0ZpbGUnLCBkYXRhLmZpbGUpO1xyXG5cclxuICAgICAgZGF0YS5leGVjdXRpb24gPSB0aGlzLmltYWdlVXBsb2FkU2VydmljZS51cGxvYWQodGhpcy51cGxvYWRFbmRQb2ludCwgZm9ybURhdGEpLnBpcGUoXHJcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyKSA9PiB7XHJcbiAgICAgICAgICBkYXRhLnVwbG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgcmV0dXJuIEVNUFRZO1xyXG4gICAgICAgIH0pXHJcbiAgICAgIClcclxuICAgICAgICAuc3Vic2NyaWJlKChldmVudDogSHR0cEV2ZW50PFVwbG9hZGVkUmVzdWx0TW9kZWw+KSA9PiB7XHJcbiAgICAgICAgICBzd2l0Y2ggKGV2ZW50LnR5cGUpIHtcclxuICAgICAgICAgICAgY2FzZSBIdHRwRXZlbnRUeXBlLlNlbnQ6XHJcbiAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgSHR0cEV2ZW50VHlwZS5SZXNwb25zZUhlYWRlcjpcclxuICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBIdHRwRXZlbnRUeXBlLlVwbG9hZFByb2dyZXNzOlxyXG4gICAgICAgICAgICAgIGlmIChldmVudC50b3RhbCkge1xyXG4gICAgICAgICAgICAgICAgZGF0YS5wZXJjZW50YWdlID0gTWF0aC5yb3VuZChldmVudC5sb2FkZWQgLyBldmVudC50b3RhbCAqIDEwMCk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIEh0dHBFdmVudFR5cGUuUmVzcG9uc2U6XHJcbiAgICAgICAgICAgICAgaWYgKGV2ZW50LmJvZHkpIHtcclxuICAgICAgICAgICAgICAgIGRhdGEudXBsb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICBkYXRhLnBlcmNlbnRhZ2UgPSAwO1xyXG4gICAgICAgICAgICAgICAgZGF0YS5pZCA9IGV2ZW50LmJvZHkudXVpZDtcclxuICAgICAgICAgICAgICAgIGRhdGEuZmlsZSA9IHVuZGVmaW5lZDtcclxuICAgICAgICAgICAgICAgIGRhdGEuZXJyb3IgPSBldmVudC5ib2R5Lm1lc3NhZ2U7XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKGRhdGEuZXhlY3V0aW9uKSB7XHJcbiAgICAgICAgICAgICAgICAgIGRhdGEuZXhlY3V0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5maWxlcy5ldmVyeShzID0+ICFzLnVwbG9hZGluZykpIHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5maWxlc0NoYW5nZWQuZW1pdCh0aGlzLmZpbGVzKTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLl9kZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwibXJ4LWlucHV0LWZpbGUtaW1hZ2VcIiBbY2xhc3NdPVwiZ2V0Q2xhc3Nlc1wiPlxyXG4gIEBzd2l0Y2ggKHR5cGUpIHtcclxuICAgIEBjYXNlICgnYXZhdGFyJykge1xyXG4gICAgICA8bmd4LWZpbGUtZHJvcFxyXG4gICAgICAgIFtjbGFzc05hbWVdPVwiZ2V0RHJvcFpvbmVDbGFzc2VzXCJcclxuICAgICAgICBbYWNjZXB0XT1cImV4dGVuc2lvbnMgfHwgJydcIlxyXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXHJcbiAgICAgICAgKG9uRmlsZURyb3ApPVwiZHJvcHBlZCgkZXZlbnQpXCJcclxuICAgICAgICAob25GaWxlT3Zlcik9XCJmaWxlT3ZlcigkZXZlbnQpXCIgKG9uRmlsZUxlYXZlKT1cImZpbGVMZWF2ZSgkZXZlbnQpXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSBuZ3gtZmlsZS1kcm9wLWNvbnRlbnQtdG1wIGxldC1vcGVuRmlsZVNlbGVjdG9yPVwib3BlbkZpbGVTZWxlY3RvclwiPlxyXG4gICAgICAgICAgQGlmIChmaWxlcy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1yeC1pbnB1dC1maWxlLWltYWdlLWF2YXRhclwiPlxyXG5cclxuICAgICAgICAgICAgICBAZm9yIChmaWxlIG9mIGZpbGVzOyB0cmFjayBmaWxlLmlkKSB7XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy0xMDAgaC0xMDBcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1yeC1pbnB1dC1maWxlLWltYWdlLWF2YXRhci1pdGVtXCIgW2NsYXNzLm1yeC1pbnB1dC1maWxlLWltYWdlLWVycm9yXT1cImZpbGUuZXJyb3JcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgQGlmIChmaWxlLmVycm9yKSB7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcngtaWNvbiBpY29uLWNsb3NlIGljb24tZm9udC0yNFwiIChjbGljayk9XCJjbGVhcihmaWxlKVwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtcngtaW5wdXQtZmlsZS1pbWFnZS1hdmF0YXItaXRlbS1lcnJvclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1yeC1pY29uIGljb24taW1hZ2UgaWNvbi1mb250LTI0IGljb24tZmlsbGVkLWNvbG9yLW5lZ2F0aXZlXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBmaWxlLmVycm9yIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSBpZiAoZmlsZS51cGxvYWRpbmcgJiYgIWZpbGUuZXJyb3IpIHtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1yeC1pY29uIGljb24tY2xvc2UgaWNvbi1mb250LTI0XCIgKGNsaWNrKT1cImRlbGV0ZSgkZXZlbnQsIGZpbGUpXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1yeC1pbnB1dC1maWxlLWltYWdlLWF2YXRhci1pdGVtLXVwbG9hZGluZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1yeC1pbnB1dC1maWxlLWltYWdlLWF2YXRhci1pdGVtLXVwbG9hZGluZy10ZXh0XCI+0JfQsNCz0YDRg9C30LrQsC4uLjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1yeC1pbnB1dC1maWxlLWltYWdlLWF2YXRhci1pdGVtLXVwbG9hZGluZy1wcm9ncmVzc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIFtuZ1N0eWxlXT1cInt3aWR0aDogZmlsZS5wZXJjZW50YWdlICsgJyUnfVwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSBpZiAoIWZpbGUudXBsb2FkaW5nICYmICFmaWxlLmVycm9yKSB7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgPGltZyBbc3JjXT1cImRvd25sb2FkVXJsKGZpbGUpXCIgW2FsdF09XCJmaWxlLm5hbWVcIiBoZWlnaHQ9XCIxNTRcIiB3aWR0aD1cIjE1NFwiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtcngtaW5wdXQtZmlsZS1pbWFnZS1jb250cm9sc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXJ4LWlucHV0LWZpbGUtaW1hZ2UtY29udHJvbHMtaXRlbVwiIChjbGljayk9XCJjaGFuZ2VQcmV2aWV3KCRldmVudCwgZmlsZSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1yeC1pY29uIGljb24tcGVuIGljb24tZm9udC0xNlwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtcngtaW5wdXQtZmlsZS1pbWFnZS1jb250cm9scy1pdGVtXCIgKGNsaWNrKT1cImRlbGV0ZSgkZXZlbnQsIGZpbGUpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcngtaWNvbiBpY29uLWRlbGV0ZSBpY29uLWZvbnQtMTZcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgfSBAZWxzZSB7XHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICBjbGFzcz1cIm1yeC1pbnB1dC1maWxlLWltYWdlLWlucHV0XCJcclxuICAgICAgICAgICAgICBbY2xhc3MubXJ4LWlucHV0LWZpbGUtaW1hZ2VfX2Rpc2FibGVkXT1cImRpc2FibGVkXCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwiIWRpc2FibGVkID8gb3BlbkZpbGVTZWxlY3RvcigpIDogdW5kZWZpbmVkXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXJ4LWlucHV0LWZpbGUtaW1hZ2UtaW5wdXQtcGxhY2Vob2xkZXJcIj57eyBwbGFjZWhvbGRlciB8fCBnZXREZWZhdWx0UGxhY2Vob2xkZXIgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1yeC1pbnB1dC1maWxlLWltYWdlLWlucHV0LWluZm9cIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuPtCg0LDQt9C80LXRgDog0LTQviB7eyBmb3JtYXRCeXRlcyhtYXhTaXplKSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZXh0ZW5zaW9uc1wiPtCk0L7RgNC80LDRgjoge3sgZXh0ZW5zaW9ucyB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgPC9uZ3gtZmlsZS1kcm9wPlxyXG4gICAgfVxyXG4gICAgQGRlZmF1bHQge1xyXG4gICAgICBAaWYgKGNhbkFkZCkge1xyXG4gICAgICAgIDxuZ3gtZmlsZS1kcm9wXHJcbiAgICAgICAgICBbY2xhc3NOYW1lXT1cImdldERyb3Bab25lQ2xhc3Nlc1wiXHJcbiAgICAgICAgICBbYWNjZXB0XT1cImV4dGVuc2lvbnMgfHwgJydcIlxyXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcclxuICAgICAgICAgIChvbkZpbGVEcm9wKT1cImRyb3BwZWQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAob25GaWxlT3Zlcik9XCJmaWxlT3ZlcigkZXZlbnQpXCIgKG9uRmlsZUxlYXZlKT1cImZpbGVMZWF2ZSgkZXZlbnQpXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8bmctdGVtcGxhdGUgbmd4LWZpbGUtZHJvcC1jb250ZW50LXRtcCBsZXQtb3BlbkZpbGVTZWxlY3Rvcj1cIm9wZW5GaWxlU2VsZWN0b3JcIj5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwibXJ4LWlucHV0LWZpbGUtaW1hZ2UtaW5wdXRcIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCIhZGlzYWJsZWQgPyBvcGVuRmlsZVNlbGVjdG9yKCkgOiB1bmRlZmluZWRcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcngtaW5wdXQtZmlsZS1pbWFnZS1pbnB1dC1wbGFjZWhvbGRlclwiPlxyXG4gICAgICAgICAgICAgICAge3sgcGxhY2Vob2xkZXIgfHwgZ2V0RGVmYXVsdFBsYWNlaG9sZGVyIH19XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtcngtaW5wdXQtZmlsZS1pbWFnZS1pbnB1dC1pbmZvXCI+XHJcbiAgICAgICAgICAgICAgICA8c3Bhbj7QoNCw0LfQvNC10YA6INC00L4ge3sgZm9ybWF0Qnl0ZXMobWF4U2l6ZSkgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImV4dGVuc2lvbnNcIj7QpNC+0YDQvNCw0YI6IHt7IGV4dGVuc2lvbnMgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8L25neC1maWxlLWRyb3A+XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtcngtaW5wdXQtZmlsZS1pbWFnZS1wcmV2aWV3XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgQGZvciAoZmlsZSBvZiBmaWxlczsgdHJhY2sgZmlsZS5pZCkge1xyXG5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbCBjb2wtMTIgY29sLXNtLTYgY29sLW1kLTQgY29sLWxnLTNcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXJ4LWlucHV0LWZpbGUtaW1hZ2UtcHJldmlldy1pdGVtXCIgW2NsYXNzLm1yeC1pbnB1dC1maWxlLWltYWdlLWVycm9yXT1cImZpbGUuZXJyb3JcIj5cclxuICAgICAgICAgICAgICAgIEBpZiAoZmlsZS5lcnJvcikge1xyXG5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcngtaWNvbiBpY29uLWNsb3NlIGljb24tZm9udC0yNFwiIChjbGljayk9XCJkZWxldGUoJGV2ZW50LCBmaWxlKVwiPjwvc3Bhbj5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtcngtaW5wdXQtZmlsZS1pbWFnZS1wcmV2aWV3LWl0ZW0tZXJyb3JcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1yeC1pY29uIGljb24taW1hZ2UgaWNvbi1mb250LTI0IGljb24tZmlsbGVkLWNvbG9yLW5lZ2F0aXZlXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7IGZpbGUuZXJyb3IgfX1cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtcngtaW5wdXQtZmlsZS1pbWFnZS1wcmV2aWV3LWl0ZW0tbmFtZVwiPnt7IGZpbGUubmFtZSB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXJ4LWlucHV0LWZpbGUtaW1hZ2UtcHJldmlldy1pdGVtLWRlc2NyaXB0aW9uXCI+e3sgZm9ybWF0Qnl0ZXMoZmlsZS5sZW5ndGgpIH19PC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgfSBAZWxzZSBpZiAoZmlsZS51cGxvYWRpbmcgJiYgIWZpbGUuZXJyb3IpIHtcclxuXHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtcngtaW5wdXQtZmlsZS1pbWFnZS1wcmV2aWV3LWl0ZW0tdXBsb2FkaW5nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcngtaW5wdXQtZmlsZS1pbWFnZS1wcmV2aWV3LWl0ZW0tdXBsb2FkaW5nLXRleHRcIj7Ql9Cw0LPRgNGD0LfQutCwLi4uPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtcngtaW5wdXQtZmlsZS1pbWFnZS1wcmV2aWV3LWl0ZW0tdXBsb2FkaW5nLXByb2dyZXNzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBbbmdTdHlsZV09XCJ7d2lkdGg6IGZpbGUucGVyY2VudGFnZSArICclJ31cIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIH0gQGVsc2UgaWYgKCFmaWxlLnVwbG9hZGluZyAmJiAhZmlsZS5lcnJvcikge1xyXG5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1yeC1pbnB1dC1maWxlLWltYWdlLXByZXZpZXctaXRlbV9faW1hZ2VcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW1nIFtzcmNdPVwiZG93bmxvYWRVcmwoZmlsZSlcIiBbYWx0XT1cImZpbGUubmFtZVwiPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtcngtaW5wdXQtZmlsZS1pbWFnZS1wcmV2aWV3LWl0ZW0taW5mb1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtcngtaW5wdXQtZmlsZS1pbWFnZS1wcmV2aWV3LWl0ZW0tbmFtZVwiPnt7IGZpbGUubmFtZSB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtcngtaW5wdXQtZmlsZS1pbWFnZS1wcmV2aWV3LWl0ZW0tZGVzY3JpcHRpb25cIj57eyBmb3JtYXRCeXRlcyhmaWxlLmxlbmd0aCkgfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXJ4LWlucHV0LWZpbGUtaW1hZ2UtY29udHJvbHNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXJ4LWlucHV0LWZpbGUtaW1hZ2UtY29udHJvbHMtaXRlbVwiIChjbGljayk9XCJjaGFuZ2VQcmV2aWV3KCRldmVudCwgZmlsZSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXJ4LWljb24gaWNvbi1wZW4gaWNvbi1mb250LTE2XCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtcngtaW5wdXQtZmlsZS1pbWFnZS1jb250cm9scy1pdGVtXCIgKGNsaWNrKT1cImRlbGV0ZSgkZXZlbnQsIGZpbGUpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1yeC1pY29uIGljb24tZGVsZXRlIGljb24tZm9udC0xNlwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIH1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICB9XHJcbiAgfVxyXG48L2Rpdj5cclxuIl19
@@ -10813,14 +10813,6 @@ class FileImageEditModalComponent extends ModalServiceComponent {
10813
10813
  this.aspectRatio = data.aspectRatio;
10814
10814
  this.maintainAspectRatio = data.maintainAspectRatio;
10815
10815
  }
10816
- async ok() {
10817
- this.result = {
10818
- result: true,
10819
- fileImage: convertBase64ToFile(this.croppedImage, this.fileImage.name, this.fileImage.type),
10820
- fileUrl: this.croppedImage
10821
- };
10822
- this.close();
10823
- }
10824
10816
  rotateLeft() {
10825
10817
  this.canvasRotation--;
10826
10818
  this.flipAfterRotate();
@@ -10855,16 +10847,27 @@ class FileImageEditModalComponent extends ModalServiceComponent {
10855
10847
  loadImageFailed() {
10856
10848
  // show message
10857
10849
  }
10858
- close() {
10850
+ async ok() {
10851
+ this.result = {
10852
+ result: true,
10853
+ fileImage: convertBase64ToFile(this.croppedImage, this.fileImage.name, this.fileImage.type),
10854
+ fileUrl: this.croppedImage
10855
+ };
10856
+ this.close();
10857
+ }
10858
+ cancel() {
10859
10859
  this.result = { result: false };
10860
+ this.close();
10861
+ }
10862
+ close() {
10860
10863
  this.dialogRef.close(this.result);
10861
10864
  }
10862
10865
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FileImageEditModalComponent, deps: [{ token: ModalRef }, { token: MODAL_DATA }], target: i0.ɵɵFactoryTarget.Component });
10863
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: FileImageEditModalComponent, selector: "mrx-file-image-edit-modal", usesInheritance: true, ngImport: i0, template: "<mrx-modal\r\n [title]=\"title\"\r\n [size]=\"'medium'\"\r\n (close)=\"close()\"\r\n>\r\n <div class=\"row\">\r\n <div class=\"col col-12\">\r\n <p>\u0412\u044B\u0431\u0440\u0430\u043D\u043D\u0430\u044F \u043E\u0431\u043B\u0430\u0441\u0442\u044C \u0431\u0443\u0434\u0435\u0442 \u043F\u043E\u043A\u0430\u0437\u044B\u0432\u0430\u0442\u044C\u0441\u044F \u043D\u0430 \u043E\u0431\u043B\u043E\u0436\u043A\u0435 \u0441\u0442\u0440\u0430\u043D\u0438\u0446\u044B</p>\r\n </div>\r\n\r\n <div class=\"col col-12\">\r\n <div class=\"mrx-input-image-cropper__wrapper\">\r\n <image-cropper\r\n format=\"png\"\r\n output=\"base64\"\r\n [alignImage]=\"'center'\"\r\n [imageFile]=\"fileImage\"\r\n [maintainAspectRatio]=\"maintainAspectRatio\"\r\n [aspectRatio]=\"aspectRatio\"\r\n [backgroundColor]=\"'#000000'\"\r\n [canvasRotation]=\"canvasRotation\"\r\n [transform]=\"transform\"\r\n [cropperMaxWidth]=\"cropperMaxWidth\"\r\n [cropperMaxHeight]=\"cropperMaxHeight\"\r\n (loadImageFailed)=\"loadImageFailed()\"\r\n (imageCropped)=\"imageCropped($event)\"\r\n (imageLoaded)=\"imageLoaded($event)\"\r\n (cropperReady)=\"cropperReady()\"\r\n ></image-cropper>\r\n\r\n <div class=\"mrx-input-image-cropper__controls\">\r\n <svg (click)=\"rotateLeft()\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"2\" y=\"15\" width=\"8\" height=\"8\" rx=\"0.888889\" stroke=\"white\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M4.5 18.5C5.05228 18.5 5.5 18.0523 5.5 17.5C5.5 16.9477 5.05228 16.5 4.5 16.5C3.94772 16.5 3.5 16.9477 3.5 17.5C3.5 18.0523 3.94772 18.5 4.5 18.5Z\" stroke=\"white\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n <path d=\"M9.99978 20.3333L7.77756 18.1111L2.88867 23\" stroke=\"white\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n <path d=\"M13.1575 21.6842C18.5932 21.6842 22.9996 17.2777 22.9996 11.8421C22.9996 6.40646 18.5932 2 13.1575 2C7.72189 2 3.31543 6.40646 3.31543 11.8421\" stroke=\"white\" stroke-width=\"1.5\" stroke-linecap=\"round\"/>\r\n <path d=\"M1.00026 10.1052L3.31605 12.421L5.63184 10.1052\" stroke=\"white\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n\r\n <svg (click)=\"rotateRight()\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"14\" y=\"15\" width=\"8\" height=\"8\" rx=\"0.888889\" stroke=\"white\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M16.5 18.5C17.0523 18.5 17.5 18.0523 17.5 17.5C17.5 16.9477 17.0523 16.5 16.5 16.5C15.9477 16.5 15.5 16.9477 15.5 17.5C15.5 18.0523 15.9477 18.5 16.5 18.5Z\" stroke=\"white\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n <path d=\"M21.9998 20.3333L19.7776 18.1111L14.8887 23\" stroke=\"white\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n <path d=\"M10.8425 21.6842C5.40682 21.6842 1.00036 17.2777 1.00036 11.8421C1.00036 6.40646 5.40682 2 10.8425 2C16.2781 2 20.6846 6.40646 20.6846 11.8421\" stroke=\"white\" stroke-width=\"1.5\" stroke-linecap=\"round\"/>\r\n <path d=\"M22.9997 10.1052L20.684 12.421L18.3682 10.1052\" stroke=\"white\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <ng-template #footerContent>\r\n <mrx-button\r\n [customClasses]=\"'mr-3'\"\r\n [type]=\"'secondary'\"\r\n [size]=\"'medium'\"\r\n (click)=\"close()\"\r\n >\u041E\u0442\u043C\u0435\u043D\u0438\u0442\u044C\r\n </mrx-button>\r\n <mrx-button\r\n [type]=\"'primary'\"\r\n [size]=\"'medium'\"\r\n (click)=\"ok()\"\r\n >\u041F\u043E\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u044C\r\n </mrx-button>\r\n </ng-template>\r\n</mrx-modal>\r\n\r\n\r\n", styles: [":host::ng-deep .mrx-input-image-cropper__wrapper{position:relative}:host::ng-deep .mrx-input-image-cropper__controls{padding:8px;background:#1f222680;border-radius:4px;position:absolute;left:50%;bottom:24px;transform:translate(-50%)}:host::ng-deep .mrx-input-image-cropper__controls svg{cursor:pointer}:host::ng-deep .mrx-input-image-cropper__controls svg:not(:last-child){margin-right:16px}\n"], dependencies: [{ kind: "component", type: ModalComponent, selector: "mrx-modal", inputs: ["title", "message", "alert", "okText", "closeText", "size", "color", "customClasses", "expandable", "isEmbed", "isClose", "isBack", "backText", "enableFooter", "alignButtons", "isLoading", "iconPosition"], outputs: ["ok", "close", "back"] }, { kind: "component", type: ButtonComponent, selector: "mrx-button", inputs: ["size", "type", "color", "iconPosition", "active", "disabled", "isLoading", "iconOnly", "customClasses", "label", "icon", "iconClass", "buttonType", "href", "target", "routerLink", "queryParams"], outputs: ["mrxClick"] }, { kind: "component", type: i4.ImageCropperComponent, selector: "image-cropper", inputs: ["imageChangedEvent", "imageURL", "imageBase64", "imageFile", "imageAltText", "options", "cropperFrameAriaLabel", "output", "format", "autoCrop", "cropper", "transform", "maintainAspectRatio", "aspectRatio", "resetCropOnAspectRatioChange", "resizeToWidth", "resizeToHeight", "cropperMinWidth", "cropperMinHeight", "cropperMaxHeight", "cropperMaxWidth", "cropperStaticWidth", "cropperStaticHeight", "canvasRotation", "initialStepSize", "roundCropper", "onlyScaleDown", "imageQuality", "backgroundColor", "containWithinAspectRatio", "hideResizeSquares", "allowMoveImage", "checkImageType", "alignImage", "disabled", "hidden"], outputs: ["imageCropped", "startCropImage", "imageLoaded", "cropperReady", "loadImageFailed", "transformChange", "cropperChange"] }] });
10866
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: FileImageEditModalComponent, selector: "mrx-file-image-edit-modal", usesInheritance: true, ngImport: i0, template: "<mrx-modal\r\n [title]=\"title\"\r\n [size]=\"'medium'\"\r\n (close)=\"cancel()\"\r\n>\r\n <div class=\"row\">\r\n <div class=\"col col-12\">\r\n <p>\u0412\u044B\u0431\u0440\u0430\u043D\u043D\u0430\u044F \u043E\u0431\u043B\u0430\u0441\u0442\u044C \u0431\u0443\u0434\u0435\u0442 \u043F\u043E\u043A\u0430\u0437\u044B\u0432\u0430\u0442\u044C\u0441\u044F \u043D\u0430 \u043E\u0431\u043B\u043E\u0436\u043A\u0435 \u0441\u0442\u0440\u0430\u043D\u0438\u0446\u044B</p>\r\n </div>\r\n\r\n <div class=\"col col-12\">\r\n <div class=\"mrx-input-image-cropper__wrapper\">\r\n <image-cropper\r\n format=\"png\"\r\n output=\"base64\"\r\n [alignImage]=\"'center'\"\r\n [imageFile]=\"fileImage\"\r\n [maintainAspectRatio]=\"maintainAspectRatio\"\r\n [aspectRatio]=\"aspectRatio\"\r\n [backgroundColor]=\"'#000000'\"\r\n [canvasRotation]=\"canvasRotation\"\r\n [transform]=\"transform\"\r\n [cropperMaxWidth]=\"cropperMaxWidth\"\r\n [cropperMaxHeight]=\"cropperMaxHeight\"\r\n (loadImageFailed)=\"loadImageFailed()\"\r\n (imageCropped)=\"imageCropped($event)\"\r\n (imageLoaded)=\"imageLoaded($event)\"\r\n (cropperReady)=\"cropperReady()\"\r\n ></image-cropper>\r\n\r\n <div class=\"mrx-input-image-cropper__controls\">\r\n <svg (click)=\"rotateLeft()\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"2\" y=\"15\" width=\"8\" height=\"8\" rx=\"0.888889\" stroke=\"white\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M4.5 18.5C5.05228 18.5 5.5 18.0523 5.5 17.5C5.5 16.9477 5.05228 16.5 4.5 16.5C3.94772 16.5 3.5 16.9477 3.5 17.5C3.5 18.0523 3.94772 18.5 4.5 18.5Z\" stroke=\"white\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n <path d=\"M9.99978 20.3333L7.77756 18.1111L2.88867 23\" stroke=\"white\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n <path d=\"M13.1575 21.6842C18.5932 21.6842 22.9996 17.2777 22.9996 11.8421C22.9996 6.40646 18.5932 2 13.1575 2C7.72189 2 3.31543 6.40646 3.31543 11.8421\" stroke=\"white\" stroke-width=\"1.5\" stroke-linecap=\"round\"/>\r\n <path d=\"M1.00026 10.1052L3.31605 12.421L5.63184 10.1052\" stroke=\"white\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n\r\n <svg (click)=\"rotateRight()\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"14\" y=\"15\" width=\"8\" height=\"8\" rx=\"0.888889\" stroke=\"white\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M16.5 18.5C17.0523 18.5 17.5 18.0523 17.5 17.5C17.5 16.9477 17.0523 16.5 16.5 16.5C15.9477 16.5 15.5 16.9477 15.5 17.5C15.5 18.0523 15.9477 18.5 16.5 18.5Z\" stroke=\"white\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n <path d=\"M21.9998 20.3333L19.7776 18.1111L14.8887 23\" stroke=\"white\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n <path d=\"M10.8425 21.6842C5.40682 21.6842 1.00036 17.2777 1.00036 11.8421C1.00036 6.40646 5.40682 2 10.8425 2C16.2781 2 20.6846 6.40646 20.6846 11.8421\" stroke=\"white\" stroke-width=\"1.5\" stroke-linecap=\"round\"/>\r\n <path d=\"M22.9997 10.1052L20.684 12.421L18.3682 10.1052\" stroke=\"white\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <ng-template #footerContent>\r\n <mrx-button\r\n [customClasses]=\"'mr-3'\"\r\n [type]=\"'secondary'\"\r\n [size]=\"'medium'\"\r\n (click)=\"cancel()\"\r\n >\u041E\u0442\u043C\u0435\u043D\u0438\u0442\u044C\r\n </mrx-button>\r\n <mrx-button\r\n [type]=\"'primary'\"\r\n [size]=\"'medium'\"\r\n (click)=\"ok()\"\r\n >\u041F\u043E\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u044C\r\n </mrx-button>\r\n </ng-template>\r\n</mrx-modal>\r\n\r\n\r\n", styles: [":host::ng-deep .mrx-input-image-cropper__wrapper{position:relative}:host::ng-deep .mrx-input-image-cropper__controls{padding:8px;background:#1f222680;border-radius:4px;position:absolute;left:50%;bottom:24px;transform:translate(-50%)}:host::ng-deep .mrx-input-image-cropper__controls svg{cursor:pointer}:host::ng-deep .mrx-input-image-cropper__controls svg:not(:last-child){margin-right:16px}\n"], dependencies: [{ kind: "component", type: ModalComponent, selector: "mrx-modal", inputs: ["title", "message", "alert", "okText", "closeText", "size", "color", "customClasses", "expandable", "isEmbed", "isClose", "isBack", "backText", "enableFooter", "alignButtons", "isLoading", "iconPosition"], outputs: ["ok", "close", "back"] }, { kind: "component", type: ButtonComponent, selector: "mrx-button", inputs: ["size", "type", "color", "iconPosition", "active", "disabled", "isLoading", "iconOnly", "customClasses", "label", "icon", "iconClass", "buttonType", "href", "target", "routerLink", "queryParams"], outputs: ["mrxClick"] }, { kind: "component", type: i4.ImageCropperComponent, selector: "image-cropper", inputs: ["imageChangedEvent", "imageURL", "imageBase64", "imageFile", "imageAltText", "options", "cropperFrameAriaLabel", "output", "format", "autoCrop", "cropper", "transform", "maintainAspectRatio", "aspectRatio", "resetCropOnAspectRatioChange", "resizeToWidth", "resizeToHeight", "cropperMinWidth", "cropperMinHeight", "cropperMaxHeight", "cropperMaxWidth", "cropperStaticWidth", "cropperStaticHeight", "canvasRotation", "initialStepSize", "roundCropper", "onlyScaleDown", "imageQuality", "backgroundColor", "containWithinAspectRatio", "hideResizeSquares", "allowMoveImage", "checkImageType", "alignImage", "disabled", "hidden"], outputs: ["imageCropped", "startCropImage", "imageLoaded", "cropperReady", "loadImageFailed", "transformChange", "cropperChange"] }] });
10864
10867
  }
10865
10868
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FileImageEditModalComponent, decorators: [{
10866
10869
  type: Component,
10867
- args: [{ selector: 'mrx-file-image-edit-modal', template: "<mrx-modal\r\n [title]=\"title\"\r\n [size]=\"'medium'\"\r\n (close)=\"close()\"\r\n>\r\n <div class=\"row\">\r\n <div class=\"col col-12\">\r\n <p>\u0412\u044B\u0431\u0440\u0430\u043D\u043D\u0430\u044F \u043E\u0431\u043B\u0430\u0441\u0442\u044C \u0431\u0443\u0434\u0435\u0442 \u043F\u043E\u043A\u0430\u0437\u044B\u0432\u0430\u0442\u044C\u0441\u044F \u043D\u0430 \u043E\u0431\u043B\u043E\u0436\u043A\u0435 \u0441\u0442\u0440\u0430\u043D\u0438\u0446\u044B</p>\r\n </div>\r\n\r\n <div class=\"col col-12\">\r\n <div class=\"mrx-input-image-cropper__wrapper\">\r\n <image-cropper\r\n format=\"png\"\r\n output=\"base64\"\r\n [alignImage]=\"'center'\"\r\n [imageFile]=\"fileImage\"\r\n [maintainAspectRatio]=\"maintainAspectRatio\"\r\n [aspectRatio]=\"aspectRatio\"\r\n [backgroundColor]=\"'#000000'\"\r\n [canvasRotation]=\"canvasRotation\"\r\n [transform]=\"transform\"\r\n [cropperMaxWidth]=\"cropperMaxWidth\"\r\n [cropperMaxHeight]=\"cropperMaxHeight\"\r\n (loadImageFailed)=\"loadImageFailed()\"\r\n (imageCropped)=\"imageCropped($event)\"\r\n (imageLoaded)=\"imageLoaded($event)\"\r\n (cropperReady)=\"cropperReady()\"\r\n ></image-cropper>\r\n\r\n <div class=\"mrx-input-image-cropper__controls\">\r\n <svg (click)=\"rotateLeft()\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"2\" y=\"15\" width=\"8\" height=\"8\" rx=\"0.888889\" stroke=\"white\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M4.5 18.5C5.05228 18.5 5.5 18.0523 5.5 17.5C5.5 16.9477 5.05228 16.5 4.5 16.5C3.94772 16.5 3.5 16.9477 3.5 17.5C3.5 18.0523 3.94772 18.5 4.5 18.5Z\" stroke=\"white\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n <path d=\"M9.99978 20.3333L7.77756 18.1111L2.88867 23\" stroke=\"white\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n <path d=\"M13.1575 21.6842C18.5932 21.6842 22.9996 17.2777 22.9996 11.8421C22.9996 6.40646 18.5932 2 13.1575 2C7.72189 2 3.31543 6.40646 3.31543 11.8421\" stroke=\"white\" stroke-width=\"1.5\" stroke-linecap=\"round\"/>\r\n <path d=\"M1.00026 10.1052L3.31605 12.421L5.63184 10.1052\" stroke=\"white\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n\r\n <svg (click)=\"rotateRight()\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"14\" y=\"15\" width=\"8\" height=\"8\" rx=\"0.888889\" stroke=\"white\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M16.5 18.5C17.0523 18.5 17.5 18.0523 17.5 17.5C17.5 16.9477 17.0523 16.5 16.5 16.5C15.9477 16.5 15.5 16.9477 15.5 17.5C15.5 18.0523 15.9477 18.5 16.5 18.5Z\" stroke=\"white\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n <path d=\"M21.9998 20.3333L19.7776 18.1111L14.8887 23\" stroke=\"white\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n <path d=\"M10.8425 21.6842C5.40682 21.6842 1.00036 17.2777 1.00036 11.8421C1.00036 6.40646 5.40682 2 10.8425 2C16.2781 2 20.6846 6.40646 20.6846 11.8421\" stroke=\"white\" stroke-width=\"1.5\" stroke-linecap=\"round\"/>\r\n <path d=\"M22.9997 10.1052L20.684 12.421L18.3682 10.1052\" stroke=\"white\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <ng-template #footerContent>\r\n <mrx-button\r\n [customClasses]=\"'mr-3'\"\r\n [type]=\"'secondary'\"\r\n [size]=\"'medium'\"\r\n (click)=\"close()\"\r\n >\u041E\u0442\u043C\u0435\u043D\u0438\u0442\u044C\r\n </mrx-button>\r\n <mrx-button\r\n [type]=\"'primary'\"\r\n [size]=\"'medium'\"\r\n (click)=\"ok()\"\r\n >\u041F\u043E\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u044C\r\n </mrx-button>\r\n </ng-template>\r\n</mrx-modal>\r\n\r\n\r\n", styles: [":host::ng-deep .mrx-input-image-cropper__wrapper{position:relative}:host::ng-deep .mrx-input-image-cropper__controls{padding:8px;background:#1f222680;border-radius:4px;position:absolute;left:50%;bottom:24px;transform:translate(-50%)}:host::ng-deep .mrx-input-image-cropper__controls svg{cursor:pointer}:host::ng-deep .mrx-input-image-cropper__controls svg:not(:last-child){margin-right:16px}\n"] }]
10870
+ args: [{ selector: 'mrx-file-image-edit-modal', template: "<mrx-modal\r\n [title]=\"title\"\r\n [size]=\"'medium'\"\r\n (close)=\"cancel()\"\r\n>\r\n <div class=\"row\">\r\n <div class=\"col col-12\">\r\n <p>\u0412\u044B\u0431\u0440\u0430\u043D\u043D\u0430\u044F \u043E\u0431\u043B\u0430\u0441\u0442\u044C \u0431\u0443\u0434\u0435\u0442 \u043F\u043E\u043A\u0430\u0437\u044B\u0432\u0430\u0442\u044C\u0441\u044F \u043D\u0430 \u043E\u0431\u043B\u043E\u0436\u043A\u0435 \u0441\u0442\u0440\u0430\u043D\u0438\u0446\u044B</p>\r\n </div>\r\n\r\n <div class=\"col col-12\">\r\n <div class=\"mrx-input-image-cropper__wrapper\">\r\n <image-cropper\r\n format=\"png\"\r\n output=\"base64\"\r\n [alignImage]=\"'center'\"\r\n [imageFile]=\"fileImage\"\r\n [maintainAspectRatio]=\"maintainAspectRatio\"\r\n [aspectRatio]=\"aspectRatio\"\r\n [backgroundColor]=\"'#000000'\"\r\n [canvasRotation]=\"canvasRotation\"\r\n [transform]=\"transform\"\r\n [cropperMaxWidth]=\"cropperMaxWidth\"\r\n [cropperMaxHeight]=\"cropperMaxHeight\"\r\n (loadImageFailed)=\"loadImageFailed()\"\r\n (imageCropped)=\"imageCropped($event)\"\r\n (imageLoaded)=\"imageLoaded($event)\"\r\n (cropperReady)=\"cropperReady()\"\r\n ></image-cropper>\r\n\r\n <div class=\"mrx-input-image-cropper__controls\">\r\n <svg (click)=\"rotateLeft()\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"2\" y=\"15\" width=\"8\" height=\"8\" rx=\"0.888889\" stroke=\"white\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M4.5 18.5C5.05228 18.5 5.5 18.0523 5.5 17.5C5.5 16.9477 5.05228 16.5 4.5 16.5C3.94772 16.5 3.5 16.9477 3.5 17.5C3.5 18.0523 3.94772 18.5 4.5 18.5Z\" stroke=\"white\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n <path d=\"M9.99978 20.3333L7.77756 18.1111L2.88867 23\" stroke=\"white\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n <path d=\"M13.1575 21.6842C18.5932 21.6842 22.9996 17.2777 22.9996 11.8421C22.9996 6.40646 18.5932 2 13.1575 2C7.72189 2 3.31543 6.40646 3.31543 11.8421\" stroke=\"white\" stroke-width=\"1.5\" stroke-linecap=\"round\"/>\r\n <path d=\"M1.00026 10.1052L3.31605 12.421L5.63184 10.1052\" stroke=\"white\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n\r\n <svg (click)=\"rotateRight()\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"14\" y=\"15\" width=\"8\" height=\"8\" rx=\"0.888889\" stroke=\"white\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M16.5 18.5C17.0523 18.5 17.5 18.0523 17.5 17.5C17.5 16.9477 17.0523 16.5 16.5 16.5C15.9477 16.5 15.5 16.9477 15.5 17.5C15.5 18.0523 15.9477 18.5 16.5 18.5Z\" stroke=\"white\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n <path d=\"M21.9998 20.3333L19.7776 18.1111L14.8887 23\" stroke=\"white\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n <path d=\"M10.8425 21.6842C5.40682 21.6842 1.00036 17.2777 1.00036 11.8421C1.00036 6.40646 5.40682 2 10.8425 2C16.2781 2 20.6846 6.40646 20.6846 11.8421\" stroke=\"white\" stroke-width=\"1.5\" stroke-linecap=\"round\"/>\r\n <path d=\"M22.9997 10.1052L20.684 12.421L18.3682 10.1052\" stroke=\"white\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <ng-template #footerContent>\r\n <mrx-button\r\n [customClasses]=\"'mr-3'\"\r\n [type]=\"'secondary'\"\r\n [size]=\"'medium'\"\r\n (click)=\"cancel()\"\r\n >\u041E\u0442\u043C\u0435\u043D\u0438\u0442\u044C\r\n </mrx-button>\r\n <mrx-button\r\n [type]=\"'primary'\"\r\n [size]=\"'medium'\"\r\n (click)=\"ok()\"\r\n >\u041F\u043E\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u044C\r\n </mrx-button>\r\n </ng-template>\r\n</mrx-modal>\r\n\r\n\r\n", styles: [":host::ng-deep .mrx-input-image-cropper__wrapper{position:relative}:host::ng-deep .mrx-input-image-cropper__controls{padding:8px;background:#1f222680;border-radius:4px;position:absolute;left:50%;bottom:24px;transform:translate(-50%)}:host::ng-deep .mrx-input-image-cropper__controls svg{cursor:pointer}:host::ng-deep .mrx-input-image-cropper__controls svg:not(:last-child){margin-right:16px}\n"] }]
10868
10871
  }], ctorParameters: () => [{ type: ModalRef }, { type: undefined, decorators: [{
10869
10872
  type: Inject,
10870
10873
  args: [MODAL_DATA]
@@ -10902,7 +10905,7 @@ class InputFileImageComponent {
10902
10905
  cropperMaxWidth = 0;
10903
10906
  cropperMaxHeight = 0;
10904
10907
  aspectRatio = 1 / 1;
10905
- maintainAspectRatio = false;
10908
+ maintainAspectRatio = true;
10906
10909
  uploadEndPoint;
10907
10910
  deleteEndPoint;
10908
10911
  downloadEndPoint;
@@ -10997,13 +11000,19 @@ class InputFileImageComponent {
10997
11000
  cropperMaxHeight: this.cropperMaxHeight,
10998
11001
  aspectRatio: this.aspectRatio,
10999
11002
  maintainAspectRatio: this.maintainAspectRatio
11000
- })
11003
+ }, {})
11001
11004
  .afterClosed()
11002
11005
  .subscribe((res) => {
11003
11006
  if (res.result && res.fileImage) {
11004
11007
  data.file = res.fileImage;
11008
+ this._uploadFile(data);
11009
+ }
11010
+ else {
11011
+ const findIdx = this.files.findIndex(d => d.tempUuid === data.tempUuid);
11012
+ if (findIdx != -1) {
11013
+ this.files = this.files.filter((f, idx) => idx !== findIdx);
11014
+ }
11005
11015
  }
11006
- this._uploadFile(data);
11007
11016
  });
11008
11017
  }
11009
11018
  });
@@ -11019,7 +11028,7 @@ class InputFileImageComponent {
11019
11028
  cropperMaxHeight: this.cropperMaxHeight,
11020
11029
  aspectRatio: this.aspectRatio,
11021
11030
  maintainAspectRatio: this.maintainAspectRatio
11022
- })
11031
+ }, {})
11023
11032
  .afterClosed()
11024
11033
  .subscribe((res) => {
11025
11034
  if (res.result && res.fileImage) {