@c8y/ngx-components 1021.22.68 → 1021.22.70
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.
- package/core/common/interval-based-reload.abstract.d.ts +12 -1
- package/core/common/interval-based-reload.abstract.d.ts.map +1 -1
- package/datapoint-selector/datapoint-attributes-form/datapoint-attributes-form.component.d.ts +15 -46
- package/datapoint-selector/datapoint-attributes-form/datapoint-attributes-form.component.d.ts.map +1 -1
- package/datapoint-selector/datapoint-attributes-form/datapoint-attributes.model.d.ts +3 -0
- package/datapoint-selector/datapoint-attributes-form/datapoint-attributes.model.d.ts.map +1 -1
- package/datapoint-selector/datapoint-selection.model.d.ts +4 -6
- package/datapoint-selector/datapoint-selection.model.d.ts.map +1 -1
- package/esm2022/core/common/interval-based-reload.abstract.mjs +50 -2
- package/esm2022/datapoint-selector/datapoint-attributes-form/datapoint-attributes-form.component.mjs +47 -22
- package/esm2022/datapoint-selector/datapoint-attributes-form/datapoint-attributes.model.mjs +1 -1
- package/esm2022/datapoint-selector/datapoint-selection.model.mjs +1 -1
- package/esm2022/datapoint-selector/datapoint-selector-list-item/datapoint-selector-list-item.component.mjs +3 -3
- package/esm2022/widgets/implementations/alarms/alarm-widget-alarms-reload.component.mjs +9 -7
- package/esm2022/widgets/implementations/datapoints-table/datapoints-table-config/datapoints-table-config.component.mjs +3 -2
- package/esm2022/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-reload/datapoints-reload.component.mjs +9 -7
- package/fesm2022/c8y-ngx-components-datapoint-selector.mjs +48 -23
- package/fesm2022/c8y-ngx-components-datapoint-selector.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-implementations-alarms.mjs +8 -6
- package/fesm2022/c8y-ngx-components-widgets-implementations-alarms.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-table.mjs +10 -7
- package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-table.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components.mjs +392 -346
- package/fesm2022/c8y-ngx-components.mjs.map +1 -1
- package/locales/de.po +9 -0
- package/locales/es.po +11 -1
- package/locales/fr.po +9 -0
- package/locales/ja_JP.po +9 -0
- package/locales/ko.po +9 -0
- package/locales/nl.po +9 -0
- package/locales/pl.po +9 -0
- package/locales/pt_BR.po +9 -0
- package/locales/zh_CN.po +9 -0
- package/locales/zh_TW.po +9 -0
- package/package.json +1 -1
- package/widgets/implementations/alarms/alarm-widget-alarms-reload.component.d.ts +7 -2
- package/widgets/implementations/alarms/alarm-widget-alarms-reload.component.d.ts.map +1 -1
- package/widgets/implementations/datapoints-table/datapoints-table-config/datapoints-table-config.component.d.ts.map +1 -1
- package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-reload/datapoints-reload.component.d.ts +7 -2
- package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-reload/datapoints-reload.component.d.ts.map +1 -1
|
@@ -52,7 +52,8 @@ export class DatapointsTableWidgetConfigComponent {
|
|
|
52
52
|
this.datapointSelectionConfig = {};
|
|
53
53
|
this.disabledAggregationOptions = {};
|
|
54
54
|
this.defaultFormOptions = {
|
|
55
|
-
|
|
55
|
+
selectableChartLineTypes: [],
|
|
56
|
+
selectableAxisTypes: [],
|
|
56
57
|
showRedRange: true,
|
|
57
58
|
showYellowRange: true
|
|
58
59
|
};
|
|
@@ -384,4 +385,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
|
|
|
384
385
|
}], ctorParameters: () => [{ type: i1.DatapointsTableService }, { type: i2.DatapointsTableConfigService }, { type: i3.FormBuilder }, { type: i3.NgForm }, { type: i4.WidgetConfigComponent }], propDecorators: { config: [{
|
|
385
386
|
type: Input
|
|
386
387
|
}] } });
|
|
387
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXBvaW50cy10YWJsZS1jb25maWcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vd2lkZ2V0cy9pbXBsZW1lbnRhdGlvbnMvZGF0YXBvaW50cy10YWJsZS9kYXRhcG9pbnRzLXRhYmxlLWNvbmZpZy9kYXRhcG9pbnRzLXRhYmxlLWNvbmZpZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi93aWRnZXRzL2ltcGxlbWVudGF0aW9ucy9kYXRhcG9pbnRzLXRhYmxlL2RhdGFwb2ludHMtdGFibGUtY29uZmlnL2RhdGFwb2ludHMtdGFibGUtY29uZmlnLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUNwRSxPQUFPLEVBRUwsV0FBVyxFQUNYLFdBQVcsRUFDWCxNQUFNLEVBQ04sbUJBQW1CLEVBR25CLFVBQVUsRUFDWCxNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFDTCxrQkFBa0IsRUFDbEIsa0JBQWtCLEVBQ2xCLHNCQUFzQixFQUd0QixVQUFVLEVBQ1gsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUM5RSxPQUFPLEVBR0wsdUJBQXVCLEVBRXhCLE1BQU0sd0NBQXdDLENBQUM7QUFDaEQsT0FBTyxFQUNMLGtCQUFrQixFQUNsQixnQ0FBZ0MsRUFFakMsTUFBTSxnREFBZ0QsQ0FBQztBQUN4RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDdEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNqRCxPQUFPLEVBRUwscUJBQXFCLEVBQ3JC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QUMsS0FBSyxDQUFDLFdBQVcsQ0FBQztRQUN4QyxPQUFPLE1BQU0sQ0FBQyxXQUFXLENBQUM7SUFDNUIsQ0FBQzs4R0FuYVUsb0NBQW9DO2tHQUFwQyxvQ0FBb0MsMEhDOUVqRCw0c1JBK05BLDJDRHhKSSxVQUFVLCswRUFDVix1QkFBdUIsc1RBQ3ZCLHdCQUF3QiwwSUFDeEIsYUFBYSw4VkFDYixtQkFBbUI7OzJGQUdWLG9DQUFvQztrQkFaaEQsU0FBUzsrQkFDRSxrQ0FBa0MsY0FFaEMsSUFBSSxXQUNQO3dCQUNQLFVBQVU7d0JBQ1YsdUJBQXVCO3dCQUN2Qix3QkFBd0I7d0JBQ3hCLGFBQWE7d0JBQ2IsbUJBQW1CO3FCQUNwQjt5TkFNUSxNQUFNO3NCQUFkLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQWJzdHJhY3RDb250cm9sLFxuICBGb3JtQnVpbGRlcixcbiAgRm9ybUNvbnRyb2wsXG4gIE5nRm9ybSxcbiAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgVmFsaWRhdGlvbkVycm9ycyxcbiAgVmFsaWRhdG9yRm4sXG4gIFZhbGlkYXRvcnNcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtcbiAgQUdHUkVHQVRJT05fTEFCRUxTLFxuICBBR0dSRUdBVElPTl9WQUxVRVMsXG4gIEFHR1JFR0FUSU9OX1ZBTFVFU19BUlIsXG4gIEFnZ3JlZ2F0aW9uT3B0aW9uLFxuICBBZ2dyZWdhdGlvbk9wdGlvblN0YXR1cyxcbiAgQ29yZU1vZHVsZVxufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IFdpZGdldENvbmZpZ0NvbXBvbmVudCB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvY29udGV4dC1kYXNoYm9hcmQnO1xuaW1wb3J0IHtcbiAgRGF0YXBvaW50QXR0cmlidXRlc0Zvcm1Db25maWcsXG4gIERhdGFwb2ludFNlbGVjdG9yTW9kYWxPcHRpb25zLFxuICBEYXRhcG9pbnRTZWxlY3Rvck1vZHVsZSxcbiAgS1BJRGV0YWlsc1xufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL2RhdGFwb2ludC1zZWxlY3Rvcic7XG5pbXBvcnQge1xuICBkYXRlUmFuZ2VWYWxpZGF0b3IsXG4gIFRJTUVfUkFOR0VfSU5URVJWQUxfVU5JVFNfVkFMVUVTLFxuICBUaW1lUmFuZ2VJbnRlcnZhbFxufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL2RhdGFwb2ludHMtZXhwb3J0LXNlbGVjdG9yJztcbmltcG9ydCB7IElOVEVSVkFMX1ZBTFVFUyB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvaW50ZXJ2YWwtcGlja2VyJztcbmltcG9ydCB7IFBvcG92ZXJNb2R1bGUgfSBmcm9tICduZ3gtYm9vdHN0cmFwL3BvcG92ZXInO1xuaW1wb3J0IHsgbWVyZ2UsIFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgRGF0YXBvaW50c1RhYmxlQ29uZmlnLFxuICBEQVRFX1NFTEVDVElPTl9MQUJFTFMsXG4gIERBVEVfU0VMRUNUSU9OX1ZBTFVFUyxcbiAgREFURV9TRUxFQ1RJT05fVkFMVUVTX0FSUixcbiAgRGF0ZVJhbmdlLFxuICBERUZBVUxUX0NPVU5URE9XTl9WQUxVRSxcbiAgSU5URVJWQUxfVkFMVUVTX0FSUixcbiAgUkVGUkVTSF9JTlRFUlZBTF9WQUxVRVNfQVJSLFxuICBUSU1FX1JBTkdFX0lOVEVSVkFMX0xBQkVMU1xufSBmcm9tICcuLi9kYXRhcG9pbnRzLXRhYmxlLXdpZGdldC5tb2RlbCc7XG5pbXBvcnQgeyBEYXRhcG9pbnRzVGFibGVTZXJ2aWNlIH0gZnJvbSAnLi4vZGF0YXBvaW50cy10YWJsZS5zZXJ2aWNlJztcbmltcG9ydCB7IERhdGVSYW5nZVBpY2tlckNvbXBvbmVudCB9IGZyb20gJy4uL2RhdGUtcmFuZ2UtcGlja2VyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEYXRhcG9pbnRzVGFibGVDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi9kYXRhcG9pbnRzLXRhYmxlLWNvbmZpZy5zZXJ2aWNlJztcblxuZXhwb3J0IGZ1bmN0aW9uIG1pbk9uZURhdGFwb2ludEFjdGl2ZSgpOiBWYWxpZGF0b3JGbiB7XG4gIHJldHVybiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPT4ge1xuICAgIGNvbnN0IGRhdGFwb2ludHM6IEtQSURldGFpbHNbXSA9IGNvbnRyb2wudmFsdWU7XG5cbiAgICBpZiAoIWRhdGFwb2ludHMgfHwgIWRhdGFwb2ludHMubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCBhY3RpdmVEYXRhcG9pbnRzID0gZGF0YXBvaW50cy5maWx0ZXIoZGF0YXBvaW50ID0+IGRhdGFwb2ludC5fX2FjdGl2ZSk7XG5cbiAgICBpZiAoYWN0aXZlRGF0YXBvaW50cy5sZW5ndGggPj0gMSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiB7IGV4YWN0bHlPbmVEYXRhcG9pbnROZWVkc1RvQmVBY3RpdmU6IHRydWUgfTtcbiAgfTtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LWRhdGFwb2ludHMtdGFibGUtdmlldy1jb25maWcnLFxuICB0ZW1wbGF0ZVVybDogJy4vZGF0YXBvaW50cy10YWJsZS1jb25maWcuY29tcG9uZW50Lmh0bWwnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29yZU1vZHVsZSxcbiAgICBEYXRhcG9pbnRTZWxlY3Rvck1vZHVsZSxcbiAgICBEYXRlUmFuZ2VQaWNrZXJDb21wb25lbnQsXG4gICAgUG9wb3Zlck1vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgRGF0YXBvaW50c1RhYmxlV2lkZ2V0Q29uZmlnQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAvKipcbiAgICogIERhdGEgcG9pbnRzIHRhYmxlIHdpZGdldCBjb25maWcuXG4gICAqL1xuICBASW5wdXQoKSBjb25maWc6IERhdGFwb2ludHNUYWJsZUNvbmZpZztcblxuICByZWFkb25seSBBR0dSRUdBVElPTl9MQUJFTFMgPSBBR0dSRUdBVElPTl9MQUJFTFM7XG4gIHJlYWRvbmx5IERBVEVfU0VMRUNUSU9OX0xBQkVMUyA9IERBVEVfU0VMRUNUSU9OX0xBQkVMUztcbiAgcmVhZG9ubHkgREVGQVVMVF9EQVRFX1NFTEVDVE9SX1ZBTFVFID0gREFURV9TRUxFQ1RJT05fVkFMVUVTLmRhc2hib2FyZF9jb250ZXh0O1xuICByZWFkb25seSBERUZBVUxUX0lOVEVSVkFMX1ZBTFVFID0gSU5URVJWQUxfVkFMVUVTLmhvdXJzO1xuICByZWFkb25seSBUSU1FX1JBTkdFX0lOVEVSVkFMX0xBQkVMUyA9IFRJTUVfUkFOR0VfSU5URVJWQUxfTEFCRUxTO1xuXG4gIHJlYWRvbmx5IEFHR1JFR0FUSU9OX1ZBTFVFU19BUlIgPSBBR0dSRUdBVElPTl9WQUxVRVNfQVJSO1xuICByZWFkb25seSBEQVRFX1NFTEVDVElPTl9WQUxVRVNfQVJSID0gREFURV9TRUxFQ1RJT05fVkFMVUVTX0FSUjtcbiAgcmVhZG9ubHkgSU5URVJWQUxfVkFMVUVTX0FSUiA9IElOVEVSVkFMX1ZBTFVFU19BUlI7XG4gIHJlYWRvbmx5IFJFRlJFU0hfSU5URVJWQUxfVkFMVUVTX0FSUiA9IFJFRlJFU0hfSU5URVJWQUxfVkFMVUVTX0FSUjtcblxuICBkYXRhcG9pbnRTZWxlY3Rpb25Db25maWc6IFBhcnRpYWw8RGF0YXBvaW50U2VsZWN0b3JNb2RhbE9wdGlvbnM+ID0ge307XG4gIGRpc2FibGVkQWdncmVnYXRpb25PcHRpb25zOiBBZ2dyZWdhdGlvbk9wdGlvblN0YXR1cyA9IHt9O1xuICBkZWZhdWx0Rm9ybU9wdGlvbnM6IFBhcnRpYWw8RGF0YXBvaW50QXR0cmlidXRlc0Zvcm1Db25maWc+ID0ge1xuICAgIHNob3dEaXNwbGF5OiB0cnVlLFxuICAgIHNob3dSZWRSYW5nZTogdHJ1ZSxcbiAgICBzaG93WWVsbG93UmFuZ2U6IHRydWVcbiAgfTtcbiAgZm9ybUdyb3VwOiBSZXR1cm5UeXBlPERhdGFwb2ludHNUYWJsZVdpZGdldENvbmZpZ0NvbXBvbmVudFsnY3JlYXRlRm9ybSddPjtcbiAgaXNXaWRnZXRMaW5rZWRUb0dsb2JhbFRpbWVDb250ZXh0OiBib29sZWFuO1xuXG4gIHByaXZhdGUgZGVjaW1hbExpbWl0cyA9IHtcbiAgICBudW1iZXJPZkRlY2ltYWxQbGFjZXNNaW46IDAsXG4gICAgbnVtYmVyT2ZEZWNpbWFsUGxhY2VzTWF4OiAxMFxuICB9IGFzIGNvbnN0O1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZSB3aGVuIHRoZSB0aW1lIGludGVydmFsIHNlbGVjdG9yIGl0ZW0gaGFzIGJlZW4gY2hhbmdlZCBwcm9ncmFtbWF0aWNhbGx5LlxuICAgKlxuICAgKiBUaGlzIHByb3BlcnR5IGlzIHVzZWQgdG8gdHJhY2sgY2hhbmdlcyBpbiB0aGUgdGltZSBpbnRlcnZhbCBzZWxlY3RvclxuICAgKiB0aGF0IGFyZSBub3QgdHJpZ2dlcmVkIGJ5IGRpcmVjdCB1c2VyIGludGVyYWN0aW9uLCBidXQgYnkgdGhlIGFwcGxpY2F0aW9uIGl0c2VsZi5cbiAgICpcbiAgICogSW4gb3VyIGNhc2UsIHRoZSBkYXRlIHNlbGVjdG9yIGFuZCB0aGUgaW50ZXJ2YWwgc2VsZWN0b3IgYXJlIGxpbmtlZC5cbiAgICogU28sIHdoZW4gb25lIG9mIHRoZW0gY2hhbmdlcywgaXQgYWZmZWN0cyB0aGUgb3RoZXIuXG4gICAqIEZvciBleGFtcGxlLCBzZWxlY3RpbmcgXCJMYXN0IGhvdXJcIiBpbiB0aGUgaW50ZXJ2YWwgc2VsZWN0b3Igc2hvdWxkIGF1dG9tYXRpY2FsbHkgdXBkYXRlIHRoZSBkYXRlIHJhbmdlIHRvIHRoZSBsYXN0IGhvdXIuXG4gICAqIEJ1dCB3aXRob3V0IHRoaXMgZmxhZywgY2hhbmdpbmcgdGhlIGRhdGUgcmFuZ2Ugd291bGQgYWxzbyB1cGRhdGUgdGhlIGludGVydmFsIHNlbGVjdG9yLCByZXN1bHRpbmcgaW4gXCJDdXN0b20gZGF0ZVwiIGJlaW5nIHNlbGVjdGVkLlxuICAgKiBUaGlzIGhhcHBlbnMgYmVjYXVzZSB0aGUgc3lzdGVtIHdvdWxkIGludGVycHJldCB0aGUgYmVoYXZpb3IgdGhpcyB3YXkuXG4gICAqL1xuICBwcml2YXRlIGlzSW50ZXJ2YWxTZWxlY3RvckNoYW5nZWRQcm9ncmFtbWF0aWNhbGx5ID0gZmFsc2U7XG4gIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZGF0YXBvaW50c1RhYmxlU2VydmljZTogRGF0YXBvaW50c1RhYmxlU2VydmljZSxcbiAgICBwcml2YXRlIGRhdGFwb2ludHNUYWJsZUNvbmZpZ1NlcnZpY2U6IERhdGFwb2ludHNUYWJsZUNvbmZpZ1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBmb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXIsXG4gICAgcHJpdmF0ZSBmb3JtOiBOZ0Zvcm0sXG4gICAgcHJpdmF0ZSB3aWRnZXRDb25maWc6IFdpZGdldENvbmZpZ0NvbXBvbmVudFxuICApIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMud2lkZ2V0Q29uZmlnLmNvbnRleHQ/LmlkKSB7XG4gICAgICB0aGlzLmRhdGFwb2ludFNlbGVjdGlvbkNvbmZpZy5jb250ZXh0QXNzZXQgPSB0aGlzLndpZGdldENvbmZpZz8uY29udGV4dDtcbiAgICB9XG5cbiAgICB0aGlzLmlzV2lkZ2V0TGlua2VkVG9HbG9iYWxUaW1lQ29udGV4dCA9XG4gICAgICB0aGlzLmNvbmZpZy53aWRnZXRJbnN0YW5jZUdsb2JhbEF1dG9SZWZyZXNoQ29udGV4dCA/PyB0cnVlO1xuXG4gICAgdGhpcy5pbml0Rm9ybSgpO1xuXG4gICAgdGhpcy5oYW5kbGVBdXRvUmVmcmVzaFRvZ2dsZUNoYW5nZXMoKTtcbiAgICB0aGlzLmhhbmRsZUludGVydmFsU2VsZWN0b3JDaGFuZ2VzKCk7XG4gICAgdGhpcy5oYW5kbGVEYXRlU2VsZWN0b3JDaGFuZ2VzKCk7XG4gICAgdGhpcy5oYW5kbGVHbG9iYWxEYXRlU2VsZWN0b3JDaGFuZ2VzKCk7XG5cbiAgICB0aGlzLmRpc2FibGVkQWdncmVnYXRpb25PcHRpb25zID1cbiAgICAgIHRoaXMuZGF0YXBvaW50c1RhYmxlQ29uZmlnU2VydmljZS51cGRhdGVEaXNhYmxlZFN0YXRlT2ZBZ2dyZWdhdGlvbk9wdGlvbkVudHJpZXMoXG4gICAgICAgIHRoaXMuZm9ybUdyb3VwLmNvbnRyb2xzLmRhdGVGcm9tLnZhbHVlLFxuICAgICAgICB0aGlzLmZvcm1Hcm91cC5jb250cm9scy5kYXRlVG8udmFsdWUsXG4gICAgICAgIEFHR1JFR0FUSU9OX1ZBTFVFU19BUlJcbiAgICAgICk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cblxuICBvbkJlZm9yZVNhdmUoY29uZmlnPzogRGF0YXBvaW50c1RhYmxlQ29uZmlnKTogdm9pZCB7XG4gICAgaWYgKFxuICAgICAgdGhpcy5mb3JtR3JvdXAudmFsdWUuYWdncmVnYXRpb24gPT09IEFHR1JFR0FUSU9OX1ZBTFVFUy5ub25lIHx8XG4gICAgICAoIXRoaXMuZm9ybUdyb3VwLnZhbHVlLmFnZ3JlZ2F0aW9uICYmIGNvbmZpZy5hZ2dyZWdhdGlvbiA9PT0gQUdHUkVHQVRJT05fVkFMVUVTLm5vbmUpXG4gICAgKSB7XG4gICAgICAvLyBUaGUgJ05PTkUnIGFnZ3JlZ2F0aW9uIHR5cGUgaXMgbm90IGhhbmRsZWQgYnkgYSBiYWNrZW5kLCBzbyBpdCBzaW1wbHkgbmVlZHMgdG8gYmUgZGVsZXRlZCB0byBnZXQgZGF0YSB3aXRob3V0IGFnZ3JlZ2F0aW9uLlxuICAgICAgdGhpcy5kZWxldGVBZ2dyZWdhdGlvblByb3BlcnR5KGNvbmZpZyk7XG4gICAgfVxuICAgIHRoaXMudXBkYXRlVGltZUNvbnRleHQoY29uZmlnLCB0aGlzLmZvcm1Hcm91cC52YWx1ZS5nbG9iYWxEYXRlU2VsZWN0b3IpO1xuICAgIE9iamVjdC5hc3NpZ24oY29uZmlnLCB0aGlzLmZvcm1Hcm91cC52YWx1ZSk7XG4gIH1cblxuICB0b2dnbGVSZWZyZXNoSW50ZXJ2YWxDb250cm9sKCk6IHZvaWQge1xuICAgIHRoaXMuZm9ybUdyb3VwLmNvbnRyb2xzLmlzQXV0b1JlZnJlc2hFbmFibGVkLnZhbHVlXG4gICAgICA/IHRoaXMuZm9ybUdyb3VwLmNvbnRyb2xzLnJlZnJlc2hJbnRlcnZhbC5kaXNhYmxlKClcbiAgICAgIDogdGhpcy5mb3JtR3JvdXAuY29udHJvbHMucmVmcmVzaEludGVydmFsLmVuYWJsZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVUaW1lQ29udGV4dChjb25maWc6IERhdGFwb2ludHNUYWJsZUNvbmZpZywgc2VsZWN0ZWREYXRlQ29udGV4dDogc3RyaW5nKTogdm9pZCB7XG4gICAgc3dpdGNoIChzZWxlY3RlZERhdGVDb250ZXh0KSB7XG4gICAgICBjYXNlIERBVEVfU0VMRUNUSU9OX1ZBTFVFUy5kYXNoYm9hcmRfY29udGV4dDpcbiAgICAgICAgY29uZmlnLmRpc3BsYXlEYXRlU2VsZWN0aW9uID0gZmFsc2U7XG4gICAgICAgIGNvbmZpZy53aWRnZXRJbnN0YW5jZUdsb2JhbEF1dG9SZWZyZXNoQ29udGV4dCA9IHRydWU7XG4gICAgICAgIGlmIChjb25maWcuYWdncmVnYXRpb24gIT09ICdOT05FJykge1xuICAgICAgICAgIHRoaXMuZGVsZXRlQWdncmVnYXRpb25Qcm9wZXJ0eShjb25maWcpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBEQVRFX1NFTEVDVElPTl9WQUxVRVMudmlld19hbmRfY29uZmlnOlxuICAgICAgICBjb25maWcuZGlzcGxheURhdGVTZWxlY3Rpb24gPSB0cnVlO1xuICAgICAgICBjb25maWcud2lkZ2V0SW5zdGFuY2VHbG9iYWxBdXRvUmVmcmVzaENvbnRleHQgPSBmYWxzZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIERBVEVfU0VMRUNUSU9OX1ZBTFVFUy5jb25maWc6XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBjb25maWcuZGlzcGxheURhdGVTZWxlY3Rpb24gPSBmYWxzZTtcbiAgICAgICAgY29uZmlnLndpZGdldEluc3RhbmNlR2xvYmFsQXV0b1JlZnJlc2hDb250ZXh0ID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBpbml0Rm9ybSgpOiB2b2lkIHtcbiAgICB0aGlzLmZvcm1Hcm91cCA9IHRoaXMuY3JlYXRlRm9ybSgpO1xuICAgIC8vIFdoZW4gdGhlICdOT05FJyBhZ2dyZWdhdGlvbiBpcyByZW1vdmVkIGF0IHRoZSAnb25CZWZvcmVTYXZlJyBibG9jayxcbiAgICAvLyBhbmQgYSBHbG9iYWwgRGF0ZSBDb250ZXh0IGZvcmNlcyB3aWRnZXRzIGF1dG8gcmVmcmVzaCB0byBiZSBlbmFibGVkXG4gICAgLy8gdGhlbiwgdGhlIGFnZ3JlZ2F0aW9uIHNlbGVjdG9yIHdpbGwgYmUgZW1wdHkgb24gaW5pdGlhbCBsb2FkLlxuICAgIHRoaXMuY29uZmlnLmFnZ3JlZ2F0aW9uID0gdGhpcy5jb25maWcuYWdncmVnYXRpb24gPz8gQUdHUkVHQVRJT05fVkFMVUVTLm5vbmU7XG5cbiAgICB0aGlzLmZvcm0uZm9ybS5hZGRDb250cm9sKCdjb25maWcnLCB0aGlzLmZvcm1Hcm91cCk7XG4gICAgdGhpcy5mb3JtR3JvdXAucGF0Y2hWYWx1ZSh0aGlzLmNvbmZpZyk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUZvcm0oKSB7XG4gICAgY29uc3QgeyBkYXRlRnJvbSwgZGF0ZVRvIH0gPSB0aGlzLmRhdGFwb2ludHNUYWJsZVNlcnZpY2UuY2FsY3VsYXRlRGF0ZVJhbmdlKFxuICAgICAgdGhpcy5ERUZBVUxUX0lOVEVSVkFMX1ZBTFVFXG4gICAgKTtcbiAgICBjb25zdCBpc0xlZ2FjeVdpZGdldCA9XG4gICAgICB0aGlzLmNvbmZpZy5oYXNPd25Qcm9wZXJ0eSgnd2lkZ2V0SW5zdGFuY2VHbG9iYWxUaW1lQ29udGV4dCcpICYmXG4gICAgICAhdGhpcy5jb25maWcuaGFzT3duUHJvcGVydHkoJ2RlY2ltYWxQbGFjZXMnKTtcblxuICAgIHJldHVybiB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKFxuICAgICAge1xuICAgICAgICBhZ2dyZWdhdGlvbjogbmV3IEZvcm1Db250cm9sKHtcbiAgICAgICAgICB2YWx1ZTogQUdHUkVHQVRJT05fVkFMVUVTLm5vbmUgYXMgQWdncmVnYXRpb25PcHRpb24sXG4gICAgICAgICAgZGlzYWJsZWQ6ICF0aGlzLmlzQXV0b1JlZmVyc2hEaXNhYmxlZCgpXG4gICAgICAgIH0pLFxuICAgICAgICBkYXRhcG9pbnRzOiB0aGlzLmZvcm1CdWlsZGVyLmNvbnRyb2wobmV3IEFycmF5PEtQSURldGFpbHM+KCksIFtcbiAgICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLFxuICAgICAgICAgIFZhbGlkYXRvcnMubWluTGVuZ3RoKDEpLFxuICAgICAgICAgIG1pbk9uZURhdGFwb2ludEFjdGl2ZSgpXG4gICAgICAgIF0pLFxuICAgICAgICBnbG9iYWxEYXRlU2VsZWN0b3I6IG5ldyBGb3JtQ29udHJvbChcbiAgICAgICAgICBpc0xlZ2FjeVdpZGdldFxuICAgICAgICAgICAgPyB0aGlzLmRldGVybWluZUdsb2JhbERhdGVTZWxlY3RvclZhbHVlRm9yTGVnYWN5V2lkZ2V0KClcbiAgICAgICAgICAgIDogdGhpcy5ERUZBVUxUX0RBVEVfU0VMRUNUT1JfVkFMVUVcbiAgICAgICAgKSxcbiAgICAgICAgZGF0ZUZyb206IG5ldyBGb3JtQ29udHJvbChkYXRlRnJvbSksXG4gICAgICAgIGRhdGVUbzogbmV3IEZvcm1Db250cm9sKGRhdGVUbyksXG4gICAgICAgIGRlY2ltYWxQbGFjZXM6IFtcbiAgICAgICAgICAyLFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWQsXG4gICAgICAgICAgICBWYWxpZGF0b3JzLm1pbih0aGlzLmRlY2ltYWxMaW1pdHMubnVtYmVyT2ZEZWNpbWFsUGxhY2VzTWluKSxcbiAgICAgICAgICAgIFZhbGlkYXRvcnMubWF4KHRoaXMuZGVjaW1hbExpbWl0cy5udW1iZXJPZkRlY2ltYWxQbGFjZXNNYXgpLFxuICAgICAgICAgICAgVmFsaWRhdG9ycy5wYXR0ZXJuKCdeWzAtOV0rJCcpXG4gICAgICAgICAgXVxuICAgICAgICBdLFxuICAgICAgICBpbnRlcnZhbDogbmV3IEZvcm1Db250cm9sKHRoaXMuREVGQVVMVF9JTlRFUlZBTF9WQUxVRSBhcyBUaW1lUmFuZ2VJbnRlcnZhbCksXG4gICAgICAgIGlzQXV0b1JlZnJlc2hFbmFibGVkOiBpc0xlZ2FjeVdpZGdldCA/IHRoaXMuY29uZmlnLnJlYWx0aW1lIDogW3RydWVdLFxuICAgICAgICByZWZyZXNoSW50ZXJ2YWw6IG5ldyBGb3JtQ29udHJvbCh7XG4gICAgICAgICAgdmFsdWU6IERFRkFVTFRfQ09VTlRET1dOX1ZBTFVFLFxuICAgICAgICAgIGRpc2FibGVkOiB0aGlzLmlzQXV0b1JlZmVyc2hEaXNhYmxlZCgpXG4gICAgICAgIH0pXG4gICAgICB9LFxuICAgICAgeyB2YWxpZGF0b3JzOiBkYXRlUmFuZ2VWYWxpZGF0b3IgfVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGRldGVybWluZUdsb2JhbERhdGVTZWxlY3RvclZhbHVlRm9yTGVnYWN5V2lkZ2V0KCk6IHN0cmluZyB7XG4gICAgY29uc3QgeyBkaXNwbGF5RGF0ZVNlbGVjdGlvbiwgd2lkZ2V0SW5zdGFuY2VHbG9iYWxBdXRvUmVmcmVzaENvbnRleHQgfSA9IHRoaXMuY29uZmlnO1xuXG4gICAgLy8gU3RhdGUgb2Ygd2lkZ2V0SW5zdGFuY2VHbG9iYWxUaW1lQ29udGV4dCB3YXMgY29udmVydGVkIHRvIHdpZGdldEluc3RhbmNlR2xvYmFsQXV0b1JlZnJlc2hDb250ZXh0LlxuICAgIC8vIFRoYXQgaXMgd2h5IGl0IHVzZSBoZXJlIGluIGEgbGVnYWN5IHdpZGdldCBjb250ZXh0LlxuICAgIGlmICh3aWRnZXRJbnN0YW5jZUdsb2JhbEF1dG9SZWZyZXNoQ29udGV4dCkge1xuICAgICAgcmV0dXJuIERBVEVfU0VMRUNUSU9OX1ZBTFVFUy5kYXNoYm9hcmRfY29udGV4dDtcbiAgICB9XG5cbiAgICByZXR1cm4gZGlzcGxheURhdGVTZWxlY3Rpb25cbiAgICAgID8gREFURV9TRUxFQ1RJT05fVkFMVUVTLnZpZXdfYW5kX2NvbmZpZ1xuICAgICAgOiBEQVRFX1NFTEVDVElPTl9WQUxVRVMuY29uZmlnO1xuICB9XG5cbiAgcHJpdmF0ZSBpc0F1dG9SZWZlcnNoRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgY29uc3QgaXNJbml0aWFsV2lkZ2V0Q3JlYXRpb24gPVxuICAgICAgT2JqZWN0LmtleXModGhpcy5jb25maWcpLmxlbmd0aCA9PT0gMSAmJiB0aGlzLmNvbmZpZ1snc2V0dGluZ3MnXTtcblxuICAgIGlmIChpc0luaXRpYWxXaWRnZXRDcmVhdGlvbikge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IGlzTGVnYWN5V2lkZ2V0UmVhbHRpbWVOb3RBY3RpdmUgPVxuICAgICAgIXRoaXMuY29uZmlnLnJlYWx0aW1lICYmXG4gICAgICAhdGhpcy5jb25maWcuaGFzT3duUHJvcGVydHkoJ2RlY2ltYWxQbGFjZXMnKSAmJlxuICAgICAgIXRoaXMuY29uZmlnLmhhc093blByb3BlcnR5KCdyZWZyZXNoSW50ZXJ2YWwnKSAmJlxuICAgICAgIXRoaXMuY29uZmlnLmhhc093blByb3BlcnR5KCdpc0F1dG9SZWZyZXNoRW5hYmxlZCcpO1xuXG4gICAgaWYgKGlzTGVnYWN5V2lkZ2V0UmVhbHRpbWVOb3RBY3RpdmUpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiAhdGhpcy5jb25maWcuaXNBdXRvUmVmcmVzaEVuYWJsZWQ7XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlcyBjaGFuZ2VzIHRvIHRoZSBhdXRvLXJlZnJlc2ggdG9nZ2xlIGNvbnRyb2wgYW5kIHVwZGF0ZXMgdGhlIGFnZ3JlZ2F0aW9uIGNvbnRyb2wgYWNjb3JkaW5nbHkuXG4gICAqXG4gICAqIFRoaXMgbWV0aG9kIHN1YnNjcmliZXMgdG8gdGhlIHZhbHVlIGNoYW5nZXMgb2YgdGhlIGF1dG8tcmVmcmVzaCB0b2dnbGUgZm9ybSBjb250cm9sLlxuICAgKiBXaGVuIGF1dG8tcmVmcmVzaCBpcyBlbmFibGVkLCB0aGUgYWdncmVnYXRpb24gY29udHJvbCdzIHZhbHVlIGlzIHNldCB0byAnbm9uZScgYW5kIHRoZSBjb250cm9sIGlzXG4gICAqIHZpc3VhbGx5IGRpc2FibGVkIChidXQgbm90IHByb2dyYW1tYXRpY2FsbHkgZGlzYWJsZWQgdG8gZW5zdXJlIHRoZSB2YWx1ZSBpcyBzYXZlZCkuXG4gICAqIFdoZW4gYXV0by1yZWZyZXNoIGlzIGRpc2FibGVkLCB0aGUgYWdncmVnYXRpb24gY29udHJvbCBpcyBlbmFibGVkLlxuICAgKi9cbiAgcHJpdmF0ZSBoYW5kbGVBdXRvUmVmcmVzaFRvZ2dsZUNoYW5nZXMoKTogdm9pZCB7XG4gICAgdGhpcy5mb3JtR3JvdXAuY29udHJvbHMuaXNBdXRvUmVmcmVzaEVuYWJsZWQudmFsdWVDaGFuZ2VzXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAuc3Vic2NyaWJlKChpc0F1dG9SZWZyZXNoRW5hYmxlZDogYm9vbGVhbikgPT4ge1xuICAgICAgICBjb25zdCBhZ2dyZWdhdGlvbkNvbnRyb2wgPSB0aGlzLmZvcm1Hcm91cC5jb250cm9scy5hZ2dyZWdhdGlvbjtcbiAgICAgICAgaWYgKGlzQXV0b1JlZnJlc2hFbmFibGVkKSB7XG4gICAgICAgICAgYWdncmVnYXRpb25Db250cm9sLnNldFZhbHVlKEFHR1JFR0FUSU9OX1ZBTFVFUy5ub25lKTtcbiAgICAgICAgICAvLyBEbyBub3QgZGlzYWJsZSB0aGUgY29udHJvbCBwcm9ncmFtbWF0aWNhbGx5IHRvIGVuc3VyZSB0aGUgdmFsdWUgaXMgc2F2ZWQuXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYWdncmVnYXRpb25Db250cm9sLmVuYWJsZSgpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGVzIGNoYW5nZXMgaW4gdGhlIGludGVydmFsIHNlbGVjdG9yIGZvcm0gY29udHJvbC5cbiAgICovXG4gIHByaXZhdGUgaGFuZGxlSW50ZXJ2YWxTZWxlY3RvckNoYW5nZXMoKTogdm9pZCB7XG4gICAgdGhpcy5mb3JtR3JvdXAuY29udHJvbHMuaW50ZXJ2YWwudmFsdWVDaGFuZ2VzXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAuc3Vic2NyaWJlKChzZWxlY3RlZEludGVydmFsOiBUaW1lUmFuZ2VJbnRlcnZhbCkgPT4ge1xuICAgICAgICBpZiAoc2VsZWN0ZWRJbnRlcnZhbCA9PT0gVElNRV9SQU5HRV9JTlRFUlZBTF9VTklUU19WQUxVRVMuY3VzdG9tKSB7XG4gICAgICAgICAgdGhpcy51cGRhdGVEaXNhYmxlZEFnZ3JlZ2F0aW9uT3B0aW9ucygpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuaGFuZGxlTm9uQ3VzdG9tSW50ZXJ2YWwoc2VsZWN0ZWRJbnRlcnZhbCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlTm9uQ3VzdG9tSW50ZXJ2YWwoc2VsZWN0ZWRJbnRlcnZhbDogVGltZVJhbmdlSW50ZXJ2YWwpOiB2b2lkIHtcbiAgICB0aGlzLmlzSW50ZXJ2YWxTZWxlY3RvckNoYW5nZWRQcm9ncmFtbWF0aWNhbGx5ID0gdHJ1ZTtcbiAgICB0aGlzLnVwZGF0ZURhdGVSYW5nZShzZWxlY3RlZEludGVydmFsKTtcbiAgICB0aGlzLnVwZGF0ZURpc2FibGVkQWdncmVnYXRpb25PcHRpb25zKCk7XG4gICAgdGhpcy51cGRhdGVBZ2dyZWdhdGlvbklmQXV0b1JlZnJlc2hEaXNhYmxlZChzZWxlY3RlZEludGVydmFsKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlRGF0ZVJhbmdlKHNlbGVjdGVkSW50ZXJ2YWw6IFRpbWVSYW5nZUludGVydmFsKTogdm9pZCB7XG4gICAgY29uc3QgZGF0ZVJhbmdlOiBEYXRlUmFuZ2UgPSB0aGlzLmRhdGFwb2ludHNUYWJsZVNlcnZpY2UuY2FsY3VsYXRlRGF0ZVJhbmdlKHNlbGVjdGVkSW50ZXJ2YWwpO1xuICAgIHRoaXMuZm9ybUdyb3VwLmNvbnRyb2xzLmRhdGVUby5zZXRWYWx1ZShkYXRlUmFuZ2UuZGF0ZVRvKTtcblxuICAgIC8vIE1UTS02MTM1MVxuICAgIC8vIFVzZSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUgdG8gcXVldWUgdGhlIGRhdGVGcm9tIHVwZGF0ZS5cbiAgICAvLyBUaGlzIHByZXZlbnRzIHRpbWluZyBpc3N1ZXMgd2hlcmUgcmFwaWQgc2V0VmFsdWUgY2FsbHMgbWlnaHRcbiAgICAvLyBjYXVzZSB0aGUgdmlldyB0byBnbyBvdXQgb2Ygc3luYyB3aXRoIGZvcm0gY29udHJvbCB2YWx1ZXMsXG4gICAgLy8gZXNwZWNpYWxseSBkdXJpbmcgdGhlIGZpcnN0IGNoYW5nZSBhZnRlciBpbml0aWFsaXphdGlvbi5cbiAgICAvLyByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgIC8qKlxuICAgICAqIFdpdGhvdXQgdGhpcyByZXF1ZXN0QW5pbWF0aW9uRnJhbWUgb3Igc2V0VGltZW91dCwgZGF0ZUZyb20gd29uJ3QgY2hhbmdlIHRvIGEgY29ycmVjdCB2YWx1ZSBhZnRlciBmaXJzdCBzZWxlY3RvciBjaGFuZ2UuXG4gICAgICogV2hlbiBmb3JtIGlzIHNhdmVkIGl0IHNhdmVzIHdpdGggYSBjb3JyZWN0IHZhbHVlLCBldmVuIHdpdGhvdXQgd2l0aCB0aGlzIGZpeC5cbiAgICAgKiBIb3cgdG8gcmVwcm9kdWNlOlxuICAgICAqIDEuIHNldCBkYXRlIHZhbHVlcyB0byBlLmcuOiAwMS4wNS4yMDI0LTMwLjA1LjIwMjQgYW5kIHNhdmUgaXRcbiAgICAgKiAyLiByZW9wZW4gYSBjb25maWcgYW5kIHN3aXRjaCBpbnRlcnZhbCB0byBsYXN0IG1vbnRoXG4gICAgICovXG4gICAgLy8gVGhpcyBmaXggYnJha2VzIGEgbG9naWMgYmVoaW5kIGRpc2FibGluZyBub24gYXZhaWxhYmxlIGFnZ3JlZ2F0aW9ucy5cbiAgICAvLyBGb3JtIHdpbGwgYmUgc3RpbGwgc2F2ZWQgd2l0aCBjb3JyZWN0IGRhdGUgdmFsdWUsIG9ubHkgdmlldyBpcyBvdXQgb2YgYSBzeW5jLlxuICAgIHRoaXMuZm9ybUdyb3VwLmNvbnRyb2xzLmRhdGVGcm9tLnNldFZhbHVlKGRhdGVSYW5nZS5kYXRlRnJvbSk7XG4gICAgdGhpcy5pc0ludGVydmFsU2VsZWN0b3JDaGFuZ2VkUHJvZ3JhbW1hdGljYWxseSA9IGZhbHNlO1xuICAgIC8vIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVEaXNhYmxlZEFnZ3JlZ2F0aW9uT3B0aW9ucygpOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkQWdncmVnYXRpb25PcHRpb25zID1cbiAgICAgIHRoaXMuZGF0YXBvaW50c1RhYmxlQ29uZmlnU2VydmljZS51cGRhdGVEaXNhYmxlZFN0YXRlT2ZBZ2dyZWdhdGlvbk9wdGlvbkVudHJpZXMoXG4gICAgICAgIHRoaXMuZm9ybUdyb3VwLmNvbnRyb2xzLmRhdGVGcm9tLnZhbHVlLFxuICAgICAgICB0aGlzLmZvcm1Hcm91cC5jb250cm9scy5kYXRlVG8udmFsdWUsXG4gICAgICAgIEFHR1JFR0FUSU9OX1ZBTFVFU19BUlJcbiAgICAgICk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUFnZ3JlZ2F0aW9uSWZBdXRvUmVmcmVzaERpc2FibGVkKHNlbGVjdGVkSW50ZXJ2YWw6IFRpbWVSYW5nZUludGVydmFsKTogdm9pZCB7XG4gICAgY29uc3QgaXNBdXRvUmVmcmVzaERpc2FibGVkID0gIXRoaXMuZm9ybUdyb3VwLmNvbnRyb2xzLmlzQXV0b1JlZnJlc2hFbmFibGVkLnZhbHVlO1xuICAgIGlmIChpc0F1dG9SZWZyZXNoRGlzYWJsZWQpIHtcbiAgICAgIHRoaXMuc2V0QWdncmVnYXRpb25WYWx1ZShzZWxlY3RlZEludGVydmFsKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldEFnZ3JlZ2F0aW9uVmFsdWUoaW50ZXJ2YWw6IFRpbWVSYW5nZUludGVydmFsKTogdm9pZCB7XG4gICAgY29uc3QgYWdncmVnYXRpb25Db250cm9sID0gdGhpcy5mb3JtR3JvdXAuY29udHJvbHMuYWdncmVnYXRpb247XG5cbiAgICBjb25zdCBuZXdBZ2dyZWdhdGlvblZhbHVlID1cbiAgICAgIHRoaXMuZGF0YXBvaW50c1RhYmxlQ29uZmlnU2VydmljZS5kZXRlcm1pbmVBZ2dyZWdhdGlvblZhbHVlKGludGVydmFsKTtcbiAgICBhZ2dyZWdhdGlvbkNvbnRyb2wuc2V0VmFsdWUobmV3QWdncmVnYXRpb25WYWx1ZSk7XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlcyBjaGFuZ2VzIGluIHRoZSBkYXRlIHNlbGVjdG9yIGZvcm0gY29udHJvbC5cbiAgICovXG4gIHByaXZhdGUgaGFuZGxlRGF0ZVNlbGVjdG9yQ2hhbmdlcygpOiB2b2lkIHtcbiAgICBtZXJnZShcbiAgICAgIHRoaXMuZm9ybUdyb3VwLmNvbnRyb2xzLmRhdGVGcm9tLnZhbHVlQ2hhbmdlcyxcbiAgICAgIHRoaXMuZm9ybUdyb3VwLmNvbnRyb2xzLmRhdGVUby52YWx1ZUNoYW5nZXNcbiAgICApXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMuaGFuZGxlRGF0ZUNoYW5nZSgpKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlRGF0ZUNoYW5nZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc0ludGVydmFsU2VsZWN0b3JDaGFuZ2VkUHJvZ3JhbW1hdGljYWxseSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGludGVydmFsQ29udHJvbCA9IHRoaXMuZm9ybUdyb3VwLmNvbnRyb2xzLmludGVydmFsO1xuICAgIGlmIChpbnRlcnZhbENvbnRyb2wudmFsdWUgPT09IFRJTUVfUkFOR0VfSU5URVJWQUxfVU5JVFNfVkFMVUVTLmN1c3RvbSkge1xuICAgICAgdGhpcy5oYW5kbGVDdXN0b21JbnRlcnZhbERhdGVDaGFuZ2UoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZXRJbnRlcnZhbFRvQ3VzdG9tKGludGVydmFsQ29udHJvbCk7XG4gICAgfVxuICAgIHRoaXMuc2V0VG9GaXJzdEF2YWlsYWJsZUFnZ3JlZ2F0aW9uT3B0aW9uSWZDdXJyZW50QWdncmVnYXRpb25Jc0Rpc2FibGVkKCk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUN1c3RvbUludGVydmFsRGF0ZUNoYW5nZSgpOiB2b2lkIHtcbiAgICB0aGlzLnVwZGF0ZURpc2FibGVkQWdncmVnYXRpb25PcHRpb25zKCk7XG4gIH1cblxuICBwcml2YXRlIHNldEludGVydmFsVG9DdXN0b20oaW50ZXJ2YWxDb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiB2b2lkIHtcbiAgICBpbnRlcnZhbENvbnRyb2wuc2V0VmFsdWUoVElNRV9SQU5HRV9JTlRFUlZBTF9VTklUU19WQUxVRVMuY3VzdG9tKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGVzIGNoYW5nZXMgaW4gdGhlIGdsb2JhbCBkYXRlIHNlbGVjdG9yIGZvcm0gY29udHJvbC5cbiAgICovXG4gIHByaXZhdGUgaGFuZGxlR2xvYmFsRGF0ZVNlbGVjdG9yQ2hhbmdlcygpOiB2b2lkIHtcbiAgICB0aGlzLmZvcm1Hcm91cC5jb250cm9scy5nbG9iYWxEYXRlU2VsZWN0b3IudmFsdWVDaGFuZ2VzXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAuc3Vic2NyaWJlKChzZWxlY3RlZDogc3RyaW5nKSA9PiB7XG4gICAgICAgIGlmIChzZWxlY3RlZCA9PT0gREFURV9TRUxFQ1RJT05fVkFMVUVTLmRhc2hib2FyZF9jb250ZXh0KSB7XG4gICAgICAgICAgdGhpcy5oYW5kbGVEYXNoYm9hcmRDb250ZXh0KCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5oYW5kbGVOb25EYXNoYm9hcmRDb250ZXh0KCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVEYXNoYm9hcmRDb250ZXh0KCk6IHZvaWQge1xuICAgIHRoaXMuaXNXaWRnZXRMaW5rZWRUb0dsb2JhbFRpbWVDb250ZXh0ID0gdHJ1ZTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlTm9uRGFzaGJvYXJkQ29udGV4dCgpOiB2b2lkIHtcbiAgICB0aGlzLmlzV2lkZ2V0TGlua2VkVG9HbG9iYWxUaW1lQ29udGV4dCA9IGZhbHNlO1xuXG4gICAgaWYgKHRoaXMuaXNDb25maWdTYXZlZFdpdGhvdXREYXNoYm9hcmRUaW1lT3B0aW9uKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnVwZGF0ZUFnZ3JlZ2F0aW9uSWZOZWNlc3NhcnkoKTtcbiAgICB0aGlzLnNldEludGVydmFsVG9DdXN0b20odGhpcy5mb3JtR3JvdXAuY29udHJvbHMuaW50ZXJ2YWwpO1xuICB9XG5cbiAgcHJpdmF0ZSBpc0NvbmZpZ1NhdmVkV2l0aG91dERhc2hib2FyZFRpbWVPcHRpb24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICF0aGlzLmNvbmZpZy53aWRnZXRJbnN0YW5jZUdsb2JhbEF1dG9SZWZyZXNoQ29udGV4dDtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlQWdncmVnYXRpb25JZk5lY2Vzc2FyeSgpOiB2b2lkIHtcbiAgICBjb25zdCBhZ2dyZWdhdGlvbkNvbnRyb2wgPSB0aGlzLmZvcm1Hcm91cC5jb250cm9scy5hZ2dyZWdhdGlvbjtcbiAgICBjb25zdCBpc0Rhc2hib2FyZFRpbWVPcHRpb25TZXRBZ2dyZWdhdGlvblRvTnVsbCA9ICFhZ2dyZWdhdGlvbkNvbnRyb2wudmFsdWU7XG5cbiAgICBpZiAoaXNEYXNoYm9hcmRUaW1lT3B0aW9uU2V0QWdncmVnYXRpb25Ub051bGwpIHtcbiAgICAgIGFnZ3JlZ2F0aW9uQ29udHJvbC5zZXRWYWx1ZShBR0dSRUdBVElPTl9WQUxVRVMubm9uZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGFnZ3JlZ2F0aW9uIGNvbnRyb2wgdG8gdGhlIGZpcnN0IGF2YWlsYWJsZSAobm9uLWRpc2FibGVkKSBvcHRpb24gaWYgdGhlIGN1cnJlbnQgb3B0aW9uIGlzIGRpc2FibGVkLlxuICAgKlxuICAgKiBUaGlzIG1ldGhvZDpcbiAgICogLSBSZXRyaWV2ZXMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGFnZ3JlZ2F0aW9uIGNvbnRyb2wuXG4gICAqIC0gQ2hlY2tzIGlmIHRoZSBjdXJyZW50IGFnZ3JlZ2F0aW9uIG9wdGlvbiBpcyBkaXNhYmxlZC5cbiAgICogLSBJZiB0aGUgY3VycmVudCBvcHRpb24gaXMgZGlzYWJsZWQsIHNldHMgdGhlIGNvbnRyb2wgdG8gdGhlIGZpcnN0IGF2YWlsYWJsZSAobm9uLWRpc2FibGVkKSBvcHRpb24gYmFzZWQgb24gdGhlIGZvbGxvd2luZyBvcmRlcjpcbiAgICogICAtIElmIHRoZSBjdXJyZW50IHZhbHVlIGlzIGBEQUlMWWAsIGl0IHN3aXRjaGVzIHRvIGBIT1VSTFlgIGlmIGl0J3Mgbm90IGRpc2FibGVkLCBvdGhlcndpc2UgdG8gYE1JTlVURUxZYCBpZiBgSE9VUkxZYCBpcyBhbHNvIGRpc2FibGVkLlxuICAgKiAgIC0gSWYgdGhlIGN1cnJlbnQgdmFsdWUgaXMgYEhPVVJMWWAsIGl0IHN3aXRjaGVzIHRvIGBNSU5VVEVMWWAgaWYgaXQncyBub3QgZGlzYWJsZWQuXG4gICAqICAgLSBJZiBhbGwgb3B0aW9ucyBhcmUgZGlzYWJsZWQsIGl0IHNldHMgdGhlIHZhbHVlIHRvIGBOT05FYC5cbiAgICpcbiAgICogVGhlIGRpc2FibGVkIHN0YXRlIGlzIHN0b3JlZCBpbiB0aGUgYGRpc2FibGVkQWdncmVnYXRpb25PcHRpb25zYCBvYmplY3QsXG4gICAqIHdoZXJlIHRoZSBrZXkgaXMgdGhlIGFnZ3JlZ2F0aW9uIHZhbHVlIGFuZCB0aGUgdmFsdWUgaXMgYSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciB0aGUgb3B0aW9uIGlzIGRpc2FibGVkLlxuICAgKlxuICAgKiBUaGUgYEFHR1JFR0FUSU9OX1ZBTFVFU2Agb2JqZWN0IGRlZmluZXMgdGhlIHBvc3NpYmxlIGFnZ3JlZ2F0aW9uIHZhbHVlcy5cbiAgICovXG4gIC8vIFRPRE8gc2FtZSBtZXRob2QgaXMgaW4gZGF0YXBvaW50cyBleHBvcnQgY29tcG9uZW50LiBDb25zaWRlciBtb3ZpbmcgaXQgdG8gYSBzaGFyZWQgc2VydmljZSB3aGVuIERQVCB3aWxsIGJlIGludGVncmF0aW5nIHdpdGggTVRNLTU5Njg5LlxuICAvLyBUT0RPICdkZXRlcm1pbmVOZXdBZ2dyZWdhdGlvblZhbHVlJyB3aWxsIGJlIGEgc2hhcmVkIG1ldGhvZC5cbiAgLy8gSW50ZWdyYXRpb24gdGFzazogTVRNLTYwMjIxXG4gIHByaXZhdGUgc2V0VG9GaXJzdEF2YWlsYWJsZUFnZ3JlZ2F0aW9uT3B0aW9uSWZDdXJyZW50QWdncmVnYXRpb25Jc0Rpc2FibGVkKCk6IHZvaWQge1xuICAgIGNvbnN0IGFnZ3JlZ2F0aW9uQ29udHJvbCA9IHRoaXMuZm9ybUdyb3VwLmNvbnRyb2xzLmFnZ3JlZ2F0aW9uO1xuICAgIGNvbnN0IGN1cnJlbnRWYWx1ZSA9IGFnZ3JlZ2F0aW9uQ29udHJvbC52YWx1ZTtcblxuICAgIGNvbnN0IG5ld0FnZ3JlZ2F0aW9uVmFsdWUgPSB0aGlzLmRhdGFwb2ludHNUYWJsZUNvbmZpZ1NlcnZpY2UuZGV0ZXJtaW5lTmV3QWdncmVnYXRpb25WYWx1ZShcbiAgICAgIGN1cnJlbnRWYWx1ZSxcbiAgICAgIHRoaXMuZGlzYWJsZWRBZ2dyZWdhdGlvbk9wdGlvbnNcbiAgICApO1xuXG4gICAgaWYgKG5ld0FnZ3JlZ2F0aW9uVmFsdWUgIT09IGN1cnJlbnRWYWx1ZSkge1xuICAgICAgYWdncmVnYXRpb25Db250cm9sLnNldFZhbHVlKG5ld0FnZ3JlZ2F0aW9uVmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZGVsZXRlQWdncmVnYXRpb25Qcm9wZXJ0eShjb25maWc6IERhdGFwb2ludHNUYWJsZUNvbmZpZyk6IHZvaWQge1xuICAgIGRlbGV0ZSB0aGlzLmZvcm1Hcm91cC52YWx1ZS5hZ2dyZWdhdGlvbjtcbiAgICBkZWxldGUgY29uZmlnLmFnZ3JlZ2F0aW9uO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwicC1sLTI0IHAtci0yNFwiPlxuICA8Zm9ybVxuICAgIGNsYXNzPVwibm8tY2FyZC1jb250ZXh0XCJcbiAgICBbZm9ybUdyb3VwXT1cImZvcm1Hcm91cFwiXG4gID5cbiAgICA8IS0tIDxkYXRhcG9pbnRzLXNlbGVjdG9yPiAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgPCEtLSBnbG9iYWwtdGltZS1jb250ZXh0LXNlbGVjdG9yIC0tPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBtLWItMCBwLWItMTYgc2VwYXJhdG9yLWJvdHRvbVwiPlxuICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggYS1pLWNlbnRlciBwLXQtNFwiXG4gICAgICAgICAgICBmb3I9XCJkYXRlU2VsZWN0aW9uXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyAnRGF0ZSBzZWxlY3Rpb24nIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIGNsYXNzPVwiYnRuLWhlbHAgYnRuLWhlbHAtLXNtXCJcbiAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInSGVscCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICBbcG9wb3Zlcl09XCJwb3BvdmVyVGVtcGxhdGVcIlxuICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJyaWdodFwiXG4gICAgICAgICAgICAgIHRyaWdnZXJzPVwiZm9jdXNcIlxuICAgICAgICAgICAgICBjb250YWluZXI9XCJib2R5XCJcbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIFthZGFwdGl2ZVBvc2l0aW9uXT1cInRydWVcIlxuICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNwb3BvdmVyVGVtcGxhdGU+XG4gICAgICAgICAgICA8c3BhbiB0cmFuc2xhdGU+XG4gICAgICAgICAgICAgIENob29zZSBob3cgdG8gc2VsZWN0IGEgZGF0ZSByYW5nZSwgdGhlIGF2YWlsYWJsZSBvcHRpb25zIGFyZTpcbiAgICAgICAgICAgICAgPHVsIGNsYXNzPVwibS1sLTAgcC1sLTggbS10LTggbS1iLTBcIj5cbiAgICAgICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgICAgICA8Yj5EYXNoYm9hcmQgdGltZSByYW5nZTo8L2I+XG4gICAgICAgICAgICAgICAgICByZXN0cmljdHMgZGF0ZSBzZWxlY3Rpb24gdG8gdGhlIGdsb2JhbCBkYXNoYm9hcmQgY29uZmlndXJhdGlvbiBvbmx5XG4gICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgICAgICA8Yj5XaWRnZXQgY29uZmlndXJhdGlvbjo8L2I+XG4gICAgICAgICAgICAgICAgICByZXN0cmljdHMgdGhlIGRhdGUgc2VsZWN0aW9uIG9ubHkgdG8gdGhlIHdpZGdldCBjb25maWd1cmF0aW9uXG4gICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgICAgICA8Yj5XaWRnZXQgYW5kIHdpZGdldCBjb25maWd1cmF0aW9uOjwvYj5cbiAgICAgICAgICAgICAgICAgIHJlc3RyaWN0cyB0aGUgZGF0ZSBzZWxlY3Rpb24gdG8gdGhlIHdpZGdldCB2aWV3IGFuZCB3aWRnZXQgY29uZmlndXJhdGlvbiBvbmx5XG4gICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjOHktc2VsZWN0LXdyYXBwZXJcIj5cbiAgICAgICAgICAgIDxzZWxlY3RcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgdGV4dC0xMlwiXG4gICAgICAgICAgICAgIFt0aXRsZV09XCInRGF0ZSBzZWxlY3Rpb24nIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInRGF0ZSBzZWxlY3Rpb24nIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgaWQ9XCJnbG9iYWxEYXRlU2VsZWN0b3JcIlxuICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJnbG9iYWxEYXRlU2VsZWN0b3JcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8b3B0aW9uXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGRhdGFTZWxlY3Rpb25WYWx1ZSBvZiBEQVRFX1NFTEVDVElPTl9WQUxVRVNfQVJSXCJcbiAgICAgICAgICAgICAgICBbbmdWYWx1ZV09XCJkYXRhU2VsZWN0aW9uVmFsdWVcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3sgREFURV9TRUxFQ1RJT05fTEFCRUxTW2RhdGFTZWxlY3Rpb25WYWx1ZV0gfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgPGM4eS1kYXRhcG9pbnQtc2VsZWN0aW9uLWxpc3RcbiAgICAgICAgICBjbGFzcz1cImJnLWluaGVyaXQgc2VwYXJhdG9yLXRvcCBwLXQtMTYgZC1ibG9ja1wiXG4gICAgICAgICAgbGlzdFRpdGxlPVwie3sgJ0RhdGEgcG9pbnRzJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgbmFtZT1cImRhdGFwb2ludHNcIlxuICAgICAgICAgIFtkZWZhdWx0Rm9ybU9wdGlvbnNdPVwiZGVmYXVsdEZvcm1PcHRpb25zXCJcbiAgICAgICAgICBbY29uZmlnXT1cImRhdGFwb2ludFNlbGVjdGlvbkNvbmZpZ1wiXG4gICAgICAgICAgW21pbkFjdGl2ZUNvdW50XT1cIjFcIlxuICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImRhdGFwb2ludHNcIlxuICAgICAgICA+PC9jOHktZGF0YXBvaW50LXNlbGVjdGlvbi1saXN0PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNXaWRnZXRMaW5rZWRUb0dsb2JhbFRpbWVDb250ZXh0XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XG4gICAgICAgICAgICA8IS0tIGludGVydmFsIHNlbGVjdG9yIC0tPlxuICAgICAgICAgICAgPGZpZWxkc2V0IGNsYXNzPVwiYzh5LWZpZWxkc2V0XCI+XG4gICAgICAgICAgICAgIDxsZWdlbmQgY2xhc3M9XCJkLWZsZXggYS1pLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgIHt7ICdBdXRvIHJlZnJlc2gnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4taGVscCBidG4taGVscC0tc21cIlxuICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInSGVscCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgW3BvcG92ZXJdPVwiXG4gICAgICAgICAgICAgICAgICAgICdDaGFuZ2UgdGhlIHN0YXRlIG9mIGludGVydmFsIGF1dG9tYXRpYyByZWZyZXNoIGFuZCBzZXQgdGhlIHJlZnJlc2ggZnJlcXVlbmN5LidcbiAgICAgICAgICAgICAgICAgICAgICB8IHRyYW5zbGF0ZVxuICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cInRvcFwiXG4gICAgICAgICAgICAgICAgICB0cmlnZ2Vycz1cImZvY3VzXCJcbiAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcj1cImJvZHlcIlxuICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICBbYWRhcHRpdmVQb3NpdGlvbl09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICAgIDwvbGVnZW5kPlxuICAgICAgICAgICAgICA8Yzh5LWZvcm0tZ3JvdXAgY2xhc3M9XCJtLWItMTYgZm9ybS1ncm91cC1zbVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZ2FwLTQgbS10LTggbS1iLTggYS1pLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiYzh5LXN3aXRjaFwiPlxuICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICBpZD1cInJlZnJlc2hUb2dnbGVcIlxuICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJpc0F1dG9SZWZyZXNoRW5hYmxlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJpc0F1dG9SZWZyZXNoRW5hYmxlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVJlZnJlc2hJbnRlcnZhbENvbnRyb2woKVwiXG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzci1vbmx5XCI+e3sgJ0F1dG8gcmVmcmVzaCcgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibS1iLTBcIlxuICAgICAgICAgICAgICAgICAgICBmb3I9XCJyZWZyZXNoSW50ZXJ2YWxcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7eyAnSW50ZXJ2YWwnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImM4eS1zZWxlY3Qtd3JhcHBlclwiPlxuICAgICAgICAgICAgICAgICAgICA8c2VsZWN0XG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgdGV4dC0xMlwiXG4gICAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIidSZWZyZXNoIGludGVydmFsIGluIHNlY29uZHMnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICBpZD1cInJlZnJlc2hJbnRlcnZhbFwiXG4gICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwicmVmcmVzaEludGVydmFsXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCByZWZyZXNoSW50ZXJ2YWwgb2YgUkVGUkVTSF9JTlRFUlZBTF9WQUxVRVNfQVJSXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1ZhbHVlXT1cInJlZnJlc2hJbnRlcnZhbFwiXG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgJ3t7IHNlY29uZHMgfX0gcycgfCB0cmFuc2xhdGU6IHsgc2Vjb25kczogcmVmcmVzaEludGVydmFsIC8gMTAwMCB9IH19XG4gICAgICAgICAgICAgICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvYzh5LWZvcm0tZ3JvdXA+XG4gICAgICAgICAgICA8L2ZpZWxkc2V0PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPCEtLSBkZWNpbWFsIGlucHV0IC0tPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cbiAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9XCJjOHktZmllbGRzZXRcIj5cbiAgICAgICAgICAgIDxsZWdlbmQ+XG4gICAgICAgICAgICAgIHt7ICdEZWNpbWFsIHBsYWNlcycgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgIDwvbGVnZW5kPlxuICAgICAgICAgICAgPGM4eS1mb3JtLWdyb3VwIGNsYXNzPVwicC10LThcIj5cbiAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICAgIG5hbWU9XCJkZWNpbWFsUGxhY2VzXCJcbiAgICAgICAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJkZWNpbWFsUGxhY2VzXCJcbiAgICAgICAgICAgICAgICBzdGVwPVwiMVwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L2M4eS1mb3JtLWdyb3VwPlxuICAgICAgICAgIDwvZmllbGRzZXQ+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8IS0tIGFnZ3JlZ2F0aW9uIHNlbGVjdG9yIC0tPlxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzV2lkZ2V0TGlua2VkVG9HbG9iYWxUaW1lQ29udGV4dFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxuICAgICAgICAgICAgPGZpZWxkc2V0IGNsYXNzPVwiYzh5LWZpZWxkc2V0XCI+XG4gICAgICAgICAgICAgIDxsZWdlbmQ+XG4gICAgICAgICAgICAgICAge3sgJ0FnZ3JlZ2F0aW9uJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICA8L2xlZ2VuZD5cbiAgICAgICAgICAgICAgPGM4eS1mb3JtLWdyb3VwIGNsYXNzPVwicC10LThcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYzh5LXNlbGVjdC13cmFwcGVyXCI+XG4gICAgICAgICAgICAgICAgICA8IS0tIFNldHRpbmcgYmVsb3cgW2F0dHIuZGlzYWJsZWRdIGVuc3VyZXMgdGhhdCB0aGUgY29udHJvbCBpcyB2aXN1YWxseSBkaXNhYmxlZCBhbmQgdXNlciBpbnRlcmFjdGlvbiBpcyBwcmV2ZW50ZWQsXG4gICAgICAgICAgICAgICB3aGlsZSBzdGlsbCBhbGxvd2luZyB0aGUgdmFsdWUgdG8gYmUgdXBkYXRlZCBhbmQgc2F2ZWQgY29ycmVjdGx5IGluIHRoZSBmb3JtLlxuICAgICAgICAgICAgICAgVGhpcyBzb2x1dGlvbiBjb3ZlcnMgdGhlIGNhc2Ugd2hlcmUgdGhlIHVzZXIgZW5hYmxlcyBhdXRvLXJlZnJlc2gsIGluIHdoaWNoIGNhc2UgYWdncmVnYXRpb24gbXVzdCBiZSBzZXQgdG8gTk9ORS4gLS0+XG4gICAgICAgICAgICAgICAgICA8c2VsZWN0XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIHRleHQtMTJcIlxuICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ0FnZ3JlZ2F0aW9uJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgIGlkPVwiYWdncmVnYXRpb25cIlxuICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJhZ2dyZWdhdGlvblwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmRpc2FibGVkXT1cImZvcm1Hcm91cC52YWx1ZS5pc0F1dG9SZWZyZXNoRW5hYmxlZCA/IHRydWUgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPG9wdGlvblxuICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBhZ2dyZWdhdGlvblZhbHVlIG9mIEFHR1JFR0FUSU9OX1ZBTFVFU19BUlJcIlxuICAgICAgICAgICAgICAgICAgICAgIFtuZ1ZhbHVlXT1cImFnZ3JlZ2F0aW9uVmFsdWVcIlxuICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZEFnZ3JlZ2F0aW9uT3B0aW9uc1thZ2dyZWdhdGlvblZhbHVlXVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7eyBBR0dSRUdBVElPTl9MQUJFTFNbYWdncmVnYXRpb25WYWx1ZV0gfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9jOHktZm9ybS1ncm91cD5cbiAgICAgICAgICAgIDwvZmllbGRzZXQ+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8IS0tIHRpbWUgaW50ZXJ2YWwgc2VsZWN0b3IgLS0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxuICAgICAgICAgIDxmaWVsZHNldCBjbGFzcz1cImM4eS1maWVsZHNldFwiPlxuICAgICAgICAgICAgPGxlZ2VuZD5cbiAgICAgICAgICAgICAge3sgJ1RpbWUgaW50ZXJ2YWwnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICA8L2xlZ2VuZD5cbiAgICAgICAgICAgIDxjOHktZm9ybS1ncm91cCBjbGFzcz1cInAtdC04XCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjOHktc2VsZWN0LXdyYXBwZXJcIj5cbiAgICAgICAgICAgICAgICA8c2VsZWN0XG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCB0ZXh0LTEyXCJcbiAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCInSW50ZXJ2YWwnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgIGlkPVwiaW50ZXJ2YWxcIlxuICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiaW50ZXJ2YWxcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxvcHRpb25cbiAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGludGVydmFsVmFsdWUgb2YgSU5URVJWQUxfVkFMVUVTX0FSUlwiXG4gICAgICAgICAgICAgICAgICAgIFtuZ1ZhbHVlXT1cImludGVydmFsVmFsdWVcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7eyBUSU1FX1JBTkdFX0lOVEVSVkFMX0xBQkVMU1tpbnRlcnZhbFZhbHVlXSB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9jOHktZm9ybS1ncm91cD5cbiAgICAgICAgICA8L2ZpZWxkc2V0PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPCEtLSBkYXRlIHBpY2tlcnMgLS0+XG4gICAgICA8ZmllbGRzZXQgY2xhc3M9XCJjOHktZmllbGRzZXRcIj5cbiAgICAgICAgPGxlZ2VuZD5cbiAgICAgICAgICB7eyAnRGF0ZSByYW5nZScgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9sZWdlbmQ+XG4gICAgICAgIDxjOHktZGF0ZS1yYW5nZS1waWNrZXI+PC9jOHktZGF0ZS1yYW5nZS1waWNrZXI+XG4gICAgICA8L2ZpZWxkc2V0PlxuICAgIDwvZGl2PlxuICA8L2Zvcm0+XG48L2Rpdj5cbiJdfQ==
|
|
388
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXBvaW50cy10YWJsZS1jb25maWcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vd2lkZ2V0cy9pbXBsZW1lbnRhdGlvbnMvZGF0YXBvaW50cy10YWJsZS9kYXRhcG9pbnRzLXRhYmxlLWNvbmZpZy9kYXRhcG9pbnRzLXRhYmxlLWNvbmZpZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi93aWRnZXRzL2ltcGxlbWVudGF0aW9ucy9kYXRhcG9pbnRzLXRhYmxlL2RhdGFwb2ludHMtdGFibGUtY29uZmlnL2RhdGFwb2ludHMtdGFibGUtY29uZmlnLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUNwRSxPQUFPLEVBRUwsV0FBVyxFQUNYLFdBQVcsRUFDWCxNQUFNLEVBQ04sbUJBQW1CLEVBR25CLFVBQVUsRUFDWCxNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFDTCxrQkFBa0IsRUFDbEIsa0JBQWtCLEVBQ2xCLHNCQUFzQixFQUd0QixVQUFVLEVBQ1gsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUM5RSxPQUFPLEVBR0wsdUJBQXVCLEVBRXhCLE1BQU0sd0NBQXdDLENBQUM7QUFDaEQsT0FBTyxFQUNMLGtCQUFrQixFQUNsQixnQ0FBZ0MsRUFFakMsTUFBTSxnREFBZ0QsQ0FBQztBQUN4RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDdEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNqRCxPQUFPLEVBRUwscUJBQXFCLEVBQ3JC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N0QsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUM7UUFDeEMsT0FBTyxNQUFNLENBQUMsV0FBVyxDQUFDO0lBQzVCLENBQUM7OEdBcGFVLG9DQUFvQztrR0FBcEMsb0NBQW9DLDBIQzlFakQsNHNSQStOQSwyQ0R4SkksVUFBVSwrMEVBQ1YsdUJBQXVCLHNUQUN2Qix3QkFBd0IsMElBQ3hCLGFBQWEsOFZBQ2IsbUJBQW1COzsyRkFHVixvQ0FBb0M7a0JBWmhELFNBQVM7K0JBQ0Usa0NBQWtDLGNBRWhDLElBQUksV0FDUDt3QkFDUCxVQUFVO3dCQUNWLHVCQUF1Qjt3QkFDdkIsd0JBQXdCO3dCQUN4QixhQUFhO3dCQUNiLG1CQUFtQjtxQkFDcEI7eU5BTVEsTUFBTTtzQkFBZCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEFic3RyYWN0Q29udHJvbCxcbiAgRm9ybUJ1aWxkZXIsXG4gIEZvcm1Db250cm9sLFxuICBOZ0Zvcm0sXG4gIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gIFZhbGlkYXRpb25FcnJvcnMsXG4gIFZhbGlkYXRvckZuLFxuICBWYWxpZGF0b3JzXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7XG4gIEFHR1JFR0FUSU9OX0xBQkVMUyxcbiAgQUdHUkVHQVRJT05fVkFMVUVTLFxuICBBR0dSRUdBVElPTl9WQUxVRVNfQVJSLFxuICBBZ2dyZWdhdGlvbk9wdGlvbixcbiAgQWdncmVnYXRpb25PcHRpb25TdGF0dXMsXG4gIENvcmVNb2R1bGVcbn0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBXaWRnZXRDb25maWdDb21wb25lbnQgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL2NvbnRleHQtZGFzaGJvYXJkJztcbmltcG9ydCB7XG4gIERhdGFwb2ludEF0dHJpYnV0ZXNGb3JtQ29uZmlnLFxuICBEYXRhcG9pbnRTZWxlY3Rvck1vZGFsT3B0aW9ucyxcbiAgRGF0YXBvaW50U2VsZWN0b3JNb2R1bGUsXG4gIEtQSURldGFpbHNcbn0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9kYXRhcG9pbnQtc2VsZWN0b3InO1xuaW1wb3J0IHtcbiAgZGF0ZVJhbmdlVmFsaWRhdG9yLFxuICBUSU1FX1JBTkdFX0lOVEVSVkFMX1VOSVRTX1ZBTFVFUyxcbiAgVGltZVJhbmdlSW50ZXJ2YWxcbn0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9kYXRhcG9pbnRzLWV4cG9ydC1zZWxlY3Rvcic7XG5pbXBvcnQgeyBJTlRFUlZBTF9WQUxVRVMgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL2ludGVydmFsLXBpY2tlcic7XG5pbXBvcnQgeyBQb3BvdmVyTW9kdWxlIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC9wb3BvdmVyJztcbmltcG9ydCB7IG1lcmdlLCBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gIERhdGFwb2ludHNUYWJsZUNvbmZpZyxcbiAgREFURV9TRUxFQ1RJT05fTEFCRUxTLFxuICBEQVRFX1NFTEVDVElPTl9WQUxVRVMsXG4gIERBVEVfU0VMRUNUSU9OX1ZBTFVFU19BUlIsXG4gIERhdGVSYW5nZSxcbiAgREVGQVVMVF9DT1VOVERPV05fVkFMVUUsXG4gIElOVEVSVkFMX1ZBTFVFU19BUlIsXG4gIFJFRlJFU0hfSU5URVJWQUxfVkFMVUVTX0FSUixcbiAgVElNRV9SQU5HRV9JTlRFUlZBTF9MQUJFTFNcbn0gZnJvbSAnLi4vZGF0YXBvaW50cy10YWJsZS13aWRnZXQubW9kZWwnO1xuaW1wb3J0IHsgRGF0YXBvaW50c1RhYmxlU2VydmljZSB9IGZyb20gJy4uL2RhdGFwb2ludHMtdGFibGUuc2VydmljZSc7XG5pbXBvcnQgeyBEYXRlUmFuZ2VQaWNrZXJDb21wb25lbnQgfSBmcm9tICcuLi9kYXRlLXJhbmdlLXBpY2tlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGF0YXBvaW50c1RhYmxlQ29uZmlnU2VydmljZSB9IGZyb20gJy4vZGF0YXBvaW50cy10YWJsZS1jb25maWcuc2VydmljZSc7XG5cbmV4cG9ydCBmdW5jdGlvbiBtaW5PbmVEYXRhcG9pbnRBY3RpdmUoKTogVmFsaWRhdG9yRm4ge1xuICByZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0+IHtcbiAgICBjb25zdCBkYXRhcG9pbnRzOiBLUElEZXRhaWxzW10gPSBjb250cm9sLnZhbHVlO1xuXG4gICAgaWYgKCFkYXRhcG9pbnRzIHx8ICFkYXRhcG9pbnRzLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3QgYWN0aXZlRGF0YXBvaW50cyA9IGRhdGFwb2ludHMuZmlsdGVyKGRhdGFwb2ludCA9PiBkYXRhcG9pbnQuX19hY3RpdmUpO1xuXG4gICAgaWYgKGFjdGl2ZURhdGFwb2ludHMubGVuZ3RoID49IDEpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4geyBleGFjdGx5T25lRGF0YXBvaW50TmVlZHNUb0JlQWN0aXZlOiB0cnVlIH07XG4gIH07XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1kYXRhcG9pbnRzLXRhYmxlLXZpZXctY29uZmlnJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGFwb2ludHMtdGFibGUtY29uZmlnLmNvbXBvbmVudC5odG1sJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvcmVNb2R1bGUsXG4gICAgRGF0YXBvaW50U2VsZWN0b3JNb2R1bGUsXG4gICAgRGF0ZVJhbmdlUGlja2VyQ29tcG9uZW50LFxuICAgIFBvcG92ZXJNb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIERhdGFwb2ludHNUYWJsZVdpZGdldENvbmZpZ0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgLyoqXG4gICAqICBEYXRhIHBvaW50cyB0YWJsZSB3aWRnZXQgY29uZmlnLlxuICAgKi9cbiAgQElucHV0KCkgY29uZmlnOiBEYXRhcG9pbnRzVGFibGVDb25maWc7XG5cbiAgcmVhZG9ubHkgQUdHUkVHQVRJT05fTEFCRUxTID0gQUdHUkVHQVRJT05fTEFCRUxTO1xuICByZWFkb25seSBEQVRFX1NFTEVDVElPTl9MQUJFTFMgPSBEQVRFX1NFTEVDVElPTl9MQUJFTFM7XG4gIHJlYWRvbmx5IERFRkFVTFRfREFURV9TRUxFQ1RPUl9WQUxVRSA9IERBVEVfU0VMRUNUSU9OX1ZBTFVFUy5kYXNoYm9hcmRfY29udGV4dDtcbiAgcmVhZG9ubHkgREVGQVVMVF9JTlRFUlZBTF9WQUxVRSA9IElOVEVSVkFMX1ZBTFVFUy5ob3VycztcbiAgcmVhZG9ubHkgVElNRV9SQU5HRV9JTlRFUlZBTF9MQUJFTFMgPSBUSU1FX1JBTkdFX0lOVEVSVkFMX0xBQkVMUztcblxuICByZWFkb25seSBBR0dSRUdBVElPTl9WQUxVRVNfQVJSID0gQUdHUkVHQVRJT05fVkFMVUVTX0FSUjtcbiAgcmVhZG9ubHkgREFURV9TRUxFQ1RJT05fVkFMVUVTX0FSUiA9IERBVEVfU0VMRUNUSU9OX1ZBTFVFU19BUlI7XG4gIHJlYWRvbmx5IElOVEVSVkFMX1ZBTFVFU19BUlIgPSBJTlRFUlZBTF9WQUxVRVNfQVJSO1xuICByZWFkb25seSBSRUZSRVNIX0lOVEVSVkFMX1ZBTFVFU19BUlIgPSBSRUZSRVNIX0lOVEVSVkFMX1ZBTFVFU19BUlI7XG5cbiAgZGF0YXBvaW50U2VsZWN0aW9uQ29uZmlnOiBQYXJ0aWFsPERhdGFwb2ludFNlbGVjdG9yTW9kYWxPcHRpb25zPiA9IHt9O1xuICBkaXNhYmxlZEFnZ3JlZ2F0aW9uT3B0aW9uczogQWdncmVnYXRpb25PcHRpb25TdGF0dXMgPSB7fTtcbiAgZGVmYXVsdEZvcm1PcHRpb25zOiBQYXJ0aWFsPERhdGFwb2ludEF0dHJpYnV0ZXNGb3JtQ29uZmlnPiA9IHtcbiAgICBzZWxlY3RhYmxlQ2hhcnRMaW5lVHlwZXM6IFtdLFxuICAgIHNlbGVjdGFibGVBeGlzVHlwZXM6IFtdLFxuICAgIHNob3dSZWRSYW5nZTogdHJ1ZSxcbiAgICBzaG93WWVsbG93UmFuZ2U6IHRydWVcbiAgfTtcbiAgZm9ybUdyb3VwOiBSZXR1cm5UeXBlPERhdGFwb2ludHNUYWJsZVdpZGdldENvbmZpZ0NvbXBvbmVudFsnY3JlYXRlRm9ybSddPjtcbiAgaXNXaWRnZXRMaW5rZWRUb0dsb2JhbFRpbWVDb250ZXh0OiBib29sZWFuO1xuXG4gIHByaXZhdGUgZGVjaW1hbExpbWl0cyA9IHtcbiAgICBudW1iZXJPZkRlY2ltYWxQbGFjZXNNaW46IDAsXG4gICAgbnVtYmVyT2ZEZWNpbWFsUGxhY2VzTWF4OiAxMFxuICB9IGFzIGNvbnN0O1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZSB3aGVuIHRoZSB0aW1lIGludGVydmFsIHNlbGVjdG9yIGl0ZW0gaGFzIGJlZW4gY2hhbmdlZCBwcm9ncmFtbWF0aWNhbGx5LlxuICAgKlxuICAgKiBUaGlzIHByb3BlcnR5IGlzIHVzZWQgdG8gdHJhY2sgY2hhbmdlcyBpbiB0aGUgdGltZSBpbnRlcnZhbCBzZWxlY3RvclxuICAgKiB0aGF0IGFyZSBub3QgdHJpZ2dlcmVkIGJ5IGRpcmVjdCB1c2VyIGludGVyYWN0aW9uLCBidXQgYnkgdGhlIGFwcGxpY2F0aW9uIGl0c2VsZi5cbiAgICpcbiAgICogSW4gb3VyIGNhc2UsIHRoZSBkYXRlIHNlbGVjdG9yIGFuZCB0aGUgaW50ZXJ2YWwgc2VsZWN0b3IgYXJlIGxpbmtlZC5cbiAgICogU28sIHdoZW4gb25lIG9mIHRoZW0gY2hhbmdlcywgaXQgYWZmZWN0cyB0aGUgb3RoZXIuXG4gICAqIEZvciBleGFtcGxlLCBzZWxlY3RpbmcgXCJMYXN0IGhvdXJcIiBpbiB0aGUgaW50ZXJ2YWwgc2VsZWN0b3Igc2hvdWxkIGF1dG9tYXRpY2FsbHkgdXBkYXRlIHRoZSBkYXRlIHJhbmdlIHRvIHRoZSBsYXN0IGhvdXIuXG4gICAqIEJ1dCB3aXRob3V0IHRoaXMgZmxhZywgY2hhbmdpbmcgdGhlIGRhdGUgcmFuZ2Ugd291bGQgYWxzbyB1cGRhdGUgdGhlIGludGVydmFsIHNlbGVjdG9yLCByZXN1bHRpbmcgaW4gXCJDdXN0b20gZGF0ZVwiIGJlaW5nIHNlbGVjdGVkLlxuICAgKiBUaGlzIGhhcHBlbnMgYmVjYXVzZSB0aGUgc3lzdGVtIHdvdWxkIGludGVycHJldCB0aGUgYmVoYXZpb3IgdGhpcyB3YXkuXG4gICAqL1xuICBwcml2YXRlIGlzSW50ZXJ2YWxTZWxlY3RvckNoYW5nZWRQcm9ncmFtbWF0aWNhbGx5ID0gZmFsc2U7XG4gIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZGF0YXBvaW50c1RhYmxlU2VydmljZTogRGF0YXBvaW50c1RhYmxlU2VydmljZSxcbiAgICBwcml2YXRlIGRhdGFwb2ludHNUYWJsZUNvbmZpZ1NlcnZpY2U6IERhdGFwb2ludHNUYWJsZUNvbmZpZ1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBmb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXIsXG4gICAgcHJpdmF0ZSBmb3JtOiBOZ0Zvcm0sXG4gICAgcHJpdmF0ZSB3aWRnZXRDb25maWc6IFdpZGdldENvbmZpZ0NvbXBvbmVudFxuICApIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMud2lkZ2V0Q29uZmlnLmNvbnRleHQ/LmlkKSB7XG4gICAgICB0aGlzLmRhdGFwb2ludFNlbGVjdGlvbkNvbmZpZy5jb250ZXh0QXNzZXQgPSB0aGlzLndpZGdldENvbmZpZz8uY29udGV4dDtcbiAgICB9XG5cbiAgICB0aGlzLmlzV2lkZ2V0TGlua2VkVG9HbG9iYWxUaW1lQ29udGV4dCA9XG4gICAgICB0aGlzLmNvbmZpZy53aWRnZXRJbnN0YW5jZUdsb2JhbEF1dG9SZWZyZXNoQ29udGV4dCA/PyB0cnVlO1xuXG4gICAgdGhpcy5pbml0Rm9ybSgpO1xuXG4gICAgdGhpcy5oYW5kbGVBdXRvUmVmcmVzaFRvZ2dsZUNoYW5nZXMoKTtcbiAgICB0aGlzLmhhbmRsZUludGVydmFsU2VsZWN0b3JDaGFuZ2VzKCk7XG4gICAgdGhpcy5oYW5kbGVEYXRlU2VsZWN0b3JDaGFuZ2VzKCk7XG4gICAgdGhpcy5oYW5kbGVHbG9iYWxEYXRlU2VsZWN0b3JDaGFuZ2VzKCk7XG5cbiAgICB0aGlzLmRpc2FibGVkQWdncmVnYXRpb25PcHRpb25zID1cbiAgICAgIHRoaXMuZGF0YXBvaW50c1RhYmxlQ29uZmlnU2VydmljZS51cGRhdGVEaXNhYmxlZFN0YXRlT2ZBZ2dyZWdhdGlvbk9wdGlvbkVudHJpZXMoXG4gICAgICAgIHRoaXMuZm9ybUdyb3VwLmNvbnRyb2xzLmRhdGVGcm9tLnZhbHVlLFxuICAgICAgICB0aGlzLmZvcm1Hcm91cC5jb250cm9scy5kYXRlVG8udmFsdWUsXG4gICAgICAgIEFHR1JFR0FUSU9OX1ZBTFVFU19BUlJcbiAgICAgICk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cblxuICBvbkJlZm9yZVNhdmUoY29uZmlnPzogRGF0YXBvaW50c1RhYmxlQ29uZmlnKTogdm9pZCB7XG4gICAgaWYgKFxuICAgICAgdGhpcy5mb3JtR3JvdXAudmFsdWUuYWdncmVnYXRpb24gPT09IEFHR1JFR0FUSU9OX1ZBTFVFUy5ub25lIHx8XG4gICAgICAoIXRoaXMuZm9ybUdyb3VwLnZhbHVlLmFnZ3JlZ2F0aW9uICYmIGNvbmZpZy5hZ2dyZWdhdGlvbiA9PT0gQUdHUkVHQVRJT05fVkFMVUVTLm5vbmUpXG4gICAgKSB7XG4gICAgICAvLyBUaGUgJ05PTkUnIGFnZ3JlZ2F0aW9uIHR5cGUgaXMgbm90IGhhbmRsZWQgYnkgYSBiYWNrZW5kLCBzbyBpdCBzaW1wbHkgbmVlZHMgdG8gYmUgZGVsZXRlZCB0byBnZXQgZGF0YSB3aXRob3V0IGFnZ3JlZ2F0aW9uLlxuICAgICAgdGhpcy5kZWxldGVBZ2dyZWdhdGlvblByb3BlcnR5KGNvbmZpZyk7XG4gICAgfVxuICAgIHRoaXMudXBkYXRlVGltZUNvbnRleHQoY29uZmlnLCB0aGlzLmZvcm1Hcm91cC52YWx1ZS5nbG9iYWxEYXRlU2VsZWN0b3IpO1xuICAgIE9iamVjdC5hc3NpZ24oY29uZmlnLCB0aGlzLmZvcm1Hcm91cC52YWx1ZSk7XG4gIH1cblxuICB0b2dnbGVSZWZyZXNoSW50ZXJ2YWxDb250cm9sKCk6IHZvaWQge1xuICAgIHRoaXMuZm9ybUdyb3VwLmNvbnRyb2xzLmlzQXV0b1JlZnJlc2hFbmFibGVkLnZhbHVlXG4gICAgICA/IHRoaXMuZm9ybUdyb3VwLmNvbnRyb2xzLnJlZnJlc2hJbnRlcnZhbC5kaXNhYmxlKClcbiAgICAgIDogdGhpcy5mb3JtR3JvdXAuY29udHJvbHMucmVmcmVzaEludGVydmFsLmVuYWJsZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVUaW1lQ29udGV4dChjb25maWc6IERhdGFwb2ludHNUYWJsZUNvbmZpZywgc2VsZWN0ZWREYXRlQ29udGV4dDogc3RyaW5nKTogdm9pZCB7XG4gICAgc3dpdGNoIChzZWxlY3RlZERhdGVDb250ZXh0KSB7XG4gICAgICBjYXNlIERBVEVfU0VMRUNUSU9OX1ZBTFVFUy5kYXNoYm9hcmRfY29udGV4dDpcbiAgICAgICAgY29uZmlnLmRpc3BsYXlEYXRlU2VsZWN0aW9uID0gZmFsc2U7XG4gICAgICAgIGNvbmZpZy53aWRnZXRJbnN0YW5jZUdsb2JhbEF1dG9SZWZyZXNoQ29udGV4dCA9IHRydWU7XG4gICAgICAgIGlmIChjb25maWcuYWdncmVnYXRpb24gIT09ICdOT05FJykge1xuICAgICAgICAgIHRoaXMuZGVsZXRlQWdncmVnYXRpb25Qcm9wZXJ0eShjb25maWcpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBEQVRFX1NFTEVDVElPTl9WQUxVRVMudmlld19hbmRfY29uZmlnOlxuICAgICAgICBjb25maWcuZGlzcGxheURhdGVTZWxlY3Rpb24gPSB0cnVlO1xuICAgICAgICBjb25maWcud2lkZ2V0SW5zdGFuY2VHbG9iYWxBdXRvUmVmcmVzaENvbnRleHQgPSBmYWxzZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIERBVEVfU0VMRUNUSU9OX1ZBTFVFUy5jb25maWc6XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBjb25maWcuZGlzcGxheURhdGVTZWxlY3Rpb24gPSBmYWxzZTtcbiAgICAgICAgY29uZmlnLndpZGdldEluc3RhbmNlR2xvYmFsQXV0b1JlZnJlc2hDb250ZXh0ID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBpbml0Rm9ybSgpOiB2b2lkIHtcbiAgICB0aGlzLmZvcm1Hcm91cCA9IHRoaXMuY3JlYXRlRm9ybSgpO1xuICAgIC8vIFdoZW4gdGhlICdOT05FJyBhZ2dyZWdhdGlvbiBpcyByZW1vdmVkIGF0IHRoZSAnb25CZWZvcmVTYXZlJyBibG9jayxcbiAgICAvLyBhbmQgYSBHbG9iYWwgRGF0ZSBDb250ZXh0IGZvcmNlcyB3aWRnZXRzIGF1dG8gcmVmcmVzaCB0byBiZSBlbmFibGVkXG4gICAgLy8gdGhlbiwgdGhlIGFnZ3JlZ2F0aW9uIHNlbGVjdG9yIHdpbGwgYmUgZW1wdHkgb24gaW5pdGlhbCBsb2FkLlxuICAgIHRoaXMuY29uZmlnLmFnZ3JlZ2F0aW9uID0gdGhpcy5jb25maWcuYWdncmVnYXRpb24gPz8gQUdHUkVHQVRJT05fVkFMVUVTLm5vbmU7XG5cbiAgICB0aGlzLmZvcm0uZm9ybS5hZGRDb250cm9sKCdjb25maWcnLCB0aGlzLmZvcm1Hcm91cCk7XG4gICAgdGhpcy5mb3JtR3JvdXAucGF0Y2hWYWx1ZSh0aGlzLmNvbmZpZyk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUZvcm0oKSB7XG4gICAgY29uc3QgeyBkYXRlRnJvbSwgZGF0ZVRvIH0gPSB0aGlzLmRhdGFwb2ludHNUYWJsZVNlcnZpY2UuY2FsY3VsYXRlRGF0ZVJhbmdlKFxuICAgICAgdGhpcy5ERUZBVUxUX0lOVEVSVkFMX1ZBTFVFXG4gICAgKTtcbiAgICBjb25zdCBpc0xlZ2FjeVdpZGdldCA9XG4gICAgICB0aGlzLmNvbmZpZy5oYXNPd25Qcm9wZXJ0eSgnd2lkZ2V0SW5zdGFuY2VHbG9iYWxUaW1lQ29udGV4dCcpICYmXG4gICAgICAhdGhpcy5jb25maWcuaGFzT3duUHJvcGVydHkoJ2RlY2ltYWxQbGFjZXMnKTtcblxuICAgIHJldHVybiB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKFxuICAgICAge1xuICAgICAgICBhZ2dyZWdhdGlvbjogbmV3IEZvcm1Db250cm9sKHtcbiAgICAgICAgICB2YWx1ZTogQUdHUkVHQVRJT05fVkFMVUVTLm5vbmUgYXMgQWdncmVnYXRpb25PcHRpb24sXG4gICAgICAgICAgZGlzYWJsZWQ6ICF0aGlzLmlzQXV0b1JlZmVyc2hEaXNhYmxlZCgpXG4gICAgICAgIH0pLFxuICAgICAgICBkYXRhcG9pbnRzOiB0aGlzLmZvcm1CdWlsZGVyLmNvbnRyb2wobmV3IEFycmF5PEtQSURldGFpbHM+KCksIFtcbiAgICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLFxuICAgICAgICAgIFZhbGlkYXRvcnMubWluTGVuZ3RoKDEpLFxuICAgICAgICAgIG1pbk9uZURhdGFwb2ludEFjdGl2ZSgpXG4gICAgICAgIF0pLFxuICAgICAgICBnbG9iYWxEYXRlU2VsZWN0b3I6IG5ldyBGb3JtQ29udHJvbChcbiAgICAgICAgICBpc0xlZ2FjeVdpZGdldFxuICAgICAgICAgICAgPyB0aGlzLmRldGVybWluZUdsb2JhbERhdGVTZWxlY3RvclZhbHVlRm9yTGVnYWN5V2lkZ2V0KClcbiAgICAgICAgICAgIDogdGhpcy5ERUZBVUxUX0RBVEVfU0VMRUNUT1JfVkFMVUVcbiAgICAgICAgKSxcbiAgICAgICAgZGF0ZUZyb206IG5ldyBGb3JtQ29udHJvbChkYXRlRnJvbSksXG4gICAgICAgIGRhdGVUbzogbmV3IEZvcm1Db250cm9sKGRhdGVUbyksXG4gICAgICAgIGRlY2ltYWxQbGFjZXM6IFtcbiAgICAgICAgICAyLFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWQsXG4gICAgICAgICAgICBWYWxpZGF0b3JzLm1pbih0aGlzLmRlY2ltYWxMaW1pdHMubnVtYmVyT2ZEZWNpbWFsUGxhY2VzTWluKSxcbiAgICAgICAgICAgIFZhbGlkYXRvcnMubWF4KHRoaXMuZGVjaW1hbExpbWl0cy5udW1iZXJPZkRlY2ltYWxQbGFjZXNNYXgpLFxuICAgICAgICAgICAgVmFsaWRhdG9ycy5wYXR0ZXJuKCdeWzAtOV0rJCcpXG4gICAgICAgICAgXVxuICAgICAgICBdLFxuICAgICAgICBpbnRlcnZhbDogbmV3IEZvcm1Db250cm9sKHRoaXMuREVGQVVMVF9JTlRFUlZBTF9WQUxVRSBhcyBUaW1lUmFuZ2VJbnRlcnZhbCksXG4gICAgICAgIGlzQXV0b1JlZnJlc2hFbmFibGVkOiBpc0xlZ2FjeVdpZGdldCA/IHRoaXMuY29uZmlnLnJlYWx0aW1lIDogW3RydWVdLFxuICAgICAgICByZWZyZXNoSW50ZXJ2YWw6IG5ldyBGb3JtQ29udHJvbCh7XG4gICAgICAgICAgdmFsdWU6IERFRkFVTFRfQ09VTlRET1dOX1ZBTFVFLFxuICAgICAgICAgIGRpc2FibGVkOiB0aGlzLmlzQXV0b1JlZmVyc2hEaXNhYmxlZCgpXG4gICAgICAgIH0pXG4gICAgICB9LFxuICAgICAgeyB2YWxpZGF0b3JzOiBkYXRlUmFuZ2VWYWxpZGF0b3IgfVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGRldGVybWluZUdsb2JhbERhdGVTZWxlY3RvclZhbHVlRm9yTGVnYWN5V2lkZ2V0KCk6IHN0cmluZyB7XG4gICAgY29uc3QgeyBkaXNwbGF5RGF0ZVNlbGVjdGlvbiwgd2lkZ2V0SW5zdGFuY2VHbG9iYWxBdXRvUmVmcmVzaENvbnRleHQgfSA9IHRoaXMuY29uZmlnO1xuXG4gICAgLy8gU3RhdGUgb2Ygd2lkZ2V0SW5zdGFuY2VHbG9iYWxUaW1lQ29udGV4dCB3YXMgY29udmVydGVkIHRvIHdpZGdldEluc3RhbmNlR2xvYmFsQXV0b1JlZnJlc2hDb250ZXh0LlxuICAgIC8vIFRoYXQgaXMgd2h5IGl0IHVzZSBoZXJlIGluIGEgbGVnYWN5IHdpZGdldCBjb250ZXh0LlxuICAgIGlmICh3aWRnZXRJbnN0YW5jZUdsb2JhbEF1dG9SZWZyZXNoQ29udGV4dCkge1xuICAgICAgcmV0dXJuIERBVEVfU0VMRUNUSU9OX1ZBTFVFUy5kYXNoYm9hcmRfY29udGV4dDtcbiAgICB9XG5cbiAgICByZXR1cm4gZGlzcGxheURhdGVTZWxlY3Rpb25cbiAgICAgID8gREFURV9TRUxFQ1RJT05fVkFMVUVTLnZpZXdfYW5kX2NvbmZpZ1xuICAgICAgOiBEQVRFX1NFTEVDVElPTl9WQUxVRVMuY29uZmlnO1xuICB9XG5cbiAgcHJpdmF0ZSBpc0F1dG9SZWZlcnNoRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgY29uc3QgaXNJbml0aWFsV2lkZ2V0Q3JlYXRpb24gPVxuICAgICAgT2JqZWN0LmtleXModGhpcy5jb25maWcpLmxlbmd0aCA9PT0gMSAmJiB0aGlzLmNvbmZpZ1snc2V0dGluZ3MnXTtcblxuICAgIGlmIChpc0luaXRpYWxXaWRnZXRDcmVhdGlvbikge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IGlzTGVnYWN5V2lkZ2V0UmVhbHRpbWVOb3RBY3RpdmUgPVxuICAgICAgIXRoaXMuY29uZmlnLnJlYWx0aW1lICYmXG4gICAgICAhdGhpcy5jb25maWcuaGFzT3duUHJvcGVydHkoJ2RlY2ltYWxQbGFjZXMnKSAmJlxuICAgICAgIXRoaXMuY29uZmlnLmhhc093blByb3BlcnR5KCdyZWZyZXNoSW50ZXJ2YWwnKSAmJlxuICAgICAgIXRoaXMuY29uZmlnLmhhc093blByb3BlcnR5KCdpc0F1dG9SZWZyZXNoRW5hYmxlZCcpO1xuXG4gICAgaWYgKGlzTGVnYWN5V2lkZ2V0UmVhbHRpbWVOb3RBY3RpdmUpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiAhdGhpcy5jb25maWcuaXNBdXRvUmVmcmVzaEVuYWJsZWQ7XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlcyBjaGFuZ2VzIHRvIHRoZSBhdXRvLXJlZnJlc2ggdG9nZ2xlIGNvbnRyb2wgYW5kIHVwZGF0ZXMgdGhlIGFnZ3JlZ2F0aW9uIGNvbnRyb2wgYWNjb3JkaW5nbHkuXG4gICAqXG4gICAqIFRoaXMgbWV0aG9kIHN1YnNjcmliZXMgdG8gdGhlIHZhbHVlIGNoYW5nZXMgb2YgdGhlIGF1dG8tcmVmcmVzaCB0b2dnbGUgZm9ybSBjb250cm9sLlxuICAgKiBXaGVuIGF1dG8tcmVmcmVzaCBpcyBlbmFibGVkLCB0aGUgYWdncmVnYXRpb24gY29udHJvbCdzIHZhbHVlIGlzIHNldCB0byAnbm9uZScgYW5kIHRoZSBjb250cm9sIGlzXG4gICAqIHZpc3VhbGx5IGRpc2FibGVkIChidXQgbm90IHByb2dyYW1tYXRpY2FsbHkgZGlzYWJsZWQgdG8gZW5zdXJlIHRoZSB2YWx1ZSBpcyBzYXZlZCkuXG4gICAqIFdoZW4gYXV0by1yZWZyZXNoIGlzIGRpc2FibGVkLCB0aGUgYWdncmVnYXRpb24gY29udHJvbCBpcyBlbmFibGVkLlxuICAgKi9cbiAgcHJpdmF0ZSBoYW5kbGVBdXRvUmVmcmVzaFRvZ2dsZUNoYW5nZXMoKTogdm9pZCB7XG4gICAgdGhpcy5mb3JtR3JvdXAuY29udHJvbHMuaXNBdXRvUmVmcmVzaEVuYWJsZWQudmFsdWVDaGFuZ2VzXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAuc3Vic2NyaWJlKChpc0F1dG9SZWZyZXNoRW5hYmxlZDogYm9vbGVhbikgPT4ge1xuICAgICAgICBjb25zdCBhZ2dyZWdhdGlvbkNvbnRyb2wgPSB0aGlzLmZvcm1Hcm91cC5jb250cm9scy5hZ2dyZWdhdGlvbjtcbiAgICAgICAgaWYgKGlzQXV0b1JlZnJlc2hFbmFibGVkKSB7XG4gICAgICAgICAgYWdncmVnYXRpb25Db250cm9sLnNldFZhbHVlKEFHR1JFR0FUSU9OX1ZBTFVFUy5ub25lKTtcbiAgICAgICAgICAvLyBEbyBub3QgZGlzYWJsZSB0aGUgY29udHJvbCBwcm9ncmFtbWF0aWNhbGx5IHRvIGVuc3VyZSB0aGUgdmFsdWUgaXMgc2F2ZWQuXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYWdncmVnYXRpb25Db250cm9sLmVuYWJsZSgpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGVzIGNoYW5nZXMgaW4gdGhlIGludGVydmFsIHNlbGVjdG9yIGZvcm0gY29udHJvbC5cbiAgICovXG4gIHByaXZhdGUgaGFuZGxlSW50ZXJ2YWxTZWxlY3RvckNoYW5nZXMoKTogdm9pZCB7XG4gICAgdGhpcy5mb3JtR3JvdXAuY29udHJvbHMuaW50ZXJ2YWwudmFsdWVDaGFuZ2VzXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAuc3Vic2NyaWJlKChzZWxlY3RlZEludGVydmFsOiBUaW1lUmFuZ2VJbnRlcnZhbCkgPT4ge1xuICAgICAgICBpZiAoc2VsZWN0ZWRJbnRlcnZhbCA9PT0gVElNRV9SQU5HRV9JTlRFUlZBTF9VTklUU19WQUxVRVMuY3VzdG9tKSB7XG4gICAgICAgICAgdGhpcy51cGRhdGVEaXNhYmxlZEFnZ3JlZ2F0aW9uT3B0aW9ucygpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuaGFuZGxlTm9uQ3VzdG9tSW50ZXJ2YWwoc2VsZWN0ZWRJbnRlcnZhbCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlTm9uQ3VzdG9tSW50ZXJ2YWwoc2VsZWN0ZWRJbnRlcnZhbDogVGltZVJhbmdlSW50ZXJ2YWwpOiB2b2lkIHtcbiAgICB0aGlzLmlzSW50ZXJ2YWxTZWxlY3RvckNoYW5nZWRQcm9ncmFtbWF0aWNhbGx5ID0gdHJ1ZTtcbiAgICB0aGlzLnVwZGF0ZURhdGVSYW5nZShzZWxlY3RlZEludGVydmFsKTtcbiAgICB0aGlzLnVwZGF0ZURpc2FibGVkQWdncmVnYXRpb25PcHRpb25zKCk7XG4gICAgdGhpcy51cGRhdGVBZ2dyZWdhdGlvbklmQXV0b1JlZnJlc2hEaXNhYmxlZChzZWxlY3RlZEludGVydmFsKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlRGF0ZVJhbmdlKHNlbGVjdGVkSW50ZXJ2YWw6IFRpbWVSYW5nZUludGVydmFsKTogdm9pZCB7XG4gICAgY29uc3QgZGF0ZVJhbmdlOiBEYXRlUmFuZ2UgPSB0aGlzLmRhdGFwb2ludHNUYWJsZVNlcnZpY2UuY2FsY3VsYXRlRGF0ZVJhbmdlKHNlbGVjdGVkSW50ZXJ2YWwpO1xuICAgIHRoaXMuZm9ybUdyb3VwLmNvbnRyb2xzLmRhdGVUby5zZXRWYWx1ZShkYXRlUmFuZ2UuZGF0ZVRvKTtcblxuICAgIC8vIE1UTS02MTM1MVxuICAgIC8vIFVzZSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUgdG8gcXVldWUgdGhlIGRhdGVGcm9tIHVwZGF0ZS5cbiAgICAvLyBUaGlzIHByZXZlbnRzIHRpbWluZyBpc3N1ZXMgd2hlcmUgcmFwaWQgc2V0VmFsdWUgY2FsbHMgbWlnaHRcbiAgICAvLyBjYXVzZSB0aGUgdmlldyB0byBnbyBvdXQgb2Ygc3luYyB3aXRoIGZvcm0gY29udHJvbCB2YWx1ZXMsXG4gICAgLy8gZXNwZWNpYWxseSBkdXJpbmcgdGhlIGZpcnN0IGNoYW5nZSBhZnRlciBpbml0aWFsaXphdGlvbi5cbiAgICAvLyByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgIC8qKlxuICAgICAqIFdpdGhvdXQgdGhpcyByZXF1ZXN0QW5pbWF0aW9uRnJhbWUgb3Igc2V0VGltZW91dCwgZGF0ZUZyb20gd29uJ3QgY2hhbmdlIHRvIGEgY29ycmVjdCB2YWx1ZSBhZnRlciBmaXJzdCBzZWxlY3RvciBjaGFuZ2UuXG4gICAgICogV2hlbiBmb3JtIGlzIHNhdmVkIGl0IHNhdmVzIHdpdGggYSBjb3JyZWN0IHZhbHVlLCBldmVuIHdpdGhvdXQgd2l0aCB0aGlzIGZpeC5cbiAgICAgKiBIb3cgdG8gcmVwcm9kdWNlOlxuICAgICAqIDEuIHNldCBkYXRlIHZhbHVlcyB0byBlLmcuOiAwMS4wNS4yMDI0LTMwLjA1LjIwMjQgYW5kIHNhdmUgaXRcbiAgICAgKiAyLiByZW9wZW4gYSBjb25maWcgYW5kIHN3aXRjaCBpbnRlcnZhbCB0byBsYXN0IG1vbnRoXG4gICAgICovXG4gICAgLy8gVGhpcyBmaXggYnJha2VzIGEgbG9naWMgYmVoaW5kIGRpc2FibGluZyBub24gYXZhaWxhYmxlIGFnZ3JlZ2F0aW9ucy5cbiAgICAvLyBGb3JtIHdpbGwgYmUgc3RpbGwgc2F2ZWQgd2l0aCBjb3JyZWN0IGRhdGUgdmFsdWUsIG9ubHkgdmlldyBpcyBvdXQgb2YgYSBzeW5jLlxuICAgIHRoaXMuZm9ybUdyb3VwLmNvbnRyb2xzLmRhdGVGcm9tLnNldFZhbHVlKGRhdGVSYW5nZS5kYXRlRnJvbSk7XG4gICAgdGhpcy5pc0ludGVydmFsU2VsZWN0b3JDaGFuZ2VkUHJvZ3JhbW1hdGljYWxseSA9IGZhbHNlO1xuICAgIC8vIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVEaXNhYmxlZEFnZ3JlZ2F0aW9uT3B0aW9ucygpOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkQWdncmVnYXRpb25PcHRpb25zID1cbiAgICAgIHRoaXMuZGF0YXBvaW50c1RhYmxlQ29uZmlnU2VydmljZS51cGRhdGVEaXNhYmxlZFN0YXRlT2ZBZ2dyZWdhdGlvbk9wdGlvbkVudHJpZXMoXG4gICAgICAgIHRoaXMuZm9ybUdyb3VwLmNvbnRyb2xzLmRhdGVGcm9tLnZhbHVlLFxuICAgICAgICB0aGlzLmZvcm1Hcm91cC5jb250cm9scy5kYXRlVG8udmFsdWUsXG4gICAgICAgIEFHR1JFR0FUSU9OX1ZBTFVFU19BUlJcbiAgICAgICk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUFnZ3JlZ2F0aW9uSWZBdXRvUmVmcmVzaERpc2FibGVkKHNlbGVjdGVkSW50ZXJ2YWw6IFRpbWVSYW5nZUludGVydmFsKTogdm9pZCB7XG4gICAgY29uc3QgaXNBdXRvUmVmcmVzaERpc2FibGVkID0gIXRoaXMuZm9ybUdyb3VwLmNvbnRyb2xzLmlzQXV0b1JlZnJlc2hFbmFibGVkLnZhbHVlO1xuICAgIGlmIChpc0F1dG9SZWZyZXNoRGlzYWJsZWQpIHtcbiAgICAgIHRoaXMuc2V0QWdncmVnYXRpb25WYWx1ZShzZWxlY3RlZEludGVydmFsKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldEFnZ3JlZ2F0aW9uVmFsdWUoaW50ZXJ2YWw6IFRpbWVSYW5nZUludGVydmFsKTogdm9pZCB7XG4gICAgY29uc3QgYWdncmVnYXRpb25Db250cm9sID0gdGhpcy5mb3JtR3JvdXAuY29udHJvbHMuYWdncmVnYXRpb247XG5cbiAgICBjb25zdCBuZXdBZ2dyZWdhdGlvblZhbHVlID1cbiAgICAgIHRoaXMuZGF0YXBvaW50c1RhYmxlQ29uZmlnU2VydmljZS5kZXRlcm1pbmVBZ2dyZWdhdGlvblZhbHVlKGludGVydmFsKTtcbiAgICBhZ2dyZWdhdGlvbkNvbnRyb2wuc2V0VmFsdWUobmV3QWdncmVnYXRpb25WYWx1ZSk7XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlcyBjaGFuZ2VzIGluIHRoZSBkYXRlIHNlbGVjdG9yIGZvcm0gY29udHJvbC5cbiAgICovXG4gIHByaXZhdGUgaGFuZGxlRGF0ZVNlbGVjdG9yQ2hhbmdlcygpOiB2b2lkIHtcbiAgICBtZXJnZShcbiAgICAgIHRoaXMuZm9ybUdyb3VwLmNvbnRyb2xzLmRhdGVGcm9tLnZhbHVlQ2hhbmdlcyxcbiAgICAgIHRoaXMuZm9ybUdyb3VwLmNvbnRyb2xzLmRhdGVUby52YWx1ZUNoYW5nZXNcbiAgICApXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMuaGFuZGxlRGF0ZUNoYW5nZSgpKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlRGF0ZUNoYW5nZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc0ludGVydmFsU2VsZWN0b3JDaGFuZ2VkUHJvZ3JhbW1hdGljYWxseSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGludGVydmFsQ29udHJvbCA9IHRoaXMuZm9ybUdyb3VwLmNvbnRyb2xzLmludGVydmFsO1xuICAgIGlmIChpbnRlcnZhbENvbnRyb2wudmFsdWUgPT09IFRJTUVfUkFOR0VfSU5URVJWQUxfVU5JVFNfVkFMVUVTLmN1c3RvbSkge1xuICAgICAgdGhpcy5oYW5kbGVDdXN0b21JbnRlcnZhbERhdGVDaGFuZ2UoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZXRJbnRlcnZhbFRvQ3VzdG9tKGludGVydmFsQ29udHJvbCk7XG4gICAgfVxuICAgIHRoaXMuc2V0VG9GaXJzdEF2YWlsYWJsZUFnZ3JlZ2F0aW9uT3B0aW9uSWZDdXJyZW50QWdncmVnYXRpb25Jc0Rpc2FibGVkKCk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUN1c3RvbUludGVydmFsRGF0ZUNoYW5nZSgpOiB2b2lkIHtcbiAgICB0aGlzLnVwZGF0ZURpc2FibGVkQWdncmVnYXRpb25PcHRpb25zKCk7XG4gIH1cblxuICBwcml2YXRlIHNldEludGVydmFsVG9DdXN0b20oaW50ZXJ2YWxDb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiB2b2lkIHtcbiAgICBpbnRlcnZhbENvbnRyb2wuc2V0VmFsdWUoVElNRV9SQU5HRV9JTlRFUlZBTF9VTklUU19WQUxVRVMuY3VzdG9tKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGVzIGNoYW5nZXMgaW4gdGhlIGdsb2JhbCBkYXRlIHNlbGVjdG9yIGZvcm0gY29udHJvbC5cbiAgICovXG4gIHByaXZhdGUgaGFuZGxlR2xvYmFsRGF0ZVNlbGVjdG9yQ2hhbmdlcygpOiB2b2lkIHtcbiAgICB0aGlzLmZvcm1Hcm91cC5jb250cm9scy5nbG9iYWxEYXRlU2VsZWN0b3IudmFsdWVDaGFuZ2VzXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAuc3Vic2NyaWJlKChzZWxlY3RlZDogc3RyaW5nKSA9PiB7XG4gICAgICAgIGlmIChzZWxlY3RlZCA9PT0gREFURV9TRUxFQ1RJT05fVkFMVUVTLmRhc2hib2FyZF9jb250ZXh0KSB7XG4gICAgICAgICAgdGhpcy5oYW5kbGVEYXNoYm9hcmRDb250ZXh0KCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5oYW5kbGVOb25EYXNoYm9hcmRDb250ZXh0KCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVEYXNoYm9hcmRDb250ZXh0KCk6IHZvaWQge1xuICAgIHRoaXMuaXNXaWRnZXRMaW5rZWRUb0dsb2JhbFRpbWVDb250ZXh0ID0gdHJ1ZTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlTm9uRGFzaGJvYXJkQ29udGV4dCgpOiB2b2lkIHtcbiAgICB0aGlzLmlzV2lkZ2V0TGlua2VkVG9HbG9iYWxUaW1lQ29udGV4dCA9IGZhbHNlO1xuXG4gICAgaWYgKHRoaXMuaXNDb25maWdTYXZlZFdpdGhvdXREYXNoYm9hcmRUaW1lT3B0aW9uKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnVwZGF0ZUFnZ3JlZ2F0aW9uSWZOZWNlc3NhcnkoKTtcbiAgICB0aGlzLnNldEludGVydmFsVG9DdXN0b20odGhpcy5mb3JtR3JvdXAuY29udHJvbHMuaW50ZXJ2YWwpO1xuICB9XG5cbiAgcHJpdmF0ZSBpc0NvbmZpZ1NhdmVkV2l0aG91dERhc2hib2FyZFRpbWVPcHRpb24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICF0aGlzLmNvbmZpZy53aWRnZXRJbnN0YW5jZUdsb2JhbEF1dG9SZWZyZXNoQ29udGV4dDtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlQWdncmVnYXRpb25JZk5lY2Vzc2FyeSgpOiB2b2lkIHtcbiAgICBjb25zdCBhZ2dyZWdhdGlvbkNvbnRyb2wgPSB0aGlzLmZvcm1Hcm91cC5jb250cm9scy5hZ2dyZWdhdGlvbjtcbiAgICBjb25zdCBpc0Rhc2hib2FyZFRpbWVPcHRpb25TZXRBZ2dyZWdhdGlvblRvTnVsbCA9ICFhZ2dyZWdhdGlvbkNvbnRyb2wudmFsdWU7XG5cbiAgICBpZiAoaXNEYXNoYm9hcmRUaW1lT3B0aW9uU2V0QWdncmVnYXRpb25Ub051bGwpIHtcbiAgICAgIGFnZ3JlZ2F0aW9uQ29udHJvbC5zZXRWYWx1ZShBR0dSRUdBVElPTl9WQUxVRVMubm9uZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGFnZ3JlZ2F0aW9uIGNvbnRyb2wgdG8gdGhlIGZpcnN0IGF2YWlsYWJsZSAobm9uLWRpc2FibGVkKSBvcHRpb24gaWYgdGhlIGN1cnJlbnQgb3B0aW9uIGlzIGRpc2FibGVkLlxuICAgKlxuICAgKiBUaGlzIG1ldGhvZDpcbiAgICogLSBSZXRyaWV2ZXMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGFnZ3JlZ2F0aW9uIGNvbnRyb2wuXG4gICAqIC0gQ2hlY2tzIGlmIHRoZSBjdXJyZW50IGFnZ3JlZ2F0aW9uIG9wdGlvbiBpcyBkaXNhYmxlZC5cbiAgICogLSBJZiB0aGUgY3VycmVudCBvcHRpb24gaXMgZGlzYWJsZWQsIHNldHMgdGhlIGNvbnRyb2wgdG8gdGhlIGZpcnN0IGF2YWlsYWJsZSAobm9uLWRpc2FibGVkKSBvcHRpb24gYmFzZWQgb24gdGhlIGZvbGxvd2luZyBvcmRlcjpcbiAgICogICAtIElmIHRoZSBjdXJyZW50IHZhbHVlIGlzIGBEQUlMWWAsIGl0IHN3aXRjaGVzIHRvIGBIT1VSTFlgIGlmIGl0J3Mgbm90IGRpc2FibGVkLCBvdGhlcndpc2UgdG8gYE1JTlVURUxZYCBpZiBgSE9VUkxZYCBpcyBhbHNvIGRpc2FibGVkLlxuICAgKiAgIC0gSWYgdGhlIGN1cnJlbnQgdmFsdWUgaXMgYEhPVVJMWWAsIGl0IHN3aXRjaGVzIHRvIGBNSU5VVEVMWWAgaWYgaXQncyBub3QgZGlzYWJsZWQuXG4gICAqICAgLSBJZiBhbGwgb3B0aW9ucyBhcmUgZGlzYWJsZWQsIGl0IHNldHMgdGhlIHZhbHVlIHRvIGBOT05FYC5cbiAgICpcbiAgICogVGhlIGRpc2FibGVkIHN0YXRlIGlzIHN0b3JlZCBpbiB0aGUgYGRpc2FibGVkQWdncmVnYXRpb25PcHRpb25zYCBvYmplY3QsXG4gICAqIHdoZXJlIHRoZSBrZXkgaXMgdGhlIGFnZ3JlZ2F0aW9uIHZhbHVlIGFuZCB0aGUgdmFsdWUgaXMgYSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciB0aGUgb3B0aW9uIGlzIGRpc2FibGVkLlxuICAgKlxuICAgKiBUaGUgYEFHR1JFR0FUSU9OX1ZBTFVFU2Agb2JqZWN0IGRlZmluZXMgdGhlIHBvc3NpYmxlIGFnZ3JlZ2F0aW9uIHZhbHVlcy5cbiAgICovXG4gIC8vIFRPRE8gc2FtZSBtZXRob2QgaXMgaW4gZGF0YXBvaW50cyBleHBvcnQgY29tcG9uZW50LiBDb25zaWRlciBtb3ZpbmcgaXQgdG8gYSBzaGFyZWQgc2VydmljZSB3aGVuIERQVCB3aWxsIGJlIGludGVncmF0aW5nIHdpdGggTVRNLTU5Njg5LlxuICAvLyBUT0RPICdkZXRlcm1pbmVOZXdBZ2dyZWdhdGlvblZhbHVlJyB3aWxsIGJlIGEgc2hhcmVkIG1ldGhvZC5cbiAgLy8gSW50ZWdyYXRpb24gdGFzazogTVRNLTYwMjIxXG4gIHByaXZhdGUgc2V0VG9GaXJzdEF2YWlsYWJsZUFnZ3JlZ2F0aW9uT3B0aW9uSWZDdXJyZW50QWdncmVnYXRpb25Jc0Rpc2FibGVkKCk6IHZvaWQge1xuICAgIGNvbnN0IGFnZ3JlZ2F0aW9uQ29udHJvbCA9IHRoaXMuZm9ybUdyb3VwLmNvbnRyb2xzLmFnZ3JlZ2F0aW9uO1xuICAgIGNvbnN0IGN1cnJlbnRWYWx1ZSA9IGFnZ3JlZ2F0aW9uQ29udHJvbC52YWx1ZTtcblxuICAgIGNvbnN0IG5ld0FnZ3JlZ2F0aW9uVmFsdWUgPSB0aGlzLmRhdGFwb2ludHNUYWJsZUNvbmZpZ1NlcnZpY2UuZGV0ZXJtaW5lTmV3QWdncmVnYXRpb25WYWx1ZShcbiAgICAgIGN1cnJlbnRWYWx1ZSxcbiAgICAgIHRoaXMuZGlzYWJsZWRBZ2dyZWdhdGlvbk9wdGlvbnNcbiAgICApO1xuXG4gICAgaWYgKG5ld0FnZ3JlZ2F0aW9uVmFsdWUgIT09IGN1cnJlbnRWYWx1ZSkge1xuICAgICAgYWdncmVnYXRpb25Db250cm9sLnNldFZhbHVlKG5ld0FnZ3JlZ2F0aW9uVmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZGVsZXRlQWdncmVnYXRpb25Qcm9wZXJ0eShjb25maWc6IERhdGFwb2ludHNUYWJsZUNvbmZpZyk6IHZvaWQge1xuICAgIGRlbGV0ZSB0aGlzLmZvcm1Hcm91cC52YWx1ZS5hZ2dyZWdhdGlvbjtcbiAgICBkZWxldGUgY29uZmlnLmFnZ3JlZ2F0aW9uO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwicC1sLTI0IHAtci0yNFwiPlxuICA8Zm9ybVxuICAgIGNsYXNzPVwibm8tY2FyZC1jb250ZXh0XCJcbiAgICBbZm9ybUdyb3VwXT1cImZvcm1Hcm91cFwiXG4gID5cbiAgICA8IS0tIDxkYXRhcG9pbnRzLXNlbGVjdG9yPiAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgPCEtLSBnbG9iYWwtdGltZS1jb250ZXh0LXNlbGVjdG9yIC0tPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBtLWItMCBwLWItMTYgc2VwYXJhdG9yLWJvdHRvbVwiPlxuICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggYS1pLWNlbnRlciBwLXQtNFwiXG4gICAgICAgICAgICBmb3I9XCJkYXRlU2VsZWN0aW9uXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyAnRGF0ZSBzZWxlY3Rpb24nIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIGNsYXNzPVwiYnRuLWhlbHAgYnRuLWhlbHAtLXNtXCJcbiAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInSGVscCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICBbcG9wb3Zlcl09XCJwb3BvdmVyVGVtcGxhdGVcIlxuICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJyaWdodFwiXG4gICAgICAgICAgICAgIHRyaWdnZXJzPVwiZm9jdXNcIlxuICAgICAgICAgICAgICBjb250YWluZXI9XCJib2R5XCJcbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIFthZGFwdGl2ZVBvc2l0aW9uXT1cInRydWVcIlxuICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNwb3BvdmVyVGVtcGxhdGU+XG4gICAgICAgICAgICA8c3BhbiB0cmFuc2xhdGU+XG4gICAgICAgICAgICAgIENob29zZSBob3cgdG8gc2VsZWN0IGEgZGF0ZSByYW5nZSwgdGhlIGF2YWlsYWJsZSBvcHRpb25zIGFyZTpcbiAgICAgICAgICAgICAgPHVsIGNsYXNzPVwibS1sLTAgcC1sLTggbS10LTggbS1iLTBcIj5cbiAgICAgICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgICAgICA8Yj5EYXNoYm9hcmQgdGltZSByYW5nZTo8L2I+XG4gICAgICAgICAgICAgICAgICByZXN0cmljdHMgZGF0ZSBzZWxlY3Rpb24gdG8gdGhlIGdsb2JhbCBkYXNoYm9hcmQgY29uZmlndXJhdGlvbiBvbmx5XG4gICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgICAgICA8Yj5XaWRnZXQgY29uZmlndXJhdGlvbjo8L2I+XG4gICAgICAgICAgICAgICAgICByZXN0cmljdHMgdGhlIGRhdGUgc2VsZWN0aW9uIG9ubHkgdG8gdGhlIHdpZGdldCBjb25maWd1cmF0aW9uXG4gICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgICAgICA8Yj5XaWRnZXQgYW5kIHdpZGdldCBjb25maWd1cmF0aW9uOjwvYj5cbiAgICAgICAgICAgICAgICAgIHJlc3RyaWN0cyB0aGUgZGF0ZSBzZWxlY3Rpb24gdG8gdGhlIHdpZGdldCB2aWV3IGFuZCB3aWRnZXQgY29uZmlndXJhdGlvbiBvbmx5XG4gICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjOHktc2VsZWN0LXdyYXBwZXJcIj5cbiAgICAgICAgICAgIDxzZWxlY3RcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgdGV4dC0xMlwiXG4gICAgICAgICAgICAgIFt0aXRsZV09XCInRGF0ZSBzZWxlY3Rpb24nIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInRGF0ZSBzZWxlY3Rpb24nIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgaWQ9XCJnbG9iYWxEYXRlU2VsZWN0b3JcIlxuICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJnbG9iYWxEYXRlU2VsZWN0b3JcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8b3B0aW9uXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGRhdGFTZWxlY3Rpb25WYWx1ZSBvZiBEQVRFX1NFTEVDVElPTl9WQUxVRVNfQVJSXCJcbiAgICAgICAgICAgICAgICBbbmdWYWx1ZV09XCJkYXRhU2VsZWN0aW9uVmFsdWVcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3sgREFURV9TRUxFQ1RJT05fTEFCRUxTW2RhdGFTZWxlY3Rpb25WYWx1ZV0gfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgPGM4eS1kYXRhcG9pbnQtc2VsZWN0aW9uLWxpc3RcbiAgICAgICAgICBjbGFzcz1cImJnLWluaGVyaXQgc2VwYXJhdG9yLXRvcCBwLXQtMTYgZC1ibG9ja1wiXG4gICAgICAgICAgbGlzdFRpdGxlPVwie3sgJ0RhdGEgcG9pbnRzJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgbmFtZT1cImRhdGFwb2ludHNcIlxuICAgICAgICAgIFtkZWZhdWx0Rm9ybU9wdGlvbnNdPVwiZGVmYXVsdEZvcm1PcHRpb25zXCJcbiAgICAgICAgICBbY29uZmlnXT1cImRhdGFwb2ludFNlbGVjdGlvbkNvbmZpZ1wiXG4gICAgICAgICAgW21pbkFjdGl2ZUNvdW50XT1cIjFcIlxuICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImRhdGFwb2ludHNcIlxuICAgICAgICA+PC9jOHktZGF0YXBvaW50LXNlbGVjdGlvbi1saXN0PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNXaWRnZXRMaW5rZWRUb0dsb2JhbFRpbWVDb250ZXh0XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XG4gICAgICAgICAgICA8IS0tIGludGVydmFsIHNlbGVjdG9yIC0tPlxuICAgICAgICAgICAgPGZpZWxkc2V0IGNsYXNzPVwiYzh5LWZpZWxkc2V0XCI+XG4gICAgICAgICAgICAgIDxsZWdlbmQgY2xhc3M9XCJkLWZsZXggYS1pLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgIHt7ICdBdXRvIHJlZnJlc2gnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4taGVscCBidG4taGVscC0tc21cIlxuICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInSGVscCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgW3BvcG92ZXJdPVwiXG4gICAgICAgICAgICAgICAgICAgICdDaGFuZ2UgdGhlIHN0YXRlIG9mIGludGVydmFsIGF1dG9tYXRpYyByZWZyZXNoIGFuZCBzZXQgdGhlIHJlZnJlc2ggZnJlcXVlbmN5LidcbiAgICAgICAgICAgICAgICAgICAgICB8IHRyYW5zbGF0ZVxuICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cInRvcFwiXG4gICAgICAgICAgICAgICAgICB0cmlnZ2Vycz1cImZvY3VzXCJcbiAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcj1cImJvZHlcIlxuICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICBbYWRhcHRpdmVQb3NpdGlvbl09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICAgIDwvbGVnZW5kPlxuICAgICAgICAgICAgICA8Yzh5LWZvcm0tZ3JvdXAgY2xhc3M9XCJtLWItMTYgZm9ybS1ncm91cC1zbVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZ2FwLTQgbS10LTggbS1iLTggYS1pLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiYzh5LXN3aXRjaFwiPlxuICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICBpZD1cInJlZnJlc2hUb2dnbGVcIlxuICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJpc0F1dG9SZWZyZXNoRW5hYmxlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJpc0F1dG9SZWZyZXNoRW5hYmxlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVJlZnJlc2hJbnRlcnZhbENvbnRyb2woKVwiXG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzci1vbmx5XCI+e3sgJ0F1dG8gcmVmcmVzaCcgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibS1iLTBcIlxuICAgICAgICAgICAgICAgICAgICBmb3I9XCJyZWZyZXNoSW50ZXJ2YWxcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7eyAnSW50ZXJ2YWwnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImM4eS1zZWxlY3Qtd3JhcHBlclwiPlxuICAgICAgICAgICAgICAgICAgICA8c2VsZWN0XG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgdGV4dC0xMlwiXG4gICAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIidSZWZyZXNoIGludGVydmFsIGluIHNlY29uZHMnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICBpZD1cInJlZnJlc2hJbnRlcnZhbFwiXG4gICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwicmVmcmVzaEludGVydmFsXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCByZWZyZXNoSW50ZXJ2YWwgb2YgUkVGUkVTSF9JTlRFUlZBTF9WQUxVRVNfQVJSXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1ZhbHVlXT1cInJlZnJlc2hJbnRlcnZhbFwiXG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgJ3t7IHNlY29uZHMgfX0gcycgfCB0cmFuc2xhdGU6IHsgc2Vjb25kczogcmVmcmVzaEludGVydmFsIC8gMTAwMCB9IH19XG4gICAgICAgICAgICAgICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvYzh5LWZvcm0tZ3JvdXA+XG4gICAgICAgICAgICA8L2ZpZWxkc2V0PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPCEtLSBkZWNpbWFsIGlucHV0IC0tPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cbiAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9XCJjOHktZmllbGRzZXRcIj5cbiAgICAgICAgICAgIDxsZWdlbmQ+XG4gICAgICAgICAgICAgIHt7ICdEZWNpbWFsIHBsYWNlcycgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgIDwvbGVnZW5kPlxuICAgICAgICAgICAgPGM4eS1mb3JtLWdyb3VwIGNsYXNzPVwicC10LThcIj5cbiAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICAgIG5hbWU9XCJkZWNpbWFsUGxhY2VzXCJcbiAgICAgICAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJkZWNpbWFsUGxhY2VzXCJcbiAgICAgICAgICAgICAgICBzdGVwPVwiMVwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L2M4eS1mb3JtLWdyb3VwPlxuICAgICAgICAgIDwvZmllbGRzZXQ+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8IS0tIGFnZ3JlZ2F0aW9uIHNlbGVjdG9yIC0tPlxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzV2lkZ2V0TGlua2VkVG9HbG9iYWxUaW1lQ29udGV4dFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxuICAgICAgICAgICAgPGZpZWxkc2V0IGNsYXNzPVwiYzh5LWZpZWxkc2V0XCI+XG4gICAgICAgICAgICAgIDxsZWdlbmQ+XG4gICAgICAgICAgICAgICAge3sgJ0FnZ3JlZ2F0aW9uJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICA8L2xlZ2VuZD5cbiAgICAgICAgICAgICAgPGM4eS1mb3JtLWdyb3VwIGNsYXNzPVwicC10LThcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYzh5LXNlbGVjdC13cmFwcGVyXCI+XG4gICAgICAgICAgICAgICAgICA8IS0tIFNldHRpbmcgYmVsb3cgW2F0dHIuZGlzYWJsZWRdIGVuc3VyZXMgdGhhdCB0aGUgY29udHJvbCBpcyB2aXN1YWxseSBkaXNhYmxlZCBhbmQgdXNlciBpbnRlcmFjdGlvbiBpcyBwcmV2ZW50ZWQsXG4gICAgICAgICAgICAgICB3aGlsZSBzdGlsbCBhbGxvd2luZyB0aGUgdmFsdWUgdG8gYmUgdXBkYXRlZCBhbmQgc2F2ZWQgY29ycmVjdGx5IGluIHRoZSBmb3JtLlxuICAgICAgICAgICAgICAgVGhpcyBzb2x1dGlvbiBjb3ZlcnMgdGhlIGNhc2Ugd2hlcmUgdGhlIHVzZXIgZW5hYmxlcyBhdXRvLXJlZnJlc2gsIGluIHdoaWNoIGNhc2UgYWdncmVnYXRpb24gbXVzdCBiZSBzZXQgdG8gTk9ORS4gLS0+XG4gICAgICAgICAgICAgICAgICA8c2VsZWN0XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIHRleHQtMTJcIlxuICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ0FnZ3JlZ2F0aW9uJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgIGlkPVwiYWdncmVnYXRpb25cIlxuICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJhZ2dyZWdhdGlvblwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmRpc2FibGVkXT1cImZvcm1Hcm91cC52YWx1ZS5pc0F1dG9SZWZyZXNoRW5hYmxlZCA/IHRydWUgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPG9wdGlvblxuICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBhZ2dyZWdhdGlvblZhbHVlIG9mIEFHR1JFR0FUSU9OX1ZBTFVFU19BUlJcIlxuICAgICAgICAgICAgICAgICAgICAgIFtuZ1ZhbHVlXT1cImFnZ3JlZ2F0aW9uVmFsdWVcIlxuICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZEFnZ3JlZ2F0aW9uT3B0aW9uc1thZ2dyZWdhdGlvblZhbHVlXVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7eyBBR0dSRUdBVElPTl9MQUJFTFNbYWdncmVnYXRpb25WYWx1ZV0gfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9jOHktZm9ybS1ncm91cD5cbiAgICAgICAgICAgIDwvZmllbGRzZXQ+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8IS0tIHRpbWUgaW50ZXJ2YWwgc2VsZWN0b3IgLS0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxuICAgICAgICAgIDxmaWVsZHNldCBjbGFzcz1cImM4eS1maWVsZHNldFwiPlxuICAgICAgICAgICAgPGxlZ2VuZD5cbiAgICAgICAgICAgICAge3sgJ1RpbWUgaW50ZXJ2YWwnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICA8L2xlZ2VuZD5cbiAgICAgICAgICAgIDxjOHktZm9ybS1ncm91cCBjbGFzcz1cInAtdC04XCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjOHktc2VsZWN0LXdyYXBwZXJcIj5cbiAgICAgICAgICAgICAgICA8c2VsZWN0XG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCB0ZXh0LTEyXCJcbiAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCInSW50ZXJ2YWwnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgIGlkPVwiaW50ZXJ2YWxcIlxuICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiaW50ZXJ2YWxcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxvcHRpb25cbiAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGludGVydmFsVmFsdWUgb2YgSU5URVJWQUxfVkFMVUVTX0FSUlwiXG4gICAgICAgICAgICAgICAgICAgIFtuZ1ZhbHVlXT1cImludGVydmFsVmFsdWVcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7eyBUSU1FX1JBTkdFX0lOVEVSVkFMX0xBQkVMU1tpbnRlcnZhbFZhbHVlXSB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9jOHktZm9ybS1ncm91cD5cbiAgICAgICAgICA8L2ZpZWxkc2V0PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPCEtLSBkYXRlIHBpY2tlcnMgLS0+XG4gICAgICA8ZmllbGRzZXQgY2xhc3M9XCJjOHktZmllbGRzZXRcIj5cbiAgICAgICAgPGxlZ2VuZD5cbiAgICAgICAgICB7eyAnRGF0ZSByYW5nZScgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9sZWdlbmQ+XG4gICAgICAgIDxjOHktZGF0ZS1yYW5nZS1waWNrZXI+PC9jOHktZGF0ZS1yYW5nZS1waWNrZXI+XG4gICAgICA8L2ZpZWxkc2V0PlxuICAgIDwvZGl2PlxuICA8L2Zvcm0+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ChangeDetectorRef, Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';
|
|
2
|
-
import { CommonModule, CountdownIntervalComponent, CountdownIntervalModule, IntervalBasedReload, ListGroupModule, WidgetGlobalAutoRefreshService, gettext } from '@c8y/ngx-components';
|
|
2
|
+
import { CommonModule, CountdownIntervalComponent, CountdownIntervalModule, GainsightService, IntervalBasedReload, ListGroupModule, WIDGET_TYPE_VALUES, WidgetGlobalAutoRefreshService, gettext } from '@c8y/ngx-components';
|
|
3
3
|
import { TranslateService } from '@ngx-translate/core';
|
|
4
4
|
import { TooltipModule } from 'ngx-bootstrap/tooltip';
|
|
5
5
|
import { BehaviorSubject, Subject, takeUntil, tap } from 'rxjs';
|
|
@@ -9,11 +9,13 @@ import * as i2 from "@c8y/ngx-components";
|
|
|
9
9
|
import * as i3 from "@angular/common";
|
|
10
10
|
import * as i4 from "ngx-bootstrap/tooltip";
|
|
11
11
|
export class DatapointsReloadComponent extends IntervalBasedReload {
|
|
12
|
-
constructor(cdRef, translateService, widgetGlobalAutoRefreshService) {
|
|
12
|
+
constructor(cdRef, translateService, widgetGlobalAutoRefreshService, gainsightService) {
|
|
13
13
|
super();
|
|
14
14
|
this.cdRef = cdRef;
|
|
15
15
|
this.translateService = translateService;
|
|
16
16
|
this.widgetGlobalAutoRefreshService = widgetGlobalAutoRefreshService;
|
|
17
|
+
this.gainsightService = gainsightService;
|
|
18
|
+
this.WIDGET_TYPE_VALUES = WIDGET_TYPE_VALUES;
|
|
17
19
|
/**
|
|
18
20
|
* @inheritdoc
|
|
19
21
|
*/
|
|
@@ -109,13 +111,13 @@ export class DatapointsReloadComponent extends IntervalBasedReload {
|
|
|
109
111
|
!this.isScrolling &&
|
|
110
112
|
!this.hideCountdown);
|
|
111
113
|
}
|
|
112
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: DatapointsReloadComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.TranslateService }, { token: i2.WidgetGlobalAutoRefreshService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
113
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: DatapointsReloadComponent, isStandalone: true, selector: "c8y-datapoints-reload", inputs: { isAutoRefreshEnabled: "isAutoRefreshEnabled", isRefreshDisabled: "isRefreshDisabled", isLoading: "isLoading", isScrolling: "isScrolling", isExportModalOpen: "isExportModalOpen", refreshInterval: "refreshInterval", widgetInstanceGlobalAutoRefreshContext: "widgetInstanceGlobalAutoRefreshContext" }, outputs: { onCountdownEnded: "onCountdownEnded" }, viewQueries: [{ propertyName: "countdownIntervalComponent", first: true, predicate: CountdownIntervalComponent, descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"!widgetInstanceGlobalAutoRefreshContext\">\n <div class=\"a-i-center input-group p-t-4 p-b-4 max-width-fit m-l-auto\">\n <label\n class=\"m-b-0 m-r-8 text-label-small text-truncate flex-no-shrink\"\n title=\" {{ 'Auto refresh' | translate }}\"\n *ngIf=\"refreshInterval && isAutoRefreshEnabled\"\n >\n {{ 'Auto refresh' | translate }}\n </label>\n <div class=\"input-group\">\n <label\n class=\"toggle-countdown\"\n [class.toggle-countdown-disabled]=\"isRefreshDisabled\"\n [attr.aria-label]=\"toggleCountdownButtonTooltipText\"\n [tooltip]=\"toggleCountdownButtonTooltipText\"\n placement=\"bottom\"\n *ngIf=\"refreshInterval && isAutoRefreshEnabled\"\n [adaptivePosition]=\"false\"\n [container]=\"'body'\"\n [delay]=\"500\"\n >\n <input\n type=\"checkbox\"\n [checked]=\"isIntervalRefreshToggleOn\"\n [disabled]=\"isRefreshDisabled\"\n data-cy=\"c8y-data-points-table-widget--interval-toggle-button\"\n (click)=\"onToggleCountdownButtonState($event)\"\n />\n\n <c8y-countdown-interval\n *ngIf=\"isIntervalRefreshToggleOn\"\n [countdownInterval]=\"refreshInterval\"\n (countdownEnded)=\"countdownEnded()\"\n ></c8y-countdown-interval>\n <i\n c8yIcon=\"pause\"\n *ngIf=\"!isIntervalRefreshToggleOn\"\n ></i>\n </label>\n\n <div class=\"input-group-btn\">\n <button\n class=\"btn btn-default\"\n [attr.aria-label]=\"'Refresh' | translate\"\n [tooltip]=\"'Refresh' | translate\"\n placement=\"bottom\"\n type=\"button\"\n [adaptivePosition]=\"false\"\n [container]=\"'body'\"\n [delay]=\"500\"\n [disabled]=\"isRefreshDisabled || (isLoading | async)\"\n (click)=\"reload()\"\n data-cy=\"c8y-data-points-table-widget--reload-button\"\n >\n <i\n c8yIcon=\"refresh\"\n [ngClass]=\"{ 'icon-spin': isLoading | async }\"\n ></i>\n </button>\n </div>\n </div>\n </div>\n</ng-container>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "pipe", type: i2.C8yTranslatePipe, name: "translate" }, { kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "ngmodule", type: CountdownIntervalModule }, { kind: "component", type: i2.CountdownIntervalComponent, selector: "c8y-countdown-interval", inputs: ["countdownInterval"], outputs: ["countdownEnded"] }, { kind: "ngmodule", type: ListGroupModule }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i4.TooltipDirective, selector: "[tooltip], [tooltipHtml]", inputs: ["adaptivePosition", "tooltip", "placement", "triggers", "container", "containerClass", "boundariesElement", "isOpen", "isDisabled", "delay", "tooltipHtml", "tooltipPlacement", "tooltipIsOpen", "tooltipEnable", "tooltipAppendToBody", "tooltipAnimation", "tooltipClass", "tooltipContext", "tooltipPopupDelay", "tooltipFadeDuration", "tooltipTrigger"], outputs: ["tooltipChange", "onShown", "onHidden", "tooltipStateChanged"], exportAs: ["bs-tooltip"] }] }); }
|
|
114
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: DatapointsReloadComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.TranslateService }, { token: i2.WidgetGlobalAutoRefreshService }, { token: i2.GainsightService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
115
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: DatapointsReloadComponent, isStandalone: true, selector: "c8y-datapoints-reload", inputs: { isAutoRefreshEnabled: "isAutoRefreshEnabled", isRefreshDisabled: "isRefreshDisabled", isLoading: "isLoading", isScrolling: "isScrolling", isExportModalOpen: "isExportModalOpen", refreshInterval: "refreshInterval", widgetInstanceGlobalAutoRefreshContext: "widgetInstanceGlobalAutoRefreshContext" }, outputs: { onCountdownEnded: "onCountdownEnded" }, viewQueries: [{ propertyName: "countdownIntervalComponent", first: true, predicate: CountdownIntervalComponent, descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"!widgetInstanceGlobalAutoRefreshContext\">\n <div class=\"a-i-center input-group p-t-4 p-b-4 max-width-fit m-l-auto\">\n <label\n class=\"m-b-0 m-r-8 text-label-small text-truncate flex-no-shrink\"\n title=\" {{ 'Auto refresh' | translate }}\"\n *ngIf=\"refreshInterval && isAutoRefreshEnabled\"\n >\n {{ 'Auto refresh' | translate }}\n </label>\n <div class=\"input-group\">\n <label\n class=\"toggle-countdown\"\n [class.toggle-countdown-disabled]=\"isRefreshDisabled\"\n [attr.aria-label]=\"toggleCountdownButtonTooltipText\"\n [tooltip]=\"toggleCountdownButtonTooltipText\"\n placement=\"bottom\"\n *ngIf=\"refreshInterval && isAutoRefreshEnabled\"\n [adaptivePosition]=\"false\"\n [container]=\"'body'\"\n [delay]=\"500\"\n >\n <input\n type=\"checkbox\"\n [checked]=\"isIntervalRefreshToggleOn\"\n [disabled]=\"isRefreshDisabled\"\n data-cy=\"c8y-data-points-table-widget--interval-toggle-button\"\n (click)=\"onToggleCountdownButtonState($event, WIDGET_TYPE_VALUES.DATA_POINTS_TABLE)\"\n />\n\n <c8y-countdown-interval\n *ngIf=\"isIntervalRefreshToggleOn\"\n [countdownInterval]=\"refreshInterval\"\n (countdownEnded)=\"countdownEnded()\"\n ></c8y-countdown-interval>\n <i\n c8yIcon=\"pause\"\n *ngIf=\"!isIntervalRefreshToggleOn\"\n ></i>\n </label>\n\n <div class=\"input-group-btn\">\n <button\n class=\"btn btn-default\"\n [attr.aria-label]=\"'Refresh' | translate\"\n [tooltip]=\"'Refresh' | translate\"\n placement=\"bottom\"\n type=\"button\"\n [adaptivePosition]=\"false\"\n [container]=\"'body'\"\n [delay]=\"500\"\n [disabled]=\"isRefreshDisabled || (isLoading | async)\"\n (click)=\"reload()\"\n data-cy=\"c8y-data-points-table-widget--reload-button\"\n >\n <i\n c8yIcon=\"refresh\"\n [ngClass]=\"{ 'icon-spin': isLoading | async }\"\n ></i>\n </button>\n </div>\n </div>\n </div>\n</ng-container>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "pipe", type: i2.C8yTranslatePipe, name: "translate" }, { kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "ngmodule", type: CountdownIntervalModule }, { kind: "component", type: i2.CountdownIntervalComponent, selector: "c8y-countdown-interval", inputs: ["countdownInterval"], outputs: ["countdownEnded"] }, { kind: "ngmodule", type: ListGroupModule }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i4.TooltipDirective, selector: "[tooltip], [tooltipHtml]", inputs: ["adaptivePosition", "tooltip", "placement", "triggers", "container", "containerClass", "boundariesElement", "isOpen", "isDisabled", "delay", "tooltipHtml", "tooltipPlacement", "tooltipIsOpen", "tooltipEnable", "tooltipAppendToBody", "tooltipAnimation", "tooltipClass", "tooltipContext", "tooltipPopupDelay", "tooltipFadeDuration", "tooltipTrigger"], outputs: ["tooltipChange", "onShown", "onHidden", "tooltipStateChanged"], exportAs: ["bs-tooltip"] }] }); }
|
|
114
116
|
}
|
|
115
117
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: DatapointsReloadComponent, decorators: [{
|
|
116
118
|
type: Component,
|
|
117
|
-
args: [{ selector: 'c8y-datapoints-reload', standalone: true, imports: [CommonModule, CountdownIntervalModule, ListGroupModule, TooltipModule], template: "<ng-container *ngIf=\"!widgetInstanceGlobalAutoRefreshContext\">\n <div class=\"a-i-center input-group p-t-4 p-b-4 max-width-fit m-l-auto\">\n <label\n class=\"m-b-0 m-r-8 text-label-small text-truncate flex-no-shrink\"\n title=\" {{ 'Auto refresh' | translate }}\"\n *ngIf=\"refreshInterval && isAutoRefreshEnabled\"\n >\n {{ 'Auto refresh' | translate }}\n </label>\n <div class=\"input-group\">\n <label\n class=\"toggle-countdown\"\n [class.toggle-countdown-disabled]=\"isRefreshDisabled\"\n [attr.aria-label]=\"toggleCountdownButtonTooltipText\"\n [tooltip]=\"toggleCountdownButtonTooltipText\"\n placement=\"bottom\"\n *ngIf=\"refreshInterval && isAutoRefreshEnabled\"\n [adaptivePosition]=\"false\"\n [container]=\"'body'\"\n [delay]=\"500\"\n >\n <input\n type=\"checkbox\"\n [checked]=\"isIntervalRefreshToggleOn\"\n [disabled]=\"isRefreshDisabled\"\n data-cy=\"c8y-data-points-table-widget--interval-toggle-button\"\n (click)=\"onToggleCountdownButtonState($event)\"\n />\n\n <c8y-countdown-interval\n *ngIf=\"isIntervalRefreshToggleOn\"\n [countdownInterval]=\"refreshInterval\"\n (countdownEnded)=\"countdownEnded()\"\n ></c8y-countdown-interval>\n <i\n c8yIcon=\"pause\"\n *ngIf=\"!isIntervalRefreshToggleOn\"\n ></i>\n </label>\n\n <div class=\"input-group-btn\">\n <button\n class=\"btn btn-default\"\n [attr.aria-label]=\"'Refresh' | translate\"\n [tooltip]=\"'Refresh' | translate\"\n placement=\"bottom\"\n type=\"button\"\n [adaptivePosition]=\"false\"\n [container]=\"'body'\"\n [delay]=\"500\"\n [disabled]=\"isRefreshDisabled || (isLoading | async)\"\n (click)=\"reload()\"\n data-cy=\"c8y-data-points-table-widget--reload-button\"\n >\n <i\n c8yIcon=\"refresh\"\n [ngClass]=\"{ 'icon-spin': isLoading | async }\"\n ></i>\n </button>\n </div>\n </div>\n </div>\n</ng-container>\n" }]
|
|
118
|
-
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1.TranslateService }, { type: i2.WidgetGlobalAutoRefreshService }], propDecorators: { countdownIntervalComponent: [{
|
|
119
|
+
args: [{ selector: 'c8y-datapoints-reload', standalone: true, imports: [CommonModule, CountdownIntervalModule, ListGroupModule, TooltipModule], template: "<ng-container *ngIf=\"!widgetInstanceGlobalAutoRefreshContext\">\n <div class=\"a-i-center input-group p-t-4 p-b-4 max-width-fit m-l-auto\">\n <label\n class=\"m-b-0 m-r-8 text-label-small text-truncate flex-no-shrink\"\n title=\" {{ 'Auto refresh' | translate }}\"\n *ngIf=\"refreshInterval && isAutoRefreshEnabled\"\n >\n {{ 'Auto refresh' | translate }}\n </label>\n <div class=\"input-group\">\n <label\n class=\"toggle-countdown\"\n [class.toggle-countdown-disabled]=\"isRefreshDisabled\"\n [attr.aria-label]=\"toggleCountdownButtonTooltipText\"\n [tooltip]=\"toggleCountdownButtonTooltipText\"\n placement=\"bottom\"\n *ngIf=\"refreshInterval && isAutoRefreshEnabled\"\n [adaptivePosition]=\"false\"\n [container]=\"'body'\"\n [delay]=\"500\"\n >\n <input\n type=\"checkbox\"\n [checked]=\"isIntervalRefreshToggleOn\"\n [disabled]=\"isRefreshDisabled\"\n data-cy=\"c8y-data-points-table-widget--interval-toggle-button\"\n (click)=\"onToggleCountdownButtonState($event, WIDGET_TYPE_VALUES.DATA_POINTS_TABLE)\"\n />\n\n <c8y-countdown-interval\n *ngIf=\"isIntervalRefreshToggleOn\"\n [countdownInterval]=\"refreshInterval\"\n (countdownEnded)=\"countdownEnded()\"\n ></c8y-countdown-interval>\n <i\n c8yIcon=\"pause\"\n *ngIf=\"!isIntervalRefreshToggleOn\"\n ></i>\n </label>\n\n <div class=\"input-group-btn\">\n <button\n class=\"btn btn-default\"\n [attr.aria-label]=\"'Refresh' | translate\"\n [tooltip]=\"'Refresh' | translate\"\n placement=\"bottom\"\n type=\"button\"\n [adaptivePosition]=\"false\"\n [container]=\"'body'\"\n [delay]=\"500\"\n [disabled]=\"isRefreshDisabled || (isLoading | async)\"\n (click)=\"reload()\"\n data-cy=\"c8y-data-points-table-widget--reload-button\"\n >\n <i\n c8yIcon=\"refresh\"\n [ngClass]=\"{ 'icon-spin': isLoading | async }\"\n ></i>\n </button>\n </div>\n </div>\n </div>\n</ng-container>\n" }]
|
|
120
|
+
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1.TranslateService }, { type: i2.WidgetGlobalAutoRefreshService }, { type: i2.GainsightService }], propDecorators: { countdownIntervalComponent: [{
|
|
119
121
|
type: ViewChild,
|
|
120
122
|
args: [CountdownIntervalComponent, { static: false }]
|
|
121
123
|
}], isAutoRefreshEnabled: [{
|
|
@@ -135,4 +137,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
|
|
|
135
137
|
}], onCountdownEnded: [{
|
|
136
138
|
type: Output
|
|
137
139
|
}] } });
|
|
138
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXBvaW50cy1yZWxvYWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vd2lkZ2V0cy9pbXBsZW1lbnRhdGlvbnMvZGF0YXBvaW50cy10YWJsZS9kYXRhcG9pbnRzLXRhYmxlLXZpZXcvZGF0YXBvaW50cy1yZWxvYWQvZGF0YXBvaW50cy1yZWxvYWQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vd2lkZ2V0cy9pbXBsZW1lbnRhdGlvbnMvZGF0YXBvaW50cy10YWJsZS9kYXRhcG9pbnRzLXRhYmxlLXZpZXcvZGF0YXBvaW50cy1yZWxvYWQvZGF0YXBvaW50cy1yZWxvYWQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBRU4sU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTCxZQUFZLEVBQ1osMEJBQTBCLEVBQzFCLHVCQUF1QixFQUN2QixtQkFBbUIsRUFDbkIsZUFBZSxFQUNmLDhCQUE4QixFQUM5QixPQUFPLEVBQ1IsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7O0FBUWhFLE1BQU0sT0FBTyx5QkFDWCxTQUFRLG1CQUFtQjtJQWdEM0IsWUFDVSxLQUF3QixFQUN4QixnQkFBa0MsRUFDbEMsOEJBQThEO1FBRXRFLEtBQUssRUFBRSxDQUFDO1FBSkEsVUFBSyxHQUFMLEtBQUssQ0FBbUI7UUFDeEIscUJBQWdCLEdBQWhCLGdCQUFnQixD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Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQ29tbW9uTW9kdWxlLFxuICBDb3VudGRvd25JbnRlcnZhbENvbXBvbmVudCxcbiAgQ291bnRkb3duSW50ZXJ2YWxNb2R1bGUsXG4gIEludGVydmFsQmFzZWRSZWxvYWQsXG4gIExpc3RHcm91cE1vZHVsZSxcbiAgV2lkZ2V0R2xvYmFsQXV0b1JlZnJlc2hTZXJ2aWNlLFxuICBnZXR0ZXh0XG59IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgVG9vbHRpcE1vZHVsZSB9IGZyb20gJ25neC1ib290c3RyYXAvdG9vbHRpcCc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIFN1YmplY3QsIHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1kYXRhcG9pbnRzLXJlbG9hZCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRhcG9pbnRzLXJlbG9hZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIENvdW50ZG93bkludGVydmFsTW9kdWxlLCBMaXN0R3JvdXBNb2R1bGUsIFRvb2x0aXBNb2R1bGVdXG59KVxuZXhwb3J0IGNsYXNzIERhdGFwb2ludHNSZWxvYWRDb21wb25lbnRcbiAgZXh0ZW5kcyBJbnRlcnZhbEJhc2VkUmVsb2FkXG4gIGltcGxlbWVudHMgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3lcbntcbiAgQFZpZXdDaGlsZChDb3VudGRvd25JbnRlcnZhbENvbXBvbmVudCwgeyBzdGF0aWM6IGZhbHNlIH0pXG4gIGNvdW50ZG93bkludGVydmFsQ29tcG9uZW50OiBDb3VudGRvd25JbnRlcnZhbENvbXBvbmVudDtcbiAgLyoqXG4gICAqIEBpbmhlcml0ZG9jXG4gICAqL1xuICBASW5wdXQoKSBpc0F1dG9SZWZyZXNoRW5hYmxlZDogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEBpbmhlcml0ZG9jXG4gICAqL1xuICBASW5wdXQoKSBpc1JlZnJlc2hEaXNhYmxlZCA9IGZhbHNlO1xuICAvKipcbiAgICogQGluaGVyaXRkb2NcbiAgICovXG4gIEBJbnB1dCgpIGlzTG9hZGluZzogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+O1xuXG4gIEBJbnB1dCgpIGlzU2Nyb2xsaW5nOiBib29sZWFuO1xuXG4gIEBJbnB1dCgpIGlzRXhwb3J0TW9kYWxPcGVuOiBib29sZWFuO1xuICAvKipcbiAgICogQGluaGVyaXRkb2NcbiAgICovXG4gIEBJbnB1dCgpIHJlZnJlc2hJbnRlcnZhbDogbnVtYmVyO1xuXG4gIEBJbnB1dCgpIHdpZGdldEluc3RhbmNlR2xvYmFsQXV0b1JlZnJlc2hDb250ZXh0OiBib29sZWFuO1xuICAvKipcbiAgICogQGluaGVyaXRkb2NcbiAgICovXG4gIEBPdXRwdXQoKSBvbkNvdW50ZG93bkVuZGVkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICAvKipcbiAgICogQGluaGVyaXRkb2NcbiAgICovXG4gIGlzSW50ZXJ2YWxSZWZyZXNoVG9nZ2xlT246IGJvb2xlYW47XG5cbiAgdG9nZ2xlQ291bnRkb3duQnV0dG9uVG9vbHRpcFRleHQ6IHN0cmluZztcbiAgLyoqXG4gICAqIEBpbmhlcml0ZG9jXG4gICAqL1xuICBwcm90ZWN0ZWQgbWFudWFsbHlEaXNhYmxlZENvdW50ZG93biA9IGZhbHNlO1xuICAvKipcbiAgICogQGluaGVyaXRkb2NcbiAgICovXG4gIHByb3RlY3RlZCBoaWRlQ291bnRkb3duOiBib29sZWFuO1xuXG4gIHByb3RlY3RlZCBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgd2lkZ2V0R2xvYmFsQXV0b1JlZnJlc2hTZXJ2aWNlOiBXaWRnZXRHbG9iYWxBdXRvUmVmcmVzaFNlcnZpY2VcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBpZiAodGhpcy53aWRnZXRJbnN0YW5jZUdsb2JhbEF1dG9SZWZyZXNoQ29udGV4dCkge1xuICAgICAgdGhpcy53aWRnZXRHbG9iYWxBdXRvUmVmcmVzaFNlcnZpY2UuY291bnRkb3duQWN0aW9ucy5jb3VudGRvd25FbmRlZCRcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLFxuICAgICAgICAgIHRhcCgoKSA9PiB0aGlzLm9uQ291bnRkb3duRW5kZWQuZW1pdCgpKVxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaXNSZWZyZXNoRGlzYWJsZWQgJiYgdGhpcy5pc0F1dG9SZWZyZXNoRW5hYmxlZCkge1xuICAgICAgdGhpcy5pc0ludGVydmFsUmVmcmVzaFRvZ2dsZU9uID0gZmFsc2U7XG4gICAgICB0aGlzLmRpc2FibGVDb3VudGRvd24oKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5pc0V4cG9ydE1vZGFsT3BlbiAmJiB0aGlzLmNhbkRpc2FibGVDb3VudGRvd25XaGVuTW9kYWxJc09wZW4oKSkge1xuICAgICAgdGhpcy5pc0ludGVydmFsUmVmcmVzaFRvZ2dsZU9uID0gIXRoaXMuaXNJbnRlcnZhbFJlZnJlc2hUb2dnbGVPbjtcbiAgICAgIHRoaXMuZGlzYWJsZUNvdW50ZG93bigpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5jYW5TdGFydENvdW50ZG93bihjaGFuZ2VzKSkge1xuICAgICAgICB0aGlzLmlzSW50ZXJ2YWxSZWZyZXNoVG9nZ2xlT24gPSB0cnVlO1xuICAgICAgICB0aGlzLnN0YXJ0Q291bnRkb3duKCk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLmNhbkhhbmRsZVNjcm9sbGluZygpKSB7XG4gICAgICAgIHRoaXMuaGFuZGxlU2Nyb2xsaW5nKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY291bnRkb3duU3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLmNvdW50ZG93blN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cblxuICAvKipcbiAgICogQGluaGVyaXRkb2NcbiAgICovXG4gIGNvdW50ZG93bkVuZGVkKCk6IHZvaWQge1xuICAgIC8qKlxuICAgICAqIEBpbmhlcml0ZG9jXG4gICAgICovXG4gICAgdGhpcy5hdXRvUmVmcmVzaExpc3QoKTtcbiAgfVxuXG4gIHJlbG9hZCgpOiB2b2lkIHtcbiAgICAvKipcbiAgICAgKiBAaW5oZXJpdGRvY1xuICAgICAqL1xuICAgIHRoaXMuYXV0b1JlZnJlc2hMaXN0KCk7XG4gIH1cblxuICAvKipcbiAgICogQGluaGVyaXRkb2NcbiAgICovXG4gIGVuYWJsZUNvdW50ZG93bigpOiB2b2lkIHtcbiAgICB0aGlzLmhpZGVDb3VudGRvd24gPSBmYWxzZTtcbiAgICAvLyBQcmV2ZW50cyB0aGUgY291bnRkb3duIGZyb20gZ2V0dGluZyBzdHVjayBvbiBhbiBpbml0aWFsIHZhbHVlLlxuICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIHRoaXMuc3RhcnRDb3VudGRvd24oKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaW5oZXJpdGRvY1xuICAgKi9cbiAgcHJvdGVjdGVkIHVwZGF0ZUNvdW50ZG93bkJ1dHRvblRvb2x0aXBUZXh0KCk6IHZvaWQge1xuICAgIHRoaXMudG9nZ2xlQ291bnRkb3duQnV0dG9uVG9vbHRpcFRleHQgPSB0aGlzLmlzSW50ZXJ2YWxSZWZyZXNoVG9nZ2xlT25cbiAgICAgID8gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoZ2V0dGV4dCgnRGlzYWJsZSBhdXRvIHJlZnJlc2gnKSlcbiAgICAgIDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoZ2V0dGV4dCgnRW5hYmxlIGF1dG8gcmVmcmVzaCcpKTtcbiAgfVxuXG4gIHByaXZhdGUgY2FuU3RhcnRDb3VudGRvd24oY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHsgaXNBdXRvUmVmcmVzaEVuYWJsZWQsIHJlZnJlc2hJbnRlcnZhbCB9ID0gY2hhbmdlcztcbiAgICByZXR1cm4gKFxuICAgICAgKGlzQXV0b1JlZnJlc2hFbmFibGVkIHx8IHJlZnJlc2hJbnRlcnZhbCkgJiZcbiAgICAgICh0aGlzLmlzQXV0b1JlZnJlc2hFbmFibGVkIHx8ICEhdGhpcy5yZWZyZXNoSW50ZXJ2YWwpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgY2FuSGFuZGxlU2Nyb2xsaW5nKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5tYW51YWxseURpc2FibGVkQ291bnRkb3duICYmIHRoaXMuaXNBdXRvUmVmcmVzaEVuYWJsZWQ7XG4gIH1cblxuICBwcml2YXRlIGNhbkRpc2FibGVDb3VudGRvd25XaGVuTW9kYWxJc09wZW4oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuaXNBdXRvUmVmcmVzaEVuYWJsZWQgJiZcbiAgICAgICEhdGhpcy5yZWZyZXNoSW50ZXJ2YWwgJiZcbiAgICAgICF0aGlzLm1hbnVhbGx5RGlzYWJsZWRDb3VudGRvd24gJiZcbiAgICAgICF0aGlzLmlzU2Nyb2xsaW5nICYmXG4gICAgICAhdGhpcy5oaWRlQ291bnRkb3duXG4gICAgKTtcbiAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cIiF3aWRnZXRJbnN0YW5jZUdsb2JhbEF1dG9SZWZyZXNoQ29udGV4dFwiPlxuICA8ZGl2IGNsYXNzPVwiYS1pLWNlbnRlciBpbnB1dC1ncm91cCBwLXQtNCBwLWItNCBtYXgtd2lkdGgtZml0IG0tbC1hdXRvXCI+XG4gICAgPGxhYmVsXG4gICAgICBjbGFzcz1cIm0tYi0wIG0tci04IHRleHQtbGFiZWwtc21hbGwgdGV4dC10cnVuY2F0ZSBmbGV4LW5vLXNocmlua1wiXG4gICAgICB0aXRsZT1cIiB7eyAnQXV0byByZWZyZXNoJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAqbmdJZj1cInJlZnJlc2hJbnRlcnZhbCAmJiBpc0F1dG9SZWZyZXNoRW5hYmxlZFwiXG4gICAgPlxuICAgICAge3sgJ0F1dG8gcmVmcmVzaCcgfCB0cmFuc2xhdGUgfX1cbiAgICA8L2xhYmVsPlxuICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cFwiPlxuICAgICAgPGxhYmVsXG4gICAgICAgIGNsYXNzPVwidG9nZ2xlLWNvdW50ZG93blwiXG4gICAgICAgIFtjbGFzcy50b2dnbGUtY291bnRkb3duLWRpc2FibGVkXT1cImlzUmVmcmVzaERpc2FibGVkXCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJ0b2dnbGVDb3VudGRvd25CdXR0b25Ub29sdGlwVGV4dFwiXG4gICAgICAgIFt0b29sdGlwXT1cInRvZ2dsZUNvdW50ZG93bkJ1dHRvblRvb2x0aXBUZXh0XCJcbiAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcbiAgICAgICAgKm5nSWY9XCJyZWZyZXNoSW50ZXJ2YWwgJiYgaXNBdXRvUmVmcmVzaEVuYWJsZWRcIlxuICAgICAgICBbYWRhcHRpdmVQb3NpdGlvbl09XCJmYWxzZVwiXG4gICAgICAgIFtjb250YWluZXJdPVwiJ2JvZHknXCJcbiAgICAgICAgW2RlbGF5XT1cIjUwMFwiXG4gICAgICA+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgW2NoZWNrZWRdPVwiaXNJbnRlcnZhbFJlZnJlc2hUb2dnbGVPblwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImlzUmVmcmVzaERpc2FibGVkXCJcbiAgICAgICAgICBkYXRhLWN5PVwiYzh5LWRhdGEtcG9pbnRzLXRhYmxlLXdpZGdldC0taW50ZXJ2YWwtdG9nZ2xlLWJ1dHRvblwiXG4gICAgICAgICAgKGNsaWNrKT1cIm9uVG9nZ2xlQ291bnRkb3duQnV0dG9uU3RhdGUoJGV2ZW50KVwiXG4gICAgICAgIC8+XG5cbiAgICAgICAgPGM4eS1jb3VudGRvd24taW50ZXJ2YWxcbiAgICAgICAgICAqbmdJZj1cImlzSW50ZXJ2YWxSZWZyZXNoVG9nZ2xlT25cIlxuICAgICAgICAgIFtjb3VudGRvd25JbnRlcnZhbF09XCJyZWZyZXNoSW50ZXJ2YWxcIlxuICAgICAgICAgIChjb3VudGRvd25FbmRlZCk9XCJjb3VudGRvd25FbmRlZCgpXCJcbiAgICAgICAgPjwvYzh5LWNvdW50ZG93bi1pbnRlcnZhbD5cbiAgICAgICAgPGlcbiAgICAgICAgICBjOHlJY29uPVwicGF1c2VcIlxuICAgICAgICAgICpuZ0lmPVwiIWlzSW50ZXJ2YWxSZWZyZXNoVG9nZ2xlT25cIlxuICAgICAgICA+PC9pPlxuICAgICAgPC9sYWJlbD5cblxuICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwLWJ0blwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHRcIlxuICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ1JlZnJlc2gnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICBbdG9vbHRpcF09XCInUmVmcmVzaCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgW2FkYXB0aXZlUG9zaXRpb25dPVwiZmFsc2VcIlxuICAgICAgICAgIFtjb250YWluZXJdPVwiJ2JvZHknXCJcbiAgICAgICAgICBbZGVsYXldPVwiNTAwXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNSZWZyZXNoRGlzYWJsZWQgfHwgKGlzTG9hZGluZyB8IGFzeW5jKVwiXG4gICAgICAgICAgKGNsaWNrKT1cInJlbG9hZCgpXCJcbiAgICAgICAgICBkYXRhLWN5PVwiYzh5LWRhdGEtcG9pbnRzLXRhYmxlLXdpZGdldC0tcmVsb2FkLWJ1dHRvblwiXG4gICAgICAgID5cbiAgICAgICAgICA8aVxuICAgICAgICAgICAgYzh5SWNvbj1cInJlZnJlc2hcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnaWNvbi1zcGluJzogaXNMb2FkaW5nIHwgYXN5bmMgfVwiXG4gICAgICAgICAgPjwvaT5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==
|
|
140
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXBvaW50cy1yZWxvYWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vd2lkZ2V0cy9pbXBsZW1lbnRhdGlvbnMvZGF0YXBvaW50cy10YWJsZS9kYXRhcG9pbnRzLXRhYmxlLXZpZXcvZGF0YXBvaW50cy1yZWxvYWQvZGF0YXBvaW50cy1yZWxvYWQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vd2lkZ2V0cy9pbXBsZW1lbnRhdGlvbnMvZGF0YXBvaW50cy10YWJsZS9kYXRhcG9pbnRzLXRhYmxlLXZpZXcvZGF0YXBvaW50cy1yZWxvYWQvZGF0YXBvaW50cy1yZWxvYWQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBRU4sU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTCxZQUFZLEVBQ1osMEJBQTBCLEVBQzFCLHVCQUF1QixFQUN2QixnQkFBZ0IsRUFDaEIsbUJBQW1CLEVBQ25CLGVBQWUsRUFDZixrQkFBa0IsRUFDbEIsOEJBQThCLEVBQzlCLE9BQU8sRUFDUixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7Ozs7QUFRaEUsTUFBTSxPQUFPLHlCQUNYLFNBQVEsbUJBQW1CO0lBa0QzQixZQUNVLEtBQXdCLEVBQ3hCLGdCQUFrQyxFQUNsQyw4QkFBOEQsRUFDNUQsZ0JBQWtDO1FBRTVDLEtBQUssRUFBRSxDQUFDO1FBTEEsVUFBSyxHQUFM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QUFLO2dCQUVHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFJRyxlQUFlO3NCQUF2QixLQUFLO2dCQUVHLHNDQUFzQztzQkFBOUMsS0FBSztnQkFJSSxnQkFBZ0I7c0JBQXpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBDb21tb25Nb2R1bGUsXG4gIENvdW50ZG93bkludGVydmFsQ29tcG9uZW50LFxuICBDb3VudGRvd25JbnRlcnZhbE1vZHVsZSxcbiAgR2FpbnNpZ2h0U2VydmljZSxcbiAgSW50ZXJ2YWxCYXNlZFJlbG9hZCxcbiAgTGlzdEdyb3VwTW9kdWxlLFxuICBXSURHRVRfVFlQRV9WQUxVRVMsXG4gIFdpZGdldEdsb2JhbEF1dG9SZWZyZXNoU2VydmljZSxcbiAgZ2V0dGV4dFxufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IFRvb2x0aXBNb2R1bGUgfSBmcm9tICduZ3gtYm9vdHN0cmFwL3Rvb2x0aXAnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBTdWJqZWN0LCB0YWtlVW50aWwsIHRhcCB9IGZyb20gJ3J4anMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktZGF0YXBvaW50cy1yZWxvYWQnLFxuICB0ZW1wbGF0ZVVybDogJy4vZGF0YXBvaW50cy1yZWxvYWQuY29tcG9uZW50Lmh0bWwnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBDb3VudGRvd25JbnRlcnZhbE1vZHVsZSwgTGlzdEdyb3VwTW9kdWxlLCBUb29sdGlwTW9kdWxlXVxufSlcbmV4cG9ydCBjbGFzcyBEYXRhcG9pbnRzUmVsb2FkQ29tcG9uZW50XG4gIGV4dGVuZHMgSW50ZXJ2YWxCYXNlZFJlbG9hZFxuICBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95XG57XG4gIHJlYWRvbmx5IFdJREdFVF9UWVBFX1ZBTFVFUyA9IFdJREdFVF9UWVBFX1ZBTFVFUztcblxuICBAVmlld0NoaWxkKENvdW50ZG93bkludGVydmFsQ29tcG9uZW50LCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgY291bnRkb3duSW50ZXJ2YWxDb21wb25lbnQ6IENvdW50ZG93bkludGVydmFsQ29tcG9uZW50O1xuICAvKipcbiAgICogQGluaGVyaXRkb2NcbiAgICovXG4gIEBJbnB1dCgpIGlzQXV0b1JlZnJlc2hFbmFibGVkOiBib29sZWFuO1xuICAvKipcbiAgICogQGluaGVyaXRkb2NcbiAgICovXG4gIEBJbnB1dCgpIGlzUmVmcmVzaERpc2FibGVkID0gZmFsc2U7XG4gIC8qKlxuICAgKiBAaW5oZXJpdGRvY1xuICAgKi9cbiAgQElucHV0KCkgaXNMb2FkaW5nOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj47XG5cbiAgQElucHV0KCkgaXNTY3JvbGxpbmc6IGJvb2xlYW47XG5cbiAgQElucHV0KCkgaXNFeHBvcnRNb2RhbE9wZW46IGJvb2xlYW47XG4gIC8qKlxuICAgKiBAaW5oZXJpdGRvY1xuICAgKi9cbiAgQElucHV0KCkgcmVmcmVzaEludGVydmFsOiBudW1iZXI7XG5cbiAgQElucHV0KCkgd2lkZ2V0SW5zdGFuY2VHbG9iYWxBdXRvUmVmcmVzaENvbnRleHQ6IGJvb2xlYW47XG4gIC8qKlxuICAgKiBAaW5oZXJpdGRvY1xuICAgKi9cbiAgQE91dHB1dCgpIG9uQ291bnRkb3duRW5kZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIC8qKlxuICAgKiBAaW5oZXJpdGRvY1xuICAgKi9cbiAgaXNJbnRlcnZhbFJlZnJlc2hUb2dnbGVPbjogYm9vbGVhbjtcblxuICB0b2dnbGVDb3VudGRvd25CdXR0b25Ub29sdGlwVGV4dDogc3RyaW5nO1xuICAvKipcbiAgICogQGluaGVyaXRkb2NcbiAgICovXG4gIHByb3RlY3RlZCBtYW51YWxseURpc2FibGVkQ291bnRkb3duID0gZmFsc2U7XG4gIC8qKlxuICAgKiBAaW5oZXJpdGRvY1xuICAgKi9cbiAgcHJvdGVjdGVkIGhpZGVDb3VudGRvd246IGJvb2xlYW47XG5cbiAgcHJvdGVjdGVkIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSB3aWRnZXRHbG9iYWxBdXRvUmVmcmVzaFNlcnZpY2U6IFdpZGdldEdsb2JhbEF1dG9SZWZyZXNoU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgZ2FpbnNpZ2h0U2VydmljZTogR2FpbnNpZ2h0U2VydmljZVxuICApIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIGlmICh0aGlzLndpZGdldEluc3RhbmNlR2xvYmFsQXV0b1JlZnJlc2hDb250ZXh0KSB7XG4gICAgICB0aGlzLndpZGdldEdsb2JhbEF1dG9SZWZyZXNoU2VydmljZS5jb3VudGRvd25BY3Rpb25zLmNvdW50ZG93bkVuZGVkJFxuICAgICAgICAucGlwZShcbiAgICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JCksXG4gICAgICAgICAgdGFwKCgpID0+IHRoaXMub25Db3VudGRvd25FbmRlZC5lbWl0KCkpXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc1JlZnJlc2hEaXNhYmxlZCAmJiB0aGlzLmlzQXV0b1JlZnJlc2hFbmFibGVkKSB7XG4gICAgICB0aGlzLmlzSW50ZXJ2YWxSZWZyZXNoVG9nZ2xlT24gPSBmYWxzZTtcbiAgICAgIHRoaXMuZGlzYWJsZUNvdW50ZG93bigpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmlzRXhwb3J0TW9kYWxPcGVuICYmIHRoaXMuY2FuRGlzYWJsZUNvdW50ZG93bldoZW5Nb2RhbElzT3BlbigpKSB7XG4gICAgICB0aGlzLmlzSW50ZXJ2YWxSZWZyZXNoVG9nZ2xlT24gPSAhdGhpcy5pc0ludGVydmFsUmVmcmVzaFRvZ2dsZU9uO1xuICAgICAgdGhpcy5kaXNhYmxlQ291bnRkb3duKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0aGlzLmNhblN0YXJ0Q291bnRkb3duKGNoYW5nZXMpKSB7XG4gICAgICAgIHRoaXMuaXNJbnRlcnZhbFJlZnJlc2hUb2dnbGVPbiA9IHRydWU7XG4gICAgICAgIHRoaXMuc3RhcnRDb3VudGRvd24oKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuY2FuSGFuZGxlU2Nyb2xsaW5nKCkpIHtcbiAgICAgICAgdGhpcy5oYW5kbGVTY3JvbGxpbmcoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jb3VudGRvd25TdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMuY291bnRkb3duU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaW5oZXJpdGRvY1xuICAgKi9cbiAgY291bnRkb3duRW5kZWQoKTogdm9pZCB7XG4gICAgLyoqXG4gICAgICogQGluaGVyaXRkb2NcbiAgICAgKi9cbiAgICB0aGlzLmF1dG9SZWZyZXNoTGlzdCgpO1xuICB9XG5cbiAgcmVsb2FkKCk6IHZvaWQge1xuICAgIC8qKlxuICAgICAqIEBpbmhlcml0ZG9jXG4gICAgICovXG4gICAgdGhpcy5hdXRvUmVmcmVzaExpc3QoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaW5oZXJpdGRvY1xuICAgKi9cbiAgZW5hYmxlQ291bnRkb3duKCk6IHZvaWQge1xuICAgIHRoaXMuaGlkZUNvdW50ZG93biA9IGZhbHNlO1xuICAgIC8vIFByZXZlbnRzIHRoZSBjb3VudGRvd24gZnJvbSBnZXR0aW5nIHN0dWNrIG9uIGFuIGluaXRpYWwgdmFsdWUuXG4gICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgdGhpcy5zdGFydENvdW50ZG93bigpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpbmhlcml0ZG9jXG4gICAqL1xuICBwcm90ZWN0ZWQgdXBkYXRlQ291bnRkb3duQnV0dG9uVG9vbHRpcFRleHQoKTogdm9pZCB7XG4gICAgdGhpcy50b2dnbGVDb3VudGRvd25CdXR0b25Ub29sdGlwVGV4dCA9IHRoaXMuaXNJbnRlcnZhbFJlZnJlc2hUb2dnbGVPblxuICAgICAgPyB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChnZXR0ZXh0KCdEaXNhYmxlIGF1dG8gcmVmcmVzaCcpKVxuICAgICAgOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChnZXR0ZXh0KCdFbmFibGUgYXV0byByZWZyZXNoJykpO1xuICB9XG5cbiAgcHJpdmF0ZSBjYW5TdGFydENvdW50ZG93bihjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogYm9vbGVhbiB7XG4gICAgY29uc3QgeyBpc0F1dG9SZWZyZXNoRW5hYmxlZCwgcmVmcmVzaEludGVydmFsIH0gPSBjaGFuZ2VzO1xuICAgIHJldHVybiAoXG4gICAgICAoaXNBdXRvUmVmcmVzaEVuYWJsZWQgfHwgcmVmcmVzaEludGVydmFsKSAmJlxuICAgICAgKHRoaXMuaXNBdXRvUmVmcmVzaEVuYWJsZWQgfHwgISF0aGlzLnJlZnJlc2hJbnRlcnZhbClcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBjYW5IYW5kbGVTY3JvbGxpbmcoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICF0aGlzLm1hbnVhbGx5RGlzYWJsZWRDb3VudGRvd24gJiYgdGhpcy5pc0F1dG9SZWZyZXNoRW5hYmxlZDtcbiAgfVxuXG4gIHByaXZhdGUgY2FuRGlzYWJsZUNvdW50ZG93bldoZW5Nb2RhbElzT3BlbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5pc0F1dG9SZWZyZXNoRW5hYmxlZCAmJlxuICAgICAgISF0aGlzLnJlZnJlc2hJbnRlcnZhbCAmJlxuICAgICAgIXRoaXMubWFudWFsbHlEaXNhYmxlZENvdW50ZG93biAmJlxuICAgICAgIXRoaXMuaXNTY3JvbGxpbmcgJiZcbiAgICAgICF0aGlzLmhpZGVDb3VudGRvd25cbiAgICApO1xuICB9XG59XG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwiIXdpZGdldEluc3RhbmNlR2xvYmFsQXV0b1JlZnJlc2hDb250ZXh0XCI+XG4gIDxkaXYgY2xhc3M9XCJhLWktY2VudGVyIGlucHV0LWdyb3VwIHAtdC00IHAtYi00IG1heC13aWR0aC1maXQgbS1sLWF1dG9cIj5cbiAgICA8bGFiZWxcbiAgICAgIGNsYXNzPVwibS1iLTAgbS1yLTggdGV4dC1sYWJlbC1zbWFsbCB0ZXh0LXRydW5jYXRlIGZsZXgtbm8tc2hyaW5rXCJcbiAgICAgIHRpdGxlPVwiIHt7ICdBdXRvIHJlZnJlc2gnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICpuZ0lmPVwicmVmcmVzaEludGVydmFsICYmIGlzQXV0b1JlZnJlc2hFbmFibGVkXCJcbiAgICA+XG4gICAgICB7eyAnQXV0byByZWZyZXNoJyB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvbGFiZWw+XG4gICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwXCI+XG4gICAgICA8bGFiZWxcbiAgICAgICAgY2xhc3M9XCJ0b2dnbGUtY291bnRkb3duXCJcbiAgICAgICAgW2NsYXNzLnRvZ2dsZS1jb3VudGRvd24tZGlzYWJsZWRdPVwiaXNSZWZyZXNoRGlzYWJsZWRcIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInRvZ2dsZUNvdW50ZG93bkJ1dHRvblRvb2x0aXBUZXh0XCJcbiAgICAgICAgW3Rvb2x0aXBdPVwidG9nZ2xlQ291bnRkb3duQnV0dG9uVG9vbHRpcFRleHRcIlxuICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b21cIlxuICAgICAgICAqbmdJZj1cInJlZnJlc2hJbnRlcnZhbCAmJiBpc0F1dG9SZWZyZXNoRW5hYmxlZFwiXG4gICAgICAgIFthZGFwdGl2ZVBvc2l0aW9uXT1cImZhbHNlXCJcbiAgICAgICAgW2NvbnRhaW5lcl09XCInYm9keSdcIlxuICAgICAgICBbZGVsYXldPVwiNTAwXCJcbiAgICAgID5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICBbY2hlY2tlZF09XCJpc0ludGVydmFsUmVmcmVzaFRvZ2dsZU9uXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNSZWZyZXNoRGlzYWJsZWRcIlxuICAgICAgICAgIGRhdGEtY3k9XCJjOHktZGF0YS1wb2ludHMtdGFibGUtd2lkZ2V0LS1pbnRlcnZhbC10b2dnbGUtYnV0dG9uXCJcbiAgICAgICAgICAoY2xpY2spPVwib25Ub2dnbGVDb3VudGRvd25CdXR0b25TdGF0ZSgkZXZlbnQsIFdJREdFVF9UWVBFX1ZBTFVFUy5EQVRBX1BPSU5UU19UQUJMRSlcIlxuICAgICAgICAvPlxuXG4gICAgICAgIDxjOHktY291bnRkb3duLWludGVydmFsXG4gICAgICAgICAgKm5nSWY9XCJpc0ludGVydmFsUmVmcmVzaFRvZ2dsZU9uXCJcbiAgICAgICAgICBbY291bnRkb3duSW50ZXJ2YWxdPVwicmVmcmVzaEludGVydmFsXCJcbiAgICAgICAgICAoY291bnRkb3duRW5kZWQpPVwiY291bnRkb3duRW5kZWQoKVwiXG4gICAgICAgID48L2M4eS1jb3VudGRvd24taW50ZXJ2YWw+XG4gICAgICAgIDxpXG4gICAgICAgICAgYzh5SWNvbj1cInBhdXNlXCJcbiAgICAgICAgICAqbmdJZj1cIiFpc0ludGVydmFsUmVmcmVzaFRvZ2dsZU9uXCJcbiAgICAgICAgPjwvaT5cbiAgICAgIDwvbGFiZWw+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cC1idG5cIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0XCJcbiAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidSZWZyZXNoJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgW3Rvb2x0aXBdPVwiJ1JlZnJlc2gnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b21cIlxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIFthZGFwdGl2ZVBvc2l0aW9uXT1cImZhbHNlXCJcbiAgICAgICAgICBbY29udGFpbmVyXT1cIidib2R5J1wiXG4gICAgICAgICAgW2RlbGF5XT1cIjUwMFwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImlzUmVmcmVzaERpc2FibGVkIHx8IChpc0xvYWRpbmcgfCBhc3luYylcIlxuICAgICAgICAgIChjbGljayk9XCJyZWxvYWQoKVwiXG4gICAgICAgICAgZGF0YS1jeT1cImM4eS1kYXRhLXBvaW50cy10YWJsZS13aWRnZXQtLXJlbG9hZC1idXR0b25cIlxuICAgICAgICA+XG4gICAgICAgICAgPGlcbiAgICAgICAgICAgIGM4eUljb249XCJyZWZyZXNoXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2ljb24tc3Bpbic6IGlzTG9hZGluZyB8IGFzeW5jIH1cIlxuICAgICAgICAgID48L2k+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy1jb250YWluZXI+XG4iXX0=
|