@provoly/dashboard 0.19.4 → 0.19.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/dataset/components/dataset-detail/dataset-detail.component.mjs +3 -6
- package/esm2022/lib/core/i18n/en.translations.mjs +3 -1
- package/esm2022/lib/core/i18n/fr.translations.mjs +3 -1
- package/esm2022/lib/core/model/display-options.interface.mjs +29 -36
- package/esm2022/lib/core/store/config/config.effects.mjs +2 -2
- package/esm2022/lib/core/store/search/search.service.mjs +7 -4
- package/esm2022/lib/dashboard/components/dashboard.component.mjs +3 -4
- package/esm2022/lib/dashboard/store/dashboard.actions.mjs +3 -1
- package/esm2022/lib/dashboard/store/dashboard.effects.mjs +7 -4
- package/esm2022/lib/dashboard/store/dashboard.selectors.mjs +3 -2
- package/esm2022/lib/dashboard/store/manifest.service.mjs +2 -2
- package/esm2022/presentation/components/add-edit-presentation/add-edit-presentation.component.mjs +39 -8
- package/esm2022/presentation/components/presentation.component.mjs +17 -10
- package/esm2022/toolbox/components/toolbox.component.mjs +15 -12
- package/fesm2022/provoly-dashboard-dataset.mjs +2 -5
- package/fesm2022/provoly-dashboard-dataset.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-presentation.mjs +54 -16
- package/fesm2022/provoly-dashboard-presentation.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-toolbox.mjs +14 -11
- package/fesm2022/provoly-dashboard-toolbox.mjs.map +1 -1
- package/fesm2022/provoly-dashboard.mjs +71 -67
- package/fesm2022/provoly-dashboard.mjs.map +1 -1
- package/lib/core/i18n/en.translations.d.ts +2 -0
- package/lib/core/i18n/fr.translations.d.ts +2 -0
- package/lib/core/model/display-options.interface.d.ts +3 -8
- package/lib/dashboard/store/dashboard.actions.d.ts +8 -6
- package/lib/dashboard/store/dashboard.effects.d.ts +9 -5
- package/lib/dashboard/store/dashboard.selectors.d.ts +1 -1
- package/package.json +37 -37
- package/presentation/components/add-edit-presentation/add-edit-presentation.component.d.ts +10 -2
- package/presentation/components/presentation.component.d.ts +5 -3
- package/toolbox/components/toolbox.component.d.ts +2 -1
|
@@ -75,7 +75,7 @@ export class ConfigEffects {
|
|
|
75
75
|
type: 'success'
|
|
76
76
|
})), map(() => ConfigActions.loadWidgets()), catchError((error) => {
|
|
77
77
|
this.snackBar.open({
|
|
78
|
-
message: this.translateService.instant('@pry.toolbox.catalog.saveErrorCode.' + error.error
|
|
78
|
+
message: this.translateService.instant('@pry.toolbox.catalog.saveErrorCode.' + +(error.error?.code ?? 'UNKNOWN'), {
|
|
79
79
|
name: action.widget.name
|
|
80
80
|
}),
|
|
81
81
|
type: 'error'
|
|
@@ -121,4 +121,4 @@ export class ConfigEffects {
|
|
|
121
121
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ConfigEffects, decorators: [{
|
|
122
122
|
type: Injectable
|
|
123
123
|
}], ctorParameters: function () { return [{ type: i1.Actions }, { type: i2.OpenMapTilesService }, { type: i3.Store }, { type: i4.ConfigService }, { type: i5.PrySnackbarService }, { type: i6.PryI18nService }, { type: i7.PryDialogService }]; } });
|
|
124
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmVmZmVjdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcm92b2x5L2Rhc2hib2FyZC9saWIvY29yZS9zdG9yZS9jb25maWcvY29uZmlnLmVmZmVjdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQVcsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU5RCxPQUFPLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDNUQsT0FBTyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxjQUFjLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1RSxPQUFPLEVBQUUseUJBQXlCLEVBQXdCLE1BQU0sbURBQW1ELENBQUM7QUFJcEgsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNyRCxPQUFPLEVBRUwsY0FBYyxFQUNkLGFBQWEsRUFDYixpQkFBaUIsRUFDakIsZ0JBQWdCLEVBQ2hCLGVBQWUsRUFDaEIsTUFBTSxrQkFBa0IsQ0FBQztBQUMxQixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7Ozs7O0FBSy9ELE1BQU0sT0FBTyxhQUFhO0lBcU54QixZQUNVLFFBQWlCLEVBQ2pCLG1CQUF3QyxFQUN4QyxLQUFZLEVBQ1osYUFBNEIsRUFDNUIsUUFBNEIsRUFDNUIsZ0JBQWdDLEVBQ2hDLFNBQTJCO1FBTjNCLGFBQVEsR0FBUixRQUFRLENBQVM7UUFDakIsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQUN4QyxVQUFLLEdBQUwsS0FBSyxDQUFPO1FBQ1osa0JBQWEs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Q3RDLEdBQUcsQ0FBQyxDQUFDLFlBQXNCLEVBQUUsRUFBRTtZQUM3QixPQUFPLGFBQWEsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZFLENBQUMsQ0FBQyxFQUNGLFVBQVUsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxhQUFhLENBQUMsbUJBQW1CLENBQUMsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQzdFLENBQ0YsQ0FDRixDQUNGLENBQUM7SUFVQyxDQUFDOytHQTdOTyxhQUFhO21IQUFiLGFBQWE7OzRGQUFiLGFBQWE7a0JBRHpCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3Rpb25zLCBjcmVhdGVFZmZlY3QsIG9mVHlwZSB9IGZyb20gJ0BuZ3J4L2VmZmVjdHMnO1xuaW1wb3J0IHsgU3RvcmUgfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBkZWJvdW5jZVRpbWUsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciwgbWFwLCBtZXJnZU1hcCwgdGFwLCB3aXRoTGF0ZXN0RnJvbSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFByeURpYWxvZ0NvbmZpcm1Db21wb25lbnQsIFByeURpYWxvZ0NvbmZpcm1EYXRhIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9vdmVybGF5L2RpYWxvZy1jb25maXJtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQcnlEaWFsb2dTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9vdmVybGF5L2RpYWxvZy5zZXJ2aWNlJztcbmltcG9ydCB7IFByeVNuYWNrYmFyU2VydmljZSB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvc25hY2tiYXIvc25hY2tiYXIuc2VydmljZSc7XG5pbXBvcnQgeyBQcnlJMThuU2VydmljZSB9IGZyb20gJy4uLy4uL2kxOG4vaTE4bi5zZXJ2aWNlJztcbmltcG9ydCB7IENvbmZpZ0FjdGlvbnMgfSBmcm9tICcuL2NvbmZpZy5hY3Rpb25zJztcbmltcG9ydCB7IENvbmZpZ1NlbGVjdG9ycyB9IGZyb20gJy4vY29uZmlnLnNlbGVjdG9ycyc7XG5pbXBvcnQge1xuICBDb25maWdTZXJ2aWNlLFxuICBGSUxURVJTX0RPTUFJTixcbiAgU1lNQk9MX0RPTUFJTixcbiAgVEFCTEVfQVRUUl9ET01BSU4sXG4gIFRJTEVfQVRUUl9ET01BSU4sXG4gIFRPT0xUSVBTX0RPTUFJTlxufSBmcm9tICcuL2NvbmZpZy5zZXJ2aWNlJztcbmltcG9ydCB7IENoYXJ0T3B0aW9uRGVmYXVsdCB9IGZyb20gJy4vY29uZmlnLndpZGdldC5jb25zdGFudHMnO1xuaW1wb3J0IHsgT3Blbk1hcFRpbGVzU2VydmljZSB9IGZyb20gJy4vb3Blbi1tYXAtdGlsZXMuc2VydmljZSc7XG5pbXBvcnQgeyBWZXJzaW9ucyB9IGZyb20gJy4vdmVyc2lvbnMuaW50ZXJmYWNlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIENvbmZpZ0VmZmVjdHMge1xuICBtYXBTdHlsZXMkID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKENvbmZpZ0FjdGlvbnMuZ2V0TWFwU3R5bGVzKSxcbiAgICAgIHdpdGhMYXRlc3RGcm9tKHRoaXMuc3RvcmUuc2VsZWN0KENvbmZpZ1NlbGVjdG9ycy5tYXBTdHlsZXMpKSxcbiAgICAgIGZpbHRlcigoW2FjdGlvbiwgbWFwU3R5bGVzXSkgPT4gIW1hcFN0eWxlcyB8fCBtYXBTdHlsZXMubGVuZ3RoID09PSAwKSxcbiAgICAgIG1lcmdlTWFwKChbYWN0aW9uXSkgPT5cbiAgICAgICAgdGhpcy5vcGVuTWFwVGlsZXNTZXJ2aWNlLmdldFN0eWxlcygpLnBpcGUobWFwKChzdHlsZXMpID0+IENvbmZpZ0FjdGlvbnMuZGVmaW5lTWFwU3R5bGVzKHsgc3R5bGVzIH0pKSlcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgc2F2ZUljb25EZWZpbml0aW9ucyQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUoQ29uZmlnQWN0aW9ucy5zYXZlSWNvbnMpLFxuICAgICAgbWVyZ2VNYXAoKGFjdGlvbikgPT5cbiAgICAgICAgdGhpcy5jb25maWdTZXJ2aWNlXG4gICAgICAgICAgLnNhdmVEZWZpbml0aW9ucyhhY3Rpb24uZGVmaW5pdGlvbnMsIFNZTUJPTF9ET01BSU4pXG4gICAgICAgICAgLnBpcGUobWFwKCgpID0+IENvbmZpZ0FjdGlvbnMubG9hZEN1c3RvbWl6YXRpb24oKSkpXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIHNhdmVUYWJsZUF0dHJpYnV0ZXMkID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKENvbmZpZ0FjdGlvbnMuc2F2ZVRhYmxlRGVmYXVsdEF0dHJpYnV0ZXMpLFxuICAgICAgbWVyZ2VNYXAoKGFjdGlvbikgPT5cbiAgICAgICAgdGhpcy5jb25maWdTZXJ2aWNlXG4gICAgICAgICAgLnNhdmVEZWZpbml0aW9ucyhhY3Rpb24uZGVmaW5pdGlvbnMsIFRBQkxFX0FUVFJfRE9NQUlOKVxuICAgICAgICAgIC5waXBlKG1hcCgoKSA9PiBDb25maWdBY3Rpb25zLmxvYWRDdXN0b21pemF0aW9uKCkpKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICBzYXZlVGlsZUF0dHJpYnV0ZXMkID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKENvbmZpZ0FjdGlvbnMuc2F2ZVRpbGVBdHRyaWJ1dGVzKSxcbiAgICAgIG1lcmdlTWFwKChhY3Rpb24pID0+XG4gICAgICAgIHRoaXMuY29uZmlnU2VydmljZVxuICAgICAgICAgIC5zYXZlRGVmaW5pdGlvbnMoYWN0aW9uLmRlZmluaXRpb25zLCBUSUxFX0FUVFJfRE9NQUlOKVxuICAgICAgICAgIC5waXBlKG1hcCgoKSA9PiBDb25maWdBY3Rpb25zLmxvYWRDdXN0b21pemF0aW9uKCkpKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICBzYXZlVGVtcGxhdGVzJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShDb25maWdBY3Rpb25zLnNhdmVUb29sdGlwKSxcbiAgICAgIG1lcmdlTWFwKChhY3Rpb24pID0+XG4gICAgICAgIHRoaXMuY29uZmlnU2VydmljZVxuICAgICAgICAgIC5zYXZlRGVmaW5pdGlvbnMoYWN0aW9uLmRlZmluaXRpb25zLCBUT09MVElQU19ET01BSU4pXG4gICAgICAgICAgLnBpcGUobWFwKCgpID0+IENvbmZpZ0FjdGlvbnMubG9hZEN1c3RvbWl6YXRpb24oKSkpXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIGdldEN1c3RvbWl6YXRpb24kID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKENvbmZpZ0FjdGlvbnMubG9hZEN1c3RvbWl6YXRpb24pLFxuICAgICAgZGVib3VuY2VUaW1lKDEwMCksXG4gICAgICBtZXJnZU1hcCgoYWN0aW9uKSA9PlxuICAgICAgICB0aGlzLmNvbmZpZ1NlcnZpY2UuZ2V0QWxsQ2xhc3NQYXJhbXMoKS5waXBlKFxuICAgICAgICAgIG1lcmdlTWFwKChhbGxEZWZpbml0aW9ucykgPT4ge1xuICAgICAgICAgICAgY29uc3QgaWNvbnMgPSBhbGxEZWZpbml0aW9uc1xuICAgICAgICAgICAgICAuZmlsdGVyKChkZWYpID0+IGRlZi5kb21haW4gPT09IFNZTUJPTF9ET01BSU4pXG4gICAgICAgICAgICAgIC5yZWR1Y2UoXG4gICAgICAgICAgICAgICAgKHAsIGMpID0+ICh7XG4gICAgICAgICAgICAgICAgICAuLi5wLFxuICAgICAgICAgICAgICAgICAgW2Mub0NsYXNzXTogSlNPTi5wYXJzZShjLmNvbnRlbnQpXG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAge31cbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGNvbnN0IHRhYmxlQXR0cmlidXRlcyA9IGFsbERlZmluaXRpb25zXG4gICAgICAgICAgICAgIC5maWx0ZXIoKGRlZikgPT4gZGVmLmRvbWFpbiA9PT0gVEFCTEVfQVRUUl9ET01BSU4pXG4gICAgICAgICAgICAgIC5yZWR1Y2UoXG4gICAgICAgICAgICAgICAgKHAsIGMpID0+ICh7XG4gICAgICAgICAgICAgICAgICAuLi5wLFxuICAgICAgICAgICAgICAgICAgW2Mub0NsYXNzXTogSlNPTi5wYXJzZShjLmNvbnRlbnQpXG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAge31cbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGNvbnN0IHRvb2x0aXBzID0gYWxsRGVmaW5pdGlvbnNcbiAgICAgICAgICAgICAgLmZpbHRlcigoZGVmKSA9PiBkZWYuZG9tYWluID09PSBUT09MVElQU19ET01BSU4pXG4gICAgICAgICAgICAgIC5yZWR1Y2UoXG4gICAgICAgICAgICAgICAgKHAsIGMpID0+ICh7XG4gICAgICAgICAgICAgICAgICAuLi5wLFxuICAgICAgICAgICAgICAgICAgW2Mub0NsYXNzXTogSlNPTi5wYXJzZShjLmNvbnRlbnQpXG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAge31cbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGNvbnN0IGZpbHRlcnMgPSBhbGxEZWZpbml0aW9uc1xuICAgICAgICAgICAgICAuZmlsdGVyKChkZWYpID0+IGRlZi5kb21haW4gPT09IEZJTFRFUlNfRE9NQUlOKVxuICAgICAgICAgICAgICAucmVkdWNlKFxuICAgICAgICAgICAgICAgIChwLCBjKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgLi4ucCxcbiAgICAgICAgICAgICAgICAgIFtjLm9DbGFzc106IEpTT04ucGFyc2UoYy5jb250ZW50KVxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIHt9XG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICBjb25zdCB0aWxlQXR0cmlidXRlcyA9IGFsbERlZmluaXRpb25zXG4gICAgICAgICAgICAgIC5maWx0ZXIoKGRlZikgPT4gZGVmLmRvbWFpbiA9PT0gVElMRV9BVFRSX0RPTUFJTilcbiAgICAgICAgICAgICAgLnJlZHVjZShcbiAgICAgICAgICAgICAgICAocCwgYykgPT4gKHtcbiAgICAgICAgICAgICAgICAgIC4uLnAsXG4gICAgICAgICAgICAgICAgICBbYy5vQ2xhc3NdOiBKU09OLnBhcnNlKGMuY29udGVudClcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICB7fVxuICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICByZXR1cm4gW0NvbmZpZ0FjdGlvbnMubG9hZGVkQ3VzdG9taXphdGlvbih7IGljb25zLCB0YWJsZUF0dHJpYnV0ZXMsIHRvb2x0aXBzLCBmaWx0ZXJzLCB0aWxlQXR0cmlidXRlcyB9KV07XG4gICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICBzYXZlV2lkZ2V0JCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShDb25maWdBY3Rpb25zLnNhdmVXaWRnZXQpLFxuICAgICAgbWVyZ2VNYXAoKGFjdGlvbikgPT5cbiAgICAgICAgdGhpcy5jb25maWdTZXJ2aWNlLnNhdmVXaWRnZXQoYWN0aW9uLndpZGdldCkucGlwZShcbiAgICAgICAgICB0YXAoKCkgPT5cbiAgICAgICAgICAgIHRoaXMuc25hY2tCYXIub3Blbih7XG4gICAgICAgICAgICAgIG1lc3NhZ2U6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdAcHJ5LnRvb2xib3guY2F0YWxvZy5zYXZlZCcsIHsgdmlld0lkOiBhY3Rpb24ud2lkZ2V0Lm5hbWUgfSksXG4gICAgICAgICAgICAgIHR5cGU6ICdzdWNjZXNzJ1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICApLFxuICAgICAgICAgIG1hcCgoKSA9PiBDb25maWdBY3Rpb25zLmxvYWRXaWRnZXRzKCkpLFxuICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnNuYWNrQmFyLm9wZW4oe1xuICAgICAgICAgICAgICBtZXNzYWdlOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnQHByeS50b29sYm94LmNhdGFsb2cuc2F2ZUVycm9yQ29kZS4nICsgZXJyb3IuZXJyb3IuY29kZSwge1xuICAgICAgICAgICAgICAgIG5hbWU6IGFjdGlvbi53aWRnZXQubmFtZVxuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgdHlwZTogJ2Vycm9yJ1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihlcnJvcik7XG4gICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICBjb25maXJtUmVzdGl0dXRpb25EZWxldGlvbiQgPSBjcmVhdGVFZmZlY3QoXG4gICAgKCkgPT5cbiAgICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgICAgb2ZUeXBlKENvbmZpZ0FjdGlvbnMuY29uZmlybVJlc3RpdHV0aW9uRGVsZXRpb24pLFxuICAgICAgICB0YXAoKGFjdGlvbikgPT4ge1xuICAgICAgICAgIGNvbnN0IGRhdGE6IFByeURpYWxvZ0NvbmZpcm1EYXRhID0ge1xuICAgICAgICAgICAgdGl0bGU6ICdAcHJ5LndpZGdldC5tb2RhbFRpdGxlJyxcbiAgICAgICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGlkOiAwLFxuICAgICAgICAgICAgICAgIGxhYmVsOiAnQHByeS50b29sYm94Lm1hbmlmZXN0LnZhbGlkYXRlJyxcbiAgICAgICAgICAgICAgICBhY3Rpb25zOiBbQ29uZmlnQWN0aW9ucy5kZWxldGVSZXN0aXR1dGlvbih7IGlkOiBhY3Rpb24uaWQgfSldXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBpZDogMSxcbiAgICAgICAgICAgICAgICBsYWJlbDogJ0BwcnkudG9vbGJveC5tYW5pZmVzdC5jbG9zZScsXG4gICAgICAgICAgICAgICAgY29sb3I6ICdzZWNvbmRhcnknXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgICB9O1xuICAgICAgICAgIHRoaXMucHJ5RGlhbG9nLm9wZW4oUHJ5RGlhbG9nQ29uZmlybUNvbXBvbmVudCwgeyBkYXRhIH0pO1xuICAgICAgICB9KVxuICAgICAgKSxcbiAgICB7IGRpc3BhdGNoOiBmYWxzZSB9XG4gICk7XG5cbiAgZGVsZXRlUmVzdGl0dXRpb24kID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKENvbmZpZ0FjdGlvbnMuZGVsZXRlUmVzdGl0dXRpb24pLFxuICAgICAgbWVyZ2VNYXAoKGFjdGlvbikgPT4gdGhpcy5jb25maWdTZXJ2aWNlLmRlbGV0ZVJlc3RpdHV0aW9uKGFjdGlvbi5pZCkucGlwZShtYXAoKCkgPT4gQ29uZmlnQWN0aW9ucy5sb2FkV2lkZ2V0cygpKSkpXG4gICAgKVxuICApO1xuXG4gIGxvYWRXaWRnZXQkID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKENvbmZpZ0FjdGlvbnMubG9hZFdpZGdldHMpLFxuICAgICAgbWVyZ2VNYXAoKGFjdGlvbikgPT5cbiAgICAgICAgdGhpcy5jb25maWdTZXJ2aWNlLmdldEFsbFdpZGdldHMoKS5waXBlKG1hcCgod2lkZ2V0cykgPT4gQ29uZmlnQWN0aW9ucy5sb2FkZWRXaWRnZXRzKHsgd2lkZ2V0cyB9KSkpXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIGxvYWRDaGFydE9wdGlvbiQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUoQ29uZmlnQWN0aW9ucy5sb2FkQ2hhcnRPcHRpb24pLFxuICAgICAgd2l0aExhdGVzdEZyb20odGhpcy5zdG9yZS5zZWxlY3QoQ29uZmlnU2VsZWN0b3JzLmNoYXJ0T3B0aW9uKSksXG4gICAgICBtYXAoKFthY3Rpb24sIGNoYXJ0T3B0aW9uc10pID0+IHtcbiAgICAgICAgY29uc3QgY2hhcnRPcHRpb24gPSB7XG4gICAgICAgICAgdHlwZTogY2hhcnRPcHRpb25zLnR5cGUgPz8gQ2hhcnRPcHRpb25EZWZhdWx0LnR5cGUsXG4gICAgICAgICAgc3ViVHlwZTogY2hhcnRPcHRpb25zLnN1YlR5cGUgPz8gQ2hhcnRPcHRpb25EZWZhdWx0LnN1YlR5cGUsXG4gICAgICAgICAgYWdncmVnYXRpb246IGNoYXJ0T3B0aW9ucy5hZ2dyZWdhdGlvbiA/PyBDaGFydE9wdGlvbkRlZmF1bHQuYWdncmVnYXRpb24sXG4gICAgICAgICAgY29sb3I6IGNoYXJ0T3B0aW9ucy5jb2xvciA/PyBDaGFydE9wdGlvbkRlZmF1bHQuY29sb3JcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIENvbmZpZ0FjdGlvbnMubG9hZGVkQ2hhcnRPcHRpb24oeyBjaGFydE9wdGlvbiB9KTtcbiAgICAgIH0pXG4gICAgKVxuICApO1xuICBsb2FkVmVyc2lvbnMkID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKENvbmZpZ0FjdGlvbnMubG9hZFZlcnNpb25zKSxcbiAgICAgIG1lcmdlTWFwKChhY3Rpb24pID0+XG4gICAgICAgIHRoaXMuY29uZmlnU2VydmljZS5nZXRBbGxWZXJzaW9ucygpLnBpcGUoXG4gICAgICAgICAgbWFwKCh2ZXJzaW9uc0RhdGE6IFZlcnNpb25zKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gQ29uZmlnQWN0aW9ucy5sb2FkVmVyc2lvbnNTdWNjZXNzKHsgdmVyc2lvbnM6IHZlcnNpb25zRGF0YSB9KTtcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4gW0NvbmZpZ0FjdGlvbnMubG9hZFZlcnNpb25zRmFpbHVyZSh7IGVycm9yOiBlcnJvciB9KV0pXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBhY3Rpb25zJDogQWN0aW9ucyxcbiAgICBwcml2YXRlIG9wZW5NYXBUaWxlc1NlcnZpY2U6IE9wZW5NYXBUaWxlc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBzdG9yZTogU3RvcmUsXG4gICAgcHJpdmF0ZSBjb25maWdTZXJ2aWNlOiBDb25maWdTZXJ2aWNlLFxuICAgIHByaXZhdGUgc25hY2tCYXI6IFByeVNuYWNrYmFyU2VydmljZSxcbiAgICBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IFByeUkxOG5TZXJ2aWNlLFxuICAgIHByaXZhdGUgcHJ5RGlhbG9nOiBQcnlEaWFsb2dTZXJ2aWNlXG4gICkge31cbn1cbiJdfQ==
|
|
124
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmVmZmVjdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcm92b2x5L2Rhc2hib2FyZC9saWIvY29yZS9zdG9yZS9jb25maWcvY29uZmlnLmVmZmVjdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQVcsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU5RCxPQUFPLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDNUQsT0FBTyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxjQUFjLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1RSxPQUFPLEVBQUUseUJBQXlCLEVBQXdCLE1BQU0sbURBQW1ELENBQUM7QUFJcEgsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNyRCxPQUFPLEVBRUwsY0FBYyxFQUNkLGFBQWEsRUFDYixpQkFBaUIsRUFDakIsZ0JBQWdCLEVBQ2hCLGVBQWUsRUFDaEIsTUFBTSxrQkFBa0IsQ0FBQztBQUMxQixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7Ozs7O0FBSy9ELE1BQU0sT0FBTyxhQUFhO0lBd054QixZQUNVLFFBQWlCLEVBQ2pCLG1CQUF3QyxFQUN4QyxLQUFZLEVBQ1osYUFBNEIsRUFDNUIsUUFBNEIsRUFDNUIsZ0JBQWdDLEVBQ2hDLFNBQTJCO1FBTjNCLGFBQVEsR0FBUixRQUFRLENBQVM7UUFDakIsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQUN4QyxVQUFLLEdBQUwsS0FBSyxDQUFPO1FBQ1osa0JBQWEs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QUFDLGNBQWMsRUFBRSxDQUFDLElBQUksQ0FDdEMsR0FBRyxDQUFDLENBQUMsWUFBc0IsRUFBRSxFQUFFO1lBQzdCLE9BQU8sYUFBYSxDQUFDLG1CQUFtQixDQUFDLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxDQUFDLENBQUM7UUFDdkUsQ0FBQyxDQUFDLEVBQ0YsVUFBVSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FDN0UsQ0FDRixDQUNGLENBQ0YsQ0FBQztJQVVDLENBQUM7K0dBaE9PLGFBQWE7bUhBQWIsYUFBYTs7NEZBQWIsYUFBYTtrQkFEekIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGlvbnMsIGNyZWF0ZUVmZmVjdCwgb2ZUeXBlIH0gZnJvbSAnQG5ncngvZWZmZWN0cyc7XG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGRlYm91bmNlVGltZSwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyLCBtYXAsIG1lcmdlTWFwLCB0YXAsIHdpdGhMYXRlc3RGcm9tIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgUHJ5RGlhbG9nQ29uZmlybUNvbXBvbmVudCwgUHJ5RGlhbG9nQ29uZmlybURhdGEgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL292ZXJsYXkvZGlhbG9nLWNvbmZpcm0uY29tcG9uZW50JztcbmltcG9ydCB7IFByeURpYWxvZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL292ZXJsYXkvZGlhbG9nLnNlcnZpY2UnO1xuaW1wb3J0IHsgUHJ5U25hY2tiYXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9zbmFja2Jhci9zbmFja2Jhci5zZXJ2aWNlJztcbmltcG9ydCB7IFByeUkxOG5TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vaTE4bi9pMThuLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29uZmlnQWN0aW9ucyB9IGZyb20gJy4vY29uZmlnLmFjdGlvbnMnO1xuaW1wb3J0IHsgQ29uZmlnU2VsZWN0b3JzIH0gZnJvbSAnLi9jb25maWcuc2VsZWN0b3JzJztcbmltcG9ydCB7XG4gIENvbmZpZ1NlcnZpY2UsXG4gIEZJTFRFUlNfRE9NQUlOLFxuICBTWU1CT0xfRE9NQUlOLFxuICBUQUJMRV9BVFRSX0RPTUFJTixcbiAgVElMRV9BVFRSX0RPTUFJTixcbiAgVE9PTFRJUFNfRE9NQUlOXG59IGZyb20gJy4vY29uZmlnLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2hhcnRPcHRpb25EZWZhdWx0IH0gZnJvbSAnLi9jb25maWcud2lkZ2V0LmNvbnN0YW50cyc7XG5pbXBvcnQgeyBPcGVuTWFwVGlsZXNTZXJ2aWNlIH0gZnJvbSAnLi9vcGVuLW1hcC10aWxlcy5zZXJ2aWNlJztcbmltcG9ydCB7IFZlcnNpb25zIH0gZnJvbSAnLi92ZXJzaW9ucy5pbnRlcmZhY2UnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQ29uZmlnRWZmZWN0cyB7XG4gIG1hcFN0eWxlcyQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUoQ29uZmlnQWN0aW9ucy5nZXRNYXBTdHlsZXMpLFxuICAgICAgd2l0aExhdGVzdEZyb20odGhpcy5zdG9yZS5zZWxlY3QoQ29uZmlnU2VsZWN0b3JzLm1hcFN0eWxlcykpLFxuICAgICAgZmlsdGVyKChbYWN0aW9uLCBtYXBTdHlsZXNdKSA9PiAhbWFwU3R5bGVzIHx8IG1hcFN0eWxlcy5sZW5ndGggPT09IDApLFxuICAgICAgbWVyZ2VNYXAoKFthY3Rpb25dKSA9PlxuICAgICAgICB0aGlzLm9wZW5NYXBUaWxlc1NlcnZpY2UuZ2V0U3R5bGVzKCkucGlwZShtYXAoKHN0eWxlcykgPT4gQ29uZmlnQWN0aW9ucy5kZWZpbmVNYXBTdHlsZXMoeyBzdHlsZXMgfSkpKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICBzYXZlSWNvbkRlZmluaXRpb25zJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShDb25maWdBY3Rpb25zLnNhdmVJY29ucyksXG4gICAgICBtZXJnZU1hcCgoYWN0aW9uKSA9PlxuICAgICAgICB0aGlzLmNvbmZpZ1NlcnZpY2VcbiAgICAgICAgICAuc2F2ZURlZmluaXRpb25zKGFjdGlvbi5kZWZpbml0aW9ucywgU1lNQk9MX0RPTUFJTilcbiAgICAgICAgICAucGlwZShtYXAoKCkgPT4gQ29uZmlnQWN0aW9ucy5sb2FkQ3VzdG9taXphdGlvbigpKSlcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgc2F2ZVRhYmxlQXR0cmlidXRlcyQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUoQ29uZmlnQWN0aW9ucy5zYXZlVGFibGVEZWZhdWx0QXR0cmlidXRlcyksXG4gICAgICBtZXJnZU1hcCgoYWN0aW9uKSA9PlxuICAgICAgICB0aGlzLmNvbmZpZ1NlcnZpY2VcbiAgICAgICAgICAuc2F2ZURlZmluaXRpb25zKGFjdGlvbi5kZWZpbml0aW9ucywgVEFCTEVfQVRUUl9ET01BSU4pXG4gICAgICAgICAgLnBpcGUobWFwKCgpID0+IENvbmZpZ0FjdGlvbnMubG9hZEN1c3RvbWl6YXRpb24oKSkpXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIHNhdmVUaWxlQXR0cmlidXRlcyQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUoQ29uZmlnQWN0aW9ucy5zYXZlVGlsZUF0dHJpYnV0ZXMpLFxuICAgICAgbWVyZ2VNYXAoKGFjdGlvbikgPT5cbiAgICAgICAgdGhpcy5jb25maWdTZXJ2aWNlXG4gICAgICAgICAgLnNhdmVEZWZpbml0aW9ucyhhY3Rpb24uZGVmaW5pdGlvbnMsIFRJTEVfQVRUUl9ET01BSU4pXG4gICAgICAgICAgLnBpcGUobWFwKCgpID0+IENvbmZpZ0FjdGlvbnMubG9hZEN1c3RvbWl6YXRpb24oKSkpXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIHNhdmVUZW1wbGF0ZXMkID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKENvbmZpZ0FjdGlvbnMuc2F2ZVRvb2x0aXApLFxuICAgICAgbWVyZ2VNYXAoKGFjdGlvbikgPT5cbiAgICAgICAgdGhpcy5jb25maWdTZXJ2aWNlXG4gICAgICAgICAgLnNhdmVEZWZpbml0aW9ucyhhY3Rpb24uZGVmaW5pdGlvbnMsIFRPT0xUSVBTX0RPTUFJTilcbiAgICAgICAgICAucGlwZShtYXAoKCkgPT4gQ29uZmlnQWN0aW9ucy5sb2FkQ3VzdG9taXphdGlvbigpKSlcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgZ2V0Q3VzdG9taXphdGlvbiQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUoQ29uZmlnQWN0aW9ucy5sb2FkQ3VzdG9taXphdGlvbiksXG4gICAgICBkZWJvdW5jZVRpbWUoMTAwKSxcbiAgICAgIG1lcmdlTWFwKChhY3Rpb24pID0+XG4gICAgICAgIHRoaXMuY29uZmlnU2VydmljZS5nZXRBbGxDbGFzc1BhcmFtcygpLnBpcGUoXG4gICAgICAgICAgbWVyZ2VNYXAoKGFsbERlZmluaXRpb25zKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBpY29ucyA9IGFsbERlZmluaXRpb25zXG4gICAgICAgICAgICAgIC5maWx0ZXIoKGRlZikgPT4gZGVmLmRvbWFpbiA9PT0gU1lNQk9MX0RPTUFJTilcbiAgICAgICAgICAgICAgLnJlZHVjZShcbiAgICAgICAgICAgICAgICAocCwgYykgPT4gKHtcbiAgICAgICAgICAgICAgICAgIC4uLnAsXG4gICAgICAgICAgICAgICAgICBbYy5vQ2xhc3NdOiBKU09OLnBhcnNlKGMuY29udGVudClcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICB7fVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgY29uc3QgdGFibGVBdHRyaWJ1dGVzID0gYWxsRGVmaW5pdGlvbnNcbiAgICAgICAgICAgICAgLmZpbHRlcigoZGVmKSA9PiBkZWYuZG9tYWluID09PSBUQUJMRV9BVFRSX0RPTUFJTilcbiAgICAgICAgICAgICAgLnJlZHVjZShcbiAgICAgICAgICAgICAgICAocCwgYykgPT4gKHtcbiAgICAgICAgICAgICAgICAgIC4uLnAsXG4gICAgICAgICAgICAgICAgICBbYy5vQ2xhc3NdOiBKU09OLnBhcnNlKGMuY29udGVudClcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICB7fVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgY29uc3QgdG9vbHRpcHMgPSBhbGxEZWZpbml0aW9uc1xuICAgICAgICAgICAgICAuZmlsdGVyKChkZWYpID0+IGRlZi5kb21haW4gPT09IFRPT0xUSVBTX0RPTUFJTilcbiAgICAgICAgICAgICAgLnJlZHVjZShcbiAgICAgICAgICAgICAgICAocCwgYykgPT4gKHtcbiAgICAgICAgICAgICAgICAgIC4uLnAsXG4gICAgICAgICAgICAgICAgICBbYy5vQ2xhc3NdOiBKU09OLnBhcnNlKGMuY29udGVudClcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICB7fVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgY29uc3QgZmlsdGVycyA9IGFsbERlZmluaXRpb25zXG4gICAgICAgICAgICAgIC5maWx0ZXIoKGRlZikgPT4gZGVmLmRvbWFpbiA9PT0gRklMVEVSU19ET01BSU4pXG4gICAgICAgICAgICAgIC5yZWR1Y2UoXG4gICAgICAgICAgICAgICAgKHAsIGMpID0+ICh7XG4gICAgICAgICAgICAgICAgICAuLi5wLFxuICAgICAgICAgICAgICAgICAgW2Mub0NsYXNzXTogSlNPTi5wYXJzZShjLmNvbnRlbnQpXG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAge31cbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGNvbnN0IHRpbGVBdHRyaWJ1dGVzID0gYWxsRGVmaW5pdGlvbnNcbiAgICAgICAgICAgICAgLmZpbHRlcigoZGVmKSA9PiBkZWYuZG9tYWluID09PSBUSUxFX0FUVFJfRE9NQUlOKVxuICAgICAgICAgICAgICAucmVkdWNlKFxuICAgICAgICAgICAgICAgIChwLCBjKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgLi4ucCxcbiAgICAgICAgICAgICAgICAgIFtjLm9DbGFzc106IEpTT04ucGFyc2UoYy5jb250ZW50KVxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIHt9XG4gICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIHJldHVybiBbQ29uZmlnQWN0aW9ucy5sb2FkZWRDdXN0b21pemF0aW9uKHsgaWNvbnMsIHRhYmxlQXR0cmlidXRlcywgdG9vbHRpcHMsIGZpbHRlcnMsIHRpbGVBdHRyaWJ1dGVzIH0pXTtcbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIHNhdmVXaWRnZXQkID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKENvbmZpZ0FjdGlvbnMuc2F2ZVdpZGdldCksXG4gICAgICBtZXJnZU1hcCgoYWN0aW9uKSA9PlxuICAgICAgICB0aGlzLmNvbmZpZ1NlcnZpY2Uuc2F2ZVdpZGdldChhY3Rpb24ud2lkZ2V0KS5waXBlKFxuICAgICAgICAgIHRhcCgoKSA9PlxuICAgICAgICAgICAgdGhpcy5zbmFja0Jhci5vcGVuKHtcbiAgICAgICAgICAgICAgbWVzc2FnZTogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ0BwcnkudG9vbGJveC5jYXRhbG9nLnNhdmVkJywgeyB2aWV3SWQ6IGFjdGlvbi53aWRnZXQubmFtZSB9KSxcbiAgICAgICAgICAgICAgdHlwZTogJ3N1Y2Nlc3MnXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICksXG4gICAgICAgICAgbWFwKCgpID0+IENvbmZpZ0FjdGlvbnMubG9hZFdpZGdldHMoKSksXG4gICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc25hY2tCYXIub3Blbih7XG4gICAgICAgICAgICAgIG1lc3NhZ2U6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICdAcHJ5LnRvb2xib3guY2F0YWxvZy5zYXZlRXJyb3JDb2RlLicgKyArKGVycm9yLmVycm9yPy5jb2RlID8/ICdVTktOT1dOJyksXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgbmFtZTogYWN0aW9uLndpZGdldC5uYW1lXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICB0eXBlOiAnZXJyb3InXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVycm9yKTtcbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIGNvbmZpcm1SZXN0aXR1dGlvbkRlbGV0aW9uJCA9IGNyZWF0ZUVmZmVjdChcbiAgICAoKSA9PlxuICAgICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgICBvZlR5cGUoQ29uZmlnQWN0aW9ucy5jb25maXJtUmVzdGl0dXRpb25EZWxldGlvbiksXG4gICAgICAgIHRhcCgoYWN0aW9uKSA9PiB7XG4gICAgICAgICAgY29uc3QgZGF0YTogUHJ5RGlhbG9nQ29uZmlybURhdGEgPSB7XG4gICAgICAgICAgICB0aXRsZTogJ0Bwcnkud2lkZ2V0Lm1vZGFsVGl0bGUnLFxuICAgICAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgaWQ6IDAsXG4gICAgICAgICAgICAgICAgbGFiZWw6ICdAcHJ5LnRvb2xib3gubWFuaWZlc3QudmFsaWRhdGUnLFxuICAgICAgICAgICAgICAgIGFjdGlvbnM6IFtDb25maWdBY3Rpb25zLmRlbGV0ZVJlc3RpdHV0aW9uKHsgaWQ6IGFjdGlvbi5pZCB9KV1cbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGlkOiAxLFxuICAgICAgICAgICAgICAgIGxhYmVsOiAnQHByeS50b29sYm94Lm1hbmlmZXN0LmNsb3NlJyxcbiAgICAgICAgICAgICAgICBjb2xvcjogJ3NlY29uZGFyeSdcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICAgIH07XG4gICAgICAgICAgdGhpcy5wcnlEaWFsb2cub3BlbihQcnlEaWFsb2dDb25maXJtQ29tcG9uZW50LCB7IGRhdGEgfSk7XG4gICAgICAgIH0pXG4gICAgICApLFxuICAgIHsgZGlzcGF0Y2g6IGZhbHNlIH1cbiAgKTtcblxuICBkZWxldGVSZXN0aXR1dGlvbiQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUoQ29uZmlnQWN0aW9ucy5kZWxldGVSZXN0aXR1dGlvbiksXG4gICAgICBtZXJnZU1hcCgoYWN0aW9uKSA9PiB0aGlzLmNvbmZpZ1NlcnZpY2UuZGVsZXRlUmVzdGl0dXRpb24oYWN0aW9uLmlkKS5waXBlKG1hcCgoKSA9PiBDb25maWdBY3Rpb25zLmxvYWRXaWRnZXRzKCkpKSlcbiAgICApXG4gICk7XG5cbiAgbG9hZFdpZGdldCQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUoQ29uZmlnQWN0aW9ucy5sb2FkV2lkZ2V0cyksXG4gICAgICBtZXJnZU1hcCgoYWN0aW9uKSA9PlxuICAgICAgICB0aGlzLmNvbmZpZ1NlcnZpY2UuZ2V0QWxsV2lkZ2V0cygpLnBpcGUobWFwKCh3aWRnZXRzKSA9PiBDb25maWdBY3Rpb25zLmxvYWRlZFdpZGdldHMoeyB3aWRnZXRzIH0pKSlcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgbG9hZENoYXJ0T3B0aW9uJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShDb25maWdBY3Rpb25zLmxvYWRDaGFydE9wdGlvbiksXG4gICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLnN0b3JlLnNlbGVjdChDb25maWdTZWxlY3RvcnMuY2hhcnRPcHRpb24pKSxcbiAgICAgIG1hcCgoW2FjdGlvbiwgY2hhcnRPcHRpb25zXSkgPT4ge1xuICAgICAgICBjb25zdCBjaGFydE9wdGlvbiA9IHtcbiAgICAgICAgICB0eXBlOiBjaGFydE9wdGlvbnMudHlwZSA/PyBDaGFydE9wdGlvbkRlZmF1bHQudHlwZSxcbiAgICAgICAgICBzdWJUeXBlOiBjaGFydE9wdGlvbnMuc3ViVHlwZSA/PyBDaGFydE9wdGlvbkRlZmF1bHQuc3ViVHlwZSxcbiAgICAgICAgICBhZ2dyZWdhdGlvbjogY2hhcnRPcHRpb25zLmFnZ3JlZ2F0aW9uID8/IENoYXJ0T3B0aW9uRGVmYXVsdC5hZ2dyZWdhdGlvbixcbiAgICAgICAgICBjb2xvcjogY2hhcnRPcHRpb25zLmNvbG9yID8/IENoYXJ0T3B0aW9uRGVmYXVsdC5jb2xvclxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gQ29uZmlnQWN0aW9ucy5sb2FkZWRDaGFydE9wdGlvbih7IGNoYXJ0T3B0aW9uIH0pO1xuICAgICAgfSlcbiAgICApXG4gICk7XG4gIGxvYWRWZXJzaW9ucyQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUoQ29uZmlnQWN0aW9ucy5sb2FkVmVyc2lvbnMpLFxuICAgICAgbWVyZ2VNYXAoKGFjdGlvbikgPT5cbiAgICAgICAgdGhpcy5jb25maWdTZXJ2aWNlLmdldEFsbFZlcnNpb25zKCkucGlwZShcbiAgICAgICAgICBtYXAoKHZlcnNpb25zRGF0YTogVmVyc2lvbnMpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBDb25maWdBY3Rpb25zLmxvYWRWZXJzaW9uc1N1Y2Nlc3MoeyB2ZXJzaW9uczogdmVyc2lvbnNEYXRhIH0pO1xuICAgICAgICAgIH0pLFxuICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiBbQ29uZmlnQWN0aW9ucy5sb2FkVmVyc2lvbnNGYWlsdXJlKHsgZXJyb3I6IGVycm9yIH0pXSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGFjdGlvbnMkOiBBY3Rpb25zLFxuICAgIHByaXZhdGUgb3Blbk1hcFRpbGVzU2VydmljZTogT3Blbk1hcFRpbGVzU2VydmljZSxcbiAgICBwcml2YXRlIHN0b3JlOiBTdG9yZSxcbiAgICBwcml2YXRlIGNvbmZpZ1NlcnZpY2U6IENvbmZpZ1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBzbmFja0JhcjogUHJ5U25hY2tiYXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogUHJ5STE4blNlcnZpY2UsXG4gICAgcHJpdmF0ZSBwcnlEaWFsb2c6IFByeURpYWxvZ1NlcnZpY2VcbiAgKSB7fVxufVxuIl19
|
|
@@ -80,9 +80,12 @@ export class SearchService {
|
|
|
80
80
|
return transformed;
|
|
81
81
|
}
|
|
82
82
|
autocomplete(attributes, search) {
|
|
83
|
-
return this.store.select(ConfigSelectors.dataUrl).pipe(switchMap((url) => this.httpClient.post(encodeURI(`${url}/data-sources/
|
|
84
|
-
|
|
85
|
-
|
|
83
|
+
return this.store.select(ConfigSelectors.dataUrl).pipe(switchMap((url) => this.httpClient.post(encodeURI(`${url}/data-sources/search`), {
|
|
84
|
+
datasourceByAttribute: (attributes ?? [])
|
|
85
|
+
.map((attr) => ({ [attr.id]: attr.datasource }))
|
|
86
|
+
.reduce((p, c) => ({ ...p, ...c }), {}),
|
|
87
|
+
value: search,
|
|
88
|
+
limit: 10
|
|
86
89
|
})));
|
|
87
90
|
}
|
|
88
91
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SearchService, deps: [{ token: i1.HttpClient }, { token: i2.Store }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
@@ -94,4 +97,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
94
97
|
providedIn: 'root'
|
|
95
98
|
}]
|
|
96
99
|
}], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.Store }]; } });
|
|
97
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcm92b2x5L2Rhc2hib2FyZC9saWIvY29yZS9zdG9yZS9zZWFyY2gvc2VhcmNoLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFjLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzlELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFjLEVBQUUsRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0UsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFPbEYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzdELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDOzs7O0FBUTVELE1BQU0sT0FBTyxhQUFhO0lBSXhCLFlBQW9CLFVBQXNCLEVBQVUsS0FBdUM7UUFBdkUsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUFVLFVBQUssR0FBTCxLQUFLLENBQWtDO1FBSDNGLG9CQUFlLEdBQThCLEVBQUUsQ0FBQztRQUNoRCxZQUFPLEdBQThDLEVBQUUsQ0FBQztRQUd0RCxLQUFLLENBQUMsTUFBTSxDQUFDLGtCQUFrQixDQUFDLGlCQUFpQixDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDdkUsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDekIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsUUFBUSxDQUFDLEVBQVUsRUFBRSxVQUF3QixFQUFFLFVBQW9CO1FBQ2pFLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxRQUFR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VSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUNuRyxNQUFNO1NBQ1AsQ0FBQyxDQUNILENBQ0YsQ0FBQztJQUNKLENBQUM7K0dBL0dVLGFBQWE7bUhBQWIsYUFBYSxjQUZaLE1BQU07OzRGQUVQLGFBQWE7a0JBSHpCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cFBhcmFtcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN0b3JlIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHsgY29tYmluZUxhdGVzdCwgbWFwLCBtZXJnZU1hcCwgT2JzZXJ2YWJsZSwgb2YsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRGFzaGJvYXJkU2VsZWN0b3JzIH0gZnJvbSAnLi4vLi4vLi4vZGFzaGJvYXJkL3N0b3JlL2Rhc2hib2FyZC5zZWxlY3RvcnMnO1xuaW1wb3J0IHsgRmlsdGVyQ29udGV4dCB9IGZyb20gJy4uLy4uL21vZGVsL2ZpbHRlci5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUmVzdWx0T3JkZXIgfSBmcm9tICcuLi8uLi9tb2RlbC9yZXN1bHQtb3JkZXIuaW50ZXJmYWNlJztcbmltcG9ydCB7IFJlc3VsdFNldCB9IGZyb20gJy4uLy4uL21vZGVsL3Jlc3VsdC1zZXQuaW50ZXJmYWNlJztcbmltcG9ydCB7IE1vbm9DbGFzc1NlYXJjaFBheWxvYWQgfSBmcm9tICcuLi8uLi9tb2RlbC9zZWFyY2gtbW9uby1jbGFzcy5tb2RlbCc7XG5pbXBvcnQgeyBGdWxsVGV4dFNlYXJjaFBheWxvYWQsIE11bHRpQ2xhc3NTZWFyY2hQYXlsb2FkIH0gZnJvbSAnLi4vLi4vbW9kZWwvc2VhcmNoLW11bHRpLWNsYXNzLm1vZGVsJztcbmltcG9ydCB7IENvbmZpZ1N0YXRlIH0gZnJvbSAnLi4vY29uZmlnL2NvbmZpZy5yZWR1Y2VyJztcbmltcG9ydCB7IENvbmZpZ1NlbGVjdG9ycyB9IGZyb20gJy4uL2NvbmZpZy9jb25maWcuc2VsZWN0b3JzJztcbmltcG9ydCB7IERFRkFVTFRfTkFNRURfUVVFUllfSUQgfSBmcm9tICcuL3NlYXJjaC5jb25zdGFudHMnO1xuaW1wb3J0IHsgU2VhcmNoU3RhdGUgfSBmcm9tICcuL3NlYXJjaC5yZWR1Y2VyJztcblxuZXhwb3J0IHR5cGUgUmVzdWx0c2V0VHJhbnNmb3JtYXRpb24gPSAoaWQ6IHN0cmluZywgcmVzdWx0OiBSZXN1bHRTZXQpID0+IFJlc3VsdFNldDtcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgU2VhcmNoU2VydmljZSB7XG4gIHRyYW5zZm9ybWF0aW9uczogUmVzdWx0c2V0VHJhbnNmb3JtYXRpb25bXSA9IFtdO1xuICBmaWx0ZXJzOiB7IFtkYXRhc291cmNlOiBzdHJpbmddOiBGaWx0ZXJDb250ZXh0W10gfSA9IHt9O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cENsaWVudDogSHR0cENsaWVudCwgcHJpdmF0ZSBzdG9yZTogU3RvcmU8Q29uZmlnU3RhdGUgfCBTZWFyY2hTdGF0ZT4pIHtcbiAgICBzdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLmRhdGFzb3VyY2VGaWx0ZXJzKS5zdWJzY3JpYmUoKGZpbHRlcnMpID0+IHtcbiAgICAgIHRoaXMuZmlsdGVycyA9IGZpbHRlcnM7XG4gICAgfSk7XG4gIH1cblxuICBnZXRJdGVtcyhpZDogc3RyaW5nLCBxdWlja09yZGVyPzogUmVzdWx0T3JkZXIsIGV4Y2x1ZGVHZW8/OiBib29sZWFuKTogT2JzZXJ2YWJsZTxSZXN1bHRTZXQ+IHtcbiAgICBjb25zdCBwYXJhbXMgPSB0aGlzLmdldEl0ZW1zRmlsdGVyKGlkLCB0aGlzLmdldE9yZGVyKHF1aWNrT3JkZXIpKS5hcHBlbmQoXG4gICAgICAnZXhjbHVkZUdlbycsXG4gICAgICBmYWxzZSAvKiBUT0RPOiB3aGVuIGJhY2tlbmQgd2lsbCBoYXZlIGZpeGVkICM1MjogZXhjbHVkZUdlbyA/PyBmYWxzZSAqL1xuICAgICk7XG5cbiAgICBpZiAoIWlkKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ05vdCBzZW5kaW5nIGl0ZW1zIHJlcXVlc3Qgd2l0aCBubyBkYXRhc291cmNlIGF0dGFjaGVkLicpO1xuICAgICAgcmV0dXJuIG9mKHsgaXRlbXM6IHt9LCByZWxhdGlvbnM6IFtdIH0gYXMgUmVzdWx0U2V0KTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zdG9yZS5zZWxlY3QoQ29uZmlnU2VsZWN0b3JzLmRhdGFVcmwpLnBpcGUoXG4gICAgICBtZXJnZU1hcCgodXJsKSA9PiB0aGlzLmh0dHBDbGllbnQuZ2V0PFJlc3VsdFNldD4oZW5jb2RlVVJJKGAke3VybH0vZGF0YS1zb3VyY2VzL2lkLyR7aWR9L2l0ZW1zYCksIHsgcGFyYW1zIH0pKSxcbiAgICAgIG1hcCgocnMpID0+IHRoaXMuYXBwbHlUcmFuc2Zvcm1hdGlvbnMoJ2N1cnJlbnQnLCBycykpXG4gICAgKTtcbiAgfVxuXG4gIGdldEl0ZW1zU2VyaWFsaXplZFBhcmFtcyhpZDogc3RyaW5nLCBxdWlja09yZGVyOiB7IFtpZDogc3RyaW5nXTogUmVzdWx0T3JkZXIgfCB1bmRlZmluZWQgfSA9IHt9KTogc3RyaW5nIHtcbiAgICByZXR1cm4gJ3wnICsgdGhpcy5nZXRJdGVtc0ZpbHRlcihpZCwgdGhpcy5nZXRPcmRlcihxdWlja09yZGVyW2lkXSkpLnRvU3RyaW5nKCkgKyAnfCc7XG4gIH1cblxuICBnZXRJdGVtc0ZpbHRlcihpZDogc3RyaW5nLCBjdW11bGF0aXZlPzogSHR0cFBhcmFtcyk6IEh0dHBQYXJhbXMge1xuICAgIGxldCBwYXJhbXMgPSBjdW11bGF0aXZlID8/IG5ldyBIdHRwUGFyYW1zKCk7XG4gICAgaWYgKHRoaXMuZmlsdGVyc1tpZF0pIHtcbiAgICAgIHRoaXMuZmlsdGVyc1tpZF1cbiAgICAgICAgLmZpbHRlcigoZmlsdGVyKSA9PiBmaWx0ZXIudmFsdWUgIT09IG51bGwgJiYgZmlsdGVyLnZhbHVlICE9PSB1bmRlZmluZWQpXG4gICAgICAgIC5mb3JFYWNoKChmaWx0ZXIpID0+IHtcbiAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuYXBwZW5kKCdmaWx0ZXInLCBgJHtmaWx0ZXIuYXR0cmlidXRlfSwke2ZpbHRlci5vcGVyYXRvcn0sJHtmaWx0ZXIudmFsdWV9YCk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gcGFyYW1zO1xuICB9XG5cbiAgZ2V0T3JkZXIocXVpY2tPcmRlcjogUmVzdWx0T3JkZXIgfCB1bmRlZmluZWQsIGN1bXVsYXRpdmU/OiBIdHRwUGFyYW1zKTogSHR0cFBhcmFtcyB7XG4gICAgbGV0IHBhcmFtcyA9IGN1bXVsYXRpdmUgPz8gbmV3IEh0dHBQYXJhbXMoKTtcbiAgICBpZiAocXVpY2tPcmRlcikge1xuICAgICAgcGFyYW1zID0gcGFyYW1zLmFwcGVuZCgnb3JkZXInLCBgJHtxdWlja09yZGVyLmF0dHJpYnV0ZX0sJHtxdWlja09yZGVyLmFzYyA/PyAnJ31gKTtcbiAgICB9XG4gICAgcmV0dXJuIHBhcmFtcztcbiAgfVxuXG4gIC8qKlxuICAgKiBMYXVuY2ggYSBzZWFyY2ggcmVxdWVzdCAoYW5kIHNhdmVzIGl0IGFzIGN1cnJlbnQgc2VhcmNoKVxuICAgKiBAcGFyYW0gY29uZGl0aW9uXG4gICAqL1xuICBzZWFyY2goY29uZGl0aW9uOiBNb25vQ2xhc3NTZWFyY2hQYXlsb2FkIHwgTXVsdGlDbGFzc1NlYXJjaFBheWxvYWQgfCBGdWxsVGV4dFNlYXJjaFBheWxvYWQpOiBPYnNlcnZhYmxlPFJlc3VsdFNldD4ge1xuICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KFtcbiAgICAgIHRoaXMuc3RvcmUuc2VsZWN0KENvbmZpZ1NlbGVjdG9ycy5kYXRhVXJsKSxcbiAgICAgIHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5xdWlja09yZGVyKVxuICAgIF0pLnBpcGUoXG4gICAgICBtZXJnZU1hcCgoW3VybCwgcXVpY2tPcmRlcl0pID0+IHtcbiAgICAgICAgY29uc3QgcGFyYW1zID0ge30gYXMgeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcbiAgICAgICAgaWYgKHF1aWNrT3JkZXJbREVGQVVMVF9OQU1FRF9RVUVSWV9JRF0pIHtcbiAgICAgICAgICBwYXJhbXNbJ29yZGVyJ10gPSBgJHtxdWlja09yZGVyW0RFRkFVTFRfTkFNRURfUVVFUllfSURdPy5hdHRyaWJ1dGV9LCR7XG4gICAgICAgICAgICBxdWlja09yZGVyW0RFRkFVTFRfTkFNRURfUVVFUllfSURdPy5hc2MgPz8gJydcbiAgICAgICAgICB9YDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LnBvc3Q8UmVzdWx0U2V0PihlbmNvZGVVUkkoYCR7dXJsfS9pdGVtcy9zZWFyY2hgKSwgY29uZGl0aW9uLCB7IHBhcmFtcyB9KTtcbiAgICAgIH0pLFxuICAgICAgbWFwKChycykgPT4gdGhpcy5hcHBseVRyYW5zZm9ybWF0aW9ucyhERUZBVUxUX05BTUVEX1FVRVJZX0lELCBycykpXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBbGxvd3MgdG8gYWRkIGEgdHJhbnNmb3JtYXRpb24gZnVuY3Rpb24gd2hlbiBnZXR0aW5nIHJlc3VsdHMgZnJvbSBiYWNrZW5kXG4gICAqIEBwYXJhbSBmdW5jXG4gICAqL1xuICBhZGRUcmFuc2Zvcm1hdGlvbihmdW5jOiBSZXN1bHRzZXRUcmFuc2Zvcm1hdGlvbikge1xuICAgIHRoaXMudHJhbnNmb3JtYXRpb25zLnB1c2goZnVuYyk7XG4gIH1cblxuICAvKipcbiAgICogQXBwbHkgYWxsIHRyYW5zZm9ybWF0aW9uIGZ1bmN0aW9uc1xuICAgKiBAcGFyYW0gaWRcbiAgICogQHBhcmFtIHJzXG4gICAqL1xuICBhcHBseVRyYW5zZm9ybWF0aW9ucyhpZDogc3RyaW5nLCByczogUmVzdWx0U2V0KSB7XG4gICAgbGV0IHRyYW5zZm9ybWVkID0gcnM7XG4gICAgdGhpcy50cmFuc2Zvcm1hdGlvbnMuZm9yRWFjaCgoZnVuYykgPT4gKHRyYW5zZm9ybWVkID0gZnVuYyhpZCwgdHJhbnNmb3JtZWQpKSk7XG4gICAgcmV0dXJuIHRyYW5zZm9ybWVkO1xuICB9XG5cbiAgYXV0b2NvbXBsZXRlKFxuICAgIGF0dHJpYnV0ZXM6XG4gICAgICB8IHtcbiAgICAgICAgICBpZDogc3RyaW5nO1xuICAgICAgICAgIG5hbWU6IHN0cmluZztcbiAgICAgICAgICBsYWJlbDogc3RyaW5nO1xuICAgICAgICAgIGRhdGFzb3VyY2U6IHN0cmluZztcbiAgICAgICAgfVtdXG4gICAgICB8IHVuZGVmaW5lZCxcbiAgICBzZWFyY2g6IHN0cmluZ1xuICApIHtcbiAgICByZXR1cm4gdGhpcy5zdG9yZS5zZWxlY3QoQ29uZmlnU2VsZWN0b3JzLmRhdGFVcmwpLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoKHVybCkgPT5cbiAgICAgICAgdGhpcy5odHRwQ2xpZW50LnBvc3Q8c3RyaW5nW10+KGVuY29kZVVSSShgJHt1cmx9L2RhdGEtc291cmNlcy9hdXRvY29tcGxldGVgKSwge1xuICAgICAgICAgIGF0dHJpYnV0ZXM6IChhdHRyaWJ1dGVzID8/IFtdKS5tYXAoKGF0dHIpID0+ICh7IGRhdGFzb3VyY2U6IGF0dHIuZGF0YXNvdXJjZSwgYXR0cmlidXRlOiBhdHRyLmlkIH0pKSxcbiAgICAgICAgICBzZWFyY2hcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICApO1xuICB9XG59XG4iXX0=
|
|
100
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcm92b2x5L2Rhc2hib2FyZC9saWIvY29yZS9zdG9yZS9zZWFyY2gvc2VhcmNoLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFjLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzlELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFjLEVBQUUsRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0UsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFPbEYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzdELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDOzs7O0FBUTVELE1BQU0sT0FBTyxhQUFhO0lBSXhCLFlBQW9CLFVBQXNCLEVBQVUsS0FBdUM7UUFBdkUsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUFVLFVBQUssR0FBTCxLQUFLLENBQWtDO1FBSDNGLG9CQUFlLEdBQThCLEVBQUUsQ0FBQztRQUNoRCxZQUFPLEdBQThDLEVBQUUsQ0FBQztRQUd0RCxLQUFLLENBQUMsTUFBTSxDQUFDLGtCQUFrQixDQUFDLGlCQUFpQixDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDdkUsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDekIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsUUFBUSxDQUFDLEVBQVUsRUFBRSxVQUF3QixFQUFFLFVBQW9CO1FBQ2pFLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxRQUFR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QUFVLElBQUksRUFBRSxDQUFDO2lCQUN0QyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztpQkFDL0MsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDekMsS0FBSyxFQUFFLE1BQU07WUFDYixLQUFLLEVBQUUsRUFBRTtTQUNWLENBQUMsQ0FDSCxDQUNGLENBQUM7SUFDSixDQUFDOytHQWxIVSxhQUFhO21IQUFiLGFBQWEsY0FGWixNQUFNOzs0RkFFUCxhQUFhO2tCQUh6QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBQYXJhbXMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3QsIG1hcCwgbWVyZ2VNYXAsIE9ic2VydmFibGUsIG9mLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IERhc2hib2FyZFNlbGVjdG9ycyB9IGZyb20gJy4uLy4uLy4uL2Rhc2hib2FyZC9zdG9yZS9kYXNoYm9hcmQuc2VsZWN0b3JzJztcbmltcG9ydCB7IEZpbHRlckNvbnRleHQgfSBmcm9tICcuLi8uLi9tb2RlbC9maWx0ZXIuaW50ZXJmYWNlJztcbmltcG9ydCB7IFJlc3VsdE9yZGVyIH0gZnJvbSAnLi4vLi4vbW9kZWwvcmVzdWx0LW9yZGVyLmludGVyZmFjZSc7XG5pbXBvcnQgeyBSZXN1bHRTZXQgfSBmcm9tICcuLi8uLi9tb2RlbC9yZXN1bHQtc2V0LmludGVyZmFjZSc7XG5pbXBvcnQgeyBNb25vQ2xhc3NTZWFyY2hQYXlsb2FkIH0gZnJvbSAnLi4vLi4vbW9kZWwvc2VhcmNoLW1vbm8tY2xhc3MubW9kZWwnO1xuaW1wb3J0IHsgRnVsbFRleHRTZWFyY2hQYXlsb2FkLCBNdWx0aUNsYXNzU2VhcmNoUGF5bG9hZCB9IGZyb20gJy4uLy4uL21vZGVsL3NlYXJjaC1tdWx0aS1jbGFzcy5tb2RlbCc7XG5pbXBvcnQgeyBDb25maWdTdGF0ZSB9IGZyb20gJy4uL2NvbmZpZy9jb25maWcucmVkdWNlcic7XG5pbXBvcnQgeyBDb25maWdTZWxlY3RvcnMgfSBmcm9tICcuLi9jb25maWcvY29uZmlnLnNlbGVjdG9ycyc7XG5pbXBvcnQgeyBERUZBVUxUX05BTUVEX1FVRVJZX0lEIH0gZnJvbSAnLi9zZWFyY2guY29uc3RhbnRzJztcbmltcG9ydCB7IFNlYXJjaFN0YXRlIH0gZnJvbSAnLi9zZWFyY2gucmVkdWNlcic7XG5cbmV4cG9ydCB0eXBlIFJlc3VsdHNldFRyYW5zZm9ybWF0aW9uID0gKGlkOiBzdHJpbmcsIHJlc3VsdDogUmVzdWx0U2V0KSA9PiBSZXN1bHRTZXQ7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFNlYXJjaFNlcnZpY2Uge1xuICB0cmFuc2Zvcm1hdGlvbnM6IFJlc3VsdHNldFRyYW5zZm9ybWF0aW9uW10gPSBbXTtcbiAgZmlsdGVyczogeyBbZGF0YXNvdXJjZTogc3RyaW5nXTogRmlsdGVyQ29udGV4dFtdIH0gPSB7fTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHBDbGllbnQ6IEh0dHBDbGllbnQsIHByaXZhdGUgc3RvcmU6IFN0b3JlPENvbmZpZ1N0YXRlIHwgU2VhcmNoU3RhdGU+KSB7XG4gICAgc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5kYXRhc291cmNlRmlsdGVycykuc3Vic2NyaWJlKChmaWx0ZXJzKSA9PiB7XG4gICAgICB0aGlzLmZpbHRlcnMgPSBmaWx0ZXJzO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0SXRlbXMoaWQ6IHN0cmluZywgcXVpY2tPcmRlcj86IFJlc3VsdE9yZGVyLCBleGNsdWRlR2VvPzogYm9vbGVhbik6IE9ic2VydmFibGU8UmVzdWx0U2V0PiB7XG4gICAgY29uc3QgcGFyYW1zID0gdGhpcy5nZXRJdGVtc0ZpbHRlcihpZCwgdGhpcy5nZXRPcmRlcihxdWlja09yZGVyKSkuYXBwZW5kKFxuICAgICAgJ2V4Y2x1ZGVHZW8nLFxuICAgICAgZmFsc2UgLyogVE9ETzogd2hlbiBiYWNrZW5kIHdpbGwgaGF2ZSBmaXhlZCAjNTI6IGV4Y2x1ZGVHZW8gPz8gZmFsc2UgKi9cbiAgICApO1xuXG4gICAgaWYgKCFpZCkge1xuICAgICAgY29uc29sZS53YXJuKCdOb3Qgc2VuZGluZyBpdGVtcyByZXF1ZXN0IHdpdGggbm8gZGF0YXNvdXJjZSBhdHRhY2hlZC4nKTtcbiAgICAgIHJldHVybiBvZih7IGl0ZW1zOiB7fSwgcmVsYXRpb25zOiBbXSB9IGFzIFJlc3VsdFNldCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RvcmUuc2VsZWN0KENvbmZpZ1NlbGVjdG9ycy5kYXRhVXJsKS5waXBlKFxuICAgICAgbWVyZ2VNYXAoKHVybCkgPT4gdGhpcy5odHRwQ2xpZW50LmdldDxSZXN1bHRTZXQ+KGVuY29kZVVSSShgJHt1cmx9L2RhdGEtc291cmNlcy9pZC8ke2lkfS9pdGVtc2ApLCB7IHBhcmFtcyB9KSksXG4gICAgICBtYXAoKHJzKSA9PiB0aGlzLmFwcGx5VHJhbnNmb3JtYXRpb25zKCdjdXJyZW50JywgcnMpKVxuICAgICk7XG4gIH1cblxuICBnZXRJdGVtc1NlcmlhbGl6ZWRQYXJhbXMoaWQ6IHN0cmluZywgcXVpY2tPcmRlcjogeyBbaWQ6IHN0cmluZ106IFJlc3VsdE9yZGVyIHwgdW5kZWZpbmVkIH0gPSB7fSk6IHN0cmluZyB7XG4gICAgcmV0dXJuICd8JyArIHRoaXMuZ2V0SXRlbXNGaWx0ZXIoaWQsIHRoaXMuZ2V0T3JkZXIocXVpY2tPcmRlcltpZF0pKS50b1N0cmluZygpICsgJ3wnO1xuICB9XG5cbiAgZ2V0SXRlbXNGaWx0ZXIoaWQ6IHN0cmluZywgY3VtdWxhdGl2ZT86IEh0dHBQYXJhbXMpOiBIdHRwUGFyYW1zIHtcbiAgICBsZXQgcGFyYW1zID0gY3VtdWxhdGl2ZSA/PyBuZXcgSHR0cFBhcmFtcygpO1xuICAgIGlmICh0aGlzLmZpbHRlcnNbaWRdKSB7XG4gICAgICB0aGlzLmZpbHRlcnNbaWRdXG4gICAgICAgIC5maWx0ZXIoKGZpbHRlcikgPT4gZmlsdGVyLnZhbHVlICE9PSBudWxsICYmIGZpbHRlci52YWx1ZSAhPT0gdW5kZWZpbmVkKVxuICAgICAgICAuZm9yRWFjaCgoZmlsdGVyKSA9PiB7XG4gICAgICAgICAgcGFyYW1zID0gcGFyYW1zLmFwcGVuZCgnZmlsdGVyJywgYCR7ZmlsdGVyLmF0dHJpYnV0ZX0sJHtmaWx0ZXIub3BlcmF0b3J9LCR7ZmlsdGVyLnZhbHVlfWApO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHBhcmFtcztcbiAgfVxuXG4gIGdldE9yZGVyKHF1aWNrT3JkZXI6IFJlc3VsdE9yZGVyIHwgdW5kZWZpbmVkLCBjdW11bGF0aXZlPzogSHR0cFBhcmFtcyk6IEh0dHBQYXJhbXMge1xuICAgIGxldCBwYXJhbXMgPSBjdW11bGF0aXZlID8/IG5ldyBIdHRwUGFyYW1zKCk7XG4gICAgaWYgKHF1aWNrT3JkZXIpIHtcbiAgICAgIHBhcmFtcyA9IHBhcmFtcy5hcHBlbmQoJ29yZGVyJywgYCR7cXVpY2tPcmRlci5hdHRyaWJ1dGV9LCR7cXVpY2tPcmRlci5hc2MgPz8gJyd9YCk7XG4gICAgfVxuICAgIHJldHVybiBwYXJhbXM7XG4gIH1cblxuICAvKipcbiAgICogTGF1bmNoIGEgc2VhcmNoIHJlcXVlc3QgKGFuZCBzYXZlcyBpdCBhcyBjdXJyZW50IHNlYXJjaClcbiAgICogQHBhcmFtIGNvbmRpdGlvblxuICAgKi9cbiAgc2VhcmNoKGNvbmRpdGlvbjogTW9ub0NsYXNzU2VhcmNoUGF5bG9hZCB8IE11bHRpQ2xhc3NTZWFyY2hQYXlsb2FkIHwgRnVsbFRleHRTZWFyY2hQYXlsb2FkKTogT2JzZXJ2YWJsZTxSZXN1bHRTZXQ+IHtcbiAgICByZXR1cm4gY29tYmluZUxhdGVzdChbXG4gICAgICB0aGlzLnN0b3JlLnNlbGVjdChDb25maWdTZWxlY3RvcnMuZGF0YVVybCksXG4gICAgICB0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMucXVpY2tPcmRlcilcbiAgICBdKS5waXBlKFxuICAgICAgbWVyZ2VNYXAoKFt1cmwsIHF1aWNrT3JkZXJdKSA9PiB7XG4gICAgICAgIGNvbnN0IHBhcmFtcyA9IHt9IGFzIHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG4gICAgICAgIGlmIChxdWlja09yZGVyW0RFRkFVTFRfTkFNRURfUVVFUllfSURdKSB7XG4gICAgICAgICAgcGFyYW1zWydvcmRlciddID0gYCR7cXVpY2tPcmRlcltERUZBVUxUX05BTUVEX1FVRVJZX0lEXT8uYXR0cmlidXRlfSwke1xuICAgICAgICAgICAgcXVpY2tPcmRlcltERUZBVUxUX05BTUVEX1FVRVJZX0lEXT8uYXNjID8/ICcnXG4gICAgICAgICAgfWA7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5wb3N0PFJlc3VsdFNldD4oZW5jb2RlVVJJKGAke3VybH0vaXRlbXMvc2VhcmNoYCksIGNvbmRpdGlvbiwgeyBwYXJhbXMgfSk7XG4gICAgICB9KSxcbiAgICAgIG1hcCgocnMpID0+IHRoaXMuYXBwbHlUcmFuc2Zvcm1hdGlvbnMoREVGQVVMVF9OQU1FRF9RVUVSWV9JRCwgcnMpKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQWxsb3dzIHRvIGFkZCBhIHRyYW5zZm9ybWF0aW9uIGZ1bmN0aW9uIHdoZW4gZ2V0dGluZyByZXN1bHRzIGZyb20gYmFja2VuZFxuICAgKiBAcGFyYW0gZnVuY1xuICAgKi9cbiAgYWRkVHJhbnNmb3JtYXRpb24oZnVuYzogUmVzdWx0c2V0VHJhbnNmb3JtYXRpb24pIHtcbiAgICB0aGlzLnRyYW5zZm9ybWF0aW9ucy5wdXNoKGZ1bmMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFwcGx5IGFsbCB0cmFuc2Zvcm1hdGlvbiBmdW5jdGlvbnNcbiAgICogQHBhcmFtIGlkXG4gICAqIEBwYXJhbSByc1xuICAgKi9cbiAgYXBwbHlUcmFuc2Zvcm1hdGlvbnMoaWQ6IHN0cmluZywgcnM6IFJlc3VsdFNldCkge1xuICAgIGxldCB0cmFuc2Zvcm1lZCA9IHJzO1xuICAgIHRoaXMudHJhbnNmb3JtYXRpb25zLmZvckVhY2goKGZ1bmMpID0+ICh0cmFuc2Zvcm1lZCA9IGZ1bmMoaWQsIHRyYW5zZm9ybWVkKSkpO1xuICAgIHJldHVybiB0cmFuc2Zvcm1lZDtcbiAgfVxuXG4gIGF1dG9jb21wbGV0ZShcbiAgICBhdHRyaWJ1dGVzOlxuICAgICAgfCB7XG4gICAgICAgICAgaWQ6IHN0cmluZztcbiAgICAgICAgICBuYW1lOiBzdHJpbmc7XG4gICAgICAgICAgbGFiZWw6IHN0cmluZztcbiAgICAgICAgICBkYXRhc291cmNlOiBzdHJpbmc7XG4gICAgICAgIH1bXVxuICAgICAgfCB1bmRlZmluZWQsXG4gICAgc2VhcmNoOiBzdHJpbmdcbiAgKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RvcmUuc2VsZWN0KENvbmZpZ1NlbGVjdG9ycy5kYXRhVXJsKS5waXBlKFxuICAgICAgc3dpdGNoTWFwKCh1cmwpID0+XG4gICAgICAgIHRoaXMuaHR0cENsaWVudC5wb3N0PHN0cmluZ1tdPihlbmNvZGVVUkkoYCR7dXJsfS9kYXRhLXNvdXJjZXMvc2VhcmNoYCksIHtcbiAgICAgICAgICBkYXRhc291cmNlQnlBdHRyaWJ1dGU6IChhdHRyaWJ1dGVzID8/IFtdKVxuICAgICAgICAgICAgLm1hcCgoYXR0cikgPT4gKHsgW2F0dHIuaWRdOiBhdHRyLmRhdGFzb3VyY2UgfSkpXG4gICAgICAgICAgICAucmVkdWNlKChwLCBjKSA9PiAoeyAuLi5wLCAuLi5jIH0pLCB7fSksXG4gICAgICAgICAgdmFsdWU6IHNlYXJjaCxcbiAgICAgICAgICBsaW1pdDogMTBcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICApO1xuICB9XG59XG4iXX0=
|
|
@@ -4,7 +4,6 @@ import { Component, EventEmitter, Input, Output, TemplateRef, ViewChild, ViewChi
|
|
|
4
4
|
import equal from 'fast-deep-equal/es6';
|
|
5
5
|
import { auditTime, BehaviorSubject, combineLatest, combineLatestWith, fromEvent, of, switchMap } from 'rxjs';
|
|
6
6
|
import { delay, distinctUntilChanged, filter, map } from 'rxjs/operators';
|
|
7
|
-
import { DisplayMode } from '../../core/model/display-options.interface';
|
|
8
7
|
import { DashboardGridLayout } from '../../core/model/manifest.interface';
|
|
9
8
|
import { MIME_TYPE_RESULTSET } from '../../core/model/mimetype-resultset.constant';
|
|
10
9
|
import { CategoryActions } from '../../core/store/category/category.actions';
|
|
@@ -15,7 +14,7 @@ import { DataSourceActions } from '../../core/store/data-source/data-source.acti
|
|
|
15
14
|
import { FieldActions } from '../../core/store/field/field.actions';
|
|
16
15
|
import { RelationTypesActions } from '../../core/store/relation-types/relation-types.actions';
|
|
17
16
|
import { WidgetPlacementUtils } from '../components/widgets/widget-placement/widget-placement.utils';
|
|
18
|
-
import { DashboardActions } from '../store/dashboard.actions';
|
|
17
|
+
import { DashboardActions, ViewMode } from '../store/dashboard.actions';
|
|
19
18
|
import { DEFAULT_COLUMNS_NUMBER, DEFAULT_GAP_PX, DEFAULT_ROW_HEIGHT_PX, DEFAULT_ROWS_NUMBER } from '../store/dashboard.contants';
|
|
20
19
|
import { DashboardSelectors } from '../store/dashboard.selectors';
|
|
21
20
|
import { solveCollisions } from './solve-collisions.function';
|
|
@@ -170,7 +169,7 @@ export class DashboardComponent extends SubscriptionnerDirective {
|
|
|
170
169
|
}
|
|
171
170
|
ngOnInit() {
|
|
172
171
|
if (this.displayOptions)
|
|
173
|
-
this.store.dispatch(DashboardActions.updateDisplayOptions({ mode:
|
|
172
|
+
this.store.dispatch(DashboardActions.updateDisplayOptions({ mode: ViewMode.CUSTOM, customDisplay: this.displayOptions }));
|
|
174
173
|
}
|
|
175
174
|
ngAfterViewInit() {
|
|
176
175
|
this.canCalculateView = true;
|
|
@@ -571,4 +570,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
571
570
|
}], rows: [{
|
|
572
571
|
type: Output
|
|
573
572
|
}] } });
|
|
574
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGFzaGJvYXJkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL2xpYi9kYXNoYm9hcmQvY29tcG9uZW50cy9kYXNoYm9hcmQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJvdm9seS9kYXNoYm9hcmQvbGliL2Rhc2hib2FyZC9jb21wb25lbnRzL2Rhc2hib2FyZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQVcsYUFBYSxFQUFjLE1BQU0sc0JBQXNCLENBQUM7QUFDMUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3JELE9BQU8sRUFFTCxTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBRU4sV0FBVyxFQUNYLFNBQVMsRUFDVCxZQUFZLEVBRWIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxLQUFLLE1BQU0scUJBQXFCLENBQUM7QUFDeEMsT0FBTyxFQUNMLFNBQVMsRUFDVCxlQUFlLEVBQ2YsYUFBYSxFQUNiLGlCQUFpQixFQUNqQixTQUFTLEVBRVQsRUFBRSxFQUNGLFNBQVMsRUFDVixNQUFNLE1BQU0sQ0FBQztBQUNkLE9BQU8sRUFBRSxLQUFLLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzFFLE9BQU8sRUFBRSxXQUFXLEVBQWtCLE1BQU0sNENBQTRDLENBQUM7QUFDekYsT0FBTyxFQUNMLG1CQUFtQixFQUlwQixNQUFNLHFDQUFxQyxDQUFDO0FBQzdDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQ25GLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0s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QUFjO3NCQUF0QixLQUFLO2dCQUVhLE9BQU87c0JBQXpCLFNBQVM7dUJBQUMsTUFBTTtnQkFnQlAsU0FBUztzQkFBbEIsTUFBTTtnQkFDRyxJQUFJO3NCQUFiLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPdmVybGF5LCBPdmVybGF5Q29uZmlnLCBPdmVybGF5UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgVGVtcGxhdGVQb3J0YWwgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFF1ZXJ5TGlzdCxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0NoaWxkcmVuLFxuICBWaWV3Q29udGFpbmVyUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3RvcmUgfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQgZXF1YWwgZnJvbSAnZmFzdC1kZWVwLWVxdWFsL2VzNic7XG5pbXBvcnQge1xuICBhdWRpdFRpbWUsXG4gIEJlaGF2aW9yU3ViamVjdCxcbiAgY29tYmluZUxhdGVzdCxcbiAgY29tYmluZUxhdGVzdFdpdGgsXG4gIGZyb21FdmVudCxcbiAgT2JzZXJ2YWJsZSxcbiAgb2YsXG4gIHN3aXRjaE1hcFxufSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlbGF5LCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZmlsdGVyLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBEaXNwbGF5TW9kZSwgRGlzcGxheU9wdGlvbnMgfSBmcm9tICcuLi8uLi9jb3JlL21vZGVsL2Rpc3BsYXktb3B0aW9ucy5pbnRlcmZhY2UnO1xuaW1wb3J0IHtcbiAgRGFzaGJvYXJkR3JpZExheW91dCxcbiAgRGFzaGJvYXJkTWFuaWZlc3QsXG4gIFdpZGdldExheW91dCxcbiAgV2lkZ2V0TWFuaWZlc3Rcbn0gZnJvbSAnLi4vLi4vY29yZS9tb2RlbC9tYW5pZmVzdC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgTUlNRV9UWVBFX1JFU1VMVFNFVCB9IGZyb20gJy4uLy4uL2NvcmUvbW9kZWwvbWltZXR5cGUtcmVzdWx0c2V0LmNvbnN0YW50JztcbmltcG9ydCB7IENhdGVnb3J5QWN0aW9ucyB9IGZyb20gJy4uLy4uL2NvcmUvc3RvcmUvY2F0ZWdvcnkvY2F0ZWdvcnkuYWN0aW9ucyc7XG5pbXBvcnQgeyBDbGFzc0FjdGlvbnMgfSBmcm9tICcuLi8uLi9jb3JlL3N0b3JlL2NsYXNzL2NsYXNzLmFjdGlvbnMnO1xuaW1wb3J0IHsgQ29uZmlnQWN0aW9ucyB9IGZyb20gJy4uLy4uL2NvcmUvc3RvcmUvY29uZmlnL2NvbmZpZy5hY3Rpb25zJztcbmltcG9ydCB7IENvbmZpZ1NlbGVjdG9ycyB9IGZyb20gJy4uLy4uL2NvcmUvc3RvcmUvY29uZmlnL2NvbmZpZy5zZWxlY3RvcnMnO1xuaW1wb3J0IHsgRGF0YVNvdXJjZUFjdGlvbnMgfSBmcm9tICcuLi8uLi9jb3JlL3N0b3JlL2RhdGEtc291cmNlL2RhdGEtc291cmNlLmFjdGlvbnMnO1xuaW1wb3J0IHsgRmllbGRBY3Rpb25zIH0gZnJvbSAnLi4vLi4vY29yZS9zdG9yZS9maWVsZC9maWVsZC5hY3Rpb25zJztcbmltcG9ydCB7IFJlbGF0aW9uVHlwZXNBY3Rpb25zIH0gZnJvbSAnLi4vLi4vY29yZS9zdG9yZS9yZWxhdGlvbi10eXBlcy9yZWxhdGlvbi10eXBlcy5hY3Rpb25zJztcbmltcG9ydCB7IFdpZGdldFBsYWNlbWVudFV0aWxzIH0gZnJvbSAnLi4vY29tcG9uZW50cy93aWRnZXRzL3dpZGdldC1wbGFjZW1lbnQvd2lkZ2V0LXBsYWNlbWVudC51dGlscyc7XG5pbXBvcnQgeyBEYXNoYm9hcmRBY3Rpb25zLCBEYXNoYm9hcmRDZWxsUGFyYW1zIH0gZnJvbSAnLi4vc3RvcmUvZGFzaGJvYXJkLmFjdGlvbnMnO1xuaW1wb3J0IHtcbiAgREVGQVVMVF9DT0xVTU5TX05VTUJFUixcbiAgREVGQVVMVF9HQVBfUFgsXG4gIERFRkFVTFRfUk9XX0hFSUdIVF9QWCxcbiAgREVGQVVMVF9ST1dTX05VTUJFUlxufSBmcm9tICcuLi9zdG9yZS9kYXNoYm9hcmQuY29udGFudHMnO1xuaW1wb3J0IHsgRGFzaGJvYXJkU2VsZWN0b3JzIH0gZnJvbSAnLi4vc3RvcmUvZGFzaGJvYXJkLnNlbGVjdG9ycyc7XG5pbXBvcnQgeyBzb2x2ZUNvbGxpc2lvbnMgfSBmcm9tICcuL3NvbHZlLWNvbGxpc2lvbnMuZnVuY3Rpb24nO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9ubmVyRGlyZWN0aXZlIH0gZnJvbSAnLi9zdWJzY3JpcHRpb25uZXIuZGlyZWN0aXZlJztcbmltcG9ydCB7IFdpZGdldEluc3RhbmNpYXRvckNvbXBvbmVudCB9IGZyb20gJy4vd2lkZ2V0cy93aWRnZXQtaW5zdGFuY2lhdG9yL3dpZGdldC1pbnN0YW5jaWF0b3IuY29tcG9uZW50JztcbmltcG9ydCB7IFNlYXJjaFNlbGVjdG9ycyB9IGZyb20gJy4uLy4uL2NvcmUvc3RvcmUvc2VhcmNoL3NlYXJjaC5zZWxlY3RvcnMnO1xuXG5leHBvcnQgY29uc3QgTUlNRV9UWVBFX1dJREdFVF9NQU5JRkVTVCA9ICdhcHBsaWNhdGlvbi93aWRnZXQtbWFuaWZlc3QnO1xuZXhwb3J0IGNvbnN0IE1JTUVfVFlQRV9XSURHRVRfVFlQRSA9ICdhcHBsaWNhdGlvbi93aWRnZXQtdHlwZS0nO1xuZXhwb3J0IGNvbnN0IE1JTUVfVFlQRV9XSURHRVRfU0laRSA9ICdhcHBsaWNhdGlvbi93aWRnZXQtc2l6ZS0nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwcnktZGFzaGJvYXJkJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Rhc2hib2FyZC5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgRGFzaGJvYXJkQ29tcG9uZW50IGV4dGVuZHMgU3Vic2NyaXB0aW9ubmVyRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcbiAgbWFuaWZlc3Q6IERhc2hib2FyZE1hbmlmZXN0IHwgbnVsbCA9IG51bGw7XG4gIHdpbmRvd01hbmlmZXN0JDogT2JzZXJ2YWJsZTxEYXNoYm9hcmRNYW5pZmVzdD47XG4gIG1vZGVFZGl0aW9uID0gZmFsc2U7XG4gIG1vZGVFZGl0aW9uJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgYWN0aW9uVHlwZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBzdGF0aWNEYXNoYm9hcmQkOiBCZWhhdmlvclN1YmplY3Q8RGFzaGJvYXJkTWFuaWZlc3QgfCBudWxsPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RGFzaGJvYXJkTWFuaWZlc3QgfCBudWxsPihudWxsKTtcbiAgc3RhY2tlZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgaW5kZXhGb3JSZW1vdmFsOiBudW1iZXIgPSAtMTtcbiAgQFZpZXdDaGlsZCgndGVtcGxhdGVNb2RhbCcsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSkgdGVtcGxhdGVNb2RhbCE6IFRlbXBsYXRlUmVmPGFueT47XG4gIHNlcGFyYXRvcnMkOiBPYnNlcnZhYmxlPFdpZGdldExheW91dFtdPjtcbiAgbm9uRmlsbGVyV2lkZ2V0cyQ6IE9ic2VydmFibGU8bnVtYmVyPjtcbiAgbG9hZGluZyQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gIEBWaWV3Q2hpbGRyZW4oV2lkZ2V0SW5zdGFuY2lhdG9yQ29tcG9uZW50KSBpbnN0YW5jaWF0b3JzPzogUXVlcnlMaXN0PFdpZGdldEluc3RhbmNpYXRvckNvbXBvbmVudD47XG4gIGRhdGFGZXRjaGluZyQ6IE9ic2VydmFibGU8c3RyaW5nW10+O1xuICBwYXJhbXM6IERhc2hib2FyZENlbGxQYXJhbXMgPSB7fSBhcyBEYXNoYm9hcmRDZWxsUGFyYW1zO1xuXG4gIGdldCB3aWRnZXRzSW5zdGFuY2VzKCkge1xuICAgIHJldHVybiB0aGlzLmluc3RhbmNpYXRvcnM/Lm1hcCgoaW5zdGFuY2lhdG9yKSA9PiBpbnN0YW5jaWF0b3IuaW5zdGFuY2lhdGVkQ29tcG9uZW50Lmluc3RhbmNlKSA/PyBbXTtcbiAgfVxuXG4gIEBJbnB1dCgpIHNldCBzdGF0aWNEYXNoYm9hcmQod2luZG93OiBEYXNoYm9hcmRNYW5pZmVzdCkge1xuICAgIHRoaXMuc3RhdGljRGFzaGJvYXJkJC5uZXh0KHdpbmRvdyk7XG4gIH1cblxuICBASW5wdXQoKSBDbG9zZU9uRHJhZ091dCA9IHRydWU7XG4gIEBJbnB1dCgpIGRpc3BsYXlPcHRpb25zPzogRGlzcGxheU9wdGlvbnM7XG5cbiAgQFZpZXdDaGlsZCgnZ3JpZCcpIGdyaWRSZWYhOiBFbGVtZW50UmVmO1xuICBwcml2YXRlIGNhbkNhbGN1bGF0ZVZpZXcgPSBmYWxzZTtcbiAgdGFyZ2V0SW5kZXhlcyQ6IE9ic2VydmFibGU8bnVtYmVyW10+O1xuICBkYXNoYm9hcmRQYXJhbXM6IERhc2hib2FyZENlbGxQYXJhbXMgPSB7XG4gICAgZ3JpZFdpZHRoOiAxLFxuICAgIGdyaWRIZWlnaHQ6IDEsXG4gICAgZ3JpZEdhcDogREVGQVVMVF9HQVBfUFgsXG4gICAgY29sdW1uczogREVGQVVMVF9DT0xVTU5TX05VTUJFUixcbiAgICBjZWxsV2lkdGg6IDEsXG4gICAgY2VsbEhlaWdodDogREVGQVVMVF9ST1dfSEVJR0hUX1BYLFxuICAgIHJvd3M6IERFRkFVTFRfUk9XU19OVU1CRVIsXG4gICAgb2Zmc2V0TGVmdDogMCxcbiAgICBvZmZzZXRUb3A6IDAsXG4gICAgbW9iaWxlTW9kZTogZmFsc2VcbiAgfTtcbiAgcHJpdmF0ZSBicmVha3BvaW50OiBudW1iZXIgPSAwO1xuICBAT3V0cHV0KCkgcm93SGVpZ2h0ID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG4gIEBPdXRwdXQoKSByb3dzID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG4gIGN1cnJlbnRseU1vZGlmaWVkTWFuaWZlc3Q6IFdpZGdldE1hbmlmZXN0IHwgbnVsbCA9IG51bGw7XG4gIGluaXRpYWxXaWRnZXRNYW5pZmVzdExpc3Q6IFdpZGdldE1hbmlmZXN0W10gPSBbXTtcbiAgbW92ZToge1xuICAgIGluaXRpYWxYOiBudW1iZXI7XG4gICAgaW5pdGlhbFk6IG51bWJlcjtcbiAgICBwcmV2aW91c1g6IG51bWJlcjtcbiAgICBwcmV2aW91c1k6IG51bWJlcjtcbiAgfSA9IHtcbiAgICBpbml0aWFsWDogLTEsXG4gICAgaW5pdGlhbFk6IC0xLFxuICAgIHByZXZpb3VzWDogLTEsXG4gICAgcHJldmlvdXNZOiAtMVxuICB9O1xuICBncmlkVGVtcGxhdGVSb3dzJDogT2JzZXJ2YWJsZTxzdHJpbmc+O1xuICBncmlkVGVtcGxhdGVDb2x1bW5zJDogT2JzZXJ2YWJsZTxzdHJpbmc+O1xuICBEYXNoYm9hcmRHcmlkTGF5b3V0ID0gRGFzaGJvYXJkR3JpZExheW91dDtcbiAgbGF5b3V0OiBEYXNoYm9hcmRHcmlkTGF5b3V0ID0gRGFzaGJvYXJkR3JpZExheW91dC5NQU5VQUw7XG4gIGJhY2tncm91bmRBcmVhJDogT2JzZXJ2YWJsZTxzdHJpbmc+O1xuICBwcml2YXRlIGNvbmZpcm1SZW1vdmVSZWY/OiBPdmVybGF5UmVmO1xuICBBcnJheTogYW55O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc3RvcmU6IFN0b3JlPGFueT4sIHByaXZhdGUgb3ZlcmxheTogT3ZlcmxheSwgcHJpdmF0ZSB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmxvYWRpbmckID0gdGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLmxvYWRpbmcpO1xuICAgIHRoaXMuZGF0YUZldGNoaW5nJCA9IHRoaXMuc3RvcmUuc2VsZWN0KFNlYXJjaFNlbGVjdG9ycy5zZWFyY2hMb2FkaW5nKS5waXBlKGRlbGF5KDEwKSk7XG4gICAgdGhpcy5tb2RlRWRpdGlvbiQgPSB0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMuZGFzaGJvYXJkRWRpdGlvbk1vZGUpO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICB0aGlzLm1vZGVFZGl0aW9uJC5zdWJzY3JpYmUoKG1vZGUpID0+IHtcbiAgICAgICAgdGhpcy5tb2RlRWRpdGlvbiA9IG1vZGU7XG4gICAgICAgIGlmICghbW9kZSkge1xuICAgICAgICAgIHRoaXMuY2xlYXJBY3Rpb25zKCk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcbiAgICB0aGlzLnRhcmdldEluZGV4ZXMkID0gdGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLnRhcmdldFRlbmFudHNJbmRleGVzKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLmRhc2hib2FyZENlbGxQYXJhbXMpLnN1YnNjcmliZSgocGFyYW1zKSA9PiAodGhpcy5kYXNoYm9hcmRQYXJhbXMgPSBwYXJhbXMpKVxuICAgICk7XG4gICAgdGhpcy53aW5kb3dNYW5pZmVzdCQgPSB0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMud2luZG93TWFuaWZlc3QpLnBpcGUoXG4gICAgICBjb21iaW5lTGF0ZXN0V2l0aCh0aGlzLnN0YXRpY0Rhc2hib2FyZCQpLFxuICAgICAgc3dpdGNoTWFwKChbd2luZG93TWFuaWZlc3QsIHN0YXRpY0Rhc2hib2FyZF0pID0+ICghc3RhdGljRGFzaGJvYXJkID8gb2Yod2luZG93TWFuaWZlc3QpIDogb2Yoc3RhdGljRGFzaGJvYXJkKSkpLFxuICAgICAgbWFwKChfd01hbmlmZXN0KSA9PiB7XG4gICAgICAgIGNvbnN0IHdNYW5pZmVzdCA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoX3dNYW5pZmVzdCkpO1xuICAgICAgICBpZiAod01hbmlmZXN0LmdyaWQ/LmxheW91dCAmJiB3TWFuaWZlc3QuZ3JpZC5sYXlvdXQgIT09IERhc2hib2FyZEdyaWRMYXlvdXQuTUFOVUFMKSB7XG4gICAgICAgICAgLy8gQ29tcGxldGUgd2l0aCBwbGFjZWhvbGRlcnNcbiAgICAgICAgICBjb25zdCBzaXplID0gV2lkZ2V0UGxhY2VtZW50VXRpbHMucGxhY2VzRm9yTGF5b3V0KHdNYW5pZmVzdC5ncmlkLmxheW91dCk7XG4gICAgICAgICAgY29uc3QgcGxhY2VzID0gV2lkZ2V0UGxhY2VtZW50VXRpbHMucGxhY2VtZW50T3B0aW9ucyhcbiAgICAgICAgICAgIHsgdHlwZTogJ2ZpbGxlcicsIGxheW91dDogeyB4OiAxLCB5OiAxLCB3aWR0aDogMSwgaGVpZ2h0OiAxIH0gfSxcbiAgICAgICAgICAgIHdNYW5pZmVzdC5ncmlkLmxheW91dCxcbiAgICAgICAgICAgIHdNYW5pZmVzdC5ncmlkXG4gICAgICAgICAgKTtcbiAgICAgICAgICBsZXQgYWRkZWQgPSB0cnVlO1xuICAgICAgICAgIHdoaWxlICh3TWFuaWZlc3Qud2lkZ2V0cy5sZW5ndGggPCBzaXplICYmIGFkZGVkKSB7XG4gICAgICAgICAgICBhZGRlZCA9IGZhbHNlO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwbGFjZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgY29uc3QgcG90ZW50aWFsID0geyAuLi5wbGFjZXNbaV0sIG9wdGlvbnM6IHsgaW5kZXg6IGkgfSB9O1xuICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgd01hbmlmZXN0LndpZGdldHNcbiAgICAgICAgICAgICAgICAgIC5tYXAoKHdpZGdldDogV2lkZ2V0TWFuaWZlc3QpID0+IFdpZGdldFBsYWNlbWVudFV0aWxzLmFyZURpc2pvaW50KHdpZGdldCwgcG90ZW50aWFsKSlcbiAgICAgICAgICAgICAgICAgIC5yZWR1Y2UoKGE6IGJvb2xlYW4sIGI6IGJvb2xlYW4pID0+IGEgJiYgYiwgdHJ1ZSlcbiAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgd01hbmlmZXN0LndpZGdldHMucHVzaChwb3RlbnRpYWwpO1xuICAgICAgICAgICAgICAgIGFkZGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gd01hbmlmZXN0O1xuICAgICAgfSksXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgocCwgYykgPT4gZXF1YWwocCwgYykpXG4gICAgKTtcbiAgICB0aGlzLm5vbkZpbGxlcldpZGdldHMkID0gdGhpcy53aW5kb3dNYW5pZmVzdCQucGlwZShcbiAgICAgIG1hcCgod01hbmlmZXN0KSA9PiB3TWFuaWZlc3Qud2lkZ2V0cy5maWx0ZXIoKHcpID0+IHcudHlwZSAhPT0gJ2ZpbGxlcicpLmxlbmd0aClcbiAgICApO1xuXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIHRoaXMuc3RhdGljRGFzaGJvYXJkJC5zdWJzY3JpYmUoKG1hbmlmZXN0KSA9PiB7XG4gICAgICAgIGlmICghIW1hbmlmZXN0KSB7XG4gICAgICAgICAgY29uc3QgZ2V0RGF0YUFjdGlvbnMgPSAoXG4gICAgICAgICAgICAoXG4gICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAuLi5uZXcgU2V0KFxuICAgICAgICAgICAgICAgICAgKG1hbmlmZXN0LndpZGdldHMgPz8gKFtdIGFzIFdpZGdldE1hbmlmZXN0W10pKVxuICAgICAgICAgICAgICAgICAgICAucmVkdWNlKChwLCBjKSA9PiBbLi4ucCwgY10sIFtdIGFzIFdpZGdldE1hbmlmZXN0W10pXG4gICAgICAgICAgICAgICAgICAgIC5tYXAoKHdpZE1hbmlmZXN0KSA9PiB3aWRNYW5pZmVzdC5kYXRhc291cmNlKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgXSBhcyAoc3RyaW5nIHwgc3RyaW5nW10pW11cbiAgICAgICAgICAgICkucmVkdWNlKChwLCBjKSA9PiBbLi4ucCwgLi4uKEFycmF5LmlzQXJyYXkoYykgPyBjIDogW2NdKV0sIFtdKSBhcyBzdHJpbmdbXVxuICAgICAgICAgICkubWFwKChyZXN1bHRTZXQpID0+IERhc2hib2FyZEFjdGlvbnMuYXNzZXJ0UmVzdWx0U2V0cyh7IGlkOiByZXN1bHRTZXQgfSkpO1xuXG4gICAgICAgICAgZ2V0RGF0YUFjdGlvbnMuZm9yRWFjaCgoYWN0aW9uKSA9PiB0aGlzLnN0b3JlLmRpc3BhdGNoKGFjdGlvbikpO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG5cbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKEZpZWxkQWN0aW9ucy5sb2FkKCkpO1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goQ2xhc3NBY3Rpb25zLmxvYWQoKSk7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChDYXRlZ29yeUFjdGlvbnMubG9hZCgpKTtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKENvbmZpZ0FjdGlvbnMuZ2V0TWFwU3R5bGVzKCkpO1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goRGF0YVNvdXJjZUFjdGlvbnMubG9hZCgpKTtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKFJlbGF0aW9uVHlwZXNBY3Rpb25zLmxvYWQoKSk7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChDb25maWdBY3Rpb25zLmxvYWRDdXN0b21pemF0aW9uKCkpO1xuXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIGZyb21FdmVudCh3aW5kb3csICdyZXNpemUnKVxuICAgICAgICAucGlwZShhdWRpdFRpbWUoMTAwKSlcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5jYWxjdWxhdGVWaWV3KCk7XG4gICAgICAgIH0pXG4gICAgKTtcblxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICBjb21iaW5lTGF0ZXN0KFt0aGlzLndpbmRvd01hbmlmZXN0JCwgdGhpcy5tb2RlRWRpdGlvbiRdKVxuICAgICAgICAucGlwZShhdWRpdFRpbWUoMTAwKSlcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5jYWxjdWxhdGVWaWV3KCk7XG4gICAgICAgIH0pXG4gICAgKTtcblxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICBmcm9tRXZlbnQod2luZG93LCAna2V5ZG93bicpXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIG1hcCgoJGV2ZW50OiBFdmVudCkgPT4gJGV2ZW50IGFzIEtleWJvYXJkRXZlbnQpLFxuICAgICAgICAgIGZpbHRlcigoJGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiAkZXZlbnQua2V5ID09PSAnTCcgJiYgJGV2ZW50LmN0cmxLZXkgJiYgJGV2ZW50LnNoaWZ0S2V5KVxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5zdG9yZS5kaXNwYXRjaChEYXNoYm9hcmRBY3Rpb25zLnRvZ2dsZUVkaXRpb25Nb2RlKHt9KSkpXG4gICAgKTtcblxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICBmcm9tRXZlbnQod2luZG93LCAnbW91c2V1cCcpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuY2xlYXJBY3Rpb25zKCk7XG4gICAgICB9KVxuICAgICk7XG5cbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoQ29uZmlnU2VsZWN0b3JzLmJyZWFrcG9pbnQpLnN1YnNjcmliZSgoYnApID0+IHtcbiAgICAgICAgdGhpcy5icmVha3BvaW50ID0gYnA7XG4gICAgICB9KVxuICAgICk7XG5cbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgdGhpcy53aW5kb3dNYW5pZmVzdCQuc3Vic2NyaWJlKChtYW5pZmVzdCkgPT4ge1xuICAgICAgICB0aGlzLm1hbmlmZXN0ID0gbWFuaWZlc3Q7XG4gICAgICB9KVxuICAgICk7XG5cbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLmdyaWRMYXlvdXQpLnN1YnNjcmliZSgobGF5b3V0KSA9PiB7XG4gICAgICAgIHRoaXMubGF5b3V0ID0gbGF5b3V0O1xuICAgICAgfSlcbiAgICApO1xuXG4gICAgdGhpcy5ncmlkVGVtcGxhdGVSb3dzJCA9IGNvbWJpbmVMYXRlc3QoW3RoaXMud2luZG93TWFuaWZlc3QkLCB0aGlzLnN0YWNrZWQkXSkucGlwZShcbiAgICAgIG1hcCgoW21hbmlmZXN0LCBzdGFja2VkXSkgPT5cbiAgICAgICAgdGhpcy5nZW5lcmF0ZVJvd3MoXG4gICAgICAgICAgc3RhY2tlZCAmJiB0aGlzLm1hbmlmZXN0XG4gICAgICAgICAgICA/IHRoaXMubWFuaWZlc3Q/LndpZGdldHMubWFwKCh3bSkgPT4gd20ubGF5b3V0LmhlaWdodCkucmVkdWNlKCh3bTEsIHdtMikgPT4gd20xICsgd20yLCAwKVxuICAgICAgICAgICAgOiBtYW5pZmVzdC5ncmlkPy5yb3dzID8/IERFRkFVTFRfUk9XU19OVU1CRVJcbiAgICAgICAgKVxuICAgICAgKVxuICAgICk7XG5cbiAgICB0aGlzLmdyaWRUZW1wbGF0ZUNvbHVtbnMkID0gY29tYmluZUxhdGVzdChbdGhpcy53aW5kb3dNYW5pZmVzdCQsIHRoaXMuc3RhY2tlZCRdKS5waXBlKFxuICAgICAgbWFwKChbbWFuaWZlc3QsIHN0YWNrZWRdKSA9PiB0aGlzLmdlbmVyYXRlQ29sdW1ucyhzdGFja2VkID8gMSA6IG1hbmlmZXN0LmdyaWQ/LmNvbHVtbnMgfHwgREVGQVVMVF9DT0xVTU5TX05VTUJFUikpXG4gICAgKTtcblxuICAgIHRoaXMuYmFja2dyb3VuZEFyZWEkID0gY29tYmluZUxhdGVzdChbdGhpcy53aW5kb3dNYW5pZmVzdCQsIHRoaXMuc3RhY2tlZCRdKS5waXBlKFxuICAgICAgbWFwKChbbWFuaWZlc3QsIHN0YWNrZWRdKSA9PlxuICAgICAgICAhc3RhY2tlZFxuICAgICAgICAgID8gYDMvMy8keyhtYW5pZmVzdC5ncmlkPy5yb3dzID8/IERFRkFVTFRfUk9XU19OVU1CRVIpIC0gMX0vJHtcbiAgICAgICAgICAgICAgKG1hbmlmZXN0LmdyaWQ/LmNvbHVtbnMgPz8gREVGQVVMVF9DT0xVTU5TX05VTUJFUikgLSAxXG4gICAgICAgICAgICB9YFxuICAgICAgICAgIDogYDMvMS8keyhtYW5pZmVzdC5ncmlkPy5jb2x1bW5zID8/IERFRkFVTFRfQ09MVU1OU19OVU1CRVIpIC0gMX0vMWBcbiAgICAgIClcbiAgICApO1xuXG4gICAgdGhpcy5zZXBhcmF0b3JzJCA9IHRoaXMuc3RvcmVcbiAgICAgIC5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLmdyaWRMYXlvdXQpXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKChsYXlvdXQpID0+XG4gICAgICAgICAgbGF5b3V0ID09PSBEYXNoYm9hcmRHcmlkTGF5b3V0Lk1BTlVBTFxuICAgICAgICAgICAgPyBbXVxuICAgICAgICAgICAgOiBXaWRnZXRQbGFjZW1lbnRVdGlscy5nZXRMYXlvdXRTaXplKGxheW91dCwgeyByb3dzOiAxLCBjb2x1bW5zOiAxIH0pXG4gICAgICAgIClcbiAgICAgICk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICBpZiAodGhpcy5kaXNwbGF5T3B0aW9ucylcbiAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goXG4gICAgICAgIERhc2hib2FyZEFjdGlvbnMudXBkYXRlRGlzcGxheU9wdGlvbnMoeyBtb2RlOiBEaXNwbGF5TW9kZS5DVVNUT00sIGN1c3RvbURpc3BsYXk6IHRoaXMuZGlzcGxheU9wdGlvbnMgfSlcbiAgICAgICk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgdGhpcy5jYW5DYWxjdWxhdGVWaWV3ID0gdHJ1ZTtcbiAgfVxuXG4gIC8qKipcbiAgICogTWFuYWdlIGRpc3BsYXlcbiAgICovXG5cbiAgY2FsY3VsYXRlVmlldygpIHtcbiAgICBpZiAodGhpcy5jYW5DYWxjdWxhdGVWaWV3KSB7XG4gICAgICBsZXQgZWxlbWVudCA9IHRoaXMuZ3JpZFJlZi5uYXRpdmVFbGVtZW50O1xuICAgICAgd2hpbGUgKGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0ID09PSAwICYmICEhZWxlbWVudC5wYXJlbnRFbGVtZW50KSB7XG4gICAgICAgIGVsZW1lbnQgPSBlbGVtZW50LnBhcmVudEVsZW1lbnQ7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGdyaWRXaWR0aCA9ICg8SFRNTEVsZW1lbnQ+ZWxlbWVudCkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGg7XG4gICAgICBjb25zdCBtb2JpbGVNb2RlID0gZ3JpZFdpZHRoIDwgdGhpcy5icmVha3BvaW50O1xuICAgICAgdGhpcy5zdGFja2VkJC5uZXh0KHRoaXMuZGFzaGJvYXJkUGFyYW1zLm1vYmlsZU1vZGUgJiYgIXRoaXMubW9kZUVkaXRpb24pO1xuICAgICAgY29uc3Qgcm93cyA9ICF0aGlzLmRpc3BsYXlJc1N0YWNrZWRcbiAgICAgICAgPyAoISF0aGlzLm1hbmlmZXN0ICYmICEhdGhpcy5tYW5pZmVzdC5ncmlkICYmIHRoaXMubWFuaWZlc3QuZ3JpZC5yb3dzKSB8fCBERUZBVUxUX1JPV1NfTlVNQkVSXG4gICAgICAgIDogdGhpcy5tYW5pZmVzdD8ud2lkZ2V0cy5yZWR1Y2UoKHA6IG51bWJlciwgYzogV2lkZ2V0TWFuaWZlc3QpID0+IHAgKyBjLmxheW91dC5oZWlnaHQsIDApID8/IDE7XG5cbiAgICAgIHRoaXMucGFyYW1zID0ge1xuICAgICAgICBncmlkV2lkdGgsXG4gICAgICAgIC8vIENhbGN1bGF0ZSBoZWlnaHQgdG8gcGFyZW50IHRoZSBwYXJlbnQnc1xuICAgICAgICBncmlkSGVpZ2h0OiBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodCxcbiAgICAgICAgZ3JpZEdhcDogMSxcbiAgICAgICAgY29sdW1uczogKCEhdGhpcy5tYW5pZmVzdCAmJiAhIXRoaXMubWFuaWZlc3QuZ3JpZCAmJiB0aGlzLm1hbmlmZXN0LmdyaWQuY29sdW1ucykgfHwgREVGQVVMVF9DT0xVTU5TX05VTUJFUixcbiAgICAgICAgY2VsbEhlaWdodDogMSxcbiAgICAgICAgcm93cyxcbiAgICAgICAgY2VsbFdpZHRoOiAwLFxuICAgICAgICBvZmZzZXRMZWZ0OiB0aGlzLmdyaWRSZWYubmF0aXZlRWxlbWVudC5vZmZzZXRMZWZ0LFxuICAgICAgICBvZmZzZXRUb3A6IHRoaXMuZ3JpZFJlZi5uYXRpdmVFbGVtZW50Lm9mZnNldFRvcCxcbiAgICAgICAgbW9iaWxlTW9kZVxuICAgICAgfTtcbiAgICAgIHRoaXMucGFyYW1zLmdyaWRHYXAgPVxuICAgICAgICB0aGlzLnBhcmFtcy5yb3dzICogdGhpcy5wYXJhbXMuY2VsbEhlaWdodCA8IHRoaXMucGFyYW1zLmdyaWRIZWlnaHRcbiAgICAgICAgICA/ICEhdGhpcy5tYW5pZmVzdCAmJiAhIXRoaXMubWFuaWZlc3QuZ3JpZFxuICAgICAgICAgICAgPyB0aGlzLm1hbmlmZXN0LmdyaWQuZ2FwIHx8IERFRkFVTFRfR0FQX1BYXG4gICAgICAgICAgICA6IERFRkFVTFRfR0FQX1BYXG4gICAgICAgICAgOiAwO1xuICAgICAgdGhpcy5wYXJhbXMuY2VsbEhlaWdodCA9XG4gICAgICAgICh0aGlzLnBhcmFtcy5ncmlkSGVpZ2h0IC0gKHRoaXMucGFyYW1zLnJvd3MgLSAxKSAqIHRoaXMucGFyYW1zLmdyaWRHYXApIC8gdGhpcy5wYXJhbXMucm93cztcbiAgICAgIHRoaXMucGFyYW1zLmNlbGxXaWR0aCA9XG4gICAgICAgICh0aGlzLnBhcmFtcy5ncmlkV2lkdGggLSAodGhpcy5wYXJhbXMuY29sdW1ucyAtIDEpICogdGhpcy5wYXJhbXMuZ3JpZEdhcCkgLyB0aGlzLnBhcmFtcy5jb2x1bW5zO1xuXG4gICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKERhc2hib2FyZEFjdGlvbnMudXBkYXRlRGFzaGJvYXJkUGFyYW1zKHsgcGFyYW1zOiB0aGlzLnBhcmFtcyB9KSk7XG5cbiAgICAgIHRoaXMucm93cy5uZXh0KHRoaXMucGFyYW1zLnJvd3MpO1xuICAgICAgdGhpcy5yb3dIZWlnaHQubmV4dCh0aGlzLnBhcmFtcy5jZWxsSGVpZ2h0KTtcbiAgICB9XG4gIH1cblxuICBnZXQgZGlzcGxheUlzU3RhY2tlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5zdGFja2VkJC5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgZ3JpZENvbHVtbihsYXlvdXQ6IFdpZGdldExheW91dCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMuZGlzcGxheUlzU3RhY2tlZCB8fCAhbGF5b3V0KSB7XG4gICAgICByZXR1cm4gJzEgLyAxJztcbiAgICB9XG4gICAgaWYgKGxheW91dC53aWR0aCA+IDEpIHtcbiAgICAgIHJldHVybiBgJHtNYXRoLm1pbihsYXlvdXQueCwgdGhpcy5kYXNoYm9hcmRQYXJhbXMuY29sdW1ucyAtIGxheW91dC53aWR0aCArIDEpfSAvICR7TWF0aC5taW4oXG4gICAgICAgIGxheW91dC54ICsgbGF5b3V0LndpZHRoLFxuICAgICAgICB0aGlzLmRhc2hib2FyZFBhcmFtcy5jb2x1bW5zICsgMVxuICAgICAgKX1gO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gYCR7bGF5b3V0Lnh9YDtcbiAgICB9XG4gIH1cblxuICBncmlkUm93KGxheW91dDogV2lkZ2V0TGF5b3V0KTogc3RyaW5nIHtcbiAgICBpZiAoIWxheW91dCkge1xuICAgICAgcmV0dXJuICcxJztcbiAgICB9XG4gICAgaWYgKHRoaXMuZGlzcGxheUlzU3RhY2tlZCkge1xuICAgICAgY29uc3QgcHJldmlvdXNIZWlnaHQgPSB0aGlzLm1hbmlmZXN0Py53aWRnZXRzXG4gICAgICAgIC5maWx0ZXIoKHdtOiBXaWRnZXRNYW5pZmVzdCkgPT4gKHdtLmxheW91dC55ID09PSBsYXlvdXQueSAmJiB3bS5sYXlvdXQueCA8IGxheW91dC54KSB8fCB3bS5sYXlvdXQueSA8IGxheW91dC55KVxuICAgICAgICAucmVkdWNlKChwOiBudW1iZXIsIGM6IFdpZGdldE1hbmlmZXN0KSA9PiBwICsgYy5sYXlvdXQuaGVpZ2h0LCAxKTtcbiAgICAgIHJldHVybiBgJHtwcmV2aW91c0hlaWdodCA/PyAxfSAvICR7KHByZXZpb3VzSGVpZ2h0ID8/IDEpICsgbGF5b3V0LmhlaWdodH1gO1xuICAgIH1cbiAgICBpZiAobGF5b3V0LmhlaWdodCA+IDEpIHtcbiAgICAgIHJldHVybiBgJHtNYXRoLm1heCgxLCBNYXRoLm1pbihsYXlvdXQueSwgdGhpcy5kYXNoYm9hcmRQYXJhbXMucm93cyAtIGxheW91dC5oZWlnaHQgKyAxKSl9IC8gJHtNYXRoLm1pbihcbiAgICAgICAgbGF5b3V0LnkgKyBsYXlvdXQuaGVpZ2h0LFxuICAgICAgICB0aGlzLmRhc2hib2FyZFBhcmFtcy5yb3dzICsgMVxuICAgICAgKX1gO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gYCR7bGF5b3V0Lnl9YDtcbiAgICB9XG4gIH1cblxuICBnZW5lcmF0ZVJvd3Mocm93czogbnVtYmVyKTogc3RyaW5nIHtcbiAgICByZXR1cm4gQXJyYXkocm93cykuZmlsbCgnMWZyJykuam9pbignICcpO1xuICB9XG5cbiAgZ2VuZXJhdGVDb2x1bW5zKGNvbHVtbnM6IG51bWJlcik6IHN0cmluZyB7XG4gICAgcmV0dXJuIEFycmF5KGNvbHVtbnMpLmZpbGwoJzFmcicpLmpvaW4oJyAnKTtcbiAgfVxuXG4gIC8qKipcbiAgICogRGlyZWN0IGFjdGlvbnMgb24gd2lkZ2V0c1xuICAgKi9cblxuICByZW1vdmUoaTogbnVtYmVyKSB7XG4gICAgY29uc3QgbGlzdFdpZGdldE1hbmlmZXN0cyA9IFsuLi4odGhpcy5tYW5pZmVzdCB8fCB7IHdpZGdldHM6IFtdIH0pLndpZGdldHNdO1xuICAgIGxpc3RXaWRnZXRNYW5pZmVzdHMuc3BsaWNlKGksIDEpLmZpbHRlcigod2lkZ2V0KSA9PiB3aWRnZXQudHlwZSAhPT0gJ2ZpbGxlcicpO1xuXG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChcbiAgICAgIERhc2hib2FyZEFjdGlvbnMudXBkYXRlRGFzaGJvYXJkTWFuaWZlc3Qoe1xuICAgICAgICBtYW5pZmVzdDoge1xuICAgICAgICAgIC4uLnRoaXMubWFuaWZlc3QsXG4gICAgICAgICAgd2lkZ2V0czogbGlzdFdpZGdldE1hbmlmZXN0c1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBtb3ZlSW5OZXdXaW5kb3cod2lkZ2V0SW5kZXg6IG51bWJlciwgdGFyZ2V0SW5kZXg6IG51bWJlcikge1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goRGFzaGJvYXJkQWN0aW9ucy5tb3ZlV2lkZ2V0KHsgd2lkZ2V0SW5kZXgsIHRhcmdldEluZGV4IH0pKTtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKERhc2hib2FyZEFjdGlvbnMudG9nZ2xlRWRpdGlvbk1vZGUoeyBmb3JjZTogZmFsc2UgfSkpO1xuICB9XG5cbiAgbWF4aW1pemUod2lkZ2V0SW5kZXg6IG51bWJlcikge1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goRGFzaGJvYXJkQWN0aW9ucy5tYXhpbWl6ZVdpZGdldCh7IHdpZGdldEluZGV4IH0pKTtcbiAgfVxuXG4gIC8qKipcbiAgICogTWFuYWdlIGRyYWcgbiBkcm9wLCBtb3ZlLCByZXNpemVcbiAgICovXG5cbiAgcHJlcGFyZU1vZGlmaWNhdGlvbigkZXZlbnQ6IE1vdXNlRXZlbnQsIGluZGV4TWFuaWZlc3Q6IG51bWJlcikge1xuICAgIHRoaXMubW92ZS5pbml0aWFsWCA9ICRldmVudC5jbGllbnRYO1xuICAgIHRoaXMubW92ZS5pbml0aWFsWSA9ICRldmVudC5jbGllbnRZO1xuICAgIHRoaXMuaW5pdGlhbFdpZGdldE1hbmlmZXN0TGlzdCA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoKHRoaXMubWFuaWZlc3QgfHwgeyB3aWRnZXRzOiBbXSB9KS53aWRnZXRzKSk7XG4gICAgdGhpcy5jdXJyZW50bHlNb2RpZmllZE1hbmlmZXN0ID0gdGhpcy5pbml0aWFsV2lkZ2V0TWFuaWZlc3RMaXN0LnNwbGljZShpbmRleE1hbmlmZXN0LCAxKVswXTtcbiAgICAvLyBjb25zb2xlLmxvZygncHJlcGFyZScsIHRoaXMuY3VycmVudGx5TW9kaWZpZWRNYW5pZmVzdCwgdGhpcy5pbml0aWFsV2lkZ2V0TWFuaWZlc3RMaXN0KTtcbiAgfVxuXG4gIHN0YXJ0UmVzaXplKCRldmVudDogTW91c2VFdmVudCwgaW5kZXhNYW5pZmVzdDogbnVtYmVyLCBkaXJlY3Rpb246IHN0cmluZykge1xuICAgIHRoaXMuYWN0aW9uVHlwZSA9IGRpcmVjdGlvbjtcbiAgICB0aGlzLnByZXBhcmVNb2RpZmljYXRpb24oJGV2ZW50LCBpbmRleE1hbmlmZXN0KTtcbiAgICAvLyBjb25zb2xlLmxvZygnc3RhcnQgcmVzaXplJywgdGhpcy5jdXJyZW50bHlNb2RpZmllZE1hbmlmZXN0LCB0aGlzLmluaXRpYWxXaWRnZXRNYW5pZmVzdExpc3QpO1xuICB9XG5cbiAgZHJhZ1N0YXJ0KCRldmVudDogRHJhZ0V2ZW50LCBpbmRleE1hbmlmZXN0OiBudW1iZXIpIHtcbiAgICB0aGlzLmFjdGlvblR5cGUgPSAnbW92ZSc7XG4gICAgdGhpcy5wcmVwYXJlTW9kaWZpY2F0aW9uKCRldmVudCwgaW5kZXhNYW5pZmVzdCk7XG4gICAgRGFzaGJvYXJkQ29tcG9uZW50LmFkZFRyYW5zZmVyTWFuaWZlc3RNZXRhZGF0YSgkZXZlbnQsIHRoaXMuY3VycmVudGx5TW9kaWZpZWRNYW5pZmVzdCA/PyAoe30gYXMgV2lkZ2V0TWFuaWZlc3QpKTtcbiAgICAvLyBjb25zb2xlLmxvZygnc3RhcnQgbW92ZScsIHRoaXMuY3VycmVudGx5TW9kaWZpZWRNYW5pZmVzdCwgdGhpcy5pbml0aWFsV2lkZ2V0TWFuaWZlc3RMaXN0KTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGFkZFRyYW5zZmVyTWFuaWZlc3RNZXRhZGF0YSgkZXZlbnQ6IERyYWdFdmVudCwgbWFuaWZlc3Q6IFdpZGdldE1hbmlmZXN0KSB7XG4gICAgaWYgKCEhJGV2ZW50ICYmICEhJGV2ZW50LmRhdGFUcmFuc2ZlciAmJiAhJGV2ZW50LmRhdGFUcmFuc2Zlci50eXBlcy5pbmNsdWRlcyhNSU1FX1RZUEVfV0lER0VUX01BTklGRVNUKSkge1xuICAgICAgJGV2ZW50LmRhdGFUcmFuc2Zlci5zZXREYXRhKE1JTUVfVFlQRV9XSURHRVRfTUFOSUZFU1QsIEpTT04uc3RyaW5naWZ5KG1hbmlmZXN0KSk7XG4gICAgICAkZXZlbnQuZGF0YVRyYW5zZmVyLnNldERhdGEoTUlNRV9UWVBFX1dJREdFVF9UWVBFICsgbWFuaWZlc3QudHlwZSwgJ3VudXNlZCcpO1xuICAgICAgLy8gUGFzc2luZyB3aWRnZXQgc2l6ZSBhcyBhIG1pbWUgdHlwZSwgc28gdGhhdCB3ZSBjYW4gYnlwYXNzIHNlY3VyaXR5IGZvciBwbGFjZWhvbGRlciBzaXplIGF0IHRoZSBhcnJpdmFsIG9mIHRoZSBkcmFnXG4gICAgICAkZXZlbnQuZGF0YVRyYW5zZmVyLnNldERhdGEoXG4gICAgICAgIE1JTUVfVFlQRV9XSURHRVRfU0laRSArIGAke21hbmlmZXN0LmxheW91dC53aWR0aH0tJHttYW5pZmVzdC5sYXlvdXQuaGVpZ2h0fWAsXG4gICAgICAgICd1c2VsZXNzJyAvLyBkYXRhIGlzIGluIHRoZSBtaW1lIHR5cGVcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgZHJhZ0VudGVyKCRldmVudDogRHJhZ0V2ZW50LCBmb3JjZTogYm9vbGVhbiA9IGZhbHNlKSB7XG4gICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgY29uc3QgdHlwZXMgPSAoJGV2ZW50LmRhdGFUcmFuc2ZlciB8fCB7IHR5cGVzOiBbJyddIH0pLnR5cGVzO1xuXG4gICAgaWYgKHR5cGVzLmluY2x1ZGVzKE1JTUVfVFlQRV9XSURHRVRfTUFOSUZFU1QpKSB7XG4gICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKERhc2hib2FyZEFjdGlvbnMudG9nZ2xlRWRpdGlvbk1vZGUoeyBmb3JjZTogdHJ1ZSB9KSk7XG4gICAgICB0aGlzLmFjdGlvblR5cGUgPSAnbW92ZSc7XG4gICAgfVxuICB9XG5cbiAgY2hlY2tGb3JEcmFnRW50ZXIoJGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgaWYgKCF0aGlzLmN1cnJlbnRseU1vZGlmaWVkTWFuaWZlc3QpIHtcbiAgICAgIC8vIGNyZWF0ZSBwbGFjZWhvbGRlciBhcyBhIGRyYWcgZW50ZXJlZCB0aGUgY29tcG9uZW50LCBnbyBpbnRvIGVkaXRpb24gbW9kZSBhbmQgbW92ZSBhY3Rpb24gaWYgaXQncyBhIHdpZGdldCBiZWluZyBkcmFnZ2VkXG4gICAgICBjb25zdCB0eXBlcyA9ICgoJGV2ZW50IGFzIERyYWdFdmVudCkuZGF0YVRyYW5zZmVyIHx8IHsgdHlwZXM6IFsnJ10gfSkudHlwZXM7XG4gICAgICBpZiAodHlwZXMuaW5jbHVkZXMoTUlNRV9UWVBFX1dJREdFVF9NQU5JRkVTVCkpIHtcbiAgICAgICAgdGhpcy5hY3Rpb25UeXBlID0gJ21vdmUnO1xuICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKERhc2hib2FyZEFjdGlvbnMudG9nZ2xlRWRpdGlvbk1vZGUoeyBmb3JjZTogdHJ1ZSB9KSk7XG5cbiAgICAgICAgLy8gT24gZHJhZyBlbnRlciwgd2Ugb25seSBjYW4gcHV0IGEgcGxhY2Vob2xkZXIsIHNpbmNlIGZvciBzZWN1cml0eSByZWFzb25zLCB0aGUgY29udGVudCBvZiB0aGUgZGF0YS10cmFuc2ZlciBpcyBub3QgYXZhaWxhYmxlXG4gICAgICAgIHRoaXMubW92ZS5pbml0aWFsWCA9IHRoaXMuZGFzaGJvYXJkUGFyYW1zLm9mZnNldExlZnQ7XG4gICAgICAgIHRoaXMubW92ZS5pbml0aWFsWSA9IHRoaXMuZGFzaGJvYXJkUGFyYW1zLm9mZnNldFRvcDtcbiAgICAgICAgY29uc3QgdGFyZ2V0ID0gdGhpcy5nZXRUYXJnZXQoJGV2ZW50LCBmYWxzZSk7XG4gICAgICAgIHRoaXMuY3VycmVudGx5TW9kaWZpZWRNYW5pZmVzdCA9IHtcbiAgICAgICAgICB0eXBlOiAncGxhY2Vob2xkZXInLFxuICAgICAgICAgIGxheW91dDogeyB4OiB0YXJnZXQ/LnggPz8gMCwgeTogdGFyZ2V0Py55ID8/IDAsIHdpZHRoOiAxLCBoZWlnaHQ6IDEgfVxuICAgICAgICB9O1xuICAgICAgICB0aGlzLmluaXRpYWxXaWRnZXRNYW5pZmVzdExpc3QgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KCh0aGlzLm1hbmlmZXN0IHx8IHsgd2lkZ2V0czogW10gfSkud2lkZ2V0cykpO1xuICAgICAgICAvLyBjb25zb2xlLmxvZygnY3JlYXRlIHBsYWNlaG9sZGVyJywgdGhpcy5jdXJyZW50bHlNb2RpZmllZE1hbmlmZXN0LCB0aGlzLmluaXRpYWxXaWRnZXRNYW5pZmVzdExpc3QpO1xuXG4gICAgICAgIC8vIFdlIHBhc3NlZCB3aWRnZXQgc2l6ZSBhcyBhIG1pbWV0eXBlIHNvIHRoYXQgd2UgY2FuIHN0aWxsIHJlYWQgaXQgd2l0aG91dCBzZWN1cml0eSBpc3N1ZXNcbiAgICAgICAgY29uc3Qgd2lkZ2V0U2l6ZU1pbWVUeXBlID0gdHlwZXMuZmluZCgodHlwZSkgPT4gdHlwZS5pbmNsdWRlcyhNSU1FX1RZUEVfV0lER0VUX1NJWkUpKTtcbiAgICAgICAgaWYgKCEhd2lkZ2V0U2l6ZU1pbWVUeXBlKSB7XG4gICAgICAgICAgY29uc3QgW18sIF8yLCB3LCBoXSA9IHdpZGdldFNpemVNaW1lVHlwZS5zcGxpdCgnLScpO1xuICAgICAgICAgIHRoaXMuY3VycmVudGx5TW9kaWZpZWRNYW5pZmVzdC5sYXlvdXQud2lkdGggPSBwYXJzZUludCh3LCAxMCk7XG4gICAgICAgICAgdGhpcy5jdXJyZW50bHlNb2RpZmllZE1hbmlmZXN0LmxheW91dC5oZWlnaHQgPSBwYXJzZUludChoLCAxMCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gVXNlIGdyaWQgc2l6ZVxuICAgICAgICAgIGNvbnN0IGxheW91dCA9IFdpZGdldFBsYWNlbWVudFV0aWxzLmdldExheW91dFNpemUodGhpcy5sYXlvdXQsIHRoaXMuZGFzaGJvYXJkUGFyYW1zKVtcbiAgICAgICAgICAgIHRoaXMuaW5pdGlhbFdpZGdldE1hbmlmZXN0TGlzdC5sZW5ndGhcbiAgICAgICAgICBdO1xuICAgICAgICAgIHRoaXMuY3VycmVudGx5TW9kaWZpZWRNYW5pZmVzdC5sYXlvdXQud2lkdGggPSBsYXlvdXQud2lkdGg7XG4gICAgICAgICAgdGhpcy5jdXJyZW50bHlNb2RpZmllZE1hbmlmZXN0LmxheW91dC5oZWlnaHQgPSBsYXlvdXQuaGVpZ2h0O1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gV2UgcGFzc2VkIHRoZSB0eXBlIGFzIGEgaGVhZGVyIG5hbWUgc28gdGhhdCB3ZSBjYW4gc3RpbGwgYWNjZXNzIGl0IHdpdGhvdXQgc2VjdXJpdHkgaXNzdWVzXG4gICAgICAgIGNvbnN0IHdpZGdldFR5cGUgPSB0eXBlcy5maW5kKCh0eXBlKSA9PiB0eXBlLmluY2x1ZGVzKE1JTUVfVFlQRV9XSURHRVRfVFlQRSkpO1xuICAgICAgICBpZiAoISF3aWRnZXRUeXBlKSB7XG4gICAgICAgICAgY29uc3QgW18sIF8yLCB0eXBlXSA9IHdpZGdldFR5cGUuc3BsaXQoJy0nKTtcbiAgICAgICAgICB0aGlzLmN1cnJlbnRseU1vZGlmaWVkTWFuaWZlc3QudHlwZSA9IHR5cGU7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBSZXNldCBpbml0aWFsIHBvc2l0aW9uIGZvciB0aGUgb25lIHdlIGp1c3QgY2FsY3VsYXRlZCwgc28gd2UgY2FuIGNvbnRpbnVlIHByb3Blcmx5IG1vdmUgdGhlIHdpZGdldFxuICAgICAgICB0aGlzLm1vdmUuaW5pdGlhbFggPSAkZXZlbnQucGFnZVg7XG4gICAgICAgIHRoaXMubW92ZS5pbml0aWFsWSA9ICRldmVudC5wYWdlWTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBnZXRUYXJnZXQoJGV2ZW50OiBNb3VzZUV2ZW50LCBvcHRpbWl6ZSA9IHRydWUpIHtcbiAgICBjb25zdCBkWCA9ICRldmVudC5wYWdlWCAtIHRoaXMubW92ZS5pbml0aWFsWDtcbiAgICBjb25zdCBkWSA9ICRldmVudC5wYWdlWSAtIHRoaXMubW92ZS5pbml0aWFsWTtcblxuICAgIGNvbnN0IHRhcmdldCA9IHtcbiAgICAgIHg6XG4gICAgICAgIGRYID09PSAwXG4gICAgICAgICAgPyAwXG4gICAgICAgICAgOiBNYXRoLnJvdW5kKFxuICAgICAgICAgICAgICAoKGRYIC8gTWF0aC5hYnMoZFgpKSAqIChNYXRoLmFicyhkWCkgLSAwLjUgKiB0aGlzLmRhc2hib2FyZFBhcmFtcy5jZWxsV2lkdGgpKSAvXG4gICAgICAgICAgICAgICAgKHRoaXMuZGFzaGJvYXJkUGFyYW1zLmNlbGxXaWR0aCArIHRoaXMuZGFzaGJvYXJkUGFyYW1zLmdyaWRHYXApXG4gICAgICAgICAgICApLFxuICAgICAgeTpcbiAgICAgICAgZFkgPT09IDBcbiAgICAgICAgICA/IDBcbiAgICAgICAgICA6IE1hdGgucm91bmQoXG4gICAgICAgICAgICAgICgoZFkgLyBNYXRoLmFicyhkWSkpICogKE1hdGguYWJzKGRZKSAtIDAuNSAqIHRoaXMuZGFzaGJvYXJkUGFyYW1zLmNlbGxIZWlnaHQpKSAvXG4gICAgICAgICAgICAgICAgKHRoaXMuZGFzaGJvYXJkUGFyYW1zLmNlbGxIZWlnaHQgKyB0aGlzLmRhc2hib2FyZFBhcmFtcy5ncmlkR2FwKVxuICAgICAgICAgICAgKVxuICAgIH07XG5cbiAgICBpZiAoIW9wdGltaXplIHx8IHRhcmdldC54ICE9PSB0aGlzLm1vdmUucHJldmlvdXNYIHx8IHRhcmdldC55ICE9PSB0aGlzLm1vdmUucHJldmlvdXNZKSB7XG4gICAgICB0aGlzLm1vdmUucHJldmlvdXNYID0gdGFyZ2V0Lng7XG4gICAgICB0aGlzLm1vdmUucHJldmlvdXNZID0gdGFyZ2V0Lnk7XG4gICAgICByZXR1cm4gdGFyZ2V0O1xuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgbW92aW5nTW91c2UoJGV2ZW50OiBNb3VzZUV2ZW50LCBvcHRpbWl6ZSA9IHRydWUpIHtcbiAgICBpZiAodGhpcy5tb2RlRWRpdGlvbiAmJiAhIXRoaXMuYWN0aW9uVHlwZSkge1xuICAgICAgY29uc3QgdGFyZ2V0ID0gdGhpcy5nZXRUYXJnZXQoJGV2ZW50LCBvcHRpbWl6ZSk7XG4gICAgICBpZiAodGFyZ2V0ICE9PSBudWxsKSB7XG4gICAgICAgIHRoaXMuY2hlY2tGb3JEcmFnRW50ZXIoJGV2ZW50KTtcbiAgICAgICAgY29uc3QgY2FuZGlkYXRlV2lkZ2V0ID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLmN1cnJlbnRseU1vZGlmaWVkTWFuaWZlc3QpKTtcblxuICAgICAgICBzd2l0Y2ggKHRoaXMuYWN0aW9uVHlwZSkge1xuICAgICAgICAgIGNhc2UgJ3Jlc2l6ZS1udyc6XG4gICAgICAgICAgICBpZiAoY2FuZGlkYXRlV2lkZ2V0LmxheW91dC54ICsgdGFyZ2V0LnggPiAwICYmIGNhbmRpZGF0ZVdpZGdldC5sYXlvdXQuaGVpZ2h0IC0gdGFyZ2V0LnkgPiAwKSB7XG4gICAgICAgICAgICAgIGNhbmRpZGF0ZVdpZGdldC5sYXlvdXQueCArPSB0YXJnZXQueDtcbiAgICAgICAgICAgICAgY2FuZGlkYXRlV2lkZ2V0LmxheW91dC55ICs9IHRhcmdldC55O1xuICAgICAgICAgICAgICBjYW5kaWRhdGVXaWRnZXQubGF5b3V0LndpZHRoIC09IHRhcmdldC54O1xuICAgICAgICAgICAgICBjYW5kaWRhdGVXaWRnZXQubGF5b3V0LmhlaWdodCAtPSB0YXJnZXQueTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ3Jlc2l6ZS1zdyc6XG4gICAgICAgICAgICBpZiAoY2FuZGlkYXRlV2lkZ2V0LmxheW91dC53aWR0aCAtIHRhcmdldC54ID4gMCkge1xuICAgICAgICAgICAgICBjYW5kaWRhdGVXaWRnZXQubGF5b3V0LnggKz0gdGFyZ2V0Lng7XG4gICAgICAgICAgICAgIGNhbmRpZGF0ZVdpZGdldC5sYXlvdXQud2lkdGggLT0gdGFyZ2V0Lng7XG4gICAgICAgICAgICAgIGNhbmRpZGF0ZVdpZGdldC5sYXlvdXQuaGVpZ2h0ICs9IHRhcmdldC55O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAncmVzaXplLW5lJzpcbiAgICAgICAgICAgIGlmIChjYW5kaWRhdGVXaWRnZXQubGF5b3V0LmhlaWdodCAtIHRhcmdldC55ID4gMCkge1xuICAgICAgICAgICAgICBjYW5kaWRhdGVXaWRnZXQubGF5b3V0LnkgKz0gdGFyZ2V0Lnk7XG4gICAgICAgICAgICAgIGNhbmRpZGF0ZVdpZGdldC5sYXlvdXQud2lkdGggKz0gdGFyZ2V0Lng7XG4gICAgICAgICAgICAgIGNhbmRpZGF0ZVdpZGdldC5sYXlvdXQuaGVpZ2h0IC09IHRhcmdldC55O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAncmVzaXplLXNlJzpcbiAgICAgICAgICAgIGNhbmRpZGF0ZVdpZGdldC5sYXlvdXQud2lkdGggKz0gdGFyZ2V0Lng7XG4gICAgICAgICAgICBjYW5kaWRhdGVXaWRnZXQubGF5b3V0LmhlaWdodCArPSB0YXJnZXQueTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ21vdmUnOlxuICAgICAgICAgICAgY29uc3QgY3VycmVudE1heFggPVxuICAgICAgICAgICAgICBNYXRoLm1heChcbiAgICAgICAgICAgICAgICB0aGlzLm1hbmlmZXN0Py5ncmlkPy5jb2x1bW5zID8/IERFRkFVTFRfQ09MVU1OU19OVU1CRVIsXG4gICAgICAgICAgICAgICAgLi4uKHRoaXMubWFuaWZlc3Q/LndpZGdldHMgPz8gW10pLm1hcCgodykgPT4gdy5sYXlvdXQud2lkdGggKyB3LmxheW91dC54KVxuICAgICAgICAgICAgICApIC1cbiAgICAgICAgICAgICAgY2FuZGlkYXRlV2lkZ2V0LmxheW91dC53aWR0aCArXG4gICAgICAgICAgICAgIDE7XG4gICAgICAgICAgICBjYW5kaWRhdGVXaWRnZXQubGF5b3V0LnggPSBNYXRoLm1heCgwLCBNYXRoLm1pbihjYW5kaWRhdGVXaWRnZXQubGF5b3V0LnggKyB0YXJnZXQueCwgY3VycmVudE1heFgpKTtcblxuICAgICAgICAgICAgY29uc3QgY3VycmVudE1heFkgPVxuICAgICAgICAgICAgICBNYXRoLm1heChcbiAgICAgICAgICAgICAgICB0aGlzLm1hbmlmZXN0Py5ncmlkPy5yb3dzID8/IERFRkFVTFRfUk9XU19OVU1CRVIsXG4gICAgICAgICAgICAgICAgLi4uKHRoaXMubWFuaWZlc3Q/LndpZGdldHMgPz8gW10pLm1hcCgodykgPT4gdy5sYXlvdXQuaGVpZ2h0ICsgdy5sYXlvdXQueSlcbiAgICAgICAgICAgICAgKSAtXG4gICAgICAgICAgICAgIGNhbmRpZGF0ZVdpZGdldC5sYXlvdXQuaGVpZ2h0ICtcbiAgICAgICAgICAgICAgMTtcbiAgICAgICAgICAgIGNhbmRpZGF0ZVdpZGdldC5sYXlvdXQueSA9IE1hdGgubWF4KDAsIE1hdGgubWluKGNhbmRpZGF0ZVdpZGdldC5sYXlvdXQueSArIHRhcmdldC55LCBjdXJyZW50TWF4WSkpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKFxuICAgICAgICAgIERhc2hib2FyZEFjdGlvbnMudXBkYXRlRGFzaGJvYXJkTWFuaWZlc3Qoe1xuICAgICAgICAgICAgbWFuaWZlc3Q6IHNvbHZlQ29sbGlzaW9ucyhcbiAgICAgICAgICAgICAgY2FuZGlkYXRlV2lkZ2V0LFxuICAgICAgICAgICAgICB0aGlzLmluaXRpYWxXaWRnZXRNYW5pZmVzdExpc3QsXG4gICAgICAgICAgICAgIHRoaXMubWFuaWZlc3QgPz8gKHt9IGFzIERhc2hib2FyZE1hbmlmZXN0KVxuICAgICAgICAgICAgKVxuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZHJhZ01vdmUoJGV2ZW50OiBEcmFnRXZlbnQpIHtcbiAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICB0aGlzLm1vdmluZ01vdXNlKCRldmVudCk7XG4gIH1cblxuICBkcmFnTGVhdmUoJGV2ZW50OiBEcmFnRXZlbnQpIHtcbiAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAvLyBAdHMtaWdub3JlXG4gICAgaWYgKCRldmVudC5jdXJyZW50VGFyZ2V0LmNvbnRhaW5zKCRldmVudC5yZWxhdGVkVGFyZ2V0KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHR5cGVzID0gKCRldmVudC5kYXRhVHJhbnNmZXIgfHwgeyB0eXBlczogWycnXSB9KS50eXBlcztcbiAgICBpZiAodHlwZXMuaW5jbHVkZXMoTUlNRV9UWVBFX1dJREdFVF9NQU5JRkVTVCkpIHtcbiAgICAgIC8vIEFzIHRoZSBkcmFnIGlzIGxlYXZpbmcgdGhlIHdpbmRvdywgZGVsZXRlIHRoZSB3aWRnZXQgZnJvbSBpdCwgYW5kIHN0b3AgZWRpdGlvbiBtb2RlXG4gICAgICBpZiAoISEkZXZlbnQgJiYgISEkZXZlbnQuZGF0YVRyYW5zZmVyKSB7XG4gICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goXG4gICAgICAgICAgRGFzaGJvYXJkQWN0aW9ucy51cGRhdGVEYXNoYm9hcmRNYW5pZmVzdCh7XG4gICAgICAgICAgICBtYW5pZmVzdDoge1xuICAgICAgICAgICAgICAuLi50aGlzLm1hbmlmZXN0LFxuICAgICAgICAgICAgICB3aWRnZXRzOiB0aGlzLmluaXRpYWxXaWRnZXRNYW5pZmVzdExpc3RcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgICAgICB0aGlzLmNsZWFyQWN0aW9ucygpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGRyb3BwaW5nKCRldmVudDogRHJhZ0V2ZW50KSB7XG4gICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGlmICghISRldmVudCAmJiAhISRldmVudC5kYXRhVHJhbnNmZXIpIHtcbiAgICAgIGlmICgkZXZlbnQuZGF0YVRyYW5zZmVyLnR5cGVzLmluY2x1ZGVzKE1JTUVfVFlQRV9XSURHRVRfTUFOSUZFU1QpKSB7XG4gICAgICAgIC8vIFJlYXJyYW5nZSBkcm9wIHRvIGNvcnJlY3Qgc2l6ZSwgdHlwZSwgLi4uLCBhcyBhIHBsYWNlaG9sZGVyIGFscmVhZHkgYmVlbiBhZGRlZCB0byBtYW5pZmVzdCBieSBkcmFnZW50ZXIgZXZlbnRcbiAgICAgICAgY29uc3QgZGF0YVRyYW5zZmVyTWFuaWZlc3QgPSBKU09OLnBhcnNlKFxuICAgICAgICAgICRldmVudC5kYXRhVHJhbnNmZXIuZ2V0RGF0YShNSU1FX1RZUEVfV0lER0VUX01BTklGRVNUKVxuICAgICAgICApIGFzIFdpZGdldE1hbmlmZXN0O1xuXG4gICAgICAgIHRoaXMuY3VycmVudGx5TW9kaWZpZWRNYW5pZmVzdCA9IHtcbiAgICAgICAgICAuLi5kYXRhVHJhbnNmZXJNYW5pZmVzdCxcbiAgICAgICAgICBsYXlvdXQ6IHRoaXMuY3VycmVudGx5TW9kaWZpZWRNYW5pZmVzdD8ubGF5b3V0ID8/ICh7fSBhcyBXaWRnZXRMYXlvdXQpXG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5tb3ZpbmdNb3VzZSgkZXZlbnQsIGZhbHNlKTtcblxuICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKERhc2hib2FyZEFjdGlvbnMuYXNzZXJ0UmVzdWx0U2V0cyh7fSkpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmNsZWFyQWN0aW9ucygpO1xuICAgIH1cbiAgfVxuXG4gIGNsZWFyQWN0aW9ucygpIHtcbiAgICB0aGlzLmFjdGlvblR5cGUgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5tb3ZlLmluaXRpYWxYID0gMDtcbiAgICB0aGlzLm1vdmUuaW5pdGlhbFkgPSAwO1xuICAgIHRoaXMubW92ZS5wcmV2aW91c1ggPSAtMTtcbiAgICB0aGlzLm1vdmUucHJldmlvdXNZID0gLTE7XG4gICAgdGhpcy5jdXJyZW50bHlNb2RpZmllZE1hbmlmZXN0ID0gbnVsbDtcbiAgICB0aGlzLmluaXRpYWxXaWRnZXRNYW5pZmVzdExpc3QgPSBbXTtcbiAgfVxuXG4gIC8qKipcbiAgICogTWFuYWdlIG90aGVyIGtpbmRzIG9mIGRyb3BzIChpbnNpZGUgd2lkZ2V0cylcbiAgICovXG4gIGRyb3BwaW5nSW5XaWRnZXQoJGV2ZW50OiBEcmFnRXZlbnQsIGluZGV4OiBudW1iZXIpIHtcbiAgICBpZiAoISEkZXZlbnQgJiYgISEkZXZlbnQuZGF0YVRyYW5zZmVyKSB7XG4gICAgICBpZiAoJGV2ZW50LmRhdGFUcmFuc2Zlci50eXBlcy5pbmNsdWRlcyhNSU1FX1RZUEVfUkVTVUxUU0VUKSkge1xuICAgICAgICBjb25zdCBsaXN0V2lkZ2V0TWFuaWZlc3RzID0gWy4uLih0aGlzLm1hbmlmZXN0IHx8IHsgd2lkZ2V0czogW10gfSkud2lkZ2V0c107XG5cbiAgICAgICAgY29uc3QgcmVzdWx0U2V0TmFtZSA9ICRldmVudC5kYXRhVHJhbnNmZXIuZ2V0RGF0YShNSU1FX1RZUEVfUkVTVUxUU0VUKTtcbiAgICAgICAgY29uc3QgY3VycmVudFJlc3VsdFNldCA9IChcbiAgICAgICAgICBBcnJheS5pc0FycmF5KGxpc3RXaWRnZXRNYW5pZmVzdHNbaW5kZXhdLmRhdGFzb3VyY2UpXG4gICAgICAgICAgICA/IGxpc3RXaWRnZXRNYW5pZmVzdHNbaW5kZXhdLmRhdGFzb3VyY2VcbiAgICAgICAgICAgIDogW2xpc3RXaWRnZXRNYW5pZmVzdHNbaW5kZXhdLmRhdGFzb3VyY2VdXG4gICAgICAgICkgYXMgc3RyaW5nW107XG4gICAgICAgIGNvbnN0IGN1bXVsYXRpdmUgPSAkZXZlbnQuc2hpZnRLZXk7XG4gICAgICAgIGNvbnN0IG5ld1Jlc3VsdFNldCA9IGN1bXVsYXRpdmUgPyBbLi4uY3VycmVudFJlc3VsdFNldCwgcmVzdWx0U2V0TmFtZV0gOiByZXN1bHRTZXROYW1lO1xuXG4gICAgICAgIGxpc3RXaWRnZXRNYW5pZmVzdHNbaW5kZXhdID0ge1xuICAgICAgICAgIC4uLmxpc3RXaWRnZXRNYW5pZmVzdHNbaW5kZXhdLFxuICAgICAgICAgIGRhdGFzb3VyY2U6IG5ld1Jlc3VsdFNldFxuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goXG4gICAgICAgICAgRGFzaGJvYXJkQWN0aW9ucy51cGRhdGVEYXNoYm9hcmRNYW5pZmVzdCh7XG4gICAgICAgICAgICBtYW5pZmVzdDoge1xuICAgICAgICAgICAgICAuLi50aGlzLm1hbmlmZXN0LFxuICAgICAgICAgICAgICB3aWRnZXRzOiBsaXN0V2lkZ2V0TWFuaWZlc3RzXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChEYXNoYm9hcmRBY3Rpb25zLmFzc2VydFJlc3VsdFNldHMoe30pKTtcbiAgICAgICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICB0b2dnbGVSZW1vdmVDb25maXJtKCRldmVudD86IE1vdXNlRXZlbnQsIGluZGV4PzogbnVtYmVyKSB7XG4gICAgaWYgKCF0aGlzLmNvbmZpcm1SZW1vdmVSZWYpIHtcbiAgICAgIHRoaXMuaW5kZXhGb3JSZW1vdmFsID0gaW5kZXggPz8gLTE7XG4gICAgICB0aGlzLmNvbmZpcm1SZW1vdmVSZWYgPSB0aGlzLm92ZXJsYXkuY3JlYXRlKFxuICAgICAgICBuZXcgT3ZlcmxheUNvbmZpZyh7XG4gICAgICAgICAgaGFzQmFja2Ryb3A6IHRydWUsXG4gICAgICAgICAgcGFuZWxDbGFzczogWydvLW1vZGFsLXdyYXBwZXInXSxcbiAgICAgICAgICBiYWNrZHJvcENsYXNzOiAnYmFja2Ryb3AnXG4gICAgICAgIH0pXG4gICAgICApO1xuICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChDb25maWdBY3Rpb25zLmFkZGluZ092ZXJsYXkoeyBpZDogdGhpcy5jb25zdHJ1Y3Rvci5uYW1lICsgJy1tb2RhbCcgfSkpO1xuICAgICAgdGhpcy5jb25maXJtUmVtb3ZlUmVmLmJhY2tkcm9wQ2xpY2soKS5zdWJzY3JpYmUoKF8pID0+IHRoaXMudG9nZ2xlUmVtb3ZlQ29uZmlybSgpKTtcbiAgICAgIHRoaXMuY29uZmlybVJlbW92ZVJlZi5hdHRhY2gobmV3IFRlbXBsYXRlUG9ydGFsKHRoaXMudGVtcGxhdGVNb2RhbCwgdGhpcy52aWV3Q29udGFpbmVyUmVmKSk7XG4gICAgICBpZiAoJGV2ZW50KSB7XG4gICAgICAgIGNvbnN0IHBhbmVsID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignZGl2Lm8tbW9kYWwtd3JhcHBlcicpIGFzIEhUTUxEaXZFbGVtZW50O1xuICAgICAgICBpZiAoISFwYW5lbCkge1xuICAgICAgICAgIHBhbmVsLnN0eWxlLmxlZnQgPSBNYXRoLm1heCgwLCBNYXRoLm1pbih3aW5kb3cuaW5uZXJXaWR0aCAtIHBhbmVsLmNsaWVudFdpZHRoLCAkZXZlbnQuY2xpZW50WCAtIDMwKSkgKyAncHgnO1xuICAgICAgICAgIHBhbmVsLnN0eWxlLnRvcCA9IE1hdGgubWF4KDAsIE1hdGgubWluKHdpbmRvdy5pbm5lckhlaWdodCAtIHBhbmVsLmNsaWVudEhlaWdodCwgJGV2ZW50LmNsaWVudFkgLSAxMCkpICsgJ3B4JztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNvbmZpcm1SZW1vdmVSZWYuZGlzcG9zZSgpO1xuICAgICAgdGhpcy5jb25maXJtUmVtb3ZlUmVmID0gdW5kZWZpbmVkO1xuICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChDb25maWdBY3Rpb25zLmNsb3NlT3ZlcmxheSh7IGlkOiB0aGlzLmNvbnN0cnVjdG9yLm5hbWUgKyAnLW1vZGFsJyB9KSk7XG4gICAgfVxuICB9XG5cbiAgY29uZmlybVJlbW92ZSgpIHtcbiAgICB0aGlzLnJlbW92ZSh0aGlzLmluZGV4Rm9yUmVtb3ZhbCk7XG4gICAgdGhpcy5jYW5jZWxSZW1vdmVDb25maXJtKCk7XG4gIH1cblxuICBjYW5jZWxSZW1vdmVDb25maXJtKCkge1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goQ29uZmlnQWN0aW9ucy5jbG9zZU92ZXJsYXkoeyBpZDogdGhpcy5jb25zdHJ1Y3Rvci5uYW1lICsgJy1tb2RhbCcgfSkpO1xuICAgIHRoaXMuY29uZmlybVJlbW92ZVJlZj8uZGlzcG9zZSgpO1xuICAgIHRoaXMuY29uZmlybVJlbW92ZVJlZiA9IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHRyYWNrV2lkZ2V0cyhpbmRleDogbnVtYmVyLCB3aWRnZXRNYW5pZmVzdDogV2lkZ2V0TWFuaWZlc3QpIHtcbiAgICByZXR1cm4gaW5kZXggKyAnLScgKyB3aWRnZXRNYW5pZmVzdC50eXBlICsgJy0nICsgSlNPTi5zdHJpbmdpZnkod2lkZ2V0TWFuaWZlc3QubGF5b3V0KTtcbiAgfVxufVxuIiwiPGRpdlxuICBjbGFzcz1cIm8tZGFzaGJvYXJkLWdyaWRcIlxuICBbc3R5bGUuZ3JpZFRlbXBsYXRlQ29sdW1uc109XCJncmlkVGVtcGxhdGVDb2x1bW5zJCB8IGFzeW5jXCJcbiAgW3N0eWxlLmdyaWRUZW1wbGF0ZVJvd3NdPVwiZ3JpZFRlbXBsYXRlUm93cyQgfCBhc3luY1wiXG4gIFtzdHlsZS5ncmlkR2FwXT1cImRhc2hib2FyZFBhcmFtcy5ncmlkR2FwICsgJ3B4J1wiXG4gIFtzdHlsZS5wYWRkaW5nXT1cIicwICcgKyBkYXNoYm9hcmRQYXJhbXMuZ3JpZEdhcCArICdweCdcIlxuICAjZ3JpZFxuICAobW91c2Vtb3ZlKT1cIm1vdmluZ01vdXNlKCRldmVudClcIlxuICAoZHJvcCk9XCJkcm9wcGluZygkZXZlbnQpXCJcbiAgKGRyYWdvdmVyKT1cImRyYWdNb3ZlKCRldmVudClcIlxuICAoZHJhZ2xlYXZlKT1cImRyYWdMZWF2ZSgkZXZlbnQpXCJcbiAgKGRyYWdlbnRlcik9XCJkcmFnRW50ZXIoJGV2ZW50KVwiXG4+XG4gIDxuZy1jb250YWluZXJcbiAgICAqbmdGb3I9XCJcbiAgICAgIGxldCB3aWRnZXRNYW5pZmVzdCBvZiAod2luZG93TWFuaWZlc3QkIHwgYXN5bmMpPy53aWRnZXRzIHx8IFtdO1xuICAgICAgbGV0IHdpZGdldEluZGV4ID0gaW5kZXg7XG4gICAgICB0cmFja0J5OiB0cmFja1dpZGdldHNcbiAgICBcIlxuICA+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJvLWRhc2hib2FyZC13aWRnZXRcIlxuICAgICAgW2NsYXNzLi1lZGl0ZWRdPVwibW9kZUVkaXRpb25cIlxuICAgICAgW3N0eWxlLmdyaWRDb2x1bW5dPVwiZ3JpZENvbHVtbih3aWRnZXRNYW5pZmVzdC5sYXlvdXQpXCJcbiAgICAgIFtzdHlsZS5ncmlkUm93XT1cImdyaWRSb3cod2lkZ2V0TWFuaWZlc3QubGF5b3V0KVwiXG4gICAgICAoZHJvcCk9XCJkcm9wcGluZ0luV2lkZ2V0KCRldmVudCwgd2lkZ2V0SW5kZXgpXCJcbiAgICA+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibW9kZUVkaXRpb25cIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJlc2l6ZSBudy1yZXNpemVcIiAobW91c2Vkb3duKT1cInN0YXJ0UmVzaXplKCRldmVudCwgd2lkZ2V0SW5kZXgsICdyZXNpemUtbncnKVwiPlxuICAgICAgICAgIDxwcnktaWNvbiBpY29uU3ZnPVwibm9ydGhfd2VzdFwiIFthbmltYXRpb25dPVwiZmFsc2VcIj48L3ByeS1pY29uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJlc2l6ZSBzdy1yZXNpemVcIiAobW91c2Vkb3duKT1cInN0YXJ0UmVzaXplKCRldmVudCwgd2lkZ2V0SW5kZXgsICdyZXNpemUtc3cnKVwiPlxuICAgICAgICAgIDxwcnktaWNvbiBpY29uU3ZnPVwic291dGhfd2VzdFwiIFthbmltYXRpb25dPVwiZmFsc2VcIj48L3ByeS1pY29uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJlc2l6ZSBuZS1yZXNpemVcIiAobW91c2Vkb3duKT1cInN0YXJ0UmVzaXplKCRldmVudCwgd2lkZ2V0SW5kZXgsICdyZXNpemUtbmUnKVwiPlxuICAgICAgICAgIDxwcnktaWNvbiBpY29uU3ZnPVwibm9ydGhfZWFzdFwiIFthbmltYXRpb25dPVwiZmFsc2VcIj48L3ByeS1pY29uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJlc2l6ZSBzZS1yZXNpemVcIiAobW91c2Vkb3duKT1cInN0YXJ0UmVzaXplKCRldmVudCwgd2lkZ2V0SW5kZXgsICdyZXNpemUtc2UnKVwiPlxuICAgICAgICAgIDxwcnktaWNvbiBpY29uU3ZnPVwic291dGhfZWFzdFwiIFthbmltYXRpb25dPVwiZmFsc2VcIj48L3ByeS1pY29uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJlc2l6ZSBkZWxldGVcIiAobW91c2Vkb3duKT1cInRvZ2dsZVJlbW92ZUNvbmZpcm0oJGV2ZW50LCB3aWRnZXRJbmRleClcIj5cbiAgICAgICAgICA8cHJ5LWljb24gaWNvblN2Zz1cImNsb3NlXCIgW2FuaW1hdGlvbl09XCJmYWxzZVwiPjwvcHJ5LWljb24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwibW92ZVwiIGRyYWdnYWJsZT1cInRydWVcIiAoZHJhZ3N0YXJ0KT1cImRyYWdTdGFydCgkZXZlbnQsIHdpZGdldEluZGV4KVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb3ZlLWluc2lkZSBtb3ZlLXt7IHdpZGdldE1hbmlmZXN0LnR5cGUgfX1cIj5cbiAgICAgICAgICAgIDxzcGFuPnt7IHdpZGdldE1hbmlmZXN0LnRpdGxlID8/ICgnQHByeS50b29sYm94LicgKyB3aWRnZXRNYW5pZmVzdC50eXBlIHwgaTE4bikgfX08L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIW1vZGVFZGl0aW9uXCI+XG4gICAgICAgIDxwcnktd2lkZ2V0LWluc3RhbmNpYXRvclxuICAgICAgICAgIFtzdGF0aWNNYW5pZmVzdF09XCJ3aWRnZXRNYW5pZmVzdFwiXG4gICAgICAgICAgW3dpZGdldEluZGV4XT1cIndpZGdldEluZGV4XCJcbiAgICAgICAgPjwvcHJ5LXdpZGdldC1pbnN0YW5jaWF0b3I+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIihub25GaWxsZXJXaWRnZXRzJCB8IGFzeW5jKSA9PT0gMFwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJsb2FkaW5nJCB8IGFzeW5jOyBlbHNlIG5vdExvYWRpbmdcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJuby13aWRnZXRcIiBbc3R5bGUuZ3JpZC1hcmVhXT1cImJhY2tncm91bmRBcmVhJCB8IGFzeW5jXCI+XG4gICAgICAgIDxwcnktaWNvblxuICAgICAgICAgIGljb25Tdmc9XCJsb2FkZXJcIlxuICAgICAgICAgIGNsYXNzPVwibm8td2lkZ2V0X19sb2FkaW5nXCJcbiAgICAgICAgICBbYWx0XT1cIidAcHJ5LndpZGdldC50YXJnZXQubG9hZGluZycgfCBpMThuXCJcbiAgICAgICAgICBbd2lkdGhdPVwiMTAwXCJcbiAgICAgICAgICBbaGVpZ2h0XT1cIjEwMFwiXG4gICAgICAgIC8+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwibm8td2lkZ2V0X190ZXh0XCI+e3sgJ0Bwcnkud2lkZ2V0LnRhcmdldC5sb2FkaW5nJyB8IGkxOG4gfX0uLi48L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctdGVtcGxhdGUgI25vdExvYWRpbmc+XG4gICAgICA8ZGl2IGNsYXNzPVwibm8td2lkZ2V0XCIgW3N0eWxlLmdyaWQtYXJlYV09XCJiYWNrZ3JvdW5kQXJlYSQgfCBhc3luY1wiPlxuICAgICAgICA8aW1nXG4gICAgICAgICAgY2xhc3M9XCJuby13aWRnZXRfX3NlYXJjaFwiXG4gICAgICAgICAgc3JjPVwiLi4vLi4vLi4vYXNzZXRzL3N2Z3MvcHJ5X3JlY2hlcmNoZS5zdmdcIlxuICAgICAgICAgIGFsdD1cInt7XG4gICAgICAgICAgICAobGF5b3V0ID09PSBEYXNoYm9hcmRHcmlkTGF5b3V0Lk1BTlVBTCA/ICdAcHJ5LndpZGdldC50YXJnZXQubm9uZV9tYW51YWwnIDogJ0Bwcnkud2lkZ2V0LnRhcmdldC5ub25lX2F1dG8nKVxuICAgICAgICAgICAgICB8IGkxOG5cbiAgICAgICAgICB9fSB7eyBiYWNrZ3JvdW5kQXJlYSQgfCBhc3luYyB9fVwiXG4gICAgICAgIC8+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwibm8td2lkZ2V0X190ZXh0XCI+e3tcbiAgICAgICAgICAobGF5b3V0ID09PSBEYXNoYm9hcmRHcmlkTGF5b3V0Lk1BTlVBTCA/ICdAcHJ5LndpZGdldC50YXJnZXQubm9uZV9tYW51YWwnIDogJ0Bwcnkud2lkZ2V0LnRhcmdldC5ub25lX2F1dG8nKVxuICAgICAgICAgICAgfCBpMThuXG4gICAgICAgIH19PC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9uZy1jb250YWluZXI+XG4gIDxkaXZcbiAgICBjbGFzcz1cImEtcGFnZS1sb2FkZXIgYmFja2Ryb3BcIlxuICAgIFtzdHlsZS5kaXNwbGF5XT1cIihkYXRhRmV0Y2hpbmckIHwgYXN5bmMpPy5sZW5ndGggPz8gMSA+IDAgPyAnZmxleCcgOiAnbm9uZSdcIlxuICAgIFtzdHlsZS53aWR0aC5weF09XCJwYXJhbXMuZ3JpZFdpZHRoXCJcbiAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cInBhcmFtcy5ncmlkSGVpZ2h0XCJcbiAgPlxuICAgIDxwcnktaWNvblxuICAgICAgaWNvblN2Zz1cImxvYWRlclwiXG4gICAgICBjbGFzcz1cIm5vLXdpZGdldF9fbG9hZGluZ1wiXG4gICAgICBbYWx0XT1cIidAcHJ5LndpZGdldC50YXJnZXQubG9hZGluZycgfCBpMThuXCJcbiAgICAgIFt3aWR0aF09XCIyMDBcIlxuICAgICAgW2hlaWdodF09XCIyMDBcIlxuICAgIC8+XG4gICAgPHA+e3sgJ0Bwcnkud2lkZ2V0LnRhcmdldC5sb2FkaW5nJyB8IGkxOG4gfX0uLi48L3A+XG4gIDwvZGl2PlxuPC9kaXY+XG48cHJ5LWNvbnRleHQtbWVudT48L3ByeS1jb250ZXh0LW1lbnU+XG5cbjxuZy10ZW1wbGF0ZSAjdGVtcGxhdGVNb2RhbD5cbiAgPGRpdiBjbGFzcz1cIm8tbW9kYWxcIj5cbiAgICA8ZGl2IGNsYXNzPVwiby1tb2RhbF9fdG9wXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiby1tb2RhbF9fdG9wX190aXRsZVwiPlxuICAgICAgICA8aDIgY2xhc3M9XCJhLWgyXCIgaWQ9XCJkaWFsb2dfdGl0bGVcIj5cbiAgICAgICAgICB7eyAnQHByeS53aWRnZXQubW9kYWxUaXRsZScgfCBpMThuIH19XG4gICAgICAgIDwvaDI+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJvLW1vZGFsX190b3BfX2Nsb3NlXCI+XG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJhLWJ0biBhLWJ0bi0taWNvbi1vbmx5XCIgKGNsaWNrKT1cImNhbmNlbFJlbW92ZUNvbmZpcm0oKVwiPlxuICAgICAgICAgIDxwcnktaWNvbiBpY29uU3ZnPVwiY2xvc2VcIiBbaGVpZ2h0XT1cIjM1XCIgW3dpZHRoXT1cIjM1XCI+PC9wcnktaWNvbj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInUtdmlzdWFsbHktaGlkZGVuXCI+e3sgJ0BwcnkudG9vbGJveC5jbG9zZScgfCBpMThuIH19PC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJtLWJ0bi1ncm91cFwiPlxuICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImNhbmNlbFJlbW92ZUNvbmZpcm0oKVwiIGNsYXNzPVwiYS1idG4gYS1idG4tLXNlY29uZGFyeVwiPlxuICAgICAgICB7eyAnQHByeS50b29sYm94Lm1hbmlmZXN0LmNsb3NlJyB8IGkxOG4gfX1cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvbiB0eXBlPVwic3VibWl0XCIgKGNsaWNrKT1cImNvbmZpcm1SZW1vdmUoKVwiIGNsYXNzPVwiYS1idG4gYS1idG4tLXByaW1hcnlcIj5cbiAgICAgICAge3sgJ0BwcnkudG9vbGJveC5tYW5pZmVzdC52YWxpZGF0ZScgfCBpMThuIH19XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
|
|
573
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGFzaGJvYXJkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL2xpYi9kYXNoYm9hcmQvY29tcG9uZW50cy9kYXNoYm9hcmQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJvdm9seS9kYXNoYm9hcmQvbGliL2Rhc2hib2FyZC9jb21wb25lbnRzL2Rhc2hib2FyZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQVcsYUFBYSxFQUFjLE1BQU0sc0JBQXNCLENBQUM7QUFDMUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3JELE9BQU8sRUFFTCxTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBRU4sV0FBVyxFQUNYLFNBQVMsRUFDVCxZQUFZLEVBRWIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxLQUFLLE1BQU0scUJBQXFCLENBQUM7QUFDeEMsT0FBTyxFQUNMLFNBQVMsRUFDVCxlQUFlLEVBQ2YsYUFBYSxFQUNiLGlCQUFpQixFQUNqQixTQUFTLEVBRVQsRUFBRSxFQUNGLFNBQVMsRUFDVixNQUFNLE1BQU0sQ0FBQztBQUNkLE9BQU8sRUFBRSxLQUFLLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTFFLE9BQU8sRUFDTCxtQkFBbUIsRUFJcEIsTUFBTSxxQ0FBcUMsQ0FBQztBQUM3QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUNuRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDN0UsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3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USxJQUFJLENBQUMsVUFBVSxFQUFFO29CQUN2QixLQUFLLFdBQVc7d0JBQ2QsSUFBSSxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxlQUFlLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRTs0QkFDM0YsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQzs0QkFDckMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQzs0QkFDckMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxLQUFLLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQzs0QkFDekMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxNQUFNLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQzt5QkFDM0M7d0JBQ0QsTUFBTTtvQkFDUixLQUFLLFdBQVc7d0JBQ2QsSUFBSSxlQUFlLENBQUMsTUFBTSxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRTs0QkFDL0MsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQzs0QkFDckMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxLQUFLLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQzs0QkFDekMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxNQUFNLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQzt5QkFDM0M7d0JBQ0QsTUFBTTtvQkFDUixLQUFLLFdBQVc7d0JBQ2QsSUFBSSxlQUFlLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRTs0QkFDaEQsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQzs0QkFDckMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxLQUFLLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQzs0QkFDekMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxNQUFNLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQzt5QkFDM0M7d0JBQ0QsTUFBTTtvQkFDUixLQUFLLFdBQVc7d0JBQ2QsZUFBZSxDQUFDLE1BQU0sQ0FBQyxLQUFLLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQzt3QkFDekMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxNQUFNLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQzt3QkFDMUMsTUFBTTtvQkFDUixLQUFLLE1BQU07d0JBQ1QsTUFBTSxXQUFXLEdBQ2YsSUFBSSxDQUFDLEdBQUcsQ0FDTixJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksRUFBRSxPQUFPLElBQUksc0JBQXNCLEVBQ3RELEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLE9BQU8sSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQzFFOzRCQUNELGVBQWUsQ0FBQyxNQUFNLENBQUMsS0FBSzs0QkFDNUIsQ0FBQyxDQUFDO3dCQUNKLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDO3dCQUVuRyxNQUFNLFdBQVcsR0FDZixJQUFJLENBQUMsR0FBRyxDQUNOLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLElBQUksSUFBSSxtQkFBbUIsRUFDaEQsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsT0FBTyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FDM0U7NEJBQ0QsZUFBZSxDQUFDLE1BQU0sQ0FBQyxNQUFNOzRCQUM3QixDQUFDLENBQUM7d0JBQ0osZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUM7d0JBQ25HLE1BQU07aUJBQ1Q7Z0JBRUQsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQ2pCLGdCQUFnQixDQUFDLHVCQUF1QixDQUFDO29CQUN2QyxRQUFRLEVBQUUsZUFBZSxDQUN2QixlQUFlLEVBQ2YsSUFBSSxDQUFDLHlCQUF5QixFQUM5QixJQUFJLENBQUMsUUFBUSxJQUFLLEVBQXdCLENBQzNDO2lCQUNGLENBQUMsQ0FDSCxDQUFDO2FBQ0g7U0FDRjtJQUNILENBQUM7SUFFRCxRQUFRLENBQUMsTUFBaUI7UUFDeEIsTUFBTSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3pCLE1BQU0sQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUV4QixJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFFRCxTQUFTLENBQUMsTUFBaUI7UUFDekIsTUFBTSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3pCLE1BQU0sQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUV4QixhQUFhO1FBQ2IsSUFBSSxNQUFNLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLEVBQUU7WUFDdkQsT0FBTztTQUNSO1FBRUQsTUFBTSxLQUFLLEdBQUcsQ0FBQyxNQUFNLENBQUMsWUFBWSxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUM3RCxJQUFJLEtBQUssQ0FBQyxRQUFRLENBQUMseUJBQXlCLENBQUMsRUFBRTtZQUM3QyxzRkFBc0Y7WUFDdEYsSUFBSSxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFO2dCQUNyQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FDakIsZ0JBQWdCLENBQUMsdUJBQXVCLENBQUM7b0JBQ3ZDLFFBQVEsRUFBRTt3QkFDUixHQUFHLElBQUksQ0FBQyxRQUFRO3dCQUNoQixPQUFPLEVBQUUsSUFBSSxDQUFDLHlCQUF5QjtxQkFDeEM7aUJBQ0YsQ0FBQyxDQUNILENBQUM7Z0JBQ0YsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO2FBQ3JCO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsUUFBUSxDQUFDLE1BQWlCO1FBQ3hCLE1BQU0sQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN4QixNQUFNLENBQUMsZUFBZSxFQUFFLENBQUM7UUFFekIsYUFBYTtRQUNiLElBQUksQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRTtZQUNyQyxJQUFJLE1BQU0sQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyx5QkFBeUIsQ0FBQyxFQUFFO2dCQUNqRSxnSEFBZ0g7Z0JBQ2hILE1BQU0sb0JBQW9CLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FDckMsTUFBTSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMseUJBQXlCLENBQUMsQ0FDckMsQ0FBQztnQkFFcEIsSUFBSSxDQUFDLHlCQUF5QixHQUFHO29CQUMvQixHQUFHLG9CQUFvQjtvQkFDdkIsTUFBTSxFQUFFLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxNQUFNLElBQUssRUFBbUI7aUJBQ3ZFLENBQUM7Z0JBRUYsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7Z0JBRWhDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7YUFDNUQ7WUFFRCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7U0FDckI7SUFDSCxDQUFDO0lBRUQsWUFBWTtRQUNWLElBQUksQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDO1FBQzVCLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQztRQUN2QixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUM7UUFDdkIsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDekIsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDekIsSUFBSSxDQUFDLHlCQUF5QixHQUFHLElBQUksQ0FBQztRQUN0QyxJQUFJLENBQUMseUJBQXlCLEdBQUcsRUFBRSxDQUFDO0lBQ3RDLENBQUM7SUFFRDs7T0FFRztJQUNILGdCQUFnQixDQUFDLE1BQWlCLEVBQUUsS0FBYTtRQUMvQyxJQUFJLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUU7WUFDckMsSUFBSSxNQUFNLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsbUJBQW1CLENBQUMsRUFBRTtnQkFDM0QsTUFBTSxtQkFBbUIsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBRTVFLE1BQU0sYUFBYSxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLG1CQUFtQixDQUFDLENBQUM7Z0JBQ3ZFLE1BQU0sZ0JBQWdCLEdBQUcsQ0FDdkIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxVQUFVLENBQUM7b0JBQ2xELENBQUMsQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxVQUFVO29CQUN2QyxDQUFDLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FDaEMsQ0FBQztnQkFDZCxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDO2dCQUNuQyxNQUFNLFlBQVksR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxnQkFBZ0IsRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDO2dCQUV2RixtQkFBbUIsQ0FBQyxLQUFLLENBQUMsR0FBRztvQkFDM0IsR0FBRyxtQkFBbUIsQ0FBQyxLQUFLLENBQUM7b0JBQzdCLFVBQVUsRUFBRSxZQUFZO2lCQUN6QixDQUFDO2dCQUVGLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUNqQixnQkFBZ0IsQ0FBQyx1QkFBdUIsQ0FBQztvQkFDdkMsUUFBUSxFQUFFO3dCQUNSLEdBQUcsSUFBSSxDQUFDLFFBQVE7d0JBQ2hCLE9BQU8sRUFBRSxtQkFBbUI7cUJBQzdCO2lCQUNGLENBQUMsQ0FDSCxDQUFDO2dCQUNGLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQzNELE1BQU0sQ0FBQyxjQUFjLEVBQUUsQ0FBQztnQkFDeEIsTUFBTSxDQUFDLGVBQWUsRUFBRSxDQUFDO2FBQzFCO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsbUJBQW1CLENBQUMsTUFBbUIsRUFBRSxLQUFjO1FBQ3JELElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7WUFDMUIsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDbkMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUN6QyxJQUFJLGFBQWEsQ0FBQztnQkFDaEIsV0FBVyxFQUFFLElBQUk7Z0JBQ2pCLFVBQVUsRUFBRSxDQUFDLGlCQUFpQixDQUFDO2dCQUMvQixhQUFhLEVBQUUsVUFBVTthQUMxQixDQUFDLENBQ0gsQ0FBQztZQUNGLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEdBQUcsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQzNGLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDLENBQUM7WUFDbkYsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxJQUFJLGNBQWMsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7WUFDNUYsSUFBSSxNQUFNLEVBQUU7Z0JBQ1YsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxxQkFBcUIsQ0FBbUIsQ0FBQztnQkFDOUUsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFO29CQUNYLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUMsV0FBVyxFQUFFLE1BQU0sQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUM7b0JBQzVHLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUMsWUFBWSxFQUFFLE1BQU0sQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUM7aUJBQzlHO2FBQ0Y7U0FDRjthQUFNO1lBQ0wsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2hDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxTQUFTLENBQUM7WUFDbEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksR0FBRyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7U0FDM0Y7SUFDSCxDQUFDO0lBRUQsYUFBYTtRQUNYLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFRCxtQkFBbUI7UUFDakIsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksR0FBRyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDMUYsSUFBSSxDQUFDLGdCQUFnQixFQUFFLE9BQU8sRUFBRSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxTQUFTLENBQUM7SUFDcEMsQ0FBQztJQUVELFlBQVksQ0FBQyxLQUFhLEVBQUUsY0FBOEI7UUFDeEQsT0FBTyxLQUFLLEdBQUcsR0FBRyxHQUFHLGNBQWMsQ0FBQyxJQUFJLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3pGLENBQUM7K0dBcHNCVSxrQkFBa0I7bUdBQWxCLGtCQUFrQix1VEFTTyxXQUFXLGtJQUlqQywyQkFBMkIsdUVDL0UzQywycUtBbUlBOzs0RkRqRWEsa0JBQWtCO2tCQUo5QixTQUFTOytCQUNFLGVBQWU7aUpBWTBCLGFBQWE7c0JBQS9ELFNBQVM7dUJBQUMsZUFBZSxFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRTtnQkFJTixhQUFhO3NCQUF2RCxZQUFZO3VCQUFDLDJCQUEyQjtnQkFRNUIsZUFBZTtzQkFBM0IsS0FBSztnQkFJRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBRWEsT0FBTztzQkFBekIsU0FBUzt1QkFBQyxNQUFNO2dCQWdCUCxTQUFTO3NCQUFsQixNQUFNO2dCQUNHLElBQUk7c0JBQWIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE92ZXJsYXksIE92ZXJsYXlDb25maWcsIE92ZXJsYXlSZWYgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBUZW1wbGF0ZVBvcnRhbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgUXVlcnlMaXN0LFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxuICBWaWV3Q2hpbGRyZW4sXG4gIFZpZXdDb250YWluZXJSZWZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCBlcXVhbCBmcm9tICdmYXN0LWRlZXAtZXF1YWwvZXM2JztcbmltcG9ydCB7XG4gIGF1ZGl0VGltZSxcbiAgQmVoYXZpb3JTdWJqZWN0LFxuICBjb21iaW5lTGF0ZXN0LFxuICBjb21iaW5lTGF0ZXN0V2l0aCxcbiAgZnJvbUV2ZW50LFxuICBPYnNlcnZhYmxlLFxuICBvZixcbiAgc3dpdGNoTWFwXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVsYXksIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaWx0ZXIsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IERpc3BsYXlPcHRpb25zIH0gZnJvbSAnLi4vLi4vY29yZS9tb2RlbC9kaXNwbGF5LW9wdGlvbnMuaW50ZXJmYWNlJztcbmltcG9ydCB7XG4gIERhc2hib2FyZEdyaWRMYXlvdXQsXG4gIERhc2hib2FyZE1hbmlmZXN0LFxuICBXaWRnZXRMYXlvdXQsXG4gIFdpZGdldE1hbmlmZXN0XG59IGZyb20gJy4uLy4uL2NvcmUvbW9kZWwvbWFuaWZlc3QuaW50ZXJmYWNlJztcbmltcG9ydCB7IE1JTUVfVFlQRV9SRVNVTFRTRVQgfSBmcm9tICcuLi8uLi9jb3JlL21vZGVsL21pbWV0eXBlLXJlc3VsdHNldC5jb25zdGFudCc7XG5pbXBvcnQgeyBDYXRlZ29yeUFjdGlvbnMgfSBmcm9tICcuLi8uLi9jb3JlL3N0b3JlL2NhdGVnb3J5L2NhdGVnb3J5LmFjdGlvbnMnO1xuaW1wb3J0IHsgQ2xhc3NBY3Rpb25zIH0gZnJvbSAnLi4vLi4vY29yZS9zdG9yZS9jbGFzcy9jbGFzcy5hY3Rpb25zJztcbmltcG9ydCB7IENvbmZpZ0FjdGlvbnMgfSBmcm9tICcuLi8uLi9jb3JlL3N0b3JlL2NvbmZpZy9jb25maWcuYWN0aW9ucyc7XG5pbXBvcnQgeyBDb25maWdTZWxlY3RvcnMgfSBmcm9tICcuLi8uLi9jb3JlL3N0b3JlL2NvbmZpZy9jb25maWcuc2VsZWN0b3JzJztcbmltcG9ydCB7IERhdGFTb3VyY2VBY3Rpb25zIH0gZnJvbSAnLi4vLi4vY29yZS9zdG9yZS9kYXRhLXNvdXJjZS9kYXRhLXNvdXJjZS5hY3Rpb25zJztcbmltcG9ydCB7IEZpZWxkQWN0aW9ucyB9IGZyb20gJy4uLy4uL2NvcmUvc3RvcmUvZmllbGQvZmllbGQuYWN0aW9ucyc7XG5pbXBvcnQgeyBSZWxhdGlvblR5cGVzQWN0aW9ucyB9IGZyb20gJy4uLy4uL2NvcmUvc3RvcmUvcmVsYXRpb24tdHlwZXMvcmVsYXRpb24tdHlwZXMuYWN0aW9ucyc7XG5pbXBvcnQgeyBXaWRnZXRQbGFjZW1lbnRVdGlscyB9IGZyb20gJy4uL2NvbXBvbmVudHMvd2lkZ2V0cy93aWRnZXQtcGxhY2VtZW50L3dpZGdldC1wbGFjZW1lbnQudXRpbHMnO1xuaW1wb3J0IHsgRGFzaGJvYXJkQWN0aW9ucywgRGFzaGJvYXJkQ2VsbFBhcmFtcywgVmlld01vZGUgfSBmcm9tICcuLi9zdG9yZS9kYXNoYm9hcmQuYWN0aW9ucyc7XG5pbXBvcnQge1xuICBERUZBVUxUX0NPTFVNTlNfTlVNQkVSLFxuICBERUZBVUxUX0dBUF9QWCxcbiAgREVGQVVMVF9ST1dfSEVJR0hUX1BYLFxuICBERUZBVUxUX1JPV1NfTlVNQkVSXG59IGZyb20gJy4uL3N0b3JlL2Rhc2hib2FyZC5jb250YW50cyc7XG5pbXBvcnQgeyBEYXNoYm9hcmRTZWxlY3RvcnMgfSBmcm9tICcuLi9zdG9yZS9kYXNoYm9hcmQuc2VsZWN0b3JzJztcbmltcG9ydCB7IHNvbHZlQ29sbGlzaW9ucyB9IGZyb20gJy4vc29sdmUtY29sbGlzaW9ucy5mdW5jdGlvbic7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb25uZXJEaXJlY3RpdmUgfSBmcm9tICcuL3N1YnNjcmlwdGlvbm5lci5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgV2lkZ2V0SW5zdGFuY2lhdG9yQ29tcG9uZW50IH0gZnJvbSAnLi93aWRnZXRzL3dpZGdldC1pbnN0YW5jaWF0b3Ivd2lkZ2V0LWluc3RhbmNpYXRvci5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2VhcmNoU2VsZWN0b3JzIH0gZnJvbSAnLi4vLi4vY29yZS9zdG9yZS9zZWFyY2gvc2VhcmNoLnNlbGVjdG9ycyc7XG5cbmV4cG9ydCBjb25zdCBNSU1FX1RZUEVfV0lER0VUX01BTklGRVNUID0gJ2FwcGxpY2F0aW9uL3dpZGdldC1tYW5pZmVzdCc7XG5leHBvcnQgY29uc3QgTUlNRV9UWVBFX1dJREdFVF9UWVBFID0gJ2FwcGxpY2F0aW9uL3dpZGdldC10eXBlLSc7XG5leHBvcnQgY29uc3QgTUlNRV9UWVBFX1dJREdFVF9TSVpFID0gJ2FwcGxpY2F0aW9uL3dpZGdldC1zaXplLSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ByeS1kYXNoYm9hcmQnLFxuICB0ZW1wbGF0ZVVybDogJy4vZGFzaGJvYXJkLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBEYXNoYm9hcmRDb21wb25lbnQgZXh0ZW5kcyBTdWJzY3JpcHRpb25uZXJEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQge1xuICBtYW5pZmVzdDogRGFzaGJvYXJkTWFuaWZlc3QgfCBudWxsID0gbnVsbDtcbiAgd2luZG93TWFuaWZlc3QkOiBPYnNlcnZhYmxlPERhc2hib2FyZE1hbmlmZXN0PjtcbiAgbW9kZUVkaXRpb24gPSBmYWxzZTtcbiAgbW9kZUVkaXRpb24kOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICBhY3Rpb25UeXBlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHN0YXRpY0Rhc2hib2FyZCQ6IEJlaGF2aW9yU3ViamVjdDxEYXNoYm9hcmRNYW5pZmVzdCB8IG51bGw+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxEYXNoYm9hcmRNYW5pZmVzdCB8IG51bGw+KG51bGwpO1xuICBzdGFja2VkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBpbmRleEZvclJlbW92YWw6IG51bWJlciA9IC0xO1xuICBAVmlld0NoaWxkKCd0ZW1wbGF0ZU1vZGFsJywgeyByZWFkOiBUZW1wbGF0ZVJlZiB9KSB0ZW1wbGF0ZU1vZGFsITogVGVtcGxhdGVSZWY8YW55PjtcbiAgc2VwYXJhdG9ycyQ6IE9ic2VydmFibGU8V2lkZ2V0TGF5b3V0W10+O1xuICBub25GaWxsZXJXaWRnZXRzJDogT2JzZXJ2YWJsZTxudW1iZXI+O1xuICBsb2FkaW5nJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgQFZpZXdDaGlsZHJlbihXaWRnZXRJbnN0YW5jaWF0b3JDb21wb25lbnQpIGluc3RhbmNpYXRvcnM/OiBRdWVyeUxpc3Q8V2lkZ2V0SW5zdGFuY2lhdG9yQ29tcG9uZW50PjtcbiAgZGF0YUZldGNoaW5nJDogT2JzZXJ2YWJsZTxzdHJpbmdbXT47XG4gIHBhcmFtczogRGFzaGJvYXJkQ2VsbFBhcmFtcyA9IHt9IGFzIERhc2hib2FyZENlbGxQYXJhbXM7XG5cbiAgZ2V0IHdpZGdldHNJbnN0YW5jZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuaW5zdGFuY2lhdG9ycz8ubWFwKChpbnN0YW5jaWF0b3IpID0+IGluc3RhbmNpYXRvci5pbnN0YW5jaWF0ZWRDb21wb25lbnQuaW5zdGFuY2UpID8/IFtdO1xuICB9XG5cbiAgQElucHV0KCkgc2V0IHN0YXRpY0Rhc2hib2FyZCh3aW5kb3c6IERhc2hib2FyZE1hbmlmZXN0KSB7XG4gICAgdGhpcy5zdGF0aWNEYXNoYm9hcmQkLm5leHQod2luZG93KTtcbiAgfVxuXG4gIEBJbnB1dCgpIENsb3NlT25EcmFnT3V0ID0gdHJ1ZTtcbiAgQElucHV0KCkgZGlzcGxheU9wdGlvbnM/OiBEaXNwbGF5T3B0aW9ucztcblxuICBAVmlld0NoaWxkKCdncmlkJykgZ3JpZFJlZiE6IEVsZW1lbnRSZWY7XG4gIHByaXZhdGUgY2FuQ2FsY3VsYXRlVmlldyA9IGZhbHNlO1xuICB0YXJnZXRJbmRleGVzJDogT2JzZXJ2YWJsZTxudW1iZXJbXT47XG4gIGRhc2hib2FyZFBhcmFtczogRGFzaGJvYXJkQ2VsbFBhcmFtcyA9IHtcbiAgICBncmlkV2lkdGg6IDEsXG4gICAgZ3JpZEhlaWdodDogMSxcbiAgICBncmlkR2FwOiBERUZBVUxUX0dBUF9QWCxcbiAgICBjb2x1bW5zOiBERUZBVUxUX0NPTFVNTlNfTlVNQkVSLFxuICAgIGNlbGxXaWR0aDogMSxcbiAgICBjZWxsSGVpZ2h0OiBERUZBVUxUX1JPV19IRUlHSFRfUFgsXG4gICAgcm93czogREVGQVVMVF9ST1dTX05VTUJFUixcbiAgICBvZmZzZXRMZWZ0OiAwLFxuICAgIG9mZnNldFRvcDogMCxcbiAgICBtb2JpbGVNb2RlOiBmYWxzZVxuICB9O1xuICBwcml2YXRlIGJyZWFrcG9pbnQ6IG51bWJlciA9IDA7XG4gIEBPdXRwdXQoKSByb3dIZWlnaHQgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcbiAgQE91dHB1dCgpIHJvd3MgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcbiAgY3VycmVudGx5TW9kaWZpZWRNYW5pZmVzdDogV2lkZ2V0TWFuaWZlc3QgfCBudWxsID0gbnVsbDtcbiAgaW5pdGlhbFdpZGdldE1hbmlmZXN0TGlzdDogV2lkZ2V0TWFuaWZlc3RbXSA9IFtdO1xuICBtb3ZlOiB7XG4gICAgaW5pdGlhbFg6IG51bWJlcjtcbiAgICBpbml0aWFsWTogbnVtYmVyO1xuICAgIHByZXZpb3VzWDogbnVtYmVyO1xuICAgIHByZXZpb3VzWTogbnVtYmVyO1xuICB9ID0ge1xuICAgIGluaXRpYWxYOiAtMSxcbiAgICBpbml0aWFsWTogLTEsXG4gICAgcHJldmlvdXNYOiAtMSxcbiAgICBwcmV2aW91c1k6IC0xXG4gIH07XG4gIGdyaWRUZW1wbGF0ZVJvd3MkOiBPYnNlcnZhYmxlPHN0cmluZz47XG4gIGdyaWRUZW1wbGF0ZUNvbHVtbnMkOiBPYnNlcnZhYmxlPHN0cmluZz47XG4gIERhc2hib2FyZEdyaWRMYXlvdXQgPSBEYXNoYm9hcmRHcmlkTGF5b3V0O1xuICBsYXlvdXQ6IERhc2hib2FyZEdyaWRMYXlvdXQgPSBEYXNoYm9hcmRHcmlkTGF5b3V0Lk1BTlVBTDtcbiAgYmFja2dyb3VuZEFyZWEkOiBPYnNlcnZhYmxlPHN0cmluZz47XG4gIHByaXZhdGUgY29uZmlybVJlbW92ZVJlZj86IE92ZXJsYXlSZWY7XG4gIEFycmF5OiBhbnk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzdG9yZTogU3RvcmU8YW55PiwgcHJpdmF0ZSBvdmVybGF5OiBPdmVybGF5LCBwcml2YXRlIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMubG9hZGluZyQgPSB0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMubG9hZGluZyk7XG4gICAgdGhpcy5kYXRhRmV0Y2hpbmckID0gdGhpcy5zdG9yZS5zZWxlY3QoU2VhcmNoU2VsZWN0b3JzLnNlYXJjaExvYWRpbmcpLnBpcGUoZGVsYXkoMTApKTtcbiAgICB0aGlzLm1vZGVFZGl0aW9uJCA9IHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5kYXNoYm9hcmRFZGl0aW9uTW9kZSk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIHRoaXMubW9kZUVkaXRpb24kLnN1YnNjcmliZSgobW9kZSkgPT4ge1xuICAgICAgICB0aGlzLm1vZGVFZGl0aW9uID0gbW9kZTtcbiAgICAgICAgaWYgKCFtb2RlKSB7XG4gICAgICAgICAgdGhpcy5jbGVhckFjdGlvbnMoKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuICAgIHRoaXMudGFyZ2V0SW5kZXhlcyQgPSB0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMudGFyZ2V0VGVuYW50c0luZGV4ZXMpO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICB0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMuZGFzaGJvYXJkQ2VsbFBhcmFtcykuc3Vic2NyaWJlKChwYXJhbXMpID0+ICh0aGlzLmRhc2hib2FyZFBhcmFtcyA9IHBhcmFtcykpXG4gICAgKTtcbiAgICB0aGlzLndpbmRvd01hbmlmZXN0JCA9IHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy53aW5kb3dNYW5pZmVzdCkucGlwZShcbiAgICAgIGNvbWJpbmVMYXRlc3RXaXRoKHRoaXMuc3RhdGljRGFzaGJvYXJkJCksXG4gICAgICBzd2l0Y2hNYXAoKFt3aW5kb3dNYW5pZmVzdCwgc3RhdGljRGFzaGJvYXJkXSkgPT4gKCFzdGF0aWNEYXNoYm9hcmQgPyBvZih3aW5kb3dNYW5pZmVzdCkgOiBvZihzdGF0aWNEYXNoYm9hcmQpKSksXG4gICAgICBtYXAoKF93TWFuaWZlc3QpID0+IHtcbiAgICAgICAgY29uc3Qgd01hbmlmZXN0ID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShfd01hbmlmZXN0KSk7XG4gICAgICAgIGlmICh3TWFuaWZlc3QuZ3JpZD8ubGF5b3V0ICYmIHdNYW5pZmVzdC5ncmlkLmxheW91dCAhPT0gRGFzaGJvYXJkR3JpZExheW91dC5NQU5VQUwpIHtcbiAgICAgICAgICAvLyBDb21wbGV0ZSB3aXRoIHBsYWNlaG9sZGVyc1xuICAgICAgICAgIGNvbnN0IHNpemUgPSBXaWRnZXRQbGFjZW1lbnRVdGlscy5wbGFjZXNGb3JMYXlvdXQod01hbmlmZXN0LmdyaWQubGF5b3V0KTtcbiAgICAgICAgICBjb25zdCBwbGFjZXMgPSBXaWRnZXRQbGFjZW1lbnRVdGlscy5wbGFjZW1lbnRPcHRpb25zKFxuICAgICAgICAgICAgeyB0eXBlOiAnZmlsbGVyJywgbGF5b3V0OiB7IHg6IDEsIHk6IDEsIHdpZHRoOiAxLCBoZWlnaHQ6IDEgfSB9LFxuICAgICAgICAgICAgd01hbmlmZXN0LmdyaWQubGF5b3V0LFxuICAgICAgICAgICAgd01hbmlmZXN0LmdyaWRcbiAgICAgICAgICApO1xuICAgICAgICAgIGxldCBhZGRlZCA9IHRydWU7XG4gICAgICAgICAgd2hpbGUgKHdNYW5pZmVzdC53aWRnZXRzLmxlbmd0aCA8IHNpemUgJiYgYWRkZWQpIHtcbiAgICAgICAgICAgIGFkZGVkID0gZmFsc2U7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBsYWNlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICBjb25zdCBwb3RlbnRpYWwgPSB7IC4uLnBsYWNlc1tpXSwgb3B0aW9uczogeyBpbmRleDogaSB9IH07XG4gICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICB3TWFuaWZlc3Qud2lkZ2V0c1xuICAgICAgICAgICAgICAgICAgLm1hcCgod2lkZ2V0OiBXaWRnZXRNYW5pZmVzdCkgPT4gV2lkZ2V0UGxhY2VtZW50VXRpbHMuYXJlRGlzam9pbnQod2lkZ2V0LCBwb3RlbnRpYWwpKVxuICAgICAgICAgICAgICAgICAgLnJlZHVjZSgoYTogYm9vbGVhbiwgYjogYm9vbGVhbikgPT4gYSAmJiBiLCB0cnVlKVxuICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICB3TWFuaWZlc3Qud2lkZ2V0cy5wdXNoKHBvdGVudGlhbCk7XG4gICAgICAgICAgICAgICAgYWRkZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB3TWFuaWZlc3Q7XG4gICAgICB9KSxcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKChwLCBjKSA9PiBlcXVhbChwLCBjKSlcbiAgICApO1xuICAgIHRoaXMubm9uRmlsbGVyV2lkZ2V0cyQgPSB0aGlzLndpbmRvd01hbmlmZXN0JC5waXBlKFxuICAgICAgbWFwKCh3TWFuaWZlc3QpID0+IHdNYW5pZmVzdC53aWRnZXRzLmZpbHRlcigodykgPT4gdy50eXBlICE9PSAnZmlsbGVyJykubGVuZ3RoKVxuICAgICk7XG5cbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgdGhpcy5zdGF0aWNEYXNoYm9hcmQkLnN1YnNjcmliZSgobWFuaWZlc3QpID0+IHtcbiAgICAgICAgaWYgKCEhbWFuaWZlc3QpIHtcbiAgICAgICAgICBjb25zdCBnZXREYXRhQWN0aW9ucyA9IChcbiAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgIC4uLm5ldyBTZXQoXG4gICAgICAgICAgICAgICAgICAobWFuaWZlc3Qud2lkZ2V0cyA/PyAoW10gYXMgV2lkZ2V0TWFuaWZlc3RbXSkpXG4gICAgICAgICAgICAgICAgICAgIC5yZWR1Y2UoKHAsIGMpID0+IFsuLi5wLCBjXSwgW10gYXMgV2lkZ2V0TWFuaWZlc3RbXSlcbiAgICAgICAgICAgICAgICAgICAgLm1hcCgod2lkTWFuaWZlc3QpID0+IHdpZE1hbmlmZXN0LmRhdGFzb3VyY2UpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBdIGFzIChzdHJpbmcgfCBzdHJpbmdbXSlbXVxuICAgICAgICAgICAgKS5yZWR1Y2UoKHAsIGMpID0+IFsuLi5wLCAuLi4oQXJyYXkuaXNBcnJheShjKSA/IGMgOiBbY10pXSwgW10pIGFzIHN0cmluZ1tdXG4gICAgICAgICAgKS5tYXAoKHJlc3VsdFNldCkgPT4gRGFzaGJvYXJkQWN0aW9ucy5hc3NlcnRSZXN1bHRTZXRzKHsgaWQ6IHJlc3VsdFNldCB9KSk7XG5cbiAgICAgICAgICBnZXREYXRhQWN0aW9ucy5mb3JFYWNoKChhY3Rpb24pID0+IHRoaXMuc3RvcmUuZGlzcGF0Y2goYWN0aW9uKSk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcblxuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goRmllbGRBY3Rpb25zLmxvYWQoKSk7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChDbGFzc0FjdGlvbnMubG9hZCgpKTtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKENhdGVnb3J5QWN0aW9ucy5sb2FkKCkpO1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goQ29uZmlnQWN0aW9ucy5nZXRNYXBTdHlsZXMoKSk7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChEYXRhU291cmNlQWN0aW9ucy5sb2FkKCkpO1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goUmVsYXRpb25UeXBlc0FjdGlvbnMubG9hZCgpKTtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKENvbmZpZ0FjdGlvbnMubG9hZEN1c3RvbWl6YXRpb24oKSk7XG5cbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgZnJvbUV2ZW50KHdpbmRvdywgJ3Jlc2l6ZScpXG4gICAgICAgIC5waXBlKGF1ZGl0VGltZSgxMDApKVxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICB0aGlzLmNhbGN1bGF0ZVZpZXcoKTtcbiAgICAgICAgfSlcbiAgICApO1xuXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIGNvbWJpbmVMYXRlc3QoW3RoaXMud2luZG93TWFuaWZlc3QkLCB0aGlzLm1vZGVFZGl0aW9uJF0pXG4gICAgICAgIC5waXBlKGF1ZGl0VGltZSgxMDApKVxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICB0aGlzLmNhbGN1bGF0ZVZpZXcoKTtcbiAgICAgICAgfSlcbiAgICApO1xuXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIGZyb21FdmVudCh3aW5kb3csICdrZXlkb3duJylcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgbWFwKCgkZXZlbnQ6IEV2ZW50KSA9PiAkZXZlbnQgYXMgS2V5Ym9hcmRFdmVudCksXG4gICAgICAgICAgZmlsdGVyKCgkZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+ICRldmVudC5rZXkgPT09ICdMJyAmJiAkZXZlbnQuY3RybEtleSAmJiAkZXZlbnQuc2hpZnRLZXkpXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLnN0b3JlLmRpc3BhdGNoKERhc2hib2FyZEFjdGlvbnMudG9nZ2xlRWRpdGlvbk1vZGUoe30pKSlcbiAgICApO1xuXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIGZyb21FdmVudCh3aW5kb3csICdtb3VzZXVwJykuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5jbGVhckFjdGlvbnMoKTtcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICB0aGlzLnN0b3JlLnNlbGVjdChDb25maWdTZWxlY3RvcnMuYnJlYWtwb2ludCkuc3Vic2NyaWJlKChicCkgPT4ge1xuICAgICAgICB0aGlzLmJyZWFrcG9pbnQgPSBicDtcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICB0aGlzLndpbmRvd01hbmlmZXN0JC5zdWJzY3JpYmUoKG1hbmlmZXN0KSA9PiB7XG4gICAgICAgIHRoaXMubWFuaWZlc3QgPSBtYW5pZmVzdDtcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICB0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMuZ3JpZExheW91dCkuc3Vic2NyaWJlKChsYXlvdXQpID0+IHtcbiAgICAgICAgdGhpcy5sYXlvdXQgPSBsYXlvdXQ7XG4gICAgICB9KVxuICAgICk7XG5cbiAgICB0aGlzLmdyaWRUZW1wbGF0ZVJvd3MkID0gY29tYmluZUxhdGVzdChbdGhpcy53aW5kb3dNYW5pZmVzdCQsIHRoaXMuc3RhY2tlZCRdKS5waXBlKFxuICAgICAgbWFwKChbbWFuaWZlc3QsIHN0YWNrZWRdKSA9PlxuICAgICAgICB0aGlzLmdlbmVyYXRlUm93cyhcbiAgICAgICAgICBzdGFja2VkICYmIHRoaXMubWFuaWZlc3RcbiAgICAgICAgICAgID8gdGhpcy5tYW5pZmVzdD8ud2lkZ2V0cy5tYXAoKHdtKSA9PiB3bS5sYXlvdXQuaGVpZ2h0KS5yZWR1Y2UoKHdtMSwgd20yKSA9PiB3bTEgKyB3bTIsIDApXG4gICAgICAgICAgICA6IG1hbmlmZXN0LmdyaWQ/LnJvd3MgPz8gREVGQVVMVF9ST1dTX05VTUJFUlxuICAgICAgICApXG4gICAgICApXG4gICAgKTtcblxuICAgIHRoaXMuZ3JpZFRlbXBsYXRlQ29sdW1ucyQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLndpbmRvd01hbmlmZXN0JCwgdGhpcy5zdGFja2VkJF0pLnBpcGUoXG4gICAgICBtYXAoKFttYW5pZmVzdCwgc3RhY2tlZF0pID0+IHRoaXMuZ2VuZXJhdGVDb2x1bW5zKHN0YWNrZWQgPyAxIDogbWFuaWZlc3QuZ3JpZD8uY29sdW1ucyB8fCBERUZBVUxUX0NPTFVNTlNfTlVNQkVSKSlcbiAgICApO1xuXG4gICAgdGhpcy5iYWNrZ3JvdW5kQXJlYSQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLndpbmRvd01hbmlmZXN0JCwgdGhpcy5zdGFja2VkJF0pLnBpcGUoXG4gICAgICBtYXAoKFttYW5pZmVzdCwgc3RhY2tlZF0pID0+XG4gICAgICAgICFzdGFja2VkXG4gICAgICAgICAgPyBgMy8zLyR7KG1hbmlmZXN0LmdyaWQ/LnJvd3MgPz8gREVGQVVMVF9ST1dTX05VTUJFUikgLSAxfS8ke1xuICAgICAgICAgICAgICAobWFuaWZlc3QuZ3JpZD8uY29sdW1ucyA/PyBERUZBVUxUX0NPTFVNTlNfTlVNQkVSKSAtIDFcbiAgICAgICAgICAgIH1gXG4gICAgICAgICAgOiBgMy8xLyR7KG1hbmlmZXN0LmdyaWQ/LmNvbHVtbnMgPz8gREVGQVVMVF9DT0xVTU5TX05VTUJFUikgLSAxfS8xYFxuICAgICAgKVxuICAgICk7XG5cbiAgICB0aGlzLnNlcGFyYXRvcnMkID0gdGhpcy5zdG9yZVxuICAgICAgLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMuZ3JpZExheW91dClcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKGxheW91dCkgPT5cbiAgICAgICAgICBsYXlvdXQgPT09IERhc2hib2FyZEdyaWRMYXlvdXQuTUFOVUFMXG4gICAgICAgICAgICA/IFtdXG4gICAgICAgICAgICA6IFdpZGdldFBsYWNlbWVudFV0aWxzLmdldExheW91dFNpemUobGF5b3V0LCB7IHJvd3M6IDEsIGNvbHVtbnM6IDEgfSlcbiAgICAgICAgKVxuICAgICAgKTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIGlmICh0aGlzLmRpc3BsYXlPcHRpb25zKVxuICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChcbiAgICAgICAgRGFzaGJvYXJkQWN0aW9ucy51cGRhdGVEaXNwbGF5T3B0aW9ucyh7IG1vZGU6IFZpZXdNb2RlLkNVU1RPTSwgY3VzdG9tRGlzcGxheTogdGhpcy5kaXNwbGF5T3B0aW9ucyB9KVxuICAgICAgKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICB0aGlzLmNhbkNhbGN1bGF0ZVZpZXcgPSB0cnVlO1xuICB9XG5cbiAgLyoqKlxuICAgKiBNYW5hZ2UgZGlzcGxheVxuICAgKi9cblxuICBjYWxjdWxhdGVWaWV3KCkge1xuICAgIGlmICh0aGlzLmNhbkNhbGN1bGF0ZVZpZXcpIHtcbiAgICAgIGxldCBlbGVtZW50ID0gdGhpcy5ncmlkUmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICB3aGlsZSAoZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQgPT09IDAgJiYgISFlbGVtZW50LnBhcmVudEVsZW1lbnQpIHtcbiAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQucGFyZW50RWxlbWVudDtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZ3JpZFdpZHRoID0gKDxIVE1MRWxlbWVudD5lbGVtZW50KS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aDtcbiAgICAgIGNvbnN0IG1vYmlsZU1vZGUgPSBncmlkV2lkdGggPCB0aGlzLmJyZWFrcG9pbnQ7XG4gICAgICB0aGlzLnN0YWNrZWQkLm5leHQodGhpcy5kYXNoYm9hcmRQYXJhbXMubW9iaWxlTW9kZSAmJiAhdGhpcy5tb2RlRWRpdGlvbik7XG4gICAgICBjb25zdCByb3dzID0gIXRoaXMuZGlzcGxheUlzU3RhY2tlZFxuICAgICAgICA/ICghIXRoaXMubWFuaWZlc3QgJiYgISF0aGlzLm1hbmlmZXN0LmdyaWQgJiYgdGhpcy5tYW5pZmVzdC5ncmlkLnJvd3MpIHx8IERFRkFVTFRfUk9XU19OVU1CRVJcbiAgICAgICAgOiB0aGlzLm1hbmlmZXN0Py53aWRnZXRzLnJlZHVjZSgocDogbnVtYmVyLCBjOiBXaWRnZXRNYW5pZmVzdCkgPT4gcCArIGMubGF5b3V0LmhlaWdodCwgMCkgPz8gMTtcblxuICAgICAgdGhpcy5wYXJhbXMgPSB7XG4gICAgICAgIGdyaWRXaWR0aCxcbiAgICAgICAgLy8gQ2FsY3VsYXRlIGhlaWdodCB0byBwYXJlbnQgdGhlIHBhcmVudCdzXG4gICAgICAgIGdyaWRIZWlnaHQ6IGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0LFxuICAgICAgICBncmlkR2FwOiAxLFxuICAgICAgICBjb2x1bW5zOiAoISF0aGlzLm1hbmlmZXN0ICYmICEhdGhpcy5tYW5pZmVzdC5ncmlkICYmIHRoaXMubWFuaWZlc3QuZ3JpZC5jb2x1bW5zKSB8fCBERUZBVUxUX0NPTFVNTlNfTlVNQkVSLFxuICAgICAgICBjZWxsSGVpZ2h0OiAxLFxuICAgICAgICByb3dzLFxuICAgICAgICBjZWxsV2lkdGg6IDAsXG4gICAgICAgIG9mZnNldExlZnQ6IHRoaXMuZ3JpZFJlZi5uYXRpdmVFbGVtZW50Lm9mZnNldExlZnQsXG4gICAgICAgIG9mZnNldFRvcDogdGhpcy5ncmlkUmVmLm5hdGl2ZUVsZW1lbnQub2Zmc2V0VG9wLFxuICAgICAgICBtb2JpbGVNb2RlXG4gICAgICB9O1xuICAgICAgdGhpcy5wYXJhbXMuZ3JpZEdhcCA9XG4gICAgICAgIHRoaXMucGFyYW1zLnJvd3MgKiB0aGlzLnBhcmFtcy5jZWxsSGVpZ2h0IDwgdGhpcy5wYXJhbXMuZ3JpZEhlaWdodFxuICAgICAgICAgID8gISF0aGlzLm1hbmlmZXN0ICYmICEhdGhpcy5tYW5pZmVzdC5ncmlkXG4gICAgICAgICAgICA/IHRoaXMubWFuaWZlc3QuZ3JpZC5nYXAgfHwgREVGQVVMVF9HQVBfUFhcbiAgICAgICAgICAgIDogREVGQVVMVF9HQVBfUFhcbiAgICAgICAgICA6IDA7XG4gICAgICB0aGlzLnBhcmFtcy5jZWxsSGVpZ2h0ID1cbiAgICAgICAgKHRoaXMucGFyYW1zLmdyaWRIZWlnaHQgLSAodGhpcy5wYXJhbXMucm93cyAtIDEpICogdGhpcy5wYXJhbXMuZ3JpZEdhcCkgLyB0aGlzLnBhcmFtcy5yb3dzO1xuICAgICAgdGhpcy5wYXJhbXMuY2VsbFdpZHRoID1cbiAgICAgICAgKHRoaXMucGFyYW1zLmdyaWRXaWR0aCAtICh0aGlzLnBhcmFtcy5jb2x1bW5zIC0gMSkgKiB0aGlzLnBhcmFtcy5ncmlkR2FwKSAvIHRoaXMucGFyYW1zLmNvbHVtbnM7XG5cbiAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goRGFzaGJvYXJkQWN0aW9ucy51cGRhdGVEYXNoYm9hcmRQYXJhbXMoeyBwYXJhbXM6IHRoaXMucGFyYW1zIH0pKTtcblxuICAgICAgdGhpcy5yb3dzLm5leHQodGhpcy5wYXJhbXMucm93cyk7XG4gICAgICB0aGlzLnJvd0hlaWdodC5uZXh0KHRoaXMucGFyYW1zLmNlbGxIZWlnaHQpO1xuICAgIH1cbiAgfVxuXG4gIGdldCBkaXNwbGF5SXNTdGFja2VkKCkge1xuICAgIHJldHVybiB0aGlzLnN0YWNrZWQkLmdldFZhbHVlKCk7XG4gIH1cblxuICBncmlkQ29sdW1uKGxheW91dDogV2lkZ2V0TGF5b3V0KTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5kaXNwbGF5SXNTdGFja2VkIHx8ICFsYXlvdXQpIHtcbiAgICAgIHJldHVybiAnMSAvIDEnO1xuICAgIH1cbiAgICBpZiAobGF5b3V0LndpZHRoID4gMSkge1xuICAgICAgcmV0dXJuIGAke01hdGgubWluKGxheW91dC54LCB0aGlzLmRhc2hib2FyZFBhcmFtcy5jb2x1bW5zIC0gbGF5b3V0LndpZHRoICsgMSl9IC8gJHtNYXRoLm1pbihcbiAgICAgICAgbGF5b3V0LnggKyBsYXlvdXQud2lkdGgsXG4gICAgICAgIHRoaXMuZGFzaGJvYXJkUGFyYW1zLmNvbHVtbnMgKyAxXG4gICAgICApfWA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBgJHtsYXlvdXQueH1gO1xuICAgIH1cbiAgfVxuXG4gIGdyaWRSb3cobGF5b3V0OiBXaWRnZXRMYXlvdXQpOiBzdHJpbmcge1xuICAgIGlmICghbGF5b3V0KSB7XG4gICAgICByZXR1cm4gJzEnO1xuICAgIH1cbiAgICBpZiAodGhpcy5kaXNwbGF5SXNTdGFja2VkKSB7XG4gICAgICBjb25zdCBwcmV2aW91c0hlaWdodCA9IHRoaXMubWFuaWZlc3Q/LndpZGdldHNcbiAgICAgICAgLmZpbHRlcigod206IFdpZGdldE1hbmlmZXN0KSA9PiAod20ubGF5b3V0LnkgPT09IGxheW91dC55ICYmIHdtLmxheW91dC54IDwgbGF5b3V0LngpIHx8IHdtLmxheW91dC55IDwgbGF5b3V0LnkpXG4gICAgICAgIC5yZWR1Y2UoKHA6IG51bWJlciwgYzogV2lkZ2V0TWFuaWZlc3QpID0+IHAgKyBjLmxheW91dC5oZWlnaHQsIDEpO1xuICAgICAgcmV0dXJuIGAke3ByZXZpb3VzSGVpZ2h0ID8/IDF9IC8gJHsocHJldmlvdXNIZWlnaHQgPz8gMSkgKyBsYXlvdXQuaGVpZ2h0fWA7XG4gICAgfVxuICAgIGlmIChsYXlvdXQuaGVpZ2h0ID4gMSkge1xuICAgICAgcmV0dXJuIGAke01hdGgubWF4KDEsIE1hdGgubWluKGxheW91dC55LCB0aGlzLmRhc2hib2FyZFBhcmFtcy5yb3dzIC0gbGF5b3V0LmhlaWdodCArIDEpKX0gLyAke01hdGgubWluKFxuICAgICAgICBsYXlvdXQueSArIGxheW91dC5oZWlnaHQsXG4gICAgICAgIHRoaXMuZGFzaGJvYXJkUGFyYW1zLnJvd3MgKyAxXG4gICAgICApfWA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBgJHtsYXlvdXQueX1gO1xuICAgIH1cbiAgfVxuXG4gIGdlbmVyYXRlUm93cyhyb3dzOiBudW1iZXIpOiBzdHJpbmcge1xuICAgIHJldHVybiBBcnJheShyb3dzKS5maWxsKCcxZnInKS5qb2luKCcgJyk7XG4gIH1cblxuICBnZW5lcmF0ZUNvbHVtbnMoY29sdW1uczogbnVtYmVyKTogc3RyaW5nIHtcbiAgICByZXR1cm4gQXJyYXkoY29sdW1ucykuZmlsbCgnMWZyJykuam9pbignICcpO1xuICB9XG5cbiAgLyoqKlxuICAgKiBEaXJlY3QgYWN0aW9ucyBvbiB3aWRnZXRzXG4gICAqL1xuXG4gIHJlbW92ZShpOiBudW1iZXIpIHtcbiAgICBjb25zdCBsaXN0V2lkZ2V0TWFuaWZlc3RzID0gWy4uLih0aGlzLm1hbmlmZXN0IHx8IHsgd2lkZ2V0czogW10gfSkud2lkZ2V0c107XG4gICAgbGlzdFdpZGdldE1hbmlmZXN0cy5zcGxpY2UoaSwgMSkuZmlsdGVyKCh3aWRnZXQpID0+IHdpZGdldC50eXBlICE9PSAnZmlsbGVyJyk7XG5cbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKFxuICAgICAgRGFzaGJvYXJkQWN0aW9ucy51cGRhdGVEYXNoYm9hcmRNYW5pZmVzdCh7XG4gICAgICAgIG1hbmlmZXN0OiB7XG4gICAgICAgICAgLi4udGhpcy5tYW5pZmVzdCxcbiAgICAgICAgICB3aWRnZXRzOiBsaXN0V2lkZ2V0TWFuaWZlc3RzXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIG1vdmVJbk5ld1dpbmRvdyh3aWRnZXRJbmRleDogbnVtYmVyLCB0YXJnZXRJbmRleDogbnVtYmVyKSB7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChEYXNoYm9hcmRBY3Rpb25zLm1vdmVXaWRnZXQoeyB3aWRnZXRJbmRleCwgdGFyZ2V0SW5kZXggfSkpO1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goRGFzaGJvYXJkQWN0aW9ucy50b2dnbGVFZGl0aW9uTW9kZSh7IGZvcmNlOiBmYWxzZSB9KSk7XG4gIH1cblxuICBtYXhpbWl6ZSh3aWRnZXRJbmRleDogbnVtYmVyKSB7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChEYXNoYm9hcmRBY3Rpb25zLm1heGltaXplV2lkZ2V0KHsgd2lkZ2V0SW5kZXggfSkpO1xuICB9XG5cbiAgLyoqKlxuICAgKiBNYW5hZ2UgZHJhZyBuIGRyb3AsIG1vdmUsIHJlc2l6ZVxuICAgKi9cblxuICBwcmVwYXJlTW9kaWZpY2F0aW9uKCRldmVudDogTW91c2VFdmVudCwgaW5kZXhNYW5pZmVzdDogbnVtYmVyKSB7XG4gICAgdGhpcy5tb3ZlLmluaXRpYWxYID0gJGV2ZW50LmNsaWVudFg7XG4gICAgdGhpcy5tb3ZlLmluaXRpYWxZID0gJGV2ZW50LmNsaWVudFk7XG4gICAgdGhpcy5pbml0aWFsV2lkZ2V0TWFuaWZlc3RMaXN0ID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSgodGhpcy5tYW5pZmVzdCB8fCB7IHdpZGdldHM6IFtdIH0pLndpZGdldHMpKTtcbiAgICB0aGlzLmN1cnJlbnRseU1vZGlmaWVkTWFuaWZlc3QgPSB0aGlzLmluaXRpYWxXaWRnZXRNYW5pZmVzdExpc3Quc3BsaWNlKGluZGV4TWFuaWZlc3QsIDEpWzBdO1xuICAgIC8vIGNvbnNvbGUubG9nKCdwcmVwYXJlJywgdGhpcy5jdXJyZW50bHlNb2RpZmllZE1hbmlmZXN0LCB0aGlzLmluaXRpYWxXaWRnZXRNYW5pZmVzdExpc3QpO1xuICB9XG5cbiAgc3RhcnRSZXNpemUoJGV2ZW50OiBNb3VzZUV2ZW50LCBpbmRleE1hbmlmZXN0OiBudW1iZXIsIGRpcmVjdGlvbjogc3RyaW5nKSB7XG4gICAgdGhpcy5hY3Rpb25UeXBlID0gZGlyZWN0aW9uO1xuICAgIHRoaXMucHJlcGFyZU1vZGlmaWNhdGlvbigkZXZlbnQsIGluZGV4TWFuaWZlc3QpO1xuICAgIC8vIGNvbnNvbGUubG9nKCdzdGFydCByZXNpemUnLCB0aGlzLmN1cnJlbnRseU1vZGlmaWVkTWFuaWZlc3QsIHRoaXMuaW5pdGlhbFdpZGdldE1hbmlmZXN0TGlzdCk7XG4gIH1cblxuICBkcmFnU3RhcnQoJGV2ZW50OiBEcmFnRXZlbnQsIGluZGV4TWFuaWZlc3Q6IG51bWJlcikge1xuICAgIHRoaXMuYWN0aW9uVHlwZSA9ICdtb3ZlJztcbiAgICB0aGlzLnByZXBhcmVNb2RpZmljYXRpb24oJGV2ZW50LCBpbmRleE1hbmlmZXN0KTtcbiAgICBEYXNoYm9hcmRDb21wb25lbnQuYWRkVHJhbnNmZXJNYW5pZmVzdE1ldGFkYXRhKCRldmVudCwgdGhpcy5jdXJyZW50bHlNb2RpZmllZE1hbmlmZXN0ID8/ICh7fSBhcyBXaWRnZXRNYW5pZmVzdCkpO1xuICAgIC8vIGNvbnNvbGUubG9nKCdzdGFydCBtb3ZlJywgdGhpcy5jdXJyZW50bHlNb2RpZmllZE1hbmlmZXN0LCB0aGlzLmluaXRpYWxXaWRnZXRNYW5pZmVzdExpc3QpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgYWRkVHJhbnNmZXJNYW5pZmVzdE1ldGFkYXRhKCRldmVudDogRHJhZ0V2ZW50LCBtYW5pZmVzdDogV2lkZ2V0TWFuaWZlc3QpIHtcbiAgICBpZiAoISEkZXZlbnQgJiYgISEkZXZlbnQuZGF0YVRyYW5zZmVyICYmICEkZXZlbnQuZGF0YVRyYW5zZmVyLnR5cGVzLmluY2x1ZGVzKE1JTUVfVFlQRV9XSURHRVRfTUFOSUZFU1QpKSB7XG4gICAgICAkZXZlbnQuZGF0YVRyYW5zZmVyLnNldERhdGEoTUlNRV9UWVBFX1dJREdFVF9NQU5JRkVTVCwgSlNPTi5zdHJpbmdpZnkobWFuaWZlc3QpKTtcbiAgICAgICRldmVudC5kYXRhVHJhbnNmZXIuc2V0RGF0YShNSU1FX1RZUEVfV0lER0VUX1RZUEUgKyBtYW5pZmVzdC50eXBlLCAndW51c2VkJyk7XG4gICAgICAvLyBQYXNzaW5nIHdpZGdldCBzaXplIGFzIGEgbWltZSB0eXBlLCBzbyB0aGF0IHdlIGNhbiBieXBhc3Mgc2VjdXJpdHkgZm9yIHBsYWNlaG9sZGVyIHNpemUgYXQgdGhlIGFycml2YWwgb2YgdGhlIGRyYWdcbiAgICAgICRldmVudC5kYXRhVHJhbnNmZXIuc2V0RGF0YShcbiAgICAgICAgTUlNRV9UWVBFX1dJREdFVF9TSVpFICsgYCR7bWFuaWZlc3QubGF5b3V0LndpZHRofS0ke21hbmlmZXN0LmxheW91dC5oZWlnaHR9YCxcbiAgICAgICAgJ3VzZWxlc3MnIC8vIGRhdGEgaXMgaW4gdGhlIG1pbWUgdHlwZVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBkcmFnRW50ZXIoJGV2ZW50OiBEcmFnRXZlbnQsIGZvcmNlOiBib29sZWFuID0gZmFsc2UpIHtcbiAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICBjb25zdCB0eXBlcyA9ICgkZXZlbnQuZGF0YVRyYW5zZmVyIHx8IHsgdHlwZXM6IFsnJ10gfSkudHlwZXM7XG5cbiAgICBpZiAodHlwZXMuaW5jbHVkZXMoTUlNRV9UWVBFX1dJREdFVF9NQU5JRkVTVCkpIHtcbiAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goRGFzaGJvYXJkQWN0aW9ucy50b2dnbGVFZGl0aW9uTW9kZSh7IGZvcmNlOiB0cnVlIH0pKTtcbiAgICAgIHRoaXMuYWN0aW9uVHlwZSA9ICdtb3ZlJztcbiAgICB9XG4gIH1cblxuICBjaGVja0ZvckRyYWdFbnRlcigkZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICBpZiAoIXRoaXMuY3VycmVudGx5TW9kaWZpZWRNYW5pZmVzdCkge1xuICAgICAgLy8gY3JlYXRlIHBsYWNlaG9sZGVyIGFzIGEgZHJhZyBlbnRlcmVkIHRoZSBjb21wb25lbnQsIGdvIGludG8gZWRpdGlvbiBtb2RlIGFuZCBtb3ZlIGFjdGlvbiBpZiBpdCdzIGEgd2lkZ2V0IGJlaW5nIGRyYWdnZWRcbiAgICAgIGNvbnN0IHR5cGVzID0gKCgkZXZlbnQgYXMgRHJhZ0V2ZW50KS5kYXRhVHJhbnNmZXIgfHwgeyB0eXBlczogWycnXSB9KS50eXBlcztcbiAgICAgIGlmICh0eXBlcy5pbmNsdWRlcyhNSU1FX1RZUEVfV0lER0VUX01BTklGRVNUKSkge1xuICAgICAgICB0aGlzLmFjdGlvblR5cGUgPSAnbW92ZSc7XG4gICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goRGFzaGJvYXJkQWN0aW9ucy50b2dnbGVFZGl0aW9uTW9kZSh7IGZvcmNlOiB0cnVlIH0pKTtcblxuICAgICAgICAvLyBPbiBkcmFnIGVudGVyLCB3ZSBvbmx5IGNhbiBwdXQgYSBwbGFjZWhvbGRlciwgc2luY2UgZm9yIHNlY3VyaXR5IHJlYXNvbnMsIHRoZSBjb250ZW50IG9mIHRoZSBkYXRhLXRyYW5zZmVyIGlzIG5vdCBhdmFpbGFibGVcbiAgICAgICAgdGhpcy5tb3ZlLmluaXRpYWxYID0gdGhpcy5kYXNoYm9hcmRQYXJhbXMub2Zmc2V0TGVmdDtcbiAgICAgICAgdGhpcy5tb3ZlLmluaXRpYWxZID0gdGhpcy5kYXNoYm9hcmRQYXJhbXMub2Zmc2V0VG9wO1xuICAgICAgICBjb25zdCB0YXJnZXQgPSB0aGlzLmdldFRhcmdldCgkZXZlbnQsIGZhbHNlKTtcbiAgICAgICAgdGhpcy5jdXJyZW50bHlNb2RpZmllZE1hbmlmZXN0ID0ge1xuICAgICAgICAgIHR5cGU6ICdwbGFjZWhvbGRlcicsXG4gICAgICAgICAgbGF5b3V0OiB7IHg6IHRhcmdldD8ueCA/PyAwLCB5OiB0YXJnZXQ/LnkgPz8gMCwgd2lkdGg6IDEsIGhlaWdodDogMSB9XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuaW5pdGlhbFdpZGdldE1hbmlmZXN0TGlzdCA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoKHRoaXMubWFuaWZlc3QgfHwgeyB3aWRnZXRzOiBbXSB9KS53aWRnZXRzKSk7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKCdjcmVhdGUgcGxhY2Vob2xkZXInLCB0aGlzLmN1cnJlbnRseU1vZGlmaWVkTWFuaWZlc3QsIHRoaXMuaW5pdGlhbFdpZGdldE1hbmlmZXN0TGlzdCk7XG5cbiAgICAgICAgLy8gV2UgcGFzc2VkIHdpZGdldCBzaXplIGFzIGEgbWltZXR5cGUgc28gdGhhdCB3ZSBjYW4gc3RpbGwgcmVhZCBpdCB3aXRob3V0IHNlY3VyaXR5IGlzc3Vlc1xuICAgICAgICBjb25zdCB3aWRnZXRTaXplTWltZVR5cGUgPSB0eXBlcy5maW5kKCh0eXBlKSA9PiB0eXBlLmluY2x1ZGVzKE1JTUVfVFlQRV9XSURHRVRfU0laRSkpO1xuICAgICAgICBpZiAoISF3aWRnZXRTaXplTWltZVR5cGUpIHtcbiAgICAgICAgICBjb25zdCBbXywgXzIsIHcsIGhdID0gd2lkZ2V0U2l6ZU1pbWVUeXBlLnNwbGl0KCctJyk7XG4gICAgICAgICAgdGhpcy5jdXJyZW50bHlNb2RpZmllZE1hbmlmZXN0LmxheW91dC53aWR0aCA9IHBhcnNlSW50KHcsIDEwKTtcbiAgICAgICAgICB0aGlzLmN1cnJlbnRseU1vZGlmaWVkTWFuaWZlc3QubGF5b3V0LmhlaWdodCA9IHBhcnNlSW50KGgsIDEwKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBVc2UgZ3JpZCBzaXplXG4gICAgICAgICAgY29uc3QgbGF5b3V0ID0gV2lkZ2V0UGxhY2VtZW50VXRpbHMuZ2V0TGF5b3V0U2l6ZSh0aGlzLmxheW91dCwgdGhpcy5kYXNoYm9hcmRQYXJhbXMpW1xuICAgICAgICAgICAgdGhpcy5pbml0aWFsV2lkZ2V0TWFuaWZlc3RMaXN0Lmxlbmd0aFxuICAgICAgICAgIF07XG4gICAgICAgICAgdGhpcy5jdXJyZW50bHlNb2RpZmllZE1hbmlmZXN0LmxheW91dC53aWR0aCA9IGxheW91dC53aWR0aDtcbiAgICAgICAgICB0aGlzLmN1cnJlbnRseU1vZGlmaWVkTWFuaWZlc3QubGF5b3V0LmhlaWdodCA9IGxheW91dC5oZWlnaHQ7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBXZSBwYXNzZWQgdGhlIHR5cGUgYXMgYSBoZWFkZXIgbmFtZSBzbyB0aGF0IHdlIGNhbiBzdGlsbCBhY2Nlc3MgaXQgd2l0aG91dCBzZWN1cml0eSBpc3N1ZXNcbiAgICAgICAgY29uc3Qgd2lkZ2V0VHlwZSA9IHR5cGVzLmZpbmQoKHR5cGUpID0+IHR5cGUuaW5jbHVkZXMoTUlNRV9UWVBFX1dJREdFVF9UWVBFKSk7XG4gICAgICAgIGlmICghIXdpZGdldFR5cGUpIHtcbiAgICAgICAgICBjb25zdCBbXywgXzIsIHR5cGVdID0gd2lkZ2V0VHlwZS5zcGxpdCgnLScpO1xuICAgICAgICAgIHRoaXMuY3VycmVudGx5TW9kaWZpZWRNYW5pZmVzdC50eXBlID0gdHlwZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFJlc2V0IGluaXRpYWwgcG9zaXRpb24gZm9yIHRoZSBvbmUgd2UganVzdCBjYWxjdWxhdGVkLCBzbyB3ZSBjYW4gY29udGludWUgcHJvcGVybHkgbW92ZSB0aGUgd2lkZ2V0XG4gICAgICAgIHRoaXMubW92ZS5pbml0aWFsWCA9ICRldmVudC5wYWdlWDtcbiAgICAgICAgdGhpcy5tb3ZlLmluaXRpYWxZID0gJGV2ZW50LnBhZ2VZO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGdldFRhcmdldCgkZXZlbnQ6IE1vdXNlRXZlbnQsIG9wdGltaXplID0gdHJ1ZSkge1xuICAgIGNvbnN0IGRYID0gJGV2ZW50LnBhZ2VYIC0gdGhpcy5tb3ZlLmluaXRpYWxYO1xuICAgIGNvbnN0IGRZID0gJGV2ZW50LnBhZ2VZIC0gdGhpcy5tb3ZlLmluaXRpYWxZO1xuXG4gICAgY29uc3QgdGFyZ2V0ID0ge1xuICAgICAgeDpcbiAgICAgICAgZFggPT09IDBcbiAgICAgICAgICA/IDBcbiAgICAgICAgICA6IE1hdGgucm91bmQoXG4gICAgICAgICAgICAgICgoZFggLyBNYXRoLmFicyhkWCkpICogKE1hdGguYWJzKGRYKSAtIDAuNSAqIHRoaXMuZGFzaGJvYXJkUGFyYW1zLmNlbGxXaWR0aCkpIC9cbiAgICAgICAgICAgICAgICAodGhpcy5kYXNoYm9hcmRQYXJhbXMuY2VsbFdpZHRoICsgdGhpcy5kYXNoYm9hcmRQYXJhbXMuZ3JpZEdhcClcbiAgICAgICAgICAgICksXG4gICAgICB5OlxuICAgICAgICBkWSA9PT0gMFxuICAgICAgICAgID8gMFxuICAgICAgICAgIDogTWF0aC5yb3VuZChcbiAgICAgICAgICAgICAgKChkWSAvIE1hdGguYWJzKGRZKSkgKiAoTWF0aC5hYnMoZFkpIC0gMC41ICogdGhpcy5kYXNoYm9hcmRQYXJhbXMuY2VsbEhlaWdodCkpIC9cbiAgICAgICAgICAgICAgICAodGhpcy5kYXNoYm9hcmRQYXJhbXMuY2VsbEhlaWdodCArIHRoaXMuZGFzaGJvYXJkUGFyYW1zLmdyaWRHYXApXG4gICAgICAgICAgICApXG4gICAgfTtcblxuICAgIGlmICghb3B0aW1pemUgfHwgdGFyZ2V0LnggIT09IHRoaXMubW92ZS5wcmV2aW91c1ggfHwgdGFyZ2V0LnkgIT09IHRoaXMubW92ZS5wcmV2aW91c1kpIHtcbiAgICAgIHRoaXMubW92ZS5wcmV2aW91c1ggPSB0YXJnZXQueDtcbiAgICAgIHRoaXMubW92ZS5wcmV2aW91c1kgPSB0YXJnZXQueTtcbiAgICAgIHJldHVybiB0YXJnZXQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBtb3ZpbmdNb3VzZSgkZXZlbnQ6IE1vdXNlRXZlbnQsIG9wdGltaXplID0gdHJ1ZSkge1xuICAgIGlmICh0aGlzLm1vZGVFZGl0aW9uICYmICEhdGhpcy5hY3Rpb25UeXBlKSB7XG4gICAgICBjb25zdCB0YXJnZXQgPSB0aGlzLmdldFRhcmdldCgkZXZlbnQsIG9wdGltaXplKTtcbiAgICAgIGlmICh0YXJnZXQgIT09IG51bGwpIHtcbiAgICAgICAgdGhpcy5jaGVja0ZvckRyYWdFbnRlcigkZXZlbnQpO1xuICAgICAgICBjb25zdCBjYW5kaWRhdGVXaWRnZXQgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMuY3VycmVudGx5TW9kaWZpZWRNYW5pZmVzdCkpO1xuXG4gICAgICAgIHN3aXRjaCAodGhpcy5hY3Rpb25UeXBlKSB7XG4gICAgICAgICAgY2FzZSAncmVzaXplLW53JzpcbiAgICAgICAgICAgIGlmIChjYW5kaWRhdGVXaWRnZXQubGF5b3V0LnggKyB0YXJnZXQueCA+IDAgJiYgY2FuZGlkYXRlV2lkZ2V0LmxheW91dC5oZWlnaHQgLSB0YXJnZXQueSA+IDApIHtcbiAgICAgICAgICAgICAgY2FuZGlkYXRlV2lkZ2V0LmxheW91dC54ICs9IHRhcmdldC54O1xuICAgICAgICAgICAgICBjYW5kaWRhdGVXaWRnZXQubGF5b3V0LnkgKz0gdGFyZ2V0Lnk7XG4gICAgICAgICAgICAgIGNhbmRpZGF0ZVdpZGdldC5sYXlvdXQud2lkdGggLT0gdGFyZ2V0Lng7XG4gICAgICAgICAgICAgIGNhbmRpZGF0ZVdpZGdldC5sYXlvdXQuaGVpZ2h0IC09IHRhcmdldC55O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAncmVzaXplLXN3JzpcbiAgICAgICAgICAgIGlmIChjYW5kaWRhdGVXaWRnZXQubGF5b3V0LndpZHRoIC0gdGFyZ2V0LnggPiAwKSB7XG4gICAgICAgICAgICAgIGNhbmRpZGF0ZVdpZGdldC5sYXlvdXQueCArPSB0YXJnZXQueDtcbiAgICAgICAgICAgICAgY2FuZGlkYXRlV2lkZ2V0LmxheW91dC53aWR0aCAtPSB0YXJnZXQueDtcbiAgICAgICAgICAgICAgY2FuZGlkYXRlV2lkZ2V0LmxheW91dC5oZWlnaHQgKz0gdGFyZ2V0Lnk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlICdyZXNpemUtbmUnOlxuICAgICAgICAgICAgaWYgKGNhbmRpZGF0ZVdpZGdldC5sYXlvdXQuaGVpZ2h0IC0gdGFyZ2V0LnkgPiAwKSB7XG4gICAgICAgICAgICAgIGNhbmRpZGF0ZVdpZGdldC5sYXlvdXQueSArPSB0YXJnZXQueTtcbiAgICAgICAgICAgICAgY2FuZGlkYXRlV2lkZ2V0LmxheW91dC53aWR0aCArPSB0YXJnZXQueDtcbiAgICAgICAgICAgICAgY2FuZGlkYXRlV2lkZ2V0LmxheW91dC5oZWlnaHQgLT0gdGFyZ2V0Lnk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlICdyZXNpemUtc2UnOlxuICAgICAgICAgICAgY2FuZGlkYXRlV2lkZ2V0LmxheW91dC53aWR0aCArPSB0YXJnZXQueDtcbiAgICAgICAgICAgIGNhbmRpZGF0ZVdpZGdldC5sYXlvdXQuaGVpZ2h0ICs9IHRhcmdldC55O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAnbW92ZSc6XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50TWF4WCA9XG4gICAgICAgICAgICAgIE1hdGgubWF4KFxuICAgICAgICAgICAgICAgIHRoaXMubWFuaWZlc3Q/LmdyaWQ/LmNvbHVtbnMgPz8gREVGQVVMVF9DT0xVTU5TX05VTUJFUixcbiAgICAgICAgICAgICAgICAuLi4odGhpcy5tYW5pZmVzdD8ud2lkZ2V0cyA/PyBbXSkubWFwKCh3KSA9PiB3LmxheW91dC53aWR0aCArIHcubGF5b3V0LngpXG4gICAgICAgICAgICAgICkgLVxuICAgICAgICAgICAgICBjYW5kaWRhdGVXaWRnZXQubGF5b3V0LndpZHRoICtcbiAgICAgICAgICAgICAgMTtcbiAgICAgICAgICAgIGNhbmRpZGF0ZVdpZGdldC5sYXlvdXQueCA9IE1hdGgubWF4KDAsIE1hdGgubWluKGNhbmRpZGF0ZVdpZGdldC5sYXlvdXQueCArIHRhcmdldC54LCBjdXJyZW50TWF4WCkpO1xuXG4gICAgICAgICAgICBjb25zdCBjdXJyZW50TWF4WSA9XG4gICAgICAgICAgICAgIE1hdGgubWF4KFxuICAgICAgICAgICAgICAgIHRoaXMubWFuaWZlc3Q/LmdyaWQ/LnJvd3MgPz8gREVGQVVMVF9ST1dTX05VTUJFUixcbiAgICAgICAgICAgICAgICAuLi4odGhpcy5tYW5pZmVzdD8ud2lkZ2V0cyA/PyBbXSkubWFwKCh3KSA9PiB3LmxheW91dC5oZWlnaHQgKyB3LmxheW91dC55KVxuICAgICAgICAgICAgICApIC1cbiAgICAgICAgICAgICAgY2FuZGlkYXRlV2lkZ2V0LmxheW91dC5oZWlnaHQgK1xuICAgICAgICAgICAgICAxO1xuICAgICAgICAgICAgY2FuZGlkYXRlV2lkZ2V0LmxheW91dC55ID0gTWF0aC5tYXgoMCwgTWF0aC5taW4oY2FuZGlkYXRlV2lkZ2V0LmxheW91dC55ICsgdGFyZ2V0LnksIGN1cnJlbnRNYXhZKSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goXG4gICAgICAgICAgRGFzaGJvYXJkQWN0aW9ucy51cGRhdGVEYXNoYm9hcmRNYW5pZmVzdCh7XG4gICAgICAgICAgICBtYW5pZmVzdDogc29sdmVDb2xsaXNpb25zKFxuICAgICAgICAgICAgICBjYW5kaWRhdGVXaWRnZXQsXG4gICAgICAgICAgICAgIHRoaXMuaW5pdGlhbFdpZGdldE1hbmlmZXN0TGlzdCxcbiAgICAgICAgICAgICAgdGhpcy5tYW5pZmVzdCA/PyAoe30gYXMgRGFzaGJvYXJkTWFuaWZlc3QpXG4gICAgICAgICAgICApXG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBkcmFnTW92ZSgkZXZlbnQ6IERyYWdFdmVudCkge1xuICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgIHRoaXMubW92aW5nTW91c2UoJGV2ZW50KTtcbiAgfVxuXG4gIGRyYWdMZWF2ZSgkZXZlbnQ6IERyYWdFdmVudCkge1xuICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBpZiAoJGV2ZW50LmN1cnJlbnRUYXJnZXQuY29udGFpbnMoJGV2ZW50LnJlbGF0ZWRUYXJnZXQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgdHlwZXMgPSAoJGV2ZW50LmRhdGFUcmFuc2ZlciB8fCB7IHR5cGVzOiBbJyddIH0pLnR5cGVzO1xuICAgIGlmICh0eXBlcy5pbmNsdWRlcyhNSU1FX1RZUEVfV0lER0VUX01BTklGRVNUKSkge1xuICAgICAgLy8gQXMgdGhlIGRyYWcgaXMgbGVhdmluZyB0aGUgd2luZG93LCBkZWxldGUgdGhlIHdpZGdldCBmcm9tIGl0LCBhbmQgc3RvcCBlZGl0aW9uIG1vZGVcbiAgICAgIGlmICghISRldmVudCAmJiAhISRldmVudC5kYXRhVHJhbnNmZXIpIHtcbiAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChcbiAgICAgICAgICBEYXNoYm9hcmRBY3Rpb25zLnVwZGF0ZURhc2hib2FyZE1hbmlmZXN0KHtcbiAgICAgICAgICAgIG1hbmlmZXN0OiB7XG4gICAgICAgICAgICAgIC4uLnRoaXMubWFuaWZlc3QsXG4gICAgICAgICAgICAgIHdpZGdldHM6IHRoaXMuaW5pdGlhbFdpZGdldE1hbmlmZXN0TGlzdFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuY2xlYXJBY3Rpb25zKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZHJvcHBpbmcoJGV2ZW50OiBEcmFnRXZlbnQpIHtcbiAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICAvLyBAdHMtaWdub3JlXG4gICAgaWYgKCEhJGV2ZW50ICYmICEhJGV2ZW50LmRhdGFUcmFuc2Zlcikge1xuICAgICAgaWYgKCRldmVudC5kYXRhVHJhbnNmZXIudHlwZXMuaW5jbHVkZXMoTUlNRV9UWVBFX1dJREdFVF9NQU5JRkVTVCkpIHtcbiAgICAgICAgLy8gUmVhcnJhbmdlIGRyb3AgdG8gY29ycmVjdCBzaXplLCB0eXBlLCAuLi4sIGFzIGEgcGxhY2Vob2xkZXIgYWxyZWFkeSBiZWVuIGFkZGVkIHRvIG1hbmlmZXN0IGJ5IGRyYWdlbnRlciBldmVudFxuICAgICAgICBjb25zdCBkYXRhVHJhbnNmZXJNYW5pZmVzdCA9IEpTT04ucGFyc2UoXG4gICAgICAgICAgJGV2ZW50LmRhdGFUcmFuc2Zlci5nZXREYXRhKE1JTUVfVFlQRV9XSURHRVRfTUFOSUZFU1QpXG4gICAgICAgICkgYXMgV2lkZ2V0TWFuaWZlc3Q7XG5cbiAgICAgICAgdGhpcy5jdXJyZW50bHlNb2RpZmllZE1hbmlmZXN0ID0ge1xuICAgICAgICAgIC4uLmRhdGFUcmFuc2Zlck1hbmlmZXN0LFxuICAgICAgICAgIGxheW91dDogdGhpcy5jdXJyZW50bHlNb2RpZmllZE1hbmlmZXN0Py5sYXlvdXQgPz8gKHt9IGFzIFdpZGdldExheW91dClcbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLm1vdmluZ01vdXNlKCRldmVudCwgZmFsc2UpO1xuXG4gICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goRGFzaGJvYXJkQWN0aW9ucy5hc3NlcnRSZXN1bHRTZXRzKHt9KSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuY2xlYXJBY3Rpb25zKCk7XG4gICAgfVxuICB9XG5cbiAgY2xlYXJBY3Rpb25zKCkge1xuICAgIHRoaXMuYWN0aW9uVHlwZSA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLm1vdmUuaW5pdGlhbFggPSAwO1xuICAgIHRoaXMubW92ZS5pbml0aWFsWSA9IDA7XG4gICAgdGhpcy5tb3ZlLnByZXZpb3VzWCA9IC0xO1xuICAgIHRoaXMubW92ZS5wcmV2aW91c1kgPSAtMTtcbiAgICB0aGlzLmN1cnJlbnRseU1vZGlmaWVkTWFuaWZlc3QgPSBudWxsO1xuICAgIHRoaXMuaW5pdGlhbFdpZGdldE1hbmlmZXN0TGlzdCA9IFtdO1xuICB9XG5cbiAgLyoqKlxuICAgKiBNYW5hZ2Ugb3RoZXIga2luZHMgb2YgZHJvcHMgKGluc2lkZSB3aWRnZXRzKVxuICAgKi9cbiAgZHJvcHBpbmdJbldpZGdldCgkZXZlbnQ6IERyYWdFdmVudCwgaW5kZXg6IG51bWJlcikge1xuICAgIGlmICghISRldmVudCAmJiAhISRldmVudC5kYXRhVHJhbnNmZXIpIHtcbiAgICAgIGlmICgkZXZlbnQuZGF0YVRyYW5zZmVyLnR5cGVzLmluY2x1ZGVzKE1JTUVfVFlQRV9SRVNVTFRTRVQpKSB7XG4gICAgICAgIGNvbnN0IGxpc3RXaWRnZXRNYW5pZmVzdHMgPSBbLi4uKHRoaXMubWFuaWZlc3QgfHwgeyB3aWRnZXRzOiBbXSB9KS53aWRnZXRzXTtcblxuICAgICAgICBjb25zdCByZXN1bHRTZXROYW1lID0gJGV2ZW50LmRhdGFUcmFuc2Zlci5nZXREYXRhKE1JTUVfVFlQRV9SRVNVTFRTRVQpO1xuICAgICAgICBjb25zdCBjdXJyZW50UmVzdWx0U2V0ID0gKFxuICAgICAgICAgIEFycmF5LmlzQXJyYXkobGlzdFdpZGdldE1hbmlmZXN0c1tpbmRleF0uZGF0YXNvdXJjZSlcbiAgICAgICAgICAgID8gbGlzdFdpZGdldE1hbmlmZXN0c1tpbmRleF0uZGF0YXNvdXJjZVxuICAgICAgICAgICAgOiBbbGlzdFdpZGdldE1hbmlmZXN0c1tpbmRleF0uZGF0YXNvdXJjZV1cbiAgICAgICAgKSBhcyBzdHJpbmdbXTtcbiAgICAgICAgY29uc3QgY3VtdWxhdGl2ZSA9ICRldmVudC5zaGlmdEtleTtcbiAgICAgICAgY29uc3QgbmV3UmVzdWx0U2V0ID0gY3VtdWxhdGl2ZSA/IFsuLi5jdXJyZW50UmVzdWx0U2V0LCByZXN1bHRTZXROYW1lXSA6IHJlc3VsdFNldE5hbWU7XG5cbiAgICAgICAgbGlzdFdpZGdldE1hbmlmZXN0c1tpbmRleF0gPSB7XG4gICAgICAgICAgLi4ubGlzdFdpZGdldE1hbmlmZXN0c1tpbmRleF0sXG4gICAgICAgICAgZGF0YXNvdXJjZTogbmV3UmVzdWx0U2V0XG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChcbiAgICAgICAgICBEYXNoYm9hcmRBY3Rpb25zLnVwZGF0ZURhc2hib2FyZE1hbmlmZXN0KHtcbiAgICAgICAgICAgIG1hbmlmZXN0OiB7XG4gICAgICAgICAgICAgIC4uLnRoaXMubWFuaWZlc3QsXG4gICAgICAgICAgICAgIHdpZGdldHM6IGxpc3RXaWRnZXRNYW5pZmVzdHNcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKERhc2hib2FyZEFjdGlvbnMuYXNzZXJ0UmVzdWx0U2V0cyh7fSkpO1xuICAgICAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHRvZ2dsZVJlbW92ZUNvbmZpcm0oJGV2ZW50PzogTW91c2VFdmVudCwgaW5kZXg/OiBudW1iZXIpIHtcbiAgICBpZiAoIXRoaXMuY29uZmlybVJlbW92ZVJlZikge1xuICAgICAgdGhpcy5pbmRleEZvclJlbW92YWwgPSBpbmRleCA/PyAtMTtcbiAgICAgIHRoaXMuY29uZmlybVJlbW92ZVJlZiA9IHRoaXMub3ZlcmxheS5jcmVhdGUoXG4gICAgICAgIG5ldyBPdmVybGF5Q29uZmlnKHtcbiAgICAgICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcbiAgICAgICAgICBwYW5lbENsYXNzOiBbJ28tbW9kYWwtd3JhcHBlciddLFxuICAgICAgICAgIGJhY2tkcm9wQ2xhc3M6ICdiYWNrZHJvcCdcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKENvbmZpZ0FjdGlvbnMuYWRkaW5nT3ZlcmxheSh7IGlkOiB0aGlzLmNvbnN0cnVjdG9yLm5hbWUgKyAnLW1vZGFsJyB9KSk7XG4gICAgICB0aGlzLmNvbmZpcm1SZW1vdmVSZWYuYmFja2Ryb3BDbGljaygpLnN1YnNjcmliZSgoXykgPT4gdGhpcy50b2dnbGVSZW1vdmVDb25maXJtKCkpO1xuICAgICAgdGhpcy5jb25maXJtUmVtb3ZlUmVmLmF0dGFjaChuZXcgVGVtcGxhdGVQb3J0YWwodGhpcy50ZW1wbGF0ZU1vZGFsLCB0aGlzLnZpZXdDb250YWluZXJSZWYpKTtcbiAgICAgIGlmICgkZXZlbnQpIHtcbiAgICAgICAgY29uc3QgcGFuZWwgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdkaXYuby1tb2RhbC13cmFwcGVyJykgYXMgSFRNTERpdkVsZW1lbnQ7XG4gICAgICAgIGlmICghIXBhbmVsKSB7XG4gICAgICAgICAgcGFuZWwuc3R5bGUubGVmdCA9IE1hdGgubWF4KDAsIE1hdGgubWluKHdpbmRvdy5pbm5lcldpZHRoIC0gcGFuZWwuY2xpZW50V2lkdGgsICRldmVudC5jbGllbnRYIC0gMzApKSArICdweCc7XG4gICAgICAgICAgcGFuZWwuc3R5bGUudG9wID0gTWF0aC5tYXgoMCwgTWF0aC5taW4od2luZG93LmlubmVySGVpZ2h0IC0gcGFuZWwuY2xpZW50SGVpZ2h0LCAkZXZlbnQuY2xpZW50WSAtIDEwKSkgKyAncHgnO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY29uZmlybVJlbW92ZVJlZi5kaXNwb3NlKCk7XG4gICAgICB0aGlzLmNvbmZpcm1SZW1vdmVSZWYgPSB1bmRlZmluZWQ7XG4gICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKENvbmZpZ0FjdGlvbnMuY2xvc2VPdmVybGF5KHsgaWQ6IHRoaXMuY29uc3RydWN0b3IubmFtZSArICctbW9kYWwnIH0pKTtcbiAgICB9XG4gIH1cblxuICBjb25maXJtUmVtb3ZlKCkge1xuICAgIHRoaXMucmVtb3ZlKHRoaXMuaW5kZXhGb3JSZW1vdmFsKTtcbiAgICB0aGlzLmNhbmNlbFJlbW92ZUNvbmZpcm0oKTtcbiAgfVxuXG4gIGNhbmNlbFJlbW92ZUNvbmZpcm0oKSB7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChDb25maWdBY3Rpb25zLmNsb3NlT3ZlcmxheSh7IGlkOiB0aGlzLmNvbnN0cnVjdG9yLm5hbWUgKyAnLW1vZGFsJyB9KSk7XG4gICAgdGhpcy5jb25maXJtUmVtb3ZlUmVmPy5kaXNwb3NlKCk7XG4gICAgdGhpcy5jb25maXJtUmVtb3ZlUmVmID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgdHJhY2tXaWRnZXRzKGluZGV4OiBudW1iZXIsIHdpZGdldE1hbmlmZXN0OiBXaWRnZXRNYW5pZmVzdCkge1xuICAgIHJldHVybiBpbmRleCArICctJyArIHdpZGdldE1hbmlmZXN0LnR5cGUgKyAnLScgKyBKU09OLnN0cmluZ2lmeSh3aWRnZXRNYW5pZmVzdC5sYXlvdXQpO1xuICB9XG59XG4iLCI8ZGl2XG4gIGNsYXNzPVwiby1kYXNoYm9hcmQtZ3JpZFwiXG4gIFtzdHlsZS5ncmlkVGVtcGxhdGVDb2x1bW5zXT1cImdyaWRUZW1wbGF0ZUNvbHVtbnMkIHwgYXN5bmNcIlxuICBbc3R5bGUuZ3JpZFRlbXBsYXRlUm93c109XCJncmlkVGVtcGxhdGVSb3dzJCB8IGFzeW5jXCJcbiAgW3N0eWxlLmdyaWRHYXBdPVwiZGFzaGJvYXJkUGFyYW1zLmdyaWRHYXAgKyAncHgnXCJcbiAgW3N0eWxlLnBhZGRpbmddPVwiJzAgJyArIGRhc2hib2FyZFBhcmFtcy5ncmlkR2FwICsgJ3B4J1wiXG4gICNncmlkXG4gIChtb3VzZW1vdmUpPVwibW92aW5nTW91c2UoJGV2ZW50KVwiXG4gIChkcm9wKT1cImRyb3BwaW5nKCRldmVudClcIlxuICAoZHJhZ292ZXIpPVwiZHJhZ01vdmUoJGV2ZW50KVwiXG4gIChkcmFnbGVhdmUpPVwiZHJhZ0xlYXZlKCRldmVudClcIlxuICAoZHJhZ2VudGVyKT1cImRyYWdFbnRlcigkZXZlbnQpXCJcbj5cbiAgPG5nLWNvbnRhaW5lclxuICAgICpuZ0Zvcj1cIlxuICAgICAgbGV0IHdpZGdldE1hbmlmZXN0IG9mICh3aW5kb3dNYW5pZmVzdCQgfCBhc3luYyk/LndpZGdldHMgfHwgW107XG4gICAgICBsZXQgd2lkZ2V0SW5kZXggPSBpbmRleDtcbiAgICAgIHRyYWNrQnk6IHRyYWNrV2lkZ2V0c1xuICAgIFwiXG4gID5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cIm8tZGFzaGJvYXJkLXdpZGdldFwiXG4gICAgICBbY2xhc3MuLWVkaXRlZF09XCJtb2RlRWRpdGlvblwiXG4gICAgICBbc3R5bGUuZ3JpZENvbHVtbl09XCJncmlkQ29sdW1uKHdpZGdldE1hbmlmZXN0LmxheW91dClcIlxuICAgICAgW3N0eWxlLmdyaWRSb3ddPVwiZ3JpZFJvdyh3aWRnZXRNYW5pZmVzdC5sYXlvdXQpXCJcbiAgICAgIChkcm9wKT1cImRyb3BwaW5nSW5XaWRnZXQoJGV2ZW50LCB3aWRnZXRJbmRleClcIlxuICAgID5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJtb2RlRWRpdGlvblwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicmVzaXplIG53LXJlc2l6ZVwiIChtb3VzZWRvd24pPVwic3RhcnRSZXNpemUoJGV2ZW50LCB3aWRnZXRJbmRleCwgJ3Jlc2l6ZS1udycpXCI+XG4gICAgICAgICAgPHByeS1pY29uIGljb25Tdmc9XCJub3J0aF93ZXN0XCIgW2FuaW1hdGlvbl09XCJmYWxzZVwiPjwvcHJ5LWljb24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwicmVzaXplIHN3LXJlc2l6ZVwiIChtb3VzZWRvd24pPVwic3RhcnRSZXNpemUoJGV2ZW50LCB3aWRnZXRJbmRleCwgJ3Jlc2l6ZS1zdycpXCI+XG4gICAgICAgICAgPHByeS1pY29uIGljb25Tdmc9XCJzb3V0aF93ZXN0XCIgW2FuaW1hdGlvbl09XCJmYWxzZVwiPjwvcHJ5LWljb24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwicmVzaXplIG5lLXJlc2l6ZVwiIChtb3VzZWRvd24pPVwic3RhcnRSZXNpemUoJGV2ZW50LCB3aWRnZXRJbmRleCwgJ3Jlc2l6ZS1uZScpXCI+XG4gICAgICAgICAgPHByeS1pY29uIGljb25Tdmc9XCJub3J0aF9lYXN0XCIgW2FuaW1hdGlvbl09XCJmYWxzZVwiPjwvcHJ5LWljb24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwicmVzaXplIHNlLXJlc2l6ZVwiIChtb3VzZWRvd24pPVwic3RhcnRSZXNpemUoJGV2ZW50LCB3aWRnZXRJbmRleCwgJ3Jlc2l6ZS1zZScpXCI+XG4gICAgICAgICAgPHByeS1pY29uIGljb25Tdmc9XCJzb3V0aF9lYXN0XCIgW2FuaW1hdGlvbl09XCJmYWxzZVwiPjwvcHJ5LWljb24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwicmVzaXplIGRlbGV0ZVwiIChtb3VzZWRvd24pPVwidG9nZ2xlUmVtb3ZlQ29uZmlybSgkZXZlbnQsIHdpZGdldEluZGV4KVwiPlxuICAgICAgICAgIDxwcnktaWNvbiBpY29uU3ZnPVwiY2xvc2VcIiBbYW5pbWF0aW9uXT1cImZhbHNlXCI+PC9wcnktaWNvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtb3ZlXCIgZHJhZ2dhYmxlPVwidHJ1ZVwiIChkcmFnc3RhcnQpPVwiZHJhZ1N0YXJ0KCRldmVudCwgd2lkZ2V0SW5kZXgpXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1vdmUtaW5zaWRlIG1vdmUte3sgd2lkZ2V0TWFuaWZlc3QudHlwZSB9fVwiPlxuICAgICAgICAgICAgPHNwYW4+e3sgd2lkZ2V0TWFuaWZlc3QudGl0bGUgPz8gKCdAcHJ5LnRvb2xib3guJyArIHdpZGdldE1hbmlmZXN0LnR5cGUgfCBpMThuKSB9fTwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhbW9kZUVkaXRpb25cIj5cbiAgICAgICAgPHByeS13aWRnZXQtaW5zdGFuY2lhdG9yXG4gICAgICAgICAgW3N0YXRpY01hbmlmZXN0XT1cIndpZGdldE1hbmlmZXN0XCJcbiAgICAgICAgICBbd2lkZ2V0SW5kZXhdPVwid2lkZ2V0SW5kZXhcIlxuICAgICAgICA+PC9wcnktd2lkZ2V0LWluc3RhbmNpYXRvcj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiKG5vbkZpbGxlcldpZGdldHMkIHwgYXN5bmMpID09PSAwXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImxvYWRpbmckIHwgYXN5bmM7IGVsc2Ugbm90TG9hZGluZ1wiPlxuICAgICAgPGRpdiBjbGFzcz1cIm5vLXdpZGdldFwiIFtzdHlsZS5ncmlkLWFyZWFdPVwiYmFja2dyb3VuZEFyZWEkIHwgYXN5bmNcIj5cbiAgICAgICAgPHByeS1pY29uXG4gICAgICAgICAgaWNvblN2Zz1cImxvYWRlclwiXG4gICAgICAgICAgY2xhc3M9XCJuby13aWRnZXRfX2xvYWRpbmdcIlxuICAgICAgICAgIFthbHRdPVwiJ0Bwcnkud2lkZ2V0LnRhcmdldC5sb2FkaW5nJyB8IGkxOG5cIlxuICAgICAgICAgIFt3aWR0aF09XCIxMDBcIlxuICAgICAgICAgIFtoZWlnaHRdPVwiMTAwXCJcbiAgICAgICAgLz5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJuby13aWRnZXRfX3RleHRcIj57eyAnQHByeS53aWRnZXQudGFyZ2V0LmxvYWRpbmcnIHwgaTE4biB9fS4uLjwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy10ZW1wbGF0ZSAjbm90TG9hZGluZz5cbiAgICAgIDxkaXYgY2xhc3M9XCJuby13aWRnZXRcIiBbc3R5bGUuZ3JpZC1hcmVhXT1cImJhY2tncm91bmRBcmVhJCB8IGFzeW5jXCI+XG4gICAgICAgIDxpbWdcbiAgICAgICAgICBjbGFzcz1cIm5vLXdpZGdldF9fc2VhcmNoXCJcbiAgICAgICAgICBzcmM9XCIuLi8uLi8uLi9hc3NldHMvc3Zncy9wcnlfcmVjaGVyY2hlLnN2Z1wiXG4gICAgICAgICAgYWx0PVwie3tcbiAgICAgICAgICAgIChsYXlvdXQgPT09IERhc2hib2FyZEdyaWRMYXlvdXQuTUFOVUFMID8gJ0Bwcnkud2lkZ2V0LnRhcmdldC5ub25lX21hbnVhbCcgOiAnQHByeS53aWRnZXQudGFyZ2V0Lm5vbmVfYXV0bycpXG4gICAgICAgICAgICAgIHwgaTE4blxuICAgICAgICAgIH19IHt7IGJhY2tncm91bmRBcmVhJCB8IGFzeW5jIH19XCJcbiAgICAgICAgLz5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJuby13aWRnZXRfX3RleHRcIj57e1xuICAgICAgICAgIChsYXlvdXQgPT09IERhc2hib2FyZEdyaWRMYXlvdXQuTUFOVUFMID8gJ0Bwcnkud2lkZ2V0LnRhcmdldC5ub25lX21hbnVhbCcgOiAnQHByeS53aWRnZXQudGFyZ2V0Lm5vbmVfYXV0bycpXG4gICAgICAgICAgICB8IGkxOG5cbiAgICAgICAgfX08L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L25nLWNvbnRhaW5lcj5cbiAgPGRpdlxuICAgIGNsYXNzPVwiYS1wYWdlLWxvYWRlciBiYWNrZHJvcFwiXG4gICAgW3N0eWxlLmRpc3BsYXldPVwiKGRhdGFGZXRjaGluZyQgfCBhc3luYyk/Lmxlbmd0aCA/PyAxID4gMCA/ICdmbGV4JyA6ICdub25lJ1wiXG4gICAgW3N0eWxlLndpZHRoLnB4XT1cInBhcmFtcy5ncmlkV2lkdGhcIlxuICAgIFtzdHlsZS5oZWlnaHQucHhdPVwicGFyYW1zLmdyaWRIZWlnaHRcIlxuICA+XG4gICAgPHByeS1pY29uXG4gICAgICBpY29uU3ZnPVwibG9hZGVyXCJcbiAgICAgIGNsYXNzPVwibm8td2lkZ2V0X19sb2FkaW5nXCJcbiAgICAgIFthbHRdPVwiJ0Bwcnkud2lkZ2V0LnRhcmdldC5sb2FkaW5nJyB8IGkxOG5cIlxuICAgICAgW3dpZHRoXT1cIjIwMFwiXG4gICAgICBbaGVpZ2h0XT1cIjIwMFwiXG4gICAgLz5cbiAgICA8cD57eyAnQHByeS53aWRnZXQudGFyZ2V0LmxvYWRpbmcnIHwgaTE4biB9fS4uLjwvcD5cbiAgPC9kaXY+XG48L2Rpdj5cbjxwcnktY29udGV4dC1tZW51PjwvcHJ5LWNvbnRleHQtbWVudT5cblxuPG5nLXRlbXBsYXRlICN0ZW1wbGF0ZU1vZGFsPlxuICA8ZGl2IGNsYXNzPVwiby1tb2RhbFwiPlxuICAgIDxkaXYgY2xhc3M9XCJvLW1vZGFsX190b3BcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJvLW1vZGFsX190b3BfX3RpdGxlXCI+XG4gICAgICAgIDxoMiBjbGFzcz1cImEtaDJcIiBpZD1cImRpYWxvZ190aXRsZVwiPlxuICAgICAgICAgIHt7ICdAcHJ5LndpZGdldC5tb2RhbFRpdGxlJyB8IGkxOG4gfX1cbiAgICAgICAgPC9oMj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cIm8tbW9kYWxfX3RvcF9fY2xvc2VcIj5cbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImEtYnRuIGEtYnRuLS1pY29uLW9ubHlcIiAoY2xpY2spPVwiY2FuY2VsUmVtb3ZlQ29uZmlybSgpXCI+XG4gICAgICAgICAgPHByeS1pY29uIGljb25Tdmc9XCJjbG9zZVwiIFtoZWlnaHRdPVwiMzVcIiBbd2lkdGhdPVwiMzVcIj48L3ByeS1pY29uPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwidS12aXN1YWxseS1oaWRkZW5cIj57eyAnQHByeS50b29sYm94LmNsb3NlJyB8IGkxOG4gfX08L3NwYW4+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cIm0tYnRuLWdyb3VwXCI+XG4gICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiY2FuY2VsUmVtb3ZlQ29uZmlybSgpXCIgY2xhc3M9XCJhLWJ0biBhLWJ0bi0tc2Vjb25kYXJ5XCI+XG4gICAgICAgIHt7ICdAcHJ5LnRvb2xib3gubWFuaWZlc3QuY2xvc2UnIHwgaTE4biB9fVxuICAgICAgPC9idXR0b24+XG4gICAgICA8YnV0dG9uIHR5cGU9XCJzdWJtaXRcIiAoY2xpY2spPVwiY29uZmlybVJlbW92ZSgpXCIgY2xhc3M9XCJhLWJ0biBhLWJ0bi0tcHJpbWFyeVwiPlxuICAgICAgICB7eyAnQHByeS50b29sYm94Lm1hbmlmZXN0LnZhbGlkYXRlJyB8IGkxOG4gfX1cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|