@esfaenza/extensions 13.3.8 → 13.4.1

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.
@@ -42,10 +42,10 @@ export class FullExtensionsModule {
42
42
  };
43
43
  }
44
44
  }
45
- FullExtensionsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: FullExtensionsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
46
- FullExtensionsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: FullExtensionsModule });
47
- FullExtensionsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: FullExtensionsModule });
48
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: FullExtensionsModule, decorators: [{
45
+ FullExtensionsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: FullExtensionsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
46
+ FullExtensionsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: FullExtensionsModule });
47
+ FullExtensionsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: FullExtensionsModule });
48
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: FullExtensionsModule, decorators: [{
49
49
  type: NgModule
50
50
  }] });
51
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0ZW5zaW9ucy5mdWxsLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V4dGVuc2lvbnMvc3JjL2xpYi9tb2R1bGVzL2V4dGVuc2lvbnMuZnVsbC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsVUFBVTtBQUNWLE9BQU8sRUFBRSxRQUFRLEVBQXVCLE1BQU0sZUFBZSxDQUFDO0FBSTlELE9BQU8sRUFBRSxVQUFVLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQUUsYUFBYSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRTFGLFVBQVU7QUFDVixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDbkUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUN4RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDekUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQzs7QUFFMUU7Ozs7Ozs7Ozs7O0dBV0c7QUFFSCxNQUFNLE9BQU8sb0JBQW9CO0lBQy9CLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBK0I7UUFDNUMsT0FBTztZQUNMLFFBQVEsRUFBRSxvQkFBb0I7WUFDOUIsU0FBUyxFQUFFO2dCQUNULGdCQUFnQjtnQkFDaEIsV0FBVztnQkFDWCxhQUFhO2dCQUNiLGNBQWM7Z0JBQ2QsY0FBYztnQkFDZCxjQUFjO2dCQUNkLGVBQWU7Z0JBQ2YsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxJQUFJLE9BQU8sRUFBRTtnQkFDNUQsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxZQUFZLElBQUksSUFBSSxFQUFFO2dCQUNyRSxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLGdCQUFnQixJQUFJLEtBQUssRUFBQztnQkFDekUsRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsU0FBUyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsU0FBUyxFQUFDO2FBQzNGO1NBQ0YsQ0FBQztJQUNKLENBQUM7O2tIQWxCVSxvQkFBb0I7bUhBQXBCLG9CQUFvQjttSEFBcEIsb0JBQW9COzRGQUFwQixvQkFBb0I7a0JBRGhDLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBBbmd1bGFyXHJcbmltcG9ydCB7IE5nTW9kdWxlLCBNb2R1bGVXaXRoUHJvdmlkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG4vLyBNb2RlbGxpXHJcbmltcG9ydCB7IEV4dGVuc2lvbnNNb2R1bGVDb25maWcgfSBmcm9tICcuLi9tb2RlbHMvRXh0ZW5zaW9uc01vZHVsZUNvbmZpZyc7XHJcbmltcG9ydCB7IEVYVF9MT0NBTEUsIEVYVF9GQU5DWV9BTEVSVFMsIEFQUFNFQVJDSF9QUkVGSVgsIEVYVF9BTExPV19VVEMgfSBmcm9tICcuLi90b2tlbnMnO1xyXG5cclxuLy8gU2Vydml6aVxyXG5pbXBvcnQgeyBDbGlwYm9hcmRTZXJ2aWNlIH0gZnJvbSBcIi4uL3NlcnZpY2VzL2V4dGVuc2lvbnMuY2xpcGJvYXJkLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgRGF0ZVNlcnZpY2UgfSBmcm9tIFwiLi4vc2VydmljZXMvZXh0ZW5zaW9ucy5kYXRlcy5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IEV4cG9ydFNlcnZpY2UgfSBmcm9tIFwiLi4vc2VydmljZXMvZXh0ZW5zaW9ucy5leHBvcnRzLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgSGFzaGluZ1NlcnZpY2UgfSBmcm9tIFwiLi4vc2VydmljZXMvZXh0ZW5zaW9ucy5oYXNoaW5nLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgTWVzc2FnZVNlcnZpY2UgfSBmcm9tIFwiLi4vc2VydmljZXMvZXh0ZW5zaW9ucy5tZXNzYWdlcy5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFV0aWxpdHlTZXJ2aWNlIH0gZnJvbSBcIi4uL3NlcnZpY2VzL2V4dGVuc2lvbnMudXRpbGl0aWVzLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgSW50ZXJDb21TZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvZXh0ZW5zaW9ucy5pbnRlcmNvbS5zZXJ2aWNlJztcclxuXHJcbi8qKlxyXG4gKiBNb2R1bG8gZGkgZXN0ZW5zaW9uZSBjaGUgcmVnaXN0cmEgYXV0b25vbWFtZW50ZSAqKlRVVFRJKiogaSBzZXJ2aXppIGRpIGVzdGVuc2lvbmU6IFxyXG4gKiBDbGlwYm9hcmRTZXJ2aWNlLCBcclxuICogRGF0ZVNlcnZpY2UsIFxyXG4gKiBFeHBvcnRTZXJ2aWNlLCBcclxuICogSGFzaGluZ1NlcnZpY2UsIFxyXG4gKiBNZXNzYWdlU2VydmljZSwgXHJcbiAqIFV0aWxpdHlTZXJ2aWNlXHJcbiAqIEludGVyQ29tU2VydmljZVxyXG4gKiBcclxuICogY29uIGV2ZW50dWFsaSBwcm92aWRlciBjaGUgdXRpbGl6emFub1xyXG4gKi9cclxuQE5nTW9kdWxlKClcclxuZXhwb3J0IGNsYXNzIEZ1bGxFeHRlbnNpb25zTW9kdWxlIHtcclxuICBzdGF0aWMgZm9yUm9vdChjb25maWc/OiBFeHRlbnNpb25zTW9kdWxlQ29uZmlnKTogTW9kdWxlV2l0aFByb3ZpZGVyczxGdWxsRXh0ZW5zaW9uc01vZHVsZT4ge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgbmdNb2R1bGU6IEZ1bGxFeHRlbnNpb25zTW9kdWxlLFxyXG4gICAgICBwcm92aWRlcnM6IFtcclxuICAgICAgICBDbGlwYm9hcmRTZXJ2aWNlLFxyXG4gICAgICAgIERhdGVTZXJ2aWNlLFxyXG4gICAgICAgIEV4cG9ydFNlcnZpY2UsXHJcbiAgICAgICAgSGFzaGluZ1NlcnZpY2UsXHJcbiAgICAgICAgTWVzc2FnZVNlcnZpY2UsXHJcbiAgICAgICAgVXRpbGl0eVNlcnZpY2UsXHJcbiAgICAgICAgSW50ZXJDb21TZXJ2aWNlLFxyXG4gICAgICAgIHsgcHJvdmlkZTogRVhUX0xPQ0FMRSwgdXNlVmFsdWU6IGNvbmZpZz8ubG9jYWxlIHx8ICdpdC1JVCcgfSxcclxuICAgICAgICB7IHByb3ZpZGU6IEVYVF9GQU5DWV9BTEVSVFMsIHVzZVZhbHVlOiBjb25maWc/LmZhbmN5X2FsZXJ0cyB8fCB0cnVlIH0sXHJcbiAgICAgICAgeyBwcm92aWRlOiBBUFBTRUFSQ0hfUFJFRklYLCB1c2VWYWx1ZTogY29uZmlnPy5hcHBzZWFyY2hfcHJlZml4IHx8ICdIb3QnfSxcclxuICAgICAgICB7IHByb3ZpZGU6IEVYVF9BTExPV19VVEMsIHVzZVZhbHVlOiBjb25maWc/LmFsbG93X3V0YyA9PSBudWxsID8gZmFsc2UgOiBjb25maWc/LmFsbG93X3V0Y31cclxuICAgICAgXVxyXG4gICAgfTtcclxuICB9XHJcbn0iXX0=
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0ZW5zaW9ucy5mdWxsLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V4dGVuc2lvbnMvc3JjL2xpYi9tb2R1bGVzL2V4dGVuc2lvbnMuZnVsbC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsVUFBVTtBQUNWLE9BQU8sRUFBRSxRQUFRLEVBQXVCLE1BQU0sZUFBZSxDQUFDO0FBSTlELE9BQU8sRUFBRSxVQUFVLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQUUsYUFBYSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRTFGLFVBQVU7QUFDVixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDbkUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUN4RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDekUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQzs7QUFFMUU7Ozs7Ozs7Ozs7O0dBV0c7QUFFSCxNQUFNLE9BQU8sb0JBQW9CO0lBQy9CLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBK0I7UUFDNUMsT0FBTztZQUNMLFFBQVEsRUFBRSxvQkFBb0I7WUFDOUIsU0FBUyxFQUFFO2dCQUNULGdCQUFnQjtnQkFDaEIsV0FBVztnQkFDWCxhQUFhO2dCQUNiLGNBQWM7Z0JBQ2QsY0FBYztnQkFDZCxjQUFjO2dCQUNkLGVBQWU7Z0JBQ2YsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxJQUFJLE9BQU8sRUFBRTtnQkFDNUQsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxZQUFZLElBQUksSUFBSSxFQUFFO2dCQUNyRSxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLGdCQUFnQixJQUFJLEtBQUssRUFBQztnQkFDekUsRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsU0FBUyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsU0FBUyxFQUFDO2FBQzNGO1NBQ0YsQ0FBQztJQUNKLENBQUM7O2lIQWxCVSxvQkFBb0I7a0hBQXBCLG9CQUFvQjtrSEFBcEIsb0JBQW9COzJGQUFwQixvQkFBb0I7a0JBRGhDLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBBbmd1bGFyXHJcbmltcG9ydCB7IE5nTW9kdWxlLCBNb2R1bGVXaXRoUHJvdmlkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG4vLyBNb2RlbGxpXHJcbmltcG9ydCB7IEV4dGVuc2lvbnNNb2R1bGVDb25maWcgfSBmcm9tICcuLi9tb2RlbHMvRXh0ZW5zaW9uc01vZHVsZUNvbmZpZyc7XHJcbmltcG9ydCB7IEVYVF9MT0NBTEUsIEVYVF9GQU5DWV9BTEVSVFMsIEFQUFNFQVJDSF9QUkVGSVgsIEVYVF9BTExPV19VVEMgfSBmcm9tICcuLi90b2tlbnMnO1xyXG5cclxuLy8gU2Vydml6aVxyXG5pbXBvcnQgeyBDbGlwYm9hcmRTZXJ2aWNlIH0gZnJvbSBcIi4uL3NlcnZpY2VzL2V4dGVuc2lvbnMuY2xpcGJvYXJkLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgRGF0ZVNlcnZpY2UgfSBmcm9tIFwiLi4vc2VydmljZXMvZXh0ZW5zaW9ucy5kYXRlcy5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IEV4cG9ydFNlcnZpY2UgfSBmcm9tIFwiLi4vc2VydmljZXMvZXh0ZW5zaW9ucy5leHBvcnRzLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgSGFzaGluZ1NlcnZpY2UgfSBmcm9tIFwiLi4vc2VydmljZXMvZXh0ZW5zaW9ucy5oYXNoaW5nLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgTWVzc2FnZVNlcnZpY2UgfSBmcm9tIFwiLi4vc2VydmljZXMvZXh0ZW5zaW9ucy5tZXNzYWdlcy5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFV0aWxpdHlTZXJ2aWNlIH0gZnJvbSBcIi4uL3NlcnZpY2VzL2V4dGVuc2lvbnMudXRpbGl0aWVzLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgSW50ZXJDb21TZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvZXh0ZW5zaW9ucy5pbnRlcmNvbS5zZXJ2aWNlJztcclxuXHJcbi8qKlxyXG4gKiBNb2R1bG8gZGkgZXN0ZW5zaW9uZSBjaGUgcmVnaXN0cmEgYXV0b25vbWFtZW50ZSAqKlRVVFRJKiogaSBzZXJ2aXppIGRpIGVzdGVuc2lvbmU6IFxyXG4gKiBDbGlwYm9hcmRTZXJ2aWNlLCBcclxuICogRGF0ZVNlcnZpY2UsIFxyXG4gKiBFeHBvcnRTZXJ2aWNlLCBcclxuICogSGFzaGluZ1NlcnZpY2UsIFxyXG4gKiBNZXNzYWdlU2VydmljZSwgXHJcbiAqIFV0aWxpdHlTZXJ2aWNlXHJcbiAqIEludGVyQ29tU2VydmljZVxyXG4gKiBcclxuICogY29uIGV2ZW50dWFsaSBwcm92aWRlciBjaGUgdXRpbGl6emFub1xyXG4gKi9cclxuQE5nTW9kdWxlKClcclxuZXhwb3J0IGNsYXNzIEZ1bGxFeHRlbnNpb25zTW9kdWxlIHtcclxuICBzdGF0aWMgZm9yUm9vdChjb25maWc/OiBFeHRlbnNpb25zTW9kdWxlQ29uZmlnKTogTW9kdWxlV2l0aFByb3ZpZGVyczxGdWxsRXh0ZW5zaW9uc01vZHVsZT4ge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgbmdNb2R1bGU6IEZ1bGxFeHRlbnNpb25zTW9kdWxlLFxyXG4gICAgICBwcm92aWRlcnM6IFtcclxuICAgICAgICBDbGlwYm9hcmRTZXJ2aWNlLFxyXG4gICAgICAgIERhdGVTZXJ2aWNlLFxyXG4gICAgICAgIEV4cG9ydFNlcnZpY2UsXHJcbiAgICAgICAgSGFzaGluZ1NlcnZpY2UsXHJcbiAgICAgICAgTWVzc2FnZVNlcnZpY2UsXHJcbiAgICAgICAgVXRpbGl0eVNlcnZpY2UsXHJcbiAgICAgICAgSW50ZXJDb21TZXJ2aWNlLFxyXG4gICAgICAgIHsgcHJvdmlkZTogRVhUX0xPQ0FMRSwgdXNlVmFsdWU6IGNvbmZpZz8ubG9jYWxlIHx8ICdpdC1JVCcgfSxcclxuICAgICAgICB7IHByb3ZpZGU6IEVYVF9GQU5DWV9BTEVSVFMsIHVzZVZhbHVlOiBjb25maWc/LmZhbmN5X2FsZXJ0cyB8fCB0cnVlIH0sXHJcbiAgICAgICAgeyBwcm92aWRlOiBBUFBTRUFSQ0hfUFJFRklYLCB1c2VWYWx1ZTogY29uZmlnPy5hcHBzZWFyY2hfcHJlZml4IHx8ICdIb3QnfSxcclxuICAgICAgICB7IHByb3ZpZGU6IEVYVF9BTExPV19VVEMsIHVzZVZhbHVlOiBjb25maWc/LmFsbG93X3V0YyA9PSBudWxsID8gZmFsc2UgOiBjb25maWc/LmFsbG93X3V0Y31cclxuICAgICAgXVxyXG4gICAgfTtcclxuICB9XHJcbn0iXX0=
@@ -19,10 +19,10 @@ export class ExtensionsModule {
19
19
  };
20
20
  }
21
21
  }
22
- ExtensionsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ExtensionsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
23
- ExtensionsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ExtensionsModule });
24
- ExtensionsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ExtensionsModule });
25
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ExtensionsModule, decorators: [{
22
+ ExtensionsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: ExtensionsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
23
+ ExtensionsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: ExtensionsModule });
24
+ ExtensionsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: ExtensionsModule });
25
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: ExtensionsModule, decorators: [{
26
26
  type: NgModule
27
27
  }] });
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0ZW5zaW9ucy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9leHRlbnNpb25zL3NyYy9saWIvbW9kdWxlcy9leHRlbnNpb25zLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxVQUFVO0FBQ1YsT0FBTyxFQUFFLFFBQVEsRUFBdUIsTUFBTSxlQUFlLENBQUM7QUFFOUQsVUFBVTtBQUNWLE9BQU8sRUFBRSxVQUFVLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQUUsYUFBYSxFQUFFLE1BQU0sV0FBVyxDQUFDOztBQUcxRjs7R0FFRztBQUVILE1BQU0sT0FBTyxnQkFBZ0I7SUFDM0IsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUErQjtRQUM1QyxPQUFPO1lBQ0wsUUFBUSxFQUFFLGdCQUFnQjtZQUMxQixTQUFTLEVBQUU7Z0JBQ1QsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxJQUFJLE9BQU8sRUFBRTtnQkFDNUQsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxZQUFZLElBQUksSUFBSSxFQUFFO2dCQUNyRSxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLGdCQUFnQixJQUFJLEtBQUssRUFBRTtnQkFDMUUsRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsU0FBUyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsU0FBUyxFQUFFO2FBQzVGO1NBQ0YsQ0FBQztJQUNKLENBQUM7OzhHQVhVLGdCQUFnQjsrR0FBaEIsZ0JBQWdCOytHQUFoQixnQkFBZ0I7NEZBQWhCLGdCQUFnQjtrQkFENUIsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbIi8vIEFuZ3VsYXJcclxuaW1wb3J0IHsgTmdNb2R1bGUsIE1vZHVsZVdpdGhQcm92aWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbi8vIE1vZGVsbGlcclxuaW1wb3J0IHsgRVhUX0xPQ0FMRSwgRVhUX0ZBTkNZX0FMRVJUUywgQVBQU0VBUkNIX1BSRUZJWCwgRVhUX0FMTE9XX1VUQyB9IGZyb20gJy4uL3Rva2Vucyc7XHJcbmltcG9ydCB7IEV4dGVuc2lvbnNNb2R1bGVDb25maWcgfSBmcm9tICcuLi9tb2RlbHMvRXh0ZW5zaW9uc01vZHVsZUNvbmZpZyc7XHJcblxyXG4vKipcclxuICogTW9kdWxvIGRpIGVzdGVuc2lvbmUgY2hlIG5vbiByZWdpc3RyYSBuZXNzdW4gc2Vydml6aW8gZGkgZXN0ZW5zaW9uZSwgZG92cmFubm8gZXNzZXJlIGRpY2hpYXJhdGkgMSBwZXIgMSBkYWxsJ2FwcGxpY2F6aW9uZSBjaGUgbGkgdXRpbGl6emFcclxuICovXHJcbkBOZ01vZHVsZSgpXHJcbmV4cG9ydCBjbGFzcyBFeHRlbnNpb25zTW9kdWxlIHtcclxuICBzdGF0aWMgZm9yUm9vdChjb25maWc/OiBFeHRlbnNpb25zTW9kdWxlQ29uZmlnKTogTW9kdWxlV2l0aFByb3ZpZGVyczxFeHRlbnNpb25zTW9kdWxlPiB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBuZ01vZHVsZTogRXh0ZW5zaW9uc01vZHVsZSxcclxuICAgICAgcHJvdmlkZXJzOiBbXHJcbiAgICAgICAgeyBwcm92aWRlOiBFWFRfTE9DQUxFLCB1c2VWYWx1ZTogY29uZmlnPy5sb2NhbGUgfHwgJ2l0LUlUJyB9LFxyXG4gICAgICAgIHsgcHJvdmlkZTogRVhUX0ZBTkNZX0FMRVJUUywgdXNlVmFsdWU6IGNvbmZpZz8uZmFuY3lfYWxlcnRzIHx8IHRydWUgfSxcclxuICAgICAgICB7IHByb3ZpZGU6IEFQUFNFQVJDSF9QUkVGSVgsIHVzZVZhbHVlOiBjb25maWc/LmFwcHNlYXJjaF9wcmVmaXggfHwgJ0hvdCcgfSxcclxuICAgICAgICB7IHByb3ZpZGU6IEVYVF9BTExPV19VVEMsIHVzZVZhbHVlOiBjb25maWc/LmFsbG93X3V0YyA9PSBudWxsID8gZmFsc2UgOiBjb25maWc/LmFsbG93X3V0YyB9XHJcbiAgICAgIF1cclxuICAgIH07XHJcbiAgfVxyXG59Il19
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0ZW5zaW9ucy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9leHRlbnNpb25zL3NyYy9saWIvbW9kdWxlcy9leHRlbnNpb25zLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxVQUFVO0FBQ1YsT0FBTyxFQUFFLFFBQVEsRUFBdUIsTUFBTSxlQUFlLENBQUM7QUFFOUQsVUFBVTtBQUNWLE9BQU8sRUFBRSxVQUFVLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQUUsYUFBYSxFQUFFLE1BQU0sV0FBVyxDQUFDOztBQUcxRjs7R0FFRztBQUVILE1BQU0sT0FBTyxnQkFBZ0I7SUFDM0IsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUErQjtRQUM1QyxPQUFPO1lBQ0wsUUFBUSxFQUFFLGdCQUFnQjtZQUMxQixTQUFTLEVBQUU7Z0JBQ1QsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxJQUFJLE9BQU8sRUFBRTtnQkFDNUQsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxZQUFZLElBQUksSUFBSSxFQUFFO2dCQUNyRSxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLGdCQUFnQixJQUFJLEtBQUssRUFBRTtnQkFDMUUsRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsU0FBUyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsU0FBUyxFQUFFO2FBQzVGO1NBQ0YsQ0FBQztJQUNKLENBQUM7OzZHQVhVLGdCQUFnQjs4R0FBaEIsZ0JBQWdCOzhHQUFoQixnQkFBZ0I7MkZBQWhCLGdCQUFnQjtrQkFENUIsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbIi8vIEFuZ3VsYXJcclxuaW1wb3J0IHsgTmdNb2R1bGUsIE1vZHVsZVdpdGhQcm92aWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbi8vIE1vZGVsbGlcclxuaW1wb3J0IHsgRVhUX0xPQ0FMRSwgRVhUX0ZBTkNZX0FMRVJUUywgQVBQU0VBUkNIX1BSRUZJWCwgRVhUX0FMTE9XX1VUQyB9IGZyb20gJy4uL3Rva2Vucyc7XHJcbmltcG9ydCB7IEV4dGVuc2lvbnNNb2R1bGVDb25maWcgfSBmcm9tICcuLi9tb2RlbHMvRXh0ZW5zaW9uc01vZHVsZUNvbmZpZyc7XHJcblxyXG4vKipcclxuICogTW9kdWxvIGRpIGVzdGVuc2lvbmUgY2hlIG5vbiByZWdpc3RyYSBuZXNzdW4gc2Vydml6aW8gZGkgZXN0ZW5zaW9uZSwgZG92cmFubm8gZXNzZXJlIGRpY2hpYXJhdGkgMSBwZXIgMSBkYWxsJ2FwcGxpY2F6aW9uZSBjaGUgbGkgdXRpbGl6emFcclxuICovXHJcbkBOZ01vZHVsZSgpXHJcbmV4cG9ydCBjbGFzcyBFeHRlbnNpb25zTW9kdWxlIHtcclxuICBzdGF0aWMgZm9yUm9vdChjb25maWc/OiBFeHRlbnNpb25zTW9kdWxlQ29uZmlnKTogTW9kdWxlV2l0aFByb3ZpZGVyczxFeHRlbnNpb25zTW9kdWxlPiB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBuZ01vZHVsZTogRXh0ZW5zaW9uc01vZHVsZSxcclxuICAgICAgcHJvdmlkZXJzOiBbXHJcbiAgICAgICAgeyBwcm92aWRlOiBFWFRfTE9DQUxFLCB1c2VWYWx1ZTogY29uZmlnPy5sb2NhbGUgfHwgJ2l0LUlUJyB9LFxyXG4gICAgICAgIHsgcHJvdmlkZTogRVhUX0ZBTkNZX0FMRVJUUywgdXNlVmFsdWU6IGNvbmZpZz8uZmFuY3lfYWxlcnRzIHx8IHRydWUgfSxcclxuICAgICAgICB7IHByb3ZpZGU6IEFQUFNFQVJDSF9QUkVGSVgsIHVzZVZhbHVlOiBjb25maWc/LmFwcHNlYXJjaF9wcmVmaXggfHwgJ0hvdCcgfSxcclxuICAgICAgICB7IHByb3ZpZGU6IEVYVF9BTExPV19VVEMsIHVzZVZhbHVlOiBjb25maWc/LmFsbG93X3V0YyA9PSBudWxsID8gZmFsc2UgOiBjb25maWc/LmFsbG93X3V0YyB9XHJcbiAgICAgIF1cclxuICAgIH07XHJcbiAgfVxyXG59Il19
@@ -204,9 +204,9 @@ export class ClipboardService {
204
204
  document.body.removeChild(textArea);
205
205
  }
206
206
  }
207
- ClipboardService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ClipboardService, deps: [{ token: i1.MessageService }, { token: EXT_LOCALE, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
208
- ClipboardService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ClipboardService });
209
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ClipboardService, decorators: [{
207
+ ClipboardService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: ClipboardService, deps: [{ token: i1.MessageService }, { token: EXT_LOCALE, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
208
+ ClipboardService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: ClipboardService });
209
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: ClipboardService, decorators: [{
210
210
  type: Injectable
211
211
  }], ctorParameters: function () { return [{ type: i1.MessageService }, { type: undefined, decorators: [{
212
212
  type: Optional
@@ -214,4 +214,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
214
214
  type: Inject,
215
215
  args: [EXT_LOCALE]
216
216
  }] }]; } });
217
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0ZW5zaW9ucy5jbGlwYm9hcmQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V4dGVuc2lvbnMvc3JjL2xpYi9zZXJ2aWNlcy9leHRlbnNpb25zLmNsaXBib2FyZC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFVBQVU7QUFDVixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFJN0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN2QyxPQUFPLElBQUksTUFBTSxhQUFhLENBQUM7OztBQUUvQjs7R0FFRztBQUVILE1BQU0sT0FBTyxnQkFBZ0I7SUE0Q3pCOzs7O09BSUc7SUFDSCxZQUEyQixVQUEwQixFQUEwQyxNQUFjO1FBQWxGLGVBQVUsR0FBVixVQUFVLENBQWdCO1FBQTBDLFdBQU0sR0FBTixNQUFNLENBQVE7UUEvQzdHOztXQUVHO1FBQ0ssUUFBRyxHQUFHO1lBQ1YsaUlBQWlJLEVBQUU7Z0JBQy9ILE9BQU8sRUFBRSxpSUFBaUk7Z0JBQzFJLE9BQU8sRUFBRSxpSUFBaUk7YUFDN0k7WUFDRCwrQ0FBK0MsRUFBRTtnQkFDN0MsT0FBTyxFQUFFLCtDQUErQztnQkFDeEQsT0FBTyxFQUFFLHlEQUF5RDthQUNyRTtZQUNELCtDQUErQyxFQUFFO2dCQUM3QyxPQUFPLEVBQUUsK0NBQStDO2dCQUN4RCxPQUFPLEVBQUUsb0RBQW9EO2FBQ2hFO1lBQ0QsK0NBQStDLEVBQUM7Z0JBQzVDLE9BQU8sRUFBRSwrQ0FBK0M7Z0JBQ3hELE9BQU8sRUFBRSxzREFBc0Q7YUFDbEU7WUFDRCxzQ0FBc0MsRUFBRTtnQkFDcEMsT0FBTyxFQUFFLHNDQUFzQztnQkFDL0MsT0FBTyxFQUFFLG9EQUFvRDthQUNoRTtZQUNELHFCQUFxQixFQUFFO2dCQUNuQixPQUFPLEVBQUUscUJBQXFCO2dCQUM5QixPQUFP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QUNBLElBQUksVUFBVSxHQUFHLFFBQVEsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDOUMsSUFBRyxDQUFDLFVBQVU7Z0JBQ1YsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQywrQ0FBK0MsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksT0FBTyxDQUFDLENBQUMsQ0FBQztTQUN0SDtRQUFDLE9BQU8sR0FBRyxFQUFFO1lBQ1YsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQywrQ0FBK0MsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksT0FBTyxDQUFDLEdBQUcsSUFBSSxHQUFFLEdBQUcsQ0FBQyxDQUFDO1NBQzlIO1FBRUQsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDeEMsQ0FBQzs7OEdBdE5RLGdCQUFnQixnREFpRGtELFVBQVU7a0hBakQ1RSxnQkFBZ0I7NEZBQWhCLGdCQUFnQjtrQkFENUIsVUFBVTs7MEJBa0RpRCxRQUFROzswQkFBSSxNQUFNOzJCQUFDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBBbmd1bGFyXHJcbmltcG9ydCB7IEluamVjdGFibGUsIEluamVjdCwgT3B0aW9uYWwgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5cclxuLy8gTW9kZWxsaVxyXG5pbXBvcnQgeyBNZXNzYWdlU2VydmljZSB9IGZyb20gJy4vZXh0ZW5zaW9ucy5tZXNzYWdlcy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRVhUX0xPQ0FMRSB9IGZyb20gXCIuLi90b2tlbnNcIjtcclxuaW1wb3J0IFN3YWwgZnJvbSBcInN3ZWV0YWxlcnQyXCI7XHJcblxyXG4vKipcclxuICogU2VydmljZSBjaGUgZm9ybmlzY2UgdW4gYWNjZXNzbyBiYXNlIGluIGxldHR1cmEvc2NyaXR0dXJhIHN1bGxhIGNsaXBib2FyZFxyXG4gKi9cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgQ2xpcGJvYXJkU2VydmljZSB7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBPZ2dldHRvIHN0YXRpY28gZGkgbG9jYWxpenphemlvbmUgcGVyIGkgbWVzc2FnZ2kgZGkgcXVlc3RhIFNlcnZpY2VcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBsb2MgPSB7XHJcbiAgICAgICAgXCJVbmZvcnR1bmF0ZWx5IEZpcmVmb3ggZG9lc24ndCB5ZXQgc3VwcG9ydCBkaXJlY3QgQ2xpcGJvYXJkIGFjY2VzcyBpZiBub3QgdmlhIGV4dGVuc2lvbnMsIFBsZWFzZSB1c2UgQ2hyb21lIHRvIGRvIHRoaXMgb3BlcmF0aW9uXCI6IHtcclxuICAgICAgICAgICAgJ2VuLVVTJzogXCJVbmZvcnR1bmF0ZWx5IEZpcmVmb3ggZG9lc24ndCB5ZXQgc3VwcG9ydCBkaXJlY3QgQ2xpcGJvYXJkIGFjY2VzcyBpZiBub3QgdmlhIGV4dGVuc2lvbnMsIFBsZWFzZSB1c2UgQ2hyb21lIHRvIGRvIHRoaXMgb3BlcmF0aW9uXCIsXHJcbiAgICAgICAgICAgICdpdC1JVCc6IFwiTWkgZGlzcGlhY2UgbWEgRmlyZWZveCBub24gc3VwcG9ydGEgbCdhY2Nlc3NvIGRpcmV0dG8gYWxsYSBDbGlwYm9hcmQsIHNlIG5vbiBhdHRyYXZlcnNvIGxlIGVzdGVuc2lvbmkuIFNpIHByZWdhIGRpIHVzYXJlIENocm9tZVwiXHJcbiAgICAgICAgfSxcclxuICAgICAgICBcIkdlbmVyaWMgZXJyb3IgZHVyaW5nICdjb3B5JyBjb21tYW5kIGV4ZWN1dGlvblwiOiB7XHJcbiAgICAgICAgICAgICdlbi1VUyc6IFwiR2VuZXJpYyBlcnJvciBkdXJpbmcgJ2NvcHknIGNvbW1hbmQgZXhlY3V0aW9uXCIsXHJcbiAgICAgICAgICAgICdpdC1JVCc6IFwiRXJyb3JlIGdlbmVyaWNvIGR1cmFudGUgbCdlc2VjdXppb25lIGRlbCBjb21hbmRvICdjb3B5J1wiXHJcbiAgICAgICAgfSxcclxuICAgICAgICBcIkVycm9yIGR1cmluZyBDbGlwYm9hcmQgY29udGVudCByZWFkIG9wZXJhdGlvblwiOiB7XHJcbiAgICAgICAgICAgICdlbi1VUyc6IFwiRXJyb3IgZHVyaW5nIENsaXBib2FyZCBjb250ZW50IHJlYWQgb3BlcmF0aW9uXCIsXHJcbiAgICAgICAgICAgICdpdC1JVCc6IFwiRXJyb3JlIG5lbGxhIGxldHR1cmEgZGVsIGNvbnRlbnV0byBkZWxsYSBDbGlwYm9hcmRcIlxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgXCJFcnJvciBkdXJpbmcgQ2xpcGJvYXJkIGNvbnRlbnQgY29weSBvcGVyYXRpb25cIjp7XHJcbiAgICAgICAgICAgICdlbi1VUyc6IFwiRXJyb3IgZHVyaW5nIENsaXBib2FyZCBjb250ZW50IGNvcHkgb3BlcmF0aW9uXCIsXHJcbiAgICAgICAgICAgICdpdC1JVCc6IFwiRXJyb3JlIG5lbGxhIHNjcml0dHVyYSBkZWwgY29udGVudXRvIG5lbGxhIENsaXBib2FyZFwiXHJcbiAgICAgICAgfSxcclxuICAgICAgICBcIlBsZWFzZSBpbnNlcnQgeW91ciBjbGlwYm9hcmQgY29udGVudFwiOiB7XHJcbiAgICAgICAgICAgICdlbi1VUyc6IFwiUGxlYXNlIGluc2VydCB5b3VyIGNsaXBib2FyZCBjb250ZW50XCIsXHJcbiAgICAgICAgICAgICdpdC1JVCc6IFwiU2kgcHJlZ2EgZGkgaW5jb2xsYXJlIGlsIGNvbnRlbnV0byBkZWxsYSBDbGlwYm9hcmRcIlxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgXCJVc2VyIGlucHV0IHJlcXVpcmVkXCI6IHtcclxuICAgICAgICAgICAgJ2VuLVVTJzogXCJVc2VyIGlucHV0IHJlcXVpcmVkXCIsXHJcbiAgICAgICAgICAgICdpdC1JVCc6IFwiUmljaGllc3RvIElucHV0IHV0ZW50ZVwiXHJcbiAgICAgICAgfSxcclxuICAgICAgICBcIllvdXIgY3VycmVudCBicm93c2VyIGRvZXMgbm90IHN1cHBvcnQgcmVhZGluZyBmcm9tIHRoZSBjbGlwYm9hcmQgZGlyZWN0bHkuIFBsZWFzZSBwYXN0ZSB5b3VyIGNsaXBib2FyZCdzIGNvbnRlbnQgaW4gdGhpcyBJbnB1dCBmaWVsZCBhbmQgY29uZmlybSB0aGUgb3BlcmF0aW9uXCI6IHtcclxuICAgICAgICAgICAgJ2VuLVVTJzogXCJZb3VyIGN1cnJlbnQgYnJvd3NlciBkb2VzIG5vdCBzdXBwb3J0IHJlYWRpbmcgZnJvbSB0aGUgY2xpcGJvYXJkIGRpcmVjdGx5LiBQbGVhc2UgcGFzdGUgeW91ciBjbGlwYm9hcmQncyBjb250ZW50IGluIHRoaXMgSW5wdXQgZmllbGQgYW5kIGNvbmZpcm0gdGhlIG9wZXJhdGlvblwiLFxyXG4gICAgICAgICAgICAnaXQtSVQnOiBcIklsIGJyb3dzZXIgY29ycmVudGUgbm9uIHN1cHBvcnRhIGxhIGxldHR1cmEgZGlyZXR0YSBkZWkgZGF0aSBkZWxsYSBDbGlwYm9hcmQsIHNpIHByZWdhIGRpIGVmZmV0dHVhcmUgdW4naW5jb2xsYSAoQ1RSTCArIFYpIG5lbGxhIGNhc2VsbGEgZGkgdGVzdG8gZSBjb25mZXJtYXJlIGwnb3BlcmF6aW9uZVwiXHJcbiAgICAgICAgfSxcclxuICAgICAgICBcIkNvbmZpcm1cIjoge1xyXG4gICAgICAgICAgICAnZW4tVVMnOiBcIkNvbmZpcm1cIixcclxuICAgICAgICAgICAgJ2l0LUlUJzogXCJDb25mZXJtYVwiXHJcbiAgICAgICAgfSxcclxuICAgICAgICBcIkNhbmNlbFwiOiB7XHJcbiAgICAgICAgICAgICdlbi1VUyc6IFwiQ2FuY2VsXCIsXHJcbiAgICAgICAgICAgICdpdC1JVCc6IFwiQW5udWxsYVwiXHJcbiAgICAgICAgfSxcclxuICAgIH07XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDb3N0cnV0dG9yZVxyXG4gICAgICogXHJcbiAgICAgKiBAaWdub3JlXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcml2YXRlIG1zZ1NlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlLCBAT3B0aW9uYWwoKSBASW5qZWN0KEVYVF9MT0NBTEUpIHByaXZhdGUgTE9DQUxFOiBzdHJpbmcpIHsgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUHJlbmRlIGlsIHZhbG9yZSBkZWxsYSBjbGlwYm9hcmQuIFxyXG4gICAgICogU2kgcHXDsiBzcGVjaWZpY2FyZSBzZSBjaSBzaSBhc3BldHRhIHVuYSBsaXN0YSBvIHVuYSBtYXRyaWNlIGRpIHZhbG9yaSBpbiBtb2RvIGRhIHJpY2V2ZXJlIGdpw6AgdW4gcmlzdWx0YXRvIHV0aWxpenphYmlsZVxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0geydhcnJheScgfCAnbWF0cml4J30gc3R5bGUgU3RpbGUgZGVsbCdvdXRwdXQgZGVzaWRlcmF0bywgc2UgYXJyYXkgbyBtYXRyaWNlXHJcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSB2YWx1ZUZvdW5kQ2FsbGJhY2sgQ2FsbGJhY2sgY2hlIHF1ZXN0YSBmdW56aW9uZSBjaGlhbWVyw6AgdW5hIHZvbHRhIG90dGVudXRvIGkgdmFsb3JpIHJpY2hpZXN0aSBkYWxsYSBjbGlwYm9hcmRcclxuICAgICAqL1xyXG4gICAgcHVibGljIGdldENsaXBib2FyZChzdHlsZTogJ2FycmF5JyB8ICdtYXRyaXgnLCB2YWx1ZUZvdW5kQ2FsbGJhY2sgOiAodmFsdWVzOiBzdHJpbmdbXSB8IHN0cmluZ1tdW10pID0+IHZvaWQpIHtcclxuICAgICAgICBpZiAobmF2aWdhdG9yLnVzZXJBZ2VudC5pbmRleE9mKFwiRmlyZWZveFwiKSAhPSAtMSkge1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgU3dhbC5maXJlKHtcclxuICAgICAgICAgICAgICAgIHRpdGxlOiB0aGlzLmxvY1tcIlVzZXIgaW5wdXQgcmVxdWlyZWRcIl1bdGhpcy5MT0NBTEUgPz8gJ2l0LUlUJ10sXHJcbiAgICAgICAgICAgICAgICB0ZXh0OiB0aGlzLmxvY1tcIllvdXIgY3VycmVudCBicm93c2VyIGRvZXMgbm90IHN1cHBvcnQgcmVhZGluZyBmcm9tIHRoZSBjbGlwYm9hcmQgZGlyZWN0bHkuIFBsZWFzZSBwYXN0ZSB5b3VyIGNsaXBib2FyZCdzIGNvbnRlbnQgaW4gdGhpcyBJbnB1dCBmaWVsZCBhbmQgY29uZmlybSB0aGUgb3BlcmF0aW9uXCJdW3RoaXMuTE9DQUxFID8/ICdpdC1JVCddLFxyXG4gICAgICAgICAgICAgICAgaW5wdXQ6ICd0ZXh0YXJlYScsXHJcbiAgICAgICAgICAgICAgICBpY29uOiBcIndhcm5pbmdcIixcclxuICAgICAgICAgICAgICAgIGNvbmZpcm1CdXR0b25UZXh0OiB0aGlzLmxvY1tcIkNvbmZpcm1cIl1bdGhpcy5MT0NBTEUgPz8gJ2l0LUlUJ10sXHJcbiAgICAgICAgICAgICAgICBjYW5jZWxCdXR0b25UZXh0OiB0aGlzLmxvY1tcIkNhbmNlbFwiXVt0aGlzLkxPQ0FMRSA/PyAnaXQtSVQnXSxcclxuICAgICAgICAgICAgICAgIHNob3dDYW5jZWxCdXR0b246IHRydWUsXHJcbiAgICAgICAgICAgICAgICBjdXN0b21DbGFzczoge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbmZpcm1CdXR0b246IFwiYnRuIGJ0bi1wcmltYXJ5XCIsXHJcbiAgICAgICAgICAgICAgICAgICAgY2FuY2VsQnV0dG9uOiBcImJ0biBidG4tc2Vjb25kYXJ5IGFwcC1tYXJnaW4tcmlnaHQtMTVcIixcclxuICAgICAgICAgICAgICAgICAgICBjb250YWluZXI6IFwiYXBwLXdyYXBcIixcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICByZXZlcnNlQnV0dG9uczogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIGFsbG93T3V0c2lkZUNsaWNrOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgIGlucHV0VmFsaWRhdG9yOiAodmFsdWUpID0+IHtcclxuICAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSlcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5sb2NbXCJQbGVhc2UgaW5zZXJ0IHlvdXIgY2xpcGJvYXJkIGNvbnRlbnRcIl1bdGhpcy5MT0NBTEUgPz8gJ2l0LUlUJ11cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9KS50aGVuKHQgPT4ge1xyXG4gICAgICAgICAgICAgICAgICBpZiAodC5pc0NvbmZpcm1lZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJbQGVzZmFlbnphL2V4dGVuc2lvbnNdIFJldHJpZXZpbmcgaW5wdXQgZGF0YSBmcm9tIHVzZXIgaW5wdXRcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRvQ2xpcGJvYXJkRGF0YUdldCh0LnZhbHVlLCBzdHlsZSwgdmFsdWVGb3VuZENhbGxiYWNrKTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICgoPGFueT53aW5kb3cpLmNsaXBib2FyZERhdGEpIHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coXCJbQGVzZmFlbnphL2V4dGVuc2lvbnNdIEZvdW5kIGNsaXBib2FyZERhdGFcIik7XHJcbiAgICAgICAgICAgIGxldCBkYXRhID0gKDxhbnk+d2luZG93KS5jbGlwYm9hcmREYXRhLmdldERhdGEoXCJUZXh0XCIpO1xyXG4gICAgICAgICAgICB0aGlzLmRvQ2xpcGJvYXJkRGF0YUdldChkYXRhLCBzdHlsZSwgdmFsdWVGb3VuZENhbGxiYWNrKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGVsc2UgaWYgKCg8YW55PndpbmRvdykubmF2aWdhdG9yLmNsaXBib2FyZCkge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcIltAZXNmYWVuemEvZXh0ZW5zaW9uc10gRm91bmQgbmF2aWdhdG9yIGNsaXBib2FyZFwiKTtcclxuICAgICAgICAgICAgKDxhbnk+d2luZG93KS5uYXZpZ2F0b3IucGVybWlzc2lvbnMucXVlcnkoeyBuYW1lOiAnY2xpcGJvYXJkLXJlYWQnIH0pLnRoZW4ocmVzdWx0ID0+IHtcclxuICAgICAgICAgICAgICAgIGlmICghKHJlc3VsdC5zdGF0ZSA9PT0gJ2dyYW50ZWQnIHx8IHJlc3VsdC5zdGF0ZSA9PT0gJ3Byb21wdCcpKVxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJbQGVzZmFlbnphL2V4dGVuc2lvbnNdIENsaXBib2FyZCBwZXJtaXNzaW9uIG5vdCBncmFudGVkXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZUZvdW5kQ2FsbGJhY2spIHZhbHVlRm91bmRDYWxsYmFjayhbXSk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiW0Blc2ZhZW56YS9leHRlbnNpb25zXSBDbGlwYm9hcmQgcGVybWlzc2lvbiBncmFudGVkLCByZXRyaWV2aW5nIHZhbHVlc1wiKTtcclxuICAgICAgICAgICAgICAgICg8YW55PndpbmRvdykubmF2aWdhdG9yLmNsaXBib2FyZC5yZWFkVGV4dCgpXHJcbiAgICAgICAgICAgICAgICAgICAgLnRoZW4oKHQ6IHN0cmluZykgPT4gdGhpcy5kb0NsaXBib2FyZERhdGFHZXQodCwgc3R5bGUsIHZhbHVlRm91bmRDYWxsYmFjaykpXHJcbiAgICAgICAgICAgICAgICAgICAgLmNhdGNoKChlcnI6IGFueSkgPT4gdGhpcy5tc2dTZXJ2aWNlLnNpbXBsZUVycm9yKHRoaXMubG9jW1wiRXJyb3IgZHVyaW5nIENsaXBib2FyZCBjb250ZW50IHJlYWQgb3BlcmF0aW9uXCJdW3RoaXMuTE9DQUxFID8/ICdpdC1JVCddICsgXCI6IFwiICsgZXJyKSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKiogQGlnbm9yZSAqL1xyXG4gICAgcHJpdmF0ZSBkb0NsaXBib2FyZERhdGFHZXQoY2xpcGJvYXJkVGV4dDogc3RyaW5nLCBzdHlsZTogXCJtYXRyaXhcIiB8IFwiYXJyYXlcIiwgdmFsdWVGb3VuZENhbGxiYWNrOiBGdW5jdGlvbikge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFwiW0Blc2ZhZW56YS9leHRlbnNpb25zXSBSZXRyaWV2ZWQgY2xpcGJvYXJkIHZhbHVlczogXCIgKyBjbGlwYm9hcmRUZXh0KTtcclxuICAgICAgICBsZXQgdmFsdWUgPSBzdHlsZSA9PSBcImFycmF5XCIgPyB0aGlzLmdldENsaXBib2FyZExpbmVzKGNsaXBib2FyZFRleHQpIDpcclxuICAgICAgICAgICAgc3R5bGUgPT0gXCJtYXRyaXhcIiA/IHRoaXMuZ2V0Q2xpcGJvYXJkTWF0cml4KGNsaXBib2FyZFRleHQpIDogW107XHJcbiAgICAgICAgY29uc29sZS5sb2coYFtAZXNmYWVuemEvZXh0ZW5zaW9uc10gQWRhcHRlZCBmb3IgJHtzdHlsZX06ICR7SlNPTi5zdHJpbmdpZnkodmFsdWUpfWApO1xyXG4gICAgICAgIGlmICh2YWx1ZUZvdW5kQ2FsbGJhY2spIHZhbHVlRm91bmRDYWxsYmFjayh2YWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBPdHRpZW5lIGlsIGNvbnRlbnV0byBkZWxsYSBjbGlwYm9hcmQgZGl2aXNvIHBlciByaWdoZSAoc2VwYXJhdGUgZGEgbmV3bGluZSlcclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGRhdGEgY29udGVudXRvIGxldHRvIGRhbGxhIGNsaXBib2FyZFxyXG4gICAgICogXHJcbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nW119IEFycmF5IGNvbnRlbmVudGUgaWwgdGVzdG8gcHJlc28gZGFsbGEgY2xpcGJvYXJkIGRpdmlzbyBwZXIgcmlnYVxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGdldENsaXBib2FyZExpbmVzKGRhdGE6IHN0cmluZyk6IHN0cmluZ1tdIHtcclxuICAgICAgICBsZXQgdHJpbW1lZERhdGEgPSBkYXRhLnRyaW0oKTtcclxuXHJcbiAgICAgICAgaWYgKCF0cmltbWVkRGF0YS5pbmNsdWRlcyhcIlxcclxcblwiKSAmJiB0cmltbWVkRGF0YS5pbmNsdWRlcyhcIlxcblwiKSlcclxuICAgICAgICAgICAgcmV0dXJuIHRyaW1tZWREYXRhLnNwbGl0KFwiXFxuXCIpO1xyXG5cclxuICAgICAgICByZXR1cm4gdHJpbW1lZERhdGEuc3BsaXQoXCJcXHJcXG5cIik7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBPdHRpZW5lIGlsIGNvbnRlbnV0byBkZWxsYSBjbGlwYm9hcmQgZGl2aXNvIHBlciByaWdoZSAoc2VwYXJhdGUgZGEgbmV3bGluZSkgZSBjb2xvbm5lIChzZXBhcmF0ZSBkYSB0YWIpXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBkYXRhIGNvbnRlbnV0byBsZXR0byBkYWxsYSBjbGlwYm9hcmRcclxuICAgICAqIFxyXG4gICAgICogQHJldHVybnMge3N0cmluZ1tdW119IE1hdHJpY2UgY29udGVuZW50ZSBpbCB0ZXN0byBwcmVzbyBkYWxsYSBjbGlwYm9hcmQgZGl2aXNvIHBlciByaWdhIGUgY29sb25uYVxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGdldENsaXBib2FyZE1hdHJpeChkYXRhOiBzdHJpbmcpOiBzdHJpbmdbXVtdIHtcclxuICAgICAgICB2YXIgcmV0OiBzdHJpbmdbXVtdID0gW107XHJcbiAgICAgICAgdmFyIHJvd3MgPSAhZGF0YS5pbmNsdWRlcyhcIlxcclxcblwiKSAmJiBkYXRhLmluY2x1ZGVzKFwiXFxuXCIpID8gZGF0YS5zcGxpdChcIlxcblwiKSA6IGRhdGEuc3BsaXQoXCJcXHJcXG5cIik7XHJcblxyXG4gICAgICAgIC8vIEEgcXVhbnRvIHBhcmUgb2duaSB2YWxvcmUgw6ggc2VwYXJhdG8gZGEgdW4gXFx0Li4uIHNwZXJvIGNoZSBzaWEgdW5vIHN0YW5kYXJkIGRpIHF1YW5kbyBzaSBjb3BpYSBkYSBleGNlbCBhbHRyaW1lbnRpIGNpYW9cclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJvd3MubGVuZ3RoOyBpKyspXHJcbiAgICAgICAgICAgIHJldC5wdXNoKHJvd3NbaV0uc3BsaXQoJ1xcdCcpLm1hcCh0ID0+IHQudHJpbSgpKSk7XHJcbiAgICAgICAgcmV0dXJuIHJldDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIE1ldG9kbyBjaGUgY29waWEgdW4gdGVzdG8gYWxsJ2ludGVybm8gZGVsbGEgY2xpcGJvYXJkXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0IFRlc3RvIGRhIGluc2VyaXJlIG5lbGxhIGNsaXBib2FyZFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgY29weVRleHRUb0NsaXBib2FyZCh0ZXh0OiBzdHJpbmcpIHtcclxuICAgICAgICB2YXIgdGV4dEFyZWEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwidGV4dGFyZWFcIik7XHJcblxyXG4gICAgICAgIC8vXHJcbiAgICAgICAgLy8gKioqIFRoaXMgc3R5bGluZyBpcyBhbiBleHRyYSBzdGVwIHdoaWNoIGlzIGxpa2VseSBub3QgcmVxdWlyZWQuICoqKlxyXG4gICAgICAgIC8vXHJcbiAgICAgICAgLy8gV2h5IGlzIGl0IGhlcmU/IFRvIGVuc3VyZTpcclxuICAgICAgICAvLyAxLiB0aGUgZWxlbWVudCBpcyBhYmxlIHRvIGhhdmUgZm9jdXMgYW5kIHNlbGVjdGlvbi5cclxuICAgICAgICAvLyAyLiBpZiBlbGVtZW50IHdhcyB0byBmbGFzaCByZW5kZXIgaXQgaGFzIG1pbmltYWwgdmlzdWFsIGltcGFjdC5cclxuICAgICAgICAvLyAzLiBsZXNzIGZsYWt5bmVzcyB3aXRoIHNlbGVjdGlvbiBhbmQgY29weWluZyB3aGljaCAqKm1pZ2h0Kiogb2NjdXIgaWZcclxuICAgICAgICAvLyAgICB0aGUgdGV4dGFyZWEgZWxlbWVudCBpcyBub3QgdmlzaWJsZS5cclxuICAgICAgICAvL1xyXG4gICAgICAgIC8vIFRoZSBsaWtlbGlob29kIGlzIHRoZSBlbGVtZW50IHdvbid0IGV2ZW4gcmVuZGVyLCBub3QgZXZlbiBhIGZsYXNoLFxyXG4gICAgICAgIC8vIHNvIHNvbWUgb2YgdGhlc2UgYXJlIGp1c3QgcHJlY2F1dGlvbnMuIEhvd2V2ZXIgaW4gSUUgdGhlIGVsZW1lbnRcclxuICAgICAgICAvLyBpcyB2aXNpYmxlIHdoaWxzdCB0aGUgcG9wdXAgYm94IGFza2luZyB0aGUgdXNlciBmb3IgcGVybWlzc2lvbiBmb3JcclxuICAgICAgICAvLyB0aGUgd2ViIHBhZ2UgdG8gY29weSB0byB0aGUgY2xpcGJvYXJkLlxyXG4gICAgICAgIC8vXHJcblxyXG4gICAgICAgIC8vIFBsYWNlIGluIHRvcC1sZWZ0IGNvcm5lciBvZiBzY3JlZW4gcmVnYXJkbGVzcyBvZiBzY3JvbGwgcG9zaXRpb24uXHJcbiAgICAgICAgdGV4dEFyZWEuc3R5bGUucG9zaXRpb24gPSBcImZpeGVkXCI7XHJcbiAgICAgICAgdGV4dEFyZWEuc3R5bGUudG9wID0gXCIwXCI7XHJcbiAgICAgICAgdGV4dEFyZWEuc3R5bGUubGVmdCA9IFwiMFwiO1xyXG5cclxuICAgICAgICAvLyBFbnN1cmUgaXQgaGFzIGEgc21hbGwgd2lkdGggYW5kIGhlaWdodC4gU2V0dGluZyB0byAxcHggLyAxZW1cclxuICAgICAgICAvLyBkb2Vzbid0IHdvcmsgYXMgdGhpcyBnaXZlcyBhIG5lZ2F0aXZlIHcvaCBvbiBzb21lIGJyb3dzZXJzLlxyXG4gICAgICAgIHRleHRBcmVhLnN0eWxlLndpZHRoID0gXCIyZW1cIjtcclxuICAgICAgICB0ZXh0QXJlYS5zdHlsZS5oZWlnaHQgPSBcIjJlbVwiO1xyXG5cclxuICAgICAgICAvLyBXZSBkb24ndCBuZWVkIHBhZGRpbmcsIHJlZHVjaW5nIHRoZSBzaXplIGlmIGl0IGRvZXMgZmxhc2ggcmVuZGVyLlxyXG4gICAgICAgIHRleHRBcmVhLnN0eWxlLnBhZGRpbmcgPSBcIjBcIjtcclxuXHJcbiAgICAgICAgLy8gQ2xlYW4gdXAgYW55IGJvcmRlcnMuXHJcbiAgICAgICAgdGV4dEFyZWEuc3R5bGUuYm9yZGVyID0gXCJub25lXCI7XHJcbiAgICAgICAgdGV4dEFyZWEuc3R5bGUub3V0bGluZSA9IFwibm9uZVwiO1xyXG4gICAgICAgIHRleHRBcmVhLnN0eWxlLmJveFNoYWRvdyA9IFwibm9uZVwiO1xyXG5cclxuICAgICAgICAvLyBBdm9pZCBmbGFzaCBvZiB3aGl0ZSBib3ggaWYgcmVuZGVyZWQgZm9yIGFueSByZWFzb24uXHJcbiAgICAgICAgdGV4dEFyZWEuc3R5bGUuYmFja2dyb3VuZCA9IFwidHJhbnNwYXJlbnRcIjtcclxuXHJcbiAgICAgICAgdGV4dEFyZWEudmFsdWUgPSB0ZXh0O1xyXG5cclxuICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRleHRBcmVhKTtcclxuICAgICAgICB0ZXh0QXJlYS5mb2N1cygpO1xyXG4gICAgICAgIHRleHRBcmVhLnNlbGVjdCgpO1xyXG5cclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICB2YXIgc3VjY2Vzc2Z1bCA9IGRvY3VtZW50LmV4ZWNDb21tYW5kKFwiY29weVwiKTtcclxuICAgICAgICAgICAgaWYoIXN1Y2Nlc3NmdWwpXHJcbiAgICAgICAgICAgICAgICB0aGlzLm1zZ1NlcnZpY2Uuc2ltcGxlRXJyb3IodGhpcy5sb2NbXCJHZW5lcmljIGVycm9yIGR1cmluZyAnY29weScgY29tbWFuZCBleGVjdXRpb25cIl1bdGhpcy5MT0NBTEUgPz8gJ2l0LUlUJ10pO1xyXG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xyXG4gICAgICAgICAgICB0aGlzLm1zZ1NlcnZpY2Uuc2ltcGxlRXJyb3IodGhpcy5sb2NbXCJFcnJvciBkdXJpbmcgQ2xpcGJvYXJkIGNvbnRlbnQgY29weSBvcGVyYXRpb25cIl1bdGhpcy5MT0NBTEUgPz8gJ2l0LUlUJ10gKyBcIjogXCIrIGVycik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKHRleHRBcmVhKTtcclxuICAgIH1cclxufSJdfQ==
217
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0ZW5zaW9ucy5jbGlwYm9hcmQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V4dGVuc2lvbnMvc3JjL2xpYi9zZXJ2aWNlcy9leHRlbnNpb25zLmNsaXBib2FyZC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFVBQVU7QUFDVixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFJN0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN2QyxPQUFPLElBQUksTUFBTSxhQUFhLENBQUM7OztBQUUvQjs7R0FFRztBQUVILE1BQU0sT0FBTyxnQkFBZ0I7SUE0Q3pCOzs7O09BSUc7SUFDSCxZQUEyQixVQUEwQixFQUEwQyxNQUFjO1FBQWxGLGVBQVUsR0FBVixVQUFVLENBQWdCO1FBQTBDLFdBQU0sR0FBTixNQUFNLENBQVE7UUEvQzdHOztXQUVHO1FBQ0ssUUFBRyxHQUFHO1lBQ1YsaUlBQWlJLEVBQUU7Z0JBQy9ILE9BQU8sRUFBRSxpSUFBaUk7Z0JBQzFJLE9BQU8sRUFBRSxpSUFBaUk7YUFDN0k7WUFDRCwrQ0FBK0MsRUFBRTtnQkFDN0MsT0FBTyxFQUFFLCtDQUErQztnQkFDeEQsT0FBTyxFQUFFLHlEQUF5RDthQUNyRTtZQUNELCtDQUErQyxFQUFFO2dCQUM3QyxPQUFPLEVBQUUsK0NBQStDO2dCQUN4RCxPQUFPLEVBQUUsb0RBQW9EO2FBQ2hFO1lBQ0QsK0NBQStDLEVBQUM7Z0JBQzVDLE9BQU8sRUFBRSwrQ0FBK0M7Z0JBQ3hELE9BQU8sRUFBRSxzREFBc0Q7YUFDbEU7WUFDRCxzQ0FBc0MsRUFBRTtnQkFDcEMsT0FBTyxFQUFFLHNDQUFzQztnQkFDL0MsT0FBTyxFQUFFLG9EQUFvRDthQUNoRTtZQUNELHFCQUFxQixFQUFFO2dCQUNuQixPQUFPLEVBQUUscUJBQXFCO2dCQUM5QixPQUFP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QUNBLElBQUksVUFBVSxHQUFHLFFBQVEsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDOUMsSUFBRyxDQUFDLFVBQVU7Z0JBQ1YsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQywrQ0FBK0MsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksT0FBTyxDQUFDLENBQUMsQ0FBQztTQUN0SDtRQUFDLE9BQU8sR0FBRyxFQUFFO1lBQ1YsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQywrQ0FBK0MsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksT0FBTyxDQUFDLEdBQUcsSUFBSSxHQUFFLEdBQUcsQ0FBQyxDQUFDO1NBQzlIO1FBRUQsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDeEMsQ0FBQzs7NkdBdE5RLGdCQUFnQixnREFpRGtELFVBQVU7aUhBakQ1RSxnQkFBZ0I7MkZBQWhCLGdCQUFnQjtrQkFENUIsVUFBVTs7MEJBa0RpRCxRQUFROzswQkFBSSxNQUFNOzJCQUFDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBBbmd1bGFyXHJcbmltcG9ydCB7IEluamVjdGFibGUsIEluamVjdCwgT3B0aW9uYWwgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5cclxuLy8gTW9kZWxsaVxyXG5pbXBvcnQgeyBNZXNzYWdlU2VydmljZSB9IGZyb20gJy4vZXh0ZW5zaW9ucy5tZXNzYWdlcy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRVhUX0xPQ0FMRSB9IGZyb20gXCIuLi90b2tlbnNcIjtcclxuaW1wb3J0IFN3YWwgZnJvbSBcInN3ZWV0YWxlcnQyXCI7XHJcblxyXG4vKipcclxuICogU2VydmljZSBjaGUgZm9ybmlzY2UgdW4gYWNjZXNzbyBiYXNlIGluIGxldHR1cmEvc2NyaXR0dXJhIHN1bGxhIGNsaXBib2FyZFxyXG4gKi9cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgQ2xpcGJvYXJkU2VydmljZSB7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBPZ2dldHRvIHN0YXRpY28gZGkgbG9jYWxpenphemlvbmUgcGVyIGkgbWVzc2FnZ2kgZGkgcXVlc3RhIFNlcnZpY2VcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBsb2MgPSB7XHJcbiAgICAgICAgXCJVbmZvcnR1bmF0ZWx5IEZpcmVmb3ggZG9lc24ndCB5ZXQgc3VwcG9ydCBkaXJlY3QgQ2xpcGJvYXJkIGFjY2VzcyBpZiBub3QgdmlhIGV4dGVuc2lvbnMsIFBsZWFzZSB1c2UgQ2hyb21lIHRvIGRvIHRoaXMgb3BlcmF0aW9uXCI6IHtcclxuICAgICAgICAgICAgJ2VuLVVTJzogXCJVbmZvcnR1bmF0ZWx5IEZpcmVmb3ggZG9lc24ndCB5ZXQgc3VwcG9ydCBkaXJlY3QgQ2xpcGJvYXJkIGFjY2VzcyBpZiBub3QgdmlhIGV4dGVuc2lvbnMsIFBsZWFzZSB1c2UgQ2hyb21lIHRvIGRvIHRoaXMgb3BlcmF0aW9uXCIsXHJcbiAgICAgICAgICAgICdpdC1JVCc6IFwiTWkgZGlzcGlhY2UgbWEgRmlyZWZveCBub24gc3VwcG9ydGEgbCdhY2Nlc3NvIGRpcmV0dG8gYWxsYSBDbGlwYm9hcmQsIHNlIG5vbiBhdHRyYXZlcnNvIGxlIGVzdGVuc2lvbmkuIFNpIHByZWdhIGRpIHVzYXJlIENocm9tZVwiXHJcbiAgICAgICAgfSxcclxuICAgICAgICBcIkdlbmVyaWMgZXJyb3IgZHVyaW5nICdjb3B5JyBjb21tYW5kIGV4ZWN1dGlvblwiOiB7XHJcbiAgICAgICAgICAgICdlbi1VUyc6IFwiR2VuZXJpYyBlcnJvciBkdXJpbmcgJ2NvcHknIGNvbW1hbmQgZXhlY3V0aW9uXCIsXHJcbiAgICAgICAgICAgICdpdC1JVCc6IFwiRXJyb3JlIGdlbmVyaWNvIGR1cmFudGUgbCdlc2VjdXppb25lIGRlbCBjb21hbmRvICdjb3B5J1wiXHJcbiAgICAgICAgfSxcclxuICAgICAgICBcIkVycm9yIGR1cmluZyBDbGlwYm9hcmQgY29udGVudCByZWFkIG9wZXJhdGlvblwiOiB7XHJcbiAgICAgICAgICAgICdlbi1VUyc6IFwiRXJyb3IgZHVyaW5nIENsaXBib2FyZCBjb250ZW50IHJlYWQgb3BlcmF0aW9uXCIsXHJcbiAgICAgICAgICAgICdpdC1JVCc6IFwiRXJyb3JlIG5lbGxhIGxldHR1cmEgZGVsIGNvbnRlbnV0byBkZWxsYSBDbGlwYm9hcmRcIlxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgXCJFcnJvciBkdXJpbmcgQ2xpcGJvYXJkIGNvbnRlbnQgY29weSBvcGVyYXRpb25cIjp7XHJcbiAgICAgICAgICAgICdlbi1VUyc6IFwiRXJyb3IgZHVyaW5nIENsaXBib2FyZCBjb250ZW50IGNvcHkgb3BlcmF0aW9uXCIsXHJcbiAgICAgICAgICAgICdpdC1JVCc6IFwiRXJyb3JlIG5lbGxhIHNjcml0dHVyYSBkZWwgY29udGVudXRvIG5lbGxhIENsaXBib2FyZFwiXHJcbiAgICAgICAgfSxcclxuICAgICAgICBcIlBsZWFzZSBpbnNlcnQgeW91ciBjbGlwYm9hcmQgY29udGVudFwiOiB7XHJcbiAgICAgICAgICAgICdlbi1VUyc6IFwiUGxlYXNlIGluc2VydCB5b3VyIGNsaXBib2FyZCBjb250ZW50XCIsXHJcbiAgICAgICAgICAgICdpdC1JVCc6IFwiU2kgcHJlZ2EgZGkgaW5jb2xsYXJlIGlsIGNvbnRlbnV0byBkZWxsYSBDbGlwYm9hcmRcIlxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgXCJVc2VyIGlucHV0IHJlcXVpcmVkXCI6IHtcclxuICAgICAgICAgICAgJ2VuLVVTJzogXCJVc2VyIGlucHV0IHJlcXVpcmVkXCIsXHJcbiAgICAgICAgICAgICdpdC1JVCc6IFwiUmljaGllc3RvIElucHV0IHV0ZW50ZVwiXHJcbiAgICAgICAgfSxcclxuICAgICAgICBcIllvdXIgY3VycmVudCBicm93c2VyIGRvZXMgbm90IHN1cHBvcnQgcmVhZGluZyBmcm9tIHRoZSBjbGlwYm9hcmQgZGlyZWN0bHkuIFBsZWFzZSBwYXN0ZSB5b3VyIGNsaXBib2FyZCdzIGNvbnRlbnQgaW4gdGhpcyBJbnB1dCBmaWVsZCBhbmQgY29uZmlybSB0aGUgb3BlcmF0aW9uXCI6IHtcclxuICAgICAgICAgICAgJ2VuLVVTJzogXCJZb3VyIGN1cnJlbnQgYnJvd3NlciBkb2VzIG5vdCBzdXBwb3J0IHJlYWRpbmcgZnJvbSB0aGUgY2xpcGJvYXJkIGRpcmVjdGx5LiBQbGVhc2UgcGFzdGUgeW91ciBjbGlwYm9hcmQncyBjb250ZW50IGluIHRoaXMgSW5wdXQgZmllbGQgYW5kIGNvbmZpcm0gdGhlIG9wZXJhdGlvblwiLFxyXG4gICAgICAgICAgICAnaXQtSVQnOiBcIklsIGJyb3dzZXIgY29ycmVudGUgbm9uIHN1cHBvcnRhIGxhIGxldHR1cmEgZGlyZXR0YSBkZWkgZGF0aSBkZWxsYSBDbGlwYm9hcmQsIHNpIHByZWdhIGRpIGVmZmV0dHVhcmUgdW4naW5jb2xsYSAoQ1RSTCArIFYpIG5lbGxhIGNhc2VsbGEgZGkgdGVzdG8gZSBjb25mZXJtYXJlIGwnb3BlcmF6aW9uZVwiXHJcbiAgICAgICAgfSxcclxuICAgICAgICBcIkNvbmZpcm1cIjoge1xyXG4gICAgICAgICAgICAnZW4tVVMnOiBcIkNvbmZpcm1cIixcclxuICAgICAgICAgICAgJ2l0LUlUJzogXCJDb25mZXJtYVwiXHJcbiAgICAgICAgfSxcclxuICAgICAgICBcIkNhbmNlbFwiOiB7XHJcbiAgICAgICAgICAgICdlbi1VUyc6IFwiQ2FuY2VsXCIsXHJcbiAgICAgICAgICAgICdpdC1JVCc6IFwiQW5udWxsYVwiXHJcbiAgICAgICAgfSxcclxuICAgIH07XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDb3N0cnV0dG9yZVxyXG4gICAgICogXHJcbiAgICAgKiBAaWdub3JlXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcml2YXRlIG1zZ1NlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlLCBAT3B0aW9uYWwoKSBASW5qZWN0KEVYVF9MT0NBTEUpIHByaXZhdGUgTE9DQUxFOiBzdHJpbmcpIHsgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUHJlbmRlIGlsIHZhbG9yZSBkZWxsYSBjbGlwYm9hcmQuIFxyXG4gICAgICogU2kgcHXDsiBzcGVjaWZpY2FyZSBzZSBjaSBzaSBhc3BldHRhIHVuYSBsaXN0YSBvIHVuYSBtYXRyaWNlIGRpIHZhbG9yaSBpbiBtb2RvIGRhIHJpY2V2ZXJlIGdpw6AgdW4gcmlzdWx0YXRvIHV0aWxpenphYmlsZVxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0geydhcnJheScgfCAnbWF0cml4J30gc3R5bGUgU3RpbGUgZGVsbCdvdXRwdXQgZGVzaWRlcmF0bywgc2UgYXJyYXkgbyBtYXRyaWNlXHJcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSB2YWx1ZUZvdW5kQ2FsbGJhY2sgQ2FsbGJhY2sgY2hlIHF1ZXN0YSBmdW56aW9uZSBjaGlhbWVyw6AgdW5hIHZvbHRhIG90dGVudXRvIGkgdmFsb3JpIHJpY2hpZXN0aSBkYWxsYSBjbGlwYm9hcmRcclxuICAgICAqL1xyXG4gICAgcHVibGljIGdldENsaXBib2FyZChzdHlsZTogJ2FycmF5JyB8ICdtYXRyaXgnLCB2YWx1ZUZvdW5kQ2FsbGJhY2sgOiAodmFsdWVzOiBzdHJpbmdbXSB8IHN0cmluZ1tdW10pID0+IHZvaWQpIHtcclxuICAgICAgICBpZiAobmF2aWdhdG9yLnVzZXJBZ2VudC5pbmRleE9mKFwiRmlyZWZveFwiKSAhPSAtMSkge1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgU3dhbC5maXJlKHtcclxuICAgICAgICAgICAgICAgIHRpdGxlOiB0aGlzLmxvY1tcIlVzZXIgaW5wdXQgcmVxdWlyZWRcIl1bdGhpcy5MT0NBTEUgPz8gJ2l0LUlUJ10sXHJcbiAgICAgICAgICAgICAgICB0ZXh0OiB0aGlzLmxvY1tcIllvdXIgY3VycmVudCBicm93c2VyIGRvZXMgbm90IHN1cHBvcnQgcmVhZGluZyBmcm9tIHRoZSBjbGlwYm9hcmQgZGlyZWN0bHkuIFBsZWFzZSBwYXN0ZSB5b3VyIGNsaXBib2FyZCdzIGNvbnRlbnQgaW4gdGhpcyBJbnB1dCBmaWVsZCBhbmQgY29uZmlybSB0aGUgb3BlcmF0aW9uXCJdW3RoaXMuTE9DQUxFID8/ICdpdC1JVCddLFxyXG4gICAgICAgICAgICAgICAgaW5wdXQ6ICd0ZXh0YXJlYScsXHJcbiAgICAgICAgICAgICAgICBpY29uOiBcIndhcm5pbmdcIixcclxuICAgICAgICAgICAgICAgIGNvbmZpcm1CdXR0b25UZXh0OiB0aGlzLmxvY1tcIkNvbmZpcm1cIl1bdGhpcy5MT0NBTEUgPz8gJ2l0LUlUJ10sXHJcbiAgICAgICAgICAgICAgICBjYW5jZWxCdXR0b25UZXh0OiB0aGlzLmxvY1tcIkNhbmNlbFwiXVt0aGlzLkxPQ0FMRSA/PyAnaXQtSVQnXSxcclxuICAgICAgICAgICAgICAgIHNob3dDYW5jZWxCdXR0b246IHRydWUsXHJcbiAgICAgICAgICAgICAgICBjdXN0b21DbGFzczoge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbmZpcm1CdXR0b246IFwiYnRuIGJ0bi1wcmltYXJ5XCIsXHJcbiAgICAgICAgICAgICAgICAgICAgY2FuY2VsQnV0dG9uOiBcImJ0biBidG4tc2Vjb25kYXJ5IGFwcC1tYXJnaW4tcmlnaHQtMTVcIixcclxuICAgICAgICAgICAgICAgICAgICBjb250YWluZXI6IFwiYXBwLXdyYXBcIixcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICByZXZlcnNlQnV0dG9uczogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIGFsbG93T3V0c2lkZUNsaWNrOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgIGlucHV0VmFsaWRhdG9yOiAodmFsdWUpID0+IHtcclxuICAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSlcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5sb2NbXCJQbGVhc2UgaW5zZXJ0IHlvdXIgY2xpcGJvYXJkIGNvbnRlbnRcIl1bdGhpcy5MT0NBTEUgPz8gJ2l0LUlUJ11cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9KS50aGVuKHQgPT4ge1xyXG4gICAgICAgICAgICAgICAgICBpZiAodC5pc0NvbmZpcm1lZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJbQGVzZmFlbnphL2V4dGVuc2lvbnNdIFJldHJpZXZpbmcgaW5wdXQgZGF0YSBmcm9tIHVzZXIgaW5wdXRcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRvQ2xpcGJvYXJkRGF0YUdldCh0LnZhbHVlLCBzdHlsZSwgdmFsdWVGb3VuZENhbGxiYWNrKTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICgoPGFueT53aW5kb3cpLmNsaXBib2FyZERhdGEpIHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coXCJbQGVzZmFlbnphL2V4dGVuc2lvbnNdIEZvdW5kIGNsaXBib2FyZERhdGFcIik7XHJcbiAgICAgICAgICAgIGxldCBkYXRhID0gKDxhbnk+d2luZG93KS5jbGlwYm9hcmREYXRhLmdldERhdGEoXCJUZXh0XCIpO1xyXG4gICAgICAgICAgICB0aGlzLmRvQ2xpcGJvYXJkRGF0YUdldChkYXRhLCBzdHlsZSwgdmFsdWVGb3VuZENhbGxiYWNrKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGVsc2UgaWYgKCg8YW55PndpbmRvdykubmF2aWdhdG9yLmNsaXBib2FyZCkge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcIltAZXNmYWVuemEvZXh0ZW5zaW9uc10gRm91bmQgbmF2aWdhdG9yIGNsaXBib2FyZFwiKTtcclxuICAgICAgICAgICAgKDxhbnk+d2luZG93KS5uYXZpZ2F0b3IucGVybWlzc2lvbnMucXVlcnkoeyBuYW1lOiAnY2xpcGJvYXJkLXJlYWQnIH0pLnRoZW4ocmVzdWx0ID0+IHtcclxuICAgICAgICAgICAgICAgIGlmICghKHJlc3VsdC5zdGF0ZSA9PT0gJ2dyYW50ZWQnIHx8IHJlc3VsdC5zdGF0ZSA9PT0gJ3Byb21wdCcpKVxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJbQGVzZmFlbnphL2V4dGVuc2lvbnNdIENsaXBib2FyZCBwZXJtaXNzaW9uIG5vdCBncmFudGVkXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZUZvdW5kQ2FsbGJhY2spIHZhbHVlRm91bmRDYWxsYmFjayhbXSk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiW0Blc2ZhZW56YS9leHRlbnNpb25zXSBDbGlwYm9hcmQgcGVybWlzc2lvbiBncmFudGVkLCByZXRyaWV2aW5nIHZhbHVlc1wiKTtcclxuICAgICAgICAgICAgICAgICg8YW55PndpbmRvdykubmF2aWdhdG9yLmNsaXBib2FyZC5yZWFkVGV4dCgpXHJcbiAgICAgICAgICAgICAgICAgICAgLnRoZW4oKHQ6IHN0cmluZykgPT4gdGhpcy5kb0NsaXBib2FyZERhdGFHZXQodCwgc3R5bGUsIHZhbHVlRm91bmRDYWxsYmFjaykpXHJcbiAgICAgICAgICAgICAgICAgICAgLmNhdGNoKChlcnI6IGFueSkgPT4gdGhpcy5tc2dTZXJ2aWNlLnNpbXBsZUVycm9yKHRoaXMubG9jW1wiRXJyb3IgZHVyaW5nIENsaXBib2FyZCBjb250ZW50IHJlYWQgb3BlcmF0aW9uXCJdW3RoaXMuTE9DQUxFID8/ICdpdC1JVCddICsgXCI6IFwiICsgZXJyKSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKiogQGlnbm9yZSAqL1xyXG4gICAgcHJpdmF0ZSBkb0NsaXBib2FyZERhdGFHZXQoY2xpcGJvYXJkVGV4dDogc3RyaW5nLCBzdHlsZTogXCJtYXRyaXhcIiB8IFwiYXJyYXlcIiwgdmFsdWVGb3VuZENhbGxiYWNrOiBGdW5jdGlvbikge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFwiW0Blc2ZhZW56YS9leHRlbnNpb25zXSBSZXRyaWV2ZWQgY2xpcGJvYXJkIHZhbHVlczogXCIgKyBjbGlwYm9hcmRUZXh0KTtcclxuICAgICAgICBsZXQgdmFsdWUgPSBzdHlsZSA9PSBcImFycmF5XCIgPyB0aGlzLmdldENsaXBib2FyZExpbmVzKGNsaXBib2FyZFRleHQpIDpcclxuICAgICAgICAgICAgc3R5bGUgPT0gXCJtYXRyaXhcIiA/IHRoaXMuZ2V0Q2xpcGJvYXJkTWF0cml4KGNsaXBib2FyZFRleHQpIDogW107XHJcbiAgICAgICAgY29uc29sZS5sb2coYFtAZXNmYWVuemEvZXh0ZW5zaW9uc10gQWRhcHRlZCBmb3IgJHtzdHlsZX06ICR7SlNPTi5zdHJpbmdpZnkodmFsdWUpfWApO1xyXG4gICAgICAgIGlmICh2YWx1ZUZvdW5kQ2FsbGJhY2spIHZhbHVlRm91bmRDYWxsYmFjayh2YWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBPdHRpZW5lIGlsIGNvbnRlbnV0byBkZWxsYSBjbGlwYm9hcmQgZGl2aXNvIHBlciByaWdoZSAoc2VwYXJhdGUgZGEgbmV3bGluZSlcclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGRhdGEgY29udGVudXRvIGxldHRvIGRhbGxhIGNsaXBib2FyZFxyXG4gICAgICogXHJcbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nW119IEFycmF5IGNvbnRlbmVudGUgaWwgdGVzdG8gcHJlc28gZGFsbGEgY2xpcGJvYXJkIGRpdmlzbyBwZXIgcmlnYVxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGdldENsaXBib2FyZExpbmVzKGRhdGE6IHN0cmluZyk6IHN0cmluZ1tdIHtcclxuICAgICAgICBsZXQgdHJpbW1lZERhdGEgPSBkYXRhLnRyaW0oKTtcclxuXHJcbiAgICAgICAgaWYgKCF0cmltbWVkRGF0YS5pbmNsdWRlcyhcIlxcclxcblwiKSAmJiB0cmltbWVkRGF0YS5pbmNsdWRlcyhcIlxcblwiKSlcclxuICAgICAgICAgICAgcmV0dXJuIHRyaW1tZWREYXRhLnNwbGl0KFwiXFxuXCIpO1xyXG5cclxuICAgICAgICByZXR1cm4gdHJpbW1lZERhdGEuc3BsaXQoXCJcXHJcXG5cIik7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBPdHRpZW5lIGlsIGNvbnRlbnV0byBkZWxsYSBjbGlwYm9hcmQgZGl2aXNvIHBlciByaWdoZSAoc2VwYXJhdGUgZGEgbmV3bGluZSkgZSBjb2xvbm5lIChzZXBhcmF0ZSBkYSB0YWIpXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBkYXRhIGNvbnRlbnV0byBsZXR0byBkYWxsYSBjbGlwYm9hcmRcclxuICAgICAqIFxyXG4gICAgICogQHJldHVybnMge3N0cmluZ1tdW119IE1hdHJpY2UgY29udGVuZW50ZSBpbCB0ZXN0byBwcmVzbyBkYWxsYSBjbGlwYm9hcmQgZGl2aXNvIHBlciByaWdhIGUgY29sb25uYVxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGdldENsaXBib2FyZE1hdHJpeChkYXRhOiBzdHJpbmcpOiBzdHJpbmdbXVtdIHtcclxuICAgICAgICB2YXIgcmV0OiBzdHJpbmdbXVtdID0gW107XHJcbiAgICAgICAgdmFyIHJvd3MgPSAhZGF0YS5pbmNsdWRlcyhcIlxcclxcblwiKSAmJiBkYXRhLmluY2x1ZGVzKFwiXFxuXCIpID8gZGF0YS5zcGxpdChcIlxcblwiKSA6IGRhdGEuc3BsaXQoXCJcXHJcXG5cIik7XHJcblxyXG4gICAgICAgIC8vIEEgcXVhbnRvIHBhcmUgb2duaSB2YWxvcmUgw6ggc2VwYXJhdG8gZGEgdW4gXFx0Li4uIHNwZXJvIGNoZSBzaWEgdW5vIHN0YW5kYXJkIGRpIHF1YW5kbyBzaSBjb3BpYSBkYSBleGNlbCBhbHRyaW1lbnRpIGNpYW9cclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJvd3MubGVuZ3RoOyBpKyspXHJcbiAgICAgICAgICAgIHJldC5wdXNoKHJvd3NbaV0uc3BsaXQoJ1xcdCcpLm1hcCh0ID0+IHQudHJpbSgpKSk7XHJcbiAgICAgICAgcmV0dXJuIHJldDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIE1ldG9kbyBjaGUgY29waWEgdW4gdGVzdG8gYWxsJ2ludGVybm8gZGVsbGEgY2xpcGJvYXJkXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0IFRlc3RvIGRhIGluc2VyaXJlIG5lbGxhIGNsaXBib2FyZFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgY29weVRleHRUb0NsaXBib2FyZCh0ZXh0OiBzdHJpbmcpIHtcclxuICAgICAgICB2YXIgdGV4dEFyZWEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwidGV4dGFyZWFcIik7XHJcblxyXG4gICAgICAgIC8vXHJcbiAgICAgICAgLy8gKioqIFRoaXMgc3R5bGluZyBpcyBhbiBleHRyYSBzdGVwIHdoaWNoIGlzIGxpa2VseSBub3QgcmVxdWlyZWQuICoqKlxyXG4gICAgICAgIC8vXHJcbiAgICAgICAgLy8gV2h5IGlzIGl0IGhlcmU/IFRvIGVuc3VyZTpcclxuICAgICAgICAvLyAxLiB0aGUgZWxlbWVudCBpcyBhYmxlIHRvIGhhdmUgZm9jdXMgYW5kIHNlbGVjdGlvbi5cclxuICAgICAgICAvLyAyLiBpZiBlbGVtZW50IHdhcyB0byBmbGFzaCByZW5kZXIgaXQgaGFzIG1pbmltYWwgdmlzdWFsIGltcGFjdC5cclxuICAgICAgICAvLyAzLiBsZXNzIGZsYWt5bmVzcyB3aXRoIHNlbGVjdGlvbiBhbmQgY29weWluZyB3aGljaCAqKm1pZ2h0Kiogb2NjdXIgaWZcclxuICAgICAgICAvLyAgICB0aGUgdGV4dGFyZWEgZWxlbWVudCBpcyBub3QgdmlzaWJsZS5cclxuICAgICAgICAvL1xyXG4gICAgICAgIC8vIFRoZSBsaWtlbGlob29kIGlzIHRoZSBlbGVtZW50IHdvbid0IGV2ZW4gcmVuZGVyLCBub3QgZXZlbiBhIGZsYXNoLFxyXG4gICAgICAgIC8vIHNvIHNvbWUgb2YgdGhlc2UgYXJlIGp1c3QgcHJlY2F1dGlvbnMuIEhvd2V2ZXIgaW4gSUUgdGhlIGVsZW1lbnRcclxuICAgICAgICAvLyBpcyB2aXNpYmxlIHdoaWxzdCB0aGUgcG9wdXAgYm94IGFza2luZyB0aGUgdXNlciBmb3IgcGVybWlzc2lvbiBmb3JcclxuICAgICAgICAvLyB0aGUgd2ViIHBhZ2UgdG8gY29weSB0byB0aGUgY2xpcGJvYXJkLlxyXG4gICAgICAgIC8vXHJcblxyXG4gICAgICAgIC8vIFBsYWNlIGluIHRvcC1sZWZ0IGNvcm5lciBvZiBzY3JlZW4gcmVnYXJkbGVzcyBvZiBzY3JvbGwgcG9zaXRpb24uXHJcbiAgICAgICAgdGV4dEFyZWEuc3R5bGUucG9zaXRpb24gPSBcImZpeGVkXCI7XHJcbiAgICAgICAgdGV4dEFyZWEuc3R5bGUudG9wID0gXCIwXCI7XHJcbiAgICAgICAgdGV4dEFyZWEuc3R5bGUubGVmdCA9IFwiMFwiO1xyXG5cclxuICAgICAgICAvLyBFbnN1cmUgaXQgaGFzIGEgc21hbGwgd2lkdGggYW5kIGhlaWdodC4gU2V0dGluZyB0byAxcHggLyAxZW1cclxuICAgICAgICAvLyBkb2Vzbid0IHdvcmsgYXMgdGhpcyBnaXZlcyBhIG5lZ2F0aXZlIHcvaCBvbiBzb21lIGJyb3dzZXJzLlxyXG4gICAgICAgIHRleHRBcmVhLnN0eWxlLndpZHRoID0gXCIyZW1cIjtcclxuICAgICAgICB0ZXh0QXJlYS5zdHlsZS5oZWlnaHQgPSBcIjJlbVwiO1xyXG5cclxuICAgICAgICAvLyBXZSBkb24ndCBuZWVkIHBhZGRpbmcsIHJlZHVjaW5nIHRoZSBzaXplIGlmIGl0IGRvZXMgZmxhc2ggcmVuZGVyLlxyXG4gICAgICAgIHRleHRBcmVhLnN0eWxlLnBhZGRpbmcgPSBcIjBcIjtcclxuXHJcbiAgICAgICAgLy8gQ2xlYW4gdXAgYW55IGJvcmRlcnMuXHJcbiAgICAgICAgdGV4dEFyZWEuc3R5bGUuYm9yZGVyID0gXCJub25lXCI7XHJcbiAgICAgICAgdGV4dEFyZWEuc3R5bGUub3V0bGluZSA9IFwibm9uZVwiO1xyXG4gICAgICAgIHRleHRBcmVhLnN0eWxlLmJveFNoYWRvdyA9IFwibm9uZVwiO1xyXG5cclxuICAgICAgICAvLyBBdm9pZCBmbGFzaCBvZiB3aGl0ZSBib3ggaWYgcmVuZGVyZWQgZm9yIGFueSByZWFzb24uXHJcbiAgICAgICAgdGV4dEFyZWEuc3R5bGUuYmFja2dyb3VuZCA9IFwidHJhbnNwYXJlbnRcIjtcclxuXHJcbiAgICAgICAgdGV4dEFyZWEudmFsdWUgPSB0ZXh0O1xyXG5cclxuICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRleHRBcmVhKTtcclxuICAgICAgICB0ZXh0QXJlYS5mb2N1cygpO1xyXG4gICAgICAgIHRleHRBcmVhLnNlbGVjdCgpO1xyXG5cclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICB2YXIgc3VjY2Vzc2Z1bCA9IGRvY3VtZW50LmV4ZWNDb21tYW5kKFwiY29weVwiKTtcclxuICAgICAgICAgICAgaWYoIXN1Y2Nlc3NmdWwpXHJcbiAgICAgICAgICAgICAgICB0aGlzLm1zZ1NlcnZpY2Uuc2ltcGxlRXJyb3IodGhpcy5sb2NbXCJHZW5lcmljIGVycm9yIGR1cmluZyAnY29weScgY29tbWFuZCBleGVjdXRpb25cIl1bdGhpcy5MT0NBTEUgPz8gJ2l0LUlUJ10pO1xyXG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xyXG4gICAgICAgICAgICB0aGlzLm1zZ1NlcnZpY2Uuc2ltcGxlRXJyb3IodGhpcy5sb2NbXCJFcnJvciBkdXJpbmcgQ2xpcGJvYXJkIGNvbnRlbnQgY29weSBvcGVyYXRpb25cIl1bdGhpcy5MT0NBTEUgPz8gJ2l0LUlUJ10gKyBcIjogXCIrIGVycik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKHRleHRBcmVhKTtcclxuICAgIH1cclxufSJdfQ==
@@ -219,9 +219,9 @@ export class DateService {
219
219
  return date.format(small ? this.cfg.smallDate : seconds ? this.cfg.fulldateDisplay : this.cfg.fulldateDisplayNoSS);
220
220
  }
221
221
  }
222
- DateService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: DateService, deps: [{ token: EXT_LOCALE, optional: true }, { token: EXT_ALLOW_UTC, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
223
- DateService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: DateService });
224
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: DateService, decorators: [{
222
+ DateService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: DateService, deps: [{ token: EXT_LOCALE, optional: true }, { token: EXT_ALLOW_UTC, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
223
+ DateService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: DateService });
224
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: DateService, decorators: [{
225
225
  type: Injectable
226
226
  }], ctorParameters: function () { return [{ type: undefined, decorators: [{
227
227
  type: Optional
@@ -234,4 +234,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
234
234
  type: Inject,
235
235
  args: [EXT_ALLOW_UTC]
236
236
  }] }]; } });
237
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0ZW5zaW9ucy5kYXRlcy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXh0ZW5zaW9ucy9zcmMvbGliL3NlcnZpY2VzL2V4dGVuc2lvbnMuZGF0ZXMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxVQUFVO0FBQ1YsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTdELFVBQVU7QUFDVixPQUFPLEVBQUUsYUFBYSxFQUFFLFVBQVUsRUFBRSxNQUFNLFdBQVcsQ0FBQzs7QUFRckQ7O0VBRUU7QUFFSCxNQUFNLE9BQU8sV0FBVztJQTZCcEI7Ozs7T0FJRztJQUNILFlBQTJELE1BQWMsRUFBNkMsUUFBaUI7UUFBNUUsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUE2QyxhQUFRLEdBQVIsUUFBUSxDQUFTO1FBaEN2STs7V0FFRztRQUNLLFFBQUcsR0FBRztZQUNWLG1CQUFtQixFQUFFLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFO1lBQ3JFLGtCQUFrQixFQUFFLEVBQUUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRTtZQUN0Rix3QkFBd0IsRUFBRSxFQUFFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUU7WUFDdEYsMkJBQTJCLEVBQUUsRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUU7WUFDN0UscUNBQXFDLEVBQUUsRUFBRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE9BQU8sRUFBRSxlQUFlLEVBQUU7WUFDN0YsdUNBQXVDLEVBQUUsRUFBRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsT0FBTyxFQUFFLGtCQUFrQixFQUFFO1lBQ3JHLDBCQUEwQixFQUFFLEVBQUUsT0FBTyxFQUFFLHFCQUFxQixF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LENBQUMsSUFBSSxDQUFDLENBQUM7UUFDeEMsSUFBSSxDQUFDLElBQUk7WUFBRSxPQUFPLElBQUksQ0FBQztRQUV2QixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBQ3ZILENBQUM7O3lHQWhQUSxXQUFXLGtCQWtDbUIsVUFBVSw2QkFBOEMsYUFBYTs2R0FsQ25HLFdBQVc7NEZBQVgsV0FBVztrQkFEdkIsVUFBVTs7MEJBbUNhLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsVUFBVTs7MEJBQTJCLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbIi8vIEFuZ3VsYXJcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0LCBPcHRpb25hbCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcblxyXG4vLyBNb2RlbGxpXHJcbmltcG9ydCB7IEVYVF9BTExPV19VVEMsIEVYVF9MT0NBTEUgfSBmcm9tIFwiLi4vdG9rZW5zXCI7XHJcblxyXG4vKipcclxuICogRGljaGlhcmF6aW9uZSBkZWxsYSB2YXJpYWJpbGUgZ2xvYmFsZSBkYXlqcy4gTCdvbmVyZSBkaSBcImNyZWFybGFcIiDDqCBhZmZpZGF0byBhbGwnYXBwbGljYXppb25lIGNoZSB1dGlsaXp6YSBxdWVzdGEgbGlicmVyaWEsIFxyXG4gKiBjaGUgZG92csOgIGltcG9ydGFyZSBsbyBzY3JpcHQgZ2xvYmFsZSBkaSBkYXlqcyBuZWxsYSBDTElcclxuICovXHJcbiBkZWNsYXJlIHZhciBkYXlqczogYW55O1xyXG5cclxuIC8qKlxyXG4gKiBTZXJ2aWNlIGNoZSBmb3JuaXNjZSBkZWkgbWV0b2RpIGRpIGVzdGVuc2lvbmUgcGVyIGxhIGdlc3Rpb25lL21hbmlwb2xhemlvbmUgZGVsbGUgZGF0ZVxyXG4gKi9cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgRGF0ZVNlcnZpY2Uge1xyXG4gICAgXHJcbiAgICAvKipcclxuICAgICAqIE9nZ2V0dG8gc3RhdGljbyBkaSBsb2NhbGl6emF6aW9uZSBwZXIgaSBtZXNzYWdnaSBkaSBxdWVzdGEgU2VydmljZVxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGxvYyA9IHtcclxuICAgICAgICBcIlNNQUxMX0RBVEVfRk9STUFUXCI6IHsgJ2VuLVVTJzogXCJNTS9ERC9ZWVlZXCIsICdpdC1JVCc6IFwiREQvTU0vWVlZWVwiIH0sXHJcbiAgICAgICAgXCJGVUxMX0RBVEVfRk9STUFUXCI6IHsgJ2VuLVVTJzogXCJNTS9ERC9ZWVlZIEhIOm1tOnNzXCIsICdpdC1JVCc6IFwiREQvTU0vWVlZWSBISDptbTpzc1wiIH0sXHJcbiAgICAgICAgXCJGVUxMX0RBVEVfRk9STUFUX05PX1NTXCI6IHsgJ2VuLVVTJzogXCJNTS9ERC9ZWVlZIEhIOm1tXCIsICdpdC1JVCc6IFwiREQvTU0vWVlZWSBISDptbVwiIH0sXHJcbiAgICAgICAgXCJTTUFMTF9EQVRFX0RJU1BMQVlfRk9STUFUXCI6IHsgJ2VuLVVTJzogXCJERC9NTS9ZWVlZXCIsICdpdC1JVCc6IFwiREQvTU0vWVlZWVwiIH0sXHJcbiAgICAgICAgXCJTTUFMTF9EQVRFX0RJU1BMQVlfRk9STUFUX1dJVEhfSE9VUlwiOiB7ICdlbi1VUyc6IFwiREQvTU0vWVlZWSBISFwiLCAnaXQtSVQnOiBcIkREL01NL1lZWVkgSEhcIiB9LFxyXG4gICAgICAgIFwiU01BTExfREFURV9ESVNQTEFZX0ZPUk1BVF9XSVRIX01JTlVURVwiOiB7ICdlbi1VUyc6IFwiREQvTU0vWVlZWSBISDptbVwiLCAnaXQtSVQnOiBcIkREL01NL1lZWVkgSEg6bW1cIiB9LFxyXG4gICAgICAgIFwiRlVMTF9EQVRFX0RJU1BMQVlfRk9STUFUXCI6IHsgJ2VuLVVTJzogXCJERC9NTS9ZWVlZIEhIOm1tOnNzXCIsICdpdC1JVCc6IFwiREQvTU0vWVlZWSBISDptbTpzc1wiIH0sXHJcbiAgICAgICAgXCJGVUxMX0RBVEVfRElTUExBWV9GT1JNQVRfTk9fU1NcIjogeyAnZW4tVVMnOiBcIkREL01NL1lZWVkgSEg6bW1cIiwgJ2l0LUlUJzogXCJERC9NTS9ZWVlZIEhIOm1tXCIgfVxyXG4gICAgfTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIE9nZ2V0dG8gZGkgY29uZmlndXJhemlvbmUgcGVyIHRlbmVyZSBkYSBjb250byBsZSBpbmZvcm1hemlvbmkgc3VpIGZvcm1hdGlcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBjZmcgPSB7XHJcbiAgICAgICAgZnVsbGRhdGU6IFwiXCIsXHJcbiAgICAgICAgZnVsbGRhdGVEaXNwbGF5OiBcIlwiLFxyXG4gICAgICAgIHNtYWxsRGF0ZTogXCJcIixcclxuICAgICAgICBmdWxsZGF0ZU5vU1M6IFwiXCIsXHJcbiAgICAgICAgc21hbGxEYXRlV2l0aEg6IFwiXCIsXHJcbiAgICAgICAgc21hbGxEYXRlV2l0aE06IFwiXCIsXHJcbiAgICAgICAgZnVsbGRhdGVEaXNwbGF5Tm9TUzogXCJcIlxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ29zdHJ1dHRvcmVcclxuICAgICAqIFxyXG4gICAgICogQGlnbm9yZVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgY29uc3RydWN0b3IoQE9wdGlvbmFsKCkgQEluamVjdChFWFRfTE9DQUxFKSBwcml2YXRlIExPQ0FMRTogc3RyaW5nLCBAT3B0aW9uYWwoKSBASW5qZWN0KEVYVF9BTExPV19VVEMpIHByaXZhdGUgYWxsb3dVdGM6IGJvb2xlYW4pIHtcclxuICAgICAgICB0aGlzLmNmZy5zbWFsbERhdGUgPSB0aGlzLmxvY1tcIlNNQUxMX0RBVEVfRk9STUFUXCJdW3RoaXMuTE9DQUxFID8/ICdpdC1JVCddO1xyXG4gICAgICAgIHRoaXMuY2ZnLmZ1bGxkYXRlID0gdGhpcy5sb2NbXCJGVUxMX0RBVEVfRk9STUFUXCJdW3RoaXMuTE9DQUxFID8/ICdpdC1JVCddO1xyXG4gICAgICAgIHRoaXMuY2ZnLmZ1bGxkYXRlTm9TUyA9IHRoaXMubG9jW1wiRlVMTF9EQVRFX0ZPUk1BVF9OT19TU1wiXVt0aGlzLkxPQ0FMRSA/PyAnaXQtSVQnXTtcclxuICAgICAgICB0aGlzLmNmZy5mdWxsZGF0ZURpc3BsYXkgPSB0aGlzLmxvY1tcIkZVTExfREFURV9ESVNQTEFZX0ZPUk1BVFwiXVt0aGlzLkxPQ0FMRSA/PyAnaXQtSVQnXTtcclxuICAgICAgICB0aGlzLmNmZy5mdWxsZGF0ZURpc3BsYXlOb1NTICA9dGhpcy5sb2NbXCJGVUxMX0RBVEVfRElTUExBWV9GT1JNQVRfTk9fU1NcIl1bdGhpcy5MT0NBTEUgPz8gJ2l0LUlUJ107XHJcbiAgICAgICAgdGhpcy5jZmcuc21hbGxEYXRlID0gdGhpcy5sb2NbXCJTTUFMTF9EQVRFX0RJU1BMQVlfRk9STUFUXCJdW3RoaXMuTE9DQUxFID8/ICdpdC1JVCddO1xyXG4gICAgICAgIHRoaXMuY2ZnLnNtYWxsRGF0ZVdpdGhIID0gdGhpcy5sb2NbXCJTTUFMTF9EQVRFX0RJU1BMQVlfRk9STUFUX1dJVEhfSE9VUlwiXVt0aGlzLkxPQ0FMRSA/PyAnaXQtSVQnXTtcclxuICAgICAgICB0aGlzLmNmZy5zbWFsbERhdGVXaXRoTSA9IHRoaXMubG9jW1wiU01BTExfREFURV9ESVNQTEFZX0ZPUk1BVF9XSVRIX01JTlVURVwiXVt0aGlzLkxPQ0FMRSA/PyAnaXQtSVQnXTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEFnZ2l1c3RhIHVuYSBkYXRhIGluIFwiaXN0YW50ZSBmaW5hbGVcIiBpbiBiYXNlIGEgcXVhbCDDqCBsYSBwYXJ0ZSBkaSBkYXRhIHNpZ25pZmljYXRpdmEuXHJcbiAgICAgKiBcclxuICAgICAqIEVzLiBJc3RhbnRlIGZpbmFsZSBkZWxsZSBvcmU6IDA1LzEwLzE5OTIgLS0+IDA0LzEwLzE5OTIgMjQ6MDAoOjAwKVxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge2FueX0gZGF0ZSBEYXRhIHF1YWxzaWFzaSAoRGF0ZSwgc3RyaW5nYSwgZGF5anMuLi4pLCB2ZXJyw6Agcmljb25kb3R0YSBhZCB1biBvZ2dldHRvIGRheUpzXHJcbiAgICAgKiBAcGFyYW0geydkYXknIHwgJ2hvdXInIHwgJ21pbnV0ZSd9IHRpbWVwYXJ0IFBhcnRlIHNpZ25pZmljYXRpdmEgZGVsbGEgZGF0YVxyXG4gICAgICogQHBhcmFtIHtib29sZWFufSBwcmludFNlY29uZHMgSW5kaWNhIHNlIGVmZmV0dHVhcmUgbGEgc3RhbXBhIGRlaSBzZWNvbmRpIG8gbm9cclxuICAgICAqL1xyXG4gICAgcHVibGljIGFkanVzdERhdGVUb0ZpbmFsSW5zdGFudChkYXRlOiBhbnksIHRpbWVwYXJ0OiAnZGF5JyB8ICdob3VyJyB8ICdtaW51dGUnLCBwcmludFNlY29uZHM6IGJvb2xlYW4gPSB0cnVlKTogc3RyaW5nIHtcclxuICAgICAgICBsZXQgbXlkdCA9IHRoaXMuZ2V0RGF0ZUNvbnZlcnRpb24oZGF0ZSk7XHJcbiAgICAgICAgaWYgKG15ZHQgPT0gbnVsbCkgcmV0dXJuIFwiRkU6IE5vdCBhIERhdGVcIjtcclxuXHJcbiAgICAgICAgbGV0IGlzWmVyb1RpbWUgPSBteWR0LnN0YXJ0T2YodGltZXBhcnQpLnZhbHVlT2YoKSA9PT0gbXlkdC52YWx1ZU9mKCk7XHJcbiAgICAgICAgaWYgKCFpc1plcm9UaW1lKSB7XHJcbiAgICAgICAgICAgIGlmICh0aW1lcGFydCA9PSBcImRheVwiICYmIG15ZHQuc3VidHJhY3QoMSwgXCJob3VyXCIpLmhvdXIoKSA9PSBteWR0LmhvdXIoKSkge1xyXG4gICAgICAgICAgICAgICAgLy8gU2UgbCdvcmEgcHJlY2VkZW50ZSDDqCBsbyBzdGVzc28gb3JhcmlvIGRlbGwnb3JhIGF0dHVhbGUgbCdpc3RhbnRlIGZpbmFsZSBkZXYnZXNzZXJlIG1hbmRhdG8gYXZhbnRpIGRpIDFcclxuICAgICAgICAgICAgICAgIG15ZHQgPSBteWR0LmFkZCgxLCBcImhvdXJcIik7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHJldHVybiBwcmludFNlY29uZHMgPyBteWR0LmZvcm1hdCh0aGlzLmNmZy5mdWxsZGF0ZURpc3BsYXkpIDogbXlkdC5mb3JtYXQodGhpcy5jZmcuZnVsbGRhdGVEaXNwbGF5Tm9TUyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgdG1wVmFsdWUgPSBteWR0LnN1YnRyYWN0KDEsIHRpbWVwYXJ0KTtcclxuICAgICAgICBsZXQgdmFsdWUgPSBcIlwiO1xyXG5cclxuICAgICAgICAvLyBJc3RhbnRlIGZpbmFsZSBkZWxsZSBvcmU6IDA1LzEwLzE5OTIgLS0+IDA0LzEwLzE5OTIgMjQ6MDAoOjAwKVxyXG4gICAgICAgIGlmICh0aW1lcGFydCA9PSAnZGF5JylcclxuICAgICAgICAgICAgdmFsdWUgPSB0bXBWYWx1ZS5mb3JtYXQodGhpcy5jZmcuc21hbGxEYXRlKSArIFwiIDI0OjAwXCIgKyAocHJpbnRTZWNvbmRzID8gJzowMCcgOiAnJyk7XHJcblxyXG4gICAgICAgIC8vIElzdGFudGUgZmluYWxlIGRlaSBtaW51dGk6IGdpb3JubyAwNS8xMC8xOTkyIDA0OjAwOjAwIC0tPiAwNS8xMC8xOTkyIDAzOjYwKDowMClcclxuICAgICAgICBlbHNlIGlmICh0aW1lcGFydCA9PSAnaG91cicpXHJcbiAgICAgICAgICAgIHZhbHVlID0gdG1wVmFsdWUuZm9ybWF0KHRoaXMuY2ZnLnNtYWxsRGF0ZVdpdGhIKSArIFwiOjYwXCIgKyAocHJpbnRTZWNvbmRzID8gJzowMCcgOiAnJyk7XHJcblxyXG4gICAgICAgIC8vIElzdGFudGUgZmluYWxlIGRlaSBzZWNvbmRpOiBnaW9ybm8gMDUvMTAvMTk5MiAwNDoxMDowMCAtLT4gMDUvMTAvMTk5MiAwNDowOTo2MFxyXG4gICAgICAgIGVsc2UgaWYgKHRpbWVwYXJ0ID09ICdtaW51dGUnKVxyXG4gICAgICAgICAgICB2YWx1ZSA9IHRtcFZhbHVlLmZvcm1hdCh0aGlzLmNmZy5zbWFsbERhdGVXaXRoTSkgKyBcIjo2MFwiO1xyXG5cclxuICAgICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBGdW56aW9uZSBjaGUgZWZmZXR0dWEgbCdvcmRpbmFtZW50byBmcmEgMiBkYXRlIGluIGJhc2UgYWxsYSBkaXJlemlvbmUgc3BlY2lmaWNhdGFcclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHthbnl9IGEgUHJpbWEgZGF0YSBwZXIgaWwgY29uZnJvbnRvXHJcbiAgICAgKiBAcGFyYW0ge2FueX0gYiBTZWNvbmRhIGRhdGEgcGVyIGlsIGNvbmZyb250b1xyXG4gICAgICogQHBhcmFtIHsnYXNjJyB8ICdkZXNjJ30gZGlyZWN0aW9uIERpcmV6aW9uZSByaXNwZXR0byBhIGN1aSBvcmRpbmFyZSBsZSBkdWUgZGF0ZVxyXG4gICAgICogXHJcbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSAwIHNlIGxlIGRhdGUgc29ubyB1Z3VhbGksIDEgc2UgbGEgZGF0YSBBIGRldmUgdmVuaXJlIGxvZ2ljYW1lbnRlIHByaW1hIGRlbGxhIGRhdGEgQiwgLTEgYWx0cmltZW50aVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZGF0ZVNvcnQoYTogYW55LCBiOiBhbnksIGRpcmVjdGlvbjogJ2FzYycgfCAnZGVzYycpOiBudW1iZXIge1xyXG4gICAgICAgIGlmIChhIDwgYikgcmV0dXJuIGRpcmVjdGlvbiA9PSAnYXNjJyA/IDEgOiAtMTtcclxuICAgICAgICBlbHNlIGlmIChhID4gYikgcmV0dXJuIGRpcmVjdGlvbiA9PSAnYXNjJyA/IC0xIDogMTtcclxuXHJcbiAgICAgICAgLy8gY29uIGEgdWd1YWxlIGEgYlxyXG4gICAgICAgIHJldHVybiAwO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRWZmZXR0dWEgaWwgdHJpbSBkZWkgc2Vjb25kaSBkYSB1bmEgZGF0YSBlc3ByZXNzYSBjb21lIHN0cmluZ2FcclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlIERhdGEgZXNwcmVzc2EgY29tZSBzdHJpbmdhXHJcbiAgICAgKiBcclxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IERhdGEgc2VuemEgaSBzZWNvbmRpXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyB0cmltU2Vjb25kcyh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgICAgICAvL0kgbnVtZXJpIG1hbmdpYXRpIGRhIGRheWpzIHNwZXNzbyB2ZW5nb25vIHJpY29uZG90dGkgYSBkYXRlIHZlcmUuIE1pIGFzc2ljdXJvIGNoZSBzZSBjaSBzb25vIHNvbG8gbnVtZXJpIHByb3NlZ3VvXHJcbiAgICAgICAgaWYgKCFpc05hTig8YW55PnZhbHVlKSlcclxuICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xyXG5cclxuICAgICAgICAvL1NlIG5vbiBobyBxdWFsY29zYSBkZWwgdGlwbyBYWC9ZWS9aWlpaIGFhOmJiOmNjIGRpIHNpY3VybyBub24gw6ggdW5hIGRhdGEgY2hlIG1pIGludGVyZXNzYVxyXG4gICAgICAgIGlmICghL15cXGRcXGRcXC9cXGRcXGRcXC9cXGRcXGRcXGRcXGQgXFxkXFxkOlxcZFxcZDpcXGRcXGQkL2cudGVzdCh2YWx1ZSkpXHJcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcclxuXHJcbiAgICAgICAgLy9JbiBxdWVzdG8gY2FzbyBtaSBhcnJpdmFubyB2YWxvcmkgY2hlIGRldm9ubyBlc3NlcmUgc3RhbXBhdGkgYXMtaXMsIHNvbG8gdGFnbGlhbmRvIGkgc2Vjb25kaVxyXG4gICAgICAgIHJldHVybiBcIidcIiArIHZhbHVlLnN1YnN0cigwLCB2YWx1ZS5sZW5ndGggLSAzKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIERhdGEgdW5hIGxpc3RhIGRpIGRhdGUgRGEgZSB1bmEgbGlzdGEgZGkgZGF0ZSBBIHJlc3RpdHVpc2NlIHVuIG9nZ2V0dG8gcmFwcHJlc2VudGFudGUgaWwgcmFuZ2UgY2hlIGluY2x1ZGUgdHV0dGUgbGUgZGF0ZSBwYXNzYXRlXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7YW55W119IGZyb21EYXRlcyBMaXN0YSBkZWkgRGFcclxuICAgICAqIEBwYXJhbSB7YW55W119IHRvRGF0ZXMgTGlzdGEgZGVpIEFcclxuICAgICAqIFxyXG4gICAgICogQHJldHVybnMge3sgZnJvbTogYW55LCB0bzogYW55IH19IFJhbmdlIGRpIGRhdGUgRGEgLSBBIGNoZSBpbmNsdWRlIHR1dHRpIGkgdmFsb3JpIGRpICoqZnJvbURhdGVzKiogZSAqKnRvRGF0ZXMqKlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ2V0TWluTWF4RGF0ZXNSYW5nZShmcm9tRGF0ZXM6IGFueVtdLCB0b0RhdGVzOiBhbnlbXSk6IHsgZnJvbTogYW55LCB0bzogYW55IH0ge1xyXG4gICAgICAgIGxldCBkYXRlc0Zyb21zOiBhbnlbXSA9IFtdO1xyXG4gICAgICAgIGxldCBkYXRlc1RvOiBhbnlbXSA9IFtdO1xyXG5cclxuICAgICAgICBmb3IobGV0IGkgPSAwOyBpIDwgZnJvbURhdGVzLmxlbmd0aDsgaSsrKVxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgbGV0IGQgPSBmcm9tRGF0ZXNbaV07XHJcbiAgICAgICAgICAgIHZhciBjb252ZXJ0aW9uID0gdGhpcy5nZXREYXRlQ29udmVydGlvbihkKTtcclxuICAgICAgICAgICAgaWYgKGNvbnZlcnRpb24pXHJcbiAgICAgICAgICAgICAgICBkYXRlc0Zyb21zLnB1c2goY29udmVydGlvbik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBmb3IobGV0IGkgPSAwOyBpIDwgdG9EYXRlcy5sZW5ndGg7IGkrKylcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIGxldCBkID0gdG9EYXRlc1tpXTtcclxuICAgICAgICAgICAgdmFyIGNvbnZlcnRpb24gPSB0aGlzLmdldERhdGVDb252ZXJ0aW9uKGQpO1xyXG4gICAgICAgICAgICBpZiAoY29udmVydGlvbilcclxuICAgICAgICAgICAgICAgIGRhdGVzVG8ucHVzaChjb252ZXJ0aW9uKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB7IGZyb206IGRheWpzLm1pbihkYXRlc0Zyb21zKSwgdG86IGRheWpzLm1heChkYXRlc1RvKSB9O1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogT3R0aWVuZSBsYSBjb252ZXJzaW9uZSBkaSB1bmEgZGF0YSBpbiBxdWFsc2lhc2kgZm9ybWF0byBhbCBmb3JtYXRvIHN0YW5kYXJkIERheUpzXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7YW55fSBkYXRlIE9nZ2V0dG8gcmFwcHJlc2VudGFudGUgdW5hIGRhdGEuIFBvdHJlYmJlIGVzc2VyZSB1bmEgc3RyaW5nYSwgdW4gRGF0ZSBvIGdpw6AgdW4gRGF5SnNcclxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gdXNlVXRjIEluZGljYSBzZSB1c2FyZSBsJ2VzdGVuc2lvbmUgdXRjIGRpIERheWpzIHBlciBwYXJzYXJlIGxhIGRhdGEgbyBub1xyXG4gICAgICogXHJcbiAgICAgKiBAcmV0dXJucyB7YW55fSBEYXRhIGluIG1vZGFsaXTDoCBEYXlKc1xyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ2V0RGF0ZUNvbnZlcnRpb24oZGF0ZTogYW55LCB1c2VVdGM6IGJvb2xlYW4gPSBmYWxzZSk6IGFueSB7XHJcbiAgICAgICAgaWYgKCFkYXRlKVxyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuaXNEYXlKcyhkYXRlKSlcclxuICAgICAgICAgICAgcmV0dXJuIGRhdGU7XHJcblxyXG4gICAgICAgIGlmKHRoaXMuaXNKc0RhdGUoZGF0ZSkpXHJcbiAgICAgICAgICAgIHJldHVybiB1c2VVdGMgPyBkYXlqcy51dGMoZGF0ZSk6IGRheWpzKGRhdGUpO1xyXG5cclxuICAgICAgICAvLyBTZSBub24gYyfDqCBsYSBwcm9wcmlldMOgIGxlbmd0aCB2dW9sIGRpcmUgY2hlIG5vbiDDqCB1bmEgc3RyaW5nYSBlIGEgcXVlc3RvIHB1bnRvIG5vbiBobyBpZGVhIGRpIGNoZSBtaW5jaGlhIHNpYVxyXG4gICAgICAgIGxldCBsZW5ndGggPSBkYXRlLmxlbmd0aDtcclxuICAgICAgICBpZiAoIWxlbmd0aClcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcblxyXG4gICAgICAgIGlmICh1c2VVdGMgJiYgIXRoaXMuYWxsb3dVdGMpXHJcbiAgICAgICAgICAgIHRocm93IFwiQGVzZmFlbnphL2V4dGVuc2lvbnM6IFJpY2hpZXN0YSBkYXRhIFVUQyBtYSBkYSBjb25maWd1cmF6aW9uZSBsYSBsaWJyZXJpYSBub24gbG8gc3VwcG9ydGFcIjtcclxuXHJcbiAgICAgICAgLy8gUGVyIHJpc3Bhcm1pYXJlIGNoaWFtYXRlIGEgdGVudG9uaSwgaW4gYmFzZSBhbGxhIGx1bmdoZXp6YSBkZWxsYSBzdHJpbmdhIGNoaWFtbyBkaXJldHRhbWVudGUgaWwgbWV0b2RvIGdpdXN0bywgXHJcbiAgICAgICAgLy8gY29udHJvbGxhbmRvIHBvaSBjaGUgbWkgZ2VuZXJpIHVuYSBkYXRhIGNvbWUgbWUgbGEgYXNwZXR0byBpb1xyXG4gICAgICAgIGxldCB0cnlUaGlzID0gbnVsbDtcclxuICAgICAgICBsZXQgdG9DYWxsID0gdXNlVXRjID8gZGF5anMudXRjIDogZGF5anM7XHJcblxyXG4gICAgICAgIC8vIFNlIGxhIGRhdGEgY29udGllbmUgbGEgbGV0dGVyYSBcIlRcIiB2dW9sIGRpcmUgY2hlIMOoIHVuYSBkYXRhIGRlbCB0aXBvIDIwMjAtMTAtMTVUMDA6MDA6MDAsIGRpcmV0dGFtZW50ZSBwYXJzYWJpbGUgZGFsIGRheWpzIGNvbCBsb2NhbGUgY29ycmV0dG8uXHJcbiAgICAgICAgLy8gUGVyIGlsIHJlc3RvIG1pIGJhc28gc3VsbGEgbHVuZ2hlenphIGRlbGxhIHN0cmluZ2FcclxuICAgICAgICBpZiAoKDxzdHJpbmc+ZGF0ZSkuaW5jbHVkZXMoXCJUXCIpKVxyXG4gICAgICAgICAgICB0cnlUaGlzID0gdG9DYWxsKGRhdGUpO1xyXG4gICAgICAgIGVsc2UgaWYgKGxlbmd0aCA9PSB0aGlzLmNmZy5mdWxsZGF0ZS5sZW5ndGgpXHJcbiAgICAgICAgICAgIHRyeVRoaXMgPSB0b0NhbGwoZGF0ZSwgdGhpcy5jZmcuZnVsbGRhdGUpO1xyXG4gICAgICAgIGVsc2UgaWYgKGxlbmd0aCA9PSB0aGlzLmNmZy5zbWFsbERhdGUubGVuZ3RoKVxyXG4gICAgICAgICAgICB0cnlUaGlzID0gdG9DYWxsKGRhdGUsIHRoaXMuY2ZnLnNtYWxsRGF0ZSk7XHJcbiAgICAgICAgZWxzZSBpZiAobGVuZ3RoID09IHRoaXMuY2ZnLmZ1bGxkYXRlTm9TUy5sZW5ndGgpXHJcbiAgICAgICAgICAgIHRyeVRoaXMgPSB0b0NhbGwoZGF0ZSwgdGhpcy5jZmcuZnVsbGRhdGVOb1NTKVxyXG5cclxuICAgICAgICBpZiAodHJ5VGhpcyAmJiB0cnlUaGlzLmlzVmFsaWQgJiYgdHJ5VGhpcy5pc1ZhbGlkKCkpXHJcbiAgICAgICAgICAgIHJldHVybiB0cnlUaGlzO1xyXG5cclxuICAgICAgICAvLyBTZSBuaWVudGUgZnVuemlvbmEsIG51bGwuIFxyXG4gICAgICAgIC8vIFJpY29uZHVycmUgbCdJbnB1dCBhZCB1bmEgZGF0YSBub24gw6ggcG9zc2liaWxlLlxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogSGVscGVyIGNoZSByZXN0aXR1aXNjZSAqKnRydWUqKiBxdWFsb3JhIGwnb2dnZXR0byBwYXNzYXRvIGZvc3NlIHVuYSBkYXRhIHZlcmEgZSBwcm9wcmlhLCAqKmZhbHNlKiogYWx0cmltZW50aVxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge2FueX0gY2hlY2sgT2dnZXR0byBkYSBjb250cm9sbGFyZVxyXG4gICAgICogXHJcbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gSW5kaWNhemlvbmUgc2UgbCdvZ2dldHRvIMOoIHVuIHZlcm8gRGF0ZSBkaSBKYXZhc2NyaXB0IG8gbm9cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBpc0pzRGF0ZShjaGVjazogYW55KTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIGNoZWNrICYmIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChjaGVjaykgPT09IFwiW29iamVjdCBEYXRlXVwiICYmICFpc05hTihjaGVjayk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBIZWxwZXIgY2hlIHJlc3RpdHVpc2NlICoqdHJ1ZSoqIHF1YWxvcmEgbCdvZ2dldHRvIHBhc3NhdG8gZm9zc2UgdW4gRGF5SnMgdmVybyBlIHByb3ByaW8sICoqZmFsc2UqKiBhbHRyaW1lbnRpXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7YW55fSBjaGVjayBPZ2dldHRvIGRhIGNvbnRyb2xsYXJlXHJcbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gSW5kaWNhemlvbmUgc2UgbCdvZ2dldHRvIMOoIHVuIHZlcm8gRGF5SnMgbyBub1xyXG4gICAgICovXHJcbiAgICAgcHJpdmF0ZSBpc0RheUpzKGNoZWNrOiBhbnkpOiBib29sZWFuIHtcclxuICAgICAgICAvLyBOb24gdXNvIGluc3RhbmNlb2YgcGVyY2jDqSBzYXJlYmJlIGVzdHJlbWFtZW50ZSBwacO5IGxlbnRvXHJcbiAgICAgICAgLy8gTm9uIHVzbyBuZW1tZW5vIGlzRGF5anMoKSBkZWxsYSBsaWJyZXJpYSBEYXlqcyBkYXRvIGNoZSBoYSBsbyBzdGVzc28gcHJvYmxlbWE6IGh0dHBzOi8vZ2l0aHViLmNvbS9pYW1rdW4vZGF5anMvYmxvYi8wNmY4OGY0MjU4MjhiMWNlOTZiNzM3MzMyZDI1MTQ1YTk1YTRlZTlkL3NyYy9pbmRleC5qcyNMOVxyXG4gICAgICAgIHJldHVybiBjaGVjay4kRCAhPT0gdW5kZWZpbmVkICYmIGNoZWNrLiRNICE9PSB1bmRlZmluZWQgJiYgY2hlY2suJHkgIT09IHVuZGVmaW5lZDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIE90dGllbmUgbGEgZm9ybWF0dGF6aW9uZSBkaSB1bmEgZGF0YSBpbiBiYXNlIGFsbGEgdmVyc2lvbmUgcmljaGllc3RhIFwic21hbGxcIiBvIFwibG9uZ1wiIGUgYSBzZSBzdGFtcGFyZSBvIG1lbm8gaSBzZWNvbmRpXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7YW55fSBkYXRlIE9nZ2V0dG8gcmFwcHJlc2VudGFudGUgdW5hIGRhdGEuIFBvdHJlYmJlIGVzc2VyZSB1bmEgc3RyaW5nYSwgdW4gRGF0ZSBvIGdpw6AgdW4gRGF5SnNcclxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gc21hbGwgSW5kaWNhIHNlIGZvcm1hdHRhcmxhIGNvbiB1biBmb3JtYXRvIGJyZXZlIChzZSAqKnRydWUqKikgbyB1biBmb3JtYXRvIHBpw7kgbHVuZ28gKHNlICoqZmFsc2UqKilcclxuICAgICAqIFxyXG4gICAgICogQHJldHVybnMge3N0cmluZ30gRGF0YSBmb3JtYXR0YXRhIG5lbCBmb3JtYXRvIHJpY2hpZXN0b1xyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ2V0Rm9ybWF0dGVkKGRhdGU6IGFueSwgc21hbGw6IGJvb2xlYW4sIHNlY29uZHM6IGJvb2xlYW4pOiBzdHJpbmcge1xyXG4gICAgICAgIHZhciBkYXRlID0gdGhpcy5nZXREYXRlQ29udmVydGlvbihkYXRlKTtcclxuICAgICAgICBpZiAoIWRhdGUpIHJldHVybiBudWxsO1xyXG5cclxuICAgICAgICByZXR1cm4gZGF0ZS5mb3JtYXQoc21hbGwgPyB0aGlzLmNmZy5zbWFsbERhdGUgOiBzZWNvbmRzID8gdGhpcy5jZmcuZnVsbGRhdGVEaXNwbGF5IDogdGhpcy5jZmcuZnVsbGRhdGVEaXNwbGF5Tm9TUyk7XHJcbiAgICB9XHJcbn0iXX0=
237
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0ZW5zaW9ucy5kYXRlcy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXh0ZW5zaW9ucy9zcmMvbGliL3NlcnZpY2VzL2V4dGVuc2lvbnMuZGF0ZXMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxVQUFVO0FBQ1YsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTdELFVBQVU7QUFDVixPQUFPLEVBQUUsYUFBYSxFQUFFLFVBQVUsRUFBRSxNQUFNLFdBQVcsQ0FBQzs7QUFRckQ7O0VBRUU7QUFFSCxNQUFNLE9BQU8sV0FBVztJQTZCcEI7Ozs7T0FJRztJQUNILFlBQTJELE1BQWMsRUFBNkMsUUFBaUI7UUFBNUUsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUE2QyxhQUFRLEdBQVIsUUFBUSxDQUFTO1FBaEN2STs7V0FFRztRQUNLLFFBQUcsR0FBRztZQUNWLG1CQUFtQixFQUFFLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFO1lBQ3JFLGtCQUFrQixFQUFFLEVBQUUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRTtZQUN0Rix3QkFBd0IsRUFBRSxFQUFFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUU7WUFDdEYsMkJBQTJCLEVBQUUsRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUU7WUFDN0UscUNBQXFDLEVBQUUsRUFBRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE9BQU8sRUFBRSxlQUFlLEVBQUU7WUFDN0YsdUNBQXVDLEVBQUUsRUFBRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsT0FBTyxFQUFFLGtCQUFrQixFQUFFO1lBQ3JHLDBCQUEwQixFQUFFLEVBQUUsT0FBTyxFQUFFLHFCQUFxQixF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LENBQUMsSUFBSSxDQUFDLENBQUM7UUFDeEMsSUFBSSxDQUFDLElBQUk7WUFBRSxPQUFPLElBQUksQ0FBQztRQUV2QixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBQ3ZILENBQUM7O3dHQWhQUSxXQUFXLGtCQWtDbUIsVUFBVSw2QkFBOEMsYUFBYTs0R0FsQ25HLFdBQVc7MkZBQVgsV0FBVztrQkFEdkIsVUFBVTs7MEJBbUNhLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsVUFBVTs7MEJBQTJCLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbIi8vIEFuZ3VsYXJcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0LCBPcHRpb25hbCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcblxyXG4vLyBNb2RlbGxpXHJcbmltcG9ydCB7IEVYVF9BTExPV19VVEMsIEVYVF9MT0NBTEUgfSBmcm9tIFwiLi4vdG9rZW5zXCI7XHJcblxyXG4vKipcclxuICogRGljaGlhcmF6aW9uZSBkZWxsYSB2YXJpYWJpbGUgZ2xvYmFsZSBkYXlqcy4gTCdvbmVyZSBkaSBcImNyZWFybGFcIiDDqCBhZmZpZGF0byBhbGwnYXBwbGljYXppb25lIGNoZSB1dGlsaXp6YSBxdWVzdGEgbGlicmVyaWEsIFxyXG4gKiBjaGUgZG92csOgIGltcG9ydGFyZSBsbyBzY3JpcHQgZ2xvYmFsZSBkaSBkYXlqcyBuZWxsYSBDTElcclxuICovXHJcbiBkZWNsYXJlIHZhciBkYXlqczogYW55O1xyXG5cclxuIC8qKlxyXG4gKiBTZXJ2aWNlIGNoZSBmb3JuaXNjZSBkZWkgbWV0b2RpIGRpIGVzdGVuc2lvbmUgcGVyIGxhIGdlc3Rpb25lL21hbmlwb2xhemlvbmUgZGVsbGUgZGF0ZVxyXG4gKi9cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgRGF0ZVNlcnZpY2Uge1xyXG4gICAgXHJcbiAgICAvKipcclxuICAgICAqIE9nZ2V0dG8gc3RhdGljbyBkaSBsb2NhbGl6emF6aW9uZSBwZXIgaSBtZXNzYWdnaSBkaSBxdWVzdGEgU2VydmljZVxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGxvYyA9IHtcclxuICAgICAgICBcIlNNQUxMX0RBVEVfRk9STUFUXCI6IHsgJ2VuLVVTJzogXCJNTS9ERC9ZWVlZXCIsICdpdC1JVCc6IFwiREQvTU0vWVlZWVwiIH0sXHJcbiAgICAgICAgXCJGVUxMX0RBVEVfRk9STUFUXCI6IHsgJ2VuLVVTJzogXCJNTS9ERC9ZWVlZIEhIOm1tOnNzXCIsICdpdC1JVCc6IFwiREQvTU0vWVlZWSBISDptbTpzc1wiIH0sXHJcbiAgICAgICAgXCJGVUxMX0RBVEVfRk9STUFUX05PX1NTXCI6IHsgJ2VuLVVTJzogXCJNTS9ERC9ZWVlZIEhIOm1tXCIsICdpdC1JVCc6IFwiREQvTU0vWVlZWSBISDptbVwiIH0sXHJcbiAgICAgICAgXCJTTUFMTF9EQVRFX0RJU1BMQVlfRk9STUFUXCI6IHsgJ2VuLVVTJzogXCJERC9NTS9ZWVlZXCIsICdpdC1JVCc6IFwiREQvTU0vWVlZWVwiIH0sXHJcbiAgICAgICAgXCJTTUFMTF9EQVRFX0RJU1BMQVlfRk9STUFUX1dJVEhfSE9VUlwiOiB7ICdlbi1VUyc6IFwiREQvTU0vWVlZWSBISFwiLCAnaXQtSVQnOiBcIkREL01NL1lZWVkgSEhcIiB9LFxyXG4gICAgICAgIFwiU01BTExfREFURV9ESVNQTEFZX0ZPUk1BVF9XSVRIX01JTlVURVwiOiB7ICdlbi1VUyc6IFwiREQvTU0vWVlZWSBISDptbVwiLCAnaXQtSVQnOiBcIkREL01NL1lZWVkgSEg6bW1cIiB9LFxyXG4gICAgICAgIFwiRlVMTF9EQVRFX0RJU1BMQVlfRk9STUFUXCI6IHsgJ2VuLVVTJzogXCJERC9NTS9ZWVlZIEhIOm1tOnNzXCIsICdpdC1JVCc6IFwiREQvTU0vWVlZWSBISDptbTpzc1wiIH0sXHJcbiAgICAgICAgXCJGVUxMX0RBVEVfRElTUExBWV9GT1JNQVRfTk9fU1NcIjogeyAnZW4tVVMnOiBcIkREL01NL1lZWVkgSEg6bW1cIiwgJ2l0LUlUJzogXCJERC9NTS9ZWVlZIEhIOm1tXCIgfVxyXG4gICAgfTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIE9nZ2V0dG8gZGkgY29uZmlndXJhemlvbmUgcGVyIHRlbmVyZSBkYSBjb250byBsZSBpbmZvcm1hemlvbmkgc3VpIGZvcm1hdGlcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBjZmcgPSB7XHJcbiAgICAgICAgZnVsbGRhdGU6IFwiXCIsXHJcbiAgICAgICAgZnVsbGRhdGVEaXNwbGF5OiBcIlwiLFxyXG4gICAgICAgIHNtYWxsRGF0ZTogXCJcIixcclxuICAgICAgICBmdWxsZGF0ZU5vU1M6IFwiXCIsXHJcbiAgICAgICAgc21hbGxEYXRlV2l0aEg6IFwiXCIsXHJcbiAgICAgICAgc21hbGxEYXRlV2l0aE06IFwiXCIsXHJcbiAgICAgICAgZnVsbGRhdGVEaXNwbGF5Tm9TUzogXCJcIlxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ29zdHJ1dHRvcmVcclxuICAgICAqIFxyXG4gICAgICogQGlnbm9yZVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgY29uc3RydWN0b3IoQE9wdGlvbmFsKCkgQEluamVjdChFWFRfTE9DQUxFKSBwcml2YXRlIExPQ0FMRTogc3RyaW5nLCBAT3B0aW9uYWwoKSBASW5qZWN0KEVYVF9BTExPV19VVEMpIHByaXZhdGUgYWxsb3dVdGM6IGJvb2xlYW4pIHtcclxuICAgICAgICB0aGlzLmNmZy5zbWFsbERhdGUgPSB0aGlzLmxvY1tcIlNNQUxMX0RBVEVfRk9STUFUXCJdW3RoaXMuTE9DQUxFID8/ICdpdC1JVCddO1xyXG4gICAgICAgIHRoaXMuY2ZnLmZ1bGxkYXRlID0gdGhpcy5sb2NbXCJGVUxMX0RBVEVfRk9STUFUXCJdW3RoaXMuTE9DQUxFID8/ICdpdC1JVCddO1xyXG4gICAgICAgIHRoaXMuY2ZnLmZ1bGxkYXRlTm9TUyA9IHRoaXMubG9jW1wiRlVMTF9EQVRFX0ZPUk1BVF9OT19TU1wiXVt0aGlzLkxPQ0FMRSA/PyAnaXQtSVQnXTtcclxuICAgICAgICB0aGlzLmNmZy5mdWxsZGF0ZURpc3BsYXkgPSB0aGlzLmxvY1tcIkZVTExfREFURV9ESVNQTEFZX0ZPUk1BVFwiXVt0aGlzLkxPQ0FMRSA/PyAnaXQtSVQnXTtcclxuICAgICAgICB0aGlzLmNmZy5mdWxsZGF0ZURpc3BsYXlOb1NTICA9dGhpcy5sb2NbXCJGVUxMX0RBVEVfRElTUExBWV9GT1JNQVRfTk9fU1NcIl1bdGhpcy5MT0NBTEUgPz8gJ2l0LUlUJ107XHJcbiAgICAgICAgdGhpcy5jZmcuc21hbGxEYXRlID0gdGhpcy5sb2NbXCJTTUFMTF9EQVRFX0RJU1BMQVlfRk9STUFUXCJdW3RoaXMuTE9DQUxFID8/ICdpdC1JVCddO1xyXG4gICAgICAgIHRoaXMuY2ZnLnNtYWxsRGF0ZVdpdGhIID0gdGhpcy5sb2NbXCJTTUFMTF9EQVRFX0RJU1BMQVlfRk9STUFUX1dJVEhfSE9VUlwiXVt0aGlzLkxPQ0FMRSA/PyAnaXQtSVQnXTtcclxuICAgICAgICB0aGlzLmNmZy5zbWFsbERhdGVXaXRoTSA9IHRoaXMubG9jW1wiU01BTExfREFURV9ESVNQTEFZX0ZPUk1BVF9XSVRIX01JTlVURVwiXVt0aGlzLkxPQ0FMRSA/PyAnaXQtSVQnXTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEFnZ2l1c3RhIHVuYSBkYXRhIGluIFwiaXN0YW50ZSBmaW5hbGVcIiBpbiBiYXNlIGEgcXVhbCDDqCBsYSBwYXJ0ZSBkaSBkYXRhIHNpZ25pZmljYXRpdmEuXHJcbiAgICAgKiBcclxuICAgICAqIEVzLiBJc3RhbnRlIGZpbmFsZSBkZWxsZSBvcmU6IDA1LzEwLzE5OTIgLS0+IDA0LzEwLzE5OTIgMjQ6MDAoOjAwKVxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge2FueX0gZGF0ZSBEYXRhIHF1YWxzaWFzaSAoRGF0ZSwgc3RyaW5nYSwgZGF5anMuLi4pLCB2ZXJyw6Agcmljb25kb3R0YSBhZCB1biBvZ2dldHRvIGRheUpzXHJcbiAgICAgKiBAcGFyYW0geydkYXknIHwgJ2hvdXInIHwgJ21pbnV0ZSd9IHRpbWVwYXJ0IFBhcnRlIHNpZ25pZmljYXRpdmEgZGVsbGEgZGF0YVxyXG4gICAgICogQHBhcmFtIHtib29sZWFufSBwcmludFNlY29uZHMgSW5kaWNhIHNlIGVmZmV0dHVhcmUgbGEgc3RhbXBhIGRlaSBzZWNvbmRpIG8gbm9cclxuICAgICAqL1xyXG4gICAgcHVibGljIGFkanVzdERhdGVUb0ZpbmFsSW5zdGFudChkYXRlOiBhbnksIHRpbWVwYXJ0OiAnZGF5JyB8ICdob3VyJyB8ICdtaW51dGUnLCBwcmludFNlY29uZHM6IGJvb2xlYW4gPSB0cnVlKTogc3RyaW5nIHtcclxuICAgICAgICBsZXQgbXlkdCA9IHRoaXMuZ2V0RGF0ZUNvbnZlcnRpb24oZGF0ZSk7XHJcbiAgICAgICAgaWYgKG15ZHQgPT0gbnVsbCkgcmV0dXJuIFwiRkU6IE5vdCBhIERhdGVcIjtcclxuXHJcbiAgICAgICAgbGV0IGlzWmVyb1RpbWUgPSBteWR0LnN0YXJ0T2YodGltZXBhcnQpLnZhbHVlT2YoKSA9PT0gbXlkdC52YWx1ZU9mKCk7XHJcbiAgICAgICAgaWYgKCFpc1plcm9UaW1lKSB7XHJcbiAgICAgICAgICAgIGlmICh0aW1lcGFydCA9PSBcImRheVwiICYmIG15ZHQuc3VidHJhY3QoMSwgXCJob3VyXCIpLmhvdXIoKSA9PSBteWR0LmhvdXIoKSkge1xyXG4gICAgICAgICAgICAgICAgLy8gU2UgbCdvcmEgcHJlY2VkZW50ZSDDqCBsbyBzdGVzc28gb3JhcmlvIGRlbGwnb3JhIGF0dHVhbGUgbCdpc3RhbnRlIGZpbmFsZSBkZXYnZXNzZXJlIG1hbmRhdG8gYXZhbnRpIGRpIDFcclxuICAgICAgICAgICAgICAgIG15ZHQgPSBteWR0LmFkZCgxLCBcImhvdXJcIik7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHJldHVybiBwcmludFNlY29uZHMgPyBteWR0LmZvcm1hdCh0aGlzLmNmZy5mdWxsZGF0ZURpc3BsYXkpIDogbXlkdC5mb3JtYXQodGhpcy5jZmcuZnVsbGRhdGVEaXNwbGF5Tm9TUyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgdG1wVmFsdWUgPSBteWR0LnN1YnRyYWN0KDEsIHRpbWVwYXJ0KTtcclxuICAgICAgICBsZXQgdmFsdWUgPSBcIlwiO1xyXG5cclxuICAgICAgICAvLyBJc3RhbnRlIGZpbmFsZSBkZWxsZSBvcmU6IDA1LzEwLzE5OTIgLS0+IDA0LzEwLzE5OTIgMjQ6MDAoOjAwKVxyXG4gICAgICAgIGlmICh0aW1lcGFydCA9PSAnZGF5JylcclxuICAgICAgICAgICAgdmFsdWUgPSB0bXBWYWx1ZS5mb3JtYXQodGhpcy5jZmcuc21hbGxEYXRlKSArIFwiIDI0OjAwXCIgKyAocHJpbnRTZWNvbmRzID8gJzowMCcgOiAnJyk7XHJcblxyXG4gICAgICAgIC8vIElzdGFudGUgZmluYWxlIGRlaSBtaW51dGk6IGdpb3JubyAwNS8xMC8xOTkyIDA0OjAwOjAwIC0tPiAwNS8xMC8xOTkyIDAzOjYwKDowMClcclxuICAgICAgICBlbHNlIGlmICh0aW1lcGFydCA9PSAnaG91cicpXHJcbiAgICAgICAgICAgIHZhbHVlID0gdG1wVmFsdWUuZm9ybWF0KHRoaXMuY2ZnLnNtYWxsRGF0ZVdpdGhIKSArIFwiOjYwXCIgKyAocHJpbnRTZWNvbmRzID8gJzowMCcgOiAnJyk7XHJcblxyXG4gICAgICAgIC8vIElzdGFudGUgZmluYWxlIGRlaSBzZWNvbmRpOiBnaW9ybm8gMDUvMTAvMTk5MiAwNDoxMDowMCAtLT4gMDUvMTAvMTk5MiAwNDowOTo2MFxyXG4gICAgICAgIGVsc2UgaWYgKHRpbWVwYXJ0ID09ICdtaW51dGUnKVxyXG4gICAgICAgICAgICB2YWx1ZSA9IHRtcFZhbHVlLmZvcm1hdCh0aGlzLmNmZy5zbWFsbERhdGVXaXRoTSkgKyBcIjo2MFwiO1xyXG5cclxuICAgICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBGdW56aW9uZSBjaGUgZWZmZXR0dWEgbCdvcmRpbmFtZW50byBmcmEgMiBkYXRlIGluIGJhc2UgYWxsYSBkaXJlemlvbmUgc3BlY2lmaWNhdGFcclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHthbnl9IGEgUHJpbWEgZGF0YSBwZXIgaWwgY29uZnJvbnRvXHJcbiAgICAgKiBAcGFyYW0ge2FueX0gYiBTZWNvbmRhIGRhdGEgcGVyIGlsIGNvbmZyb250b1xyXG4gICAgICogQHBhcmFtIHsnYXNjJyB8ICdkZXNjJ30gZGlyZWN0aW9uIERpcmV6aW9uZSByaXNwZXR0byBhIGN1aSBvcmRpbmFyZSBsZSBkdWUgZGF0ZVxyXG4gICAgICogXHJcbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSAwIHNlIGxlIGRhdGUgc29ubyB1Z3VhbGksIDEgc2UgbGEgZGF0YSBBIGRldmUgdmVuaXJlIGxvZ2ljYW1lbnRlIHByaW1hIGRlbGxhIGRhdGEgQiwgLTEgYWx0cmltZW50aVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZGF0ZVNvcnQoYTogYW55LCBiOiBhbnksIGRpcmVjdGlvbjogJ2FzYycgfCAnZGVzYycpOiBudW1iZXIge1xyXG4gICAgICAgIGlmIChhIDwgYikgcmV0dXJuIGRpcmVjdGlvbiA9PSAnYXNjJyA/IDEgOiAtMTtcclxuICAgICAgICBlbHNlIGlmIChhID4gYikgcmV0dXJuIGRpcmVjdGlvbiA9PSAnYXNjJyA/IC0xIDogMTtcclxuXHJcbiAgICAgICAgLy8gY29uIGEgdWd1YWxlIGEgYlxyXG4gICAgICAgIHJldHVybiAwO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRWZmZXR0dWEgaWwgdHJpbSBkZWkgc2Vjb25kaSBkYSB1bmEgZGF0YSBlc3ByZXNzYSBjb21lIHN0cmluZ2FcclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlIERhdGEgZXNwcmVzc2EgY29tZSBzdHJpbmdhXHJcbiAgICAgKiBcclxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IERhdGEgc2VuemEgaSBzZWNvbmRpXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyB0cmltU2Vjb25kcyh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgICAgICAvL0kgbnVtZXJpIG1hbmdpYXRpIGRhIGRheWpzIHNwZXNzbyB2ZW5nb25vIHJpY29uZG90dGkgYSBkYXRlIHZlcmUuIE1pIGFzc2ljdXJvIGNoZSBzZSBjaSBzb25vIHNvbG8gbnVtZXJpIHByb3NlZ3VvXHJcbiAgICAgICAgaWYgKCFpc05hTig8YW55PnZhbHVlKSlcclxuICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xyXG5cclxuICAgICAgICAvL1NlIG5vbiBobyBxdWFsY29zYSBkZWwgdGlwbyBYWC9ZWS9aWlpaIGFhOmJiOmNjIGRpIHNpY3VybyBub24gw6ggdW5hIGRhdGEgY2hlIG1pIGludGVyZXNzYVxyXG4gICAgICAgIGlmICghL15cXGRcXGRcXC9cXGRcXGRcXC9cXGRcXGRcXGRcXGQgXFxkXFxkOlxcZFxcZDpcXGRcXGQkL2cudGVzdCh2YWx1ZSkpXHJcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcclxuXHJcbiAgICAgICAgLy9JbiBxdWVzdG8gY2FzbyBtaSBhcnJpdmFubyB2YWxvcmkgY2hlIGRldm9ubyBlc3NlcmUgc3RhbXBhdGkgYXMtaXMsIHNvbG8gdGFnbGlhbmRvIGkgc2Vjb25kaVxyXG4gICAgICAgIHJldHVybiBcIidcIiArIHZhbHVlLnN1YnN0cigwLCB2YWx1ZS5sZW5ndGggLSAzKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIERhdGEgdW5hIGxpc3RhIGRpIGRhdGUgRGEgZSB1bmEgbGlzdGEgZGkgZGF0ZSBBIHJlc3RpdHVpc2NlIHVuIG9nZ2V0dG8gcmFwcHJlc2VudGFudGUgaWwgcmFuZ2UgY2hlIGluY2x1ZGUgdHV0dGUgbGUgZGF0ZSBwYXNzYXRlXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7YW55W119IGZyb21EYXRlcyBMaXN0YSBkZWkgRGFcclxuICAgICAqIEBwYXJhbSB7YW55W119IHRvRGF0ZXMgTGlzdGEgZGVpIEFcclxuICAgICAqIFxyXG4gICAgICogQHJldHVybnMge3sgZnJvbTogYW55LCB0bzogYW55IH19IFJhbmdlIGRpIGRhdGUgRGEgLSBBIGNoZSBpbmNsdWRlIHR1dHRpIGkgdmFsb3JpIGRpICoqZnJvbURhdGVzKiogZSAqKnRvRGF0ZXMqKlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ2V0TWluTWF4RGF0ZXNSYW5nZShmcm9tRGF0ZXM6IGFueVtdLCB0b0RhdGVzOiBhbnlbXSk6IHsgZnJvbTogYW55LCB0bzogYW55IH0ge1xyXG4gICAgICAgIGxldCBkYXRlc0Zyb21zOiBhbnlbXSA9IFtdO1xyXG4gICAgICAgIGxldCBkYXRlc1RvOiBhbnlbXSA9IFtdO1xyXG5cclxuICAgICAgICBmb3IobGV0IGkgPSAwOyBpIDwgZnJvbURhdGVzLmxlbmd0aDsgaSsrKVxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgbGV0IGQgPSBmcm9tRGF0ZXNbaV07XHJcbiAgICAgICAgICAgIHZhciBjb252ZXJ0aW9uID0gdGhpcy5nZXREYXRlQ29udmVydGlvbihkKTtcclxuICAgICAgICAgICAgaWYgKGNvbnZlcnRpb24pXHJcbiAgICAgICAgICAgICAgICBkYXRlc0Zyb21zLnB1c2goY29udmVydGlvbik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBmb3IobGV0IGkgPSAwOyBpIDwgdG9EYXRlcy5sZW5ndGg7IGkrKylcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIGxldCBkID0gdG9EYXRlc1tpXTtcclxuICAgICAgICAgICAgdmFyIGNvbnZlcnRpb24gPSB0aGlzLmdldERhdGVDb252ZXJ0aW9uKGQpO1xyXG4gICAgICAgICAgICBpZiAoY29udmVydGlvbilcclxuICAgICAgICAgICAgICAgIGRhdGVzVG8ucHVzaChjb252ZXJ0aW9uKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB7IGZyb206IGRheWpzLm1pbihkYXRlc0Zyb21zKSwgdG86IGRheWpzLm1heChkYXRlc1RvKSB9O1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogT3R0aWVuZSBsYSBjb252ZXJzaW9uZSBkaSB1bmEgZGF0YSBpbiBxdWFsc2lhc2kgZm9ybWF0byBhbCBmb3JtYXRvIHN0YW5kYXJkIERheUpzXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7YW55fSBkYXRlIE9nZ2V0dG8gcmFwcHJlc2VudGFudGUgdW5hIGRhdGEuIFBvdHJlYmJlIGVzc2VyZSB1bmEgc3RyaW5nYSwgdW4gRGF0ZSBvIGdpw6AgdW4gRGF5SnNcclxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gdXNlVXRjIEluZGljYSBzZSB1c2FyZSBsJ2VzdGVuc2lvbmUgdXRjIGRpIERheWpzIHBlciBwYXJzYXJlIGxhIGRhdGEgbyBub1xyXG4gICAgICogXHJcbiAgICAgKiBAcmV0dXJucyB7YW55fSBEYXRhIGluIG1vZGFsaXTDoCBEYXlKc1xyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ2V0RGF0ZUNvbnZlcnRpb24oZGF0ZTogYW55LCB1c2VVdGM6IGJvb2xlYW4gPSBmYWxzZSk6IGFueSB7XHJcbiAgICAgICAgaWYgKCFkYXRlKVxyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuaXNEYXlKcyhkYXRlKSlcclxuICAgICAgICAgICAgcmV0dXJuIGRhdGU7XHJcblxyXG4gICAgICAgIGlmKHRoaXMuaXNKc0RhdGUoZGF0ZSkpXHJcbiAgICAgICAgICAgIHJldHVybiB1c2VVdGMgPyBkYXlqcy51dGMoZGF0ZSk6IGRheWpzKGRhdGUpO1xyXG5cclxuICAgICAgICAvLyBTZSBub24gYyfDqCBsYSBwcm9wcmlldMOgIGxlbmd0aCB2dW9sIGRpcmUgY2hlIG5vbiDDqCB1bmEgc3RyaW5nYSBlIGEgcXVlc3RvIHB1bnRvIG5vbiBobyBpZGVhIGRpIGNoZSBtaW5jaGlhIHNpYVxyXG4gICAgICAgIGxldCBsZW5ndGggPSBkYXRlLmxlbmd0aDtcclxuICAgICAgICBpZiAoIWxlbmd0aClcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcblxyXG4gICAgICAgIGlmICh1c2VVdGMgJiYgIXRoaXMuYWxsb3dVdGMpXHJcbiAgICAgICAgICAgIHRocm93IFwiQGVzZmFlbnphL2V4dGVuc2lvbnM6IFJpY2hpZXN0YSBkYXRhIFVUQyBtYSBkYSBjb25maWd1cmF6aW9uZSBsYSBsaWJyZXJpYSBub24gbG8gc3VwcG9ydGFcIjtcclxuXHJcbiAgICAgICAgLy8gUGVyIHJpc3Bhcm1pYXJlIGNoaWFtYXRlIGEgdGVudG9uaSwgaW4gYmFzZSBhbGxhIGx1bmdoZXp6YSBkZWxsYSBzdHJpbmdhIGNoaWFtbyBkaXJldHRhbWVudGUgaWwgbWV0b2RvIGdpdXN0bywgXHJcbiAgICAgICAgLy8gY29udHJvbGxhbmRvIHBvaSBjaGUgbWkgZ2VuZXJpIHVuYSBkYXRhIGNvbWUgbWUgbGEgYXNwZXR0byBpb1xyXG4gICAgICAgIGxldCB0cnlUaGlzID0gbnVsbDtcclxuICAgICAgICBsZXQgdG9DYWxsID0gdXNlVXRjID8gZGF5anMudXRjIDogZGF5anM7XHJcblxyXG4gICAgICAgIC8vIFNlIGxhIGRhdGEgY29udGllbmUgbGEgbGV0dGVyYSBcIlRcIiB2dW9sIGRpcmUgY2hlIMOoIHVuYSBkYXRhIGRlbCB0aXBvIDIwMjAtMTAtMTVUMDA6MDA6MDAsIGRpcmV0dGFtZW50ZSBwYXJzYWJpbGUgZGFsIGRheWpzIGNvbCBsb2NhbGUgY29ycmV0dG8uXHJcbiAgICAgICAgLy8gUGVyIGlsIHJlc3RvIG1pIGJhc28gc3VsbGEgbHVuZ2hlenphIGRlbGxhIHN0cmluZ2FcclxuICAgICAgICBpZiAoKDxzdHJpbmc+ZGF0ZSkuaW5jbHVkZXMoXCJUXCIpKVxyXG4gICAgICAgICAgICB0cnlUaGlzID0gdG9DYWxsKGRhdGUpO1xyXG4gICAgICAgIGVsc2UgaWYgKGxlbmd0aCA9PSB0aGlzLmNmZy5mdWxsZGF0ZS5sZW5ndGgpXHJcbiAgICAgICAgICAgIHRyeVRoaXMgPSB0b0NhbGwoZGF0ZSwgdGhpcy5jZmcuZnVsbGRhdGUpO1xyXG4gICAgICAgIGVsc2UgaWYgKGxlbmd0aCA9PSB0aGlzLmNmZy5zbWFsbERhdGUubGVuZ3RoKVxyXG4gICAgICAgICAgICB0cnlUaGlzID0gdG9DYWxsKGRhdGUsIHRoaXMuY2ZnLnNtYWxsRGF0ZSk7XHJcbiAgICAgICAgZWxzZSBpZiAobGVuZ3RoID09IHRoaXMuY2ZnLmZ1bGxkYXRlTm9TUy5sZW5ndGgpXHJcbiAgICAgICAgICAgIHRyeVRoaXMgPSB0b0NhbGwoZGF0ZSwgdGhpcy5jZmcuZnVsbGRhdGVOb1NTKVxyXG5cclxuICAgICAgICBpZiAodHJ5VGhpcyAmJiB0cnlUaGlzLmlzVmFsaWQgJiYgdHJ5VGhpcy5pc1ZhbGlkKCkpXHJcbiAgICAgICAgICAgIHJldHVybiB0cnlUaGlzO1xyXG5cclxuICAgICAgICAvLyBTZSBuaWVudGUgZnVuemlvbmEsIG51bGwuIFxyXG4gICAgICAgIC8vIFJpY29uZHVycmUgbCdJbnB1dCBhZCB1bmEgZGF0YSBub24gw6ggcG9zc2liaWxlLlxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogSGVscGVyIGNoZSByZXN0aXR1aXNjZSAqKnRydWUqKiBxdWFsb3JhIGwnb2dnZXR0byBwYXNzYXRvIGZvc3NlIHVuYSBkYXRhIHZlcmEgZSBwcm9wcmlhLCAqKmZhbHNlKiogYWx0cmltZW50aVxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge2FueX0gY2hlY2sgT2dnZXR0byBkYSBjb250cm9sbGFyZVxyXG4gICAgICogXHJcbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gSW5kaWNhemlvbmUgc2UgbCdvZ2dldHRvIMOoIHVuIHZlcm8gRGF0ZSBkaSBKYXZhc2NyaXB0IG8gbm9cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBpc0pzRGF0ZShjaGVjazogYW55KTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIGNoZWNrICYmIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChjaGVjaykgPT09IFwiW29iamVjdCBEYXRlXVwiICYmICFpc05hTihjaGVjayk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBIZWxwZXIgY2hlIHJlc3RpdHVpc2NlICoqdHJ1ZSoqIHF1YWxvcmEgbCdvZ2dldHRvIHBhc3NhdG8gZm9zc2UgdW4gRGF5SnMgdmVybyBlIHByb3ByaW8sICoqZmFsc2UqKiBhbHRyaW1lbnRpXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7YW55fSBjaGVjayBPZ2dldHRvIGRhIGNvbnRyb2xsYXJlXHJcbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gSW5kaWNhemlvbmUgc2UgbCdvZ2dldHRvIMOoIHVuIHZlcm8gRGF5SnMgbyBub1xyXG4gICAgICovXHJcbiAgICAgcHJpdmF0ZSBpc0RheUpzKGNoZWNrOiBhbnkpOiBib29sZWFuIHtcclxuICAgICAgICAvLyBOb24gdXNvIGluc3RhbmNlb2YgcGVyY2jDqSBzYXJlYmJlIGVzdHJlbWFtZW50ZSBwacO5IGxlbnRvXHJcbiAgICAgICAgLy8gTm9uIHVzbyBuZW1tZW5vIGlzRGF5anMoKSBkZWxsYSBsaWJyZXJpYSBEYXlqcyBkYXRvIGNoZSBoYSBsbyBzdGVzc28gcHJvYmxlbWE6IGh0dHBzOi8vZ2l0aHViLmNvbS9pYW1rdW4vZGF5anMvYmxvYi8wNmY4OGY0MjU4MjhiMWNlOTZiNzM3MzMyZDI1MTQ1YTk1YTRlZTlkL3NyYy9pbmRleC5qcyNMOVxyXG4gICAgICAgIHJldHVybiBjaGVjay4kRCAhPT0gdW5kZWZpbmVkICYmIGNoZWNrLiRNICE9PSB1bmRlZmluZWQgJiYgY2hlY2suJHkgIT09IHVuZGVmaW5lZDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIE90dGllbmUgbGEgZm9ybWF0dGF6aW9uZSBkaSB1bmEgZGF0YSBpbiBiYXNlIGFsbGEgdmVyc2lvbmUgcmljaGllc3RhIFwic21hbGxcIiBvIFwibG9uZ1wiIGUgYSBzZSBzdGFtcGFyZSBvIG1lbm8gaSBzZWNvbmRpXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7YW55fSBkYXRlIE9nZ2V0dG8gcmFwcHJlc2VudGFudGUgdW5hIGRhdGEuIFBvdHJlYmJlIGVzc2VyZSB1bmEgc3RyaW5nYSwgdW4gRGF0ZSBvIGdpw6AgdW4gRGF5SnNcclxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gc21hbGwgSW5kaWNhIHNlIGZvcm1hdHRhcmxhIGNvbiB1biBmb3JtYXRvIGJyZXZlIChzZSAqKnRydWUqKikgbyB1biBmb3JtYXRvIHBpw7kgbHVuZ28gKHNlICoqZmFsc2UqKilcclxuICAgICAqIFxyXG4gICAgICogQHJldHVybnMge3N0cmluZ30gRGF0YSBmb3JtYXR0YXRhIG5lbCBmb3JtYXRvIHJpY2hpZXN0b1xyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ2V0Rm9ybWF0dGVkKGRhdGU6IGFueSwgc21hbGw6IGJvb2xlYW4sIHNlY29uZHM6IGJvb2xlYW4pOiBzdHJpbmcge1xyXG4gICAgICAgIHZhciBkYXRlID0gdGhpcy5nZXREYXRlQ29udmVydGlvbihkYXRlKTtcclxuICAgICAgICBpZiAoIWRhdGUpIHJldHVybiBudWxsO1xyXG5cclxuICAgICAgICByZXR1cm4gZGF0ZS5mb3JtYXQoc21hbGwgPyB0aGlzLmNmZy5zbWFsbERhdGUgOiBzZWNvbmRzID8gdGhpcy5jZmcuZnVsbGRhdGVEaXNwbGF5IDogdGhpcy5jZmcuZnVsbGRhdGVEaXNwbGF5Tm9TUyk7XHJcbiAgICB9XHJcbn0iXX0=
@@ -499,9 +499,9 @@ export class ExportService {
499
499
  return Deserialize(items, type);
500
500
  }
501
501
  }
502
- ExportService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ExportService, deps: [{ token: i1.DateService }], target: i0.ɵɵFactoryTarget.Injectable });
503
- ExportService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ExportService });
504
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ExportService, decorators: [{
502
+ ExportService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: ExportService, deps: [{ token: i1.DateService }], target: i0.ɵɵFactoryTarget.Injectable });
503
+ ExportService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: ExportService });
504
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: ExportService, decorators: [{
505
505
  type: Injectable
506
506
  }], ctorParameters: function () { return [{ type: i1.DateService }]; } });
507
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0ZW5zaW9ucy5leHBvcnRzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9leHRlbnNpb25zL3NyYy9saWIvc2VydmljZXMvZXh0ZW5zaW9ucy5leHBvcnRzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsVUFBVTtBQUNWLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTztBQUNQLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFeEMsaUJBQWlCO0FBRWpCLE9BQU8sRUFBRSxVQUFVLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsaUJBQWlCLEVBQUUsWUFBWSxFQUFFLHNCQUFzQixFQUFFLHNCQUFzQixFQUFFLGdCQUFnQixFQUFFLGdCQUFnQixFQUFFLGdCQUFnQixFQUFFLFVBQVUsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7QUFPcFA7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXdCRztBQUNILE1BQU0sQ0FBQyxNQUFNLE1BQU0sR0FBRyxDQUFDLEtBQWEsRUFBRSxNQUFjLEVBQUUsU0FBaUIsSUFBSSxFQUFFLFVBQWtCLElBQUksRUFBRSxFQUFFLENBQ3JHLENBQUMsTUFBYyxFQUFFLFdBQW1CLEVBQUUsRUFBRTtJQUN0QyxJQUFJLE1BQU07UUFDUixNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxXQUFXLEdBQUcsZUFBZSxFQUFFLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUNuRyxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxXQUFXLEdBQUcsWUFBWSxFQUFFLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUM3RixNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0s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QUFJLENBQUMsQ0FBQztJQUNsQyxDQUFDOzsyR0E5WFUsYUFBYTsrR0FBYixhQUFhOzRGQUFiLGFBQWE7a0JBRHpCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBBbmd1bGFyXHJcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5cclxuLy8gTGlic1xyXG5pbXBvcnQgeyBEZXNlcmlhbGl6ZSB9IGZyb20gXCJjZXJpYWxpemVcIjtcclxuXHJcbi8vIENvbmZpZ3VyYXppb25pXHJcblxyXG5pbXBvcnQgeyBleHBvcnRMaXN0LCBjc3ZGb3JtYXRQcmVmaXgsIGNzdkhkclByZWZpeCwgY3N2T3JkUHJlZml4LCBjc3ZWYWx1ZU5hdmlnYXRvciwgY3N2VmlzUHJlZml4LCBkaWN0aW9uYXJ5Q3N2SGRyUHJlZml4LCBkaWN0aW9uYXJ5Q3N2VmFsUHJlZml4LCBsaXN0Q3N2SGRyUHJlZml4LCBsaXN0Q3N2VmFsRm9ybWF0LCBsaXN0Q3N2VmFsUHJlZml4LCBjc3ZQcm9wS2V5IH0gZnJvbSBcIi4uL21vZGVscy9FeHBvcnRDb25zdHNcIjtcclxuaW1wb3J0IHsgRGF0ZVNlcnZpY2UgfSBmcm9tICcuL2V4dGVuc2lvbnMuZGF0ZXMuc2VydmljZSc7XHJcblxyXG4vLyBNb2RlbGxpXHJcbmltcG9ydCB7IENzdkhlYWRlcnMgfSBmcm9tIFwiLi4vbW9kZWxzL0NzdkhlYWRlcnNcIjtcclxuaW1wb3J0IHsgR2VuZXJpY0l0ZW0gfSBmcm9tIFwiLi4vbW9kZWxzL0dlbmVyaWNJdGVtXCI7XHJcblxyXG4vKipcclxuICogRGVjb3JhdG9yZSBkaSBlc3BvcnRhemlvbmUgdXRpbGl6emFiaWxlIHN1IHVuYSBwcm9wcmlldMOgIHNpbmdvbGEuIFxyXG4gKiBWZXJyYW5ubyBnZW5lcmF0ZSAzIHByb3ByaWV0w6AgY2hlIGdlc3RpcmFubm8gbCdlc3BvcnRhemlvbmU6IChwcm9wLCBwcm9wX2NzdnZpcywgcHJvcF9jc3ZoZHIpLiBcclxuICogXHJcbiAqIEFkIGVzZW1waW8sIGRhIHF1ZXN0YSBjb25maWd1cmF6aW9uZTpcclxuICogXHJcbiAqIEBleGFtcGxlXHJcbiAqIGBgYFxyXG4gKiBARXhwb3J0KHRydWUsIFwiTXlIZWFkZXJcIilcclxuICogY2lhbzogc3RyaW5nO1xyXG4gKiBgYGBcclxuICogXHJcbiAqIE5hc2NlcmFubm8gbGUgc2VndWVudGkgcHJvcHJpZXTDoCBuZWxsJ29nZ2V0dG8gZXNwb3J0YWJpbGU6XHJcbiAqIFxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGBcclxuICogY2lhb19jc3Z2aXM6IHN0cmluZzsgPT4gdHJ1ZVxyXG4gKiBjaWFvOiBzdHJpbmc7XHJcbiAqIGNpYW9fY3N2aGRyOiBzdHJpbmcgPT4gXCJNeUhlYWRlclwiXHJcbiAqIGBgYFxyXG4gKiBcclxuICogQHBhcmFtIHtudW1iZXJ9IG9yZGVyIE9yZGluZSBkaSBlc3BvcnRhemlvbmUuIFBpw7kgcGljY29sbyDDqCwgcHJpbWEgYXBwYXJlIGlsIHZhbG9yZVxyXG4gKiBAcGFyYW0ge3N0cmluZ30gaGVhZGVyIFRpdG9sbyBkZWxsYSBjb2xvbm5hIG5lbCBmaWxlIENTViBlc3BvcnRhdG9cclxuICogQHBhcmFtIHtzdHJpbmd9IGZvcm1hdCBGb3JtYXRvIGRpIGVzcG9ydGF6aW9uZS4gUHXDsiBlc3NlcmUgdW4gZm9ybWF0byBkYXRhIHBlciBpIGNhbXBpIGRhdGEgbyAnRicgcGVyIGkgY2FtcGkgZmxvYXRpbmcgcG9pbnRcclxuICovXHJcbmV4cG9ydCBjb25zdCBFeHBvcnQgPSAob3JkZXI6IG51bWJlciwgaGVhZGVyOiBzdHJpbmcsIGZvcm1hdDogc3RyaW5nID0gbnVsbCwgdGFibGVpZDogc3RyaW5nID0gbnVsbCkgPT5cclxuICAodGFyZ2V0OiBPYmplY3QsIHByb3BlcnR5S2V5OiBzdHJpbmcpID0+IHtcclxuICAgIGlmIChmb3JtYXQpXHJcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIHByb3BlcnR5S2V5ICsgY3N2Rm9ybWF0UHJlZml4LCB7IHZhbHVlOiBmb3JtYXQsIHdyaXRhYmxlOiBmYWxzZSB9KTtcclxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIHByb3BlcnR5S2V5ICsgY3N2T3JkUHJlZml4LCB7IHZhbHVlOiBvcmRlciwgd3JpdGFibGU6IGZhbHNlIH0pO1xyXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgcHJvcGVydHlLZXkgKyBjc3ZWaXNQcmVmaXgsIHsgdmFsdWU6ICEhaGVhZGVyLCB3cml0YWJsZTogZmFsc2UgfSk7XHJcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBwcm9wZXJ0eUtleSArIGNzdkhkclByZWZpeCwgeyB2YWx1ZTogaGVhZGVyLCB3cml0YWJsZTogZmFsc2UgfSk7XHJcbiAgICBpZih0YWJsZWlkKVxyXG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBwcm9wZXJ0eUtleSArIGNzdlByb3BLZXksIHsgdmFsdWU6IHRhYmxlaWQsIHdyaXRhYmxlOiBmYWxzZSB9KTtcclxuXHJcbiAgICBpZiAodGFyZ2V0W2V4cG9ydExpc3RdKVxyXG4gICAgICB0YXJnZXRbZXhwb3J0TGlzdF0ucHVzaChwcm9wZXJ0eUtleSArIGNzdlZpc1ByZWZpeCk7XHJcbiAgICBlbHNlXHJcbiAgICAgIHRhcmdldFtleHBvcnRMaXN0XSA9IFtwcm9wZXJ0eUtleSArIGNzdlZpc1ByZWZpeF1cclxuICB9O1xyXG5cclxuLyoqXHJcbiAqIERlY29yYXRvcmUgZGkgZXNwb3J0YXppb25lIHV0aWxpenphYmlsZSBzdSB1biBvZ2dldHRvLiBcclxuICogUGVyIG9nbmkgcHJvcHJpZXTDoCBkZWxsJ29nZ2V0dG8gdmVycmFubm8gZ2VuZXJhdGUgMyBwcm9wcmlldMOgIGNoZSBnZXN0aXJhbm5vIGwnZXNwb3J0YXppb25lOiAocHJvcCwgcHJvcF9jc3Z2aXMsIHByb3BfY3N2aGRyKS4gXHJcbiAqIFBlciBlc3NlcmUgZXNwb3J0YXRlLCBsZSBwcm9wcmlldMOgIGRlbGwnb2dnZXR0byBkZXZvbm8gZXNzZXJlIG1hcmNhdGUgY29uIGkgRGVjb3JhdG9yaSBkaSBlc3BvcnRhemlvbmVcclxuICogXHJcbiAqIEFkIGVzZW1waW8sIGRhIHF1ZXN0YSBjb25maWd1cmF6aW9uZTpcclxuICogXHJcbiAqIEBleGFtcGxlXHJcbiAqIGBgYFxyXG4gKiBNeU9iaiB7XHJcbiAqICAgICBARXhwb3J0KHRydWUsIFwiTXlIZWFkZXJcIilcclxuICogICAgIGNpYW86IHN0cmluZztcclxuICogfVxyXG4gKiBcclxuICogQEV4cG9ydE9iamVjdCh0cnVlLCBcIk15SGVhZGVyXCIpXHJcbiAqIHRlc3Q6IE15T2JqOyBcclxuICogYGBgXHJcbiAqIFxyXG4gKiBOYXNjZXJhbm5vIGxlIHNlZ3VlbnRpIHByb3ByaWV0w6AgbmVsbCdvZ2dldHRvIGVzcG9ydGFiaWxlOlxyXG4gKiBcclxuICogQGV4YW1wbGVcclxuICogYGBgXHJcbiAqIHRlc3RjaWFvOiBzdHJpbmc7ID0+IFZhbG9yZSBkaSBNeU9iai5jaWFvXHJcbiAqIHRlc3RjaWFvX2NzdnZpczogc3RyaW5nOyA9PiB0cnVlXHJcbiAqIHRlc3RjaWFvX2Nzdmhkcjogc3RyaW5nID0+IFwiTXlIZWFkZXJcIiBcclxuICogYGBgXHJcbiAqXHJcbiAqIEBwYXJhbSB7bnVtYmVyfSBvcmRlciBPcmRpbmUgZGkgZXNwb3J0YXppb25lLiBQacO5IHBpY2NvbG8gw6gsIHByaW1hIGFwcGFyZSBpbCB2YWxvcmVcclxuICogQHBhcmFtIHthbnl9IHR5cGUgVGlwbyBkYSBlc3BvcnRhcmVcclxuICovXHJcbmV4cG9ydCBjb25zdCBFeHBvcnRBcyA9IChvcmRlcjogbnVtYmVyLCB0eXBlOiBhbnkpID0+XHJcbiAgKHRhcmdldDogT2JqZWN0LCBwcm9wZXJ0eUtleTogc3RyaW5nKSA9PiB7XHJcbiAgICB2YXIgdCA9IG5ldyB0eXBlKCk7XHJcbiAgICB2YXIgcHJvcHMgPSB0W2V4cG9ydExpc3RdO1xyXG4gICAgZm9yKGxldCBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKXtcclxuICAgICAgbGV0IHByb3AgPSBwcm9wc1tpXS5yZXBsYWNlKGNzdlZpc1ByZWZpeCwgJycpO1xyXG4gICAgICBpZiAodHlwZW9mIHRbcHJvcCArIGNzdlZpc1ByZWZpeF0gIT09IFwidW5kZWZpbmVkXCIpIHtcclxuICAgICAgICB2YXIgdG9FbWl0OiBib29sZWFuID0gdFtwcm9wICsgY3N2VmlzUHJlZml4XTtcclxuICAgICAgICB2YXIgbGJsID0gdFtwcm9wICsgY3N2SGRyUHJlZml4XTtcclxuICAgICAgICB2YXIgZm9ybWF0ID0gdFtwcm9wICsgY3N2Rm9ybWF0UHJlZml4XTtcclxuICAgICAgICB2YXIgb3JkZXJQcm9wID0gdFtwcm9wICsgY3N2T3JkUHJlZml4XTtcclxuICAgICAgICBpZiAoZm9ybWF0KVxyXG4gICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgcHJvcGVydHlLZXkgKyBwcm9wICsgY3N2Rm9ybWF0UHJlZml4LCB7IHZhbHVlOiBmb3JtYXQsIHdyaXRhYmxlOiBmYWxzZSB9KTtcclxuXHJcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgcHJvcGVydHlLZXkgKyBwcm9wICsgY3N2T3JkUHJlZml4LCB7IHZhbHVlOiBvcmRlclByb3AgKyBvcmRlciwgd3JpdGFibGU6IGZhbHNlIH0pO1xyXG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIHByb3BlcnR5S2V5ICsgcHJvcCwgeyB2YWx1ZTogbnVsbCwgd3JpdGFibGU6IHRydWUsIGVudW1lcmFibGU6IHRydWUgfSk7XHJcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgcHJvcGVydHlLZXkgKyBwcm9wICsgY3N2VmFsdWVOYXZpZ2F0b3IsIHsgdmFsdWU6IHByb3BlcnR5S2V5ICsgXCIuXCIgKyBwcm9wLCB3cml0YWJsZTogZmFsc2UgfSk7XHJcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgcHJvcGVydHlLZXkgKyBwcm9wICsgY3N2VmlzUHJlZml4LCB7IHZhbHVlOiB0b0VtaXQsIHdyaXRhYmxlOiBmYWxzZSB9KTtcclxuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBwcm9wZXJ0eUtleSArIHByb3AgKyBjc3ZIZHJQcmVmaXgsIHsgdmFsdWU6IGxibCwgd3JpdGFibGU6IGZhbHNlIH0pO1xyXG5cclxuICAgICAgICBpZiAodGFyZ2V0W2V4cG9ydExpc3RdKVxyXG4gICAgICAgICAgdGFyZ2V0W2V4cG9ydExpc3RdLnB1c2gocHJvcGVydHlLZXkgKyBwcm9wICsgY3N2VmlzUHJlZml4KTtcclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICB0YXJnZXRbZXhwb3J0TGlzdF0gPSBbcHJvcGVydHlLZXkgKyBwcm9wICsgY3N2VmlzUHJlZml4XVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbi8qKlxyXG4gKiBEZWNvcmF0b3JlIGRpIGVzcG9ydGF6aW9uZSB1dGlsaXp6YWJpbGUgc3UgdW5hIGxpc3RhLCBcclxuICogc2kgdXRpbGl6emFubyAyIG5hdmlnYXRvciByaXNwZXR0aXZhbWVudGUgcGVyIGxhIHZhbG9yaXp6YXppb25lIGRlbGwnSGVhZGVyIGUgZGVsIFZhbG9yZSBlIFxyXG4gKiBwZXIgb2duaSBlbGVtZW50byBkZWxsJ2FycmF5IHZlcnJhbm5vIGdlbmVyYXRlIDMgcHJvcHJpZXTDoCBjaGUgZ2VzdGlyYW5ubyBsJ2VzcG9ydGF6aW9uZTogKHByb3AsIHByb3BfY3N2dmlzLCBwcm9wX2NzdmhkcilcclxuICogXHJcbiAqIEFUVEVOWklPTkU6IEdsaSBvZ2dldHRpIGVzcG9ydGF0aSBpbiBxdWVzdGEgbW9kYWxpdMOgIG5vbiBkZXZvbm8gcHJlc2VudGFyZSBhbHRyaSB0YWcgZGkgdGlwbyBARXhwb3J0ey4uLn0gYWxsJ2ludGVybm8uIEZhIHR1dHRvIHF1ZXN0byBkZWNvcmF0b3JlXHJcbiAqIFxyXG4gKiBJIG5hdmlnYXRvciBoYW5ubyBxdWVzdGEgY29udmVuemlvbmU6XHJcbiAqIFxyXG4gKiAuIC0tPiBkaXZpZGUgZHVlIHByb3ByaWV0w6AgZGEgcmljaGlhbWFyZSBjb25zZWN1dGl2YW1lbnRlOiBcImEuYlwiIHJpY2hpYW1lcsOgIFwib2JqLmEuYlwiO1xyXG4gKiBcclxuICogfCAtLT4gZGl2aWRlIHBpw7kgcHJvcHJpZXTDoCBwZXIgbGUgY29uY2F0ZW5hemlvbmkgY29uIHVubyBzcGF6aW8gZnJhIHVuYSBlIGwnYWx0cmE6IFwicmVnZGVzY3xzbGljZS5zbGljZW5hbWVcIiBkaXZlbnRlcsOgIG9iai5yZWdkZXNjICsgXCIgXCIgKyBvYmouc2xpY2Uuc2xpY2VuYW1lXHJcbiAqIFxyXG4gKiBAcGFyYW0ge251bWJlcn0gb3JkZXIgT3JkaW5lIGRpIGVzcG9ydGF6aW9uZS4gUGnDuSBwaWNjb2xvIMOoLCBwcmltYSBhcHBhcmUgaWwgdmFsb3JlXHJcbiAqIEBwYXJhbSB7c3RyaW5nfSBoZWFkZXJuYXZpZ2F0b3IgTmF2aWdhdG9yIGNvbCBjb21waXRvIGRpIHNlbGV6aW9uYXJlIGlsIHRpdG9sbyBwZXIgbGEgY29sb25uYVxyXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWVuYXZpZ2F0b3IgTmF2aWdhdG9yIGNvbCBjb21waXRvIGRpIHNlbGV6aW9uYXJlIGlsIHZhbG9yZSBwZXIgbGEgY29sb25uYVxyXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWVmb3JtYXQgRm9ybWF0byBkaSBlc3BvcnRhemlvbmUgcGVyIGkgdmFsb3JpIHNlbGV6aW9uYXRpIGRhbCAqKnZhbHVlbmF2aWdhdG9yKiouIFB1w7IgZXNzZXJlIHVuIGZvcm1hdG8gZGF0YSBwZXIgaSBjYW1waSBkYXRhIG8gJ0YnIHBlciBpIGNhbXBpIGZsb2F0aW5nIHBvaW50XHJcbiAqL1xyXG5leHBvcnQgY29uc3QgRXhwb3J0TGlzdCA9IChvcmRlcjogbnVtYmVyLCBoZWFkZXJuYXZpZ2F0b3I6IHN0cmluZywgdmFsdWVuYXZpZ2F0b3I6IHN0cmluZywgdmFsdWVmb3JtYXQ6IHN0cmluZyA9IG51bGwpID0+XHJcbiAgKHRhcmdldDogT2JqZWN0LCBwcm9wZXJ0eUtleTogc3RyaW5nKSA9PiB7XHJcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBwcm9wZXJ0eUtleSArIGNzdk9yZFByZWZpeCwgeyB2YWx1ZTogb3JkZXIsIHdyaXRhYmxlOiBmYWxzZSB9KTtcclxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIHByb3BlcnR5S2V5ICsgbGlzdENzdlZhbFByZWZpeCwgeyB2YWx1ZTogdmFsdWVuYXZpZ2F0b3IsIHdyaXRhYmxlOiBmYWxzZSB9KTtcclxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIHByb3BlcnR5S2V5ICsgbGlzdENzdkhkclByZWZpeCwgeyB2YWx1ZTogaGVhZGVybmF2aWdhdG9yLCB3cml0YWJsZTogZmFsc2UgfSk7XHJcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBwcm9wZXJ0eUtleSArIGxpc3RDc3ZWYWxGb3JtYXQsIHsgdmFsdWU6IHZhbHVlZm9ybWF0LCB3cml0YWJsZTogZmFsc2UgfSk7XHJcblxyXG4gICAgaWYgKHRhcmdldFtleHBvcnRMaXN0XSlcclxuICAgICAgdGFyZ2V0W2V4cG9ydExpc3RdLnB1c2gocHJvcGVydHlLZXkgKyBsaXN0Q3N2SGRyUHJlZml4KTtcclxuICAgIGVsc2VcclxuICAgICAgdGFyZ2V0W2V4cG9ydExpc3RdID0gW3Byb3BlcnR5S2V5ICsgbGlzdENzdkhkclByZWZpeF1cclxuICB9O1xyXG5cclxuLyoqXHJcbiAqIERlY29yYXRvcmUgZGkgZXNwb3J0YXppb25lIHV0aWxpenphYmlsZSBzdSB1biBkaXppb25hcmlvLiBTZSBhZCBlc2VtcGlvIHNpIHZvZ2xpb25vIGdlbmVyYXJlIGxlIGNvbG9ubmVcclxuICogXHJcbiAqIFZhbG9yZSBBID0gMVxyXG4gKiBcclxuICogVmFsb3JlIEIgPSAyXHJcbiAqIFxyXG4gKiBWYWxvcmUgQyA9IDNcclxuICogXHJcbiAqIHBhcnRlbmRvIGRhIHVuIG9nZ2V0dG8gaW5pemlhbGUgeyBWYWxvcmUgeyBBOiAxLCBCOiAyLCBDOiAzIH0gfVxyXG4gKiBcclxuICogQHBhcmFtIHtudW1iZXJ9IG9yZGVyIE9yZGluZSBkaSBlc3BvcnRhemlvbmUuIFBpw7kgcGljY29sbyDDqCwgcHJpbWEgYXBwYXJlIGlsIHZhbG9yZVxyXG4gKiBAcGFyYW0ge3N0cmluZ30gaGVhZGVybmF2aWdhdG9yIE5hdmlnYXRvciBjb2wgY29tcGl0byBkaSBzZWxlemlvbmFyZSBpbCB0aXRvbG8gcGVyIGxhIGNvbG9ubmFcclxuICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlbmF2aWdhdG9yIE5hdmlnYXRvciBjb2wgY29tcGl0byBkaSBzZWxlemlvbmFyZSBpbCB2YWxvcmUgcGVyIGxhIGNvbG9ubmFcclxuICovXHJcbmV4cG9ydCBjb25zdCBFeHBvcnREaWN0aW9uYXJ5ID0gKG9yZGVyOiBudW1iZXIsIGhlYWRlcm5hdmlnYXRvcjogc3RyaW5nLCB2YWx1ZW5hdmlnYXRvcjogc3RyaW5nKSA9PlxyXG4gICh0YXJnZXQ6IE9iamVjdCwgcHJvcGVydHlLZXk6IHN0cmluZykgPT4ge1xyXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgcHJvcGVydHlLZXkgKyBjc3ZPcmRQcmVmaXgsIHsgdmFsdWU6IG9yZGVyLCB3cml0YWJsZTogZmFsc2UgfSk7XHJcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBwcm9wZXJ0eUtleSArIGRpY3Rpb25hcnlDc3ZWYWxQcmVmaXgsIHsgdmFsdWU6IHZhbHVlbmF2aWdhdG9yLCB3cml0YWJsZTogZmFsc2UgfSk7XHJcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBwcm9wZXJ0eUtleSArIGRpY3Rpb25hcnlDc3ZIZHJQcmVmaXgsIHsgdmFsdWU6IGhlYWRlcm5hdmlnYXRvciwgd3JpdGFibGU6IGZhbHNlIH0pO1xyXG5cclxuICAgIGlmICh0YXJnZXRbZXhwb3J0TGlzdF0pXHJcbiAgICAgIHRhcmdldFtleHBvcnRMaXN0XS5wdXNoKHByb3BlcnR5S2V5ICsgZGljdGlvbmFyeUNzdkhkclByZWZpeCk7XHJcbiAgICBlbHNlXHJcbiAgICAgIHRhcmdldFtleHBvcnRMaXN0XSA9IFtwcm9wZXJ0eUtleSArIGRpY3Rpb25hcnlDc3ZIZHJQcmVmaXhdXHJcbiAgfTtcclxuXHJcbi8qKlxyXG4gKiBTZXJ2aWNlIGNoZSBzaSBvY2N1cGEgZGVsbCdlc3BvcnRhemlvbmUgZGVnbGkgb2dnZXR0aSBtYXJjYXRpIGRhaSBEZWNvcmF0b3JpICoqRXhwb3J0RGljdGlvbmFyeSoqLCAqKkV4cG9ydExpc3QqKiwgKipFeHBvcnRBcyoqIG8gKipFeHBvcnQqKlxyXG4gKi9cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgRXhwb3J0U2VydmljZSB7XHJcblxyXG4gIC8qKlxyXG4gICAqIENvc3RydXR0b3JlXHJcbiAgICogXHJcbiAgICogQGlnbm9yZVxyXG4gICAqL1xyXG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcml2YXRlIGRhdGVzOiBEYXRlU2VydmljZSkgeyB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERhdGEgdW5hIGxpc3RhIGRpIG9nZ2V0dGkgZ2VuZXJhIGdsaSBoZWFkZXIgcGVyIGwnZXNwb3J0YXppb25lIGUgaW50ZWdyYSBvZ25pIG9nZ2V0dG8gY29uIGxlIHByb3ByaWV0w6AgZXNwb3J0YWJpbGkgZGFsbGEgbGlicmVyaWEgKipAY3RybC9uZ3gtY3N2KipcclxuICAgKiBcclxuICAgKiBAcGFyYW0ge2FueVtdfSBvYmpzIE9nZ2V0dGkgZGEgZXNwb3J0YXJlXHJcbiAgICogXHJcbiAgICogQHJldHVybnMge0NzdkhlYWRlcnNbXX0gSGVhZGVyIGRpIGVzcG9ydGF6aW9uZSBnacOgIG9yZGluYXRpIGNvcnJldHRhbWVudGVcclxuICAgKi9cclxuICBwdWJsaWMgc2V0dXBGb3JFeHBvcnQob2JqczogYW55W10sIGNvbHVtbnM6IHN0cmluZ1tdID0gW10pOiBDc3ZIZWFkZXJzW10ge1xyXG4gICAgbGV0IGhlYWRlcnM6IENzdkhlYWRlcnNbXSA9IFtdO1xyXG4gICAgbGV0IGhlYWRlcnNDYWNoZSA9IHt9O1xyXG5cclxuICAgIGlmICghb2JqcyB8fCBvYmpzLmxlbmd0aCA9PSAwKVxyXG4gICAgICByZXR1cm4gaGVhZGVycztcclxuXHJcbiAgICAvLyBEZXZvIHBlciBmb3J6YSBmYXJsbyBwZXIgdHV0dGkgZ2xpIG9nZ2V0dGkgZGF0byBjaGUgZGV2byBlc3BvcnJlIGxlIHByb3ByaWV0w6AgY2hlIG1pIHNlcnZvbm8gZGEgZXNwb3J0YXJlXHJcbiAgICAvLyBHbGkgaGVhZGVyIGxpIHJhY2NvbGdvIHR1dHRpIHBvaSBmYWNjaW8gdWFuIGRpc3RpbmN0IGluIG1vZG8gZGEgZXNwb3J0YXJlIHR1dHRlIGxlIHByb3ByaWV0w6AgcGVyIGJlbmVcclxuICAgIGxldCBjb2x1bW5TZWxlY3Rpb25EaWN0aW9uYXJ5OiB7IFtpZDogc3RyaW5nXTogdHJ1ZSB9ID0ge307XHJcblxyXG4gICAgaWYgKGNvbHVtbnM/Lmxlbmd0aCA+IDApXHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29sdW1ucz8ubGVuZ3RoOyBpKyspXHJcbiAgICAgICAgY29sdW1uU2VsZWN0aW9uRGljdGlvbmFyeVtjb2x1bW5zW2ldXSA9IHRydWU7XHJcblxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBvYmpzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGxldCBoZHMgPSB0aGlzLnBhcnNlQW5kR2V0SGVhZGVycyhvYmpzW2ldLCBjb2x1bW5TZWxlY3Rpb25EaWN0aW9uYXJ5KTtcclxuICAgICAgLy8gQWdnaXVuZ28gZ2xpIGhlYWRlciBmYWNlbmRvIGluIG1vZG8gZGkgbm9uIGFnZ2l1bmdlcm5lIG1haSBkdWUgdWd1YWxpIHBlciBub24gZG92ZXIgZmFyZSB1bmEgZGlzdGluY3QgZG9wb1xyXG4gICAgICAvLyBjaGUgY29zdGVyZWJiZSBjb211bnF1ZSByaXNvcnNlLiBVdGlsaXp6byB1biBkaXppb25hcmlvIGQnYXBwb2dnaW8gcGVyIGxvb2t1cCBpc3RhbnRhbmVpXHJcbiAgICAgIGZvciAobGV0IGsgPSAwOyBrIDwgaGRzLmxlbmd0aDsgaysrKSB7XHJcbiAgICAgICAgaWYgKCFoZWFkZXJzQ2FjaGVbaGRzW2tdLmtleV0pIHtcclxuICAgICAgICAgIGhlYWRlcnNDYWNoZVtoZHNba10ua2V5XSA9IHRydWU7XHJcbiAgICAgICAgICBoZWFkZXJzLnB1c2goaGRzW2tdKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAoIWNvbHVtbnMgfHwgY29sdW1ucy5sZW5ndGggPT0gMClcclxuICAgICAgcmV0dXJuIGhlYWRlcnMuc29ydCgoYSwgYikgPT4gYS5vcmRlciAtIGIub3JkZXIpO1xyXG4gICAgZWxzZSB7XHJcbiAgICAgIC8vIFNlIG1pIGFycml2YSBsYSBsaXN0YSBkaSBjb2xvbm5lIG5vbiBtaSBkw6Agc29sbyBsYSB2aXNpYmlsaXTDoCwgbWEgYW5jaGUgbCdvcmRpbmFtZW50b1xyXG4gICAgICAvLyBsZSBlc3BvcnRvIGRpIGNvbnNlZ3VlbnphXHJcbiAgICAgIGxldCBvcmRlcmVkSGVhZGVycyA9IFtdO1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbHVtbnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBsZXQgdGhpc0lkID0gY29sdW1uc1tpXTtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGhlYWRlcnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIGlmIChoZWFkZXJzW2ldLnByb3BLZXkgPT0gdGhpc0lkKSB7XHJcbiAgICAgICAgICAgIG9yZGVyZWRIZWFkZXJzLnB1c2goaGVhZGVyc1tpXSk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gb3JkZXJlZEhlYWRlcnM7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBEYXRhIHVuYSBsaXN0YSBkaSBvZ2dldHRpIGdlbmVyaWNpIGdlbmVyYSBnbGkgaGVhZGVyIHBlciBsJ2VzcG9ydGF6aW9uZSBlIGludGVncmEgb2duaSBvZ2dldHRvIGNvbiBsZSBwcm9wcmlldMOgIGVzcG9ydGFiaWxpIGRhbGxhIGxpYnJlcmlhICoqQGN0cmwvbmd4LWNzdioqXHJcbiAgICogXHJcbiAgICogQHBhcmFtIHtHZW5lcmljSXRlbVtdfSBvYmpzIE9nZ2V0dGkgZ2VuZXJpY2kgZGEgZXNwb3J0YXJlXHJcbiAgICogQHBhcmFtIHtDc3ZIZWFkZXJzW119IGNvbHVtbnMgQ29sb25uZSByaWNoaWVzdGUgZGFsbCdlc3BvcnRhemlvbmVcclxuICAgKiBcclxuICAgKiBAcmV0dXJucyB7Q3N2SGVhZGVyc1tdfSBIZWFkZXIgZGkgZXNwb3J0YXppb25lIGdpw6Agb3JkaW5hdGkgY29ycmV0dGFtZW50ZVxyXG4gICAqL1xyXG4gIHB1YmxpYyBzZXR1cEZvckdlbmVyaWNFeHBvcnQob2JqczogR2VuZXJpY0l0ZW1bXSwgY29sdW1uczogQ3N2SGVhZGVyc1tdKTogQ3N2SGVhZGVyc1tdIHtcclxuICAgIGxldCBoZWFkZXJzOiBDc3ZIZWFkZXJzW10gPSBbXTtcclxuICAgIGlmICghb2JqcyB8fCBvYmpzLmxlbmd0aCA9PSAwKVxyXG4gICAgICByZXR1cm4gaGVhZGVycztcclxuXHJcbiAgICAvLyBEZXZvIHBlciBmb3J6YSBmYXJsbyBwZXIgdHV0dGkgZ2xpIG9nZ2V0dGkgZGF0byBjaGUgZGV2byBlc3BvcnJlIGxlIHByb3ByaWV0w6AgY2hlIG1pIHNlcnZvbm8gZGEgZXNwb3J0YXJlXHJcbiAgICBvYmpzLmZvckVhY2goKG9iaiwgaW5kZXgpID0+IHtcclxuICAgICAgaWYgKGluZGV4ID09IDApXHJcbiAgICAgICAgaGVhZGVycyA9IHRoaXMucGFyc2VBbmRHZXRHZW5lcmljSGVhZGVycyhvYmosIGNvbHVtbnMpO1xyXG4gICAgICBlbHNlXHJcbiAgICAgICAgdGhpcy5wYXJzZUFuZEdldEdlbmVyaWNIZWFkZXJzKG9iaiwgY29sdW1ucyk7XHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gaGVhZGVycztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERhdG8gdW4gb2dnZXR0byBnZW5lcmljbyBnZW5lcmEgZ2xpIGhlYWRlciBwZXIgbCdlc3BvcnRhemlvbmUgZSBsbyBpbnRlZ3JhIGNvbiBsZSBwcm9wcmlldMOgIGVzcG9ydGFiaWxpIGRhbGxhIGxpYnJlcmlhICoqQGN0cmwvbmd4LWNzdioqXHJcbiAgICogXHJcbiAgICogTWV0b2RvIGludGVybm8gcmljaGlhbWF0byBkYSAqKnNldHVwRm9yR2VuZXJpY0V4cG9ydCoqXHJcbiAgICogXHJcbiAgICogQHBhcmFtIHtHZW5lcmljSXRlbX0gb2JqIE9nZ2V0dG8gZ2VuZXJpY28gZGEgZXNwb3J0YXJlXHJcbiAgICogQHBhcmFtIHtDc3ZDb2x1bW5bXX0gY29sdW1ucyBDb2xvbm5lIHJpY2hpZXN0ZSBkYWxsJ2VzcG9ydGF6aW9uZVxyXG4gICAqIFxyXG4gICAqIEByZXR1cm5zIHtDc3ZIZWFkZXJzW119IEhlYWRlciBkaSBlc3BvcnRhemlvbmUgZ2nDoCBvcmRpbmF0aSBjb3JyZXR0YW1lbnRlXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBwYXJzZUFuZEdldEdlbmVyaWNIZWFkZXJzKG9iajogR2VuZXJpY0l0ZW0sIGNvbHVtbnM6IENzdkhlYWRlcnNbXSk6IENzdkhlYWRlcnNbXSB7XHJcbiAgICBpZiAoIW9iai5wcm9wZXJ0aWVzKVxyXG4gICAgICByZXR1cm4gbnVsbDtcclxuXHJcbiAgICB2YXIgaGVhZGVyczogQ3N2SGVhZGVyc1tdID0gW107XHJcblxyXG4gICAgLy9NaXJhY2xlIGluY29taW5nXHJcbiAgICBjb2x1bW5zLmZvckVhY2godCA9PiB7XHJcbiAgICAgIHZhciBwcm9wVmFsdWUgPSBvYmoucHJvcGVydGllc1t0LmtleV07XHJcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIHQua2V5ICsgXCJfZXhwXCIsIHsgdmFsdWU6IHByb3BWYWx1ZSwgd3JpdGFibGU6IGZhbHNlLCBlbnVtZXJhYmxlOiB0cnVlIH0pO1xyXG4gICAgICBoZWFkZXJzLnB1c2goeyBsYWJlbDogdC5sYWJlbCwga2V5OiB0LmtleSArIFwiX2V4cFwiLCBvcmRlcjogdC5vcmRlciwgdHlwZTogdC50eXBlLCBwcm9wS2V5OiBudWxsIH0pO1xyXG4gICAgfSk7XHJcblxyXG4gICAgLy9UaXJhdGkgZnVvcmkgdHV0dGkgZ2xpIGhlYWRlciBmYWNjaW8gc29ydCBzdWxsJ29yZGluYW1lbnRvXHJcbiAgICByZXR1cm4gaGVhZGVycy5zb3J0KChhLCBiKSA9PiB7IHJldHVybiBhLm9yZGVyIC0gYi5vcmRlciB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERhdG8gdW4gb2dnZXR0byBnZW5lcmEgZ2xpIGhlYWRlciBwZXIgbCdlc3BvcnRhemlvbmUgZSBsbyBpbnRlZ3JhIGNvbiBsZSBwcm9wcmlldMOgIGVzcG9ydGFiaWxpIGRhbGxhIGxpYnJlcmlhICoqQGN0cmwvbmd4LWNzdioqXHJcbiAgICogXHJcbiAgICogTWV0b2RvIGludGVybm8gcmljaGlhbWF0byBkYSAqKnNldHVwRm9yRXhwb3J0KipcclxuICAgKiBcclxuICAgKiBAcGFyYW0ge2FueX0gb2JqIE9nZ2V0dG8gZ2VuZXJpY28gZGEgZXNwb3J0YXJlXHJcbiAgICogXHJcbiAgICogQHJldHVybnMge0NzdkhlYWRlcnNbXX0gSGVhZGVyIGRpIGVzcG9ydGF6aW9uZSBnacOgIG9yZGluYXRpIGNvcnJldHRhbWVudGVcclxuICAgKi9cclxuICBwcml2YXRlIHBhcnNlQW5kR2V0SGVhZGVycyhvYmo6IGFueSwgY29sdW1uc1NlbGVjdGlvbj86IHsgW2lkOiBzdHJpbmddOiB0cnVlIH0pOiBDc3ZIZWFkZXJzW10ge1xyXG4gICAgdmFyIGhlYWRlcnM6IENzdkhlYWRlcnNbXSA9IFtdO1xyXG5cclxuICAgIC8vIE1pcmFjbGUgaW5jb21pbmdcclxuICAgIGxldCBleHBvcnRQcm9wcyA9IG9ialtleHBvcnRMaXN0XSB8fCBbXTtcclxuICAgIGlmIChleHBvcnRQcm9wcy5sZW5ndGggPT0gMClcclxuICAgICAgY29uc29sZS53YXJuKFwiW0Blc2ZhZW56YS9leHRlbnNpb25zXSBOZXNzdW5hIGNvbG9ubmEgY29uZmlndXJhdGEgZGEgZXNwb3J0YXJlIVwiKTtcclxuXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGV4cG9ydFByb3BzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGxldCBwcm9wID0gZXhwb3J0UHJvcHNbaV07XHJcbiAgICAgIGxldCBwcm9wQmFzZSA9IFwiXCI7XHJcbiAgICAgIGxldCB0b0NhbGw6IEZ1bmN0aW9uO1xyXG4gICAgICBpZiAocHJvcC5lbmRzV2l0aChsaXN0Q3N2SGRyUHJlZml4KSkge1xyXG4gICAgICAgIHByb3BCYXNlID0gcHJvcC5yZXBsYWNlKGxpc3RDc3ZIZHJQcmVmaXgsICcnKTtcclxuICAgICAgICB0b0NhbGwgPSB0aGlzLnBhcnNlTGlzdC5iaW5kKHRoaXMpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKHByb3AuZW5kc1dpdGgoZGljdGlvbmFyeUNzdkhkclByZWZpeCkpIHtcclxuICAgICAgICB0b0NhbGwgPSB0aGlzLnBhcnNlRGljdGlvbmFyeS5iaW5kKHRoaXMpO1xyXG4gICAgICAgIHByb3BCYXNlID0gcHJvcC5yZXBsYWNlKGRpY3Rpb25hcnlDc3ZIZHJQcmVmaXgsICcnKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmIChwcm9wLmVuZHNXaXRoKGNzdlZpc1ByZWZpeCkpIHtcclxuICAgICAgICBwcm9wQmFzZSA9IHByb3AucmVwbGFjZShjc3ZWaXNQcmVmaXgsICcnKTtcclxuICAgICAgICBpZiAodHlwZW9mIG9ialtwcm9wQmFzZSArIGNzdlZhbHVlTmF2aWdhdG9yXSAhPT0gXCJ1bmRlZmluZWRcIilcclxuICAgICAgICAgIHRvQ2FsbCA9IHRoaXMucGFyc2VPYmplY3QuYmluZCh0aGlzKTtcclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICB0b0NhbGwgPSB0aGlzLnBhcnNlUHJvcGVydHkuYmluZCh0aGlzKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHRvQ2FsbClcclxuICAgICAgICB0b0NhbGwob2JqLCBwcm9wQmFzZSwgaGVhZGVycywgY29sdW1uc1NlbGVjdGlvbik7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGhlYWRlcnM7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZXR1cCBwZXIgbCdlc3BvcnRhemlvbmUgZGkgdW5hIHNpbmdvbGEgcHJvcHJpZXTDoC4gXHJcbiAgICogVmllbmUgZ2VuZXJhdG8gbCdoZWFkZXIgZSBsYSBwcm9wcmlldMOgIHJlbGF0aXZhIGFsIHZhbG9yZSBmb3JtYXR0YXRvIG8gbm9cclxuICAgKiBcclxuICAgKiBAcGFyYW0ge2FueX0gb2JqIE9nZ2V0dG8gZGkgY3VpIGVzcG9ydGFyZSBsYSBwcm9wcmlldMOgICoqcHJvcCoqXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IHByb3AgUHJvcHJpZXTDoCBkYSBlc3BvcnRhcmVcclxuICAgKiBAcGFyYW0ge0NzdkhlYWRlcnN9IGhlYWRlcnMgQ29udGVuaXRvcmUgZGVnbGkgaGVhZGVyLCB2ZXJyw6AgcmllbXBpdG8gZGEgcXVlc3RhIGZ1bnppb25lIFxyXG4gICAqL1xyXG4gIHByaXZhdGUgcGFyc2VQcm9wZXJ0eShvYmo6IGFueSwgcHJvcDogc3RyaW5nLCBoZWFkZXJzOiBDc3ZIZWFkZXJzW10sIGNvbHVtbnNTZWxlY3Rpb24/OiB7IFtpZDogc3RyaW5nXTogdHJ1ZSB9KSB7XHJcbiAgICBsZXQgdG9FbWl0OiBib29sZWFuID0gb2JqW3Byb3AgKyBjc3ZWaXNQcmVmaXhdO1xyXG4gICAgbGV0IGZvcm1hdDogc3RyaW5nID0gb2JqW3Byb3AgKyBjc3ZGb3JtYXRQcmVmaXhdO1xyXG4gICAgbGV0IHByb3BLZXkgPSBvYmpbcHJvcCArIGNzdlByb3BLZXldO1xyXG5cclxuICAgIGlmIChwcm9wS2V5ICYmICFjb2x1bW5zU2VsZWN0aW9uW3Byb3BLZXldICYmIE9iamVjdC5rZXlzKGNvbHVtbnNTZWxlY3Rpb24pLmxlbmd0aCA+IDApIHtcclxuICAgICAgY29uc29sZS5sb2coXCJbQGVzZmFlbnphL2V4dGVuc2lvbnNdIENvbG9ubmEgZGEgbm9uIGVzcG9ydGFyZTogXCIgKyBwcm9wS2V5KTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBsYmwgPSBvYmpbcHJvcCArIGNzdkhkclByZWZpeF07XHJcbiAgICBsZXQgb3JkZXIgPSBvYmpbcHJvcCArIGNzdk9yZFByZWZpeF07XHJcbiAgICBpZiAodG9FbWl0ICYmIGxibCAhPT0gXCJ1bmRlZmluZWRcIikge1xyXG4gICAgICAvLyBTZSBub24gaG8gdW4gZm9ybWF0byBlc3BvcnRvIGRpcmV0dGFtZW50ZVxyXG4gICAgICBpZiAoIWZvcm1hdCkge1xyXG4gICAgICAgIC8vIFNlIMOoIHVuIGZvcm1hdG8gZGF0YSBtaSBhc3NpY3VybyBkaSBub24gc3RhbXBhcmUgbWFpIHVuYSBkYXRhIDAwOjAwOjAwIGFsdHJpbWVudGkgaW4gZXNwb3J0YXppb25lIHZpZW5lIHVubyBzY2hpZm9cclxuICAgICAgICB2YXIgdmFsID0gb2JqW3Byb3BdID8gdGhpcy5kYXRlcy50cmltU2Vjb25kcyhvYmpbcHJvcF0udG9TdHJpbmcoKSkgOiBcIlwiO1xyXG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIHByb3AgKyBcIl9ub2ZtdFwiLCB7IHZhbHVlOiB2YWwsIHdyaXRhYmxlOiBmYWxzZSwgZW51bWVyYWJsZTogdHJ1ZSB9KTtcclxuICAgICAgICBoZWFkZXJzLnB1c2goeyBsYWJlbDogbGJsID8gbGJsIDogcHJvcCArIFwiX25vZm10XCIsIGtleTogcHJvcCArIFwiX25vZm10XCIsIG9yZGVyOiBvcmRlciwgdHlwZTogXCJzdHJpbmdcIiwgcHJvcEtleTogcHJvcEtleSB9KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICAvLyBDYXNvIGZvcm1hdG8gbnVtZXJpY29cclxuICAgICAgICBpZiAoZm9ybWF0ID09IFwiRlwiKSB7XHJcbiAgICAgICAgICAvLyBDaGVjayBjb25zaWRlcmFuZG8gbGEgcG9zc2liaWxpdMOgIGRpIHplcmlcclxuICAgICAgICAgIGxldCB2YWwgPSBvYmpbcHJvcF0gIT0gbnVsbCA/IG9ialtwcm9wXS50b1N0cmluZygpIDogXCJcIjtcclxuICAgICAgICAgIC8vIEVsaW1pbm8gdHV0dGUgbGUgdmlyZ29sZSAoaW5kaWNhdG9yaSBkaSBtaWdsaWFpYSBwZXIgbGEgY3VsdHVyZSBkZWZhdWx0IGVuLVVTKVxyXG4gICAgICAgICAgdmFsID0gdmFsLnJlcGxhY2UoLywvLCBcIlwiKTtcclxuICAgICAgICAgIC8vIElsIHNpbmdvbG8gcHVudG8gY2hlIGMnw6gsIHNlIHByZXNlbnRlIChzZXBhcmF0b3JlIGRlY2ltYWxpKSBsbyB0cmFzZm9ybW8gaW4gdmlyZ29sYVxyXG4gICAgICAgICAgbGV0IHZhbENvbnZlcnRlZCA9IHZhbC5yZXBsYWNlKFwiLlwiLCBcIixcIik7XHJcblxyXG4gICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwgcHJvcCArIFwiX2ZtdFwiLCB7IHZhbHVlOiB2YWxDb252ZXJ0ZWQsIHdyaXRhYmxlOiBmYWxzZSwgZW51bWVyYWJsZTogdHJ1ZSB9KTtcclxuICAgICAgICAgIGhlYWRlcnMucHVzaCh7IGxhYmVsOiBsYmwgPyBsYmwgOiBwcm9wICsgXCJfZm10XCIsIGtleTogcHJvcCArIFwiX2ZtdFwiLCBvcmRlcjogb3JkZXIsIHR5cGU6IFwibnVtYmVyXCIsIHByb3BLZXk6IHByb3BLZXkgfSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIC8vIFNlIGhvIHVuIGZvcm1hdG8gZGF0YSB0cmFzZm9ybW8gaW4gZGF5anMsIGZvcm1hdHRvIGVkIGVzcG9ydG9cclxuICAgICAgICAgIC8vIFBlciBsYSB0cmFzZm9ybWF6aW9uZSBpbiBkYXlqcyBwcm92byBwcmltYSBhIHBhc3NhcmdsaSBsYSBzdHJpbmdhIGRpIG5ldHRvLCBzcGVyYW5kbyBsYSByaWNvbm9zY2FcclxuICAgICAgICAgIC8vIFNlIG5vbiBmdW56aW9uYSBwcm92byBhIGRlZmluaXJnbGkgbGEgZm9ybWF0dGF6aW9uZSBzdGFuZGFyZCBkZWwgbWV0ZXJpbmcgcGVyIHF1ZWwgbGluZ3VhZ2dpb1xyXG4gICAgICAgICAgbGV0IHZhbCA9IHRoaXMuZGF0ZXMuZ2V0Rm9ybWF0dGVkKG9ialtwcm9wXSwgZm9ybWF0Lmxlbmd0aCA8PSAxMCwgZm9ybWF0Lmxlbmd0aCA+IDE2KTtcclxuICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIHByb3AgKyBcIl9mbXRcIiwgeyB2YWx1ZTogdmFsID8/IFwiXCIsIHdyaXRhYmxlOiBmYWxzZSwgZW51bWVyYWJsZTogdHJ1ZSB9KTtcclxuICAgICAgICAgIGhlYWRlcnMucHVzaCh7IGxhYmVsOiBsYmwgPyBsYmwgOiBwcm9wICsgXCJfZm10XCIsIGtleTogcHJvcCArIFwiX2ZtdFwiLCBvcmRlcjogb3JkZXIsIHR5cGU6IFwiZGF0ZVwiLCBwcm9wS2V5OiBwcm9wS2V5IH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2V0dXAgcGVyIGwnZXNwb3J0YXppb25lIGRpIHVuYSBzaW5nb2xhIHByb3ByaWV0w6AgZGEgdW4gb2dnZXR0by4gXHJcbiAgICogVmllbmUgZ2VuZXJhdG8gbCdoZWFkZXIgZSBsYSBwcm9wcmlldMOgIHJlbGF0aXZhIGFsIHZhbG9yZSBmb3JtYXR0YXRvIG8gbm8uIFxyXG4gICAqIFxyXG4gICAqIFBlciBvdHRlbmVyZSBpbCB2YWxvcmUgZSBsJ2hlYWRlciBkZWxsYSBwcm9wcmlldMOgIHZlbmdvbm8gdXRpbGl6emF0aSBpIG5hdmlnYXRvcmkgYXV0by1nZW5lcmF0aSBuZWwgZGVjb3JhdG9yZSAqKkV4cG9ydEFzKipcclxuICAgKiBcclxuICAgKiBAcGFyYW0ge2FueX0gb2JqIE9nZ2V0dG8gZGkgY3VpIGVzcG9ydGFyZSBsYSBwcm9wcmlldMOgICoqcHJvcCoqXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IHByb3AgUHJvcHJpZXTDoCBkYSBlc3BvcnRhcmVcclxuICAgKiBAcGFyYW0ge0NzdkhlYWRlcnN9IGhlYWRlcnMgQ29udGVuaXRvcmUgZGVnbGkgaGVhZGVyLCB2ZXJyw6AgcmllbXBpdG8gZGEgcXVlc3RhIGZ1bnppb25lIFxyXG4gICAqL1xyXG4gIHByaXZhdGUgcGFyc2VPYmplY3Qob2JqOiBhbnksIHByb3A6IHN0cmluZywgaGVhZGVyczogQ3N2SGVhZGVyc1tdKSB7XHJcbiAgICAvL3NlIHF1ZXN0YSBwcm9wcmlldMOgIGhhIHVuIG5hdmlnYXRvciBzaWduaWZpY2EgY2hlIGRlcml2YSBkYSB1biBvZ2dldHRvIGludGVybm8sIHJlY3VwZXJvIGlsIHZhbG9yZSBpbiBxdWVzdGEgZmFzZSBkYXRvIGNoZSBwcmltYSBub24gY2UgbCdob1xyXG4gICAgbGV0IHZhbHVlbmF2aWdhdG9yID0gb2JqW3Byb3AgKyBjc3ZWYWx1ZU5hdmlnYXRvcl07XHJcblxyXG4gICAgLy9Fcy4gZGkgdmFsdWVuYXZpZ2F0b3Igb2JqLnN1Ym9iai5zdWJzdWJvYmoucHJvcGVydHlcclxuICAgIGxldCBqbXBzID0gdmFsdWVuYXZpZ2F0b3Iuc3BsaXQoXCIuXCIpO1xyXG4gICAgLy9NaSBjbG9ubyBsJ29nZ2V0dG8gb3JpZ2luYWxlIHBlciBub24gdWNjaWRlcmdsaSBpIHJpZmVyaW1lbnRpXHJcbiAgICBsZXQgY2xvbmUgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KG9iaikpO1xyXG4gICAgLy9TYWx0byByaWNvcnNpdmFtZW50ZSBzdSBtZSBzdGVzc28gcGVyIGFycml2YXJlIGFsbGEgcHJvcHJpZXTDoFxyXG4gICAgLy9TYWx0byAxID4gZGl2ZW50YSBvYmpcclxuICAgIC8vU2FsdG8gMiA+IGRpdmVudGEgb2JqLnN1Ym9ialxyXG4gICAgLy9lY2MuLi5cclxuICAgIGptcHMuZm9yRWFjaChwcCA9PiB7IGNsb25lID0gY2xvbmVbcHBdOyB9KTtcclxuXHJcbiAgICAvL1ZhbG9yZSBmaW5hbGUgOkRcclxuICAgIGxldCB2YWx1ZSA9IGNsb25lO1xyXG4gICAgbGV0IGxibCA9IG9ialtwcm9wICsgY3N2SGRyUHJlZml4XTtcclxuICAgIGxldCBvcmRlciA9IG9ialtwcm9wICsgY3N2T3JkUHJlZml4XTtcclxuXHJcbiAgICAvL1NlIHBlciBxdWVzdGEgcHJvcHJpZXTDoCBobyB1biBmb3JtYXRvIGxvIGFwcGxpY29cclxuICAgIGxldCBmb3JtYXQ6IHN0cmluZyA9IG9ialtwcm9wICsgY3N2Rm9ybWF0UHJlZml4XTtcclxuICAgIGxldCB0eXBlOiAnc3RyaW5nJyB8ICdudW1iZXInIHwgJ2RhdGUnID0gXCJzdHJpbmdcIjtcclxuICAgIGlmIChmb3JtYXQgPT0gXCJGXCIpIHtcclxuICAgICAgbGV0IHZhbCA9IHZhbHVlLnRvU3RyaW5nKCk7XHJcbiAgICAgIHZhbCA9IHZhbC5yZXBsYWNlKC8sLywgXCJcIik7XHJcbiAgICAgIHZhbHVlID0gdmFsLnJlcGxhY2UoXCIuXCIsIFwiLFwiKTtcclxuICAgICAgdHlwZSA9IFwibnVtYmVyXCI7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChmb3JtYXQpIHtcclxuICAgICAgdmFsdWUgPSB0aGlzLmRhdGVzLmdldEZvcm1hdHRlZCh2YWx1ZSwgZm9ybWF0Lmxlbmd0aCA8PSAxMCwgZm9ybWF0Lmxlbmd0aCA+IDE2KTtcclxuICAgICAgdHlwZSA9IFwiZGF0ZVwiO1xyXG4gICAgfVxyXG5cclxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIHByb3AsIHsgdmFsdWU6IHZhbHVlID8/IFwiXCIsIHdyaXRhYmxlOiBmYWxzZSwgZW51bWVyYWJsZTogdHJ1ZSB9KTtcclxuICAgIGhlYWRlcnMucHVzaCh7IGxhYmVsOiBsYmwgPyBsYmwgOiBwcm9wLCBrZXk6IHByb3AsIG9yZGVyOiBvcmRlciwgdHlwZTogdHlwZSwgcHJvcEtleTogbnVsbCB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldHVwIHBlciBsJ2VzcG9ydGF6aW9uZSBkaSB1bmEgbGlzdGEgZGkgdmFsb3JpIHBpdm90dGF0aSBkaW5hbWljYW1lbnRlOlxyXG4gICAqIFxyXG4gICAqID0+IFJlY3VwZXJvIGlsIHZhbG9yZSB1dGlsaXp6YW5kbyBpIG5hdmlnYXRvcmlcclxuICAgKiBcclxuICAgKiA9PiBSZWN1cGVybyBsJ2hlYWRlciB1dGlsaXp6YW5kbyBpIG5hdmlnYXRvcmlcclxuICAgKiBcclxuICAgKiA9PiBDb24gaWwgdmFsb3JlIGNpIGNyZW8gbGEgcHJvcGVydHlcclxuICAgKiBcclxuICAgKiA9PiBDb24gbCdoZWFkZXIgZSBpbCByaWZlcmltZW50byBhbGxhIHByb3BlcnR5IGFwcGVuYSBjcmVhdGEgY3JlbyB1biByZWNvcmQgbmVnbGkgaGVhZGVyIGRhIGVzcG9ydGFyZVxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSB7YW55fSBvYmogT2dnZXR0byBkaSBjdWkgZXNwb3J0YXJlIGxhIHByb3ByaWV0w6AgKipwcm9wKipcclxuICAgKiBAcGFyYW0ge3N0cmluZ30gcHJvcCBQcm9wcmlldMOgIGRhIGVzcG9ydGFyZVxyXG4gICAqIEBwYXJhbSB7Q3N2SGVhZGVyc30gaGVhZGVycyBDb250ZW5pdG9yZSBkZWdsaSBoZWFkZXIsIHZlcnLDoCByaWVtcGl0byBkYSBxdWVzdGEgZnVuemlvbmUgXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBwYXJzZUxpc3Qob2JqOiBhbnksIHByb3A6IHN0cmluZywgaGVhZGVyczogQ3N2SGVhZGVyc1tdKSB7XHJcbiAgICBsZXQgaGVhZGVybmF2aWdhdG9yID0gb2JqW3Byb3AgKyBsaXN0Q3N2SGRyUHJlZml4XTtcclxuICAgIGxldCB2YWx1ZW5hdmlnYXRvciA9IG9ialtwcm9wICsgbGlzdENzdlZhbFByZWZpeF07XHJcbiAgICBsZXQgdmFsdWVmb3JtYXQgPSBvYmpbcHJvcCArIGxpc3RDc3ZWYWxGb3JtYXRdO1xyXG4gICAgbGV0IG9yZGVyID0gb2JqW3Byb3AgKyBjc3ZPcmRQcmVmaXhdO1xyXG5cclxuICAgIHZhciBqdW1wczogc3RyaW5nW10sIHRtcFJlczogYW55O1xyXG4gICAgdmFyIG9ianM6IGFueVtdID0gb2JqW3Byb3BdO1xyXG5cclxuICAgIGZvciAobGV0IGlkeCA9IDA7IGlkeCA8IG9ianMubGVuZ3RoOyBpZHgrKykge1xyXG4gICAgICBsZXQgbGlzdGl0ZW0gPSBvYmpzW2lkeF07XHJcblxyXG4gICAgICB2YXIgaGVhZGVyc3BsaXQgPSBoZWFkZXJuYXZpZ2F0b3Iuc3BsaXQoXCIgXCIpO1xyXG4gICAgICB2YXIgaGVhZGVyID0gXCJcIjtcclxuXHJcbiAgICAgIC8vIFBlciBsJ2hlYWRlciBzaSBjb25zaWRlcmEgYSBzZSBzdGFudGUgb2duaSBwZXp6byBzZXBhcmF0byBkYSBzcGF6aW8gcGVyIGZhcmUgbGUgY29uY2F0ZW5hemlvbmlcclxuICAgICAgaGVhZGVyc3BsaXQuZm9yRWFjaChwciA9PiB7XHJcbiAgICAgICAganVtcHMgPSBwci5zcGxpdChcIi5cIik7XHJcbiAgICAgICAgdG1wUmVzID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShsaXN0aXRlbSkpO1xyXG4gICAgICAgIGp1bXBzLmZvckVhY2gocHAgPT4geyB0bXBSZXMgPSB0bXBSZXNbcHBdOyB9KTtcclxuXHJcbiAgICAgICAgaWYgKCFoZWFkZXIpIGhlYWRlciA9IHRtcFJlcztcclxuICAgICAgICBlbHNlIGhlYWRlciArPSBcIiBcIiArIHRtcFJlcztcclxuICAgICAgfSk7XHJcblxyXG4gICAgICBqdW1wcyA9IHZhbHVlbmF2aWdhdG9yLnNwbGl0KFwiLlwiKTtcclxuICAgICAgdG1wUmVzID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShsaXN0aXRlbSkpO1xyXG4gICAgICBqdW1wcy5mb3JFYWNoKHBwID0+IHsgdG1wUmVzID0gdG1wUmVzW3BwXTsgfSk7XHJcbiAgICAgIGxldCB2YWx1ZSA9IHRtcFJlcztcclxuXHJcbiAgICAgIGxldCB0eXBlOiAnc3RyaW5nJyB8ICdudW1iZXInIHwgJ2RhdGUnID0gXCJzdHJpbmdcIjtcclxuICAgICAgaWYgKHZhbHVlZm9ybWF0ID09IFwiRlwiKSB7XHJcbiAgICAgICAgbGV0IHZhbCA9IHZhbHVlICE9IG51bGwgPyB2YWx1ZS50b1N0cmluZygpIDogXCJcIjtcclxuICAgICAgICB2YWwgPSB2YWwucmVwbGFjZSgvLC8sIFwiXCIpO1xyXG4gICAgICAgIHZhbHVlID0gdmFsLnJlcGxhY2UoXCIuXCIsIFwiLFwiKTtcclxuICAgICAgICB0eXBlID0gXCJudW1iZXJcIjtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmICh2YWx1ZWZvcm1hdCkge1xyXG4gICAgICAgIHZhbHVlID0gdGhpcy5kYXRlcy5nZXRGb3JtYXR0ZWQob2JqW3Byb3BdLCB2YWx1ZWZvcm1hdC5sZW5ndGggPD0gMTAsIHZhbHVlZm9ybWF0Lmxlbmd0aCA+IDE2KTtcclxuICAgICAgICB0eXBlID0gXCJkYXRlXCI7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIHByb3AgKyBpZHgsIHsgdmFsdWU6IHZhbHVlID8/IFwiXCIsIHdyaXRhYmxlOiBmYWxzZSB9KTtcclxuICAgICAgaGVhZGVycy5wdXNoKHsgbGFiZWw6IGhlYWRlciwga2V5OiBwcm9wICsgaWR4LCBvcmRlcjogb3JkZXIgKyBpZHgsIHR5cGU6IHR5cGUsIHByb3BLZXk6IG51bGwgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZXR1cCBwZXIgbCdlc3BvcnRhemlvbmUgZGkgdW5hIGxpc3RhIGRpIHZhbG9yaSBwaXZvdHRhdGkgZGluYW1pY2FtZW50ZTpcclxuICAgKiBcclxuICAgKiA9PiBSZWN1cGVybyBpbCB2YWxvcmUgdXRpbGl6emFuZG8gaSBuYXZpZ2F0b3JpXHJcbiAgICogXHJcbiAgICogPT4gUmVjdXBlcm8gbCdoZWFkZXIgdXRpbGl6emFuZG8gaSBuYXZpZ2F0b3JpXHJcbiAgICogXHJcbiAgICogPT4gQ29uIGlsIHZhbG9yZSBjaSBjcmVvIGxhIHByb3BlcnR5XHJcbiAgICogXHJcbiAgICogPT4gQ29uIGwnaGVhZGVyIGUgaWwgcmlmZXJpbWVudG8gYWxsYSBwcm9wZXJ0eSBhcHBlbmEgY3JlYXRhIGNyZW8gdW4gcmVjb3JkIG5lZ2xpIGhlYWRlciBkYSBlc3BvcnRhcmVcclxuICAgKiBcclxuICAgKiBAcGFyYW0ge2FueX0gb2JqIE9nZ2V0dG8gZGkgY3VpIGVzcG9ydGFyZSBsYSBwcm9wcmlldMOgICoqcHJvcCoqXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IHByb3AgUHJvcHJpZXTDoCBkYSBlc3BvcnRhcmVcclxuICAgKiBAcGFyYW0ge0NzdkhlYWRlcnN9IGhlYWRlcnMgQ29udGVuaXRvcmUgZGVnbGkgaGVhZGVyLCB2ZXJyw6AgcmllbXBpdG8gZGEgcXVlc3RhIGZ1bnppb25lIFxyXG4gICAqL1xyXG4gIHByaXZhdGUgcGFyc2VEaWN0aW9uYXJ5KG9iajogYW55LCBwcm9wOiBzdHJpbmcsIGhlYWRlcnM6IENzdkhlYWRlcnNbXSkge1xyXG4gICAgbGV0IGhlYWRlcm5hdmlnYXRvciA9IG9ialtwcm9wICsgZGljdGlvbmFyeUNzdkhkclByZWZpeF07XHJcbiAgICBsZXQgdmFsdWVuYXZpZ2F0b3IgPSBvYmpbcHJvcCArIGRpY3Rpb25hcnlDc3ZWYWxQcmVmaXhdO1xyXG4gICAgbGV0IG9yZGVyID0gb2JqW3Byb3AgKyBjc3ZPcmRQcmVmaXhdO1xyXG5cclxuICAgIHZhciBqdW1wczogc3RyaW5nW10sIHRtcFJlczogYW55O1xyXG4gICAgdmFyIG9ianM6IGFueVtdID0gb2JqW3Byb3BdO1xyXG5cclxuICAgIGZvciAobGV0IGlkeCA9IDA7IGlkeCA8IG9ianMubGVuZ3RoOyBpZHgrKykge1xyXG4gICAgICBsZXQgbGlzdGl0ZW0gPSBvYmpzW2lkeF07XHJcbiAgICAgIHZhciBoZWFkZXJzcGxpdCA9IGhlYWRlcm5hdmlnYXRvci5zcGxpdChcIiBcIik7XHJcbiAgICAgIHZhciBoZWFkZXIgPSBcIlwiO1xyXG5cclxuICAgICAgaGVhZGVyc3BsaXQuZm9yRWFjaChwciA9PiB7XHJcbiAgICAgICAganVtcHMgPSBwci5zcGxpdChcIi5cIik7XHJcbiAgICAgICAgdG1wUmVzID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShsaXN0aXRlbSkpO1xyXG4gICAgICAgIGp1bXBzLmZvckVhY2gocHAgPT4geyB0bXBSZXMgPSB0bXBSZXNbcHBdOyB9KTtcclxuXHJcbiAgICAgICAgaWYgKCFoZWFkZXIpIGhlYWRlciA9IHRtcFJlcztcclxuICAgICAgICBlbHNlIGhlYWRlciArPSBcIiBcIiArIHRtcFJlcztcclxuICAgICAgfSk7XHJcblxyXG4gICAgICB2YXIgdmFsdWVzcGxpdCA9IHZhbHVlbmF2aWdhdG9yLnNwbGl0KFwiLFwiKTtcclxuICAgICAgdmFsdWVzcGxpdC5mb3JFYWNoKCh0LCBpZHhpbnRlcm5hbCkgPT4ge1xyXG4gICAgICAgIHZhciBuYXZpZyA9IHQuc3BsaXQoXCItXCIpWzFdO1xyXG4gICAgICAgIHZhciBkZXNjID0gdC5zcGxpdChcIi1cIilbMF07XHJcblxyXG4gICAgICAgIGp1bXBzID0gbmF2aWcuc3BsaXQoXCIuXCIpO1xyXG4gICAgICAgIHRtcFJlcyA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkobGlzdGl0ZW0pKTtcclxuICAgICAgICBqdW1wcy5mb3JFYWNoKHBwID0+IHsgdG1wUmVzID0gdG1wUmVzW3BwXTsgfSk7XHJcbiAgICAgICAgbGV0IHZhbHVlID0gdG1wUmVzO1xyXG5cclxuICAgICAgICBsZXQgcHJvcG5hbWUgPSBwcm9wICsgaWR4LnRvU3RyaW5nKCkgKyBpZHhpbnRlcm5hbC50b1N0cmluZygpO1xyXG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIHByb3BuYW1lLCB7IHZhbHVlOiB2YWx1ZSA/PyBcIlwiLCB3cml0YWJsZTogZmFsc2UgfSk7XHJcbiAgICAgICAgaGVhZGVycy5wdXNoKHsgbGFiZWw6IGhlYWRlciArIFwiIFwiICsgZGVzYywga2V5OiBwcm9wbmFtZSwgb3JkZXI6IG9yZGVyICsgaWR4LCB0eXBlOiAnc3RyaW5nJywgcHJvcEtleTogbnVsbCB9KTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNZXRvZG8gY2hlIHNpIG9jY3VwYSBkZWxsYSBkZXNlcmlhbGl6emF6aW9uZSBkZWdsaSBvZ2dldHRpIGRhIGVzcG9ydGFyZS4gTWVzc28gYSBsaXZlbGxvIGRpIGxpYnJlcmlhIGluIG1vZG8gY2hlIHF1YWxvcmEgY2kgZm9zc2UgZGEgY2FtYmlhcmUgbGlicmVyaWEgXHJcbiAgICogdHV0dGUgbGUgbWFudXRlbnppb25pIHNpYW5vIGNvbmNlbnRyYXRlIHF1aVxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSB7YW55W119IGl0ZW1zIE9nZ2V0dGkgZGEgZGVzZXJpYWxpenphcmVcclxuICAgKiBAcGFyYW0ge2FueX0gdHlwZSBUaXBvIGRhIHVzYXJlIGNvbWUgcHJvdG90aXBvIHBlciBsYSBkZXNlcmlhbGl6emF6aW9uZVxyXG4gICAqIFxyXG4gICAqIEByZXR1cm5zIHthbnl9IE9nZ2V0dGkgZGVzZXJpYWxpenphdGlcclxuICAgKi9cclxuICBwdWJsaWMgZGVzZXJpYWxpemVGb3JFeHBvcnQoaXRlbXM6IGFueVtdLCB0eXBlOiBhbnkpOiBhbnkge1xyXG4gICAgcmV0dXJuIERlc2VyaWFsaXplKGl0ZW1zLCB0eXBlKTtcclxuICB9XHJcbn0iXX0=
507
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0ZW5zaW9ucy5leHBvcnRzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9leHRlbnNpb25zL3NyYy9saWIvc2VydmljZXMvZXh0ZW5zaW9ucy5leHBvcnRzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsVUFBVTtBQUNWLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTztBQUNQLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFeEMsaUJBQWlCO0FBRWpCLE9BQU8sRUFBRSxVQUFVLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsaUJBQWlCLEVBQUUsWUFBWSxFQUFFLHNCQUFzQixFQUFFLHNCQUFzQixFQUFFLGdCQUFnQixFQUFFLGdCQUFnQixFQUFFLGdCQUFnQixFQUFFLFVBQVUsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7QUFPcFA7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXdCRztBQUNILE1BQU0sQ0FBQyxNQUFNLE1BQU0sR0FBRyxDQUFDLEtBQWEsRUFBRSxNQUFjLEVBQUUsU0FBaUIsSUFBSSxFQUFFLFVBQWtCLElBQUksRUFBRSxFQUFFLENBQ3JHLENBQUMsTUFBYyxFQUFFLFdBQW1CLEVBQUUsRUFBRTtJQUN0QyxJQUFJLE1BQU07UUFDUixNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxXQUFXLEdBQUcsZUFBZSxFQUFFLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUNuRyxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxXQUFXLEdBQUcsWUFBWSxFQUFFLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUM3RixNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0s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QUFJLENBQUMsQ0FBQztJQUNsQyxDQUFDOzswR0E5WFUsYUFBYTs4R0FBYixhQUFhOzJGQUFiLGFBQWE7a0JBRHpCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBBbmd1bGFyXHJcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5cclxuLy8gTGlic1xyXG5pbXBvcnQgeyBEZXNlcmlhbGl6ZSB9IGZyb20gXCJjZXJpYWxpemVcIjtcclxuXHJcbi8vIENvbmZpZ3VyYXppb25pXHJcblxyXG5pbXBvcnQgeyBleHBvcnRMaXN0LCBjc3ZGb3JtYXRQcmVmaXgsIGNzdkhkclByZWZpeCwgY3N2T3JkUHJlZml4LCBjc3ZWYWx1ZU5hdmlnYXRvciwgY3N2VmlzUHJlZml4LCBkaWN0aW9uYXJ5Q3N2SGRyUHJlZml4LCBkaWN0aW9uYXJ5Q3N2VmFsUHJlZml4LCBsaXN0Q3N2SGRyUHJlZml4LCBsaXN0Q3N2VmFsRm9ybWF0LCBsaXN0Q3N2VmFsUHJlZml4LCBjc3ZQcm9wS2V5IH0gZnJvbSBcIi4uL21vZGVscy9FeHBvcnRDb25zdHNcIjtcclxuaW1wb3J0IHsgRGF0ZVNlcnZpY2UgfSBmcm9tICcuL2V4dGVuc2lvbnMuZGF0ZXMuc2VydmljZSc7XHJcblxyXG4vLyBNb2RlbGxpXHJcbmltcG9ydCB7IENzdkhlYWRlcnMgfSBmcm9tIFwiLi4vbW9kZWxzL0NzdkhlYWRlcnNcIjtcclxuaW1wb3J0IHsgR2VuZXJpY0l0ZW0gfSBmcm9tIFwiLi4vbW9kZWxzL0dlbmVyaWNJdGVtXCI7XHJcblxyXG4vKipcclxuICogRGVjb3JhdG9yZSBkaSBlc3BvcnRhemlvbmUgdXRpbGl6emFiaWxlIHN1IHVuYSBwcm9wcmlldMOgIHNpbmdvbGEuIFxyXG4gKiBWZXJyYW5ubyBnZW5lcmF0ZSAzIHByb3ByaWV0w6AgY2hlIGdlc3RpcmFubm8gbCdlc3BvcnRhemlvbmU6IChwcm9wLCBwcm9wX2NzdnZpcywgcHJvcF9jc3ZoZHIpLiBcclxuICogXHJcbiAqIEFkIGVzZW1waW8sIGRhIHF1ZXN0YSBjb25maWd1cmF6aW9uZTpcclxuICogXHJcbiAqIEBleGFtcGxlXHJcbiAqIGBgYFxyXG4gKiBARXhwb3J0KHRydWUsIFwiTXlIZWFkZXJcIilcclxuICogY2lhbzogc3RyaW5nO1xyXG4gKiBgYGBcclxuICogXHJcbiAqIE5hc2NlcmFubm8gbGUgc2VndWVudGkgcHJvcHJpZXTDoCBuZWxsJ29nZ2V0dG8gZXNwb3J0YWJpbGU6XHJcbiAqIFxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGBcclxuICogY2lhb19jc3Z2aXM6IHN0cmluZzsgPT4gdHJ1ZVxyXG4gKiBjaWFvOiBzdHJpbmc7XHJcbiAqIGNpYW9fY3N2aGRyOiBzdHJpbmcgPT4gXCJNeUhlYWRlclwiXHJcbiAqIGBgYFxyXG4gKiBcclxuICogQHBhcmFtIHtudW1iZXJ9IG9yZGVyIE9yZGluZSBkaSBlc3BvcnRhemlvbmUuIFBpw7kgcGljY29sbyDDqCwgcHJpbWEgYXBwYXJlIGlsIHZhbG9yZVxyXG4gKiBAcGFyYW0ge3N0cmluZ30gaGVhZGVyIFRpdG9sbyBkZWxsYSBjb2xvbm5hIG5lbCBmaWxlIENTViBlc3BvcnRhdG9cclxuICogQHBhcmFtIHtzdHJpbmd9IGZvcm1hdCBGb3JtYXRvIGRpIGVzcG9ydGF6aW9uZS4gUHXDsiBlc3NlcmUgdW4gZm9ybWF0byBkYXRhIHBlciBpIGNhbXBpIGRhdGEgbyAnRicgcGVyIGkgY2FtcGkgZmxvYXRpbmcgcG9pbnRcclxuICovXHJcbmV4cG9ydCBjb25zdCBFeHBvcnQgPSAob3JkZXI6IG51bWJlciwgaGVhZGVyOiBzdHJpbmcsIGZvcm1hdDogc3RyaW5nID0gbnVsbCwgdGFibGVpZDogc3RyaW5nID0gbnVsbCkgPT5cclxuICAodGFyZ2V0OiBPYmplY3QsIHByb3BlcnR5S2V5OiBzdHJpbmcpID0+IHtcclxuICAgIGlmIChmb3JtYXQpXHJcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIHByb3BlcnR5S2V5ICsgY3N2Rm9ybWF0UHJlZml4LCB7IHZhbHVlOiBmb3JtYXQsIHdyaXRhYmxlOiBmYWxzZSB9KTtcclxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIHByb3BlcnR5S2V5ICsgY3N2T3JkUHJlZml4LCB7IHZhbHVlOiBvcmRlciwgd3JpdGFibGU6IGZhbHNlIH0pO1xyXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgcHJvcGVydHlLZXkgKyBjc3ZWaXNQcmVmaXgsIHsgdmFsdWU6ICEhaGVhZGVyLCB3cml0YWJsZTogZmFsc2UgfSk7XHJcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBwcm9wZXJ0eUtleSArIGNzdkhkclByZWZpeCwgeyB2YWx1ZTogaGVhZGVyLCB3cml0YWJsZTogZmFsc2UgfSk7XHJcbiAgICBpZih0YWJsZWlkKVxyXG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBwcm9wZXJ0eUtleSArIGNzdlByb3BLZXksIHsgdmFsdWU6IHRhYmxlaWQsIHdyaXRhYmxlOiBmYWxzZSB9KTtcclxuXHJcbiAgICBpZiAodGFyZ2V0W2V4cG9ydExpc3RdKVxyXG4gICAgICB0YXJnZXRbZXhwb3J0TGlzdF0ucHVzaChwcm9wZXJ0eUtleSArIGNzdlZpc1ByZWZpeCk7XHJcbiAgICBlbHNlXHJcbiAgICAgIHRhcmdldFtleHBvcnRMaXN0XSA9IFtwcm9wZXJ0eUtleSArIGNzdlZpc1ByZWZpeF1cclxuICB9O1xyXG5cclxuLyoqXHJcbiAqIERlY29yYXRvcmUgZGkgZXNwb3J0YXppb25lIHV0aWxpenphYmlsZSBzdSB1biBvZ2dldHRvLiBcclxuICogUGVyIG9nbmkgcHJvcHJpZXTDoCBkZWxsJ29nZ2V0dG8gdmVycmFubm8gZ2VuZXJhdGUgMyBwcm9wcmlldMOgIGNoZSBnZXN0aXJhbm5vIGwnZXNwb3J0YXppb25lOiAocHJvcCwgcHJvcF9jc3Z2aXMsIHByb3BfY3N2aGRyKS4gXHJcbiAqIFBlciBlc3NlcmUgZXNwb3J0YXRlLCBsZSBwcm9wcmlldMOgIGRlbGwnb2dnZXR0byBkZXZvbm8gZXNzZXJlIG1hcmNhdGUgY29uIGkgRGVjb3JhdG9yaSBkaSBlc3BvcnRhemlvbmVcclxuICogXHJcbiAqIEFkIGVzZW1waW8sIGRhIHF1ZXN0YSBjb25maWd1cmF6aW9uZTpcclxuICogXHJcbiAqIEBleGFtcGxlXHJcbiAqIGBgYFxyXG4gKiBNeU9iaiB7XHJcbiAqICAgICBARXhwb3J0KHRydWUsIFwiTXlIZWFkZXJcIilcclxuICogICAgIGNpYW86IHN0cmluZztcclxuICogfVxyXG4gKiBcclxuICogQEV4cG9ydE9iamVjdCh0cnVlLCBcIk15SGVhZGVyXCIpXHJcbiAqIHRlc3Q6IE15T2JqOyBcclxuICogYGBgXHJcbiAqIFxyXG4gKiBOYXNjZXJhbm5vIGxlIHNlZ3VlbnRpIHByb3ByaWV0w6AgbmVsbCdvZ2dldHRvIGVzcG9ydGFiaWxlOlxyXG4gKiBcclxuICogQGV4YW1wbGVcclxuICogYGBgXHJcbiAqIHRlc3RjaWFvOiBzdHJpbmc7ID0+IFZhbG9yZSBkaSBNeU9iai5jaWFvXHJcbiAqIHRlc3RjaWFvX2NzdnZpczogc3RyaW5nOyA9PiB0cnVlXHJcbiAqIHRlc3RjaWFvX2Nzdmhkcjogc3RyaW5nID0+IFwiTXlIZWFkZXJcIiBcclxuICogYGBgXHJcbiAqXHJcbiAqIEBwYXJhbSB7bnVtYmVyfSBvcmRlciBPcmRpbmUgZGkgZXNwb3J0YXppb25lLiBQacO5IHBpY2NvbG8gw6gsIHByaW1hIGFwcGFyZSBpbCB2YWxvcmVcclxuICogQHBhcmFtIHthbnl9IHR5cGUgVGlwbyBkYSBlc3BvcnRhcmVcclxuICovXHJcbmV4cG9ydCBjb25zdCBFeHBvcnRBcyA9IChvcmRlcjogbnVtYmVyLCB0eXBlOiBhbnkpID0+XHJcbiAgKHRhcmdldDogT2JqZWN0LCBwcm9wZXJ0eUtleTogc3RyaW5nKSA9PiB7XHJcbiAgICB2YXIgdCA9IG5ldyB0eXBlKCk7XHJcbiAgICB2YXIgcHJvcHMgPSB0W2V4cG9ydExpc3RdO1xyXG4gICAgZm9yKGxldCBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKXtcclxuICAgICAgbGV0IHByb3AgPSBwcm9wc1tpXS5yZXBsYWNlKGNzdlZpc1ByZWZpeCwgJycpO1xyXG4gICAgICBpZiAodHlwZW9mIHRbcHJvcCArIGNzdlZpc1ByZWZpeF0gIT09IFwidW5kZWZpbmVkXCIpIHtcclxuICAgICAgICB2YXIgdG9FbWl0OiBib29sZWFuID0gdFtwcm9wICsgY3N2VmlzUHJlZml4XTtcclxuICAgICAgICB2YXIgbGJsID0gdFtwcm9wICsgY3N2SGRyUHJlZml4XTtcclxuICAgICAgICB2YXIgZm9ybWF0ID0gdFtwcm9wICsgY3N2Rm9ybWF0UHJlZml4XTtcclxuICAgICAgICB2YXIgb3JkZXJQcm9wID0gdFtwcm9wICsgY3N2T3JkUHJlZml4XTtcclxuICAgICAgICBpZiAoZm9ybWF0KVxyXG4gICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgcHJvcGVydHlLZXkgKyBwcm9wICsgY3N2Rm9ybWF0UHJlZml4LCB7IHZhbHVlOiBmb3JtYXQsIHdyaXRhYmxlOiBmYWxzZSB9KTtcclxuXHJcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgcHJvcGVydHlLZXkgKyBwcm9wICsgY3N2T3JkUHJlZml4LCB7IHZhbHVlOiBvcmRlclByb3AgKyBvcmRlciwgd3JpdGFibGU6IGZhbHNlIH0pO1xyXG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIHByb3BlcnR5S2V5ICsgcHJvcCwgeyB2YWx1ZTogbnVsbCwgd3JpdGFibGU6IHRydWUsIGVudW1lcmFibGU6IHRydWUgfSk7XHJcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgcHJvcGVydHlLZXkgKyBwcm9wICsgY3N2VmFsdWVOYXZpZ2F0b3IsIHsgdmFsdWU6IHByb3BlcnR5S2V5ICsgXCIuXCIgKyBwcm9wLCB3cml0YWJsZTogZmFsc2UgfSk7XHJcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgcHJvcGVydHlLZXkgKyBwcm9wICsgY3N2VmlzUHJlZml4LCB7IHZhbHVlOiB0b0VtaXQsIHdyaXRhYmxlOiBmYWxzZSB9KTtcclxuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBwcm9wZXJ0eUtleSArIHByb3AgKyBjc3ZIZHJQcmVmaXgsIHsgdmFsdWU6IGxibCwgd3JpdGFibGU6IGZhbHNlIH0pO1xyXG5cclxuICAgICAgICBpZiAodGFyZ2V0W2V4cG9ydExpc3RdKVxyXG4gICAgICAgICAgdGFyZ2V0W2V4cG9ydExpc3RdLnB1c2gocHJvcGVydHlLZXkgKyBwcm9wICsgY3N2VmlzUHJlZml4KTtcclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICB0YXJnZXRbZXhwb3J0TGlzdF0gPSBbcHJvcGVydHlLZXkgKyBwcm9wICsgY3N2VmlzUHJlZml4XVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbi8qKlxyXG4gKiBEZWNvcmF0b3JlIGRpIGVzcG9ydGF6aW9uZSB1dGlsaXp6YWJpbGUgc3UgdW5hIGxpc3RhLCBcclxuICogc2kgdXRpbGl6emFubyAyIG5hdmlnYXRvciByaXNwZXR0aXZhbWVudGUgcGVyIGxhIHZhbG9yaXp6YXppb25lIGRlbGwnSGVhZGVyIGUgZGVsIFZhbG9yZSBlIFxyXG4gKiBwZXIgb2duaSBlbGVtZW50byBkZWxsJ2FycmF5IHZlcnJhbm5vIGdlbmVyYXRlIDMgcHJvcHJpZXTDoCBjaGUgZ2VzdGlyYW5ubyBsJ2VzcG9ydGF6aW9uZTogKHByb3AsIHByb3BfY3N2dmlzLCBwcm9wX2NzdmhkcilcclxuICogXHJcbiAqIEFUVEVOWklPTkU6IEdsaSBvZ2dldHRpIGVzcG9ydGF0aSBpbiBxdWVzdGEgbW9kYWxpdMOgIG5vbiBkZXZvbm8gcHJlc2VudGFyZSBhbHRyaSB0YWcgZGkgdGlwbyBARXhwb3J0ey4uLn0gYWxsJ2ludGVybm8uIEZhIHR1dHRvIHF1ZXN0byBkZWNvcmF0b3JlXHJcbiAqIFxyXG4gKiBJIG5hdmlnYXRvciBoYW5ubyBxdWVzdGEgY29udmVuemlvbmU6XHJcbiAqIFxyXG4gKiAuIC0tPiBkaXZpZGUgZHVlIHByb3ByaWV0w6AgZGEgcmljaGlhbWFyZSBjb25zZWN1dGl2YW1lbnRlOiBcImEuYlwiIHJpY2hpYW1lcsOgIFwib2JqLmEuYlwiO1xyXG4gKiBcclxuICogfCAtLT4gZGl2aWRlIHBpw7kgcHJvcHJpZXTDoCBwZXIgbGUgY29uY2F0ZW5hemlvbmkgY29uIHVubyBzcGF6aW8gZnJhIHVuYSBlIGwnYWx0cmE6IFwicmVnZGVzY3xzbGljZS5zbGljZW5hbWVcIiBkaXZlbnRlcsOgIG9iai5yZWdkZXNjICsgXCIgXCIgKyBvYmouc2xpY2Uuc2xpY2VuYW1lXHJcbiAqIFxyXG4gKiBAcGFyYW0ge251bWJlcn0gb3JkZXIgT3JkaW5lIGRpIGVzcG9ydGF6aW9uZS4gUGnDuSBwaWNjb2xvIMOoLCBwcmltYSBhcHBhcmUgaWwgdmFsb3JlXHJcbiAqIEBwYXJhbSB7c3RyaW5nfSBoZWFkZXJuYXZpZ2F0b3IgTmF2aWdhdG9yIGNvbCBjb21waXRvIGRpIHNlbGV6aW9uYXJlIGlsIHRpdG9sbyBwZXIgbGEgY29sb25uYVxyXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWVuYXZpZ2F0b3IgTmF2aWdhdG9yIGNvbCBjb21waXRvIGRpIHNlbGV6aW9uYXJlIGlsIHZhbG9yZSBwZXIgbGEgY29sb25uYVxyXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWVmb3JtYXQgRm9ybWF0byBkaSBlc3BvcnRhemlvbmUgcGVyIGkgdmFsb3JpIHNlbGV6aW9uYXRpIGRhbCAqKnZhbHVlbmF2aWdhdG9yKiouIFB1w7IgZXNzZXJlIHVuIGZvcm1hdG8gZGF0YSBwZXIgaSBjYW1waSBkYXRhIG8gJ0YnIHBlciBpIGNhbXBpIGZsb2F0aW5nIHBvaW50XHJcbiAqL1xyXG5leHBvcnQgY29uc3QgRXhwb3J0TGlzdCA9IChvcmRlcjogbnVtYmVyLCBoZWFkZXJuYXZpZ2F0b3I6IHN0cmluZywgdmFsdWVuYXZpZ2F0b3I6IHN0cmluZywgdmFsdWVmb3JtYXQ6IHN0cmluZyA9IG51bGwpID0+XHJcbiAgKHRhcmdldDogT2JqZWN0LCBwcm9wZXJ0eUtleTogc3RyaW5nKSA9PiB7XHJcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBwcm9wZXJ0eUtleSArIGNzdk9yZFByZWZpeCwgeyB2YWx1ZTogb3JkZXIsIHdyaXRhYmxlOiBmYWxzZSB9KTtcclxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIHByb3BlcnR5S2V5ICsgbGlzdENzdlZhbFByZWZpeCwgeyB2YWx1ZTogdmFsdWVuYXZpZ2F0b3IsIHdyaXRhYmxlOiBmYWxzZSB9KTtcclxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIHByb3BlcnR5S2V5ICsgbGlzdENzdkhkclByZWZpeCwgeyB2YWx1ZTogaGVhZGVybmF2aWdhdG9yLCB3cml0YWJsZTogZmFsc2UgfSk7XHJcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBwcm9wZXJ0eUtleSArIGxpc3RDc3ZWYWxGb3JtYXQsIHsgdmFsdWU6IHZhbHVlZm9ybWF0LCB3cml0YWJsZTogZmFsc2UgfSk7XHJcblxyXG4gICAgaWYgKHRhcmdldFtleHBvcnRMaXN0XSlcclxuICAgICAgdGFyZ2V0W2V4cG9ydExpc3RdLnB1c2gocHJvcGVydHlLZXkgKyBsaXN0Q3N2SGRyUHJlZml4KTtcclxuICAgIGVsc2VcclxuICAgICAgdGFyZ2V0W2V4cG9ydExpc3RdID0gW3Byb3BlcnR5S2V5ICsgbGlzdENzdkhkclByZWZpeF1cclxuICB9O1xyXG5cclxuLyoqXHJcbiAqIERlY29yYXRvcmUgZGkgZXNwb3J0YXppb25lIHV0aWxpenphYmlsZSBzdSB1biBkaXppb25hcmlvLiBTZSBhZCBlc2VtcGlvIHNpIHZvZ2xpb25vIGdlbmVyYXJlIGxlIGNvbG9ubmVcclxuICogXHJcbiAqIFZhbG9yZSBBID0gMVxyXG4gKiBcclxuICogVmFsb3JlIEIgPSAyXHJcbiAqIFxyXG4gKiBWYWxvcmUgQyA9IDNcclxuICogXHJcbiAqIHBhcnRlbmRvIGRhIHVuIG9nZ2V0dG8gaW5pemlhbGUgeyBWYWxvcmUgeyBBOiAxLCBCOiAyLCBDOiAzIH0gfVxyXG4gKiBcclxuICogQHBhcmFtIHtudW1iZXJ9IG9yZGVyIE9yZGluZSBkaSBlc3BvcnRhemlvbmUuIFBpw7kgcGljY29sbyDDqCwgcHJpbWEgYXBwYXJlIGlsIHZhbG9yZVxyXG4gKiBAcGFyYW0ge3N0cmluZ30gaGVhZGVybmF2aWdhdG9yIE5hdmlnYXRvciBjb2wgY29tcGl0byBkaSBzZWxlemlvbmFyZSBpbCB0aXRvbG8gcGVyIGxhIGNvbG9ubmFcclxuICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlbmF2aWdhdG9yIE5hdmlnYXRvciBjb2wgY29tcGl0byBkaSBzZWxlemlvbmFyZSBpbCB2YWxvcmUgcGVyIGxhIGNvbG9ubmFcclxuICovXHJcbmV4cG9ydCBjb25zdCBFeHBvcnREaWN0aW9uYXJ5ID0gKG9yZGVyOiBudW1iZXIsIGhlYWRlcm5hdmlnYXRvcjogc3RyaW5nLCB2YWx1ZW5hdmlnYXRvcjogc3RyaW5nKSA9PlxyXG4gICh0YXJnZXQ6IE9iamVjdCwgcHJvcGVydHlLZXk6IHN0cmluZykgPT4ge1xyXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgcHJvcGVydHlLZXkgKyBjc3ZPcmRQcmVmaXgsIHsgdmFsdWU6IG9yZGVyLCB3cml0YWJsZTogZmFsc2UgfSk7XHJcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBwcm9wZXJ0eUtleSArIGRpY3Rpb25hcnlDc3ZWYWxQcmVmaXgsIHsgdmFsdWU6IHZhbHVlbmF2aWdhdG9yLCB3cml0YWJsZTogZmFsc2UgfSk7XHJcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBwcm9wZXJ0eUtleSArIGRpY3Rpb25hcnlDc3ZIZHJQcmVmaXgsIHsgdmFsdWU6IGhlYWRlcm5hdmlnYXRvciwgd3JpdGFibGU6IGZhbHNlIH0pO1xyXG5cclxuICAgIGlmICh0YXJnZXRbZXhwb3J0TGlzdF0pXHJcbiAgICAgIHRhcmdldFtleHBvcnRMaXN0XS5wdXNoKHByb3BlcnR5S2V5ICsgZGljdGlvbmFyeUNzdkhkclByZWZpeCk7XHJcbiAgICBlbHNlXHJcbiAgICAgIHRhcmdldFtleHBvcnRMaXN0XSA9IFtwcm9wZXJ0eUtleSArIGRpY3Rpb25hcnlDc3ZIZHJQcmVmaXhdXHJcbiAgfTtcclxuXHJcbi8qKlxyXG4gKiBTZXJ2aWNlIGNoZSBzaSBvY2N1cGEgZGVsbCdlc3BvcnRhemlvbmUgZGVnbGkgb2dnZXR0aSBtYXJjYXRpIGRhaSBEZWNvcmF0b3JpICoqRXhwb3J0RGljdGlvbmFyeSoqLCAqKkV4cG9ydExpc3QqKiwgKipFeHBvcnRBcyoqIG8gKipFeHBvcnQqKlxyXG4gKi9cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgRXhwb3J0U2VydmljZSB7XHJcblxyXG4gIC8qKlxyXG4gICAqIENvc3RydXR0b3JlXHJcbiAgICogXHJcbiAgICogQGlnbm9yZVxyXG4gICAqL1xyXG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcml2YXRlIGRhdGVzOiBEYXRlU2VydmljZSkgeyB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERhdGEgdW5hIGxpc3RhIGRpIG9nZ2V0dGkgZ2VuZXJhIGdsaSBoZWFkZXIgcGVyIGwnZXNwb3J0YXppb25lIGUgaW50ZWdyYSBvZ25pIG9nZ2V0dG8gY29uIGxlIHByb3ByaWV0w6AgZXNwb3J0YWJpbGkgZGFsbGEgbGlicmVyaWEgKipAY3RybC9uZ3gtY3N2KipcclxuICAgKiBcclxuICAgKiBAcGFyYW0ge2FueVtdfSBvYmpzIE9nZ2V0dGkgZGEgZXNwb3J0YXJlXHJcbiAgICogXHJcbiAgICogQHJldHVybnMge0NzdkhlYWRlcnNbXX0gSGVhZGVyIGRpIGVzcG9ydGF6aW9uZSBnacOgIG9yZGluYXRpIGNvcnJldHRhbWVudGVcclxuICAgKi9cclxuICBwdWJsaWMgc2V0dXBGb3JFeHBvcnQob2JqczogYW55W10sIGNvbHVtbnM6IHN0cmluZ1tdID0gW10pOiBDc3ZIZWFkZXJzW10ge1xyXG4gICAgbGV0IGhlYWRlcnM6IENzdkhlYWRlcnNbXSA9IFtdO1xyXG4gICAgbGV0IGhlYWRlcnNDYWNoZSA9IHt9O1xyXG5cclxuICAgIGlmICghb2JqcyB8fCBvYmpzLmxlbmd0aCA9PSAwKVxyXG4gICAgICByZXR1cm4gaGVhZGVycztcclxuXHJcbiAgICAvLyBEZXZvIHBlciBmb3J6YSBmYXJsbyBwZXIgdHV0dGkgZ2xpIG9nZ2V0dGkgZGF0byBjaGUgZGV2byBlc3BvcnJlIGxlIHByb3ByaWV0w6AgY2hlIG1pIHNlcnZvbm8gZGEgZXNwb3J0YXJlXHJcbiAgICAvLyBHbGkgaGVhZGVyIGxpIHJhY2NvbGdvIHR1dHRpIHBvaSBmYWNjaW8gdWFuIGRpc3RpbmN0IGluIG1vZG8gZGEgZXNwb3J0YXJlIHR1dHRlIGxlIHByb3ByaWV0w6AgcGVyIGJlbmVcclxuICAgIGxldCBjb2x1bW5TZWxlY3Rpb25EaWN0aW9uYXJ5OiB7IFtpZDogc3RyaW5nXTogdHJ1ZSB9ID0ge307XHJcblxyXG4gICAgaWYgKGNvbHVtbnM/Lmxlbmd0aCA+IDApXHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29sdW1ucz8ubGVuZ3RoOyBpKyspXHJcbiAgICAgICAgY29sdW1uU2VsZWN0aW9uRGljdGlvbmFyeVtjb2x1bW5zW2ldXSA9IHRydWU7XHJcblxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBvYmpzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGxldCBoZHMgPSB0aGlzLnBhcnNlQW5kR2V0SGVhZGVycyhvYmpzW2ldLCBjb2x1bW5TZWxlY3Rpb25EaWN0aW9uYXJ5KTtcclxuICAgICAgLy8gQWdnaXVuZ28gZ2xpIGhlYWRlciBmYWNlbmRvIGluIG1vZG8gZGkgbm9uIGFnZ2l1bmdlcm5lIG1haSBkdWUgdWd1YWxpIHBlciBub24gZG92ZXIgZmFyZSB1bmEgZGlzdGluY3QgZG9wb1xyXG4gICAgICAvLyBjaGUgY29zdGVyZWJiZSBjb211bnF1ZSByaXNvcnNlLiBVdGlsaXp6byB1biBkaXppb25hcmlvIGQnYXBwb2dnaW8gcGVyIGxvb2t1cCBpc3RhbnRhbmVpXHJcbiAgICAgIGZvciAobGV0IGsgPSAwOyBrIDwgaGRzLmxlbmd0aDsgaysrKSB7XHJcbiAgICAgICAgaWYgKCFoZWFkZXJzQ2FjaGVbaGRzW2tdLmtleV0pIHtcclxuICAgICAgICAgIGhlYWRlcnNDYWNoZVtoZHNba10ua2V5XSA9IHRydWU7XHJcbiAgICAgICAgICBoZWFkZXJzLnB1c2goaGRzW2tdKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAoIWNvbHVtbnMgfHwgY29sdW1ucy5sZW5ndGggPT0gMClcclxuICAgICAgcmV0dXJuIGhlYWRlcnMuc29ydCgoYSwgYikgPT4gYS5vcmRlciAtIGIub3JkZXIpO1xyXG4gICAgZWxzZSB7XHJcbiAgICAgIC8vIFNlIG1pIGFycml2YSBsYSBsaXN0YSBkaSBjb2xvbm5lIG5vbiBtaSBkw6Agc29sbyBsYSB2aXNpYmlsaXTDoCwgbWEgYW5jaGUgbCdvcmRpbmFtZW50b1xyXG4gICAgICAvLyBsZSBlc3BvcnRvIGRpIGNvbnNlZ3VlbnphXHJcbiAgICAgIGxldCBvcmRlcmVkSGVhZGVycyA9IFtdO1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbHVtbnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBsZXQgdGhpc0lkID0gY29sdW1uc1tpXTtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGhlYWRlcnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIGlmIChoZWFkZXJzW2ldLnByb3BLZXkgPT0gdGhpc0lkKSB7XHJcbiAgICAgICAgICAgIG9yZGVyZWRIZWFkZXJzLnB1c2goaGVhZGVyc1tpXSk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gb3JkZXJlZEhlYWRlcnM7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBEYXRhIHVuYSBsaXN0YSBkaSBvZ2dldHRpIGdlbmVyaWNpIGdlbmVyYSBnbGkgaGVhZGVyIHBlciBsJ2VzcG9ydGF6aW9uZSBlIGludGVncmEgb2duaSBvZ2dldHRvIGNvbiBsZSBwcm9wcmlldMOgIGVzcG9ydGFiaWxpIGRhbGxhIGxpYnJlcmlhICoqQGN0cmwvbmd4LWNzdioqXHJcbiAgICogXHJcbiAgICogQHBhcmFtIHtHZW5lcmljSXRlbVtdfSBvYmpzIE9nZ2V0dGkgZ2VuZXJpY2kgZGEgZXNwb3J0YXJlXHJcbiAgICogQHBhcmFtIHtDc3ZIZWFkZXJzW119IGNvbHVtbnMgQ29sb25uZSByaWNoaWVzdGUgZGFsbCdlc3BvcnRhemlvbmVcclxuICAgKiBcclxuICAgKiBAcmV0dXJucyB7Q3N2SGVhZGVyc1tdfSBIZWFkZXIgZGkgZXNwb3J0YXppb25lIGdpw6Agb3JkaW5hdGkgY29ycmV0dGFtZW50ZVxyXG4gICAqL1xyXG4gIHB1YmxpYyBzZXR1cEZvckdlbmVyaWNFeHBvcnQob2JqczogR2VuZXJpY0l0ZW1bXSwgY29sdW1uczogQ3N2SGVhZGVyc1tdKTogQ3N2SGVhZGVyc1tdIHtcclxuICAgIGxldCBoZWFkZXJzOiBDc3ZIZWFkZXJzW10gPSBbXTtcclxuICAgIGlmICghb2JqcyB8fCBvYmpzLmxlbmd0aCA9PSAwKVxyXG4gICAgICByZXR1cm4gaGVhZGVycztcclxuXHJcbiAgICAvLyBEZXZvIHBlciBmb3J6YSBmYXJsbyBwZXIgdHV0dGkgZ2xpIG9nZ2V0dGkgZGF0byBjaGUgZGV2byBlc3BvcnJlIGxlIHByb3ByaWV0w6AgY2hlIG1pIHNlcnZvbm8gZGEgZXNwb3J0YXJlXHJcbiAgICBvYmpzLmZvckVhY2goKG9iaiwgaW5kZXgpID0+IHtcclxuICAgICAgaWYgKGluZGV4ID09IDApXHJcbiAgICAgICAgaGVhZGVycyA9IHRoaXMucGFyc2VBbmRHZXRHZW5lcmljSGVhZGVycyhvYmosIGNvbHVtbnMpO1xyXG4gICAgICBlbHNlXHJcbiAgICAgICAgdGhpcy5wYXJzZUFuZEdldEdlbmVyaWNIZWFkZXJzKG9iaiwgY29sdW1ucyk7XHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gaGVhZGVycztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERhdG8gdW4gb2dnZXR0byBnZW5lcmljbyBnZW5lcmEgZ2xpIGhlYWRlciBwZXIgbCdlc3BvcnRhemlvbmUgZSBsbyBpbnRlZ3JhIGNvbiBsZSBwcm9wcmlldMOgIGVzcG9ydGFiaWxpIGRhbGxhIGxpYnJlcmlhICoqQGN0cmwvbmd4LWNzdioqXHJcbiAgICogXHJcbiAgICogTWV0b2RvIGludGVybm8gcmljaGlhbWF0byBkYSAqKnNldHVwRm9yR2VuZXJpY0V4cG9ydCoqXHJcbiAgICogXHJcbiAgICogQHBhcmFtIHtHZW5lcmljSXRlbX0gb2JqIE9nZ2V0dG8gZ2VuZXJpY28gZGEgZXNwb3J0YXJlXHJcbiAgICogQHBhcmFtIHtDc3ZDb2x1bW5bXX0gY29sdW1ucyBDb2xvbm5lIHJpY2hpZXN0ZSBkYWxsJ2VzcG9ydGF6aW9uZVxyXG4gICAqIFxyXG4gICAqIEByZXR1cm5zIHtDc3ZIZWFkZXJzW119IEhlYWRlciBkaSBlc3BvcnRhemlvbmUgZ2nDoCBvcmRpbmF0aSBjb3JyZXR0YW1lbnRlXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBwYXJzZUFuZEdldEdlbmVyaWNIZWFkZXJzKG9iajogR2VuZXJpY0l0ZW0sIGNvbHVtbnM6IENzdkhlYWRlcnNbXSk6IENzdkhlYWRlcnNbXSB7XHJcbiAgICBpZiAoIW9iai5wcm9wZXJ0aWVzKVxyXG4gICAgICByZXR1cm4gbnVsbDtcclxuXHJcbiAgICB2YXIgaGVhZGVyczogQ3N2SGVhZGVyc1tdID0gW107XHJcblxyXG4gICAgLy9NaXJhY2xlIGluY29taW5nXHJcbiAgICBjb2x1bW5zLmZvckVhY2godCA9PiB7XHJcbiAgICAgIHZhciBwcm9wVmFsdWUgPSBvYmoucHJvcGVydGllc1t0LmtleV07XHJcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIHQua2V5ICsgXCJfZXhwXCIsIHsgdmFsdWU6IHByb3BWYWx1ZSwgd3JpdGFibGU6IGZhbHNlLCBlbnVtZXJhYmxlOiB0cnVlIH0pO1xyXG4gICAgICBoZWFkZXJzLnB1c2goeyBsYWJlbDogdC5sYWJlbCwga2V5OiB0LmtleSArIFwiX2V4cFwiLCBvcmRlcjogdC5vcmRlciwgdHlwZTogdC50eXBlLCBwcm9wS2V5OiBudWxsIH0pO1xyXG4gICAgfSk7XHJcblxyXG4gICAgLy9UaXJhdGkgZnVvcmkgdHV0dGkgZ2xpIGhlYWRlciBmYWNjaW8gc29ydCBzdWxsJ29yZGluYW1lbnRvXHJcbiAgICByZXR1cm4gaGVhZGVycy5zb3J0KChhLCBiKSA9PiB7IHJldHVybiBhLm9yZGVyIC0gYi5vcmRlciB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERhdG8gdW4gb2dnZXR0byBnZW5lcmEgZ2xpIGhlYWRlciBwZXIgbCdlc3BvcnRhemlvbmUgZSBsbyBpbnRlZ3JhIGNvbiBsZSBwcm9wcmlldMOgIGVzcG9ydGFiaWxpIGRhbGxhIGxpYnJlcmlhICoqQGN0cmwvbmd4LWNzdioqXHJcbiAgICogXHJcbiAgICogTWV0b2RvIGludGVybm8gcmljaGlhbWF0byBkYSAqKnNldHVwRm9yRXhwb3J0KipcclxuICAgKiBcclxuICAgKiBAcGFyYW0ge2FueX0gb2JqIE9nZ2V0dG8gZ2VuZXJpY28gZGEgZXNwb3J0YXJlXHJcbiAgICogXHJcbiAgICogQHJldHVybnMge0NzdkhlYWRlcnNbXX0gSGVhZGVyIGRpIGVzcG9ydGF6aW9uZSBnacOgIG9yZGluYXRpIGNvcnJldHRhbWVudGVcclxuICAgKi9cclxuICBwcml2YXRlIHBhcnNlQW5kR2V0SGVhZGVycyhvYmo6IGFueSwgY29sdW1uc1NlbGVjdGlvbj86IHsgW2lkOiBzdHJpbmddOiB0cnVlIH0pOiBDc3ZIZWFkZXJzW10ge1xyXG4gICAgdmFyIGhlYWRlcnM6IENzdkhlYWRlcnNbXSA9IFtdO1xyXG5cclxuICAgIC8vIE1pcmFjbGUgaW5jb21pbmdcclxuICAgIGxldCBleHBvcnRQcm9wcyA9IG9ialtleHBvcnRMaXN0XSB8fCBbXTtcclxuICAgIGlmIChleHBvcnRQcm9wcy5sZW5ndGggPT0gMClcclxuICAgICAgY29uc29sZS53YXJuKFwiW0Blc2ZhZW56YS9leHRlbnNpb25zXSBOZXNzdW5hIGNvbG9ubmEgY29uZmlndXJhdGEgZGEgZXNwb3J0YXJlIVwiKTtcclxuXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGV4cG9ydFByb3BzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGxldCBwcm9wID0gZXhwb3J0UHJvcHNbaV07XHJcbiAgICAgIGxldCBwcm9wQmFzZSA9IFwiXCI7XHJcbiAgICAgIGxldCB0b0NhbGw6IEZ1bmN0aW9uO1xyXG4gICAgICBpZiAocHJvcC5lbmRzV2l0aChsaXN0Q3N2SGRyUHJlZml4KSkge1xyXG4gICAgICAgIHByb3BCYXNlID0gcHJvcC5yZXBsYWNlKGxpc3RDc3ZIZHJQcmVmaXgsICcnKTtcclxuICAgICAgICB0b0NhbGwgPSB0aGlzLnBhcnNlTGlzdC5iaW5kKHRoaXMpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKHByb3AuZW5kc1dpdGgoZGljdGlvbmFyeUNzdkhkclByZWZpeCkpIHtcclxuICAgICAgICB0b0NhbGwgPSB0aGlzLnBhcnNlRGljdGlvbmFyeS5iaW5kKHRoaXMpO1xyXG4gICAgICAgIHByb3BCYXNlID0gcHJvcC5yZXBsYWNlKGRpY3Rpb25hcnlDc3ZIZHJQcmVmaXgsICcnKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmIChwcm9wLmVuZHNXaXRoKGNzdlZpc1ByZWZpeCkpIHtcclxuICAgICAgICBwcm9wQmFzZSA9IHByb3AucmVwbGFjZShjc3ZWaXNQcmVmaXgsICcnKTtcclxuICAgICAgICBpZiAodHlwZW9mIG9ialtwcm9wQmFzZSArIGNzdlZhbHVlTmF2aWdhdG9yXSAhPT0gXCJ1bmRlZmluZWRcIilcclxuICAgICAgICAgIHRvQ2FsbCA9IHRoaXMucGFyc2VPYmplY3QuYmluZCh0aGlzKTtcclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICB0b0NhbGwgPSB0aGlzLnBhcnNlUHJvcGVydHkuYmluZCh0aGlzKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHRvQ2FsbClcclxuICAgICAgICB0b0NhbGwob2JqLCBwcm9wQmFzZSwgaGVhZGVycywgY29sdW1uc1NlbGVjdGlvbik7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGhlYWRlcnM7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZXR1cCBwZXIgbCdlc3BvcnRhemlvbmUgZGkgdW5hIHNpbmdvbGEgcHJvcHJpZXTDoC4gXHJcbiAgICogVmllbmUgZ2VuZXJhdG8gbCdoZWFkZXIgZSBsYSBwcm9wcmlldMOgIHJlbGF0aXZhIGFsIHZhbG9yZSBmb3JtYXR0YXRvIG8gbm9cclxuICAgKiBcclxuICAgKiBAcGFyYW0ge2FueX0gb2JqIE9nZ2V0dG8gZGkgY3VpIGVzcG9ydGFyZSBsYSBwcm9wcmlldMOgICoqcHJvcCoqXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IHByb3AgUHJvcHJpZXTDoCBkYSBlc3BvcnRhcmVcclxuICAgKiBAcGFyYW0ge0NzdkhlYWRlcnN9IGhlYWRlcnMgQ29udGVuaXRvcmUgZGVnbGkgaGVhZGVyLCB2ZXJyw6AgcmllbXBpdG8gZGEgcXVlc3RhIGZ1bnppb25lIFxyXG4gICAqL1xyXG4gIHByaXZhdGUgcGFyc2VQcm9wZXJ0eShvYmo6IGFueSwgcHJvcDogc3RyaW5nLCBoZWFkZXJzOiBDc3ZIZWFkZXJzW10sIGNvbHVtbnNTZWxlY3Rpb24/OiB7IFtpZDogc3RyaW5nXTogdHJ1ZSB9KSB7XHJcbiAgICBsZXQgdG9FbWl0OiBib29sZWFuID0gb2JqW3Byb3AgKyBjc3ZWaXNQcmVmaXhdO1xyXG4gICAgbGV0IGZvcm1hdDogc3RyaW5nID0gb2JqW3Byb3AgKyBjc3ZGb3JtYXRQcmVmaXhdO1xyXG4gICAgbGV0IHByb3BLZXkgPSBvYmpbcHJvcCArIGNzdlByb3BLZXldO1xyXG5cclxuICAgIGlmIChwcm9wS2V5ICYmICFjb2x1bW5zU2VsZWN0aW9uW3Byb3BLZXldICYmIE9iamVjdC5rZXlzKGNvbHVtbnNTZWxlY3Rpb24pLmxlbmd0aCA+IDApIHtcclxuICAgICAgY29uc29sZS5sb2coXCJbQGVzZmFlbnphL2V4dGVuc2lvbnNdIENvbG9ubmEgZGEgbm9uIGVzcG9ydGFyZTogXCIgKyBwcm9wS2V5KTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBsYmwgPSBvYmpbcHJvcCArIGNzdkhkclByZWZpeF07XHJcbiAgICBsZXQgb3JkZXIgPSBvYmpbcHJvcCArIGNzdk9yZFByZWZpeF07XHJcbiAgICBpZiAodG9FbWl0ICYmIGxibCAhPT0gXCJ1bmRlZmluZWRcIikge1xyXG4gICAgICAvLyBTZSBub24gaG8gdW4gZm9ybWF0byBlc3BvcnRvIGRpcmV0dGFtZW50ZVxyXG4gICAgICBpZiAoIWZvcm1hdCkge1xyXG4gICAgICAgIC8vIFNlIMOoIHVuIGZvcm1hdG8gZGF0YSBtaSBhc3NpY3VybyBkaSBub24gc3RhbXBhcmUgbWFpIHVuYSBkYXRhIDAwOjAwOjAwIGFsdHJpbWVudGkgaW4gZXNwb3J0YXppb25lIHZpZW5lIHVubyBzY2hpZm9cclxuICAgICAgICB2YXIgdmFsID0gb2JqW3Byb3BdID8gdGhpcy5kYXRlcy50cmltU2Vjb25kcyhvYmpbcHJvcF0udG9TdHJpbmcoKSkgOiBcIlwiO1xyXG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIHByb3AgKyBcIl9ub2ZtdFwiLCB7IHZhbHVlOiB2YWwsIHdyaXRhYmxlOiBmYWxzZSwgZW51bWVyYWJsZTogdHJ1ZSB9KTtcclxuICAgICAgICBoZWFkZXJzLnB1c2goeyBsYWJlbDogbGJsID8gbGJsIDogcHJvcCArIFwiX25vZm10XCIsIGtleTogcHJvcCArIFwiX25vZm10XCIsIG9yZGVyOiBvcmRlciwgdHlwZTogXCJzdHJpbmdcIiwgcHJvcEtleTogcHJvcEtleSB9KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICAvLyBDYXNvIGZvcm1hdG8gbnVtZXJpY29cclxuICAgICAgICBpZiAoZm9ybWF0ID09IFwiRlwiKSB7XHJcbiAgICAgICAgICAvLyBDaGVjayBjb25zaWRlcmFuZG8gbGEgcG9zc2liaWxpdMOgIGRpIHplcmlcclxuICAgICAgICAgIGxldCB2YWwgPSBvYmpbcHJvcF0gIT0gbnVsbCA/IG9ialtwcm9wXS50b1N0cmluZygpIDogXCJcIjtcclxuICAgICAgICAgIC8vIEVsaW1pbm8gdHV0dGUgbGUgdmlyZ29sZSAoaW5kaWNhdG9yaSBkaSBtaWdsaWFpYSBwZXIgbGEgY3VsdHVyZSBkZWZhdWx0IGVuLVVTKVxyXG4gICAgICAgICAgdmFsID0gdmFsLnJlcGxhY2UoLywvLCBcIlwiKTtcclxuICAgICAgICAgIC8vIElsIHNpbmdvbG8gcHVudG8gY2hlIGMnw6gsIHNlIHByZXNlbnRlIChzZXBhcmF0b3JlIGRlY2ltYWxpKSBsbyB0cmFzZm9ybW8gaW4gdmlyZ29sYVxyXG4gICAgICAgICAgbGV0IHZhbENvbnZlcnRlZCA9IHZhbC5yZXBsYWNlKFwiLlwiLCBcIixcIik7XHJcblxyXG4gICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwgcHJvcCArIFwiX2ZtdFwiLCB7IHZhbHVlOiB2YWxDb252ZXJ0ZWQsIHdyaXRhYmxlOiBmYWxzZSwgZW51bWVyYWJsZTogdHJ1ZSB9KTtcclxuICAgICAgICAgIGhlYWRlcnMucHVzaCh7IGxhYmVsOiBsYmwgPyBsYmwgOiBwcm9wICsgXCJfZm10XCIsIGtleTogcHJvcCArIFwiX2ZtdFwiLCBvcmRlcjogb3JkZXIsIHR5cGU6IFwibnVtYmVyXCIsIHByb3BLZXk6IHByb3BLZXkgfSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIC8vIFNlIGhvIHVuIGZvcm1hdG8gZGF0YSB0cmFzZm9ybW8gaW4gZGF5anMsIGZvcm1hdHRvIGVkIGVzcG9ydG9cclxuICAgICAgICAgIC8vIFBlciBsYSB0cmFzZm9ybWF6aW9uZSBpbiBkYXlqcyBwcm92byBwcmltYSBhIHBhc3NhcmdsaSBsYSBzdHJpbmdhIGRpIG5ldHRvLCBzcGVyYW5kbyBsYSByaWNvbm9zY2FcclxuICAgICAgICAgIC8vIFNlIG5vbiBmdW56aW9uYSBwcm92byBhIGRlZmluaXJnbGkgbGEgZm9ybWF0dGF6aW9uZSBzdGFuZGFyZCBkZWwgbWV0ZXJpbmcgcGVyIHF1ZWwgbGluZ3VhZ2dpb1xyXG4gICAgICAgICAgbGV0IHZhbCA9IHRoaXMuZGF0ZXMuZ2V0Rm9ybWF0dGVkKG9ialtwcm9wXSwgZm9ybWF0Lmxlbmd0aCA8PSAxMCwgZm9ybWF0Lmxlbmd0aCA+IDE2KTtcclxuICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIHByb3AgKyBcIl9mbXRcIiwgeyB2YWx1ZTogdmFsID8/IFwiXCIsIHdyaXRhYmxlOiBmYWxzZSwgZW51bWVyYWJsZTogdHJ1ZSB9KTtcclxuICAgICAgICAgIGhlYWRlcnMucHVzaCh7IGxhYmVsOiBsYmwgPyBsYmwgOiBwcm9wICsgXCJfZm10XCIsIGtleTogcHJvcCArIFwiX2ZtdFwiLCBvcmRlcjogb3JkZXIsIHR5cGU6IFwiZGF0ZVwiLCBwcm9wS2V5OiBwcm9wS2V5IH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2V0dXAgcGVyIGwnZXNwb3J0YXppb25lIGRpIHVuYSBzaW5nb2xhIHByb3ByaWV0w6AgZGEgdW4gb2dnZXR0by4gXHJcbiAgICogVmllbmUgZ2VuZXJhdG8gbCdoZWFkZXIgZSBsYSBwcm9wcmlldMOgIHJlbGF0aXZhIGFsIHZhbG9yZSBmb3JtYXR0YXRvIG8gbm8uIFxyXG4gICAqIFxyXG4gICAqIFBlciBvdHRlbmVyZSBpbCB2YWxvcmUgZSBsJ2hlYWRlciBkZWxsYSBwcm9wcmlldMOgIHZlbmdvbm8gdXRpbGl6emF0aSBpIG5hdmlnYXRvcmkgYXV0by1nZW5lcmF0aSBuZWwgZGVjb3JhdG9yZSAqKkV4cG9ydEFzKipcclxuICAgKiBcclxuICAgKiBAcGFyYW0ge2FueX0gb2JqIE9nZ2V0dG8gZGkgY3VpIGVzcG9ydGFyZSBsYSBwcm9wcmlldMOgICoqcHJvcCoqXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IHByb3AgUHJvcHJpZXTDoCBkYSBlc3BvcnRhcmVcclxuICAgKiBAcGFyYW0ge0NzdkhlYWRlcnN9IGhlYWRlcnMgQ29udGVuaXRvcmUgZGVnbGkgaGVhZGVyLCB2ZXJyw6AgcmllbXBpdG8gZGEgcXVlc3RhIGZ1bnppb25lIFxyXG4gICAqL1xyXG4gIHByaXZhdGUgcGFyc2VPYmplY3Qob2JqOiBhbnksIHByb3A6IHN0cmluZywgaGVhZGVyczogQ3N2SGVhZGVyc1tdKSB7XHJcbiAgICAvL3NlIHF1ZXN0YSBwcm9wcmlldMOgIGhhIHVuIG5hdmlnYXRvciBzaWduaWZpY2EgY2hlIGRlcml2YSBkYSB1biBvZ2dldHRvIGludGVybm8sIHJlY3VwZXJvIGlsIHZhbG9yZSBpbiBxdWVzdGEgZmFzZSBkYXRvIGNoZSBwcmltYSBub24gY2UgbCdob1xyXG4gICAgbGV0IHZhbHVlbmF2aWdhdG9yID0gb2JqW3Byb3AgKyBjc3ZWYWx1ZU5hdmlnYXRvcl07XHJcblxyXG4gICAgLy9Fcy4gZGkgdmFsdWVuYXZpZ2F0b3Igb2JqLnN1Ym9iai5zdWJzdWJvYmoucHJvcGVydHlcclxuICAgIGxldCBqbXBzID0gdmFsdWVuYXZpZ2F0b3Iuc3BsaXQoXCIuXCIpO1xyXG4gICAgLy9NaSBjbG9ubyBsJ29nZ2V0dG8gb3JpZ2luYWxlIHBlciBub24gdWNjaWRlcmdsaSBpIHJpZmVyaW1lbnRpXHJcbiAgICBsZXQgY2xvbmUgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KG9iaikpO1xyXG4gICAgLy9TYWx0byByaWNvcnNpdmFtZW50ZSBzdSBtZSBzdGVzc28gcGVyIGFycml2YXJlIGFsbGEgcHJvcHJpZXTDoFxyXG4gICAgLy9TYWx0byAxID4gZGl2ZW50YSBvYmpcclxuICAgIC8vU2FsdG8gMiA+IGRpdmVudGEgb2JqLnN1Ym9ialxyXG4gICAgLy9lY2MuLi5cclxuICAgIGptcHMuZm9yRWFjaChwcCA9PiB7IGNsb25lID0gY2xvbmVbcHBdOyB9KTtcclxuXHJcbiAgICAvL1ZhbG9yZSBmaW5hbGUgOkRcclxuICAgIGxldCB2YWx1ZSA9IGNsb25lO1xyXG4gICAgbGV0IGxibCA9IG9ialtwcm9wICsgY3N2SGRyUHJlZml4XTtcclxuICAgIGxldCBvcmRlciA9IG9ialtwcm9wICsgY3N2T3JkUHJlZml4XTtcclxuXHJcbiAgICAvL1NlIHBlciBxdWVzdGEgcHJvcHJpZXTDoCBobyB1biBmb3JtYXRvIGxvIGFwcGxpY29cclxuICAgIGxldCBmb3JtYXQ6IHN0cmluZyA9IG9ialtwcm9wICsgY3N2Rm9ybWF0UHJlZml4XTtcclxuICAgIGxldCB0eXBlOiAnc3RyaW5nJyB8ICdudW1iZXInIHwgJ2RhdGUnID0gXCJzdHJpbmdcIjtcclxuICAgIGlmIChmb3JtYXQgPT0gXCJGXCIpIHtcclxuICAgICAgbGV0IHZhbCA9IHZhbHVlLnRvU3RyaW5nKCk7XHJcbiAgICAgIHZhbCA9IHZhbC5yZXBsYWNlKC8sLywgXCJcIik7XHJcbiAgICAgIHZhbHVlID0gdmFsLnJlcGxhY2UoXCIuXCIsIFwiLFwiKTtcclxuICAgICAgdHlwZSA9IFwibnVtYmVyXCI7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChmb3JtYXQpIHtcclxuICAgICAgdmFsdWUgPSB0aGlzLmRhdGVzLmdldEZvcm1hdHRlZCh2YWx1ZSwgZm9ybWF0Lmxlbmd0aCA8PSAxMCwgZm9ybWF0Lmxlbmd0aCA+IDE2KTtcclxuICAgICAgdHlwZSA9IFwiZGF0ZVwiO1xyXG4gICAgfVxyXG5cclxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIHByb3AsIHsgdmFsdWU6IHZhbHVlID8/IFwiXCIsIHdyaXRhYmxlOiBmYWxzZSwgZW51bWVyYWJsZTogdHJ1ZSB9KTtcclxuICAgIGhlYWRlcnMucHVzaCh7IGxhYmVsOiBsYmwgPyBsYmwgOiBwcm9wLCBrZXk6IHByb3AsIG9yZGVyOiBvcmRlciwgdHlwZTogdHlwZSwgcHJvcEtleTogbnVsbCB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldHVwIHBlciBsJ2VzcG9ydGF6aW9uZSBkaSB1bmEgbGlzdGEgZGkgdmFsb3JpIHBpdm90dGF0aSBkaW5hbWljYW1lbnRlOlxyXG4gICAqIFxyXG4gICAqID0+IFJlY3VwZXJvIGlsIHZhbG9yZSB1dGlsaXp6YW5kbyBpIG5hdmlnYXRvcmlcclxuICAgKiBcclxuICAgKiA9PiBSZWN1cGVybyBsJ2hlYWRlciB1dGlsaXp6YW5kbyBpIG5hdmlnYXRvcmlcclxuICAgKiBcclxuICAgKiA9PiBDb24gaWwgdmFsb3JlIGNpIGNyZW8gbGEgcHJvcGVydHlcclxuICAgKiBcclxuICAgKiA9PiBDb24gbCdoZWFkZXIgZSBpbCByaWZlcmltZW50byBhbGxhIHByb3BlcnR5IGFwcGVuYSBjcmVhdGEgY3JlbyB1biByZWNvcmQgbmVnbGkgaGVhZGVyIGRhIGVzcG9ydGFyZVxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSB7YW55fSBvYmogT2dnZXR0byBkaSBjdWkgZXNwb3J0YXJlIGxhIHByb3ByaWV0w6AgKipwcm9wKipcclxuICAgKiBAcGFyYW0ge3N0cmluZ30gcHJvcCBQcm9wcmlldMOgIGRhIGVzcG9ydGFyZVxyXG4gICAqIEBwYXJhbSB7Q3N2SGVhZGVyc30gaGVhZGVycyBDb250ZW5pdG9yZSBkZWdsaSBoZWFkZXIsIHZlcnLDoCByaWVtcGl0byBkYSBxdWVzdGEgZnVuemlvbmUgXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBwYXJzZUxpc3Qob2JqOiBhbnksIHByb3A6IHN0cmluZywgaGVhZGVyczogQ3N2SGVhZGVyc1tdKSB7XHJcbiAgICBsZXQgaGVhZGVybmF2aWdhdG9yID0gb2JqW3Byb3AgKyBsaXN0Q3N2SGRyUHJlZml4XTtcclxuICAgIGxldCB2YWx1ZW5hdmlnYXRvciA9IG9ialtwcm9wICsgbGlzdENzdlZhbFByZWZpeF07XHJcbiAgICBsZXQgdmFsdWVmb3JtYXQgPSBvYmpbcHJvcCArIGxpc3RDc3ZWYWxGb3JtYXRdO1xyXG4gICAgbGV0IG9yZGVyID0gb2JqW3Byb3AgKyBjc3ZPcmRQcmVmaXhdO1xyXG5cclxuICAgIHZhciBqdW1wczogc3RyaW5nW10sIHRtcFJlczogYW55O1xyXG4gICAgdmFyIG9ianM6IGFueVtdID0gb2JqW3Byb3BdO1xyXG5cclxuICAgIGZvciAobGV0IGlkeCA9IDA7IGlkeCA8IG9ianMubGVuZ3RoOyBpZHgrKykge1xyXG4gICAgICBsZXQgbGlzdGl0ZW0gPSBvYmpzW2lkeF07XHJcblxyXG4gICAgICB2YXIgaGVhZGVyc3BsaXQgPSBoZWFkZXJuYXZpZ2F0b3Iuc3BsaXQoXCIgXCIpO1xyXG4gICAgICB2YXIgaGVhZGVyID0gXCJcIjtcclxuXHJcbiAgICAgIC8vIFBlciBsJ2hlYWRlciBzaSBjb25zaWRlcmEgYSBzZSBzdGFudGUgb2duaSBwZXp6byBzZXBhcmF0byBkYSBzcGF6aW8gcGVyIGZhcmUgbGUgY29uY2F0ZW5hemlvbmlcclxuICAgICAgaGVhZGVyc3BsaXQuZm9yRWFjaChwciA9PiB7XHJcbiAgICAgICAganVtcHMgPSBwci5zcGxpdChcIi5cIik7XHJcbiAgICAgICAgdG1wUmVzID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShsaXN0aXRlbSkpO1xyXG4gICAgICAgIGp1bXBzLmZvckVhY2gocHAgPT4geyB0bXBSZXMgPSB0bXBSZXNbcHBdOyB9KTtcclxuXHJcbiAgICAgICAgaWYgKCFoZWFkZXIpIGhlYWRlciA9IHRtcFJlcztcclxuICAgICAgICBlbHNlIGhlYWRlciArPSBcIiBcIiArIHRtcFJlcztcclxuICAgICAgfSk7XHJcblxyXG4gICAgICBqdW1wcyA9IHZhbHVlbmF2aWdhdG9yLnNwbGl0KFwiLlwiKTtcclxuICAgICAgdG1wUmVzID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShsaXN0aXRlbSkpO1xyXG4gICAgICBqdW1wcy5mb3JFYWNoKHBwID0+IHsgdG1wUmVzID0gdG1wUmVzW3BwXTsgfSk7XHJcbiAgICAgIGxldCB2YWx1ZSA9IHRtcFJlcztcclxuXHJcbiAgICAgIGxldCB0eXBlOiAnc3RyaW5nJyB8ICdudW1iZXInIHwgJ2RhdGUnID0gXCJzdHJpbmdcIjtcclxuICAgICAgaWYgKHZhbHVlZm9ybWF0ID09IFwiRlwiKSB7XHJcbiAgICAgICAgbGV0IHZhbCA9IHZhbHVlICE9IG51bGwgPyB2YWx1ZS50b1N0cmluZygpIDogXCJcIjtcclxuICAgICAgICB2YWwgPSB2YWwucmVwbGFjZSgvLC8sIFwiXCIpO1xyXG4gICAgICAgIHZhbHVlID0gdmFsLnJlcGxhY2UoXCIuXCIsIFwiLFwiKTtcclxuICAgICAgICB0eXBlID0gXCJudW1iZXJcIjtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmICh2YWx1ZWZvcm1hdCkge1xyXG4gICAgICAgIHZhbHVlID0gdGhpcy5kYXRlcy5nZXRGb3JtYXR0ZWQob2JqW3Byb3BdLCB2YWx1ZWZvcm1hdC5sZW5ndGggPD0gMTAsIHZhbHVlZm9ybWF0Lmxlbmd0aCA+IDE2KTtcclxuICAgICAgICB0eXBlID0gXCJkYXRlXCI7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIHByb3AgKyBpZHgsIHsgdmFsdWU6IHZhbHVlID8/IFwiXCIsIHdyaXRhYmxlOiBmYWxzZSB9KTtcclxuICAgICAgaGVhZGVycy5wdXNoKHsgbGFiZWw6IGhlYWRlciwga2V5OiBwcm9wICsgaWR4LCBvcmRlcjogb3JkZXIgKyBpZHgsIHR5cGU6IHR5cGUsIHByb3BLZXk6IG51bGwgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZXR1cCBwZXIgbCdlc3BvcnRhemlvbmUgZGkgdW5hIGxpc3RhIGRpIHZhbG9yaSBwaXZvdHRhdGkgZGluYW1pY2FtZW50ZTpcclxuICAgKiBcclxuICAgKiA9PiBSZWN1cGVybyBpbCB2YWxvcmUgdXRpbGl6emFuZG8gaSBuYXZpZ2F0b3JpXHJcbiAgICogXHJcbiAgICogPT4gUmVjdXBlcm8gbCdoZWFkZXIgdXRpbGl6emFuZG8gaSBuYXZpZ2F0b3JpXHJcbiAgICogXHJcbiAgICogPT4gQ29uIGlsIHZhbG9yZSBjaSBjcmVvIGxhIHByb3BlcnR5XHJcbiAgICogXHJcbiAgICogPT4gQ29uIGwnaGVhZGVyIGUgaWwgcmlmZXJpbWVudG8gYWxsYSBwcm9wZXJ0eSBhcHBlbmEgY3JlYXRhIGNyZW8gdW4gcmVjb3JkIG5lZ2xpIGhlYWRlciBkYSBlc3BvcnRhcmVcclxuICAgKiBcclxuICAgKiBAcGFyYW0ge2FueX0gb2JqIE9nZ2V0dG8gZGkgY3VpIGVzcG9ydGFyZSBsYSBwcm9wcmlldMOgICoqcHJvcCoqXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IHByb3AgUHJvcHJpZXTDoCBkYSBlc3BvcnRhcmVcclxuICAgKiBAcGFyYW0ge0NzdkhlYWRlcnN9IGhlYWRlcnMgQ29udGVuaXRvcmUgZGVnbGkgaGVhZGVyLCB2ZXJyw6AgcmllbXBpdG8gZGEgcXVlc3RhIGZ1bnppb25lIFxyXG4gICAqL1xyXG4gIHByaXZhdGUgcGFyc2VEaWN0aW9uYXJ5KG9iajogYW55LCBwcm9wOiBzdHJpbmcsIGhlYWRlcnM6IENzdkhlYWRlcnNbXSkge1xyXG4gICAgbGV0IGhlYWRlcm5hdmlnYXRvciA9IG9ialtwcm9wICsgZGljdGlvbmFyeUNzdkhkclByZWZpeF07XHJcbiAgICBsZXQgdmFsdWVuYXZpZ2F0b3IgPSBvYmpbcHJvcCArIGRpY3Rpb25hcnlDc3ZWYWxQcmVmaXhdO1xyXG4gICAgbGV0IG9yZGVyID0gb2JqW3Byb3AgKyBjc3ZPcmRQcmVmaXhdO1xyXG5cclxuICAgIHZhciBqdW1wczogc3RyaW5nW10sIHRtcFJlczogYW55O1xyXG4gICAgdmFyIG9ianM6IGFueVtdID0gb2JqW3Byb3BdO1xyXG5cclxuICAgIGZvciAobGV0IGlkeCA9IDA7IGlkeCA8IG9ianMubGVuZ3RoOyBpZHgrKykge1xyXG4gICAgICBsZXQgbGlzdGl0ZW0gPSBvYmpzW2lkeF07XHJcbiAgICAgIHZhciBoZWFkZXJzcGxpdCA9IGhlYWRlcm5hdmlnYXRvci5zcGxpdChcIiBcIik7XHJcbiAgICAgIHZhciBoZWFkZXIgPSBcIlwiO1xyXG5cclxuICAgICAgaGVhZGVyc3BsaXQuZm9yRWFjaChwciA9PiB7XHJcbiAgICAgICAganVtcHMgPSBwci5zcGxpdChcIi5cIik7XHJcbiAgICAgICAgdG1wUmVzID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShsaXN0aXRlbSkpO1xyXG4gICAgICAgIGp1bXBzLmZvckVhY2gocHAgPT4geyB0bXBSZXMgPSB0bXBSZXNbcHBdOyB9KTtcclxuXHJcbiAgICAgICAgaWYgKCFoZWFkZXIpIGhlYWRlciA9IHRtcFJlcztcclxuICAgICAgICBlbHNlIGhlYWRlciArPSBcIiBcIiArIHRtcFJlcztcclxuICAgICAgfSk7XHJcblxyXG4gICAgICB2YXIgdmFsdWVzcGxpdCA9IHZhbHVlbmF2aWdhdG9yLnNwbGl0KFwiLFwiKTtcclxuICAgICAgdmFsdWVzcGxpdC5mb3JFYWNoKCh0LCBpZHhpbnRlcm5hbCkgPT4ge1xyXG4gICAgICAgIHZhciBuYXZpZyA9IHQuc3BsaXQoXCItXCIpWzFdO1xyXG4gICAgICAgIHZhciBkZXNjID0gdC5zcGxpdChcIi1cIilbMF07XHJcblxyXG4gICAgICAgIGp1bXBzID0gbmF2aWcuc3BsaXQoXCIuXCIpO1xyXG4gICAgICAgIHRtcFJlcyA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkobGlzdGl0ZW0pKTtcclxuICAgICAgICBqdW1wcy5mb3JFYWNoKHBwID0+IHsgdG1wUmVzID0gdG1wUmVzW3BwXTsgfSk7XHJcbiAgICAgICAgbGV0IHZhbHVlID0gdG1wUmVzO1xyXG5cclxuICAgICAgICBsZXQgcHJvcG5hbWUgPSBwcm9wICsgaWR4LnRvU3RyaW5nKCkgKyBpZHhpbnRlcm5hbC50b1N0cmluZygpO1xyXG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIHByb3BuYW1lLCB7IHZhbHVlOiB2YWx1ZSA/PyBcIlwiLCB3cml0YWJsZTogZmFsc2UgfSk7XHJcbiAgICAgICAgaGVhZGVycy5wdXNoKHsgbGFiZWw6IGhlYWRlciArIFwiIFwiICsgZGVzYywga2V5OiBwcm9wbmFtZSwgb3JkZXI6IG9yZGVyICsgaWR4LCB0eXBlOiAnc3RyaW5nJywgcHJvcEtleTogbnVsbCB9KTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNZXRvZG8gY2hlIHNpIG9jY3VwYSBkZWxsYSBkZXNlcmlhbGl6emF6aW9uZSBkZWdsaSBvZ2dldHRpIGRhIGVzcG9ydGFyZS4gTWVzc28gYSBsaXZlbGxvIGRpIGxpYnJlcmlhIGluIG1vZG8gY2hlIHF1YWxvcmEgY2kgZm9zc2UgZGEgY2FtYmlhcmUgbGlicmVyaWEgXHJcbiAgICogdHV0dGUgbGUgbWFudXRlbnppb25pIHNpYW5vIGNvbmNlbnRyYXRlIHF1aVxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSB7YW55W119IGl0ZW1zIE9nZ2V0dGkgZGEgZGVzZXJpYWxpenphcmVcclxuICAgKiBAcGFyYW0ge2FueX0gdHlwZSBUaXBvIGRhIHVzYXJlIGNvbWUgcHJvdG90aXBvIHBlciBsYSBkZXNlcmlhbGl6emF6aW9uZVxyXG4gICAqIFxyXG4gICAqIEByZXR1cm5zIHthbnl9IE9nZ2V0dGkgZGVzZXJpYWxpenphdGlcclxuICAgKi9cclxuICBwdWJsaWMgZGVzZXJpYWxpemVGb3JFeHBvcnQoaXRlbXM6IGFueVtdLCB0eXBlOiBhbnkpOiBhbnkge1xyXG4gICAgcmV0dXJuIERlc2VyaWFsaXplKGl0ZW1zLCB0eXBlKTtcclxuICB9XHJcbn0iXX0=