@smartbit4all/ng-client 3.2.4 → 3.2.5

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 (17) hide show
  1. package/esm2020/lib/smart-filter-editor/smart-filter-editor-content/components/smart-filter-expression-item/smart-filter-expression-item.component.mjs +9 -9
  2. package/esm2020/lib/smart-filter-editor/smart-filter-editor-content/components/smart-filter-expression-items/smart-filter-expression-items.component.mjs +12 -14
  3. package/esm2020/lib/smart-filter-editor/smart-filter-editor-content/smart-filter-editor-content.component.mjs +43 -53
  4. package/esm2020/lib/smart-filter-editor/smart-filter-params/components/smart-filter-param/smart-filter-param.component.mjs +7 -11
  5. package/esm2020/lib/smart-filter-editor/smart-filter-params/smart-filter-params.component.mjs +5 -57
  6. package/fesm2015/smartbit4all-ng-client.mjs +918 -982
  7. package/fesm2015/smartbit4all-ng-client.mjs.map +1 -1
  8. package/fesm2020/smartbit4all-ng-client.mjs +705 -768
  9. package/fesm2020/smartbit4all-ng-client.mjs.map +1 -1
  10. package/lib/smart-filter-editor/smart-filter-editor-content/components/smart-filter-expression-item/smart-filter-expression-item.component.d.ts +4 -4
  11. package/lib/smart-filter-editor/smart-filter-editor-content/components/smart-filter-expression-items/smart-filter-expression-items.component.d.ts +6 -7
  12. package/lib/smart-filter-editor/smart-filter-editor-content/smart-filter-editor-content.component.d.ts +2 -7
  13. package/lib/smart-filter-editor/smart-filter-params/components/smart-filter-param/smart-filter-param.component.d.ts +2 -6
  14. package/lib/smart-filter-editor/smart-filter-params/smart-filter-params.component.d.ts +2 -3
  15. package/package.json +1 -1
  16. package/smartbit4all-ng-client-3.2.5.tgz +0 -0
  17. package/smartbit4all-ng-client-3.2.4.tgz +0 -0
@@ -2,13 +2,9 @@ import { Component, Input, ViewChild, ViewContainerRef } from '@angular/core';
2
2
  import { Subject, takeUntil } from 'rxjs';
3
3
  import { SmartFilterParamComponent } from './components/smart-filter-param/smart-filter-param.component';
4
4
  import * as i0 from "@angular/core";
5
- import * as i1 from "../../smart-icon/smart-icon/smart-icon.component";
6
- import * as i2 from "@angular/material/button";
7
- import * as i3 from "../../smart-expandable-section/expandable-section.component";
8
- import * as i4 from "@angular/common";
5
+ import * as i1 from "../../smart-expandable-section/expandable-section.component";
6
+ import * as i2 from "@angular/common";
9
7
  export class SmartFilterParamsComponent {
10
- // filterComponentRef?: ComponentRef<SmartFilterComponent>;
11
- // filter?: SmartFilter;
12
8
  constructor() {
13
9
  this._destroy$ = new Subject();
14
10
  this.expandableSections = [];
@@ -25,7 +21,6 @@ export class SmartFilterParamsComponent {
25
21
  }
26
22
  setUp(model) {
27
23
  this.filterBuilder = model.model;
28
- // this.constructFilter();
29
24
  this.constructExpandableSections();
30
25
  }
31
26
  constructExpandableSections() {
@@ -44,64 +39,17 @@ export class SmartFilterParamsComponent {
44
39
  };
45
40
  });
46
41
  }
47
- // if (this.service.model?.externalFilterGroup) {
48
- // this.expandableSectionsFromExcel = {
49
- // title: this.service.model.externalFilterGroup.label!,
50
- // cssClass: 'filterExpressionBuilderGroup',
51
- // customComponent: SmartFilterParamComponent,
52
- // data: {
53
- // group: this.service.model.externalFilterGroup.fields,
54
- // },
55
- // inputName: 'data',
56
- // isExpanded: true,
57
- // };
58
- // }
59
- }
60
- // constructFilter(): void {
61
- // if (this.filter && this.filterComponentRef) {
62
- // return;
63
- // }
64
- // // this.filter = {
65
- // // data: this.service.model?.groupFilter?.filters! as FilterExpressionField[],
66
- // // type: SmartFilterType.Simple,
67
- // // showPossibleActions: false,
68
- // // };
69
- // this.filterVcRef?.clear();
70
- // this.filterComponentRef = this.cfService.createComponent(
71
- // this.filterVcRef!,
72
- // SmartFilterComponent,
73
- // new Map<string, any>([['filter', this.filter]])
74
- // );
75
- // this.filterComponentRef.instance?.service.change
76
- // .pipe(takeUntil(this._destroy$))
77
- // .subscribe(() => {
78
- // let uiAction: UiAction = this.service.model?.filterGroupsAction!;
79
- // uiAction.params = {
80
- // filter: {
81
- // filters: this.filterComponentRef?.instance.service.filter?.data,
82
- // },
83
- // };
84
- // // let uiActionModel: UiActionModel = {
85
- // // serviceToUse: this.service,
86
- // // uiAction,
87
- // // };
88
- // // this.uiActionService.uiActionModel = uiActionModel;
89
- // // this.uiActionService.execute(uiAction);
90
- // });
91
- // }
92
- addDataSource() {
93
- // this.service.addDataSource();
94
42
  }
95
43
  }
96
44
  SmartFilterParamsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: SmartFilterParamsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
97
- SmartFilterParamsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: SmartFilterParamsComponent, selector: "smart-filter-group-params", inputs: { service: "service" }, viewQueries: [{ propertyName: "filterVcRef", first: true, predicate: ["smartFilter"], descendants: true, read: ViewContainerRef }], ngImport: i0, template: "<div\r\n class=\"targetGroupFilterParamsContainer\"\r\n *ngIf=\"service.model?.showGroups && !service.model?.readOnly\"\r\n>\r\n <ng-template #smartFilter></ng-template>\r\n <div class=\"dataSource-options\" *ngIf=\"service.model?.extarnalDatabase\">\r\n <div class=\"dataSource-btns\">\r\n <div class=\"dataSource-btn\">K\u00FCls\u0151 adatb\u00E1zis</div>\r\n <div class=\"dataSource-btn dataSource-btn-disabled\">Bels\u0151 adatb\u00E1zis</div>\r\n </div>\r\n <div class=\"dataSource-add-database\">\r\n <div class=\"dataSource-add-database-title\">\r\n <smart-icon icon=\"Ic24_View_Table\" color=\"sucess\"></smart-icon>\r\n Adatb\u00E1zis\r\n </div>\r\n <button title=\"add\" mat-icon-button (click)=\"addDataSource()\">\r\n <smart-icon icon=\"Ic24_Plus_Circle\" color=\"success\"></smart-icon>\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"sections\">\r\n <smart-expandable-section\r\n class=\"excel\"\r\n *ngIf=\"expandableSectionsFromExcel\"\r\n [data]=\"expandableSectionsFromExcel!\"\r\n ></smart-expandable-section>\r\n <smart-expandable-section\r\n [data]=\"data\"\r\n *ngFor=\"let data of expandableSections\"\r\n ></smart-expandable-section>\r\n </div>\r\n</div>\r\n", styles: [".targetGroupFilterParamsContainer{padding:1.5rem;display:flex;flex-direction:column;gap:2.5rem;height:calc(100% - 3rem);overflow:auto;border-right:2px solid var(--primary-dark-color)}.sections{display:flex;flex-direction:column;gap:.25rem}.targetGroupFilterParamsContainer .excel::ng-deep .mat-expansion-panel-body{background-color:var(--success-lighter-color)}.targetGroupFilterParamsContainer .excel::ng-deep .mat-expansion-panel-header.mat-expanded{background-color:var(--success-color)!important}.targetGroupFilterParamsContainer::ng-deep .mat-expansion-panel-body{padding:0 0 0 1rem!important;background-color:var(--light-blue-color)}.targetGroupFilterParamsContainer::ng-deep .mat-expansion-panel-header{background-color:var(--primary-light-color);padding:.75rem;height:auto}.targetGroupFilterParamsContainer::ng-deep .mat-expansion-panel-header-title{color:var(--primary-lighter-color);font-weight:600}.targetGroupFilterParamsContainer::ng-deep .mat-expansion-panel-header.mat-expanded{background-color:var(--accent-color)!important;padding:.75rem;height:auto}.targetGroupFilterParamsContainer::ng-deep .mat-expansion-panel-header.mat-expanded .mat-expansion-panel-header-title{color:#fff}.dataSource-btns{display:flex;flex-direction:row;justify-content:space-around;background-color:var(--success-lighter-color);height:44px;padding:8px 12px;align-items:center;border:1.5px solid var(--success-color);border-left:6px solid var(--success-color);border-radius:4px}.dataSource-btn{display:flex;padding:1rem 2rem;justify-content:center;align-items:center;background-color:var(--success-color);border-radius:4px;cursor:pointer}.dataSource-btn-disabled{background-color:var(--success-lighter-color);cursor:auto}.dataSource-add-database{display:flex;flex-direction:row;justify-content:space-between;background-color:var(--success-lighter-color);padding:8px;border-radius:4px}.dataSource-add-database-title{display:flex;flex-direction:row;gap:1rem;align-items:center}.dataSource-options{display:flex;flex-direction:column;gap:1rem}\n"], components: [{ type: i1.SmartIconComponent, selector: "smart-icon", inputs: ["icon", "color"] }, { type: i2.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: i3.ExpandableSectionComponent, selector: "smart-expandable-section", inputs: ["data", "index"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
45
+ SmartFilterParamsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: SmartFilterParamsComponent, selector: "smart-filter-group-params", inputs: { service: "service" }, viewQueries: [{ propertyName: "filterVcRef", first: true, predicate: ["smartFilter"], descendants: true, read: ViewContainerRef }], ngImport: i0, template: "<div\r\n class=\"targetGroupFilterParamsContainer\"\r\n *ngIf=\"service.model?.showGroups && !service.model?.readOnly\"\r\n>\r\n <!-- <ng-template #smartFilter></ng-template> -->\r\n <!-- <div class=\"dataSource-options\" *ngIf=\"service.model?.extarnalDatabase\">\r\n <div class=\"dataSource-btns\">\r\n <div class=\"dataSource-btn\">K\u00FCls\u0151 adatb\u00E1zis</div>\r\n <div class=\"dataSource-btn dataSource-btn-disabled\">Bels\u0151 adatb\u00E1zis</div>\r\n </div>\r\n <div class=\"dataSource-add-database\">\r\n <div class=\"dataSource-add-database-title\">\r\n <smart-icon icon=\"Ic24_View_Table\" color=\"sucess\"></smart-icon>\r\n Adatb\u00E1zis\r\n </div>\r\n <button title=\"add\" mat-icon-button (click)=\"addDataSource()\">\r\n <smart-icon icon=\"Ic24_Plus_Circle\" color=\"success\"></smart-icon>\r\n </button>\r\n </div>\r\n </div> -->\r\n <div class=\"sections\">\r\n <smart-expandable-section\r\n class=\"excel\"\r\n *ngIf=\"expandableSectionsFromExcel\"\r\n [data]=\"expandableSectionsFromExcel!\"\r\n ></smart-expandable-section>\r\n <smart-expandable-section\r\n [data]=\"data\"\r\n *ngFor=\"let data of expandableSections\"\r\n ></smart-expandable-section>\r\n </div>\r\n</div>\r\n", styles: [".targetGroupFilterParamsContainer{padding:1.5rem;display:flex;flex-direction:column;gap:2.5rem;height:calc(100% - 3rem);overflow:auto;border-right:2px solid var(--primary-dark-color)}.sections{display:flex;flex-direction:column;gap:.25rem}.targetGroupFilterParamsContainer .excel::ng-deep .mat-expansion-panel-body{background-color:var(--success-lighter-color)}.targetGroupFilterParamsContainer .excel::ng-deep .mat-expansion-panel-header.mat-expanded{background-color:var(--success-color)!important}.targetGroupFilterParamsContainer::ng-deep .mat-expansion-panel-body{padding:0 0 0 1rem!important;background-color:var(--light-blue-color)}.targetGroupFilterParamsContainer::ng-deep .mat-expansion-panel-header{background-color:var(--primary-light-color);padding:.75rem;height:auto}.targetGroupFilterParamsContainer::ng-deep .mat-expansion-panel-header-title{color:var(--primary-lighter-color);font-weight:600}.targetGroupFilterParamsContainer::ng-deep .mat-expansion-panel-header.mat-expanded{background-color:var(--accent-color)!important;padding:.75rem;height:auto}.targetGroupFilterParamsContainer::ng-deep .mat-expansion-panel-header.mat-expanded .mat-expansion-panel-header-title{color:#fff}.dataSource-btns{display:flex;flex-direction:row;justify-content:space-around;background-color:var(--success-lighter-color);height:44px;padding:8px 12px;align-items:center;border:1.5px solid var(--success-color);border-left:6px solid var(--success-color);border-radius:4px}.dataSource-btn{display:flex;padding:1rem 2rem;justify-content:center;align-items:center;background-color:var(--success-color);border-radius:4px;cursor:pointer}.dataSource-btn-disabled{background-color:var(--success-lighter-color);cursor:auto}.dataSource-add-database{display:flex;flex-direction:row;justify-content:space-between;background-color:var(--success-lighter-color);padding:8px;border-radius:4px}.dataSource-add-database-title{display:flex;flex-direction:row;gap:1rem;align-items:center}.dataSource-options{display:flex;flex-direction:column;gap:1rem}\n"], components: [{ type: i1.ExpandableSectionComponent, selector: "smart-expandable-section", inputs: ["data", "index"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
98
46
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: SmartFilterParamsComponent, decorators: [{
99
47
  type: Component,
100
- args: [{ selector: 'smart-filter-group-params', template: "<div\r\n class=\"targetGroupFilterParamsContainer\"\r\n *ngIf=\"service.model?.showGroups && !service.model?.readOnly\"\r\n>\r\n <ng-template #smartFilter></ng-template>\r\n <div class=\"dataSource-options\" *ngIf=\"service.model?.extarnalDatabase\">\r\n <div class=\"dataSource-btns\">\r\n <div class=\"dataSource-btn\">K\u00FCls\u0151 adatb\u00E1zis</div>\r\n <div class=\"dataSource-btn dataSource-btn-disabled\">Bels\u0151 adatb\u00E1zis</div>\r\n </div>\r\n <div class=\"dataSource-add-database\">\r\n <div class=\"dataSource-add-database-title\">\r\n <smart-icon icon=\"Ic24_View_Table\" color=\"sucess\"></smart-icon>\r\n Adatb\u00E1zis\r\n </div>\r\n <button title=\"add\" mat-icon-button (click)=\"addDataSource()\">\r\n <smart-icon icon=\"Ic24_Plus_Circle\" color=\"success\"></smart-icon>\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"sections\">\r\n <smart-expandable-section\r\n class=\"excel\"\r\n *ngIf=\"expandableSectionsFromExcel\"\r\n [data]=\"expandableSectionsFromExcel!\"\r\n ></smart-expandable-section>\r\n <smart-expandable-section\r\n [data]=\"data\"\r\n *ngFor=\"let data of expandableSections\"\r\n ></smart-expandable-section>\r\n </div>\r\n</div>\r\n", styles: [".targetGroupFilterParamsContainer{padding:1.5rem;display:flex;flex-direction:column;gap:2.5rem;height:calc(100% - 3rem);overflow:auto;border-right:2px solid var(--primary-dark-color)}.sections{display:flex;flex-direction:column;gap:.25rem}.targetGroupFilterParamsContainer .excel::ng-deep .mat-expansion-panel-body{background-color:var(--success-lighter-color)}.targetGroupFilterParamsContainer .excel::ng-deep .mat-expansion-panel-header.mat-expanded{background-color:var(--success-color)!important}.targetGroupFilterParamsContainer::ng-deep .mat-expansion-panel-body{padding:0 0 0 1rem!important;background-color:var(--light-blue-color)}.targetGroupFilterParamsContainer::ng-deep .mat-expansion-panel-header{background-color:var(--primary-light-color);padding:.75rem;height:auto}.targetGroupFilterParamsContainer::ng-deep .mat-expansion-panel-header-title{color:var(--primary-lighter-color);font-weight:600}.targetGroupFilterParamsContainer::ng-deep .mat-expansion-panel-header.mat-expanded{background-color:var(--accent-color)!important;padding:.75rem;height:auto}.targetGroupFilterParamsContainer::ng-deep .mat-expansion-panel-header.mat-expanded .mat-expansion-panel-header-title{color:#fff}.dataSource-btns{display:flex;flex-direction:row;justify-content:space-around;background-color:var(--success-lighter-color);height:44px;padding:8px 12px;align-items:center;border:1.5px solid var(--success-color);border-left:6px solid var(--success-color);border-radius:4px}.dataSource-btn{display:flex;padding:1rem 2rem;justify-content:center;align-items:center;background-color:var(--success-color);border-radius:4px;cursor:pointer}.dataSource-btn-disabled{background-color:var(--success-lighter-color);cursor:auto}.dataSource-add-database{display:flex;flex-direction:row;justify-content:space-between;background-color:var(--success-lighter-color);padding:8px;border-radius:4px}.dataSource-add-database-title{display:flex;flex-direction:row;gap:1rem;align-items:center}.dataSource-options{display:flex;flex-direction:column;gap:1rem}\n"] }]
48
+ args: [{ selector: 'smart-filter-group-params', template: "<div\r\n class=\"targetGroupFilterParamsContainer\"\r\n *ngIf=\"service.model?.showGroups && !service.model?.readOnly\"\r\n>\r\n <!-- <ng-template #smartFilter></ng-template> -->\r\n <!-- <div class=\"dataSource-options\" *ngIf=\"service.model?.extarnalDatabase\">\r\n <div class=\"dataSource-btns\">\r\n <div class=\"dataSource-btn\">K\u00FCls\u0151 adatb\u00E1zis</div>\r\n <div class=\"dataSource-btn dataSource-btn-disabled\">Bels\u0151 adatb\u00E1zis</div>\r\n </div>\r\n <div class=\"dataSource-add-database\">\r\n <div class=\"dataSource-add-database-title\">\r\n <smart-icon icon=\"Ic24_View_Table\" color=\"sucess\"></smart-icon>\r\n Adatb\u00E1zis\r\n </div>\r\n <button title=\"add\" mat-icon-button (click)=\"addDataSource()\">\r\n <smart-icon icon=\"Ic24_Plus_Circle\" color=\"success\"></smart-icon>\r\n </button>\r\n </div>\r\n </div> -->\r\n <div class=\"sections\">\r\n <smart-expandable-section\r\n class=\"excel\"\r\n *ngIf=\"expandableSectionsFromExcel\"\r\n [data]=\"expandableSectionsFromExcel!\"\r\n ></smart-expandable-section>\r\n <smart-expandable-section\r\n [data]=\"data\"\r\n *ngFor=\"let data of expandableSections\"\r\n ></smart-expandable-section>\r\n </div>\r\n</div>\r\n", styles: [".targetGroupFilterParamsContainer{padding:1.5rem;display:flex;flex-direction:column;gap:2.5rem;height:calc(100% - 3rem);overflow:auto;border-right:2px solid var(--primary-dark-color)}.sections{display:flex;flex-direction:column;gap:.25rem}.targetGroupFilterParamsContainer .excel::ng-deep .mat-expansion-panel-body{background-color:var(--success-lighter-color)}.targetGroupFilterParamsContainer .excel::ng-deep .mat-expansion-panel-header.mat-expanded{background-color:var(--success-color)!important}.targetGroupFilterParamsContainer::ng-deep .mat-expansion-panel-body{padding:0 0 0 1rem!important;background-color:var(--light-blue-color)}.targetGroupFilterParamsContainer::ng-deep .mat-expansion-panel-header{background-color:var(--primary-light-color);padding:.75rem;height:auto}.targetGroupFilterParamsContainer::ng-deep .mat-expansion-panel-header-title{color:var(--primary-lighter-color);font-weight:600}.targetGroupFilterParamsContainer::ng-deep .mat-expansion-panel-header.mat-expanded{background-color:var(--accent-color)!important;padding:.75rem;height:auto}.targetGroupFilterParamsContainer::ng-deep .mat-expansion-panel-header.mat-expanded .mat-expansion-panel-header-title{color:#fff}.dataSource-btns{display:flex;flex-direction:row;justify-content:space-around;background-color:var(--success-lighter-color);height:44px;padding:8px 12px;align-items:center;border:1.5px solid var(--success-color);border-left:6px solid var(--success-color);border-radius:4px}.dataSource-btn{display:flex;padding:1rem 2rem;justify-content:center;align-items:center;background-color:var(--success-color);border-radius:4px;cursor:pointer}.dataSource-btn-disabled{background-color:var(--success-lighter-color);cursor:auto}.dataSource-add-database{display:flex;flex-direction:row;justify-content:space-between;background-color:var(--success-lighter-color);padding:8px;border-radius:4px}.dataSource-add-database-title{display:flex;flex-direction:row;gap:1rem;align-items:center}.dataSource-options{display:flex;flex-direction:column;gap:1rem}\n"] }]
101
49
  }], ctorParameters: function () { return []; }, propDecorators: { service: [{
102
50
  type: Input
103
51
  }], filterVcRef: [{
104
52
  type: ViewChild,
105
53
  args: ['smartFilter', { read: ViewContainerRef }]
106
54
  }] } });
107
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtZmlsdGVyLXBhcmFtcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi9zbWFydC1maWx0ZXItZWRpdG9yL3NtYXJ0LWZpbHRlci1wYXJhbXMvc21hcnQtZmlsdGVyLXBhcmFtcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi9zbWFydC1maWx0ZXItZWRpdG9yL3NtYXJ0LWZpbHRlci1wYXJhbXMvc21hcnQtZmlsdGVyLXBhcmFtcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBcUIsU0FBUyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWpHLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBTTFDLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDhEQUE4RCxDQUFDOzs7Ozs7QUFPekcsTUFBTSxPQUFPLDBCQUEwQjtJQVVyQywyREFBMkQ7SUFDM0Qsd0JBQXdCO0lBRXhCO1FBWlEsY0FBUyxHQUFrQixJQUFJLE9BQU8sRUFBRSxDQUFDO1FBSWpELHVCQUFrQixHQUE4QixFQUFFLENBQUM7SUFRcEMsQ0FBQztJQUVoQixRQUFRO1FBQ04sSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ3ZFLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFNLENBQUMsQ0FBQztRQUNsQyxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFNLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRUQsS0FBSyxDQUFDLEtBQXFDO1FBQ3pDLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQztRQUNqQywwQkFBMEI7UUFFMUIsSUFBSSxDQUFDLDJCQUEyQixFQUFFLENBQUM7SUFDckMsQ0FBQztJQUVELDJCQUEyQjtRQUN6QixJQUFJLElBQUksQ0FBQyxhQUFjLENBQUMsTUFBTSxFQUFFO1lBQzlCLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsYUFBYyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQ3RELENBQUMsNEJBQTBELEVBQUUsRUFBRTtnQkFDN0QsT0FBTztvQkFDTCxLQUFLLEVBQUUsNEJBQTRCLENBQUMsS0FBTTtvQkFDMUMsUUFBUSxFQUFFLDhCQUE4QjtvQkFDeEMsZUFBZSxFQUFFLHlCQUF5QjtvQkFDMUMsSUFBSSxFQUFFO3dCQUNKLEtBQUssRUFBRSw0QkFBNEIsQ0FBQyxNQUFNO3dCQUMxQyxZQUFZLEVBQUUsSUFBSSxDQUFDLE9BQU87cUJBQzNCO29CQUNELFNBQVMsRUFBRSxNQUFNO29CQUNqQixVQUFVLEVBQUUsSUFBSTtpQkFDakIsQ0FBQztZQUNKLENBQUMsQ0FDRixDQUFDO1NBQ0g7UUFDRCxpREFBaUQ7UUFDakQseUNBQXlDO1FBQ3pDLDREQUE0RDtRQUM1RCxnREFBZ0Q7UUFDaEQsa0RBQWtEO1FBQ2xELGNBQWM7UUFDZCw4REFBOEQ7UUFDOUQsU0FBUztRQUNULHlCQUF5QjtRQUN6Qix3QkFBd0I7UUFDeEIsT0FBTztRQUNQLElBQUk7SUFDTixDQUFDO0lBRUQsNEJBQTRCO0lBQzVCLGtEQUFrRDtJQUNsRCxjQUFjO0lBQ2QsTUFBTTtJQUVOLHVCQUF1QjtJQUN2QixxRkFBcUY7SUFDckYsdUNBQXVDO0lBQ3ZDLHFDQUFxQztJQUNyQyxVQUFVO0lBRVYsK0JBQStCO0lBRS9CLDhEQUE4RDtJQUM5RCx5QkFBeUI7SUFDekIsNEJBQTRCO0lBQzVCLHNEQUFzRDtJQUN0RCxPQUFPO0lBRVAscURBQXFEO0lBQ3JELHVDQUF1QztJQUN2Qyx5QkFBeUI7SUFDekIsMEVBQTBFO0lBQzFFLDRCQUE0QjtJQUM1QixvQkFBb0I7SUFDcEIsNkVBQTZFO0lBQzdFLGFBQWE7SUFDYixXQUFXO0lBRVgsZ0RBQWdEO0lBQ2hELHlDQUF5QztJQUN6Qyx1QkFBdUI7SUFDdkIsY0FBYztJQUVkLCtEQUErRDtJQUMvRCxtREFBbUQ7SUFDbkQsVUFBVTtJQUNWLElBQUk7SUFFSixhQUFhO1FBQ1gsZ0NBQWdDO0lBQ2xDLENBQUM7O3VIQTNHVSwwQkFBMEI7MkdBQTFCLDBCQUEwQix3TEFRSCxnQkFBZ0IsNkJDdkJwRCxneENBZ0NBOzJGRGpCYSwwQkFBMEI7a0JBTHRDLFNBQVM7K0JBQ0UsMkJBQTJCOzBFQU01QixPQUFPO3NCQUFmLEtBQUs7Z0JBT04sV0FBVztzQkFEVixTQUFTO3VCQUFDLGFBQWEsRUFBRSxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBWaWV3Q2hpbGQsIFZpZXdDb250YWluZXJSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBFeHBhbmRhYmxlU2VjdGlvbiB9IGZyb20gJy4uLy4uL3NtYXJ0LWV4cGFuZGFibGUtc2VjdGlvbi9leHBhbmRhYmxlLXNlY3Rpb24ubW9kZWwnO1xyXG5pbXBvcnQgeyBGaWx0ZXJFeHByZXNzaW9uQnVpbGRlckdyb3VwIH0gZnJvbSAnLi4vYXBpL21vZGVsL2ZpbHRlckV4cHJlc3Npb25CdWlsZGVyR3JvdXAnO1xyXG5pbXBvcnQgeyBGaWx0ZXJFeHByZXNzaW9uQnVpbGRlck1vZGVsIH0gZnJvbSAnLi4vYXBpL21vZGVsL2ZpbHRlckV4cHJlc3Npb25CdWlsZGVyTW9kZWwnO1xyXG5pbXBvcnQgeyBGaWx0ZXJFeHByZXNzaW9uQnVpbGRlclVpTW9kZWwgfSBmcm9tICcuLi9hcGkvbW9kZWwvZmlsdGVyRXhwcmVzc2lvbkJ1aWxkZXJVaU1vZGVsJztcclxuaW1wb3J0IHsgU21hcnRGaWx0ZXJFZGl0b3JTZXJ2aWNlIH0gZnJvbSAnLi4vc21hcnQtZmlsdGVyLWVkaXRvci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU21hcnRGaWx0ZXJQYXJhbUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9zbWFydC1maWx0ZXItcGFyYW0vc21hcnQtZmlsdGVyLXBhcmFtLmNvbXBvbmVudCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3NtYXJ0LWZpbHRlci1ncm91cC1wYXJhbXMnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9zbWFydC1maWx0ZXItcGFyYW1zLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9zbWFydC1maWx0ZXItcGFyYW1zLmNvbXBvbmVudC5jc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFNtYXJ0RmlsdGVyUGFyYW1zQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95LCBPbkluaXQge1xyXG4gIHByaXZhdGUgX2Rlc3Ryb3kkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3QoKTtcclxuICBASW5wdXQoKSBzZXJ2aWNlITogU21hcnRGaWx0ZXJFZGl0b3JTZXJ2aWNlO1xyXG4gIGZpbHRlckJ1aWxkZXI/OiBGaWx0ZXJFeHByZXNzaW9uQnVpbGRlck1vZGVsO1xyXG5cclxuICBleHBhbmRhYmxlU2VjdGlvbnM/OiBFeHBhbmRhYmxlU2VjdGlvbjxhbnk+W10gPSBbXTtcclxuICBleHBhbmRhYmxlU2VjdGlvbnNGcm9tRXhjZWw/OiBFeHBhbmRhYmxlU2VjdGlvbjxhbnk+O1xyXG5cclxuICBAVmlld0NoaWxkKCdzbWFydEZpbHRlcicsIHsgcmVhZDogVmlld0NvbnRhaW5lclJlZiB9KVxyXG4gIGZpbHRlclZjUmVmPzogVmlld0NvbnRhaW5lclJlZjtcclxuICAvLyBmaWx0ZXJDb21wb25lbnRSZWY/OiBDb21wb25lbnRSZWY8U21hcnRGaWx0ZXJDb21wb25lbnQ+O1xyXG4gIC8vIGZpbHRlcj86IFNtYXJ0RmlsdGVyO1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHt9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zZXJ2aWNlLm1vZGVsQ2hhbmdlZC5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCkpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIHRoaXMuc2V0VXAodGhpcy5zZXJ2aWNlLm1vZGVsISk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMuc2V0VXAodGhpcy5zZXJ2aWNlLm1vZGVsISk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuX2Rlc3Ryb3kkLm5leHQoKTtcclxuICAgIHRoaXMuX2Rlc3Ryb3kkLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG5cclxuICBzZXRVcChtb2RlbDogRmlsdGVyRXhwcmVzc2lvbkJ1aWxkZXJVaU1vZGVsKTogdm9pZCB7XHJcbiAgICB0aGlzLmZpbHRlckJ1aWxkZXIgPSBtb2RlbC5tb2RlbDtcclxuICAgIC8vIHRoaXMuY29uc3RydWN0RmlsdGVyKCk7XHJcblxyXG4gICAgdGhpcy5jb25zdHJ1Y3RFeHBhbmRhYmxlU2VjdGlvbnMoKTtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdEV4cGFuZGFibGVTZWN0aW9ucygpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmZpbHRlckJ1aWxkZXIhLmdyb3Vwcykge1xyXG4gICAgICB0aGlzLmV4cGFuZGFibGVTZWN0aW9ucyA9IHRoaXMuZmlsdGVyQnVpbGRlciEuZ3JvdXBzLm1hcChcclxuICAgICAgICAoZmlsdGVyRXhwcmVzc2lvbkJ1aWxkZXJHcm91cDogRmlsdGVyRXhwcmVzc2lvbkJ1aWxkZXJHcm91cCkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgdGl0bGU6IGZpbHRlckV4cHJlc3Npb25CdWlsZGVyR3JvdXAubGFiZWwhLFxyXG4gICAgICAgICAgICBjc3NDbGFzczogJ2ZpbHRlckV4cHJlc3Npb25CdWlsZGVyR3JvdXAnLFxyXG4gICAgICAgICAgICBjdXN0b21Db21wb25lbnQ6IFNtYXJ0RmlsdGVyUGFyYW1Db21wb25lbnQsXHJcbiAgICAgICAgICAgIGRhdGE6IHtcclxuICAgICAgICAgICAgICBncm91cDogZmlsdGVyRXhwcmVzc2lvbkJ1aWxkZXJHcm91cC5maWVsZHMsXHJcbiAgICAgICAgICAgICAgc2VydmljZVRvVXNlOiB0aGlzLnNlcnZpY2UsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGlucHV0TmFtZTogJ2RhdGEnLFxyXG4gICAgICAgICAgICBpc0V4cGFuZGVkOiB0cnVlLFxyXG4gICAgICAgICAgfTtcclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICAvLyBpZiAodGhpcy5zZXJ2aWNlLm1vZGVsPy5leHRlcm5hbEZpbHRlckdyb3VwKSB7XHJcbiAgICAvLyAgIHRoaXMuZXhwYW5kYWJsZVNlY3Rpb25zRnJvbUV4Y2VsID0ge1xyXG4gICAgLy8gICAgIHRpdGxlOiB0aGlzLnNlcnZpY2UubW9kZWwuZXh0ZXJuYWxGaWx0ZXJHcm91cC5sYWJlbCEsXHJcbiAgICAvLyAgICAgY3NzQ2xhc3M6ICdmaWx0ZXJFeHByZXNzaW9uQnVpbGRlckdyb3VwJyxcclxuICAgIC8vICAgICBjdXN0b21Db21wb25lbnQ6IFNtYXJ0RmlsdGVyUGFyYW1Db21wb25lbnQsXHJcbiAgICAvLyAgICAgZGF0YToge1xyXG4gICAgLy8gICAgICAgZ3JvdXA6IHRoaXMuc2VydmljZS5tb2RlbC5leHRlcm5hbEZpbHRlckdyb3VwLmZpZWxkcyxcclxuICAgIC8vICAgICB9LFxyXG4gICAgLy8gICAgIGlucHV0TmFtZTogJ2RhdGEnLFxyXG4gICAgLy8gICAgIGlzRXhwYW5kZWQ6IHRydWUsXHJcbiAgICAvLyAgIH07XHJcbiAgICAvLyB9XHJcbiAgfVxyXG5cclxuICAvLyBjb25zdHJ1Y3RGaWx0ZXIoKTogdm9pZCB7XHJcbiAgLy8gICBpZiAodGhpcy5maWx0ZXIgJiYgdGhpcy5maWx0ZXJDb21wb25lbnRSZWYpIHtcclxuICAvLyAgICAgcmV0dXJuO1xyXG4gIC8vICAgfVxyXG5cclxuICAvLyAgIC8vIHRoaXMuZmlsdGVyID0ge1xyXG4gIC8vICAgLy8gICBkYXRhOiB0aGlzLnNlcnZpY2UubW9kZWw/Lmdyb3VwRmlsdGVyPy5maWx0ZXJzISBhcyBGaWx0ZXJFeHByZXNzaW9uRmllbGRbXSxcclxuICAvLyAgIC8vICAgdHlwZTogU21hcnRGaWx0ZXJUeXBlLlNpbXBsZSxcclxuICAvLyAgIC8vICAgc2hvd1Bvc3NpYmxlQWN0aW9uczogZmFsc2UsXHJcbiAgLy8gICAvLyB9O1xyXG5cclxuICAvLyAgIHRoaXMuZmlsdGVyVmNSZWY/LmNsZWFyKCk7XHJcblxyXG4gIC8vICAgdGhpcy5maWx0ZXJDb21wb25lbnRSZWYgPSB0aGlzLmNmU2VydmljZS5jcmVhdGVDb21wb25lbnQoXHJcbiAgLy8gICAgIHRoaXMuZmlsdGVyVmNSZWYhLFxyXG4gIC8vICAgICBTbWFydEZpbHRlckNvbXBvbmVudCxcclxuICAvLyAgICAgbmV3IE1hcDxzdHJpbmcsIGFueT4oW1snZmlsdGVyJywgdGhpcy5maWx0ZXJdXSlcclxuICAvLyAgICk7XHJcblxyXG4gIC8vICAgdGhpcy5maWx0ZXJDb21wb25lbnRSZWYuaW5zdGFuY2U/LnNlcnZpY2UuY2hhbmdlXHJcbiAgLy8gICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCkpXHJcbiAgLy8gICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gIC8vICAgICAgIGxldCB1aUFjdGlvbjogVWlBY3Rpb24gPSB0aGlzLnNlcnZpY2UubW9kZWw/LmZpbHRlckdyb3Vwc0FjdGlvbiE7XHJcbiAgLy8gICAgICAgdWlBY3Rpb24ucGFyYW1zID0ge1xyXG4gIC8vICAgICAgICAgZmlsdGVyOiB7XHJcbiAgLy8gICAgICAgICAgIGZpbHRlcnM6IHRoaXMuZmlsdGVyQ29tcG9uZW50UmVmPy5pbnN0YW5jZS5zZXJ2aWNlLmZpbHRlcj8uZGF0YSxcclxuICAvLyAgICAgICAgIH0sXHJcbiAgLy8gICAgICAgfTtcclxuXHJcbiAgLy8gICAgICAgLy8gbGV0IHVpQWN0aW9uTW9kZWw6IFVpQWN0aW9uTW9kZWwgPSB7XHJcbiAgLy8gICAgICAgLy8gICBzZXJ2aWNlVG9Vc2U6IHRoaXMuc2VydmljZSxcclxuICAvLyAgICAgICAvLyAgIHVpQWN0aW9uLFxyXG4gIC8vICAgICAgIC8vIH07XHJcblxyXG4gIC8vICAgICAgIC8vIHRoaXMudWlBY3Rpb25TZXJ2aWNlLnVpQWN0aW9uTW9kZWwgPSB1aUFjdGlvbk1vZGVsO1xyXG4gIC8vICAgICAgIC8vIHRoaXMudWlBY3Rpb25TZXJ2aWNlLmV4ZWN1dGUodWlBY3Rpb24pO1xyXG4gIC8vICAgICB9KTtcclxuICAvLyB9XHJcblxyXG4gIGFkZERhdGFTb3VyY2UoKSB7XHJcbiAgICAvLyB0aGlzLnNlcnZpY2UuYWRkRGF0YVNvdXJjZSgpO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2XHJcbiAgY2xhc3M9XCJ0YXJnZXRHcm91cEZpbHRlclBhcmFtc0NvbnRhaW5lclwiXHJcbiAgKm5nSWY9XCJzZXJ2aWNlLm1vZGVsPy5zaG93R3JvdXBzICYmICFzZXJ2aWNlLm1vZGVsPy5yZWFkT25seVwiXHJcbj5cclxuICA8bmctdGVtcGxhdGUgI3NtYXJ0RmlsdGVyPjwvbmctdGVtcGxhdGU+XHJcbiAgPGRpdiBjbGFzcz1cImRhdGFTb3VyY2Utb3B0aW9uc1wiICpuZ0lmPVwic2VydmljZS5tb2RlbD8uZXh0YXJuYWxEYXRhYmFzZVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImRhdGFTb3VyY2UtYnRuc1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZGF0YVNvdXJjZS1idG5cIj5Lw7xsc8WRIGFkYXRiw6F6aXM8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImRhdGFTb3VyY2UtYnRuIGRhdGFTb3VyY2UtYnRuLWRpc2FibGVkXCI+QmVsc8WRIGFkYXRiw6F6aXM8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImRhdGFTb3VyY2UtYWRkLWRhdGFiYXNlXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJkYXRhU291cmNlLWFkZC1kYXRhYmFzZS10aXRsZVwiPlxyXG4gICAgICAgIDxzbWFydC1pY29uIGljb249XCJJYzI0X1ZpZXdfVGFibGVcIiBjb2xvcj1cInN1Y2Vzc1wiPjwvc21hcnQtaWNvbj5cclxuICAgICAgICBBZGF0YsOhemlzXHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8YnV0dG9uIHRpdGxlPVwiYWRkXCIgbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJhZGREYXRhU291cmNlKClcIj5cclxuICAgICAgICA8c21hcnQtaWNvbiBpY29uPVwiSWMyNF9QbHVzX0NpcmNsZVwiIGNvbG9yPVwic3VjY2Vzc1wiPjwvc21hcnQtaWNvbj5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwic2VjdGlvbnNcIj5cclxuICAgIDxzbWFydC1leHBhbmRhYmxlLXNlY3Rpb25cclxuICAgICAgY2xhc3M9XCJleGNlbFwiXHJcbiAgICAgICpuZ0lmPVwiZXhwYW5kYWJsZVNlY3Rpb25zRnJvbUV4Y2VsXCJcclxuICAgICAgW2RhdGFdPVwiZXhwYW5kYWJsZVNlY3Rpb25zRnJvbUV4Y2VsIVwiXHJcbiAgICA+PC9zbWFydC1leHBhbmRhYmxlLXNlY3Rpb24+XHJcbiAgICA8c21hcnQtZXhwYW5kYWJsZS1zZWN0aW9uXHJcbiAgICAgIFtkYXRhXT1cImRhdGFcIlxyXG4gICAgICAqbmdGb3I9XCJsZXQgZGF0YSBvZiBleHBhbmRhYmxlU2VjdGlvbnNcIlxyXG4gICAgPjwvc21hcnQtZXhwYW5kYWJsZS1zZWN0aW9uPlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
55
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtZmlsdGVyLXBhcmFtcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi9zbWFydC1maWx0ZXItZWRpdG9yL3NtYXJ0LWZpbHRlci1wYXJhbXMvc21hcnQtZmlsdGVyLXBhcmFtcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi9zbWFydC1maWx0ZXItZWRpdG9yL3NtYXJ0LWZpbHRlci1wYXJhbXMvc21hcnQtZmlsdGVyLXBhcmFtcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBcUIsU0FBUyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWpHLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBUzFDLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDhEQUE4RCxDQUFDOzs7O0FBT3pHLE1BQU0sT0FBTywwQkFBMEI7SUFXckM7UUFWUSxjQUFTLEdBQWtCLElBQUksT0FBTyxFQUFFLENBQUM7UUFJakQsdUJBQWtCLEdBQThCLEVBQUUsQ0FBQztJQU1wQyxDQUFDO0lBRWhCLFFBQVE7UUFDTixJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDdkUsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQU0sQ0FBQyxDQUFDO1FBQ2xDLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQU0sQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFRCxLQUFLLENBQUMsS0FBcUM7UUFDekMsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDO1FBQ2pDLElBQUksQ0FBQywyQkFBMkIsRUFBRSxDQUFDO0lBQ3JDLENBQUM7SUFFRCwyQkFBMkI7UUFDekIsSUFBSSxJQUFJLENBQUMsYUFBYyxDQUFDLE1BQU0sRUFBRTtZQUM5QixJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLGFBQWMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUN0RCxDQUFDLDRCQUEwRCxFQUFFLEVBQUU7Z0JBQzdELE9BQU87b0JBQ0wsS0FBSyxFQUFFLDRCQUE0QixDQUFDLEtBQU07b0JBQzFDLFFBQVEsRUFBRSw4QkFBOEI7b0JBQ3hDLGVBQWUsRUFBRSx5QkFBeUI7b0JBQzFDLElBQUksRUFBRTt3QkFDSixLQUFLLEVBQUUsNEJBQTRCLENBQUMsTUFBTTt3QkFDMUMsWUFBWSxFQUFFLElBQUksQ0FBQyxPQUFPO3FCQUMzQjtvQkFDRCxTQUFTLEVBQUUsTUFBTTtvQkFDakIsVUFBVSxFQUFFLElBQUk7aUJBQ2pCLENBQUM7WUFDSixDQUFDLENBQ0YsQ0FBQztTQUNIO0lBQ0gsQ0FBQzs7dUhBaERVLDBCQUEwQjsyR0FBMUIsMEJBQTBCLHdMQVFILGdCQUFnQiw2QkMxQnBELGt5Q0FnQ0E7MkZEZGEsMEJBQTBCO2tCQUx0QyxTQUFTOytCQUNFLDJCQUEyQjswRUFNNUIsT0FBTztzQkFBZixLQUFLO2dCQU9OLFdBQVc7c0JBRFYsU0FBUzt1QkFBQyxhQUFhLEVBQUUsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgVmlld0NoaWxkLCBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgRXhwYW5kYWJsZVNlY3Rpb24gfSBmcm9tICcuLi8uLi9zbWFydC1leHBhbmRhYmxlLXNlY3Rpb24vZXhwYW5kYWJsZS1zZWN0aW9uLm1vZGVsJztcclxuaW1wb3J0IHsgRmlsdGVyRXhwcmVzc2lvbkJ1aWxkZXJHcm91cCB9IGZyb20gJy4uL2FwaS9tb2RlbC9maWx0ZXJFeHByZXNzaW9uQnVpbGRlckdyb3VwJztcclxuaW1wb3J0IHsgRmlsdGVyRXhwcmVzc2lvbkJ1aWxkZXJNb2RlbCB9IGZyb20gJy4uL2FwaS9tb2RlbC9maWx0ZXJFeHByZXNzaW9uQnVpbGRlck1vZGVsJztcclxuaW1wb3J0IHsgRmlsdGVyRXhwcmVzc2lvbkJ1aWxkZXJVaU1vZGVsIH0gZnJvbSAnLi4vYXBpL21vZGVsL2ZpbHRlckV4cHJlc3Npb25CdWlsZGVyVWlNb2RlbCc7XHJcbmltcG9ydCB7XHJcbiAgSVNtYXJ0RmlsdGVyRWRpdG9yU2VydmljZSxcclxuICBTbWFydEZpbHRlckVkaXRvclNlcnZpY2UsXHJcbn0gZnJvbSAnLi4vc21hcnQtZmlsdGVyLWVkaXRvci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU21hcnRGaWx0ZXJQYXJhbUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9zbWFydC1maWx0ZXItcGFyYW0vc21hcnQtZmlsdGVyLXBhcmFtLmNvbXBvbmVudCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3NtYXJ0LWZpbHRlci1ncm91cC1wYXJhbXMnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9zbWFydC1maWx0ZXItcGFyYW1zLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9zbWFydC1maWx0ZXItcGFyYW1zLmNvbXBvbmVudC5jc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFNtYXJ0RmlsdGVyUGFyYW1zQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95LCBPbkluaXQge1xyXG4gIHByaXZhdGUgX2Rlc3Ryb3kkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3QoKTtcclxuICBASW5wdXQoKSBzZXJ2aWNlITogSVNtYXJ0RmlsdGVyRWRpdG9yU2VydmljZTtcclxuICBmaWx0ZXJCdWlsZGVyPzogRmlsdGVyRXhwcmVzc2lvbkJ1aWxkZXJNb2RlbDtcclxuXHJcbiAgZXhwYW5kYWJsZVNlY3Rpb25zPzogRXhwYW5kYWJsZVNlY3Rpb248YW55PltdID0gW107XHJcbiAgZXhwYW5kYWJsZVNlY3Rpb25zRnJvbUV4Y2VsPzogRXhwYW5kYWJsZVNlY3Rpb248YW55PjtcclxuXHJcbiAgQFZpZXdDaGlsZCgnc21hcnRGaWx0ZXInLCB7IHJlYWQ6IFZpZXdDb250YWluZXJSZWYgfSlcclxuICBmaWx0ZXJWY1JlZj86IFZpZXdDb250YWluZXJSZWY7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge31cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnNlcnZpY2UubW9kZWxDaGFuZ2VkLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgdGhpcy5zZXRVcCh0aGlzLnNlcnZpY2UubW9kZWwhKTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5zZXRVcCh0aGlzLnNlcnZpY2UubW9kZWwhKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fZGVzdHJveSQubmV4dCgpO1xyXG4gICAgdGhpcy5fZGVzdHJveSQuY29tcGxldGUoKTtcclxuICB9XHJcblxyXG4gIHNldFVwKG1vZGVsOiBGaWx0ZXJFeHByZXNzaW9uQnVpbGRlclVpTW9kZWwpOiB2b2lkIHtcclxuICAgIHRoaXMuZmlsdGVyQnVpbGRlciA9IG1vZGVsLm1vZGVsO1xyXG4gICAgdGhpcy5jb25zdHJ1Y3RFeHBhbmRhYmxlU2VjdGlvbnMoKTtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdEV4cGFuZGFibGVTZWN0aW9ucygpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmZpbHRlckJ1aWxkZXIhLmdyb3Vwcykge1xyXG4gICAgICB0aGlzLmV4cGFuZGFibGVTZWN0aW9ucyA9IHRoaXMuZmlsdGVyQnVpbGRlciEuZ3JvdXBzLm1hcChcclxuICAgICAgICAoZmlsdGVyRXhwcmVzc2lvbkJ1aWxkZXJHcm91cDogRmlsdGVyRXhwcmVzc2lvbkJ1aWxkZXJHcm91cCkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgdGl0bGU6IGZpbHRlckV4cHJlc3Npb25CdWlsZGVyR3JvdXAubGFiZWwhLFxyXG4gICAgICAgICAgICBjc3NDbGFzczogJ2ZpbHRlckV4cHJlc3Npb25CdWlsZGVyR3JvdXAnLFxyXG4gICAgICAgICAgICBjdXN0b21Db21wb25lbnQ6IFNtYXJ0RmlsdGVyUGFyYW1Db21wb25lbnQsXHJcbiAgICAgICAgICAgIGRhdGE6IHtcclxuICAgICAgICAgICAgICBncm91cDogZmlsdGVyRXhwcmVzc2lvbkJ1aWxkZXJHcm91cC5maWVsZHMsXHJcbiAgICAgICAgICAgICAgc2VydmljZVRvVXNlOiB0aGlzLnNlcnZpY2UsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGlucHV0TmFtZTogJ2RhdGEnLFxyXG4gICAgICAgICAgICBpc0V4cGFuZGVkOiB0cnVlLFxyXG4gICAgICAgICAgfTtcclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIjxkaXZcclxuICBjbGFzcz1cInRhcmdldEdyb3VwRmlsdGVyUGFyYW1zQ29udGFpbmVyXCJcclxuICAqbmdJZj1cInNlcnZpY2UubW9kZWw/LnNob3dHcm91cHMgJiYgIXNlcnZpY2UubW9kZWw/LnJlYWRPbmx5XCJcclxuPlxyXG4gIDwhLS0gPG5nLXRlbXBsYXRlICNzbWFydEZpbHRlcj48L25nLXRlbXBsYXRlPiAtLT5cclxuICA8IS0tIDxkaXYgY2xhc3M9XCJkYXRhU291cmNlLW9wdGlvbnNcIiAqbmdJZj1cInNlcnZpY2UubW9kZWw/LmV4dGFybmFsRGF0YWJhc2VcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJkYXRhU291cmNlLWJ0bnNcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImRhdGFTb3VyY2UtYnRuXCI+S8O8bHPFkSBhZGF0YsOhemlzPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJkYXRhU291cmNlLWJ0biBkYXRhU291cmNlLWJ0bi1kaXNhYmxlZFwiPkJlbHPFkSBhZGF0YsOhemlzPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJkYXRhU291cmNlLWFkZC1kYXRhYmFzZVwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZGF0YVNvdXJjZS1hZGQtZGF0YWJhc2UtdGl0bGVcIj5cclxuICAgICAgICA8c21hcnQtaWNvbiBpY29uPVwiSWMyNF9WaWV3X1RhYmxlXCIgY29sb3I9XCJzdWNlc3NcIj48L3NtYXJ0LWljb24+XHJcbiAgICAgICAgQWRhdGLDoXppc1xyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGJ1dHRvbiB0aXRsZT1cImFkZFwiIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwiYWRkRGF0YVNvdXJjZSgpXCI+XHJcbiAgICAgICAgPHNtYXJ0LWljb24gaWNvbj1cIkljMjRfUGx1c19DaXJjbGVcIiBjb2xvcj1cInN1Y2Nlc3NcIj48L3NtYXJ0LWljb24+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+IC0tPlxyXG4gIDxkaXYgY2xhc3M9XCJzZWN0aW9uc1wiPlxyXG4gICAgPHNtYXJ0LWV4cGFuZGFibGUtc2VjdGlvblxyXG4gICAgICBjbGFzcz1cImV4Y2VsXCJcclxuICAgICAgKm5nSWY9XCJleHBhbmRhYmxlU2VjdGlvbnNGcm9tRXhjZWxcIlxyXG4gICAgICBbZGF0YV09XCJleHBhbmRhYmxlU2VjdGlvbnNGcm9tRXhjZWwhXCJcclxuICAgID48L3NtYXJ0LWV4cGFuZGFibGUtc2VjdGlvbj5cclxuICAgIDxzbWFydC1leHBhbmRhYmxlLXNlY3Rpb25cclxuICAgICAgW2RhdGFdPVwiZGF0YVwiXHJcbiAgICAgICpuZ0Zvcj1cImxldCBkYXRhIG9mIGV4cGFuZGFibGVTZWN0aW9uc1wiXHJcbiAgICA+PC9zbWFydC1leHBhbmRhYmxlLXNlY3Rpb24+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=