@lowcodeunit/applications-flow-common 1.33.201-lets-get-social-ish → 1.33.204-lets-get-social-ish

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.
Files changed (25) hide show
  1. package/esm2020/lib/controls/build-pipeline-form/build-pipeline-form.component.mjs +17 -5
  2. package/esm2020/lib/controls/devops-source-control-form/devops-source-control-form.component.mjs +14 -29
  3. package/esm2020/lib/controls/edit-application-form/edit-application-form.component.mjs +52 -14
  4. package/esm2020/lib/controls/processor-details-form/processor-details-form.component.mjs +111 -19
  5. package/esm2020/lib/dialogs/build-pipeline-dialog/build-pipeline-dialog.component.mjs +6 -3
  6. package/esm2020/lib/dialogs/edit-application-dialog/edit-application-dialog.component.mjs +1 -1
  7. package/esm2020/lib/dialogs/new-application-dialog/new-application-dialog.component.mjs +1 -1
  8. package/esm2020/lib/dialogs/processor-details-dialog/processor-details-dialog.component.mjs +5 -105
  9. package/esm2020/lib/dialogs/source-control-dialog/source-control-dialog.component.mjs +1 -1
  10. package/esm2020/lib/elements/project-info-card/project-info-card.component.mjs +3 -3
  11. package/esm2020/lib/services/eac.service.mjs +7 -6
  12. package/esm2020/lib/services/project.service.mjs +1 -1
  13. package/fesm2015/lowcodeunit-applications-flow-common.mjs +283 -247
  14. package/fesm2015/lowcodeunit-applications-flow-common.mjs.map +1 -1
  15. package/fesm2020/lowcodeunit-applications-flow-common.mjs +281 -252
  16. package/fesm2020/lowcodeunit-applications-flow-common.mjs.map +1 -1
  17. package/lib/controls/build-pipeline-form/build-pipeline-form.component.d.ts +5 -3
  18. package/lib/controls/devops-source-control-form/devops-source-control-form.component.d.ts +6 -3
  19. package/lib/controls/edit-application-form/edit-application-form.component.d.ts +9 -2
  20. package/lib/controls/processor-details-form/processor-details-form.component.d.ts +6 -1
  21. package/lib/dialogs/build-pipeline-dialog/build-pipeline-dialog.component.d.ts +1 -0
  22. package/lib/dialogs/processor-details-dialog/processor-details-dialog.component.d.ts +1 -1
  23. package/lib/services/eac.service.d.ts +6 -5
  24. package/lib/services/project.service.d.ts +2 -1
  25. package/package.json +1 -1
@@ -1,17 +1,21 @@
1
1
  import { Component, EventEmitter, Input, Output } from '@angular/core';
2
2
  import { Validators } from '@angular/forms';
3
+ import { Guid } from '@lcu/common';
3
4
  import * as i0 from "@angular/core";
4
5
  import * as i1 from "@angular/forms";
5
- import * as i2 from "@angular/material/card";
6
- import * as i3 from "@angular/material/form-field";
7
- import * as i4 from "@angular/material/button";
8
- import * as i5 from "@angular/material/icon";
9
- import * as i6 from "@angular/common";
10
- import * as i7 from "@angular/material/input";
11
- import * as i8 from "@angular/flex-layout/flex";
6
+ import * as i2 from "../../services/eac.service";
7
+ import * as i3 from "@angular/material/card";
8
+ import * as i4 from "@angular/material/form-field";
9
+ import * as i5 from "@angular/material/button";
10
+ import * as i6 from "@angular/material/icon";
11
+ import * as i7 from "@lowcodeunit/app-host-common";
12
+ import * as i8 from "@angular/common";
13
+ import * as i9 from "@angular/material/input";
14
+ import * as i10 from "@angular/flex-layout/flex";
12
15
  export class EditApplicationFormComponent {
13
- constructor(formBldr) {
16
+ constructor(formBldr, eacSvc) {
14
17
  this.formBldr = formBldr;
18
+ this.eacSvc = eacSvc;
15
19
  this.SaveFormEvent = new EventEmitter;
16
20
  this.HasSaveButton = true;
17
21
  }
@@ -24,12 +28,40 @@ export class EditApplicationFormComponent {
24
28
  get RouteFormControl() {
25
29
  return this.ApplicationFormGroup?.controls.route;
26
30
  }
31
+ get State() {
32
+ return this.eacSvc.State;
33
+ }
27
34
  ngOnInit() {
28
35
  this.setupApplicationForm();
29
36
  }
30
37
  SubmitApplicationControl() {
31
38
  console.log("application form: ", this.ApplicationFormGroup.value);
32
- this.SaveFormEvent.emit(this.ApplicationFormGroup.value);
39
+ this.SaveApplication();
40
+ }
41
+ SaveApplication() {
42
+ const app = this.EditingApplication;
43
+ app.Application = {
44
+ Name: this.NameFormControl.value,
45
+ Description: this.DescriptionFormControl.value,
46
+ PriorityShift: this.EditingApplication?.Application?.PriorityShift || 0,
47
+ };
48
+ app.LookupConfig.PathRegex = `${this.RouteFormControl.value}.*`;
49
+ switch (app.Processor.Type) {
50
+ case 'DFS':
51
+ //will need to replace with this.RouteFormControl.value if other form added
52
+ app.Processor.BaseHref = `${this.RouteFormControl.value}/`.replace('//', '/');
53
+ break;
54
+ }
55
+ if (!app.LookupConfig.PathRegex.startsWith('/')) {
56
+ app.LookupConfig.PathRegex = `/${app.LookupConfig.PathRegex}`;
57
+ }
58
+ const saveAppReq = {
59
+ ProjectLookup: this.ProjectLookup,
60
+ Application: app,
61
+ ApplicationLookup: this.ApplicationLookup || Guid.CreateRaw(),
62
+ };
63
+ let status = this.eacSvc.SaveApplicationAsCode(saveAppReq);
64
+ this.SaveFormEvent.emit(status);
33
65
  }
34
66
  //HELPERS
35
67
  setupApplicationForm() {
@@ -53,19 +85,25 @@ export class EditApplicationFormComponent {
53
85
  }
54
86
  }
55
87
  }
56
- EditApplicationFormComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: EditApplicationFormComponent, deps: [{ token: i1.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
57
- EditApplicationFormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: EditApplicationFormComponent, selector: "lcu-edit-application-form", inputs: { EditingApplication: ["editing-application", "EditingApplication"], HasSaveButton: ["has-save-button", "HasSaveButton"] }, outputs: { SaveFormEvent: "save-form-event" }, ngImport: i0, template: "<form class=\"form-card\" [formGroup]=\"ApplicationFormGroup\" (ngSubmit)=\"SubmitApplicationControl()\" >\n <mat-card class=\"spread flow-card\">\n <mat-card-header>\n <mat-card-title>\n <ng-container *ngIf=\"EditingApplication?.Application\">\n Edit Application:\n {{ EditingApplication.Application?.Name }}\n </ng-container>\n\n <ng-container *ngIf=\"!EditingApplication?.Application\">\n Create an Application\n </ng-container>\n </mat-card-title>\n </mat-card-header>\n\n <mat-card-content>\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Name\"\n formControlName=\"name\"\n required\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <textarea\n matInput\n placeholder=\"Description\"\n formControlName=\"description\"\n rows=\"3\"\n required\n ></textarea>\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Route\"\n formControlName=\"route\"\n required\n />\n </mat-form-field>\n </mat-card-content>\n <mat-card-actions fxLayoutAlign=\"center center\">\n\n <button \n *ngIf=\"HasSaveButton\"\n mat-raised-button \n type=\"submit\" \n fxFlex=\"100%\" \n color=\"primary\" \n [disabled]=\"!ApplicationFormGroup.valid || !ApplicationFormGroup.dirty\">\n <mat-icon>save</mat-icon>\n Save\n </button>\n \n </mat-card-actions>\n </mat-card>\n</form>\n", styles: [""], components: [{ type: i2.MatCard, selector: "mat-card", exportAs: ["matCard"] }, { type: i2.MatCardHeader, selector: "mat-card-header" }, { type: i3.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i4.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], directives: [{ type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i2.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.MatCardContent, selector: "mat-card-content, [mat-card-content], [matCardContent]" }, { type: i7.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i2.MatCardActions, selector: "mat-card-actions", inputs: ["align"], exportAs: ["matCardActions"] }, { type: i8.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { type: i8.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }] });
88
+ EditApplicationFormComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: EditApplicationFormComponent, deps: [{ token: i1.FormBuilder }, { token: i2.EaCService }], target: i0.ɵɵFactoryTarget.Component });
89
+ EditApplicationFormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: EditApplicationFormComponent, selector: "lcu-edit-application-form", inputs: { ApplicationLookup: ["application-lookup", "ApplicationLookup"], EditingApplication: ["editing-application", "EditingApplication"], HasSaveButton: ["has-save-button", "HasSaveButton"], ProjectLookup: ["project-lookup", "ProjectLookup"] }, outputs: { SaveFormEvent: "save-form-event" }, ngImport: i0, template: "<form class=\"form-card\" [formGroup]=\"ApplicationFormGroup\" (ngSubmit)=\"SubmitApplicationControl()\" >\n <mat-card class=\"spread flow-card\">\n <mat-card-header>\n <mat-card-title>\n <ng-container *ngIf=\"EditingApplication?.Application\">\n Edit Application:\n {{ EditingApplication.Application?.Name }}\n </ng-container>\n\n <ng-container *ngIf=\"!EditingApplication?.Application\">\n Create an Application\n </ng-container>\n </mat-card-title>\n </mat-card-header>\n\n <mat-card-content>\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Name\"\n formControlName=\"name\"\n required\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <textarea\n matInput\n placeholder=\"Description\"\n formControlName=\"description\"\n rows=\"3\"\n required\n ></textarea>\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Route\"\n formControlName=\"route\"\n required\n />\n </mat-form-field>\n </mat-card-content>\n <mat-card-actions fxLayoutAlign=\"center center\">\n\n <button \n *ngIf=\"HasSaveButton && !State?.Loading\"\n mat-raised-button \n type=\"submit\" \n fxFlex=\"100%\" \n color=\"primary\" \n [disabled]=\"!ApplicationFormGroup.valid || !ApplicationFormGroup.dirty\">\n <mat-icon>save</mat-icon>\n Save\n </button>\n <lcu-loader [loading]=\"State?.Loading\"></lcu-loader>\n \n </mat-card-actions>\n </mat-card>\n</form>\n", styles: [""], components: [{ type: i3.MatCard, selector: "mat-card", exportAs: ["matCard"] }, { type: i3.MatCardHeader, selector: "mat-card-header" }, { type: i4.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i5.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i7.LoaderComponent, selector: "lcu-loader", inputs: ["diameter", "hide-inner", "loading"] }], directives: [{ type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i3.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.MatCardContent, selector: "mat-card-content, [mat-card-content], [matCardContent]" }, { type: i9.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i3.MatCardActions, selector: "mat-card-actions", inputs: ["align"], exportAs: ["matCardActions"] }, { type: i10.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { type: i10.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }] });
58
90
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: EditApplicationFormComponent, decorators: [{
59
91
  type: Component,
60
- args: [{ selector: 'lcu-edit-application-form', template: "<form class=\"form-card\" [formGroup]=\"ApplicationFormGroup\" (ngSubmit)=\"SubmitApplicationControl()\" >\n <mat-card class=\"spread flow-card\">\n <mat-card-header>\n <mat-card-title>\n <ng-container *ngIf=\"EditingApplication?.Application\">\n Edit Application:\n {{ EditingApplication.Application?.Name }}\n </ng-container>\n\n <ng-container *ngIf=\"!EditingApplication?.Application\">\n Create an Application\n </ng-container>\n </mat-card-title>\n </mat-card-header>\n\n <mat-card-content>\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Name\"\n formControlName=\"name\"\n required\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <textarea\n matInput\n placeholder=\"Description\"\n formControlName=\"description\"\n rows=\"3\"\n required\n ></textarea>\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Route\"\n formControlName=\"route\"\n required\n />\n </mat-form-field>\n </mat-card-content>\n <mat-card-actions fxLayoutAlign=\"center center\">\n\n <button \n *ngIf=\"HasSaveButton\"\n mat-raised-button \n type=\"submit\" \n fxFlex=\"100%\" \n color=\"primary\" \n [disabled]=\"!ApplicationFormGroup.valid || !ApplicationFormGroup.dirty\">\n <mat-icon>save</mat-icon>\n Save\n </button>\n \n </mat-card-actions>\n </mat-card>\n</form>\n", styles: [""] }]
61
- }], ctorParameters: function () { return [{ type: i1.FormBuilder }]; }, propDecorators: { EditingApplication: [{
92
+ args: [{ selector: 'lcu-edit-application-form', template: "<form class=\"form-card\" [formGroup]=\"ApplicationFormGroup\" (ngSubmit)=\"SubmitApplicationControl()\" >\n <mat-card class=\"spread flow-card\">\n <mat-card-header>\n <mat-card-title>\n <ng-container *ngIf=\"EditingApplication?.Application\">\n Edit Application:\n {{ EditingApplication.Application?.Name }}\n </ng-container>\n\n <ng-container *ngIf=\"!EditingApplication?.Application\">\n Create an Application\n </ng-container>\n </mat-card-title>\n </mat-card-header>\n\n <mat-card-content>\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Name\"\n formControlName=\"name\"\n required\n />\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <textarea\n matInput\n placeholder=\"Description\"\n formControlName=\"description\"\n rows=\"3\"\n required\n ></textarea>\n </mat-form-field>\n\n <mat-form-field class=\"mat-full-width\">\n <input\n matInput\n placeholder=\"Route\"\n formControlName=\"route\"\n required\n />\n </mat-form-field>\n </mat-card-content>\n <mat-card-actions fxLayoutAlign=\"center center\">\n\n <button \n *ngIf=\"HasSaveButton && !State?.Loading\"\n mat-raised-button \n type=\"submit\" \n fxFlex=\"100%\" \n color=\"primary\" \n [disabled]=\"!ApplicationFormGroup.valid || !ApplicationFormGroup.dirty\">\n <mat-icon>save</mat-icon>\n Save\n </button>\n <lcu-loader [loading]=\"State?.Loading\"></lcu-loader>\n \n </mat-card-actions>\n </mat-card>\n</form>\n", styles: [""] }]
93
+ }], ctorParameters: function () { return [{ type: i1.FormBuilder }, { type: i2.EaCService }]; }, propDecorators: { ApplicationLookup: [{
94
+ type: Input,
95
+ args: ['application-lookup']
96
+ }], EditingApplication: [{
62
97
  type: Input,
63
98
  args: ['editing-application']
64
99
  }], HasSaveButton: [{
65
100
  type: Input,
66
101
  args: ['has-save-button']
102
+ }], ProjectLookup: [{
103
+ type: Input,
104
+ args: ['project-lookup']
67
105
  }], SaveFormEvent: [{
68
106
  type: Output,
69
107
  args: ['save-form-event']
70
108
  }] } });
71
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdC1hcHBsaWNhdGlvbi1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbW1vbi9zcmMvbGliL2NvbnRyb2xzL2VkaXQtYXBwbGljYXRpb24tZm9ybS9lZGl0LWFwcGxpY2F0aW9uLWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tbW9uL3NyYy9saWIvY29udHJvbHMvZWRpdC1hcHBsaWNhdGlvbi1mb3JtL2VkaXQtYXBwbGljYXRpb24tZm9ybS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9FLE9BQU8sRUFBMkMsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7Ozs7QUFRckYsTUFBTSxPQUFPLDRCQUE0QjtJQXlCdkMsWUFBc0IsUUFBcUI7UUFBckIsYUFBUSxHQUFSLFFBQVEsQ0FBYTtRQUN6QyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksWUFBWSxDQUFDO1FBQ3RDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO0lBQzNCLENBQUM7SUFqQkYsSUFBVyxzQkFBc0I7UUFDL0IsT0FBTyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsUUFBUSxDQUFDLFdBQVcsQ0FBQztJQUN6RCxDQUFDO0lBRUQsSUFBVyxlQUFlO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUM7SUFDbEQsQ0FBQztJQUVELElBQVcsZ0JBQWdCO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixFQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUM7SUFDbkQsQ0FBQztJQVNNLFFBQVE7UUFDYixJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBRU0sd0JBQXdCO1FBQzdCLE9BQU8sQ0FBQyxHQUFHLENBQUMsb0JBQW9CLEVBQUUsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ25FLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRUQsU0FBUztJQUNDLG9CQUFvQjtRQUM1QixJQUFJLElBQUksQ0FBQyxrQkFBa0IsSUFBSSxJQUFJLEVBQUU7WUFDbkMsSUFBSSxDQUFDLG9CQUFvQixHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDO2dCQUM5QyxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsV0FBVyxFQUFFLElBQUksRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDO2dCQUN0RSxXQUFXLEVBQUU7b0JBQ1gsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFdBQVcsRUFBRSxXQUFXO29CQUNoRCxVQUFVLENBQUMsUUFBUTtpQkFDcEI7Z0JBQ0QsS0FBSyxFQUFFO29CQUNMLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLEVBQUUsU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDO3dCQUMvRCxHQUFHO29CQUNMLFVBQVUsQ0FBQyxRQUFRO2lCQUNwQjtnQkFDRCxjQUFjO2dCQUNkLDREQUE0RDtnQkFDNUQseUJBQXlCO2dCQUN6QixLQUFLO2FBQ04sQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDOzt5SEEzRFUsNEJBQTRCOzZHQUE1Qiw0QkFBNEIsb1BDVHpDLGd4REE0REE7MkZEbkRhLDRCQUE0QjtrQkFMeEMsU0FBUzsrQkFDRSwyQkFBMkI7a0dBTzlCLGtCQUFrQjtzQkFEeEIsS0FBSzt1QkFBQyxxQkFBcUI7Z0JBSXJCLGFBQWE7c0JBRG5CLEtBQUs7dUJBQUMsaUJBQWlCO2dCQUlqQixhQUFhO3NCQURuQixNQUFNO3VCQUFDLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEVhQ0FwcGxpY2F0aW9uQXNDb2RlIH0gZnJvbSAnQHNlbWFudGljanMvY29tbW9uJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGN1LWVkaXQtYXBwbGljYXRpb24tZm9ybScsXG4gIHRlbXBsYXRlVXJsOiAnLi9lZGl0LWFwcGxpY2F0aW9uLWZvcm0uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9lZGl0LWFwcGxpY2F0aW9uLWZvcm0uY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBFZGl0QXBwbGljYXRpb25Gb3JtQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICBASW5wdXQoJ2VkaXRpbmctYXBwbGljYXRpb24nKSBcbiAgcHVibGljIEVkaXRpbmdBcHBsaWNhdGlvbjogRWFDQXBwbGljYXRpb25Bc0NvZGU7XG5cbiAgQElucHV0KCdoYXMtc2F2ZS1idXR0b24nKVxuICBwdWJsaWMgSGFzU2F2ZUJ1dHRvbjogYm9vbGVhbjtcblxuICBAT3V0cHV0KCdzYXZlLWZvcm0tZXZlbnQnKVxuICBwdWJsaWMgU2F2ZUZvcm1FdmVudDogRXZlbnRFbWl0dGVyPHt9PlxuXG4gIHB1YmxpYyBnZXQgRGVzY3JpcHRpb25Gb3JtQ29udHJvbCgpOiBBYnN0cmFjdENvbnRyb2wge1xuICAgIHJldHVybiB0aGlzLkFwcGxpY2F0aW9uRm9ybUdyb3VwPy5jb250cm9scy5kZXNjcmlwdGlvbjtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgTmFtZUZvcm1Db250cm9sKCk6IEFic3RyYWN0Q29udHJvbCB7XG4gICAgcmV0dXJuIHRoaXMuQXBwbGljYXRpb25Gb3JtR3JvdXA/LmNvbnRyb2xzLm5hbWU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IFJvdXRlRm9ybUNvbnRyb2woKTogQWJzdHJhY3RDb250cm9sIHtcbiAgICByZXR1cm4gdGhpcy5BcHBsaWNhdGlvbkZvcm1Hcm91cD8uY29udHJvbHMucm91dGU7XG4gIH1cblxuICBwdWJsaWMgQXBwbGljYXRpb25Gb3JtR3JvdXA6IEZvcm1Hcm91cDtcblxuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgZm9ybUJsZHI6IEZvcm1CdWlsZGVyKSB7XG4gICAgdGhpcy5TYXZlRm9ybUV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjtcbiAgICB0aGlzLkhhc1NhdmVCdXR0b24gPSB0cnVlO1xuICAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnNldHVwQXBwbGljYXRpb25Gb3JtKCk7XG4gIH1cblxuICBwdWJsaWMgU3VibWl0QXBwbGljYXRpb25Db250cm9sKCl7XG4gICAgY29uc29sZS5sb2coXCJhcHBsaWNhdGlvbiBmb3JtOiBcIiwgdGhpcy5BcHBsaWNhdGlvbkZvcm1Hcm91cC52YWx1ZSk7XG4gICAgdGhpcy5TYXZlRm9ybUV2ZW50LmVtaXQodGhpcy5BcHBsaWNhdGlvbkZvcm1Hcm91cC52YWx1ZSk7XG4gIH1cblxuICAvL0hFTFBFUlNcbiAgcHJvdGVjdGVkIHNldHVwQXBwbGljYXRpb25Gb3JtKCl7XG4gICAgaWYgKHRoaXMuRWRpdGluZ0FwcGxpY2F0aW9uICE9IG51bGwpIHtcbiAgICAgIHRoaXMuQXBwbGljYXRpb25Gb3JtR3JvdXAgPSB0aGlzLmZvcm1CbGRyLmdyb3VwKHtcbiAgICAgICAgbmFtZTogW3RoaXMuRWRpdGluZ0FwcGxpY2F0aW9uLkFwcGxpY2F0aW9uPy5OYW1lLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgZGVzY3JpcHRpb246IFtcbiAgICAgICAgICB0aGlzLkVkaXRpbmdBcHBsaWNhdGlvbi5BcHBsaWNhdGlvbj8uRGVzY3JpcHRpb24sXG4gICAgICAgICAgVmFsaWRhdG9ycy5yZXF1aXJlZCxcbiAgICAgICAgXSxcbiAgICAgICAgcm91dGU6IFtcbiAgICAgICAgICB0aGlzLkVkaXRpbmdBcHBsaWNhdGlvbi5Mb29rdXBDb25maWc/LlBhdGhSZWdleC5yZXBsYWNlKCcuKicsICcnKSB8fFxuICAgICAgICAgICAgJy8nLFxuICAgICAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWQsXG4gICAgICAgIF0sXG4gICAgICAgIC8vIHByaW9yaXR5OiBbXG4gICAgICAgIC8vICAgdGhpcy5FZGl0aW5nQXBwbGljYXRpb24uQXBwbGljYXRpb24/LlByaW9yaXR5IHx8IDEwMDAwLFxuICAgICAgICAvLyAgIFZhbGlkYXRvcnMucmVxdWlyZWQsXG4gICAgICAgIC8vIF0sXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBcblxufVxuIiwiPGZvcm0gY2xhc3M9XCJmb3JtLWNhcmRcIiBbZm9ybUdyb3VwXT1cIkFwcGxpY2F0aW9uRm9ybUdyb3VwXCIgKG5nU3VibWl0KT1cIlN1Ym1pdEFwcGxpY2F0aW9uQ29udHJvbCgpXCIgPlxuICAgIDxtYXQtY2FyZCBjbGFzcz1cInNwcmVhZCBmbG93LWNhcmRcIj5cbiAgICAgIDxtYXQtY2FyZC1oZWFkZXI+XG4gICAgICAgIDxtYXQtY2FyZC10aXRsZT5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiRWRpdGluZ0FwcGxpY2F0aW9uPy5BcHBsaWNhdGlvblwiPlxuICAgICAgICAgICAgRWRpdCBBcHBsaWNhdGlvbjpcbiAgICAgICAgICAgIHt7IEVkaXRpbmdBcHBsaWNhdGlvbi5BcHBsaWNhdGlvbj8uTmFtZSB9fVxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFFZGl0aW5nQXBwbGljYXRpb24/LkFwcGxpY2F0aW9uXCI+XG4gICAgICAgICAgICBDcmVhdGUgYW4gQXBwbGljYXRpb25cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9tYXQtY2FyZC10aXRsZT5cbiAgICAgIDwvbWF0LWNhcmQtaGVhZGVyPlxuXG4gICAgICA8bWF0LWNhcmQtY29udGVudD5cbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwibWF0LWZ1bGwtd2lkdGhcIj5cbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIG1hdElucHV0XG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cIk5hbWVcIlxuICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibmFtZVwiXG4gICAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAgIC8+XG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG5cbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwibWF0LWZ1bGwtd2lkdGhcIj5cbiAgICAgICAgICA8dGV4dGFyZWFcbiAgICAgICAgICAgIG1hdElucHV0XG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cIkRlc2NyaXB0aW9uXCJcbiAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImRlc2NyaXB0aW9uXCJcbiAgICAgICAgICAgIHJvd3M9XCIzXCJcbiAgICAgICAgICAgIHJlcXVpcmVkXG4gICAgICAgICAgPjwvdGV4dGFyZWE+XG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG5cbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwibWF0LWZ1bGwtd2lkdGhcIj5cbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIG1hdElucHV0XG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlJvdXRlXCJcbiAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInJvdXRlXCJcbiAgICAgICAgICAgIHJlcXVpcmVkXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgIDwvbWF0LWNhcmQtY29udGVudD5cbiAgICAgIDxtYXQtY2FyZC1hY3Rpb25zIGZ4TGF5b3V0QWxpZ249XCJjZW50ZXIgY2VudGVyXCI+XG5cbiAgICAgICAgPGJ1dHRvbiBcbiAgICAgICAgKm5nSWY9XCJIYXNTYXZlQnV0dG9uXCJcbiAgICAgICAgICBtYXQtcmFpc2VkLWJ1dHRvbiBcbiAgICAgICAgICB0eXBlPVwic3VibWl0XCIgXG4gICAgICAgICAgZnhGbGV4PVwiMTAwJVwiIFxuICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiIFxuICAgICAgICAgIFtkaXNhYmxlZF09XCIhQXBwbGljYXRpb25Gb3JtR3JvdXAudmFsaWQgfHwgIUFwcGxpY2F0aW9uRm9ybUdyb3VwLmRpcnR5XCI+XG4gICAgICAgICAgPG1hdC1pY29uPnNhdmU8L21hdC1pY29uPlxuICAgICAgICAgIFNhdmVcbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIFxuICAgIDwvbWF0LWNhcmQtYWN0aW9ucz5cbiAgICA8L21hdC1jYXJkPlxuPC9mb3JtPlxuIl19
109
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdC1hcHBsaWNhdGlvbi1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbW1vbi9zcmMvbGliL2NvbnRyb2xzL2VkaXQtYXBwbGljYXRpb24tZm9ybS9lZGl0LWFwcGxpY2F0aW9uLWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tbW9uL3NyYy9saWIvY29udHJvbHMvZWRpdC1hcHBsaWNhdGlvbi1mb3JtL2VkaXQtYXBwbGljYXRpb24tZm9ybS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9FLE9BQU8sRUFBMkMsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckYsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGFBQWEsQ0FBQzs7Ozs7Ozs7Ozs7O0FBVW5DLE1BQU0sT0FBTyw0QkFBNEI7SUFtQ3ZDLFlBQXNCLFFBQXFCLEVBQy9CLE1BQWtCO1FBRFIsYUFBUSxHQUFSLFFBQVEsQ0FBYTtRQUMvQixXQUFNLEdBQU4sTUFBTSxDQUFZO1FBQzVCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxZQUFZLENBQUM7UUFDdEMsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7SUFDM0IsQ0FBQztJQXRCRixJQUFXLHNCQUFzQjtRQUMvQixPQUFPLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxRQUFRLENBQUMsV0FBVyxDQUFDO0lBQ3pELENBQUM7SUFFRCxJQUFXLGVBQWU7UUFDeEIsT0FBTyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQztJQUNsRCxDQUFDO0lBRUQsSUFBVyxnQkFBZ0I7UUFDekIsT0FBTyxJQUFJLENBQUMsb0JBQW9CLEVBQUUs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K0JBQ0UsMkJBQTJCOzJIQU85QixpQkFBaUI7c0JBRHZCLEtBQUs7dUJBQUMsb0JBQW9CO2dCQUlwQixrQkFBa0I7c0JBRHhCLEtBQUs7dUJBQUMscUJBQXFCO2dCQUlyQixhQUFhO3NCQURuQixLQUFLO3VCQUFDLGlCQUFpQjtnQkFJakIsYUFBYTtzQkFEbkIsS0FBSzt1QkFBQyxnQkFBZ0I7Z0JBSWhCLGFBQWE7c0JBRG5CLE1BQU07dUJBQUMsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBGb3JtQnVpbGRlciwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgR3VpZCB9IGZyb20gJ0BsY3UvY29tbW9uJztcbmltcG9ydCB7IEVhQ0FwcGxpY2F0aW9uQXNDb2RlIH0gZnJvbSAnQHNlbWFudGljanMvY29tbW9uJztcbmltcG9ydCB7IEVhQ1NlcnZpY2UsIFNhdmVBcHBsaWNhdGlvbkFzQ29kZUV2ZW50UmVxdWVzdCB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2VhYy5zZXJ2aWNlJztcbmltcG9ydCB7IEFwcGxpY2F0aW9uc0Zsb3dTdGF0ZSB9IGZyb20gJy4uLy4uL3N0YXRlL2FwcGxpY2F0aW9ucy1mbG93LnN0YXRlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGN1LWVkaXQtYXBwbGljYXRpb24tZm9ybScsXG4gIHRlbXBsYXRlVXJsOiAnLi9lZGl0LWFwcGxpY2F0aW9uLWZvcm0uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9lZGl0LWFwcGxpY2F0aW9uLWZvcm0uY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBFZGl0QXBwbGljYXRpb25Gb3JtQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICBASW5wdXQoJ2FwcGxpY2F0aW9uLWxvb2t1cCcpXG4gIHB1YmxpYyBBcHBsaWNhdGlvbkxvb2t1cDogc3RyaW5nO1xuXG4gIEBJbnB1dCgnZWRpdGluZy1hcHBsaWNhdGlvbicpIFxuICBwdWJsaWMgRWRpdGluZ0FwcGxpY2F0aW9uOiBFYUNBcHBsaWNhdGlvbkFzQ29kZTtcblxuICBASW5wdXQoJ2hhcy1zYXZlLWJ1dHRvbicpXG4gIHB1YmxpYyBIYXNTYXZlQnV0dG9uOiBib29sZWFuO1xuXG4gIEBJbnB1dCgncHJvamVjdC1sb29rdXAnKVxuICBwdWJsaWMgUHJvamVjdExvb2t1cDogc3RyaW5nO1xuXG4gIEBPdXRwdXQoJ3NhdmUtZm9ybS1ldmVudCcpXG4gIHB1YmxpYyBTYXZlRm9ybUV2ZW50OiBFdmVudEVtaXR0ZXI8e30+XG5cbiAgcHVibGljIGdldCBEZXNjcmlwdGlvbkZvcm1Db250cm9sKCk6IEFic3RyYWN0Q29udHJvbCB7XG4gICAgcmV0dXJuIHRoaXMuQXBwbGljYXRpb25Gb3JtR3JvdXA/LmNvbnRyb2xzLmRlc2NyaXB0aW9uO1xuICB9XG5cbiAgcHVibGljIGdldCBOYW1lRm9ybUNvbnRyb2woKTogQWJzdHJhY3RDb250cm9sIHtcbiAgICByZXR1cm4gdGhpcy5BcHBsaWNhdGlvbkZvcm1Hcm91cD8uY29udHJvbHMubmFtZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgUm91dGVGb3JtQ29udHJvbCgpOiBBYnN0cmFjdENvbnRyb2wge1xuICAgIHJldHVybiB0aGlzLkFwcGxpY2F0aW9uRm9ybUdyb3VwPy5jb250cm9scy5yb3V0ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgU3RhdGUoKTogQXBwbGljYXRpb25zRmxvd1N0YXRle1xuICAgIHJldHVybiB0aGlzLmVhY1N2Yy5TdGF0ZTtcbiAgfVxuXG4gIHB1YmxpYyBBcHBsaWNhdGlvbkZvcm1Hcm91cDogRm9ybUdyb3VwO1xuXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBmb3JtQmxkcjogRm9ybUJ1aWxkZXIsXG4gICAgcHJvdGVjdGVkIGVhY1N2YzogRWFDU2VydmljZSkge1xuICAgIHRoaXMuU2F2ZUZvcm1FdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI7XG4gICAgdGhpcy5IYXNTYXZlQnV0dG9uID0gdHJ1ZTtcbiAgIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zZXR1cEFwcGxpY2F0aW9uRm9ybSgpO1xuICB9XG5cbiAgcHVibGljIFN1Ym1pdEFwcGxpY2F0aW9uQ29udHJvbCgpe1xuICAgIGNvbnNvbGUubG9nKFwiYXBwbGljYXRpb24gZm9ybTogXCIsIHRoaXMuQXBwbGljYXRpb25Gb3JtR3JvdXAudmFsdWUpO1xuICAgIHRoaXMuU2F2ZUFwcGxpY2F0aW9uKCk7XG4gIH1cblxuICBwdWJsaWMgU2F2ZUFwcGxpY2F0aW9uKCk6IHZvaWQge1xuICAgIGNvbnN0IGFwcDogRWFDQXBwbGljYXRpb25Bc0NvZGUgPSB0aGlzLkVkaXRpbmdBcHBsaWNhdGlvbjtcbiAgICBhcHAuQXBwbGljYXRpb24gPSB7XG4gICAgICBOYW1lOiB0aGlzLk5hbWVGb3JtQ29udHJvbC52YWx1ZSxcbiAgICAgIERlc2NyaXB0aW9uOiB0aGlzLkRlc2NyaXB0aW9uRm9ybUNvbnRyb2wudmFsdWUsXG4gICAgICBQcmlvcml0eVNoaWZ0OiB0aGlzLkVkaXRpbmdBcHBsaWNhdGlvbj8uQXBwbGljYXRpb24/LlByaW9yaXR5U2hpZnQgfHwgMCxcbiAgICB9O1xuXG4gICAgYXBwLkxvb2t1cENvbmZpZy5QYXRoUmVnZXggPSBgJHt0aGlzLlJvdXRlRm9ybUNvbnRyb2wudmFsdWV9LipgO1xuXG4gICAgc3dpdGNoIChhcHAuUHJvY2Vzc29yLlR5cGUpIHtcbiAgICAgIGNhc2UgJ0RGUyc6XG4gICAgICAgIC8vd2lsbCBuZWVkIHRvIHJlcGxhY2Ugd2l0aCB0aGlzLlJvdXRlRm9ybUNvbnRyb2wudmFsdWUgaWYgb3RoZXIgZm9ybSBhZGRlZFxuICAgICAgICBhcHAuUHJvY2Vzc29yLkJhc2VIcmVmID0gYCR7dGhpcy5Sb3V0ZUZvcm1Db250cm9sLnZhbHVlfS9gLnJlcGxhY2UoJy8vJywgJy8nKTtcblxuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICBpZiAoIWFwcC5Mb29rdXBDb25maWcuUGF0aFJlZ2V4LnN0YXJ0c1dpdGgoJy8nKSkge1xuICAgICAgYXBwLkxvb2t1cENvbmZpZy5QYXRoUmVnZXggPSBgLyR7YXBwLkxvb2t1cENvbmZpZy5QYXRoUmVnZXh9YDtcbiAgICB9XG5cbiAgICBjb25zdCBzYXZlQXBwUmVxOiBTYXZlQXBwbGljYXRpb25Bc0NvZGVFdmVudFJlcXVlc3QgPSB7XG4gICAgICBQcm9qZWN0TG9va3VwOiB0aGlzLlByb2plY3RMb29rdXAsXG4gICAgICBBcHBsaWNhdGlvbjogYXBwLFxuICAgICAgQXBwbGljYXRpb25Mb29rdXA6IHRoaXMuQXBwbGljYXRpb25Mb29rdXAgfHwgR3VpZC5DcmVhdGVSYXcoKSxcbiAgICB9O1xuXG4gICAgbGV0IHN0YXR1cyA9IHRoaXMuZWFjU3ZjLlNhdmVBcHBsaWNhdGlvbkFzQ29kZShzYXZlQXBwUmVxKTtcbiAgICB0aGlzLlNhdmVGb3JtRXZlbnQuZW1pdChzdGF0dXMpO1xuICB9XG5cbiAgLy9IRUxQRVJTXG4gIHByb3RlY3RlZCBzZXR1cEFwcGxpY2F0aW9uRm9ybSgpe1xuICAgIGlmICh0aGlzLkVkaXRpbmdBcHBsaWNhdGlvbiAhPSBudWxsKSB7XG4gICAgICB0aGlzLkFwcGxpY2F0aW9uRm9ybUdyb3VwID0gdGhpcy5mb3JtQmxkci5ncm91cCh7XG4gICAgICAgIG5hbWU6IFt0aGlzLkVkaXRpbmdBcHBsaWNhdGlvbi5BcHBsaWNhdGlvbj8uTmFtZSwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgIGRlc2NyaXB0aW9uOiBbXG4gICAgICAgICAgdGhpcy5FZGl0aW5nQXBwbGljYXRpb24uQXBwbGljYXRpb24/LkRlc2NyaXB0aW9uLFxuICAgICAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWQsXG4gICAgICAgIF0sXG4gICAgICAgIHJvdXRlOiBbXG4gICAgICAgICAgdGhpcy5FZGl0aW5nQXBwbGljYXRpb24uTG9va3VwQ29uZmlnPy5QYXRoUmVnZXgucmVwbGFjZSgnLionLCAnJykgfHxcbiAgICAgICAgICAgICcvJyxcbiAgICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLFxuICAgICAgICBdLFxuICAgICAgICAvLyBwcmlvcml0eTogW1xuICAgICAgICAvLyAgIHRoaXMuRWRpdGluZ0FwcGxpY2F0aW9uLkFwcGxpY2F0aW9uPy5Qcmlvcml0eSB8fCAxMDAwMCxcbiAgICAgICAgLy8gICBWYWxpZGF0b3JzLnJlcXVpcmVkLFxuICAgICAgICAvLyBdLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgXG5cbn1cbiIsIjxmb3JtIGNsYXNzPVwiZm9ybS1jYXJkXCIgW2Zvcm1Hcm91cF09XCJBcHBsaWNhdGlvbkZvcm1Hcm91cFwiIChuZ1N1Ym1pdCk9XCJTdWJtaXRBcHBsaWNhdGlvbkNvbnRyb2woKVwiID5cbiAgICA8bWF0LWNhcmQgY2xhc3M9XCJzcHJlYWQgZmxvdy1jYXJkXCI+XG4gICAgICA8bWF0LWNhcmQtaGVhZGVyPlxuICAgICAgICA8bWF0LWNhcmQtdGl0bGU+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIkVkaXRpbmdBcHBsaWNhdGlvbj8uQXBwbGljYXRpb25cIj5cbiAgICAgICAgICAgIEVkaXQgQXBwbGljYXRpb246XG4gICAgICAgICAgICB7eyBFZGl0aW5nQXBwbGljYXRpb24uQXBwbGljYXRpb24/Lk5hbWUgfX1cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhRWRpdGluZ0FwcGxpY2F0aW9uPy5BcHBsaWNhdGlvblwiPlxuICAgICAgICAgICAgQ3JlYXRlIGFuIEFwcGxpY2F0aW9uXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbWF0LWNhcmQtdGl0bGU+XG4gICAgICA8L21hdC1jYXJkLWhlYWRlcj5cblxuICAgICAgPG1hdC1jYXJkLWNvbnRlbnQ+XG4gICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cIm1hdC1mdWxsLXdpZHRoXCI+XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICBtYXRJbnB1dFxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJOYW1lXCJcbiAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cIm5hbWVcIlxuICAgICAgICAgICAgcmVxdWlyZWRcbiAgICAgICAgICAvPlxuICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuXG4gICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cIm1hdC1mdWxsLXdpZHRoXCI+XG4gICAgICAgICAgPHRleHRhcmVhXG4gICAgICAgICAgICBtYXRJbnB1dFxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJEZXNjcmlwdGlvblwiXG4gICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJkZXNjcmlwdGlvblwiXG4gICAgICAgICAgICByb3dzPVwiM1wiXG4gICAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAgID48L3RleHRhcmVhPlxuICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuXG4gICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cIm1hdC1mdWxsLXdpZHRoXCI+XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICBtYXRJbnB1dFxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJSb3V0ZVwiXG4gICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJyb3V0ZVwiXG4gICAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAgIC8+XG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICA8L21hdC1jYXJkLWNvbnRlbnQ+XG4gICAgICA8bWF0LWNhcmQtYWN0aW9ucyBmeExheW91dEFsaWduPVwiY2VudGVyIGNlbnRlclwiPlxuXG4gICAgICAgIDxidXR0b24gXG4gICAgICAgICpuZ0lmPVwiSGFzU2F2ZUJ1dHRvbiAmJiAhU3RhdGU/LkxvYWRpbmdcIlxuICAgICAgICAgIG1hdC1yYWlzZWQtYnV0dG9uIFxuICAgICAgICAgIHR5cGU9XCJzdWJtaXRcIiBcbiAgICAgICAgICBmeEZsZXg9XCIxMDAlXCIgXG4gICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCIgXG4gICAgICAgICAgW2Rpc2FibGVkXT1cIiFBcHBsaWNhdGlvbkZvcm1Hcm91cC52YWxpZCB8fCAhQXBwbGljYXRpb25Gb3JtR3JvdXAuZGlydHlcIj5cbiAgICAgICAgICA8bWF0LWljb24+c2F2ZTwvbWF0LWljb24+XG4gICAgICAgICAgU2F2ZVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGxjdS1sb2FkZXIgW2xvYWRpbmddPVwiU3RhdGU/LkxvYWRpbmdcIj48L2xjdS1sb2FkZXI+XG4gICAgICAgIFxuICAgIDwvbWF0LWNhcmQtYWN0aW9ucz5cbiAgICA8L21hdC1jYXJkPlxuPC9mb3JtPlxuIl19