ax-common-ui-lib 1.0.1-beta.34.2 → 1.0.1-beta.34.2-testing

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.
@@ -4,7 +4,7 @@ import * as i0 from "@angular/core";
4
4
  import * as i1 from "@angular/material/dialog";
5
5
  import * as i2 from "@angular/forms";
6
6
  import * as i3 from "@angular/common";
7
- function AppCreateDialogComponentComponent_span_10_Template(rf, ctx) { if (rf & 1) {
7
+ function AppCreateDialogComponentComponent_span_12_Template(rf, ctx) { if (rf & 1) {
8
8
  i0.ɵɵelementStart(0, "span", 12);
9
9
  i0.ɵɵtext(1);
10
10
  i0.ɵɵelementEnd();
@@ -43,7 +43,7 @@ export class AppCreateDialogComponentComponent {
43
43
  }
44
44
  }
45
45
  AppCreateDialogComponentComponent.ɵfac = function AppCreateDialogComponentComponent_Factory(t) { return new (t || AppCreateDialogComponentComponent)(i0.ɵɵdirectiveInject(i1.MatDialogRef)); };
46
- AppCreateDialogComponentComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: AppCreateDialogComponentComponent, selectors: [["app-app-create-dialog-component"]], decls: 20, vars: 6, consts: [[1, "popup-container", "create-app-popup"], [1, "close-icon", 3, "click"], [1, "flex", "flex-col", "gap-2"], ["for", "app-name"], ["type", "text", "id", "app-name", "required", "", 1, "", 3, "ngModel", "ngClass", "ngModelChange", "blur", "input"], [1, "err-message-container"], ["class", "error-message", 4, "ngIf"], ["for", "app-desc"], ["id", "app-desc", "placeholder", "Please provide a detailed description of your app so that our AI can assist you in building your apps faster.", "rows", "5", 1, "", 3, "ngModel", "ngModelChange"], [1, "action-btn-container"], [1, "stroke-btn", 3, "click"], [1, "fill-btn", 3, "click"], [1, "error-message"]], template: function AppCreateDialogComponentComponent_Template(rf, ctx) { if (rf & 1) {
46
+ AppCreateDialogComponentComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: AppCreateDialogComponentComponent, selectors: [["app-app-create-dialog-component"]], decls: 22, vars: 6, consts: [[1, "popup-container", "create-app-popup"], [1, "close-icon", 3, "click"], [1, "flex", "flex-col", "gap-2"], ["for", "app-name"], ["type", "text", "id", "app-name", "required", "", 1, "", 3, "ngModel", "ngClass", "ngModelChange", "blur", "input"], [1, "err-message-container"], ["class", "error-message", 4, "ngIf"], ["for", "app-desc"], ["id", "app-desc", "placeholder", "Please provide a detailed description of your app so that our AI can assist you in building your apps faster.", "rows", "5", 1, "", 3, "ngModel", "ngModelChange"], [1, "action-btn-container"], [1, "stroke-btn", 3, "click"], [1, "fill-btn", 3, "click"], [1, "error-message"]], template: function AppCreateDialogComponentComponent_Template(rf, ctx) { if (rf & 1) {
47
47
  i0.ɵɵelementStart(0, "div", 0);
48
48
  i0.ɵɵelementStart(1, "button", 1);
49
49
  i0.ɵɵlistener("click", function AppCreateDialogComponentComponent_Template_button_click_1_listener() { return ctx.onCancel(); });
@@ -55,44 +55,47 @@ AppCreateDialogComponentComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({
55
55
  i0.ɵɵelementStart(5, "div");
56
56
  i0.ɵɵelementStart(6, "label", 3);
57
57
  i0.ɵɵtext(7, "App Name");
58
+ i0.ɵɵelementStart(8, "sup");
59
+ i0.ɵɵtext(9, "*");
58
60
  i0.ɵɵelementEnd();
59
- i0.ɵɵelementStart(8, "input", 4);
60
- i0.ɵɵlistener("ngModelChange", function AppCreateDialogComponentComponent_Template_input_ngModelChange_8_listener($event) { return ctx.name = $event; })("blur", function AppCreateDialogComponentComponent_Template_input_blur_8_listener() { return ctx.onBlur(); })("input", function AppCreateDialogComponentComponent_Template_input_input_8_listener() { return ctx.onInput(); });
61
61
  i0.ɵɵelementEnd();
62
- i0.ɵɵelementStart(9, "div", 5);
63
- i0.ɵɵtemplate(10, AppCreateDialogComponentComponent_span_10_Template, 2, 1, "span", 6);
62
+ i0.ɵɵelementStart(10, "input", 4);
63
+ i0.ɵɵlistener("ngModelChange", function AppCreateDialogComponentComponent_Template_input_ngModelChange_10_listener($event) { return ctx.name = $event; })("blur", function AppCreateDialogComponentComponent_Template_input_blur_10_listener() { return ctx.onBlur(); })("input", function AppCreateDialogComponentComponent_Template_input_input_10_listener() { return ctx.onInput(); });
64
64
  i0.ɵɵelementEnd();
65
+ i0.ɵɵelementStart(11, "div", 5);
66
+ i0.ɵɵtemplate(12, AppCreateDialogComponentComponent_span_12_Template, 2, 1, "span", 6);
65
67
  i0.ɵɵelementEnd();
66
- i0.ɵɵelementStart(11, "div");
67
- i0.ɵɵelementStart(12, "label", 7);
68
- i0.ɵɵtext(13, "Description");
69
68
  i0.ɵɵelementEnd();
70
- i0.ɵɵelementStart(14, "textarea", 8);
71
- i0.ɵɵlistener("ngModelChange", function AppCreateDialogComponentComponent_Template_textarea_ngModelChange_14_listener($event) { return ctx.description = $event; });
69
+ i0.ɵɵelementStart(13, "div");
70
+ i0.ɵɵelementStart(14, "label", 7);
71
+ i0.ɵɵtext(15, "Description");
72
72
  i0.ɵɵelementEnd();
73
+ i0.ɵɵelementStart(16, "textarea", 8);
74
+ i0.ɵɵlistener("ngModelChange", function AppCreateDialogComponentComponent_Template_textarea_ngModelChange_16_listener($event) { return ctx.description = $event; });
73
75
  i0.ɵɵelementEnd();
74
76
  i0.ɵɵelementEnd();
75
- i0.ɵɵelementStart(15, "div", 9);
76
- i0.ɵɵelementStart(16, "button", 10);
77
- i0.ɵɵlistener("click", function AppCreateDialogComponentComponent_Template_button_click_16_listener() { return ctx.onCancel(); });
78
- i0.ɵɵtext(17, "Cancel");
79
77
  i0.ɵɵelementEnd();
80
- i0.ɵɵelementStart(18, "button", 11);
81
- i0.ɵɵlistener("click", function AppCreateDialogComponentComponent_Template_button_click_18_listener() { return ctx.onSubmit(); });
82
- i0.ɵɵtext(19, "Create");
78
+ i0.ɵɵelementStart(17, "div", 9);
79
+ i0.ɵɵelementStart(18, "button", 10);
80
+ i0.ɵɵlistener("click", function AppCreateDialogComponentComponent_Template_button_click_18_listener() { return ctx.onCancel(); });
81
+ i0.ɵɵtext(19, "Cancel");
82
+ i0.ɵɵelementEnd();
83
+ i0.ɵɵelementStart(20, "button", 11);
84
+ i0.ɵɵlistener("click", function AppCreateDialogComponentComponent_Template_button_click_20_listener() { return ctx.onSubmit(); });
85
+ i0.ɵɵtext(21, "Create");
83
86
  i0.ɵɵelementEnd();
84
87
  i0.ɵɵelementEnd();
85
88
  i0.ɵɵelementEnd();
86
89
  } if (rf & 2) {
87
- i0.ɵɵadvance(8);
90
+ i0.ɵɵadvance(10);
88
91
  i0.ɵɵproperty("ngModel", ctx.name)("ngClass", i0.ɵɵpureFunction1(4, _c0, ctx.showErrMessge.name && ctx.errMessage.name));
89
92
  i0.ɵɵadvance(2);
90
93
  i0.ɵɵproperty("ngIf", ctx.showErrMessge.name && ctx.errMessage.name);
91
94
  i0.ɵɵadvance(4);
92
95
  i0.ɵɵproperty("ngModel", ctx.description);
93
- } }, directives: [i2.DefaultValueAccessor, i2.RequiredValidator, i2.NgControlStatus, i2.NgModel, i3.NgClass, i3.NgIf], styles: [".create-app-popup[_ngcontent-%COMP%]{min-width:30vw}", ".popup-container[_ngcontent-%COMP%]{min-width:20vw;min-height:fit-content;width:fit-content;height:fit-content;max-width:75vw;max-height:75vh;font-family:Inter var,Roboto;font-size:.875rem;position:relative}.popup-container[_ngcontent-%COMP%] h1[_ngcontent-%COMP%]{font-family:Inter var,Roboto!important;color:#1b2b4b;font-size:1.125rem;font-weight:500;line-height:28px;margin:0 0 1rem;text-transform:capitalize;width:fit-content}.popup-container[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{color:#475467;font-weight:400;margin:0;line-height:20px}.popup-container[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{display:block;color:#1b2b4b;font-weight:500;margin:0 0 .2rem}.popup-container[_ngcontent-%COMP%] .close-icon[_ngcontent-%COMP%]{height:24px;width:24px;background-image:url(\"data:image/svg+xml,%3Csvg width%3D%2224%22 height%3D%2224%22 viewBox%3D%220 0 24 24%22 fill%3D%22none%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath d%3D%22M18 6L6 18M6 6L18 18%22 stroke%3D%22%23667085%22 stroke-width%3D%222%22 stroke-linecap%3D%22round%22 stroke-linejoin%3D%22round%22%2F%3E%3C%2Fsvg%3E\");background-position:center;background-size:100%;position:absolute;top:0;right:0}.popup-container[_ngcontent-%COMP%] .action-btn-container[_ngcontent-%COMP%]{display:flex;justify-content:right;gap:.5rem;margin:1.5rem 0 0}.popup-container[_ngcontent-%COMP%] input[type=text][_ngcontent-%COMP%], .popup-container[_ngcontent-%COMP%] input[type=number][_ngcontent-%COMP%], .popup-container[_ngcontent-%COMP%] input[type=email][_ngcontent-%COMP%], .popup-container[_ngcontent-%COMP%] textarea[_ngcontent-%COMP%]{display:block;border:1px solid #D0D5DD;border-radius:.375rem;width:100%;padding:.5rem 1rem;color:#1b2b4b;resize:none}.popup-container[_ngcontent-%COMP%] input[type=text][_ngcontent-%COMP%]::placeholder, .popup-container[_ngcontent-%COMP%] input[type=number][_ngcontent-%COMP%]::placeholder, .popup-container[_ngcontent-%COMP%] input[type=email][_ngcontent-%COMP%]::placeholder, .popup-container[_ngcontent-%COMP%] textarea[_ngcontent-%COMP%]::placeholder{color:#a5a5a5}.popup-container[_ngcontent-%COMP%] input[type=text][_ngcontent-%COMP%]:focus, .popup-container[_ngcontent-%COMP%] input[type=number][_ngcontent-%COMP%]:focus, .popup-container[_ngcontent-%COMP%] input[type=email][_ngcontent-%COMP%]:focus, .popup-container[_ngcontent-%COMP%] textarea[_ngcontent-%COMP%]:focus{border:1px solid #6C52ED}.popup-container[_ngcontent-%COMP%] .err-message-container[_ngcontent-%COMP%]{height:14px;line-height:12px;width:100%;margin-top:2px}.popup-container[_ngcontent-%COMP%] .err-message-container[_ngcontent-%COMP%] .error-message[_ngcontent-%COMP%]{color:#dc2626;font-size:12px;float:right}.popup-container[_ngcontent-%COMP%] .invalid-input[_ngcontent-%COMP%]{border:1px solid #dc2626!important}.popup-container[_ngcontent-%COMP%] .checkbox-container[_ngcontent-%COMP%]{display:flex;justify-content:start;align-items:center}.popup-container[_ngcontent-%COMP%] .checkbox-container[_ngcontent-%COMP%] input[type=checkbox][_ngcontent-%COMP%]{width:fit-content;margin:0 .5rem 0 0}.stroke-btn[_ngcontent-%COMP%]{box-sizing:border-box;padding:.5rem 1rem;border-radius:.5rem;font-size:1rem;font-weight:500;width:fit-content;text-transform:capitalize;background-color:#fff;border:1px solid #D0D5DD;color:#344054}.stroke-btn[_ngcontent-%COMP%]:hover{background-color:#eff6ff}.fill-btn[_ngcontent-%COMP%]{box-sizing:border-box;padding:.5rem 1rem;border-radius:.5rem;font-size:1rem;font-weight:500;width:fit-content;text-transform:capitalize;border:1px solid transparent;background-image:linear-gradient(to right,#4E4AEA,#3C88FC);color:#fff}.fill-btn[_ngcontent-%COMP%]:hover{opacity:.7}.publish-btn[_ngcontent-%COMP%]{box-sizing:border-box;padding:.5rem 1rem;border-radius:.5rem;font-size:1rem;font-weight:500;width:fit-content;text-transform:capitalize;border:none;background-color:#e19965;color:#fff}.publish-btn[_ngcontent-%COMP%]:hover{opacity:.7}.delete-btn[_ngcontent-%COMP%]{box-sizing:border-box;padding:.5rem 1rem;border-radius:.5rem;font-size:1rem;font-weight:500;width:fit-content;text-transform:capitalize;background-color:#fff;border:1px solid #D0D5DD;color:#dc2626}.delete-btn[_ngcontent-%COMP%]:hover{background-color:#eff6ff}"] });
96
+ } }, directives: [i2.DefaultValueAccessor, i2.RequiredValidator, i2.NgControlStatus, i2.NgModel, i3.NgClass, i3.NgIf], styles: [".create-app-popup[_ngcontent-%COMP%]{min-width:30vw}", ".popup-container[_ngcontent-%COMP%]{min-width:20vw;min-height:fit-content;width:fit-content;height:fit-content;max-width:75vw;max-height:75vh;font-family:Inter var,Roboto;font-size:.875rem;position:relative}.popup-container[_ngcontent-%COMP%] .popup-body[_ngcontent-%COMP%]{max-height:70vh;overflow:auto}.popup-container[_ngcontent-%COMP%] h1[_ngcontent-%COMP%]{font-family:Inter var,Roboto!important;color:#1b2b4b;font-size:1.125rem;font-weight:500;line-height:28px;margin:0 0 1rem;text-transform:capitalize;width:fit-content}.popup-container[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{color:#475467;font-weight:400;margin:0;line-height:20px}.popup-container[_ngcontent-%COMP%] label[_ngcontent-%COMP%]:not(.mat-slide-toggle-label){display:block;color:#1b2b4b;font-weight:500;margin:0 0 .2rem}.popup-container[_ngcontent-%COMP%] label[_ngcontent-%COMP%]:not(.mat-slide-toggle-label) sup[_ngcontent-%COMP%]{color:#dc2626}.popup-container[_ngcontent-%COMP%] .close-icon[_ngcontent-%COMP%]{height:24px;width:24px;background-image:url(\"data:image/svg+xml,%3Csvg width%3D%2224%22 height%3D%2224%22 viewBox%3D%220 0 24 24%22 fill%3D%22none%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath d%3D%22M18 6L6 18M6 6L18 18%22 stroke%3D%22%23667085%22 stroke-width%3D%222%22 stroke-linecap%3D%22round%22 stroke-linejoin%3D%22round%22%2F%3E%3C%2Fsvg%3E\");background-position:center;background-size:100%;position:absolute;top:0;right:0;cursor:pointer}.popup-container[_ngcontent-%COMP%] .action-btn-container[_ngcontent-%COMP%]{display:flex;justify-content:right;gap:.5rem;margin:1.5rem 0 0}.popup-container[_ngcontent-%COMP%] input[type=text][_ngcontent-%COMP%], .popup-container[_ngcontent-%COMP%] input[type=number][_ngcontent-%COMP%], .popup-container[_ngcontent-%COMP%] input[type=email][_ngcontent-%COMP%], .popup-container[_ngcontent-%COMP%] textarea[_ngcontent-%COMP%]{display:block;border:1px solid #D0D5DD;border-radius:.375rem;width:100%;padding:.5rem 1rem;color:#1b2b4b;resize:none}.popup-container[_ngcontent-%COMP%] input[type=text][_ngcontent-%COMP%]::placeholder, .popup-container[_ngcontent-%COMP%] input[type=number][_ngcontent-%COMP%]::placeholder, .popup-container[_ngcontent-%COMP%] input[type=email][_ngcontent-%COMP%]::placeholder, .popup-container[_ngcontent-%COMP%] textarea[_ngcontent-%COMP%]::placeholder{color:#a5a5a5}.popup-container[_ngcontent-%COMP%] input[type=text][_ngcontent-%COMP%]:focus, .popup-container[_ngcontent-%COMP%] input[type=number][_ngcontent-%COMP%]:focus, .popup-container[_ngcontent-%COMP%] input[type=email][_ngcontent-%COMP%]:focus, .popup-container[_ngcontent-%COMP%] textarea[_ngcontent-%COMP%]:focus{border:1px solid #6C52ED}.popup-container[_ngcontent-%COMP%] .err-message-container[_ngcontent-%COMP%]{height:14px;line-height:12px;width:100%;margin-top:2px}.popup-container[_ngcontent-%COMP%] .err-message-container[_ngcontent-%COMP%] .error-message[_ngcontent-%COMP%]{color:#dc2626;font-size:12px;float:right}.popup-container[_ngcontent-%COMP%] .invalid-input[_ngcontent-%COMP%]{border:1px solid #DC2626!important}.popup-container[_ngcontent-%COMP%] .checkbox-container[_ngcontent-%COMP%]{display:flex;justify-content:start;align-items:center}.popup-container[_ngcontent-%COMP%] .checkbox-container[_ngcontent-%COMP%] input[type=checkbox][_ngcontent-%COMP%]{width:fit-content;margin:0 .5rem 0 0}.stroke-btn[_ngcontent-%COMP%]{box-sizing:border-box;padding:.5rem 1rem;border-radius:.5rem;font-size:1rem;font-weight:500;width:fit-content;text-transform:capitalize;background-color:#fff;border:1px solid #D0D5DD;color:#344054}.stroke-btn[_ngcontent-%COMP%]:hover{background-color:#eff6ff}.fill-btn[_ngcontent-%COMP%]{box-sizing:border-box;padding:.5rem 1rem;border-radius:.5rem;font-size:1rem;font-weight:500;width:fit-content;text-transform:capitalize;border:1px solid transparent;background-image:linear-gradient(to right,#4E4AEA,#3C88FC);color:#fff}.fill-btn[_ngcontent-%COMP%]:hover{opacity:.7}.publish-btn[_ngcontent-%COMP%]{box-sizing:border-box;padding:.5rem 1rem;border-radius:.5rem;font-size:1rem;font-weight:500;width:fit-content;text-transform:capitalize;border:none;background-color:#e19965;color:#fff}.publish-btn[_ngcontent-%COMP%]:hover{opacity:.7}.delete-btn[_ngcontent-%COMP%]{box-sizing:border-box;padding:.5rem 1rem;border-radius:.5rem;font-size:1rem;font-weight:500;width:fit-content;text-transform:capitalize;background-color:#fff;border:1px solid #D0D5DD;color:#dc2626}.delete-btn[_ngcontent-%COMP%]:hover{background-color:#eff6ff}"] });
94
97
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AppCreateDialogComponentComponent, [{
95
98
  type: Component,
96
- args: [{ selector: 'app-app-create-dialog-component', template: "<div class=\"popup-container create-app-popup\">\n <button class=\"close-icon\" (click)=\"onCancel()\"></button>\n <h1>Create a New App</h1>\n <div class=\"flex flex-col gap-2\">\n <div>\n <label for=\"app-name\">App Name</label>\n <input type=\"text\" [(ngModel)]=\"name\" id=\"app-name\" class=\"\" (blur)=\"onBlur()\" (input)=\"onInput()\" [ngClass]=\"{'invalid-input': showErrMessge.name && errMessage.name}\" required />\n <div class=\"err-message-container\"><span *ngIf=\"showErrMessge.name && errMessage.name\" class=\"error-message\">{{ errMessage.name }}</span></div>\n </div>\n <div>\n <label for=\"app-desc\">Description</label>\n <textarea [(ngModel)]=\"description\" id=\"app-desc\" placeholder=\"Please provide a detailed description of your app so that our AI can assist you in building your apps faster.\" class=\"\" rows=\"5\"></textarea>\n </div>\n </div>\n <div class=\"action-btn-container\">\n <button (click)=\"onCancel()\" class=\"stroke-btn\">Cancel</button>\n <button (click)=\"onSubmit()\" class=\"fill-btn\">Create</button>\n </div>\n</div>", styles: [".create-app-popup{min-width:30vw}\n", ".popup-container{min-width:20vw;min-height:fit-content;width:fit-content;height:fit-content;max-width:75vw;max-height:75vh;font-family:Inter var,Roboto;font-size:.875rem;position:relative}.popup-container h1{font-family:Inter var,Roboto!important;color:#1b2b4b;font-size:1.125rem;font-weight:500;line-height:28px;margin:0 0 1rem;text-transform:capitalize;width:fit-content}.popup-container p{color:#475467;font-weight:400;margin:0;line-height:20px}.popup-container label{display:block;color:#1b2b4b;font-weight:500;margin:0 0 .2rem}.popup-container .close-icon{height:24px;width:24px;background-image:url(\"data:image/svg+xml,%3Csvg width%3D%2224%22 height%3D%2224%22 viewBox%3D%220 0 24 24%22 fill%3D%22none%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath d%3D%22M18 6L6 18M6 6L18 18%22 stroke%3D%22%23667085%22 stroke-width%3D%222%22 stroke-linecap%3D%22round%22 stroke-linejoin%3D%22round%22%2F%3E%3C%2Fsvg%3E\");background-position:center;background-size:100%;position:absolute;top:0;right:0}.popup-container .action-btn-container{display:flex;justify-content:right;gap:.5rem;margin:1.5rem 0 0}.popup-container input[type=text],.popup-container input[type=number],.popup-container input[type=email],.popup-container textarea{display:block;border:1px solid #D0D5DD;border-radius:.375rem;width:100%;padding:.5rem 1rem;color:#1b2b4b;resize:none}.popup-container input[type=text]::placeholder,.popup-container input[type=number]::placeholder,.popup-container input[type=email]::placeholder,.popup-container textarea::placeholder{color:#a5a5a5}.popup-container input[type=text]:focus,.popup-container input[type=number]:focus,.popup-container input[type=email]:focus,.popup-container textarea:focus{border:1px solid #6C52ED}.popup-container .err-message-container{height:14px;line-height:12px;width:100%;margin-top:2px}.popup-container .err-message-container .error-message{color:#dc2626;font-size:12px;float:right}.popup-container .invalid-input{border:1px solid #dc2626!important}.popup-container .checkbox-container{display:flex;justify-content:start;align-items:center}.popup-container .checkbox-container input[type=checkbox]{width:fit-content;margin:0 .5rem 0 0}.stroke-btn{box-sizing:border-box;padding:.5rem 1rem;border-radius:.5rem;font-size:1rem;font-weight:500;width:fit-content;text-transform:capitalize;background-color:#fff;border:1px solid #D0D5DD;color:#344054}.stroke-btn:hover{background-color:#eff6ff}.fill-btn{box-sizing:border-box;padding:.5rem 1rem;border-radius:.5rem;font-size:1rem;font-weight:500;width:fit-content;text-transform:capitalize;border:1px solid transparent;background-image:linear-gradient(to right,#4E4AEA,#3C88FC);color:#fff}.fill-btn:hover{opacity:.7}.publish-btn{box-sizing:border-box;padding:.5rem 1rem;border-radius:.5rem;font-size:1rem;font-weight:500;width:fit-content;text-transform:capitalize;border:none;background-color:#e19965;color:#fff}.publish-btn:hover{opacity:.7}.delete-btn{box-sizing:border-box;padding:.5rem 1rem;border-radius:.5rem;font-size:1rem;font-weight:500;width:fit-content;text-transform:capitalize;background-color:#fff;border:1px solid #D0D5DD;color:#dc2626}.delete-btn:hover{background-color:#eff6ff}\n"] }]
99
+ args: [{ selector: 'app-app-create-dialog-component', template: "<div class=\"popup-container create-app-popup\">\n <button class=\"close-icon\" (click)=\"onCancel()\"></button>\n <h1>Create a New App</h1>\n <div class=\"flex flex-col gap-2\">\n <div>\n <label for=\"app-name\">App Name<sup>*</sup></label>\n <input type=\"text\" [(ngModel)]=\"name\" id=\"app-name\" class=\"\" (blur)=\"onBlur()\" (input)=\"onInput()\" [ngClass]=\"{'invalid-input': showErrMessge.name && errMessage.name}\" required />\n <div class=\"err-message-container\"><span *ngIf=\"showErrMessge.name && errMessage.name\" class=\"error-message\">{{ errMessage.name }}</span></div>\n </div>\n <div>\n <label for=\"app-desc\">Description</label>\n <textarea [(ngModel)]=\"description\" id=\"app-desc\" placeholder=\"Please provide a detailed description of your app so that our AI can assist you in building your apps faster.\" class=\"\" rows=\"5\"></textarea>\n </div>\n </div>\n <div class=\"action-btn-container\">\n <button (click)=\"onCancel()\" class=\"stroke-btn\">Cancel</button>\n <button (click)=\"onSubmit()\" class=\"fill-btn\">Create</button>\n </div>\n</div>", styles: [".create-app-popup{min-width:30vw}\n", ".popup-container{min-width:20vw;min-height:fit-content;width:fit-content;height:fit-content;max-width:75vw;max-height:75vh;font-family:Inter var,Roboto;font-size:.875rem;position:relative}.popup-container .popup-body{max-height:70vh;overflow:auto}.popup-container h1{font-family:Inter var,Roboto!important;color:#1b2b4b;font-size:1.125rem;font-weight:500;line-height:28px;margin:0 0 1rem;text-transform:capitalize;width:fit-content}.popup-container p{color:#475467;font-weight:400;margin:0;line-height:20px}.popup-container label:not(.mat-slide-toggle-label){display:block;color:#1b2b4b;font-weight:500;margin:0 0 .2rem}.popup-container label:not(.mat-slide-toggle-label) sup{color:#dc2626}.popup-container .close-icon{height:24px;width:24px;background-image:url(\"data:image/svg+xml,%3Csvg width%3D%2224%22 height%3D%2224%22 viewBox%3D%220 0 24 24%22 fill%3D%22none%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath d%3D%22M18 6L6 18M6 6L18 18%22 stroke%3D%22%23667085%22 stroke-width%3D%222%22 stroke-linecap%3D%22round%22 stroke-linejoin%3D%22round%22%2F%3E%3C%2Fsvg%3E\");background-position:center;background-size:100%;position:absolute;top:0;right:0;cursor:pointer}.popup-container .action-btn-container{display:flex;justify-content:right;gap:.5rem;margin:1.5rem 0 0}.popup-container input[type=text],.popup-container input[type=number],.popup-container input[type=email],.popup-container textarea{display:block;border:1px solid #D0D5DD;border-radius:.375rem;width:100%;padding:.5rem 1rem;color:#1b2b4b;resize:none}.popup-container input[type=text]::placeholder,.popup-container input[type=number]::placeholder,.popup-container input[type=email]::placeholder,.popup-container textarea::placeholder{color:#a5a5a5}.popup-container input[type=text]:focus,.popup-container input[type=number]:focus,.popup-container input[type=email]:focus,.popup-container textarea:focus{border:1px solid #6C52ED}.popup-container .err-message-container{height:14px;line-height:12px;width:100%;margin-top:2px}.popup-container .err-message-container .error-message{color:#dc2626;font-size:12px;float:right}.popup-container .invalid-input{border:1px solid #DC2626!important}.popup-container .checkbox-container{display:flex;justify-content:start;align-items:center}.popup-container .checkbox-container input[type=checkbox]{width:fit-content;margin:0 .5rem 0 0}.stroke-btn{box-sizing:border-box;padding:.5rem 1rem;border-radius:.5rem;font-size:1rem;font-weight:500;width:fit-content;text-transform:capitalize;background-color:#fff;border:1px solid #D0D5DD;color:#344054}.stroke-btn:hover{background-color:#eff6ff}.fill-btn{box-sizing:border-box;padding:.5rem 1rem;border-radius:.5rem;font-size:1rem;font-weight:500;width:fit-content;text-transform:capitalize;border:1px solid transparent;background-image:linear-gradient(to right,#4E4AEA,#3C88FC);color:#fff}.fill-btn:hover{opacity:.7}.publish-btn{box-sizing:border-box;padding:.5rem 1rem;border-radius:.5rem;font-size:1rem;font-weight:500;width:fit-content;text-transform:capitalize;border:none;background-color:#e19965;color:#fff}.publish-btn:hover{opacity:.7}.delete-btn{box-sizing:border-box;padding:.5rem 1rem;border-radius:.5rem;font-size:1rem;font-weight:500;width:fit-content;text-transform:capitalize;background-color:#fff;border:1px solid #D0D5DD;color:#dc2626}.delete-btn:hover{background-color:#eff6ff}\n"] }]
97
100
  }], function () { return [{ type: i1.MatDialogRef }]; }, null); })();
98
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLWNyZWF0ZS1kaWFsb2ctY29tcG9uZW50LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9heC1jb21tb24tdWktbGliL3NyYy9saWIvYXBwLWNyZWF0ZS1kaWFsb2ctY29tcG9uZW50L2FwcC1jcmVhdGUtZGlhbG9nLWNvbXBvbmVudC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvYXgtY29tbW9uLXVpLWxpYi9zcmMvbGliL2FwcC1jcmVhdGUtZGlhbG9nLWNvbXBvbmVudC9hcHAtY3JlYXRlLWRpYWxvZy1jb21wb25lbnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7Ozs7OztJQ01mLGdDQUEwRTtJQUFBLFlBQXFCO0lBQUEsaUJBQU87OztJQUE1QixlQUFxQjtJQUFyQiw0Q0FBcUI7OztBREN4SSxNQUFNLE9BQU8saUNBQWlDO0lBTzVDLFlBQW1CLFNBQTBEO1FBQTFELGNBQVMsR0FBVCxTQUFTLENBQWlEO1FBTDdFLFNBQUksR0FBVyxFQUFFLENBQUM7UUFDbEIsZ0JBQVcsR0FBVyxFQUFFLENBQUM7UUFDekIsZUFBVSxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDO1FBQzFCLGtCQUFhLEdBQUcsRUFBQyxJQUFJLEVBQUUsS0FBSyxFQUFDLENBQUM7SUFFa0QsQ0FBQztJQUVqRixRQUFRO1FBQ04sSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUNwQixJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztTQUMxRTthQUFNO1lBQ0wsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2Qsc0RBQXNEO1NBQ3ZEO0lBQ0gsQ0FBQztJQUVELE1BQU07UUFDSixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDL0IsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2pCLENBQUM7SUFFRCxPQUFPO1FBQ0wsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksR0FBRyw4QkFBOEIsQ0FBQztJQUN2RyxDQUFDOztrSEE3QlUsaUNBQWlDO29GQUFqQyxpQ0FBaUM7UUNSOUMsOEJBQThDO1FBQzNDLGlDQUFnRDtRQUFyQiw4R0FBUyxjQUFVLElBQUM7UUFBQyxpQkFBUztRQUMxRCwwQkFBSTtRQUFBLGdDQUFnQjtRQUFBLGlCQUFLO1FBQ3pCLDhCQUFpQztRQUMvQiwyQkFBSztRQUNILGdDQUFzQjtRQUFBLHdCQUFRO1FBQUEsaUJBQVE7UUFDdEMsZ0NBQW1MO1FBQWhLLHdKQUFrQiw4RkFBZ0MsWUFBUSxJQUF4QyxnR0FBbUQsYUFBUyxJQUE1RDtRQUFyQyxpQkFBbUw7UUFDbkwsOEJBQW1DO1FBQUEsc0ZBQXNHO1FBQUEsaUJBQU07UUFDakosaUJBQU07UUFDTiw0QkFBSztRQUNILGlDQUFzQjtRQUFBLDRCQUFXO1FBQUEsaUJBQVE7UUFDekMsb0NBQWdNO1FBQXRMLG1LQUF5QjtRQUE2SixpQkFBVztRQUM3TSxpQkFBTTtRQUNSLGlCQUFNO1FBQ04sK0JBQWtDO1FBQ2hDLG1DQUFnRDtRQUF4QywrR0FBUyxjQUFVLElBQUM7UUFBb0IsdUJBQU07UUFBQSxpQkFBUztRQUMvRCxtQ0FBK0M7UUFBdkMsK0dBQVMsY0FBVSxJQUFDO1FBQW1CLHVCQUFNO1FBQUEsaUJBQVM7UUFDaEUsaUJBQU07UUFDUixpQkFBTTs7UUFabUIsZUFBa0I7UUFBbEIsa0NBQWtCLHNGQUFBO1FBQ0ssZUFBMkM7UUFBM0Msb0VBQTJDO1FBSTNFLGVBQXlCO1FBQXpCLHlDQUF5Qjs7dUZESDVCLGlDQUFpQztjQUw3QyxTQUFTOzJCQUNFLGlDQUFpQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXREaWFsb2dSZWYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtYXBwLWNyZWF0ZS1kaWFsb2ctY29tcG9uZW50JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2FwcC1jcmVhdGUtZGlhbG9nLWNvbXBvbmVudC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2FwcC1jcmVhdGUtZGlhbG9nLWNvbXBvbmVudC5jb21wb25lbnQuc2NzcycsIFwiLi4vLi4vc3R5bGVzL3N0eWxlcy5zY3NzXCJdXG59KVxuZXhwb3J0IGNsYXNzIEFwcENyZWF0ZURpYWxvZ0NvbXBvbmVudENvbXBvbmVudCB7XG5cbiAgbmFtZTogc3RyaW5nID0gJyc7XG4gIGRlc2NyaXB0aW9uOiBzdHJpbmcgPSAnJztcbiAgZXJyTWVzc2FnZSA9IHsgbmFtZTogJycgfTtcbiAgc2hvd0Vyck1lc3NnZSA9IHtuYW1lOiBmYWxzZX07XG5cbiAgY29uc3RydWN0b3IocHVibGljIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPEFwcENyZWF0ZURpYWxvZ0NvbXBvbmVudENvbXBvbmVudD4pIHt9XG5cbiAgb25DYW5jZWwoKTogdm9pZCB7XG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoKTtcbiAgfVxuXG4gIG9uU3VibWl0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLm5hbWUudHJpbSgpKSB7XG4gICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSh7IG5hbWU6IHRoaXMubmFtZSwgZGVzY3JpcHRpb246IHRoaXMuZGVzY3JpcHRpb24gfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMub25CbHVyKCk7XG4gICAgICAvLyBPcHRpb25hbDogRGlzcGxheSBhbiBlcnJvciBtZXNzYWdlIGlmIG5hbWUgaXMgZW1wdHlcbiAgICB9XG4gIH1cblxuICBvbkJsdXIoKXtcbiAgICB0aGlzLnNob3dFcnJNZXNzZ2UubmFtZSA9IHRydWU7XG4gICAgdGhpcy5vbklucHV0KCk7XG4gIH1cblxuICBvbklucHV0KCl7XG4gICAgdGhpcy5uYW1lLnRyaW0oKSA/IHRoaXMuZXJyTWVzc2FnZS5uYW1lID0gXCJcIiA6IHRoaXMuZXJyTWVzc2FnZS5uYW1lID0gXCJBcHAgbmFtZSBzaG91bGQgbm90IGJlIGVtcHR5XCI7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJwb3B1cC1jb250YWluZXIgY3JlYXRlLWFwcC1wb3B1cFwiPlxuICAgPGJ1dHRvbiBjbGFzcz1cImNsb3NlLWljb25cIiAoY2xpY2spPVwib25DYW5jZWwoKVwiPjwvYnV0dG9uPlxuICA8aDE+Q3JlYXRlIGEgTmV3IEFwcDwvaDE+XG4gIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGdhcC0yXCI+XG4gICAgPGRpdj5cbiAgICAgIDxsYWJlbCBmb3I9XCJhcHAtbmFtZVwiPkFwcCBOYW1lPC9sYWJlbD5cbiAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIFsobmdNb2RlbCldPVwibmFtZVwiIGlkPVwiYXBwLW5hbWVcIiBjbGFzcz1cIlwiIChibHVyKT1cIm9uQmx1cigpXCIgKGlucHV0KT1cIm9uSW5wdXQoKVwiIFtuZ0NsYXNzXT1cInsnaW52YWxpZC1pbnB1dCc6IHNob3dFcnJNZXNzZ2UubmFtZSAmJiBlcnJNZXNzYWdlLm5hbWV9XCIgcmVxdWlyZWQgLz5cbiAgICAgIDxkaXYgY2xhc3M9XCJlcnItbWVzc2FnZS1jb250YWluZXJcIj48c3BhbiAqbmdJZj1cInNob3dFcnJNZXNzZ2UubmFtZSAmJiBlcnJNZXNzYWdlLm5hbWVcIiBjbGFzcz1cImVycm9yLW1lc3NhZ2VcIj57eyBlcnJNZXNzYWdlLm5hbWUgfX08L3NwYW4+PC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdj5cbiAgICAgIDxsYWJlbCBmb3I9XCJhcHAtZGVzY1wiPkRlc2NyaXB0aW9uPC9sYWJlbD5cbiAgICAgIDx0ZXh0YXJlYSBbKG5nTW9kZWwpXT1cImRlc2NyaXB0aW9uXCIgaWQ9XCJhcHAtZGVzY1wiIHBsYWNlaG9sZGVyPVwiUGxlYXNlIHByb3ZpZGUgYSBkZXRhaWxlZCBkZXNjcmlwdGlvbiBvZiB5b3VyIGFwcCBzbyB0aGF0IG91ciBBSSBjYW4gYXNzaXN0IHlvdSBpbiBidWlsZGluZyB5b3VyIGFwcHMgZmFzdGVyLlwiIGNsYXNzPVwiXCIgcm93cz1cIjVcIj48L3RleHRhcmVhPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImFjdGlvbi1idG4tY29udGFpbmVyXCI+XG4gICAgPGJ1dHRvbiAoY2xpY2spPVwib25DYW5jZWwoKVwiIGNsYXNzPVwic3Ryb2tlLWJ0blwiPkNhbmNlbDwvYnV0dG9uPlxuICAgIDxidXR0b24gKGNsaWNrKT1cIm9uU3VibWl0KClcIiAgY2xhc3M9XCJmaWxsLWJ0blwiPkNyZWF0ZTwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvZGl2PiJdfQ==
101
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLWNyZWF0ZS1kaWFsb2ctY29tcG9uZW50LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9heC1jb21tb24tdWktbGliL3NyYy9saWIvYXBwLWNyZWF0ZS1kaWFsb2ctY29tcG9uZW50L2FwcC1jcmVhdGUtZGlhbG9nLWNvbXBvbmVudC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvYXgtY29tbW9uLXVpLWxpYi9zcmMvbGliL2FwcC1jcmVhdGUtZGlhbG9nLWNvbXBvbmVudC9hcHAtY3JlYXRlLWRpYWxvZy1jb21wb25lbnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7Ozs7OztJQ01mLGdDQUEwRTtJQUFBLFlBQXFCO0lBQUEsaUJBQU87OztJQUE1QixlQUFxQjtJQUFyQiw0Q0FBcUI7OztBREN4SSxNQUFNLE9BQU8saUNBQWlDO0lBTzVDLFlBQW1CLFNBQTBEO1FBQTFELGNBQVMsR0FBVCxTQUFTLENBQWlEO1FBTDdFLFNBQUksR0FBVyxFQUFFLENBQUM7UUFDbEIsZ0JBQVcsR0FBVyxFQUFFLENBQUM7UUFDekIsZUFBVSxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDO1FBQzFCLGtCQUFhLEdBQUcsRUFBQyxJQUFJLEVBQUUsS0FBSyxFQUFDLENBQUM7SUFFa0QsQ0FBQztJQUVqRixRQUFRO1FBQ04sSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUNwQixJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztTQUMxRTthQUFNO1lBQ0wsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2Qsc0RBQXNEO1NBQ3ZEO0lBQ0gsQ0FBQztJQUVELE1BQU07UUFDSixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDL0IsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2pCLENBQUM7SUFFRCxPQUFPO1FBQ0wsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksR0FBRyw4QkFBOEIsQ0FBQztJQUN2RyxDQUFDOztrSEE3QlUsaUNBQWlDO29GQUFqQyxpQ0FBaUM7UUNSOUMsOEJBQThDO1FBQzNDLGlDQUFnRDtRQUFyQiw4R0FBUyxjQUFVLElBQUM7UUFBQyxpQkFBUztRQUMxRCwwQkFBSTtRQUFBLGdDQUFnQjtRQUFBLGlCQUFLO1FBQ3pCLDhCQUFpQztRQUMvQiwyQkFBSztRQUNILGdDQUFzQjtRQUFBLHdCQUFRO1FBQUEsMkJBQUs7UUFBQSxpQkFBQztRQUFBLGlCQUFNO1FBQUEsaUJBQVE7UUFDbEQsaUNBQW1MO1FBQWhLLHlKQUFrQiwrRkFBZ0MsWUFBUSxJQUF4QyxpR0FBbUQsYUFBUyxJQUE1RDtRQUFyQyxpQkFBbUw7UUFDbkwsK0JBQW1DO1FBQUEsc0ZBQXNHO1FBQUEsaUJBQU07UUFDakosaUJBQU07UUFDTiw0QkFBSztRQUNILGlDQUFzQjtRQUFBLDRCQUFXO1FBQUEsaUJBQVE7UUFDekMsb0NBQWdNO1FBQXRMLG1LQUF5QjtRQUE2SixpQkFBVztRQUM3TSxpQkFBTTtRQUNSLGlCQUFNO1FBQ04sK0JBQWtDO1FBQ2hDLG1DQUFnRDtRQUF4QywrR0FBUyxjQUFVLElBQUM7UUFBb0IsdUJBQU07UUFBQSxpQkFBUztRQUMvRCxtQ0FBK0M7UUFBdkMsK0dBQVMsY0FBVSxJQUFDO1FBQW1CLHVCQUFNO1FBQUEsaUJBQVM7UUFDaEUsaUJBQU07UUFDUixpQkFBTTs7UUFabUIsZ0JBQWtCO1FBQWxCLGtDQUFrQixzRkFBQTtRQUNLLGVBQTJDO1FBQTNDLG9FQUEyQztRQUkzRSxlQUF5QjtRQUF6Qix5Q0FBeUI7O3VGREg1QixpQ0FBaUM7Y0FMN0MsU0FBUzsyQkFDRSxpQ0FBaUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0RGlhbG9nUmVmIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWFwcC1jcmVhdGUtZGlhbG9nLWNvbXBvbmVudCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9hcHAtY3JlYXRlLWRpYWxvZy1jb21wb25lbnQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9hcHAtY3JlYXRlLWRpYWxvZy1jb21wb25lbnQuY29tcG9uZW50LnNjc3MnLCBcIi4uLy4uL3N0eWxlcy9zdHlsZXMuc2Nzc1wiXVxufSlcbmV4cG9ydCBjbGFzcyBBcHBDcmVhdGVEaWFsb2dDb21wb25lbnRDb21wb25lbnQge1xuXG4gIG5hbWU6IHN0cmluZyA9ICcnO1xuICBkZXNjcmlwdGlvbjogc3RyaW5nID0gJyc7XG4gIGVyck1lc3NhZ2UgPSB7IG5hbWU6ICcnIH07XG4gIHNob3dFcnJNZXNzZ2UgPSB7bmFtZTogZmFsc2V9O1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxBcHBDcmVhdGVEaWFsb2dDb21wb25lbnRDb21wb25lbnQ+KSB7fVxuXG4gIG9uQ2FuY2VsKCk6IHZvaWQge1xuICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKCk7XG4gIH1cblxuICBvblN1Ym1pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5uYW1lLnRyaW0oKSkge1xuICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoeyBuYW1lOiB0aGlzLm5hbWUsIGRlc2NyaXB0aW9uOiB0aGlzLmRlc2NyaXB0aW9uIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm9uQmx1cigpO1xuICAgICAgLy8gT3B0aW9uYWw6IERpc3BsYXkgYW4gZXJyb3IgbWVzc2FnZSBpZiBuYW1lIGlzIGVtcHR5XG4gICAgfVxuICB9XG5cbiAgb25CbHVyKCl7XG4gICAgdGhpcy5zaG93RXJyTWVzc2dlLm5hbWUgPSB0cnVlO1xuICAgIHRoaXMub25JbnB1dCgpO1xuICB9XG5cbiAgb25JbnB1dCgpe1xuICAgIHRoaXMubmFtZS50cmltKCkgPyB0aGlzLmVyck1lc3NhZ2UubmFtZSA9IFwiXCIgOiB0aGlzLmVyck1lc3NhZ2UubmFtZSA9IFwiQXBwIG5hbWUgc2hvdWxkIG5vdCBiZSBlbXB0eVwiO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwicG9wdXAtY29udGFpbmVyIGNyZWF0ZS1hcHAtcG9wdXBcIj5cbiAgIDxidXR0b24gY2xhc3M9XCJjbG9zZS1pY29uXCIgKGNsaWNrKT1cIm9uQ2FuY2VsKClcIj48L2J1dHRvbj5cbiAgPGgxPkNyZWF0ZSBhIE5ldyBBcHA8L2gxPlxuICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBnYXAtMlwiPlxuICAgIDxkaXY+XG4gICAgICA8bGFiZWwgZm9yPVwiYXBwLW5hbWVcIj5BcHAgTmFtZTxzdXA+Kjwvc3VwPjwvbGFiZWw+XG4gICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBbKG5nTW9kZWwpXT1cIm5hbWVcIiBpZD1cImFwcC1uYW1lXCIgY2xhc3M9XCJcIiAoYmx1cik9XCJvbkJsdXIoKVwiIChpbnB1dCk9XCJvbklucHV0KClcIiBbbmdDbGFzc109XCJ7J2ludmFsaWQtaW5wdXQnOiBzaG93RXJyTWVzc2dlLm5hbWUgJiYgZXJyTWVzc2FnZS5uYW1lfVwiIHJlcXVpcmVkIC8+XG4gICAgICA8ZGl2IGNsYXNzPVwiZXJyLW1lc3NhZ2UtY29udGFpbmVyXCI+PHNwYW4gKm5nSWY9XCJzaG93RXJyTWVzc2dlLm5hbWUgJiYgZXJyTWVzc2FnZS5uYW1lXCIgY2xhc3M9XCJlcnJvci1tZXNzYWdlXCI+e3sgZXJyTWVzc2FnZS5uYW1lIH19PC9zcGFuPjwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXY+XG4gICAgICA8bGFiZWwgZm9yPVwiYXBwLWRlc2NcIj5EZXNjcmlwdGlvbjwvbGFiZWw+XG4gICAgICA8dGV4dGFyZWEgWyhuZ01vZGVsKV09XCJkZXNjcmlwdGlvblwiIGlkPVwiYXBwLWRlc2NcIiBwbGFjZWhvbGRlcj1cIlBsZWFzZSBwcm92aWRlIGEgZGV0YWlsZWQgZGVzY3JpcHRpb24gb2YgeW91ciBhcHAgc28gdGhhdCBvdXIgQUkgY2FuIGFzc2lzdCB5b3UgaW4gYnVpbGRpbmcgeW91ciBhcHBzIGZhc3Rlci5cIiBjbGFzcz1cIlwiIHJvd3M9XCI1XCI+PC90ZXh0YXJlYT5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJhY3Rpb24tYnRuLWNvbnRhaW5lclwiPlxuICAgIDxidXR0b24gKGNsaWNrKT1cIm9uQ2FuY2VsKClcIiBjbGFzcz1cInN0cm9rZS1idG5cIj5DYW5jZWw8L2J1dHRvbj5cbiAgICA8YnV0dG9uIChjbGljayk9XCJvblN1Ym1pdCgpXCIgIGNsYXNzPVwiZmlsbC1idG5cIj5DcmVhdGU8L2J1dHRvbj5cbiAgPC9kaXY+XG48L2Rpdj4iXX0=
@@ -32,90 +32,86 @@ function GenerateQRComponent_div_0_Template(rf, ctx) { if (rf & 1) {
32
32
  i0.ɵɵelementEnd();
33
33
  i0.ɵɵelementEnd();
34
34
  } }
35
- function GenerateQRComponent_ng_template_1_div_27_span_1_Template(rf, ctx) { if (rf & 1) {
36
- i0.ɵɵelementStart(0, "span");
35
+ function GenerateQRComponent_ng_template_1_span_30_Template(rf, ctx) { if (rf & 1) {
36
+ i0.ɵɵelementStart(0, "span", 23);
37
37
  i0.ɵɵtext(1, "Please enter valid email ID(s)");
38
38
  i0.ɵɵelementEnd();
39
39
  } }
40
- function GenerateQRComponent_ng_template_1_div_27_Template(rf, ctx) { if (rf & 1) {
41
- i0.ɵɵelementStart(0, "div", 25);
42
- i0.ɵɵtemplate(1, GenerateQRComponent_ng_template_1_div_27_span_1_Template, 2, 0, "span", 26);
43
- i0.ɵɵelementEnd();
44
- } if (rf & 2) {
45
- const ctx_r5 = i0.ɵɵnextContext(2);
46
- i0.ɵɵadvance(1);
47
- i0.ɵɵproperty("ngIf", ctx_r5.formGroup.get("email").hasError("invalidEmails"));
48
- } }
49
- const _c0 = function (a0) { return { "invalid-email": a0 }; };
40
+ const _c0 = function (a0) { return { "invalid-input": a0 }; };
50
41
  function GenerateQRComponent_ng_template_1_Template(rf, ctx) { if (rf & 1) {
51
- const _r8 = i0.ɵɵgetCurrentView();
42
+ const _r7 = i0.ɵɵgetCurrentView();
52
43
  i0.ɵɵelementStart(0, "div", 7);
53
- i0.ɵɵelementStart(1, "mat-icon", 8);
54
- i0.ɵɵlistener("click", function GenerateQRComponent_ng_template_1_Template_mat_icon_click_1_listener() { i0.ɵɵrestoreView(_r8); const ctx_r7 = i0.ɵɵnextContext(); return ctx_r7.close(); });
44
+ i0.ɵɵelementStart(1, "button", 8);
45
+ i0.ɵɵlistener("click", function GenerateQRComponent_ng_template_1_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r7); const ctx_r6 = i0.ɵɵnextContext(); return ctx_r6.close(); });
55
46
  i0.ɵɵelementEnd();
56
- i0.ɵɵelementStart(2, "div", 9);
47
+ i0.ɵɵelementStart(2, "h1");
57
48
  i0.ɵɵtext(3, "Generate QR Codes");
58
49
  i0.ɵɵelementEnd();
59
- i0.ɵɵelementStart(4, "form", 10);
60
- i0.ɵɵlistener("ngSubmit", function GenerateQRComponent_ng_template_1_Template_form_ngSubmit_4_listener() { i0.ɵɵrestoreView(_r8); const ctx_r9 = i0.ɵɵnextContext(); return ctx_r9.submitForm(); });
61
- i0.ɵɵelementStart(5, "div", 11);
62
- i0.ɵɵelementStart(6, "mat-label", 12);
63
- i0.ɵɵtext(7, "Scan Trigger");
50
+ i0.ɵɵelementStart(4, "div", 9);
51
+ i0.ɵɵelementStart(5, "form", 10);
52
+ i0.ɵɵlistener("ngSubmit", function GenerateQRComponent_ng_template_1_Template_form_ngSubmit_5_listener() { i0.ɵɵrestoreView(_r7); const ctx_r8 = i0.ɵɵnextContext(); return ctx_r8.submitForm(); });
53
+ i0.ɵɵelementStart(6, "div", 11);
54
+ i0.ɵɵelementStart(7, "label");
55
+ i0.ɵɵtext(8, "Scan Trigger");
64
56
  i0.ɵɵelementEnd();
65
- i0.ɵɵelementStart(8, "div", 13);
66
- i0.ɵɵtext(9, "Open QR Code scanner when one of the following is opened");
57
+ i0.ɵɵelementStart(9, "p");
58
+ i0.ɵɵtext(10, "Open QR Code scanner when one of the following is opened");
67
59
  i0.ɵɵelementEnd();
68
- i0.ɵɵelementStart(10, "mat-radio-group", 14);
69
- i0.ɵɵelementStart(11, "mat-radio-button", 15);
70
- i0.ɵɵtext(12, "App");
60
+ i0.ɵɵelementStart(11, "mat-radio-group", 12);
61
+ i0.ɵɵelementStart(12, "mat-radio-button", 13);
62
+ i0.ɵɵtext(13, "App");
71
63
  i0.ɵɵelementEnd();
72
- i0.ɵɵelementStart(13, "mat-radio-button", 16);
73
- i0.ɵɵtext(14, "Form");
64
+ i0.ɵɵelementStart(14, "mat-radio-button", 14);
65
+ i0.ɵɵtext(15, "Form");
74
66
  i0.ɵɵelementEnd();
75
67
  i0.ɵɵelementEnd();
76
- i0.ɵɵelementStart(15, "mat-label", 12);
77
- i0.ɵɵtext(16, "Auto-Populate");
68
+ i0.ɵɵelementStart(16, "label");
69
+ i0.ɵɵtext(17, "Auto-Populate");
78
70
  i0.ɵɵelementEnd();
79
- i0.ɵɵelementStart(17, "div", 13);
80
- i0.ɵɵtext(18, "Select the form fields that need to be automatically filled based on the data embedded in the QR Code");
71
+ i0.ɵɵelementStart(18, "p");
72
+ i0.ɵɵtext(19, "Select the form fields that need to be automatically filled based on the data embedded in the QR Code");
81
73
  i0.ɵɵelementEnd();
82
- i0.ɵɵelementStart(19, "lib-field-map", 17);
83
- i0.ɵɵlistener("fieldmap", function GenerateQRComponent_ng_template_1_Template_lib_field_map_fieldmap_19_listener($event) { i0.ɵɵrestoreView(_r8); const ctx_r10 = i0.ɵɵnextContext(); return ctx_r10.handlefieldmap($event); });
74
+ i0.ɵɵelementStart(20, "lib-field-map", 15);
75
+ i0.ɵɵlistener("fieldmap", function GenerateQRComponent_ng_template_1_Template_lib_field_map_fieldmap_20_listener($event) { i0.ɵɵrestoreView(_r7); const ctx_r9 = i0.ɵɵnextContext(); return ctx_r9.handlefieldmap($event); });
84
76
  i0.ɵɵelementEnd();
85
- i0.ɵɵelementStart(20, "div", 18);
86
- i0.ɵɵelementStart(21, "mat-label", 12);
87
- i0.ɵɵtext(22, "Send QR Codes");
77
+ i0.ɵɵelementStart(21, "div", 16);
78
+ i0.ɵɵelementStart(22, "label");
79
+ i0.ɵɵtext(23, "Send QR Codes ");
80
+ i0.ɵɵelementStart(24, "sup");
81
+ i0.ɵɵtext(25, "*");
88
82
  i0.ɵɵelementEnd();
89
- i0.ɵɵelementStart(23, "div", 13);
90
- i0.ɵɵtext(24, "Enter emails where you want to send the generated QR Codes. A zip file will be emailed.");
91
83
  i0.ɵɵelementEnd();
92
- i0.ɵɵelementStart(25, "div", 19);
93
- i0.ɵɵelement(26, "input", 20);
94
- i0.ɵɵtemplate(27, GenerateQRComponent_ng_template_1_div_27_Template, 2, 1, "div", 21);
84
+ i0.ɵɵelementStart(26, "p");
85
+ i0.ɵɵtext(27, "Enter emails where you want to send the generated QR Codes. A zip file will be emailed.");
95
86
  i0.ɵɵelementEnd();
87
+ i0.ɵɵelement(28, "input", 17);
88
+ i0.ɵɵelementStart(29, "div", 18);
89
+ i0.ɵɵtemplate(30, GenerateQRComponent_ng_template_1_span_30_Template, 2, 0, "span", 19);
96
90
  i0.ɵɵelementEnd();
97
91
  i0.ɵɵelementEnd();
98
- i0.ɵɵelementStart(28, "div", 22);
99
- i0.ɵɵelementStart(29, "button", 23);
100
- i0.ɵɵlistener("click", function GenerateQRComponent_ng_template_1_Template_button_click_29_listener() { i0.ɵɵrestoreView(_r8); const ctx_r11 = i0.ɵɵnextContext(); return ctx_r11.close(); });
101
- i0.ɵɵtext(30, "Cancel");
102
92
  i0.ɵɵelementEnd();
103
- i0.ɵɵelementStart(31, "button", 24);
104
- i0.ɵɵtext(32, "Generate");
93
+ i0.ɵɵelementStart(31, "div", 20);
94
+ i0.ɵɵelementStart(32, "button", 21);
95
+ i0.ɵɵlistener("click", function GenerateQRComponent_ng_template_1_Template_button_click_32_listener() { i0.ɵɵrestoreView(_r7); const ctx_r10 = i0.ɵɵnextContext(); return ctx_r10.close(); });
96
+ i0.ɵɵtext(33, "Cancel");
97
+ i0.ɵɵelementEnd();
98
+ i0.ɵɵelementStart(34, "button", 22);
99
+ i0.ɵɵtext(35, "Generate");
100
+ i0.ɵɵelementEnd();
105
101
  i0.ɵɵelementEnd();
106
102
  i0.ɵɵelementEnd();
107
103
  i0.ɵɵelementEnd();
108
104
  i0.ɵɵelementEnd();
109
105
  } if (rf & 2) {
110
106
  const ctx_r2 = i0.ɵɵnextContext();
111
- i0.ɵɵadvance(4);
107
+ i0.ɵɵadvance(5);
112
108
  i0.ɵɵproperty("formGroup", ctx_r2.formGroup);
113
109
  i0.ɵɵadvance(15);
114
110
  i0.ɵɵproperty("filteredWidgets", ctx_r2.filteredWidgets)("appVersionId", ctx_r2.appVersionId)("sourceForms", ctx_r2.sourceForms)("source", ctx_r2.source)("actionFormId", ctx_r2.actionFormId)("mapType", ctx_r2.mapType);
115
- i0.ɵɵadvance(7);
116
- i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(9, _c0, ctx_r2.formGroup.get("email").invalid && (ctx_r2.formGroup.get("email").dirty || ctx_r2.formGroup.get("email").touched)));
117
- i0.ɵɵadvance(1);
118
- i0.ɵɵproperty("ngIf", ctx_r2.formGroup.get("email").invalid && (ctx_r2.formGroup.get("email").dirty || ctx_r2.formGroup.get("email").touched));
111
+ i0.ɵɵadvance(8);
112
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(9, _c0, ctx_r2.formGroup.controls.email.touched && ctx_r2.formGroup.controls.email.status === "INVALID"));
113
+ i0.ɵɵadvance(2);
114
+ i0.ɵɵproperty("ngIf", ctx_r2.formGroup.controls.email.touched && ctx_r2.formGroup.controls.email.status === "INVALID");
119
115
  } }
120
116
  export class GenerateQRComponent {
121
117
  constructor(dialogRef, _dataViewFiltersService, _dataViewService, formBuilder, dialog, _httpClient, formData, _AxoService // Inject the form object
@@ -305,6 +301,11 @@ export class GenerateQRComponent {
305
301
  document.body.removeChild(link);
306
302
  }
307
303
  submitForm() {
304
+ if (this.formGroup.controls.email.status === 'INVALID') {
305
+ this.formGroup.controls.email.markAsTouched();
306
+ return;
307
+ }
308
+ ;
308
309
  this.generateQr();
309
310
  // Add any additional form submission logic here if needed
310
311
  }
@@ -346,13 +347,13 @@ GenerateQRComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: Generat
346
347
  provide: MAT_SELECT_CONFIG,
347
348
  useValue: { overlayPanelClass: 'generate-qr-overlay-panel' },
348
349
  },
349
- ])], decls: 3, vars: 2, consts: [[4, "ngIf", "ngIfElse"], ["showForm", ""], [1, "flex", "flex-col", "gap-6", "w-auto", "h-auto", "px-8", "py-4", "relative"], ["svgIcon", "axo_popup_close", 1, "cursor-pointer", "absolute", "top-2", "right-2", 3, "click"], [1, "axo-font", "text-3xl", "font-medium", "m-0"], [1, "video-container"], ["width", "560", "height", "315", "src", "https://www.youtube.com/embed/RazJekuQ-cI", "frameborder", "0", "allowfullscreen", ""], [1, "flex", "flex-col", "gap-3", "w-auto", "h-auto", "p-2", "relative"], ["svgIcon", "axo_popup_close", 1, "cursor-pointer", "absolute", "top-2", "right-3", 3, "click"], ["mat-dialog-title", "", 1, "axo-font", "text-3xl", "font-medium", "m-0"], [3, "formGroup", "ngSubmit"], ["mat-dialog-content", "", 1, "content-container", "flex", "flex-col", "gap-1"], [1, "axo-font", "create-board-label", "mt-4"], [1, "mb-2", "qr-description"], ["formControlName", "level", 2, "margin-top", "0.1px"], ["value", "App", 1, "pr-4", "axo-font"], ["value", "Form", 1, "axo-font"], [3, "filteredWidgets", "appVersionId", "sourceForms", "source", "actionFormId", "mapType", "fieldmap"], [1, "email-container", "gap-1"], [1, "input-container"], ["type", "text", "formControlName", "email", "placeholder", "Enter comma separated email ids", 1, "text-box", "rounded-md", 3, "ngClass"], ["class", "error-message", 4, "ngIf"], ["mat-dialog-actions", "", 1, "flex", "gap-3", "items-center", "justify-end", "action-buttons", "mr-4"], ["mat-button", "", "type", "button", 1, "btn", "stroke-btn", 3, "click"], ["mat-button", "", "type", "submit", "cdkFocusInitial", "", 1, "btn", "fill-btn"], [1, "error-message"], [4, "ngIf"]], template: function GenerateQRComponent_Template(rf, ctx) { if (rf & 1) {
350
+ ])], decls: 3, vars: 2, consts: [[4, "ngIf", "ngIfElse"], ["showForm", ""], [1, "flex", "flex-col", "gap-6", "w-auto", "h-auto", "px-8", "py-4", "relative"], ["svgIcon", "axo_popup_close", 1, "cursor-pointer", "absolute", "top-2", "right-2", 3, "click"], [1, "axo-font", "text-3xl", "font-medium", "m-0"], [1, "video-container"], ["width", "560", "height", "315", "src", "https://www.youtube.com/embed/RazJekuQ-cI", "frameborder", "0", "allowfullscreen", ""], [1, "popup-container"], [1, "close-icon", 3, "click"], [1, "popup-body"], [3, "formGroup", "ngSubmit"], [1, "flex", "flex-col", "gap-1"], ["formControlName", "level", 1, "flex", "gap-4", "mb-2"], ["value", "App"], ["value", "Form"], [3, "filteredWidgets", "appVersionId", "sourceForms", "source", "actionFormId", "mapType", "fieldmap"], [1, ""], ["type", "text", "formControlName", "email", "placeholder", "Enter comma separated email ids", 3, "ngClass"], [1, "err-message-container"], ["class", "error-message", 4, "ngIf"], [1, "action-btn-container"], ["type", "button", 1, "stroke-btn", 3, "click"], ["type", "submit", "cdkFocusInitial", "", 1, "fill-btn"], [1, "error-message"]], template: function GenerateQRComponent_Template(rf, ctx) { if (rf & 1) {
350
351
  i0.ɵɵtemplate(0, GenerateQRComponent_div_0_Template, 7, 0, "div", 0);
351
- i0.ɵɵtemplate(1, GenerateQRComponent_ng_template_1_Template, 33, 11, "ng-template", null, 1, i0.ɵɵtemplateRefExtractor);
352
+ i0.ɵɵtemplate(1, GenerateQRComponent_ng_template_1_Template, 36, 11, "ng-template", null, 1, i0.ɵɵtemplateRefExtractor);
352
353
  } if (rf & 2) {
353
354
  const _r1 = i0.ɵɵreference(2);
354
355
  i0.ɵɵproperty("ngIf", ctx.formft === "T")("ngIfElse", _r1);
355
- } }, styles: [".overlay[_ngcontent-%COMP%]{position:fixed;top:0;left:0;width:100%;height:100%;background-color:#00000080;z-index:9999;display:flex;justify-content:center;align-items:center}.mat-dialog-content[_ngcontent-%COMP%]{overflow:hidden}.primary-btn[_ngcontent-%COMP%] i[_ngcontent-%COMP%]{font-size:20px}.generate-qr-overlay-panel[_ngcontent-%COMP%]{margin-top:3rem}.generate-qr-overlay-panel[_ngcontent-%COMP%] .mat-select-panel[_ngcontent-%COMP%]{min-width:calc(100% + 2rem)!important;margin-left:1.5rem}.overlay-content[_ngcontent-%COMP%]{background-color:#fff;padding:20px;border-radius:5px;box-shadow:0 0 10px #0003;max-width:500px}.overlay-header[_ngcontent-%COMP%]{font-family:Times New Roman,Times,serif;font-size:18px;font-weight:700;margin-bottom:10px}.level-options[_ngcontent-%COMP%]{margin-bottom:10px}.remote-button[_ngcontent-%COMP%]{background-color:#4caf50;color:#fff;padding:10px 20px;border:none;border-radius:5px;cursor:pointer;margin-right:10px}.data-section[_ngcontent-%COMP%]{margin-bottom:10px;display:flex;align-items:center}.data-section-delete[_ngcontent-%COMP%]{visibility:hidden;opacity:0;cursor:pointer;transition:all .1s}.data-section[_ngcontent-%COMP%]:hover .data-section-delete[_ngcontent-%COMP%]{visibility:visible;opacity:1}.field-select[_ngcontent-%COMP%]{flex:1;padding:8px;border-radius:5px;width:110px;border:1px solid #ccc}.add-field-button[_ngcontent-%COMP%]{background-color:#008cba;color:#fff;border:none;border-radius:30%;cursor:pointer;width:30px;height:30px}.additional-fields[_ngcontent-%COMP%]{margin-bottom:10px}.logo-options[_ngcontent-%COMP%]{margin-bottom:10px;display:flex;align-items:center}.logo-options[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{margin-left:15px;margin-right:30px}.browse-button[_ngcontent-%COMP%]{background-color:#008cba;color:#fff;padding:10px 20px;border:none;border-radius:5px;cursor:pointer}.generate-button[_ngcontent-%COMP%]{display:flex;align-items:center;margin-left:5px;margin-right:15px}.remote-button[_ngcontent-%COMP%]{display:inline-block;margin-right:10px;cursor:pointer}.remote-button[_ngcontent-%COMP%] input[type=checkbox][_ngcontent-%COMP%]{display:none}.remote-button[_ngcontent-%COMP%] input[type=checkbox][_ngcontent-%COMP%] + span[_ngcontent-%COMP%]{display:inline-block;width:20px;height:20px;border:1px solid #ccc;border-radius:50%;vertical-align:middle;position:relative}.remote-button[_ngcontent-%COMP%] input[type=checkbox][_ngcontent-%COMP%]:checked + span[_ngcontent-%COMP%]:before{content:\"\";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:10px;height:10px;background-color:#4caf50;border-radius:50%}.create-board-label[_ngcontent-%COMP%]{font-weight:500;color:#1e293b!important;font-size:15px}.invalid-email[_ngcontent-%COMP%]{border:1px solid red}.progress-container[_ngcontent-%COMP%]{width:200px;height:10px;background-color:#e0e0e0;border-radius:5px;margin:0 auto}.loading-text[_ngcontent-%COMP%]{margin-top:10px;font-size:18px;color:#fff}.loading-overlay[_ngcontent-%COMP%]{position:fixed;top:0;left:0;width:100%;height:100%;background-color:#00000080;display:flex;justify-content:center;align-items:center}.progress-bar[_ngcontent-%COMP%]{width:0%;height:4px;background-color:#007bff}.download-options[_ngcontent-%COMP%]{margin-top:20px;display:flex;justify-content:center}.download-button[_ngcontent-%COMP%]{margin-right:10px}.email-container[_ngcontent-%COMP%]{display:flex;justify-content:start;flex-direction:column}.email-container[_ngcontent-%COMP%] input[_ngcontent-%COMP%]{margin:0}.action-buttons[_ngcontent-%COMP%]{margin-top:2rem}.logo-section[_ngcontent-%COMP%]{margin-top:20px}.uploaded-logo[_ngcontent-%COMP%]{max-width:100px;max-height:100px;margin-top:10px}input[type=file][_ngcontent-%COMP%]{margin-top:10px}.logo-options[_ngcontent-%COMP%]{margin-bottom:10px}.logo-options[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{margin-left:5px}.logo-actions[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{margin-right:10px}.browse-button[_ngcontent-%COMP%], .generate-button[_ngcontent-%COMP%]{background-color:#008cba;color:#fff;padding:10px 20px;border:none;border-radius:5px;cursor:pointer}.mat-dialog-container[_ngcontent-%COMP%]{min-height:300px;max-height:600px;max-width:100%;overflow-y:auto;overflow-x:hidden}.input-container[_ngcontent-%COMP%]{position:relative;width:100%}.text-box[_ngcontent-%COMP%]{width:100%;padding:.5rem;border:1px solid #ccc;transition:border-color .3s ease}.text-box.invalid-email[_ngcontent-%COMP%]{border-color:red}.error-message[_ngcontent-%COMP%]{color:red;font-size:.875rem;margin-top:.25rem;position:absolute;left:0;bottom:-1.5rem;width:100%;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.qr-description[_ngcontent-%COMP%]{color:#64748b}_vari[_ngcontent-%COMP%] .btn[_ngcontent-%COMP%]{box-sizing:border-box;padding:.5rem 1rem;border-radius:.5rem;font-size:.9rem;font-weight:500;width:fit-content;text-transform:capitalize}.stroke-btn[_ngcontent-%COMP%]{box-sizing:border-box;border:1px solid #D0D5DD;color:#344054}.stroke-btn[_ngcontent-%COMP%]:hover{border:1px solid #D0D5DD;color:#8f8f8f}.fill-btn[_ngcontent-%COMP%]{box-sizing:border-box;border:none;background-image:linear-gradient(to right,#4E4AEA,#3C88FC);color:#fff}.fill-btn[_ngcontent-%COMP%]:hover{color:#ccc}"] });
356
+ } }, styles: [".popup-container[_ngcontent-%COMP%] lib-field-map[_ngcontent-%COMP%]{margin-bottom:.5rem}"] });
356
357
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(GenerateQRComponent, [{
357
358
  type: Component,
358
359
  args: [{ selector: 'app-generate-qr', providers: [
@@ -360,9 +361,9 @@ GenerateQRComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: Generat
360
361
  provide: MAT_SELECT_CONFIG,
361
362
  useValue: { overlayPanelClass: 'generate-qr-overlay-panel' },
362
363
  },
363
- ], template: "<div *ngIf=\"formft === 'T'; else showForm\">\n <div class=\"flex flex-col gap-6 w-auto h-auto px-8 py-4 relative\">\n <mat-icon svgIcon=\"axo_popup_close\" class=\"cursor-pointer absolute top-2 right-2\" (click)=\"close()\"></mat-icon>\n <div class=\"axo-font text-3xl font-medium m-0\">Generate QR Codes</div>\n <div class=\"video-container\">\n <iframe width=\"560\" height=\"315\" src=\"https://www.youtube.com/embed/RazJekuQ-cI\" frameborder=\"0\" allowfullscreen></iframe>\n </div>\n </div>\n</div>\n\n<ng-template #showForm>\n <div class=\"flex flex-col gap-3 w-auto h-auto p-2 relative\">\n <mat-icon svgIcon=\"axo_popup_close\" class=\"cursor-pointer absolute top-2 right-3\" (click)=\"close()\"></mat-icon>\n <div mat-dialog-title class=\"axo-font text-3xl font-medium m-0\">Generate QR Codes</div>\n <form [formGroup]=\"formGroup\" (ngSubmit)=\"submitForm()\">\n <div mat-dialog-content class=\"content-container flex flex-col gap-1\">\n <!-- Level -->\n <mat-label class=\"axo-font create-board-label mt-4\">Scan Trigger</mat-label>\n <div class=\"mb-2 qr-description\">Open QR Code scanner when one of the following is opened</div>\n <mat-radio-group style=\"margin-top: 0.1px;\" formControlName=\"level\">\n <mat-radio-button value=\"App\" class=\"pr-4 axo-font\">App</mat-radio-button>\n <mat-radio-button value=\"Form\" class=\"axo-font\">Form</mat-radio-button>\n </mat-radio-group>\n <!-- Data Sections -->\n <mat-label class=\"axo-font create-board-label mt-4\">Auto-Populate</mat-label>\n <div class=\"mb-2 qr-description\">Select the form fields that need to be automatically filled based on the data embedded in the QR Code</div>\n <!--<div class=\"data-section mb-0 flex justify-around items-center gap-4\" *ngFor=\"let data of data.controls; let i = index\" [formGroup]=\"data\">\n <mat-select class=\"field-select\" formControlName=\"field_id\" [disableOptionCentering]=\"true\" placeholder=\"Select Field\">\n <mat-option value=\"\" disabled selected>Select a feild</mat-option>\n <mat-option *ngFor=\"let widget of getAvailableWidgets(i)\" [value]=\"widget.identifier\">{{ widget.prompt }}</mat-option>\n </mat-select>\n <input type=\"text\" class=\"text-box w-8/12 rounded-md\" formControlName=\"value\" placeholder=\"Enter field value\">\n <img src=\"../../../../assets/icons/axo/sculptor/axo_delete.svg\" alt=\"\" class=\"h-5 w-5 data-section-delete\" (click)=\"removeDataSection(i)\"> -->\n <!-- <button style=\"height: 2.15rem; width: 2.15rem; display: flex; justify-content: center; align-items: center;\" class=\"primary-btn axo-font\" (click)=\"removeDataSection(i)\">-</button> -->\n <!-- </div>\n <button type=\"button\" class=\"btn stroke-btn text-base font-normal px-2 py-1 mt-2\" (click)=\"addDataSection()\">+ add feild</button>\n <div class=\"additional-fields m-0\"> -->\n <!-- Additional fields will be dynamically added here -->\n <!-- </div> -->\n <lib-field-map \n [filteredWidgets]=\"filteredWidgets\" \n [appVersionId]=\"appVersionId\"\n [sourceForms]=\"sourceForms\"\n [source]=\"source\"\n [actionFormId]=\"actionFormId\"\n [mapType]=\"mapType\"\n (fieldmap)=\"handlefieldmap($event)\">\n </lib-field-map>\n <div class=\"email-container gap-1\">\n <mat-label class=\"axo-font create-board-label mt-4\">Send QR Codes</mat-label>\n <div class=\"mb-2 qr-description\">Enter emails where you want to send the generated QR Codes. A zip file will be emailed.</div>\n <div class=\"input-container\">\n <input type=\"text\" class=\"text-box rounded-md\" formControlName=\"email\" placeholder=\"Enter comma separated email ids\"\n [ngClass]=\"{ 'invalid-email': formGroup.get('email').invalid && (formGroup.get('email').dirty || formGroup.get('email').touched) }\">\n <div *ngIf=\"formGroup.get('email').invalid && (formGroup.get('email').dirty || formGroup.get('email').touched)\" class=\"error-message\">\n <span *ngIf=\"formGroup.get('email').hasError('invalidEmails')\">Please enter valid email ID(s)</span>\n </div>\n </div>\n </div>\n </div>\n <!-- Action Buttons -->\n <div mat-dialog-actions class=\"flex gap-3 items-center justify-end action-buttons mr-4\">\n <button mat-button type=\"button\" (click)=\"close()\" class=\"btn stroke-btn\">Cancel</button>\n <button mat-button type=\"submit\" cdkFocusInitial class=\"btn fill-btn\">Generate</button>\n </div>\n </form>\n </div>\n</ng-template>\n", styles: [".overlay{position:fixed;top:0;left:0;width:100%;height:100%;background-color:#00000080;z-index:9999;display:flex;justify-content:center;align-items:center}.mat-dialog-content{overflow:hidden}.primary-btn i{font-size:20px}.generate-qr-overlay-panel{margin-top:3rem}.generate-qr-overlay-panel .mat-select-panel{min-width:calc(100% + 2rem)!important;margin-left:1.5rem}.overlay-content{background-color:#fff;padding:20px;border-radius:5px;box-shadow:0 0 10px #0003;max-width:500px}.overlay-header{font-family:Times New Roman,Times,serif;font-size:18px;font-weight:700;margin-bottom:10px}.level-options{margin-bottom:10px}.remote-button{background-color:#4caf50;color:#fff;padding:10px 20px;border:none;border-radius:5px;cursor:pointer;margin-right:10px}.data-section{margin-bottom:10px;display:flex;align-items:center}.data-section-delete{visibility:hidden;opacity:0;cursor:pointer;transition:all .1s}.data-section:hover .data-section-delete{visibility:visible;opacity:1}.field-select{flex:1;padding:8px;border-radius:5px;width:110px;border:1px solid #ccc}.add-field-button{background-color:#008cba;color:#fff;border:none;border-radius:30%;cursor:pointer;width:30px;height:30px}.additional-fields{margin-bottom:10px}.logo-options{margin-bottom:10px;display:flex;align-items:center}.logo-options label{margin-left:15px;margin-right:30px}.browse-button{background-color:#008cba;color:#fff;padding:10px 20px;border:none;border-radius:5px;cursor:pointer}.generate-button{display:flex;align-items:center;margin-left:5px;margin-right:15px}.remote-button{display:inline-block;margin-right:10px;cursor:pointer}.remote-button input[type=checkbox]{display:none}.remote-button input[type=checkbox]+span{display:inline-block;width:20px;height:20px;border:1px solid #ccc;border-radius:50%;vertical-align:middle;position:relative}.remote-button input[type=checkbox]:checked+span:before{content:\"\";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:10px;height:10px;background-color:#4caf50;border-radius:50%}.create-board-label{font-weight:500;color:#1e293b!important;font-size:15px}.invalid-email{border:1px solid red}.progress-container{width:200px;height:10px;background-color:#e0e0e0;border-radius:5px;margin:0 auto}.loading-text{margin-top:10px;font-size:18px;color:#fff}.loading-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background-color:#00000080;display:flex;justify-content:center;align-items:center}.progress-bar{width:0%;height:4px;background-color:#007bff}.download-options{margin-top:20px;display:flex;justify-content:center}.download-button{margin-right:10px}.email-container{display:flex;justify-content:start;flex-direction:column}.email-container input{margin:0}.action-buttons{margin-top:2rem}.logo-section{margin-top:20px}.uploaded-logo{max-width:100px;max-height:100px;margin-top:10px}input[type=file]{margin-top:10px}.logo-options{margin-bottom:10px}.logo-options label{margin-left:5px}.logo-actions button{margin-right:10px}.browse-button,.generate-button{background-color:#008cba;color:#fff;padding:10px 20px;border:none;border-radius:5px;cursor:pointer}.mat-dialog-container{min-height:300px;max-height:600px;max-width:100%;overflow-y:auto;overflow-x:hidden}.input-container{position:relative;width:100%}.text-box{width:100%;padding:.5rem;border:1px solid #ccc;transition:border-color .3s ease}.text-box.invalid-email{border-color:red}.error-message{color:red;font-size:.875rem;margin-top:.25rem;position:absolute;left:0;bottom:-1.5rem;width:100%;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.qr-description{color:#64748b}_vari .btn{box-sizing:border-box;padding:.5rem 1rem;border-radius:.5rem;font-size:.9rem;font-weight:500;width:fit-content;text-transform:capitalize}.stroke-btn{box-sizing:border-box;border:1px solid #D0D5DD;color:#344054}.stroke-btn:hover{border:1px solid #D0D5DD;color:#8f8f8f}.fill-btn{box-sizing:border-box;border:none;background-image:linear-gradient(to right,#4E4AEA,#3C88FC);color:#fff}.fill-btn:hover{color:#ccc}\n"] }]
364
+ ], template: "<div *ngIf=\"formft === 'T'; else showForm\">\n <div class=\"flex flex-col gap-6 w-auto h-auto px-8 py-4 relative\">\n <mat-icon svgIcon=\"axo_popup_close\" class=\"cursor-pointer absolute top-2 right-2\" (click)=\"close()\"></mat-icon>\n <div class=\"axo-font text-3xl font-medium m-0\">Generate QR Codes</div>\n <div class=\"video-container\">\n <iframe width=\"560\" height=\"315\" src=\"https://www.youtube.com/embed/RazJekuQ-cI\" frameborder=\"0\"\n allowfullscreen></iframe>\n </div>\n </div>\n</div>\n\n<ng-template #showForm>\n <div class=\"popup-container\">\n <button class=\"close-icon\" (click)=\"close()\"></button>\n <h1>Generate QR Codes</h1>\n <div class=\"popup-body\">\n <form [formGroup]=\"formGroup\" (ngSubmit)=\"submitForm()\">\n <div class=\"flex flex-col gap-1\">\n <!-- Level -->\n <label>Scan Trigger</label>\n <p>Open QR Code scanner when one of the following is opened</p>\n <mat-radio-group formControlName=\"level\" class=\"flex gap-4 mb-2\">\n <mat-radio-button value=\"App\">App</mat-radio-button>\n <mat-radio-button value=\"Form\">Form</mat-radio-button>\n </mat-radio-group>\n <!-- Data Sections -->\n <label>Auto-Populate</label>\n <p>Select the form fields that need to be automatically filled based on the data embedded in the QR Code</p>\n <!--<div class=\"data-section mb-0 flex justify-around items-center gap-4\" *ngFor=\"let data of data.controls; let i = index\" [formGroup]=\"data\">\n <mat-select class=\"field-select\" formControlName=\"field_id\" [disableOptionCentering]=\"true\" placeholder=\"Select Field\">\n <mat-option value=\"\" disabled selected>Select a feild</mat-option>\n <mat-option *ngFor=\"let widget of getAvailableWidgets(i)\" [value]=\"widget.identifier\">{{ widget.prompt }}</mat-option>\n </mat-select>\n <input type=\"text\" class=\"text-box w-8/12 rounded-md\" formControlName=\"value\" placeholder=\"Enter field value\">\n <img src=\"../../../../assets/icons/axo/sculptor/axo_delete.svg\" alt=\"\" class=\"h-5 w-5 data-section-delete\" (click)=\"removeDataSection(i)\"> -->\n <!-- <button style=\"height: 2.15rem; width: 2.15rem; display: flex; justify-content: center; align-items: center;\" class=\"primary-btn axo-font\" (click)=\"removeDataSection(i)\">-</button> -->\n <!-- </div>\n <button type=\"button\" class=\"btn stroke-btn text-base font-normal px-2text-box py-1 mt-2\" (click)=\"addDataSection()\">+ add feild</button>\n <div class=\"additional-fields m-0\"> -->\n <!-- Additional fields will be dynamically added here -->\n <!-- </div> -->\n <lib-field-map [filteredWidgets]=\"filteredWidgets\" [appVersionId]=\"appVersionId\" [sourceForms]=\"sourceForms\"\n [source]=\"source\" [actionFormId]=\"actionFormId\" [mapType]=\"mapType\" (fieldmap)=\"handlefieldmap($event)\">\n </lib-field-map>\n <div class=\"\">\n <label>Send QR Codes <sup>*</sup></label>\n <p>Enter emails where you want to send the generated QR Codes. A zip file will be emailed.</p>\n <input type=\"text\" formControlName=\"email\"\n placeholder=\"Enter comma separated email ids\"\n [ngClass]=\"{ 'invalid-input': formGroup.controls.email.touched && formGroup.controls.email.status === 'INVALID' }\"\n >\n <div\n class=\"err-message-container\">\n <span class=\"error-message\" *ngIf=\"formGroup.controls.email.touched && formGroup.controls.email.status === 'INVALID'\">Please enter valid email ID(s)</span>\n </div>\n </div>\n </div>\n <!-- Action Buttons -->\n <div class=\"action-btn-container\">\n <button type=\"button\" (click)=\"close()\" class=\"stroke-btn\">Cancel</button>\n <button type=\"submit\" cdkFocusInitial class=\"fill-btn\">Generate</button>\n </div>\n </form>\n </div>\n </div>\n</ng-template>", styles: [".popup-container lib-field-map{margin-bottom:.5rem}\n"] }]
364
365
  }], function () { return [{ type: i1.MatDialogRef }, { type: i2.DataViewFiltersService }, { type: i3.DataViewService }, { type: i4.FormBuilder }, { type: i1.MatDialog }, { type: i5.HttpClient }, { type: undefined, decorators: [{
365
366
  type: Inject,
366
367
  args: [MAT_DIALOG_DATA]
367
368
  }] }, { type: i6.AxoSnackBarService }]; }, null); })();
368
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdGUtcXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2F4LWNvbW1vbi11aS1saWIvc3JjL2xpYi9kYXRhLXZpZXctbGliL2RhdGEtdmlldy1maWx0ZXJzL2dlbmVyYXRlLXFyL2dlbmVyYXRlLXFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9heC1jb21tb24tdWktbGliL3NyYy9saWIvZGF0YS12aWV3LWxpYi9kYXRhLXZpZXctZmlsdGVycy9nZW5lcmF0ZS1xci9nZW5lcmF0ZS1xci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUN6RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsV0FBVyxFQUFxQyxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU1RixPQUFPLEVBQUUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3RDLHNFQUFzRTtBQUN0RSxPQUFPLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRXpFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUUxRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUMsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDNUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBTXJELE9BQU8sRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7Ozs7Ozs7Ozs7SUNsQi9ELDJCQUEyQztJQUN6Qyw4QkFBa0U7SUFDaEUsbUNBQW9HO0lBQWxCLGtLQUFTLGNBQU8sSUFBQztJ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Z3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNQVRfU0VMRUNUX0NPTkZJRyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NlbGVjdCc7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUdyb3VwLCBGb3JtQXJyYXksIEZvcm1Db250cm9sLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQXhGb3JtIH0gZnJvbSAnLi4vLi4vLi4vZm9ybXMvYXgtZm9ybSc7XG5pbXBvcnQgeyBJbmplY3R9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuLy9pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0RGlhbG9nUmVmLCBNQVRfRElBTE9HX0RBVEEgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgRGF0YVZpZXdGaWx0ZXJzU2VydmljZSB9IGZyb20gJy4uL2RhdGEtdmlldy1maWx0ZXJzLnNlcnZpY2UnOyBcbmltcG9ydCB7IERhdGFWaWV3U2VydmljZSB9IGZyb20gJy4uLy4uL2RhdGEtdmlldy5zZXJ2aWNlJztcbmltcG9ydCB7IHRyaWdnZXIsIHN0YXRlLCBzdHlsZSwgYW5pbWF0ZSwgdHJhbnNpdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHsgQXhvU25hY2tCYXJTZXJ2aWNlLEF4b1NuYWNrQmFyVHlwZSB9IGZyb20gJy4uLy4uLy4uLy4uL3B1YmxpYy1hcGknO1xuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbi8vaW1wb3J0IHsgTG9nb1VwbG9hZENvbXBvbmVudCB9IGZyb20gJy4vbG9nby11cGxvYWQvbG9nby11cGxvYWQuY29tcG9uZW50JztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBJRmxhdHRlbiB9IGZyb20gJy4uLy4uLy4uLy4uL3B1YmxpYy1hcGknO1xuaW1wb3J0IHsgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBWYWxpZGF0b3JGbiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBIZWFkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWdlbmVyYXRlLXFyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2dlbmVyYXRlLXFyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZ2VuZXJhdGUtcXIuY29tcG9uZW50LnNjc3MnXSxcblxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBNQVRfU0VMRUNUX0NPTkZJRyxcbiAgICAgIHVzZVZhbHVlOiB7IG92ZXJsYXlQYW5lbENsYXNzOiAnZ2VuZXJhdGUtcXItb3ZlcmxheS1wYW5lbCcgfSxcbiAgICB9LFxuICBdXG59KVxuZXhwb3J0IGNsYXNzIEdlbmVyYXRlUVJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBzZWxlY3RlZEZvcm1PYmplY3RJZHM6IHN0cmluZ1tdO1xuICBzZWxlY3RlZEZvcm1PYmplY3RUaXRsZXM6IHN0cmluZ1tdO1xuICBmb3JtRGV0YWlsczogQXJyYXk8QXhGb3JtPiA9IFtdO1xuICBhY3Rpb25Gb3JtczogQXJyYXk8QXhGb3JtPjtcbiAgZm9ybUdyb3VwOiBGb3JtR3JvdXA7XG4gIGFwcFZlcnNpb25JZDogbnVtYmVyO1xuICBhcHBJRDogbnVtYmVyO1xuICBhc3NldEZvcm1JZDpudW1iZXI7XG4gIHN0YXR1czpzdHJpbmc7XG4gIC8vZGF0YTogYW55W10gPSBbMF07IC8vIEluaXRpYWxpemUgYXJyYXkgdG8gc3RvcmUgZGF0YSBzZWN0aW9uc1xuICBmaWx0ZXJlZFdpZGdldHMgPSBbXTtcbiAgbG9hZGluZzogYm9vbGVhbiA9IGZhbHNlOyAvLyBJbml0aWFsaXplIGxvYWRpbmcgdG8gZmFsc2UgaW5pdGlhbGx5XG4gIG1hcFR5cGU9XCJRUlwiOyAvL2ZpZWxkIG1hcHBpbmcgdHlwZVxuICBmaWxsU3RhdGU6IHN0cmluZyA9ICdzdGFydCc7IC8vIEFuaW1hdGlvbiBzdGF0ZVxuICBmb3JtRGF0YUFycmF5ID0gW107XG4gIHFyR2VuZXJhdGVkOiBib29sZWFuID0gZmFsc2U7IC8vIEZsYWcgdG8gdHJhY2sgaWYgUVIgaXMgZ2VuZXJhdGVkXG4gIGFwcElkOmFueTtcbiAgc291cmNlRm9ybXM6QXJyYXk8QXhGb3JtPiA9IFtdO1xuICBzb3VyY2U6Ym9vbGVhbj1mYWxzZTtcbiAgYXBwVmVyc2lvbjphbnk7XG4gIGFjY291bnRJZDphbnk7XG4gIHFyVXJsOiBzdHJpbmc7IC8vIFZhcmlhYmxlIHRvIHN0b3JlIHRoZSByZWNlaXZlZCBRUiBVUkxcbiAgZm9ybXR5cGU6IHN0cmluZztcbiAgZm9ybTphbnk7XG4gIGZvcm1mdDpzdHJpbmc7XG4gIGZpZWxkbWFwIDphbnk7XG4gIGFjdGlvbkZvcm1JZDphbnk7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxHZW5lcmF0ZVFSQ29tcG9uZW50PixcbiAgICBwcml2YXRlIF9kYXRhVmlld0ZpbHRlcnNTZXJ2aWNlOiBEYXRhVmlld0ZpbHRlcnNTZXJ2aWNlLFxuICAgIHByaXZhdGUgX2RhdGFWaWV3U2VydmljZTogRGF0YVZpZXdTZXJ2aWNlLFxuICAgIHByaXZhdGUgZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyLFxuICAgIHB1YmxpYyBkaWFsb2c6IE1hdERpYWxvZyxcbiAgICBwcml2YXRlIF9odHRwQ2xpZW50OiBIdHRwQ2xpZW50LFxuICAgIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBwdWJsaWMgZm9ybURhdGE6IGFueSxcbiAgICBwcml2YXRlIF9BeG9TZXJ2aWNlOiBBeG9TbmFja0JhclNlcnZpY2UvLyBJbmplY3QgdGhlIGZvcm0gb2JqZWN0XG4gICkgeyBcbiAgICAgICAgdGhpcy5mb3JtZnQgPSBmb3JtRGF0YS5mb3JtdHlwZTtcbiAgICAgICAgdGhpcy5mb3JtID0gZm9ybURhdGEuZm9ybTtcbiAgICAgICAgdGhpcy5mb3JtdHlwZT0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2dlbmVyYXRlUVInKTtcbiAgICAgICAgaWYodGhpcy5mb3JtdHlwZT09XCJhY3Rpb25mb3JtXCIpe1xuICAgICAgICAgIHRoaXMuc291cmNlPXRydWU7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRGb3JtID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnc2VsZWN0ZWRGb3JtJykpO1xuICAgICAgICB0aGlzLnNvdXJjZUZvcm1zLnB1c2goc2VsZWN0ZWRGb3JtKTtcbiAgICAgICAgdGhpcy5hY3Rpb25Gb3JtSWQ9dGhpcy5mb3JtLmZvcm1JZDtcbiAgICAgICAgY29uc29sZS5sb2codGhpcy5mb3JtdHlwZSk7XG4gICAgICAgIGNvbnNvbGUubG9nKHRoaXMuZm9ybSk7XG4gICAgICAgIHRoaXMuX2RhdGFWaWV3U2VydmljZS5nZXRGb3JtRGV0YWlscyh0aGlzLmZvcm0uZm9ybUlkKS50aGVuKChfZm9ybSk9PnsgIC8vZ2V0IHRoZSBkZXRhaWxzIG9mIGZvcm0gZmllbGRzXG4gICAgICAgICAgdGhpcy5mb3JtRGV0YWlscy5wdXNoKF9mb3JtKTtcbiAgICAgICAgICBjb25zb2xlLmxvZyh0aGlzLmZvcm1EZXRhaWxzKTtcbiAgICAgICAgICBmb3IgKGNvbnN0IHdpZGdldCBvZiBfZm9ybS53aWRnZXRzKSB7XG4gICAgICAgICAgICAvLyAvLyBDaGVjayBpZiB0aGUgd2lkZ2V0IHByb21wdCBpcyBcIlN5c3RlbSBGaWVsZHNcIlxuICAgICAgICAgICAgLy8gaWYgKHdpZGdldC5wcm9tcHQgPT09ICdTeXN0ZW0gRmllbGRzJykge1xuICAgICAgICAgICAgLy8gICAgIC8vIElmIHNvLCBicmVhayBvdXQgb2YgdGhlIGxvb3BcbiAgICAgICAgICAgIC8vICAgICBicmVhaztcbiAgICAgICAgICAgIC8vIH1cbiAgICAgICAgICAgIC8vIC8vIEFkZCBvdGhlciBjb25kaXRpb25zIGFzIG5lZWRlZFxuICAgICAgICAgICAgLy8gaWYgKHdpZGdldC5tYWluVHlwZSA9PT0gJ3RleHQnICYmIHdpZGdldC5pZGVudGlmaWVyLmluZGV4T2YoJ21ldGFfaGVhZGVyJykgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5maWx0ZXJlZFdpZGdldHMucHVzaCh3aWRnZXQpO1xuICAgICAgICAgICAgLy8gfVxuICAgICAgICAgICAgLy90aGlzLmZpbHRlcmVkV2lkZ2V0cy5wdXNoKHdpZGdldCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc29sZS5sb2codGhpcy5maWx0ZXJlZFdpZGdldHMpO1xuICAgICAgfSk7XG5cbiAgICAgIFxuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5hcHBWZXJzaW9uSWQ9SlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnYXBwVmVyc2lvbklkJykpO1xuICAgIHRoaXMuYWNjb3VudElkPSBwYXJzZUludChsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnYWNjb3VudElkJykpO1xuICAgIGNvbnNvbGUubG9nKFwiYWNjb3VudCBpZDpcIix0aGlzLmFjY291bnRJZCk7XG4gICAgXG4gICAgdGhpcy5mb3JtR3JvdXAgPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcbiAgICAgIGxldmVsOiBbJ0FwcCddLCAvLyBEZWZhdWx0IGxldmVsIHZhbHVlIGlzICdhcHAnXG4gICAgICBkYXRhOiB0aGlzLmZvcm1CdWlsZGVyLmFycmF5KFtcbiAgICAgICAgdGhpcy5jcmVhdGVEYXRhU2VjdGlvbigpIC8vIENyZWF0ZSBpbml0aWFsIGRhdGEgc2VjdGlvblxuICAgICAgXSksXG4gICAgICBlbWFpbDogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgdGhpcy5jb21tYVNlcGFyYXRlZEVtYWlsc1ZhbGlkYXRvcigpXV0gLy8gQWRkIGN1c3RvbSB2YWxpZGF0b3IgaGVyZVxuICAgIH0pO1xuXG4gICAgLy8gZmV0Y2hpbmcgYXBwSWQgb2YgdGhpcyBhcHBWZXJzaW9uXG4gICAgdGhpcy5fZGF0YVZpZXdGaWx0ZXJzU2VydmljZS5mZXRjaEFwcERldGFpbHModGhpcy5hcHBWZXJzaW9uSWQpLnN1YnNjcmliZShcbiAgICAgIChyZXNwb25zZSkgPT4ge1xuXG4gICAgICAgIC8vIEFjY2VzcyB0aGUgdmFsdWUgb2YgXCJhXCIgZnJvbSB0aGUgXCJkZXRhaWxzXCIgb2JqZWN0XG4gICAgICAgIHRoaXMuYXBwSUQ9IHJlc3BvbnNlLmRhdGEuZGV0YWlscy5hO1xuXG4gICAgICAgIC8vIE5vdyB5b3UgY2FuIHVzZSBcImFwcElkXCIgaW4geW91ciBjb21wb25lbnRcbiAgICAgICAgY29uc29sZS5sb2coJ1ZhbHVlIG9mIFwiYXBwSWRcIjonLCB0aGlzLmFwcElEKTtcbiAgICAgICAgY29uc29sZS5sb2coJ1ZhbHVlIG9mIFwiYXBwVmVyc2lvbklkXCI6JywgdGhpcy5hcHBWZXJzaW9uSWQpO1xuICAgICAgfSxcbiAgICAgIChlcnJvcikgPT4ge1xuICAgICAgICAvLyBIYW5kbGUgZXJyb3JzIGlmIGFueVxuICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvcjonLCBlcnJvcik7XG4gICAgICB9XG4gICAgKTsgXG5cbiAgICAvLyBTdWJzY3JpYmUgdG8gdmFsdWUgY2hhbmdlcyBvZiBlbWFpbCBjb250cm9sIHRvIGVuYWJsZSByZWFsLXRpbWUgaGlnaGxpZ2h0aW5nXG4gICAgdGhpcy5mb3JtR3JvdXAuZ2V0KCdlbWFpbCcpLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5mb3JtR3JvdXAuZ2V0KCdlbWFpbCcpLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTsgLy8gVHJpZ2dlciB2YWxpZGF0aW9uXG4gICAgfSk7XG5cblxuICAgIFxuICB9XG5cblxuICBnZXRBdmFpbGFibGVXaWRnZXRzKGluZGV4OiBudW1iZXIpIHtcbiAgICBjb25zdCBzZWxlY3RlZEZpZWxkcyA9IHRoaXMuZGF0YS5jb250cm9sc1xuICAgICAgLmZpbHRlcigoY29udHJvbCwgaSkgPT4gaSAhPT0gaW5kZXgpXG4gICAgICAubWFwKGNvbnRyb2wgPT4gY29udHJvbC52YWx1ZS5maWVsZF9pZCk7XG4gICAgcmV0dXJuIHRoaXMuZmlsdGVyZWRXaWRnZXRzLmZpbHRlcih3aWRnZXQgPT4gIXNlbGVjdGVkRmllbGRzLmluY2x1ZGVzKHdpZGdldC5pZGVudGlmaWVyKSk7XG4gIH1cblxuXG4gIC8vIEN1c3RvbSBWYWxpZGF0b3IgZm9yIGNvbW1hLXNlcGFyYXRlZCBlbWFpbHNcbiAgY29tbWFTZXBhcmF0ZWRFbWFpbHNWYWxpZGF0b3IoKTogVmFsaWRhdG9yRm4ge1xuICAgIHJldHVybiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB8IG51bGwgPT4ge1xuICAgICAgaWYgKCFjb250cm9sLnZhbHVlKSB7XG4gICAgICAgIHJldHVybiBudWxsOyAvLyByZXR1cm4gbnVsbCBpZiBjb250cm9sIGlzIGVtcHR5LCB0byBsZXQgb3RoZXIgdmFsaWRhdG9ycyBoYW5kbGUgcmVxdWlyZWQgY2hlY2tcbiAgICAgIH1cbiAgICAgIGNvbnN0IGVtYWlscyA9IGNvbnRyb2wudmFsdWUuc3BsaXQoJywnKS5tYXAoZW1haWwgPT4gZW1haWwudHJpbSgpKTtcbiAgICAgIGNvbnN0IGVtYWlsUGF0dGVybiA9IC9eW2EtekEtWjAtOS5fLV0rQFthLXpBLVowLTkuLV0rXFwuW2EtekEtWl17Miw0fSQvO1xuICAgICAgY29uc3QgaW52YWxpZEVtYWlscyA9IGVtYWlscy5maWx0ZXIoZW1haWwgPT4gIWVtYWlsUGF0dGVybi50ZXN0KGVtYWlsKSk7XG4gICAgICByZXR1cm4gaW52YWxpZEVtYWlscy5sZW5ndGggPiAwID8geyBpbnZhbGlkRW1haWxzOiBpbnZhbGlkRW1haWxzLmpvaW4oJywgJykgfSA6IG51bGw7XG4gICAgfTtcbiAgfVxuXG4gIGhhbmRsZWZpZWxkbWFwKGZpZWxkTWFwOiBhbnkpIHtcbiAgICBjb25zb2xlLmxvZygnRmllbGQgTWFwIG9iamVjdCByZWNlaXZlZDonLCBmaWVsZE1hcCk7XG4gICAgdGhpcy5maWVsZG1hcCA9IGZpZWxkTWFwOyAvLyBTYXZlIHRoZSBmaWVsZE1hcCBvYmplY3RcbiAgfVxuXG4gIGdlbmVyYXRlUXIoKSB7XG4gICAgdGhpcy5zYXZlRmllbGRNYXAoKTtcbiAgICB0aGlzLnNlbGVjdGVkRm9ybU9iamVjdElkcyA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2Zvcm1PYmplY3RJZHMnKSk7XG4gICAgdGhpcy5zZWxlY3RlZEZvcm1PYmplY3RUaXRsZXMgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdmb3JtT2JqZWN0VGl0bGVzJykpO1xuICAgIHRoaXMuYXNzZXRGb3JtSWQ9IHBhcnNlSW50KGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdmb3JtSWQnKSB8fCAnJyk7XG4gICAgY29uc29sZS5sb2codGhpcy5hc3NldEZvcm1JZCk7XG4gICAgY29uc3QgZW1haWwgPSB0aGlzLmZvcm1Hcm91cC5nZXQoJ2VtYWlsJykudmFsdWU7XG4gICAgY29uc3QgZm9ybURhdGFBcnJheSA9IFtdO1xuICAgIGlmKHRoaXMuZm9ybXR5cGU9PVwiYWN0aW9uZm9ybVwiKXtcbiAgICAgIGZvciAobGV0IGk9MDtpPHRoaXMuc2VsZWN0ZWRGb3JtT2JqZWN0SWRzLmxlbmd0aDtpKyspIHtcbiAgICAgICAgbGV0IGZvcm1EYXRhID0ge1xuICAgICAgICAgIGFzc2V0Rm9ybUlkOnRoaXMuYXNzZXRGb3JtSWQsXG4gICAgICAgICAgYWlkOiB0aGlzLmFwcElELFxuICAgICAgICAgIGZpZDogdGhpcy5mb3JtLmZvcm1JZCxcbiAgICAgICAgICBhZm9pZDp0aGlzLnNlbGVjdGVkRm9ybU9iamVjdElkc1tpXSxcbiAgICAgICAgICB0aXRsZTp0aGlzLnNlbGVjdGVkRm9ybU9iamVjdFRpdGxlc1tpXSwgLy90aGlzLmZvcm0ubmFtZSBpbiBjYXNlIG9mIGFzc2V0IGZvcm1cbiAgICAgICAgICB0eXBlOiAnREEnLFxuICAgICAgICAgIGxldmVsOiB0aGlzLmZvcm1Hcm91cC5nZXQoJ2xldmVsJykudmFsdWUsXG4gICAgICAgICAgLy9kYXRhOiB7fSxcbiAgICAgICAgICBhcHBWZXJzaW9uSWQ6dGhpcy5hcHBWZXJzaW9uSWQsXG4gICAgICAgICAgZW1haWw6ZW1haWwsXG4gICAgICAgICAgYWNjb3VudElkOnRoaXMuYWNjb3VudElkLFxuICAgICAgICAgIGZpZWxkbWFwOnRoaXMuZmllbGRtYXBcbiAgICAgICAgfTtcblxuICAgICAgICAvLyBmb3IgKGxldCBzZWN0aW9uIG9mIHRoaXMuZm9ybUdyb3VwLnZhbHVlLmRhdGEpIHtcbiAgICAgICAgLy8gICBmb3JtRGF0YS5kYXRhW3NlY3Rpb24uZmllbGRfaWRdID0gc2VjdGlvbi52YWx1ZTtcbiAgICAgICAgLy8gfVxuXG4gICAgICAgIGZvcm1EYXRhQXJyYXkucHVzaChmb3JtRGF0YSk7XG4gICAgICAgIGNvbnNvbGUubG9nKGZvcm1EYXRhKTtcbiAgICAgIH1cbiAgICB9XG4gICAgZWxzZSBpZih0aGlzLmZvcm10eXBlPT1cImFzc2V0Zm9ybVwiKVxuICAgIHtcbiAgICAgIGxldCBmb3JtRGF0YSA9IHtcbiAgICAgICAgYXNzZXRGb3JtSWQ6dGhpcy5mb3JtLmZvcm1JZCxcbiAgICAgICAgYWlkOiB0aGlzLmFwcElELFxuICAgICAgICBmaWQ6IHRoaXMuZm9ybS5mb3JtSWQsXG4gICAgICAgIHRpdGxlOnRoaXMuZm9ybS5uYW1lLCAvL3RoaXMuZm9ybS5uYW1lIGluIGNhc2Ugb2YgYXNzZXQgZm9ybVxuICAgICAgICB0eXBlOiAnREEnLFxuICAgICAgICBsZXZlbDogdGhpcy5mb3JtR3JvdXAuZ2V0KCdsZXZlbCcpLnZhbHVlLFxuICAgICAgICAvL2RhdGE6IHt9LFxuICAgICAgICBhcHBWZXJzaW9uSWQ6dGhpcy5hcHBWZXJzaW9uSWQsXG4gICAgICAgIGVtYWlsOmVtYWlsLFxuICAgICAgICBhY2NvdW50SWQ6dGhpcy5hY2NvdW50SWQsXG4gICAgICAgIGZpZWxkbWFwOnRoaXMuZmllbGRtYXBcbiAgICAgIH07XG5cbiAgICAgIC8vIGZvciAobGV0IHNlY3Rpb24gb2YgdGhpcy5mb3JtR3JvdXAudmFsdWUuZGF0YSkge1xuICAgICAgLy8gICBmb3JtRGF0YS5kYXRhW3NlY3Rpb24uZmllbGRfaWRdID0gc2VjdGlvbi52YWx1ZTtcbiAgICAgIC8vIH1cblxuICAgICAgZm9ybURhdGFBcnJheS5wdXNoKGZvcm1EYXRhKTtcbiAgICAgIGNvbnNvbGUubG9nKGZvcm1EYXRhKTtcbiAgICB9XG4gICAgdGhpcy5fZGF0YVZpZXdGaWx0ZXJzU2VydmljZS5nZW5lcmF0ZVFyQ29kZXMoZm9ybURhdGFBcnJheSlcbiAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgIChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgIHRoaXMuc3RhdHVzPXJlc3BvbnNlO1xuICAgICAgICAgIH0sXG4gICAgICAgIChlcnJvcikgPT4ge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yOicsIGVycm9yKTtcbiAgICAgICAgICAvLyBIYW5kbGUgdGhlIGVycm9yXG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSgpO1xuICAgICAgdGhpcy5fQXhvU2VydmljZS5vcGVuU25hY2tCYXIoJ1FSIGNvZGVzIGFyZSBnZW5lcmF0ZWQuIFBsZWFzZSBjaGVjayB5b3VyIGVtYWlsIScsIEF4b1NuYWNrQmFyVHlwZS5zdWNjZXNzKTtcbiAgICAgICAgXG4gIH1cblxuICBzYXZlRmllbGRNYXAoKTogdm9pZCB7XG4gICAgXG4gICAgICBjb25zdCB1cmwgPSAnZmllbGRtYXBwZXInO1xuICAgICAgY29uc3QgcmVxdWVzdEJvZHkgPSB0aGlzLmZpZWxkbWFwO1xuXG4gICAgICB0aGlzLl9odHRwQ2xpZW50LnBvc3Q8Rm9ybURhdGFbXT4odXJsLCByZXF1ZXN0Qm9keSwge1xuICAgICAgICBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnMoe1xuICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICAgIH0pLFxuICAgICAgfSkuc3Vic2NyaWJlKFxuICAgICAgICAocmVzcG9uc2U6IEZvcm1EYXRhW10pID0+IHtcbiAgICAgICAgICAvL3RoaXMuZm9ybU5hbWVzID0gcmVzcG9uc2U7XG4gICAgICAgIH0sXG4gICAgICAgIChlcnJvcikgPT4ge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGZldGNoaW5nIGZvcm0gbmFtZXM6JywgZXJyb3IpO1xuICAgICAgICB9XG4gICAgICApO1xuICAgIFxuICB9XG5cbiAgZG93bmxvYWRRUigpIHtcbiAgICAvLyBDcmVhdGUgYSBuZXcgYW5jaG9yIGVsZW1lbnRcbiAgICBjb25zdCBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuXG4gICAgLy8gU2V0IHRoZSBocmVmIGF0dHJpYnV0ZSB0byB0aGUgUVIgVVJMXG4gICAgbGluay5ocmVmID0gdGhpcy5xclVybDtcblxuICAgIC8vIEFwcGVuZCB0aGUgYW5jaG9yIGVsZW1lbnQgdG8gdGhlIGJvZHlcbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGxpbmspO1xuXG4gICAgLy8gUHJvZ3JhbW1hdGljYWxseSB0cmlnZ2VyIGEgY2xpY2sgZXZlbnQgb24gdGhlIGFuY2hvciBlbGVtZW50XG4gICAgLy8gVGhpcyB3aWxsIHN0YXJ0IHRoZSBkb3dubG9hZCBwcm9jZXNzXG4gICAgbGluay5jbGljaygpO1xuXG4gICAgLy8gQWZ0ZXIgY2xpY2tpbmcsIHJlbW92ZSB0aGUgYW5jaG9yIGVsZW1lbnQgZnJvbSB0aGUgRE9NXG4gICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChsaW5rKTtcbiAgfVxuXG4gIHN1Ym1pdEZvcm0oKSB7XG4gICAgdGhpcy5nZW5lcmF0ZVFyKCk7XG4gICAgLy8gQWRkIGFueSBhZGRpdGlvbmFsIGZvcm0gc3VibWlzc2lvbiBsb2dpYyBoZXJlIGlmIG5lZWRlZFxuICB9XG5cblxuXG4gIC8vIENvbnZlbmllbmNlIG1ldGhvZCB0byBjcmVhdGUgYSBmb3JtIGdyb3VwIGZvciBhIGRhdGEgc2VjdGlvblxuICBjcmVhdGVEYXRhU2VjdGlvbigpOiBGb3JtR3JvdXAge1xuICAgIHJldHVybiB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcbiAgICAgIGZpZWxkX2lkOiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdLCAvLyBGaWVsZCBzZWxlY3Rpb24gaXMgcmVxdWlyZWRcbiAgICAgIHZhbHVlOiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdICAgICAvLyBUZXh0IGVudHJ5IGlzIHJlcXVpcmVkXG4gICAgfSk7XG4gIH1cblxuICAvLyBHZXR0ZXIgZm9yIGVhc3kgYWNjZXNzIHRvIGRhdGEgZm9ybSBhcnJheVxuICBnZXQgZGF0YSgpOiBGb3JtQXJyYXkge1xuICAgIHJldHVybiB0aGlzLmZvcm1Hcm91cC5nZXQoJ2RhdGEnKSBhcyBGb3JtQXJyYXk7XG4gIH1cblxuXG4gIHNob3dPdmVybGF5OmJvb2xlYW4gPSBmYWxzZTsgLy8gQm9vbGVhbiBwcm9wZXJ0eSB0byBjb250cm9sIG92ZXJsYXkgdmlzaWJpbGl0eVxuXG4gIHRvZ2dsZU92ZXJsYXkoKSB7XG4gICAgdGhpcy5zaG93T3ZlcmxheSA9ICF0aGlzLnNob3dPdmVybGF5OyBcbiAgfVxuXG4gIC8vIGNsb3NlKCk6IHZvaWR7XG4gIC8vICAgdGhpcy5zaG93T3ZlcmxheSA9ICF0aGlzLnNob3dPdmVybGF5O1xuICAvLyB9XG4gIGNsb3NlKCkge1xuICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKCk7XG4gIH1cbiAgLy9TdWJzY3JpYmVycyBzaG91bGQgYmUgaW1wbGVtZW50ZWQgaGVyXG4gIHN1YnNjcmliZXJzKCkgOnZvaWR7XG5cbiAgfVxuXG4gIC8vIE1ldGhvZCB0byBhZGQgYSBuZXcgZGF0YSBzZWN0aW9uXG4gIGFkZERhdGFTZWN0aW9uKCkge1xuICAgIHRoaXMuZGF0YS5wdXNoKHRoaXMuY3JlYXRlRGF0YVNlY3Rpb24oKSk7XG4gIH1cblxuICAvLyBNZXRob2QgdG8gcmVtb3ZlIGEgZGF0YSBzZWN0aW9uXG4gIHJlbW92ZURhdGFTZWN0aW9uKGluZGV4OiBudW1iZXIpIHtcbiAgICB0aGlzLmRhdGEucmVtb3ZlQXQoaW5kZXgpO1xuICB9XG59IiwiPGRpdiAqbmdJZj1cImZvcm1mdCA9PT0gJ1QnOyBlbHNlIHNob3dGb3JtXCI+XG4gIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGdhcC02IHctYXV0byBoLWF1dG8gcHgtOCBweS00IHJlbGF0aXZlXCI+XG4gICAgPG1hdC1pY29uIHN2Z0ljb249XCJheG9fcG9wdXBfY2xvc2VcIiBjbGFzcz1cImN1cnNvci1wb2ludGVyIGFic29sdXRlIHRvcC0yIHJpZ2h0LTJcIiAoY2xpY2spPVwiY2xvc2UoKVwiPjwvbWF0LWljb24+XG4gICAgPGRpdiBjbGFzcz1cImF4by1mb250IHRleHQtM3hsIGZvbnQtbWVkaXVtIG0tMFwiPkdlbmVyYXRlIFFSIENvZGVzPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInZpZGVvLWNvbnRhaW5lclwiPlxuICAgICAgPGlmcmFtZSB3aWR0aD1cIjU2MFwiIGhlaWdodD1cIjMxNVwiIHNyYz1cImh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL2VtYmVkL1Jhekpla3VRLWNJXCIgZnJhbWVib3JkZXI9XCIwXCIgYWxsb3dmdWxsc2NyZWVuPjwvaWZyYW1lPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI3Nob3dGb3JtPlxuICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBnYXAtMyB3LWF1dG8gaC1hdXRvIHAtMiByZWxhdGl2ZVwiPlxuICAgIDxtYXQtaWNvbiBzdmdJY29uPVwiYXhvX3BvcHVwX2Nsb3NlXCIgY2xhc3M9XCJjdXJzb3ItcG9pbnRlciBhYnNvbHV0ZSB0b3AtMiByaWdodC0zXCIgKGNsaWNrKT1cImNsb3NlKClcIj48L21hdC1pY29uPlxuICAgIDxkaXYgbWF0LWRpYWxvZy10aXRsZSBjbGFzcz1cImF4by1mb250IHRleHQtM3hsIGZvbnQtbWVkaXVtIG0tMFwiPkdlbmVyYXRlIFFSIENvZGVzPC9kaXY+XG4gICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtR3JvdXBcIiAobmdTdWJtaXQpPVwic3VibWl0Rm9ybSgpXCI+XG4gICAgICA8ZGl2IG1hdC1kaWFsb2ctY29udGVudCBjbGFzcz1cImNvbnRlbnQtY29udGFpbmVyIGZsZXggZmxleC1jb2wgZ2FwLTFcIj5cbiAgICAgICAgPCEtLSBMZXZlbCAtLT5cbiAgICAgICAgPG1hdC1sYWJlbCBjbGFzcz1cImF4by1mb250IGNyZWF0ZS1ib2FyZC1sYWJlbCBtdC00XCI+U2NhbiBUcmlnZ2VyPC9tYXQtbGFiZWw+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtYi0yIHFyLWRlc2NyaXB0aW9uXCI+T3BlbiBRUiBDb2RlIHNjYW5uZXIgd2hlbiBvbmUgb2YgdGhlIGZvbGxvd2luZyBpcyBvcGVuZWQ8L2Rpdj5cbiAgICAgICAgPG1hdC1yYWRpby1ncm91cCBzdHlsZT1cIm1hcmdpbi10b3A6IDAuMXB4O1wiIGZvcm1Db250cm9sTmFtZT1cImxldmVsXCI+XG4gICAgICAgICAgPG1hdC1yYWRpby1idXR0b24gdmFsdWU9XCJBcHBcIiBjbGFzcz1cInByLTQgYXhvLWZvbnRcIj5BcHA8L21hdC1yYWRpby1idXR0b24+XG4gICAgICAgICAgPG1hdC1yYWRpby1idXR0b24gdmFsdWU9XCJGb3JtXCIgY2xhc3M9XCJheG8tZm9udFwiPkZvcm08L21hdC1yYWRpby1idXR0b24+XG4gICAgICAgIDwvbWF0LXJhZGlvLWdyb3VwPlxuICAgICAgICA8IS0tIERhdGEgU2VjdGlvbnMgLS0+XG4gICAgICAgIDxtYXQtbGFiZWwgY2xhc3M9XCJheG8tZm9udCBjcmVhdGUtYm9hcmQtbGFiZWwgbXQtNFwiPkF1dG8tUG9wdWxhdGU8L21hdC1sYWJlbD5cbiAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0yIHFyLWRlc2NyaXB0aW9uXCI+U2VsZWN0IHRoZSBmb3JtIGZpZWxkcyB0aGF0IG5lZWQgdG8gYmUgYXV0b21hdGljYWxseSBmaWxsZWQgYmFzZWQgb24gdGhlIGRhdGEgZW1iZWRkZWQgaW4gdGhlIFFSIENvZGU8L2Rpdj5cbiAgICAgICAgPCEtLTxkaXYgY2xhc3M9XCJkYXRhLXNlY3Rpb24gbWItMCBmbGV4IGp1c3RpZnktYXJvdW5kIGl0ZW1zLWNlbnRlciBnYXAtNFwiICpuZ0Zvcj1cImxldCBkYXRhIG9mIGRhdGEuY29udHJvbHM7IGxldCBpID0gaW5kZXhcIiBbZm9ybUdyb3VwXT1cImRhdGFcIj5cbiAgICAgICAgICA8bWF0LXNlbGVjdCBjbGFzcz1cImZpZWxkLXNlbGVjdFwiIGZvcm1Db250cm9sTmFtZT1cImZpZWxkX2lkXCIgW2Rpc2FibGVPcHRpb25DZW50ZXJpbmddPVwidHJ1ZVwiIHBsYWNlaG9sZGVyPVwiU2VsZWN0IEZpZWxkXCI+XG4gICAgICAgICAgICA8bWF0LW9wdGlvbiB2YWx1ZT1cIlwiIGRpc2FibGVkIHNlbGVjdGVkPlNlbGVjdCBhIGZlaWxkPC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IHdpZGdldCBvZiBnZXRBdmFpbGFibGVXaWRnZXRzKGkpXCIgW3ZhbHVlXT1cIndpZGdldC5pZGVudGlmaWVyXCI+e3sgd2lkZ2V0LnByb21wdCB9fTwvbWF0LW9wdGlvbj5cbiAgICAgICAgICA8L21hdC1zZWxlY3Q+XG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJ0ZXh0LWJveCB3LTgvMTIgcm91bmRlZC1tZFwiIGZvcm1Db250cm9sTmFtZT1cInZhbHVlXCIgcGxhY2Vob2xkZXI9XCJFbnRlciBmaWVsZCB2YWx1ZVwiPlxuICAgICAgICAgIDxpbWcgc3JjPVwiLi4vLi4vLi4vLi4vYXNzZXRzL2ljb25zL2F4by9zY3VscHRvci9heG9fZGVsZXRlLnN2Z1wiIGFsdD1cIlwiIGNsYXNzPVwiaC01IHctNSBkYXRhLXNlY3Rpb24tZGVsZXRlXCIgKGNsaWNrKT1cInJlbW92ZURhdGFTZWN0aW9uKGkpXCI+IC0tPlxuICAgICAgICAgIDwhLS0gPGJ1dHRvbiBzdHlsZT1cImhlaWdodDogMi4xNXJlbTsgd2lkdGg6IDIuMTVyZW07IGRpc3BsYXk6IGZsZXg7IGp1c3RpZnktY29udGVudDogY2VudGVyOyBhbGlnbi1pdGVtczogY2VudGVyO1wiIGNsYXNzPVwicHJpbWFyeS1idG4gYXhvLWZvbnRcIiAoY2xpY2spPVwicmVtb3ZlRGF0YVNlY3Rpb24oaSlcIj4tPC9idXR0b24+IC0tPlxuICAgICAgICA8IS0tIDwvZGl2PlxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBzdHJva2UtYnRuIHRleHQtYmFzZSBmb250LW5vcm1hbCBweC0yIHB5LTEgbXQtMlwiIChjbGljayk9XCJhZGREYXRhU2VjdGlvbigpXCI+KyBhZGQgZmVpbGQ8L2J1dHRvbj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImFkZGl0aW9uYWwtZmllbGRzIG0tMFwiPiAtLT5cbiAgICAgICAgICA8IS0tIEFkZGl0aW9uYWwgZmllbGRzIHdpbGwgYmUgZHluYW1pY2FsbHkgYWRkZWQgaGVyZSAtLT5cbiAgICAgICAgPCEtLSA8L2Rpdj4gLS0+XG4gICAgICAgIDxsaWItZmllbGQtbWFwIFxuICAgICAgICBbZmlsdGVyZWRXaWRnZXRzXT1cImZpbHRlcmVkV2lkZ2V0c1wiIFxuICAgICAgICBbYXBwVmVyc2lvbklkXT1cImFwcFZlcnNpb25JZFwiXG4gICAgICAgIFtzb3VyY2VGb3Jtc109XCJzb3VyY2VGb3Jtc1wiXG4gICAgICAgIFtzb3VyY2VdPVwic291cmNlXCJcbiAgICAgICAgW2FjdGlvbkZvcm1JZF09XCJhY3Rpb25Gb3JtSWRcIlxuICAgICAgICBbbWFwVHlwZV09XCJtYXBUeXBlXCJcbiAgICAgICAgKGZpZWxkbWFwKT1cImhhbmRsZWZpZWxkbWFwKCRldmVudClcIj5cbiAgICAgICAgPC9saWItZmllbGQtbWFwPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZW1haWwtY29udGFpbmVyIGdhcC0xXCI+XG4gICAgICAgICAgPG1hdC1sYWJlbCBjbGFzcz1cImF4by1mb250IGNyZWF0ZS1ib2FyZC1sYWJlbCBtdC00XCI+U2VuZCBRUiBDb2RlczwvbWF0LWxhYmVsPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0yIHFyLWRlc2NyaXB0aW9uXCI+RW50ZXIgZW1haWxzIHdoZXJlIHlvdSB3YW50IHRvIHNlbmQgdGhlIGdlbmVyYXRlZCBRUiBDb2Rlcy4gQSB6aXAgZmlsZSB3aWxsIGJlIGVtYWlsZWQuPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJ0ZXh0LWJveCByb3VuZGVkLW1kXCIgZm9ybUNvbnRyb2xOYW1lPVwiZW1haWxcIiBwbGFjZWhvbGRlcj1cIkVudGVyIGNvbW1hIHNlcGFyYXRlZCBlbWFpbCBpZHNcIlxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdpbnZhbGlkLWVtYWlsJzogZm9ybUdyb3VwLmdldCgnZW1haWwnKS5pbnZhbGlkICYmIChmb3JtR3JvdXAuZ2V0KCdlbWFpbCcpLmRpcnR5IHx8IGZvcm1Hcm91cC5nZXQoJ2VtYWlsJykudG91Y2hlZCkgfVwiPlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cImZvcm1Hcm91cC5nZXQoJ2VtYWlsJykuaW52YWxpZCAmJiAoZm9ybUdyb3VwLmdldCgnZW1haWwnKS5kaXJ0eSB8fCBmb3JtR3JvdXAuZ2V0KCdlbWFpbCcpLnRvdWNoZWQpXCIgY2xhc3M9XCJlcnJvci1tZXNzYWdlXCI+XG4gICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZm9ybUdyb3VwLmdldCgnZW1haWwnKS5oYXNFcnJvcignaW52YWxpZEVtYWlscycpXCI+UGxlYXNlIGVudGVyIHZhbGlkIGVtYWlsIElEKHMpPC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8IS0tIEFjdGlvbiBCdXR0b25zIC0tPlxuICAgICAgPGRpdiBtYXQtZGlhbG9nLWFjdGlvbnMgY2xhc3M9XCJmbGV4IGdhcC0zIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWVuZCBhY3Rpb24tYnV0dG9ucyBtci00XCI+XG4gICAgICAgIDxidXR0b24gbWF0LWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImNsb3NlKClcIiBjbGFzcz1cImJ0biBzdHJva2UtYnRuXCI+Q2FuY2VsPC9idXR0b24+XG4gICAgICAgIDxidXR0b24gbWF0LWJ1dHRvbiB0eXBlPVwic3VibWl0XCIgY2RrRm9jdXNJbml0aWFsIGNsYXNzPVwiYnRuIGZpbGwtYnRuXCI+R2VuZXJhdGU8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZm9ybT5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
369
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdGUtcXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2F4LWNvbW1vbi11aS1saWIvc3JjL2xpYi9kYXRhLXZpZXctbGliL2RhdGEtdmlldy1maWx0ZXJzL2dlbmVyYXRlLXFyL2dlbmVyYXRlLXFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9heC1jb21tb24tdWktbGliL3NyYy9saWIvZGF0YS12aWV3LWxpYi9kYXRhLXZpZXctZmlsdGVycy9nZW5lcmF0ZS1xci9nZW5lcmF0ZS1xci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUN6RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsV0FBVyxFQUFxQyxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU1RixPQUFPLEVBQUUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3RDLHNFQUFzRTtBQUN0RSxPQUFPLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRXpFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUUxRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUMsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDNUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBTXJELE9BQU8sRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7Ozs7Ozs7Ozs7SUNsQi9ELDJCQUEyQztJQUN6Qyw4QkFBa0U7SUFDaEUsbUNBQW9HO0lBQWxCLGtLQUFTLGNBQU8sSUFBQztJQUFDLGlCQUFXO0lBQy9HLDhCQUErQztJQUFBLGlDQUFpQjtJQUFBLGlCQUFNO0lBQ3RFLDhCQUE2QjtJQUMzQiw0QkFDMkI7SUFDN0IsaUJBQU07SUFDUixpQkFBTTtJQUNSLGlCQUFNOzs7SUE0Q1UsZ0NBQXNIO0lBQUEsOENBQThCO0lBQUEsaUJBQU87Ozs7O0lBekN6Syw4QkFBNkI7SUFDM0IsaUNBQTZDO0lBQWxCLHdLQUFTLGNBQU8sSUFBQztJQUFDLGlCQUFTO0lBQ3RELDBCQUFJO0lBQUEsaUNBQWlCO0lBQUEsaUJBQUs7SUFDMUIsOEJBQXdCO0lBQ3RCLGdDQUF3RDtJQUExQiw0S0FBWSxtQkFBWSxJQUFDO0lBQ3JELCtCQUFpQztJQUUvQiw2QkFBTztJQUFBLDRCQUFZO0lBQUEsaUJBQVE7SUFDM0IseUJBQUc7SUFBQSx5RUFBd0Q7SUFBQSxpQkFBSTtJQUMvRCw0Q0FBaUU7SUFDL0QsNkNBQThCO0lBQUEsb0JBQUc7SUFBQSxpQkFBbUI7SUFDcEQsNkNBQStCO0lBQUEscUJBQUk7SUFBQSxpQkFBbUI7SUFDeEQsaUJBQWtCO0lBRWxCLDhCQUFPO0lBQUEsOEJBQWE7SUFBQSxpQkFBUTtJQUM1QiwwQkFBRztJQUFBLHNIQUFxRztJQUFBLGlCQUFJO0lBYzVHLDBDQUMwRztJQUFwQyw0TEFBWSw2QkFBc0IsSUFBQztJQUN6RyxpQkFBZ0I7SUFDaEIsZ0NBQWM7SUFDWiw4QkFBTztJQUFBLCtCQUFjO0lBQUEsNEJBQUs7SUFBQSxrQkFBQztJQUFBLGlCQUFNO0lBQUEsaUJBQVE7SUFDekMsMEJBQUc7SUFBQSx3R0FBdUY7SUFBQSxpQkFBSTtJQUM1Riw2QkFHRztJQUNILGdDQUNnQztJQUM5Qix1RkFBMko7SUFDN0osaUJBQU07SUFDVixpQkFBTTtJQUNSLGlCQUFNO0lBRU4sZ0NBQWtDO0lBQ2hDLG1DQUEyRDtJQUFyQywwS0FBUyxlQUFPLElBQUM7SUFBb0IsdUJBQU07SUFBQSxpQkFBUztJQUMxRSxtQ0FBdUQ7SUFBQSx5QkFBUTtJQUFBLGlCQUFTO0lBQzFFLGlCQUFNO0lBQ1IsaUJBQU87SUFDVCxpQkFBTTtJQUNSLGlCQUFNOzs7SUFoREksZUFBdUI7SUFBdkIsNENBQXVCO0lBeUJWLGdCQUFtQztJQUFuQyx3REFBbUMscUNBQUEsbUNBQUEseUJBQUEscUNBQUEsMkJBQUE7SUFRNUMsZUFBa0g7SUFBbEgscUpBQWtIO0lBSXJGLGVBQXVGO0lBQXZGLHNIQUF1Rjs7QUR0QnBJLE1BQU0sT0FBTyxtQkFBbUI7SUE0QjlCLFlBQ1MsU0FBNEMsRUFDM0MsdUJBQStDLEVBQy9DLGdCQUFpQyxFQUNqQyxXQUF3QixFQUN6QixNQUFpQixFQUNoQixXQUF1QixFQUNDLFFBQWEsRUFDckMsV0FBK0IsQ0FBQSx5QkFBeUI7O1FBUHpELGNBQVMsR0FBVCxTQUFTLENBQW1DO1FBQzNDLDRCQUF1QixHQUF2Qix1QkFBdUIsQ0FBd0I7UUFDL0MscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFpQjtRQUNqQyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN6QixXQUFNLEdBQU4sTUFBTSxDQUFXO1FBQ2hCLGdCQUFXLEdBQVgsV0FBVyxDQUFZO1FBQ0MsYUFBUSxHQUFSLFFBQVEsQ0FBSztRQUNyQyxnQkFBVyxHQUFYLFdBQVcsQ0FBb0I7UUFqQ3pDLGdCQUFXLEdBQWtCLEVBQUUsQ0FBQztRQU9oQywrREFBK0Q7UUFDL0Qsb0JBQWUsR0FBRyxFQUFFLENBQUM7UUFDckIsWUFBTyxHQUFZLEtBQUssQ0FBQyxDQUFDLHdDQUF3QztRQUNsRSxZQUFPLEdBQUMsSUFBSSxDQUFDLENBQUMsb0JBQW9CO1FBQ2xDLGNBQVMsR0FBVyxPQUFPLENBQUMsQ0FBQyxrQkFBa0I7UUFDL0Msa0JBQWEsR0FBRyxFQUFFLENBQUM7UUFDbkIsZ0JBQVcsR0FBWSxLQUFLLENBQUMsQ0FBQyxtQ0FBbUM7UUFFakUsZ0JBQVcsR0FBaUIsRUFBRSxDQUFDO1FBQy9CLFdBQU0sR0FBUyxLQUFLLENBQUM7UUE2UHJCLGdCQUFXLEdBQVcsS0FBSyxDQUFDLENBQUMsaURBQWlEO1FBMU94RSxJQUFJLENBQUMsTUFBTSxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUM7UUFDaEMsSUFBSSxDQUFDLElBQUksR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDO1FBQzFCLElBQUksQ0FBQyxRQUFRLEdBQUUsWUFBWSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNsRCxJQUFHLElBQUksQ0FBQyxRQUFRLElBQUUsWUFBWSxFQUFDO1lBQzdCLElBQUksQ0FBQyxNQUFNLEdBQUMsSUFBSSxDQUFDO1NBQ2xCO1FBQ0QsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUM7UUFDdEUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDcEMsSUFBSSxDQUFDLFlBQVksR0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUNuQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMzQixPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN2QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFDLEVBQUU7WUFDbkUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDN0IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDOUIsS0FBSyxNQUFNLE1BQU0sSUFBSSxLQUFLLENBQUMsT0FBTyxFQUFFO2dCQUNsQyxtREFBbUQ7Z0JBQ25ELDJDQUEyQztnQkFDM0Msc0NBQXNDO2dCQUN0QyxhQUFhO2dCQUNiLElBQUk7Z0JBQ0osb0NBQW9DO2dCQUNwQyx1RkFBdUY7Z0JBQ25GLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUN0QyxJQUFJO2dCQUNKLG9DQUFvQzthQUN2QztZQUNELE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ3BDLENBQUMsQ0FBQyxDQUFDO0lBR1AsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsWUFBWSxHQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDO1FBQ25FLElBQUksQ0FBQyxTQUFTLEdBQUUsUUFBUSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztRQUM1RCxPQUFPLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFMUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQztZQUN0QyxLQUFLLEVBQUUsQ0FBQyxLQUFLLENBQUM7WUFDZCxJQUFJLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUM7Z0JBQzNCLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLDhCQUE4QjthQUN4RCxDQUFDO1lBQ0YsS0FBSyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsNkJBQTZCLEVBQUUsQ0FBQyxDQUFDLENBQUMsNEJBQTRCO1NBQ3RHLENBQUMsQ0FBQztRQUVILG9DQUFvQztRQUNwQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxTQUFTLENBQ3ZFLENBQUMsUUFBUSxFQUFFLEVBQUU7WUFFWCxvREFBb0Q7WUFDcEQsSUFBSSxDQUFDLEtBQUssR0FBRSxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7WUFFcEMsNENBQTRDO1lBQzVDLE9BQU8sQ0FBQyxHQUFHLENBQUMsbUJBQW1CLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzdDLE9BQU8sQ0FBQyxHQUFHLENBQUMsMEJBQTBCLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzdELENBQUMsRUFDRCxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ1IsdUJBQXVCO1lBQ3ZCLE9BQU8sQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ2pDLENBQUMsQ0FDRixDQUFDO1FBRUYsK0VBQStFO1FBQy9FLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ3RELElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLHNCQUFzQixFQUFFLENBQUMsQ0FBQyxxQkFBcUI7UUFDN0UsQ0FBQyxDQUFDLENBQUM7SUFJTCxDQUFDO0lBR0QsbUJBQW1CLENBQUMsS0FBYTtRQUMvQixNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVE7YUFDdEMsTUFBTSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLEtBQUssQ0FBQzthQUNuQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzFDLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7SUFDNUYsQ0FBQztJQUdELDhDQUE4QztJQUM5Qyw2QkFBNkI7UUFDM0IsT0FBTyxDQUFDLE9BQXdCLEVBQWlDLEVBQUU7WUFDakUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUU7Z0JBQ2xCLE9BQU8sSUFBSSxDQUFDLENBQUMsaUZBQWlGO2FBQy9GO1lBQ0QsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7WUFDbkUsTUFBTSxZQUFZLEdBQUcsaURBQWlELENBQUM7WUFDdkUsTUFBTSxhQUFhLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQ3hFLE9BQU8sYUFBYSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsYUFBYSxFQUFFLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ3ZGLENBQUMsQ0FBQztJQUNKLENBQUM7SUFFRCxjQUFjLENBQUMsUUFBYTtRQUMxQixPQUFPLENBQUMsR0FBRyxDQUFDLDRCQUE0QixFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ3BELElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDLENBQUMsMkJBQTJCO0lBQ3ZELENBQUM7SUFFRCxVQUFVO1FBQ1IsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQztRQUMvRSxJQUFJLENBQUMsd0JBQXdCLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQztRQUNyRixJQUFJLENBQUMsV0FBVyxHQUFFLFFBQVEsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ2pFLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzlCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUNoRCxNQUFNLGFBQWEsR0FBRyxFQUFFLENBQUM7UUFDekIsSUFBRyxJQUFJLENBQUMsUUFBUSxJQUFFLFlBQVksRUFBQztZQUM3QixLQUFLLElBQUksQ0FBQyxHQUFDLENBQUMsRUFBQyxDQUFDLEdBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLE1BQU0sRUFBQyxDQUFDLEVBQUUsRUFBRTtnQkFDcEQsSUFBSSxRQUFRLEdBQUc7b0JBQ2IsV0FBVyxFQUFDLElBQUksQ0FBQyxXQUFXO29CQUM1QixHQUFHLEVBQUUsSUFBSSxDQUFDLEtBQUs7b0JBQ2YsR0FBRyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTTtvQkFDckIsS0FBSyxFQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUM7b0JBQ25DLEtBQUssRUFBQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxDQUFDO29CQUN0QyxJQUFJLEVBQUUsSUFBSTtvQkFDVixLQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSztvQkFDeEMsV0FBVztvQkFDWCxZQUFZLEVBQUMsSUFBSSxDQUFDLFlBQVk7b0JBQzlCLEtBQUssRUFBQyxLQUFLO29CQUNYLFNBQVMsRUFBQyxJQUFJLENBQUMsU0FBUztvQkFDeEIsUUFBUSxFQUFDLElBQUksQ0FBQyxRQUFRO2lCQUN2QixDQUFDO2dCQUVGLG1EQUFtRDtnQkFDbkQscURBQXFEO2dCQUNyRCxJQUFJO2dCQUVKLGFBQWEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQzdCLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7YUFDdkI7U0FDRjthQUNJLElBQUcsSUFBSSxDQUFDLFFBQVEsSUFBRSxXQUFXLEVBQ2xDO1lBQ0UsSUFBSSxRQUFRLEdBQUc7Z0JBQ2IsV0FBVyxFQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTTtnQkFDNUIsR0FBRyxFQUFFLElBQUksQ0FBQyxLQUFLO2dCQUNmLEdBQUcsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU07Z0JBQ3JCLEtBQUssRUFBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUk7Z0JBQ3BCLElBQUksRUFBRSxJQUFJO2dCQUNWLEtBQUssRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLO2dCQUN4QyxXQUFXO2dCQUNYLFlBQVksRUFBQyxJQUFJLENBQUMsWUFBWTtnQkFDOUIsS0FBSyxFQUFDLEtBQUs7Z0JBQ1gsU0FBUyxFQUFDLElBQUksQ0FBQyxTQUFTO2dCQUN4QixRQUFRLEVBQUMsSUFBSSxDQUFDLFFBQVE7YUFDdkIsQ0FBQztZQUVGLG1EQUFtRDtZQUNuRCxxREFBcUQ7WUFDckQsSUFBSTtZQUVKLGFBQWEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDN0IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUN2QjtRQUNELElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDO2FBQ3hELFNBQVMsQ0FDUixDQUFDLFFBQVEsRUFBRSxFQUFFO1lBQ1gsSUFBSSxDQUFDLE1BQU0sR0FBQyxRQUFRLENBQUM7UUFDckIsQ0FBQyxFQUNILENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDUixPQUFPLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUMvQixtQkFBbUI7UUFDckIsQ0FBQyxDQUNGLENBQUM7UUFDRixJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLGtEQUFrRCxFQUFFLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUUvRyxDQUFDO0lBRUQsWUFBWTtRQUVSLE1BQU0sR0FBRyxHQUFHLGFBQWEsQ0FBQztRQUMxQixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBRWxDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFhLEdBQUcsRUFBRSxXQUFXLEVBQUU7WUFDbEQsT0FBTyxFQUFFLElBQUksV0FBVyxDQUFDO2dCQUN2QixjQUFjLEVBQUUsa0JBQWtCO2FBQ25DLENBQUM7U0FDSCxDQUFDLENBQUMsU0FBUyxDQUNWLENBQUMsUUFBb0IsRUFBRSxFQUFFO1lBQ3ZCLDRCQUE0QjtRQUM5QixDQUFDLEVBQ0QsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNSLE9BQU8sQ0FBQyxLQUFLLENBQUMsNEJBQTRCLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDckQsQ0FBQyxDQUNGLENBQUM7SUFFTixDQUFDO0lBRUQsVUFBVTtRQUNSLDhCQUE4QjtRQUM5QixNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRXpDLHVDQUF1QztRQUN2QyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7UUFFdkIsd0NBQXdDO1FBQ3hDLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRWhDLCtEQUErRDtRQUMvRCx1Q0FBdUM7UUFDdkMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBRWIseURBQXlEO1FBQ3pELFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRCxVQUFVO1FBRVIsSUFBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsTUFBTSxLQUFLLFNBQVMsRUFBRTtZQUNyRCxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDOUMsT0FBTztTQUNSO1FBQUEsQ0FBQztRQUVGLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNsQiwwREFBMEQ7SUFDNUQsQ0FBQztJQUlELCtEQUErRDtJQUMvRCxpQkFBaUI7UUFDZixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDO1lBQzVCLFFBQVEsRUFBRSxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDO1lBQ25DLEtBQUssRUFBRSxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUsseUJBQXlCO1NBQy9ELENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCw0Q0FBNEM7SUFDNUMsSUFBSSxJQUFJO1FBQ04sT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQWMsQ0FBQztJQUNqRCxDQUFDO0lBS0QsYUFBYTtRQUNYLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxpQkFBaUI7SUFDakIsMENBQTBDO0lBQzFDLElBQUk7SUFDSixLQUFLO1FBQ0gsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBQ0QsdUNBQXVDO0lBQ3ZDLFdBQVc7SUFFWCxDQUFDO0lBRUQsbUNBQW1DO0lBQ25DLGNBQWM7UUFDWixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFRCxrQ0FBa0M7SUFDbEMsaUJBQWlCLENBQUMsS0FBYTtRQUM3QixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1QixDQUFDOztzRkF6U1UsbUJBQW1CLHdRQW1DcEIsZUFBZTtzRUFuQ2QsbUJBQW1CLHFFQVBuQjtZQUNUO2dCQUNFLE9BQU8sRUFBRSxpQkFBaUI7Z0JBQzFCLFFBQVEsRUFBRSxFQUFFLGlCQUFpQixFQUFFLDJCQUEyQixFQUFFO2FBQzdEO1NBQ0Y7UUM3Qkgsb0VBU007UUFFTix1SEFzRGM7OztRQWpFUix5Q0FBc0IsaUJBQUE7O3VGRCtCZixtQkFBbUI7Y0FaL0IsU0FBUzsyQkFDRSxpQkFBaUIsYUFJaEI7b0JBQ1Q7d0JBQ0UsT0FBTyxFQUFFLGlCQUFpQjt3QkFDMUIsUUFBUSxFQUFFLEVBQUUsaUJBQWlCLEVBQUUsMkJBQTJCLEVBQUU7cUJBQzdEO2lCQUNGOztzQkFxQ0UsTUFBTTt1QkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNQVRfU0VMRUNUX0NPTkZJRyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NlbGVjdCc7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUdyb3VwLCBGb3JtQXJyYXksIEZvcm1Db250cm9sLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQXhGb3JtIH0gZnJvbSAnLi4vLi4vLi4vZm9ybXMvYXgtZm9ybSc7XG5pbXBvcnQgeyBJbmplY3R9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuLy9pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0RGlhbG9nUmVmLCBNQVRfRElBTE9HX0RBVEEgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgRGF0YVZpZXdGaWx0ZXJzU2VydmljZSB9IGZyb20gJy4uL2RhdGEtdmlldy1maWx0ZXJzLnNlcnZpY2UnOyBcbmltcG9ydCB7IERhdGFWaWV3U2VydmljZSB9IGZyb20gJy4uLy4uL2RhdGEtdmlldy5zZXJ2aWNlJztcbmltcG9ydCB7IHRyaWdnZXIsIHN0YXRlLCBzdHlsZSwgYW5pbWF0ZSwgdHJhbnNpdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHsgQXhvU25hY2tCYXJTZXJ2aWNlLEF4b1NuYWNrQmFyVHlwZSB9IGZyb20gJy4uLy4uLy4uLy4uL3B1YmxpYy1hcGknO1xuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbi8vaW1wb3J0IHsgTG9nb1VwbG9hZENvbXBvbmVudCB9IGZyb20gJy4vbG9nby11cGxvYWQvbG9nby11cGxvYWQuY29tcG9uZW50JztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBJRmxhdHRlbiB9IGZyb20gJy4uLy4uLy4uLy4uL3B1YmxpYy1hcGknO1xuaW1wb3J0IHsgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBWYWxpZGF0b3JGbiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBIZWFkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWdlbmVyYXRlLXFyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2dlbmVyYXRlLXFyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZ2VuZXJhdGUtcXIuY29tcG9uZW50LnNjc3MnXSxcblxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBNQVRfU0VMRUNUX0NPTkZJRyxcbiAgICAgIHVzZVZhbHVlOiB7IG92ZXJsYXlQYW5lbENsYXNzOiAnZ2VuZXJhdGUtcXItb3ZlcmxheS1wYW5lbCcgfSxcbiAgICB9LFxuICBdXG59KVxuZXhwb3J0IGNsYXNzIEdlbmVyYXRlUVJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBzZWxlY3RlZEZvcm1PYmplY3RJZHM6IHN0cmluZ1tdO1xuICBzZWxlY3RlZEZvcm1PYmplY3RUaXRsZXM6IHN0cmluZ1tdO1xuICBmb3JtRGV0YWlsczogQXJyYXk8QXhGb3JtPiA9IFtdO1xuICBhY3Rpb25Gb3JtczogQXJyYXk8QXhGb3JtPjtcbiAgZm9ybUdyb3VwOiBGb3JtR3JvdXA7XG4gIGFwcFZlcnNpb25JZDogbnVtYmVyO1xuICBhcHBJRDogbnVtYmVyO1xuICBhc3NldEZvcm1JZDpudW1iZXI7XG4gIHN0YXR1czpzdHJpbmc7XG4gIC8vZGF0YTogYW55W10gPSBbMF07IC8vIEluaXRpYWxpemUgYXJyYXkgdG8gc3RvcmUgZGF0YSBzZWN0aW9uc1xuICBmaWx0ZXJlZFdpZGdldHMgPSBbXTtcbiAgbG9hZGluZzogYm9vbGVhbiA9IGZhbHNlOyAvLyBJbml0aWFsaXplIGxvYWRpbmcgdG8gZmFsc2UgaW5pdGlhbGx5XG4gIG1hcFR5cGU9XCJRUlwiOyAvL2ZpZWxkIG1hcHBpbmcgdHlwZVxuICBmaWxsU3RhdGU6IHN0cmluZyA9ICdzdGFydCc7IC8vIEFuaW1hdGlvbiBzdGF0ZVxuICBmb3JtRGF0YUFycmF5ID0gW107XG4gIHFyR2VuZXJhdGVkOiBib29sZWFuID0gZmFsc2U7IC8vIEZsYWcgdG8gdHJhY2sgaWYgUVIgaXMgZ2VuZXJhdGVkXG4gIGFwcElkOmFueTtcbiAgc291cmNlRm9ybXM6QXJyYXk8QXhGb3JtPiA9IFtdO1xuICBzb3VyY2U6Ym9vbGVhbj1mYWxzZTtcbiAgYXBwVmVyc2lvbjphbnk7XG4gIGFjY291bnRJZDphbnk7XG4gIHFyVXJsOiBzdHJpbmc7IC8vIFZhcmlhYmxlIHRvIHN0b3JlIHRoZSByZWNlaXZlZCBRUiBVUkxcbiAgZm9ybXR5cGU6IHN0cmluZztcbiAgZm9ybTphbnk7XG4gIGZvcm1mdDpzdHJpbmc7XG4gIGZpZWxkbWFwIDphbnk7XG4gIGFjdGlvbkZvcm1JZDphbnk7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxHZW5lcmF0ZVFSQ29tcG9uZW50PixcbiAgICBwcml2YXRlIF9kYXRhVmlld0ZpbHRlcnNTZXJ2aWNlOiBEYXRhVmlld0ZpbHRlcnNTZXJ2aWNlLFxuICAgIHByaXZhdGUgX2RhdGFWaWV3U2VydmljZTogRGF0YVZpZXdTZXJ2aWNlLFxuICAgIHByaXZhdGUgZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyLFxuICAgIHB1YmxpYyBkaWFsb2c6IE1hdERpYWxvZyxcbiAgICBwcml2YXRlIF9odHRwQ2xpZW50OiBIdHRwQ2xpZW50LFxuICAgIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBwdWJsaWMgZm9ybURhdGE6IGFueSxcbiAgICBwcml2YXRlIF9BeG9TZXJ2aWNlOiBBeG9TbmFja0JhclNlcnZpY2UvLyBJbmplY3QgdGhlIGZvcm0gb2JqZWN0XG4gICkgeyBcbiAgICAgICAgdGhpcy5mb3JtZnQgPSBmb3JtRGF0YS5mb3JtdHlwZTtcbiAgICAgICAgdGhpcy5mb3JtID0gZm9ybURhdGEuZm9ybTtcbiAgICAgICAgdGhpcy5mb3JtdHlwZT0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2dlbmVyYXRlUVInKTtcbiAgICAgICAgaWYodGhpcy5mb3JtdHlwZT09XCJhY3Rpb25mb3JtXCIpe1xuICAgICAgICAgIHRoaXMuc291cmNlPXRydWU7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRGb3JtID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnc2VsZWN0ZWRGb3JtJykpO1xuICAgICAgICB0aGlzLnNvdXJjZUZvcm1zLnB1c2goc2VsZWN0ZWRGb3JtKTtcbiAgICAgICAgdGhpcy5hY3Rpb25Gb3JtSWQ9dGhpcy5mb3JtLmZvcm1JZDtcbiAgICAgICAgY29uc29sZS5sb2codGhpcy5mb3JtdHlwZSk7XG4gICAgICAgIGNvbnNvbGUubG9nKHRoaXMuZm9ybSk7XG4gICAgICAgIHRoaXMuX2RhdGFWaWV3U2VydmljZS5nZXRGb3JtRGV0YWlscyh0aGlzLmZvcm0uZm9ybUlkKS50aGVuKChfZm9ybSk9PnsgIC8vZ2V0IHRoZSBkZXRhaWxzIG9mIGZvcm0gZmllbGRzXG4gICAgICAgICAgdGhpcy5mb3JtRGV0YWlscy5wdXNoKF9mb3JtKTtcbiAgICAgICAgICBjb25zb2xlLmxvZyh0aGlzLmZvcm1EZXRhaWxzKTtcbiAgICAgICAgICBmb3IgKGNvbnN0IHdpZGdldCBvZiBfZm9ybS53aWRnZXRzKSB7XG4gICAgICAgICAgICAvLyAvLyBDaGVjayBpZiB0aGUgd2lkZ2V0IHByb21wdCBpcyBcIlN5c3RlbSBGaWVsZHNcIlxuICAgICAgICAgICAgLy8gaWYgKHdpZGdldC5wcm9tcHQgPT09ICdTeXN0ZW0gRmllbGRzJykge1xuICAgICAgICAgICAgLy8gICAgIC8vIElmIHNvLCBicmVhayBvdXQgb2YgdGhlIGxvb3BcbiAgICAgICAgICAgIC8vICAgICBicmVhaztcbiAgICAgICAgICAgIC8vIH1cbiAgICAgICAgICAgIC8vIC8vIEFkZCBvdGhlciBjb25kaXRpb25zIGFzIG5lZWRlZFxuICAgICAgICAgICAgLy8gaWYgKHdpZGdldC5tYWluVHlwZSA9PT0gJ3RleHQnICYmIHdpZGdldC5pZGVudGlmaWVyLmluZGV4T2YoJ21ldGFfaGVhZGVyJykgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5maWx0ZXJlZFdpZGdldHMucHVzaCh3aWRnZXQpO1xuICAgICAgICAgICAgLy8gfVxuICAgICAgICAgICAgLy90aGlzLmZpbHRlcmVkV2lkZ2V0cy5wdXNoKHdpZGdldCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc29sZS5sb2codGhpcy5maWx0ZXJlZFdpZGdldHMpO1xuICAgICAgfSk7XG5cbiAgICAgIFxuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5hcHBWZXJzaW9uSWQ9SlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnYXBwVmVyc2lvbklkJykpO1xuICAgIHRoaXMuYWNjb3VudElkPSBwYXJzZUludChsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnYWNjb3VudElkJykpO1xuICAgIGNvbnNvbGUubG9nKFwiYWNjb3VudCBpZDpcIix0aGlzLmFjY291bnRJZCk7XG4gICAgXG4gICAgdGhpcy5mb3JtR3JvdXAgPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcbiAgICAgIGxldmVsOiBbJ0FwcCddLCAvLyBEZWZhdWx0IGxldmVsIHZhbHVlIGlzICdhcHAnXG4gICAgICBkYXRhOiB0aGlzLmZvcm1CdWlsZGVyLmFycmF5KFtcbiAgICAgICAgdGhpcy5jcmVhdGVEYXRhU2VjdGlvbigpIC8vIENyZWF0ZSBpbml0aWFsIGRhdGEgc2VjdGlvblxuICAgICAgXSksXG4gICAgICBlbWFpbDogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgdGhpcy5jb21tYVNlcGFyYXRlZEVtYWlsc1ZhbGlkYXRvcigpXV0gLy8gQWRkIGN1c3RvbSB2YWxpZGF0b3IgaGVyZVxuICAgIH0pO1xuXG4gICAgLy8gZmV0Y2hpbmcgYXBwSWQgb2YgdGhpcyBhcHBWZXJzaW9uXG4gICAgdGhpcy5fZGF0YVZpZXdGaWx0ZXJzU2VydmljZS5mZXRjaEFwcERldGFpbHModGhpcy5hcHBWZXJzaW9uSWQpLnN1YnNjcmliZShcbiAgICAgIChyZXNwb25zZSkgPT4ge1xuXG4gICAgICAgIC8vIEFjY2VzcyB0aGUgdmFsdWUgb2YgXCJhXCIgZnJvbSB0aGUgXCJkZXRhaWxzXCIgb2JqZWN0XG4gICAgICAgIHRoaXMuYXBwSUQ9IHJlc3BvbnNlLmRhdGEuZGV0YWlscy5hO1xuXG4gICAgICAgIC8vIE5vdyB5b3UgY2FuIHVzZSBcImFwcElkXCIgaW4geW91ciBjb21wb25lbnRcbiAgICAgICAgY29uc29sZS5sb2coJ1ZhbHVlIG9mIFwiYXBwSWRcIjonLCB0aGlzLmFwcElEKTtcbiAgICAgICAgY29uc29sZS5sb2coJ1ZhbHVlIG9mIFwiYXBwVmVyc2lvbklkXCI6JywgdGhpcy5hcHBWZXJzaW9uSWQpO1xuICAgICAgfSxcbiAgICAgIChlcnJvcikgPT4ge1xuICAgICAgICAvLyBIYW5kbGUgZXJyb3JzIGlmIGFueVxuICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvcjonLCBlcnJvcik7XG4gICAgICB9XG4gICAgKTsgXG5cbiAgICAvLyBTdWJzY3JpYmUgdG8gdmFsdWUgY2hhbmdlcyBvZiBlbWFpbCBjb250cm9sIHRvIGVuYWJsZSByZWFsLXRpbWUgaGlnaGxpZ2h0aW5nXG4gICAgdGhpcy5mb3JtR3JvdXAuZ2V0KCdlbWFpbCcpLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5mb3JtR3JvdXAuZ2V0KCdlbWFpbCcpLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTsgLy8gVHJpZ2dlciB2YWxpZGF0aW9uXG4gICAgfSk7XG5cblxuICAgIFxuICB9XG5cblxuICBnZXRBdmFpbGFibGVXaWRnZXRzKGluZGV4OiBudW1iZXIpIHtcbiAgICBjb25zdCBzZWxlY3RlZEZpZWxkcyA9IHRoaXMuZGF0YS5jb250cm9sc1xuICAgICAgLmZpbHRlcigoY29udHJvbCwgaSkgPT4gaSAhPT0gaW5kZXgpXG4gICAgICAubWFwKGNvbnRyb2wgPT4gY29udHJvbC52YWx1ZS5maWVsZF9pZCk7XG4gICAgcmV0dXJuIHRoaXMuZmlsdGVyZWRXaWRnZXRzLmZpbHRlcih3aWRnZXQgPT4gIXNlbGVjdGVkRmllbGRzLmluY2x1ZGVzKHdpZGdldC5pZGVudGlmaWVyKSk7XG4gIH1cblxuXG4gIC8vIEN1c3RvbSBWYWxpZGF0b3IgZm9yIGNvbW1hLXNlcGFyYXRlZCBlbWFpbHNcbiAgY29tbWFTZXBhcmF0ZWRFbWFpbHNWYWxpZGF0b3IoKTogVmFsaWRhdG9yRm4ge1xuICAgIHJldHVybiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB8IG51bGwgPT4ge1xuICAgICAgaWYgKCFjb250cm9sLnZhbHVlKSB7XG4gICAgICAgIHJldHVybiBudWxsOyAvLyByZXR1cm4gbnVsbCBpZiBjb250cm9sIGlzIGVtcHR5LCB0byBsZXQgb3RoZXIgdmFsaWRhdG9ycyBoYW5kbGUgcmVxdWlyZWQgY2hlY2tcbiAgICAgIH1cbiAgICAgIGNvbnN0IGVtYWlscyA9IGNvbnRyb2wudmFsdWUuc3BsaXQoJywnKS5tYXAoZW1haWwgPT4gZW1haWwudHJpbSgpKTtcbiAgICAgIGNvbnN0IGVtYWlsUGF0dGVybiA9IC9eW2EtekEtWjAtOS5fLV0rQFthLXpBLVowLTkuLV0rXFwuW2EtekEtWl17Miw0fSQvO1xuICAgICAgY29uc3QgaW52YWxpZEVtYWlscyA9IGVtYWlscy5maWx0ZXIoZW1haWwgPT4gIWVtYWlsUGF0dGVybi50ZXN0KGVtYWlsKSk7XG4gICAgICByZXR1cm4gaW52YWxpZEVtYWlscy5sZW5ndGggPiAwID8geyBpbnZhbGlkRW1haWxzOiBpbnZhbGlkRW1haWxzLmpvaW4oJywgJykgfSA6IG51bGw7XG4gICAgfTtcbiAgfVxuXG4gIGhhbmRsZWZpZWxkbWFwKGZpZWxkTWFwOiBhbnkpIHtcbiAgICBjb25zb2xlLmxvZygnRmllbGQgTWFwIG9iamVjdCByZWNlaXZlZDonLCBmaWVsZE1hcCk7XG4gICAgdGhpcy5maWVsZG1hcCA9IGZpZWxkTWFwOyAvLyBTYXZlIHRoZSBmaWVsZE1hcCBvYmplY3RcbiAgfVxuXG4gIGdlbmVyYXRlUXIoKSB7XG4gICAgdGhpcy5zYXZlRmllbGRNYXAoKTtcbiAgICB0aGlzLnNlbGVjdGVkRm9ybU9iamVjdElkcyA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2Zvcm1PYmplY3RJZHMnKSk7XG4gICAgdGhpcy5zZWxlY3RlZEZvcm1PYmplY3RUaXRsZXMgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdmb3JtT2JqZWN0VGl0bGVzJykpO1xuICAgIHRoaXMuYXNzZXRGb3JtSWQ9IHBhcnNlSW50KGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdmb3JtSWQnKSB8fCAnJyk7XG4gICAgY29uc29sZS5sb2codGhpcy5hc3NldEZvcm1JZCk7XG4gICAgY29uc3QgZW1haWwgPSB0aGlzLmZvcm1Hcm91cC5nZXQoJ2VtYWlsJykudmFsdWU7XG4gICAgY29uc3QgZm9ybURhdGFBcnJheSA9IFtdO1xuICAgIGlmKHRoaXMuZm9ybXR5cGU9PVwiYWN0aW9uZm9ybVwiKXtcbiAgICAgIGZvciAobGV0IGk9MDtpPHRoaXMuc2VsZWN0ZWRGb3JtT2JqZWN0SWRzLmxlbmd0aDtpKyspIHtcbiAgICAgICAgbGV0IGZvcm1EYXRhID0ge1xuICAgICAgICAgIGFzc2V0Rm9ybUlkOnRoaXMuYXNzZXRGb3JtSWQsXG4gICAgICAgICAgYWlkOiB0aGlzLmFwcElELFxuICAgICAgICAgIGZpZDogdGhpcy5mb3JtLmZvcm1JZCxcbiAgICAgICAgICBhZm9pZDp0aGlzLnNlbGVjdGVkRm9ybU9iamVjdElkc1tpXSxcbiAgICAgICAgICB0aXRsZTp0aGlzLnNlbGVjdGVkRm9ybU9iamVjdFRpdGxlc1tpXSwgLy90aGlzLmZvcm0ubmFtZSBpbiBjYXNlIG9mIGFzc2V0IGZvcm1cbiAgICAgICAgICB0eXBlOiAnREEnLFxuICAgICAgICAgIGxldmVsOiB0aGlzLmZvcm1Hcm91cC5nZXQoJ2xldmVsJykudmFsdWUsXG4gICAgICAgICAgLy9kYXRhOiB7fSxcbiAgICAgICAgICBhcHBWZXJzaW9uSWQ6dGhpcy5hcHBWZXJzaW9uSWQsXG4gICAgICAgICAgZW1haWw6ZW1haWwsXG4gICAgICAgICAgYWNjb3VudElkOnRoaXMuYWNjb3VudElkLFxuICAgICAgICAgIGZpZWxkbWFwOnRoaXMuZmllbGRtYXBcbiAgICAgICAgfTtcblxuICAgICAgICAvLyBmb3IgKGxldCBzZWN0aW9uIG9mIHRoaXMuZm9ybUdyb3VwLnZhbHVlLmRhdGEpIHtcbiAgICAgICAgLy8gICBmb3JtRGF0YS5kYXRhW3NlY3Rpb24uZmllbGRfaWRdID0gc2VjdGlvbi52YWx1ZTtcbiAgICAgICAgLy8gfVxuXG4gICAgICAgIGZvcm1EYXRhQXJyYXkucHVzaChmb3JtRGF0YSk7XG4gICAgICAgIGNvbnNvbGUubG9nKGZvcm1EYXRhKTtcbiAgICAgIH1cbiAgICB9XG4gICAgZWxzZSBpZih0aGlzLmZvcm10eXBlPT1cImFzc2V0Zm9ybVwiKVxuICAgIHtcbiAgICAgIGxldCBmb3JtRGF0YSA9IHtcbiAgICAgICAgYXNzZXRGb3JtSWQ6dGhpcy5mb3JtLmZvcm1JZCxcbiAgICAgICAgYWlkOiB0aGlzLmFwcElELFxuICAgICAgICBmaWQ6IHRoaXMuZm9ybS5mb3JtSWQsXG4gICAgICAgIHRpdGxlOnRoaXMuZm9ybS5uYW1lLCAvL3RoaXMuZm9ybS5uYW1lIGluIGNhc2Ugb2YgYXNzZXQgZm9ybVxuICAgICAgICB0eXBlOiAnREEnLFxuICAgICAgICBsZXZlbDogdGhpcy5mb3JtR3JvdXAuZ2V0KCdsZXZlbCcpLnZhbHVlLFxuICAgICAgICAvL2RhdGE6IHt9LFxuICAgICAgICBhcHBWZXJzaW9uSWQ6dGhpcy5hcHBWZXJzaW9uSWQsXG4gICAgICAgIGVtYWlsOmVtYWlsLFxuICAgICAgICBhY2NvdW50SWQ6dGhpcy5hY2NvdW50SWQsXG4gICAgICAgIGZpZWxkbWFwOnRoaXMuZmllbGRtYXBcbiAgICAgIH07XG5cbiAgICAgIC8vIGZvciAobGV0IHNlY3Rpb24gb2YgdGhpcy5mb3JtR3JvdXAudmFsdWUuZGF0YSkge1xuICAgICAgLy8gICBmb3JtRGF0YS5kYXRhW3NlY3Rpb24uZmllbGRfaWRdID0gc2VjdGlvbi52YWx1ZTtcbiAgICAgIC8vIH1cblxuICAgICAgZm9ybURhdGFBcnJheS5wdXNoKGZvcm1EYXRhKTtcbiAgICAgIGNvbnNvbGUubG9nKGZvcm1EYXRhKTtcbiAgICB9XG4gICAgdGhpcy5fZGF0YVZpZXdGaWx0ZXJzU2VydmljZS5nZW5lcmF0ZVFyQ29kZXMoZm9ybURhdGFBcnJheSlcbiAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgIChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgIHRoaXMuc3RhdHVzPXJlc3BvbnNlO1xuICAgICAgICAgIH0sXG4gICAgICAgIChlcnJvcikgPT4ge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yOicsIGVycm9yKTtcbiAgICAgICAgICAvLyBIYW5kbGUgdGhlIGVycm9yXG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSgpO1xuICAgICAgdGhpcy5fQXhvU2VydmljZS5vcGVuU25hY2tCYXIoJ1FSIGNvZGVzIGFyZSBnZW5lcmF0ZWQuIFBsZWFzZSBjaGVjayB5b3VyIGVtYWlsIScsIEF4b1NuYWNrQmFyVHlwZS5zdWNjZXNzKTtcbiAgICAgICAgXG4gIH1cblxuICBzYXZlRmllbGRNYXAoKTogdm9pZCB7XG4gICAgXG4gICAgICBjb25zdCB1cmwgPSAnZmllbGRtYXBwZXInO1xuICAgICAgY29uc3QgcmVxdWVzdEJvZHkgPSB0aGlzLmZpZWxkbWFwO1xuXG4gICAgICB0aGlzLl9odHRwQ2xpZW50LnBvc3Q8Rm9ybURhdGFbXT4odXJsLCByZXF1ZXN0Qm9keSwge1xuICAgICAgICBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnMoe1xuICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICAgIH0pLFxuICAgICAgfSkuc3Vic2NyaWJlKFxuICAgICAgICAocmVzcG9uc2U6IEZvcm1EYXRhW10pID0+IHtcbiAgICAgICAgICAvL3RoaXMuZm9ybU5hbWVzID0gcmVzcG9uc2U7XG4gICAgICAgIH0sXG4gICAgICAgIChlcnJvcikgPT4ge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGZldGNoaW5nIGZvcm0gbmFtZXM6JywgZXJyb3IpO1xuICAgICAgICB9XG4gICAgICApO1xuICAgIFxuICB9XG5cbiAgZG93bmxvYWRRUigpIHtcbiAgICAvLyBDcmVhdGUgYSBuZXcgYW5jaG9yIGVsZW1lbnRcbiAgICBjb25zdCBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuXG4gICAgLy8gU2V0IHRoZSBocmVmIGF0dHJpYnV0ZSB0byB0aGUgUVIgVVJMXG4gICAgbGluay5ocmVmID0gdGhpcy5xclVybDtcblxuICAgIC8vIEFwcGVuZCB0aGUgYW5jaG9yIGVsZW1lbnQgdG8gdGhlIGJvZHlcbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGxpbmspO1xuXG4gICAgLy8gUHJvZ3JhbW1hdGljYWxseSB0cmlnZ2VyIGEgY2xpY2sgZXZlbnQgb24gdGhlIGFuY2hvciBlbGVtZW50XG4gICAgLy8gVGhpcyB3aWxsIHN0YXJ0IHRoZSBkb3dubG9hZCBwcm9jZXNzXG4gICAgbGluay5jbGljaygpO1xuXG4gICAgLy8gQWZ0ZXIgY2xpY2tpbmcsIHJlbW92ZSB0aGUgYW5jaG9yIGVsZW1lbnQgZnJvbSB0aGUgRE9NXG4gICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChsaW5rKTtcbiAgfVxuXG4gIHN1Ym1pdEZvcm0oKSB7XG5cbiAgICBpZih0aGlzLmZvcm1Hcm91cC5jb250cm9scy5lbWFpbC5zdGF0dXMgPT09ICdJTlZBTElEJykge1xuICAgICAgdGhpcy5mb3JtR3JvdXAuY29udHJvbHMuZW1haWwubWFya0FzVG91Y2hlZCgpO1xuICAgICAgcmV0dXJuO1xuICAgIH07XG5cbiAgICB0aGlzLmdlbmVyYXRlUXIoKTtcbiAgICAvLyBBZGQgYW55IGFkZGl0aW9uYWwgZm9ybSBzdWJtaXNzaW9uIGxvZ2ljIGhlcmUgaWYgbmVlZGVkXG4gIH1cblxuXG5cbiAgLy8gQ29udmVuaWVuY2UgbWV0aG9kIHRvIGNyZWF0ZSBhIGZvcm0gZ3JvdXAgZm9yIGEgZGF0YSBzZWN0aW9uXG4gIGNyZWF0ZURhdGFTZWN0aW9uKCk6IEZvcm1Hcm91cCB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xuICAgICAgZmllbGRfaWQ6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sIC8vIEZpZWxkIHNlbGVjdGlvbiBpcyByZXF1aXJlZFxuICAgICAgdmFsdWU6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0gICAgIC8vIFRleHQgZW50cnkgaXMgcmVxdWlyZWRcbiAgICB9KTtcbiAgfVxuXG4gIC8vIEdldHRlciBmb3IgZWFzeSBhY2Nlc3MgdG8gZGF0YSBmb3JtIGFycmF5XG4gIGdldCBkYXRhKCk6IEZvcm1BcnJheSB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybUdyb3VwLmdldCgnZGF0YScpIGFzIEZvcm1BcnJheTtcbiAgfVxuXG5cbiAgc2hvd092ZXJsYXk6Ym9vbGVhbiA9IGZhbHNlOyAvLyBCb29sZWFuIHByb3BlcnR5IHRvIGNvbnRyb2wgb3ZlcmxheSB2aXNpYmlsaXR5XG5cbiAgdG9nZ2xlT3ZlcmxheSgpIHtcbiAgICB0aGlzLnNob3dPdmVybGF5ID0gIXRoaXMuc2hvd092ZXJsYXk7IFxuICB9XG5cbiAgLy8gY2xvc2UoKTogdm9pZHtcbiAgLy8gICB0aGlzLnNob3dPdmVybGF5ID0gIXRoaXMuc2hvd092ZXJsYXk7XG4gIC8vIH1cbiAgY2xvc2UoKSB7XG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoKTtcbiAgfVxuICAvL1N1YnNjcmliZXJzIHNob3VsZCBiZSBpbXBsZW1lbnRlZCBoZXJcbiAgc3Vic2NyaWJlcnMoKSA6dm9pZHtcblxuICB9XG5cbiAgLy8gTWV0aG9kIHRvIGFkZCBhIG5ldyBkYXRhIHNlY3Rpb25cbiAgYWRkRGF0YVNlY3Rpb24oKSB7XG4gICAgdGhpcy5kYXRhLnB1c2godGhpcy5jcmVhdGVEYXRhU2VjdGlvbigpKTtcbiAgfVxuXG4gIC8vIE1ldGhvZCB0byByZW1vdmUgYSBkYXRhIHNlY3Rpb25cbiAgcmVtb3ZlRGF0YVNlY3Rpb24oaW5kZXg6IG51bWJlcikge1xuICAgIHRoaXMuZGF0YS5yZW1vdmVBdChpbmRleCk7XG4gIH1cbn0iLCI8ZGl2ICpuZ0lmPVwiZm9ybWZ0ID09PSAnVCc7IGVsc2Ugc2hvd0Zvcm1cIj5cbiAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgZ2FwLTYgdy1hdXRvIGgtYXV0byBweC04IHB5LTQgcmVsYXRpdmVcIj5cbiAgICA8bWF0LWljb24gc3ZnSWNvbj1cImF4b19wb3B1cF9jbG9zZVwiIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXIgYWJzb2x1dGUgdG9wLTIgcmlnaHQtMlwiIChjbGljayk9XCJjbG9zZSgpXCI+PC9tYXQtaWNvbj5cbiAgICA8ZGl2IGNsYXNzPVwiYXhvLWZvbnQgdGV4dC0zeGwgZm9udC1tZWRpdW0gbS0wXCI+R2VuZXJhdGUgUVIgQ29kZXM8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwidmlkZW8tY29udGFpbmVyXCI+XG4gICAgICA8aWZyYW1lIHdpZHRoPVwiNTYwXCIgaGVpZ2h0PVwiMzE1XCIgc3JjPVwiaHR0cHM6Ly93d3cueW91dHViZS5jb20vZW1iZWQvUmF6SmVrdVEtY0lcIiBmcmFtZWJvcmRlcj1cIjBcIlxuICAgICAgICBhbGxvd2Z1bGxzY3JlZW4+PC9pZnJhbWU+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjc2hvd0Zvcm0+XG4gIDxkaXYgY2xhc3M9XCJwb3B1cC1jb250YWluZXJcIj5cbiAgICA8YnV0dG9uIGNsYXNzPVwiY2xvc2UtaWNvblwiIChjbGljayk9XCJjbG9zZSgpXCI+PC9idXR0b24+XG4gICAgPGgxPkdlbmVyYXRlIFFSIENvZGVzPC9oMT5cbiAgICA8ZGl2IGNsYXNzPVwicG9wdXAtYm9keVwiPlxuICAgICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtR3JvdXBcIiAobmdTdWJtaXQpPVwic3VibWl0Rm9ybSgpXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGdhcC0xXCI+XG4gICAgICAgICAgPCEtLSBMZXZlbCAtLT5cbiAgICAgICAgICA8bGFiZWw+U2NhbiBUcmlnZ2VyPC9sYWJlbD5cbiAgICAgICAgICA8cD5PcGVuIFFSIENvZGUgc2Nhbm5lciB3aGVuIG9uZSBvZiB0aGUgZm9sbG93aW5nIGlzIG9wZW5lZDwvcD5cbiAgICAgICAgICA8bWF0LXJhZGlvLWdyb3VwIGZvcm1Db250cm9sTmFtZT1cImxldmVsXCIgY2xhc3M9XCJmbGV4IGdhcC00IG1iLTJcIj5cbiAgICAgICAgICAgIDxtYXQtcmFkaW8tYnV0dG9uIHZhbHVlPVwiQXBwXCI+QXBwPC9tYXQtcmFkaW8tYnV0dG9uPlxuICAgICAgICAgICAgPG1hdC1yYWRpby1idXR0b24gdmFsdWU9XCJGb3JtXCI+Rm9ybTwvbWF0LXJhZGlvLWJ1dHRvbj5cbiAgICAgICAgICA8L21hdC1yYWRpby1ncm91cD5cbiAgICAgICAgICA8IS0tIERhdGEgU2VjdGlvbnMgLS0+XG4gICAgICAgICAgPGxhYmVsPkF1dG8tUG9wdWxhdGU8L2xhYmVsPlxuICAgICAgICAgIDxwPlNlbGVjdCB0aGUgZm9ybSBmaWVsZHMgdGhhdCBuZWVkIHRvIGJlIGF1dG9tYXRpY2FsbHkgZmlsbGVkIGJhc2VkIG9uIHRoZSBkYXRhIGVtYmVkZGVkIGluIHRoZSBRUiBDb2RlPC9wPlxuICAgICAgICAgIDwhLS08ZGl2IGNsYXNzPVwiZGF0YS1zZWN0aW9uIG1iLTAgZmxleCBqdXN0aWZ5LWFyb3VuZCBpdGVtcy1jZW50ZXIgZ2FwLTRcIiAqbmdGb3I9XCJsZXQgZGF0YSBvZiBkYXRhLmNvbnRyb2xzOyBsZXQgaSA9IGluZGV4XCIgW2Zvcm1Hcm91cF09XCJkYXRhXCI+XG4gICAgICAgICAgICA8bWF0LXNlbGVjdCBjbGFzcz1cImZpZWxkLXNlbGVjdFwiIGZvcm1Db250cm9sTmFtZT1cImZpZWxkX2lkXCIgW2Rpc2FibGVPcHRpb25DZW50ZXJpbmddPVwidHJ1ZVwiIHBsYWNlaG9sZGVyPVwiU2VsZWN0IEZpZWxkXCI+XG4gICAgICAgICAgICAgIDxtYXQtb3B0aW9uIHZhbHVlPVwiXCIgZGlzYWJsZWQgc2VsZWN0ZWQ+U2VsZWN0IGEgZmVpbGQ8L21hdC1vcHRpb24+XG4gICAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCB3aWRnZXQgb2YgZ2V0QXZhaWxhYmxlV2lkZ2V0cyhpKVwiIFt2YWx1ZV09XCJ3aWRnZXQuaWRlbnRpZmllclwiPnt7IHdpZGdldC5wcm9tcHQgfX08L21hdC1vcHRpb24+XG4gICAgICAgICAgICA8L21hdC1zZWxlY3Q+XG4gICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cInRleHQtYm94IHctOC8xMiByb3VuZGVkLW1kXCIgZm9ybUNvbnRyb2xOYW1lPVwidmFsdWVcIiBwbGFjZWhvbGRlcj1cIkVudGVyIGZpZWxkIHZhbHVlXCI+XG4gICAgICAgICAgICA8aW1nIHNyYz1cIi4uLy4uLy4uLy4uL2Fzc2V0cy9pY29ucy9heG8vc2N1bHB0b3IvYXhvX2RlbGV0ZS5zdmdcIiBhbHQ9XCJcIiBjbGFzcz1cImgtNSB3LTUgZGF0YS1zZWN0aW9uLWRlbGV0ZVwiIChjbGljayk9XCJyZW1vdmVEYXRhU2VjdGlvbihpKVwiPiAtLT5cbiAgICAgICAgICA8IS0tIDxidXR0b24gc3R5bGU9XCJoZWlnaHQ6IDIuMTVyZW07IHdpZHRoOiAyLjE1cmVtOyBkaXNwbGF5OiBmbGV4OyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsgYWxpZ24taXRlbXM6IGNlbnRlcjtcIiBjbGFzcz1cInByaW1hcnktYnRuIGF4by1mb250XCIgKGNsaWNrKT1cInJlbW92ZURhdGFTZWN0aW9uKGkpXCI+LTwvYnV0dG9uPiAtLT5cbiAgICAgICAgICA8IS0tIDwvZGl2PlxuICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIHN0cm9rZS1idG4gdGV4dC1iYXNlIGZvbnQtbm9ybWFsIHB4LTJ0ZXh0LWJveCBweS0xIG10LTJcIiAoY2xpY2spPVwiYWRkRGF0YVNlY3Rpb24oKVwiPisgYWRkIGZlaWxkPC9idXR0b24+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImFkZGl0aW9uYWwtZmllbGRzIG0tMFwiPiAtLT5cbiAgICAgICAgICA8IS0tIEFkZGl0aW9uYWwgZmllbGRzIHdpbGwgYmUgZHluYW1pY2FsbHkgYWRkZWQgaGVyZSAtLT5cbiAgICAgICAgICA8IS0tIDwvZGl2PiAtLT5cbiAgICAgICAgICA8bGliLWZpZWxkLW1hcCBbZmlsdGVyZWRXaWRnZXRzXT1cImZpbHRlcmVkV2lkZ2V0c1wiIFthcHBWZXJzaW9uSWRdPVwiYXBwVmVyc2lvbklkXCIgW3NvdXJjZUZvcm1zXT1cInNvdXJjZUZvcm1zXCJcbiAgICAgICAgICAgIFtzb3VyY2VdPVwic291cmNlXCIgW2FjdGlvbkZvcm1JZF09XCJhY3Rpb25Gb3JtSWRcIiBbbWFwVHlwZV09XCJtYXBUeXBlXCIgKGZpZWxkbWFwKT1cImhhbmRsZWZpZWxkbWFwKCRldmVudClcIj5cbiAgICAgICAgICA8L2xpYi1maWVsZC1tYXA+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIlwiPlxuICAgICAgICAgICAgPGxhYmVsPlNlbmQgUVIgQ29kZXMgPHN1cD4qPC9zdXA+PC9sYWJlbD5cbiAgICAgICAgICAgIDxwPkVudGVyIGVtYWlscyB3aGVyZSB5b3Ugd2FudCB0byBzZW5kIHRoZSBnZW5lcmF0ZWQgUVIgQ29kZXMuIEEgemlwIGZpbGUgd2lsbCBiZSBlbWFpbGVkLjwvcD5cbiAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgZm9ybUNvbnRyb2xOYW1lPVwiZW1haWxcIlxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiRW50ZXIgY29tbWEgc2VwYXJhdGVkIGVtYWlsIGlkc1wiXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnaW52YWxpZC1pbnB1dCc6IGZvcm1Hcm91cC5jb250cm9scy5lbWFpbC50b3VjaGVkICYmIGZvcm1Hcm91cC5jb250cm9scy5lbWFpbC5zdGF0dXMgPT09ICdJTlZBTElEJyB9XCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cImVyci1tZXNzYWdlLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiICpuZ0lmPVwiZm9ybUdyb3VwLmNvbnRyb2xzLmVtYWlsLnRvdWNoZWQgJiYgZm9ybUdyb3VwLmNvbnRyb2xzLmVtYWlsLnN0YXR1cyA9PT0gJ0lOVkFMSUQnXCI+UGxlYXNlIGVudGVyIHZhbGlkIGVtYWlsIElEKHMpPC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDwhLS0gQWN0aW9uIEJ1dHRvbnMgLS0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJhY3Rpb24tYnRuLWNvbnRhaW5lclwiPlxuICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJjbG9zZSgpXCIgY2xhc3M9XCJzdHJva2UtYnRuXCI+Q2FuY2VsPC9idXR0b24+XG4gICAgICAgICAgPGJ1dHRvbiB0eXBlPVwic3VibWl0XCIgY2RrRm9jdXNJbml0aWFsIGNsYXNzPVwiZmlsbC1idG5cIj5HZW5lcmF0ZTwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZm9ybT5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPiJdfQ==