@hestia-earth/ui-components 0.27.19 → 0.27.20

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.
@@ -19,5 +19,5 @@ export declare class BarChartComponent {
19
19
  protected dataConfig: Signal<ChartData>;
20
20
  protected configuration: Signal<Partial<ChartConfiguration>>;
21
21
  static ɵfac: i0.ɵɵFactoryDeclaration<BarChartComponent, never>;
22
- static ɵcmp: i0.ɵɵComponentDeclaration<BarChartComponent, "he-bar-chart", never, { "data": { "alias": "data"; "required": true; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "datasets": { "alias": "datasets"; "required": false; "isSignal": true; }; "config": { "alias": "config"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
22
+ static ɵcmp: i0.ɵɵComponentDeclaration<BarChartComponent, "he-bar-chart", never, { "data": { "alias": "data"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "datasets": { "alias": "datasets"; "required": false; "isSignal": true; }; "config": { "alias": "config"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
23
23
  }
@@ -1,5 +1,7 @@
1
1
  import { Term, ICycleJSONLD, ISiteJSONLD, IImpactAssessmentJSONLD, EmissionMethodTier, ITermJSONLD, Indicator, Animal, Transformation, blankNodesType, blankNodesKey } from '@hestia-earth/schema';
2
2
  import { propertyValueType } from '@hestia-earth/utils/dist/term';
3
+ export declare const formatDate: (date: string, isStart?: boolean) => Date;
4
+ export declare const getDatesBetween: (startDate: string, endDate: string) => Date[];
3
5
  export declare const filterBlankNode: (filterTerm: string) => ({ term }: blankNodesType) => boolean;
4
6
  export declare const ignoreKeys: string[];
5
7
  export declare const isValidKey: (key: string) => boolean;
@@ -36,7 +36,7 @@ const defaultDatasets = {
36
36
  };
37
37
  export class BarChartComponent {
38
38
  constructor() {
39
- this.data = input.required();
39
+ this.data = input([]);
40
40
  this.max = input();
41
41
  this.datasets = input([]);
42
42
  this.config = input({});
@@ -88,10 +88,10 @@ export class BarChartComponent {
88
88
  this.configuration = computed(() => merge(defaultSettings, this.defaultConfig(), this.config()));
89
89
  }
90
90
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: BarChartComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
91
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "17.3.8", type: BarChartComponent, isStandalone: true, selector: "he-bar-chart", inputs: { data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: true, transformFunction: null }, max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: false, transformFunction: null }, datasets: { classPropertyName: "datasets", publicName: "datasets", isSignal: true, isRequired: false, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<he-chart [data]=\"dataConfig()\" [config]=\"configuration()\"></he-chart>\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "component", type: ChartComponent, selector: "he-chart", inputs: ["data", "config"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
91
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "17.3.8", type: BarChartComponent, isStandalone: true, selector: "he-bar-chart", inputs: { data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: false, transformFunction: null }, max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: false, transformFunction: null }, datasets: { classPropertyName: "datasets", publicName: "datasets", isSignal: true, isRequired: false, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<he-chart [data]=\"dataConfig()\" [config]=\"configuration()\"></he-chart>\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "component", type: ChartComponent, selector: "he-chart", inputs: ["data", "config"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
92
92
  }
93
93
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: BarChartComponent, decorators: [{
94
94
  type: Component,
95
95
  args: [{ selector: 'he-bar-chart', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [ChartComponent], template: "<he-chart [data]=\"dataConfig()\" [config]=\"configuration()\"></he-chart>\n", styles: [":host{display:block}\n"] }]
96
96
  }] });
97
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFyLWNoYXJ0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jaGFydC9iYXItY2hhcnQvYmFyLWNoYXJ0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3NyYy9jaGFydC9iYXItY2hhcnQvYmFyLWNoYXJ0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUU1RixPQUFPLEtBQUssTUFBTSxjQUFjLENBQUM7QUFFakMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDOztBQVVwRCxNQUFNLGVBQWUsR0FBZ0M7SUFDbkQsSUFBSSxFQUFFLGVBQWU7SUFDckIsT0FBTyxFQUFFO1FBQ1AsTUFBTSxFQUFFLEVBQUU7UUFDVixTQUFTLEVBQUU7WUFDVCxRQUFRLEVBQUUsQ0FBQztTQUNaO1FBQ0QsUUFBUSxFQUFFO1lBQ1IsT0FBTyxFQUFFLEtBQUs7U0FDZjtRQUNELE1BQU0sRUFBRTtZQUNOLEtBQUssRUFBRTtnQkFDTDtvQkFDRSxPQUFPLEVBQUUsSUFBSTtvQkFDYixRQUFRLEVBQUUsTUFBTTtvQkFDaEIsU0FBUyxFQUFFO3dCQUNULE9BQU8sRUFBRSxLQUFLO3FCQUNmO29CQUNELEtBQUssRUFBRTt3QkFDTCxVQUFVLEVBQUUsUUFBUTtxQkFDZDtpQkFDVDthQUNGO1NBQ0Y7S0FDRjtDQUNGLENBQUM7QUFFRixNQUFNLGVBQWUsR0FBa0I7SUFDckMsYUFBYTtJQUNiLGFBQWEsRUFBRSxHQUFHO0lBQ2xCLFlBQVksRUFBRSxDQUFDO0lBQ2YsZUFBZSxFQUFFLEVBQUU7Q0FDcEIsQ0FBQztBQVVGLE1BQU0sT0FBTyxpQkFBaUI7SUFSOUI7UUFTWSxTQUFJLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBbUIsQ0FBQztRQUN6QyxRQUFHLEdBQUcsS0FBSyxFQUFVLENBQUM7UUFDdEIsYUFBUSxHQUFHLEtBQUssQ0FBMkIsRUFBRSxDQUFDLENBQUM7UUFDL0MsV0FBTSxHQUFHLEtBQUssQ0FBOEIsRUFBRSxDQUFDLENBQUM7UUFFbEQsY0FBUyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDcEUsa0JBQWEsR0FBd0MsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFDM0UsT0FBTyxFQUFFO2dCQUNQLE1BQU0sRUFBRTtvQkFDTixLQUFLLEVBQUUsT0FBTztpQkFDZjtnQkFDRCxNQUFNLEVBQUU7b0JBQ04sS0FBSyxFQUFFO3dCQUNMOzRCQUNFLE9BQU8sRUFBRSxLQUFLOzRCQUNkLEtBQUssRUFBRTtnQ0FDTCxHQUFHLEVBQUUsQ0FBQztnQ0FDTixHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUU7NkJBQ3BCO3lCQUNGO3FCQUNGO29CQUNELEtBQUssRUFBRTt3QkFDTDs0QkFDRSxLQUFLLEVBQUU7Z0NBQ0wsU0FBUyxFQUFFLFNBQVM7Z0NBQ3BCLFVBQVUsRUFBRSxNQUFNO2dDQUNsQixRQUFRLEVBQUUsRUFBRTtnQ0FDWixTQUFTLEVBQUUsS0FBSzs2QkFDakI7eUJBQ0Y7cUJBQ0Y7aUJBQ0Y7YUFDRjtTQUNGLENBQUMsQ0FBQyxDQUFDO1FBRUksb0JBQWUsR0FBcUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUN4RSxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsTUFBTTtZQUNyQixDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNqQixDQUFDLENBQUM7Z0JBQ0U7b0JBQ0UsZUFBZTtvQkFDZixlQUFlLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsZUFBZSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsQ0FBQyxlQUFlLElBQUksS0FBSyxDQUFDO29CQUMxRixXQUFXLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsQ0FBQyxXQUFXLElBQUksS0FBSyxDQUFDO29CQUM5RSxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQztpQkFDNUM7YUFDRixDQUNOLENBQUM7UUFFUSxlQUFVLEdBQXNCLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1lBQ3hELElBQUksRUFBRTtnQkFDSixRQUFRLEVBQUUsSUFBSSxDQUFDLGVBQWUsRUFBRTtnQkFDaEMsTUFBTSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUM7YUFDOUM7U0FDRixDQUFDLENBQUMsQ0FBQztRQUNNLGtCQUFhLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLGFBQWEsRUFBRSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7S0FDdkc7OEdBeERZLGlCQUFpQjtrR0FBakIsaUJBQWlCLHNqQkN4RDlCLDhFQUNBLGdGRHFEWSxjQUFjOzsyRkFFYixpQkFBaUI7a0JBUjdCLFNBQVM7K0JBQ0UsY0FBYyxtQkFHUCx1QkFBdUIsQ0FBQyxNQUFNLGNBQ25DLElBQUksV0FDUCxDQUFDLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGNvbXB1dGVkLCBpbnB1dCwgU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDaGFydENvbmZpZ3VyYXRpb24sIENoYXJ0RGF0YSwgQ2hhcnREYXRhU2V0cyB9IGZyb20gJ2NoYXJ0LmpzJztcbmltcG9ydCBtZXJnZSBmcm9tICdsb2Rhc2gubWVyZ2UnO1xuXG5pbXBvcnQgeyBDaGFydENvbXBvbmVudCB9IGZyb20gJy4uL2NoYXJ0LmNvbXBvbmVudCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2hhcnREYXRhSXRlbSB7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIGNvdW50OiBudW1iZXI7XG4gIGNvbG9yPzogc3RyaW5nO1xuICBiYWNrZ3JvdW5kQ29sb3I/OiBzdHJpbmc7XG4gIGJvcmRlckNvbG9yPzogc3RyaW5nO1xufVxuXG5jb25zdCBkZWZhdWx0U2V0dGluZ3M6IFBhcnRpYWw8Q2hhcnRDb25maWd1cmF0aW9uPiA9IHtcbiAgdHlwZTogJ2hvcml6b250YWxCYXInLFxuICBvcHRpb25zOiB7XG4gICAgZXZlbnRzOiBbXSxcbiAgICBhbmltYXRpb246IHtcbiAgICAgIGR1cmF0aW9uOiAwXG4gICAgfSxcbiAgICB0b29sdGlwczoge1xuICAgICAgZW5hYmxlZDogZmFsc2VcbiAgICB9LFxuICAgIHNjYWxlczoge1xuICAgICAgeUF4ZXM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGRpc3BsYXk6IHRydWUsXG4gICAgICAgICAgcG9zaXRpb246ICdsZWZ0JyxcbiAgICAgICAgICBncmlkTGluZXM6IHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGZhbHNlXG4gICAgICAgICAgfSxcbiAgICAgICAgICB0aWNrczoge1xuICAgICAgICAgICAgY3Jvc3NBbGlnbjogJ2NlbnRlcidcbiAgICAgICAgICB9IGFzIGFueVxuICAgICAgICB9XG4gICAgICBdXG4gICAgfVxuICB9XG59O1xuXG5jb25zdCBkZWZhdWx0RGF0YXNldHM6IENoYXJ0RGF0YVNldHMgPSB7XG4gIC8vIGF4aXM6ICd5JyxcbiAgYmFyUGVyY2VudGFnZTogMC41LFxuICBiYXJUaGlja25lc3M6IDgsXG4gIG1heEJhclRoaWNrbmVzczogMTJcbn07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2hlLWJhci1jaGFydCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9iYXItY2hhcnQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9iYXItY2hhcnQuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDaGFydENvbXBvbmVudF1cbn0pXG5leHBvcnQgY2xhc3MgQmFyQ2hhcnRDb21wb25lbnQge1xuICBwcm90ZWN0ZWQgZGF0YSA9IGlucHV0LnJlcXVpcmVkPENoYXJ0RGF0YUl0ZW1bXT4oKTtcbiAgcHJvdGVjdGVkIG1heCA9IGlucHV0PG51bWJlcj4oKTtcbiAgcHJvdGVjdGVkIGRhdGFzZXRzID0gaW5wdXQ8UGFydGlhbDxDaGFydERhdGFTZXRzPltdPihbXSk7XG4gIHByb3RlY3RlZCBjb25maWcgPSBpbnB1dDxQYXJ0aWFsPENoYXJ0Q29uZmlndXJhdGlvbj4+KHt9KTtcblxuICBwcml2YXRlIG1heENvbmZpZyA9IGNvbXB1dGVkKCgpID0+ICh0aGlzLm1heCgpID8geyBtYXg6IHRoaXMubWF4KCkgfSA6IHt9KSk7XG4gIHByaXZhdGUgZGVmYXVsdENvbmZpZzogU2lnbmFsPFBhcnRpYWw8Q2hhcnRDb25maWd1cmF0aW9uPj4gPSBjb21wdXRlZCgoKSA9PiAoe1xuICAgIG9wdGlvbnM6IHtcbiAgICAgIGxlZ2VuZDoge1xuICAgICAgICBhbGlnbjogJ3N0YXJ0J1xuICAgICAgfSxcbiAgICAgIHNjYWxlczoge1xuICAgICAgICB4QXhlczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGZhbHNlLFxuICAgICAgICAgICAgdGlja3M6IHtcbiAgICAgICAgICAgICAgbWluOiAwLFxuICAgICAgICAgICAgICAuLi50aGlzLm1heENvbmZpZygpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICBdLFxuICAgICAgICB5QXhlczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHRpY2tzOiB7XG4gICAgICAgICAgICAgIGZvbnRDb2xvcjogJyM0QTRBNEEnLFxuICAgICAgICAgICAgICBmb250RmFtaWx5OiAnTGF0bycsXG4gICAgICAgICAgICAgIGZvbnRTaXplOiAxMCxcbiAgICAgICAgICAgICAgZm9udFN0eWxlOiAnNDAwJ1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfVxuICAgIH1cbiAgfSkpO1xuXG4gIHByaXZhdGUgZGVmYXVsdERhdGFzZXRzOiBTaWduYWw8UGFydGlhbDxDaGFydERhdGFTZXRzPltdPiA9IGNvbXB1dGVkKCgpID0+XG4gICAgdGhpcy5kYXRhc2V0cygpPy5sZW5ndGhcbiAgICAgID8gdGhpcy5kYXRhc2V0cygpXG4gICAgICA6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBkZWZhdWx0RGF0YXNldHMsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoaXMuZGF0YSgpLm1hcCgoeyBiYWNrZ3JvdW5kQ29sb3IsIGNvbG9yIH0pID0+IGJhY2tncm91bmRDb2xvciB8fCBjb2xvciksXG4gICAgICAgICAgICBib3JkZXJDb2xvcjogdGhpcy5kYXRhKCkubWFwKCh7IGJvcmRlckNvbG9yLCBjb2xvciB9KSA9PiBib3JkZXJDb2xvciB8fCBjb2xvciksXG4gICAgICAgICAgICBkYXRhOiB0aGlzLmRhdGEoKS5tYXAoKHsgY291bnQgfSkgPT4gY291bnQpXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICk7XG5cbiAgcHJvdGVjdGVkIGRhdGFDb25maWc6IFNpZ25hbDxDaGFydERhdGE+ID0gY29tcHV0ZWQoKCkgPT4gKHtcbiAgICBkYXRhOiB7XG4gICAgICBkYXRhc2V0czogdGhpcy5kZWZhdWx0RGF0YXNldHMoKSxcbiAgICAgIGxhYmVsczogdGhpcy5kYXRhKCkubWFwKCh7IGxhYmVsIH0pID0+IGxhYmVsKVxuICAgIH1cbiAgfSkpO1xuICBwcm90ZWN0ZWQgY29uZmlndXJhdGlvbiA9IGNvbXB1dGVkKCgpID0+IG1lcmdlKGRlZmF1bHRTZXR0aW5ncywgdGhpcy5kZWZhdWx0Q29uZmlnKCksIHRoaXMuY29uZmlnKCkpKTtcbn1cbiIsIjxoZS1jaGFydCBbZGF0YV09XCJkYXRhQ29uZmlnKClcIiBbY29uZmlnXT1cImNvbmZpZ3VyYXRpb24oKVwiPjwvaGUtY2hhcnQ+XG4iXX0=
97
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFyLWNoYXJ0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jaGFydC9iYXItY2hhcnQvYmFyLWNoYXJ0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3NyYy9jaGFydC9iYXItY2hhcnQvYmFyLWNoYXJ0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUU1RixPQUFPLEtBQUssTUFBTSxjQUFjLENBQUM7QUFFakMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDOztBQVVwRCxNQUFNLGVBQWUsR0FBZ0M7SUFDbkQsSUFBSSxFQUFFLGVBQWU7SUFDckIsT0FBTyxFQUFFO1FBQ1AsTUFBTSxFQUFFLEVBQUU7UUFDVixTQUFTLEVBQUU7WUFDVCxRQUFRLEVBQUUsQ0FBQztTQUNaO1FBQ0QsUUFBUSxFQUFFO1lBQ1IsT0FBTyxFQUFFLEtBQUs7U0FDZjtRQUNELE1BQU0sRUFBRTtZQUNOLEtBQUssRUFBRTtnQkFDTDtvQkFDRSxPQUFPLEVBQUUsSUFBSTtvQkFDYixRQUFRLEVBQUUsTUFBTTtvQkFDaEIsU0FBUyxFQUFFO3dCQUNULE9BQU8sRUFBRSxLQUFLO3FCQUNmO29CQUNELEtBQUssRUFBRTt3QkFDTCxVQUFVLEVBQUUsUUFBUTtxQkFDZDtpQkFDVDthQUNGO1NBQ0Y7S0FDRjtDQUNGLENBQUM7QUFFRixNQUFNLGVBQWUsR0FBa0I7SUFDckMsYUFBYTtJQUNiLGFBQWEsRUFBRSxHQUFHO0lBQ2xCLFlBQVksRUFBRSxDQUFDO0lBQ2YsZUFBZSxFQUFFLEVBQUU7Q0FDcEIsQ0FBQztBQVVGLE1BQU0sT0FBTyxpQkFBaUI7SUFSOUI7UUFTWSxTQUFJLEdBQUcsS0FBSyxDQUFrQixFQUFFLENBQUMsQ0FBQztRQUNsQyxRQUFHLEdBQUcsS0FBSyxFQUFVLENBQUM7UUFDdEIsYUFBUSxHQUFHLEtBQUssQ0FBMkIsRUFBRSxDQUFDLENBQUM7UUFDL0MsV0FBTSxHQUFHLEtBQUssQ0FBOEIsRUFBRSxDQUFDLENBQUM7UUFFbEQsY0FBUyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDcEUsa0JBQWEsR0FBd0MsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFDM0UsT0FBTyxFQUFFO2dCQUNQLE1BQU0sRUFBRTtvQkFDTixLQUFLLEVBQUUsT0FBTztpQkFDZjtnQkFDRCxNQUFNLEVBQUU7b0JBQ04sS0FBSyxFQUFFO3dCQUNMOzRCQUNFLE9BQU8sRUFBRSxLQUFLOzRCQUNkLEtBQUssRUFBRTtnQ0FDTCxHQUFHLEVBQUUsQ0FBQztnQ0FDTixHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUU7NkJBQ3BCO3lCQUNGO3FCQUNGO29CQUNELEtBQUssRUFBRTt3QkFDTDs0QkFDRSxLQUFLLEVBQUU7Z0NBQ0wsU0FBUyxFQUFFLFNBQVM7Z0NBQ3BCLFVBQVUsRUFBRSxNQUFNO2dDQUNsQixRQUFRLEVBQUUsRUFBRTtnQ0FDWixTQUFTLEVBQUUsS0FBSzs2QkFDakI7eUJBQ0Y7cUJBQ0Y7aUJBQ0Y7YUFDRjtTQUNGLENBQUMsQ0FBQyxDQUFDO1FBRUksb0JBQWUsR0FBcUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUN4RSxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsTUFBTTtZQUNyQixDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNqQixDQUFDLENBQUM7Z0JBQ0U7b0JBQ0UsZUFBZTtvQkFDZixlQUFlLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsZUFBZSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsQ0FBQyxlQUFlLElBQUksS0FBSyxDQUFDO29CQUMxRixXQUFXLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsQ0FBQyxXQUFXLElBQUksS0FBSyxDQUFDO29CQUM5RSxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQztpQkFDNUM7YUFDRixDQUNOLENBQUM7UUFFUSxlQUFVLEdBQXNCLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1lBQ3hELElBQUksRUFBRTtnQkFDSixRQUFRLEVBQUUsSUFBSSxDQUFDLGVBQWUsRUFBRTtnQkFDaEMsTUFBTSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUM7YUFDOUM7U0FDRixDQUFDLENBQUMsQ0FBQztRQUNNLGtCQUFhLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLGFBQWEsRUFBRSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7S0FDdkc7OEdBeERZLGlCQUFpQjtrR0FBakIsaUJBQWlCLHVqQkN4RDlCLDhFQUNBLGdGRHFEWSxjQUFjOzsyRkFFYixpQkFBaUI7a0JBUjdCLFNBQVM7K0JBQ0UsY0FBYyxtQkFHUCx1QkFBdUIsQ0FBQyxNQUFNLGNBQ25DLElBQUksV0FDUCxDQUFDLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGNvbXB1dGVkLCBpbnB1dCwgU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDaGFydENvbmZpZ3VyYXRpb24sIENoYXJ0RGF0YSwgQ2hhcnREYXRhU2V0cyB9IGZyb20gJ2NoYXJ0LmpzJztcbmltcG9ydCBtZXJnZSBmcm9tICdsb2Rhc2gubWVyZ2UnO1xuXG5pbXBvcnQgeyBDaGFydENvbXBvbmVudCB9IGZyb20gJy4uL2NoYXJ0LmNvbXBvbmVudCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2hhcnREYXRhSXRlbSB7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIGNvdW50OiBudW1iZXI7XG4gIGNvbG9yPzogc3RyaW5nO1xuICBiYWNrZ3JvdW5kQ29sb3I/OiBzdHJpbmc7XG4gIGJvcmRlckNvbG9yPzogc3RyaW5nO1xufVxuXG5jb25zdCBkZWZhdWx0U2V0dGluZ3M6IFBhcnRpYWw8Q2hhcnRDb25maWd1cmF0aW9uPiA9IHtcbiAgdHlwZTogJ2hvcml6b250YWxCYXInLFxuICBvcHRpb25zOiB7XG4gICAgZXZlbnRzOiBbXSxcbiAgICBhbmltYXRpb246IHtcbiAgICAgIGR1cmF0aW9uOiAwXG4gICAgfSxcbiAgICB0b29sdGlwczoge1xuICAgICAgZW5hYmxlZDogZmFsc2VcbiAgICB9LFxuICAgIHNjYWxlczoge1xuICAgICAgeUF4ZXM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGRpc3BsYXk6IHRydWUsXG4gICAgICAgICAgcG9zaXRpb246ICdsZWZ0JyxcbiAgICAgICAgICBncmlkTGluZXM6IHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGZhbHNlXG4gICAgICAgICAgfSxcbiAgICAgICAgICB0aWNrczoge1xuICAgICAgICAgICAgY3Jvc3NBbGlnbjogJ2NlbnRlcidcbiAgICAgICAgICB9IGFzIGFueVxuICAgICAgICB9XG4gICAgICBdXG4gICAgfVxuICB9XG59O1xuXG5jb25zdCBkZWZhdWx0RGF0YXNldHM6IENoYXJ0RGF0YVNldHMgPSB7XG4gIC8vIGF4aXM6ICd5JyxcbiAgYmFyUGVyY2VudGFnZTogMC41LFxuICBiYXJUaGlja25lc3M6IDgsXG4gIG1heEJhclRoaWNrbmVzczogMTJcbn07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2hlLWJhci1jaGFydCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9iYXItY2hhcnQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9iYXItY2hhcnQuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDaGFydENvbXBvbmVudF1cbn0pXG5leHBvcnQgY2xhc3MgQmFyQ2hhcnRDb21wb25lbnQge1xuICBwcm90ZWN0ZWQgZGF0YSA9IGlucHV0PENoYXJ0RGF0YUl0ZW1bXT4oW10pO1xuICBwcm90ZWN0ZWQgbWF4ID0gaW5wdXQ8bnVtYmVyPigpO1xuICBwcm90ZWN0ZWQgZGF0YXNldHMgPSBpbnB1dDxQYXJ0aWFsPENoYXJ0RGF0YVNldHM+W10+KFtdKTtcbiAgcHJvdGVjdGVkIGNvbmZpZyA9IGlucHV0PFBhcnRpYWw8Q2hhcnRDb25maWd1cmF0aW9uPj4oe30pO1xuXG4gIHByaXZhdGUgbWF4Q29uZmlnID0gY29tcHV0ZWQoKCkgPT4gKHRoaXMubWF4KCkgPyB7IG1heDogdGhpcy5tYXgoKSB9IDoge30pKTtcbiAgcHJpdmF0ZSBkZWZhdWx0Q29uZmlnOiBTaWduYWw8UGFydGlhbDxDaGFydENvbmZpZ3VyYXRpb24+PiA9IGNvbXB1dGVkKCgpID0+ICh7XG4gICAgb3B0aW9uczoge1xuICAgICAgbGVnZW5kOiB7XG4gICAgICAgIGFsaWduOiAnc3RhcnQnXG4gICAgICB9LFxuICAgICAgc2NhbGVzOiB7XG4gICAgICAgIHhBeGVzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgZGlzcGxheTogZmFsc2UsXG4gICAgICAgICAgICB0aWNrczoge1xuICAgICAgICAgICAgICBtaW46IDAsXG4gICAgICAgICAgICAgIC4uLnRoaXMubWF4Q29uZmlnKClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIF0sXG4gICAgICAgIHlBeGVzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgdGlja3M6IHtcbiAgICAgICAgICAgICAgZm9udENvbG9yOiAnIzRBNEE0QScsXG4gICAgICAgICAgICAgIGZvbnRGYW1pbHk6ICdMYXRvJyxcbiAgICAgICAgICAgICAgZm9udFNpemU6IDEwLFxuICAgICAgICAgICAgICBmb250U3R5bGU6ICc0MDAnXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9XG4gICAgfVxuICB9KSk7XG5cbiAgcHJpdmF0ZSBkZWZhdWx0RGF0YXNldHM6IFNpZ25hbDxQYXJ0aWFsPENoYXJ0RGF0YVNldHM+W10+ID0gY29tcHV0ZWQoKCkgPT5cbiAgICB0aGlzLmRhdGFzZXRzKCk/Lmxlbmd0aFxuICAgICAgPyB0aGlzLmRhdGFzZXRzKClcbiAgICAgIDogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGRlZmF1bHREYXRhc2V0cyxcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogdGhpcy5kYXRhKCkubWFwKCh7IGJhY2tncm91bmRDb2xvciwgY29sb3IgfSkgPT4gYmFja2dyb3VuZENvbG9yIHx8IGNvbG9yKSxcbiAgICAgICAgICAgIGJvcmRlckNvbG9yOiB0aGlzLmRhdGEoKS5tYXAoKHsgYm9yZGVyQ29sb3IsIGNvbG9yIH0pID0+IGJvcmRlckNvbG9yIHx8IGNvbG9yKSxcbiAgICAgICAgICAgIGRhdGE6IHRoaXMuZGF0YSgpLm1hcCgoeyBjb3VudCB9KSA9PiBjb3VudClcbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgKTtcblxuICBwcm90ZWN0ZWQgZGF0YUNvbmZpZzogU2lnbmFsPENoYXJ0RGF0YT4gPSBjb21wdXRlZCgoKSA9PiAoe1xuICAgIGRhdGE6IHtcbiAgICAgIGRhdGFzZXRzOiB0aGlzLmRlZmF1bHREYXRhc2V0cygpLFxuICAgICAgbGFiZWxzOiB0aGlzLmRhdGEoKS5tYXAoKHsgbGFiZWwgfSkgPT4gbGFiZWwpXG4gICAgfVxuICB9KSk7XG4gIHByb3RlY3RlZCBjb25maWd1cmF0aW9uID0gY29tcHV0ZWQoKCkgPT4gbWVyZ2UoZGVmYXVsdFNldHRpbmdzLCB0aGlzLmRlZmF1bHRDb25maWcoKSwgdGhpcy5jb25maWcoKSkpO1xufVxuIiwiPGhlLWNoYXJ0IFtkYXRhXT1cImRhdGFDb25maWcoKVwiIFtjb25maWddPVwiY29uZmlndXJhdGlvbigpXCI+PC9oZS1jaGFydD5cbiJdfQ==
@@ -21,10 +21,10 @@ export class ChartComponent {
21
21
  }));
22
22
  }
23
23
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: ChartComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
24
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "17.3.8", type: ChartComponent, isStandalone: true, selector: "he-chart", inputs: { data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: false, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<div class=\"chart-container\" #container>\n <canvas [chartConfiguration]=\"configuration()\" [chartContainer]=\"container\"></canvas>\n</div>\n", styles: [":host{display:block;overflow:visible}.chart-container{height:100%;min-height:50px;position:relative}\n"], dependencies: [{ kind: "directive", type: ChartConfigurationDirective, selector: "[chartConfiguration]", inputs: ["chartConfiguration", "chartContainer"], exportAs: ["chart"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
24
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "17.3.8", type: ChartComponent, isStandalone: true, selector: "he-chart", inputs: { data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: false, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<div class=\"chart-container\" #container>\n <canvas [chartConfiguration]=\"configuration()\" [chartContainer]=\"container\"></canvas>\n</div>\n", styles: [":host{display:block;height:100%;overflow:visible}.chart-container{height:100%;min-height:50px;position:relative}\n"], dependencies: [{ kind: "directive", type: ChartConfigurationDirective, selector: "[chartConfiguration]", inputs: ["chartConfiguration", "chartContainer"], exportAs: ["chart"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
25
25
  }
26
26
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: ChartComponent, decorators: [{
27
27
  type: Component,
28
- args: [{ selector: 'he-chart', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [ChartConfigurationDirective], template: "<div class=\"chart-container\" #container>\n <canvas [chartConfiguration]=\"configuration()\" [chartContainer]=\"container\"></canvas>\n</div>\n", styles: [":host{display:block;overflow:visible}.chart-container{height:100%;min-height:50px;position:relative}\n"] }]
28
+ args: [{ selector: 'he-chart', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [ChartConfigurationDirective], template: "<div class=\"chart-container\" #container>\n <canvas [chartConfiguration]=\"configuration()\" [chartContainer]=\"container\"></canvas>\n</div>\n", styles: [":host{display:block;height:100%;overflow:visible}.chart-container{height:100%;min-height:50px;position:relative}\n"] }]
29
29
  }] });
30
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NoYXJ0L2NoYXJ0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uL3NyYy9jaGFydC9jaGFydC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFcEYsT0FBTyxLQUFLLE1BQU0sY0FBYyxDQUFDO0FBRWpDLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDOztBQUU5RSxNQUFNLGVBQWUsR0FBZ0M7SUFDbkQsT0FBTyxFQUFFO1FBQ1AsVUFBVSxFQUFFLElBQUk7UUFDaEIsbUJBQW1CLEVBQUUsS0FBSztRQUMxQixNQUFNLEVBQUU7WUFDTixPQUFPLEVBQUUsS0FBSztTQUNmO0tBQ0Y7Q0FDRixDQUFDO0FBVUYsTUFBTSxPQUFPLGNBQWM7SUFSM0I7UUFTWSxTQUFJLEdBQUcsS0FBSyxDQUFZLEVBQUUsQ0FBQyxDQUFDO1FBQzVCLFdBQU0sR0FBRyxLQUFLLENBQThCLEVBQUUsQ0FBQyxDQUFDO1FBRWhELGtCQUFhLEdBQUcsUUFBUSxDQUNoQyxHQUF1QixFQUFFLENBQUMsQ0FBQztZQUN6QixHQUFHLEtBQUssQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3hDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFO1NBQ2xCLENBQUMsQ0FDSCxDQUFDO0tBQ0g7OEdBVlksY0FBYztrR0FBZCxjQUFjLGdVQ3hCM0IsbUpBR0EsZ0tEbUJZLDJCQUEyQjs7MkZBRTFCLGNBQWM7a0JBUjFCLFNBQVM7K0JBQ0UsVUFBVSxtQkFHSCx1QkFBdUIsQ0FBQyxNQUFNLGNBQ25DLElBQUksV0FDUCxDQUFDLDJCQUEyQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgY29tcHV0ZWQsIGlucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDaGFydENvbmZpZ3VyYXRpb24sIENoYXJ0RGF0YSB9IGZyb20gJ2NoYXJ0LmpzJztcbmltcG9ydCBtZXJnZSBmcm9tICdsb2Rhc2gubWVyZ2UnO1xuXG5pbXBvcnQgeyBDaGFydENvbmZpZ3VyYXRpb25EaXJlY3RpdmUgfSBmcm9tICcuL2NoYXJ0LWNvbmZpZ3VyYXRpb24uZGlyZWN0aXZlJztcblxuY29uc3QgZGVmYXVsdFNldHRpbmdzOiBQYXJ0aWFsPENoYXJ0Q29uZmlndXJhdGlvbj4gPSB7XG4gIG9wdGlvbnM6IHtcbiAgICByZXNwb25zaXZlOiB0cnVlLFxuICAgIG1haW50YWluQXNwZWN0UmF0aW86IGZhbHNlLFxuICAgIGxlZ2VuZDoge1xuICAgICAgZGlzcGxheTogZmFsc2VcbiAgICB9XG4gIH1cbn07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2hlLWNoYXJ0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NoYXJ0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY2hhcnQuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDaGFydENvbmZpZ3VyYXRpb25EaXJlY3RpdmVdXG59KVxuZXhwb3J0IGNsYXNzIENoYXJ0Q29tcG9uZW50IHtcbiAgcHJvdGVjdGVkIGRhdGEgPSBpbnB1dDxDaGFydERhdGE+KHt9KTtcbiAgcHJvdGVjdGVkIGNvbmZpZyA9IGlucHV0PFBhcnRpYWw8Q2hhcnRDb25maWd1cmF0aW9uPj4oe30pO1xuXG4gIHByb3RlY3RlZCBjb25maWd1cmF0aW9uID0gY29tcHV0ZWQoXG4gICAgKCk6IENoYXJ0Q29uZmlndXJhdGlvbiA9PiAoe1xuICAgICAgLi4ubWVyZ2UoZGVmYXVsdFNldHRpbmdzLCB0aGlzLmNvbmZpZygpKSxcbiAgICAgIGRhdGE6IHRoaXMuZGF0YSgpXG4gICAgfSlcbiAgKTtcbn1cbiIsIjxkaXYgY2xhc3M9XCJjaGFydC1jb250YWluZXJcIiAjY29udGFpbmVyPlxuICA8Y2FudmFzIFtjaGFydENvbmZpZ3VyYXRpb25dPVwiY29uZmlndXJhdGlvbigpXCIgW2NoYXJ0Q29udGFpbmVyXT1cImNvbnRhaW5lclwiPjwvY2FudmFzPlxuPC9kaXY+XG4iXX0=
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NoYXJ0L2NoYXJ0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uL3NyYy9jaGFydC9jaGFydC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFcEYsT0FBTyxLQUFLLE1BQU0sY0FBYyxDQUFDO0FBRWpDLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDOztBQUU5RSxNQUFNLGVBQWUsR0FBZ0M7SUFDbkQsT0FBTyxFQUFFO1FBQ1AsVUFBVSxFQUFFLElBQUk7UUFDaEIsbUJBQW1CLEVBQUUsS0FBSztRQUMxQixNQUFNLEVBQUU7WUFDTixPQUFPLEVBQUUsS0FBSztTQUNmO0tBQ0Y7Q0FDRixDQUFDO0FBVUYsTUFBTSxPQUFPLGNBQWM7SUFSM0I7UUFTWSxTQUFJLEdBQUcsS0FBSyxDQUFZLEVBQUUsQ0FBQyxDQUFDO1FBQzVCLFdBQU0sR0FBRyxLQUFLLENBQThCLEVBQUUsQ0FBQyxDQUFDO1FBRWhELGtCQUFhLEdBQUcsUUFBUSxDQUNoQyxHQUF1QixFQUFFLENBQUMsQ0FBQztZQUN6QixHQUFHLEtBQUssQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3hDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFO1NBQ2xCLENBQUMsQ0FDSCxDQUFDO0tBQ0g7OEdBVlksY0FBYztrR0FBZCxjQUFjLGdVQ3hCM0IsbUpBR0EsNEtEbUJZLDJCQUEyQjs7MkZBRTFCLGNBQWM7a0JBUjFCLFNBQVM7K0JBQ0UsVUFBVSxtQkFHSCx1QkFBdUIsQ0FBQyxNQUFNLGNBQ25DLElBQUksV0FDUCxDQUFDLDJCQUEyQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgY29tcHV0ZWQsIGlucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDaGFydENvbmZpZ3VyYXRpb24sIENoYXJ0RGF0YSB9IGZyb20gJ2NoYXJ0LmpzJztcbmltcG9ydCBtZXJnZSBmcm9tICdsb2Rhc2gubWVyZ2UnO1xuXG5pbXBvcnQgeyBDaGFydENvbmZpZ3VyYXRpb25EaXJlY3RpdmUgfSBmcm9tICcuL2NoYXJ0LWNvbmZpZ3VyYXRpb24uZGlyZWN0aXZlJztcblxuY29uc3QgZGVmYXVsdFNldHRpbmdzOiBQYXJ0aWFsPENoYXJ0Q29uZmlndXJhdGlvbj4gPSB7XG4gIG9wdGlvbnM6IHtcbiAgICByZXNwb25zaXZlOiB0cnVlLFxuICAgIG1haW50YWluQXNwZWN0UmF0aW86IGZhbHNlLFxuICAgIGxlZ2VuZDoge1xuICAgICAgZGlzcGxheTogZmFsc2VcbiAgICB9XG4gIH1cbn07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2hlLWNoYXJ0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NoYXJ0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY2hhcnQuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDaGFydENvbmZpZ3VyYXRpb25EaXJlY3RpdmVdXG59KVxuZXhwb3J0IGNsYXNzIENoYXJ0Q29tcG9uZW50IHtcbiAgcHJvdGVjdGVkIGRhdGEgPSBpbnB1dDxDaGFydERhdGE+KHt9KTtcbiAgcHJvdGVjdGVkIGNvbmZpZyA9IGlucHV0PFBhcnRpYWw8Q2hhcnRDb25maWd1cmF0aW9uPj4oe30pO1xuXG4gIHByb3RlY3RlZCBjb25maWd1cmF0aW9uID0gY29tcHV0ZWQoXG4gICAgKCk6IENoYXJ0Q29uZmlndXJhdGlvbiA9PiAoe1xuICAgICAgLi4ubWVyZ2UoZGVmYXVsdFNldHRpbmdzLCB0aGlzLmNvbmZpZygpKSxcbiAgICAgIGRhdGE6IHRoaXMuZGF0YSgpXG4gICAgfSlcbiAgKTtcbn1cbiIsIjxkaXYgY2xhc3M9XCJjaGFydC1jb250YWluZXJcIiAjY29udGFpbmVyPlxuICA8Y2FudmFzIFtjaGFydENvbmZpZ3VyYXRpb25dPVwiY29uZmlndXJhdGlvbigpXCIgW2NoYXJ0Q29udGFpbmVyXT1cImNvbnRhaW5lclwiPjwvY2FudmFzPlxuPC9kaXY+XG4iXX0=
@@ -2,6 +2,30 @@ import get from 'lodash.get';
2
2
  import { EmissionMethodTier } from '@hestia-earth/schema';
3
3
  import { propertyValue } from '@hestia-earth/utils/dist/term';
4
4
  import { getDefaultModelId } from '@hestia-earth/glossary';
5
+ /* eslint-disable-next-line complexity */
6
+ export const formatDate = (date, isStart = false) => date?.length === 4
7
+ ? isStart
8
+ ? new Date(`${date}-01-01`)
9
+ : new Date(`${date}-12-31`)
10
+ : date?.length === 7
11
+ ? isStart
12
+ ? new Date(`${date}-15`)
13
+ : new Date(`${date}-14`)
14
+ : date
15
+ ? new Date(date)
16
+ : undefined;
17
+ export const getDatesBetween = (startDate, endDate) => {
18
+ const start = formatDate(startDate, true);
19
+ const end = formatDate(endDate, false);
20
+ const dates = [];
21
+ let date = new Date(start);
22
+ while (date <= end) {
23
+ dates.push(date);
24
+ date = new Date(date);
25
+ date.setMonth(date.getMonth() + 1);
26
+ }
27
+ return dates;
28
+ };
5
29
  export const filterBlankNode = (filterTerm) => ({ term }) => !filterTerm || term?.name?.toLowerCase()?.includes(filterTerm.toLowerCase());
6
30
  export const ignoreKeys = ['@type', 'type', 'added', 'updated', 'addedVersion', 'updatedVersion'];
7
31
  export const isValidKey = (key) => !ignoreKeys.includes(key);
@@ -91,4 +115,4 @@ export const groupNodesByTerm = (nodes = [], key, originalValues = [], includeNo
91
115
  });
92
116
  return groups;
93
117
  };
94
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS11dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tb24vbm9kZS11dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEdBQUcsTUFBTSxZQUFZLENBQUM7QUFDN0IsT0FBTyxFQUtMLGtCQUFrQixFQU9uQixNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFBRSxhQUFhLEVBQXFCLE1BQU0sK0JBQStCLENBQUM7QUFDakYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFM0QsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUMxQixDQUFDLFVBQWtCLEVBQUUsRUFBRSxDQUN2QixDQUFDLEVBQUUsSUFBSSxFQUFrQixFQUFFLEVBQUUsQ0FDM0IsQ0FBQyxVQUFVLElBQUksSUFBSSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsRUFBRSxRQUFRLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7QUFFakYsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLGNBQWMsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO0FBRWxHLE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxDQUFDLEdBQVcsRUFBRSxFQUFFLENBQUMsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBRXJFLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLENBQUMsWUFBbUIsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFlLEVBQUUsRUFBRSxDQUMvRSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLEtBQUss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LENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUU7UUFDaEMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ3JDLE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3ZDLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDakMsTUFBTSxhQUFhLEdBQUcsR0FBRyxDQUFDLGNBQWMsRUFBRSxJQUFJLEtBQUssS0FBSyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQ3ZFLENBQUMsR0FBUSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLE1BQU0sQ0FDekMsQ0FBQztZQUNGLElBQUksYUFBYSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDN0IsTUFBTSxLQUFLLEdBQUcsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQVksRUFBRSxJQUFTLEVBQUUsRUFBRSxDQUFDLG9CQUFvQixDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQzdHLEtBQUssQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsYUFBYSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQ3pFLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBRUgsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGdldCBmcm9tICdsb2Rhc2guZ2V0JztcbmltcG9ydCB7XG4gIFRlcm0sXG4gIElDeWNsZUpTT05MRCxcbiAgSVNpdGVKU09OTEQsXG4gIElJbXBhY3RBc3Nlc3NtZW50SlNPTkxELFxuICBFbWlzc2lvbk1ldGhvZFRpZXIsXG4gIElUZXJtSlNPTkxELFxuICBJbmRpY2F0b3IsXG4gIEFuaW1hbCxcbiAgVHJhbnNmb3JtYXRpb24sXG4gIGJsYW5rTm9kZXNUeXBlLFxuICBibGFua05vZGVzS2V5XG59IGZyb20gJ0BoZXN0aWEtZWFydGgvc2NoZW1hJztcbmltcG9ydCB7IHByb3BlcnR5VmFsdWUsIHByb3BlcnR5VmFsdWVUeXBlIH0gZnJvbSAnQGhlc3RpYS1lYXJ0aC91dGlscy9kaXN0L3Rlcm0nO1xuaW1wb3J0IHsgZ2V0RGVmYXVsdE1vZGVsSWQgfSBmcm9tICdAaGVzdGlhLWVhcnRoL2dsb3NzYXJ5JztcblxuZXhwb3J0IGNvbnN0IGZpbHRlckJsYW5rTm9kZSA9XG4gIChmaWx0ZXJUZXJtOiBzdHJpbmcpID0+XG4gICh7IHRlcm0gfTogYmxhbmtOb2Rlc1R5cGUpID0+XG4gICAgIWZpbHRlclRlcm0gfHwgdGVybT8ubmFtZT8udG9Mb3dlckNhc2UoKT8uaW5jbHVkZXMoZmlsdGVyVGVybS50b0xvd2VyQ2FzZSgpKTtcblxuZXhwb3J0IGNvbnN0IGlnbm9yZUtleXMgPSBbJ0B0eXBlJywgJ3R5cGUnLCAnYWRkZWQnLCAndXBkYXRlZCcsICdhZGRlZFZlcnNpb24nLCAndXBkYXRlZFZlcnNpb24nXTtcblxuZXhwb3J0IGNvbnN0IGlzVmFsaWRLZXkgPSAoa2V5OiBzdHJpbmcpID0+ICFpZ25vcmVLZXlzLmluY2x1ZGVzKGtleSk7XG5cbmV4cG9ydCBjb25zdCBpc01ldGhvZE1vZGVsQWxsb3dlZCA9IChmaWx0ZXJNZXRob2Q/OiBUZXJtKSA9PiAobm9kZTogSW5kaWNhdG9yKSA9PlxuICBub2RlLm1ldGhvZE1vZGVsPy5bJ0BpZCddID09PSAoZmlsdGVyTWV0aG9kID8gZmlsdGVyTWV0aG9kWydAaWQnXSA6IGdldERlZmF1bHRNb2RlbElkKG5vZGUudGVybT8uWydAaWQnXSkpO1xuXG5leHBvcnQgZW51bSBOb2RlS2V5U3RhdGUge1xuICBhZGRlZCA9ICdhZGRlZCcsXG4gIHVwZGF0ZWQgPSAndXBkYXRlZCcsXG4gIGRlbGV0ZWQgPSAnZGVsZXRlZCcsXG4gIHVuY2hhbmdlZCA9ICd1bmNoYW5nZWQnXG59XG5cbmV4cG9ydCBjb25zdCBpc1N0YXRlID0gKG5vZGU6IGJsYW5rTm9kZXNUeXBlLCBrZXk6IHN0cmluZywgc3RhdGU6IE5vZGVLZXlTdGF0ZSkgPT5cbiAgc3RhdGUgaW4gbm9kZSEgJiYgKHR5cGVvZiBub2RlIVtzdGF0ZV0gPT09ICdib29sZWFuJyA/IG5vZGUhW3N0YXRlXSA6IG5vZGUhW3N0YXRlXS5pbmNsdWRlcyhrZXkpKTtcblxuZXhwb3J0IGludGVyZmFjZSBJR3JvdXBlZE5vZGU8VD4ge1xuICAvLyBzdG9yZSB0aGUgbm9kZSB3aXRoIHRoZSBoaWdoZXN0IFwic3RhdGVcIlxuICBub2RlOiBUO1xuICBub2RlczogVFtdO1xuICBpbmRleDogbnVtYmVyO1xuICB2YWx1ZTogcHJvcGVydHlWYWx1ZVR5cGVbXTtcbiAgZGF0ZXM/OiBhbnlbXTtcbiAgc2Q/OiBudW1iZXJbXTtcbiAgbWluPzogbnVtYmVyW107XG4gIG1heD86IG51bWJlcltdO1xuICBpbnB1dHM/OiBhbnlbXTtcbiAgZGVwdGhVcHBlcj86IG51bWJlcltdO1xuICBkZXB0aExvd2VyPzogbnVtYmVyW107XG4gIHN0YXJ0RGF0ZT86IHN0cmluZ1tdO1xuICBlbmREYXRlPzogc3RyaW5nW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUdyb3VwZWROb2Rlc1ZhbHVlczxUPiB7XG4gIFtub2RlSWQ6IHN0cmluZ106IElHcm91cGVkTm9kZTxUPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJR3JvdXBlZE5vZGVzVmFsdWU8VD4ge1xuICB0ZXJtOiBJVGVybUpTT05MRDtcbiAgbWV0aG9kVGllcj86IEVtaXNzaW9uTWV0aG9kVGllcjtcbiAgLyoqXG4gICAqIEVuYWJsZSBvcmRlcmluZyBueSBtZXRob2RUaWVyXG4gICAqL1xuICBtZXRob2RUaWVyT3JkZXI6IG51bWJlcjtcbiAgdmFsdWVzOiBJR3JvdXBlZE5vZGVzVmFsdWVzPFQ+O1xuICBvcmlnaW5hbFZhbHVlczoge1xuICAgIFtub2RlSWQ6IHN0cmluZ106IHtcbiAgICAgIHZhbHVlOiBwcm9wZXJ0eVZhbHVlVHlwZTtcbiAgICB9O1xuICB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElHcm91cGVkTm9kZXM8VD4ge1xuICBbdGVybUlkOiBzdHJpbmddOiBJR3JvdXBlZE5vZGVzVmFsdWU8VD47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUdyb3VwZWRLZXlzPFQ+IHtcbiAga2V5OiBzdHJpbmc7XG4gIHZhbHVlOiBJR3JvdXBlZE5vZGVzVmFsdWU8VD47XG59XG5cbmV4cG9ydCBjb25zdCBncm91cHBlZEtleXMgPSA8VD4odmFsdWVzOiB7IFtrZXk6IHN0cmluZ106IFQgfSk6IHsga2V5OiBzdHJpbmc7IHZhbHVlOiBUIH1bXSA9PlxuICBPYmplY3QuZW50cmllcyh2YWx1ZXMpLm1hcCgoW2tleSwgdmFsdWVdKSA9PiAoeyBrZXksIHZhbHVlIH0pKTtcblxuY29uc3QgY29uY2F0QmxhbmtOb2RlVmFsdWUgPSAodmFsdWU6IGFueSwgbmV3VmFsdWU6IGFueSkgPT4ge1xuICBjb25zdCB2YWx1ZUFycmF5ID0gQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZSA6IFt2YWx1ZV07XG4gIGNvbnN0IG5ld1ZhbHVlQXJyYXkgPSBBcnJheS5pc0FycmF5KG5ld1ZhbHVlKSA/IG5ld1ZhbHVlIDogW25ld1ZhbHVlXTtcbiAgcmV0dXJuIFsuLi52YWx1ZUFycmF5LCAuLi5uZXdWYWx1ZUFycmF5XTtcbn07XG5cbmV4cG9ydCBjb25zdCBtZXRob2RUaWVyT3JkZXIgPSAobWV0aG9kVGllcjogRW1pc3Npb25NZXRob2RUaWVyKSA9PlxuICBbXG4gICAgRW1pc3Npb25NZXRob2RUaWVyLm1lYXN1cmVkLFxuICAgIEVtaXNzaW9uTWV0aG9kVGllclsndGllciAzJ10sXG4gICAgRW1pc3Npb25NZXRob2RUaWVyWyd0aWVyIDInXSxcbiAgICBFbWlzc2lvbk1ldGhvZFRpZXJbJ3RpZXIgMSddLFxuICAgIEVtaXNzaW9uTWV0aG9kVGllci5iYWNrZ3JvdW5kLFxuICAgIEVtaXNzaW9uTWV0aG9kVGllclsnbm90IHJlbGV2YW50J11cbiAgXS5pbmRleE9mKG1ldGhvZFRpZXIpO1xuXG5leHBvcnQgY29uc3QgZ3JvdXBwZWRWYWx1ZUtleXMgPSBbXG4gICdkYXRlcycsXG4gICdzZCcsXG4gICdtaW4nLFxuICAnbWF4JyxcbiAgJ2lucHV0cycsXG4gICdkZXB0aFVwcGVyJyxcbiAgJ2RlcHRoTG93ZXInLFxuICAnc3RhcnREYXRlJyxcbiAgJ2VuZERhdGUnLFxuICAnbWV0aG9kVGllcicsXG4gICdtZXRob2RNb2RlbCcsXG4gICdtb2RlbCcsXG4gICdtZXRob2QnXG5dO1xuXG5jb25zdCBpc0hpZ2hlclN0YXRlID0gKHNvdXJjZU5vZGU6IGJsYW5rTm9kZXNUeXBlLCBuZXdOb2RlOiBibGFua05vZGVzVHlwZSkgPT5cbiAgIXNvdXJjZU5vZGUgfHxcbiAgaXNTdGF0ZShuZXdOb2RlLCAndmFsdWUnLCBOb2RlS2V5U3RhdGUudXBkYXRlZCkgfHxcbiAgKCFpc1N0YXRlKHNvdXJjZU5vZGUsICd2YWx1ZScsIE5vZGVLZXlTdGF0ZS51cGRhdGVkKSAmJiBpc1N0YXRlKG5ld05vZGUsICd2YWx1ZScsIE5vZGVLZXlTdGF0ZS5hZGRlZCkpO1xuXG5jb25zdCBncm91cE5vZGVLZXkgPSAoeyB0ZXJtIH06IGFueSkgPT4gdGVybT8ubmFtZSB8fCB0ZXJtPy5bJ0BpZCddO1xuXG5leHBvcnQgY29uc3QgZ3JvdXBOb2Rlc0J5VGVybSA9IDxcbiAgVCBleHRlbmRzIElDeWNsZUpTT05MRCB8IElJbXBhY3RBc3Nlc3NtZW50SlNPTkxEIHwgSVNpdGVKU09OTEQgfCBBbmltYWwgfCBUcmFuc2Zvcm1hdGlvbixcbiAgUlxuPihcbiAgbm9kZXM6IFRbXSA9IFtdLFxuICBrZXk6IGJsYW5rTm9kZXNLZXksXG4gIG9yaWdpbmFsVmFsdWVzOiBUW10gPSBbXSxcbiAgaW5jbHVkZU5vZGUgPSAoX25vZGU6IGFueSkgPT4gdHJ1ZVxuKTogSUdyb3VwZWROb2RlczxSPiA9PiB7XG4gIGNvbnN0IGdyb3VwczogSUdyb3VwZWROb2RlczxSPiA9IG5vZGVzLnJlZHVjZShcbiAgICAocHJldiwgbm9kZSwgaW5kZXgpID0+XG4gICAgICAobm9kZVtrZXldIHx8IFtdKS5yZWR1Y2UoKGdyb3VwLCBibGFua05vZGUpID0+IHtcbiAgICAgICAgLy8gc2tpcCBub2RlIGJhc2VkIG9uIGNvbmRpdGlvblxuICAgICAgICBpZiAoIWluY2x1ZGVOb2RlKGJsYW5rTm9kZSkpIHtcbiAgICAgICAgICByZXR1cm4gZ3JvdXA7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBub2RlSWQgPSBub2RlWydAaWQnXTtcbiAgICAgICAgY29uc3QgZ3JvdXBlZEtleSA9IGdyb3VwTm9kZUtleShibGFua05vZGUpO1xuICAgICAgICBncm91cFtncm91cGVkS2V5XSA9IGdyb3VwW2dyb3VwZWRLZXldIHx8IHtcbiAgICAgICAgICB0ZXJtOiBibGFua05vZGUudGVybSxcbiAgICAgICAgICBtZXRob2RUaWVyOiBibGFua05vZGUubWV0aG9kVGllcixcbiAgICAgICAgICBtZXRob2RUaWVyT3JkZXI6IG1ldGhvZFRpZXJPcmRlcihibGFua05vZGUubWV0aG9kVGllciksXG4gICAgICAgICAgdmFsdWVzOiB7fSxcbiAgICAgICAgICBvcmlnaW5hbFZhbHVlczoge31cbiAgICAgICAgfTtcbiAgICAgICAgZ3JvdXBbZ3JvdXBlZEtleV0udmFsdWVzW25vZGVJZF0gPSBncm91cFtncm91cGVkS2V5XS52YWx1ZXNbbm9kZUlkXSB8fCB7IGluZGV4LCBub2RlczogW10sIHZhbHVlOiBbXSB9O1xuICAgICAgICBncm91cFtncm91cGVkS2V5XS52YWx1ZXNbbm9kZUlkXS5ub2RlID0gaXNIaWdoZXJTdGF0ZShncm91cFtncm91cGVkS2V5XS52YWx1ZXNbbm9kZUlkXS5ub2RlLCBibGFua05vZGUpXG4gICAgICAgICAgPyBibGFua05vZGVcbiAgICAgICAgICA6IGdyb3VwW2dyb3VwZWRLZXldLnZhbHVlc1tub2RlSWRdLm5vZGU7XG4gICAgICAgIGdyb3VwW2dyb3VwZWRLZXldLnZhbHVlc1tub2RlSWRdLm5vZGVzLnB1c2goYmxhbmtOb2RlKTtcbiAgICAgICAgZ3JvdXBbZ3JvdXBlZEtleV0udmFsdWVzW25vZGVJZF0udmFsdWUgPSBjb25jYXRCbGFua05vZGVWYWx1ZShcbiAgICAgICAgICBncm91cFtncm91cGVkS2V5XS52YWx1ZXNbbm9kZUlkXS52YWx1ZSxcbiAgICAgICAgICBibGFua05vZGUudmFsdWVcbiAgICAgICAgKTtcbiAgICAgICAgZ3JvdXBwZWRWYWx1ZUtleXMuZm9yRWFjaChhcnJheUtleSA9PiB7XG4gICAgICAgICAgY29uc3QgbmV3VmFsdWUgPSBnZXQoYmxhbmtOb2RlLCBhcnJheUtleSwgW10pO1xuICAgICAgICAgIGdyb3VwW2dyb3VwZWRLZXldLnZhbHVlc1tub2RlSWRdW2FycmF5S2V5XSA9IFtcbiAgICAgICAgICAgIC4uLihncm91cFtncm91cGVkS2V5XS52YWx1ZXNbbm9kZUlkXVthcnJheUtleV0gfHwgW10pLFxuICAgICAgICAgICAgLi4uKEFycmF5LmlzQXJyYXkobmV3VmFsdWUpID8gbmV3VmFsdWUgOiBbbmV3VmFsdWVdKVxuICAgICAgICAgIF07XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gZ3JvdXA7XG4gICAgICB9LCBwcmV2KSxcbiAgICB7fSBhcyBJR3JvdXBlZE5vZGVzPFI+XG4gICk7XG5cbiAgLy8gY29tcGlsZSBvcmlnaW5hbCB2YWx1ZXNcbiAgT2JqZWN0LnZhbHVlcyhncm91cHMpLm1hcChncm91cCA9PiB7XG4gICAgT2JqZWN0LmtleXMoZ3JvdXAudmFsdWVzKS5tYXAobm9kZUlkID0+IHtcbiAgICAgIGNvbnN0IHsgaW5kZXggfSA9IGdyb3VwLnZhbHVlc1tub2RlSWRdO1xuICAgICAgY29uc3QgdGVybUlkID0gZ3JvdXAudGVybVsnQGlkJ107XG4gICAgICBjb25zdCBvcmlnaW5hbFZhbHVlID0gZ2V0KG9yaWdpbmFsVmFsdWVzLCBgWyR7aW5kZXh9XS4ke2tleX1gLCBbXSkuZmlsdGVyKFxuICAgICAgICAodmFsOiBhbnkpID0+IHZhbC50ZXJtWydAaWQnXSA9PT0gdGVybUlkXG4gICAgICApO1xuICAgICAgaWYgKG9yaWdpbmFsVmFsdWUubGVuZ3RoID4gMCkge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IG9yaWdpbmFsVmFsdWUucmVkdWNlKChhcnJheTogYW55W10sIGN1cnI6IGFueSkgPT4gY29uY2F0QmxhbmtOb2RlVmFsdWUoYXJyYXksIGN1cnIudmFsdWUpLCBbXSk7XG4gICAgICAgIGdyb3VwLm9yaWdpbmFsVmFsdWVzW25vZGVJZF0gPSB7IHZhbHVlOiBwcm9wZXJ0eVZhbHVlKHZhbHVlLCB0ZXJtSWQpIH07XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xuXG4gIHJldHVybiBncm91cHM7XG59O1xuIl19
118
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS11dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tb24vbm9kZS11dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEdBQUcsTUFBTSxZQUFZLENBQUM7QUFDN0IsT0FBTyxFQUtMLGtCQUFrQixFQU9uQixNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFBRSxhQUFhLEVBQXFCLE1BQU0sK0JBQStCLENBQUM7QUFDakYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFM0QseUNBQXlDO0FBQ3pDLE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxDQUFDLElBQVksRUFBRSxPQUFPLEdBQUcsS0FBSyxFQUFFLEVBQUUsQ0FDMUQsSUFBSSxFQUFFLE1BQU0sS0FBSyxDQUFDO0lBQ2hCLENBQUMsQ0FBQyxPQUFPO1FBQ1AsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLEdBQUcsSUFBSSxRQUFRLENBQUM7UUFDM0IsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLEdBQUcsSUFBSSxRQUFRLENBQUM7SUFDN0IsQ0FBQyxDQUFDLElBQUksRUFBRSxNQUFNLEtBQUssQ0FBQztRQUNsQixDQUFDLENBQUMsT0FBTztZQUNQLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxHQUFHLElBQUksS0FBSyxDQUFDO1lBQ3hCLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxHQUFHLElBQUksS0FBSyxDQUFDO1FBQzFCLENBQUMsQ0FBQyxJQUFJO1lBQ0osQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQztZQUNoQixDQUFDLENBQUMsU0FBUyxDQUFDO0FBRXBCLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxDQUFDLFNBQWlCLEVBQUUsT0FBZSxFQUFFLEVBQUU7SUFDcEUsTUFBTSxLQUFLLEdBQUcsVUFBVSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUMxQyxN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O1xuaW1wb3J0IHtcbiAgVGVybSxcbiAgSUN5Y2xlSlNPTkxELFxuICBJU2l0ZUpTT05MRCxcbiAgSUltcGFjdEFzc2Vzc21lbnRKU09OTEQsXG4gIEVtaXNzaW9uTWV0aG9kVGllcixcbiAgSVRlcm1KU09OTEQsXG4gIEluZGljYXRvcixcbiAgQW5pbWFsLFxuICBUcmFuc2Zvcm1hdGlvbixcbiAgYmxhbmtOb2Rlc1R5cGUsXG4gIGJsYW5rTm9kZXNLZXlcbn0gZnJvbSAnQGhlc3RpYS1lYXJ0aC9zY2hlbWEnO1xuaW1wb3J0IHsgcHJvcGVydHlWYWx1ZSwgcHJvcGVydHlWYWx1ZVR5cGUgfSBmcm9tICdAaGVzdGlhLWVhcnRoL3V0aWxzL2Rpc3QvdGVybSc7XG5pbXBvcnQgeyBnZXREZWZhdWx0TW9kZWxJZCB9IGZyb20gJ0BoZXN0aWEtZWFydGgvZ2xvc3NhcnknO1xuXG4vKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgY29tcGxleGl0eSAqL1xuZXhwb3J0IGNvbnN0IGZvcm1hdERhdGUgPSAoZGF0ZTogc3RyaW5nLCBpc1N0YXJ0ID0gZmFsc2UpID0+XG4gIGRhdGU/Lmxlbmd0aCA9PT0gNFxuICAgID8gaXNTdGFydFxuICAgICAgPyBuZXcgRGF0ZShgJHtkYXRlfS0wMS0wMWApXG4gICAgICA6IG5ldyBEYXRlKGAke2RhdGV9LTEyLTMxYClcbiAgICA6IGRhdGU/Lmxlbmd0aCA9PT0gN1xuICAgICAgPyBpc1N0YXJ0XG4gICAgICAgID8gbmV3IERhdGUoYCR7ZGF0ZX0tMTVgKVxuICAgICAgICA6IG5ldyBEYXRlKGAke2RhdGV9LTE0YClcbiAgICAgIDogZGF0ZVxuICAgICAgICA/IG5ldyBEYXRlKGRhdGUpXG4gICAgICAgIDogdW5kZWZpbmVkO1xuXG5leHBvcnQgY29uc3QgZ2V0RGF0ZXNCZXR3ZWVuID0gKHN0YXJ0RGF0ZTogc3RyaW5nLCBlbmREYXRlOiBzdHJpbmcpID0+IHtcbiAgY29uc3Qgc3RhcnQgPSBmb3JtYXREYXRlKHN0YXJ0RGF0ZSwgdHJ1ZSk7XG4gIGNvbnN0IGVuZCA9IGZvcm1hdERhdGUoZW5kRGF0ZSwgZmFsc2UpO1xuICBjb25zdCBkYXRlczogRGF0ZVtdID0gW107XG5cbiAgbGV0IGRhdGUgPSBuZXcgRGF0ZShzdGFydCk7XG4gIHdoaWxlIChkYXRlIDw9IGVuZCkge1xuICAgIGRhdGVzLnB1c2goZGF0ZSk7XG4gICAgZGF0ZSA9IG5ldyBEYXRlKGRhdGUpO1xuICAgIGRhdGUuc2V0TW9udGgoZGF0ZS5nZXRNb250aCgpICsgMSk7XG4gIH1cblxuICByZXR1cm4gZGF0ZXM7XG59O1xuXG5leHBvcnQgY29uc3QgZmlsdGVyQmxhbmtOb2RlID1cbiAgKGZpbHRlclRlcm06IHN0cmluZykgPT5cbiAgKHsgdGVybSB9OiBibGFua05vZGVzVHlwZSkgPT5cbiAgICAhZmlsdGVyVGVybSB8fCB0ZXJtPy5uYW1lPy50b0xvd2VyQ2FzZSgpPy5pbmNsdWRlcyhmaWx0ZXJUZXJtLnRvTG93ZXJDYXNlKCkpO1xuXG5leHBvcnQgY29uc3QgaWdub3JlS2V5cyA9IFsnQHR5cGUnLCAndHlwZScsICdhZGRlZCcsICd1cGRhdGVkJywgJ2FkZGVkVmVyc2lvbicsICd1cGRhdGVkVmVyc2lvbiddO1xuXG5leHBvcnQgY29uc3QgaXNWYWxpZEtleSA9IChrZXk6IHN0cmluZykgPT4gIWlnbm9yZUtleXMuaW5jbHVkZXMoa2V5KTtcblxuZXhwb3J0IGNvbnN0IGlzTWV0aG9kTW9kZWxBbGxvd2VkID0gKGZpbHRlck1ldGhvZD86IFRlcm0pID0+IChub2RlOiBJbmRpY2F0b3IpID0+XG4gIG5vZGUubWV0aG9kTW9kZWw/LlsnQGlkJ10gPT09IChmaWx0ZXJNZXRob2QgPyBmaWx0ZXJNZXRob2RbJ0BpZCddIDogZ2V0RGVmYXVsdE1vZGVsSWQobm9kZS50ZXJtPy5bJ0BpZCddKSk7XG5cbmV4cG9ydCBlbnVtIE5vZGVLZXlTdGF0ZSB7XG4gIGFkZGVkID0gJ2FkZGVkJyxcbiAgdXBkYXRlZCA9ICd1cGRhdGVkJyxcbiAgZGVsZXRlZCA9ICdkZWxldGVkJyxcbiAgdW5jaGFuZ2VkID0gJ3VuY2hhbmdlZCdcbn1cblxuZXhwb3J0IGNvbnN0IGlzU3RhdGUgPSAobm9kZTogYmxhbmtOb2Rlc1R5cGUsIGtleTogc3RyaW5nLCBzdGF0ZTogTm9kZUtleVN0YXRlKSA9PlxuICBzdGF0ZSBpbiBub2RlISAmJiAodHlwZW9mIG5vZGUhW3N0YXRlXSA9PT0gJ2Jvb2xlYW4nID8gbm9kZSFbc3RhdGVdIDogbm9kZSFbc3RhdGVdLmluY2x1ZGVzKGtleSkpO1xuXG5leHBvcnQgaW50ZXJmYWNlIElHcm91cGVkTm9kZTxUPiB7XG4gIC8vIHN0b3JlIHRoZSBub2RlIHdpdGggdGhlIGhpZ2hlc3QgXCJzdGF0ZVwiXG4gIG5vZGU6IFQ7XG4gIG5vZGVzOiBUW107XG4gIGluZGV4OiBudW1iZXI7XG4gIHZhbHVlOiBwcm9wZXJ0eVZhbHVlVHlwZVtdO1xuICBkYXRlcz86IGFueVtdO1xuICBzZD86IG51bWJlcltdO1xuICBtaW4/OiBudW1iZXJbXTtcbiAgbWF4PzogbnVtYmVyW107XG4gIGlucHV0cz86IGFueVtdO1xuICBkZXB0aFVwcGVyPzogbnVtYmVyW107XG4gIGRlcHRoTG93ZXI/OiBudW1iZXJbXTtcbiAgc3RhcnREYXRlPzogc3RyaW5nW107XG4gIGVuZERhdGU/OiBzdHJpbmdbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJR3JvdXBlZE5vZGVzVmFsdWVzPFQ+IHtcbiAgW25vZGVJZDogc3RyaW5nXTogSUdyb3VwZWROb2RlPFQ+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElHcm91cGVkTm9kZXNWYWx1ZTxUPiB7XG4gIHRlcm06IElUZXJtSlNPTkxEO1xuICBtZXRob2RUaWVyPzogRW1pc3Npb25NZXRob2RUaWVyO1xuICAvKipcbiAgICogRW5hYmxlIG9yZGVyaW5nIG55IG1ldGhvZFRpZXJcbiAgICovXG4gIG1ldGhvZFRpZXJPcmRlcjogbnVtYmVyO1xuICB2YWx1ZXM6IElHcm91cGVkTm9kZXNWYWx1ZXM8VD47XG4gIG9yaWdpbmFsVmFsdWVzOiB7XG4gICAgW25vZGVJZDogc3RyaW5nXToge1xuICAgICAgdmFsdWU6IHByb3BlcnR5VmFsdWVUeXBlO1xuICAgIH07XG4gIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUdyb3VwZWROb2RlczxUPiB7XG4gIFt0ZXJtSWQ6IHN0cmluZ106IElHcm91cGVkTm9kZXNWYWx1ZTxUPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJR3JvdXBlZEtleXM8VD4ge1xuICBrZXk6IHN0cmluZztcbiAgdmFsdWU6IElHcm91cGVkTm9kZXNWYWx1ZTxUPjtcbn1cblxuZXhwb3J0IGNvbnN0IGdyb3VwcGVkS2V5cyA9IDxUPih2YWx1ZXM6IHsgW2tleTogc3RyaW5nXTogVCB9KTogeyBrZXk6IHN0cmluZzsgdmFsdWU6IFQgfVtdID0+XG4gIE9iamVjdC5lbnRyaWVzKHZhbHVlcykubWFwKChba2V5LCB2YWx1ZV0pID0+ICh7IGtleSwgdmFsdWUgfSkpO1xuXG5jb25zdCBjb25jYXRCbGFua05vZGVWYWx1ZSA9ICh2YWx1ZTogYW55LCBuZXdWYWx1ZTogYW55KSA9PiB7XG4gIGNvbnN0IHZhbHVlQXJyYXkgPSBBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlIDogW3ZhbHVlXTtcbiAgY29uc3QgbmV3VmFsdWVBcnJheSA9IEFycmF5LmlzQXJyYXkobmV3VmFsdWUpID8gbmV3VmFsdWUgOiBbbmV3VmFsdWVdO1xuICByZXR1cm4gWy4uLnZhbHVlQXJyYXksIC4uLm5ld1ZhbHVlQXJyYXldO1xufTtcblxuZXhwb3J0IGNvbnN0IG1ldGhvZFRpZXJPcmRlciA9IChtZXRob2RUaWVyOiBFbWlzc2lvbk1ldGhvZFRpZXIpID0+XG4gIFtcbiAgICBFbWlzc2lvbk1ldGhvZFRpZXIubWVhc3VyZWQsXG4gICAgRW1pc3Npb25NZXRob2RUaWVyWyd0aWVyIDMnXSxcbiAgICBFbWlzc2lvbk1ldGhvZFRpZXJbJ3RpZXIgMiddLFxuICAgIEVtaXNzaW9uTWV0aG9kVGllclsndGllciAxJ10sXG4gICAgRW1pc3Npb25NZXRob2RUaWVyLmJhY2tncm91bmQsXG4gICAgRW1pc3Npb25NZXRob2RUaWVyWydub3QgcmVsZXZhbnQnXVxuICBdLmluZGV4T2YobWV0aG9kVGllcik7XG5cbmV4cG9ydCBjb25zdCBncm91cHBlZFZhbHVlS2V5cyA9IFtcbiAgJ2RhdGVzJyxcbiAgJ3NkJyxcbiAgJ21pbicsXG4gICdtYXgnLFxuICAnaW5wdXRzJyxcbiAgJ2RlcHRoVXBwZXInLFxuICAnZGVwdGhMb3dlcicsXG4gICdzdGFydERhdGUnLFxuICAnZW5kRGF0ZScsXG4gICdtZXRob2RUaWVyJyxcbiAgJ21ldGhvZE1vZGVsJyxcbiAgJ21vZGVsJyxcbiAgJ21ldGhvZCdcbl07XG5cbmNvbnN0IGlzSGlnaGVyU3RhdGUgPSAoc291cmNlTm9kZTogYmxhbmtOb2Rlc1R5cGUsIG5ld05vZGU6IGJsYW5rTm9kZXNUeXBlKSA9PlxuICAhc291cmNlTm9kZSB8fFxuICBpc1N0YXRlKG5ld05vZGUsICd2YWx1ZScsIE5vZGVLZXlTdGF0ZS51cGRhdGVkKSB8fFxuICAoIWlzU3RhdGUoc291cmNlTm9kZSwgJ3ZhbHVlJywgTm9kZUtleVN0YXRlLnVwZGF0ZWQpICYmIGlzU3RhdGUobmV3Tm9kZSwgJ3ZhbHVlJywgTm9kZUtleVN0YXRlLmFkZGVkKSk7XG5cbmNvbnN0IGdyb3VwTm9kZUtleSA9ICh7IHRlcm0gfTogYW55KSA9PiB0ZXJtPy5uYW1lIHx8IHRlcm0/LlsnQGlkJ107XG5cbmV4cG9ydCBjb25zdCBncm91cE5vZGVzQnlUZXJtID0gPFxuICBUIGV4dGVuZHMgSUN5Y2xlSlNPTkxEIHwgSUltcGFjdEFzc2Vzc21lbnRKU09OTEQgfCBJU2l0ZUpTT05MRCB8IEFuaW1hbCB8IFRyYW5zZm9ybWF0aW9uLFxuICBSXG4+KFxuICBub2RlczogVFtdID0gW10sXG4gIGtleTogYmxhbmtOb2Rlc0tleSxcbiAgb3JpZ2luYWxWYWx1ZXM6IFRbXSA9IFtdLFxuICBpbmNsdWRlTm9kZSA9IChfbm9kZTogYW55KSA9PiB0cnVlXG4pOiBJR3JvdXBlZE5vZGVzPFI+ID0+IHtcbiAgY29uc3QgZ3JvdXBzOiBJR3JvdXBlZE5vZGVzPFI+ID0gbm9kZXMucmVkdWNlKFxuICAgIChwcmV2LCBub2RlLCBpbmRleCkgPT5cbiAgICAgIChub2RlW2tleV0gfHwgW10pLnJlZHVjZSgoZ3JvdXAsIGJsYW5rTm9kZSkgPT4ge1xuICAgICAgICAvLyBza2lwIG5vZGUgYmFzZWQgb24gY29uZGl0aW9uXG4gICAgICAgIGlmICghaW5jbHVkZU5vZGUoYmxhbmtOb2RlKSkge1xuICAgICAgICAgIHJldHVybiBncm91cDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG5vZGVJZCA9IG5vZGVbJ0BpZCddO1xuICAgICAgICBjb25zdCBncm91cGVkS2V5ID0gZ3JvdXBOb2RlS2V5KGJsYW5rTm9kZSk7XG4gICAgICAgIGdyb3VwW2dyb3VwZWRLZXldID0gZ3JvdXBbZ3JvdXBlZEtleV0gfHwge1xuICAgICAgICAgIHRlcm06IGJsYW5rTm9kZS50ZXJtLFxuICAgICAgICAgIG1ldGhvZFRpZXI6IGJsYW5rTm9kZS5tZXRob2RUaWVyLFxuICAgICAgICAgIG1ldGhvZFRpZXJPcmRlcjogbWV0aG9kVGllck9yZGVyKGJsYW5rTm9kZS5tZXRob2RUaWVyKSxcbiAgICAgICAgICB2YWx1ZXM6IHt9LFxuICAgICAgICAgIG9yaWdpbmFsVmFsdWVzOiB7fVxuICAgICAgICB9O1xuICAgICAgICBncm91cFtncm91cGVkS2V5XS52YWx1ZXNbbm9kZUlkXSA9IGdyb3VwW2dyb3VwZWRLZXldLnZhbHVlc1tub2RlSWRdIHx8IHsgaW5kZXgsIG5vZGVzOiBbXSwgdmFsdWU6IFtdIH07XG4gICAgICAgIGdyb3VwW2dyb3VwZWRLZXldLnZhbHVlc1tub2RlSWRdLm5vZGUgPSBpc0hpZ2hlclN0YXRlKGdyb3VwW2dyb3VwZWRLZXldLnZhbHVlc1tub2RlSWRdLm5vZGUsIGJsYW5rTm9kZSlcbiAgICAgICAgICA/IGJsYW5rTm9kZVxuICAgICAgICAgIDogZ3JvdXBbZ3JvdXBlZEtleV0udmFsdWVzW25vZGVJZF0ubm9kZTtcbiAgICAgICAgZ3JvdXBbZ3JvdXBlZEtleV0udmFsdWVzW25vZGVJZF0ubm9kZXMucHVzaChibGFua05vZGUpO1xuICAgICAgICBncm91cFtncm91cGVkS2V5XS52YWx1ZXNbbm9kZUlkXS52YWx1ZSA9IGNvbmNhdEJsYW5rTm9kZVZhbHVlKFxuICAgICAgICAgIGdyb3VwW2dyb3VwZWRLZXldLnZhbHVlc1tub2RlSWRdLnZhbHVlLFxuICAgICAgICAgIGJsYW5rTm9kZS52YWx1ZVxuICAgICAgICApO1xuICAgICAgICBncm91cHBlZFZhbHVlS2V5cy5mb3JFYWNoKGFycmF5S2V5ID0+IHtcbiAgICAgICAgICBjb25zdCBuZXdWYWx1ZSA9IGdldChibGFua05vZGUsIGFycmF5S2V5LCBbXSk7XG4gICAgICAgICAgZ3JvdXBbZ3JvdXBlZEtleV0udmFsdWVzW25vZGVJZF1bYXJyYXlLZXldID0gW1xuICAgICAgICAgICAgLi4uKGdyb3VwW2dyb3VwZWRLZXldLnZhbHVlc1tub2RlSWRdW2FycmF5S2V5XSB8fCBbXSksXG4gICAgICAgICAgICAuLi4oQXJyYXkuaXNBcnJheShuZXdWYWx1ZSkgPyBuZXdWYWx1ZSA6IFtuZXdWYWx1ZV0pXG4gICAgICAgICAgXTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBncm91cDtcbiAgICAgIH0sIHByZXYpLFxuICAgIHt9IGFzIElHcm91cGVkTm9kZXM8Uj5cbiAgKTtcblxuICAvLyBjb21waWxlIG9yaWdpbmFsIHZhbHVlc1xuICBPYmplY3QudmFsdWVzKGdyb3VwcykubWFwKGdyb3VwID0+IHtcbiAgICBPYmplY3Qua2V5cyhncm91cC52YWx1ZXMpLm1hcChub2RlSWQgPT4ge1xuICAgICAgY29uc3QgeyBpbmRleCB9ID0gZ3JvdXAudmFsdWVzW25vZGVJZF07XG4gICAgICBjb25zdCB0ZXJtSWQgPSBncm91cC50ZXJtWydAaWQnXTtcbiAgICAgIGNvbnN0IG9yaWdpbmFsVmFsdWUgPSBnZXQob3JpZ2luYWxWYWx1ZXMsIGBbJHtpbmRleH1dLiR7a2V5fWAsIFtdKS5maWx0ZXIoXG4gICAgICAgICh2YWw6IGFueSkgPT4gdmFsLnRlcm1bJ0BpZCddID09PSB0ZXJtSWRcbiAgICAgICk7XG4gICAgICBpZiAob3JpZ2luYWxWYWx1ZS5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gb3JpZ2luYWxWYWx1ZS5yZWR1Y2UoKGFycmF5OiBhbnlbXSwgY3VycjogYW55KSA9PiBjb25jYXRCbGFua05vZGVWYWx1ZShhcnJheSwgY3Vyci52YWx1ZSksIFtdKTtcbiAgICAgICAgZ3JvdXAub3JpZ2luYWxWYWx1ZXNbbm9kZUlkXSA9IHsgdmFsdWU6IHByb3BlcnR5VmFsdWUodmFsdWUsIHRlcm1JZCkgfTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG5cbiAgcmV0dXJuIGdyb3Vwcztcbn07XG4iXX0=
@@ -129,7 +129,7 @@ export class ImpactAssessmentsProductsComponent {
129
129
  : undefined);
130
130
  this.methodModels = computed(() => uniqBy(this.impactAssessments()
131
131
  .flatMap(impact => (impact[this.nodeKey()] || []).map(v => v.methodModel))
132
- .filter(Boolean), '@id'));
132
+ .filter(Boolean), '@id').sort((a, b) => a.name.localeCompare(b.name)));
133
133
  this._selectedMethodModel = signal(undefined);
134
134
  effect(() => {
135
135
  // make sure logs does not remain displayed
@@ -185,4 +185,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImpor
185
185
  KeyToLabelPipe
186
186
  ], template: "@if (hasData()) {\n <div class=\"columns is-variable is-align-items-center is-2 is-m-0\">\n <div class=\"column\">\n @if (selectedView() === View.table) {\n <button\n class=\"button is-small is-ghost\"\n (click)=\"showDownload = true\"\n ngbTooltip=\"Download as CSV\"\n [disableTooltip]=\"showDownload\"\n placement=\"bottom\">\n <fa-icon [icon]=\"faDownload\" size=\"lg\"></fa-icon>\n </button>\n }\n </div>\n @if (selectedView() === View.table) {\n <div class=\"column is-narrow\">\n <he-search-extend\n class=\"is-secondary is-small\"\n placeholder=\"Filter terms by name\"\n (search)=\"filterByTerm($event)\"></he-search-extend>\n </div>\n }\n @if (views()?.length > 1) {\n <div class=\"column is-narrow\">\n <div class=\"field has-addons\">\n @for (view of views(); track view) {\n <div class=\"control\">\n <button\n class=\"button is-small\"\n [class.is-selected]=\"selectedView() === view\"\n (click)=\"selectedView.set(view)\">\n <span class=\"icon is-small\">\n <fa-icon [icon]=\"viewIcon[view]\" aria-hidden=\"true\"></fa-icon>\n </span>\n <span class=\"is-hidden-mobile\">{{ view }}</span>\n </button>\n </div>\n }\n </div>\n </div>\n }\n </div>\n}\n\n@if (isNodeKeyAllowed()) {\n @switch (selectedView()) {\n @case (View.table) {\n <div class=\"is-px-3 is-pb-3\">\n @if (hasData()) {\n <he-data-table class=\"mb-1 is-small\" [small]=\"true\" maxHeight=\"320\">\n <table class=\"table is-fullwidth is-narrow is-striped\">\n <thead>\n @if (dataKeys().length > 1) {\n <tr class=\"has-text-weight-bold\">\n <th class=\"width-auto\"></th>\n <th></th>\n <th></th>\n @for (dataKey of dataKeys(); track dataKey; let dataKeyLast = $last) {\n @if (data()[dataKey]?.length) {\n <th [attr.colspan]=\"data()[dataKey].length\" [class.has-border-right]=\"!dataKeyLast\">\n @if (dataKey) {\n <span>{{ dataKey | keyToLabel }}</span>\n }\n </th>\n }\n }\n </tr>\n }\n <tr class=\"has-text-weight-semibold\">\n <th class=\"width-auto has-border-right is-py-0\">\n @if (enableFilterMethodModel()) {\n <div class=\"select is-small\">\n <select (change)=\"updateSelectedMethodModel($event.target.value)\">\n <option [ngValue]=\"undefined\">Filter Model</option>\n @for (term of methodModels(); track term) {\n <option [ngValue]=\"term\">{{ term.name }}</option>\n }\n </select>\n </div>\n }\n </th>\n <th class=\"has-border-right\"></th>\n <th class=\"has-border-right\"></th>\n @for (dataKey of dataKeys(); track dataKey; let dataKeyLast = $last) {\n @for (node of data()[dataKey]; track node; let nodeLast = $last) {\n <th\n [attr.title]=\"node.value.term.name\"\n [class.has-border-right]=\"dataKeys().length > 1 && !dataKeyLast && nodeLast\">\n <he-node-link [node]=\"node.value.term\">\n <span\n [innerHtml]=\"\n node.value.term.name | ellipsis: 30 | compound: node.value.term.termType\n \"></span>\n </he-node-link>\n </th>\n }\n }\n </tr>\n <tr class=\"is-italic has-text-weight-semibold\">\n <th class=\"width-auto has-border-right\"></th>\n <th class=\"has-border-right\">\n <a [href]=\"baseUrl + '/schema/ImpactAssessment#functionalUnit'\" target=\"_blank\">Functional unit</a>\n </th>\n <th class=\"has-border-right\">\n <a [href]=\"baseUrl + '/schema/ImpactAssessment#product'\" target=\"_blank\">Product</a>\n </th>\n @for (dataKey of dataKeys(); track dataKey; let dataKeyLast = $last) {\n @for (node of data()[dataKey]; track node; let nodeLast = $last) {\n <th\n [attr.title]=\"node.value.term.units\"\n [class.has-border-right]=\"dataKeys().length > 1 && !dataKeyLast && nodeLast\">\n <span [innerHtml]=\"node.value.term.units | compound: node.value.term.termType\"></span>\n <he-terms-units-description\n class=\"is-inline-block is-ml-2\"\n [term]=\"node.value.term\"></he-terms-units-description>\n </th>\n }\n }\n </tr>\n </thead>\n <tbody>\n @for (\n impactAssessment of impactAssessments();\n track trackById(impactIndex, impactAssessment);\n let impactIndex = $index\n ) {\n <tr>\n <td class=\"width-auto has-border-right\" [attr.title]=\"impactName(impactAssessment)\">\n <he-node-link [node]=\"impactAssessment\">\n <span>{{ impactIndex + 1 }}. {{ impactName(impactAssessment) }}</span>\n </he-node-link>\n </td>\n <td class=\"has-border-right\" [attr.title]=\"impactAssessment.product?.term?.units\">\n <span>1 {{ impactAssessment.product?.term?.units }}</span>\n </td>\n <td class=\"has-border-right\" [attr.title]=\"impactAssessment.product?.term?.name\">\n @if (impactAssessment.product?.term) {\n <he-node-link [node]=\"impactAssessment.product.term\">\n <span>{{ impactAssessment.product.term.name | ellipsis: 30 }}</span>\n </he-node-link>\n }\n </td>\n @for (dataKey of dataKeys(); track dataKey; let dataKeyLast = $last) {\n @for (node of data()[dataKey]; track node; let nodeLast = $last) {\n <td\n class=\"is-nowrap\"\n [class.has-border-right]=\"dataKeys().length > 1 && !dataKeyLast && nodeLast\">\n @if (node.value.values[impactAssessment['@id']]) {\n <span\n class=\"trigger-popover\"\n [ngbPopover]=\"details\"\n [autoClose]=\"'outside'\"\n popoverClass=\"is-narrow\"\n #p=\"ngbPopover\"\n placement=\"left\"\n container=\"body\"\n [popoverContext]=\"{\n data: node.value.values[impactAssessment['@id']],\n impactAssessment\n }\">\n <span pointer>\n {{\n propertyValue(\n node.value.values[impactAssessment['@id']].value,\n node.value.term['@id']\n )\n | precision: 3\n | default: '-'\n }}\n </span>\n <he-blank-node-state\n class=\"ml-1\"\n [dataState]=\"dataState()\"\n [node]=\"node.value.values[impactAssessment['@id']].node\"\n key=\"value\"\n [state]=\"impactAssessment.aggregated ? 'aggregated' : undefined\"></he-blank-node-state>\n </span>\n } @else {\n <span>-</span>\n }\n </td>\n }\n }\n </tr>\n }\n </tbody>\n </table>\n </he-data-table>\n <he-blank-node-state-notice [dataState]=\"dataState()\"></he-blank-node-state-notice>\n } @else {\n <div class=\"is-pt-3 has-text-centered\">\n <span>No data available</span>\n <span class=\"is-pl-1\" [class.is-hidden]=\"!filterTerm()\">matching your search criteria</span>\n <span>.</span>\n <span [class.is-hidden]=\"!isOriginal()\">\n Switch to\n <code>recalculated</code>\n version.\n </span>\n </div>\n }\n </div>\n }\n @case (View.chart) {\n <he-impact-assessments-indicators-chart\n [key]=\"nodeKey()\"\n [filterTermTypes]=\"filterTermTypes()\"></he-impact-assessments-indicators-chart>\n }\n @case (View.breakdown) {\n <he-impact-assessments-indicator-breakdown-chart\n [impactAssessment]=\"selectedNode()\"\n [indicators]=\"selectedRecalculatedValues()\"></he-impact-assessments-indicator-breakdown-chart>\n }\n @case (View.logs) {\n @if (impactAssessments().length > 1) {\n <div class=\"field has-addons pt-2 px-3\">\n <div class=\"control\">\n <span class=\"button is-small is-static is-secondary\">Select an Impact Assessment</span>\n </div>\n <div class=\"control is-expanded\">\n <div class=\"select is-small is-fullwidth is-secondary\">\n <select (change)=\"selectIndex($event)\">\n @for (value of impactAssessments(); track value; let i = $index) {\n <option [value]=\"i\">{{ i + 1 }}. {{ impactName(value) }}</option>\n }\n </select>\n </div>\n </div>\n </div>\n }\n @if (selectedNode()) {\n <he-node-logs-models\n [node]=\"selectedNode()\"\n [nodeKey]=\"nodeKey()\"\n [filterTermTypes]=\"filterTermTypes()\"\n [originalValues]=\"selectedOriginalValues()\"\n [recalculatedValues]=\"selectedRecalculatedValues()\"\n [noDataMessage]=\"noDataMessage()\"></he-node-logs-models>\n }\n }\n }\n}\n\n@if (showDownload) {\n <he-node-csv-export-confirm\n [nodes]=\"impactAssessments()\"\n [filename]=\"csvFilename()\"\n [isUpload]=\"false\"\n [headerKeys]=\"headerKeys()\"\n (closed)=\"showDownload = false\"></he-node-csv-export-confirm>\n}\n\n<ng-template #details let-node=\"impactAssessment\" let-data=\"data\">\n <p>\n <b>\n @if (data.cycle) {\n <span>{{ cycleLabel(node.cycle) }}</span>\n }\n @if (!data.cycle) {\n <span>{{ data.name }}</span>\n }\n </b>\n </p>\n <he-node-value-details\n [data]=\"data\"\n [dataState]=\"dataState()\"\n [nodeType]=\"node['@type']\"\n [dataKey]=\"nodeKey()\"></he-node-value-details>\n</ng-template>\n", styles: ["fa-icon{display:inline-block;width:10px}he-data-table ::ng-deep .table thead tr th:nth-child(2),he-data-table ::ng-deep .table tbody tr td:nth-child(2){max-width:102px;width:102px}he-data-table ::ng-deep .table thead tr th:nth-child(3),he-data-table ::ng-deep .table tbody tr td:nth-child(3){min-width:110px}\n"] }]
187
187
  }], ctorParameters: () => [] });
188
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1wYWN0LWFzc2Vzc21lbnRzLXByb2R1Y3RzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9pbXBhY3QtYXNzZXNzbWVudHMvaW1wYWN0LWFzc2Vzc21lbnRzLXByb2R1Y3RzL2ltcGFjdC1hc3Nlc3NtZW50cy1wcm9kdWN0cy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9zcmMvaW1wYWN0LWFzc2Vzc21lbnRzL2ltcGFjdC1hc3Nlc3NtZW50cy1wcm9kdWN0cy9pbXBhY3QtYXNzZXNzbWVudHMtcHJvZHVjdHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVHLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDOUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFJTCxZQUFZLEVBRVosUUFBUSxFQUNSLGFBQWEsRUFHZCxNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDbkUsT0FBTyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNwRSxPQUFPLEVBQWtCLFlBQVksRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ2pILE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QyxPQUFPLE9BQU8sTUFBTSxn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SSxXQUNQO3dCQUNQLFVBQVU7d0JBQ1YsZUFBZTt3QkFDZixxQkFBcUI7d0JBQ3JCLGtCQUFrQjt3QkFDbEIsV0FBVzt3QkFDWCxpQkFBaUI7d0JBQ2pCLDhCQUE4Qjt3QkFDOUIsVUFBVTt3QkFDVix1QkFBdUI7d0JBQ3ZCLDZCQUE2Qjt3QkFDN0IseUNBQXlDO3dCQUN6QyxpREFBaUQ7d0JBQ2pELHVCQUF1Qjt3QkFDdkIsNkJBQTZCO3dCQUM3Qix5QkFBeUI7d0JBQ3pCLFlBQVk7d0JBQ1osV0FBVzt3QkFDWCxZQUFZO3dCQUNaLGFBQWE7d0JBQ2IsY0FBYztxQkFDZiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGNvbXB1dGVkLCBlZmZlY3QsIGluamVjdCwgaW5wdXQsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdG9TaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBEYXRhU3RhdGUgfSBmcm9tICdAaGVzdGlhLWVhcnRoL2FwaSc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7XG4gIElDeWNsZUpTT05MRCxcbiAgSUltcGFjdEFzc2Vzc21lbnRKU09OTEQsXG4gIEluZGljYXRvcixcbiAgVGVybVRlcm1UeXBlLFxuICBUZXJtLFxuICBOb2RlVHlwZSxcbiAgQmxhbmtOb2Rlc0tleSxcbiAgSW5kaWNhdG9yTWV0aG9kVGllcixcbiAgSVRlcm1KU09OTERcbn0gZnJvbSAnQGhlc3RpYS1lYXJ0aC9zY2hlbWEnO1xuaW1wb3J0IHsgcHJvcGVydHlWYWx1ZSB9IGZyb20gJ0BoZXN0aWEtZWFydGgvdXRpbHMvZGlzdC90ZXJtJztcbmltcG9ydCB7IEZhSWNvbkNvbXBvbmVudCB9IGZyb20gJ0Bmb3J0YXdlc29tZS9hbmd1bGFyLWZvbnRhd2Vzb21lJztcbmltcG9ydCB7IE5nYlRvb2x0aXAsIE5nYlBvcG92ZXIgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XG5pbXBvcnQgeyBJY29uRGVmaW5pdGlvbiwgZmFDYWxjdWxhdG9yLCBmYUNoYXJ0QmFyLCBmYURvd25sb2FkLCBmYUxpc3QgfSBmcm9tICdAZm9ydGF3ZXNvbWUvZnJlZS1zb2xpZC1zdmctaWNvbnMnO1xuaW1wb3J0IHsgdW5pcXVlIH0gZnJvbSAnQGhlc3RpYS1lYXJ0aC91dGlscyc7XG5pbXBvcnQgb3JkZXJCeSBmcm9tICdsb2Rhc2gub3JkZXJieSc7XG5pbXBvcnQgdW5pcUJ5IGZyb20gJ2xvZGFzaC51bmlxYnknO1xuXG5pbXBvcnQge1xuICBncm91cE5vZGVzQnlUZXJtLFxuICBJR3JvdXBlZEtleXMsXG4gIGdyb3VwcGVkS2V5cyxcbiAgaXNNZXRob2RNb2RlbEFsbG93ZWQsXG4gIG1ldGhvZFRpZXJPcmRlclxufSBmcm9tICcuLi8uLi9jb21tb24vbm9kZS11dGlscyc7XG5pbXBvcnQgeyBiYXNlVXJsIH0gZnJvbSAnLi4vLi4vY29tbW9uL3V0aWxzJztcbmltcG9ydCB7IFByZWNpc2lvblBpcGUgfSBmcm9tICcuLi8uLi9jb21tb24vcHJlY2lzaW9uLnBpcGUnO1xuaW1wb3J0IHsgRWxsaXBzaXNQaXBlIH0gZnJvbSAnLi4vLi4vY29tbW9uL2VsbGlwc2lzLnBpcGUnO1xuaW1wb3J0IHsgRGVmYXVsdFBpcGUgfSBmcm9tICcuLi8uLi9jb21tb24vZGVmYXVsdC5waXBlJztcbmltcG9ydCB7IENvbXBvdW5kUGlwZSB9IGZyb20gJy4uLy4uL2NvbW1vbi9jb21wb3VuZC5waXBlJztcbmltcG9ydCB7IEtleVRvTGFiZWxQaXBlIH0gZnJvbSAnLi4vLi4vY29tbW9uL2tleS10by1sYWJlbC5waXBlJztcbmltcG9ydCB7IEJsYW5rTm9kZVN0YXRlTm90aWNlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29tbW9uL2JsYW5rLW5vZGUtc3RhdGUtbm90aWNlL2JsYW5rLW5vZGUtc3RhdGUtbm90aWNlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEYXRhVGFibGVDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb21tb24vZGF0YS10YWJsZS9kYXRhLXRhYmxlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCbGFua05vZGVTdGF0ZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvbW1vbi9ibGFuay1ub2RlLXN0YXRlL2JsYW5rLW5vZGUtc3RhdGUuY29tcG9uZW50JztcbmltcG9ydCB7IFNlYXJjaEV4dGVuZENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvbW1vbi9zZWFyY2gtZXh0ZW5kL3NlYXJjaC1leHRlbmQuY29tcG9uZW50JztcbmltcG9ydCB7IEhlTm9kZVN0b3JlU2VydmljZSB9IGZyb20gJy4uLy4uL25vZGUvbm9kZS1zdG9yZS5zZXJ2aWNlJztcbmltcG9ydCB7IE5vZGVWYWx1ZURldGFpbHNDb21wb25lbnQgfSBmcm9tICcuLi8uLi9ub2RlL25vZGUtdmFsdWUtZGV0YWlscy9ub2RlLXZhbHVlLWRldGFpbHMuY29tcG9uZW50JztcbmltcG9ydCB7IE5vZGVDc3ZFeHBvcnRDb25maXJtQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbm9kZS9ub2RlLWNzdi1leHBvcnQtY29uZmlybS9ub2RlLWNzdi1leHBvcnQtY29uZmlybS5jb21wb25lbnQnO1xuaW1wb3J0IHsgTm9kZUxvZ3NNb2RlbHNDb21wb25lbnQgfSBmcm9tICcuLi8uLi9ub2RlL25vZGUtbG9ncy1tb2RlbHMvbm9kZS1sb2dzLW1vZGVscy5jb21wb25lbnQnO1xuaW1wb3J0IHsgSW1wYWN0QXNzZXNzbWVudHNJbmRpY2F0b3JCcmVha2Rvd25DaGFydENvbXBvbmVudCB9IGZyb20gJy4uL2ltcGFjdC1hc3Nlc3NtZW50cy1pbmRpY2F0b3ItYnJlYWtkb3duLWNoYXJ0L2ltcGFjdC1hc3Nlc3NtZW50cy1pbmRpY2F0b3ItYnJlYWtkb3duLWNoYXJ0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJbXBhY3RBc3Nlc3NtZW50c0luZGljYXRvcnNDaGFydENvbXBvbmVudCB9IGZyb20gJy4uL2ltcGFjdC1hc3Nlc3NtZW50cy1pbmRpY2F0b3JzLWNoYXJ0L2ltcGFjdC1hc3Nlc3NtZW50cy1pbmRpY2F0b3JzLWNoYXJ0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUZXJtc1VuaXRzRGVzY3JpcHRpb25Db21wb25lbnQgfSBmcm9tICcuLi8uLi90ZXJtcy90ZXJtcy11bml0cy1kZXNjcmlwdGlvbi90ZXJtcy11bml0cy1kZXNjcmlwdGlvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgTm9kZUxpbmtDb21wb25lbnQgfSBmcm9tICcuLi8uLi9ub2RlL25vZGUtbGluay9ub2RlLWxpbmsuY29tcG9uZW50JztcblxuZW51bSBWaWV3IHtcbiAgdGFibGUgPSAnVGFibGUgdmlldycsXG4gIGNoYXJ0ID0gJ0NoYXJ0IHZpZXcnLFxuICBicmVha2Rvd24gPSAnQnJlYWtkb3duIHZpZXcnLFxuICBsb2dzID0gJ1JlY2FsY3VsYXRpb25zIGxvZ3MnXG59XG5cbmNvbnN0IHZpZXdJY29uOiB7XG4gIFt2aWV3IGluIFZpZXddOiBJY29uRGVmaW5pdGlvbjtcbn0gPSB7XG4gIFtWaWV3LmJyZWFrZG93bl06IGZhQ2hhcnRCYXIsXG4gIFtWaWV3LmNoYXJ0XTogZmFDaGFydEJhcixcbiAgW1ZpZXcubG9nc106IGZhQ2FsY3VsYXRvcixcbiAgW1ZpZXcudGFibGVdOiBmYUxpc3Rcbn07XG5cbmNvbnN0IG5vZGVLZXlWaWV3czoge1xuICBbdHlwZSBpbiBCbGFua05vZGVzS2V5XT86IFZpZXdbXTtcbn0gPSB7XG4gIFtCbGFua05vZGVzS2V5LmVtaXNzaW9uc1Jlc291cmNlVXNlXTogW1ZpZXcudGFibGUsIFZpZXcuY2hhcnQsIFZpZXcubG9nc10sXG4gIFtCbGFua05vZGVzS2V5LmltcGFjdHNdOiBbVmlldy50YWJsZSwgVmlldy5icmVha2Rvd24sIFZpZXcuY2hhcnQsIFZpZXcubG9nc10sXG4gIFtCbGFua05vZGVzS2V5LmVuZHBvaW50c106IFtWaWV3LnRhYmxlLCBWaWV3LmJyZWFrZG93biwgVmlldy5jaGFydCwgVmlldy5sb2dzXVxufTtcblxudHlwZSBncm91cGVkRW1pc3Npb25zID0ge1xuICBbbWV0aG9kVGllciBpbiBJbmRpY2F0b3JNZXRob2RUaWVyXTogSUdyb3VwZWRLZXlzPEluZGljYXRvcj5bXTtcbn07XG5cbmNvbnN0IHRlcm1BbGxvd2VkID0gKHRlcm0/OiBUZXJtIHwgSVRlcm1KU09OTEQsIGZpbHRlclRlcm1UeXBlczogVGVybVRlcm1UeXBlW10gPSBbXSkgPT5cbiAgIWZpbHRlclRlcm1UeXBlcz8ubGVuZ3RoIHx8IChmaWx0ZXJUZXJtVHlwZXMgfHwgW10pLmluY2x1ZGVzKHRlcm0/LnRlcm1UeXBlKTtcblxuY29uc3QgZmlsdGVyTm9kZSA9IChmaWx0ZXJCeU1ldGhvZE1vZGVsOiBib29sZWFuLCBmaWx0ZXJNZXRob2RNb2RlbD86IFRlcm0sIGZpbHRlclRlcm0/OiBzdHJpbmcpID0+IChub2RlOiBJbmRpY2F0b3IpID0+XG4gIFtcbiAgICAhZmlsdGVyQnlNZXRob2RNb2RlbCB8fCBpc01ldGhvZE1vZGVsQWxsb3dlZChmaWx0ZXJNZXRob2RNb2RlbCkobm9kZSksXG4gICAgIWZpbHRlclRlcm0gfHwgbm9kZT8udGVybT8ubmFtZT8udG9Mb3dlckNhc2UoKT8uaW5jbHVkZXMoZmlsdGVyVGVybS50b0xvd2VyQ2FzZSgpKVxuICBdLmV2ZXJ5KEJvb2xlYW4pO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdoZS1pbXBhY3QtYXNzZXNzbWVudHMtcHJvZHVjdHMnLFxuICB0ZW1wbGF0ZVVybDogJy4vaW1wYWN0LWFzc2Vzc21lbnRzLXByb2R1Y3RzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vaW1wYWN0LWFzc2Vzc21lbnRzLXByb2R1Y3RzLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgTmdiVG9vbHRpcCxcbiAgICBGYUljb25Db21wb25lbnQsXG4gICAgU2VhcmNoRXh0ZW5kQ29tcG9uZW50LFxuICAgIERhdGFUYWJsZUNvbXBvbmVudCxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBOb2RlTGlua0NvbXBvbmVudCxcbiAgICBUZXJtc1VuaXRzRGVzY3JpcHRpb25Db21wb25lbnQsXG4gICAgTmdiUG9wb3ZlcixcbiAgICBCbGFua05vZGVTdGF0ZUNvbXBvbmVudCxcbiAgICBCbGFua05vZGVTdGF0ZU5vdGljZUNvbXBvbmVudCxcbiAgICBJbXBhY3RBc3Nlc3NtZW50c0luZGljYXRvcnNDaGFydENvbXBvbmVudCxcbiAgICBJbXBhY3RBc3Nlc3NtZW50c0luZGljYXRvckJyZWFrZG93bkNoYXJ0Q29tcG9uZW50LFxuICAgIE5vZGVMb2dzTW9kZWxzQ29tcG9uZW50LFxuICAgIE5vZGVDc3ZFeHBvcnRDb25maXJtQ29tcG9uZW50LFxuICAgIE5vZGVWYWx1ZURldGFpbHNDb21wb25lbnQsXG4gICAgQ29tcG91bmRQaXBlLFxuICAgIERlZmF1bHRQaXBlLFxuICAgIEVsbGlwc2lzUGlwZSxcbiAgICBQcmVjaXNpb25QaXBlLFxuICAgIEtleVRvTGFiZWxQaXBlXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgSW1wYWN0QXNzZXNzbWVudHNQcm9kdWN0c0NvbXBvbmVudCB7XG4gIHByaXZhdGUgbm9kZVN0b3JlU2VydmljZSA9IGluamVjdChIZU5vZGVTdG9yZVNlcnZpY2UpO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBmYURvd25sb2FkID0gZmFEb3dubG9hZDtcblxuICBwcm90ZWN0ZWQgZGF0YVN0YXRlID0gaW5wdXQoRGF0YVN0YXRlLm9yaWdpbmFsKTtcbiAgcHJvdGVjdGVkIG5vZGVLZXkgPSBpbnB1dChCbGFua05vZGVzS2V5LmltcGFjdHMpO1xuICBwcm90ZWN0ZWQgZmlsdGVyVGVybVR5cGVzID0gaW5wdXQoW10gYXMgVGVybVRlcm1UeXBlW10pO1xuICBwcm90ZWN0ZWQgZW5hYmxlRmlsdGVyTWV0aG9kTW9kZWwgPSBpbnB1dChmYWxzZSk7XG5cbiAgcHJvdGVjdGVkIHByb3BlcnR5VmFsdWUgPSBwcm9wZXJ0eVZhbHVlO1xuICBwcm90ZWN0ZWQgYmFzZVVybCA9IGJhc2VVcmwoKTtcbiAgcHJvdGVjdGVkIHNob3dEb3dubG9hZCA9IGZhbHNlO1xuXG4gIHByb3RlY3RlZCBoZWFkZXJLZXlzID0gY29tcHV0ZWQoKCkgPT4gW1xuICAgICdpbXBhY3RBc3Nlc3NtZW50LmlkJyxcbiAgICAnaW1wYWN0QXNzZXNzbWVudC5AaWQnLFxuICAgIGBpbXBhY3RBc3Nlc3NtZW50LiR7dGhpcy5ub2RlS2V5KCl9LmBcbiAgXSk7XG5cbiAgcHJvdGVjdGVkIFZpZXcgPSBWaWV3O1xuICBwcm90ZWN0ZWQgdmlld0ljb24gPSB2aWV3SWNvbjtcbiAgcHJpdmF0ZSBzaG93VmlldyA9IGNvbXB1dGVkKFxuICAgICgpID0+XG4gICAgICAoe1xuICAgICAgICBbVmlldy5icmVha2Rvd25dOiAhdGhpcy5pc09yaWdpbmFsKCkgJiYgdGhpcy5pbXBhY3RBc3Nlc3NtZW50cygpLmxlbmd0aCA9PT0gMSxcbiAgICAgICAgW1ZpZXcuY2hhcnRdOiB0aGlzLmltcGFjdEFzc2Vzc21lbnRzKCkubGVuZ3RoID4gMSxcbiAgICAgICAgW1ZpZXcubG9nc106ICF0aGlzLmlzT3JpZ2luYWwoKSxcbiAgICAgICAgW1ZpZXcudGFibGVdOiB0cnVlXG4gICAgICB9KSBhcyB7IFt2aWV3IGluIFZpZXddOiBib29sZWFuIH1cbiAgKTtcbiAgcHJvdGVjdGVkIHZpZXdzID0gY29tcHV0ZWQoKCkgPT4gbm9kZUtleVZpZXdzW3RoaXMubm9kZUtleSgpXT8uZmlsdGVyKHZpZXcgPT4gdGhpcy5zaG93VmlldygpW3ZpZXddKSA/PyBbXSk7XG4gIHByb3RlY3RlZCBzZWxlY3RlZFZpZXcgPSBzaWduYWwoVmlldy50YWJsZSk7XG5cbiAgcHJpdmF0ZSBjeWNsZXMgPSB0b1NpZ25hbCh0aGlzLm5vZGVTdG9yZVNlcnZpY2UuZmluZEJ5U3RhdGUkPElDeWNsZUpTT05MRD4oTm9kZVR5cGUuQ3ljbGUsIERhdGFTdGF0ZS5vcmlnaW5hbCkpO1xuXG4gIHByaXZhdGUgb3JpZ2luYWxJbXBhY3RBc3Nlc3NtZW50cyA9IHRvU2lnbmFsKFxuICAgIHRoaXMubm9kZVN0b3JlU2VydmljZS5maW5kQnlTdGF0ZSQ8SUltcGFjdEFzc2Vzc21lbnRKU09OTEQ+KE5vZGVUeXBlLkltcGFjdEFzc2Vzc21lbnQsIERhdGFTdGF0ZS5vcmlnaW5hbClcbiAgKTtcbiAgcHJpdmF0ZSBfYWxsSW1wYWN0QXNzZXNzbWVudHMgPSB0b1NpZ25hbChcbiAgICB0aGlzLm5vZGVTdG9yZVNlcnZpY2UuZmluZCQ8SUltcGFjdEFzc2Vzc21lbnRKU09OTEQ+KE5vZGVUeXBlLkltcGFjdEFzc2Vzc21lbnQpXG4gICk7XG4gIHByb3RlY3RlZCBpbXBhY3RBc3Nlc3NtZW50cyA9IGNvbXB1dGVkKCgpID0+IHRoaXMuX2FsbEltcGFjdEFzc2Vzc21lbnRzKCk/Lm1hcChkYXRhID0+IGRhdGFbdGhpcy5kYXRhU3RhdGUoKV0pIHx8IFtdKTtcblxuICBwcml2YXRlIHNlbGVjdGVkSW5kZXggPSBzaWduYWwoMCk7XG4gIHByaXZhdGUgb2dpcmluYWxTZWxlY3RlZEltcGFjdEFzc2Vzc21lbnQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLm9yaWdpbmFsSW1wYWN0QXNzZXNzbWVudHMoKT8uW3RoaXMuc2VsZWN0ZWRJbmRleCgpXSk7XG4gIHByaXZhdGUgc2VsZWN0ZWRJbXBhY3RBc3Nlc3NtZW50ID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5pbXBhY3RBc3Nlc3NtZW50cygpPy5bdGhpcy5zZWxlY3RlZEluZGV4KCldKTtcbiAgcHJvdGVjdGVkIHNlbGVjdGVkT3JpZ2luYWxWYWx1ZXMgPSBjb21wdXRlZCgoKSA9PiB0aGlzLm9naXJpbmFsU2VsZWN0ZWRJbXBhY3RBc3Nlc3NtZW50KCk/Llt0aGlzLm5vZGVLZXkoKV0gfHwgW10pO1xuICBwcm90ZWN0ZWQgc2VsZWN0ZWRSZWNhbGN1bGF0ZWRWYWx1ZXMgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnNlbGVjdGVkSW1wYWN0QXNzZXNzbWVudCgpPy5bdGhpcy5ub2RlS2V5KCldIHx8IFtdKTtcbiAgcHJvdGVjdGVkIHNlbGVjdGVkTm9kZSA9IGNvbXB1dGVkKCgpID0+XG4gICAgdGhpcy5zZWxlY3RlZEltcGFjdEFzc2Vzc21lbnQoKVxuICAgICAgPyB7XG4gICAgICAgICAgLi4udGhpcy5zZWxlY3RlZEltcGFjdEFzc2Vzc21lbnQoKSxcbiAgICAgICAgICBkYXRhU3RhdGU6IERhdGFTdGF0ZS5yZWNhbGN1bGF0ZWRcbiAgICAgICAgfVxuICAgICAgOiBudWxsXG4gICk7XG5cbiAgcHJvdGVjdGVkIGlzT3JpZ2luYWwgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmRhdGFTdGF0ZSgpID09PSBEYXRhU3RhdGUub3JpZ2luYWwpO1xuICBwcml2YXRlIG9yaWdpbmFsVmFsdWVzID0gY29tcHV0ZWQoKCkgPT4gKHRoaXMuaXNPcmlnaW5hbCgpID8gbnVsbCA6IHRoaXMub3JpZ2luYWxJbXBhY3RBc3Nlc3NtZW50cygpKSB8fCBbXSk7XG5cbiAgcHJvdGVjdGVkIGlzTm9kZUtleUFsbG93ZWQgPSBjb21wdXRlZCgoKSA9PiBub2RlS2V5Vmlld3NbdGhpcy5ub2RlS2V5KCldLmluY2x1ZGVzKHRoaXMuc2VsZWN0ZWRWaWV3KCkpKTtcblxuICBwcml2YXRlIHNob3VsZEZpbHRlckJ5TWV0aG9kTW9kZWwgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmVuYWJsZUZpbHRlck1ldGhvZE1vZGVsKCkgJiYgIXRoaXMuaXNPcmlnaW5hbCgpKTtcbiAgcHJvdGVjdGVkIGZpbHRlclRlcm0gPSBzaWduYWwoJycpO1xuXG4gIHByb3RlY3RlZCBjc3ZGaWxlbmFtZSA9IGNvbXB1dGVkKCgpID0+IGAke3RoaXMubm9kZUtleSgpfS5jc3ZgKTtcblxuICBwcm90ZWN0ZWQgaXNFbWlzc2lvbiA9IGNvbXB1dGVkKCgpID0+IHRoaXMuZmlsdGVyVGVybVR5cGVzKCkuaW5jbHVkZXMoVGVybVRlcm1UeXBlLmVtaXNzaW9uKSk7XG5cbiAgcHJvdGVjdGVkIGRhdGEgPSBjb21wdXRlZCgoKSA9PlxuICAgIHRoaXMuaXNFbWlzc2lvbigpID8gdGhpcy5ncm91cEVtaXNzaW9ucygpIDogeyBbdGhpcy5ub2RlS2V5KCldOiB0aGlzLmdyb3VwSW5kaWNhdG9ycygpIH1cbiAgKTtcbiAgcHJvdGVjdGVkIGRhdGFLZXlzID0gY29tcHV0ZWQoKCkgPT4gT2JqZWN0LmtleXModGhpcy5kYXRhKCkpKTtcblxuICAvLyBhcyB3ZSBmaWx0ZXIgYnkgbWV0aG9kTW9kZWwsIHdlIG1pZ2h0IGhhdmUgYW4gZW1wdHkgdGFibGUgZm9yIHRoZSBkZWZhdWx0IG1vZGVscyBidXQgbm90IGZvciBvdGhlciBtb2RlbHNcbiAgcHJvdGVjdGVkIGhhc0RhdGEgPSBjb21wdXRlZCgoKSA9PlxuICAgIHRoaXMuZW5hYmxlRmlsdGVyTWV0aG9kTW9kZWwoKSA/IHRoaXMubWV0aG9kTW9kZWxzKCkubGVuZ3RoIDogT2JqZWN0LnZhbHVlcyh0aGlzLmRhdGEoKSkuZmxhdCgpLmxlbmd0aCA+IDBcbiAgKTtcblxuICBwcm90ZWN0ZWQgbm9EYXRhTWVzc2FnZSA9IGNvbXB1dGVkKCgpID0+XG4gICAgdGhpcy5ub2RlS2V5KCkgPT09IEJsYW5rTm9kZXNLZXkuZW1pc3Npb25zUmVzb3VyY2VVc2VcbiAgICAgID8gJ1dlIGNhbm5vdCBjYWxjdWxhdGUgdGhlc2UgZGF0YSwgbW9zdCBsaWtlbHkgYmVjYXVzZSB3ZSBhcmUgbWlzc2luZyB0aGUgcXVhbnRpdHkgcHJvZHVjZWQgb3IgYmVjYXVzZSB3ZSBhcmUgbWlzc2luZyBkYXRhIHRvIGFsbG9jYXRlIGVudmlyb25tZW50YWwgaW1wYWN0IGRhdGEgYmV0d2VlbiBjby1wcm9kdWN0cy4nXG4gICAgICA6IHVuZGVmaW5lZFxuICApO1xuXG4gIHByb3RlY3RlZCBtZXRob2RNb2RlbHMgPSBjb21wdXRlZChcbiAgICAoKSA9PlxuICAgICAgdW5pcUJ5KFxuICAgICAgICB0aGlzLmltcGFjdEFzc2Vzc21lbnRzKClcbiAgICAgICAgICAuZmxhdE1hcChpbXBhY3QgPT4gKGltcGFjdFt0aGlzLm5vZGVLZXkoKV0gfHwgW10pLm1hcCh2ID0+IHYubWV0aG9kTW9kZWwpKVxuICAgICAgICAgIC5maWx0ZXIoQm9vbGVhbiksXG4gICAgICAgICdAaWQnXG4gICAgICApIGFzIFRlcm1bXVxuICApO1xuXG4gIHByaXZhdGUgX3NlbGVjdGVkTWV0aG9kTW9kZWwgPSBzaWduYWwodW5kZWZpbmVkIGFzIFRlcm0pO1xuXG4gIHByb3RlY3RlZCBncm91cEluZGljYXRvcnMoKSB7XG4gICAgLy8gVE9ETzogd2hlbiB0aGVyZSBhcmUgbm8gaW5kaWNhdG9ycyBmb3IgdGhlIGRlZmF1bHQgbW9kZWwsIHRoZSB0YWJsZSBhcHBlYXJzIGVtcHR5XG4gICAgLy8gc2hvdWxkIGRlZmF1bHQgYmFjayB0byB0aGUgZmlyc3QgbW9kZWwgaW4gdGhpcyBjYXNlXG4gICAgY29uc3QgaW5kaWNhdG9yUGVySW1wYWN0QXNzZXNzbWVudCA9IGdyb3VwTm9kZXNCeVRlcm08SUltcGFjdEFzc2Vzc21lbnRKU09OTEQsIEluZGljYXRvcj4oXG4gICAgICB0aGlzLmltcGFjdEFzc2Vzc21lbnRzKCksXG4gICAgICB0aGlzLm5vZGVLZXkoKSxcbiAgICAgIHRoaXMub3JpZ2luYWxWYWx1ZXMoKSxcbiAgICAgIGZpbHRlck5vZGUodGhpcy5zaG91bGRGaWx0ZXJCeU1ldGhvZE1vZGVsKCksIHRoaXMuX3NlbGVjdGVkTWV0aG9kTW9kZWwoKSwgdGhpcy5maWx0ZXJUZXJtKCkpXG4gICAgKTtcbiAgICByZXR1cm4gb3JkZXJCeShncm91cHBlZEtleXMoaW5kaWNhdG9yUGVySW1wYWN0QXNzZXNzbWVudCksIFsndmFsdWUubWV0aG9kVGllck9yZGVyJywgJ2tleSddLCBbJ2FzYycsICdhc2MnXSkuZmlsdGVyKFxuICAgICAgKHsgdmFsdWUgfSkgPT4gdGVybUFsbG93ZWQodmFsdWU/LnRlcm0sIHRoaXMuZmlsdGVyVGVybVR5cGVzKCkpXG4gICAgKSBhcyBJR3JvdXBlZEtleXM8SW5kaWNhdG9yPltdO1xuICB9XG5cbiAgcHJpdmF0ZSBncm91cEVtaXNzaW9ucygpIHtcbiAgICBjb25zdCBlbWlzc2lvbnNQZXJJbXBhY3RBc3Nlc3NtZW50ID0gZ3JvdXBOb2Rlc0J5VGVybTxJSW1wYWN0QXNzZXNzbWVudEpTT05MRCwgSW5kaWNhdG9yPihcbiAgICAgIHRoaXMuaW1wYWN0QXNzZXNzbWVudHMoKSxcbiAgICAgIHRoaXMubm9kZUtleSgpLFxuICAgICAgdGhpcy5vcmlnaW5hbFZhbHVlcygpLFxuICAgICAgZmlsdGVyTm9kZSh0aGlzLnNob3VsZEZpbHRlckJ5TWV0aG9kTW9kZWwoKSwgdGhpcy5fc2VsZWN0ZWRNZXRob2RNb2RlbCgpLCB0aGlzLmZpbHRlclRlcm0oKSlcbiAgICApO1xuICAgIGNvbnN0IHZhbHVlczogSUdyb3VwZWRLZXlzPEluZGljYXRvcj5bXSA9IG9yZGVyQnkoZ3JvdXBwZWRLZXlzKGVtaXNzaW9uc1BlckltcGFjdEFzc2Vzc21lbnQpLCBbJ2tleSddLCBbJ2FzYyddKTtcbiAgICBjb25zdCBtZXRob2RUaWVycyA9IG9yZGVyQnkoXG4gICAgICB1bmlxdWUodmFsdWVzLm1hcCgoeyB2YWx1ZSB9KSA9PiB2YWx1ZS5tZXRob2RUaWVyKSkubWFwKG1ldGhvZFRpZXIgPT4gKHtcbiAgICAgICAgbWV0aG9kVGllcixcbiAgICAgICAgbWV0aG9kVGllck9yZGVyOiBtZXRob2RUaWVyT3JkZXIobWV0aG9kVGllcilcbiAgICAgIH0pKSxcbiAgICAgIFsnbWV0aG9kVGllck9yZGVyJ10sXG4gICAgICBbJ2FzYyddXG4gICAgKTtcbiAgICByZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgICAgbWV0aG9kVGllcnMubWFwKCh7IG1ldGhvZFRpZXIgfSkgPT4gW1xuICAgICAgICBtZXRob2RUaWVyIHx8ICcnLFxuICAgICAgICB2YWx1ZXMuZmlsdGVyKFxuICAgICAgICAgICh7IHZhbHVlIH0pID0+IHZhbHVlLm1ldGhvZFRpZXIgPT09IG1ldGhvZFRpZXIgJiYgdGVybUFsbG93ZWQodmFsdWU/LnRlcm0sIHRoaXMuZmlsdGVyVGVybVR5cGVzKCkpXG4gICAgICAgIClcbiAgICAgIF0pXG4gICAgKSBhcyBncm91cGVkRW1pc3Npb25zO1xuICB9XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgZWZmZWN0KFxuICAgICAgKCkgPT4ge1xuICAgICAgICAvLyBtYWtlIHN1cmUgbG9ncyBkb2VzIG5vdCByZW1haW4gZGlzcGxheWVkXG4gICAgICAgIGlmICgodGhpcy5pc09yaWdpbmFsKCkgJiYgdGhpcy5zZWxlY3RlZFZpZXcoKSA9PT0gVmlldy5sb2dzKSB8fCAhdGhpcy52aWV3cygpLmluY2x1ZGVzKHRoaXMuc2VsZWN0ZWRWaWV3KCkpKSB7XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFZpZXcuc2V0KFZpZXcudGFibGUpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgeyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9XG4gICAgKTtcbiAgfVxuXG4gIHByb3RlY3RlZCB0cmFja0J5SWQoX2luZGV4OiBudW1iZXIsIGl0ZW06IElJbXBhY3RBc3Nlc3NtZW50SlNPTkxEKSB7XG4gICAgcmV0dXJuIGl0ZW1bJ0BpZCddO1xuICB9XG5cbiAgcHJvdGVjdGVkIHVwZGF0ZVNlbGVjdGVkTWV0aG9kTW9kZWwodGVybU5hbWU6IHN0cmluZykge1xuICAgIGNvbnN0IHRlcm0gPSB0aGlzLm1ldGhvZE1vZGVscygpLmZpbmQoKHsgbmFtZSB9KSA9PiBuYW1lID09PSB0ZXJtTmFtZSk7XG4gICAgdGhpcy5fc2VsZWN0ZWRNZXRob2RNb2RlbC5zZXQodGVybSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaW1wYWN0TmFtZShpbXBhY3Q6IElJbXBhY3RBc3Nlc3NtZW50SlNPTkxEKSB7XG4gICAgcmV0dXJuIGltcGFjdC5uYW1lIHx8IChpbXBhY3QuY3ljbGUgPyB0aGlzLmN5Y2xlTGFiZWwoaW1wYWN0LmN5Y2xlKSA6IGltcGFjdFsnQGlkJ10pIHx8IChpbXBhY3QgYXMgYW55KS5pZDtcbiAgfVxuXG4gIHByb3RlY3RlZCBjeWNsZUxhYmVsKHsgJ0BpZCc6IGlkLCBuYW1lIH06IGFueSkge1xuICAgIHJldHVybiBuYW1lIHx8IHRoaXMuY3ljbGVzKCkuZmluZCh2ID0+IHZbJ0BpZCddID09PSBpZCk/Lm5hbWU7XG4gIH1cblxuICBwcm90ZWN0ZWQgZmlsdGVyQnlUZXJtKHRlcm06IHN0cmluZykge1xuICAgIHRoaXMuZmlsdGVyVGVybS5zZXQodGVybSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgc2VsZWN0SW5kZXgoeyB0YXJnZXQ6IHsgdmFsdWUgfSB9KSB7XG4gICAgdGhpcy5zZWxlY3RlZEluZGV4LnNldCgrdmFsdWUpO1xuICB9XG59XG4iLCJAaWYgKGhhc0RhdGEoKSkge1xuICA8ZGl2IGNsYXNzPVwiY29sdW1ucyBpcy12YXJpYWJsZSBpcy1hbGlnbi1pdGVtcy1jZW50ZXIgaXMtMiBpcy1tLTBcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY29sdW1uXCI+XG4gICAgICBAaWYgKHNlbGVjdGVkVmlldygpID09PSBWaWV3LnRhYmxlKSB7XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBjbGFzcz1cImJ1dHRvbiBpcy1zbWFsbCBpcy1naG9zdFwiXG4gICAgICAgICAgKGNsaWNrKT1cInNob3dEb3dubG9hZCA9IHRydWVcIlxuICAgICAgICAgIG5nYlRvb2x0aXA9XCJEb3dubG9hZCBhcyBDU1ZcIlxuICAgICAgICAgIFtkaXNhYmxlVG9vbHRpcF09XCJzaG93RG93bmxvYWRcIlxuICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiPlxuICAgICAgICAgIDxmYS1pY29uIFtpY29uXT1cImZhRG93bmxvYWRcIiBzaXplPVwibGdcIj48L2ZhLWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgfVxuICAgIDwvZGl2PlxuICAgIEBpZiAoc2VsZWN0ZWRWaWV3KCkgPT09IFZpZXcudGFibGUpIHtcbiAgICAgIDxkaXYgY2xhc3M9XCJjb2x1bW4gaXMtbmFycm93XCI+XG4gICAgICAgIDxoZS1zZWFyY2gtZXh0ZW5kXG4gICAgICAgICAgY2xhc3M9XCJpcy1zZWNvbmRhcnkgaXMtc21hbGxcIlxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwiRmlsdGVyIHRlcm1zIGJ5IG5hbWVcIlxuICAgICAgICAgIChzZWFyY2gpPVwiZmlsdGVyQnlUZXJtKCRldmVudClcIj48L2hlLXNlYXJjaC1leHRlbmQ+XG4gICAgICA8L2Rpdj5cbiAgICB9XG4gICAgQGlmICh2aWV3cygpPy5sZW5ndGggPiAxKSB7XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sdW1uIGlzLW5hcnJvd1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGQgaGFzLWFkZG9uc1wiPlxuICAgICAgICAgIEBmb3IgKHZpZXcgb2Ygdmlld3MoKTsgdHJhY2sgdmlldykge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRyb2xcIj5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYnV0dG9uIGlzLXNtYWxsXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MuaXMtc2VsZWN0ZWRdPVwic2VsZWN0ZWRWaWV3KCkgPT09IHZpZXdcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RlZFZpZXcuc2V0KHZpZXcpXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpY29uIGlzLXNtYWxsXCI+XG4gICAgICAgICAgICAgICAgICA8ZmEtaWNvbiBbaWNvbl09XCJ2aWV3SWNvblt2aWV3XVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvZmEtaWNvbj5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpcy1oaWRkZW4tbW9iaWxlXCI+e3sgdmlldyB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgfVxuICA8L2Rpdj5cbn1cblxuQGlmIChpc05vZGVLZXlBbGxvd2VkKCkpIHtcbiAgQHN3aXRjaCAoc2VsZWN0ZWRWaWV3KCkpIHtcbiAgICBAY2FzZSAoVmlldy50YWJsZSkge1xuICAgICAgPGRpdiBjbGFzcz1cImlzLXB4LTMgaXMtcGItM1wiPlxuICAgICAgICBAaWYgKGhhc0RhdGEoKSkge1xuICAgICAgICAgIDxoZS1kYXRhLXRhYmxlIGNsYXNzPVwibWItMSBpcy1zbWFsbFwiIFtzbWFsbF09XCJ0cnVlXCIgbWF4SGVpZ2h0PVwiMzIwXCI+XG4gICAgICAgICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSBpcy1mdWxsd2lkdGggaXMtbmFycm93IGlzLXN0cmlwZWRcIj5cbiAgICAgICAgICAgICAgPHRoZWFkPlxuICAgICAgICAgICAgICAgIEBpZiAoZGF0YUtleXMoKS5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICAgICAgICA8dHIgY2xhc3M9XCJoYXMtdGV4dC13ZWlnaHQtYm9sZFwiPlxuICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJ3aWR0aC1hdXRvXCI+PC90aD5cbiAgICAgICAgICAgICAgICAgICAgPHRoPjwvdGg+XG4gICAgICAgICAgICAgICAgICAgIDx0aD48L3RoPlxuICAgICAgICAgICAgICAgICAgICBAZm9yIChkYXRhS2V5IG9mIGRhdGFLZXlzKCk7IHRyYWNrIGRhdGFLZXk7IGxldCBkYXRhS2V5TGFzdCA9ICRsYXN0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgQGlmIChkYXRhKClbZGF0YUtleV0/Lmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgPHRoIFthdHRyLmNvbHNwYW5dPVwiZGF0YSgpW2RhdGFLZXldLmxlbmd0aFwiIFtjbGFzcy5oYXMtYm9yZGVyLXJpZ2h0XT1cIiFkYXRhS2V5TGFzdFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGRhdGFLZXkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyBkYXRhS2V5IHwga2V5VG9MYWJlbCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDx0ciBjbGFzcz1cImhhcy10ZXh0LXdlaWdodC1zZW1pYm9sZFwiPlxuICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwid2lkdGgtYXV0byBoYXMtYm9yZGVyLXJpZ2h0IGlzLXB5LTBcIj5cbiAgICAgICAgICAgICAgICAgICAgQGlmIChlbmFibGVGaWx0ZXJNZXRob2RNb2RlbCgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdCBpcy1zbWFsbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCAoY2hhbmdlKT1cInVwZGF0ZVNlbGVjdGVkTWV0aG9kTW9kZWwoJGV2ZW50LnRhcmdldC52YWx1ZSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiBbbmdWYWx1ZV09XCJ1bmRlZmluZWRcIj5GaWx0ZXIgTW9kZWw8L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgQGZvciAodGVybSBvZiBtZXRob2RNb2RlbHMoKTsgdHJhY2sgdGVybSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gW25nVmFsdWVdPVwidGVybVwiPnt7IHRlcm0ubmFtZSB9fTwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cImhhcy1ib3JkZXItcmlnaHRcIj48L3RoPlxuICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwiaGFzLWJvcmRlci1yaWdodFwiPjwvdGg+XG4gICAgICAgICAgICAgICAgICBAZm9yIChkYXRhS2V5IG9mIGRhdGFLZXlzKCk7IHRyYWNrIGRhdGFLZXk7IGxldCBkYXRhS2V5TGFzdCA9ICRsYXN0KSB7XG4gICAgICAgICAgICAgICAgICAgIEBmb3IgKG5vZGUgb2YgZGF0YSgpW2RhdGFLZXldOyB0cmFjayBub2RlOyBsZXQgbm9kZUxhc3QgPSAkbGFzdCkge1xuICAgICAgICAgICAgICAgICAgICAgIDx0aFxuICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIudGl0bGVdPVwibm9kZS52YWx1ZS50ZXJtLm5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmhhcy1ib3JkZXItcmlnaHRdPVwiZGF0YUtleXMoKS5sZW5ndGggPiAxICYmICFkYXRhS2V5TGFzdCAmJiBub2RlTGFzdFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGhlLW5vZGUtbGluayBbbm9kZV09XCJub2RlLnZhbHVlLnRlcm1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaW5uZXJIdG1sXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS52YWx1ZS50ZXJtLm5hbWUgfCBlbGxpcHNpczogMzAgfCBjb21wb3VuZDogbm9kZS52YWx1ZS50ZXJtLnRlcm1UeXBlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9oZS1ub2RlLWxpbms+XG4gICAgICAgICAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgPHRyIGNsYXNzPVwiaXMtaXRhbGljIGhhcy10ZXh0LXdlaWdodC1zZW1pYm9sZFwiPlxuICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwid2lkdGgtYXV0byBoYXMtYm9yZGVyLXJpZ2h0XCI+PC90aD5cbiAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cImhhcy1ib3JkZXItcmlnaHRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGEgW2hyZWZdPVwiYmFzZVVybCArICcvc2NoZW1hL0ltcGFjdEFzc2Vzc21lbnQjZnVuY3Rpb25hbFVuaXQnXCIgdGFyZ2V0PVwiX2JsYW5rXCI+RnVuY3Rpb25hbCB1bml0PC9hPlxuICAgICAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cImhhcy1ib3JkZXItcmlnaHRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGEgW2hyZWZdPVwiYmFzZVVybCArICcvc2NoZW1hL0ltcGFjdEFzc2Vzc21lbnQjcHJvZHVjdCdcIiB0YXJnZXQ9XCJfYmxhbmtcIj5Qcm9kdWN0PC9hPlxuICAgICAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgICAgICAgIEBmb3IgKGRhdGFLZXkgb2YgZGF0YUtleXMoKTsgdHJhY2sgZGF0YUtleTsgbGV0IGRhdGFLZXlMYXN0ID0gJGxhc3QpIHtcbiAgICAgICAgICAgICAgICAgICAgQGZvciAobm9kZSBvZiBkYXRhKClbZGF0YUtleV07IHRyYWNrIG5vZGU7IGxldCBub2RlTGFzdCA9ICRsYXN0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgPHRoXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci50aXRsZV09XCJub2RlLnZhbHVlLnRlcm0udW5pdHNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmhhcy1ib3JkZXItcmlnaHRdPVwiZGF0YUtleXMoKS5sZW5ndGggPiAxICYmICFkYXRhS2V5TGFzdCAmJiBub2RlTGFzdFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gW2lubmVySHRtbF09XCJub2RlLnZhbHVlLnRlcm0udW5pdHMgfCBjb21wb3VuZDogbm9kZS52YWx1ZS50ZXJtLnRlcm1UeXBlXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGhlLXRlcm1zLXVuaXRzLWRlc2NyaXB0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaXMtaW5saW5lLWJsb2NrIGlzLW1sLTJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbdGVybV09XCJub2RlLnZhbHVlLnRlcm1cIj48L2hlLXRlcm1zLXVuaXRzLWRlc2NyaXB0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICA8L3RoZWFkPlxuICAgICAgICAgICAgICA8dGJvZHk+XG4gICAgICAgICAgICAgICAgQGZvciAoXG4gICAgICAgICAgICAgICAgICBpbXBhY3RBc3Nlc3NtZW50IG9mIGltcGFjdEFzc2Vzc21lbnRzKCk7XG4gICAgICAgICAgICAgICAgICB0cmFjayB0cmFja0J5SWQoaW1wYWN0SW5kZXgsIGltcGFjdEFzc2Vzc21lbnQpO1xuICAgICAgICAgICAgICAgICAgbGV0IGltcGFjdEluZGV4ID0gJGluZGV4XG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cIndpZHRoLWF1dG8gaGFzLWJvcmRlci1yaWdodFwiIFthdHRyLnRpdGxlXT1cImltcGFjdE5hbWUoaW1wYWN0QXNzZXNzbWVudClcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8aGUtbm9kZS1saW5rIFtub2RlXT1cImltcGFjdEFzc2Vzc21lbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IGltcGFjdEluZGV4ICsgMSB9fS4ge3sgaW1wYWN0TmFtZShpbXBhY3RBc3Nlc3NtZW50KSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2hlLW5vZGUtbGluaz5cbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiaGFzLWJvcmRlci1yaWdodFwiIFthdHRyLnRpdGxlXT1cImltcGFjdEFzc2Vzc21lbnQucHJvZHVjdD8udGVybT8udW5pdHNcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj4xIHt7IGltcGFjdEFzc2Vzc21lbnQucHJvZHVjdD8udGVybT8udW5pdHMgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImhhcy1ib3JkZXItcmlnaHRcIiBbYXR0ci50aXRsZV09XCJpbXBhY3RBc3Nlc3NtZW50LnByb2R1Y3Q/LnRlcm0/Lm5hbWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICBAaWYgKGltcGFjdEFzc2Vzc21lbnQucHJvZHVjdD8udGVybSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgPGhlLW5vZGUtbGluayBbbm9kZV09XCJpbXBhY3RBc3Nlc3NtZW50LnByb2R1Y3QudGVybVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyBpbXBhY3RBc3Nlc3NtZW50LnByb2R1Y3QudGVybS5uYW1lIHwgZWxsaXBzaXM6IDMwIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9oZS1ub2RlLWxpbms+XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICBAZm9yIChkYXRhS2V5IG9mIGRhdGFLZXlzKCk7IHRyYWNrIGRhdGFLZXk7IGxldCBkYXRhS2V5TGFzdCA9ICRsYXN0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgQGZvciAobm9kZSBvZiBkYXRhKClbZGF0YUtleV07IHRyYWNrIG5vZGU7IGxldCBub2RlTGFzdCA9ICRsYXN0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpcy1ub3dyYXBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaGFzLWJvcmRlci1yaWdodF09XCJkYXRhS2V5cygpLmxlbmd0aCA+IDEgJiYgIWRhdGFLZXlMYXN0ICYmIG5vZGVMYXN0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAobm9kZS52YWx1ZS52YWx1ZXNbaW1wYWN0QXNzZXNzbWVudFsnQGlkJ11dKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidHJpZ2dlci1wb3BvdmVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ2JQb3BvdmVyXT1cImRldGFpbHNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F1dG9DbG9zZV09XCInb3V0c2lkZSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9wb3ZlckNsYXNzPVwiaXMtbmFycm93XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNwPVwibmdiUG9wb3ZlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJsZWZ0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcj1cImJvZHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BvcG92ZXJDb250ZXh0XT1cIntcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YTogbm9kZS52YWx1ZS52YWx1ZXNbaW1wYWN0QXNzZXNzbWVudFsnQGlkJ11dLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXBhY3RBc3Nlc3NtZW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBwb2ludGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5VmFsdWUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLnZhbHVlLnZhbHVlc1tpbXBhY3RBc3Nlc3NtZW50WydAaWQnXV0udmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLnZhbHVlLnRlcm1bJ0BpZCddXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwcmVjaXNpb246IDNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZGVmYXVsdDogJy0nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aGUtYmxhbmstbm9kZS1zdGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1sLTFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGF0YVN0YXRlXT1cImRhdGFTdGF0ZSgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25vZGVdPVwibm9kZS52YWx1ZS52YWx1ZXNbaW1wYWN0QXNzZXNzbWVudFsnQGlkJ11dLm5vZGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9XCJ2YWx1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdGF0ZV09XCJpbXBhY3RBc3Nlc3NtZW50LmFnZ3JlZ2F0ZWQgPyAnYWdncmVnYXRlZCcgOiB1bmRlZmluZWRcIj48L2hlLWJsYW5rLW5vZGUtc3RhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj4tPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwvdGJvZHk+XG4gICAgICAgICAgICA8L3RhYmxlPlxuICAgICAgICAgIDwvaGUtZGF0YS10YWJsZT5cbiAgICAgICAgICA8aGUtYmxhbmstbm9kZS1zdGF0ZS1ub3RpY2UgW2RhdGFTdGF0ZV09XCJkYXRhU3RhdGUoKVwiPjwvaGUtYmxhbmstbm9kZS1zdGF0ZS1ub3RpY2U+XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpcy1wdC0zIGhhcy10ZXh0LWNlbnRlcmVkXCI+XG4gICAgICAgICAgICA8c3Bhbj5ObyBkYXRhIGF2YWlsYWJsZTwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaXMtcGwtMVwiIFtjbGFzcy5pcy1oaWRkZW5dPVwiIWZpbHRlclRlcm0oKVwiPm1hdGNoaW5nIHlvdXIgc2VhcmNoIGNyaXRlcmlhPC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4+Ljwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIFtjbGFzcy5pcy1oaWRkZW5dPVwiIWlzT3JpZ2luYWwoKVwiPlxuICAgICAgICAgICAgICBTd2l0Y2ggdG9cbiAgICAgICAgICAgICAgPGNvZGU+cmVjYWxjdWxhdGVkPC9jb2RlPlxuICAgICAgICAgICAgICB2ZXJzaW9uLlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cbiAgICB9XG4gICAgQGNhc2UgKFZpZXcuY2hhcnQpIHtcbiAgICAgIDxoZS1pbXBhY3QtYXNzZXNzbWVudHMtaW5kaWNhdG9ycy1jaGFydFxuICAgICAgICBba2V5XT1cIm5vZGVLZXkoKVwiXG4gICAgICAgIFtmaWx0ZXJUZXJtVHlwZXNdPVwiZmlsdGVyVGVybVR5cGVzKClcIj48L2hlLWltcGFjdC1hc3Nlc3NtZW50cy1pbmRpY2F0b3JzLWNoYXJ0PlxuICAgIH1cbiAgICBAY2FzZSAoVmlldy5icmVha2Rvd24pIHtcbiAgICAgIDxoZS1pbXBhY3QtYXNzZXNzbWVudHMtaW5kaWNhdG9yLWJyZWFrZG93bi1jaGFydFxuICAgICAgICBbaW1wYWN0QXNzZXNzbWVudF09XCJzZWxlY3RlZE5vZGUoKVwiXG4gICAgICAgIFtpbmRpY2F0b3JzXT1cInNlbGVjdGVkUmVjYWxjdWxhdGVkVmFsdWVzKClcIj48L2hlLWltcGFjdC1hc3Nlc3NtZW50cy1pbmRpY2F0b3ItYnJlYWtkb3duLWNoYXJ0PlxuICAgIH1cbiAgICBAY2FzZSAoVmlldy5sb2dzKSB7XG4gICAgICBAaWYgKGltcGFjdEFzc2Vzc21lbnRzKCkubGVuZ3RoID4gMSkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGQgaGFzLWFkZG9ucyBwdC0yIHB4LTNcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udHJvbFwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJidXR0b24gaXMtc21hbGwgaXMtc3RhdGljIGlzLXNlY29uZGFyeVwiPlNlbGVjdCBhbiBJbXBhY3QgQXNzZXNzbWVudDwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udHJvbCBpcy1leHBhbmRlZFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdCBpcy1zbWFsbCBpcy1mdWxsd2lkdGggaXMtc2Vjb25kYXJ5XCI+XG4gICAgICAgICAgICAgIDxzZWxlY3QgKGNoYW5nZSk9XCJzZWxlY3RJbmRleCgkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgQGZvciAodmFsdWUgb2YgaW1wYWN0QXNzZXNzbWVudHMoKTsgdHJhY2sgdmFsdWU7IGxldCBpID0gJGluZGV4KSB7XG4gICAgICAgICAgICAgICAgICA8b3B0aW9uIFt2YWx1ZV09XCJpXCI+e3sgaSArIDEgfX0uIHt7IGltcGFjdE5hbWUodmFsdWUpIH19PC9vcHRpb24+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cbiAgICAgIEBpZiAoc2VsZWN0ZWROb2RlKCkpIHtcbiAgICAgICAgPGhlLW5vZGUtbG9ncy1tb2RlbHNcbiAgICAgICAgICBbbm9kZV09XCJzZWxlY3RlZE5vZGUoKVwiXG4gICAgICAgICAgW25vZGVLZXldPVwibm9kZUtleSgpXCJcbiAgICAgICAgICBbZmlsdGVyVGVybVR5cGVzXT1cImZpbHRlclRlcm1UeXBlcygpXCJcbiAgICAgICAgICBbb3JpZ2luYWxWYWx1ZXNdPVwic2VsZWN0ZWRPcmlnaW5hbFZhbHVlcygpXCJcbiAgICAgICAgICBbcmVjYWxjdWxhdGVkVmFsdWVzXT1cInNlbGVjdGVkUmVjYWxjdWxhdGVkVmFsdWVzKClcIlxuICAgICAgICAgIFtub0RhdGFNZXNzYWdlXT1cIm5vRGF0YU1lc3NhZ2UoKVwiPjwvaGUtbm9kZS1sb2dzLW1vZGVscz5cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuQGlmIChzaG93RG93bmxvYWQpIHtcbiAgPGhlLW5vZGUtY3N2LWV4cG9ydC1jb25maXJtXG4gICAgW25vZGVzXT1cImltcGFjdEFzc2Vzc21lbnRzKClcIlxuICAgIFtmaWxlbmFtZV09XCJjc3ZGaWxlbmFtZSgpXCJcbiAgICBbaXNVcGxvYWRdPVwiZmFsc2VcIlxuICAgIFtoZWFkZXJLZXlzXT1cImhlYWRlcktleXMoKVwiXG4gICAgKGNsb3NlZCk9XCJzaG93RG93bmxvYWQgPSBmYWxzZVwiPjwvaGUtbm9kZS1jc3YtZXhwb3J0LWNvbmZpcm0+XG59XG5cbjxuZy10ZW1wbGF0ZSAjZGV0YWlscyBsZXQtbm9kZT1cImltcGFjdEFzc2Vzc21lbnRcIiBsZXQtZGF0YT1cImRhdGFcIj5cbiAgPHA+XG4gICAgPGI+XG4gICAgICBAaWYgKGRhdGEuY3ljbGUpIHtcbiAgICAgICAgPHNwYW4+e3sgY3ljbGVMYWJlbChub2RlLmN5Y2xlKSB9fTwvc3Bhbj5cbiAgICAgIH1cbiAgICAgIEBpZiAoIWRhdGEuY3ljbGUpIHtcbiAgICAgICAgPHNwYW4+e3sgZGF0YS5uYW1lIH19PC9zcGFuPlxuICAgICAgfVxuICAgIDwvYj5cbiAgPC9wPlxuICA8aGUtbm9kZS12YWx1ZS1kZXRhaWxzXG4gICAgW2RhdGFdPVwiZGF0YVwiXG4gICAgW2RhdGFTdGF0ZV09XCJkYXRhU3RhdGUoKVwiXG4gICAgW25vZGVUeXBlXT1cIm5vZGVbJ0B0eXBlJ11cIlxuICAgIFtkYXRhS2V5XT1cIm5vZGVLZXkoKVwiPjwvaGUtbm9kZS12YWx1ZS1kZXRhaWxzPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
188
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1wYWN0LWFzc2Vzc21lbnRzLXByb2R1Y3RzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9pbXBhY3QtYXNzZXNzbWVudHMvaW1wYWN0LWFzc2Vzc21lbnRzLXByb2R1Y3RzL2ltcGFjdC1hc3Nlc3NtZW50cy1wcm9kdWN0cy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9zcmMvaW1wYWN0LWFzc2Vzc21lbnRzL2ltcGFjdC1hc3Nlc3NtZW50cy1wcm9kdWN0cy9pbXBhY3QtYXNzZXNzbWVudHMtcHJvZHVjdHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVHLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDOUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFJTCxZQUFZLEVBRVosUUFBUSxFQUNSLGFBQWEsRUFHZCxNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDbkUsT0FBTyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNwRSxPQUFPLEVBQWtCLFlBQVksRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ2pILE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QyxPQUFPLE9BQU8sTUFBTSxn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MkNBQ1gsWUFBWSw0Q0FDWixhQUFhLDZDQUNiLGNBQWM7OzJGQUdMLGtDQUFrQztrQkE3QjlDLFNBQVM7K0JBQ0UsZ0NBQWdDLG1CQUd6Qix1QkFBdUIsQ0FBQyxNQUFNLGNBQ25DLElBQUksV0FDUDt3QkFDUCxVQUFVO3dCQUNWLGVBQWU7d0JBQ2YscUJBQXFCO3dCQUNyQixrQkFBa0I7d0JBQ2xCLFdBQVc7d0JBQ1gsaUJBQWlCO3dCQUNqQiw4QkFBOEI7d0JBQzlCLFVBQVU7d0JBQ1YsdUJBQXVCO3dCQUN2Qiw2QkFBNkI7d0JBQzdCLHlDQUF5Qzt3QkFDekMsaURBQWlEO3dCQUNqRCx1QkFBdUI7d0JBQ3ZCLDZCQUE2Qjt3QkFDN0IseUJBQXlCO3dCQUN6QixZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsWUFBWTt3QkFDWixhQUFhO3dCQUNiLGNBQWM7cUJBQ2YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBjb21wdXRlZCwgZWZmZWN0LCBpbmplY3QsIGlucHV0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRvU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgRGF0YVN0YXRlIH0gZnJvbSAnQGhlc3RpYS1lYXJ0aC9hcGknO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge1xuICBJQ3ljbGVKU09OTEQsXG4gIElJbXBhY3RBc3Nlc3NtZW50SlNPTkxELFxuICBJbmRpY2F0b3IsXG4gIFRlcm1UZXJtVHlwZSxcbiAgVGVybSxcbiAgTm9kZVR5cGUsXG4gIEJsYW5rTm9kZXNLZXksXG4gIEluZGljYXRvck1ldGhvZFRpZXIsXG4gIElUZXJtSlNPTkxEXG59IGZyb20gJ0BoZXN0aWEtZWFydGgvc2NoZW1hJztcbmltcG9ydCB7IHByb3BlcnR5VmFsdWUgfSBmcm9tICdAaGVzdGlhLWVhcnRoL3V0aWxzL2Rpc3QvdGVybSc7XG5pbXBvcnQgeyBGYUljb25Db21wb25lbnQgfSBmcm9tICdAZm9ydGF3ZXNvbWUvYW5ndWxhci1mb250YXdlc29tZSc7XG5pbXBvcnQgeyBOZ2JUb29sdGlwLCBOZ2JQb3BvdmVyIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xuaW1wb3J0IHsgSWNvbkRlZmluaXRpb24sIGZhQ2FsY3VsYXRvciwgZmFDaGFydEJhciwgZmFEb3dubG9hZCwgZmFMaXN0IH0gZnJvbSAnQGZvcnRhd2Vzb21lL2ZyZWUtc29saWQtc3ZnLWljb25zJztcbmltcG9ydCB7IHVuaXF1ZSB9IGZyb20gJ0BoZXN0aWEtZWFydGgvdXRpbHMnO1xuaW1wb3J0IG9yZGVyQnkgZnJvbSAnbG9kYXNoLm9yZGVyYnknO1xuaW1wb3J0IHVuaXFCeSBmcm9tICdsb2Rhc2gudW5pcWJ5JztcblxuaW1wb3J0IHtcbiAgZ3JvdXBOb2Rlc0J5VGVybSxcbiAgSUdyb3VwZWRLZXlzLFxuICBncm91cHBlZEtleXMsXG4gIGlzTWV0aG9kTW9kZWxBbGxvd2VkLFxuICBtZXRob2RUaWVyT3JkZXJcbn0gZnJvbSAnLi4vLi4vY29tbW9uL25vZGUtdXRpbHMnO1xuaW1wb3J0IHsgYmFzZVVybCB9IGZyb20gJy4uLy4uL2NvbW1vbi91dGlscyc7XG5pbXBvcnQgeyBQcmVjaXNpb25QaXBlIH0gZnJvbSAnLi4vLi4vY29tbW9uL3ByZWNpc2lvbi5waXBlJztcbmltcG9ydCB7IEVsbGlwc2lzUGlwZSB9IGZyb20gJy4uLy4uL2NvbW1vbi9lbGxpcHNpcy5waXBlJztcbmltcG9ydCB7IERlZmF1bHRQaXBlIH0gZnJvbSAnLi4vLi4vY29tbW9uL2RlZmF1bHQucGlwZSc7XG5pbXBvcnQgeyBDb21wb3VuZFBpcGUgfSBmcm9tICcuLi8uLi9jb21tb24vY29tcG91bmQucGlwZSc7XG5pbXBvcnQgeyBLZXlUb0xhYmVsUGlwZSB9IGZyb20gJy4uLy4uL2NvbW1vbi9rZXktdG8tbGFiZWwucGlwZSc7XG5pbXBvcnQgeyBCbGFua05vZGVTdGF0ZU5vdGljZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvbW1vbi9ibGFuay1ub2RlLXN0YXRlLW5vdGljZS9ibGFuay1ub2RlLXN0YXRlLW5vdGljZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGF0YVRhYmxlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29tbW9uL2RhdGEtdGFibGUvZGF0YS10YWJsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQmxhbmtOb2RlU3RhdGVDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb21tb24vYmxhbmstbm9kZS1zdGF0ZS9ibGFuay1ub2RlLXN0YXRlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTZWFyY2hFeHRlbmRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb21tb24vc2VhcmNoLWV4dGVuZC9zZWFyY2gtZXh0ZW5kLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBIZU5vZGVTdG9yZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9ub2RlL25vZGUtc3RvcmUuc2VydmljZSc7XG5pbXBvcnQgeyBOb2RlVmFsdWVEZXRhaWxzQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbm9kZS9ub2RlLXZhbHVlLWRldGFpbHMvbm9kZS12YWx1ZS1kZXRhaWxzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBOb2RlQ3N2RXhwb3J0Q29uZmlybUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL25vZGUvbm9kZS1jc3YtZXhwb3J0LWNvbmZpcm0vbm9kZS1jc3YtZXhwb3J0LWNvbmZpcm0uY29tcG9uZW50JztcbmltcG9ydCB7IE5vZGVMb2dzTW9kZWxzQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbm9kZS9ub2RlLWxvZ3MtbW9kZWxzL25vZGUtbG9ncy1tb2RlbHMuY29tcG9uZW50JztcbmltcG9ydCB7IEltcGFjdEFzc2Vzc21lbnRzSW5kaWNhdG9yQnJlYWtkb3duQ2hhcnRDb21wb25lbnQgfSBmcm9tICcuLi9pbXBhY3QtYXNzZXNzbWVudHMtaW5kaWNhdG9yLWJyZWFrZG93bi1jaGFydC9pbXBhY3QtYXNzZXNzbWVudHMtaW5kaWNhdG9yLWJyZWFrZG93bi1jaGFydC5jb21wb25lbnQnO1xuaW1wb3J0IHsgSW1wYWN0QXNzZXNzbWVudHNJbmRpY2F0b3JzQ2hhcnRDb21wb25lbnQgfSBmcm9tICcuLi9pbXBhY3QtYXNzZXNzbWVudHMtaW5kaWNhdG9ycy1jaGFydC9pbXBhY3QtYXNzZXNzbWVudHMtaW5kaWNhdG9ycy1jaGFydC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGVybXNVbml0c0Rlc2NyaXB0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vdGVybXMvdGVybXMtdW5pdHMtZGVzY3JpcHRpb24vdGVybXMtdW5pdHMtZGVzY3JpcHRpb24uY29tcG9uZW50JztcbmltcG9ydCB7IE5vZGVMaW5rQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbm9kZS9ub2RlLWxpbmsvbm9kZS1saW5rLmNvbXBvbmVudCc7XG5cbmVudW0gVmlldyB7XG4gIHRhYmxlID0gJ1RhYmxlIHZpZXcnLFxuICBjaGFydCA9ICdDaGFydCB2aWV3JyxcbiAgYnJlYWtkb3duID0gJ0JyZWFrZG93biB2aWV3JyxcbiAgbG9ncyA9ICdSZWNhbGN1bGF0aW9ucyBsb2dzJ1xufVxuXG5jb25zdCB2aWV3SWNvbjoge1xuICBbdmlldyBpbiBWaWV3XTogSWNvbkRlZmluaXRpb247XG59ID0ge1xuICBbVmlldy5icmVha2Rvd25dOiBmYUNoYXJ0QmFyLFxuICBbVmlldy5jaGFydF06IGZhQ2hhcnRCYXIsXG4gIFtWaWV3LmxvZ3NdOiBmYUNhbGN1bGF0b3IsXG4gIFtWaWV3LnRhYmxlXTogZmFMaXN0XG59O1xuXG5jb25zdCBub2RlS2V5Vmlld3M6IHtcbiAgW3R5cGUgaW4gQmxhbmtOb2Rlc0tleV0/OiBWaWV3W107XG59ID0ge1xuICBbQmxhbmtOb2Rlc0tleS5lbWlzc2lvbnNSZXNvdXJjZVVzZV06IFtWaWV3LnRhYmxlLCBWaWV3LmNoYXJ0LCBWaWV3LmxvZ3NdLFxuICBbQmxhbmtOb2Rlc0tleS5pbXBhY3RzXTogW1ZpZXcudGFibGUsIFZpZXcuYnJlYWtkb3duLCBWaWV3LmNoYXJ0LCBWaWV3LmxvZ3NdLFxuICBbQmxhbmtOb2Rlc0tleS5lbmRwb2ludHNdOiBbVmlldy50YWJsZSwgVmlldy5icmVha2Rvd24sIFZpZXcuY2hhcnQsIFZpZXcubG9nc11cbn07XG5cbnR5cGUgZ3JvdXBlZEVtaXNzaW9ucyA9IHtcbiAgW21ldGhvZFRpZXIgaW4gSW5kaWNhdG9yTWV0aG9kVGllcl06IElHcm91cGVkS2V5czxJbmRpY2F0b3I+W107XG59O1xuXG5jb25zdCB0ZXJtQWxsb3dlZCA9ICh0ZXJtPzogVGVybSB8IElUZXJtSlNPTkxELCBmaWx0ZXJUZXJtVHlwZXM6IFRlcm1UZXJtVHlwZVtdID0gW10pID0+XG4gICFmaWx0ZXJUZXJtVHlwZXM/Lmxlbmd0aCB8fCAoZmlsdGVyVGVybVR5cGVzIHx8IFtdKS5pbmNsdWRlcyh0ZXJtPy50ZXJtVHlwZSk7XG5cbmNvbnN0IGZpbHRlck5vZGUgPSAoZmlsdGVyQnlNZXRob2RNb2RlbDogYm9vbGVhbiwgZmlsdGVyTWV0aG9kTW9kZWw/OiBUZXJtLCBmaWx0ZXJUZXJtPzogc3RyaW5nKSA9PiAobm9kZTogSW5kaWNhdG9yKSA9PlxuICBbXG4gICAgIWZpbHRlckJ5TWV0aG9kTW9kZWwgfHwgaXNNZXRob2RNb2RlbEFsbG93ZWQoZmlsdGVyTWV0aG9kTW9kZWwpKG5vZGUpLFxuICAgICFmaWx0ZXJUZXJtIHx8IG5vZGU/LnRlcm0/Lm5hbWU/LnRvTG93ZXJDYXNlKCk/LmluY2x1ZGVzKGZpbHRlclRlcm0udG9Mb3dlckNhc2UoKSlcbiAgXS5ldmVyeShCb29sZWFuKTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaGUtaW1wYWN0LWFzc2Vzc21lbnRzLXByb2R1Y3RzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2ltcGFjdC1hc3Nlc3NtZW50cy1wcm9kdWN0cy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2ltcGFjdC1hc3Nlc3NtZW50cy1wcm9kdWN0cy5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIE5nYlRvb2x0aXAsXG4gICAgRmFJY29uQ29tcG9uZW50LFxuICAgIFNlYXJjaEV4dGVuZENvbXBvbmVudCxcbiAgICBEYXRhVGFibGVDb21wb25lbnQsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgTm9kZUxpbmtDb21wb25lbnQsXG4gICAgVGVybXNVbml0c0Rlc2NyaXB0aW9uQ29tcG9uZW50LFxuICAgIE5nYlBvcG92ZXIsXG4gICAgQmxhbmtOb2RlU3RhdGVDb21wb25lbnQsXG4gICAgQmxhbmtOb2RlU3RhdGVOb3RpY2VDb21wb25lbnQsXG4gICAgSW1wYWN0QXNzZXNzbWVudHNJbmRpY2F0b3JzQ2hhcnRDb21wb25lbnQsXG4gICAgSW1wYWN0QXNzZXNzbWVudHNJbmRpY2F0b3JCcmVha2Rvd25DaGFydENvbXBvbmVudCxcbiAgICBOb2RlTG9nc01vZGVsc0NvbXBvbmVudCxcbiAgICBOb2RlQ3N2RXhwb3J0Q29uZmlybUNvbXBvbmVudCxcbiAgICBOb2RlVmFsdWVEZXRhaWxzQ29tcG9uZW50LFxuICAgIENvbXBvdW5kUGlwZSxcbiAgICBEZWZhdWx0UGlwZSxcbiAgICBFbGxpcHNpc1BpcGUsXG4gICAgUHJlY2lzaW9uUGlwZSxcbiAgICBLZXlUb0xhYmVsUGlwZVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIEltcGFjdEFzc2Vzc21lbnRzUHJvZHVjdHNDb21wb25lbnQge1xuICBwcml2YXRlIG5vZGVTdG9yZVNlcnZpY2UgPSBpbmplY3QoSGVOb2RlU3RvcmVTZXJ2aWNlKTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZmFEb3dubG9hZCA9IGZhRG93bmxvYWQ7XG5cbiAgcHJvdGVjdGVkIGRhdGFTdGF0ZSA9IGlucHV0KERhdGFTdGF0ZS5vcmlnaW5hbCk7XG4gIHByb3RlY3RlZCBub2RlS2V5ID0gaW5wdXQoQmxhbmtOb2Rlc0tleS5pbXBhY3RzKTtcbiAgcHJvdGVjdGVkIGZpbHRlclRlcm1UeXBlcyA9IGlucHV0KFtdIGFzIFRlcm1UZXJtVHlwZVtdKTtcbiAgcHJvdGVjdGVkIGVuYWJsZUZpbHRlck1ldGhvZE1vZGVsID0gaW5wdXQoZmFsc2UpO1xuXG4gIHByb3RlY3RlZCBwcm9wZXJ0eVZhbHVlID0gcHJvcGVydHlWYWx1ZTtcbiAgcHJvdGVjdGVkIGJhc2VVcmwgPSBiYXNlVXJsKCk7XG4gIHByb3RlY3RlZCBzaG93RG93bmxvYWQgPSBmYWxzZTtcblxuICBwcm90ZWN0ZWQgaGVhZGVyS2V5cyA9IGNvbXB1dGVkKCgpID0+IFtcbiAgICAnaW1wYWN0QXNzZXNzbWVudC5pZCcsXG4gICAgJ2ltcGFjdEFzc2Vzc21lbnQuQGlkJyxcbiAgICBgaW1wYWN0QXNzZXNzbWVudC4ke3RoaXMubm9kZUtleSgpfS5gXG4gIF0pO1xuXG4gIHByb3RlY3RlZCBWaWV3ID0gVmlldztcbiAgcHJvdGVjdGVkIHZpZXdJY29uID0gdmlld0ljb247XG4gIHByaXZhdGUgc2hvd1ZpZXcgPSBjb21wdXRlZChcbiAgICAoKSA9PlxuICAgICAgKHtcbiAgICAgICAgW1ZpZXcuYnJlYWtkb3duXTogIXRoaXMuaXNPcmlnaW5hbCgpICYmIHRoaXMuaW1wYWN0QXNzZXNzbWVudHMoKS5sZW5ndGggPT09IDEsXG4gICAgICAgIFtWaWV3LmNoYXJ0XTogdGhpcy5pbXBhY3RBc3Nlc3NtZW50cygpLmxlbmd0aCA+IDEsXG4gICAgICAgIFtWaWV3LmxvZ3NdOiAhdGhpcy5pc09yaWdpbmFsKCksXG4gICAgICAgIFtWaWV3LnRhYmxlXTogdHJ1ZVxuICAgICAgfSkgYXMgeyBbdmlldyBpbiBWaWV3XTogYm9vbGVhbiB9XG4gICk7XG4gIHByb3RlY3RlZCB2aWV3cyA9IGNvbXB1dGVkKCgpID0+IG5vZGVLZXlWaWV3c1t0aGlzLm5vZGVLZXkoKV0/LmZpbHRlcih2aWV3ID0+IHRoaXMuc2hvd1ZpZXcoKVt2aWV3XSkgPz8gW10pO1xuICBwcm90ZWN0ZWQgc2VsZWN0ZWRWaWV3ID0gc2lnbmFsKFZpZXcudGFibGUpO1xuXG4gIHByaXZhdGUgY3ljbGVzID0gdG9TaWduYWwodGhpcy5ub2RlU3RvcmVTZXJ2aWNlLmZpbmRCeVN0YXRlJDxJQ3ljbGVKU09OTEQ+KE5vZGVUeXBlLkN5Y2xlLCBEYXRhU3RhdGUub3JpZ2luYWwpKTtcblxuICBwcml2YXRlIG9yaWdpbmFsSW1wYWN0QXNzZXNzbWVudHMgPSB0b1NpZ25hbChcbiAgICB0aGlzLm5vZGVTdG9yZVNlcnZpY2UuZmluZEJ5U3RhdGUkPElJbXBhY3RBc3Nlc3NtZW50SlNPTkxEPihOb2RlVHlwZS5JbXBhY3RBc3Nlc3NtZW50LCBEYXRhU3RhdGUub3JpZ2luYWwpXG4gICk7XG4gIHByaXZhdGUgX2FsbEltcGFjdEFzc2Vzc21lbnRzID0gdG9TaWduYWwoXG4gICAgdGhpcy5ub2RlU3RvcmVTZXJ2aWNlLmZpbmQkPElJbXBhY3RBc3Nlc3NtZW50SlNPTkxEPihOb2RlVHlwZS5JbXBhY3RBc3Nlc3NtZW50KVxuICApO1xuICBwcm90ZWN0ZWQgaW1wYWN0QXNzZXNzbWVudHMgPSBjb21wdXRlZCgoKSA9PiB0aGlzLl9hbGxJbXBhY3RBc3Nlc3NtZW50cygpPy5tYXAoZGF0YSA9PiBkYXRhW3RoaXMuZGF0YVN0YXRlKCldKSB8fCBbXSk7XG5cbiAgcHJpdmF0ZSBzZWxlY3RlZEluZGV4ID0gc2lnbmFsKDApO1xuICBwcml2YXRlIG9naXJpbmFsU2VsZWN0ZWRJbXBhY3RBc3Nlc3NtZW50ID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5vcmlnaW5hbEltcGFjdEFzc2Vzc21lbnRzKCk/Llt0aGlzLnNlbGVjdGVkSW5kZXgoKV0pO1xuICBwcml2YXRlIHNlbGVjdGVkSW1wYWN0QXNzZXNzbWVudCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuaW1wYWN0QXNzZXNzbWVudHMoKT8uW3RoaXMuc2VsZWN0ZWRJbmRleCgpXSk7XG4gIHByb3RlY3RlZCBzZWxlY3RlZE9yaWdpbmFsVmFsdWVzID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5vZ2lyaW5hbFNlbGVjdGVkSW1wYWN0QXNzZXNzbWVudCgpPy5bdGhpcy5ub2RlS2V5KCldIHx8IFtdKTtcbiAgcHJvdGVjdGVkIHNlbGVjdGVkUmVjYWxjdWxhdGVkVmFsdWVzID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5zZWxlY3RlZEltcGFjdEFzc2Vzc21lbnQoKT8uW3RoaXMubm9kZUtleSgpXSB8fCBbXSk7XG4gIHByb3RlY3RlZCBzZWxlY3RlZE5vZGUgPSBjb21wdXRlZCgoKSA9PlxuICAgIHRoaXMuc2VsZWN0ZWRJbXBhY3RBc3Nlc3NtZW50KClcbiAgICAgID8ge1xuICAgICAgICAgIC4uLnRoaXMuc2VsZWN0ZWRJbXBhY3RBc3Nlc3NtZW50KCksXG4gICAgICAgICAgZGF0YVN0YXRlOiBEYXRhU3RhdGUucmVjYWxjdWxhdGVkXG4gICAgICAgIH1cbiAgICAgIDogbnVsbFxuICApO1xuXG4gIHByb3RlY3RlZCBpc09yaWdpbmFsID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5kYXRhU3RhdGUoKSA9PT0gRGF0YVN0YXRlLm9yaWdpbmFsKTtcbiAgcHJpdmF0ZSBvcmlnaW5hbFZhbHVlcyA9IGNvbXB1dGVkKCgpID0+ICh0aGlzLmlzT3JpZ2luYWwoKSA/IG51bGwgOiB0aGlzLm9yaWdpbmFsSW1wYWN0QXNzZXNzbWVudHMoKSkgfHwgW10pO1xuXG4gIHByb3RlY3RlZCBpc05vZGVLZXlBbGxvd2VkID0gY29tcHV0ZWQoKCkgPT4gbm9kZUtleVZpZXdzW3RoaXMubm9kZUtleSgpXS5pbmNsdWRlcyh0aGlzLnNlbGVjdGVkVmlldygpKSk7XG5cbiAgcHJpdmF0ZSBzaG91bGRGaWx0ZXJCeU1ldGhvZE1vZGVsID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5lbmFibGVGaWx0ZXJNZXRob2RNb2RlbCgpICYmICF0aGlzLmlzT3JpZ2luYWwoKSk7XG4gIHByb3RlY3RlZCBmaWx0ZXJUZXJtID0gc2lnbmFsKCcnKTtcblxuICBwcm90ZWN0ZWQgY3N2RmlsZW5hbWUgPSBjb21wdXRlZCgoKSA9PiBgJHt0aGlzLm5vZGVLZXkoKX0uY3N2YCk7XG5cbiAgcHJvdGVjdGVkIGlzRW1pc3Npb24gPSBjb21wdXRlZCgoKSA9PiB0aGlzLmZpbHRlclRlcm1UeXBlcygpLmluY2x1ZGVzKFRlcm1UZXJtVHlwZS5lbWlzc2lvbikpO1xuXG4gIHByb3RlY3RlZCBkYXRhID0gY29tcHV0ZWQoKCkgPT5cbiAgICB0aGlzLmlzRW1pc3Npb24oKSA/IHRoaXMuZ3JvdXBFbWlzc2lvbnMoKSA6IHsgW3RoaXMubm9kZUtleSgpXTogdGhpcy5ncm91cEluZGljYXRvcnMoKSB9XG4gICk7XG4gIHByb3RlY3RlZCBkYXRhS2V5cyA9IGNvbXB1dGVkKCgpID0+IE9iamVjdC5rZXlzKHRoaXMuZGF0YSgpKSk7XG5cbiAgLy8gYXMgd2UgZmlsdGVyIGJ5IG1ldGhvZE1vZGVsLCB3ZSBtaWdodCBoYXZlIGFuIGVtcHR5IHRhYmxlIGZvciB0aGUgZGVmYXVsdCBtb2RlbHMgYnV0IG5vdCBmb3Igb3RoZXIgbW9kZWxzXG4gIHByb3RlY3RlZCBoYXNEYXRhID0gY29tcHV0ZWQoKCkgPT5cbiAgICB0aGlzLmVuYWJsZUZpbHRlck1ldGhvZE1vZGVsKCkgPyB0aGlzLm1ldGhvZE1vZGVscygpLmxlbmd0aCA6IE9iamVjdC52YWx1ZXModGhpcy5kYXRhKCkpLmZsYXQoKS5sZW5ndGggPiAwXG4gICk7XG5cbiAgcHJvdGVjdGVkIG5vRGF0YU1lc3NhZ2UgPSBjb21wdXRlZCgoKSA9PlxuICAgIHRoaXMubm9kZUtleSgpID09PSBCbGFua05vZGVzS2V5LmVtaXNzaW9uc1Jlc291cmNlVXNlXG4gICAgICA/ICdXZSBjYW5ub3QgY2FsY3VsYXRlIHRoZXNlIGRhdGEsIG1vc3QgbGlrZWx5IGJlY2F1c2Ugd2UgYXJlIG1pc3NpbmcgdGhlIHF1YW50aXR5IHByb2R1Y2VkIG9yIGJlY2F1c2Ugd2UgYXJlIG1pc3NpbmcgZGF0YSB0byBhbGxvY2F0ZSBlbnZpcm9ubWVudGFsIGltcGFjdCBkYXRhIGJldHdlZW4gY28tcHJvZHVjdHMuJ1xuICAgICAgOiB1bmRlZmluZWRcbiAgKTtcblxuICBwcm90ZWN0ZWQgbWV0aG9kTW9kZWxzID0gY29tcHV0ZWQoKCkgPT5cbiAgICB1bmlxQnkoXG4gICAgICB0aGlzLmltcGFjdEFzc2Vzc21lbnRzKClcbiAgICAgICAgLmZsYXRNYXAoaW1wYWN0ID0+IChpbXBhY3RbdGhpcy5ub2RlS2V5KCldIHx8IFtdKS5tYXAodiA9PiB2Lm1ldGhvZE1vZGVsKSlcbiAgICAgICAgLmZpbHRlcihCb29sZWFuKSBhcyBUZXJtW10sXG4gICAgICAnQGlkJ1xuICAgICkuc29ydCgoYSwgYikgPT4gYS5uYW1lLmxvY2FsZUNvbXBhcmUoYi5uYW1lKSlcbiAgKTtcblxuICBwcml2YXRlIF9zZWxlY3RlZE1ldGhvZE1vZGVsID0gc2lnbmFsKHVuZGVmaW5lZCBhcyBUZXJtKTtcblxuICBwcm90ZWN0ZWQgZ3JvdXBJbmRpY2F0b3JzKCkge1xuICAgIC8vIFRPRE86IHdoZW4gdGhlcmUgYXJlIG5vIGluZGljYXRvcnMgZm9yIHRoZSBkZWZhdWx0IG1vZGVsLCB0aGUgdGFibGUgYXBwZWFycyBlbXB0eVxuICAgIC8vIHNob3VsZCBkZWZhdWx0IGJhY2sgdG8gdGhlIGZpcnN0IG1vZGVsIGluIHRoaXMgY2FzZVxuICAgIGNvbnN0IGluZGljYXRvclBlckltcGFjdEFzc2Vzc21lbnQgPSBncm91cE5vZGVzQnlUZXJtPElJbXBhY3RBc3Nlc3NtZW50SlNPTkxELCBJbmRpY2F0b3I+KFxuICAgICAgdGhpcy5pbXBhY3RBc3Nlc3NtZW50cygpLFxuICAgICAgdGhpcy5ub2RlS2V5KCksXG4gICAgICB0aGlzLm9yaWdpbmFsVmFsdWVzKCksXG4gICAgICBmaWx0ZXJOb2RlKHRoaXMuc2hvdWxkRmlsdGVyQnlNZXRob2RNb2RlbCgpLCB0aGlzLl9zZWxlY3RlZE1ldGhvZE1vZGVsKCksIHRoaXMuZmlsdGVyVGVybSgpKVxuICAgICk7XG4gICAgcmV0dXJuIG9yZGVyQnkoZ3JvdXBwZWRLZXlzKGluZGljYXRvclBlckltcGFjdEFzc2Vzc21lbnQpLCBbJ3ZhbHVlLm1ldGhvZFRpZXJPcmRlcicsICdrZXknXSwgWydhc2MnLCAnYXNjJ10pLmZpbHRlcihcbiAgICAgICh7IHZhbHVlIH0pID0+IHRlcm1BbGxvd2VkKHZhbHVlPy50ZXJtLCB0aGlzLmZpbHRlclRlcm1UeXBlcygpKVxuICAgICkgYXMgSUdyb3VwZWRLZXlzPEluZGljYXRvcj5bXTtcbiAgfVxuXG4gIHByaXZhdGUgZ3JvdXBFbWlzc2lvbnMoKSB7XG4gICAgY29uc3QgZW1pc3Npb25zUGVySW1wYWN0QXNzZXNzbWVudCA9IGdyb3VwTm9kZXNCeVRlcm08SUltcGFjdEFzc2Vzc21lbnRKU09OTEQsIEluZGljYXRvcj4oXG4gICAgICB0aGlzLmltcGFjdEFzc2Vzc21lbnRzKCksXG4gICAgICB0aGlzLm5vZGVLZXkoKSxcbiAgICAgIHRoaXMub3JpZ2luYWxWYWx1ZXMoKSxcbiAgICAgIGZpbHRlck5vZGUodGhpcy5zaG91bGRGaWx0ZXJCeU1ldGhvZE1vZGVsKCksIHRoaXMuX3NlbGVjdGVkTWV0aG9kTW9kZWwoKSwgdGhpcy5maWx0ZXJUZXJtKCkpXG4gICAgKTtcbiAgICBjb25zdCB2YWx1ZXM6IElHcm91cGVkS2V5czxJbmRpY2F0b3I+W10gPSBvcmRlckJ5KGdyb3VwcGVkS2V5cyhlbWlzc2lvbnNQZXJJbXBhY3RBc3Nlc3NtZW50KSwgWydrZXknXSwgWydhc2MnXSk7XG4gICAgY29uc3QgbWV0aG9kVGllcnMgPSBvcmRlckJ5KFxuICAgICAgdW5pcXVlKHZhbHVlcy5tYXAoKHsgdmFsdWUgfSkgPT4gdmFsdWUubWV0aG9kVGllcikpLm1hcChtZXRob2RUaWVyID0+ICh7XG4gICAgICAgIG1ldGhvZFRpZXIsXG4gICAgICAgIG1ldGhvZFRpZXJPcmRlcjogbWV0aG9kVGllck9yZGVyKG1ldGhvZFRpZXIpXG4gICAgICB9KSksXG4gICAgICBbJ21ldGhvZFRpZXJPcmRlciddLFxuICAgICAgWydhc2MnXVxuICAgICk7XG4gICAgcmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyhcbiAgICAgIG1ldGhvZFRpZXJzLm1hcCgoeyBtZXRob2RUaWVyIH0pID0+IFtcbiAgICAgICAgbWV0aG9kVGllciB8fCAnJyxcbiAgICAgICAgdmFsdWVzLmZpbHRlcihcbiAgICAgICAgICAoeyB2YWx1ZSB9KSA9PiB2YWx1ZS5tZXRob2RUaWVyID09PSBtZXRob2RUaWVyICYmIHRlcm1BbGxvd2VkKHZhbHVlPy50ZXJtLCB0aGlzLmZpbHRlclRlcm1UeXBlcygpKVxuICAgICAgICApXG4gICAgICBdKVxuICAgICkgYXMgZ3JvdXBlZEVtaXNzaW9ucztcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGVmZmVjdChcbiAgICAgICgpID0+IHtcbiAgICAgICAgLy8gbWFrZSBzdXJlIGxvZ3MgZG9lcyBub3QgcmVtYWluIGRpc3BsYXllZFxuICAgICAgICBpZiAoKHRoaXMuaXNPcmlnaW5hbCgpICYmIHRoaXMuc2VsZWN0ZWRWaWV3KCkgPT09IFZpZXcubG9ncykgfHwgIXRoaXMudmlld3MoKS5pbmNsdWRlcyh0aGlzLnNlbGVjdGVkVmlldygpKSkge1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRWaWV3LnNldChWaWV3LnRhYmxlKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfVxuICAgICk7XG4gIH1cblxuICBwcm90ZWN0ZWQgdHJhY2tCeUlkKF9pbmRleDogbnVtYmVyLCBpdGVtOiBJSW1wYWN0QXNzZXNzbWVudEpTT05MRCkge1xuICAgIHJldHVybiBpdGVtWydAaWQnXTtcbiAgfVxuXG4gIHByb3RlY3RlZCB1cGRhdGVTZWxlY3RlZE1ldGhvZE1vZGVsKHRlcm1OYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCB0ZXJtID0gdGhpcy5tZXRob2RNb2RlbHMoKS5maW5kKCh7IG5hbWUgfSkgPT4gbmFtZSA9PT0gdGVybU5hbWUpO1xuICAgIHRoaXMuX3NlbGVjdGVkTWV0aG9kTW9kZWwuc2V0KHRlcm0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIGltcGFjdE5hbWUoaW1wYWN0OiBJSW1wYWN0QXNzZXNzbWVudEpTT05MRCkge1xuICAgIHJldHVybiBpbXBhY3QubmFtZSB8fCAoaW1wYWN0LmN5Y2xlID8gdGhpcy5jeWNsZUxhYmVsKGltcGFjdC5jeWNsZSkgOiBpbXBhY3RbJ0BpZCddKSB8fCAoaW1wYWN0IGFzIGFueSkuaWQ7XG4gIH1cblxuICBwcm90ZWN0ZWQgY3ljbGVMYWJlbCh7ICdAaWQnOiBpZCwgbmFtZSB9OiBhbnkpIHtcbiAgICByZXR1cm4gbmFtZSB8fCB0aGlzLmN5Y2xlcygpLmZpbmQodiA9PiB2WydAaWQnXSA9PT0gaWQpPy5uYW1lO1xuICB9XG5cbiAgcHJvdGVjdGVkIGZpbHRlckJ5VGVybSh0ZXJtOiBzdHJpbmcpIHtcbiAgICB0aGlzLmZpbHRlclRlcm0uc2V0KHRlcm0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIHNlbGVjdEluZGV4KHsgdGFyZ2V0OiB7IHZhbHVlIH0gfSkge1xuICAgIHRoaXMuc2VsZWN0ZWRJbmRleC5zZXQoK3ZhbHVlKTtcbiAgfVxufVxuIiwiQGlmIChoYXNEYXRhKCkpIHtcbiAgPGRpdiBjbGFzcz1cImNvbHVtbnMgaXMtdmFyaWFibGUgaXMtYWxpZ24taXRlbXMtY2VudGVyIGlzLTIgaXMtbS0wXCI+XG4gICAgPGRpdiBjbGFzcz1cImNvbHVtblwiPlxuICAgICAgQGlmIChzZWxlY3RlZFZpZXcoKSA9PT0gVmlldy50YWJsZSkge1xuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgY2xhc3M9XCJidXR0b24gaXMtc21hbGwgaXMtZ2hvc3RcIlxuICAgICAgICAgIChjbGljayk9XCJzaG93RG93bmxvYWQgPSB0cnVlXCJcbiAgICAgICAgICBuZ2JUb29sdGlwPVwiRG93bmxvYWQgYXMgQ1NWXCJcbiAgICAgICAgICBbZGlzYWJsZVRvb2x0aXBdPVwic2hvd0Rvd25sb2FkXCJcbiAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b21cIj5cbiAgICAgICAgICA8ZmEtaWNvbiBbaWNvbl09XCJmYURvd25sb2FkXCIgc2l6ZT1cImxnXCI+PC9mYS1pY29uPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgICBAaWYgKHNlbGVjdGVkVmlldygpID09PSBWaWV3LnRhYmxlKSB7XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sdW1uIGlzLW5hcnJvd1wiPlxuICAgICAgICA8aGUtc2VhcmNoLWV4dGVuZFxuICAgICAgICAgIGNsYXNzPVwiaXMtc2Vjb25kYXJ5IGlzLXNtYWxsXCJcbiAgICAgICAgICBwbGFjZWhvbGRlcj1cIkZpbHRlciB0ZXJtcyBieSBuYW1lXCJcbiAgICAgICAgICAoc2VhcmNoKT1cImZpbHRlckJ5VGVybSgkZXZlbnQpXCI+PC9oZS1zZWFyY2gtZXh0ZW5kPlxuICAgICAgPC9kaXY+XG4gICAgfVxuICAgIEBpZiAodmlld3MoKT8ubGVuZ3RoID4gMSkge1xuICAgICAgPGRpdiBjbGFzcz1cImNvbHVtbiBpcy1uYXJyb3dcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkIGhhcy1hZGRvbnNcIj5cbiAgICAgICAgICBAZm9yICh2aWV3IG9mIHZpZXdzKCk7IHRyYWNrIHZpZXcpIHtcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250cm9sXCI+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBjbGFzcz1cImJ1dHRvbiBpcy1zbWFsbFwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLmlzLXNlbGVjdGVkXT1cInNlbGVjdGVkVmlldygpID09PSB2aWV3XCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0ZWRWaWV3LnNldCh2aWV3KVwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaWNvbiBpcy1zbWFsbFwiPlxuICAgICAgICAgICAgICAgICAgPGZhLWljb24gW2ljb25dPVwidmlld0ljb25bdmlld11cIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2ZhLWljb24+XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaXMtaGlkZGVuLW1vYmlsZVwiPnt7IHZpZXcgfX08L3NwYW4+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIH1cbiAgPC9kaXY+XG59XG5cbkBpZiAoaXNOb2RlS2V5QWxsb3dlZCgpKSB7XG4gIEBzd2l0Y2ggKHNlbGVjdGVkVmlldygpKSB7XG4gICAgQGNhc2UgKFZpZXcudGFibGUpIHtcbiAgICAgIDxkaXYgY2xhc3M9XCJpcy1weC0zIGlzLXBiLTNcIj5cbiAgICAgICAgQGlmIChoYXNEYXRhKCkpIHtcbiAgICAgICAgICA8aGUtZGF0YS10YWJsZSBjbGFzcz1cIm1iLTEgaXMtc21hbGxcIiBbc21hbGxdPVwidHJ1ZVwiIG1heEhlaWdodD1cIjMyMFwiPlxuICAgICAgICAgICAgPHRhYmxlIGNsYXNzPVwidGFibGUgaXMtZnVsbHdpZHRoIGlzLW5hcnJvdyBpcy1zdHJpcGVkXCI+XG4gICAgICAgICAgICAgIDx0aGVhZD5cbiAgICAgICAgICAgICAgICBAaWYgKGRhdGFLZXlzKCkubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgICAgICAgPHRyIGNsYXNzPVwiaGFzLXRleHQtd2VpZ2h0LWJvbGRcIj5cbiAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwid2lkdGgtYXV0b1wiPjwvdGg+XG4gICAgICAgICAgICAgICAgICAgIDx0aD48L3RoPlxuICAgICAgICAgICAgICAgICAgICA8dGg+PC90aD5cbiAgICAgICAgICAgICAgICAgICAgQGZvciAoZGF0YUtleSBvZiBkYXRhS2V5cygpOyB0cmFjayBkYXRhS2V5OyBsZXQgZGF0YUtleUxhc3QgPSAkbGFzdCkge1xuICAgICAgICAgICAgICAgICAgICAgIEBpZiAoZGF0YSgpW2RhdGFLZXldPy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBbYXR0ci5jb2xzcGFuXT1cImRhdGEoKVtkYXRhS2V5XS5sZW5ndGhcIiBbY2xhc3MuaGFzLWJvcmRlci1yaWdodF09XCIhZGF0YUtleUxhc3RcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChkYXRhS2V5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgZGF0YUtleSB8IGtleVRvTGFiZWwgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8dHIgY2xhc3M9XCJoYXMtdGV4dC13ZWlnaHQtc2VtaWJvbGRcIj5cbiAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIndpZHRoLWF1dG8gaGFzLWJvcmRlci1yaWdodCBpcy1weS0wXCI+XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoZW5hYmxlRmlsdGVyTWV0aG9kTW9kZWwoKSkge1xuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3QgaXMtc21hbGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgKGNoYW5nZSk9XCJ1cGRhdGVTZWxlY3RlZE1ldGhvZE1vZGVsKCRldmVudC50YXJnZXQudmFsdWUpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gW25nVmFsdWVdPVwidW5kZWZpbmVkXCI+RmlsdGVyIE1vZGVsPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIEBmb3IgKHRlcm0gb2YgbWV0aG9kTW9kZWxzKCk7IHRyYWNrIHRlcm0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIFtuZ1ZhbHVlXT1cInRlcm1cIj57eyB0ZXJtLm5hbWUgfX08L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJoYXMtYm9yZGVyLXJpZ2h0XCI+PC90aD5cbiAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cImhhcy1ib3JkZXItcmlnaHRcIj48L3RoPlxuICAgICAgICAgICAgICAgICAgQGZvciAoZGF0YUtleSBvZiBkYXRhS2V5cygpOyB0cmFjayBkYXRhS2V5OyBsZXQgZGF0YUtleUxhc3QgPSAkbGFzdCkge1xuICAgICAgICAgICAgICAgICAgICBAZm9yIChub2RlIG9mIGRhdGEoKVtkYXRhS2V5XTsgdHJhY2sgbm9kZTsgbGV0IG5vZGVMYXN0ID0gJGxhc3QpIHtcbiAgICAgICAgICAgICAgICAgICAgICA8dGhcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnRpdGxlXT1cIm5vZGUudmFsdWUudGVybS5uYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5oYXMtYm9yZGVyLXJpZ2h0XT1cImRhdGFLZXlzKCkubGVuZ3RoID4gMSAmJiAhZGF0YUtleUxhc3QgJiYgbm9kZUxhc3RcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxoZS1ub2RlLWxpbmsgW25vZGVdPVwibm9kZS52YWx1ZS50ZXJtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lubmVySHRtbF09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUudmFsdWUudGVybS5uYW1lIHwgZWxsaXBzaXM6IDMwIHwgY29tcG91bmQ6IG5vZGUudmFsdWUudGVybS50ZXJtVHlwZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvaGUtbm9kZS1saW5rPlxuICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgIDx0ciBjbGFzcz1cImlzLWl0YWxpYyBoYXMtdGV4dC13ZWlnaHQtc2VtaWJvbGRcIj5cbiAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIndpZHRoLWF1dG8gaGFzLWJvcmRlci1yaWdodFwiPjwvdGg+XG4gICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJoYXMtYm9yZGVyLXJpZ2h0XCI+XG4gICAgICAgICAgICAgICAgICAgIDxhIFtocmVmXT1cImJhc2VVcmwgKyAnL3NjaGVtYS9JbXBhY3RBc3Nlc3NtZW50I2Z1bmN0aW9uYWxVbml0J1wiIHRhcmdldD1cIl9ibGFua1wiPkZ1bmN0aW9uYWwgdW5pdDwvYT5cbiAgICAgICAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJoYXMtYm9yZGVyLXJpZ2h0XCI+XG4gICAgICAgICAgICAgICAgICAgIDxhIFtocmVmXT1cImJhc2VVcmwgKyAnL3NjaGVtYS9JbXBhY3RBc3Nlc3NtZW50I3Byb2R1Y3QnXCIgdGFyZ2V0PVwiX2JsYW5rXCI+UHJvZHVjdDwvYT5cbiAgICAgICAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICAgICAgICBAZm9yIChkYXRhS2V5IG9mIGRhdGFLZXlzKCk7IHRyYWNrIGRhdGFLZXk7IGxldCBkYXRhS2V5TGFzdCA9ICRsYXN0KSB7XG4gICAgICAgICAgICAgICAgICAgIEBmb3IgKG5vZGUgb2YgZGF0YSgpW2RhdGFLZXldOyB0cmFjayBub2RlOyBsZXQgbm9kZUxhc3QgPSAkbGFzdCkge1xuICAgICAgICAgICAgICAgICAgICAgIDx0aFxuICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIudGl0bGVdPVwibm9kZS52YWx1ZS50ZXJtLnVuaXRzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5oYXMtYm9yZGVyLXJpZ2h0XT1cImRhdGFLZXlzKCkubGVuZ3RoID4gMSAmJiAhZGF0YUtleUxhc3QgJiYgbm9kZUxhc3RcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIFtpbm5lckh0bWxdPVwibm9kZS52YWx1ZS50ZXJtLnVuaXRzIHwgY29tcG91bmQ6IG5vZGUudmFsdWUudGVybS50ZXJtVHlwZVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxoZS10ZXJtcy11bml0cy1kZXNjcmlwdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImlzLWlubGluZS1ibG9jayBpcy1tbC0yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW3Rlcm1dPVwibm9kZS52YWx1ZS50ZXJtXCI+PC9oZS10ZXJtcy11bml0cy1kZXNjcmlwdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgPC90aGVhZD5cbiAgICAgICAgICAgICAgPHRib2R5PlxuICAgICAgICAgICAgICAgIEBmb3IgKFxuICAgICAgICAgICAgICAgICAgaW1wYWN0QXNzZXNzbWVudCBvZiBpbXBhY3RBc3Nlc3NtZW50cygpO1xuICAgICAgICAgICAgICAgICAgdHJhY2sgdHJhY2tCeUlkKGltcGFjdEluZGV4LCBpbXBhY3RBc3Nlc3NtZW50KTtcbiAgICAgICAgICAgICAgICAgIGxldCBpbXBhY3RJbmRleCA9ICRpbmRleFxuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ3aWR0aC1hdXRvIGhhcy1ib3JkZXItcmlnaHRcIiBbYXR0ci50aXRsZV09XCJpbXBhY3ROYW1lKGltcGFjdEFzc2Vzc21lbnQpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGhlLW5vZGUtbGluayBbbm9kZV09XCJpbXBhY3RBc3Nlc3NtZW50XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyBpbXBhY3RJbmRleCArIDEgfX0uIHt7IGltcGFjdE5hbWUoaW1wYWN0QXNzZXNzbWVudCkgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPC9oZS1ub2RlLWxpbms+XG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImhhcy1ib3JkZXItcmlnaHRcIiBbYXR0ci50aXRsZV09XCJpbXBhY3RBc3Nlc3NtZW50LnByb2R1Y3Q/LnRlcm0/LnVuaXRzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4+MSB7eyBpbXBhY3RBc3Nlc3NtZW50LnByb2R1Y3Q/LnRlcm0/LnVuaXRzIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJoYXMtYm9yZGVyLXJpZ2h0XCIgW2F0dHIudGl0bGVdPVwiaW1wYWN0QXNzZXNzbWVudC5wcm9kdWN0Py50ZXJtPy5uYW1lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgQGlmIChpbXBhY3RBc3Nlc3NtZW50LnByb2R1Y3Q/LnRlcm0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxoZS1ub2RlLWxpbmsgW25vZGVdPVwiaW1wYWN0QXNzZXNzbWVudC5wcm9kdWN0LnRlcm1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgaW1wYWN0QXNzZXNzbWVudC5wcm9kdWN0LnRlcm0ubmFtZSB8IGVsbGlwc2lzOiAzMCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvaGUtbm9kZS1saW5rPlxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgQGZvciAoZGF0YUtleSBvZiBkYXRhS2V5cygpOyB0cmFjayBkYXRhS2V5OyBsZXQgZGF0YUtleUxhc3QgPSAkbGFzdCkge1xuICAgICAgICAgICAgICAgICAgICAgIEBmb3IgKG5vZGUgb2YgZGF0YSgpW2RhdGFLZXldOyB0cmFjayBub2RlOyBsZXQgbm9kZUxhc3QgPSAkbGFzdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgPHRkXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaXMtbm93cmFwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmhhcy1ib3JkZXItcmlnaHRdPVwiZGF0YUtleXMoKS5sZW5ndGggPiAxICYmICFkYXRhS2V5TGFzdCAmJiBub2RlTGFzdFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKG5vZGUudmFsdWUudmFsdWVzW2ltcGFjdEFzc2Vzc21lbnRbJ0BpZCddXSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRyaWdnZXItcG9wb3ZlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdiUG9wb3Zlcl09XCJkZXRhaWxzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdXRvQ2xvc2VdPVwiJ291dHNpZGUnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcG92ZXJDbGFzcz1cImlzLW5hcnJvd1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjcD1cIm5nYlBvcG92ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwibGVmdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXI9XCJib2R5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwb3BvdmVyQ29udGV4dF09XCJ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IG5vZGUudmFsdWUudmFsdWVzW2ltcGFjdEFzc2Vzc21lbnRbJ0BpZCddXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1wYWN0QXNzZXNzbWVudFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gcG9pbnRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eVZhbHVlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS52YWx1ZS52YWx1ZXNbaW1wYWN0QXNzZXNzbWVudFsnQGlkJ11dLnZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS52YWx1ZS50ZXJtWydAaWQnXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcHJlY2lzaW9uOiAzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGRlZmF1bHQ6ICctJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGhlLWJsYW5rLW5vZGUtc3RhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtbC0xXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2RhdGFTdGF0ZV09XCJkYXRhU3RhdGUoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtub2RlXT1cIm5vZGUudmFsdWUudmFsdWVzW2ltcGFjdEFzc2Vzc21lbnRbJ0BpZCddXS5ub2RlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PVwidmFsdWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3RhdGVdPVwiaW1wYWN0QXNzZXNzbWVudC5hZ2dyZWdhdGVkID8gJ2FnZ3JlZ2F0ZWQnIDogdW5kZWZpbmVkXCI+PC9oZS1ibGFuay1ub2RlLXN0YXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+LTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L3Rib2R5PlxuICAgICAgICAgICAgPC90YWJsZT5cbiAgICAgICAgICA8L2hlLWRhdGEtdGFibGU+XG4gICAgICAgICAgPGhlLWJsYW5rLW5vZGUtc3RhdGUtbm90aWNlIFtkYXRhU3RhdGVdPVwiZGF0YVN0YXRlKClcIj48L2hlLWJsYW5rLW5vZGUtc3RhdGUtbm90aWNlPlxuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaXMtcHQtMyBoYXMtdGV4dC1jZW50ZXJlZFwiPlxuICAgICAgICAgICAgPHNwYW4+Tm8gZGF0YSBhdmFpbGFibGU8L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImlzLXBsLTFcIiBbY2xhc3MuaXMtaGlkZGVuXT1cIiFmaWx0ZXJUZXJtKClcIj5tYXRjaGluZyB5b3VyIHNlYXJjaCBjcml0ZXJpYTwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuPi48L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBbY2xhc3MuaXMtaGlkZGVuXT1cIiFpc09yaWdpbmFsKClcIj5cbiAgICAgICAgICAgICAgU3dpdGNoIHRvXG4gICAgICAgICAgICAgIDxjb2RlPnJlY2FsY3VsYXRlZDwvY29kZT5cbiAgICAgICAgICAgICAgdmVyc2lvbi5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgfVxuICAgIEBjYXNlIChWaWV3LmNoYXJ0KSB7XG4gICAgICA8aGUtaW1wYWN0LWFzc2Vzc21lbnRzLWluZGljYXRvcnMtY2hhcnRcbiAgICAgICAgW2tleV09XCJub2RlS2V5KClcIlxuICAgICAgICBbZmlsdGVyVGVybVR5cGVzXT1cImZpbHRlclRlcm1UeXBlcygpXCI+PC9oZS1pbXBhY3QtYXNzZXNzbWVudHMtaW5kaWNhdG9ycy1jaGFydD5cbiAgICB9XG4gICAgQGNhc2UgKFZpZXcuYnJlYWtkb3duKSB7XG4gICAgICA8aGUtaW1wYWN0LWFzc2Vzc21lbnRzLWluZGljYXRvci1icmVha2Rvd24tY2hhcnRcbiAgICAgICAgW2ltcGFjdEFzc2Vzc21lbnRdPVwic2VsZWN0ZWROb2RlKClcIlxuICAgICAgICBbaW5kaWNhdG9yc109XCJzZWxlY3RlZFJlY2FsY3VsYXRlZFZhbHVlcygpXCI+PC9oZS1pbXBhY3QtYXNzZXNzbWVudHMtaW5kaWNhdG9yLWJyZWFrZG93bi1jaGFydD5cbiAgICB9XG4gICAgQGNhc2UgKFZpZXcubG9ncykge1xuICAgICAgQGlmIChpbXBhY3RBc3Nlc3NtZW50cygpLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkIGhhcy1hZGRvbnMgcHQtMiBweC0zXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRyb2xcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYnV0dG9uIGlzLXNtYWxsIGlzLXN0YXRpYyBpcy1zZWNvbmRhcnlcIj5TZWxlY3QgYW4gSW1wYWN0IEFzc2Vzc21lbnQ8L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRyb2wgaXMtZXhwYW5kZWRcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3QgaXMtc21hbGwgaXMtZnVsbHdpZHRoIGlzLXNlY29uZGFyeVwiPlxuICAgICAgICAgICAgICA8c2VsZWN0IChjaGFuZ2UpPVwic2VsZWN0SW5kZXgoJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgIEBmb3IgKHZhbHVlIG9mIGltcGFjdEFzc2Vzc21lbnRzKCk7IHRyYWNrIHZhbHVlOyBsZXQgaSA9ICRpbmRleCkge1xuICAgICAgICAgICAgICAgICAgPG9wdGlvbiBbdmFsdWVdPVwiaVwiPnt7IGkgKyAxIH19LiB7eyBpbXBhY3ROYW1lKHZhbHVlKSB9fTwvb3B0aW9uPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG4gICAgICBAaWYgKHNlbGVjdGVkTm9kZSgpKSB7XG4gICAgICAgIDxoZS1ub2RlLWxvZ3MtbW9kZWxzXG4gICAgICAgICAgW25vZGVdPVwic2VsZWN0ZWROb2RlKClcIlxuICAgICAgICAgIFtub2RlS2V5XT1cIm5vZGVLZXkoKVwiXG4gICAgICAgICAgW2ZpbHRlclRlcm1UeXBlc109XCJmaWx0ZXJUZXJtVHlwZXMoKVwiXG4gICAgICAgICAgW29yaWdpbmFsVmFsdWVzXT1cInNlbGVjdGVkT3JpZ2luYWxWYWx1ZXMoKVwiXG4gICAgICAgICAgW3JlY2FsY3VsYXRlZFZhbHVlc109XCJzZWxlY3RlZFJlY2FsY3VsYXRlZFZhbHVlcygpXCJcbiAgICAgICAgICBbbm9EYXRhTWVzc2FnZV09XCJub0RhdGFNZXNzYWdlKClcIj48L2hlLW5vZGUtbG9ncy1tb2RlbHM+XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbkBpZiAoc2hvd0Rvd25sb2FkKSB7XG4gIDxoZS1ub2RlLWNzdi1leHBvcnQtY29uZmlybVxuICAgIFtub2Rlc109XCJpbXBhY3RBc3Nlc3NtZW50cygpXCJcbiAgICBbZmlsZW5hbWVdPVwiY3N2RmlsZW5hbWUoKVwiXG4gICAgW2lzVXBsb2FkXT1cImZhbHNlXCJcbiAgICBbaGVhZGVyS2V5c109XCJoZWFkZXJLZXlzKClcIlxuICAgIChjbG9zZWQpPVwic2hvd0Rvd25sb2FkID0gZmFsc2VcIj48L2hlLW5vZGUtY3N2LWV4cG9ydC1jb25maXJtPlxufVxuXG48bmctdGVtcGxhdGUgI2RldGFpbHMgbGV0LW5vZGU9XCJpbXBhY3RBc3Nlc3NtZW50XCIgbGV0LWRhdGE9XCJkYXRhXCI+XG4gIDxwPlxuICAgIDxiPlxuICAgICAgQGlmIChkYXRhLmN5Y2xlKSB7XG4gICAgICAgIDxzcGFuPnt7IGN5Y2xlTGFiZWwobm9kZS5jeWNsZSkgfX08L3NwYW4+XG4gICAgICB9XG4gICAgICBAaWYgKCFkYXRhLmN5Y2xlKSB7XG4gICAgICAgIDxzcGFuPnt7IGRhdGEubmFtZSB9fTwvc3Bhbj5cbiAgICAgIH1cbiAgICA8L2I+XG4gIDwvcD5cbiAgPGhlLW5vZGUtdmFsdWUtZGV0YWlsc1xuICAgIFtkYXRhXT1cImRhdGFcIlxuICAgIFtkYXRhU3RhdGVdPVwiZGF0YVN0YXRlKClcIlxuICAgIFtub2RlVHlwZV09XCJub2RlWydAdHlwZSddXCJcbiAgICBbZGF0YUtleV09XCJub2RlS2V5KClcIj48L2hlLW5vZGUtdmFsdWUtZGV0YWlscz5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
@@ -1,4 +1,5 @@
1
1
  export * from './sites.model';
2
+ export { SitesManagementChartComponent } from './sites-management-chart/sites-management-chart.component';
2
3
  export { SitesMapsComponent } from './sites-maps/sites-maps.component';
3
4
  export { SitesNodesComponent } from './sites-nodes/sites-nodes.component';
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2l0ZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxlQUFlLENBQUM7QUFFOUIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDdkUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0scUNBQXFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3NpdGVzLm1vZGVsJztcblxuZXhwb3J0IHsgU2l0ZXNNYXBzQ29tcG9uZW50IH0gZnJvbSAnLi9zaXRlcy1tYXBzL3NpdGVzLW1hcHMuY29tcG9uZW50JztcbmV4cG9ydCB7IFNpdGVzTm9kZXNDb21wb25lbnQgfSBmcm9tICcuL3NpdGVzLW5vZGVzL3NpdGVzLW5vZGVzLmNvbXBvbmVudCc7XG4iXX0=
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2l0ZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxlQUFlLENBQUM7QUFFOUIsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sMkRBQTJELENBQUM7QUFDMUcsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDdkUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0scUNBQXFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3NpdGVzLm1vZGVsJztcblxuZXhwb3J0IHsgU2l0ZXNNYW5hZ2VtZW50Q2hhcnRDb21wb25lbnQgfSBmcm9tICcuL3NpdGVzLW1hbmFnZW1lbnQtY2hhcnQvc2l0ZXMtbWFuYWdlbWVudC1jaGFydC5jb21wb25lbnQnO1xuZXhwb3J0IHsgU2l0ZXNNYXBzQ29tcG9uZW50IH0gZnJvbSAnLi9zaXRlcy1tYXBzL3NpdGVzLW1hcHMuY29tcG9uZW50JztcbmV4cG9ydCB7IFNpdGVzTm9kZXNDb21wb25lbnQgfSBmcm9tICcuL3NpdGVzLW5vZGVzL3NpdGVzLW5vZGVzLmNvbXBvbmVudCc7XG4iXX0=