mmhglobal-dynamicform 2.24.3 → 2.26.0

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.
@@ -11,9 +11,10 @@ import * as i4 from "@fortawesome/angular-fontawesome";
11
11
  import * as i5 from "@progress/kendo-angular-layout";
12
12
  import * as i6 from "@angular/common";
13
13
  export class ZmfbComponent extends ButtonFieldBase {
14
- constructor(componentService, fieldService, resourceApiService, workflowService) {
14
+ constructor(componentService, fontAweSomeService, fieldService, resourceApiService, workflowService) {
15
15
  super(componentService);
16
16
  this.componentService = componentService;
17
+ this.fontAweSomeService = fontAweSomeService;
17
18
  this.fieldService = fieldService;
18
19
  this.resourceApiService = resourceApiService;
19
20
  this.workflowService = workflowService;
@@ -143,6 +144,18 @@ export class ZmfbComponent extends ButtonFieldBase {
143
144
  data.forEach((button) => {
144
145
  const label = this.getButtonLabel(button);
145
146
  const attributes = JSON.parse(button.Attributes);
147
+ const newAttributes = {
148
+ ...attributes,
149
+ zButtonName: this.data.Name,
150
+ TypeCode: button.TypeCode,
151
+ WorkflowCode: this.data.WorkflowCode,
152
+ reloadAllWorkflowButton: true
153
+ };
154
+ button = {
155
+ ...button,
156
+ Attributes: JSON.stringify(newAttributes),
157
+ disableTrigger: this.isButtonDisableTrigger(this.data, button),
158
+ };
146
159
  const buttonLabel = attributes.Label || label;
147
160
  const isVisible = this.isBtnVisible(attributes.Visible);
148
161
  if (isVisible) {
@@ -164,6 +177,9 @@ export class ZmfbComponent extends ButtonFieldBase {
164
177
  console.error("error: ", error);
165
178
  }
166
179
  }
180
+ isButtonDisableTrigger(data, button) {
181
+ return button.DisableTrigger != undefined ? button.DisableTrigger : (data.DisableTrigger != undefined ? data.DisableTrigger : false);
182
+ }
167
183
  workflowButtonClick(button) {
168
184
  // Type 1 == functional;
169
185
  // Type 2 == GOTO;
@@ -192,10 +208,10 @@ export class ZmfbComponent extends ButtonFieldBase {
192
208
  }
193
209
  }
194
210
  }
195
- ZmfbComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: ZmfbComponent, deps: [{ token: i1.ZComponentService }, { token: i2.FieldService }, { token: i2.ResourceApiService }, { token: i2.WorkflowService }], target: i0.ɵɵFactoryTarget.Component });
196
- ZmfbComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: ZmfbComponent, selector: "app-zmfb", usesInheritance: true, ngImport: i0, template: "<div class=\"zmfb-wrap e1tag-style\" [style]=\"componentProperties.style.style\">\r\n <div class=\"k-overlay e1tag-style1\"\r\n *ngIf=\"dialOpen\"\r\n [style]=\"componentProperties.style.style1\">\r\n </div>\r\n <kendo-floatingactionbutton buttonClass=\"custom-floating-button\"\r\n class=\"e1tag-style2\"\r\n dialClass=\"custom-floating-dial\"\r\n [positionMode]=\"positionMode\"\r\n [align]=\"align\"\r\n [dialItems]=\"items\"\r\n (blur)=\"onBlur()\"\r\n (focus)=\"onFocus()\"\r\n (open)=\"onOpen($event)\"\r\n (close)=\"onClose($event)\"\r\n (click)=\"buttonClick(data)\"\r\n (dialItemClick)=\"onDialItemClick($event)\"\r\n [style]=\"componentProperties.style.style2\">\r\n <ng-template kendoFloatingActionButtonTemplate>\r\n <fa-icon [icon]=\"data.Icon ? data.Icon : 'plus'\"\r\n class=\"e1tag-style3\"\r\n [style]=\"componentProperties.style.style3\">\r\n </fa-icon>\r\n </ng-template>\r\n <ng-template kendoDialItemTemplate\r\n let-item\r\n let-isFocused=\"isFocused\">\r\n <span class=\"k-fab-item-text e1tag-style4\"\r\n [style]=\"componentProperties.style.style4\">\r\n <span>{{ item.label }}</span>\r\n </span>\r\n <kendo-avatar shape=\"circle\"\r\n [themeColor]=\"buttonColor\"\r\n class=\"e1tag-style5\"\r\n [style]=\"componentProperties.style.style5\">\r\n <span class=\"k-icon k-i-{{ item.icon }}\"></span>\r\n </kendo-avatar>\r\n </ng-template>\r\n </kendo-floatingactionbutton>\r\n</div>\r\n", styles: [":host ::ng-deep kendo-floatingactionbutton .custom-floating-button{background:var(--ion-color-primary);border:none!important;outline:none;height:55px;width:55px;z-index:999}:host ::ng-deep kendo-floatingactionbutton .custom-floating-button:hover{background:var(--ion-color-primary-tint)}.button-item{padding:8px 10px;width:100%;display:flex;align-items:center;background-color:#fff}.button-details{margin-left:8px;display:flex;flex-direction:column;align-items:flex-start}.custom-focused-class{box-shadow:inset 0 0 8px #0003}.zmfb-wrap{display:flex;justify-content:center;margin-top:60px}@media only screen and (max-device-width: 768px){.k-bottom-end,.k-pos-bottom-end{padding-bottom:16vh}}.k-top-end,.k-pos-top-end{padding-top:6.5vh;padding-right:1vw}\n"], components: [{ type: i3.FloatingActionButtonComponent, selector: "kendo-floatingactionbutton", inputs: ["themeColor", "size", "rounded", "disabled", "align", "offset", "positionMode", "icon", "iconClass", "buttonClass", "dialClass", "text", "dialItemAnimation", "tabIndex", "dialItems"], outputs: ["blur", "focus", "dialItemClick", "open", "close"] }, { type: i4.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }, { type: i5.AvatarComponent, selector: "kendo-avatar", inputs: ["shape", "size", "rounded", "themeColor", "fillMode", "fill", "border", "iconClass", "width", "height", "cssStyle", "initials", "icon", "imageSrc"] }], directives: [{ type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.FloatingActionButtonTemplateDirective, selector: "[kendoFloatingActionButtonTemplate]" }, { type: i3.DialItemTemplateDirective, selector: "[kendoDialItemTemplate]" }] });
211
+ ZmfbComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: ZmfbComponent, deps: [{ token: i1.ZComponentService }, { token: i2.FontAweSomeService }, { token: i2.FieldService }, { token: i2.ResourceApiService }, { token: i2.WorkflowService }], target: i0.ɵɵFactoryTarget.Component });
212
+ ZmfbComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: ZmfbComponent, selector: "app-zmfb", usesInheritance: true, ngImport: i0, template: "<div class=\"zmfb-wrap e1tag-style\" [style]=\"componentProperties.style.style\">\r\n <div class=\"k-overlay e1tag-style1\"\r\n *ngIf=\"dialOpen\"\r\n [style]=\"componentProperties.style.style1\">\r\n </div>\r\n <kendo-floatingactionbutton buttonClass=\"custom-floating-button\"\r\n class=\"e1tag-style2\"\r\n dialClass=\"custom-floating-dial\"\r\n [positionMode]=\"positionMode\"\r\n [align]=\"align\"\r\n [dialItems]=\"items\"\r\n (blur)=\"onBlur()\"\r\n (focus)=\"onFocus()\"\r\n (open)=\"onOpen($event)\"\r\n (close)=\"onClose($event)\"\r\n (click)=\"buttonClick(data)\"\r\n (dialItemClick)=\"onDialItemClick($event)\"\r\n [style]=\"componentProperties.style.style2\">\r\n <ng-template kendoFloatingActionButtonTemplate>\r\n <fa-icon [icon]=\"data.Icon ? data.Icon : 'plus'\"\r\n size=\"2x\"\r\n class=\"e1tag-style3\"\r\n [style]=\"componentProperties.style.style3\">\r\n </fa-icon>\r\n </ng-template>\r\n <ng-template kendoDialItemTemplate\r\n let-item\r\n let-isFocused=\"isFocused\">\r\n <span class=\"k-fab-item-text e1tag-style4\"\r\n [style]=\"componentProperties.style.style4\">\r\n <span>{{ item.label }}</span>\r\n </span>\r\n <kendo-avatar shape=\"circle\"\r\n [themeColor]=\"buttonColor\"\r\n class=\"e1tag-style5\"\r\n [style]=\"componentProperties.style.style5\">\r\n <fa-icon [icon]=\"getFontAwesome(item.icon, fontAweSomeService)\" size=\"1x\"></fa-icon>\r\n </kendo-avatar>\r\n </ng-template>\r\n </kendo-floatingactionbutton>\r\n</div>\r\n", styles: [":host ::ng-deep kendo-floatingactionbutton .custom-floating-button{background:var(--ion-color-primary);border:none!important;outline:none;height:55px;width:55px;z-index:999}:host ::ng-deep kendo-floatingactionbutton .custom-floating-button:hover{background:var(--ion-color-primary-tint)}.button-item{padding:8px 10px;width:100%;display:flex;align-items:center;background-color:#fff}.button-details{margin-left:8px;display:flex;flex-direction:column;align-items:flex-start}.custom-focused-class{box-shadow:inset 0 0 8px #0003}.zmfb-wrap{display:flex;justify-content:center;margin-top:60px}@media only screen and (max-device-width: 768px){.k-bottom-end,.k-pos-bottom-end{padding-bottom:16vh}}.k-top-end,.k-pos-top-end{padding-top:6.5vh;padding-right:1vw}\n"], components: [{ type: i3.FloatingActionButtonComponent, selector: "kendo-floatingactionbutton", inputs: ["themeColor", "size", "rounded", "disabled", "align", "offset", "positionMode", "icon", "iconClass", "buttonClass", "dialClass", "text", "dialItemAnimation", "tabIndex", "dialItems"], outputs: ["blur", "focus", "dialItemClick", "open", "close"] }, { type: i4.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }, { type: i5.AvatarComponent, selector: "kendo-avatar", inputs: ["shape", "size", "rounded", "themeColor", "fillMode", "fill", "border", "iconClass", "width", "height", "cssStyle", "initials", "icon", "imageSrc"] }], directives: [{ type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.FloatingActionButtonTemplateDirective, selector: "[kendoFloatingActionButtonTemplate]" }, { type: i3.DialItemTemplateDirective, selector: "[kendoDialItemTemplate]" }] });
197
213
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: ZmfbComponent, decorators: [{
198
214
  type: Component,
199
- args: [{ selector: 'app-zmfb', template: "<div class=\"zmfb-wrap e1tag-style\" [style]=\"componentProperties.style.style\">\r\n <div class=\"k-overlay e1tag-style1\"\r\n *ngIf=\"dialOpen\"\r\n [style]=\"componentProperties.style.style1\">\r\n </div>\r\n <kendo-floatingactionbutton buttonClass=\"custom-floating-button\"\r\n class=\"e1tag-style2\"\r\n dialClass=\"custom-floating-dial\"\r\n [positionMode]=\"positionMode\"\r\n [align]=\"align\"\r\n [dialItems]=\"items\"\r\n (blur)=\"onBlur()\"\r\n (focus)=\"onFocus()\"\r\n (open)=\"onOpen($event)\"\r\n (close)=\"onClose($event)\"\r\n (click)=\"buttonClick(data)\"\r\n (dialItemClick)=\"onDialItemClick($event)\"\r\n [style]=\"componentProperties.style.style2\">\r\n <ng-template kendoFloatingActionButtonTemplate>\r\n <fa-icon [icon]=\"data.Icon ? data.Icon : 'plus'\"\r\n class=\"e1tag-style3\"\r\n [style]=\"componentProperties.style.style3\">\r\n </fa-icon>\r\n </ng-template>\r\n <ng-template kendoDialItemTemplate\r\n let-item\r\n let-isFocused=\"isFocused\">\r\n <span class=\"k-fab-item-text e1tag-style4\"\r\n [style]=\"componentProperties.style.style4\">\r\n <span>{{ item.label }}</span>\r\n </span>\r\n <kendo-avatar shape=\"circle\"\r\n [themeColor]=\"buttonColor\"\r\n class=\"e1tag-style5\"\r\n [style]=\"componentProperties.style.style5\">\r\n <span class=\"k-icon k-i-{{ item.icon }}\"></span>\r\n </kendo-avatar>\r\n </ng-template>\r\n </kendo-floatingactionbutton>\r\n</div>\r\n", styles: [":host ::ng-deep kendo-floatingactionbutton .custom-floating-button{background:var(--ion-color-primary);border:none!important;outline:none;height:55px;width:55px;z-index:999}:host ::ng-deep kendo-floatingactionbutton .custom-floating-button:hover{background:var(--ion-color-primary-tint)}.button-item{padding:8px 10px;width:100%;display:flex;align-items:center;background-color:#fff}.button-details{margin-left:8px;display:flex;flex-direction:column;align-items:flex-start}.custom-focused-class{box-shadow:inset 0 0 8px #0003}.zmfb-wrap{display:flex;justify-content:center;margin-top:60px}@media only screen and (max-device-width: 768px){.k-bottom-end,.k-pos-bottom-end{padding-bottom:16vh}}.k-top-end,.k-pos-top-end{padding-top:6.5vh;padding-right:1vw}\n"] }]
200
- }], ctorParameters: function () { return [{ type: i1.ZComponentService }, { type: i2.FieldService }, { type: i2.ResourceApiService }, { type: i2.WorkflowService }]; } });
201
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiem1mYi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tbWhnbG9iYWwtZHluYW1pY2Zvcm0vc3JjL2xpYi96bWZiL3ptZmIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvem1mYi96bWZiLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtCQUErQjtBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQVF6RCwyQ0FBMkM7QUFDM0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBRTFFLE9BQU8sRUFFTyxnQkFBZ0IsRUFDN0IsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7Ozs7QUFTekIsTUFBTSxPQUFPLGFBQWMsU0FBUSxlQUFlO0lBU2hELFlBQ1MsZ0JBQW1DLEVBQ2xDLFlBQTBCLEVBQzFCLGtCQUFzQyxFQUN0QyxlQUFnQztRQUV4QyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQTtRQUxoQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQW1CO1FBQ2xDLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDdEMsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBWjFDLGlCQUFZLEdBQW9CLE9BQU8sQ0FBQztRQUN4QyxVQUFLLEdBQWEsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsQ0FBQztRQUM1RCxVQUFLLEdBQWUsRUFBRSxDQUFDO1FBQ3ZCLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFDMUIscUJBQWdCLEdBQVksS0FBSyxDQUFDO1FBQ2xDLGdCQUFXLEdBQVcsU0FBUyxDQUFDO1FBb0hoQyxZQUFZO1FBRVosa0JBQWtCO1FBQ2xCLGVBQWU7UUFDZiwyR0FBMkc7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SSxDQUFDLGVBQWUsQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUU7b0JBQy9HLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO29CQUUxQixtQ0FBbUM7b0JBQ25DLE1BQU0sY0FBYyxHQUFHLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztvQkFDM0UsTUFBTSxVQUFVLEdBQUcsZ0JBQWdCLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsY0FBYyxDQUFDLENBQUU7b0JBQzlFLFVBQVUsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDO29CQUUzQixJQUFJLEdBQUcsRUFBRTt3QkFDUCxJQUFJLENBQUMsZUFBZSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztxQkFDL0Q7Z0JBQ0gsQ0FBQyxDQUFDLENBQUM7Z0JBQ0gsTUFBTTtZQUNSO2dCQUNFLE9BQU8sQ0FBQyxHQUFHLENBQUMsdUJBQXVCLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNsRCxNQUFNO1NBQ1Q7SUFDSCxDQUFDOzswR0FqTlUsYUFBYTs4RkFBYixhQUFhLHVFQ3hCMUIscTZEQXdDQTsyRkRoQmEsYUFBYTtrQkFOekIsU0FBUzsrQkFDRSxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiLyoqKioqKioqKiogQW5ndWxhciAqKioqKioqKioqL1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcblxyXG4vKioqKioqKioqKiBJb25pYyAqKioqKioqKioqL1xyXG5cclxuLyoqKioqKioqKiogUGx1Z2luICoqKioqKioqKiovXHJcbmltcG9ydCB7IERpYWxJdGVtQ2xpY2tFdmVudCwgRmFiQWxpZ24sIEZhYlBvc2l0aW9uTW9kZSB9IGZyb20gJ0Bwcm9ncmVzcy9rZW5kby1hbmd1bGFyLWJ1dHRvbnMnO1xyXG5cclxuLyoqKioqKioqKiogQ29tcG9uZW50ICYgU2VydmljZSAqKioqKioqKioqL1xyXG5pbXBvcnQgeyBCdXR0b25GaWVsZEJhc2UgfSBmcm9tIFwiLi4vY29tcG9uZW50cy9idXR0b25maWVsZGJhc2UuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IFpDb21wb25lbnRTZXJ2aWNlIH0gZnJvbSBcIi4uL3NlcnZpY2VzL3pjb21wb25lbnQuc2VydmljZVwiO1xyXG5pbXBvcnQge1xyXG4gIEZpZWxkU2VydmljZSwgUmVzb3VyY2VBcGlTZXJ2aWNlLCBXZWJBcGlTZXJ2aWNlLCBXb3JrZmxvd1NlcnZpY2UsXHJcbiAgWkNvbXBvbmVudCwgWkNvbXBvbmVudEhlbHBlciwgWkNvbXBvbmVudE91dHB1dEV2ZW50LCBaQ29tcG9uZW50UHJvcGVydGllcywgWkZpZWxkLCBaR3JvdXBcclxufSBmcm9tICdtbWhnbG9iYWwtemNvcmUnO1xyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLXptZmInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi96bWZiLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi96bWZiLmNvbXBvbmVudC5zY3NzJ10sXHJcbn0pXHJcblxyXG5leHBvcnQgY2xhc3MgWm1mYkNvbXBvbmVudCBleHRlbmRzIEJ1dHRvbkZpZWxkQmFzZSBpbXBsZW1lbnRzIFpDb21wb25lbnQsIE9uSW5pdCB7XHJcbiAgcG9zaXRpb25Nb2RlOiBGYWJQb3NpdGlvbk1vZGUgPSAnZml4ZWQnO1xyXG4gIGFsaWduOiBGYWJBbGlnbiA9IHsgdmVydGljYWw6ICdib3R0b20nLCBob3Jpem9udGFsOiAnZW5kJyB9O1xyXG4gIGl0ZW1zOiBBcnJheTxhbnk+ID0gW107XHJcbiAgZGlhbE9wZW46IGJvb2xlYW4gPSBmYWxzZTtcclxuICBpc1dvcmtmbG93QnV0dG9uOiBib29sZWFuID0gZmFsc2U7XHJcbiAgYnV0dG9uQ29sb3I6IHN0cmluZyA9ICdwcmltYXJ5JztcclxuICBwcml2YXRlIGJ1dHRvbkZpZWxkOiBaRmllbGQ7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIGNvbXBvbmVudFNlcnZpY2U6IFpDb21wb25lbnRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBmaWVsZFNlcnZpY2U6IEZpZWxkU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVzb3VyY2VBcGlTZXJ2aWNlOiBSZXNvdXJjZUFwaVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHdvcmtmbG93U2VydmljZTogV29ya2Zsb3dTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICBzdXBlcihjb21wb25lbnRTZXJ2aWNlKVxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICBzdXBlci5pbml0Q29tcG9uZW50KCkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgdGhpcy5zZXR1cENvbXBvbmVudCgpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICB0aGlzLmNvbXBvbmVudFNlcnZpY2UuZGVjcmVtZW50Q29tcG9uZW50Q291bnRlckZvckZpZWxkKHRoaXMuZGF0YSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldHVwQ29tcG9uZW50KCkge1xyXG4gICAgdGhpcy5hbGlnbiA9ICh0aGlzLmRhdGFbYFBvc2l0aW9uYF0gPyBKU09OLnBhcnNlKHRoaXMuZGF0YVtgUG9zaXRpb25gXSkgOiBudWxsKSB8fCB0aGlzLmFsaWduO1xyXG4gICAgaWYgKHRoaXMuZGF0YS5WYWx1ZSAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgdGhpcy5pdGVtcyA9IHRoaXMuZGF0YS5WYWx1ZTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLnNldHVwRGVmYXVsdERpYWxJdGVtcygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8jcmVnaW9uIEVudmVudHNcclxuICBwdWJsaWMgb25CbHVyKCk6IHZvaWQge1xyXG4gICAgLy9jb25zb2xlLmxvZygnYmx1cicpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uRm9jdXMoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5pc1dvcmtmbG93QnV0dG9uKSB7XHJcbiAgICAgIHRoaXMubG9hZFdvcmtmbG93QnV0dG9uKCk7XHJcbiAgICB9XHJcbiAgICAvL2NvbnNvbGUubG9nKCdmb2N1cycpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uT3BlbihlKTogdm9pZCB7XHJcbiAgICB0aGlzLmRpYWxPcGVuID0gdHJ1ZTtcclxuICAgIGNvbnNvbGUubG9nKCdvcGVuJyk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25DbG9zZShlKTogdm9pZCB7XHJcbiAgICAvLyBUbyBzdGltdWxhdGUgbmV2ZXIgY2xvc2VcclxuICAgIC8vIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgIHRoaXMuZGlhbE9wZW4gPSBmYWxzZTtcclxuICAgIGNvbnNvbGUubG9nKCdjbG9zZScpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uRGlhbEl0ZW1DbGljayhlOiBEaWFsSXRlbUNsaWNrRXZlbnQpOiB2b2lkIHtcclxuICAgIGUuaXRlbS5jbGljaygpO1xyXG4gIH1cclxuICAvLyNlbmRyZWdpb25cclxuXHJcbiAgLy8jcmVnaW9uIERpYWwgSXRlbSAtIEJ1dHRvbnNcclxuICBwcml2YXRlIHNldHVwRGVmYXVsdERpYWxJdGVtcygpIHtcclxuICAgIHRoaXMuYnV0dG9uRmllbGQgPSB0aGlzLmdldEZpcnN0ekJ1dHRvbih0aGlzLmdyb3VwLmZpZWxkcyk7XHJcblxyXG4gICAgaWYgKHRoaXMuYnV0dG9uRmllbGQpIHtcclxuICAgICAgaWYgKCFaQ29tcG9uZW50SGVscGVyLmlzTnVsbFVuZGVmaW5lZEVtcHR5KHRoaXMuYnV0dG9uRmllbGQuV29ya2Zsb3dDb2RlKSkge1xyXG4gICAgICAgIC8vIGhhbmRsZSBhcyB6V29ya2Zsb3dCdXR0b25cclxuICAgICAgICB0aGlzLmlzV29ya2Zsb3dCdXR0b24gPSB0cnVlO1xyXG4gICAgICAgIHRoaXMubG9hZFdvcmtmbG93QnV0dG9uKCk7XHJcblxyXG4gICAgICAgIC8vT2JqZWN0LmFzc2lnbih0aGlzLmdyb3VwLCB7XHJcbiAgICAgICAgLy8gIHptZmJMaW5rZWQ6IGAke3RoaXMuZGF0YS5UeXBlfV8ke3RoaXMuZGF0YS5OYW1lfWBcclxuICAgICAgICAvL30pO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGNvbnN0IGZpZWxkJCA9IHRoaXMuZmllbGRTZXJ2aWNlLmdldEZvcm1GaWVsZENvZGUodGhpcy5idXR0b25GaWVsZC5WYWx1ZSwgXCJGb3JtRmllbGRcIik7XHJcblxyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICBmaWVsZCQuc3Vic2NyaWJlKGRhdGEgPT4ge1xyXG4gICAgICAgICAgICBkYXRhLmZvckVhY2goKGJ1dHRvbjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgY29uc3QgbGFiZWwgPSB0aGlzLmdldEJ1dHRvbkxhYmVsKGJ1dHRvbik7XHJcblxyXG4gICAgICAgICAgICAgIGNvbnN0IF9pc1Zpc2libGUgPSB0aGlzLmlzQnRuVmlzaWJsZShidXR0b24uVmlzaWJsZSk7XHJcbiAgICAgICAgICAgICAgaWYgKF9pc1Zpc2libGUpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuaXRlbXMucHVzaCh7XHJcbiAgICAgICAgICAgICAgICAgIGxhYmVsOiBsYWJlbCxcclxuICAgICAgICAgICAgICAgICAgaWNvbjogWkNvbXBvbmVudEhlbHBlci5nZXRJY29uKGJ1dHRvbi5JY29uKSxcclxuICAgICAgICAgICAgICAgICAgY2xpY2tFdmVudDogYnV0dG9uLkNsaWNrRXZlbnQsXHJcbiAgICAgICAgICAgICAgICAgIGNsaWNrOiAoeSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYnV0dG9uQ2xpY2soYnV0dG9uKTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgICBjb25zb2xlLmVycm9yKFwiZXJyb3I6IFwiLCBlcnJvcik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldEZpcnN0ekJ1dHRvbihkYXRhOiBhbnlbXSkge1xyXG4gICAgLy8gZGF0YS5mb3JFYWNoKGQgPT4ge1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkYXRhLmxlbmd0aCAtIDE7IGkrKykge1xyXG4gICAgICBpZiAoZGF0YVtpXS5UeXBlID09PSBcInpidXR0b25zXCIgfHwgZGF0YVtpXS5UeXBlID09PSBcInp3b3JrZmxvd2J1dHRvbnNcIikge1xyXG4gICAgICAgIHJldHVybiBkYXRhW2ldO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGRhdGFbaV0uVmFsdWUpKSB7XHJcbiAgICAgICAgICB0aGlzLmdldEZpcnN0ekJ1dHRvbihkYXRhW2ldLlZhbHVlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuICAvLyNlbmRyZWdpb25cclxuXHJcbiAgLy8jcmVnaW9uIFdvcmtmbG93XHJcbiAgLy8gVVJMIHJlcXVpcmVkXHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvbixuby11bmRlcnNjb3JlLWRhbmdsZSxpZC1ibGFja2xpc3QsaWQtbWF0Y2hcclxuICBlMXdmc193ZmNHZXRXb3JrZmxvd0J1dHRvblVSTCA9IHRoaXMucmVzb3VyY2VBcGlTZXJ2aWNlLmdldFVSTChcImUxd2ZzX3dmY0dldFdvcmtmbG93QnV0dG9uVVJMXCIpO1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb24sbm8tdW5kZXJzY29yZS1kYW5nbGUsaWQtYmxhY2tsaXN0LGlkLW1hdGNoXHJcbiAgZTF3ZnNfd2ZjX2dldFdvcmtmbG93SW5pdGlhbFN0YXR1c1VSTCA9IHRoaXMucmVzb3VyY2VBcGlTZXJ2aWNlLmdldFVSTChcImUxd2ZzX3dmY19nZXRXb3JrZmxvd0luaXRpYWxTdGF0dXNVUkxcIik7XHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvbiwgbm8tdW5kZXJzY29yZS1kYW5nbGUsIGlkLWJsYWNrbGlzdCwgaWQtbWF0Y2hcclxuICBlMXdmc193ZmNfZ2V0RG9jdW1lbnRTdGF0dXNVUkwgPSB0aGlzLnJlc291cmNlQXBpU2VydmljZS5nZXRVUkwoXCJlMXdmc193ZmNfZ2V0RG9jdW1lbnRTdGF0dXNVUkxcIik7XHJcblxyXG5cclxuICBwcml2YXRlIGxvYWRXb3JrZmxvd0J1dHRvbigpIHtcclxuICAgIC8vICBhY3Rpb25CdG5MaXN0OiBBcnJheTxaRmllbGQ+O1xyXG4gICAgdGhpcy5pdGVtcyA9IFtdO1xyXG5cclxuICAgIC8vIEdldCBXRlNfRG9jdW1lbnRJZCBpZiBhbnkuXHJcbiAgICBsZXQgZG9jdW1lbnRJZCA9IG51bGw7XHJcbiAgICBpZiAodGhpcy5ncm91cC56TW9kZWwpIHtcclxuICAgICAgZG9jdW1lbnRJZCA9IHRoaXMuZ3JvdXAuek1vZGVsWydXRlNfRG9jdW1lbnRJZCddO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFNldCB0aGUgZG9jdW1lbnRJZCB0byB0aGUgc2VydmljZVxyXG4gICAgdGhpcy53b3JrZmxvd1NlcnZpY2UuYXBwZW5kV0ZTX0RvY3VtZW50c0luZm8odGhpcy5idXR0b25GaWVsZC5Xb3JrZmxvd0NvZGUsIGRvY3VtZW50SWQpO1xyXG5cclxuICAgIHRyeSB7XHJcbiAgICAgIC8vIFNldCBwYXJhbSBmb3IgZmllbGRcclxuICAgICAgY29uc3QgZmllbGQkID0gdGhpcy53b3JrZmxvd1NlcnZpY2UuZ2V0V29ya2Zsb3dCdXR0b25zRmllbGQoXHJcbiAgICAgICAgdGhpcy5idXR0b25GaWVsZC5Xb3JrZmxvd0NvZGUsXHJcbiAgICAgICAgdGhpcy5lMXdmc193ZmNHZXRXb3JrZmxvd0J1dHRvblVSTCxcclxuICAgICAgICBTdHJpbmcoZmFsc2UpXHJcbiAgICAgICk7XHJcblxyXG4gICAgICBmaWVsZCQuc3Vic2NyaWJlKGRhdGEgPT4ge1xyXG4gICAgICAgIGRhdGEuZm9yRWFjaCgoYnV0dG9uOiBhbnkpID0+IHtcclxuICAgICAgICAgIGNvbnN0IGxhYmVsID0gdGhpcy5nZXRCdXR0b25MYWJlbChidXR0b24pO1xyXG4gICAgICAgICAgY29uc3QgYXR0cmlidXRlcyA9IEpTT04ucGFyc2UoYnV0dG9uLkF0dHJpYnV0ZXMpO1xyXG4gICAgICAgICAgY29uc3QgYnV0dG9uTGFiZWwgPSBhdHRyaWJ1dGVzLkxhYmVsIHx8IGxhYmVsO1xyXG4gICAgICAgICAgY29uc3QgaXNWaXNpYmxlID0gdGhpcy5pc0J0blZpc2libGUoYXR0cmlidXRlcy5WaXNpYmxlKTtcclxuXHJcbiAgICAgICAgICBpZiAoaXNWaXNpYmxlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuaXRlbXMucHVzaCh7XHJcbiAgICAgICAgICAgICAgbGFiZWw6IGJ1dHRvbkxhYmVsLFxyXG4gICAgICAgICAgICAgIGZpZWxkQXR0cmlidXRlOiBidXR0b24sXHJcbiAgICAgICAgICAgICAgaWNvbjogWkNvbXBvbmVudEhlbHBlci5nZXRJY29uKGF0dHJpYnV0ZXMuSWNvbiksXHJcbiAgICAgICAgICAgICAgY2xpY2tFdmVudDogYnV0dG9uLkNsaWNrRXZlbnQsXHJcbiAgICAgICAgICAgICAgY2xpY2s6ICh5KSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLndvcmtmbG93QnV0dG9uQ2xpY2soYnV0dG9uKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgLy9aQ29tcG9uZW50SGVscGVyLmNvbGxlY3RXb3JrZmxvd0J1dHRvbih0aGlzLmdyb3VwLCBidXR0b25zLldvcmtmbG93Q29kZSwgYnV0dG9uTGFiZWwsIGJ1dHRvbiwgYXR0cmlidXRlcywgbWFwcGVkSW5mbyk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgY29uc29sZS5lcnJvcihcImVycm9yOiBcIiwgZXJyb3IpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgd29ya2Zsb3dCdXR0b25DbGljayhidXR0b246IGFueSkge1xyXG4gICAgLy8gVHlwZSAxID09IGZ1bmN0aW9uYWw7XHJcbiAgICAvLyBUeXBlIDIgPT0gR09UTztcclxuICAgIGNvbnN0IGF0dHJpYnV0ZXMgPSBKU09OLnBhcnNlKGJ1dHRvbi5BdHRyaWJ1dGVzKTtcclxuICAgIHN3aXRjaCAoYnV0dG9uLlR5cGVDb2RlLnRvVXBwZXJDYXNlKCkpIHtcclxuICAgICAgY2FzZSBcIkZVTkNUSU9OXCI6XHJcbiAgICAgICAgY29uc29sZS5sb2coXCJGdW5jdGlvbmFsIEJ1dHRvbjogXCIsIGJ1dHRvbi5OYW1lKTtcclxuICAgICAgICB0aGlzLndvcmtmbG93U2VydmljZS5mdW5jdGlvbmFsQnV0dG9uX09uQ2xpY2soYXR0cmlidXRlcywgdGhpcy5ncm91cCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgXCJHT1RPXCI6XHJcbiAgICAgICAgY29uc29sZS5sb2coXCJHT1RPIEJ1dHRvbjogXCIsIGJ1dHRvbi5OYW1lKTtcclxuICAgICAgICB0aGlzLndvcmtmbG93U2VydmljZS5nb3RvQnV0dG9uX09uY2xpY2soYnV0dG9uLCB0aGlzLmJ1dHRvbkZpZWxkLCBhdHRyaWJ1dGVzLCB0aGlzLmdyb3VwLCBmYWxzZSkuc3Vic2NyaWJlKHJlcyA9PiB7XHJcbiAgICAgICAgICB0aGlzLmxvYWRXb3JrZmxvd0J1dHRvbigpO1xyXG5cclxuICAgICAgICAgIC8vIFJlcXVpcmUgdG8gcmVmcmVzaCB0aGUgZmlyc3R6QnRuXHJcbiAgICAgICAgICBjb25zdCBtYWluQnV0dG9uTmFtZSA9IGAke3RoaXMuYnV0dG9uRmllbGQuVHlwZX1fJHt0aGlzLmJ1dHRvbkZpZWxkLk5hbWV9YDtcclxuICAgICAgICAgIGNvbnN0IG1haW5CdXR0b24gPSBaQ29tcG9uZW50SGVscGVyLmdldENvbXBvbmVudCh0aGlzLmdyb3VwLCBtYWluQnV0dG9uTmFtZSkgO1xyXG4gICAgICAgICAgbWFpbkJ1dHRvblsnbG9hZEJ1dHRvbiddKCk7XHJcblxyXG4gICAgICAgICAgaWYgKHJlcykge1xyXG4gICAgICAgICAgICB0aGlzLndvcmtmbG93U2VydmljZS50cmlnZ2VyU2VuZEVtYWlsKHRoaXMuZ3JvdXApLnN1YnNjcmliZSgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIGNvbnNvbGUubG9nKFwiSW52YWxpZCBCdXR0b24gVHlwZS4gXCIsIGJ1dHRvbi5OYW1lKTtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICB9XHJcbiAgLy8jZW5kcmVnaW9uXHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cInptZmItd3JhcCBlMXRhZy1zdHlsZVwiIFtzdHlsZV09XCJjb21wb25lbnRQcm9wZXJ0aWVzLnN0eWxlLnN0eWxlXCI+XHJcbiAgPGRpdiBjbGFzcz1cImstb3ZlcmxheSBlMXRhZy1zdHlsZTFcIlxyXG4gICAgICAgKm5nSWY9XCJkaWFsT3BlblwiXHJcbiAgICAgICBbc3R5bGVdPVwiY29tcG9uZW50UHJvcGVydGllcy5zdHlsZS5zdHlsZTFcIj5cclxuICA8L2Rpdj5cclxuICA8a2VuZG8tZmxvYXRpbmdhY3Rpb25idXR0b24gYnV0dG9uQ2xhc3M9XCJjdXN0b20tZmxvYXRpbmctYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJlMXRhZy1zdHlsZTJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWFsQ2xhc3M9XCJjdXN0b20tZmxvYXRpbmctZGlhbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwb3NpdGlvbk1vZGVdPVwicG9zaXRpb25Nb2RlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FsaWduXT1cImFsaWduXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2RpYWxJdGVtc109XCJpdGVtc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChibHVyKT1cIm9uQmx1cigpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZvY3VzKT1cIm9uRm9jdXMoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvcGVuKT1cIm9uT3BlbigkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsb3NlKT1cIm9uQ2xvc2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJidXR0b25DbGljayhkYXRhKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkaWFsSXRlbUNsaWNrKT1cIm9uRGlhbEl0ZW1DbGljaygkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlXT1cImNvbXBvbmVudFByb3BlcnRpZXMuc3R5bGUuc3R5bGUyXCI+XHJcbiAgICA8bmctdGVtcGxhdGUga2VuZG9GbG9hdGluZ0FjdGlvbkJ1dHRvblRlbXBsYXRlPlxyXG4gICAgICA8ZmEtaWNvbiBbaWNvbl09XCJkYXRhLkljb24gPyBkYXRhLkljb24gOiAncGx1cydcIlxyXG4gICAgICAgICAgICAgICBjbGFzcz1cImUxdGFnLXN0eWxlM1wiXHJcbiAgICAgICAgICAgICAgIFtzdHlsZV09XCJjb21wb25lbnRQcm9wZXJ0aWVzLnN0eWxlLnN0eWxlM1wiPlxyXG4gICAgICA8L2ZhLWljb24+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPG5nLXRlbXBsYXRlIGtlbmRvRGlhbEl0ZW1UZW1wbGF0ZVxyXG4gICAgICAgICAgICAgICAgIGxldC1pdGVtXHJcbiAgICAgICAgICAgICAgICAgbGV0LWlzRm9jdXNlZD1cImlzRm9jdXNlZFwiPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cImstZmFiLWl0ZW0tdGV4dCBlMXRhZy1zdHlsZTRcIlxyXG4gICAgICAgICAgICBbc3R5bGVdPVwiY29tcG9uZW50UHJvcGVydGllcy5zdHlsZS5zdHlsZTRcIj5cclxuICAgICAgICA8c3Bhbj57eyBpdGVtLmxhYmVsIH19PC9zcGFuPlxyXG4gICAgICA8L3NwYW4+XHJcbiAgICAgIDxrZW5kby1hdmF0YXIgc2hhcGU9XCJjaXJjbGVcIlxyXG4gICAgICAgICAgICAgICAgICAgIFt0aGVtZUNvbG9yXT1cImJ1dHRvbkNvbG9yXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImUxdGFnLXN0eWxlNVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlXT1cImNvbXBvbmVudFByb3BlcnRpZXMuc3R5bGUuc3R5bGU1XCI+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJrLWljb24gay1pLXt7IGl0ZW0uaWNvbiB9fVwiPjwvc3Bhbj5cclxuICAgICAgPC9rZW5kby1hdmF0YXI+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gIDwva2VuZG8tZmxvYXRpbmdhY3Rpb25idXR0b24+XHJcbjwvZGl2PlxyXG4iXX0=
215
+ args: [{ selector: 'app-zmfb', template: "<div class=\"zmfb-wrap e1tag-style\" [style]=\"componentProperties.style.style\">\r\n <div class=\"k-overlay e1tag-style1\"\r\n *ngIf=\"dialOpen\"\r\n [style]=\"componentProperties.style.style1\">\r\n </div>\r\n <kendo-floatingactionbutton buttonClass=\"custom-floating-button\"\r\n class=\"e1tag-style2\"\r\n dialClass=\"custom-floating-dial\"\r\n [positionMode]=\"positionMode\"\r\n [align]=\"align\"\r\n [dialItems]=\"items\"\r\n (blur)=\"onBlur()\"\r\n (focus)=\"onFocus()\"\r\n (open)=\"onOpen($event)\"\r\n (close)=\"onClose($event)\"\r\n (click)=\"buttonClick(data)\"\r\n (dialItemClick)=\"onDialItemClick($event)\"\r\n [style]=\"componentProperties.style.style2\">\r\n <ng-template kendoFloatingActionButtonTemplate>\r\n <fa-icon [icon]=\"data.Icon ? data.Icon : 'plus'\"\r\n size=\"2x\"\r\n class=\"e1tag-style3\"\r\n [style]=\"componentProperties.style.style3\">\r\n </fa-icon>\r\n </ng-template>\r\n <ng-template kendoDialItemTemplate\r\n let-item\r\n let-isFocused=\"isFocused\">\r\n <span class=\"k-fab-item-text e1tag-style4\"\r\n [style]=\"componentProperties.style.style4\">\r\n <span>{{ item.label }}</span>\r\n </span>\r\n <kendo-avatar shape=\"circle\"\r\n [themeColor]=\"buttonColor\"\r\n class=\"e1tag-style5\"\r\n [style]=\"componentProperties.style.style5\">\r\n <fa-icon [icon]=\"getFontAwesome(item.icon, fontAweSomeService)\" size=\"1x\"></fa-icon>\r\n </kendo-avatar>\r\n </ng-template>\r\n </kendo-floatingactionbutton>\r\n</div>\r\n", styles: [":host ::ng-deep kendo-floatingactionbutton .custom-floating-button{background:var(--ion-color-primary);border:none!important;outline:none;height:55px;width:55px;z-index:999}:host ::ng-deep kendo-floatingactionbutton .custom-floating-button:hover{background:var(--ion-color-primary-tint)}.button-item{padding:8px 10px;width:100%;display:flex;align-items:center;background-color:#fff}.button-details{margin-left:8px;display:flex;flex-direction:column;align-items:flex-start}.custom-focused-class{box-shadow:inset 0 0 8px #0003}.zmfb-wrap{display:flex;justify-content:center;margin-top:60px}@media only screen and (max-device-width: 768px){.k-bottom-end,.k-pos-bottom-end{padding-bottom:16vh}}.k-top-end,.k-pos-top-end{padding-top:6.5vh;padding-right:1vw}\n"] }]
216
+ }], ctorParameters: function () { return [{ type: i1.ZComponentService }, { type: i2.FontAweSomeService }, { type: i2.FieldService }, { type: i2.ResourceApiService }, { type: i2.WorkflowService }]; } });
217
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiem1mYi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tbWhnbG9iYWwtZHluYW1pY2Zvcm0vc3JjL2xpYi96bWZiL3ptZmIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvem1mYi96bWZiLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtCQUErQjtBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQVF6RCwyQ0FBMkM7QUFDM0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBRTFFLE9BQU8sRUFFTyxnQkFBZ0IsRUFDN0IsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7Ozs7QUFTekIsTUFBTSxPQUFPLGFBQWMsU0FBUSxlQUFlO0lBU2hELFlBQ1MsZ0JBQW1DLEVBQ25DLGtCQUFzQyxFQUNyQyxZQUEwQixFQUMxQixrQkFBc0MsRUFDdEMsZUFBZ0M7UUFFeEMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUE7UUFOaEIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFtQjtRQUNuQyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBQ3JDLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDdEMsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBYjFDLGlCQUFZLEdBQW9CLE9BQU8sQ0FBQztRQUN4QyxVQUFLLEdBQWEsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsQ0FBQztRQUM1RCxVQUFLLEdBQWUsRUFBRSxDQUFDO1FBQ3ZCLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFDMUIscUJBQWdCLEdBQVksS0FBSyxDQUFDO1FBQ2xDLGdCQUFXLEdBQVcsU0FBUyxDQUFDO1FB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QUFnQixDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLGNBQWMsQ0FBQyxDQUFFO29CQUM5RSxVQUFVLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQztvQkFFM0IsSUFBSSxHQUFHLEVBQUU7d0JBQ1AsSUFBSSxDQUFDLGVBQWUsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7cUJBQy9EO2dCQUNILENBQUMsQ0FBQyxDQUFDO2dCQUNILE1BQU07WUFDUjtnQkFDRSxPQUFPLENBQUMsR0FBRyxDQUFDLHVCQUF1QixFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDbEQsTUFBTTtTQUNUO0lBQ0gsQ0FBQzs7MEdBcE9VLGFBQWE7OEZBQWIsYUFBYSx1RUN4QjFCLDArREF5Q0E7MkZEakJhLGFBQWE7a0JBTnpCLFNBQVM7K0JBQ0UsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbIi8qKioqKioqKioqIEFuZ3VsYXIgKioqKioqKioqKi9cclxuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5cclxuLyoqKioqKioqKiogSW9uaWMgKioqKioqKioqKi9cclxuXHJcbi8qKioqKioqKioqIFBsdWdpbiAqKioqKioqKioqL1xyXG5pbXBvcnQgeyBEaWFsSXRlbUNsaWNrRXZlbnQsIEZhYkFsaWduLCBGYWJQb3NpdGlvbk1vZGUgfSBmcm9tICdAcHJvZ3Jlc3Mva2VuZG8tYW5ndWxhci1idXR0b25zJztcclxuXHJcbi8qKioqKioqKioqIENvbXBvbmVudCAmIFNlcnZpY2UgKioqKioqKioqKi9cclxuaW1wb3J0IHsgQnV0dG9uRmllbGRCYXNlIH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvYnV0dG9uZmllbGRiYXNlLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBaQ29tcG9uZW50U2VydmljZSB9IGZyb20gXCIuLi9zZXJ2aWNlcy96Y29tcG9uZW50LnNlcnZpY2VcIjtcclxuaW1wb3J0IHtcclxuICBGaWVsZFNlcnZpY2UsIEZvbnRBd2VTb21lU2VydmljZSwgUmVzb3VyY2VBcGlTZXJ2aWNlLCBXZWJBcGlTZXJ2aWNlLCBXb3JrZmxvd1NlcnZpY2UsXHJcbiAgWkNvbXBvbmVudCwgWkNvbXBvbmVudEhlbHBlciwgWkNvbXBvbmVudE91dHB1dEV2ZW50LCBaQ29tcG9uZW50UHJvcGVydGllcywgWkZpZWxkLCBaR3JvdXBcclxufSBmcm9tICdtbWhnbG9iYWwtemNvcmUnO1xyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLXptZmInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi96bWZiLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi96bWZiLmNvbXBvbmVudC5zY3NzJ10sXHJcbn0pXHJcblxyXG5leHBvcnQgY2xhc3MgWm1mYkNvbXBvbmVudCBleHRlbmRzIEJ1dHRvbkZpZWxkQmFzZSBpbXBsZW1lbnRzIFpDb21wb25lbnQsIE9uSW5pdCB7XHJcbiAgcG9zaXRpb25Nb2RlOiBGYWJQb3NpdGlvbk1vZGUgPSAnZml4ZWQnO1xyXG4gIGFsaWduOiBGYWJBbGlnbiA9IHsgdmVydGljYWw6ICdib3R0b20nLCBob3Jpem9udGFsOiAnZW5kJyB9O1xyXG4gIGl0ZW1zOiBBcnJheTxhbnk+ID0gW107XHJcbiAgZGlhbE9wZW46IGJvb2xlYW4gPSBmYWxzZTtcclxuICBpc1dvcmtmbG93QnV0dG9uOiBib29sZWFuID0gZmFsc2U7XHJcbiAgYnV0dG9uQ29sb3I6IHN0cmluZyA9ICdwcmltYXJ5JztcclxuICBwcml2YXRlIGJ1dHRvbkZpZWxkOiBaRmllbGQ7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIGNvbXBvbmVudFNlcnZpY2U6IFpDb21wb25lbnRTZXJ2aWNlLFxyXG4gICAgcHVibGljIGZvbnRBd2VTb21lU2VydmljZTogRm9udEF3ZVNvbWVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBmaWVsZFNlcnZpY2U6IEZpZWxkU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVzb3VyY2VBcGlTZXJ2aWNlOiBSZXNvdXJjZUFwaVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHdvcmtmbG93U2VydmljZTogV29ya2Zsb3dTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICBzdXBlcihjb21wb25lbnRTZXJ2aWNlKVxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICBzdXBlci5pbml0Q29tcG9uZW50KCkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgdGhpcy5zZXR1cENvbXBvbmVudCgpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICB0aGlzLmNvbXBvbmVudFNlcnZpY2UuZGVjcmVtZW50Q29tcG9uZW50Q291bnRlckZvckZpZWxkKHRoaXMuZGF0YSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldHVwQ29tcG9uZW50KCkge1xyXG4gICAgdGhpcy5hbGlnbiA9ICh0aGlzLmRhdGFbYFBvc2l0aW9uYF0gPyBKU09OLnBhcnNlKHRoaXMuZGF0YVtgUG9zaXRpb25gXSkgOiBudWxsKSB8fCB0aGlzLmFsaWduO1xyXG4gICAgaWYgKHRoaXMuZGF0YS5WYWx1ZSAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgdGhpcy5pdGVtcyA9IHRoaXMuZGF0YS5WYWx1ZTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLnNldHVwRGVmYXVsdERpYWxJdGVtcygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8jcmVnaW9uIEVudmVudHNcclxuICBwdWJsaWMgb25CbHVyKCk6IHZvaWQge1xyXG4gICAgLy9jb25zb2xlLmxvZygnYmx1cicpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uRm9jdXMoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5pc1dvcmtmbG93QnV0dG9uKSB7XHJcbiAgICAgIHRoaXMubG9hZFdvcmtmbG93QnV0dG9uKCk7XHJcbiAgICB9XHJcbiAgICAvL2NvbnNvbGUubG9nKCdmb2N1cycpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uT3BlbihlKTogdm9pZCB7XHJcbiAgICB0aGlzLmRpYWxPcGVuID0gdHJ1ZTtcclxuICAgIGNvbnNvbGUubG9nKCdvcGVuJyk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25DbG9zZShlKTogdm9pZCB7XHJcbiAgICAvLyBUbyBzdGltdWxhdGUgbmV2ZXIgY2xvc2VcclxuICAgIC8vIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgIHRoaXMuZGlhbE9wZW4gPSBmYWxzZTtcclxuICAgIGNvbnNvbGUubG9nKCdjbG9zZScpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uRGlhbEl0ZW1DbGljayhlOiBEaWFsSXRlbUNsaWNrRXZlbnQpOiB2b2lkIHtcclxuICAgIGUuaXRlbS5jbGljaygpO1xyXG4gIH1cclxuICAvLyNlbmRyZWdpb25cclxuXHJcbiAgLy8jcmVnaW9uIERpYWwgSXRlbSAtIEJ1dHRvbnNcclxuICBwcml2YXRlIHNldHVwRGVmYXVsdERpYWxJdGVtcygpIHtcclxuICAgIHRoaXMuYnV0dG9uRmllbGQgPSB0aGlzLmdldEZpcnN0ekJ1dHRvbih0aGlzLmdyb3VwLmZpZWxkcyk7XHJcblxyXG4gICAgaWYgKHRoaXMuYnV0dG9uRmllbGQpIHtcclxuICAgICAgaWYgKCFaQ29tcG9uZW50SGVscGVyLmlzTnVsbFVuZGVmaW5lZEVtcHR5KHRoaXMuYnV0dG9uRmllbGQuV29ya2Zsb3dDb2RlKSkge1xyXG4gICAgICAgIC8vIGhhbmRsZSBhcyB6V29ya2Zsb3dCdXR0b25cclxuICAgICAgICB0aGlzLmlzV29ya2Zsb3dCdXR0b24gPSB0cnVlO1xyXG4gICAgICAgIHRoaXMubG9hZFdvcmtmbG93QnV0dG9uKCk7XHJcblxyXG4gICAgICAgIC8vT2JqZWN0LmFzc2lnbih0aGlzLmdyb3VwLCB7XHJcbiAgICAgICAgLy8gIHptZmJMaW5rZWQ6IGAke3RoaXMuZGF0YS5UeXBlfV8ke3RoaXMuZGF0YS5OYW1lfWBcclxuICAgICAgICAvL30pO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGNvbnN0IGZpZWxkJCA9IHRoaXMuZmllbGRTZXJ2aWNlLmdldEZvcm1GaWVsZENvZGUodGhpcy5idXR0b25GaWVsZC5WYWx1ZSwgXCJGb3JtRmllbGRcIik7XHJcblxyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICBmaWVsZCQuc3Vic2NyaWJlKGRhdGEgPT4ge1xyXG4gICAgICAgICAgICBkYXRhLmZvckVhY2goKGJ1dHRvbjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgY29uc3QgbGFiZWwgPSB0aGlzLmdldEJ1dHRvbkxhYmVsKGJ1dHRvbik7XHJcblxyXG4gICAgICAgICAgICAgIGNvbnN0IF9pc1Zpc2libGUgPSB0aGlzLmlzQnRuVmlzaWJsZShidXR0b24uVmlzaWJsZSk7XHJcbiAgICAgICAgICAgICAgaWYgKF9pc1Zpc2libGUpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuaXRlbXMucHVzaCh7XHJcbiAgICAgICAgICAgICAgICAgIGxhYmVsOiBsYWJlbCxcclxuICAgICAgICAgICAgICAgICAgaWNvbjogWkNvbXBvbmVudEhlbHBlci5nZXRJY29uKGJ1dHRvbi5JY29uKSxcclxuICAgICAgICAgICAgICAgICAgY2xpY2tFdmVudDogYnV0dG9uLkNsaWNrRXZlbnQsXHJcbiAgICAgICAgICAgICAgICAgIGNsaWNrOiAoeSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYnV0dG9uQ2xpY2soYnV0dG9uKTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgICBjb25zb2xlLmVycm9yKFwiZXJyb3I6IFwiLCBlcnJvcik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldEZpcnN0ekJ1dHRvbihkYXRhOiBhbnlbXSkge1xyXG4gICAgLy8gZGF0YS5mb3JFYWNoKGQgPT4ge1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkYXRhLmxlbmd0aCAtIDE7IGkrKykge1xyXG4gICAgICBpZiAoZGF0YVtpXS5UeXBlID09PSBcInpidXR0b25zXCIgfHwgZGF0YVtpXS5UeXBlID09PSBcInp3b3JrZmxvd2J1dHRvbnNcIikge1xyXG4gICAgICAgIHJldHVybiBkYXRhW2ldO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGRhdGFbaV0uVmFsdWUpKSB7XHJcbiAgICAgICAgICB0aGlzLmdldEZpcnN0ekJ1dHRvbihkYXRhW2ldLlZhbHVlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuICAvLyNlbmRyZWdpb25cclxuXHJcbiAgLy8jcmVnaW9uIFdvcmtmbG93XHJcbiAgLy8gVVJMIHJlcXVpcmVkXHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvbixuby11bmRlcnNjb3JlLWRhbmdsZSxpZC1ibGFja2xpc3QsaWQtbWF0Y2hcclxuICBlMXdmc193ZmNHZXRXb3JrZmxvd0J1dHRvblVSTCA9IHRoaXMucmVzb3VyY2VBcGlTZXJ2aWNlLmdldFVSTChcImUxd2ZzX3dmY0dldFdvcmtmbG93QnV0dG9uVVJMXCIpO1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb24sbm8tdW5kZXJzY29yZS1kYW5nbGUsaWQtYmxhY2tsaXN0LGlkLW1hdGNoXHJcbiAgZTF3ZnNfd2ZjX2dldFdvcmtmbG93SW5pdGlhbFN0YXR1c1VSTCA9IHRoaXMucmVzb3VyY2VBcGlTZXJ2aWNlLmdldFVSTChcImUxd2ZzX3dmY19nZXRXb3JrZmxvd0luaXRpYWxTdGF0dXNVUkxcIik7XHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvbiwgbm8tdW5kZXJzY29yZS1kYW5nbGUsIGlkLWJsYWNrbGlzdCwgaWQtbWF0Y2hcclxuICBlMXdmc193ZmNfZ2V0RG9jdW1lbnRTdGF0dXNVUkwgPSB0aGlzLnJlc291cmNlQXBpU2VydmljZS5nZXRVUkwoXCJlMXdmc193ZmNfZ2V0RG9jdW1lbnRTdGF0dXNVUkxcIik7XHJcblxyXG5cclxuICBwcml2YXRlIGxvYWRXb3JrZmxvd0J1dHRvbigpIHtcclxuICAgIC8vICBhY3Rpb25CdG5MaXN0OiBBcnJheTxaRmllbGQ+O1xyXG4gICAgdGhpcy5pdGVtcyA9IFtdO1xyXG5cclxuICAgIC8vIEdldCBXRlNfRG9jdW1lbnRJZCBpZiBhbnkuXHJcbiAgICBsZXQgZG9jdW1lbnRJZCA9IG51bGw7XHJcbiAgICBpZiAodGhpcy5ncm91cC56TW9kZWwpIHtcclxuICAgICAgZG9jdW1lbnRJZCA9IHRoaXMuZ3JvdXAuek1vZGVsWydXRlNfRG9jdW1lbnRJZCddO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFNldCB0aGUgZG9jdW1lbnRJZCB0byB0aGUgc2VydmljZVxyXG4gICAgdGhpcy53b3JrZmxvd1NlcnZpY2UuYXBwZW5kV0ZTX0RvY3VtZW50c0luZm8odGhpcy5idXR0b25GaWVsZC5Xb3JrZmxvd0NvZGUsIGRvY3VtZW50SWQpO1xyXG5cclxuICAgIHRyeSB7XHJcbiAgICAgIC8vIFNldCBwYXJhbSBmb3IgZmllbGRcclxuICAgICAgY29uc3QgZmllbGQkID0gdGhpcy53b3JrZmxvd1NlcnZpY2UuZ2V0V29ya2Zsb3dCdXR0b25zRmllbGQoXHJcbiAgICAgICAgdGhpcy5idXR0b25GaWVsZC5Xb3JrZmxvd0NvZGUsXHJcbiAgICAgICAgdGhpcy5lMXdmc193ZmNHZXRXb3JrZmxvd0J1dHRvblVSTCxcclxuICAgICAgICBTdHJpbmcoZmFsc2UpXHJcbiAgICAgICk7XHJcblxyXG4gICAgICBmaWVsZCQuc3Vic2NyaWJlKGRhdGEgPT4ge1xyXG4gICAgICAgIGRhdGEuZm9yRWFjaCgoYnV0dG9uOiBhbnkpID0+IHtcclxuICAgICAgICAgIGNvbnN0IGxhYmVsID0gdGhpcy5nZXRCdXR0b25MYWJlbChidXR0b24pOyAgXHJcbiAgICAgICAgICBjb25zdCBhdHRyaWJ1dGVzID0gSlNPTi5wYXJzZShidXR0b24uQXR0cmlidXRlcyk7IFxyXG4gICAgICAgICAgY29uc3QgbmV3QXR0cmlidXRlcyA9IHtcclxuICAgICAgICAgICAgLi4uYXR0cmlidXRlcyxcclxuICAgICAgICAgICAgekJ1dHRvbk5hbWU6IHRoaXMuZGF0YS5OYW1lLFxyXG4gICAgICAgICAgICBUeXBlQ29kZTogYnV0dG9uLlR5cGVDb2RlLFxyXG4gICAgICAgICAgICBXb3JrZmxvd0NvZGU6IHRoaXMuZGF0YS5Xb3JrZmxvd0NvZGUsXHJcbiAgICAgICAgICAgIHJlbG9hZEFsbFdvcmtmbG93QnV0dG9uOiB0cnVlXHJcbiAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgIGJ1dHRvbiA9IHtcclxuICAgICAgICAgICAgLi4uYnV0dG9uLFxyXG4gICAgICAgICAgICBBdHRyaWJ1dGVzOiBKU09OLnN0cmluZ2lmeShuZXdBdHRyaWJ1dGVzKSxcclxuICAgICAgICAgICAgZGlzYWJsZVRyaWdnZXI6IHRoaXMuaXNCdXR0b25EaXNhYmxlVHJpZ2dlcih0aGlzLmRhdGEsIGJ1dHRvbiksXHJcbiAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgIGNvbnN0IGJ1dHRvbkxhYmVsID0gYXR0cmlidXRlcy5MYWJlbCB8fCBsYWJlbDtcclxuICAgICAgICAgIGNvbnN0IGlzVmlzaWJsZSA9IHRoaXMuaXNCdG5WaXNpYmxlKGF0dHJpYnV0ZXMuVmlzaWJsZSk7XHJcblxyXG4gICAgICAgICAgaWYgKGlzVmlzaWJsZSkge1xyXG4gICAgICAgICAgICB0aGlzLml0ZW1zLnB1c2goe1xyXG4gICAgICAgICAgICAgIGxhYmVsOiBidXR0b25MYWJlbCxcclxuICAgICAgICAgICAgICBmaWVsZEF0dHJpYnV0ZTogYnV0dG9uLFxyXG4gICAgICAgICAgICAgIGljb246IFpDb21wb25lbnRIZWxwZXIuZ2V0SWNvbihhdHRyaWJ1dGVzLkljb24pLFxyXG4gICAgICAgICAgICAgIGNsaWNrRXZlbnQ6IGJ1dHRvbi5DbGlja0V2ZW50LFxyXG4gICAgICAgICAgICAgIGNsaWNrOiAoeSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy53b3JrZmxvd0J1dHRvbkNsaWNrKGJ1dHRvbik7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIC8vWkNvbXBvbmVudEhlbHBlci5jb2xsZWN0V29ya2Zsb3dCdXR0b24odGhpcy5ncm91cCwgYnV0dG9ucy5Xb3JrZmxvd0NvZGUsIGJ1dHRvbkxhYmVsLCBidXR0b24sIGF0dHJpYnV0ZXMsIG1hcHBlZEluZm8pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9KTtcclxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoXCJlcnJvcjogXCIsIGVycm9yKTtcclxuICAgIH1cclxuICB9XHJcbiAgIFxyXG4gIHByaXZhdGUgaXNCdXR0b25EaXNhYmxlVHJpZ2dlcihkYXRhOiBaRmllbGQsIGJ1dHRvbjogYW55KTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gYnV0dG9uLkRpc2FibGVUcmlnZ2VyICE9IHVuZGVmaW5lZCA/IGJ1dHRvbi5EaXNhYmxlVHJpZ2dlciA6IChkYXRhLkRpc2FibGVUcmlnZ2VyICE9IHVuZGVmaW5lZCA/IGRhdGEuRGlzYWJsZVRyaWdnZXIgOiBmYWxzZSk7XHJcbiAgfVxyXG5cclxuICB3b3JrZmxvd0J1dHRvbkNsaWNrKGJ1dHRvbjogYW55KSB7XHJcbiAgICAvLyBUeXBlIDEgPT0gZnVuY3Rpb25hbDtcclxuICAgIC8vIFR5cGUgMiA9PSBHT1RPO1xyXG4gICAgY29uc3QgYXR0cmlidXRlcyA9IEpTT04ucGFyc2UoYnV0dG9uLkF0dHJpYnV0ZXMpO1xyXG4gICAgc3dpdGNoIChidXR0b24uVHlwZUNvZGUudG9VcHBlckNhc2UoKSkge1xyXG4gICAgICBjYXNlIFwiRlVOQ1RJT05cIjpcclxuICAgICAgICBjb25zb2xlLmxvZyhcIkZ1bmN0aW9uYWwgQnV0dG9uOiBcIiwgYnV0dG9uLk5hbWUpO1xyXG4gICAgICAgIHRoaXMud29ya2Zsb3dTZXJ2aWNlLmZ1bmN0aW9uYWxCdXR0b25fT25DbGljayhhdHRyaWJ1dGVzLCB0aGlzLmdyb3VwKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBcIkdPVE9cIjpcclxuICAgICAgICBjb25zb2xlLmxvZyhcIkdPVE8gQnV0dG9uOiBcIiwgYnV0dG9uLk5hbWUpO1xyXG4gICAgICAgIHRoaXMud29ya2Zsb3dTZXJ2aWNlLmdvdG9CdXR0b25fT25jbGljayhidXR0b24sIHRoaXMuYnV0dG9uRmllbGQsIGF0dHJpYnV0ZXMsIHRoaXMuZ3JvdXAsIGZhbHNlKS5zdWJzY3JpYmUocmVzID0+IHtcclxuICAgICAgICAgIHRoaXMubG9hZFdvcmtmbG93QnV0dG9uKCk7XHJcblxyXG4gICAgICAgICAgLy8gUmVxdWlyZSB0byByZWZyZXNoIHRoZSBmaXJzdHpCdG5cclxuICAgICAgICAgIGNvbnN0IG1haW5CdXR0b25OYW1lID0gYCR7dGhpcy5idXR0b25GaWVsZC5UeXBlfV8ke3RoaXMuYnV0dG9uRmllbGQuTmFtZX1gO1xyXG4gICAgICAgICAgY29uc3QgbWFpbkJ1dHRvbiA9IFpDb21wb25lbnRIZWxwZXIuZ2V0Q29tcG9uZW50KHRoaXMuZ3JvdXAsIG1haW5CdXR0b25OYW1lKSA7XHJcbiAgICAgICAgICBtYWluQnV0dG9uWydsb2FkQnV0dG9uJ10oKTtcclxuXHJcbiAgICAgICAgICBpZiAocmVzKSB7XHJcbiAgICAgICAgICAgIHRoaXMud29ya2Zsb3dTZXJ2aWNlLnRyaWdnZXJTZW5kRW1haWwodGhpcy5ncm91cCkuc3Vic2NyaWJlKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgY29uc29sZS5sb2coXCJJbnZhbGlkIEJ1dHRvbiBUeXBlLiBcIiwgYnV0dG9uLk5hbWUpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gIH1cclxuICAvLyNlbmRyZWdpb25cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiem1mYi13cmFwIGUxdGFnLXN0eWxlXCIgW3N0eWxlXT1cImNvbXBvbmVudFByb3BlcnRpZXMuc3R5bGUuc3R5bGVcIj5cclxuICA8ZGl2IGNsYXNzPVwiay1vdmVybGF5IGUxdGFnLXN0eWxlMVwiXHJcbiAgICAgICAqbmdJZj1cImRpYWxPcGVuXCJcclxuICAgICAgIFtzdHlsZV09XCJjb21wb25lbnRQcm9wZXJ0aWVzLnN0eWxlLnN0eWxlMVwiPlxyXG4gIDwvZGl2PlxyXG4gIDxrZW5kby1mbG9hdGluZ2FjdGlvbmJ1dHRvbiBidXR0b25DbGFzcz1cImN1c3RvbS1mbG9hdGluZy1idXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImUxdGFnLXN0eWxlMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpYWxDbGFzcz1cImN1c3RvbS1mbG9hdGluZy1kaWFsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Bvc2l0aW9uTW9kZV09XCJwb3NpdGlvbk1vZGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYWxpZ25dPVwiYWxpZ25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlhbEl0ZW1zXT1cIml0ZW1zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJsdXIpPVwib25CbHVyKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZm9jdXMpPVwib25Gb2N1cygpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9wZW4pPVwib25PcGVuKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xvc2UpPVwib25DbG9zZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImJ1dHRvbkNsaWNrKGRhdGEpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRpYWxJdGVtQ2xpY2spPVwib25EaWFsSXRlbUNsaWNrKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGVdPVwiY29tcG9uZW50UHJvcGVydGllcy5zdHlsZS5zdHlsZTJcIj5cclxuICAgIDxuZy10ZW1wbGF0ZSBrZW5kb0Zsb2F0aW5nQWN0aW9uQnV0dG9uVGVtcGxhdGU+XHJcbiAgICAgIDxmYS1pY29uIFtpY29uXT1cImRhdGEuSWNvbiA/IGRhdGEuSWNvbiA6ICdwbHVzJ1wiXHJcbiAgICAgICAgICAgICAgICBzaXplPVwiMnhcIlxyXG4gICAgICAgICAgICAgICBjbGFzcz1cImUxdGFnLXN0eWxlM1wiXHJcbiAgICAgICAgICAgICAgIFtzdHlsZV09XCJjb21wb25lbnRQcm9wZXJ0aWVzLnN0eWxlLnN0eWxlM1wiPlxyXG4gICAgICA8L2ZhLWljb24+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPG5nLXRlbXBsYXRlIGtlbmRvRGlhbEl0ZW1UZW1wbGF0ZVxyXG4gICAgICAgICAgICAgICAgIGxldC1pdGVtXHJcbiAgICAgICAgICAgICAgICAgbGV0LWlzRm9jdXNlZD1cImlzRm9jdXNlZFwiPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cImstZmFiLWl0ZW0tdGV4dCBlMXRhZy1zdHlsZTRcIlxyXG4gICAgICAgICAgICBbc3R5bGVdPVwiY29tcG9uZW50UHJvcGVydGllcy5zdHlsZS5zdHlsZTRcIj5cclxuICAgICAgICA8c3Bhbj57eyBpdGVtLmxhYmVsIH19PC9zcGFuPlxyXG4gICAgICA8L3NwYW4+XHJcbiAgICAgIDxrZW5kby1hdmF0YXIgc2hhcGU9XCJjaXJjbGVcIlxyXG4gICAgICAgICAgICAgICAgICAgIFt0aGVtZUNvbG9yXT1cImJ1dHRvbkNvbG9yXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImUxdGFnLXN0eWxlNVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlXT1cImNvbXBvbmVudFByb3BlcnRpZXMuc3R5bGUuc3R5bGU1XCI+XHJcbiAgICAgICAgPGZhLWljb24gW2ljb25dPVwiZ2V0Rm9udEF3ZXNvbWUoaXRlbS5pY29uLCBmb250QXdlU29tZVNlcnZpY2UpXCIgc2l6ZT1cIjF4XCI+PC9mYS1pY29uPlxyXG4gICAgICA8L2tlbmRvLWF2YXRhcj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgPC9rZW5kby1mbG9hdGluZ2FjdGlvbmJ1dHRvbj5cclxuPC9kaXY+XHJcbiJdfQ==