gamma-app-controller 2.0.18 → 2.0.19

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.
@@ -163,6 +163,11 @@ export class GeoMapComponent {
163
163
  this.tableDataConfig.chart_config = value.selectedWidgetConfig.dataConfig.chart_config;
164
164
  }
165
165
  else if (this.mapType == 'choroplethMap') {
166
+ if (value.selectedWidgetConfig['dataConfig']['isDataAggregation']) {
167
+ this.dataAggregationContainer = value.selectedWidgetConfig['dataConfig']['dataAggregationConfig']['dataAggregateColumes'];
168
+ this.dataAggregateGroupByColume = value.selectedWidgetConfig['dataConfig']['dataAggregationConfig']['aggregateFields'];
169
+ this.saveAggregationColume();
170
+ }
166
171
  this.choroplethMapConfig = value.selectedWidgetConfig.dataConfig;
167
172
  this.choroplethMapConfig.chart_config = value.selectedWidgetConfig.dataConfig.chart_config;
168
173
  this.tableDataConfig.chart_config = value.selectedWidgetConfig.dataConfig.chart_config;
@@ -557,4 +562,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
557
562
  type: Input,
558
563
  args: ['datasetmodal']
559
564
  }] } });
560
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VvLW1hcC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9nYW1tYS1hcHAtY29udHJvbGxlci9zcmMvbGliL2FwcGxpY2F0aW9uLWNvbnRyb2xsZXIvc3VwcG9ydC1jb21wb25lbnRzL2dlby1tYXAvZ2VvLW1hcC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9nYW1tYS1hcHAtY29udHJvbGxlci9zcmMvbGliL2FwcGxpY2F0aW9uLWNvbnRyb2xsZXIvc3VwcG9ydC1jb21wb25lbnRzL2dlby1tYXAvZ2VvLW1hcC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQXFCLFNBQVMsRUFBNEIsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQStCLE1BQU0sZUFBZSxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7O0FBV3pKLE1BQU0sT0FBTyxlQUFlO0lBaUoxQixZQUFtQixhQUE0QixFQUFVLEdBQXNCLEVBQVUsT0FBa0MsRUFBVSxNQUFxQjtRQUF2SSxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUFVLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQVUsWUFBTyxHQUFQLE9BQU8sQ0FBMkI7UUFBVSxXQUFNLEdBQU4sTUFBTSxDQUFlO1FBaEoxSiwwQkFBcUIsR0FBRztZQUN0QjtnQkFDRSxNQUFNLEVBQUUsZUFBZTtnQkFDdkIsT0FBTyxFQUFFLGFBQWE7YUFDdkI7WUFDRDtnQkFDRSxNQUFNLEVBQUUsaUJBQWlCO2dCQUN6QixPQUFPLEVBQUUsZUFBZTthQUN6QjtZQUNEO2dCQUNFLE1BQU0sRUFBRSwwQkFBMEI7Z0JBQ2xDLE9BQU8sRUFBRSxrQkFBa0I7YUFDNUI7U0FDRixDQUFBO1FBRUQsdUJBQWtCLEdBQUcsQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO1FBQ3BELFlBQU8sR0FBUSxFQUFFLENBQUM7UUFFbEIsNEJBQXVCLEdBQUc7WUFDeEIsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUU7WUFDcEMsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUU7WUFDdEMsRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUU7WUFDMUMsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsS0FBSyxFQUFFLGVBQWUsRUFBRTtTQUNuRCxDQUFDO1FBRUYsZUFBVSxHQUFHLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBRWpDLFdBQU0sR0FBYSxFQUFFLENBQUM7UUFFdEIsdUJBQWtCLEdBQVEsRUFBRSxDQUFDO1FBRzdCLHVCQUFrQixHQUFRLEVBQUUsQ0FBQztRQUU3QixtQkFBYyxHQUFRO1lBQ3BCLGdCQUFnQixFQUFFLEtBQUs7WUFDdkIscUJBQXFCLEVBQUUsSUFBSTtZQUMzQixpQkFBaUIsRUFBRTtnQkFDakIsZUFBZSxFQUFFLEVBQUU7Z0JBQ25CLFNBQVMsRUFBRSxFQUFFO2FBQ2Q7U0FDRixDQUFDO1FBQ0YsK0JBQTBCLEdBQVEsRUFBRSxDQUFDO1FBQ3JDLHlCQUFvQixHQUFHO1lBQ3JCLFdBQVcsRUFBRTtnQkFDWCxXQUFXLEVBQUUsRUFBRTtnQkFDZixLQUFLLEVBQUUscUNBQXFDO2dCQUM1QyxhQUFhLEVBQUUsYUFBYTtnQkFDNUIsU0FBUyxFQUFFLEVBQUU7Z0JBQ2IsV0FBVyxFQUFFLEVBQUU7Z0JBQ2YsZUFBZSxFQUFFLHdCQUF3QjtnQkFDekMsWUFBWSxFQUFFLEVBQUU7YUFDakI7U0FDRixDQUFDO1FBQ0Ysa0JBQWEsR0FBRztZQUNkLGNBQWMsRUFBRSxFQUVmO1lBQ0QsaUJBQWlCLEVBQUUsRUFBRTtZQUdyQixNQUFNLEVBQUUsNEJBQTRCO1lBQ3BDLGdCQUFnQixFQUFFLEVBQUU7WUFDcEIsaUJBQWlCLEVBQUUsRUFBRTtZQUNyQixNQUFNLEVBQUUsS0FBSztZQUNiLE1BQU0sRUFBRSxFQUFFO1NBQ1gsQ0FBQTtRQUNELG9CQUFlLEdBQUc7WUFDaEIsY0FBYyxFQUFFLEVBRWY7WUFDRCxlQUFlLEVBQUUsRUFBRTtZQUNuQixhQUFhLEVBQUUsU0FBUztZQUN4QixNQUFNLEVBQUUsS0FBSztZQUNiLG1CQUFtQixFQUFFLEdBQUc7WUFDeEIsbUJBQW1CLEVBQUUsSUFBSTtZQUN6QixnQkFBZ0IsRUFBRSxFQUFFO1lBQ3BCLGlCQUFpQixFQUFFLEVBQUU7WUFDckIsUUFBUSxFQUFFLEVBQUU7U0FFYixDQUFBO1FBQ0Qsb0JBQWUsR0FBRztZQUVoQixjQUFjLEVBQUUsRUFFZjtZQUNELFFBQVEsRUFBRSxFQUFFO1lBQ1osWUFBWSxFQUFFLElBQUk7WUFFbEIsZUFBZSxFQUFFLEVBQUU7WUFDbkIsaUJBQWlCLEVBQUUsRUFBRTtZQUNyQixNQUFNLEVBQUUsS0FBSztZQUNiLFdBQVcsRUFBRSxVQUFVO1lBQ3ZCLGlCQUFpQixFQUFFLFNBQVM7WUFDNUIsUUFBUSxFQUFFLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQztTQUVqQyxDQUFBO1FBTUQsd0JBQW1CLEdBQUc7WUFDcEIsWUFBWSxFQUFFO2dCQUNaO29CQUNFLFNBQVMsRUFBRSxLQUFLO29CQUNoQixPQUFPLEVBQUUsT0FBTztvQkFDaEIsVUFBVSxFQUFFLEtBQUs7b0JBQ2pCLFVBQVUsRUFBRSxFQUFFO2lCQUNmO2FBQ0Y7WUFDRCxJQUFJLEVBQUUsR0FBRztZQUNULHVCQUF1QixFQUFFLElBQUk7WUFDN0IsVUFBVSxFQUFFLElBQUk7WUFDaEIsaUJBQWlCLEVBQUUsS0FBSztZQUN4QixxQkFBcUIsRUFBRTtnQkFDckIsc0JBQXNCLEVBQUUsRUFBRTtnQkFDMUIsaUJBQWlCLEVBQUUsRUFBRTthQUN0QjtZQUNELGdCQUFnQixFQUFFLE1BQU07WUFDeEIsU0FBUyxFQUFFLFFBQVE7WUFDbkIsU0FBUyxFQUFFLFNBQVM7WUFDcEIsYUFBYSxFQUFFLFVBQVU7WUFDekIsYUFBYSxFQUFFLDJDQUEyQztZQUMxRCxJQUFJLEVBQUUsS0FBSztZQUNYLFNBQVMsRUFBRSxlQUFlO1lBQzFCLFFBQVEsRUFBRSxTQUFTO1lBQ25CLFFBQVEsRUFBRSxTQUFTO1NBQ3BCLENBQUE7UUFFRCwyQkFBc0IsR0FBWSxLQUFLLENBQUM7UUFDeEMsdUJBQWtCLEdBQUc7WUFDbkIsTUFBTSxFQUFFLEVBQUU7WUFDVixNQUFNLEVBQUUsRUFBRTtTQUNYLENBQUE7UUFFRCxtQkFBYyxHQUFHLENBQUMsa0JBQWtCLEVBQUUsa0JBQWtCLEVBQUUsbUJBQW1CLEVBQUUsZUFBZSxDQUFDLENBQUE7UUFFL0YsYUFBUSxHQUFZLElBQUksQ0FBQztRQUd6Qix3QkFBbUIsR0FBUSxFQUFFLENBQUM7UUFLOUIsY0FBUyxHQUFXLE9BQU8sQ0FBQztRQUNYLDZCQUF3QixHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ2xGLGtCQUFhLEdBQUcsRUFBRSxDQUFDO1FBbVluQiw2QkFBd0IsR0FBRyxFQUFFLENBQUM7UUFDOUIsK0JBQTBCLEdBQVEsRUFBRSxDQUFDO0lBeFl5SCxDQUFDO0lBTS9KLElBQ0ksZUFBZSxDQUFDLEtBQUs7UUFDdkIsSUFBSSxLQUFLLEtBQUssU0FBUyxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQzdDLE9BQU87U0FDUjthQUFNO1lBQ0wsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3JDLElBQUksQ0FBQyxZQUFZLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDL0MsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUM7WUFDckMsSUFBSSxDQUFDLG1CQUFtQixHQUFHLEtBQUssQ0FBQztZQUNqQyxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUM7WUFFOUIsSUFBSSxDQUFDLHFCQUFxQixHQUFHLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQztZQUNwRCxJQUFJLENBQUMsbUJBQW1CLEdBQUcsS0FBSyxDQUFDLG9CQUFvQixFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLG9CQUFvQixDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ2pILElBQUksS0FBSyxDQUFDLG9CQUFvQixFQUFFO2dCQUU5QixJQUFJLENBQUMsb0JBQW9CLENBQUMsV0FBVyxDQUFDLEdBQUcsS0FBSyxDQUFDLG9CQUFvQixDQUFDO2dCQUNwRSxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDO2dCQUM3RCxJQUFJLElBQUksQ0FBQyxPQUFPLElBQUksUUFBUSxFQUFFO29CQUM1QixJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxVQUFVLENBQUM7b0JBQzdELElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDO2lCQUV4RjtxQkFBTSxJQUFJLElBQUksQ0FBQyxPQUFPLElBQUksV0FBVyxFQUFFO29CQUN0QyxJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxVQUFVLENBQUM7b0JBQzdELElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDO29CQUN2RixJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUMsb0JBQW9CLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQztpQkFDeEY7cUJBQU0sSUFBSSxJQUFJLENBQUMsT0FBTyxJQUFJLGVBQWUsRUFBRTtvQkFDMUMsSUFBSSxDQUFDLG1CQUFtQixHQUFHLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxVQUFVLENBQUM7b0JBQ2pFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDLG9CQUFvQixDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUM7b0JBQzNGLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDO2lCQUN4RjtxQkFDSTtvQkFDSCxJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxVQUFVLENBQUM7b0JBQzNELElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDO29CQUNyRixJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUMsb0JBQW9CLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQztpQkFDeEY7Z0JBQ0QsSUFBSSxLQUFLLENBQUMsb0JBQW9CLENBQUMsY0FBYyxJQUFJLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxjQUFjLENBQUMsaUJBQWlCLENBQUMsZUFBZSxFQUFFO29CQUM1SCxJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxjQUFjLENBQUM7b0JBQ2hFLElBQUksQ0FBQyxjQUFjLEdBQUc7d0JBQ3BCLGtCQUFrQixFQUFFLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxjQUFjLENBQUMsZ0JBQWdCO3dCQUM5RSx1QkFBdUIsRUFBRSxLQUFLLENBQUMsb0JBQW9CLENBQUMsY0FBYyxDQUFDLHFCQUFxQjtxQkFDekYsQ0FBQTtvQkFFRCxJQUFJLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLEVBQUU7d0JBQzlELElBQUksQ0FBQyxjQUFjLENBQUMsbUJBQW1CLENBQUMsR0FBRzs0QkFDekMsV0FBVyxFQUFFLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxjQUFjLENBQUMsaUJBQWlCLENBQUMsU0FBUzs0QkFDbEYsaUJBQWlCLEVBQUUsS0FBSyxDQUFDLG9CQUFvQixDQUFDLGNBQWMsQ0FBQyxpQkFBaUIsQ0FBQyxlQUFlO3lCQUMvRixDQUFBO3FCQUNGO3lCQUFNO3dCQUNMLElBQUksQ0FBQyxjQUFjLENBQUMsbUJBQW1CLENBQUMsR0FBRyxFQUFFLENBQUE7cUJBQzlDO2lCQUVGO2dCQUVELElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7YUFDMUI7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQztnQkFDckQsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksRUFBRTtvQkFDckMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFO29CQUdwRCxDQUFDLENBQUMsQ0FBQztpQkFFSjtxQkFBTTtvQkFDTCxJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksR0FBRyxFQUFFLENBQUM7b0JBQ3ZDLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFO3dCQUNsQyxJQUFJLEdBQUcsR0FBRzs0QkFHUixXQUFXLEVBQUUsT0FBTzs0QkFDcEIsU0FBUyxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQzs0QkFDcEQsWUFBWSxFQUFFLEVBQUU7NEJBQ2hCLFlBQVksRUFBRSxLQUFLO3lCQUVwQixDQUFBO3dCQUVELElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztvQkFFOUMsQ0FBQyxDQUFDLENBQUM7aUJBQ0o7Z0JBRUQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQzthQUMxQjtTQUNGO0lBQ0gsQ0FBQztJQUdELFFBQVE7UUFDTixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztRQUNyQixJQUFJLENBQUMsT0FBTyxDQUFDLGlCQUFpQixFQUFFLENBQUMsU0FBUyxDQUFDO1lBQ3pDLElBQUksRUFBRSxDQUFDLElBQVMsRUFBRSxFQUFFO2dCQUNsQixJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDO2dCQUUvQixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztZQUN4QixDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsR0FBUSxFQUFFLEVBQUU7Z0JBQ3JCLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLDJEQUEyRCxFQUFFLFdBQVcsQ0FBQyxDQUFBO1lBQzdGLENBQUM7U0FDRixDQUFDLENBQUE7UUFFRixJQUFJLENBQUMsMEJBQTBCLEdBQUc7WUFDaEM7Z0JBQ0UsUUFBUSxFQUFFLEVBQUU7Z0JBQ1osaUJBQWlCLEVBQUUsRUFBRTthQUN0QjtTQUNGLENBQUE7SUFDSCxDQUFDO0lBQ0QsVUFBVTtRQUNSLElBQUksR0FBRyxHQUFHO1lBQ1IsV0FBVyxFQUFFLEVBQUU7WUFDZixTQUFTLEVBQUUsRUFBRTtZQUNiLFlBQVksRUFBRSxFQUFFO1lBQ2hCLFlBQVksRUFBRSxFQUFFO1NBQ2pCLENBQUE7UUFFRCxJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVELGFBQWEsQ0FBQyxDQUFDO1FBQ2IsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTtJQUNoRCxDQUFDO0lBRUQsa0JBQWtCLENBQUMsQ0FBQyxFQUFFLElBQUk7UUFDeEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBRTVCLENBQUM7SUFHRCxrQkFBa0IsQ0FBQyxLQUFhLEVBQUUsU0FBd0I7UUFFeEQsSUFBSSxLQUFLLEdBQUcsQ0FBQyxJQUFJLEtBQUssSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FBQyxNQUFNO1lBQUUsT0FBTztRQUMzRSxNQUFNLFdBQVcsR0FBRyxTQUFTLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO1FBRS9ELElBQUksV0FBVyxHQUFHLENBQUMsSUFBSSxXQUFXLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUMsTUFBTTtZQUFFLE9BQU87UUFHdkYsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDNUQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNuRCxJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUMsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUN2RSxDQUFDO0lBRUQsYUFBYSxDQUFDLEdBQVE7UUFDcEIsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFDRCxZQUFZLENBQUMsR0FBVztRQUN0QixJQUFJLENBQUMsU0FBUyxHQUFHLEdBQUcsQ0FBQztJQUN2QixDQUFDO0lBRUQsZUFBZSxDQUFDLE9BQU87UUFDckIsTUFBTSxjQUFjLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUNwRCxJQUFJLEtBQUssR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sS0FBSyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDNUQsSUFBSSxDQUFDLEtBQUssRUFBRTtnQkFDVixLQUFLLEdBQUc7b0JBQ04sT0FBTyxFQUFFLE1BQU0sQ0FBQyxLQUFLO29CQUNyQixPQUFPLEVBQUUsRUFBRTtpQkFDWixDQUFDO2dCQUNGLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDakI7WUFDRCxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztnQkFDakIsU0FBUyxFQUFFLE1BQU0sQ0FBQyxTQUFTO2dCQUUzQixPQUFPLEVBQUUsTUFBTSxDQUFDLE9BQU87YUFDeEIsQ0FBQyxDQUFDO1lBQ0gsT0FBTyxHQUFHLENBQUM7UUFDYixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDUCxPQUFPLGNBQWMsQ0FBQztJQUN4QixDQUFDO0lBQ0Qsa0JBQWtCLENBQUMsT0FBTztRQUN4QixNQUFNLFVBQVUsR0FBRyxFQUFFLENBQUM7UUFFdEIsT0FBTyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUN0QixLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDMUIsVUFBVSxDQUFDLElBQUksQ0FBQztvQkFDZCxTQUFTLEVBQUUsR0FBRyxDQUFDLFNBQVM7b0JBRXhCLE9BQU8sRUFBRSxHQUFHLENBQUMsT0FBTztpQkFDckIsQ0FBQyxDQUFDO1lBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sVUFBVSxDQUFDO0lBQ3BCLENBQUM7SUFHRCxrQkFBa0I7UUFFaEIsSUFBSSxJQUFJLENBQUMsT0FBTyxJQUFJLFFBQVEsRUFBRTtZQUM1QixJQUFJLENBQUMsb0JBQW9CLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUM7WUFDekUsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO1lBQzVFLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLElBQUksbUJBQW1CLEVBQUU7Z0JBQzFFLElBQUksQ0FBQyxjQUFjLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLElBQUksQ0FBQywwQkFBMEIsQ0FBQzthQUMvRjtZQUNELElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDO1lBQzVFLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxhQUFhLENBQUMsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUM7WUFFcEUsSUFBSSxDQUFDLHdCQUF3QixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQztTQUMvRDthQUFNLElBQUksSUFBSSxDQUFDLE9BQU8sSUFBSSxXQUFXLEVBQUU7WUFDdEMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDO1lBQ3pFLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLENBQUMsY0FBYyxDQUFDLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUM7WUFDdEcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO1lBRTVFLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLElBQUksbUJBQW1CLEVBQUU7Z0JBQzFFLElBQUksQ0FBQyxjQUFjLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLElBQUksQ0FBQywwQkFBMEIsQ0FBQzthQUMvRjtZQUVELElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDO1lBQzVFLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ3ZELElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxhQUFhLENBQUMsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUM7WUFFcEUsSUFBSSxDQUFDLHdCQUF3QixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQztTQUUvRDthQUFNLElBQUksSUFBSSxDQUFDLE9BQU8sSUFBSSxlQUFlLEVBQUU7WUFDMUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUM7WUFDN0UsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxjQUFjLENBQUMsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FBQztZQUN0RyxJQUFJLENBQUMsb0JBQW9CLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7WUFDNUUsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLGlCQUFpQixDQUFDLFNBQVMsSUFBSSxtQkFBbUIsRUFBRTtnQkFDMUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLEdBQUcsSUFBSSxDQUFDLDBCQUEwQixDQUFDO2FBQy9GO1lBRUQsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUM7WUFDNUUsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDdkQsSUFBSSxDQUFDLG9CQUFvQixDQUFDLGFBQWEsQ0FBQyxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQztZQUVwRSxJQUFJLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1NBRS9EO2FBQU07WUFDTCxJQUFJLENBQUMsb0JBQW9CLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7WUFDdkUsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxjQUFjLENBQUMsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FBQztZQUN0RyxJQUFJLENBQUMsb0JBQW9CLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7WUFDNUUsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLGlCQUFpQixDQUFDLFNBQVMsSUFBSSxtQkFBbUIsRUFBRTtnQkFDMUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLEdBQUcsSUFBSSxDQUFDLDBCQUEwQixDQUFDO2FBQy9GO1lBRUQsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUM7WUFDNUUsSUFBSSxDQUFDLG9CQUFvQixDQUFDLGFBQWEsQ0FBQyxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQztZQUVwRSxJQUFJLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1NBQy9EO0lBVUgsQ0FBQztJQUVELHNCQUFzQixDQUFDLEtBQUs7UUFDMUIsSUFBSSxDQUFDLDBCQUEwQixDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUE7SUFDbEQsQ0FBQztJQUVELG1CQUFtQjtRQUNqQixJQUFJLENBQUMsMEJBQTBCLENBQUMsSUFBSSxDQUFDO1lBQ25DLFFBQVEsRUFBRSxFQUFFO1lBQ1osaUJBQWlCLEVBQUUsRUFBRTtTQUN0QixDQUFDLENBQUE7SUFDSixDQUFDO0lBRUQsb0JBQW9CLENBQUMsQ0FBQztRQUVwQixJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUU7WUFDWCxJQUFJLENBQUMsMEJBQTBCLEdBQUcsRUFBRSxDQUFDO1lBQ3JDLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLElBQUksV0FBVyxFQUFFO2dCQUNsRSxJQUFJLENBQUMsb0JBQW9CLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFDLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFLENBQUM7YUFDL0U7U0FDRjtJQUdILENBQUM7SUFFRCxtQkFBbUI7UUFDakIsSUFBSSxDQUFDLGNBQWMsR0FBRztZQUNwQixnQkFBZ0IsRUFBRSxLQUFLO1lBQ3ZCLHFCQUFxQixFQUFFLElBQUk7WUFDM0IsaUJBQWlCLEVBQUU7Z0JBQ2pCLGVBQWUsRUFBRSxFQUFFO2dCQUNuQixTQUFTLEVBQUUsRUFBRTthQUNkO1NBQ0YsQ0FBQztJQUNKLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRCxXQUFXLENBQUMsS0FBYTtRQUN2QixJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRCxhQUFhLENBQUMsS0FBYSxFQUFFLEtBQWE7UUFDeEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsS0FBSyxDQUFDO0lBQzdDLENBQUM7SUFFRCxjQUFjO1FBQ1osSUFBSSxJQUFJLENBQUMsT0FBTyxJQUFJLFFBQVEsRUFBRTtZQUM1QixJQUFJLENBQUMsb0JBQW9CLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUM7WUFDekUsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO1NBQzdFO2FBQU0sSUFBSSxJQUFJLENBQUMsT0FBTyxJQUFJLFdBQVcsRUFBRTtZQUN0QyxJQUFJLENBQUMsb0JBQW9CLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUM7WUFDekUsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxjQUFjLENBQUMsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FBQztZQUN0RyxJQUFJLENBQUMsb0JBQW9CLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7U0FDN0U7YUFBTSxJQUFJLElBQUksQ0FBQyxPQUFPLElBQUksZUFBZSxFQUFFO1lBQzFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDO1lBQzdFLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLENBQUMsY0FBYyxDQUFDLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUM7WUFDdEcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO1NBQzdFO2FBQ0k7WUFDSCxJQUFJLENBQUMsb0JBQW9CLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7WUFDdkUsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxjQUFjLENBQUMsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FBQztZQUN0RyxJQUFJLENBQUMsb0JBQW9CLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7U0FDN0U7UUFFRCxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsaUJBQWlCLENBQUMsU0FBUyxJQUFJLG1CQUFtQixFQUFFO1lBQzFFLElBQUksQ0FBQyxjQUFjLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLElBQUksQ0FBQywwQkFBMEIsQ0FBQztTQUMvRjtRQUVELElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDO1FBRTVFLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDO1FBQzVFLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUM7UUFFdkQsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7SUFFNUIsQ0FBQztJQUVELGVBQWUsQ0FBQyxDQUFDO1FBQ2YsSUFBSSxDQUFDLGFBQWEsQ0FBQyxlQUFlLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUMvQyxDQUFDO0lBRUQsYUFBYSxDQUFDLEtBQUs7UUFDakIsSUFBSSxLQUFLLENBQUMsS0FBSyxFQUFFO1lBQ2YsSUFBSSxDQUFDLGFBQWEsQ0FBQyxlQUFlLEdBQUcsRUFBRSxDQUFDO1NBQ3pDO0lBQ0gsQ0FBQztJQUlELGlCQUFpQixDQUFDLEtBQUs7UUFDckIsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUM7UUFFbkQsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUN0QixPQUFPO1NBQ1I7UUFFRCxJQUFJLENBQUMsNkJBQTZCLEVBQUUsQ0FBQztJQUN2QyxDQUFDO0lBRUQsNkJBQTZCO1FBQzNCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUM7UUFDOUMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQztRQUU5QyxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLE1BQU0sRUFBRTtZQUMxRCxPQUFPO1NBQ1I7UUFFRCxJQUFJLE1BQU0sR0FBRyxRQUFRLENBQUM7UUFDdEIsSUFBSSxNQUFNLEdBQUcsQ0FBQyxRQUFRLENBQUM7UUFDdkIsSUFBSSxNQUFNLEdBQUcsUUFBUSxDQUFDO1FBQ3RCLElBQUksTUFBTSxHQUFHLENBQUMsUUFBUSxDQUFDO1FBRXZCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDckMsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1lBQ2pDLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztZQUVqQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUM5QixNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUM7Z0JBQy9CLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQztnQkFDL0IsTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDO2dCQUMvQixNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUM7YUFDaEM7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILE1BQU0sU0FBUyxHQUFHLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN4QyxNQUFNLFNBQVMsR0FBRyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7UUFHeEMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFdBQVcsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDN0QsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFdBQVcsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDL0QsQ0FBQztJQVVELG9CQUFvQjtRQUNsQixJQUFJLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDO1lBQ2pDLGtCQUFrQixFQUFFLEVBQUU7WUFDdEIscUJBQXFCLEVBQUUsRUFBRTtTQUMxQixDQUFDLENBQUE7SUFDSixDQUFDO0lBRUQsdUJBQXVCLENBQUMsQ0FBQztRQUN2QixJQUFJLENBQUMsd0JBQXdCLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTtJQUM1QyxDQUFDO0lBSUQsbUJBQW1CLENBQUMsS0FBVTtRQUM1QixJQUFJLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxpQkFBaUIsRUFBRTtZQUU5QyxJQUFJLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDO2dCQUNqQyxrQkFBa0IsRUFBRSxFQUFFO2dCQUN0QixxQkFBcUIsRUFBRSxFQUFFO2FBQzFCLENBQUMsQ0FBQTtTQUNIO2FBQU07WUFDTCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3hELElBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7U0FDbkY7UUFFRCxJQUFJLENBQUMsb0JBQW9CLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQztRQUM3RSxJQUFJLENBQUMsb0JBQW9CLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxDQUFDLGNBQWMsQ0FBQyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDO1FBQ3RHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUU1RSxJQUFJLENBQUMscUJBQXFCLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO0lBQ2hFLENBQUM7SUFFRCxxQkFBcUI7UUFDbkIsSUFBSSxJQUFJLENBQUMsbUJBQW1CLENBQUMsaUJBQWlCLEVBQUU7WUFDOUMsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLHdCQUF3QixFQUFFLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO1lBQ25JLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxjQUFjLENBQUM7WUFDekMsSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFFOUUsSUFBSSxJQUFJLENBQUMsbUJBQW1CLENBQUMsaUJBQWlCLEVBQUU7Z0JBQzlDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyx1QkFBdUIsQ0FBQyxHQUFHO29CQUNsRCxzQkFBc0IsRUFBRSxJQUFJLENBQUMsd0JBQXdCO29CQUNyRCxpQkFBaUIsRUFBRSxJQUFJLENBQUMsMEJBQTBCO2lCQUNuRCxDQUFBO2FBQ0Y7WUFFRCxPQUFPLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1NBQzdCO0lBQ0gsQ0FBQztJQUdELG9CQUFvQixDQUFDLElBQUksRUFBRSxpQkFBaUIsRUFBRSxjQUFjO1FBQzFELE1BQU0sUUFBUSxHQUFHLEVBQUUsQ0FBQztRQUVwQixJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ2pCLE1BQU0sUUFBUSxHQUFHLGNBQWMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFFaEUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFBRTtnQkFDdkIsUUFBUSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQztnQkFFeEIsY0FBYyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtvQkFDM0IsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDckMsQ0FBQyxDQUFDLENBQUM7Z0JBRUgsaUJBQWlCLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxrQkFBa0IsRUFBRSxxQkFBcUIsRUFBRSxFQUFFLEVBQUU7b0JBQzFFLFFBQVEscUJBQXFCLEVBQUU7d0JBQzdCLEtBQUssS0FBSyxDQUFDO3dCQUNYLEtBQUssS0FBSzs0QkFDUixRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLENBQUM7NEJBQzNDLE1BQU07d0JBQ1IsS0FBSyxLQUFLOzRCQUNSLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLFFBQVEsQ0FBQzs0QkFDbEQsTUFBTTt3QkFDUixLQUFLLEtBQUs7NEJBQ1IsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUM7NEJBQ25ELE1BQU07d0JBQ1IsS0FBSyxPQUFPOzRCQUNWLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsQ0FBQzs0QkFDM0MsTUFBTTtxQkFDVDtvQkFFRCxJQUFJLHFCQUFxQixLQUFLLEtBQUssRUFBRTt3QkFDbkMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsa0JBQWtCLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztxQkFDeEQ7Z0JBQ0gsQ0FBQyxDQUFDLENBQUM7YUFDSjtZQUdELGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsa0JBQWtCLEVBQUUscUJBQXFCLEVBQUUsRUFBRSxFQUFFO2dCQUMxRSxNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsa0JBQWtCLENBQUMsQ0FBQztnQkFFdEMsUUFBUSxxQkFBcUIsRUFBRTtvQkFDN0IsS0FBSyxLQUFLO3dCQUNSLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLEtBQUssQ0FBQzt3QkFDaEQsTUFBTTtvQkFFUixLQUFLLEtBQUs7d0JBQ1IsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLElBQUksS0FBSyxDQUFDO3dCQUNoRCxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxrQkFBa0IsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO3dCQUN4RCxNQUFNO29CQUVSLEtBQUssS0FBSzt3QkFDUixRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsa0JBQWtCLENBQUM7NEJBQ3BDLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7d0JBQzFELE1BQU07b0JBRVIsS0FBSyxLQUFLO3dCQUNSLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQzs0QkFDcEMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsa0JBQWtCLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQzt3QkFDMUQsTUFBTTtvQkFFUixLQUFLLE9BQU87d0JBQ1YsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDO3dCQUM1QyxNQUFNO2lCQUNUO1lBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUdILE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ3RDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsa0JBQWtCLEVBQUUscUJBQXFCLEVBQUUsRUFBRSxFQUFFO2dCQUMxRSxJQUFJLHFCQUFxQixLQUFLLEtBQUssRUFBRTtvQkFDbkMsS0FBSyxDQUFDLGtCQUFrQixDQUFDO3dCQUN2QixLQUFLLENBQUMsa0JBQWtCLENBQUMsR0FBRyxLQUFLLENBQUMsR0FBRyxrQkFBa0IsU0FBUyxDQUFDLENBQUM7b0JBQ3BFLE9BQU8sS0FBSyxDQUFDLEdBQUcsa0JBQWtCLFNBQVMsQ0FBQyxDQUFDO2lCQUM5QztZQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDakMsQ0FBQzs7NEdBM3BCVSxlQUFlO2dHQUFmLGVBQWUsd0xDWjVCLCtzd0NBMm1CTTsyRkQvbEJPLGVBQWU7a0JBTDNCLFNBQVM7K0JBQ0UsYUFBYTt3TUF3Sk4sd0JBQXdCO3NCQUF4QyxNQUFNO2dCQUlILGVBQWU7c0JBRGxCLEtBQUs7dUJBQUMsY0FBYyIsInNvdXJjZXNDb250ZW50IjpbIlxuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgQ29tcG9uZW50UmVmLCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkLCBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBcHBsaWNhdGlvbkNvbnRlbnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vYXBwbGljYXRpb24tY29udGVudC5zZXJ2aWNlJztcbmltcG9ydCB7IFRvYXN0clNlcnZpY2UgfSBmcm9tICduZ3gtdG9hc3RyJztcbmltcG9ydCB7IENvbW1vblNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb21tb24nO1xuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1nZW8tbWFwJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2dlby1tYXAuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9nZW8tbWFwLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgR2VvTWFwQ29tcG9uZW50IHtcbiAgaGVhdE1hcFR5cGVEYXRhc291cmNlID0gW1xuICAgIHtcbiAgICAgIFwibmFtZVwiOiBcIkhlYXQgTWFwIE9ubHlcIixcbiAgICAgIFwidmFsdWVcIjogXCJoZWF0TWFwT25seVwiXG4gICAgfSxcbiAgICB7XG4gICAgICBcIm5hbWVcIjogXCJIZWF0IE1hcCBNYXJrZXJcIixcbiAgICAgIFwidmFsdWVcIjogXCJoZWF0TWFwTWFya2VyXCJcbiAgICB9LFxuICAgIHtcbiAgICAgIFwibmFtZVwiOiBcIkhlYXQgTWFwIEFuZCBIZWF0IE1hcmtlclwiLFxuICAgICAgXCJ2YWx1ZVwiOiBcImhlYXRNYXBBbmRNYXJrZXJcIlxuICAgIH1cbiAgXVxuICBjaGFydFZpZXdUeXBlOiBhbnk7XG4gIG1hcEljb25zRGF0YVNvdXJjZSA9IFtcImFzc2V0cy9jdXN0b20tbWFya2VyLi5qcGVnXCJdO1xuICBtYXBUeXBlOiBhbnkgPSAnJztcblxuICBjaGFydFZpZXdUeXBlRGF0YVNvdXJjZSA9IFtcbiAgICB7IG5hbWU6ICdHRU8gTWFwJywgdmFsdWU6ICdnZW9NYXAnIH0sXG4gICAgeyBuYW1lOiAnSGVhdCBNYXAnLCB2YWx1ZTogJ2hlYXRNYXAnIH0sXG4gICAgeyBuYW1lOiAnQnViYmxlIE1hcCcsIHZhbHVlOiAnYnViYmxlTWFwJyB9LFxuICAgIHsgbmFtZTogJ0Nob3JvcGxldGggTWFwJywgdmFsdWU6ICdjaG9yb3BsZXRoTWFwJyB9XG4gIF07XG5cbiAgcmVnaW9uRGF0YSA9IFtcImNvdW50cnlcIiwgXCJjaXR5XCJdO1xuICBjaGFydERhdGFTb3VyY2VGb3JNYXA6IGFueTtcbiAgY29sb3JzOiBzdHJpbmdbXSA9IFtdOyAvLyBBcnJheSB0byBob2xkIHNlbGVjdGVkIGNvbG9yc1xuICBpc0pzb25QcmV2aWV3OiBib29sZWFuO1xuICBkYXRhU291cnNlRm9yVGFibGU6IGFueSA9IFtdO1xuICBqc2FvbkRhdGFzb3VyY2U6IGFueTtcbiAgY29uZmlnQ29sdW1lOiBhbnk7XG4gIGFsbENvbmZpZ3VyZWRWaWV3czogYW55ID0gW107XG4gIC8vIGdyb3VwT2ZWaWV3czogYW55O1xuICB2aWV3UHJvcGVydGllczogYW55ID0ge1xuICAgIGVuYWJsZUNsaWNrRXZlbnQ6IGZhbHNlLFxuICAgIGVuYWJsZVJpZ2h0Q2xpY2tFdmVudDogdHJ1ZSxcbiAgICBjbGlja0V2ZW50T3B0aW9uczoge1xuICAgICAgYXNzb2NpYXRlZFZpZXdzOiBbXSxcbiAgICAgIGV2ZW50VHlwZTogXCJcIlxuICAgIH1cbiAgfTtcbiAgb3B0aW9uYWxEcmlsRG93bkRhdGFTb3VyY2U6IGFueSA9IFtdO1xuICB0YWJsZV9jb2x1bW5zX2NvbmZpZyA9IHtcbiAgICBcImtwaUNvbmZpZ1wiOiB7XG4gICAgICBcInNlcnZpY2VJZFwiOiBcIlwiLFxuICAgICAgXCJhcGlcIjogXCIva3BpL3RyZW5kcy9uZXR3b3JrL2dldC1tZXRyaWMtZGF0YVwiLFxuICAgICAgXCJkaXNwbGF5VHlwZVwiOiBcImdvb2dsZUNoYXJ0XCIsXG4gICAgICBcImZvcm1hdGVcIjogXCJcIixcbiAgICAgIFwia2V5VG9QYXNzXCI6IFtdLFxuICAgICAgXCJjb21wb25lbnROYW1lXCI6IFwiR2FtbWFHZW9DaGFydENvbXBvbmVudFwiLFxuICAgICAgXCJkYXRhQ29uZmlnXCI6IHt9XG4gICAgfSxcbiAgfTtcbiAgaGVhdE1hcENvbmZpZyA9IHtcbiAgICBcImNoYXJ0X2NvbmZpZ1wiOiBbXG5cbiAgICBdLFxuICAgIFwiaGVhdE1hcENhdGVnb3J5XCI6IFwiXCIsXG4gICAgLy8gXCJjZW50ZXJMYXRpdHVkZVwiOlwiXCIsXG4gICAgLy8gXCJjZW50ZXJMb25naXR1ZGVcIjpcIlwiLFxuICAgIFwiaWNvblwiOiBcImFzc2V0cy9jdXN0b20tbWFya2VyLi5qcGVnXCIsXG4gICAgXCJtYXJrZXJMYXRpdHVkZVwiOiBcIlwiLFxuICAgIFwibWFya2VyTG9uZ2l0dWRlXCI6IFwiXCIsXG4gICAgXCJzaXplXCI6ICc0NTAnLFxuICAgIFwiem9vbVwiOiBcIlwiXG4gIH1cbiAgYnViYmxlTWFwQ29uZmlnID0ge1xuICAgIFwiY2hhcnRfY29uZmlnXCI6IFtcblxuICAgIF0sXG4gICAgXCJhZ3J1bWVudFZhbHVlXCI6IFwiXCIsXG4gICAgXCJidWJibGVDb2xvclwiOiBcIiMyODVlMDhcIixcbiAgICBcInNpemVcIjogJzQ1MCcsXG4gICAgXCJidWJibGVNaW5pbXVtU2l6ZVwiOiBcIjVcIixcbiAgICBcImJ1YmJsZU1heGltdW1TaXplXCI6IFwiMTVcIixcbiAgICBcIm1hcmtlckxhdGl0dWRlXCI6IFwiXCIsXG4gICAgXCJtYXJrZXJMb25naXR1ZGVcIjogXCJcIixcbiAgICBcInNvcnRCeVwiOiBcIlwiXG4gICAgLy8gIFwiem9vbVwiOlwiXCJcbiAgfVxuICB0YWJsZURhdGFDb25maWcgPSB7XG5cbiAgICBcImNoYXJ0X2NvbmZpZ1wiOiBbXG5cbiAgICBdLFxuICAgIFwicmVnaW9uXCI6IFwiXCIsXG4gICAgXCJyZWdpb25Db2RlXCI6IFwiVVNcIixcbiAgICAvLyBcInRpdGxlXCI6IFwiXCIsXG4gICAgXCJhcmd1bWVudEZpZWxkXCI6IFwiXCIsXG4gICAgXCJjaGFydFZhbHVlRmllbGRcIjogXCJcIixcbiAgICBcInNpemVcIjogXCI0NTBcIixcbiAgICBcImNoYXJ0VHlwZVwiOiBcImdlb2NoYXJ0XCIsXG4gICAgXCJiYWNrZ3JvdW5kQ29sb3JcIjogXCIjNmM5OGUwXCIsXG4gICAgXCJjb2xvcnNcIjogWycjMDAzNTY2JywgJyNmZDAwMDAnXVxuXG4gIH1cblxuXG4gIC8vIGZvciBjaG9yb3BsZXRoTWFwXG5cblxuICBjaG9yb3BsZXRoTWFwQ29uZmlnID0ge1xuICAgIGNoYXJ0X2NvbmZpZzogW1xuICAgICAge1xuICAgICAgICBkYXRhRmllbGQ6IFwiY250XCIsXG4gICAgICAgIGNhcHRpb246IFwiQ291bnRcIixcbiAgICAgICAgZGlzcGxheUZvcjogXCJtYXBcIixcbiAgICAgICAgZW5yaWNoTmFtZTogXCJcIlxuICAgICAgfVxuICAgIF0sXG4gICAgem9vbTogXCI3XCIsXG4gICAgaXNWYWx1ZUZpZWxkUmFuZ2VTbGlkZXI6IHRydWUsXG4gICAgc2xpZGVTcGVlZDogMTAwMCxcbiAgICBpc0RhdGFBZ2dyZWdhdGlvbjogZmFsc2UsXG4gICAgZGF0YUFnZ3JlZ2F0aW9uQ29uZmlnOiB7XG4gICAgICBcImRhdGFBZ2dyZWdhdGVDb2x1bWVzXCI6IFtdLFxuICAgICAgXCJhZ2dyZWdhdGVGaWVsZHNcIjogW11cbiAgICB9LFxuICAgIHNsaWRlclZhbHVlRmllbGQ6IFwieWVhclwiLFxuICAgIGNlbnRlckxhdDogXCIxLjM3MzNcIixcbiAgICBjZW50ZXJMbmc6IFwiMzIuMjkwM1wiLFxuICAgIGFyZ3VtZW50RmllbGQ6IFwiZGlzdHJpY3RcIixcbiAgICBnanNvbkZpbGVQYXRoOiBcIi9hc3NldHMvYXBpLWRhdGEvdWdhbmRhX2Rpc3RyaWN0cy5nZW9qc29uXCIsXG4gICAgc2l6ZTogXCI0NTBcIixcbiAgICBjaGFydFR5cGU6IFwiY2hvcm9wbGV0aE1hcFwiLFxuICAgIGNvbG9yT25lOiAnIzA4OTI3NCcsXG4gICAgY29sb3JUd286ICcjZjBmOTIxJyxcbiAgfVxuXG4gIGlzQ2VudGVyZENob3JvcGxldGhNYXA6IGJvb2xlYW4gPSBmYWxzZTtcbiAgY2VudGFyTGFpdG5nT2JqZWN0ID0ge1xuICAgIGxhdEtleTogXCJcIixcbiAgICBsbmdLZXk6IFwiXCJcbiAgfVxuXG4gIGVucmljaE5hbWVMaXN0ID0gW1wiYWJicmV2aWF0ZU51bWJlclwiLCBcImdldENvbG9yQ29kZVNwYW5cIiwgXCJUaG91c2FuZFNlcGFyYXRvclwiLCBcImZvcm1hdEJ5dGVzdjJcIl1cbiAgc2VsZWN0ZWRUYWJsZVZpZXdUeXBlOiBhbnk7XG4gIGlzTG9hZGVyOiBib29sZWFuID0gdHJ1ZTtcblxuICBzZWxlY3RlZFZpZXdDb25maWdzOiBhbnk7XG4gIHVzZXJPcHRpb25Db250YWluZXI6IGFueSA9IFtdO1xuICBwcmV2aWV3RGF0YTogYW55O1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBjb21tb25TZXJ2aWNlOiBDb21tb25TZXJ2aWNlLCBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsIHByaXZhdGUgc2VydmljZTogQXBwbGljYXRpb25Db250ZW50U2VydmljZSwgcHJpdmF0ZSB0YW9zdHI6IFRvYXN0clNlcnZpY2UpIHsgfVxuXG4gIGFjdGl2ZVRhYjogc3RyaW5nID0gJ2Jhc2ljJztcbiAgQE91dHB1dCgpIHB1YmxpYyBjcmVhdGVPdGhlckNvbXBvbmVudFZpZXc6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBzZWxlY3RlZFZpZXdzID0gW107XG5cbiAgQElucHV0KCdkYXRhc2V0bW9kYWwnKVxuICBzZXQgY2hhcnRjb25maWdEYXRhKHZhbHVlKSB7XG4gICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuanNhb25EYXRhc291cmNlID0gdmFsdWUuZGF0YVswXTtcbiAgICAgIHRoaXMuY29uZmlnQ29sdW1lID0gT2JqZWN0LmtleXModmFsdWUuZGF0YVswXSk7XG4gICAgICB0aGlzLmRhdGFTb3Vyc2VGb3JUYWJsZSA9IHZhbHVlLmRhdGE7XG4gICAgICB0aGlzLnNlbGVjdGVkVmlld0NvbmZpZ3MgPSB2YWx1ZTtcbiAgICAgIHRoaXMucHJldmlld0RhdGEgPSB2YWx1ZS5kYXRhO1xuXG4gICAgICB0aGlzLnNlbGVjdGVkVGFibGVWaWV3VHlwZSA9IHZhbHVlLnNlbGVjdGVkVmlld1R5cGU7XG4gICAgICB0aGlzLnVzZXJPcHRpb25Db250YWluZXIgPSB2YWx1ZS5zZWxlY3RlZFdpZGdldENvbmZpZz8ucGVybWlzc2lvbnMgPyB2YWx1ZS5zZWxlY3RlZFdpZGdldENvbmZpZy5wZXJtaXNzaW9ucyA6IFtdO1xuICAgICAgaWYgKHZhbHVlLnNlbGVjdGVkV2lkZ2V0Q29uZmlnKSB7XG5cbiAgICAgICAgdGhpcy50YWJsZV9jb2x1bW5zX2NvbmZpZ1sna3BpQ29uZmlnJ10gPSB2YWx1ZS5zZWxlY3RlZFdpZGdldENvbmZpZztcbiAgICAgICAgdGhpcy5tYXBUeXBlID0gdmFsdWUuc2VsZWN0ZWRXaWRnZXRDb25maWcuZGF0YUNvbmZpZy5tYXBUeXBlO1xuICAgICAgICBpZiAodGhpcy5tYXBUeXBlID09IFwiZ2VvTWFwXCIpIHtcbiAgICAgICAgICB0aGlzLnRhYmxlRGF0YUNvbmZpZyA9IHZhbHVlLnNlbGVjdGVkV2lkZ2V0Q29uZmlnLmRhdGFDb25maWc7XG4gICAgICAgICAgdGhpcy50YWJsZURhdGFDb25maWcuY2hhcnRfY29uZmlnID0gdmFsdWUuc2VsZWN0ZWRXaWRnZXRDb25maWcuZGF0YUNvbmZpZy5jaGFydF9jb25maWc7XG5cbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLm1hcFR5cGUgPT0gJ2J1YmJsZU1hcCcpIHtcbiAgICAgICAgICB0aGlzLmJ1YmJsZU1hcENvbmZpZyA9IHZhbHVlLnNlbGVjdGVkV2lkZ2V0Q29uZmlnLmRhdGFDb25maWc7XG4gICAgICAgICAgdGhpcy5idWJibGVNYXBDb25maWcuY2hhcnRfY29uZmlnID0gdmFsdWUuc2VsZWN0ZWRXaWRnZXRDb25maWcuZGF0YUNvbmZpZy5jaGFydF9jb25maWc7XG4gICAgICAgICAgdGhpcy50YWJsZURhdGFDb25maWcuY2hhcnRfY29uZmlnID0gdmFsdWUuc2VsZWN0ZWRXaWRnZXRDb25maWcuZGF0YUNvbmZpZy5jaGFydF9jb25maWc7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5tYXBUeXBlID09ICdjaG9yb3BsZXRoTWFwJykge1xuICAgICAgICAgIHRoaXMuY2hvcm9wbGV0aE1hcENvbmZpZyA9IHZhbHVlLnNlbGVjdGVkV2lkZ2V0Q29uZmlnLmRhdGFDb25maWc7XG4gICAgICAgICAgdGhpcy5jaG9yb3BsZXRoTWFwQ29uZmlnLmNoYXJ0X2NvbmZpZyA9IHZhbHVlLnNlbGVjdGVkV2lkZ2V0Q29uZmlnLmRhdGFDb25maWcuY2hhcnRfY29uZmlnO1xuICAgICAgICAgIHRoaXMudGFibGVEYXRhQ29uZmlnLmNoYXJ0X2NvbmZpZyA9IHZhbHVlLnNlbGVjdGVkV2lkZ2V0Q29uZmlnLmRhdGFDb25maWcuY2hhcnRfY29uZmlnO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIHRoaXMuaGVhdE1hcENvbmZpZyA9IHZhbHVlLnNlbGVjdGVkV2lkZ2V0Q29uZmlnLmRhdGFDb25maWc7XG4gICAgICAgICAgdGhpcy5oZWF0TWFwQ29uZmlnLmNoYXJ0X2NvbmZpZyA9IHZhbHVlLnNlbGVjdGVkV2lkZ2V0Q29uZmlnLmRhdGFDb25maWcuY2hhcnRfY29uZmlnO1xuICAgICAgICAgIHRoaXMudGFibGVEYXRhQ29uZmlnLmNoYXJ0X2NvbmZpZyA9IHZhbHVlLnNlbGVjdGVkV2lkZ2V0Q29uZmlnLmRhdGFDb25maWcuY2hhcnRfY29uZmlnO1xuICAgICAgICB9XG4gICAgICAgIGlmICh2YWx1ZS5zZWxlY3RlZFdpZGdldENvbmZpZy52aWV3UHJvcGVydGllcyAmJiB2YWx1ZS5zZWxlY3RlZFdpZGdldENvbmZpZy52aWV3UHJvcGVydGllcy5jbGlja0V2ZW50T3B0aW9ucy5hc3NvY2lhdGVkVmlld3MpIHtcbiAgICAgICAgICB0aGlzLnZpZXdQcm9wZXJ0aWVzID0gdmFsdWUuc2VsZWN0ZWRXaWRnZXRDb25maWcudmlld1Byb3BlcnRpZXM7XG4gICAgICAgICAgdGhpcy52aWV3UHJvcGVydGllcyA9IHtcbiAgICAgICAgICAgIFwiZW5hYmxlQ2xpY2tFdmVudFwiOiB2YWx1ZS5zZWxlY3RlZFdpZGdldENvbmZpZy52aWV3UHJvcGVydGllcy5lbmFibGVDbGlja0V2ZW50LFxuICAgICAgICAgICAgXCJlbmFibGVSaWdodENsaWNrRXZlbnRcIjogdmFsdWUuc2VsZWN0ZWRXaWRnZXRDb25maWcudmlld1Byb3BlcnRpZXMuZW5hYmxlUmlnaHRDbGlja0V2ZW50XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHZhbHVlLnNlbGVjdGVkV2lkZ2V0Q29uZmlnLnZpZXdQcm9wZXJ0aWVzLmVuYWJsZUNsaWNrRXZlbnQpIHtcbiAgICAgICAgICAgIHRoaXMudmlld1Byb3BlcnRpZXNbJ2NsaWNrRXZlbnRPcHRpb25zJ10gPSB7XG4gICAgICAgICAgICAgIFwiZXZlbnRUeXBlXCI6IHZhbHVlLnNlbGVjdGVkV2lkZ2V0Q29uZmlnLnZpZXdQcm9wZXJ0aWVzLmNsaWNrRXZlbnRPcHRpb25zLmV2ZW50VHlwZSxcbiAgICAgICAgICAgICAgXCJhc3NvY2lhdGVkVmlld3NcIjogdmFsdWUuc2VsZWN0ZWRXaWRnZXRDb25maWcudmlld1Byb3BlcnRpZXMuY2xpY2tFdmVudE9wdGlvbnMuYXNzb2NpYXRlZFZpZXdzXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMudmlld1Byb3BlcnRpZXNbJ2NsaWNrRXZlbnRPcHRpb25zJ10gPSB7fVxuICAgICAgICAgIH1cblxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy50YWJsZURhdGFDb25maWcuY2hhcnRfY29uZmlnID0gdmFsdWUuY29sdW1uRGF0YTtcbiAgICAgICAgaWYgKHRoaXMudGFibGVEYXRhQ29uZmlnLmNoYXJ0X2NvbmZpZykge1xuICAgICAgICAgIHRoaXMudGFibGVEYXRhQ29uZmlnLmNoYXJ0X2NvbmZpZy5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgICAgICAgLy8gZWxlbWVudFsnY29sb3InXSA9ICcnO1xuICAgICAgICAgICAgLy8gZWxlbWVudFsnaXNTaG93QmFyJ10gPSB0cnVlO1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy50YWJsZURhdGFDb25maWcuY2hhcnRfY29uZmlnID0gW107XG4gICAgICAgICAgdGhpcy5jb25maWdDb2x1bWUuZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgICAgICAgIGxldCBvYmogPSB7XG4gICAgICAgICAgICAgIC8vIFwidmlzaWJsZVwiOiB0cnVlLFxuICAgICAgICAgICAgICAvLyBcImlzU2hvd0JhclwiOiB0cnVlLFxuICAgICAgICAgICAgICBcImRhdGFGaWVsZFwiOiBlbGVtZW50LFxuICAgICAgICAgICAgICBcImNhcHRpb25cIjogdGhpcy5jb21tb25TZXJ2aWNlLmNvbnZlcnRTdHJpbmcoZWxlbWVudCksXG4gICAgICAgICAgICAgIFwiZW5yaWNoTmFtZVwiOiBcIlwiLFxuICAgICAgICAgICAgICBcImRpc3BsYXlGb3JcIjogXCJtYXBcIixcbiAgICAgICAgICAgICAgLy8gXCJjb2xvclwiOiBcIlwiLFxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLnRhYmxlRGF0YUNvbmZpZy5jaGFydF9jb25maWcucHVzaChvYmopO1xuXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmlzTG9hZGVyID0gdHJ1ZTtcbiAgICB0aGlzLnNlcnZpY2UuZ2V0QXBwVmlld0NvbmZpZ3MoKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKGRhdGE6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLmFsbENvbmZpZ3VyZWRWaWV3cyA9IGRhdGE7XG5cbiAgICAgICAgdGhpcy5pc0xvYWRlciA9IGZhbHNlO1xuICAgICAgfSwgZXJyb3I6IChlcnI6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLnRhb3N0ci5lcnJvcignVW5leHBlY3RlZCBTZXJ2ZXIgRXhjZXB0aW9uLiBQbGVhc2UgY29udGFjdCBTeXN0ZW0gQWRtaW4uJywgJ0FsbCBWaWV3cycpXG4gICAgICB9XG4gICAgfSlcblxuICAgIHRoaXMub3B0aW9uYWxEcmlsRG93bkRhdGFTb3VyY2UgPSBbXG4gICAgICB7XG4gICAgICAgICd2aWV3SWQnOiBcIlwiLFxuICAgICAgICAnZmlsdGVyQ29uZGl0aW9uJzogXCJcIlxuICAgICAgfVxuICAgIF1cbiAgfVxuICBhZGRDb2x1bW5zKCkge1xuICAgIGxldCBvYmogPSB7XG4gICAgICBcImRhdGFGaWVsZFwiOiBcIlwiLFxuICAgICAgXCJjYXB0aW9uXCI6IFwiXCIsXG4gICAgICBcImVucmljaE5hbWVcIjogXCJcIixcbiAgICAgIFwiZGlzcGxheUZvclwiOiBcIlwiLFxuICAgIH1cblxuICAgIHRoaXMudGFibGVEYXRhQ29uZmlnLmNoYXJ0X2NvbmZpZy5wdXNoKG9iaik7XG4gIH1cblxuICBkZWxldGVDb2x1bW5zKGkpIHtcbiAgICB0aGlzLnRhYmxlRGF0YUNvbmZpZy5jaGFydF9jb25maWcuc3BsaWNlKGksIDEpXG4gIH1cblxuICBnZXRFbnJpY2hDbGFzc05hbWUoZSwgaXRlbSkge1xuICAgIGl0ZW0uZW5yaWNoTmFtZSA9IGUudmFsdWU7XG5cbiAgfVxuXG5cbiAgbW92ZUl0ZW1Gb3JDb2x1bW5zKGluZGV4OiBudW1iZXIsIGRpcmVjdGlvbjogJ3VwJyB8ICdkb3duJyk6IHZvaWQge1xuICAgIC8vIFByZXZlbnQgbW92aW5nIGJleW9uZCBhcnJheSBib3VuZHNcbiAgICBpZiAoaW5kZXggPCAwIHx8IGluZGV4ID49IHRoaXMudGFibGVEYXRhQ29uZmlnLmNoYXJ0X2NvbmZpZy5sZW5ndGgpIHJldHVybjtcbiAgICBjb25zdCBuZXdQb3NpdGlvbiA9IGRpcmVjdGlvbiA9PT0gJ3VwJyA/IGluZGV4IC0gMSA6IGluZGV4ICsgMTtcbiAgICAvLyBQcmV2ZW50IG1vdmluZyBiZXlvbmQgYXJyYXkgYm91bmRzXG4gICAgaWYgKG5ld1Bvc2l0aW9uIDwgMCB8fCBuZXdQb3NpdGlvbiA+PSB0aGlzLnRhYmxlRGF0YUNvbmZpZy5jaGFydF9jb25maWcubGVuZ3RoKSByZXR1cm47XG5cbiAgICAvLyBNb3ZlIGl0ZW1cbiAgICBjb25zdCBpdGVtVG9Nb3ZlID0gdGhpcy50YWJsZURhdGFDb25maWcuY2hhcnRfY29uZmlnW2luZGV4XTtcbiAgICB0aGlzLnRhYmxlRGF0YUNvbmZpZy5jaGFydF9jb25maWcuc3BsaWNlKGluZGV4LCAxKTsgLy8gUmVtb3ZlIGl0ZW0gZnJvbSBjdXJyZW50IHBvc2l0aW9uXG4gICAgdGhpcy50YWJsZURhdGFDb25maWcuY2hhcnRfY29uZmlnLnNwbGljZShuZXdQb3NpdGlvbiwgMCwgaXRlbVRvTW92ZSk7IC8vIEluc2VydCBpdGVtIGluIG5ldyBwb3NpdGlvblxuICB9XG5cbiAgZ2V0T2JqZWN0S2V5cyhvYmo6IGFueSk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXMob2JqKTtcbiAgfVxuICBzZXRBY3RpdmVUYWIodGFiOiBzdHJpbmcpIHtcbiAgICB0aGlzLmFjdGl2ZVRhYiA9IHRhYjtcbiAgfVxuXG4gIGdldEdyb3VwQ29sdW1ucyhjb2x1bW5zKSB7XG4gICAgY29uc3QgZ3JvdXBlZENvbHVtbnMgPSBjb2x1bW5zLnJlZHVjZSgoYWNjLCBjb2x1bW4pID0+IHtcbiAgICAgIGxldCBncm91cCA9IGFjYy5maW5kKGl0ZW0gPT4gaXRlbS5jYXB0aW9uID09PSBjb2x1bW4uZ3JvdXApO1xuICAgICAgaWYgKCFncm91cCkge1xuICAgICAgICBncm91cCA9IHtcbiAgICAgICAgICBjYXB0aW9uOiBjb2x1bW4uZ3JvdXAsXG4gICAgICAgICAgY29sdW1uczogW11cbiAgICAgICAgfTtcbiAgICAgICAgYWNjLnB1c2goZ3JvdXApO1xuICAgICAgfVxuICAgICAgZ3JvdXAuY29sdW1ucy5wdXNoKHtcbiAgICAgICAgZGF0YUZpZWxkOiBjb2x1bW4uZGF0YUZpZWxkLFxuICAgICAgICAvLyB2aXNpYmxlOiBjb2x1bW4udmlzaWJsZSxcbiAgICAgICAgY2FwdGlvbjogY29sdW1uLmNhcHRpb25cbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGFjYztcbiAgICB9LCBbXSk7XG4gICAgcmV0dXJuIGdyb3VwZWRDb2x1bW5zO1xuICB9XG4gIGdlQ29sdW1uc0Zyb21Hcm91cChjb2x1bW5zKSB7XG4gICAgY29uc3QgbmV3Q29sdW1ucyA9IFtdO1xuXG4gICAgY29sdW1ucy5mb3JFYWNoKGdyb3VwID0+IHtcbiAgICAgIGdyb3VwLmNvbHVtbnMuZm9yRWFjaChjb2wgPT4ge1xuICAgICAgICBuZXdDb2x1bW5zLnB1c2goe1xuICAgICAgICAgIGRhdGFGaWVsZDogY29sLmRhdGFGaWVsZCxcbiAgICAgICAgICAvLyB2aXNpYmxlOiBjb2wudmlzaWJsZSxcbiAgICAgICAgICBjYXB0aW9uOiBjb2wuY2FwdGlvbixcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICByZXR1cm4gbmV3Q29sdW1ucztcbiAgfVxuXG5cbiAgZ2V0U2F2ZUNoYXJ0Q29uZmlnKCkge1xuXG4gICAgaWYgKHRoaXMubWFwVHlwZSA9PSAnZ2VvTWFwJykge1xuICAgICAgdGhpcy50YWJsZV9jb2x1bW5zX2NvbmZpZy5rcGlDb25maWdbJ2RhdGFDb25maWcnXSA9IHRoaXMudGFibGVEYXRhQ29uZmlnO1xuICAgICAgdGhpcy50YWJsZV9jb2x1bW5zX2NvbmZpZy5rcGlDb25maWdbJ2RhdGFDb25maWcnXVsnbWFwVHlwZSddID0gdGhpcy5tYXBUeXBlO1xuICAgICAgaWYgKHRoaXMudmlld1Byb3BlcnRpZXMuY2xpY2tFdmVudE9wdGlvbnMuZXZlbnRUeXBlID09ICdvcHRpb25hbERyaWxsRG93bicpIHtcbiAgICAgICAgdGhpcy52aWV3UHJvcGVydGllc1snY2xpY2tFdmVudE9wdGlvbnMnXVsnYXNzb2NpYXRlZFZpZXdzJ10gPSB0aGlzLm9wdGlvbmFsRHJpbERvd25EYXRhU291cmNlO1xuICAgICAgfVxuICAgICAgdGhpcy50YWJsZV9jb2x1bW5zX2NvbmZpZy5rcGlDb25maWdbJ3ZpZXdQcm9wZXJ0aWVzJ10gPSB0aGlzLnZpZXdQcm9wZXJ0aWVzO1xuICAgICAgdGhpcy50YWJsZV9jb2x1bW5zX2NvbmZpZ1sncGVybWlzc2lvbnMnXSA9IHRoaXMudXNlck9wdGlvbkNvbnRhaW5lcjtcblxuICAgICAgdGhpcy5jcmVhdGVPdGhlckNvbXBvbmVudFZpZXcuZW1pdCh0aGlzLnRhYmxlX2NvbHVtbnNfY29uZmlnKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMubWFwVHlwZSA9PSAnYnViYmxlTWFwJykge1xuICAgICAgdGhpcy50YWJsZV9jb2x1bW5zX2NvbmZpZy5rcGlDb25maWdbJ2RhdGFDb25maWcnXSA9IHRoaXMuYnViYmxlTWFwQ29uZmlnO1xuICAgICAgdGhpcy50YWJsZV9jb2x1bW5zX2NvbmZpZy5rcGlDb25maWdbJ2RhdGFDb25maWcnXVsnY2hhcnRfY29uZmlnJ10gPSB0aGlzLnRhYmxlRGF0YUNvbmZpZy5jaGFydF9jb25maWc7XG4gICAgICB0aGlzLnRhYmxlX2NvbHVtbnNfY29uZmlnLmtwaUNvbmZpZ1snZGF0YUNvbmZpZyddWydtYXBUeXBlJ10gPSB0aGlzLm1hcFR5cGU7XG5cbiAgICAgIGlmICh0aGlzLnZpZXdQcm9wZXJ0aWVzLmNsaWNrRXZlbnRPcHRpb25zLmV2ZW50VHlwZSA9PSAnb3B0aW9uYWxEcmlsbERvd24nKSB7XG4gICAgICAgIHRoaXMudmlld1Byb3BlcnRpZXNbJ2NsaWNrRXZlbnRPcHRpb25zJ11bJ2Fzc29jaWF0ZWRWaWV3cyddID0gdGhpcy5vcHRpb25hbERyaWxEb3duRGF0YVNvdXJjZTtcbiAgICAgIH1cblxuICAgICAgdGhpcy50YWJsZV9jb2x1bW5zX2NvbmZpZy5rcGlDb25maWdbJ3ZpZXdQcm9wZXJ0aWVzJ10gPSB0aGlzLnZpZXdQcm9wZXJ0aWVzO1xuICAgICAgdGhpcy50YWJsZV9jb2x1bW5zX2NvbmZpZy5rcGlDb25maWdbJ2RhdGFTb3VyY2UnXSA9ICcnO1xuICAgICAgdGhpcy50YWJsZV9jb2x1bW5zX2NvbmZpZ1sncGVybWlzc2lvbnMnXSA9IHRoaXMudXNlck9wdGlvbkNvbnRhaW5lcjtcblxuICAgICAgdGhpcy5jcmVhdGVPdGhlckNvbXBvbmVudFZpZXcuZW1pdCh0aGlzLnRhYmxlX2NvbHVtbnNfY29uZmlnKTtcblxuICAgIH0gZWxzZSBpZiAodGhpcy5tYXBUeXBlID09ICdjaG9yb3BsZXRoTWFwJykge1xuICAgICAgdGhpcy50YWJsZV9jb2x1bW5zX2NvbmZpZy5rcGlDb25maWdbJ2RhdGFDb25maWcnXSA9IHRoaXMuY2hvcm9wbGV0aE1hcENvbmZpZztcbiAgICAgIHRoaXMudGFibGVfY29sdW1uc19jb25maWcua3BpQ29uZmlnWydkYXRhQ29uZmlnJ11bJ2NoYXJ0X2NvbmZpZyddID0gdGhpcy50YWJsZURhdGFDb25maWcuY2hhcnRfY29uZmlnO1xuICAgICAgdGhpcy50YWJsZV9jb2x1bW5zX2NvbmZpZy5rcGlDb25maWdbJ2RhdGFDb25maWcnXVsnbWFwVHlwZSddID0gdGhpcy5tYXBUeXBlO1xuICAgICAgaWYgKHRoaXMudmlld1Byb3BlcnRpZXMuY2xpY2tFdmVudE9wdGlvbnMuZXZlbnRUeXBlID09ICdvcHRpb25hbERyaWxsRG93bicpIHtcbiAgICAgICAgdGhpcy52aWV3UHJvcGVydGllc1snY2xpY2tFdmVudE9wdGlvbnMnXVsnYXNzb2NpYXRlZFZpZXdzJ10gPSB0aGlzLm9wdGlvbmFsRHJpbERvd25EYXRhU291cmNlO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnRhYmxlX2NvbHVtbnNfY29uZmlnLmtwaUNvbmZpZ1sndmlld1Byb3BlcnRpZXMnXSA9IHRoaXMudmlld1Byb3BlcnRpZXM7XG4gICAgICB0aGlzLnRhYmxlX2NvbHVtbnNfY29uZmlnLmtwaUNvbmZpZ1snZGF0YVNvdXJjZSddID0gJyc7XG4gICAgICB0aGlzLnRhYmxlX2NvbHVtbnNfY29uZmlnWydwZXJtaXNzaW9ucyddID0gdGhpcy51c2VyT3B0aW9uQ29udGFpbmVyO1xuXG4gICAgICB0aGlzLmNyZWF0ZU90aGVyQ29tcG9uZW50Vmlldy5lbWl0KHRoaXMudGFibGVfY29sdW1uc19jb25maWcpO1xuXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudGFibGVfY29sdW1uc19jb25maWcua3BpQ29uZmlnWydkYXRhQ29uZmlnJ10gPSB0aGlzLmhlYXRNYXBDb25maWc7XG4gICAgICB0aGlzLnRhYmxlX2NvbHVtbnNfY29uZmlnLmtwaUNvbmZpZ1snZGF0YUNvbmZpZyddWydjaGFydF9jb25maWcnXSA9IHRoaXMudGFibGVEYXRhQ29uZmlnLmNoYXJ0X2NvbmZpZztcbiAgICAgIHRoaXMudGFibGVfY29sdW1uc19jb25maWcua3BpQ29uZmlnWydkYXRhQ29uZmlnJ11bJ21hcFR5cGUnXSA9IHRoaXMubWFwVHlwZTtcbiAgICAgIGlmICh0aGlzLnZpZXdQcm9wZXJ0aWVzLmNsaWNrRXZlbnRPcHRpb25zLmV2ZW50VHlwZSA9PSAnb3B0aW9uYWxEcmlsbERvd24nKSB7XG4gICAgICAgIHRoaXMudmlld1Byb3BlcnRpZXNbJ2NsaWNrRXZlbnRPcHRpb25zJ11bJ2Fzc29jaWF0ZWRWaWV3cyddID0gdGhpcy5vcHRpb25hbERyaWxEb3duRGF0YVNvdXJjZTtcbiAgICAgIH1cblxuICAgICAgdGhpcy50YWJsZV9jb2x1bW5zX2NvbmZpZy5rcGlDb25maWdbJ3ZpZXdQcm9wZXJ0aWVzJ10gPSB0aGlzLnZpZXdQcm9wZXJ0aWVzO1xuICAgICAgdGhpcy50YWJsZV9jb2x1bW5zX2NvbmZpZ1sncGVybWlzc2lvbnMnXSA9IHRoaXMudXNlck9wdGlvbkNvbnRhaW5lcjtcblxuICAgICAgdGhpcy5jcmVhdGVPdGhlckNvbXBvbmVudFZpZXcuZW1pdCh0aGlzLnRhYmxlX2NvbHVtbnNfY29uZmlnKTtcbiAgICB9XG5cbiAgICAvLyBhbGVydChKU09OLnN0cmluZ2lmeSh0aGlzLnRhYmxlX2NvbHVtbnNfY29uZmlnLCBudWxsLCAyKSk7XG4gICAgLy8gY29uc29sZS5sb2codGhpcy50YWJsZV9jb2x1bW5zX2NvbmZpZyk7XG4gICAgLy8gY29uc29sZS5sb2codGhpcy50YWJsZV9jb2x1bW5zX2NvbmZpZyk7XG5cbiAgICAvLyB0aGlzLmNyZWF0ZU90aGVyQ29tcG9uZW50Vmlldy5lbWl0KHRoaXMudGFibGVfY29sdW1uc19jb25maWcpO1xuICAgIC8vIHRoaXMudGFibGVfY29sdW1uc19jb25maWcua3BpQ29uZmlnWydkYXRhU291cmNlJ109IHRoaXMuZGF0YVNvdXJzZUZvclRhYmxlO1xuICAgIC8vIHRoaXMuY2hhcnREYXRhU291cmNlRm9yTWFwID0gdGhpcy50YWJsZV9jb2x1bW5zX2NvbmZpZztcblxuICB9XG5cbiAgZGVsZXRlQXNzb2NpYXRlZFBhcmFtcyhpbmRleCkge1xuICAgIHRoaXMub3B0aW9uYWxEcmlsRG93bkRhdGFTb3VyY2Uuc3BsaWNlKGluZGV4LCAxKVxuICB9XG5cbiAgYWRkQXNzb2NpYXRlZFBhcmFtcygpIHtcbiAgICB0aGlzLm9wdGlvbmFsRHJpbERvd25EYXRhU291cmNlLnB1c2goe1xuICAgICAgJ3ZpZXdJZCc6IFwiXCIsXG4gICAgICAnZmlsdGVyQ29uZGl0aW9uJzogXCJcIlxuICAgIH0pXG4gIH1cblxuICBnZXRTZWxlY3RlZEV2ZW50VHlwZShlKSB7XG5cbiAgICBpZiAoZS5ldmVudCkge1xuICAgICAgdGhpcy5vcHRpb25hbERyaWxEb3duRGF0YVNvdXJjZSA9IFtdO1xuICAgICAgaWYgKHRoaXMudmlld1Byb3BlcnRpZXMuY2xpY2tFdmVudE9wdGlvbnMuZXZlbnRUeXBlID09ICdkcmlsbGRvd24nKSB7XG4gICAgICAgIHRoaXMudGFibGVfY29sdW1uc19jb25maWcua3BpQ29uZmlnWyd2aWV3UHJvcGVydGllcyddWydhc3NvY2lhdGVkVmlld3MnXSA9IFtdO1xuICAgICAgfVxuICAgIH1cblxuXG4gIH1cblxuICByZXNldFZpZXdQcm9wcnN0aXNlKCkge1xuICAgIHRoaXMudmlld1Byb3BlcnRpZXMgPSB7XG4gICAgICBlbmFibGVDbGlja0V2ZW50OiBmYWxzZSxcbiAgICAgIGVuYWJsZVJpZ2h0Q2xpY2tFdmVudDogdHJ1ZSxcbiAgICAgIGNsaWNrRXZlbnRPcHRpb25zOiB7XG4gICAgICAgIGFzc29jaWF0ZWRWaWV3czogW10sXG4gICAgICAgIGV2ZW50VHlwZTogXCJcIlxuICAgICAgfVxuICAgIH07XG4gIH1cblxuICBhZGRDb2xvcigpIHtcbiAgICB0aGlzLnRhYmxlRGF0YUNvbmZpZy5jb2xvcnMucHVzaCgnIzAwMDAwMCcpOyAvLyBBZGQgZGVmYXVsdCBjb2xvclxuICB9XG5cbiAgcmVtb3ZlQ29sb3IoaW5kZXg6IG51bWJlcikge1xuICAgIHRoaXMudGFibGVEYXRhQ29uZmlnLmNvbG9ycy5zcGxpY2UoaW5kZXgsIDEpO1xuICB9XG5cbiAgb25Db2xvckNoYW5nZSh2YWx1ZTogc3RyaW5nLCBpbmRleDogbnVtYmVyKSB7XG4gICAgdGhpcy50YWJsZURhdGFDb25maWcuY29sb3JzW2luZGV4XSA9IHZhbHVlOyAvLyBVcGRhdGUgY29sb3IgYXQgaW5kZXhcbiAgfVxuXG4gIHZpZXdNYXBGb3JUZXN0KCkge1xuICAgIGlmICh0aGlzLm1hcFR5cGUgPT0gJ2dlb01hcCcpIHtcbiAgICAgIHRoaXMudGFibGVfY29sdW1uc19jb25maWcua3BpQ29uZmlnWydkYXRhQ29uZmlnJ10gPSB0aGlzLnRhYmxlRGF0YUNvbmZpZztcbiAgICAgIHRoaXMudGFibGVfY29sdW1uc19jb25maWcua3BpQ29uZmlnWydkYXRhQ29uZmlnJ11bJ21hcFR5cGUnXSA9IHRoaXMubWFwVHlwZTtcbiAgICB9IGVsc2UgaWYgKHRoaXMubWFwVHlwZSA9PSAnYnViYmxlTWFwJykge1xuICAgICAgdGhpcy50YWJsZV9jb2x1bW5zX2NvbmZpZy5rcGlDb25maWdbJ2RhdGFDb25maWcnXSA9IHRoaXMuYnViYmxlTWFwQ29uZmlnO1xuICAgICAgdGhpcy50YWJsZV9jb2x1bW5zX2NvbmZpZy5rcGlDb25maWdbJ2RhdGFDb25maWcnXVsnY2hhcnRfY29uZmlnJ10gPSB0aGlzLnRhYmxlRGF0YUNvbmZpZy5jaGFydF9jb25maWc7XG4gICAgICB0aGlzLnRhYmxlX2NvbHVtbnNfY29uZmlnLmtwaUNvbmZpZ1snZGF0YUNvbmZpZyddWydtYXBUeXBlJ10gPSB0aGlzLm1hcFR5cGU7XG4gICAgfSBlbHNlIGlmICh0aGlzLm1hcFR5cGUgPT0gJ2Nob3JvcGxldGhNYXAnKSB7XG4gICAgICB0aGlzLnRhYmxlX2NvbHVtbnNfY29uZmlnLmtwaUNvbmZpZ1snZGF0YUNvbmZpZyddID0gdGhpcy5jaG9yb3BsZXRoTWFwQ29uZmlnO1xuICAgICAgdGhpcy50YWJsZV9jb2x1bW5zX2NvbmZpZy5rcGlDb25maWdbJ2RhdGFDb25maWcnXVsnY2hhcnRfY29uZmlnJ10gPSB0aGlzLnRhYmxlRGF0YUNvbmZpZy5jaGFydF9jb25maWc7XG4gICAgICB0aGlzLnRhYmxlX2NvbHVtbnNfY29uZmlnLmtwaUNvbmZpZ1snZGF0YUNvbmZpZyddWydtYXBUeXBlJ10gPSB0aGlzLm1hcFR5cGU7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgdGhpcy50YWJsZV9jb2x1bW5zX2NvbmZpZy5rcGlDb25maWdbJ2RhdGFDb25maWcnXSA9IHRoaXMuaGVhdE1hcENvbmZpZztcbiAgICAgIHRoaXMudGFibGVfY29sdW1uc19jb25maWcua3BpQ29uZmlnWydkYXRhQ29uZmlnJ11bJ2NoYXJ0X2NvbmZpZyddID0gdGhpcy50YWJsZURhdGFDb25maWcuY2hhcnRfY29uZmlnO1xuICAgICAgdGhpcy50YWJsZV9jb2x1bW5zX2NvbmZpZy5rcGlDb25maWdbJ2RhdGFDb25maWcnXVsnbWFwVHlwZSddID0gdGhpcy5tYXBUeXBlO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnZpZXdQcm9wZXJ0aWVzLmNsaWNrRXZlbnRPcHRpb25zLmV2ZW50VHlwZSA9PSAnb3B0aW9uYWxEcmlsbERvd24nKSB7XG4gICAgICB0aGlzLnZpZXdQcm9wZXJ0aWVzWydjbGlja0V2ZW50T3B0aW9ucyddWydhc3NvY2lhdGVkVmlld3MnXSA9IHRoaXMub3B0aW9uYWxEcmlsRG93bkRhdGFTb3VyY2U7XG4gICAgfVxuXG4gICAgdGhpcy50YWJsZV9jb2x1bW5zX2NvbmZpZy5rcGlDb25maWdbJ3ZpZXdQcm9wZXJ0aWVzJ10gPSB0aGlzLnZpZXdQcm9wZXJ0aWVzO1xuXG4gICAgdGhpcy50YWJsZV9jb2x1bW5zX2NvbmZpZy5rcGlDb25maWdbJ2RhdGFTb3VyY2UnXSA9IHRoaXMuZGF0YVNvdXJzZUZvclRhYmxlO1xuICAgIHRoaXMuY2hhcnREYXRhU291cmNlRm9yTWFwID0gdGhpcy50YWJsZV9jb2x1bW5zX2NvbmZpZztcblxuICAgIHRoaXMuaXNKc29uUHJldmlldyA9IHRydWU7XG5cbiAgfVxuXG4gIGhlYXRNYXBDYXRlZ29yeShlKSB7XG4gICAgdGhpcy5oZWF0TWFwQ29uZmlnLmhlYXRNYXBDYXRlZ29yeSA9IGUudmFsdWU7XG4gIH1cblxuICBjaGFuZ2VNYXBUeXBlKGV2ZW50KSB7XG4gICAgaWYgKGV2ZW50LmV2ZW50KSB7XG4gICAgICB0aGlzLmhlYXRNYXBDb25maWcuaGVhdE1hcENhdGVnb3J5ID0gJyc7XG4gICAgfVxuICB9XG5cblxuXG4gIG9uTGF0TG5nS2V5Q2hhbmdlKGV2ZW50KSB7XG4gICAgY29uc3QgeyBsYXRLZXksIGxuZ0tleSB9ID0gdGhpcy5jZW50YXJMYWl0bmdPYmplY3Q7XG5cbiAgICBpZiAoIWxhdEtleSB8fCAhbG5nS2V5KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5jYWxjdWxhdGVDZW50ZXJGcm9tRGF0YXNvdXJjZSgpO1xuICB9XG5cbiAgY2FsY3VsYXRlQ2VudGVyRnJvbURhdGFzb3VyY2UoKSB7XG4gICAgY29uc3QgbGF0S2V5ID0gdGhpcy5jZW50YXJMYWl0bmdPYmplY3QubGF0S2V5O1xuICAgIGNvbnN0IGxuZ0tleSA9IHRoaXMuY2VudGFyTGFpdG5nT2JqZWN0LmxuZ0tleTtcblxuICAgIGlmICghbGF0S2V5IHx8ICFsbmdLZXkgfHwgIXRoaXMuZGF0YVNvdXJzZUZvclRhYmxlPy5sZW5ndGgpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsZXQgbWluTGF0ID0gSW5maW5pdHk7XG4gICAgbGV0IG1heExhdCA9IC1JbmZpbml0eTtcbiAgICBsZXQgbWluTG5nID0gSW5maW5pdHk7XG4gICAgbGV0IG1heExuZyA9IC1JbmZpbml0eTtcblxuICAgIHRoaXMuZGF0YVNvdXJzZUZvclRhYmxlLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICBjb25zdCBsYXQgPSBOdW1iZXIoaXRlbVtsYXRLZXldKTtcbiAgICAgIGNvbnN0IGxuZyA9IE51bWJlcihpdGVtW2xuZ0tleV0pO1xuXG4gICAgICBpZiAoIWlzTmFOKGxhdCkgJiYgIWlzTmFOKGxuZykpIHtcbiAgICAgICAgbWluTGF0ID0gTWF0aC5taW4obWluTGF0LCBsYXQpO1xuICAgICAgICBtYXhMYXQgPSBNYXRoLm1heChtYXhMYXQsIGxhdCk7XG4gICAgICAgIG1pbkxuZyA9IE1hdGgubWluKG1pbkxuZywgbG5nKTtcbiAgICAgICAgbWF4TG5nID0gTWF0aC5tYXgobWF4TG5nLCBsbmcpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3QgY2VudGVyTGF0ID0gKG1pbkxhdCArIG1heExhdCkgLyAyO1xuICAgIGNvbnN0IGNlbnRlckxuZyA9IChtaW5MbmcgKyBtYXhMbmcpIC8gMjtcblxuICAgIC8vIOKchSBzdG9yZSBhcyBTVFJJTkdcbiAgICB0aGlzLmNob3JvcGxldGhNYXBDb25maWdbJ2NlbnRlckxhdCddID0gY2VudGVyTGF0LnRvRml4ZWQoNik7XG4gICAgdGhpcy5jaG9yb3BsZXRoTWFwQ29uZmlnWydjZW50ZXJMbmcnXSA9IGNlbnRlckxuZy50b0ZpeGVkKDYpO1xuICB9XG5cblxuXG5cblxuICAvLyBkYXRhIGFnZ3JlZ2F0aW9uIGNvZGVcblxuICBkYXRhQWdncmVnYXRpb25Db250YWluZXIgPSBbXTtcbiAgZGF0YUFnZ3JlZ2F0ZUdyb3VwQnlDb2x1bWU6IGFueSA9IFtdO1xuICBhZGRBZ2dyZWdhdGlvbkNvbHVtZSgpIHtcbiAgICB0aGlzLmRhdGFBZ2dyZWdhdGlvbkNvbnRhaW5lci5wdXNoKHtcbiAgICAgIGFnZ3JlZ2F0ZURhdGFGaWVsZDogXCJcIixcbiAgICAgIGFnZ3JlZ2F0ZUZ1bmN0aW9uVHlwZTogXCJcIlxuICAgIH0pXG4gIH1cblxuICBkZWxldGVBZ2dyZWdhdGlvbkNvbHVtZShpKSB7XG4gICAgdGhpcy5kYXRhQWdncmVnYXRpb25Db250YWluZXIuc3BsaWNlKGksIDEpXG4gIH1cblxuXG5cbiAgb25EYXRhR3JvdXBCeUNoYW5nZShldmVudDogYW55KSB7XG4gICAgaWYgKHRoaXMuY2hvcm9wbGV0aE1hcENvbmZpZy5pc0RhdGFBZ2dyZWdhdGlvbikge1xuXG4gICAgICB0aGlzLmRhdGFBZ2dyZWdhdGlvbkNvbnRhaW5lci5wdXNoKHtcbiAgICAgICAgYWdncmVnYXRlRGF0YUZpZWxkOiBcIlwiLFxuICAgICAgICBhZ2dyZWdhdGVGdW5jdGlvblR5cGU6IFwiXCJcbiAgICAgIH0pXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZGF0YVNvdXJzZUZvclRhYmxlID0gdGhpcy5wcmV2aWV3RGF0YS5zbGljZSgwLCAxMCk7XG4gICAgICB0aGlzLmNvbmZpZ0NvbHVtZSA9ICh0aGlzLnByZXZpZXdEYXRhWzBdKSA/IE9iamVjdC5rZXlzKHRoaXMucHJldmlld0RhdGFbMF0pIDogW107XG4gICAgfVxuXG4gICAgdGhpcy50YWJsZV9jb2x1bW5zX2NvbmZpZy5rcGlDb25maWdbJ2RhdGFDb25maWcnXSA9IHRoaXMuY2hvcm9wbGV0aE1hcENvbmZpZztcbiAgICB0aGlzLnRhYmxlX2NvbHVtbnNfY29uZmlnLmtwaUNvbmZpZ1snZGF0YUNvbmZpZyddWydjaGFydF9jb25maWcnXSA9IHRoaXMudGFibGVEYXRhQ29uZmlnLmNoYXJ0X2NvbmZpZztcbiAgICB0aGlzLnRhYmxlX2NvbHVtbnNfY29uZmlnLmtwaUNvbmZpZ1snZGF0YUNvbmZpZyddWydtYXBUeXBlJ10gPSB0aGlzLm1hcFR5cGU7XG5cbiAgICB0aGlzLmNoYXJ0RGF0YVNvdXJjZUZvck1hcCA9IHsgLi4udGhpcy50YWJsZV9jb2x1bW5zX2NvbmZpZyB9O1xuICB9XG5cbiAgc2F2ZUFnZ3JlZ2F0aW9uQ29sdW1lKCkge1xuICAgIGlmICh0aGlzLmNob3JvcGxldGhNYXBDb25maWcuaXNEYXRhQWdncmVnYXRpb24pIHtcbiAgICAgIGNvbnN0IGFnZ3JlYXRpb25EYXRhID0gdGhpcy5nZXRHcm91cERhdGFGb3JDaGFydCh0aGlzLnByZXZpZXdEYXRhLCB0aGlzLmRhdGFBZ2dyZWdhdGlvbkNvbnRhaW5lciwgdGhpcy5kYXRhQWdncmVnYXRlR3JvdXBCeUNvbHVtZSk7XG4gICAgICB0aGlzLmRhdGFTb3Vyc2VGb3JUYWJsZSA9IGFnZ3JlYXRpb25EYXRhO1xuICAgICAgdGhpcy5jb25maWdDb2x1bWUgPSAoYWdncmVhdGlvbkRhdGFbMF0pID8gT2JqZWN0LmtleXMoYWdncmVhdGlvbkRhdGFbMF0pIDogW107XG5cbiAgICAgIGlmICh0aGlzLmNob3JvcGxldGhNYXBDb25maWcuaXNEYXRhQWdncmVnYXRpb24pIHtcbiAgICAgICAgdGhpcy5jaG9yb3BsZXRoTWFwQ29uZmlnWydkYXRhQWdncmVnYXRpb25Db25maWcnXSA9IHtcbiAgICAgICAgICBcImRhdGFBZ2dyZWdhdGVDb2x1bWVzXCI6IHRoaXMuZGF0YUFnZ3JlZ2F0aW9uQ29udGFpbmVyLFxuICAgICAgICAgIFwiYWdncmVnYXRlRmllbGRzXCI6IHRoaXMuZGF0YUFnZ3JlZ2F0ZUdyb3VwQnlDb2x1bWVcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjb25zb2xlLmxvZyhhZ2dyZWF0aW9uRGF0YSk7XG4gICAgfVxuICB9XG5cblxuICBnZXRHcm91cERhdGFGb3JDaGFydChkYXRhLCBhZ2dyZWdhdGlvbkNvbmZpZywgZ3JvdXBCeUNvbHVtbnMpIHtcbiAgICBjb25zdCBncm91cE1hcCA9IHt9O1xuXG4gICAgZGF0YS5mb3JFYWNoKHJvdyA9PiB7XG4gICAgICBjb25zdCBncm91cEtleSA9IGdyb3VwQnlDb2x1bW5zLm1hcChjb2wgPT4gcm93W2NvbF0pLmpvaW4oXCJ8fFwiKTtcblxuICAgICAgaWYgKCFncm91cE1hcFtncm91cEtleV0pIHtcbiAgICAgICAgZ3JvdXBNYXBbZ3JvdXBLZXldID0ge307XG5cbiAgICAgICAgZ3JvdXBCeUNvbHVtbnMuZm9yRWFjaChjb2wgPT4ge1xuICAgICAgICAgIGdyb3VwTWFwW2dyb3VwS2V5XVtjb2xdID0gcm93W2NvbF07XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGFnZ3JlZ2F0aW9uQ29uZmlnLmZvckVhY2goKHsgYWdncmVnYXRlRGF0YUZpZWxkLCBhZ2dyZWdhdGVGdW5jdGlvblR5cGUgfSkgPT4ge1xuICAgICAgICAgIHN3aXRjaCAoYWdncmVnYXRlRnVuY3Rpb25UeXBlKSB7XG4gICAgICAgICAgICBjYXNlIFwic3VtXCI6XG4gICAgICAgICAgICBjYXNlIFwiYXZnXCI6XG4gICAgICAgICAgICAgIGdyb3VwTWFwW2dyb3VwS2V5XVthZ2dyZWdhdGVEYXRhRmllbGRdID0gMDtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFwibWluXCI6XG4gICAgICAgICAgICAgIGdyb3VwTWFwW2dyb3VwS2V5XVthZ2dyZWdhdGVEYXRhRmllbGRdID0gSW5maW5pdHk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBcIm1heFwiOlxuICAgICAgICAgICAgICBncm91cE1hcFtncm91cEtleV1bYWdncmVnYXRlRGF0YUZpZWxkXSA9IC1JbmZpbml0eTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFwiY291bnRcIjpcbiAgICAgICAgICAgICAgZ3JvdXBNYXBbZ3JvdXBLZXldW2FnZ3JlZ2F0ZURhdGFGaWVsZF0gPSAwO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoYWdncmVnYXRlRnVuY3Rpb25UeXBlID09PSBcImF2Z1wiKSB7XG4gICAgICAgICAgICBncm91cE1hcFtncm91cEtleV1bYCR7YWdncmVnYXRlRGF0YUZpZWxkfV9fY291bnRgXSA9IDA7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgLy8gQXBwbHkgYWdncmVnYXRpb25zXG4gICAgICBhZ2dyZWdhdGlvbkNvbmZpZy5mb3JFYWNoKCh7IGFnZ3JlZ2F0ZURhdGFGaWVsZCwgYWdncmVnYXRlRnVuY3Rpb25UeXBlIH0pID0+IHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSByb3dbYWdncmVnYXRlRGF0YUZpZWxkXTtcblxuICAgICAgICBzd2l0Y2ggKGFnZ3JlZ2F0ZUZ1bmN0aW9uVHlwZSkge1xuICAgICAgICAgIGNhc2UgXCJzdW1cIjpcbiAgICAgICAgICAgIGdyb3VwTWFwW2dyb3VwS2V5XVthZ2dyZWdhdGVEYXRhRmllbGRdICs9IHZhbHVlO1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICBjYXNlIFwiYXZnXCI6XG4gICAgICAgICAgICBncm91cE1hcFtncm91cEtleV1bYWdncmVnYXRlRGF0YUZpZWxkXSArPSB2YWx1ZTtcbiAgICAgICAgICAgIGdyb3VwTWFwW2dyb3VwS2V5XVtgJHthZ2dyZWdhdGVEYXRhRmllbGR9X19jb3VudGBdICs9IDE7XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgIGNhc2UgXCJtaW5cIjpcbiAgICAgICAgICAgIGdyb3VwTWFwW2dyb3VwS2V5XVthZ2dyZWdhdGVEYXRhRmllbGRdID1cbiAgICAgICAgICAgICAgTWF0aC5taW4oZ3JvdXBNYXBbZ3JvdXBLZXldW2FnZ3JlZ2F0ZURhdGFGaWVsZF0sIHZhbHVlKTtcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgY2FzZSBcIm1heFwiOlxuICAgICAgICAgICAgZ3JvdXBNYXBbZ3JvdXBLZXldW2FnZ3JlZ2F0ZURhdGFGaWVsZF0gPVxuICAgICAgICAgICAgICBNYXRoLm1heChncm91cE1hcFtncm91cEtleV1bYWdncmVnYXRlRGF0YUZpZWxkXSwgdmFsdWUpO1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICBjYXNlIFwiY291bnRcIjpcbiAgICAgICAgICAgIGdyb3VwTWFwW2dyb3VwS2V5XVthZ2dyZWdhdGVEYXRhRmllbGRdICs9IDE7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICAvLyBGaW5hbGl6ZSBhdmVyYWdlc1xuICAgIE9iamVjdC52YWx1ZXMoZ3JvdXBNYXApLmZvckVhY2goZ3JvdXAgPT4ge1xuICAgICAgYWdncmVnYXRpb25Db25maWcuZm9yRWFjaCgoeyBhZ2dyZWdhdGVEYXRhRmllbGQsIGFnZ3JlZ2F0ZUZ1bmN0aW9uVHlwZSB9KSA9PiB7XG4gICAgICAgIGlmIChhZ2dyZWdhdGVGdW5jdGlvblR5cGUgPT09IFwiYXZnXCIpIHtcbiAgICAgICAgICBncm91cFthZ2dyZWdhdGVEYXRhRmllbGRdID1cbiAgICAgICAgICAgIGdyb3VwW2FnZ3JlZ2F0ZURhdGFGaWVsZF0gLyBncm91cFtgJHthZ2dyZWdhdGVEYXRhRmllbGR9X19jb3VudGBdO1xuICAgICAgICAgIGRlbGV0ZSBncm91cFtgJHthZ2dyZWdhdGVEYXRhRmllbGR9X19jb3VudGBdO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIHJldHVybiBPYmplY3QudmFsdWVzKGdyb3VwTWFwKTtcbiAgfVxuXG5cbn1cbiIsIjxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtd3JhcFwiPlxuICAgIDxkaXYgY2xhc3M9XCJ3LWZ1bGwgbXgtMiBib3JkZXItclwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzSnNvblByZXZpZXdcIj5cbiAgICAgICAgICAgIDxwcmU+PGNvZGU+e3tqc2FvbkRhdGFzb3VyY2UgfCBqc29ufX08L2NvZGU+PC9wcmU+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNKc29uUHJldmlld1wiPlxuICAgICAgICAgICAgPGFwcC1nYW1tYS1nZW8tY2hhcnQgW2NoYXJ0RGF0YVNvdXJjZV09XCJjaGFydERhdGFTb3VyY2VGb3JNYXBcIj48L2FwcC1nYW1tYS1nZW8tY2hhcnQ+XG4gICAgICAgICAgICA8IS0tIDxhcHAtZ29vZ2xlLWdlby1tYXAgW2NoYXJ0RGF0YVNvdXJjZV09XCJjaGFydERhdGFTb3VyY2VGb3JNYXBcIj48L2FwcC1nb29nbGUtZ2VvLW1hcD4gLS0+XG5cbiAgICAgICAgICAgIDxkaXYgI2R5bmFtaWNDb250YWluZXI+PC9kaXY+XG5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInctZnVsbCBteC0yXCI+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTQgYm9yZGVyLWIgYm9yZGVyLWdyYXktMjAwIGRhcms6Ym9yZGVyLWdyYXktNzAwXCI+XG4gICAgICAgICAgICA8dWwgY2xhc3M9XCJmbGV4IGZsZXgtd3JhcCAtbWItcHggdGV4dC1zbSBmb250LW1lZGl1bSB0ZXh0LWNlbnRlclwiIHJvbGU9XCJ0YWJsaXN0XCI+XG4gICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwibWUtMlwiIHJvbGU9XCJwcmVzZW50YXRpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImlubGluZS1ibG9jayBwLTQgYm9yZGVyLWItMiByb3VuZGVkLXQtbGdcIiBbbmdDbGFzc109XCJ7IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXh0LXB1cnBsZS02MDAgYm9yZGVyLXB1cnBsZS02MDAgZGFyazp0ZXh0LXB1cnBsZS01MDAgZGFyazpib3JkZXItcHVycGxlLTUwMCc6IGFjdGl2ZVRhYiA9PT0gJ2Jhc2ljJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGV4dC1ncmF5LTUwMCBkYXJrOnRleHQtZ3JheS00MDAgYm9yZGVyLXRyYW5zcGFyZW50JzogYWN0aXZlVGFiICE9PSAnYmFzaWMnIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiIChjbGljayk9XCJzZXRBY3RpdmVUYWIoJ2Jhc2ljJylcIiB0eXBlPVwiYnV0dG9uXCIgcm9sZT1cInRhYlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgQmFzaWNcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJtZS0yXCIgcm9sZT1cInByZXNlbnRhdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiaW5saW5lLWJsb2NrIHAtNCBib3JkZXItYi0yIHJvdW5kZWQtdC1sZ1wiIFtuZ0NsYXNzXT1cInsgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RleHQtcHVycGxlLTYwMCBib3JkZXItcHVycGxlLTYwMCBkYXJrOnRleHQtcHVycGxlLTUwMCBkYXJrOmJvcmRlci1wdXJwbGUtNTAwJzogYWN0aXZlVGFiID09PSAnY2hhcnRfY29uZmlnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGV4dC1ncmF5LTUwMCBkYXJrOnRleHQtZ3JheS00MDAgYm9yZGVyLXRyYW5zcGFyZW50JzogYWN0aXZlVGFiICE9PSAnY2hhcnRfY29uZmlnJyBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIiAoY2xpY2spPVwic2V0QWN0aXZlVGFiKCdjaGFydF9jb25maWcnKVwiIHR5cGU9XCJidXR0b25cIiByb2xlPVwidGFiXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBDaGFydCBDb2x1bW5zXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwibWUtMlwiIHJvbGU9XCJwcmVzZW50YXRpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImlubGluZS1ibG9jayBwLTQgYm9yZGVyLWItMiByb3VuZGVkLXQtbGdcIiBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXh0LXB1cnBsZS02MDAgYm9yZGVyLXB1cnBsZS02MDAgZGFyazp0ZXh0LXB1cnBsZS01MDAgZGFyazpib3JkZXItcHVycGxlLTUwMCc6IGFjdGl2ZVRhYiA9PT0gJ3Byb3BlcnRpZXMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGV4dC1ncmF5LTUwMCBkYXJrOnRleHQtZ3JheS00MDAgYm9yZGVyLXRyYW5zcGFyZW50JzogYWN0aXZlVGFiICE9PSAncHJvcGVydGllcydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCIgKGNsaWNrKT1cInNldEFjdGl2ZVRhYigncHJvcGVydGllcycpXCIgdHlwZT1cImJ1dHRvblwiIHJvbGU9XCJ0YWJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIFByb3BlcnRpZXNcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJtZS0yXCIgcm9sZT1cInByZXNlbnRhdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiaW5saW5lLWJsb2NrIHAtNCBib3JkZXItYi0yIHJvdW5kZWQtdC1sZ1wiIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGV4dC1wdXJwbGUtNjAwIGJvcmRlci1wdXJwbGUtNjAwIGRhcms6dGV4dC1wdXJwbGUtNTAwIGRhcms6Ym9yZGVyLXB1cnBsZS01MDAnOiBhY3RpdmVUYWIgPT09ICdwZXJtaXNzaW9uJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGV4dC1ncmF5LTUwMCBkYXJrOnRleHQtZ3JheS00MDAgYm9yZGVyLXRyYW5zcGFyZW50JzogYWN0aXZlVGFiICE9PSAncGVybWlzc2lvbidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIiAoY2xpY2spPVwic2V0QWN0aXZlVGFiKCdwZXJtaXNzaW9uJylcIiB0eXBlPVwiYnV0dG9uXCIgcm9sZT1cInRhYlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgTWFuYWdlIFBlcm1pc3Npb25zXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvbGk+XG5cbiAgICAgICAgICAgIDwvdWw+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgaWQ9XCJkZWZhdWx0LXN0eWxlZC10YWItY29udGVudFwiPlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cImFjdGl2ZVRhYiA9PT0gJ2Jhc2ljJ1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGZsZXgtYXV0byBtaW4tdy0wIG15LTJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtc20gcHktMSBmb250LWV4dHJhYm9sZCBib3JkZXItYiBiZy1ncmF5LTcwMCB0ZXh0LXdoaXRlIHB4LTJcIj4gRmlsdGVyIFRpdGxlXG4gICAgICAgICAgICAgICAgICAgICAgICBDb25maWdcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IHB0LTIgYm9yZGVyLXggYm9yZGVyLWJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0xIG1iLTEgdy0xLzNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tZCBtYi0xXCI+IE1hcCBMaWJyYXJ5IDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkeC1zZWxlY3QtYm94IFtzZWFyY2hFbmFibGVkXT1cInRydWVcIiBbaXRlbXNdPVwiWydHb29nbGUgTWFwcyddXCI+PC9keC1zZWxlY3QtYm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMSBtYi0xIHctMS8zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbWQgbWItMVwiPiBTZWxlY3QgTWFwIHR5cGUgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR4LXNlbGVjdC1ib3ggW3NlYXJjaEVuYWJsZWRdPVwidHJ1ZVwiIFtpdGVtc109XCJjaGFydFZpZXdUeXBlRGF0YVNvdXJjZVwiIGRpc3BsYXlFeHByPVwibmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlRXhwcj1cInZhbHVlXCIgWyhuZ01vZGVsKV09XCJtYXBUeXBlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9uVmFsdWVDaGFuZ2VkKT1cImNoYW5nZU1hcFR5cGUoJGV2ZW50KVwiPjwvZHgtc2VsZWN0LWJveD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibWFwVHlwZSA9PSAnaGVhdE1hcCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMSBtYi0xIHctMS8zXCI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbWQgbWItMVwiPiBIZWF0IE1hcCBDYXRlZ29yeSA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR4LXNlbGVjdC1ib3ggW3NlYXJjaEVuYWJsZWRdPVwidHJ1ZVwiIFtkYXRhU291cmNlXT1cImhlYXRNYXBUeXBlRGF0YXNvdXJjZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5RXhwcj1cIm5hbWVcIiB2YWx1ZUV4cHI9XCJ2YWx1ZVwiIFsobmdNb2RlbCldPVwiaGVhdE1hcENvbmZpZy5oZWF0TWFwQ2F0ZWdvcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9uVmFsdWVDaGFuZ2VkKT1cImhlYXRNYXBDYXRlZ29yeSgkZXZlbnQpXCI+PC9keC1zZWxlY3QtYm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibWFwVHlwZSA9PSAnZ2VvTWFwJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggcHQtMiBib3JkZXIteCBib3JkZXItYlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0xIG1iLTEgdy0xLzNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbWQgbWItMVwiPiBSZWdpb24gPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkeC1zZWxlY3QtYm94IFtzZWFyY2hFbmFibGVkXT1cInRydWVcIiBbaXRlbXNdPVwicmVnaW9uRGF0YVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInRhYmxlRGF0YUNvbmZpZy5yZWdpb25cIj48L2R4LXNlbGVjdC1ib3g+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB4LTEgbWItMSB3LTEvM1wiICpuZ0lmPVwidGFibGVEYXRhQ29uZmlnLnJlZ2lvbiA9PSAnY2l0eSdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbWQgbWItMVwiPiBUeXBlIFJlZ2lvbiBDb2RlPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkeC10ZXh0LWJveCBbKG5nTW9kZWwpXT1cInRhYmxlRGF0YUNvbmZpZy5yZWdpb25Db2RlXCI+PC9keC10ZXh0LWJveD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB0LTIgYm9yZGVyLXggYm9yZGVyLWIgXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm15LTIgZmxleCBqdXN0aWZ5LWJldHdlZW5cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwicHgtMSBtYi0xIHctZnVsbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbWQgbWItMVwiPiBUaXRsZTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR4LXRleHQtYm94IFsobmdNb2RlbCldPVwidGFibGVEYXRhQ29uZmlnLnRpdGxlXCI+PC9keC10ZXh0LWJveD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMSBtYi0xIHctZnVsbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbWQgbWItMVwiPiBBcmd1bWVudCBGaWVsZDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR4LXNlbGVjdC1ib3ggW3NlYXJjaEVuYWJsZWRdPVwidHJ1ZVwiIFtpdGVtc109XCJjb25maWdDb2x1bWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwidGFibGVEYXRhQ29uZmlnLmFyZ3VtZW50RmllbGRcIj48L2R4LXNlbGVjdC1ib3g+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMSBtYi0xIHctZnVsbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbWQgbWItMVwiPiBDaGFydHZhbHUgRmllbGQ8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkeC1zZWxlY3QtYm94IFtzZWFyY2hFbmFibGVkXT1cInRydWVcIiBbaXRlbXNdPVwiY29uZmlnQ29sdW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInRhYmxlRGF0YUNvbmZpZy5jaGFydFZhbHVlRmllbGRcIj48L2R4LXNlbGVjdC1ib3g+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMSBtYi0xIHctZnVsbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbWQgbWItMVwiPiBzaXplPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHgtdGV4dC1ib3ggWyhuZ01vZGVsKV09XCJ0YWJsZURhdGFDb25maWcuc2l6ZVwiPjwvZHgtdGV4dC1ib3g+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0xIG1iLTIgdy1mdWxsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tZCBtYi0yXCI+QmFja2dyb3VuZCBDb2xvcjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR4LWNvbG9yLWJveCBbKG5nTW9kZWwpXT1cInRhYmxlRGF0YUNvbmZpZy5iYWNrZ3JvdW5kQ29sb3JcIj48L2R4LWNvbG9yLWJveD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cInB4LTQgbXQtNiB3LWZ1bGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkeC1jaGVjay1ib3ggW3ZhbHVlXT1cInRhYmxlRGF0YUNvbmZpZy5jb21tb25Db25maWcuaXNTZWFyY2hCb3hcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwidGFibGVEYXRhQ29uZmlnLmNvbW1vbkNvbmZpZy5pc1NlYXJjaEJveFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dD1cIlNlYXJjaCBCb3hcIj48L2R4LWNoZWNrLWJveD5cbiAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMSBtYi0xIHctZnVsbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbWQgbWItMlwiPiBEaXNwbGF5IEZvcm1hdGUgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHgtc2VsZWN0LWJveCBbaXRlbXNdPVwiWydkYWlseScsJ2hvdXJseScsJ21vbnRobHknXVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJ0YWJsZV9jb2x1bW5zX2NvbmZpZy5rcGlDb25maWcuZm9ybWF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRPbmx5XT1cImZhbHNlXCI+PC9keC1zZWxlY3QtYm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB4LTEgbWItMSB3LWZ1bGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIG1iLTJcIj4gS2V5IFRvIFBhc3MgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHgtdGFnLWJveCBbaXRlbXNdPVwiY29uZmlnQ29sdW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInRhYmxlX2NvbHVtbnNfY29uZmlnLmtwaUNvbmZpZy5rZXlUb1Bhc3NcIj48L2R4LXRhZy1ib3g+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiIHB0LTIgYm9yZGVyLXggYm9yZGVyLWIgXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtc20gcHktMSBmb250LWV4dHJhYm9sZCBib3JkZXItYiBiZy1ncmF5LTcwMCB0ZXh0LXdoaXRlIHB4LTJcIj4gQ29sb3JzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggIGZsZXgtd3JhcCBweC0xIG1iLTIgbXQtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBtci0yIG1iLTJcIiAqbmdGb3I9XCJsZXQgY29sb3Igb2YgdGFibGVEYXRhQ29uZmlnLmNvbG9yczsgbGV0IGkgPSBpbmRleFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1yLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHgtY29sb3ItYm94IFsobmdNb2RlbCldPVwidGFibGVEYXRhQ29uZmlnLmNvbG9yc1tpXVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvblZhbHVlQ2hhbmdlZCk9XCJvbkNvbG9yQ2hhbmdlKCRldmVudC52YWx1ZSwgaSlcIj48L2R4LWNvbG9yLWJveD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInt7Y29tbW9uU2VydmljZS5idG5fZGFuZ2VyX3NtfX0gY3Vyc29yLXBvaW50ZXIgcHgtMlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZUNvbG9yKGkpXCI+PGkgY2xhc3M9XCJmYSBmYS10cmFzaC1vXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJweC0yXCI+IDxidXR0b24gY2xhc3M9XCJ7e2NvbW1vblNlcnZpY2UuYnRuX2Rhbmdlcl9zbX19XCIgKGNsaWNrKT1cInJlbW92ZUNvbG9yKGkpXCI+UmVtb3ZlPC9idXR0b24+PC9kaXY+IC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGp1c3RpZnktZW5kIG15LTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInt7Y29tbW9uU2VydmljZS5idG5fc3VjY2Vzc19zbX19XCIgKGNsaWNrKT1cImFkZENvbG9yKClcIj5BZGQgQ29sb3I8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm1hcFR5cGUgPT0gJ2Nob3JvcGxldGhNYXAnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBwdC0yIGJvcmRlci14IGJvcmRlci1iXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB4LTEgbWItMSB3LTEvM1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tZCBtYi0xXCI+IE1hcCBab29tIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHgtdGV4dC1ib3ggWyhuZ01vZGVsKV09XCJjaG9yb3BsZXRoTWFwQ29uZmlnLnpvb21cIj48L2R4LXRleHQtYm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0xIG1iLTIgbXQtNiB3LWZ1bGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR4LWNoZWNrLWJveCBbKG5nTW9kZWwpXT1cImlzQ2VudGVyZENob3JvcGxldGhNYXBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dD1cIkNlbnRlcmQgUG9zaXRpb25cIj48L2R4LWNoZWNrLWJveD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc0NlbnRlcmRDaG9yb3BsZXRoTWFwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0xIG1iLTEgdy0xLzNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIG1iLTFcIj4gU2VsZWN0IExhdGl0dWRlIEtleTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR4LXNlbGVjdC1ib3ggW3NlYXJjaEVuYWJsZWRdPVwidHJ1ZVwiIFtpdGVtc109XCJjb25maWdDb2x1bWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY2VudGFyTGFpdG5nT2JqZWN0LmxhdEtleVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9uVmFsdWVDaGFuZ2VkKT1cIm9uTGF0TG5nS2V5Q2hhbmdlKCRldmVudClcIj48L2R4LXNlbGVjdC1ib3g+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMSBtYi0xIHctMS8zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tZCBtYi0xXCI+IFNlbGVjdCBMb25naXR1ZGUgS2V5PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHgtc2VsZWN0LWJveCBbc2VhcmNoRW5hYmxlZF09XCJ0cnVlXCIgW2l0ZW1zXT1cImNvbmZpZ0NvbHVtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjZW50YXJMYWl0bmdPYmplY3QubG5nS2V5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob25WYWx1ZUNoYW5nZWQpPVwib25MYXRMbmdLZXlDaGFuZ2UoJGV2ZW50KVwiPjwvZHgtc2VsZWN0LWJveD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0xIG1iLTEgdy0xLzNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbWQgbWItMVwiPiBNYXAgQ2VudGVyIExhdGl0dWRlPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkeC10ZXh0LWJveCBbKG5nTW9kZWwpXT1cImNob3JvcGxldGhNYXBDb25maWcuY2VudGVyTGF0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZWFkT25seV09XCJpc0NlbnRlcmRDaG9yb3BsZXRoTWFwXCI+PC9keC10ZXh0LWJveD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMSBtYi0xIHctMS8zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIG1iLTFcIj4gTWFwIENlbnRlciBMb25naXR1ZGU8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR4LXRleHQtYm94IFsobmdNb2RlbCldPVwiY2hvcm9wbGV0aE1hcENvbmZpZy5jZW50ZXJMbmdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRPbmx5XT1cImlzQ2VudGVyZENob3JvcGxldGhNYXBcIj48L2R4LXRleHQtYm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB0LTIgYm9yZGVyLXggYm9yZGVyLWIgXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm15LTIgZmxleCBmbGV4LXJvdyBqdXN0aWZ5LWJldHdlZW5cIj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMSBtYi0xIHctZnVsbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbWQgbWItMVwiPiBBcmd1bWVudCBGaWVsZDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR4LXNlbGVjdC1ib3ggW3NlYXJjaEVuYWJsZWRdPVwidHJ1ZVwiIFtpdGVtc109XCJjb25maWdDb2x1bWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY2hvcm9wbGV0aE1hcENvbmZpZy5hcmd1bWVudEZpZWxkXCI+PC9keC1zZWxlY3QtYm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMSBtYi0xIHctZnVsbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbWQgbWItMVwiPiBzaXplPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHgtdGV4dC1ib3ggWyhuZ01vZGVsKV09XCJjaG9yb3BsZXRoTWFwQ29uZmlnLnNpemVcIj48L2R4LXRleHQtYm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMSBtYi0yIHctZnVsbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbWQgbWItMlwiPkNvbG9yIE9uZTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR4LWNvbG9yLWJveCBbKG5nTW9kZWwpXT1cImNob3JvcGxldGhNYXBDb25maWcuY29sb3JPbmVcIj48L2R4LWNvbG9yLWJveD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB4LTEgbWItMiB3LWZ1bGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIG1iLTJcIj5Db2xvciBUd288L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkeC1jb2xvci1ib3ggWyhuZ01vZGVsKV09XCJjaG9yb3BsZXRoTWFwQ29uZmlnLmNvbG9yVHdvXCI+PC9keC1jb2xvci1ib3g+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB4LTEgbWItMSB3LWZ1bGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIG1iLTJcIj4gRGlzcGxheSBGb3JtYXRlIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR4LXNlbGVjdC1ib3ggW2l0ZW1zXT1cIlsnZGFpbHknLCdob3VybHknLCdtb250aGx5J11cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwidGFibGVfY29sdW1uc19jb25maWcua3BpQ29uZmlnLmZvcm1hdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZWFkT25seV09XCJmYWxzZVwiPjwvZHgtc2VsZWN0LWJveD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0xIG1iLTEgdy1mdWxsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tZCBtYi0yXCI+IEtleSBUbyBQYXNzIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR4LXRhZy1ib3ggW2l0ZW1zXT1cImNvbmZpZ0NvbHVtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJ0YWJsZV9jb2x1bW5zX2NvbmZpZy5rcGlDb25maWcua2V5VG9QYXNzXCI+PC9keC10YWctYm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJteS0yIGZsZXgtcm93IGp1c3RpZnktYmV0d2VlblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMSBtYi0xIHctZnVsbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbWQgbWItMVwiPiBHanNvbiBGaWxlIFBhdGg8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkeC10ZXh0LWJveCBbKG5nTW9kZWwpXT1cImNob3JvcGxldGhNYXBDb25maWcuZ2pzb25GaWxlUGF0aFwiPjwvZHgtdGV4dC1ib3g+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm15LTIgZmxleCBmbGV4LXJvdyBqdXN0aWZ5LWJldHdlZW5cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB4LTEgbWItMiBtdC02IHctZnVsbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR4LWNoZWNrLWJveCBbKG5nTW9kZWwpXT1cImNob3JvcGxldGhNYXBDb25maWcuaXNWYWx1ZUZpZWxkUmFuZ2VTbGlkZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ9XCJSYW5nZSBTbGlkZXJcIj48L2R4LWNoZWNrLWJveD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0xIG1iLTEgdy1mdWxsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tZCBtYi0xXCI+IFNsaWRlciBTcGVlZDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR4LW51bWJlci1ib3ggWyhuZ01vZGVsKV09XCJjaG9yb3BsZXRoTWFwQ29uZmlnLnNsaWRlU3BlZWRcIj48L2R4LW51bWJlci1ib3g+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMSBtYi0xIHctZnVsbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbWQgbWItMVwiPiBWYWx1ZSBGb3IgU2xpZGVyPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHgtc2VsZWN0LWJveCBbc2VhcmNoRW5hYmxlZF09XCJ0cnVlXCIgW2l0ZW1zXT1cImNvbmZpZ0NvbHVtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjaG9yb3BsZXRoTWFwQ29uZmlnLnNsaWRlclZhbHVlRmllbGRcIj48L2R4LXNlbGVjdC1ib3g+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LTEvNCBweC0yIG0tM1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIG1iLTEgbXQtOFwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkeC1jaGVjay1ib3ggWyhuZ01vZGVsKV09XCJjaG9yb3BsZXRoTWFwQ29uZmlnLmlzRGF0YUFnZ3JlZ2F0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25EYXRhR3JvdXBCeUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dD1cIkFwcGx5IERhdGEgQWdncmVnYXRpb25cIj48L2R4LWNoZWNrLWJveD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCByb3VuZGVkIGJvcmRlciBwLTMgbS02XCIgKm5nSWY9XCJjaG9yb3BsZXRoTWFwQ29uZmlnLmlzRGF0YUFnZ3JlZ2F0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB4LTEgbXktNCB3LTEvM1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tZCBtYi0yXCI+R3JvdXAgQnkgQ29sdW1uczwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHgtdGFnLWJveCBbc2VhcmNoRW5hYmxlZF09XCJ0cnVlXCIgW2l0ZW1zXT1cImNvbmZpZ0NvbHVtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImRhdGFBZ2dyZWdhdGVHcm91cEJ5Q29sdW1lXCI+PC9keC10YWctYm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJib3JkZXIgcC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJteS0yIGZsZXggZmxleC1yb3cgYm9yZGVyLWJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZGF0YUFnZ3JlZ2F0aW9uQ29udGFpbmVyOyBsZXQgaSA9IGluZGV4XCI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0xIG1iLTEgdy1mdWxsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbWQgbWItMlwiPkFnZ3JlZ2F0aW9uIENvbHVtbnM8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHgtc2VsZWN0LWJveCBbc2VhcmNoRW5hYmxlZF09XCJ0cnVlXCIgW2l0ZW1zXT1cImNvbmZpZ0NvbHVtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiaXRlbS5hZ2dyZWdhdGVEYXRhRmllbGRcIj48L2R4LXNlbGVjdC1ib3g+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCIgcHgtMiBtYi0xIHctZnVsbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIG1iLTJcIj5GdW5jdGlvbiBUeXBlPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR4LXNlbGVjdC1ib3ggW3NlYXJjaEVuYWJsZWRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpdGVtc109XCJbJ3N1bScsJ2F2ZycsJ21pbicsJ21heCcsJ2NvdW50J11cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cIml0ZW0uYWdncmVnYXRlRnVuY3Rpb25UeXBlXCI+PC9keC1zZWxlY3QtYm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlciBtdC02IHctMS82XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInt7Y29tbW9uU2VydmljZS5idG5fZGFuZ2VyX3NtfX0gY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZGVsZXRlQWdncmVnYXRpb25Db2x1bWUoaSlcIj48aSBjbGFzcz1cImZhIGZhLXRyYXNoLW9cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBqdXN0aWZ5LWVuZCBteS0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwie3tjb21tb25TZXJ2aWNlLmJ0bl9wcmltYXJ5X3NtfX0gY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhZGRBZ2dyZWdhdGlvbkNvbHVtZSgpXCI+QWRkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1lPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwie3tjb21tb25TZXJ2aWNlLmJ0bl9zdWNjZXNzX3NtfX0gY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzYXZlQWdncmVnYXRpb25Db2x1bWUoKVwiPlNhdmUgQWdncmVnYXRpb248L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaGVhdE1hcENvbmZpZy5oZWF0TWFwQ2F0ZWdvcnkgPT0gJ2hlYXRNYXBPbmx5JyB8fCBoZWF0TWFwQ29uZmlnLmhlYXRNYXBDYXRlZ29yeSA9PSAnaGVhdE1hcE1hcmtlcicgfHwgaGVhdE1hcENvbmZpZy5oZWF0TWFwQ2F0ZWdvcnkgPT0gJ2hlYXRNYXBBbmRNYXJrZXInXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleC1jb2xcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1zbSBweS0xIGZvbnQtZXh0cmFib2xkIGJvcmRlci1iIGJnLWdyYXktNzAwIHRleHQtd2hpdGUgcHgtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDZW50ZXIgTG9jYXRpb24gQ29uZmlnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggcHQtMiBib3JkZXIteCBib3JkZXItYlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwicHgtMSBtYi0xIHctMS80XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbWQgbWItMVwiPiBMYXRpdHVkZSAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR4LXRleHQtYm94IFsobmdNb2RlbCldPVwiaGVhdE1hcENvbmZpZy5jZW50ZXJMYXRpdHVkZVwiPjwvZHgtdGV4dC1ib3g+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0xIG1iLTEgdy0xLzRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tZCBtYi0xXCI+IExvbmdpdHVkZSA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHgtdGV4dC1ib3ggWyhuZ01vZGVsKV09XCJoZWF0TWFwQ29uZmlnLmNlbnRlckxvbmdpdHVkZVwiPjwvZHgtdGV4dC1ib3g+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMSBtYi0xIHctMS80XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImhlYXRNYXBDb25maWcuaGVhdE1hcENhdGVnb3J5ICE9ICdoZWF0TWFwQW5kTWFya2VyJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIG1iLTFcIj4gWm9vbSBMYWJlbCA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHgtdGV4dC1ib3ggWyhuZ01vZGVsKV09XCJoZWF0TWFwQ29uZmlnLnpvb21cIj48L2R4LXRleHQtYm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMSBtYi0xIHctMS80XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbWQgbWItMVwiPiBDdXN0b20gSWNvbnMgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR4LXRleHQtYm94IFsobmdNb2RlbCldPVwiaGVhdE1hcENvbmZpZy5pY29uXCI+PC9keC10ZXh0LWJveD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB4LTEgbWItMSB3LTEvNFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIG1iLTFcIj4gc2l6ZTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkeC10ZXh0LWJveCBbKG5nTW9kZWwpXT1cImhlYXRNYXBDb25maWcuc2l6ZVwiPjwvZHgtdGV4dC1ib3g+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LWNvbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LXNtIHB5LTEgZm9udC1leHRyYWJvbGQgYm9yZGVyLWIgYmctZ3JheS03MDAgdGV4dC13aGl0ZSBweC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvY2F0aW9uIE1hcmtlciBDb25maWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBwdC0yIGJvcmRlci14IGJvcmRlci1iXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMSBtYi0xIHctMS8zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbWQgbWItMVwiPiBMYXRpdHVkZSA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHgtc2VsZWN0LWJveCBbc2VhcmNoRW5hYmxlZF09XCJ0cnVlXCIgW2l0ZW1zXT1cImNvbmZpZ0NvbHVtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiaGVhdE1hcENvbmZpZy5tYXJrZXJMYXRpdHVkZVwiPjwvZHgtc2VsZWN0LWJveD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB4LTEgbWItMSB3LTEvM1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIG1iLTFcIj4gTG9uZ2l0dWRlIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkeC1zZWxlY3QtYm94IFtzZWFyY2hFbmFibGVkXT1cInRydWVcIiBbaXRlbXNdPVwiY29uZmlnQ29sdW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJoZWF0TWFwQ29uZmlnLm1hcmtlckxvbmdpdHVkZVwiPjwvZHgtc2VsZWN0LWJveD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB4LTEgbWItMSB3LWZ1bGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tZCBtYi0yXCI+IERpc3BsYXkgRm9ybWF0ZSA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHgtc2VsZWN0LWJveCBbaXRlbXNdPVwiWydkYWlseScsJ2hvdXJseScsJ21vbnRobHknXVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwidGFibGVfY29sdW1uc19jb25maWcua3BpQ29uZmlnLmZvcm1hdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVhZE9ubHldPVwiZmFsc2VcIj48L2R4LXNlbGVjdC1ib3g+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJtYXBUeXBlID09ICdidWJibGVNYXAnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleC1jb2xcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1zbSBweS0xIGZvbnQtZXh0cmFib2xkIGJvcmRlci1iIGJnLWdyYXktNzAwIHRleHQtd2hpdGUgcHgtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCdWJibGUgTWFwIENvbmZpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IHB0LTIgYm9yZGVyLXggYm9yZGVyLWJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0xIG1iLTEgdy0xLzNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tZCBtYi0xXCI+IEFyZ3VtZW50IFZhbHVlIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkeC1zZWxlY3QtYm94IFtzZWFyY2hFbmFibGVkXT1cInRydWVcIiBbaXRlbXNdPVwiY29uZmlnQ29sdW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJidWJibGVNYXBDb25maWcuYWdydW1lbnRWYWx1ZVwiPjwvZHgtc2VsZWN0LWJveD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB4LTEgbWItMSB3LTEvNFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIG1iLTFcIj4gQnViYmxlIENvbG9yIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkeC1jb2xvci1ib3ggWyhuZ01vZGVsKV09XCJidWJibGVNYXBDb25maWcuYnViYmxlQ29sb3JcIj48L2R4LWNvbG9yLWJveD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB4LTEgbWItMSB3LTEvNFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIG1iLTFcIj5CdWJibGUgTWluaW11bSBzaXplPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR4LXRleHQtYm94IFsobmdNb2RlbCldPVwiYnViYmxlTWFwQ29uZmlnLmJ1YmJsZU1pbmltdW1TaXplXCI+PC9keC10ZXh0LWJveD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB4LTEgbWItMSB3LTEvNFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIG1iLTFcIj5CdWJibGUgTWF4aW11bSBzaXplPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR4LXRleHQtYm94IFsobmdNb2RlbCldPVwiYnViYmxlTWFwQ29uZmlnLmJ1YmJsZU1heGltdW1TaXplXCI+PC9keC10ZXh0LWJveD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB4LTEgbWItMSB3LTEvNFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIG1iLTFcIj4gc2l6ZTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkeC10ZXh0LWJveCBbKG5nTW9kZWwpXT1cImJ1YmJsZU1hcENvbmZpZy5zaXplXCI+PC9keC10ZXh0LWJveD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB4LTEgbWItMSB3LTEvNFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIG1iLTFcIj4gU2hvcnQgQnk8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHgtc2VsZWN0LWJveCBbc2VhcmNoRW5hYmxlZF09XCJ0cnVlXCIgW2l0ZW1zXT1cImNvbmZpZ0NvbHVtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiYnViYmxlTWFwQ29uZmlnLnNvcnRCeVwiPjwvZHgtc2VsZWN0LWJveD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwicHgtMSBtYi0xIHctMS80XCIgKm5nSWY9XCJoZWF0TWFwQ29uZmlnLmhlYXRNYXBDYXRlZ29yeSAhPSAnaGVhdE1hcEFuZE1hcmtlcidcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tZCBtYi0xXCI+IFpvb20gTGFiZWwgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkeC10ZXh0LWJveCBbKG5nTW9kZWwpXT1cImhlYXRNYXBDb25maWcuem9vbVwiPjwvZHgtdGV4dC1ib3g+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleC1jb2xcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1zbSBweS0xIGZvbnQtZXh0cmFib2xkIGJvcmRlci1iIGJnLWdyYXktNzAwIHRleHQtd2hpdGUgcHgtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMb2NhdGlvbiBNYXJrZXIgQ29uZmlnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggcHQtMiBib3JkZXIteCBib3JkZXItYlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB4LTEgbWItMSB3LTEvM1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIG1iLTFcIj4gTGF0aXR1ZGUgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR4LXNlbGVjdC1ib3ggW3NlYXJjaEVuYWJsZWRdPVwidHJ1ZVwiIFtpdGVtc109XCJjb25maWdDb2x1bWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImJ1YmJsZU1hcENvbmZpZy5tYXJrZXJMYXRpdHVkZVwiPjwvZHgtc2VsZWN0LWJveD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB4LTEgbWItMSB3LTEvM1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIG1iLTFcIj4gTG9uZ2l0dWRlIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkeC1zZWxlY3QtYm94IFtzZWFyY2hFbmFibGVkXT1cInRydWVcIiBbaXRlbXNdPVwiY29uZmlnQ29sdW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJidWJibGVNYXBDb25maWcubWFya2VyTG9uZ2l0dWRlXCI+PC9keC1zZWxlY3QtYm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMSBtYi0xIHctZnVsbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIG1iLTJcIj4gRGlzcGxheSBGb3JtYXRlIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkeC1zZWxlY3QtYm94IFtpdGVtc109XCJbJ2RhaWx5JywnaG91cmx5JywnbW9udGhseSddXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJ0YWJsZV9jb2x1bW5zX2NvbmZpZy5rcGlDb25maWcuZm9ybWF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZWFkT25seV09XCJmYWxzZVwiPjwvZHgtc2VsZWN0LWJveD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuXG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cblxuXG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJhY3RpdmVUYWIgPT09ICdjaGFydF9jb25maWcnXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImgtZnVsbCBvdmVyZmxvdy14LWF1dG9cIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgZmxleC1hdXRvIG1pbi13LTBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LXNtIHB5LTEgZm9udC1leHRyYWJvbGQgYm9yZGVyLWIgYmctZ3JheS03MDAgdGV4dC13aGl0ZSBweC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVG9vbHRpcCBDb2x1bW5zXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwdC0yIGJvcmRlci14IGJvcmRlci1iIFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJteS0yIGJvcmRlci1iIGZsZXggZmxleC1yb3dcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiB0YWJsZURhdGFDb25maWcuY2hhcnRfY29uZmlnOyBsZXQgaSA9IGluZGV4O1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJweC0xIG1iLTIgbXQtNiB3LWZ1bGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkeC1jaGVjay1ib3ggW3ZhbHVlXT1cIml0ZW0udmlzaWJsZVwiIFsobmdNb2RlbCldPVwiaXRlbS52aXNpYmxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0PVwiVmlzaWJsaXR5XCI+PC9keC1jaGVjay1ib3g+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMSBtYi0yIHctZnVsbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbWQgbWItMlwiPiBWYWx1ZSBGaWVsZDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR4LXNlbGVjdC1ib3ggW3NlYXJjaEVuYWJsZWRdPVwidHJ1ZVwiIFtpdGVtc109XCJjb25maWdDb2x1bWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiaXRlbS5kYXRhRmllbGRcIj48L2R4LXNlbGVjdC1ib3g+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMSBtYi0yIHctZnVsbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbWQgbWItMlwiPiBDYXB0aW9uPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHgtdGV4dC1ib3ggWyhuZ01vZGVsKV09XCJpdGVtLmNhcHRpb25cIj48L2R4LXRleHQtYm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0xIG1iLTIgdy1mdWxsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tZCBtYi0yXCI+RGlzcGxheSBGb3I8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkeC1zZWxlY3QtYm94IFtpdGVtc109XCJbJ21hcCcsICd0b29sdGlwJ11cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiaXRlbS5kaXNwbGF5Rm9yXCI+PC9keC1zZWxlY3QtYm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB4LTIgbWItMiB3LWZ1bGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIG1iLTJcIj4gVUkgRnVuY3Rpb248L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkeC1zZWxlY3QtYm94IFtpdGVtc109XCJlbnJpY2hOYW1lTGlzdFwiIFsobmdNb2RlbCldPVwiaXRlbS5lbnJpY2hOYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2VhcmNoRW5hYmxlZF09XCJ0cnVlXCI+PC9keC1zZWxlY3QtYm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgbXQtOCB3LWZ1bGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJpICE9PSAwXCIgY2xhc3M9XCJ7e2NvbW1vblNlcnZpY2UuYnRuX2xpZ2h0X3NtfX0gY3Vyc29yLXBvaW50ZXIgbXgtMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm1vdmVJdGVtRm9yQ29sdW1ucyhpLCAndXAnKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtYXJyb3ctdXBcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImkgIT09IHRhYmxlRGF0YUNvbmZpZy5jaGFydF9jb25maWcubGVuZ3RoIC0gMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ7e2NvbW1vblNlcnZpY2UuYnRuX2xpZ2h0X3NtfX0gY3Vyc29yLXBvaW50ZXIgbXgtMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm1vdmVJdGVtRm9yQ29sdW1ucyhpLCAnZG93bicpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1hcnJvdy1kb3duXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwie3tjb21tb25TZXJ2aWNlLmJ0bl9kYW5nZXJfc219fSBjdXJzb3ItcG9pbnRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImRlbGV0ZUNvbHVtbnMoaSlcIj48aSBjbGFzcz1cImZhIGZhLXRyYXNoLW9cIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cganVzdGlmeS1lbmQgbXktMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInt7Y29tbW9uU2VydmljZS5idG5fcHJpbWFyeV9zbX19IGN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cImFkZENvbHVtbnMoKVwiPkFkZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbnM8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJhY3RpdmVUYWIgPT09ICdwcm9wZXJ0aWVzJ1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoLWZ1bGwgb3ZlcmZsb3cteC1hdXRvXCI+XG4gICAgICAgICAgICAgICAgICAgIDxhcHAtbG9hZGVyICpuZ0lmPVwiaXNMb2FkZXJcIj48L2FwcC1sb2FkZXI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNMb2FkZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGp1c3RpZnktYmV0d2VlbiBib3JkZXItYiBweS0zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm14LTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR4LWNoZWNrLWJveCBbdmFsdWVdPVwidmlld1Byb3BlcnRpZXMuZW5hYmxlQ2xpY2tFdmVudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInZpZXdQcm9wZXJ0aWVzLmVuYWJsZUNsaWNrRXZlbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dD1cIkVuYWJsZSBDbGljayBFdmVudFwiPjwvZHgtY2hlY2stYm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJteC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkeC1jaGVjay1ib3ggW3ZhbHVlXT1cInZpZXdQcm9wZXJ0aWVzLmVuYWJsZVJpZ2h0Q2xpY2tFdmVudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInZpZXdQcm9wZXJ0aWVzLmVuYWJsZVJpZ2h0Q2xpY2tFdmVudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0PVwiRW5hYmxlIFJpZ2h0IENsaWNrXCI+PC9keC1jaGVjay1ib3g+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LWZ1bGwgcC0yXCIgKm5nSWY9XCJ2aWV3UHJvcGVydGllcy5lbmFibGVDbGlja0V2ZW50XCI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBmbGV4LWF1dG8gbWluLXctMCBteS0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LXNtIHB5LTEgZm9udC1leHRyYWJvbGQgYm9yZGVyLWIgYmctZ3JheS03MDAgdGV4dC13aGl0ZSBweC0yXCI+IEV2ZW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcHRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LWZ1bGwgcC0zIGJvcmRlci14IGJvcmRlci1iIFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy1mdWxsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIG1iLTJcIj4gRXZlbnQgVHlwZTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LWZ1bGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR4LXNlbGVjdC1ib3ggW2l0ZW1zXT1cIlsnZHJpbGxkb3duJywnb3B0aW9uYWxEcmlsbERvd24nXVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob25WYWx1ZUNoYW5nZWQpPVwiZ2V0U2VsZWN0ZWRFdmVudFR5cGUoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInZpZXdQcm9wZXJ0aWVzLmNsaWNrRXZlbnRPcHRpb25zLmV2ZW50VHlwZVwiPjwvZHgtc2VsZWN0LWJveD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInZpZXdQcm9wZXJ0aWVzLmNsaWNrRXZlbnRPcHRpb25zLmV2ZW50VHlwZSA9PSAnZHJpbGxkb3duJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGp1c3RpZnktYmV0d2VlbiBtdC0zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LWZ1bGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIG1iLTJcIj4gQXNzb2NpYXRlZCBWaWV3czwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR4LXRhZy1ib3ggW2l0ZW1zXT1cImFsbENvbmZpZ3VyZWRWaWV3c1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJ2aWV3UHJvcGVydGllcy5jbGlja0V2ZW50T3B0aW9ucy5hc3NvY2lhdGVkVmlld3NcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlRXhwcj1cInZpZXdJZFwiIGRpc3BsYXlFeHByPVwidmlld05hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzaG93U2VsZWN0aW9uQ29udHJvbHNdPVwidHJ1ZVwiIFtzZWFyY2hFbmFibGVkXT1cInRydWVcIj48L2R4LXRhZy1ib3g+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJ2aWV3UHJvcGVydGllcy5jbGlja0V2ZW50T3B0aW9ucy5ldmVudFR5cGUgPT0gJ29wdGlvbmFsRHJpbGxEb3duJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGp1c3RpZnktYmV0d2VlbiBtdC0zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LWZ1bGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBvcHRpb25hbERyaWxEb3duRGF0YVNvdXJjZTtsZXQgaSA9IGluZGV4O1wiPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cganVzdGlmeS1iZXR3ZWVuXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJteC0yIHctZnVsbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbWQgbWItMlwiPiBBc3NvY2lhdGVkIFZpZXdzPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHgtdGFnLWJveCBbaXRlbXNdPVwiYWxsQ29uZmlndXJlZFZpZXdzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cIml0ZW0udmlld0lkXCIgdmFsdWVFeHByPVwidmlld0lkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5RXhwcj1cInZpZXdOYW1lXCIgW3Nob3dTZWxlY3Rpb25Db250cm9sc109XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbWF4RGlzcGxheWVkVGFnc109XCIyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2VhcmNoRW5hYmxlZF09XCJ0cnVlXCI+PC9keC10YWctYm94PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXgtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbWQgbWItMlwiPiBBc3NvY2lhdGVkIFBhcmFtczwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR4LXRleHQtYm94XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJpdGVtLmZpbHRlckNvbmRpdGlvblwiPjwvZHgtdGV4dC1ib3g+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXgtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwie3tjb21tb25TZXJ2aWNlLmJ0bl9kYW5nZXJfc219fSBjdXJzb3ItcG9pbnRlciBtdC04XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZGVsZXRlQXNzb2NpYXRlZFBhcmFtcyhpKVwiPjxpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmEgZmEtdHJhc2gtb1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cganVzdGlmeS1lbmQgbXQtNFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ7e2NvbW1vblNlcnZpY2UuYnRuX3ByaW1hcnlfc219fSBjdXJzb3ItcG9pbnRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhZGRBc3NvY2lhdGVkUGFyYW1zKClcIj5BZGRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFyYW1zPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwie3tjb21tb25TZXJ2aWNlLmJ0bl9saWdodF9tZH19IGN1cnNvci1wb2ludGVyIG10LTJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlc2V0Vmlld1Byb3Byc3Rpc2UoKVwiPlJlc2V0IEFsbDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiYWN0aXZlVGFiID09PSAncGVybWlzc2lvbidcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaC1mdWxsIG92ZXJmbG93LXgtYXV0b1wiPlxuICAgICAgICAgICAgICAgICAgICA8YXBwLXVzZXItYWNjZXNzIFsodXNlck9wdGlvbkNvbnRhaW5lcildPVwidXNlck9wdGlvbkNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgICAgICA8L2FwcC11c2VyLWFjY2Vzcz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDwvZGl2PlxuXG5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuXG48ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBib3JkZXItdCBwbC0zXCI+XG4gICAgPGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1zdGFydCBteC0xXCI+XG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJ7e2NvbW1vblNlcnZpY2UuYnRuX3dhcm5pbmdfbWR9fSBjdXJzb3ItcG9pbnRlciBtdC0yXCIgKGNsaWNrKT1cInZpZXdNYXBGb3JUZXN0KClcIj5cbiAgICAgICAgICAgIFByZXZpZXc8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInt7Y29tbW9uU2VydmljZS5idG5fcHJpbWFyeV9tZH19IGN1cnNvci1wb2ludGVyIG10LTJcIiAoY2xpY2spPVwiaXNKc29uUHJldmlldyA9IGZhbHNlXCI+RGF0YVxuICAgICAgICAgICAgUHJldmlldzwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktZW5kIG14LTEgZmxleC1ncm93XCI+XG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJ7e2NvbW1vblNlcnZpY2UuYnRuX3N1Y2Nlc3NfbWR9fSBjdXJzb3ItcG9pbnRlciBtdC0yXCJcbiAgICAgICAgICAgIChjbGljayk9XCJnZXRTYXZlQ2hhcnRDb25maWcoKVwiPlN1Ym1pdDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuPC9kaXY+Il19
565
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VvLW1hcC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9nYW1tYS1hcHAtY29udHJvbGxlci9zcmMvbGliL2FwcGxpY2F0aW9uLWNvbnRyb2xsZXIvc3VwcG9ydC1jb21wb25lbnRzL2dlby1tYXAvZ2VvLW1hcC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9nYW1tYS1hcHAtY29udHJvbGxlci9zcmMvbGliL2FwcGxpY2F0aW9uLWNvbnRyb2xsZXIvc3VwcG9ydC1jb21wb25lbnRzL2dlby1tYXAvZ2VvLW1hcC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQXFCLFNBQVMsRUFBNEIsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQStCLE1BQU0sZUFBZSxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7O0FBV3pKLE1BQU0sT0FBTyxlQUFlO0lBaUoxQixZQUFtQixhQUE0QixFQUFVLEdBQXNCLEVBQVUsT0FBa0MsRUFBVSxNQUFxQjtRQUF2SSxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUFVLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQVUsWUFBTyxHQUFQLE9BQU8sQ0FBMkI7UUFBVSxXQUFNLEdBQU4sTUFBTSxDQUFlO1FBaEoxSiwwQkFBcUIsR0FBRztZQUN0QjtnQkFDRSxNQUFNLEVBQUUsZUFBZTtnQkFDdkIsT0FBTyxFQUFFLGFBQWE7YUFDdkI7WUFDRDtnQkFDRSxNQUFNLEVBQUUsaUJBQWlCO2dCQUN6QixPQUFPLEVBQUUsZUFBZTthQUN6QjtZQUNEO2dCQUNFLE1BQU0sRUFBRSwwQkFBMEI7Z0JBQ2xDLE9BQU8sRUFBRSxrQkFBa0I7YUFDNUI7U0FDRixDQUFBO1FBRUQsdUJBQWtCLEdBQUcsQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO1FBQ3BELFlBQU8sR0FBUSxFQUFFLENBQUM7UUFFbEIsNEJBQXVC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LENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ3RDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsa0JBQWtCLEVBQUUscUJBQXFCLEVBQUUsRUFBRSxFQUFFO2dCQUMxRSxJQUFJLHFCQUFxQixLQUFLLEtBQUssRUFBRTtvQkFDbkMsS0FBSyxDQUFDLGtCQUFrQixDQUFDO3dCQUN2QixLQUFLLENBQUMsa0JBQWtCLENBQUMsR0FBRyxLQUFLLENBQUMsR0FBRyxrQkFBa0IsU0FBUyxDQUFDLENBQUM7b0JBQ3BFLE9BQU8sS0FBSyxDQUFDLEdBQUcsa0JBQWtCLFNBQVMsQ0FBQyxDQUFDO2lCQUM5QztZQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDakMsQ0FBQzs7NEdBbHFCVSxlQUFlO2dHQUFmLGVBQWUsd0xDWjVCLCtzd0NBMm1CTTsyRkQvbEJPLGVBQWU7a0JBTDNCLFNBQVM7K0JBQ0UsYUFBYTt3TUF3Sk4sd0JBQXdCO3NCQUF4QyxNQUFNO2dCQUlILGVBQWU7c0JBRGxCLEtBQUs7dUJBQUMsY0FBYyIsInNvdXJjZXNDb250ZW50IjpbIlxuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgQ29tcG9uZW50UmVmLCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkLCBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBcHBsaWNhdGlvbkNvbnRlbnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vYXBwbGljYXRpb24tY29udGVudC5zZXJ2aWNlJztcbmltcG9ydCB7IFRvYXN0clNlcnZpY2UgfSBmcm9tICduZ3gtdG9hc3RyJztcbmltcG9ydCB7IENvbW1vblNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb21tb24nO1xuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1nZW8tbWFwJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2dlby1tYXAuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9nZW8tbWFwLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgR2VvTWFwQ29tcG9uZW50IHtcbiAgaGVhdE1hcFR5cGVEYXRhc291cmNlID0gW1xuICAgIHtcbiAgICAgIFwibmFtZVwiOiBcIkhlYXQgTWFwIE9ubHlcIixcbiAgICAgIFwidmFsdWVcIjogXCJoZWF0TWFwT25seVwiXG4gICAgfSxcbiAgICB7XG4gICAgICBcIm5hbWVcIjogXCJIZWF0IE1hcCBNYXJrZXJcIixcbiAgICAgIFwidmFsdWVcIjogXCJoZWF0TWFwTWFya2VyXCJcbiAgICB9LFxuICAgIHtcbiAgICAgIFwibmFtZVwiOiBcIkhlYXQgTWFwIEFuZCBIZWF0IE1hcmtlclwiLFxuICAgICAgXCJ2YWx1ZVwiOiBcImhlYXRNYXBBbmRNYXJrZXJcIlxuICAgIH1cbiAgXVxuICBjaGFydFZpZXdUeXBlOiBhbnk7XG4gIG1hcEljb25zRGF0YVNvdXJjZSA9IFtcImFzc2V0cy9jdXN0b20tbWFya2VyLi5qcGVnXCJdO1xuICBtYXBUeXBlOiBhbnkgPSAnJztcblxuICBjaGFydFZpZXdUeXBlRGF0YVNvdXJjZSA9IFtcbiAgICB7IG5hbWU6ICdHRU8gTWFwJywgdmFsdWU6ICdnZW9NYXAnIH0sXG4gICAgeyBuYW1lOiAnSGVhdCBNYXAnLCB2YWx1ZTogJ2hlYXRNYXAnIH0sXG4gICAgeyBuYW1lOiAnQnViYmxlIE1hcCcsIHZhbHVlOiAnYnViYmxlTWFwJyB9LFxuICAgIHsgbmFtZTogJ0Nob3JvcGxldGggTWFwJywgdmFsdWU6ICdjaG9yb3BsZXRoTWFwJyB9XG4gIF07XG5cbiAgcmVnaW9uRGF0YSA9IFtcImNvdW50cnlcIiwgXCJjaXR5XCJdO1xuICBjaGFydERhdGFTb3VyY2VGb3JNYXA6IGFueTtcbiAgY29sb3JzOiBzdHJpbmdbXSA9IFtdOyAvLyBBcnJheSB0byBob2xkIHNlbGVjdGVkIGNvbG9yc1xuICBpc0pzb25QcmV2aWV3OiBib29sZWFuO1xuICBkYXRhU291cnNlRm9yVGFibGU6IGFueSA9IFtdO1xuICBqc2FvbkRhdGFzb3VyY2U6IGFueTtcbiAgY29uZmlnQ29sdW1lOiBhbnk7XG4gIGFsbENvbmZpZ3VyZWRWaWV3czogYW55ID0gW107XG4gIC8vIGdyb3VwT2ZWaWV3czogYW55O1xuICB2aWV3UHJvcGVydGllczogYW55ID0ge1xuICAgIGVuYWJsZUNsaWNrRXZlbnQ6IGZhbHNlLFxuICAgIGVuYWJsZVJpZ2h0Q2xpY2tFdmVudDogdHJ1ZSxcbiAgICBjbGlja0V2ZW50T3B0aW9uczoge1xuICAgICAgYXNzb2NpYXRlZFZpZXdzOiBbXSxcbiAgICAgIGV2ZW50VHlwZTogXCJcIlxuICAgIH1cbiAgfTtcbiAgb3B0aW9uYWxEcmlsRG93bkRhdGFTb3VyY2U6IGFueSA9IFtdO1xuICB0YWJsZV9jb2x1bW5zX2NvbmZpZyA9IHtcbiAgICBcImtwaUNvbmZpZ1wiOiB7XG4gICAgICBcInNlcnZpY2VJZFwiOiBcIlwiLFxuICAgICAgXCJhcGlcIjogXCIva3BpL3RyZW5kcy9uZXR3b3JrL2dldC1tZXRyaWMtZGF0YVwiLFxuICAgICAgXCJkaXNwbGF5VHlwZVwiOiBcImdvb2dsZUNoYXJ0XCIsXG4gICAgICBcImZvcm1hdGVcIjogXCJcIixcbiAgICAgIFwia2V5VG9QYXNzXCI6IFtdLFxuICAgICAgXCJjb21wb25lbnROYW1lXCI6IFwiR2FtbWFHZW9DaGFydENvbXBvbmVudFwiLFxuICAgICAgXCJkYXRhQ29uZmlnXCI6IHt9XG4gICAgfSxcbiAgfTtcbiAgaGVhdE1hcENvbmZpZyA9IHtcbiAgICBcImNoYXJ0X2NvbmZpZ1wiOiBbXG5cbiAgICBdLFxuICAgIFwiaGVhdE1hcENhdGVnb3J5XCI6IFwiXCIsXG4gICAgLy8gXCJjZW50ZXJMYXRpdHVkZVwiOlwiXCIsXG4gICAgLy8gXCJjZW50ZXJMb25naXR1ZGVcIjpcIlwiLFxuICAgIFwiaWNvblwiOiBcImFzc2V0cy9jdXN0b20tbWFya2VyLi5qcGVnXCIsXG4gICAgXCJtYXJrZXJMYXRpdHVkZVwiOiBcIlwiLFxuICAgIFwibWFya2VyTG9uZ2l0dWRlXCI6IFwiXCIsXG4gICAgXCJzaXplXCI6ICc0NTAnLFxuICAgIFwiem9vbVwiOiBcIlwiXG4gIH1cbiAgYnViYmxlTWFwQ29uZmlnID0ge1xuICAgIFwiY2hhcnRfY29uZmlnXCI6IFtcblxuICAgIF0sXG4gICAgXCJhZ3J1bWVudFZhbHVlXCI6IFwiXCIsXG4gICAgXCJidWJibGVDb2xvclwiOiBcIiMyODVlMDhcIixcbiAgICBcInNpemVcIjogJzQ1MCcsXG4gICAgXCJidWJibGVNaW5pbXVtU2l6ZVwiOiBcIjVcIixcbiAgICBcImJ1YmJsZU1heGltdW1TaXplXCI6IFwiMTVcIixcbiAgICBcIm1hcmtlckxhdGl0dWRlXCI6IFwiXCIsXG4gICAgXCJtYXJrZXJMb25naXR1ZGVcIjogXCJcIixcbiAgICBcInNvcnRCeVwiOiBcIlwiXG4gICAgLy8gIFwiem9vbVwiOlwiXCJcbiAgfVxuICB0YWJsZURhdGFDb25maWcgPSB7XG5cbiAgICBcImNoYXJ0X2NvbmZpZ1wiOiBbXG5cbiAgICBdLFxuICAgIFwicmVnaW9uXCI6IFwiXCIsXG4gICAgXCJyZWdpb25Db2RlXCI6IFwiVVNcIixcbiAgICAvLyBcInRpdGxlXCI6IFwiXCIsXG4gICAgXCJhcmd1bWVudEZpZWxkXCI6IFwiXCIsXG4gICAgXCJjaGFydFZhbHVlRmllbGRcIjogXCJcIixcbiAgICBcInNpemVcIjogXCI0NTBcIixcbiAgICBcImNoYXJ0VHlwZVwiOiBcImdlb2NoYXJ0XCIsXG4gICAgXCJiYWNrZ3JvdW5kQ29sb3JcIjogXCIjNmM5OGUwXCIsXG4gICAgXCJjb2xvcnNcIjogWycjMDAzNTY2JywgJyNmZDAwMDAnXVxuXG4gIH1cblxuXG4gIC8vIGZvciBjaG9yb3BsZXRoTWFwXG5cblxuICBjaG9yb3BsZXRoTWFwQ29uZmlnID0ge1xuICAgIGNoYXJ0X2NvbmZpZzogW1xuICAgICAge1xuICAgICAgICBkYXRhRmllbGQ6IFwiY250XCIsXG4gICAgICAgIGNhcHRpb246IFwiQ291bnRcIixcbiAgICAgICAgZGlzcGxheUZvcjogXCJtYXBcIixcbiAgICAgICAgZW5yaWNoTmFtZTogXCJcIlxuICAgICAgfVxuICAgIF0sXG4gICAgem9vbTogXCI3XCIsXG4gICAgaXNWYWx1ZUZpZWxkUmFuZ2VTbGlkZXI6IHRydWUsXG4gICAgc2xpZGVTcGVlZDogMTAwMCxcbiAgICBpc0RhdGFBZ2dyZWdhdGlvbjogZmFsc2UsXG4gICAgZGF0YUFnZ3JlZ2F0aW9uQ29uZmlnOiB7XG4gICAgICBcImRhdGFBZ2dyZWdhdGVDb2x1bWVzXCI6IFtdLFxuICAgICAgXCJhZ2dyZWdhdGVGaWVsZHNcIjogW11cbiAgICB9LFxuICAgIHNsaWRlclZhbHVlRmllbGQ6IFwieWVhclwiLFxuICAgIGNlbnRlckxhdDogXCIxLjM3MzNcIixcbiAgICBjZW50ZXJMbmc6IFwiMzIuMjkwM1wiLFxuICAgIGFyZ3VtZW50RmllbGQ6IFwiZGlzdHJpY3RcIixcbiAgICBnanNvbkZpbGVQYXRoOiBcIi9hc3NldHMvYXBpLWRhdGEvdWdhbmRhX2Rpc3RyaWN0cy5nZW9qc29uXCIsXG4gICAgc2l6ZTogXCI0NTBcIixcbiAgICBjaGFydFR5cGU6IFwiY2hvcm9wbGV0aE1hcFwiLFxuICAgIGNvbG9yT25lOiAnIzA4OTI3NCcsXG4gICAgY29sb3JUd286ICcjZjBmOTIxJyxcbiAgfVxuXG4gIGlzQ2VudGVyZENob3JvcGxldGhNYXA6IGJvb2xlYW4gPSBmYWxzZTtcbiAgY2VudGFyTGFpdG5nT2JqZWN0ID0ge1xuICAgIGxhdEtleTogXCJcIixcbiAgICBsbmdLZXk6IFwiXCJcbiAgfVxuXG4gIGVucmljaE5hbWVMaXN0ID0gW1wiYWJicmV2aWF0ZU51bWJlclwiLCBcImdldENvbG9yQ29kZVNwYW5cIiwgXCJUaG91c2FuZFNlcGFyYXRvclwiLCBcImZvcm1hdEJ5dGVzdjJcIl1cbiAgc2VsZWN0ZWRUYWJsZVZpZXdUeXBlOiBhbnk7XG4gIGlzTG9hZGVyOiBib29sZWFuID0gdHJ1ZTtcblxuICBzZWxlY3RlZFZpZXdDb25maWdzOiBhbnk7XG4gIHVzZXJPcHRpb25Db250YWluZXI6IGFueSA9IFtdO1xuICBwcmV2aWV3RGF0YTogYW55O1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBjb21tb25TZXJ2aWNlOiBDb21tb25TZXJ2aWNlLCBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsIHByaXZhdGUgc2VydmljZTogQXBwbGljYXRpb25Db250ZW50U2VydmljZSwgcHJpdmF0ZSB0YW9zdHI6IFRvYXN0clNlcnZpY2UpIHsgfVxuXG4gIGFjdGl2ZVRhYjogc3RyaW5nID0gJ2Jhc2ljJztcbiAgQE91dHB1dCgpIHB1YmxpYyBjcmVhdGVPdGhlckNvbXBvbmVudFZpZXc6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBzZWxlY3RlZFZpZXdzID0gW107XG5cbiAgQElucHV0KCdkYXRhc2V0bW9kYWwnKVxuICBzZXQgY2hhcnRjb25maWdEYXRhKHZhbHVlKSB7XG4gICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuanNhb25EYXRhc291cmNlID0gdmFsdWUuZGF0YVswXTtcbiAgICAgIHRoaXMuY29uZmlnQ29sdW1lID0gT2JqZWN0LmtleXModmFsdWUuZGF0YVswXSk7XG4gICAgICB0aGlzLmRhdGFTb3Vyc2VGb3JUYWJsZSA9IHZhbHVlLmRhdGE7XG4gICAgICB0aGlzLnNlbGVjdGVkVmlld0NvbmZpZ3MgPSB2YWx1ZTtcbiAgICAgIHRoaXMucHJldmlld0RhdGEgPSB2YWx1ZS5kYXRhO1xuXG4gICAgICB0aGlzLnNlbGVjdGVkVGFibGVWaWV3VHlwZSA9IHZhbHVlLnNlbGVjdGVkVmlld1R5cGU7XG4gICAgICB0aGlzLnVzZXJPcHRpb25Db250YWluZXIgPSB2YWx1ZS5zZWxlY3RlZFdpZGdldENvbmZpZz8ucGVybWlzc2lvbnMgPyB2YWx1ZS5zZWxlY3RlZFdpZGdldENvbmZpZy5wZXJtaXNzaW9ucyA6IFtdO1xuICAgICAgaWYgKHZhbHVlLnNlbGVjdGVkV2lkZ2V0Q29uZmlnKSB7XG5cbiAgICAgICAgdGhpcy50YWJsZV9jb2x1bW5zX2NvbmZpZ1sna3BpQ29uZmlnJ10gPSB2YWx1ZS5zZWxlY3RlZFdpZGdldENvbmZpZztcbiAgICAgICAgdGhpcy5tYXBUeXBlID0gdmFsdWUuc2VsZWN0ZWRXaWRnZXRDb25maWcuZGF0YUNvbmZpZy5tYXBUeXBlO1xuICAgICAgICBpZiAodGhpcy5tYXBUeXBlID09IFwiZ2VvTWFwXCIpIHtcbiAgICAgICAgICB0aGlzLnRhYmxlRGF0YUNvbmZpZyA9IHZhbHVlLnNlbGVjdGVkV2lkZ2V0Q29uZmlnLmRhdGFDb25maWc7XG4gICAgICAgICAgdGhpcy50YWJsZURhdGFDb25maWcuY2hhcnRfY29uZmlnID0gdmFsdWUuc2VsZWN0ZWRXaWRnZXRDb25maWcuZGF0YUNvbmZpZy5jaGFydF9jb25maWc7XG5cbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLm1hcFR5cGUgPT0gJ2J1YmJsZU1hcCcpIHtcbiAgICAgICAgICB0aGlzLmJ1YmJsZU1hcENvbmZpZyA9IHZhbHVlLnNlbGVjdGVkV2lkZ2V0Q29uZmlnLmRhdGFDb25maWc7XG4gICAgICAgICAgdGhpcy5idWJibGVNYXBDb25maWcuY2hhcnRfY29uZmlnID0gdmFsdWUuc2VsZWN0ZWRXaWRnZXRDb25maWcuZGF0YUNvbmZpZy5jaGFydF9jb25maWc7XG4gICAgICAgICAgdGhpcy50YWJsZURhdGFDb25maWcuY2hhcnRfY29uZmlnID0gdmFsdWUuc2VsZWN0ZWRXaWRnZXRDb25maWcuZGF0YUNvbmZpZy5jaGFydF9jb25maWc7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5tYXBUeXBlID09ICdjaG9yb3BsZXRoTWFwJykge1xuXG4gICAgICAgICAgaWYgKHZhbHVlLnNlbGVjdGVkV2lkZ2V0Q29uZmlnWydkYXRhQ29uZmlnJ11bJ2lzRGF0YUFnZ3JlZ2F0aW9uJ10pIHtcbiAgICAgICAgICAgIHRoaXMuZGF0YUFnZ3JlZ2F0aW9uQ29udGFpbmVyID0gdmFsdWUuc2VsZWN0ZWRXaWRnZXRDb25maWdbJ2RhdGFDb25maWcnXVsnZGF0YUFnZ3JlZ2F0aW9uQ29uZmlnJ11bJ2RhdGFBZ2dyZWdhdGVDb2x1bWVzJ107XG4gICAgICAgICAgICB0aGlzLmRhdGFBZ2dyZWdhdGVHcm91cEJ5Q29sdW1lID0gdmFsdWUuc2VsZWN0ZWRXaWRnZXRDb25maWdbJ2RhdGFDb25maWcnXVsnZGF0YUFnZ3JlZ2F0aW9uQ29uZmlnJ11bJ2FnZ3JlZ2F0ZUZpZWxkcyddO1xuICAgICAgICAgICAgdGhpcy5zYXZlQWdncmVnYXRpb25Db2x1bWUoKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0aGlzLmNob3JvcGxldGhNYXBDb25maWcgPSB2YWx1ZS5zZWxlY3RlZFdpZGdldENvbmZpZy5kYXRhQ29uZmlnO1xuICAgICAgICAgIHRoaXMuY2hvcm9wbGV0aE1hcENvbmZpZy5jaGFydF9jb25maWcgPSB2YWx1ZS5zZWxlY3RlZFdpZGdldENvbmZpZy5kYXRhQ29uZmlnLmNoYXJ0X2NvbmZpZztcbiAgICAgICAgICB0aGlzLnRhYmxlRGF0YUNvbmZpZy5jaGFydF9jb25maWcgPSB2YWx1ZS5zZWxlY3RlZFdpZGdldENvbmZpZy5kYXRhQ29uZmlnLmNoYXJ0X2NvbmZpZztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICB0aGlzLmhlYXRNYXBDb25maWcgPSB2YWx1ZS5zZWxlY3RlZFdpZGdldENvbmZpZy5kYXRhQ29uZmlnO1xuICAgICAgICAgIHRoaXMuaGVhdE1hcENvbmZpZy5jaGFydF9jb25maWcgPSB2YWx1ZS5zZWxlY3RlZFdpZGdldENvbmZpZy5kYXRhQ29uZmlnLmNoYXJ0X2NvbmZpZztcbiAgICAgICAgICB0aGlzLnRhYmxlRGF0YUNvbmZpZy5jaGFydF9jb25maWcgPSB2YWx1ZS5zZWxlY3RlZFdpZGdldENvbmZpZy5kYXRhQ29uZmlnLmNoYXJ0X2NvbmZpZztcbiAgICAgICAgfVxuICAgICAgICBpZiAodmFsdWUuc2VsZWN0ZWRXaWRnZXRDb25maWcudmlld1Byb3BlcnRpZXMgJiYgdmFsdWUuc2VsZWN0ZWRXaWRnZXRDb25maWcudmlld1Byb3BlcnRpZXMuY2xpY2tFdmVudE9wdGlvbnMuYXNzb2NpYXRlZFZpZXdzKSB7XG4gICAgICAgICAgdGhpcy52aWV3UHJvcGVydGllcyA9IHZhbHVlLnNlbGVjdGVkV2lkZ2V0Q29uZmlnLnZpZXdQcm9wZXJ0aWVzO1xuICAgICAgICAgIHRoaXMudmlld1Byb3BlcnRpZXMgPSB7XG4gICAgICAgICAgICBcImVuYWJsZUNsaWNrRXZlbnRcIjogdmFsdWUuc2VsZWN0ZWRXaWRnZXRDb25maWcudmlld1Byb3BlcnRpZXMuZW5hYmxlQ2xpY2tFdmVudCxcbiAgICAgICAgICAgIFwiZW5hYmxlUmlnaHRDbGlja0V2ZW50XCI6IHZhbHVlLnNlbGVjdGVkV2lkZ2V0Q29uZmlnLnZpZXdQcm9wZXJ0aWVzLmVuYWJsZVJpZ2h0Q2xpY2tFdmVudFxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICh2YWx1ZS5zZWxlY3RlZFdpZGdldENvbmZpZy52aWV3UHJvcGVydGllcy5lbmFibGVDbGlja0V2ZW50KSB7XG4gICAgICAgICAgICB0aGlzLnZpZXdQcm9wZXJ0aWVzWydjbGlja0V2ZW50T3B0aW9ucyddID0ge1xuICAgICAgICAgICAgICBcImV2ZW50VHlwZVwiOiB2YWx1ZS5zZWxlY3RlZFdpZGdldENvbmZpZy52aWV3UHJvcGVydGllcy5jbGlja0V2ZW50T3B0aW9ucy5ldmVudFR5cGUsXG4gICAgICAgICAgICAgIFwiYXNzb2NpYXRlZFZpZXdzXCI6IHZhbHVlLnNlbGVjdGVkV2lkZ2V0Q29uZmlnLnZpZXdQcm9wZXJ0aWVzLmNsaWNrRXZlbnRPcHRpb25zLmFzc29jaWF0ZWRWaWV3c1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnZpZXdQcm9wZXJ0aWVzWydjbGlja0V2ZW50T3B0aW9ucyddID0ge31cbiAgICAgICAgICB9XG5cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMudGFibGVEYXRhQ29uZmlnLmNoYXJ0X2NvbmZpZyA9IHZhbHVlLmNvbHVtbkRhdGE7XG4gICAgICAgIGlmICh0aGlzLnRhYmxlRGF0YUNvbmZpZy5jaGFydF9jb25maWcpIHtcbiAgICAgICAgICB0aGlzLnRhYmxlRGF0YUNvbmZpZy5jaGFydF9jb25maWcuZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgICAgICAgIC8vIGVsZW1lbnRbJ2NvbG9yJ10gPSAnJztcbiAgICAgICAgICAgIC8vIGVsZW1lbnRbJ2lzU2hvd0JhciddID0gdHJ1ZTtcbiAgICAgICAgICB9KTtcblxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMudGFibGVEYXRhQ29uZmlnLmNoYXJ0X2NvbmZpZyA9IFtdO1xuICAgICAgICAgIHRoaXMuY29uZmlnQ29sdW1lLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICAgICAgICBsZXQgb2JqID0ge1xuICAgICAgICAgICAgICAvLyBcInZpc2libGVcIjogdHJ1ZSxcbiAgICAgICAgICAgICAgLy8gXCJpc1Nob3dCYXJcIjogdHJ1ZSxcbiAgICAgICAgICAgICAgXCJkYXRhRmllbGRcIjogZWxlbWVudCxcbiAgICAgICAgICAgICAgXCJjYXB0aW9uXCI6IHRoaXMuY29tbW9uU2VydmljZS5jb252ZXJ0U3RyaW5nKGVsZW1lbnQpLFxuICAgICAgICAgICAgICBcImVucmljaE5hbWVcIjogXCJcIixcbiAgICAgICAgICAgICAgXCJkaXNwbGF5Rm9yXCI6IFwibWFwXCIsXG4gICAgICAgICAgICAgIC8vIFwiY29sb3JcIjogXCJcIixcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy50YWJsZURhdGFDb25maWcuY2hhcnRfY29uZmlnLnB1c2gob2JqKTtcblxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5pc0xvYWRlciA9IHRydWU7XG4gICAgdGhpcy5zZXJ2aWNlLmdldEFwcFZpZXdDb25maWdzKCkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChkYXRhOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5hbGxDb25maWd1cmVkVmlld3MgPSBkYXRhO1xuXG4gICAgICAgIHRoaXMuaXNMb2FkZXIgPSBmYWxzZTtcbiAgICAgIH0sIGVycm9yOiAoZXJyOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy50YW9zdHIuZXJyb3IoJ1VuZXhwZWN0ZWQgU2VydmVyIEV4Y2VwdGlvbi4gUGxlYXNlIGNvbnRhY3QgU3lzdGVtIEFkbWluLicsICdBbGwgVmlld3MnKVxuICAgICAgfVxuICAgIH0pXG5cbiAgICB0aGlzLm9wdGlvbmFsRHJpbERvd25EYXRhU291cmNlID0gW1xuICAgICAge1xuICAgICAgICAndmlld0lkJzogXCJcIixcbiAgICAgICAgJ2ZpbHRlckNvbmRpdGlvbic6IFwiXCJcbiAgICAgIH1cbiAgICBdXG4gIH1cbiAgYWRkQ29sdW1ucygpIHtcbiAgICBsZXQgb2JqID0ge1xuICAgICAgXCJkYXRhRmllbGRcIjogXCJcIixcbiAgICAgIFwiY2FwdGlvblwiOiBcIlwiLFxuICAgICAgXCJlbnJpY2hOYW1lXCI6IFwiXCIsXG4gICAgICBcImRpc3BsYXlGb3JcIjogXCJcIixcbiAgICB9XG5cbiAgICB0aGlzLnRhYmxlRGF0YUNvbmZpZy5jaGFydF9jb25maWcucHVzaChvYmopO1xuICB9XG5cbiAgZGVsZXRlQ29sdW1ucyhpKSB7XG4gICAgdGhpcy50YWJsZURhdGFDb25maWcuY2hhcnRfY29uZmlnLnNwbGljZShpLCAxKVxuICB9XG5cbiAgZ2V0RW5yaWNoQ2xhc3NOYW1lKGUsIGl0ZW0pIHtcbiAgICBpdGVtLmVucmljaE5hbWUgPSBlLnZhbHVlO1xuXG4gIH1cblxuXG4gIG1vdmVJdGVtRm9yQ29sdW1ucyhpbmRleDogbnVtYmVyLCBkaXJlY3Rpb246ICd1cCcgfCAnZG93bicpOiB2b2lkIHtcbiAgICAvLyBQcmV2ZW50IG1vdmluZyBiZXlvbmQgYXJyYXkgYm91bmRzXG4gICAgaWYgKGluZGV4IDwgMCB8fCBpbmRleCA+PSB0aGlzLnRhYmxlRGF0YUNvbmZpZy5jaGFydF9jb25maWcubGVuZ3RoKSByZXR1cm47XG4gICAgY29uc3QgbmV3UG9zaXRpb24gPSBkaXJlY3Rpb24gPT09ICd1cCcgPyBpbmRleCAtIDEgOiBpbmRleCArIDE7XG4gICAgLy8gUHJldmVudCBtb3ZpbmcgYmV5b25kIGFycmF5IGJvdW5kc1xuICAgIGlmIChuZXdQb3NpdGlvbiA8IDAgfHwgbmV3UG9zaXRpb24gPj0gdGhpcy50YWJsZURhdGFDb25maWcuY2hhcnRfY29uZmlnLmxlbmd0aCkgcmV0dXJuO1xuXG4gICAgLy8gTW92ZSBpdGVtXG4gICAgY29uc3QgaXRlbVRvTW92ZSA9IHRoaXMudGFibGVEYXRhQ29uZmlnLmNoYXJ0X2NvbmZpZ1tpbmRleF07XG4gICAgdGhpcy50YWJsZURhdGFDb25maWcuY2hhcnRfY29uZmlnLnNwbGljZShpbmRleCwgMSk7IC8vIFJlbW92ZSBpdGVtIGZyb20gY3VycmVudCBwb3NpdGlvblxuICAgIHRoaXMudGFibGVEYXRhQ29uZmlnLmNoYXJ0X2NvbmZpZy5zcGxpY2UobmV3UG9zaXRpb24sIDAsIGl0ZW1Ub01vdmUpOyAvLyBJbnNlcnQgaXRlbSBpbiBuZXcgcG9zaXRpb25cbiAgfVxuXG4gIGdldE9iamVjdEtleXMob2JqOiBhbnkpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKG9iaik7XG4gIH1cbiAgc2V0QWN0aXZlVGFiKHRhYjogc3RyaW5nKSB7XG4gICAgdGhpcy5hY3RpdmVUYWIgPSB0YWI7XG4gIH1cblxuICBnZXRHcm91cENvbHVtbnMoY29sdW1ucykge1xuICAgIGNvbnN0IGdyb3VwZWRDb2x1bW5zID0gY29sdW1ucy5yZWR1Y2UoKGFjYywgY29sdW1uKSA9PiB7XG4gICAgICBsZXQgZ3JvdXAgPSBhY2MuZmluZChpdGVtID0+IGl0ZW0uY2FwdGlvbiA9PT0gY29sdW1uLmdyb3VwKTtcbiAgICAgIGlmICghZ3JvdXApIHtcbiAgICAgICAgZ3JvdXAgPSB7XG4gICAgICAgICAgY2FwdGlvbjogY29sdW1uLmdyb3VwLFxuICAgICAgICAgIGNvbHVtbnM6IFtdXG4gICAgICAgIH07XG4gICAgICAgIGFjYy5wdXNoKGdyb3VwKTtcbiAgICAgIH1cbiAgICAgIGdyb3VwLmNvbHVtbnMucHVzaCh7XG4gICAgICAgIGRhdGFGaWVsZDogY29sdW1uLmRhdGFGaWVsZCxcbiAgICAgICAgLy8gdmlzaWJsZTogY29sdW1uLnZpc2libGUsXG4gICAgICAgIGNhcHRpb246IGNvbHVtbi5jYXB0aW9uXG4gICAgICB9KTtcbiAgICAgIHJldHVybiBhY2M7XG4gICAgfSwgW10pO1xuICAgIHJldHVybiBncm91cGVkQ29sdW1ucztcbiAgfVxuICBnZUNvbHVtbnNGcm9tR3JvdXAoY29sdW1ucykge1xuICAgIGNvbnN0IG5ld0NvbHVtbnMgPSBbXTtcblxuICAgIGNvbHVtbnMuZm9yRWFjaChncm91cCA9PiB7XG4gICAgICBncm91cC5jb2x1bW5zLmZvckVhY2goY29sID0+IHtcbiAgICAgICAgbmV3Q29sdW1ucy5wdXNoKHtcbiAgICAgICAgICBkYXRhRmllbGQ6IGNvbC5kYXRhRmllbGQsXG4gICAgICAgICAgLy8gdmlzaWJsZTogY29sLnZpc2libGUsXG4gICAgICAgICAgY2FwdGlvbjogY29sLmNhcHRpb24sXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIG5ld0NvbHVtbnM7XG4gIH1cblxuXG4gIGdldFNhdmVDaGFydENvbmZpZygpIHtcblxuICAgIGlmICh0aGlzLm1hcFR5cGUgPT0gJ2dlb01hcCcpIHtcbiAgICAgIHRoaXMudGFibGVfY29sdW1uc19jb25maWcua3BpQ29uZmlnWydkYXRhQ29uZmlnJ10gPSB0aGlzLnRhYmxlRGF0YUNvbmZpZztcbiAgICAgIHRoaXMudGFibGVfY29sdW1uc19jb25maWcua3BpQ29uZmlnWydkYXRhQ29uZmlnJ11bJ21hcFR5cGUnXSA9IHRoaXMubWFwVHlwZTtcbiAgICAgIGlmICh0aGlzLnZpZXdQcm9wZXJ0aWVzLmNsaWNrRXZlbnRPcHRpb25zLmV2ZW50VHlwZSA9PSAnb3B0aW9uYWxEcmlsbERvd24nKSB7XG4gICAgICAgIHRoaXMudmlld1Byb3BlcnRpZXNbJ2NsaWNrRXZlbnRPcHRpb25zJ11bJ2Fzc29jaWF0ZWRWaWV3cyddID0gdGhpcy5vcHRpb25hbERyaWxEb3duRGF0YVNvdXJjZTtcbiAgICAgIH1cbiAgICAgIHRoaXMudGFibGVfY29sdW1uc19jb25maWcua3BpQ29uZmlnWyd2aWV3UHJvcGVydGllcyddID0gdGhpcy52aWV3UHJvcGVydGllcztcbiAgICAgIHRoaXMudGFibGVfY29sdW1uc19jb25maWdbJ3Blcm1pc3Npb25zJ10gPSB0aGlzLnVzZXJPcHRpb25Db250YWluZXI7XG5cbiAgICAgIHRoaXMuY3JlYXRlT3RoZXJDb21wb25lbnRWaWV3LmVtaXQodGhpcy50YWJsZV9jb2x1bW5zX2NvbmZpZyk7XG4gICAgfSBlbHNlIGlmICh0aGlzLm1hcFR5cGUgPT0gJ2J1YmJsZU1hcCcpIHtcbiAgICAgIHRoaXMudGFibGVfY29sdW1uc19jb25maWcua3BpQ29uZmlnWydkYXRhQ29uZmlnJ10gPSB0aGlzLmJ1YmJsZU1hcENvbmZpZztcbiAgICAgIHRoaXMudGFibGVfY29sdW1uc19jb25maWcua3BpQ29uZmlnWydkYXRhQ29uZmlnJ11bJ2NoYXJ0X2NvbmZpZyddID0gdGhpcy50YWJsZURhdGFDb25maWcuY2hhcnRfY29uZmlnO1xuICAgICAgdGhpcy50YWJsZV9jb2x1bW5zX2NvbmZpZy5rcGlDb25maWdbJ2RhdGFDb25maWcnXVsnbWFwVHlwZSddID0gdGhpcy5tYXBUeXBlO1xuXG4gICAgICBpZiAodGhpcy52aWV3UHJvcGVydGllcy5jbGlja0V2ZW50T3B0aW9ucy5ldmVudFR5cGUgPT0gJ29wdGlvbmFsRHJpbGxEb3duJykge1xuICAgICAgICB0aGlzLnZpZXdQcm9wZXJ0aWVzWydjbGlja0V2ZW50T3B0aW9ucyddWydhc3NvY2lhdGVkVmlld3MnXSA9IHRoaXMub3B0aW9uYWxEcmlsRG93bkRhdGFTb3VyY2U7XG4gICAgICB9XG5cbiAgICAgIHRoaXMudGFibGVfY29sdW1uc19jb25maWcua3BpQ29uZmlnWyd2aWV3UHJvcGVydGllcyddID0gdGhpcy52aWV3UHJvcGVydGllcztcbiAgICAgIHRoaXMudGFibGVfY29sdW1uc19jb25maWcua3BpQ29uZmlnWydkYXRhU291cmNlJ10gPSAnJztcbiAgICAgIHRoaXMudGFibGVfY29sdW1uc19jb25maWdbJ3Blcm1pc3Npb25zJ10gPSB0aGlzLnVzZXJPcHRpb25Db250YWluZXI7XG5cbiAgICAgIHRoaXMuY3JlYXRlT3RoZXJDb21wb25lbnRWaWV3LmVtaXQodGhpcy50YWJsZV9jb2x1bW5zX2NvbmZpZyk7XG5cbiAgICB9IGVsc2UgaWYgKHRoaXMubWFwVHlwZSA9PSAnY2hvcm9wbGV0aE1hcCcpIHtcbiAgICAgIHRoaXMudGFibGVfY29sdW1uc19jb25maWcua3BpQ29uZmlnWydkYXRhQ29uZmlnJ10gPSB0aGlzLmNob3JvcGxldGhNYXBDb25maWc7XG4gICAgICB0aGlzLnRhYmxlX2NvbHVtbnNfY29uZmlnLmtwaUNvbmZpZ1snZGF0YUNvbmZpZyddWydjaGFydF9jb25maWcnXSA9IHRoaXMudGFibGVEYXRhQ29uZmlnLmNoYXJ0X2NvbmZpZztcbiAgICAgIHRoaXMudGFibGVfY29sdW1uc19jb25maWcua3BpQ29uZmlnWydkYXRhQ29uZmlnJ11bJ21hcFR5cGUnXSA9IHRoaXMubWFwVHlwZTtcbiAgICAgIGlmICh0aGlzLnZpZXdQcm9wZXJ0aWVzLmNsaWNrRXZlbnRPcHRpb25zLmV2ZW50VHlwZSA9PSAnb3B0aW9uYWxEcmlsbERvd24nKSB7XG4gICAgICAgIHRoaXMudmlld1Byb3BlcnRpZXNbJ2NsaWNrRXZlbnRPcHRpb25zJ11bJ2Fzc29jaWF0ZWRWaWV3cyddID0gdGhpcy5vcHRpb25hbERyaWxEb3duRGF0YVNvdXJjZTtcbiAgICAgIH1cblxuICAgICAgdGhpcy50YWJsZV9jb2x1bW5zX2NvbmZpZy5rcGlDb25maWdbJ3ZpZXdQcm9wZXJ0aWVzJ10gPSB0aGlzLnZpZXdQcm9wZXJ0aWVzO1xuICAgICAgdGhpcy50YWJsZV9jb2x1bW5zX2NvbmZpZy5rcGlDb25maWdbJ2RhdGFTb3VyY2UnXSA9ICcnO1xuICAgICAgdGhpcy50YWJsZV9jb2x1bW5zX2NvbmZpZ1sncGVybWlzc2lvbnMnXSA9IHRoaXMudXNlck9wdGlvbkNvbnRhaW5lcjtcblxuICAgICAgdGhpcy5jcmVhdGVPdGhlckNvbXBvbmVudFZpZXcuZW1pdCh0aGlzLnRhYmxlX2NvbHVtbnNfY29uZmlnKTtcblxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnRhYmxlX2NvbHVtbnNfY29uZmlnLmtwaUNvbmZpZ1snZGF0YUNvbmZpZyddID0gdGhpcy5oZWF0TWFwQ29uZmlnO1xuICAgICAgdGhpcy50YWJsZV9jb2x1bW5zX2NvbmZpZy5rcGlDb25maWdbJ2RhdGFDb25maWcnXVsnY2hhcnRfY29uZmlnJ10gPSB0aGlzLnRhYmxlRGF0YUNvbmZpZy5jaGFydF9jb25maWc7XG4gICAgICB0aGlzLnRhYmxlX2NvbHVtbnNfY29uZmlnLmtwaUNvbmZpZ1snZGF0YUNvbmZpZyddWydtYXBUeXBlJ10gPSB0aGlzLm1hcFR5cGU7XG4gICAgICBpZiAodGhpcy52aWV3UHJvcGVydGllcy5jbGlja0V2ZW50T3B0aW9ucy5ldmVudFR5cGUgPT0gJ29wdGlvbmFsRHJpbGxEb3duJykge1xuICAgICAgICB0aGlzLnZpZXdQcm9wZXJ0aWVzWydjbGlja0V2ZW50T3B0aW9ucyddWydhc3NvY2lhdGVkVmlld3MnXSA9IHRoaXMub3B0aW9uYWxEcmlsRG93bkRhdGFTb3VyY2U7XG4gICAgICB9XG5cbiAgICAgIHRoaXMudGFibGVfY29sdW1uc19jb25maWcua3BpQ29uZmlnWyd2aWV3UHJvcGVydGllcyddID0gdGhpcy52aWV3UHJvcGVydGllcztcbiAgICAgIHRoaXMudGFibGVfY29sdW1uc19jb25maWdbJ3Blcm1pc3Npb25zJ10gPSB0aGlzLnVzZXJPcHRpb25Db250YWluZXI7XG5cbiAgICAgIHRoaXMuY3JlYXRlT3RoZXJDb21wb25lbnRWaWV3LmVtaXQodGhpcy50YWJsZV9jb2x1bW5zX2NvbmZpZyk7XG4gICAgfVxuXG4gICAgLy8gYWxlcnQoSlNPTi5zdHJpbmdpZnkodGhpcy50YWJsZV9jb2x1bW5zX2NvbmZpZywgbnVsbCwgMikpO1xuICAgIC8vIGNvbnNvbGUubG9nKHRoaXMudGFibGVfY29sdW1uc19jb25maWcpO1xuICAgIC8vIGNvbnNvbGUubG9nKHRoaXMudGFibGVfY29sdW1uc19jb25maWcpO1xuXG4gICAgLy8gdGhpcy5jcmVhdGVPdGhlckNvbXBvbmVudFZpZXcuZW1pdCh0aGlzLnRhYmxlX2NvbHVtbnNfY29uZmlnKTtcbiAgICAvLyB0aGlzLnRhYmxlX2NvbHVtbnNfY29uZmlnLmtwaUNvbmZpZ1snZGF0YVNvdXJjZSddPSB0aGlzLmRhdGFTb3Vyc2VGb3JUYWJsZTtcbiAgICAvLyB0aGlzLmNoYXJ0RGF0YVNvdXJjZUZvck1hcCA9IHRoaXMudGFibGVfY29sdW1uc19jb25maWc7XG5cbiAgfVxuXG4gIGRlbGV0ZUFzc29jaWF0ZWRQYXJhbXMoaW5kZXgpIHtcbiAgICB0aGlzLm9wdGlvbmFsRHJpbERvd25EYXRhU291cmNlLnNwbGljZShpbmRleCwgMSlcbiAgfVxuXG4gIGFkZEFzc29jaWF0ZWRQYXJhbXMoKSB7XG4gICAgdGhpcy5vcHRpb25hbERyaWxEb3duRGF0YVNvdXJjZS5wdXNoKHtcbiAgICAgICd2aWV3SWQnOiBcIlwiLFxuICAgICAgJ2ZpbHRlckNvbmRpdGlvbic6IFwiXCJcbiAgICB9KVxuICB9XG5cbiAgZ2V0U2VsZWN0ZWRFdmVudFR5cGUoZSkge1xuXG4gICAgaWYgKGUuZXZlbnQpIHtcbiAgICAgIHRoaXMub3B0aW9uYWxEcmlsRG93bkRhdGFTb3VyY2UgPSBbXTtcbiAgICAgIGlmICh0aGlzLnZpZXdQcm9wZXJ0aWVzLmNsaWNrRXZlbnRPcHRpb25zLmV2ZW50VHlwZSA9PSAnZHJpbGxkb3duJykge1xuICAgICAgICB0aGlzLnRhYmxlX2NvbHVtbnNfY29uZmlnLmtwaUNvbmZpZ1sndmlld1Byb3BlcnRpZXMnXVsnYXNzb2NpYXRlZFZpZXdzJ10gPSBbXTtcbiAgICAgIH1cbiAgICB9XG5cblxuICB9XG5cbiAgcmVzZXRWaWV3UHJvcHJzdGlzZSgpIHtcbiAgICB0aGlzLnZpZXdQcm9wZXJ0aWVzID0ge1xuICAgICAgZW5hYmxlQ2xpY2tFdmVudDogZmFsc2UsXG4gICAgICBlbmFibGVSaWdodENsaWNrRXZlbnQ6IHRydWUsXG4gICAgICBjbGlja0V2ZW50T3B0aW9uczoge1xuICAgICAgICBhc3NvY2lhdGVkVmlld3M6IFtdLFxuICAgICAgICBldmVudFR5cGU6IFwiXCJcbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgYWRkQ29sb3IoKSB7XG4gICAgdGhpcy50YWJsZURhdGFDb25maWcuY29sb3JzLnB1c2goJyMwMDAwMDAnKTsgLy8gQWRkIGRlZmF1bHQgY29sb3JcbiAgfVxuXG4gIHJlbW92ZUNvbG9yKGluZGV4OiBudW1iZXIpIHtcbiAgICB0aGlzLnRhYmxlRGF0YUNvbmZpZy5jb2xvcnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgfVxuXG4gIG9uQ29sb3JDaGFuZ2UodmFsdWU6IHN0cmluZywgaW5kZXg6IG51bWJlcikge1xuICAgIHRoaXMudGFibGVEYXRhQ29uZmlnLmNvbG9yc1tpbmRleF0gPSB2YWx1ZTsgLy8gVXBkYXRlIGNvbG9yIGF0IGluZGV4XG4gIH1cblxuICB2aWV3TWFwRm9yVGVzdCgpIHtcbiAgICBpZiAodGhpcy5tYXBUeXBlID09ICdnZW9NYXAnKSB7XG4gICAgICB0aGlzLnRhYmxlX2NvbHVtbnNfY29uZmlnLmtwaUNvbmZpZ1snZGF0YUNvbmZpZyddID0gdGhpcy50YWJsZURhdGFDb25maWc7XG4gICAgICB0aGlzLnRhYmxlX2NvbHVtbnNfY29uZmlnLmtwaUNvbmZpZ1snZGF0YUNvbmZpZyddWydtYXBUeXBlJ10gPSB0aGlzLm1hcFR5cGU7XG4gICAgfSBlbHNlIGlmICh0aGlzLm1hcFR5cGUgPT0gJ2J1YmJsZU1hcCcpIHtcbiAgICAgIHRoaXMudGFibGVfY29sdW1uc19jb25maWcua3BpQ29uZmlnWydkYXRhQ29uZmlnJ10gPSB0aGlzLmJ1YmJsZU1hcENvbmZpZztcbiAgICAgIHRoaXMudGFibGVfY29sdW1uc19jb25maWcua3BpQ29uZmlnWydkYXRhQ29uZmlnJ11bJ2NoYXJ0X2NvbmZpZyddID0gdGhpcy50YWJsZURhdGFDb25maWcuY2hhcnRfY29uZmlnO1xuICAgICAgdGhpcy50YWJsZV9jb2x1bW5zX2NvbmZpZy5rcGlDb25maWdbJ2RhdGFDb25maWcnXVsnbWFwVHlwZSddID0gdGhpcy5tYXBUeXBlO1xuICAgIH0gZWxzZSBpZiAodGhpcy5tYXBUeXBlID09ICdjaG9yb3BsZXRoTWFwJykge1xuICAgICAgdGhpcy50YWJsZV9jb2x1bW5zX2NvbmZpZy5rcGlDb25maWdbJ2RhdGFDb25maWcnXSA9IHRoaXMuY2hvcm9wbGV0aE1hcENvbmZpZztcbiAgICAgIHRoaXMudGFibGVfY29sdW1uc19jb25maWcua3BpQ29uZmlnWydkYXRhQ29uZmlnJ11bJ2NoYXJ0X2NvbmZpZyddID0gdGhpcy50YWJsZURhdGFDb25maWcuY2hhcnRfY29uZmlnO1xuICAgICAgdGhpcy50YWJsZV9jb2x1bW5zX2NvbmZpZy5rcGlDb25maWdbJ2RhdGFDb25maWcnXVsnbWFwVHlwZSddID0gdGhpcy5tYXBUeXBlO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHRoaXMudGFibGVfY29sdW1uc19jb25maWcua3BpQ29uZmlnWydkYXRhQ29uZmlnJ10gPSB0aGlzLmhlYXRNYXBDb25maWc7XG4gICAgICB0aGlzLnRhYmxlX2NvbHVtbnNfY29uZmlnLmtwaUNvbmZpZ1snZGF0YUNvbmZpZyddWydjaGFydF9jb25maWcnXSA9IHRoaXMudGFibGVEYXRhQ29uZmlnLmNoYXJ0X2NvbmZpZztcbiAgICAgIHRoaXMudGFibGVfY29sdW1uc19jb25maWcua3BpQ29uZmlnWydkYXRhQ29uZmlnJ11bJ21hcFR5cGUnXSA9IHRoaXMubWFwVHlwZTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy52aWV3UHJvcGVydGllcy5jbGlja0V2ZW50T3B0aW9ucy5ldmVudFR5cGUgPT0gJ29wdGlvbmFsRHJpbGxEb3duJykge1xuICAgICAgdGhpcy52aWV3UHJvcGVydGllc1snY2xpY2tFdmVudE9wdGlvbnMnXVsnYXNzb2NpYXRlZFZpZXdzJ10gPSB0aGlzLm9wdGlvbmFsRHJpbERvd25EYXRhU291cmNlO1xuICAgIH1cblxuICAgIHRoaXMudGFibGVfY29sdW1uc19jb25maWcua3BpQ29uZmlnWyd2aWV3UHJvcGVydGllcyddID0gdGhpcy52aWV3UHJvcGVydGllcztcblxuICAgIHRoaXMudGFibGVfY29sdW1uc19jb25maWcua3BpQ29uZmlnWydkYXRhU291cmNlJ10gPSB0aGlzLmRhdGFTb3Vyc2VGb3JUYWJsZTtcbiAgICB0aGlzLmNoYXJ0RGF0YVNvdXJjZUZvck1hcCA9IHRoaXMudGFibGVfY29sdW1uc19jb25maWc7XG5cbiAgICB0aGlzLmlzSnNvblByZXZpZXcgPSB0cnVlO1xuXG4gIH1cblxuICBoZWF0TWFwQ2F0ZWdvcnkoZSkge1xuICAgIHRoaXMuaGVhdE1hcENvbmZpZy5oZWF0TWFwQ2F0ZWdvcnkgPSBlLnZhbHVlO1xuICB9XG5cbiAgY2hhbmdlTWFwVHlwZShldmVudCkge1xuICAgIGlmIChldmVudC5ldmVudCkge1xuICAgICAgdGhpcy5oZWF0TWFwQ29uZmlnLmhlYXRNYXBDYXRlZ29yeSA9ICcnO1xuICAgIH1cbiAgfVxuXG5cblxuICBvbkxhdExuZ0tleUNoYW5nZShldmVudCkge1xuICAgIGNvbnN0IHsgbGF0S2V5LCBsbmdLZXkgfSA9IHRoaXMuY2VudGFyTGFpdG5nT2JqZWN0O1xuXG4gICAgaWYgKCFsYXRLZXkgfHwgIWxuZ0tleSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuY2FsY3VsYXRlQ2VudGVyRnJvbURhdGFzb3VyY2UoKTtcbiAgfVxuXG4gIGNhbGN1bGF0ZUNlbnRlckZyb21EYXRhc291cmNlKCkge1xuICAgIGNvbnN0IGxhdEtleSA9IHRoaXMuY2VudGFyTGFpdG5nT2JqZWN0LmxhdEtleTtcbiAgICBjb25zdCBsbmdLZXkgPSB0aGlzLmNlbnRhckxhaXRuZ09iamVjdC5sbmdLZXk7XG5cbiAgICBpZiAoIWxhdEtleSB8fCAhbG5nS2V5IHx8ICF0aGlzLmRhdGFTb3Vyc2VGb3JUYWJsZT8ubGVuZ3RoKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGV0IG1pbkxhdCA9IEluZmluaXR5O1xuICAgIGxldCBtYXhMYXQgPSAtSW5maW5pdHk7XG4gICAgbGV0IG1pbkxuZyA9IEluZmluaXR5O1xuICAgIGxldCBtYXhMbmcgPSAtSW5maW5pdHk7XG5cbiAgICB0aGlzLmRhdGFTb3Vyc2VGb3JUYWJsZS5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgY29uc3QgbGF0ID0gTnVtYmVyKGl0ZW1bbGF0S2V5XSk7XG4gICAgICBjb25zdCBsbmcgPSBOdW1iZXIoaXRlbVtsbmdLZXldKTtcblxuICAgICAgaWYgKCFpc05hTihsYXQpICYmICFpc05hTihsbmcpKSB7XG4gICAgICAgIG1pbkxhdCA9IE1hdGgubWluKG1pbkxhdCwgbGF0KTtcbiAgICAgICAgbWF4TGF0ID0gTWF0aC5tYXgobWF4TGF0LCBsYXQpO1xuICAgICAgICBtaW5MbmcgPSBNYXRoLm1pbihtaW5MbmcsIGxuZyk7XG4gICAgICAgIG1heExuZyA9IE1hdGgubWF4KG1heExuZywgbG5nKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGNvbnN0IGNlbnRlckxhdCA9IChtaW5MYXQgKyBtYXhMYXQpIC8gMjtcbiAgICBjb25zdCBjZW50ZXJMbmcgPSAobWluTG5nICsgbWF4TG5nKSAvIDI7XG5cbiAgICAvLyDinIUgc3RvcmUgYXMgU1RSSU5HXG4gICAgdGhpcy5jaG9yb3BsZXRoTWFwQ29uZmlnWydjZW50ZXJMYXQnXSA9IGNlbnRlckxhdC50b0ZpeGVkKDYpO1xuICAgIHRoaXMuY2hvcm9wbGV0aE1hcENvbmZpZ1snY2VudGVyTG5nJ10gPSBjZW50ZXJMbmcudG9GaXhlZCg2KTtcbiAgfVxuXG5cblxuXG5cbiAgLy8gZGF0YSBhZ2dyZWdhdGlvbiBjb2RlXG5cbiAgZGF0YUFnZ3JlZ2F0aW9uQ29udGFpbmVyID0gW107XG4gIGRhdGFBZ2dyZWdhdGVHcm91cEJ5Q29sdW1lOiBhbnkgPSBbXTtcbiAgYWRkQWdncmVnYXRpb25Db2x1bWUoKSB7XG4gICAgdGhpcy5kYXRhQWdncmVnYXRpb25Db250YWluZXIucHVzaCh7XG4gICAgICBhZ2dyZWdhdGVEYXRhRmllbGQ6IFwiXCIsXG4gICAgICBhZ2dyZWdhdGVGdW5jdGlvblR5cGU6IFwiXCJcbiAgICB9KVxuICB9XG5cbiAgZGVsZXRlQWdncmVnYXRpb25Db2x1bWUoaSkge1xuICAgIHRoaXMuZGF0YUFnZ3JlZ2F0aW9uQ29udGFpbmVyLnNwbGljZShpLCAxKVxuICB9XG5cblxuXG4gIG9uRGF0YUdyb3VwQnlDaGFuZ2UoZXZlbnQ6IGFueSkge1xuICAgIGlmICh0aGlzLmNob3JvcGxldGhNYXBDb25maWcuaXNEYXRhQWdncmVnYXRpb24pIHtcblxuICAgICAgdGhpcy5kYXRhQWdncmVnYXRpb25Db250YWluZXIucHVzaCh7XG4gICAgICAgIGFnZ3JlZ2F0ZURhdGFGaWVsZDogXCJcIixcbiAgICAgICAgYWdncmVnYXRlRnVuY3Rpb25UeXBlOiBcIlwiXG4gICAgICB9KVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmRhdGFTb3Vyc2VGb3JUYWJsZSA9IHRoaXMucHJldmlld0RhdGEuc2xpY2UoMCwgMTApO1xuICAgICAgdGhpcy5jb25maWdDb2x1bWUgPSAodGhpcy5wcmV2aWV3RGF0YVswXSkgPyBPYmplY3Qua2V5cyh0aGlzLnByZXZpZXdEYXRhWzBdKSA6IFtdO1xuICAgIH1cblxuICAgIHRoaXMudGFibGVfY29sdW1uc19jb25maWcua3BpQ29uZmlnWydkYXRhQ29uZmlnJ10gPSB0aGlzLmNob3JvcGxldGhNYXBDb25maWc7XG4gICAgdGhpcy50YWJsZV9jb2x1bW5zX2NvbmZpZy5rcGlDb25maWdbJ2RhdGFDb25maWcnXVsnY2hhcnRfY29uZmlnJ10gPSB0aGlzLnRhYmxlRGF0YUNvbmZpZy5jaGFydF9jb25maWc7XG4gICAgdGhpcy50YWJsZV9jb2x1bW5zX2NvbmZpZy5rcGlDb25maWdbJ2RhdGFDb25maWcnXVsnbWFwVHlwZSddID0gdGhpcy5tYXBUeXBlO1xuXG4gICAgdGhpcy5jaGFydERhdGFTb3VyY2VGb3JNYXAgPSB7IC4uLnRoaXMudGFibGVfY29sdW1uc19jb25maWcgfTtcbiAgfVxuXG4gIHNhdmVBZ2dyZWdhdGlvbkNvbHVtZSgpIHtcbiAgICBpZiAodGhpcy5jaG9yb3BsZXRoTWFwQ29uZmlnLmlzRGF0YUFnZ3JlZ2F0aW9uKSB7XG4gICAgICBjb25zdCBhZ2dyZWF0aW9uRGF0YSA9IHRoaXMuZ2V0R3JvdXBEYXRhRm9yQ2hhcnQodGhpcy5wcmV2aWV3RGF0YSwgdGhpcy5kYXRhQWdncmVnYXRpb25Db250YWluZXIsIHRoaXMuZGF0YUFnZ3JlZ2F0ZUdyb3VwQnlDb2x1bWUpO1xuICAgICAgdGhpcy5kYXRhU291cnNlRm9yVGFibGUgPSBhZ2dyZWF0aW9uRGF0YTtcbiAgICAgIHRoaXMuY29uZmlnQ29sdW1lID0gKGFnZ3JlYXRpb25EYXRhWzBdKSA/IE9iamVjdC5rZXlzKGFnZ3JlYXRpb25EYXRhWzBdKSA6IFtdO1xuXG4gICAgICBpZiAodGhpcy5jaG9yb3BsZXRoTWFwQ29uZmlnLmlzRGF0YUFnZ3JlZ2F0aW9uKSB7XG4gICAgICAgIHRoaXMuY2hvcm9wbGV0aE1hcENvbmZpZ1snZGF0YUFnZ3JlZ2F0aW9uQ29uZmlnJ10gPSB7XG4gICAgICAgICAgXCJkYXRhQWdncmVnYXRlQ29sdW1lc1wiOiB0aGlzLmRhdGFBZ2dyZWdhdGlvbkNvbnRhaW5lcixcbiAgICAgICAgICBcImFnZ3JlZ2F0ZUZpZWxkc1wiOiB0aGlzLmRhdGFBZ2dyZWdhdGVHcm91cEJ5Q29sdW1lXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY29uc29sZS5sb2coYWdncmVhdGlvbkRhdGEpO1xuICAgIH1cbiAgfVxuXG5cbiAgZ2V0R3JvdXBEYXRhRm9yQ2hhcnQoZGF0YSwgYWdncmVnYXRpb25Db25maWcsIGdyb3VwQnlDb2x1bW5zKSB7XG4gICAgY29uc3QgZ3JvdXBNYXAgPSB7fTtcblxuICAgIGRhdGEuZm9yRWFjaChyb3cgPT4ge1xuICAgICAgY29uc3QgZ3JvdXBLZXkgPSBncm91cEJ5Q29sdW1ucy5tYXAoY29sID0+IHJvd1tjb2xdKS5qb2luKFwifHxcIik7XG5cbiAgICAgIGlmICghZ3JvdXBNYXBbZ3JvdXBLZXldKSB7XG4gICAgICAgIGdyb3VwTWFwW2dyb3VwS2V5XSA9IHt9O1xuXG4gICAgICAgIGdyb3VwQnlDb2x1bW5zLmZvckVhY2goY29sID0+IHtcbiAgICAgICAgICBncm91cE1hcFtncm91cEtleV1bY29sXSA9IHJvd1tjb2xdO1xuICAgICAgICB9KTtcblxuICAgICAgICBhZ2dyZWdhdGlvbkNvbmZpZy5mb3JFYWNoKCh7IGFnZ3JlZ2F0ZURhdGFGaWVsZCwgYWdncmVnYXRlRnVuY3Rpb25UeXBlIH0pID0+IHtcbiAgICAgICAgICBzd2l0Y2ggKGFnZ3JlZ2F0ZUZ1bmN0aW9uVHlwZSkge1xuICAgICAgICAgICAgY2FzZSBcInN1bVwiOlxuICAgICAgICAgICAgY2FzZSBcImF2Z1wiOlxuICAgICAgICAgICAgICBncm91cE1hcFtncm91cEtleV1bYWdncmVnYXRlRGF0YUZpZWxkXSA9IDA7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBcIm1pblwiOlxuICAgICAgICAgICAgICBncm91cE1hcFtncm91cEtleV1bYWdncmVnYXRlRGF0YUZpZWxkXSA9IEluZmluaXR5O1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgXCJtYXhcIjpcbiAgICAgICAgICAgICAgZ3JvdXBNYXBbZ3JvdXBLZXldW2FnZ3JlZ2F0ZURhdGFGaWVsZF0gPSAtSW5maW5pdHk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBcImNvdW50XCI6XG4gICAgICAgICAgICAgIGdyb3VwTWFwW2dyb3VwS2V5XVthZ2dyZWdhdGVEYXRhRmllbGRdID0gMDtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGFnZ3JlZ2F0ZUZ1bmN0aW9uVHlwZSA9PT0gXCJhdmdcIikge1xuICAgICAgICAgICAgZ3JvdXBNYXBbZ3JvdXBLZXldW2Ake2FnZ3JlZ2F0ZURhdGFGaWVsZH1fX2NvdW50YF0gPSAwO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIC8vIEFwcGx5IGFnZ3JlZ2F0aW9uc1xuICAgICAgYWdncmVnYXRpb25Db25maWcuZm9yRWFjaCgoeyBhZ2dyZWdhdGVEYXRhRmllbGQsIGFnZ3JlZ2F0ZUZ1bmN0aW9uVHlwZSB9KSA9PiB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gcm93W2FnZ3JlZ2F0ZURhdGFGaWVsZF07XG5cbiAgICAgICAgc3dpdGNoIChhZ2dyZWdhdGVGdW5jdGlvblR5cGUpIHtcbiAgICAgICAgICBjYXNlIFwic3VtXCI6XG4gICAgICAgICAgICBncm91cE1hcFtncm91cEtleV1bYWdncmVnYXRlRGF0YUZpZWxkXSArPSB2YWx1ZTtcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgY2FzZSBcImF2Z1wiOlxuICAgICAgICAgICAgZ3JvdXBNYXBbZ3JvdXBLZXldW2FnZ3JlZ2F0ZURhdGFGaWVsZF0gKz0gdmFsdWU7XG4gICAgICAgICAgICBncm91cE1hcFtncm91cEtleV1bYCR7YWdncmVnYXRlRGF0YUZpZWxkfV9fY291bnRgXSArPSAxO1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICBjYXNlIFwibWluXCI6XG4gICAgICAgICAgICBncm91cE1hcFtncm91cEtleV1bYWdncmVnYXRlRGF0YUZpZWxkXSA9XG4gICAgICAgICAgICAgIE1hdGgubWluKGdyb3VwTWFwW2dyb3VwS2V5XVthZ2dyZWdhdGVEYXRhRmllbGRdLCB2YWx1ZSk7XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgIGNhc2UgXCJtYXhcIjpcbiAgICAgICAgICAgIGdyb3VwTWFwW2dyb3VwS2V5XVthZ2dyZWdhdGVEYXRhRmllbGRdID1cbiAgICAgICAgICAgICAgTWF0aC5tYXgoZ3JvdXBNYXBbZ3JvdXBLZXldW2FnZ3JlZ2F0ZURhdGFGaWVsZF0sIHZhbHVlKTtcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgY2FzZSBcImNvdW50XCI6XG4gICAgICAgICAgICBncm91cE1hcFtncm91cEtleV1bYWdncmVnYXRlRGF0YUZpZWxkXSArPSAxO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgLy8gRmluYWxpemUgYXZlcmFnZXNcbiAgICBPYmplY3QudmFsdWVzKGdyb3VwTWFwKS5mb3JFYWNoKGdyb3VwID0+IHtcbiAgICAgIGFnZ3JlZ2F0aW9uQ29uZmlnLmZvckVhY2goKHsgYWdncmVnYXRlRGF0YUZpZWxkLCBhZ2dyZWdhdGVGdW5jdGlvblR5cGUgfSkgPT4ge1xuICAgICAgICBpZiAoYWdncmVnYXRlRnVuY3Rpb25UeXBlID09PSBcImF2Z1wiKSB7XG4gICAgICAgICAgZ3JvdXBbYWdncmVnYXRlRGF0YUZpZWxkXSA9XG4gICAgICAgICAgICBncm91cFthZ2dyZWdhdGVEYXRhRmllbGRdIC8gZ3JvdXBbYCR7YWdncmVnYXRlRGF0YUZpZWxkfV9fY291bnRgXTtcbiAgICAgICAgICBkZWxldGUgZ3JvdXBbYCR7YWdncmVnYXRlRGF0YUZpZWxkfV9fY291bnRgXTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyhncm91cE1hcCk7XG4gIH1cblxuXG59XG4iLCI8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXdyYXBcIj5cbiAgICA8ZGl2IGNsYXNzPVwidy1mdWxsIG14LTIgYm9yZGVyLXJcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc0pzb25QcmV2aWV3XCI+XG4gICAgICAgICAgICA8cHJlPjxjb2RlPnt7anNhb25EYXRhc291cmNlIHwganNvbn19PC9jb2RlPjwvcHJlPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzSnNvblByZXZpZXdcIj5cbiAgICAgICAgICAgIDxhcHAtZ2FtbWEtZ2VvLWNoYXJ0IFtjaGFydERhdGFTb3VyY2VdPVwiY2hhcnREYXRhU291cmNlRm9yTWFwXCI+PC9hcHAtZ2FtbWEtZ2VvLWNoYXJ0PlxuICAgICAgICAgICAgPCEtLSA8YXBwLWdvb2dsZS1nZW8tbWFwIFtjaGFydERhdGFTb3VyY2VdPVwiY2hhcnREYXRhU291cmNlRm9yTWFwXCI+PC9hcHAtZ29vZ2xlLWdlby1tYXA+IC0tPlxuXG4gICAgICAgICAgICA8ZGl2ICNkeW5hbWljQ29udGFpbmVyPjwvZGl2PlxuXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJ3LWZ1bGwgbXgtMlwiPlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtYi00IGJvcmRlci1iIGJvcmRlci1ncmF5LTIwMCBkYXJrOmJvcmRlci1ncmF5LTcwMFwiPlxuICAgICAgICAgICAgPHVsIGNsYXNzPVwiZmxleCBmbGV4LXdyYXAgLW1iLXB4IHRleHQtc20gZm9udC1tZWRpdW0gdGV4dC1jZW50ZXJcIiByb2xlPVwidGFibGlzdFwiPlxuICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cIm1lLTJcIiByb2xlPVwicHJlc2VudGF0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJpbmxpbmUtYmxvY2sgcC00IGJvcmRlci1iLTIgcm91bmRlZC10LWxnXCIgW25nQ2xhc3NdPVwieyBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGV4dC1wdXJwbGUtNjAwIGJvcmRlci1wdXJwbGUtNjAwIGRhcms6dGV4dC1wdXJwbGUtNTAwIGRhcms6Ym9yZGVyLXB1cnBsZS01MDAnOiBhY3RpdmVUYWIgPT09ICdiYXNpYycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RleHQtZ3JheS01MDAgZGFyazp0ZXh0LWdyYXktNDAwIGJvcmRlci10cmFuc3BhcmVudCc6IGFjdGl2ZVRhYiAhPT0gJ2Jhc2ljJyBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIiAoY2xpY2spPVwic2V0QWN0aXZlVGFiKCdiYXNpYycpXCIgdHlwZT1cImJ1dHRvblwiIHJvbGU9XCJ0YWJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIEJhc2ljXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwibWUtMlwiIHJvbGU9XCJwcmVzZW50YXRpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImlubGluZS1ibG9jayBwLTQgYm9yZGVyLWItMiByb3VuZGVkLXQtbGdcIiBbbmdDbGFzc109XCJ7IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXh0LXB1cnBsZS02MDAgYm9yZGVyLXB1cnBsZS02MDAgZGFyazp0ZXh0LXB1cnBsZS01MDAgZGFyazpib3JkZXItcHVycGxlLTUwMCc6IGFjdGl2ZVRhYiA9PT0gJ2NoYXJ0X2NvbmZpZycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RleHQtZ3JheS01MDAgZGFyazp0ZXh0LWdyYXktNDAwIGJvcmRlci10cmFuc3BhcmVudCc6IGFjdGl2ZVRhYiAhPT0gJ2NoYXJ0X2NvbmZpZycgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCIgKGNsaWNrKT1cInNldEFjdGl2ZVRhYignY2hhcnRfY29uZmlnJylcIiB0eXBlPVwiYnV0dG9uXCIgcm9sZT1cInRhYlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgQ2hhcnQgQ29sdW1uc1xuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cIm1lLTJcIiByb2xlPVwicHJlc2VudGF0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJpbmxpbmUtYmxvY2sgcC00IGJvcmRlci1iLTIgcm91bmRlZC10LWxnXCIgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGV4dC1wdXJwbGUtNjAwIGJvcmRlci1wdXJwbGUtNjAwIGRhcms6dGV4dC1wdXJwbGUtNTAwIGRhcms6Ym9yZGVyLXB1cnBsZS01MDAnOiBhY3RpdmVUYWIgPT09ICdwcm9wZXJ0aWVzJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RleHQtZ3JheS01MDAgZGFyazp0ZXh0LWdyYXktNDAwIGJvcmRlci10cmFuc3BhcmVudCc6IGFjdGl2ZVRhYiAhPT0gJ3Byb3BlcnRpZXMnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiIChjbGljayk9XCJzZXRBY3RpdmVUYWIoJ3Byb3BlcnRpZXMnKVwiIHR5cGU9XCJidXR0b25cIiByb2xlPVwidGFiXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBQcm9wZXJ0aWVzXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwibWUtMlwiIHJvbGU9XCJwcmVzZW50YXRpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImlubGluZS1ibG9jayBwLTQgYm9yZGVyLWItMiByb3VuZGVkLXQtbGdcIiBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RleHQtcHVycGxlLTYwMCBib3JkZXItcHVycGxlLTYwMCBkYXJrOnRleHQtcHVycGxlLTUwMCBkYXJrOmJvcmRlci1wdXJwbGUtNTAwJzogYWN0aXZlVGFiID09PSAncGVybWlzc2lvbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RleHQtZ3JheS01MDAgZGFyazp0ZXh0LWdyYXktNDAwIGJvcmRlci10cmFuc3BhcmVudCc6IGFjdGl2ZVRhYiAhPT0gJ3Blcm1pc3Npb24nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCIgKGNsaWNrKT1cInNldEFjdGl2ZVRhYigncGVybWlzc2lvbicpXCIgdHlwZT1cImJ1dHRvblwiIHJvbGU9XCJ0YWJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIE1hbmFnZSBQZXJtaXNzaW9uc1xuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2xpPlxuXG4gICAgICAgICAgICA8L3VsPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGlkPVwiZGVmYXVsdC1zdHlsZWQtdGFiLWNvbnRlbnRcIj5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJhY3RpdmVUYWIgPT09ICdiYXNpYydcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBmbGV4LWF1dG8gbWluLXctMCBteS0yXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LXNtIHB5LTEgZm9udC1leHRyYWJvbGQgYm9yZGVyLWIgYmctZ3JheS03MDAgdGV4dC13aGl0ZSBweC0yXCI+IEZpbHRlciBUaXRsZVxuICAgICAgICAgICAgICAgICAgICAgICAgQ29uZmlnXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBwdC0yIGJvcmRlci14IGJvcmRlci1iXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMSBtYi0xIHctMS8zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbWQgbWItMVwiPiBNYXAgTGlicmFyeSA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHgtc2VsZWN0LWJveCBbc2VhcmNoRW5hYmxlZF09XCJ0cnVlXCIgW2l0ZW1zXT1cIlsnR29vZ2xlIE1hcHMnXVwiPjwvZHgtc2VsZWN0LWJveD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB4LTEgbWItMSB3LTEvM1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIG1iLTFcIj4gU2VsZWN0IE1hcCB0eXBlIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkeC1zZWxlY3QtYm94IFtzZWFyY2hFbmFibGVkXT1cInRydWVcIiBbaXRlbXNdPVwiY2hhcnRWaWV3VHlwZURhdGFTb3VyY2VcIiBkaXNwbGF5RXhwcj1cIm5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZUV4cHI9XCJ2YWx1ZVwiIFsobmdNb2RlbCldPVwibWFwVHlwZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvblZhbHVlQ2hhbmdlZCk9XCJjaGFuZ2VNYXBUeXBlKCRldmVudClcIj48L2R4LXNlbGVjdC1ib3g+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm1hcFR5cGUgPT0gJ2hlYXRNYXAnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB4LTEgbWItMSB3LTEvM1wiPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIG1iLTFcIj4gSGVhdCBNYXAgQ2F0ZWdvcnkgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkeC1zZWxlY3QtYm94IFtzZWFyY2hFbmFibGVkXT1cInRydWVcIiBbZGF0YVNvdXJjZV09XCJoZWF0TWFwVHlwZURhdGFzb3VyY2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheUV4cHI9XCJuYW1lXCIgdmFsdWVFeHByPVwidmFsdWVcIiBbKG5nTW9kZWwpXT1cImhlYXRNYXBDb25maWcuaGVhdE1hcENhdGVnb3J5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvblZhbHVlQ2hhbmdlZCk9XCJoZWF0TWFwQ2F0ZWdvcnkoJGV2ZW50KVwiPjwvZHgtc2VsZWN0LWJveD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm1hcFR5cGUgPT0gJ2dlb01hcCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IHB0LTIgYm9yZGVyLXggYm9yZGVyLWJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMSBtYi0xIHctMS8zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIG1iLTFcIj4gUmVnaW9uIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHgtc2VsZWN0LWJveCBbc2VhcmNoRW5hYmxlZF09XCJ0cnVlXCIgW2l0ZW1zXT1cInJlZ2lvbkRhdGFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJ0YWJsZURhdGFDb25maWcucmVnaW9uXCI+PC9keC1zZWxlY3QtYm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0xIG1iLTEgdy0xLzNcIiAqbmdJZj1cInRhYmxlRGF0YUNvbmZpZy5yZWdpb24gPT0gJ2NpdHknXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIG1iLTFcIj4gVHlwZSBSZWdpb24gQ29kZTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHgtdGV4dC1ib3ggWyhuZ01vZGVsKV09XCJ0YWJsZURhdGFDb25maWcucmVnaW9uQ29kZVwiPjwvZHgtdGV4dC1ib3g+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwdC0yIGJvcmRlci14IGJvcmRlci1iIFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJteS0yIGZsZXgganVzdGlmeS1iZXR3ZWVuXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cInB4LTEgbWItMSB3LWZ1bGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIG1iLTFcIj4gVGl0bGU8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkeC10ZXh0LWJveCBbKG5nTW9kZWwpXT1cInRhYmxlRGF0YUNvbmZpZy50aXRsZVwiPjwvZHgtdGV4dC1ib3g+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB4LTEgbWItMSB3LWZ1bGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIG1iLTFcIj4gQXJndW1lbnQgRmllbGQ8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkeC1zZWxlY3QtYm94IFtzZWFyY2hFbmFibGVkXT1cInRydWVcIiBbaXRlbXNdPVwiY29uZmlnQ29sdW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInRhYmxlRGF0YUNvbmZpZy5hcmd1bWVudEZpZWxkXCI+PC9keC1zZWxlY3QtYm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB4LTEgbWItMSB3LWZ1bGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIG1iLTFcIj4gQ2hhcnR2YWx1IEZpZWxkPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHgtc2VsZWN0LWJveCBbc2VhcmNoRW5hYmxlZF09XCJ0cnVlXCIgW2l0ZW1zXT1cImNvbmZpZ0NvbHVtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJ0YWJsZURhdGFDb25maWcuY2hhcnRWYWx1ZUZpZWxkXCI+PC9keC1zZWxlY3QtYm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB4LTEgbWItMSB3LWZ1bGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIG1iLTFcIj4gc2l6ZTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR4LXRleHQtYm94IFsobmdNb2RlbCldPVwidGFibGVEYXRhQ29uZmlnLnNpemVcIj48L2R4LXRleHQtYm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMSBtYi0yIHctZnVsbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbWQgbWItMlwiPkJhY2tncm91bmQgQ29sb3I8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkeC1jb2xvci1ib3ggWyhuZ01vZGVsKV09XCJ0YWJsZURhdGFDb25maWcuYmFja2dyb3VuZENvbG9yXCI+PC9keC1jb2xvci1ib3g+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJweC00IG10LTYgdy1mdWxsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHgtY2hlY2stYm94IFt2YWx1ZV09XCJ0YWJsZURhdGFDb25maWcuY29tbW9uQ29uZmlnLmlzU2VhcmNoQm94XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInRhYmxlRGF0YUNvbmZpZy5jb21tb25Db25maWcuaXNTZWFyY2hCb3hcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ9XCJTZWFyY2ggQm94XCI+PC9keC1jaGVjay1ib3g+XG4gICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB4LTEgbWItMSB3LWZ1bGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIG1iLTJcIj4gRGlzcGxheSBGb3JtYXRlIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR4LXNlbGVjdC1ib3ggW2l0ZW1zXT1cIlsnZGFpbHknLCdob3VybHknLCdtb250aGx5J11cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwidGFibGVfY29sdW1uc19jb25maWcua3BpQ29uZmlnLmZvcm1hdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZWFkT25seV09XCJmYWxzZVwiPjwvZHgtc2VsZWN0LWJveD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0xIG1iLTEgdy1mdWxsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tZCBtYi0yXCI+IEtleSBUbyBQYXNzIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR4LXRhZy1ib3ggW2l0ZW1zXT1cImNvbmZpZ0NvbHVtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJ0YWJsZV9jb2x1bW5zX2NvbmZpZy5rcGlDb25maWcua2V5VG9QYXNzXCI+PC9keC10YWctYm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIiBwdC0yIGJvcmRlci14IGJvcmRlci1iIFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LXNtIHB5LTEgZm9udC1leHRyYWJvbGQgYm9yZGVyLWIgYmctZ3JheS03MDAgdGV4dC13aGl0ZSBweC0yXCI+IENvbG9yc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4ICBmbGV4LXdyYXAgcHgtMSBtYi0yIG10LTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggbXItMiBtYi0yXCIgKm5nRm9yPVwibGV0IGNvbG9yIG9mIHRhYmxlRGF0YUNvbmZpZy5jb2xvcnM7IGxldCBpID0gaW5kZXhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtci0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR4LWNvbG9yLWJveCBbKG5nTW9kZWwpXT1cInRhYmxlRGF0YUNvbmZpZy5jb2xvcnNbaV1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob25WYWx1ZUNoYW5nZWQpPVwib25Db2xvckNoYW5nZSgkZXZlbnQudmFsdWUsIGkpXCI+PC9keC1jb2xvci1ib3g+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ7e2NvbW1vblNlcnZpY2UuYnRuX2Rhbmdlcl9zbX19IGN1cnNvci1wb2ludGVyIHB4LTJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmVDb2xvcihpKVwiPjxpIGNsYXNzPVwiZmEgZmEtdHJhc2gtb1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwicHgtMlwiPiA8YnV0dG9uIGNsYXNzPVwie3tjb21tb25TZXJ2aWNlLmJ0bl9kYW5nZXJfc219fVwiIChjbGljayk9XCJyZW1vdmVDb2xvcihpKVwiPlJlbW92ZTwvYnV0dG9uPjwvZGl2PiAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBqdXN0aWZ5LWVuZCBteS0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ7e2NvbW1vblNlcnZpY2UuYnRuX3N1Y2Nlc3Nfc219fVwiIChjbGljayk9XCJhZGRDb2xvcigpXCI+QWRkIENvbG9yPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJtYXBUeXBlID09ICdjaG9yb3BsZXRoTWFwJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cgcHQtMiBib3JkZXIteCBib3JkZXItYlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0xIG1iLTEgdy0xLzNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbWQgbWItMVwiPiBNYXAgWm9vbSA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR4LXRleHQtYm94IFsobmdNb2RlbCldPVwiY2hvcm9wbGV0aE1hcENvbmZpZy56b29tXCI+PC9keC10ZXh0LWJveD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMSBtYi0yIG10LTYgdy1mdWxsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkeC1jaGVjay1ib3ggWyhuZ01vZGVsKV09XCJpc0NlbnRlcmRDaG9yb3BsZXRoTWFwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ9XCJDZW50ZXJkIFBvc2l0aW9uXCI+PC9keC1jaGVjay1ib3g+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNDZW50ZXJkQ2hvcm9wbGV0aE1hcFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMSBtYi0xIHctMS8zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tZCBtYi0xXCI+IFNlbGVjdCBMYXRpdHVkZSBLZXk8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkeC1zZWxlY3QtYm94IFtzZWFyY2hFbmFibGVkXT1cInRydWVcIiBbaXRlbXNdPVwiY29uZmlnQ29sdW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNlbnRhckxhaXRuZ09iamVjdC5sYXRLZXlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvblZhbHVlQ2hhbmdlZCk9XCJvbkxhdExuZ0tleUNoYW5nZSgkZXZlbnQpXCI+PC9keC1zZWxlY3QtYm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB4LTEgbWItMSB3LTEvM1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbWQgbWItMVwiPiBTZWxlY3QgTG9uZ2l0dWRlIEtleTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR4LXNlbGVjdC1ib3ggW3NlYXJjaEVuYWJsZWRdPVwidHJ1ZVwiIFtpdGVtc109XCJjb25maWdDb2x1bWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY2VudGFyTGFpdG5nT2JqZWN0LmxuZ0tleVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9uVmFsdWVDaGFuZ2VkKT1cIm9uTGF0TG5nS2V5Q2hhbmdlKCRldmVudClcIj48L2R4LXNlbGVjdC1ib3g+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMSBtYi0xIHctMS8zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIG1iLTFcIj4gTWFwIENlbnRlciBMYXRpdHVkZTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHgtdGV4dC1ib3ggWyhuZ01vZGVsKV09XCJjaG9yb3BsZXRoTWFwQ29uZmlnLmNlbnRlckxhdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVhZE9ubHldPVwiaXNDZW50ZXJkQ2hvcm9wbGV0aE1hcFwiPjwvZHgtdGV4dC1ib3g+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB4LTEgbWItMSB3LTEvM1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tZCBtYi0xXCI+IE1hcCBDZW50ZXIgTG9uZ2l0dWRlPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkeC10ZXh0LWJveCBbKG5nTW9kZWwpXT1cImNob3JvcGxldGhNYXBDb25maWcuY2VudGVyTG5nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZWFkT25seV09XCJpc0NlbnRlcmRDaG9yb3BsZXRoTWFwXCI+PC9keC10ZXh0LWJveD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwdC0yIGJvcmRlci14IGJvcmRlci1iIFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJteS0yIGZsZXggZmxleC1yb3cganVzdGlmeS1iZXR3ZWVuXCI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB4LTEgbWItMSB3LWZ1bGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIG1iLTFcIj4gQXJndW1lbnQgRmllbGQ8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkeC1zZWxlY3QtYm94IFtzZWFyY2hFbmFibGVkXT1cInRydWVcIiBbaXRlbXNdPVwiY29uZmlnQ29sdW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNob3JvcGxldGhNYXBDb25maWcuYXJndW1lbnRGaWVsZFwiPjwvZHgtc2VsZWN0LWJveD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB4LTEgbWItMSB3LWZ1bGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIG1iLTFcIj4gc2l6ZTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR4LXRleHQtYm94IFsobmdNb2RlbCldPVwiY2hvcm9wbGV0aE1hcENvbmZpZy5zaXplXCI+PC9keC10ZXh0LWJveD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB4LTEgbWItMiB3LWZ1bGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIG1iLTJcIj5Db2xvciBPbmU8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkeC1jb2xvci1ib3ggWyhuZ01vZGVsKV09XCJjaG9yb3BsZXRoTWFwQ29uZmlnLmNvbG9yT25lXCI+PC9keC1jb2xvci1ib3g+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0xIG1iLTIgdy1mdWxsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tZCBtYi0yXCI+Q29sb3IgVHdvPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHgtY29sb3ItYm94IFsobmdNb2RlbCldPVwiY2hvcm9wbGV0aE1hcENvbmZpZy5jb2xvclR3b1wiPjwvZHgtY29sb3ItYm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0xIG1iLTEgdy1mdWxsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tZCBtYi0yXCI+IERpc3BsYXkgRm9ybWF0ZSA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkeC1zZWxlY3QtYm94IFtpdGVtc109XCJbJ2RhaWx5JywnaG91cmx5JywnbW9udGhseSddXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInRhYmxlX2NvbHVtbnNfY29uZmlnLmtwaUNvbmZpZy5mb3JtYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVhZE9ubHldPVwiZmFsc2VcIj48L2R4LXNlbGVjdC1ib3g+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMSBtYi0xIHctZnVsbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbWQgbWItMlwiPiBLZXkgVG8gUGFzcyA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkeC10YWctYm94IFtpdGVtc109XCJjb25maWdDb2x1bWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwidGFibGVfY29sdW1uc19jb25maWcua3BpQ29uZmlnLmtleVRvUGFzc1wiPjwvZHgtdGFnLWJveD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXktMiBmbGV4LXJvdyBqdXN0aWZ5LWJldHdlZW5cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB4LTEgbWItMSB3LWZ1bGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIG1iLTFcIj4gR2pzb24gRmlsZSBQYXRoPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHgtdGV4dC1ib3ggWyhuZ01vZGVsKV09XCJjaG9yb3BsZXRoTWFwQ29uZmlnLmdqc29uRmlsZVBhdGhcIj48L2R4LXRleHQtYm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJteS0yIGZsZXggZmxleC1yb3cganVzdGlmeS1iZXR3ZWVuXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0xIG1iLTIgbXQtNiB3LWZ1bGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkeC1jaGVjay1ib3ggWyhuZ01vZGVsKV09XCJjaG9yb3BsZXRoTWFwQ29uZmlnLmlzVmFsdWVGaWVsZFJhbmdlU2xpZGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0PVwiUmFuZ2UgU2xpZGVyXCI+PC9keC1jaGVjay1ib3g+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMSBtYi0xIHctZnVsbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbWQgbWItMVwiPiBTbGlkZXIgU3BlZWQ8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkeC1udW1iZXItYm94IFsobmdNb2RlbCldPVwiY2hvcm9wbGV0aE1hcENvbmZpZy5zbGlkZVNwZWVkXCI+PC9keC1udW1iZXItYm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB4LTEgbWItMSB3LWZ1bGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIG1iLTFcIj4gVmFsdWUgRm9yIFNsaWRlcjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR4LXNlbGVjdC1ib3ggW3NlYXJjaEVuYWJsZWRdPVwidHJ1ZVwiIFtpdGVtc109XCJjb25maWdDb2x1bWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY2hvcm9wbGV0aE1hcENvbmZpZy5zbGlkZXJWYWx1ZUZpZWxkXCI+PC9keC1zZWxlY3QtYm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy0xLzQgcHgtMiBtLTNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tZCBtYi0xIG10LThcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHgtY2hlY2stYm94IFsobmdNb2RlbCldPVwiY2hvcm9wbGV0aE1hcENvbmZpZy5pc0RhdGFBZ2dyZWdhdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uRGF0YUdyb3VwQnlDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ9XCJBcHBseSBEYXRhIEFnZ3JlZ2F0aW9uXCI+PC9keC1jaGVjay1ib3g+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgcm91bmRlZCBib3JkZXIgcC0zIG0tNlwiICpuZ0lmPVwiY2hvcm9wbGV0aE1hcENvbmZpZy5pc0RhdGFBZ2dyZWdhdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0xIG15LTQgdy0xLzNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbWQgbWItMlwiPkdyb3VwIEJ5IENvbHVtbnM8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR4LXRhZy1ib3ggW3NlYXJjaEVuYWJsZWRdPVwidHJ1ZVwiIFtpdGVtc109XCJjb25maWdDb2x1bWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJkYXRhQWdncmVnYXRlR3JvdXBCeUNvbHVtZVwiPjwvZHgtdGFnLWJveD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm9yZGVyIHAtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXktMiBmbGV4IGZsZXgtcm93IGJvcmRlci1iXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIGRhdGFBZ2dyZWdhdGlvbkNvbnRhaW5lcjsgbGV0IGkgPSBpbmRleFwiPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMSBtYi0xIHctZnVsbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIG1iLTJcIj5BZ2dyZWdhdGlvbiBDb2x1bW5zPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR4LXNlbGVjdC1ib3ggW3NlYXJjaEVuYWJsZWRdPVwidHJ1ZVwiIFtpdGVtc109XCJjb25maWdDb2x1bWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cIml0ZW0uYWdncmVnYXRlRGF0YUZpZWxkXCI+PC9keC1zZWxlY3QtYm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiIHB4LTIgbWItMSB3LWZ1bGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tZCBtYi0yXCI+RnVuY3Rpb24gVHlwZTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkeC1zZWxlY3QtYm94IFtzZWFyY2hFbmFibGVkXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaXRlbXNdPVwiWydzdW0nLCdhdmcnLCdtaW4nLCdtYXgnLCdjb3VudCddXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJpdGVtLmFnZ3JlZ2F0ZUZ1bmN0aW9uVHlwZVwiPjwvZHgtc2VsZWN0LWJveD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgbXQtNiB3LTEvNlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ7e2NvbW1vblNlcnZpY2UuYnRuX2Rhbmdlcl9zbX19IGN1cnNvci1wb2ludGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImRlbGV0ZUFnZ3JlZ2F0aW9uQ29sdW1lKGkpXCI+PGkgY2xhc3M9XCJmYSBmYS10cmFzaC1vXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cganVzdGlmeS1lbmQgbXktMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInt7Y29tbW9uU2VydmljZS5idG5fcHJpbWFyeV9zbX19IGN1cnNvci1wb2ludGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYWRkQWdncmVnYXRpb25Db2x1bWUoKVwiPkFkZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtZTwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInt7Y29tbW9uU2VydmljZS5idG5fc3VjY2Vzc19zbX19IGN1cnNvci1wb2ludGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2F2ZUFnZ3JlZ2F0aW9uQ29sdW1lKClcIj5TYXZlIEFnZ3JlZ2F0aW9uPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImhlYXRNYXBDb25maWcuaGVhdE1hcENhdGVnb3J5ID09ICdoZWF0TWFwT25seScgfHwgaGVhdE1hcENvbmZpZy5oZWF0TWFwQ2F0ZWdvcnkgPT0gJ2hlYXRNYXBNYXJrZXInIHx8IGhlYXRNYXBDb25maWcuaGVhdE1hcENhdGVnb3J5ID09ICdoZWF0TWFwQW5kTWFya2VyJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgtY29sXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtc20gcHktMSBmb250LWV4dHJhYm9sZCBib3JkZXItYiBiZy1ncmF5LTcwMCB0ZXh0LXdoaXRlIHB4LTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2VudGVyIExvY2F0aW9uIENvbmZpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IHB0LTIgYm9yZGVyLXggYm9yZGVyLWJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cInB4LTEgbWItMSB3LTEvNFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIG1iLTFcIj4gTGF0aXR1ZGUgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkeC10ZXh0LWJveCBbKG5nTW9kZWwpXT1cImhlYXRNYXBDb25maWcuY2VudGVyTGF0aXR1ZGVcIj48L2R4LXRleHQtYm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMSBtYi0xIHctMS80XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbWQgbWItMVwiPiBMb25naXR1ZGUgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR4LXRleHQtYm94IFsobmdNb2RlbCldPVwiaGVhdE1hcENvbmZpZy5jZW50ZXJMb25naXR1ZGVcIj48L2R4LXRleHQtYm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB4LTEgbWItMSB3LTEvNFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJoZWF0TWFwQ29uZmlnLmhlYXRNYXBDYXRlZ29yeSAhPSAnaGVhdE1hcEFuZE1hcmtlcidcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tZCBtYi0xXCI+IFpvb20gTGFiZWwgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR4LXRleHQtYm94IFsobmdNb2RlbCldPVwiaGVhdE1hcENvbmZpZy56b29tXCI+PC9keC10ZXh0LWJveD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB4LTEgbWItMSB3LTEvNFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIG1iLTFcIj4gQ3VzdG9tIEljb25zIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkeC10ZXh0LWJveCBbKG5nTW9kZWwpXT1cImhlYXRNYXBDb25maWcuaWNvblwiPjwvZHgtdGV4dC1ib3g+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0xIG1iLTEgdy0xLzRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tZCBtYi0xXCI+IHNpemU8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHgtdGV4dC1ib3ggWyhuZ01vZGVsKV09XCJoZWF0TWFwQ29uZmlnLnNpemVcIj48L2R4LXRleHQtYm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleC1jb2xcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1zbSBweS0xIGZvbnQtZXh0cmFib2xkIGJvcmRlci1iIGJnLWdyYXktNzAwIHRleHQtd2hpdGUgcHgtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMb2NhdGlvbiBNYXJrZXIgQ29uZmlnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggcHQtMiBib3JkZXIteCBib3JkZXItYlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB4LTEgbWItMSB3LTEvM1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIG1iLTFcIj4gTGF0aXR1ZGUgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR4LXNlbGVjdC1ib3ggW3NlYXJjaEVuYWJsZWRdPVwidHJ1ZVwiIFtpdGVtc109XCJjb25maWdDb2x1bWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImhlYXRNYXBDb25maWcubWFya2VyTGF0aXR1ZGVcIj48L2R4LXNlbGVjdC1ib3g+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0xIG1iLTEgdy0xLzNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tZCBtYi0xXCI+IExvbmdpdHVkZSA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHgtc2VsZWN0LWJveCBbc2VhcmNoRW5hYmxlZF09XCJ0cnVlXCIgW2l0ZW1zXT1cImNvbmZpZ0NvbHVtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiaGVhdE1hcENvbmZpZy5tYXJrZXJMb25naXR1ZGVcIj48L2R4LXNlbGVjdC1ib3g+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0xIG1iLTEgdy1mdWxsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbWQgbWItMlwiPiBEaXNwbGF5IEZvcm1hdGUgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR4LXNlbGVjdC1ib3ggW2l0ZW1zXT1cIlsnZGFpbHknLCdob3VybHknLCdtb250aGx5J11cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInRhYmxlX2NvbHVtbnNfY29uZmlnLmtwaUNvbmZpZy5mb3JtYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRPbmx5XT1cImZhbHNlXCI+PC9keC1zZWxlY3QtYm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibWFwVHlwZSA9PSAnYnViYmxlTWFwJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgtY29sXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtc20gcHktMSBmb250LWV4dHJhYm9sZCBib3JkZXItYiBiZy1ncmF5LTcwMCB0ZXh0LXdoaXRlIHB4LTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQnViYmxlIE1hcCBDb25maWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBwdC0yIGJvcmRlci14IGJvcmRlci1iXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMSBtYi0xIHctMS8zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbWQgbWItMVwiPiBBcmd1bWVudCBWYWx1ZSA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHgtc2VsZWN0LWJveCBbc2VhcmNoRW5hYmxlZF09XCJ0cnVlXCIgW2l0ZW1zXT1cImNvbmZpZ0NvbHVtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiYnViYmxlTWFwQ29uZmlnLmFncnVtZW50VmFsdWVcIj48L2R4LXNlbGVjdC1ib3g+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0xIG1iLTEgdy0xLzRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tZCBtYi0xXCI+IEJ1YmJsZSBDb2xvciA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHgtY29sb3ItYm94IFsobmdNb2RlbCldPVwiYnViYmxlTWFwQ29uZmlnLmJ1YmJsZUNvbG9yXCI+PC9keC1jb2xvci1ib3g+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0xIG1iLTEgdy0xLzRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tZCBtYi0xXCI+QnViYmxlIE1pbmltdW0gc2l6ZTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkeC10ZXh0LWJveCBbKG5nTW9kZWwpXT1cImJ1YmJsZU1hcENvbmZpZy5idWJibGVNaW5pbXVtU2l6ZVwiPjwvZHgtdGV4dC1ib3g+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0xIG1iLTEgdy0xLzRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tZCBtYi0xXCI+QnViYmxlIE1heGltdW0gc2l6ZTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkeC10ZXh0LWJveCBbKG5nTW9kZWwpXT1cImJ1YmJsZU1hcENvbmZpZy5idWJibGVNYXhpbXVtU2l6ZVwiPjwvZHgtdGV4dC1ib3g+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0xIG1iLTEgdy0xLzRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tZCBtYi0xXCI+IHNpemU8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHgtdGV4dC1ib3ggWyhuZ01vZGVsKV09XCJidWJibGVNYXBDb25maWcuc2l6ZVwiPjwvZHgtdGV4dC1ib3g+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0xIG1iLTEgdy0xLzRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tZCBtYi0xXCI+IFNob3J0IEJ5PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR4LXNlbGVjdC1ib3ggW3NlYXJjaEVuYWJsZWRdPVwidHJ1ZVwiIFtpdGVtc109XCJjb25maWdDb2x1bWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImJ1YmJsZU1hcENvbmZpZy5zb3J0QnlcIj48L2R4LXNlbGVjdC1ib3g+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cInB4LTEgbWItMSB3LTEvNFwiICpuZ0lmPVwiaGVhdE1hcENvbmZpZy5oZWF0TWFwQ2F0ZWdvcnkgIT0gJ2hlYXRNYXBBbmRNYXJrZXInXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbWQgbWItMVwiPiBab29tIExhYmVsICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHgtdGV4dC1ib3ggWyhuZ01vZGVsKV09XCJoZWF0TWFwQ29uZmlnLnpvb21cIj48L2R4LXRleHQtYm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgtY29sXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtc20gcHktMSBmb250LWV4dHJhYm9sZCBib3JkZXItYiBiZy1ncmF5LTcwMCB0ZXh0LXdoaXRlIHB4LTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9jYXRpb24gTWFya2VyIENvbmZpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IHB0LTIgYm9yZGVyLXggYm9yZGVyLWJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0xIG1iLTEgdy0xLzNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tZCBtYi0xXCI+IExhdGl0dWRlIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkeC1zZWxlY3QtYm94IFtzZWFyY2hFbmFibGVkXT1cInRydWVcIiBbaXRlbXNdPVwiY29uZmlnQ29sdW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJidWJibGVNYXBDb25maWcubWFya2VyTGF0aXR1ZGVcIj48L2R4LXNlbGVjdC1ib3g+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0xIG1iLTEgdy0xLzNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tZCBtYi0xXCI+IExvbmdpdHVkZSA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHgtc2VsZWN0LWJveCBbc2VhcmNoRW5hYmxlZF09XCJ0cnVlXCIgW2l0ZW1zXT1cImNvbmZpZ0NvbHVtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiYnViYmxlTWFwQ29uZmlnLm1hcmtlckxvbmdpdHVkZVwiPjwvZHgtc2VsZWN0LWJveD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB4LTEgbWItMSB3LWZ1bGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tZCBtYi0yXCI+IERpc3BsYXkgRm9ybWF0ZSA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHgtc2VsZWN0LWJveCBbaXRlbXNdPVwiWydkYWlseScsJ2hvdXJseScsJ21vbnRobHknXVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwidGFibGVfY29sdW1uc19jb25maWcua3BpQ29uZmlnLmZvcm1hdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVhZE9ubHldPVwiZmFsc2VcIj48L2R4LXNlbGVjdC1ib3g+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cblxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG5cblxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiYWN0aXZlVGFiID09PSAnY2hhcnRfY29uZmlnJ1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoLWZ1bGwgb3ZlcmZsb3cteC1hdXRvXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGZsZXgtYXV0byBtaW4tdy0wXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1zbSBweS0xIGZvbnQtZXh0cmFib2xkIGJvcmRlci1iIGJnLWdyYXktNzAwIHRleHQtd2hpdGUgcHgtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRvb2x0aXAgQ29sdW1uc1xuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHQtMiBib3JkZXIteCBib3JkZXItYiBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXktMiBib3JkZXItYiBmbGV4IGZsZXgtcm93XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgdGFibGVEYXRhQ29uZmlnLmNoYXJ0X2NvbmZpZzsgbGV0IGkgPSBpbmRleDtcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwicHgtMSBtYi0yIG10LTYgdy1mdWxsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHgtY2hlY2stYm94IFt2YWx1ZV09XCJpdGVtLnZpc2libGVcIiBbKG5nTW9kZWwpXT1cIml0ZW0udmlzaWJsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dD1cIlZpc2libGl0eVwiPjwvZHgtY2hlY2stYm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB4LTEgbWItMiB3LWZ1bGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIG1iLTJcIj4gVmFsdWUgRmllbGQ8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkeC1zZWxlY3QtYm94IFtzZWFyY2hFbmFibGVkXT1cInRydWVcIiBbaXRlbXNdPVwiY29uZmlnQ29sdW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cIml0ZW0uZGF0YUZpZWxkXCI+PC9keC1zZWxlY3QtYm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB4LTEgbWItMiB3LWZ1bGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIG1iLTJcIj4gQ2FwdGlvbjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR4LXRleHQtYm94IFsobmdNb2RlbCldPVwiaXRlbS5jYXB0aW9uXCI+PC9keC10ZXh0LWJveD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMSBtYi0yIHctZnVsbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbWQgbWItMlwiPkRpc3BsYXkgRm9yPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHgtc2VsZWN0LWJveCBbaXRlbXNdPVwiWydtYXAnLCAndG9vbHRpcCddXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cIml0ZW0uZGlzcGxheUZvclwiPjwvZHgtc2VsZWN0LWJveD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0yIG1iLTIgdy1mdWxsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tZCBtYi0yXCI+IFVJIEZ1bmN0aW9uPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHgtc2VsZWN0LWJveCBbaXRlbXNdPVwiZW5yaWNoTmFtZUxpc3RcIiBbKG5nTW9kZWwpXT1cIml0ZW0uZW5yaWNoTmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlYXJjaEVuYWJsZWRdPVwidHJ1ZVwiPjwvZHgtc2VsZWN0LWJveD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyIG10LTggdy1mdWxsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiaSAhPT0gMFwiIGNsYXNzPVwie3tjb21tb25TZXJ2aWNlLmJ0bl9saWdodF9zbX19IGN1cnNvci1wb2ludGVyIG14LTFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJtb3ZlSXRlbUZvckNvbHVtbnMoaSwgJ3VwJylcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWFycm93LXVwXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJpICE9PSB0YWJsZURhdGFDb25maWcuY2hhcnRfY29uZmlnLmxlbmd0aCAtIDFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwie3tjb21tb25TZXJ2aWNlLmJ0bl9saWdodF9zbX19IGN1cnNvci1wb2ludGVyIG14LTFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJtb3ZlSXRlbUZvckNvbHVtbnMoaSwgJ2Rvd24nKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtYXJyb3ctZG93blwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInt7Y29tbW9uU2VydmljZS5idG5fZGFuZ2VyX3NtfX0gY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJkZWxldGVDb2x1bW5zKGkpXCI+PGkgY2xhc3M9XCJmYSBmYS10cmFzaC1vXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGp1c3RpZnktZW5kIG15LTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ7e2NvbW1vblNlcnZpY2UuYnRuX3ByaW1hcnlfc219fSBjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJhZGRDb2x1bW5zKClcIj5BZGRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5zPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiYWN0aXZlVGFiID09PSAncHJvcGVydGllcydcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaC1mdWxsIG92ZXJmbG93LXgtYXV0b1wiPlxuICAgICAgICAgICAgICAgICAgICA8YXBwLWxvYWRlciAqbmdJZj1cImlzTG9hZGVyXCI+PC9hcHAtbG9hZGVyPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzTG9hZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBqdXN0aWZ5LWJldHdlZW4gYm9yZGVyLWIgcHktM1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJteC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkeC1jaGVjay1ib3ggW3ZhbHVlXT1cInZpZXdQcm9wZXJ0aWVzLmVuYWJsZUNsaWNrRXZlbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJ2aWV3UHJvcGVydGllcy5lbmFibGVDbGlja0V2ZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ9XCJFbmFibGUgQ2xpY2sgRXZlbnRcIj48L2R4LWNoZWNrLWJveD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXgtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHgtY2hlY2stYm94IFt2YWx1ZV09XCJ2aWV3UHJvcGVydGllcy5lbmFibGVSaWdodENsaWNrRXZlbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJ2aWV3UHJvcGVydGllcy5lbmFibGVSaWdodENsaWNrRXZlbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dD1cIkVuYWJsZSBSaWdodCBDbGlja1wiPjwvZHgtY2hlY2stYm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy1mdWxsIHAtMlwiICpuZ0lmPVwidmlld1Byb3BlcnRpZXMuZW5hYmxlQ2xpY2tFdmVudFwiPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgZmxleC1hdXRvIG1pbi13LTAgbXktMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1zbSBweS0xIGZvbnQtZXh0cmFib2xkIGJvcmRlci1iIGJnLWdyYXktNzAwIHRleHQtd2hpdGUgcHgtMlwiPiBFdmVudFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHlwZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3B0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy1mdWxsIHAtMyBib3JkZXIteCBib3JkZXItYiBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctZnVsbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tZCBtYi0yXCI+IEV2ZW50IFR5cGU8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy1mdWxsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkeC1zZWxlY3QtYm94IFtpdGVtc109XCJbJ2RyaWxsZG93bicsJ29wdGlvbmFsRHJpbGxEb3duJ11cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9uVmFsdWVDaGFuZ2VkKT1cImdldFNlbGVjdGVkRXZlbnRUeXBlKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJ2aWV3UHJvcGVydGllcy5jbGlja0V2ZW50T3B0aW9ucy5ldmVudFR5cGVcIj48L2R4LXNlbGVjdC1ib3g+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ2aWV3UHJvcGVydGllcy5jbGlja0V2ZW50T3B0aW9ucy5ldmVudFR5cGUgPT0gJ2RyaWxsZG93bidcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBqdXN0aWZ5LWJldHdlZW4gbXQtM1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy1mdWxsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tZCBtYi0yXCI+IEFzc29jaWF0ZWQgVmlld3M8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkeC10YWctYm94IFtpdGVtc109XCJhbGxDb25maWd1cmVkVmlld3NcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwidmlld1Byb3BlcnRpZXMuY2xpY2tFdmVudE9wdGlvbnMuYXNzb2NpYXRlZFZpZXdzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZUV4cHI9XCJ2aWV3SWRcIiBkaXNwbGF5RXhwcj1cInZpZXdOYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2hvd1NlbGVjdGlvbkNvbnRyb2xzXT1cInRydWVcIiBbc2VhcmNoRW5hYmxlZF09XCJ0cnVlXCI+PC9keC10YWctYm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwidmlld1Byb3BlcnRpZXMuY2xpY2tFdmVudE9wdGlvbnMuZXZlbnRUeXBlID09ICdvcHRpb25hbERyaWxsRG93bidcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBqdXN0aWZ5LWJldHdlZW4gbXQtM1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy1mdWxsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2Ygb3B0aW9uYWxEcmlsRG93bkRhdGFTb3VyY2U7bGV0IGkgPSBpbmRleDtcIj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGp1c3RpZnktYmV0d2VlblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXgtMiB3LWZ1bGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIG1iLTJcIj4gQXNzb2NpYXRlZCBWaWV3czwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR4LXRhZy1ib3ggW2l0ZW1zXT1cImFsbENvbmZpZ3VyZWRWaWV3c1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJpdGVtLnZpZXdJZFwiIHZhbHVlRXhwcj1cInZpZXdJZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheUV4cHI9XCJ2aWV3TmFtZVwiIFtzaG93U2VsZWN0aW9uQ29udHJvbHNdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21heERpc3BsYXllZFRhZ3NdPVwiMlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlYXJjaEVuYWJsZWRdPVwidHJ1ZVwiPjwvZHgtdGFnLWJveD5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm14LTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIG1iLTJcIj4gQXNzb2NpYXRlZCBQYXJhbXM8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkeC10ZXh0LWJveFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiaXRlbS5maWx0ZXJDb25kaXRpb25cIj48L2R4LXRleHQtYm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm14LTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInt7Y29tbW9uU2VydmljZS5idG5fZGFuZ2VyX3NtfX0gY3Vyc29yLXBvaW50ZXIgbXQtOFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImRlbGV0ZUFzc29jaWF0ZWRQYXJhbXMoaSlcIj48aVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZhIGZhLXRyYXNoLW9cIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGp1c3RpZnktZW5kIG10LTRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwie3tjb21tb25TZXJ2aWNlLmJ0bl9wcmltYXJ5X3NtfX0gY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYWRkQXNzb2NpYXRlZFBhcmFtcygpXCI+QWRkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhcmFtczwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInt7Y29tbW9uU2VydmljZS5idG5fbGlnaHRfbWR9fSBjdXJzb3ItcG9pbnRlciBtdC0yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZXNldFZpZXdQcm9wcnN0aXNlKClcIj5SZXNldCBBbGw8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cImFjdGl2ZVRhYiA9PT0gJ3Blcm1pc3Npb24nXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImgtZnVsbCBvdmVyZmxvdy14LWF1dG9cIj5cbiAgICAgICAgICAgICAgICAgICAgPGFwcC11c2VyLWFjY2VzcyBbKHVzZXJPcHRpb25Db250YWluZXIpXT1cInVzZXJPcHRpb25Db250YWluZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPC9hcHAtdXNlci1hY2Nlc3M+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8L2Rpdj5cblxuXG4gICAgPC9kaXY+XG48L2Rpdj5cblxuPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cgYm9yZGVyLXQgcGwtM1wiPlxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktc3RhcnQgbXgtMVwiPlxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwie3tjb21tb25TZXJ2aWNlLmJ0bl93YXJuaW5nX21kfX0gY3Vyc29yLXBvaW50ZXIgbXQtMlwiIChjbGljayk9XCJ2aWV3TWFwRm9yVGVzdCgpXCI+XG4gICAgICAgICAgICBQcmV2aWV3PC9idXR0b24+XG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJ7e2NvbW1vblNlcnZpY2UuYnRuX3ByaW1hcnlfbWR9fSBjdXJzb3ItcG9pbnRlciBtdC0yXCIgKGNsaWNrKT1cImlzSnNvblByZXZpZXcgPSBmYWxzZVwiPkRhdGFcbiAgICAgICAgICAgIFByZXZpZXc8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWVuZCBteC0xIGZsZXgtZ3Jvd1wiPlxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwie3tjb21tb25TZXJ2aWNlLmJ0bl9zdWNjZXNzX21kfX0gY3Vyc29yLXBvaW50ZXIgbXQtMlwiXG4gICAgICAgICAgICAoY2xpY2spPVwiZ2V0U2F2ZUNoYXJ0Q29uZmlnKClcIj5TdWJtaXQ8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbjwvZGl2PiJdfQ==