@hestia-earth/ui-components 0.27.18 → 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=
@@ -192,10 +192,10 @@ export class ImpactAssessmentsIndicatorBreakdownChartComponent {
192
192
  this.selectedMethod.set(term);
193
193
  }
194
194
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: ImpactAssessmentsIndicatorBreakdownChartComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
195
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.8", type: ImpactAssessmentsIndicatorBreakdownChartComponent, isStandalone: true, selector: "he-impact-assessments-indicator-breakdown-chart", inputs: { impactAssessment: { classPropertyName: "impactAssessment", publicName: "impactAssessment", isSignal: true, isRequired: false, transformFunction: null }, indicators: { classPropertyName: "indicators", publicName: "indicators", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "@if (loading()) {\n <div class=\"has-text-center py-3\">\n <fa-icon [icon]=\"faSpinner\" [pulse]=\"true\" size=\"lg\"></fa-icon>\n </div>\n} @else {\n <div class=\"p-3\" [class.is-hidden]=\"!terms()?.length\">\n <div class=\"columns\">\n <div class=\"column\">\n <div class=\"field has-addons\">\n <div class=\"control\">\n <span class=\"button is-small is-static is-secondary\">Select an Indicator</span>\n </div>\n @if (terms()?.length) {\n <div class=\"control is-expanded\">\n <div class=\"select is-fullwidth is-small is-secondary\">\n <select (change)=\"selectTerm($event)\">\n @for (term of terms(); track term) {\n <option [value]=\"term['@id']\">{{ term.name }} ({{ term.units }})</option>\n }\n </select>\n </div>\n </div>\n }\n @if (methods()?.length) {\n <div class=\"control is-expanded\">\n <div class=\"select is-fullwidth is-small is-secondary\">\n <select (change)=\"selectMethod($event)\">\n <option [ngValue]=\"undefined\">Filter Model</option>\n @for (term of methods(); track term) {\n <option [value]=\"term['@id']\">{{ term.name }}</option>\n }\n </select>\n </div>\n </div>\n }\n </div>\n </div>\n <div class=\"column is-narrow\">\n <a\n class=\"button is-ghost is-small\"\n [href]=\"csvContent()\"\n [download]=\"downloadFilename()\"\n nbgTooltip=\"Download as CSV\"\n placement=\"bottom\">\n <fa-icon [icon]=\"faDownload\"></fa-icon>\n </a>\n </div>\n </div>\n @if (!selectedMethod()) {\n <p class=\"is-size-7\">\n <i>Selecting a Model is recommended to avoid duplicated entries.</i>\n </p>\n }\n </div>\n}\n\n<div class=\"is-mt-1\">\n @if (!loading() && noData()) {\n <p class=\"has-text-centered\">\n <span>No breakdown available for</span>\n @if (selectedTerm()) {\n <span class=\"is-pl-1\">{{ selectedTerm().name }}</span>\n }\n @if (selectedMethod()) {\n <span class=\"is-pl-1\">({{ selectedMethod().name }})</span>\n }\n <span>.</span>\n </p>\n }\n <he-chart class=\"is-relative\" [data]=\"chartData()\" [config]=\"chartConfig()\"></he-chart>\n</div>\n", styles: [":host{display:block;overflow:visible}he-chart{height:100%}he-chart::ng-deep .chart-container{min-height:400px}\n"], dependencies: [{ kind: "component", type: FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "component", type: ChartComponent, selector: "he-chart", inputs: ["data", "config"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
195
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.8", type: ImpactAssessmentsIndicatorBreakdownChartComponent, isStandalone: true, selector: "he-impact-assessments-indicator-breakdown-chart", inputs: { impactAssessment: { classPropertyName: "impactAssessment", publicName: "impactAssessment", isSignal: true, isRequired: false, transformFunction: null }, indicators: { classPropertyName: "indicators", publicName: "indicators", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "@if (loading()) {\n <div class=\"has-text-center py-3\">\n <fa-icon [icon]=\"faSpinner\" [pulse]=\"true\" size=\"lg\"></fa-icon>\n </div>\n} @else {\n <div class=\"p-3\" [class.is-hidden]=\"!terms()?.length\">\n <div class=\"columns\">\n <div class=\"column\">\n <div class=\"field has-addons\">\n <div class=\"control\">\n <span class=\"button is-small is-static is-secondary\">Select an Indicator</span>\n </div>\n @if (terms()?.length) {\n <div class=\"control is-expanded\">\n <div class=\"select is-fullwidth is-small is-secondary\">\n <select (change)=\"selectTerm($event)\">\n @for (term of terms(); track term) {\n <option [value]=\"term['@id']\">{{ term.name }} ({{ term.units }})</option>\n }\n </select>\n </div>\n </div>\n }\n @if (methods()?.length) {\n <div class=\"control is-expanded\">\n <div class=\"select is-fullwidth is-small is-secondary\">\n <select (change)=\"selectMethod($event)\">\n <option [ngValue]=\"undefined\">Filter Model</option>\n @for (term of methods(); track term) {\n <option [value]=\"term['@id']\">{{ term.name }}</option>\n }\n </select>\n </div>\n </div>\n }\n </div>\n </div>\n <div class=\"column is-narrow\">\n <a\n class=\"button is-ghost is-small\"\n [href]=\"csvContent()\"\n [download]=\"downloadFilename()\"\n ngbTooltip=\"Download as CSV\"\n placement=\"bottom\">\n <fa-icon [icon]=\"faDownload\"></fa-icon>\n </a>\n </div>\n </div>\n @if (!selectedMethod()) {\n <p class=\"is-size-7\">\n <i>Selecting a Model is recommended to avoid duplicated entries.</i>\n </p>\n }\n </div>\n}\n\n<div class=\"is-mt-1\">\n @if (!loading() && noData()) {\n <p class=\"has-text-centered\">\n <span>No breakdown available for</span>\n @if (selectedTerm()) {\n <span class=\"is-pl-1\">{{ selectedTerm().name }}</span>\n }\n @if (selectedMethod()) {\n <span class=\"is-pl-1\">({{ selectedMethod().name }})</span>\n }\n <span>.</span>\n </p>\n }\n <he-chart class=\"is-relative\" [data]=\"chartData()\" [config]=\"chartConfig()\"></he-chart>\n</div>\n", styles: [":host{display:block;overflow:visible}he-chart{height:100%}he-chart::ng-deep .chart-container{min-height:400px}\n"], dependencies: [{ kind: "component", type: FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "component", type: ChartComponent, selector: "he-chart", inputs: ["data", "config"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
196
196
  }
197
197
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: ImpactAssessmentsIndicatorBreakdownChartComponent, decorators: [{
198
198
  type: Component,
199
- args: [{ selector: 'he-impact-assessments-indicator-breakdown-chart', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [FaIconComponent, FormsModule, ChartComponent], template: "@if (loading()) {\n <div class=\"has-text-center py-3\">\n <fa-icon [icon]=\"faSpinner\" [pulse]=\"true\" size=\"lg\"></fa-icon>\n </div>\n} @else {\n <div class=\"p-3\" [class.is-hidden]=\"!terms()?.length\">\n <div class=\"columns\">\n <div class=\"column\">\n <div class=\"field has-addons\">\n <div class=\"control\">\n <span class=\"button is-small is-static is-secondary\">Select an Indicator</span>\n </div>\n @if (terms()?.length) {\n <div class=\"control is-expanded\">\n <div class=\"select is-fullwidth is-small is-secondary\">\n <select (change)=\"selectTerm($event)\">\n @for (term of terms(); track term) {\n <option [value]=\"term['@id']\">{{ term.name }} ({{ term.units }})</option>\n }\n </select>\n </div>\n </div>\n }\n @if (methods()?.length) {\n <div class=\"control is-expanded\">\n <div class=\"select is-fullwidth is-small is-secondary\">\n <select (change)=\"selectMethod($event)\">\n <option [ngValue]=\"undefined\">Filter Model</option>\n @for (term of methods(); track term) {\n <option [value]=\"term['@id']\">{{ term.name }}</option>\n }\n </select>\n </div>\n </div>\n }\n </div>\n </div>\n <div class=\"column is-narrow\">\n <a\n class=\"button is-ghost is-small\"\n [href]=\"csvContent()\"\n [download]=\"downloadFilename()\"\n nbgTooltip=\"Download as CSV\"\n placement=\"bottom\">\n <fa-icon [icon]=\"faDownload\"></fa-icon>\n </a>\n </div>\n </div>\n @if (!selectedMethod()) {\n <p class=\"is-size-7\">\n <i>Selecting a Model is recommended to avoid duplicated entries.</i>\n </p>\n }\n </div>\n}\n\n<div class=\"is-mt-1\">\n @if (!loading() && noData()) {\n <p class=\"has-text-centered\">\n <span>No breakdown available for</span>\n @if (selectedTerm()) {\n <span class=\"is-pl-1\">{{ selectedTerm().name }}</span>\n }\n @if (selectedMethod()) {\n <span class=\"is-pl-1\">({{ selectedMethod().name }})</span>\n }\n <span>.</span>\n </p>\n }\n <he-chart class=\"is-relative\" [data]=\"chartData()\" [config]=\"chartConfig()\"></he-chart>\n</div>\n", styles: [":host{display:block;overflow:visible}he-chart{height:100%}he-chart::ng-deep .chart-container{min-height:400px}\n"] }]
199
+ args: [{ selector: 'he-impact-assessments-indicator-breakdown-chart', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [FaIconComponent, FormsModule, ChartComponent], template: "@if (loading()) {\n <div class=\"has-text-center py-3\">\n <fa-icon [icon]=\"faSpinner\" [pulse]=\"true\" size=\"lg\"></fa-icon>\n </div>\n} @else {\n <div class=\"p-3\" [class.is-hidden]=\"!terms()?.length\">\n <div class=\"columns\">\n <div class=\"column\">\n <div class=\"field has-addons\">\n <div class=\"control\">\n <span class=\"button is-small is-static is-secondary\">Select an Indicator</span>\n </div>\n @if (terms()?.length) {\n <div class=\"control is-expanded\">\n <div class=\"select is-fullwidth is-small is-secondary\">\n <select (change)=\"selectTerm($event)\">\n @for (term of terms(); track term) {\n <option [value]=\"term['@id']\">{{ term.name }} ({{ term.units }})</option>\n }\n </select>\n </div>\n </div>\n }\n @if (methods()?.length) {\n <div class=\"control is-expanded\">\n <div class=\"select is-fullwidth is-small is-secondary\">\n <select (change)=\"selectMethod($event)\">\n <option [ngValue]=\"undefined\">Filter Model</option>\n @for (term of methods(); track term) {\n <option [value]=\"term['@id']\">{{ term.name }}</option>\n }\n </select>\n </div>\n </div>\n }\n </div>\n </div>\n <div class=\"column is-narrow\">\n <a\n class=\"button is-ghost is-small\"\n [href]=\"csvContent()\"\n [download]=\"downloadFilename()\"\n ngbTooltip=\"Download as CSV\"\n placement=\"bottom\">\n <fa-icon [icon]=\"faDownload\"></fa-icon>\n </a>\n </div>\n </div>\n @if (!selectedMethod()) {\n <p class=\"is-size-7\">\n <i>Selecting a Model is recommended to avoid duplicated entries.</i>\n </p>\n }\n </div>\n}\n\n<div class=\"is-mt-1\">\n @if (!loading() && noData()) {\n <p class=\"has-text-centered\">\n <span>No breakdown available for</span>\n @if (selectedTerm()) {\n <span class=\"is-pl-1\">{{ selectedTerm().name }}</span>\n }\n @if (selectedMethod()) {\n <span class=\"is-pl-1\">({{ selectedMethod().name }})</span>\n }\n <span>.</span>\n </p>\n }\n <he-chart class=\"is-relative\" [data]=\"chartData()\" [config]=\"chartConfig()\"></he-chart>\n</div>\n", styles: [":host{display:block;overflow:visible}he-chart{height:100%}he-chart::ng-deep .chart-container{min-height:400px}\n"] }]
200
200
  }], ctorParameters: () => [] });
201
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1wYWN0LWFzc2Vzc21lbnRzLWluZGljYXRvci1icmVha2Rvd24tY2hhcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2ltcGFjdC1hc3Nlc3NtZW50cy9pbXBhY3QtYXNzZXNzbWVudHMtaW5kaWNhdG9yLWJyZWFrZG93bi1jaGFydC9pbXBhY3QtYXNzZXNzbWVudHMtaW5kaWNhdG9yLWJyZWFrZG93bi1jaGFydC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9zcmMvaW1wYWN0LWFzc2Vzc21lbnRzL2ltcGFjdC1hc3Nlc3NtZW50cy1pbmRpY2F0b3ItYnJlYWtkb3duLWNoYXJ0L2ltcGFjdC1hc3Nlc3NtZW50cy1pbmRpY2F0b3ItYnJlYWtkb3duLWNoYXJ0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQVUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwSCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDekQsT0FBTyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTlGLE9BQU8sZUFBZSxNQUFNLDJCQUEyQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM5QyxPQUFPLEVBQW1ELFFBQVEsRUFBUSxZQUFZLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNySCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxNQUFNLHFCQUFx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QUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNoQyxDQUFDOzhHQTlNVSxpREFBaUQ7a0dBQWpELGlEQUFpRCx1WkM5RTlELHk5RUF1RUEsMEtES1ksZUFBZSxpUEFBRSxXQUFXLDRPQUFFLGNBQWM7OzJGQUUzQyxpREFBaUQ7a0JBUjdELFNBQVM7K0JBQ0UsaURBQWlELG1CQUcxQyx1QkFBdUIsQ0FBQyxNQUFNLGNBQ25DLElBQUksV0FDUCxDQUFDLGVBQWUsRUFBRSxXQUFXLEVBQUUsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgU2lnbmFsLCBjb21wdXRlZCwgZWZmZWN0LCBpbmplY3QsIGlucHV0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERvbVNhbml0aXplciB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHsgdG9PYnNlcnZhYmxlLCB0b1NpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IGZpbHRlciwgZ3JvdXBCeSwgbWFwLCBtZXJnZUFsbCwgbWVyZ2VNYXAsIHRha2UsIHRhcCwgdG9BcnJheSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IENoYXJ0Q29uZmlndXJhdGlvbiwgQ2hhcnREYXRhIH0gZnJvbSAnY2hhcnQuanMnO1xuaW1wb3J0IENoYXJ0RGF0YUxhYmVscyBmcm9tICdjaGFydGpzLXBsdWdpbi1kYXRhbGFiZWxzJztcbmltcG9ydCB7IERhdGFTdGF0ZSB9IGZyb20gJ0BoZXN0aWEtZWFydGgvYXBpJztcbmltcG9ydCB7IElJbXBhY3RBc3Nlc3NtZW50SlNPTkxELCBJbmRpY2F0b3IsIElUZXJtSlNPTkxELCBOb2RlVHlwZSwgVGVybSwgVGVybVRlcm1UeXBlIH0gZnJvbSAnQGhlc3RpYS1lYXJ0aC9zY2hlbWEnO1xuaW1wb3J0IHsgdG9QcmVjaXNpb24sIHVuaXF1ZSB9IGZyb20gJ0BoZXN0aWEtZWFydGgvdXRpbHMnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBGYUljb25Db21wb25lbnQgfSBmcm9tICdAZm9ydGF3ZXNvbWUvYW5ndWxhci1mb250YXdlc29tZSc7XG5pbXBvcnQgeyBmYURvd25sb2FkLCBmYVNwaW5uZXIgfSBmcm9tICdAZm9ydGF3ZXNvbWUvZnJlZS1zb2xpZC1zdmctaWNvbnMnO1xuaW1wb3J0IHsgb2YgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgbWF0Y2hUZXJtVHlwZSwgbWF0Y2hUeXBlIH0gZnJvbSAnLi4vLi4vc2VhcmNoL3NlYXJjaC5tb2RlbCc7XG5pbXBvcnQgeyBIZVNlYXJjaFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZWFyY2gvc2VhcmNoLnNlcnZpY2UnO1xuaW1wb3J0IHsgSGVOb2RlU2VydmljZSB9IGZyb20gJy4uLy4uL25vZGUvbm9kZS5zZXJ2aWNlJztcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkRGVlcCB9IGZyb20gJy4uLy4uL2NvbW1vbi9yeGpzLXV0aWxzJztcbmltcG9ydCB7IExldmVsLCBwYXJzZUxpbmVzLCBwYXJzZU1lc3NhZ2UgfSBmcm9tICcuLi8uLi9jb21tb24vbG9ncy11dGlscyc7XG5pbXBvcnQgeyBsaXN0Q29sb3IgfSBmcm9tICcuLi8uLi9jb21tb24vY29sb3InO1xuaW1wb3J0IHsgQ2hhcnRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jaGFydC9jaGFydC5jb21wb25lbnQnO1xuXG5pbnRlcmZhY2UgSUxvZyB7XG4gIG1vZGVsSWQ6IHN0cmluZztcbiAgaW1wYWN0VGVybUlkOiBzdHJpbmc7XG4gIGltcGFjdFRlcm1Vbml0cz86IHN0cmluZztcbiAgYmxhbmtOb2RlVGVybUlkOiBzdHJpbmc7XG4gIGNvZWZmaWNpZW50OiBudW1iZXI7XG4gIHZhbHVlOiBudW1iZXI7XG4gIC8vIHN0b3JlIGFsbCBpbmRpY2F0b3JzIHdpdGggaW5wdXRzXG4gIGlucHV0cz86IHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgdmFsdWU6IG51bWJlcjtcbiAgfVtdO1xuICBpbnB1dHNWYWx1ZT86IG51bWJlcjtcbn1cblxuY29uc3QgcGFyc2VMb2cgPSAoZGF0YTogYW55KTogSUxvZyA9PiAoe1xuICBtb2RlbElkOiBkYXRhLm1vZGVsLFxuICBpbXBhY3RUZXJtSWQ6IGRhdGFbJ2tleS90ZXJtJ10gfHwgZGF0YS50ZXJtIHx8IGRhdGEuaW5kaWNhdG9yLFxuICBibGFua05vZGVUZXJtSWQ6IGRhdGEubm9kZSxcbiAgY29lZmZpY2llbnQ6ICtkYXRhLmNvZWZmaWNpZW50LFxuICB2YWx1ZTogK2RhdGEudmFsdWUgKiArZGF0YS5jb2VmZmljaWVudFxufSk7XG5cbmNvbnN0IGZpbHRlclRlcm1UeXBlcyA9IFtUZXJtVGVybVR5cGUuZW1pc3Npb24sIFRlcm1UZXJtVHlwZS5jaGFyYWN0ZXJpc2VkSW5kaWNhdG9yXTtcblxuY29uc3QgY3N2SGVhZGVycyA9IFtcbiAgJ0ltcGFjdCcsXG4gICdJbXBhY3QgVW5pdCcsXG4gICdNZXRob2QnLFxuICAnRW1pc3Npb24nLFxuICAnVmFsdWUnLFxuICAnSW5wdXRzJyxcbiAgJ0lucHV0cyB2YWx1ZScsXG4gICdGdW5jdGlvbmFsIFVuaXQnXG5dO1xuXG5jb25zdCBsb2dUb0NzdiA9IChsb2dzOiBJTG9nW10sIGltcGFjdDogSUltcGFjdEFzc2Vzc21lbnRKU09OTEQpID0+XG4gIFtcbiAgICBjc3ZIZWFkZXJzLmpvaW4oJywnKSxcbiAgICAuLi5sb2dzXG4gICAgICAuc29ydCgoYSwgYikgPT4gYS5pbXBhY3RUZXJtSWQubG9jYWxlQ29tcGFyZShiLmltcGFjdFRlcm1JZCkpXG4gICAgICAuZmxhdE1hcCgoeyBpbXBhY3RUZXJtSWQsIGltcGFjdFRlcm1Vbml0cywgbW9kZWxJZCwgYmxhbmtOb2RlVGVybUlkLCB2YWx1ZSwgaW5wdXRzIH0pID0+IFtcbiAgICAgICAgW2ltcGFjdFRlcm1JZCwgaW1wYWN0VGVybVVuaXRzLCBtb2RlbElkLCBibGFua05vZGVUZXJtSWQsIHZhbHVlLCAnJywgJyddLFxuICAgICAgICAuLi5pbnB1dHMubWFwKHYgPT4gW2ltcGFjdFRlcm1JZCwgaW1wYWN0VGVybVVuaXRzLCBtb2RlbElkLCBibGFua05vZGVUZXJtSWQsICcnLCB2Lm5hbWUsIHYudmFsdWVdKVxuICAgICAgXSlcbiAgICAgIC5tYXAodiA9PiBbLi4udiwgaW1wYWN0LnByb2R1Y3Q/LnRlcm0/LnVuaXRzXS5qb2luKCcsJykpXG4gIF0uam9pbignXFxuJyk7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2hlLWltcGFjdC1hc3Nlc3NtZW50cy1pbmRpY2F0b3ItYnJlYWtkb3duLWNoYXJ0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2ltcGFjdC1hc3Nlc3NtZW50cy1pbmRpY2F0b3ItYnJlYWtkb3duLWNoYXJ0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vaW1wYWN0LWFzc2Vzc21lbnRzLWluZGljYXRvci1icmVha2Rvd24tY2hhcnQuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtGYUljb25Db21wb25lbnQsIEZvcm1zTW9kdWxlLCBDaGFydENvbXBvbmVudF1cbn0pXG5leHBvcnQgY2xhc3MgSW1wYWN0QXNzZXNzbWVudHNJbmRpY2F0b3JCcmVha2Rvd25DaGFydENvbXBvbmVudCB7XG4gIHByaXZhdGUgZG9tU2FuaXRpemVyID0gaW5qZWN0KERvbVNhbml0aXplcik7XG4gIHByaXZhdGUgc2VhcmNoU2VydmljZSA9IGluamVjdChIZVNlYXJjaFNlcnZpY2UpO1xuICBwcml2YXRlIG5vZGVTZXJ2aWNlID0gaW5qZWN0KEhlTm9kZVNlcnZpY2UpO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBmYVNwaW5uZXIgPSBmYVNwaW5uZXI7XG4gIHByb3RlY3RlZCByZWFkb25seSBmYURvd25sb2FkID0gZmFEb3dubG9hZDtcblxuICBwcm90ZWN0ZWQgaW1wYWN0QXNzZXNzbWVudCA9IGlucHV0KHVuZGVmaW5lZCBhcyBJSW1wYWN0QXNzZXNzbWVudEpTT05MRCk7XG4gIHByaXZhdGUgaW1wYWN0QXNzZXNzbWVudCQgPSB0b09ic2VydmFibGUodGhpcy5pbXBhY3RBc3Nlc3NtZW50KTtcblxuICBwcm90ZWN0ZWQgaW5kaWNhdG9ycyA9IGlucHV0KFtdIGFzIEluZGljYXRvcltdKTtcblxuICBwcml2YXRlIGFsbExvZ3MgPSBzaWduYWwoW10gYXMgSUxvZ1tdKTtcbiAgcHJpdmF0ZSBsb2dzID0gY29tcHV0ZWQoKCkgPT5cbiAgICB0aGlzLmFsbExvZ3MoKVxuICAgICAgLmZpbHRlcihcbiAgICAgICAgKHsgaW1wYWN0VGVybUlkLCBtb2RlbElkIH0pID0+XG4gICAgICAgICAgaW1wYWN0VGVybUlkID09PSB0aGlzLnNlbGVjdGVkVGVybSgpPy5bJ0BpZCddICYmXG4gICAgICAgICAgKCF0aGlzLnNlbGVjdGVkTWV0aG9kKCkgfHwgbW9kZWxJZCA9PT0gdGhpcy5zZWxlY3RlZE1ldGhvZCgpPy5bJ0BpZCddKVxuICAgICAgKVxuICAgICAgLnNvcnQoKGEsIGIpID0+IGIudmFsdWUgLSBhLnZhbHVlKVxuICApO1xuXG4gIHByaXZhdGUgZW1pc3Npb25zID0gdG9TaWduYWwoXG4gICAgdGhpcy5zZWFyY2hTZXJ2aWNlXG4gICAgICAuc2VhcmNoJDxJVGVybUpTT05MRCwgTm9kZVR5cGUuVGVybT4oe1xuICAgICAgICBmaWVsZHM6IFsnQHR5cGUnLCAnQGlkJywgJ25hbWUnXSxcbiAgICAgICAgbGltaXQ6IDEwMDAsXG4gICAgICAgIHF1ZXJ5OiB7XG4gICAgICAgICAgYm9vbDoge1xuICAgICAgICAgICAgbXVzdDogW21hdGNoVHlwZShOb2RlVHlwZS5UZXJtKV0sXG4gICAgICAgICAgICBzaG91bGQ6IGZpbHRlclRlcm1UeXBlcy5tYXAodGVybVR5cGUgPT4gbWF0Y2hUZXJtVHlwZSh0ZXJtVHlwZSkpLFxuICAgICAgICAgICAgbWluaW11bV9zaG91bGRfbWF0Y2g6IDFcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgICAucGlwZShtYXAoKHsgcmVzdWx0cyB9KSA9PiByZXN1bHRzKSlcbiAgKTtcblxuICBwcm90ZWN0ZWQgbG9hZGluZyA9IHNpZ25hbCh0cnVlKTtcblxuICBwcm90ZWN0ZWQgc2VsZWN0ZWRUZXJtID0gc2lnbmFsKHVuZGVmaW5lZCBhcyBUZXJtKTtcbiAgcHJvdGVjdGVkIHRlcm1zID0gY29tcHV0ZWQoKCkgPT5cbiAgICB1bmlxdWUoXG4gICAgICAodGhpcy5pbmRpY2F0b3JzKCkgfHwgW10pXG4gICAgICAgIC5tYXAoKHsgdGVybSB9KSA9PiB0ZXJtISlcbiAgICAgICAgLmZpbHRlcihCb29sZWFuKVxuICAgICAgICAuc29ydCgoYSwgYikgPT4gYS5uYW1lLmxvY2FsZUNvbXBhcmUoYi5uYW1lKSlcbiAgICApXG4gICk7XG5cbiAgcHJvdGVjdGVkIHNlbGVjdGVkTWV0aG9kID0gc2lnbmFsKHVuZGVmaW5lZCBhcyBUZXJtKTtcbiAgcHJvdGVjdGVkIG1ldGhvZHMgPSBjb21wdXRlZCgoKSA9PlxuICAgIHVuaXF1ZSgodGhpcy5pbmRpY2F0b3JzKCkgfHwgW10pLm1hcCgoeyBtZXRob2RNb2RlbCB9KSA9PiBtZXRob2RNb2RlbCEpLmZpbHRlcihCb29sZWFuKSlcbiAgKTtcblxuICBwcml2YXRlIGltcGFjdHMgPSBjb21wdXRlZCgoKSA9PiBbXG4gICAgLi4uKHRoaXMuaW1wYWN0QXNzZXNzbWVudCgpPy5pbXBhY3RzIHx8IFtdKSxcbiAgICAuLi4odGhpcy5pbXBhY3RBc3Nlc3NtZW50KCk/LmVuZHBvaW50cyB8fCBbXSlcbiAgXSk7XG4gIHByb3RlY3RlZCBub0RhdGEgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmxvZ3MoKT8ubGVuZ3RoID09PSAwKTtcblxuICBwcm90ZWN0ZWQgY3N2Q29udGVudCA9IGNvbXB1dGVkKCgpID0+XG4gICAgdGhpcy5kb21TYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFJlc291cmNlVXJsKFxuICAgICAgYGRhdGE6dGV4dC9odG1sO2NoYXJzZXQ9dXRmLTgsJHtlbmNvZGVVUklDb21wb25lbnQobG9nVG9Dc3YodGhpcy5sb2dzKCksIHRoaXMuaW1wYWN0QXNzZXNzbWVudCgpKSl9YFxuICAgIClcbiAgKTtcbiAgcHJpdmF0ZSBpZCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuaW1wYWN0QXNzZXNzbWVudCgpPy5bJ0BpZCddIHx8ICh0aGlzLmltcGFjdEFzc2Vzc21lbnQoKSBhcyBhbnkpPy5pZCk7XG4gIHByb3RlY3RlZCBkb3dubG9hZEZpbGVuYW1lID0gY29tcHV0ZWQoKCkgPT4gYCR7dGhpcy5pZCgpfS1sb2dzLmNzdmApO1xuXG4gIHByaXZhdGUgdG90YWwgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmxvZ3MoKS5yZWR1Y2UoKHByZXYsIGN1cnIpID0+IHByZXYgKyBjdXJyLnZhbHVlLCAwKSk7XG4gIHByaXZhdGUgbGFiZWxzID0gY29tcHV0ZWQoKCkgPT5cbiAgICB0aGlzLmxvZ3MoKS5tYXAoXG4gICAgICAoeyBibGFua05vZGVUZXJtSWQgfSkgPT4gdGhpcy5lbWlzc2lvbnMoKT8uZmluZCh2ID0+IHZbJ0BpZCddID09PSBibGFua05vZGVUZXJtSWQpPy5uYW1lIHx8IGJsYW5rTm9kZVRlcm1JZFxuICAgIClcbiAgKTtcbiAgcHJpdmF0ZSBkYXRhc2V0cyA9IGNvbXB1dGVkKCgpID0+IFtcbiAgICB7XG4gICAgICBsYWJlbDogdGhpcy5zZWxlY3RlZFRlcm0oKT8ubmFtZSA/PyAnJyxcbiAgICAgIGRhdGE6IHRoaXMubG9ncygpLm1hcCgoeyB2YWx1ZSB9KSA9PiB2YWx1ZSksXG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoaXMubG9ncygpLm1hcChsaXN0Q29sb3IpLFxuICAgICAgYm9yZGVyQ29sb3I6IHRoaXMubG9ncygpLm1hcChsaXN0Q29sb3IpXG4gICAgfVxuICBdKTtcblxuICBwcm90ZWN0ZWQgY2hhcnREYXRhOiBTaWduYWw8Q2hhcnREYXRhPiA9IGNvbXB1dGVkKCgpID0+ICh7XG4gICAgZGF0YXNldHM6IHRoaXMuZGF0YXNldHMoKSxcbiAgICBsYWJlbHM6IHRoaXMubGFiZWxzKClcbiAgfSkpO1xuICBwcm90ZWN0ZWQgY2hhcnRDb25maWc6IFNpZ25hbDxQYXJ0aWFsPENoYXJ0Q29uZmlndXJhdGlvbj4+ID0gY29tcHV0ZWQoKCkgPT4gKHtcbiAgICB0eXBlOiAnaG9yaXpvbnRhbEJhcicsXG4gICAgcGx1Z2luczogW0NoYXJ0RGF0YUxhYmVsc10sXG4gICAgb3B0aW9uczoge1xuICAgICAgcGx1Z2luczoge1xuICAgICAgICBkYXRhbGFiZWxzOiB7XG4gICAgICAgICAgY29sb3I6ICdibGFjaycsXG4gICAgICAgICAgZm9ybWF0dGVyOiB2YWx1ZSA9PiB7XG4gICAgICAgICAgICBjb25zdCByYXRpbyA9IHRvUHJlY2lzaW9uKCh2YWx1ZSAqIDEwMCkgLyB0aGlzLnRvdGFsKCksIDIpO1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlID4gMCA/IGAke3RvUHJlY2lzaW9uKHZhbHVlLCAzKX0gKCR7cmF0aW99JSlgIDogJyc7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBhbGlnbjogJ2VuZCdcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHJlc3BvbnNpdmU6IHRydWUsXG4gICAgICBtYWludGFpbkFzcGVjdFJhdGlvOiBmYWxzZSxcbiAgICAgIGxlZ2VuZDoge1xuICAgICAgICBkaXNwbGF5OiBmYWxzZVxuICAgICAgfSxcbiAgICAgIHRvb2x0aXBzOiB7XG4gICAgICAgIGVuYWJsZWQ6IGZhbHNlLFxuICAgICAgICBjYWxsYmFja3M6IHtcbiAgICAgICAgICB0aXRsZTogKHRvb2x0aXBJdGVtcywgZGF0YSkgPT4gZGF0YS5kYXRhc2V0cyFbdG9vbHRpcEl0ZW1zWzBdLmRhdGFzZXRJbmRleCFdPy5sYWJlbCB8fCAnJyxcbiAgICAgICAgICBsYWJlbDogdG9vbHRpcEl0ZW0gPT4ge1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSArKHRvb2x0aXBJdGVtLnZhbHVlIHx8ICcwJyk7XG4gICAgICAgICAgICBjb25zdCByYXRpbyA9IHRvUHJlY2lzaW9uKCh2YWx1ZSAqIDEwMCkgLyB0aGlzLnRvdGFsKCksIDIpO1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlID4gMCA/IGAke3RvUHJlY2lzaW9uKHZhbHVlLCAzKX0gKCR7cmF0aW99JSlgIDogJyc7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgc2NhbGVzOiB7XG4gICAgICAgIHhBeGVzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgZGlzcGxheTogdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgeUF4ZXM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBwb3NpdGlvbjogJ2xlZnQnXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9XG4gICAgfVxuICB9KSk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5pbXBhY3RBc3Nlc3NtZW50JFxuICAgICAgLnBpcGUoXG4gICAgICAgIGZpbHRlcih2ID0+ICEhdiksXG4gICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkRGVlcCgpLFxuICAgICAgICB0YWtlKDEpLFxuICAgICAgICB0YXAoKCkgPT4gdGhpcy5sb2FkaW5nLnNldCh0cnVlKSksXG4gICAgICAgIG1lcmdlTWFwKG5vZGUgPT4gKG5vZGUgPyB0aGlzLm5vZGVTZXJ2aWNlLmdldExvZyh7IC4uLm5vZGUsIGRhdGFTdGF0ZTogRGF0YVN0YXRlLnJlY2FsY3VsYXRlZCB9KSA6IG9mKCcnKSkpLFxuICAgICAgICBtYXAodmFsdWUgPT4gKHZhbHVlID8gcGFyc2VMaW5lcyh2YWx1ZSkgOiBbXSkpLFxuICAgICAgICBtZXJnZUFsbCgpLFxuICAgICAgICBmaWx0ZXIoKHsgZGF0YSB9KSA9PiBkYXRhLmxvZ2dlciA9PT0gJ2hlc3RpYV9lYXJ0aC5tb2RlbHMnICYmIGRhdGEubGV2ZWwgPT09IExldmVsLmRlYnVnKSxcbiAgICAgICAgZmlsdGVyKCh7IGRhdGE6IHsgbWVzc2FnZSB9IH0pID0+ICEhbWVzc2FnZSksXG4gICAgICAgIG1hcCgoeyBkYXRhOiB7IG1lc3NhZ2UgfSB9KSA9PiBwYXJzZU1lc3NhZ2UobWVzc2FnZSkpLFxuICAgICAgICBmaWx0ZXIobWVzc2FnZSA9PiAnbm9kZScgaW4gbWVzc2FnZSksXG4gICAgICAgIG1hcChwYXJzZUxvZyksXG4gICAgICAgIGZpbHRlcihsb2cgPT4gISFsb2cuaW1wYWN0VGVybUlkICYmICEhbG9nLmJsYW5rTm9kZVRlcm1JZCAmJiAhaXNOYU4obG9nLnZhbHVlKSAmJiBsb2cudmFsdWUgPiAwKSxcbiAgICAgICAgZ3JvdXBCeShsb2cgPT4gW2xvZy5pbXBhY3RUZXJtSWQsIGxvZy5ibGFua05vZGVUZXJtSWQsIGxvZy5tb2RlbElkXS5qb2luKCcvJykpLFxuICAgICAgICBtZXJnZU1hcChncm91cCA9PiBncm91cC5waXBlKHRvQXJyYXkoKSkpLFxuICAgICAgICBtYXAoKHZhbHVlczogSUxvZ1tdKSA9PiB7XG4gICAgICAgICAgY29uc3QgbG9nID0gdmFsdWVzWzBdO1xuICAgICAgICAgIGNvbnN0IHRvdGFsID0gdmFsdWVzLnJlZHVjZSgocHJldiwgY3VycikgPT4gcHJldiArIGN1cnIudmFsdWUsIDApO1xuICAgICAgICAgIGNvbnN0IGJsYW5rTm9kZXMgPSBbXG4gICAgICAgICAgICAuLi4odGhpcy5pbXBhY3RBc3Nlc3NtZW50KCk/LmVtaXNzaW9uc1Jlc291cmNlVXNlID8/IFtdKSxcbiAgICAgICAgICAgIC4uLih0aGlzLmltcGFjdEFzc2Vzc21lbnQoKT8uaW1wYWN0cyA/PyBbXSlcbiAgICAgICAgICBdLmZpbHRlcih2ID0+IHYudGVybVsnQGlkJ10gPT09IGxvZy5ibGFua05vZGVUZXJtSWQpO1xuXG4gICAgICAgICAgY29uc3QgaW5wdXRzID0gYmxhbmtOb2Rlc1xuICAgICAgICAgICAgLmZpbHRlcih2ID0+IHYuaW5wdXRzPy5sZW5ndGgpXG4gICAgICAgICAgICAubWFwKHYgPT4gKHsgbmFtZTogdi5pbnB1dHMubWFwKGkgPT4gaVsnQGlkJ10pLmpvaW4oJzsnKSwgdmFsdWU6IHYudmFsdWUgKiBsb2cuY29lZmZpY2llbnQgfSkpO1xuICAgICAgICAgIGNvbnN0IGlucHV0c1ZhbHVlID0gaW5wdXRzLnJlZHVjZSgocHJldiwgY3VycikgPT4gcHJldiArIGN1cnIudmFsdWUsIDApO1xuXG4gICAgICAgICAgY29uc3QgaW1wYWN0ID0gdGhpcy5pbXBhY3RzKCkuZmluZCh2ID0+IHYudGVybVsnQGlkJ10gPT09IGxvZy5pbXBhY3RUZXJtSWQpO1xuXG4gICAgICAgICAgLy8gbG9ncyBtaWdodCBleGlzdCBidXQgaW1wYWN0IHdhcyBub3QgYWRkZWQgPT4gc2tpcCBsb2dzXG4gICAgICAgICAgcmV0dXJuIGltcGFjdFxuICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgLi4ubG9nLFxuICAgICAgICAgICAgICAgIGltcGFjdFRlcm1Vbml0czogaW1wYWN0LnRlcm0/LnVuaXRzLFxuICAgICAgICAgICAgICAgIHZhbHVlOiB0b3RhbCxcbiAgICAgICAgICAgICAgICBpbnB1dHMsXG4gICAgICAgICAgICAgICAgaW5wdXRzVmFsdWVcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgOiBudWxsO1xuICAgICAgICB9KSxcbiAgICAgICAgZmlsdGVyKGxvZyA9PiAhIWxvZyksXG4gICAgICAgIHRvQXJyYXkoKSxcbiAgICAgICAgdGFwKCgpID0+IHRoaXMubG9hZGluZy5zZXQoZmFsc2UpKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgobG9nczogSUxvZ1tdKSA9PiB0aGlzLmFsbExvZ3Muc2V0KGxvZ3MpKTtcblxuICAgIGVmZmVjdChcbiAgICAgICgpID0+IHtcbiAgICAgICAgLy8gbWFrZSBzdXJlIHNlbGVjdGVkIHRlcm0gZXhpc3RzXG4gICAgICAgIGNvbnN0IHRlcm1zID0gdGhpcy50ZXJtcygpO1xuICAgICAgICBjb25zdCBzZWxlY3RlZFRlcm1JZCA9IHRoaXMuc2VsZWN0ZWRUZXJtKCk/LlsnQGlkJ107XG4gICAgICAgIGlmICghc2VsZWN0ZWRUZXJtSWQgfHwgIXRlcm1zLmZpbmQodGVybSA9PiB0ZXJtWydAaWQnXSA9PT0gc2VsZWN0ZWRUZXJtSWQpKSB7XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFRlcm0uc2V0KHRlcm1zWzBdKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfVxuICAgICk7XG4gIH1cblxuICBwcm90ZWN0ZWQgc2VsZWN0VGVybSh7IHRhcmdldDogeyB2YWx1ZSB9IH0pIHtcbiAgICBjb25zdCB0ZXJtID0gdGhpcy50ZXJtcygpLmZpbmQodGVybSA9PiB0ZXJtWydAaWQnXSA9PT0gdmFsdWUpO1xuICAgIHRoaXMuc2VsZWN0ZWRUZXJtLnNldCh0ZXJtKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzZWxlY3RNZXRob2QoeyB0YXJnZXQ6IHsgdmFsdWUgfSB9KSB7XG4gICAgY29uc3QgdGVybSA9IHRoaXMubWV0aG9kcygpLmZpbmQodGVybSA9PiB0ZXJtWydAaWQnXSA9PT0gdmFsdWUpO1xuICAgIHRoaXMuc2VsZWN0ZWRNZXRob2Quc2V0KHRlcm0pO1xuICB9XG59XG4iLCJAaWYgKGxvYWRpbmcoKSkge1xuICA8ZGl2IGNsYXNzPVwiaGFzLXRleHQtY2VudGVyIHB5LTNcIj5cbiAgICA8ZmEtaWNvbiBbaWNvbl09XCJmYVNwaW5uZXJcIiBbcHVsc2VdPVwidHJ1ZVwiIHNpemU9XCJsZ1wiPjwvZmEtaWNvbj5cbiAgPC9kaXY+XG59IEBlbHNlIHtcbiAgPGRpdiBjbGFzcz1cInAtM1wiIFtjbGFzcy5pcy1oaWRkZW5dPVwiIXRlcm1zKCk/Lmxlbmd0aFwiPlxuICAgIDxkaXYgY2xhc3M9XCJjb2x1bW5zXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sdW1uXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZCBoYXMtYWRkb25zXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRyb2xcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYnV0dG9uIGlzLXNtYWxsIGlzLXN0YXRpYyBpcy1zZWNvbmRhcnlcIj5TZWxlY3QgYW4gSW5kaWNhdG9yPC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIEBpZiAodGVybXMoKT8ubGVuZ3RoKSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udHJvbCBpcy1leHBhbmRlZFwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0IGlzLWZ1bGx3aWR0aCBpcy1zbWFsbCBpcy1zZWNvbmRhcnlcIj5cbiAgICAgICAgICAgICAgICA8c2VsZWN0IChjaGFuZ2UpPVwic2VsZWN0VGVybSgkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgICBAZm9yICh0ZXJtIG9mIHRlcm1zKCk7IHRyYWNrIHRlcm0pIHtcbiAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiBbdmFsdWVdPVwidGVybVsnQGlkJ11cIj57eyB0ZXJtLm5hbWUgfX0gKHt7IHRlcm0udW5pdHMgfX0pPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgfVxuICAgICAgICAgIEBpZiAobWV0aG9kcygpPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250cm9sIGlzLWV4cGFuZGVkXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3QgaXMtZnVsbHdpZHRoIGlzLXNtYWxsIGlzLXNlY29uZGFyeVwiPlxuICAgICAgICAgICAgICAgIDxzZWxlY3QgKGNoYW5nZSk9XCJzZWxlY3RNZXRob2QoJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgICAgPG9wdGlvbiBbbmdWYWx1ZV09XCJ1bmRlZmluZWRcIj5GaWx0ZXIgTW9kZWw8L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgIEBmb3IgKHRlcm0gb2YgbWV0aG9kcygpOyB0cmFjayB0ZXJtKSB7XG4gICAgICAgICAgICAgICAgICAgIDxvcHRpb24gW3ZhbHVlXT1cInRlcm1bJ0BpZCddXCI+e3sgdGVybS5uYW1lIH19PC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImNvbHVtbiBpcy1uYXJyb3dcIj5cbiAgICAgICAgPGFcbiAgICAgICAgICBjbGFzcz1cImJ1dHRvbiBpcy1naG9zdCBpcy1zbWFsbFwiXG4gICAgICAgICAgW2hyZWZdPVwiY3N2Q29udGVudCgpXCJcbiAgICAgICAgICBbZG93bmxvYWRdPVwiZG93bmxvYWRGaWxlbmFtZSgpXCJcbiAgICAgICAgICBuYmdUb29sdGlwPVwiRG93bmxvYWQgYXMgQ1NWXCJcbiAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b21cIj5cbiAgICAgICAgICA8ZmEtaWNvbiBbaWNvbl09XCJmYURvd25sb2FkXCI+PC9mYS1pY29uPlxuICAgICAgICA8L2E+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICBAaWYgKCFzZWxlY3RlZE1ldGhvZCgpKSB7XG4gICAgICA8cCBjbGFzcz1cImlzLXNpemUtN1wiPlxuICAgICAgICA8aT5TZWxlY3RpbmcgYSBNb2RlbCBpcyByZWNvbW1lbmRlZCB0byBhdm9pZCBkdXBsaWNhdGVkIGVudHJpZXMuPC9pPlxuICAgICAgPC9wPlxuICAgIH1cbiAgPC9kaXY+XG59XG5cbjxkaXYgY2xhc3M9XCJpcy1tdC0xXCI+XG4gIEBpZiAoIWxvYWRpbmcoKSAmJiBub0RhdGEoKSkge1xuICAgIDxwIGNsYXNzPVwiaGFzLXRleHQtY2VudGVyZWRcIj5cbiAgICAgIDxzcGFuPk5vIGJyZWFrZG93biBhdmFpbGFibGUgZm9yPC9zcGFuPlxuICAgICAgQGlmIChzZWxlY3RlZFRlcm0oKSkge1xuICAgICAgICA8c3BhbiBjbGFzcz1cImlzLXBsLTFcIj57eyBzZWxlY3RlZFRlcm0oKS5uYW1lIH19PC9zcGFuPlxuICAgICAgfVxuICAgICAgQGlmIChzZWxlY3RlZE1ldGhvZCgpKSB7XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiaXMtcGwtMVwiPih7eyBzZWxlY3RlZE1ldGhvZCgpLm5hbWUgfX0pPC9zcGFuPlxuICAgICAgfVxuICAgICAgPHNwYW4+Ljwvc3Bhbj5cbiAgICA8L3A+XG4gIH1cbiAgPGhlLWNoYXJ0IGNsYXNzPVwiaXMtcmVsYXRpdmVcIiBbZGF0YV09XCJjaGFydERhdGEoKVwiIFtjb25maWddPVwiY2hhcnRDb25maWcoKVwiPjwvaGUtY2hhcnQ+XG48L2Rpdj5cbiJdfQ==
201
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1wYWN0LWFzc2Vzc21lbnRzLWluZGljYXRvci1icmVha2Rvd24tY2hhcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2ltcGFjdC1hc3Nlc3NtZW50cy9pbXBhY3QtYXNzZXNzbWVudHMtaW5kaWNhdG9yLWJyZWFrZG93bi1jaGFydC9pbXBhY3QtYXNzZXNzbWVudHMtaW5kaWNhdG9yLWJyZWFrZG93bi1jaGFydC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9zcmMvaW1wYWN0LWFzc2Vzc21lbnRzL2ltcGFjdC1hc3Nlc3NtZW50cy1pbmRpY2F0b3ItYnJlYWtkb3duLWNoYXJ0L2ltcGFjdC1hc3Nlc3NtZW50cy1pbmRpY2F0b3ItYnJlYWtkb3duLWNoYXJ0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQVUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwSCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDekQsT0FBTyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTlGLE9BQU8sZUFBZSxNQUFNLDJCQUEyQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM5QyxPQUFPLEVBQW1ELFFBQVEsRUFBUSxZQUFZLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNySCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxNQUFNLHFCQUFx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QUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNoQyxDQUFDOzhHQTlNVSxpREFBaUQ7a0dBQWpELGlEQUFpRCx1WkM5RTlELHk5RUF1RUEsMEtES1ksZUFBZSxpUEFBRSxXQUFXLDRPQUFFLGNBQWM7OzJGQUUzQyxpREFBaUQ7a0JBUjdELFNBQVM7K0JBQ0UsaURBQWlELG1CQUcxQyx1QkFBdUIsQ0FBQyxNQUFNLGNBQ25DLElBQUksV0FDUCxDQUFDLGVBQWUsRUFBRSxXQUFXLEVBQUUsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgU2lnbmFsLCBjb21wdXRlZCwgZWZmZWN0LCBpbmplY3QsIGlucHV0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERvbVNhbml0aXplciB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHsgdG9PYnNlcnZhYmxlLCB0b1NpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IGZpbHRlciwgZ3JvdXBCeSwgbWFwLCBtZXJnZUFsbCwgbWVyZ2VNYXAsIHRha2UsIHRhcCwgdG9BcnJheSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IENoYXJ0Q29uZmlndXJhdGlvbiwgQ2hhcnREYXRhIH0gZnJvbSAnY2hhcnQuanMnO1xuaW1wb3J0IENoYXJ0RGF0YUxhYmVscyBmcm9tICdjaGFydGpzLXBsdWdpbi1kYXRhbGFiZWxzJztcbmltcG9ydCB7IERhdGFTdGF0ZSB9IGZyb20gJ0BoZXN0aWEtZWFydGgvYXBpJztcbmltcG9ydCB7IElJbXBhY3RBc3Nlc3NtZW50SlNPTkxELCBJbmRpY2F0b3IsIElUZXJtSlNPTkxELCBOb2RlVHlwZSwgVGVybSwgVGVybVRlcm1UeXBlIH0gZnJvbSAnQGhlc3RpYS1lYXJ0aC9zY2hlbWEnO1xuaW1wb3J0IHsgdG9QcmVjaXNpb24sIHVuaXF1ZSB9IGZyb20gJ0BoZXN0aWEtZWFydGgvdXRpbHMnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBGYUljb25Db21wb25lbnQgfSBmcm9tICdAZm9ydGF3ZXNvbWUvYW5ndWxhci1mb250YXdlc29tZSc7XG5pbXBvcnQgeyBmYURvd25sb2FkLCBmYVNwaW5uZXIgfSBmcm9tICdAZm9ydGF3ZXNvbWUvZnJlZS1zb2xpZC1zdmctaWNvbnMnO1xuaW1wb3J0IHsgb2YgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgbWF0Y2hUZXJtVHlwZSwgbWF0Y2hUeXBlIH0gZnJvbSAnLi4vLi4vc2VhcmNoL3NlYXJjaC5tb2RlbCc7XG5pbXBvcnQgeyBIZVNlYXJjaFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZWFyY2gvc2VhcmNoLnNlcnZpY2UnO1xuaW1wb3J0IHsgSGVOb2RlU2VydmljZSB9IGZyb20gJy4uLy4uL25vZGUvbm9kZS5zZXJ2aWNlJztcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkRGVlcCB9IGZyb20gJy4uLy4uL2NvbW1vbi9yeGpzLXV0aWxzJztcbmltcG9ydCB7IExldmVsLCBwYXJzZUxpbmVzLCBwYXJzZU1lc3NhZ2UgfSBmcm9tICcuLi8uLi9jb21tb24vbG9ncy11dGlscyc7XG5pbXBvcnQgeyBsaXN0Q29sb3IgfSBmcm9tICcuLi8uLi9jb21tb24vY29sb3InO1xuaW1wb3J0IHsgQ2hhcnRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jaGFydC9jaGFydC5jb21wb25lbnQnO1xuXG5pbnRlcmZhY2UgSUxvZyB7XG4gIG1vZGVsSWQ6IHN0cmluZztcbiAgaW1wYWN0VGVybUlkOiBzdHJpbmc7XG4gIGltcGFjdFRlcm1Vbml0cz86IHN0cmluZztcbiAgYmxhbmtOb2RlVGVybUlkOiBzdHJpbmc7XG4gIGNvZWZmaWNpZW50OiBudW1iZXI7XG4gIHZhbHVlOiBudW1iZXI7XG4gIC8vIHN0b3JlIGFsbCBpbmRpY2F0b3JzIHdpdGggaW5wdXRzXG4gIGlucHV0cz86IHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgdmFsdWU6IG51bWJlcjtcbiAgfVtdO1xuICBpbnB1dHNWYWx1ZT86IG51bWJlcjtcbn1cblxuY29uc3QgcGFyc2VMb2cgPSAoZGF0YTogYW55KTogSUxvZyA9PiAoe1xuICBtb2RlbElkOiBkYXRhLm1vZGVsLFxuICBpbXBhY3RUZXJtSWQ6IGRhdGFbJ2tleS90ZXJtJ10gfHwgZGF0YS50ZXJtIHx8IGRhdGEuaW5kaWNhdG9yLFxuICBibGFua05vZGVUZXJtSWQ6IGRhdGEubm9kZSxcbiAgY29lZmZpY2llbnQ6ICtkYXRhLmNvZWZmaWNpZW50LFxuICB2YWx1ZTogK2RhdGEudmFsdWUgKiArZGF0YS5jb2VmZmljaWVudFxufSk7XG5cbmNvbnN0IGZpbHRlclRlcm1UeXBlcyA9IFtUZXJtVGVybVR5cGUuZW1pc3Npb24sIFRlcm1UZXJtVHlwZS5jaGFyYWN0ZXJpc2VkSW5kaWNhdG9yXTtcblxuY29uc3QgY3N2SGVhZGVycyA9IFtcbiAgJ0ltcGFjdCcsXG4gICdJbXBhY3QgVW5pdCcsXG4gICdNZXRob2QnLFxuICAnRW1pc3Npb24nLFxuICAnVmFsdWUnLFxuICAnSW5wdXRzJyxcbiAgJ0lucHV0cyB2YWx1ZScsXG4gICdGdW5jdGlvbmFsIFVuaXQnXG5dO1xuXG5jb25zdCBsb2dUb0NzdiA9IChsb2dzOiBJTG9nW10sIGltcGFjdDogSUltcGFjdEFzc2Vzc21lbnRKU09OTEQpID0+XG4gIFtcbiAgICBjc3ZIZWFkZXJzLmpvaW4oJywnKSxcbiAgICAuLi5sb2dzXG4gICAgICAuc29ydCgoYSwgYikgPT4gYS5pbXBhY3RUZXJtSWQubG9jYWxlQ29tcGFyZShiLmltcGFjdFRlcm1JZCkpXG4gICAgICAuZmxhdE1hcCgoeyBpbXBhY3RUZXJtSWQsIGltcGFjdFRlcm1Vbml0cywgbW9kZWxJZCwgYmxhbmtOb2RlVGVybUlkLCB2YWx1ZSwgaW5wdXRzIH0pID0+IFtcbiAgICAgICAgW2ltcGFjdFRlcm1JZCwgaW1wYWN0VGVybVVuaXRzLCBtb2RlbElkLCBibGFua05vZGVUZXJtSWQsIHZhbHVlLCAnJywgJyddLFxuICAgICAgICAuLi5pbnB1dHMubWFwKHYgPT4gW2ltcGFjdFRlcm1JZCwgaW1wYWN0VGVybVVuaXRzLCBtb2RlbElkLCBibGFua05vZGVUZXJtSWQsICcnLCB2Lm5hbWUsIHYudmFsdWVdKVxuICAgICAgXSlcbiAgICAgIC5tYXAodiA9PiBbLi4udiwgaW1wYWN0LnByb2R1Y3Q/LnRlcm0/LnVuaXRzXS5qb2luKCcsJykpXG4gIF0uam9pbignXFxuJyk7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2hlLWltcGFjdC1hc3Nlc3NtZW50cy1pbmRpY2F0b3ItYnJlYWtkb3duLWNoYXJ0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2ltcGFjdC1hc3Nlc3NtZW50cy1pbmRpY2F0b3ItYnJlYWtkb3duLWNoYXJ0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vaW1wYWN0LWFzc2Vzc21lbnRzLWluZGljYXRvci1icmVha2Rvd24tY2hhcnQuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtGYUljb25Db21wb25lbnQsIEZvcm1zTW9kdWxlLCBDaGFydENvbXBvbmVudF1cbn0pXG5leHBvcnQgY2xhc3MgSW1wYWN0QXNzZXNzbWVudHNJbmRpY2F0b3JCcmVha2Rvd25DaGFydENvbXBvbmVudCB7XG4gIHByaXZhdGUgZG9tU2FuaXRpemVyID0gaW5qZWN0KERvbVNhbml0aXplcik7XG4gIHByaXZhdGUgc2VhcmNoU2VydmljZSA9IGluamVjdChIZVNlYXJjaFNlcnZpY2UpO1xuICBwcml2YXRlIG5vZGVTZXJ2aWNlID0gaW5qZWN0KEhlTm9kZVNlcnZpY2UpO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBmYVNwaW5uZXIgPSBmYVNwaW5uZXI7XG4gIHByb3RlY3RlZCByZWFkb25seSBmYURvd25sb2FkID0gZmFEb3dubG9hZDtcblxuICBwcm90ZWN0ZWQgaW1wYWN0QXNzZXNzbWVudCA9IGlucHV0KHVuZGVmaW5lZCBhcyBJSW1wYWN0QXNzZXNzbWVudEpTT05MRCk7XG4gIHByaXZhdGUgaW1wYWN0QXNzZXNzbWVudCQgPSB0b09ic2VydmFibGUodGhpcy5pbXBhY3RBc3Nlc3NtZW50KTtcblxuICBwcm90ZWN0ZWQgaW5kaWNhdG9ycyA9IGlucHV0KFtdIGFzIEluZGljYXRvcltdKTtcblxuICBwcml2YXRlIGFsbExvZ3MgPSBzaWduYWwoW10gYXMgSUxvZ1tdKTtcbiAgcHJpdmF0ZSBsb2dzID0gY29tcHV0ZWQoKCkgPT5cbiAgICB0aGlzLmFsbExvZ3MoKVxuICAgICAgLmZpbHRlcihcbiAgICAgICAgKHsgaW1wYWN0VGVybUlkLCBtb2RlbElkIH0pID0+XG4gICAgICAgICAgaW1wYWN0VGVybUlkID09PSB0aGlzLnNlbGVjdGVkVGVybSgpPy5bJ0BpZCddICYmXG4gICAgICAgICAgKCF0aGlzLnNlbGVjdGVkTWV0aG9kKCkgfHwgbW9kZWxJZCA9PT0gdGhpcy5zZWxlY3RlZE1ldGhvZCgpPy5bJ0BpZCddKVxuICAgICAgKVxuICAgICAgLnNvcnQoKGEsIGIpID0+IGIudmFsdWUgLSBhLnZhbHVlKVxuICApO1xuXG4gIHByaXZhdGUgZW1pc3Npb25zID0gdG9TaWduYWwoXG4gICAgdGhpcy5zZWFyY2hTZXJ2aWNlXG4gICAgICAuc2VhcmNoJDxJVGVybUpTT05MRCwgTm9kZVR5cGUuVGVybT4oe1xuICAgICAgICBmaWVsZHM6IFsnQHR5cGUnLCAnQGlkJywgJ25hbWUnXSxcbiAgICAgICAgbGltaXQ6IDEwMDAsXG4gICAgICAgIHF1ZXJ5OiB7XG4gICAgICAgICAgYm9vbDoge1xuICAgICAgICAgICAgbXVzdDogW21hdGNoVHlwZShOb2RlVHlwZS5UZXJtKV0sXG4gICAgICAgICAgICBzaG91bGQ6IGZpbHRlclRlcm1UeXBlcy5tYXAodGVybVR5cGUgPT4gbWF0Y2hUZXJtVHlwZSh0ZXJtVHlwZSkpLFxuICAgICAgICAgICAgbWluaW11bV9zaG91bGRfbWF0Y2g6IDFcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgICAucGlwZShtYXAoKHsgcmVzdWx0cyB9KSA9PiByZXN1bHRzKSlcbiAgKTtcblxuICBwcm90ZWN0ZWQgbG9hZGluZyA9IHNpZ25hbCh0cnVlKTtcblxuICBwcm90ZWN0ZWQgc2VsZWN0ZWRUZXJtID0gc2lnbmFsKHVuZGVmaW5lZCBhcyBUZXJtKTtcbiAgcHJvdGVjdGVkIHRlcm1zID0gY29tcHV0ZWQoKCkgPT5cbiAgICB1bmlxdWUoXG4gICAgICAodGhpcy5pbmRpY2F0b3JzKCkgfHwgW10pXG4gICAgICAgIC5tYXAoKHsgdGVybSB9KSA9PiB0ZXJtISlcbiAgICAgICAgLmZpbHRlcihCb29sZWFuKVxuICAgICAgICAuc29ydCgoYSwgYikgPT4gYS5uYW1lLmxvY2FsZUNvbXBhcmUoYi5uYW1lKSlcbiAgICApXG4gICk7XG5cbiAgcHJvdGVjdGVkIHNlbGVjdGVkTWV0aG9kID0gc2lnbmFsKHVuZGVmaW5lZCBhcyBUZXJtKTtcbiAgcHJvdGVjdGVkIG1ldGhvZHMgPSBjb21wdXRlZCgoKSA9PlxuICAgIHVuaXF1ZSgodGhpcy5pbmRpY2F0b3JzKCkgfHwgW10pLm1hcCgoeyBtZXRob2RNb2RlbCB9KSA9PiBtZXRob2RNb2RlbCEpLmZpbHRlcihCb29sZWFuKSlcbiAgKTtcblxuICBwcml2YXRlIGltcGFjdHMgPSBjb21wdXRlZCgoKSA9PiBbXG4gICAgLi4uKHRoaXMuaW1wYWN0QXNzZXNzbWVudCgpPy5pbXBhY3RzIHx8IFtdKSxcbiAgICAuLi4odGhpcy5pbXBhY3RBc3Nlc3NtZW50KCk/LmVuZHBvaW50cyB8fCBbXSlcbiAgXSk7XG4gIHByb3RlY3RlZCBub0RhdGEgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmxvZ3MoKT8ubGVuZ3RoID09PSAwKTtcblxuICBwcm90ZWN0ZWQgY3N2Q29udGVudCA9IGNvbXB1dGVkKCgpID0+XG4gICAgdGhpcy5kb21TYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFJlc291cmNlVXJsKFxuICAgICAgYGRhdGE6dGV4dC9odG1sO2NoYXJzZXQ9dXRmLTgsJHtlbmNvZGVVUklDb21wb25lbnQobG9nVG9Dc3YodGhpcy5sb2dzKCksIHRoaXMuaW1wYWN0QXNzZXNzbWVudCgpKSl9YFxuICAgIClcbiAgKTtcbiAgcHJpdmF0ZSBpZCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuaW1wYWN0QXNzZXNzbWVudCgpPy5bJ0BpZCddIHx8ICh0aGlzLmltcGFjdEFzc2Vzc21lbnQoKSBhcyBhbnkpPy5pZCk7XG4gIHByb3RlY3RlZCBkb3dubG9hZEZpbGVuYW1lID0gY29tcHV0ZWQoKCkgPT4gYCR7dGhpcy5pZCgpfS1sb2dzLmNzdmApO1xuXG4gIHByaXZhdGUgdG90YWwgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmxvZ3MoKS5yZWR1Y2UoKHByZXYsIGN1cnIpID0+IHByZXYgKyBjdXJyLnZhbHVlLCAwKSk7XG4gIHByaXZhdGUgbGFiZWxzID0gY29tcHV0ZWQoKCkgPT5cbiAgICB0aGlzLmxvZ3MoKS5tYXAoXG4gICAgICAoeyBibGFua05vZGVUZXJtSWQgfSkgPT4gdGhpcy5lbWlzc2lvbnMoKT8uZmluZCh2ID0+IHZbJ0BpZCddID09PSBibGFua05vZGVUZXJtSWQpPy5uYW1lIHx8IGJsYW5rTm9kZVRlcm1JZFxuICAgIClcbiAgKTtcbiAgcHJpdmF0ZSBkYXRhc2V0cyA9IGNvbXB1dGVkKCgpID0+IFtcbiAgICB7XG4gICAgICBsYWJlbDogdGhpcy5zZWxlY3RlZFRlcm0oKT8ubmFtZSA/PyAnJyxcbiAgICAgIGRhdGE6IHRoaXMubG9ncygpLm1hcCgoeyB2YWx1ZSB9KSA9PiB2YWx1ZSksXG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoaXMubG9ncygpLm1hcChsaXN0Q29sb3IpLFxuICAgICAgYm9yZGVyQ29sb3I6IHRoaXMubG9ncygpLm1hcChsaXN0Q29sb3IpXG4gICAgfVxuICBdKTtcblxuICBwcm90ZWN0ZWQgY2hhcnREYXRhOiBTaWduYWw8Q2hhcnREYXRhPiA9IGNvbXB1dGVkKCgpID0+ICh7XG4gICAgZGF0YXNldHM6IHRoaXMuZGF0YXNldHMoKSxcbiAgICBsYWJlbHM6IHRoaXMubGFiZWxzKClcbiAgfSkpO1xuICBwcm90ZWN0ZWQgY2hhcnRDb25maWc6IFNpZ25hbDxQYXJ0aWFsPENoYXJ0Q29uZmlndXJhdGlvbj4+ID0gY29tcHV0ZWQoKCkgPT4gKHtcbiAgICB0eXBlOiAnaG9yaXpvbnRhbEJhcicsXG4gICAgcGx1Z2luczogW0NoYXJ0RGF0YUxhYmVsc10sXG4gICAgb3B0aW9uczoge1xuICAgICAgcGx1Z2luczoge1xuICAgICAgICBkYXRhbGFiZWxzOiB7XG4gICAgICAgICAgY29sb3I6ICdibGFjaycsXG4gICAgICAgICAgZm9ybWF0dGVyOiB2YWx1ZSA9PiB7XG4gICAgICAgICAgICBjb25zdCByYXRpbyA9IHRvUHJlY2lzaW9uKCh2YWx1ZSAqIDEwMCkgLyB0aGlzLnRvdGFsKCksIDIpO1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlID4gMCA/IGAke3RvUHJlY2lzaW9uKHZhbHVlLCAzKX0gKCR7cmF0aW99JSlgIDogJyc7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBhbGlnbjogJ2VuZCdcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHJlc3BvbnNpdmU6IHRydWUsXG4gICAgICBtYWludGFpbkFzcGVjdFJhdGlvOiBmYWxzZSxcbiAgICAgIGxlZ2VuZDoge1xuICAgICAgICBkaXNwbGF5OiBmYWxzZVxuICAgICAgfSxcbiAgICAgIHRvb2x0aXBzOiB7XG4gICAgICAgIGVuYWJsZWQ6IGZhbHNlLFxuICAgICAgICBjYWxsYmFja3M6IHtcbiAgICAgICAgICB0aXRsZTogKHRvb2x0aXBJdGVtcywgZGF0YSkgPT4gZGF0YS5kYXRhc2V0cyFbdG9vbHRpcEl0ZW1zWzBdLmRhdGFzZXRJbmRleCFdPy5sYWJlbCB8fCAnJyxcbiAgICAgICAgICBsYWJlbDogdG9vbHRpcEl0ZW0gPT4ge1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSArKHRvb2x0aXBJdGVtLnZhbHVlIHx8ICcwJyk7XG4gICAgICAgICAgICBjb25zdCByYXRpbyA9IHRvUHJlY2lzaW9uKCh2YWx1ZSAqIDEwMCkgLyB0aGlzLnRvdGFsKCksIDIpO1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlID4gMCA/IGAke3RvUHJlY2lzaW9uKHZhbHVlLCAzKX0gKCR7cmF0aW99JSlgIDogJyc7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgc2NhbGVzOiB7XG4gICAgICAgIHhBeGVzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgZGlzcGxheTogdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgeUF4ZXM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBwb3NpdGlvbjogJ2xlZnQnXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9XG4gICAgfVxuICB9KSk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5pbXBhY3RBc3Nlc3NtZW50JFxuICAgICAgLnBpcGUoXG4gICAgICAgIGZpbHRlcih2ID0+ICEhdiksXG4gICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkRGVlcCgpLFxuICAgICAgICB0YWtlKDEpLFxuICAgICAgICB0YXAoKCkgPT4gdGhpcy5sb2FkaW5nLnNldCh0cnVlKSksXG4gICAgICAgIG1lcmdlTWFwKG5vZGUgPT4gKG5vZGUgPyB0aGlzLm5vZGVTZXJ2aWNlLmdldExvZyh7IC4uLm5vZGUsIGRhdGFTdGF0ZTogRGF0YVN0YXRlLnJlY2FsY3VsYXRlZCB9KSA6IG9mKCcnKSkpLFxuICAgICAgICBtYXAodmFsdWUgPT4gKHZhbHVlID8gcGFyc2VMaW5lcyh2YWx1ZSkgOiBbXSkpLFxuICAgICAgICBtZXJnZUFsbCgpLFxuICAgICAgICBmaWx0ZXIoKHsgZGF0YSB9KSA9PiBkYXRhLmxvZ2dlciA9PT0gJ2hlc3RpYV9lYXJ0aC5tb2RlbHMnICYmIGRhdGEubGV2ZWwgPT09IExldmVsLmRlYnVnKSxcbiAgICAgICAgZmlsdGVyKCh7IGRhdGE6IHsgbWVzc2FnZSB9IH0pID0+ICEhbWVzc2FnZSksXG4gICAgICAgIG1hcCgoeyBkYXRhOiB7IG1lc3NhZ2UgfSB9KSA9PiBwYXJzZU1lc3NhZ2UobWVzc2FnZSkpLFxuICAgICAgICBmaWx0ZXIobWVzc2FnZSA9PiAnbm9kZScgaW4gbWVzc2FnZSksXG4gICAgICAgIG1hcChwYXJzZUxvZyksXG4gICAgICAgIGZpbHRlcihsb2cgPT4gISFsb2cuaW1wYWN0VGVybUlkICYmICEhbG9nLmJsYW5rTm9kZVRlcm1JZCAmJiAhaXNOYU4obG9nLnZhbHVlKSAmJiBsb2cudmFsdWUgPiAwKSxcbiAgICAgICAgZ3JvdXBCeShsb2cgPT4gW2xvZy5pbXBhY3RUZXJtSWQsIGxvZy5ibGFua05vZGVUZXJtSWQsIGxvZy5tb2RlbElkXS5qb2luKCcvJykpLFxuICAgICAgICBtZXJnZU1hcChncm91cCA9PiBncm91cC5waXBlKHRvQXJyYXkoKSkpLFxuICAgICAgICBtYXAoKHZhbHVlczogSUxvZ1tdKSA9PiB7XG4gICAgICAgICAgY29uc3QgbG9nID0gdmFsdWVzWzBdO1xuICAgICAgICAgIGNvbnN0IHRvdGFsID0gdmFsdWVzLnJlZHVjZSgocHJldiwgY3VycikgPT4gcHJldiArIGN1cnIudmFsdWUsIDApO1xuICAgICAgICAgIGNvbnN0IGJsYW5rTm9kZXMgPSBbXG4gICAgICAgICAgICAuLi4odGhpcy5pbXBhY3RBc3Nlc3NtZW50KCk/LmVtaXNzaW9uc1Jlc291cmNlVXNlID8/IFtdKSxcbiAgICAgICAgICAgIC4uLih0aGlzLmltcGFjdEFzc2Vzc21lbnQoKT8uaW1wYWN0cyA/PyBbXSlcbiAgICAgICAgICBdLmZpbHRlcih2ID0+IHYudGVybVsnQGlkJ10gPT09IGxvZy5ibGFua05vZGVUZXJtSWQpO1xuXG4gICAgICAgICAgY29uc3QgaW5wdXRzID0gYmxhbmtOb2Rlc1xuICAgICAgICAgICAgLmZpbHRlcih2ID0+IHYuaW5wdXRzPy5sZW5ndGgpXG4gICAgICAgICAgICAubWFwKHYgPT4gKHsgbmFtZTogdi5pbnB1dHMubWFwKGkgPT4gaVsnQGlkJ10pLmpvaW4oJzsnKSwgdmFsdWU6IHYudmFsdWUgKiBsb2cuY29lZmZpY2llbnQgfSkpO1xuICAgICAgICAgIGNvbnN0IGlucHV0c1ZhbHVlID0gaW5wdXRzLnJlZHVjZSgocHJldiwgY3VycikgPT4gcHJldiArIGN1cnIudmFsdWUsIDApO1xuXG4gICAgICAgICAgY29uc3QgaW1wYWN0ID0gdGhpcy5pbXBhY3RzKCkuZmluZCh2ID0+IHYudGVybVsnQGlkJ10gPT09IGxvZy5pbXBhY3RUZXJtSWQpO1xuXG4gICAgICAgICAgLy8gbG9ncyBtaWdodCBleGlzdCBidXQgaW1wYWN0IHdhcyBub3QgYWRkZWQgPT4gc2tpcCBsb2dzXG4gICAgICAgICAgcmV0dXJuIGltcGFjdFxuICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgLi4ubG9nLFxuICAgICAgICAgICAgICAgIGltcGFjdFRlcm1Vbml0czogaW1wYWN0LnRlcm0/LnVuaXRzLFxuICAgICAgICAgICAgICAgIHZhbHVlOiB0b3RhbCxcbiAgICAgICAgICAgICAgICBpbnB1dHMsXG4gICAgICAgICAgICAgICAgaW5wdXRzVmFsdWVcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgOiBudWxsO1xuICAgICAgICB9KSxcbiAgICAgICAgZmlsdGVyKGxvZyA9PiAhIWxvZyksXG4gICAgICAgIHRvQXJyYXkoKSxcbiAgICAgICAgdGFwKCgpID0+IHRoaXMubG9hZGluZy5zZXQoZmFsc2UpKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgobG9nczogSUxvZ1tdKSA9PiB0aGlzLmFsbExvZ3Muc2V0KGxvZ3MpKTtcblxuICAgIGVmZmVjdChcbiAgICAgICgpID0+IHtcbiAgICAgICAgLy8gbWFrZSBzdXJlIHNlbGVjdGVkIHRlcm0gZXhpc3RzXG4gICAgICAgIGNvbnN0IHRlcm1zID0gdGhpcy50ZXJtcygpO1xuICAgICAgICBjb25zdCBzZWxlY3RlZFRlcm1JZCA9IHRoaXMuc2VsZWN0ZWRUZXJtKCk/LlsnQGlkJ107XG4gICAgICAgIGlmICghc2VsZWN0ZWRUZXJtSWQgfHwgIXRlcm1zLmZpbmQodGVybSA9PiB0ZXJtWydAaWQnXSA9PT0gc2VsZWN0ZWRUZXJtSWQpKSB7XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFRlcm0uc2V0KHRlcm1zWzBdKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfVxuICAgICk7XG4gIH1cblxuICBwcm90ZWN0ZWQgc2VsZWN0VGVybSh7IHRhcmdldDogeyB2YWx1ZSB9IH0pIHtcbiAgICBjb25zdCB0ZXJtID0gdGhpcy50ZXJtcygpLmZpbmQodGVybSA9PiB0ZXJtWydAaWQnXSA9PT0gdmFsdWUpO1xuICAgIHRoaXMuc2VsZWN0ZWRUZXJtLnNldCh0ZXJtKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzZWxlY3RNZXRob2QoeyB0YXJnZXQ6IHsgdmFsdWUgfSB9KSB7XG4gICAgY29uc3QgdGVybSA9IHRoaXMubWV0aG9kcygpLmZpbmQodGVybSA9PiB0ZXJtWydAaWQnXSA9PT0gdmFsdWUpO1xuICAgIHRoaXMuc2VsZWN0ZWRNZXRob2Quc2V0KHRlcm0pO1xuICB9XG59XG4iLCJAaWYgKGxvYWRpbmcoKSkge1xuICA8ZGl2IGNsYXNzPVwiaGFzLXRleHQtY2VudGVyIHB5LTNcIj5cbiAgICA8ZmEtaWNvbiBbaWNvbl09XCJmYVNwaW5uZXJcIiBbcHVsc2VdPVwidHJ1ZVwiIHNpemU9XCJsZ1wiPjwvZmEtaWNvbj5cbiAgPC9kaXY+XG59IEBlbHNlIHtcbiAgPGRpdiBjbGFzcz1cInAtM1wiIFtjbGFzcy5pcy1oaWRkZW5dPVwiIXRlcm1zKCk/Lmxlbmd0aFwiPlxuICAgIDxkaXYgY2xhc3M9XCJjb2x1bW5zXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sdW1uXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZCBoYXMtYWRkb25zXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRyb2xcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYnV0dG9uIGlzLXNtYWxsIGlzLXN0YXRpYyBpcy1zZWNvbmRhcnlcIj5TZWxlY3QgYW4gSW5kaWNhdG9yPC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIEBpZiAodGVybXMoKT8ubGVuZ3RoKSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udHJvbCBpcy1leHBhbmRlZFwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0IGlzLWZ1bGx3aWR0aCBpcy1zbWFsbCBpcy1zZWNvbmRhcnlcIj5cbiAgICAgICAgICAgICAgICA8c2VsZWN0IChjaGFuZ2UpPVwic2VsZWN0VGVybSgkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgICBAZm9yICh0ZXJtIG9mIHRlcm1zKCk7IHRyYWNrIHRlcm0pIHtcbiAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiBbdmFsdWVdPVwidGVybVsnQGlkJ11cIj57eyB0ZXJtLm5hbWUgfX0gKHt7IHRlcm0udW5pdHMgfX0pPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgfVxuICAgICAgICAgIEBpZiAobWV0aG9kcygpPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250cm9sIGlzLWV4cGFuZGVkXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3QgaXMtZnVsbHdpZHRoIGlzLXNtYWxsIGlzLXNlY29uZGFyeVwiPlxuICAgICAgICAgICAgICAgIDxzZWxlY3QgKGNoYW5nZSk9XCJzZWxlY3RNZXRob2QoJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgICAgPG9wdGlvbiBbbmdWYWx1ZV09XCJ1bmRlZmluZWRcIj5GaWx0ZXIgTW9kZWw8L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgIEBmb3IgKHRlcm0gb2YgbWV0aG9kcygpOyB0cmFjayB0ZXJtKSB7XG4gICAgICAgICAgICAgICAgICAgIDxvcHRpb24gW3ZhbHVlXT1cInRlcm1bJ0BpZCddXCI+e3sgdGVybS5uYW1lIH19PC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImNvbHVtbiBpcy1uYXJyb3dcIj5cbiAgICAgICAgPGFcbiAgICAgICAgICBjbGFzcz1cImJ1dHRvbiBpcy1naG9zdCBpcy1zbWFsbFwiXG4gICAgICAgICAgW2hyZWZdPVwiY3N2Q29udGVudCgpXCJcbiAgICAgICAgICBbZG93bmxvYWRdPVwiZG93bmxvYWRGaWxlbmFtZSgpXCJcbiAgICAgICAgICBuZ2JUb29sdGlwPVwiRG93bmxvYWQgYXMgQ1NWXCJcbiAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b21cIj5cbiAgICAgICAgICA8ZmEtaWNvbiBbaWNvbl09XCJmYURvd25sb2FkXCI+PC9mYS1pY29uPlxuICAgICAgICA8L2E+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICBAaWYgKCFzZWxlY3RlZE1ldGhvZCgpKSB7XG4gICAgICA8cCBjbGFzcz1cImlzLXNpemUtN1wiPlxuICAgICAgICA8aT5TZWxlY3RpbmcgYSBNb2RlbCBpcyByZWNvbW1lbmRlZCB0byBhdm9pZCBkdXBsaWNhdGVkIGVudHJpZXMuPC9pPlxuICAgICAgPC9wPlxuICAgIH1cbiAgPC9kaXY+XG59XG5cbjxkaXYgY2xhc3M9XCJpcy1tdC0xXCI+XG4gIEBpZiAoIWxvYWRpbmcoKSAmJiBub0RhdGEoKSkge1xuICAgIDxwIGNsYXNzPVwiaGFzLXRleHQtY2VudGVyZWRcIj5cbiAgICAgIDxzcGFuPk5vIGJyZWFrZG93biBhdmFpbGFibGUgZm9yPC9zcGFuPlxuICAgICAgQGlmIChzZWxlY3RlZFRlcm0oKSkge1xuICAgICAgICA8c3BhbiBjbGFzcz1cImlzLXBsLTFcIj57eyBzZWxlY3RlZFRlcm0oKS5uYW1lIH19PC9zcGFuPlxuICAgICAgfVxuICAgICAgQGlmIChzZWxlY3RlZE1ldGhvZCgpKSB7XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiaXMtcGwtMVwiPih7eyBzZWxlY3RlZE1ldGhvZCgpLm5hbWUgfX0pPC9zcGFuPlxuICAgICAgfVxuICAgICAgPHNwYW4+Ljwvc3Bhbj5cbiAgICA8L3A+XG4gIH1cbiAgPGhlLWNoYXJ0IGNsYXNzPVwiaXMtcmVsYXRpdmVcIiBbZGF0YV09XCJjaGFydERhdGEoKVwiIFtjb25maWddPVwiY2hhcnRDb25maWcoKVwiPjwvaGUtY2hhcnQ+XG48L2Rpdj5cbiJdfQ==