@eo-sdk/client 9.0.0-rc.4 → 9.0.0-rc.6

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.
Files changed (59) hide show
  1. package/app/eo-client/settings/settings.component.d.ts +34 -4
  2. package/app/eo-framework/app-shell/app-bar/app-bar.component.d.ts +3 -1
  3. package/app/eo-framework/form-elements/form-input/input-focus/input-focus.directive.d.ts +1 -0
  4. package/app/eo-framework/grid/column-configurator/column-configurator.component.d.ts +2 -0
  5. package/app/eo-framework/grid/extensions/filter/setFilters/set-filter.component.d.ts +1 -0
  6. package/app/eo-framework-core/api/grid.service.d.ts +8 -2
  7. package/assets/_default/config/main.json +1 -7
  8. package/assets/_default/i18n/de.json +17 -6
  9. package/assets/_default/i18n/en.json +17 -6
  10. package/bundles/eo-sdk-client-projects-eo-sdk-core.umd.js +73 -28
  11. package/bundles/eo-sdk-client-projects-eo-sdk-core.umd.js.map +1 -1
  12. package/bundles/eo-sdk-client-projects-eo-sdk-core.umd.min.js +2 -2
  13. package/bundles/eo-sdk-client-projects-eo-sdk-core.umd.min.js.map +1 -1
  14. package/bundles/eo-sdk-client.umd.js +260 -94
  15. package/bundles/eo-sdk-client.umd.js.map +1 -1
  16. package/bundles/eo-sdk-client.umd.min.js +1 -1
  17. package/bundles/eo-sdk-client.umd.min.js.map +1 -1
  18. package/eo-sdk-client.d.ts +11 -10
  19. package/eo-sdk-client.metadata.json +1 -1
  20. package/esm2015/app/eo-client/about-state/about-state.component.js +3 -3
  21. package/esm2015/app/eo-client/settings/settings.component.js +118 -10
  22. package/esm2015/app/eo-framework/app-shell/app-bar/app-bar.component.js +11 -4
  23. package/esm2015/app/eo-framework/form-elements/form-input/form-input.component.js +2 -2
  24. package/esm2015/app/eo-framework/form-elements/form-input/input-focus/input-focus.directive.js +7 -3
  25. package/esm2015/app/eo-framework/grid/column-configurator/column-configurator.component.js +31 -6
  26. package/esm2015/app/eo-framework/grid/extensions/filter/setFilters/set-filter.component.js +4 -2
  27. package/esm2015/app/eo-framework/grid/extensions/filter/text/text-filter.component.js +2 -3
  28. package/esm2015/app/eo-framework/grid/filters/list-filter.component.js +2 -2
  29. package/esm2015/app/eo-framework/inbox-details/inbox-details.component.js +5 -1
  30. package/esm2015/app/eo-framework/object-details/object-history/object-history.component.js +4 -3
  31. package/esm2015/app/eo-framework/object-form/object-form/form-element/form-element.component.js +2 -2
  32. package/esm2015/app/eo-framework/result-list/result-list.component.js +3 -3
  33. package/esm2015/app/eo-framework/ui/eo-dialog/eo-dialog.component.js +2 -2
  34. package/esm2015/app/eo-framework/ui/ui.module.js +4 -2
  35. package/esm2015/app/eo-framework/ui/user-avatar/user-avatar.component.js +3 -2
  36. package/esm2015/app/eo-framework-core/api/grid.service.js +11 -5
  37. package/esm2015/app/eo-framework-core/api/plugins.service.js +2 -1
  38. package/esm2015/eo-sdk-client.js +12 -11
  39. package/esm2015/projects/eo-sdk/core/lib/service/auth/auth.service.js +5 -5
  40. package/esm2015/projects/eo-sdk/core/lib/service/backend/backend.service.js +21 -14
  41. package/esm2015/projects/eo-sdk/core/lib/service/config/config.service.js +22 -4
  42. package/esm2015/projects/eo-sdk/core/lib/service/events/events.js +3 -2
  43. package/esm2015/projects/eo-sdk/core/lib/service/search/search-query.model.js +5 -4
  44. package/esm2015/projects/eo-sdk/core/lib/service/search/search.service.js +7 -3
  45. package/esm2015/projects/eo-sdk/core/lib/service/user/user.service.js +17 -3
  46. package/fesm2015/eo-sdk-client-projects-eo-sdk-core.js +72 -28
  47. package/fesm2015/eo-sdk-client-projects-eo-sdk-core.js.map +1 -1
  48. package/fesm2015/eo-sdk-client.js +239 -80
  49. package/fesm2015/eo-sdk-client.js.map +1 -1
  50. package/package.json +2 -2
  51. package/projects/eo-sdk/core/eo-sdk-client-projects-eo-sdk-core.metadata.json +1 -1
  52. package/projects/eo-sdk/core/lib/service/backend/backend.service.d.ts +2 -0
  53. package/projects/eo-sdk/core/lib/service/config/config.service.d.ts +5 -0
  54. package/projects/eo-sdk/core/lib/service/events/events.d.ts +1 -0
  55. package/projects/eo-sdk/core/lib/service/search/search-query.model.d.ts +8 -1
  56. package/projects/eo-sdk/core/lib/service/user/user.service.d.ts +10 -1
  57. package/projects/eo-sdk/core/package.json +1 -1
  58. package/scss/_form.scss +2 -2
  59. package/styles.css +1 -1
@@ -2,11 +2,11 @@
2
2
  * Generated bundle index. Do not edit.
3
3
  */
4
4
  export * from './public_api';
5
- export { EoClientRoutingModule as ɵcr } from './app/eo-client/eo-client-routing.module';
6
- export { InboxStateRoutingModule as ɵcp } from './app/eo-client/inbox-state/inbox-state-routing.module';
7
- export { ObjectStateRoutingModule as ɵco } from './app/eo-client/object-state/object-state-routing.module';
8
- export { PrepareStateRoutingModule as ɵcq } from './app/eo-client/prepare-state/prepare-state-routing.module';
9
- export { ProcessStateComponent as ɵcs } from './app/eo-client/process-state/process-state.component';
5
+ export { EoClientRoutingModule as ɵcs } from './app/eo-client/eo-client-routing.module';
6
+ export { InboxStateRoutingModule as ɵcq } from './app/eo-client/inbox-state/inbox-state-routing.module';
7
+ export { ObjectStateRoutingModule as ɵcp } from './app/eo-client/object-state/object-state-routing.module';
8
+ export { PrepareStateRoutingModule as ɵcr } from './app/eo-client/prepare-state/prepare-state-routing.module';
9
+ export { ProcessStateComponent as ɵct } from './app/eo-client/process-state/process-state.component';
10
10
  export { PendingChangesGuard as ɵa } from './app/eo-framework-core/pending-changes/pending-changes-guard.service';
11
11
  export { PipesModule as ɵe } from './app/eo-framework-core/pipes/pipes.module';
12
12
  export { ActionComponentAnchorDirective as ɵv } from './app/eo-framework/actions/action-menu/action-component-anchor/action-component-anchor.directive';
@@ -59,18 +59,19 @@ export { ReferenceFinderService as ɵo } from './app/eo-framework/form-elements/
59
59
  export { PaginationComponent as ɵs } from './app/eo-framework/grid/extensions/pagination/pagination.component';
60
60
  export { DynamicListFilterComponent as ɵq } from './app/eo-framework/grid/filters/dynamic-list-filter.component';
61
61
  export { ListFilterComponent as ɵr } from './app/eo-framework/grid/filters/list-filter.component';
62
- export { DuetimeInfoComponent as ɵcl } from './app/eo-framework/inbox-details/duetimeInfo/duetimeInfo.component';
63
- export { EditIconComponent as ɵck } from './app/eo-framework/object-details/edit-icon/edit-icon.component';
64
- export { PrepareContentExistsInfoComponent as ɵcm } from './app/eo-framework/prepare-details/prepare-content-exists-info/prepare-content-exists-info.component';
62
+ export { DuetimeInfoComponent as ɵcm } from './app/eo-framework/inbox-details/duetimeInfo/duetimeInfo.component';
63
+ export { EditIconComponent as ɵcl } from './app/eo-framework/object-details/edit-icon/edit-icon.component';
64
+ export { PrepareContentExistsInfoComponent as ɵcn } from './app/eo-framework/prepare-details/prepare-content-exists-info/prepare-content-exists-info.component';
65
65
  export { ProcessFormComponent as ɵu } from './app/eo-framework/process-form/process-form.component';
66
66
  export { ProcessFormModule as ɵt } from './app/eo-framework/process-form/process-form.module';
67
- export { StoredQueryModule as ɵcn } from './app/eo-framework/stored-query';
67
+ export { StoredQueryModule as ɵco } from './app/eo-framework/stored-query';
68
68
  export { TreeNodeComponent as ɵj } from './app/eo-framework/tree/tree-node/tree-node.component';
69
+ export { UserAvatarComponent as ɵcj } from './app/eo-framework/ui';
69
70
  export { IndexdataSummaryEntryComponent as ɵh } from './app/eo-framework/ui/indexdata-summary/indexdata-summary-entry/indexdata-summary-entry.component';
70
71
  export { QueryScopeSelectComponent as ɵg } from './app/eo-framework/ui/query-scope-select/query-scope-select.component';
71
72
  export { UploadOverlayGuard as ɵb } from './app/eo-framework/upload-overlay/upload-overlay-guard.service';
72
73
  export { UnsubscribeOnDestroy as ɵf } from './app/eo-framework/util';
73
74
  export { PreventDoubleClickDirective as ɵci } from './app/eo-framework/util/directive/prevent-double-click.directive';
74
- export { TrapFocusDirective as ɵcj } from './app/eo-framework/util/directive/trap-focus.directive';
75
+ export { TrapFocusDirective as ɵck } from './app/eo-framework/util/directive/trap-focus.directive';
75
76
  export { OrderByPipe as ɵi } from './app/eo-framework/util/sortable/order-by.pipe';
76
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW8tc2RrLWNsaWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9lby1zZGstY2xpZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUM7QUFFN0IsT0FBTyxFQUFDLHFCQUFxQixJQUFJLEdBQUcsRUFBQyxNQUFNLDBDQUEwQyxDQUFDO0FBQ3RGLE9BQU8sRUFBQyx1QkFBdUIsSUFBSSxHQUFHLEVBQUMsTUFBTSx3REFBd0QsQ0FBQztBQUN0RyxPQUFPLEVBQUMsd0JBQXdCLElBQUksR0FBRyxFQUFDLE1BQU0sMERBQTBELENBQUM7QUFDekcsT0FBTyxFQUFDLHlCQUF5QixJQUFJLEdBQUcsRUFBQyxNQUFNLDREQUE0RCxDQUFDO0FBQzVHLE9BQU8sRUFBQyxxQkFBcUIsSUFBSSxHQUFHLEVBQUMsTUFBTSx1REFBdUQsQ0FBQztBQUNuRyxPQUFPLEVBQUMsbUJBQW1CLElBQUksRUFBRSxFQUFDLE1BQU0sdUVBQXVFLENBQUM7QUFDaEgsT0FBTyxFQUFDLFdBQVcsSUFBSSxFQUFFLEVBQUMsTUFBTSw0Q0FBNEMsQ0FBQztBQUM3RSxPQUFPLEVBQUMsOEJBQThCLElBQUksRUFBRSxFQUFDLE1BQU0sa0dBQWtHLENBQUM7QUFDdEosT0FBTyxFQUFDLDhCQUE4QixJQUFJLEdBQUcsRUFBQyxNQUFNLG9GQUFvRixDQUFDO0FBQ3pJLE9BQU8sRUFBQyx3QkFBd0IsSUFBSSxHQUFHLEVBQUMsTUFBTSx3R0FBd0csQ0FBQztBQUN2SixPQUFPLEVBQUMsOEJBQThCLElBQUksR0FBRyxFQUFDLE1BQU0sb0ZBQW9GLENBQUM7QUFDekksT0FBTyxFQUFDLHdCQUF3QixJQUFJLEdBQUcsRUFBQyxNQUFNLHdHQUF3RyxDQUFDO0FBQ3ZKLE9BQU8sRUFBQyx3QkFBd0IsSUFBSSxHQUFHLEVBQUMsTUFBTSwrREFBK0QsQ0FBQztBQUM5RyxPQUFPLEVBQUMsNEJBQTRCLElBQUksR0FB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QU0saUNBQWlDLENBQUM7QUFDekUsT0FBTyxFQUFDLGlCQUFpQixJQUFJLEVBQUUsRUFBQyxNQUFNLHVEQUF1RCxDQUFDO0FBQzlGLE9BQU8sRUFBQyw4QkFBOEIsSUFBSSxFQUFFLEVBQUMsTUFBTSxtR0FBbUcsQ0FBQztBQUN2SixPQUFPLEVBQUMseUJBQXlCLElBQUksRUFBRSxFQUFDLE1BQU0sdUVBQXVFLENBQUM7QUFDdEgsT0FBTyxFQUFDLGtCQUFrQixJQUFJLEVBQUUsRUFBQyxNQUFNLGdFQUFnRSxDQUFDO0FBQ3hHLE9BQU8sRUFBQyxvQkFBb0IsSUFBSSxFQUFFLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUNuRSxPQUFPLEVBQUMsMkJBQTJCLElBQUksR0FBRyxFQUFDLE1BQU0sa0VBQWtFLENBQUM7QUFDcEgsT0FBTyxFQUFDLGtCQUFrQixJQUFJLEdBQUcsRUFBQyxNQUFNLHdEQUF3RCxDQUFDO0FBQ2pHLE9BQU8sRUFBQyxXQUFXLElBQUksRUFBRSxFQUFDLE1BQU0sZ0RBQWdELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG5cbmV4cG9ydCB7RW9DbGllbnRSb3V0aW5nTW9kdWxlIGFzIMm1Y3J9IGZyb20gJy4vYXBwL2VvLWNsaWVudC9lby1jbGllbnQtcm91dGluZy5tb2R1bGUnO1xuZXhwb3J0IHtJbmJveFN0YXRlUm91dGluZ01vZHVsZSBhcyDJtWNwfSBmcm9tICcuL2FwcC9lby1jbGllbnQvaW5ib3gtc3RhdGUvaW5ib3gtc3RhdGUtcm91dGluZy5tb2R1bGUnO1xuZXhwb3J0IHtPYmplY3RTdGF0ZVJvdXRpbmdNb2R1bGUgYXMgybVjb30gZnJvbSAnLi9hcHAvZW8tY2xpZW50L29iamVjdC1zdGF0ZS9vYmplY3Qtc3RhdGUtcm91dGluZy5tb2R1bGUnO1xuZXhwb3J0IHtQcmVwYXJlU3RhdGVSb3V0aW5nTW9kdWxlIGFzIMm1Y3F9IGZyb20gJy4vYXBwL2VvLWNsaWVudC9wcmVwYXJlLXN0YXRlL3ByZXBhcmUtc3RhdGUtcm91dGluZy5tb2R1bGUnO1xuZXhwb3J0IHtQcm9jZXNzU3RhdGVDb21wb25lbnQgYXMgybVjc30gZnJvbSAnLi9hcHAvZW8tY2xpZW50L3Byb2Nlc3Mtc3RhdGUvcHJvY2Vzcy1zdGF0ZS5jb21wb25lbnQnO1xuZXhwb3J0IHtQZW5kaW5nQ2hhbmdlc0d1YXJkIGFzIMm1YX0gZnJvbSAnLi9hcHAvZW8tZnJhbWV3b3JrLWNvcmUvcGVuZGluZy1jaGFuZ2VzL3BlbmRpbmctY2hhbmdlcy1ndWFyZC5zZXJ2aWNlJztcbmV4cG9ydCB7UGlwZXNNb2R1bGUgYXMgybVlfSBmcm9tICcuL2FwcC9lby1mcmFtZXdvcmstY29yZS9waXBlcy9waXBlcy5tb2R1bGUnO1xuZXhwb3J0IHtBY3Rpb25Db21wb25lbnRBbmNob3JEaXJlY3RpdmUgYXMgybV2fSBmcm9tICcuL2FwcC9lby1mcmFtZXdvcmsvYWN0aW9ucy9hY3Rpb24tbWVudS9hY3Rpb24tY29tcG9uZW50LWFuY2hvci9hY3Rpb24tY29tcG9uZW50LWFuY2hvci5kaXJlY3RpdmUnO1xuZXhwb3J0IHtBZGRSZXN1Ym1pc3Npb25BY3Rpb25Db21wb25lbnQgYXMgybVieH0gZnJvbSAnLi9hcHAvZW8tZnJhbWV3b3JrL2FjdGlvbnMvYWN0aW9ucy9hZGQtcmVzdWJtaXNzaW9uLWFjdGlvbi9hZGQtcmVzdWJtaXNzaW9uLWFjdGlvbic7XG5leHBvcnQge0FkZFJlc3VibWlzc2lvbkNvbXBvbmVudCBhcyDJtWJ5fSBmcm9tICcuL2FwcC9lby1mcmFtZXdvcmsvYWN0aW9ucy9hY3Rpb25zL2FkZC1yZXN1Ym1pc3Npb24tYWN0aW9uL2FkZC1yZXN1Ym1pc3Npb24vYWRkLXJlc3VibWlzc2lvbi5jb21wb25lbnQnO1xuZXhwb3J0IHtBZGRTdWJzY3JpcHRpb25BY3Rpb25Db21wb25lbnQgYXMgybVicn0gZnJvbSAnLi9hcHAvZW8tZnJhbWV3b3JrL2FjdGlvbnMvYWN0aW9ucy9hZGQtc3Vic2NyaXB0aW9uLWFjdGlvbi9hZGQtc3Vic2NyaXB0aW9uLWFjdGlvbic7XG5leHBvcnQge0FkZFN1YnNjcmlwdGlvbkNvbXBvbmVudCBhcyDJtWJzfSBmcm9tICcuL2FwcC9lby1mcmFtZXdvcmsvYWN0aW9ucy9hY3Rpb25zL2FkZC1zdWJzY3JpcHRpb24tYWN0aW9uL2FkZC1zdWJzY3JpcHRpb24vYWRkLXN1YnNjcmlwdGlvbi5jb21wb25lbnQnO1xuZXhwb3J0IHtDbGlwYm9hcmRBY3Rpb25Db21wb25lbnQgYXMgybViaH0gZnJvbSAnLi9hcHAvZW8tZnJhbWV3b3JrL2FjdGlvbnMvYWN0aW9ucy9jbGlwYm9hcmQvY2xpcGJvYXJkLWFjdGlvbic7XG5leHBvcnQge0NsaXBib2FyZExpbmtBY3Rpb25Db21wb25lbnQgYXMgybViaX0gZnJvbSAnLi9hcHAvZW8tZnJhbWV3b3JrL2FjdGlvbnMvYWN0aW9ucy9jbGlwYm9hcmQvY2xpcGJvYXJkLWxpbmstYWN0aW9uJztcbmV4cG9ydCB7Q2xpcGJvYXJkT3JpZ2luYWxBY3Rpb25Db21wb25lbnQgYXMgybVian0gZnJvbSAnLi9hcHAvZW8tZnJhbWV3b3JrL2FjdGlvbnMvYWN0aW9ucy9jbGlwYm9hcmQvY2xpcGJvYXJkLW9yaWdpbmFsLWFjdGlvbic7XG5leHBvcnQge0NsaXBib2FyZFBkZkFjdGlvbkNvbXBvbmVudCBhcyDJtWJrfSBmcm9tICcuL2FwcC9lby1mcmFtZXdvcmsvYWN0aW9ucy9hY3Rpb25zL2NsaXBib2FyZC9jbGlwYm9hcmQtcGRmLWFjdGlvbic7XG5leHBvcnQge0NvcHlBY3Rpb25Db21wb25lbnQgYXMgybV4fSBmcm9tICcuL2FwcC9lby1mcmFtZXdvcmsvYWN0aW9ucy9hY3Rpb25zL2NvcHktYWN0aW9uL2NvcHktYWN0aW9uJztcbmV4cG9ydCB7Q3VzdG9tQWN0aW9uc0NvbXBvbmVudCBhcyDJtWJ3fSBmcm9tICcuL2FwcC9lby1mcmFtZXdvcmsvYWN0aW9ucy9hY3Rpb25zL2N1c3RvbS1hY3Rpb25zL2N1c3RvbS1hY3Rpb25zLmNvbXBvbmVudCc7XG5leHBvcnQge0N1dEFjdGlvbkNvbXBvbmVudCBhcyDJtWNjfSBmcm9tICcuL2FwcC9lby1mcmFtZXdvcmsvYWN0aW9ucy9hY3Rpb25zL2N1dC1hY3Rpb24vY3V0LWFjdGlvbic7XG5leHBvcnQge0RlbGV0ZUFjdGlvbkNvbXBvbmVudCBhcyDJtWJtfSBmcm9tICcuL2FwcC9lby1mcmFtZXdvcmsvYWN0aW9ucy9hY3Rpb25zL2RlbGV0ZS1hY3Rpb24vZGVsZXRlLWFjdGlvbic7XG5leHBvcnQge0RlbGV0ZVByZXBhcmVkQWN0aW9uQ29tcG9uZW50IGFzIMm1YnF9IGZyb20gJy4vYXBwL2VvLWZyYW1ld29yay9hY3Rpb25zL2FjdGlvbnMvZGVsZXRlLWFjdGlvbi9kZWxldGUtcHJlcGFyZWQtYWN0aW9uJztcbmV4cG9ydCB7RGVsZXRlQ29tcG9uZW50IGFzIMm1Ym59IGZyb20gJy4vYXBwL2VvLWZyYW1ld29yay9hY3Rpb25zL2FjdGlvbnMvZGVsZXRlLWFjdGlvbi9kZWxldGUvZGVsZXRlLmNvbXBvbmVudCc7XG5leHBvcnQge0RlbGV0ZUNvbnRlbnRBY3Rpb25Db21wb25lbnQgYXMgybVjZn0gZnJvbSAnLi9hcHAvZW8tZnJhbWV3b3JrL2FjdGlvbnMvYWN0aW9ucy9kZWxldGUtY29udGVudC1hY3Rpb24vZGVsZXRlLWNvbnRlbnQtYWN0aW9uJztcbmV4cG9ydCB7RG93bmxvYWRBY3Rpb25Db21wb25lbnQgYXMgybV6fSBmcm9tICcuL2FwcC9lby1mcmFtZXdvcmsvYWN0aW9ucy9hY3Rpb25zL2Rvd25sb2FkLWFjdGlvbi9kb3dubG9hZC1hY3Rpb24nO1xuZXhwb3J0IHtEb3dubG9hZE9yaWdpbmFsQWN0aW9uQ29tcG9uZW50IGFzIMm1YmF9IGZyb20gJy4vYXBwL2VvLWZyYW1ld29yay9hY3Rpb25zL2FjdGlvbnMvZG93bmxvYWQtb3JpZ2luYWwtYWN0aW9uL2Rvd25sb2FkLW9yaWdpbmFsLWFjdGlvbic7XG5leHBvcnQge0Rvd25sb2FkUGRmQWN0aW9uQ29tcG9uZW50IGFzIMm1YmJ9IGZyb20gJy4vYXBwL2VvLWZyYW1ld29yay9hY3Rpb25zL2FjdGlvbnMvZG93bmxvYWQtcGRmLWFjdGlvbi9kb3dubG9hZC1wZGYtYWN0aW9uJztcbmV4cG9ydCB7RW1haWxBY3Rpb25Db21wb25lbnQgYXMgybViZH0gZnJvbSAnLi9hcHAvZW8tZnJhbWV3b3JrL2FjdGlvbnMvYWN0aW9ucy9lbWFpbC9lbWFpbC1hY3Rpb24nO1xuZXhwb3J0IHtFbWFpbExpbmtBY3Rpb25Db21wb25lbnQgYXMgybViZX0gZnJvbSAnLi9hcHAvZW8tZnJhbWV3b3JrL2FjdGlvbnMvYWN0aW9ucy9lbWFpbC9lbWFpbC1saW5rLWFjdGlvbic7XG5leHBvcnQge0VtYWlsT3JpZ2luYWxBY3Rpb25Db21wb25lbnQgYXMgybViZn0gZnJvbSAnLi9hcHAvZW8tZnJhbWV3b3JrL2FjdGlvbnMvYWN0aW9ucy9lbWFpbC9lbWFpbC1vcmlnaW5hbC1hY3Rpb24nO1xuZXhwb3J0IHtFbWFpbFBkZkFjdGlvbkNvbXBvbmVudCBhcyDJtWJnfSBmcm9tICcuL2FwcC9lby1mcmFtZXdvcmsvYWN0aW9ucy9hY3Rpb25zL2VtYWlsL2VtYWlsLXBkZi1hY3Rpb24nO1xuZXhwb3J0IHtGYXZvcml0ZUFjdGlvbkNvbXBvbmVudCBhcyDJtWJsfSBmcm9tICcuL2FwcC9lby1mcmFtZXdvcmsvYWN0aW9ucy9hY3Rpb25zL2Zhdm9yaXRlLWFjdGlvbi9mYXZvcml0ZS1hY3Rpb24nO1xuZXhwb3J0IHtEZWZpbmFsaXplQWN0aW9uQ29tcG9uZW50IGFzIMm1Y2V9IGZyb20gJy4vYXBwL2VvLWZyYW1ld29yay9hY3Rpb25zL2FjdGlvbnMvZmluYWxpemUvZGVmaW5hbGl6ZS1hY3Rpb24nO1xuZXhwb3J0IHtGaW5hbGl6ZUFjdGlvbkNvbXBvbmVudCBhcyDJtWNkfSBmcm9tICcuL2FwcC9lby1mcmFtZXdvcmsvYWN0aW9ucy9hY3Rpb25zL2ZpbmFsaXplL2ZpbmFsaXplLWFjdGlvbic7XG5leHBvcnQge09wZW5Db250ZXh0QWN0aW9uQ29tcG9uZW50IGFzIMm1eX0gZnJvbSAnLi9hcHAvZW8tZnJhbWV3b3JrL2FjdGlvbnMvYWN0aW9ucy9vcGVuLWNvbnRleHQtYWN0aW9uL29wZW4tY29udGV4dC1hY3Rpb24nO1xuZXhwb3J0IHtPcGVuRG9jdW1lbnRBY3Rpb25Db21wb25lbnQgYXMgybViY30gZnJvbSAnLi9hcHAvZW8tZnJhbWV3b3JrL2FjdGlvbnMvYWN0aW9ucy9vcGVuLWRvY3VtZW50LWFjdGlvbi9vcGVuLWRvY3VtZW50LWFjdGlvbic7XG5leHBvcnQge09wZW5Eb2N1bWVudENvbXBvbmVudCBhcyDJtXd9IGZyb20gJy4vYXBwL2VvLWZyYW1ld29yay9hY3Rpb25zL2FjdGlvbnMvb3Blbi1kb2N1bWVudC1hY3Rpb24vb3Blbi1kb2N1bWVudC1hY3Rpb24uY29tcG9uZW50JztcbmV4cG9ydCB7T3BlblZlcnNpb25zQWN0aW9uQ29tcG9uZW50IGFzIMm1Ym99IGZyb20gJy4vYXBwL2VvLWZyYW1ld29yay9hY3Rpb25zL2FjdGlvbnMvb3Blbi12ZXJzaW9ucy1hY3Rpb24vb3Blbi12ZXJzaW9ucy1hY3Rpb24nO1xuZXhwb3J0IHtSZW1vdmVTdWJzY3JpcHRpb25BY3Rpb25Db21wb25lbnQgYXMgybVidH0gZnJvbSAnLi9hcHAvZW8tZnJhbWV3b3JrL2FjdGlvbnMvYWN0aW9ucy9yZW1vdmUtc3Vic2NyaXB0aW9uLWFjdGlvbi9yZW1vdmUtc3Vic2NyaXB0aW9uLWFjdGlvbic7XG5leHBvcnQge1Jlc3RvcmVWZXJzaW9uQWN0aW9uQ29tcG9uZW50IGFzIMm1YnB9IGZyb20gJy4vYXBwL2VvLWZyYW1ld29yay9hY3Rpb25zL2FjdGlvbnMvcmVzdG9yZS12ZXJzaW9uLWFjdGlvbi9yZXN0b3JlLXZlcnNpb24tYWN0aW9uJztcbmV4cG9ydCB7U2hhcmVPYmplY3RBY3Rpb25Db21wb25lbnQgYXMgybVjYX0gZnJvbSAnLi9hcHAvZW8tZnJhbWV3b3JrL2FjdGlvbnMvYWN0aW9ucy9zaGFyZS1vYmplY3QtYWN0aW9uL3NoYXJlLW9iamVjdC1hY3Rpb24nO1xuZXhwb3J0IHtTaGFyZU9iamVjdENvbXBvbmVudCBhcyDJtWNifSBmcm9tICcuL2FwcC9lby1mcmFtZXdvcmsvYWN0aW9ucy9hY3Rpb25zL3NoYXJlLW9iamVjdC1hY3Rpb24vc2hhcmUtb2JqZWN0L3NoYXJlLW9iamVjdC5jb21wb25lbnQnO1xuZXhwb3J0IHtVbmxvY2tBY3Rpb25Db21wb25lbnQgYXMgybVjZ30gZnJvbSAnLi9hcHAvZW8tZnJhbWV3b3JrL2FjdGlvbnMvYWN0aW9ucy91bmxvY2stYWN0aW9uL3VubG9jay1hY3Rpb24nO1xuZXhwb3J0IHtVcGRhdGVSZXN1Ym1pc3Npb25BY3Rpb25Db21wb25lbnQgYXMgybVien0gZnJvbSAnLi9hcHAvZW8tZnJhbWV3b3JrL2FjdGlvbnMvYWN0aW9ucy91cGRhdGUtcmVzdWJtaXNzaW9uLWFjdGlvbi91cGRhdGUtcmVzdWJtaXNzaW9uLWFjdGlvbic7XG5leHBvcnQge1NpbXBsZVdvcmtmbG93QWN0aW9uQ29tcG9uZW50IGFzIMm1Y2h9IGZyb20gJy4vYXBwL2VvLWZyYW1ld29yay9hY3Rpb25zL2FjdGlvbnMvd29ya2Zsb3ctYWN0aW9uL3NpbXBsZS13b3JrZmxvdy1hY3Rpb24uY29tcG9uZW50JztcbmV4cG9ydCB7V29ya2Zsb3dBY3Rpb25Db21wb25lbnQgYXMgybVidX0gZnJvbSAnLi9hcHAvZW8tZnJhbWV3b3JrL2FjdGlvbnMvYWN0aW9ucy93b3JrZmxvdy1hY3Rpb24vd29ya2Zsb3ctYWN0aW9uLmNvbXBvbmVudCc7XG5leHBvcnQge1dvcmtmbG93Q29tcG9uZW50IGFzIMm1YnZ9IGZyb20gJy4vYXBwL2VvLWZyYW1ld29yay9hY3Rpb25zL2FjdGlvbnMvd29ya2Zsb3ctYWN0aW9uL3dvcmtmbG93L3dvcmtmbG93LmNvbXBvbmVudCc7XG5leHBvcnQge0FwcFByb2Nlc3NDb21wb25lbnQgYXMgybVkfSBmcm9tICcuL2FwcC9lby1mcmFtZXdvcmsvYXBwLXNoZWxsL2FwcC1iYXIvYXBwLXByb2Nlc3MvYXBwLXByb2Nlc3MuY29tcG9uZW50JztcbmV4cG9ydCB7QXBwU2hlbGxSb3V0aW5nTW9kdWxlIGFzIMm1Y30gZnJvbSAnLi9hcHAvZW8tZnJhbWV3b3JrL2FwcC1zaGVsbC9hcHAtc2hlbGwtcm91dGluZy5tb2R1bGUnO1xuZXhwb3J0IHtEYXRlcGlja2VyU2VydmljZSBhcyDJtWt9IGZyb20gJy4vYXBwL2VvLWZyYW1ld29yay9mb3JtLWVsZW1lbnRzL2RhdGV0aW1lL2RhdGVwaWNrZXIvc2VydmljZS9kYXRlcGlja2VyLnNlcnZpY2UnO1xuZXhwb3J0IHtZZWFyUmFuZ2VEaXJlY3RpdmUgYXMgybVsfSBmcm9tICcuL2FwcC9lby1mcmFtZXdvcmsvZm9ybS1lbGVtZW50cy9kYXRldGltZS95ZWFyLXJhbmdlL3llYXItcmFuZ2UuZGlyZWN0aXZlJztcbmV4cG9ydCB7ZmFkZUluT3V0IGFzIMm1bn0gZnJvbSAnLi9hcHAvZW8tZnJhbWV3b3JrL2Zvcm0tZWxlbWVudHMvaWQtcmVmZXJlbmNlL2FuaW1hdGlvbi9yZWZlcmVuY2UtZmluZGVyLmFuaW1hdGlvbic7XG5leHBvcnQge1JlZmVyZW5jZUZpbmRlckVudHJ5Q29tcG9uZW50IGFzIMm1cH0gZnJvbSAnLi9hcHAvZW8tZnJhbWV3b3JrL2Zvcm0tZWxlbWVudHMvaWQtcmVmZXJlbmNlL3JlZmVyZW5jZS1maW5kZXItZW50cnkvcmVmZXJlbmNlLWZpbmRlci1lbnRyeS5jb21wb25lbnQnO1xuZXhwb3J0IHtSZWZlcmVuY2VGaW5kZXJDb21wb25lbnQgYXMgybVtfSBmcm9tICcuL2FwcC9lby1mcmFtZXdvcmsvZm9ybS1lbGVtZW50cy9pZC1yZWZlcmVuY2UvcmVmZXJlbmNlLWZpbmRlci9yZWZlcmVuY2UtZmluZGVyLmNvbXBvbmVudCc7XG5leHBvcnQge1JlZmVyZW5jZUZpbmRlclNlcnZpY2UgYXMgybVvfSBmcm9tICcuL2FwcC9lby1mcmFtZXdvcmsvZm9ybS1lbGVtZW50cy9pZC1yZWZlcmVuY2Uvc2VydmljZS9yZWZlcmVuY2UtZmluZGVyLnNlcnZpY2UnO1xuZXhwb3J0IHtQYWdpbmF0aW9uQ29tcG9uZW50IGFzIMm1c30gZnJvbSAnLi9hcHAvZW8tZnJhbWV3b3JrL2dyaWQvZXh0ZW5zaW9ucy9wYWdpbmF0aW9uL3BhZ2luYXRpb24uY29tcG9uZW50JztcbmV4cG9ydCB7RHluYW1pY0xpc3RGaWx0ZXJDb21wb25lbnQgYXMgybVxfSBmcm9tICcuL2FwcC9lby1mcmFtZXdvcmsvZ3JpZC9maWx0ZXJzL2R5bmFtaWMtbGlzdC1maWx0ZXIuY29tcG9uZW50JztcbmV4cG9ydCB7TGlzdEZpbHRlckNvbXBvbmVudCBhcyDJtXJ9IGZyb20gJy4vYXBwL2VvLWZyYW1ld29yay9ncmlkL2ZpbHRlcnMvbGlzdC1maWx0ZXIuY29tcG9uZW50JztcbmV4cG9ydCB7RHVldGltZUluZm9Db21wb25lbnQgYXMgybVjbH0gZnJvbSAnLi9hcHAvZW8tZnJhbWV3b3JrL2luYm94LWRldGFpbHMvZHVldGltZUluZm8vZHVldGltZUluZm8uY29tcG9uZW50JztcbmV4cG9ydCB7RWRpdEljb25Db21wb25lbnQgYXMgybVja30gZnJvbSAnLi9hcHAvZW8tZnJhbWV3b3JrL29iamVjdC1kZXRhaWxzL2VkaXQtaWNvbi9lZGl0LWljb24uY29tcG9uZW50JztcbmV4cG9ydCB7UHJlcGFyZUNvbnRlbnRFeGlzdHNJbmZvQ29tcG9uZW50IGFzIMm1Y219IGZyb20gJy4vYXBwL2VvLWZyYW1ld29yay9wcmVwYXJlLWRldGFpbHMvcHJlcGFyZS1jb250ZW50LWV4aXN0cy1pbmZvL3ByZXBhcmUtY29udGVudC1leGlzdHMtaW5mby5jb21wb25lbnQnO1xuZXhwb3J0IHtQcm9jZXNzRm9ybUNvbXBvbmVudCBhcyDJtXV9IGZyb20gJy4vYXBwL2VvLWZyYW1ld29yay9wcm9jZXNzLWZvcm0vcHJvY2Vzcy1mb3JtLmNvbXBvbmVudCc7XG5leHBvcnQge1Byb2Nlc3NGb3JtTW9kdWxlIGFzIMm1dH0gZnJvbSAnLi9hcHAvZW8tZnJhbWV3b3JrL3Byb2Nlc3MtZm9ybS9wcm9jZXNzLWZvcm0ubW9kdWxlJztcbmV4cG9ydCB7U3RvcmVkUXVlcnlNb2R1bGUgYXMgybVjbn0gZnJvbSAnLi9hcHAvZW8tZnJhbWV3b3JrL3N0b3JlZC1xdWVyeSc7XG5leHBvcnQge1RyZWVOb2RlQ29tcG9uZW50IGFzIMm1an0gZnJvbSAnLi9hcHAvZW8tZnJhbWV3b3JrL3RyZWUvdHJlZS1ub2RlL3RyZWUtbm9kZS5jb21wb25lbnQnO1xuZXhwb3J0IHtJbmRleGRhdGFTdW1tYXJ5RW50cnlDb21wb25lbnQgYXMgybVofSBmcm9tICcuL2FwcC9lby1mcmFtZXdvcmsvdWkvaW5kZXhkYXRhLXN1bW1hcnkvaW5kZXhkYXRhLXN1bW1hcnktZW50cnkvaW5kZXhkYXRhLXN1bW1hcnktZW50cnkuY29tcG9uZW50JztcbmV4cG9ydCB7UXVlcnlTY29wZVNlbGVjdENvbXBvbmVudCBhcyDJtWd9IGZyb20gJy4vYXBwL2VvLWZyYW1ld29yay91aS9xdWVyeS1zY29wZS1zZWxlY3QvcXVlcnktc2NvcGUtc2VsZWN0LmNvbXBvbmVudCc7XG5leHBvcnQge1VwbG9hZE92ZXJsYXlHdWFyZCBhcyDJtWJ9IGZyb20gJy4vYXBwL2VvLWZyYW1ld29yay91cGxvYWQtb3ZlcmxheS91cGxvYWQtb3ZlcmxheS1ndWFyZC5zZXJ2aWNlJztcbmV4cG9ydCB7VW5zdWJzY3JpYmVPbkRlc3Ryb3kgYXMgybVmfSBmcm9tICcuL2FwcC9lby1mcmFtZXdvcmsvdXRpbCc7XG5leHBvcnQge1ByZXZlbnREb3VibGVDbGlja0RpcmVjdGl2ZSBhcyDJtWNpfSBmcm9tICcuL2FwcC9lby1mcmFtZXdvcmsvdXRpbC9kaXJlY3RpdmUvcHJldmVudC1kb3VibGUtY2xpY2suZGlyZWN0aXZlJztcbmV4cG9ydCB7VHJhcEZvY3VzRGlyZWN0aXZlIGFzIMm1Y2p9IGZyb20gJy4vYXBwL2VvLWZyYW1ld29yay91dGlsL2RpcmVjdGl2ZS90cmFwLWZvY3VzLmRpcmVjdGl2ZSc7XG5leHBvcnQge09yZGVyQnlQaXBlIGFzIMm1aX0gZnJvbSAnLi9hcHAvZW8tZnJhbWV3b3JrL3V0aWwvc29ydGFibGUvb3JkZXItYnkucGlwZSc7Il19
77
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW8tc2RrLWNsaWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9lby1zZGstY2xpZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUM7QUFFN0IsT0FBTyxFQUFDLHFCQUFxQixJQUFJLEdBQUcsRUFBQyxNQUFNLDBDQUEwQyxDQUFDO0FBQ3RGLE9BQU8sRUFBQyx1QkFBdUIsSUFBSSxHQUFHLEVBQUMsTUFBTSx3REFBd0QsQ0FBQztBQUN0RyxPQUFPLEVBQUMsd0JBQXdCLElBQUksR0FBRyxFQUFDLE1BQU0sMERBQTBELENBQUM7QUFDekcsT0FBTyxFQUFDLHlCQUF5QixJQUFJLEdBQUcsRUFBQyxNQUFNLDREQUE0RCxDQUFDO0FBQzVHLE9BQU8sRUFBQyxxQkFBcUIsSUFBSSxHQUFHLEVBQUMsTUFBTSx1REFBdUQsQ0FBQztBQUNuRyxPQUFPLEVBQUMsbUJBQW1CLElBQUksRUFBRSxFQUFDLE1BQU0sdUVBQXVFLENBQUM7QUFDaEgsT0FBTyxFQUFDLFdBQVcsSUFBSSxFQUFFLEVBQUMsTUFBTSw0Q0FBNEMsQ0FBQztBQUM3RSxPQUFPLEVBQUMsOEJBQThCLElBQUksRUFBRSxFQUFDLE1BQU0sa0dBQWtHLENBQUM7QUFDdEosT0FBTyxFQUFDLDhCQUE4QixJQUFJLEdBQUcsRUFBQyxNQUFNLG9GQUFvRixDQUFDO0FBQ3pJLE9BQU8sRUFBQyx3QkFBd0IsSUFBSSxHQUFHLEVBQUMsTUFBTSx3R0FBd0csQ0FBQztBQUN2SixPQUFPLEVBQUMsOEJBQThCLElBQUksR0FBRyxFQUFDLE1BQU0sb0ZBQW9GLENBQUM7QUFDekksT0FBTyxFQUFDLHdCQUF3QixJQUFJLEdBQUcsRUFBQyxNQUFNLHdHQUF3RyxDQUFDO0FBQ3ZKLE9BQU8sRUFBQyx3QkFBd0IsSUFBSSxHQUFHLEVBQUMsTUFBTSwrREFBK0QsQ0FBQztBQUM5RyxPQUFPLEVBQUMsNEJBQTRCLElBQUksR0FB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QU0saUNBQWlDLENBQUM7QUFDekUsT0FBTyxFQUFDLGlCQUFpQixJQUFJLEVBQUUsRUFBQyxNQUFNLHVEQUF1RCxDQUFDO0FBQzlGLE9BQU8sRUFBQyxtQkFBbUIsSUFBSSxHQUFHLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUNqRSxPQUFPLEVBQUMsOEJBQThCLElBQUksRUFBRSxFQUFDLE1BQU0sbUdBQW1HLENBQUM7QUFDdkosT0FBTyxFQUFDLHlCQUF5QixJQUFJLEVBQUUsRUFBQyxNQUFNLHVFQUF1RSxDQUFDO0FBQ3RILE9BQU8sRUFBQyxrQkFBa0IsSUFBSSxFQUFFLEVBQUMsTUFBTSxnRUFBZ0UsQ0FBQztBQUN4RyxPQUFPLEVBQUMsb0JBQW9CLElBQUksRUFBRSxFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDbkUsT0FBTyxFQUFDLDJCQUEyQixJQUFJLEdBQUcsRUFBQyxNQUFNLGtFQUFrRSxDQUFDO0FBQ3BILE9BQU8sRUFBQyxrQkFBa0IsSUFBSSxHQUFHLEVBQUMsTUFBTSx3REFBd0QsQ0FBQztBQUNqRyxPQUFPLEVBQUMsV0FBVyxJQUFJLEVBQUUsRUFBQyxNQUFNLGdEQUFnRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3B1YmxpY19hcGknO1xuXG5leHBvcnQge0VvQ2xpZW50Um91dGluZ01vZHVsZSBhcyDJtWNzfSBmcm9tICcuL2FwcC9lby1jbGllbnQvZW8tY2xpZW50LXJvdXRpbmcubW9kdWxlJztcbmV4cG9ydCB7SW5ib3hTdGF0ZVJvdXRpbmdNb2R1bGUgYXMgybVjcX0gZnJvbSAnLi9hcHAvZW8tY2xpZW50L2luYm94LXN0YXRlL2luYm94LXN0YXRlLXJvdXRpbmcubW9kdWxlJztcbmV4cG9ydCB7T2JqZWN0U3RhdGVSb3V0aW5nTW9kdWxlIGFzIMm1Y3B9IGZyb20gJy4vYXBwL2VvLWNsaWVudC9vYmplY3Qtc3RhdGUvb2JqZWN0LXN0YXRlLXJvdXRpbmcubW9kdWxlJztcbmV4cG9ydCB7UHJlcGFyZVN0YXRlUm91dGluZ01vZHVsZSBhcyDJtWNyfSBmcm9tICcuL2FwcC9lby1jbGllbnQvcHJlcGFyZS1zdGF0ZS9wcmVwYXJlLXN0YXRlLXJvdXRpbmcubW9kdWxlJztcbmV4cG9ydCB7UHJvY2Vzc1N0YXRlQ29tcG9uZW50IGFzIMm1Y3R9IGZyb20gJy4vYXBwL2VvLWNsaWVudC9wcm9jZXNzLXN0YXRlL3Byb2Nlc3Mtc3RhdGUuY29tcG9uZW50JztcbmV4cG9ydCB7UGVuZGluZ0NoYW5nZXNHdWFyZCBhcyDJtWF9IGZyb20gJy4vYXBwL2VvLWZyYW1ld29yay1jb3JlL3BlbmRpbmctY2hhbmdlcy9wZW5kaW5nLWNoYW5nZXMtZ3VhcmQuc2VydmljZSc7XG5leHBvcnQge1BpcGVzTW9kdWxlIGFzIMm1ZX0gZnJvbSAnLi9hcHAvZW8tZnJhbWV3b3JrLWNvcmUvcGlwZXMvcGlwZXMubW9kdWxlJztcbmV4cG9ydCB7QWN0aW9uQ29tcG9uZW50QW5jaG9yRGlyZWN0aXZlIGFzIMm1dn0gZnJvbSAnLi9hcHAvZW8tZnJhbWV3b3JrL2FjdGlvbnMvYWN0aW9uLW1lbnUvYWN0aW9uLWNvbXBvbmVudC1hbmNob3IvYWN0aW9uLWNvbXBvbmVudC1hbmNob3IuZGlyZWN0aXZlJztcbmV4cG9ydCB7QWRkUmVzdWJtaXNzaW9uQWN0aW9uQ29tcG9uZW50IGFzIMm1Ynh9IGZyb20gJy4vYXBwL2VvLWZyYW1ld29yay9hY3Rpb25zL2FjdGlvbnMvYWRkLXJlc3VibWlzc2lvbi1hY3Rpb24vYWRkLXJlc3VibWlzc2lvbi1hY3Rpb24nO1xuZXhwb3J0IHtBZGRSZXN1Ym1pc3Npb25Db21wb25lbnQgYXMgybVieX0gZnJvbSAnLi9hcHAvZW8tZnJhbWV3b3JrL2FjdGlvbnMvYWN0aW9ucy9hZGQtcmVzdWJtaXNzaW9uLWFjdGlvbi9hZGQtcmVzdWJtaXNzaW9uL2FkZC1yZXN1Ym1pc3Npb24uY29tcG9uZW50JztcbmV4cG9ydCB7QWRkU3Vic2NyaXB0aW9uQWN0aW9uQ29tcG9uZW50IGFzIMm1YnJ9IGZyb20gJy4vYXBwL2VvLWZyYW1ld29yay9hY3Rpb25zL2FjdGlvbnMvYWRkLXN1YnNjcmlwdGlvbi1hY3Rpb24vYWRkLXN1YnNjcmlwdGlvbi1hY3Rpb24nO1xuZXhwb3J0IHtBZGRTdWJzY3JpcHRpb25Db21wb25lbnQgYXMgybVic30gZnJvbSAnLi9hcHAvZW8tZnJhbWV3b3JrL2FjdGlvbnMvYWN0aW9ucy9hZGQtc3Vic2NyaXB0aW9uLWFjdGlvbi9hZGQtc3Vic2NyaXB0aW9uL2FkZC1zdWJzY3JpcHRpb24uY29tcG9uZW50JztcbmV4cG9ydCB7Q2xpcGJvYXJkQWN0aW9uQ29tcG9uZW50IGFzIMm1Ymh9IGZyb20gJy4vYXBwL2VvLWZyYW1ld29yay9hY3Rpb25zL2FjdGlvbnMvY2xpcGJvYXJkL2NsaXBib2FyZC1hY3Rpb24nO1xuZXhwb3J0IHtDbGlwYm9hcmRMaW5rQWN0aW9uQ29tcG9uZW50IGFzIMm1Yml9IGZyb20gJy4vYXBwL2VvLWZyYW1ld29yay9hY3Rpb25zL2FjdGlvbnMvY2xpcGJvYXJkL2NsaXBib2FyZC1saW5rLWFjdGlvbic7XG5leHBvcnQge0NsaXBib2FyZE9yaWdpbmFsQWN0aW9uQ29tcG9uZW50IGFzIMm1Ymp9IGZyb20gJy4vYXBwL2VvLWZyYW1ld29yay9hY3Rpb25zL2FjdGlvbnMvY2xpcGJvYXJkL2NsaXBib2FyZC1vcmlnaW5hbC1hY3Rpb24nO1xuZXhwb3J0IHtDbGlwYm9hcmRQZGZBY3Rpb25Db21wb25lbnQgYXMgybVia30gZnJvbSAnLi9hcHAvZW8tZnJhbWV3b3JrL2FjdGlvbnMvYWN0aW9ucy9jbGlwYm9hcmQvY2xpcGJvYXJkLXBkZi1hY3Rpb24nO1xuZXhwb3J0IHtDb3B5QWN0aW9uQ29tcG9uZW50IGFzIMm1eH0gZnJvbSAnLi9hcHAvZW8tZnJhbWV3b3JrL2FjdGlvbnMvYWN0aW9ucy9jb3B5LWFjdGlvbi9jb3B5LWFjdGlvbic7XG5leHBvcnQge0N1c3RvbUFjdGlvbnNDb21wb25lbnQgYXMgybVid30gZnJvbSAnLi9hcHAvZW8tZnJhbWV3b3JrL2FjdGlvbnMvYWN0aW9ucy9jdXN0b20tYWN0aW9ucy9jdXN0b20tYWN0aW9ucy5jb21wb25lbnQnO1xuZXhwb3J0IHtDdXRBY3Rpb25Db21wb25lbnQgYXMgybVjY30gZnJvbSAnLi9hcHAvZW8tZnJhbWV3b3JrL2FjdGlvbnMvYWN0aW9ucy9jdXQtYWN0aW9uL2N1dC1hY3Rpb24nO1xuZXhwb3J0IHtEZWxldGVBY3Rpb25Db21wb25lbnQgYXMgybVibX0gZnJvbSAnLi9hcHAvZW8tZnJhbWV3b3JrL2FjdGlvbnMvYWN0aW9ucy9kZWxldGUtYWN0aW9uL2RlbGV0ZS1hY3Rpb24nO1xuZXhwb3J0IHtEZWxldGVQcmVwYXJlZEFjdGlvbkNvbXBvbmVudCBhcyDJtWJxfSBmcm9tICcuL2FwcC9lby1mcmFtZXdvcmsvYWN0aW9ucy9hY3Rpb25zL2RlbGV0ZS1hY3Rpb24vZGVsZXRlLXByZXBhcmVkLWFjdGlvbic7XG5leHBvcnQge0RlbGV0ZUNvbXBvbmVudCBhcyDJtWJufSBmcm9tICcuL2FwcC9lby1mcmFtZXdvcmsvYWN0aW9ucy9hY3Rpb25zL2RlbGV0ZS1hY3Rpb24vZGVsZXRlL2RlbGV0ZS5jb21wb25lbnQnO1xuZXhwb3J0IHtEZWxldGVDb250ZW50QWN0aW9uQ29tcG9uZW50IGFzIMm1Y2Z9IGZyb20gJy4vYXBwL2VvLWZyYW1ld29yay9hY3Rpb25zL2FjdGlvbnMvZGVsZXRlLWNvbnRlbnQtYWN0aW9uL2RlbGV0ZS1jb250ZW50LWFjdGlvbic7XG5leHBvcnQge0Rvd25sb2FkQWN0aW9uQ29tcG9uZW50IGFzIMm1en0gZnJvbSAnLi9hcHAvZW8tZnJhbWV3b3JrL2FjdGlvbnMvYWN0aW9ucy9kb3dubG9hZC1hY3Rpb24vZG93bmxvYWQtYWN0aW9uJztcbmV4cG9ydCB7RG93bmxvYWRPcmlnaW5hbEFjdGlvbkNvbXBvbmVudCBhcyDJtWJhfSBmcm9tICcuL2FwcC9lby1mcmFtZXdvcmsvYWN0aW9ucy9hY3Rpb25zL2Rvd25sb2FkLW9yaWdpbmFsLWFjdGlvbi9kb3dubG9hZC1vcmlnaW5hbC1hY3Rpb24nO1xuZXhwb3J0IHtEb3dubG9hZFBkZkFjdGlvbkNvbXBvbmVudCBhcyDJtWJifSBmcm9tICcuL2FwcC9lby1mcmFtZXdvcmsvYWN0aW9ucy9hY3Rpb25zL2Rvd25sb2FkLXBkZi1hY3Rpb24vZG93bmxvYWQtcGRmLWFjdGlvbic7XG5leHBvcnQge0VtYWlsQWN0aW9uQ29tcG9uZW50IGFzIMm1YmR9IGZyb20gJy4vYXBwL2VvLWZyYW1ld29yay9hY3Rpb25zL2FjdGlvbnMvZW1haWwvZW1haWwtYWN0aW9uJztcbmV4cG9ydCB7RW1haWxMaW5rQWN0aW9uQ29tcG9uZW50IGFzIMm1YmV9IGZyb20gJy4vYXBwL2VvLWZyYW1ld29yay9hY3Rpb25zL2FjdGlvbnMvZW1haWwvZW1haWwtbGluay1hY3Rpb24nO1xuZXhwb3J0IHtFbWFpbE9yaWdpbmFsQWN0aW9uQ29tcG9uZW50IGFzIMm1YmZ9IGZyb20gJy4vYXBwL2VvLWZyYW1ld29yay9hY3Rpb25zL2FjdGlvbnMvZW1haWwvZW1haWwtb3JpZ2luYWwtYWN0aW9uJztcbmV4cG9ydCB7RW1haWxQZGZBY3Rpb25Db21wb25lbnQgYXMgybViZ30gZnJvbSAnLi9hcHAvZW8tZnJhbWV3b3JrL2FjdGlvbnMvYWN0aW9ucy9lbWFpbC9lbWFpbC1wZGYtYWN0aW9uJztcbmV4cG9ydCB7RmF2b3JpdGVBY3Rpb25Db21wb25lbnQgYXMgybVibH0gZnJvbSAnLi9hcHAvZW8tZnJhbWV3b3JrL2FjdGlvbnMvYWN0aW9ucy9mYXZvcml0ZS1hY3Rpb24vZmF2b3JpdGUtYWN0aW9uJztcbmV4cG9ydCB7RGVmaW5hbGl6ZUFjdGlvbkNvbXBvbmVudCBhcyDJtWNlfSBmcm9tICcuL2FwcC9lby1mcmFtZXdvcmsvYWN0aW9ucy9hY3Rpb25zL2ZpbmFsaXplL2RlZmluYWxpemUtYWN0aW9uJztcbmV4cG9ydCB7RmluYWxpemVBY3Rpb25Db21wb25lbnQgYXMgybVjZH0gZnJvbSAnLi9hcHAvZW8tZnJhbWV3b3JrL2FjdGlvbnMvYWN0aW9ucy9maW5hbGl6ZS9maW5hbGl6ZS1hY3Rpb24nO1xuZXhwb3J0IHtPcGVuQ29udGV4dEFjdGlvbkNvbXBvbmVudCBhcyDJtXl9IGZyb20gJy4vYXBwL2VvLWZyYW1ld29yay9hY3Rpb25zL2FjdGlvbnMvb3Blbi1jb250ZXh0LWFjdGlvbi9vcGVuLWNvbnRleHQtYWN0aW9uJztcbmV4cG9ydCB7T3BlbkRvY3VtZW50QWN0aW9uQ29tcG9uZW50IGFzIMm1YmN9IGZyb20gJy4vYXBwL2VvLWZyYW1ld29yay9hY3Rpb25zL2FjdGlvbnMvb3Blbi1kb2N1bWVudC1hY3Rpb24vb3Blbi1kb2N1bWVudC1hY3Rpb24nO1xuZXhwb3J0IHtPcGVuRG9jdW1lbnRDb21wb25lbnQgYXMgybV3fSBmcm9tICcuL2FwcC9lby1mcmFtZXdvcmsvYWN0aW9ucy9hY3Rpb25zL29wZW4tZG9jdW1lbnQtYWN0aW9uL29wZW4tZG9jdW1lbnQtYWN0aW9uLmNvbXBvbmVudCc7XG5leHBvcnQge09wZW5WZXJzaW9uc0FjdGlvbkNvbXBvbmVudCBhcyDJtWJvfSBmcm9tICcuL2FwcC9lby1mcmFtZXdvcmsvYWN0aW9ucy9hY3Rpb25zL29wZW4tdmVyc2lvbnMtYWN0aW9uL29wZW4tdmVyc2lvbnMtYWN0aW9uJztcbmV4cG9ydCB7UmVtb3ZlU3Vic2NyaXB0aW9uQWN0aW9uQ29tcG9uZW50IGFzIMm1YnR9IGZyb20gJy4vYXBwL2VvLWZyYW1ld29yay9hY3Rpb25zL2FjdGlvbnMvcmVtb3ZlLXN1YnNjcmlwdGlvbi1hY3Rpb24vcmVtb3ZlLXN1YnNjcmlwdGlvbi1hY3Rpb24nO1xuZXhwb3J0IHtSZXN0b3JlVmVyc2lvbkFjdGlvbkNvbXBvbmVudCBhcyDJtWJwfSBmcm9tICcuL2FwcC9lby1mcmFtZXdvcmsvYWN0aW9ucy9hY3Rpb25zL3Jlc3RvcmUtdmVyc2lvbi1hY3Rpb24vcmVzdG9yZS12ZXJzaW9uLWFjdGlvbic7XG5leHBvcnQge1NoYXJlT2JqZWN0QWN0aW9uQ29tcG9uZW50IGFzIMm1Y2F9IGZyb20gJy4vYXBwL2VvLWZyYW1ld29yay9hY3Rpb25zL2FjdGlvbnMvc2hhcmUtb2JqZWN0LWFjdGlvbi9zaGFyZS1vYmplY3QtYWN0aW9uJztcbmV4cG9ydCB7U2hhcmVPYmplY3RDb21wb25lbnQgYXMgybVjYn0gZnJvbSAnLi9hcHAvZW8tZnJhbWV3b3JrL2FjdGlvbnMvYWN0aW9ucy9zaGFyZS1vYmplY3QtYWN0aW9uL3NoYXJlLW9iamVjdC9zaGFyZS1vYmplY3QuY29tcG9uZW50JztcbmV4cG9ydCB7VW5sb2NrQWN0aW9uQ29tcG9uZW50IGFzIMm1Y2d9IGZyb20gJy4vYXBwL2VvLWZyYW1ld29yay9hY3Rpb25zL2FjdGlvbnMvdW5sb2NrLWFjdGlvbi91bmxvY2stYWN0aW9uJztcbmV4cG9ydCB7VXBkYXRlUmVzdWJtaXNzaW9uQWN0aW9uQ29tcG9uZW50IGFzIMm1Ynp9IGZyb20gJy4vYXBwL2VvLWZyYW1ld29yay9hY3Rpb25zL2FjdGlvbnMvdXBkYXRlLXJlc3VibWlzc2lvbi1hY3Rpb24vdXBkYXRlLXJlc3VibWlzc2lvbi1hY3Rpb24nO1xuZXhwb3J0IHtTaW1wbGVXb3JrZmxvd0FjdGlvbkNvbXBvbmVudCBhcyDJtWNofSBmcm9tICcuL2FwcC9lby1mcmFtZXdvcmsvYWN0aW9ucy9hY3Rpb25zL3dvcmtmbG93LWFjdGlvbi9zaW1wbGUtd29ya2Zsb3ctYWN0aW9uLmNvbXBvbmVudCc7XG5leHBvcnQge1dvcmtmbG93QWN0aW9uQ29tcG9uZW50IGFzIMm1YnV9IGZyb20gJy4vYXBwL2VvLWZyYW1ld29yay9hY3Rpb25zL2FjdGlvbnMvd29ya2Zsb3ctYWN0aW9uL3dvcmtmbG93LWFjdGlvbi5jb21wb25lbnQnO1xuZXhwb3J0IHtXb3JrZmxvd0NvbXBvbmVudCBhcyDJtWJ2fSBmcm9tICcuL2FwcC9lby1mcmFtZXdvcmsvYWN0aW9ucy9hY3Rpb25zL3dvcmtmbG93LWFjdGlvbi93b3JrZmxvdy93b3JrZmxvdy5jb21wb25lbnQnO1xuZXhwb3J0IHtBcHBQcm9jZXNzQ29tcG9uZW50IGFzIMm1ZH0gZnJvbSAnLi9hcHAvZW8tZnJhbWV3b3JrL2FwcC1zaGVsbC9hcHAtYmFyL2FwcC1wcm9jZXNzL2FwcC1wcm9jZXNzLmNvbXBvbmVudCc7XG5leHBvcnQge0FwcFNoZWxsUm91dGluZ01vZHVsZSBhcyDJtWN9IGZyb20gJy4vYXBwL2VvLWZyYW1ld29yay9hcHAtc2hlbGwvYXBwLXNoZWxsLXJvdXRpbmcubW9kdWxlJztcbmV4cG9ydCB7RGF0ZXBpY2tlclNlcnZpY2UgYXMgybVrfSBmcm9tICcuL2FwcC9lby1mcmFtZXdvcmsvZm9ybS1lbGVtZW50cy9kYXRldGltZS9kYXRlcGlja2VyL3NlcnZpY2UvZGF0ZXBpY2tlci5zZXJ2aWNlJztcbmV4cG9ydCB7WWVhclJhbmdlRGlyZWN0aXZlIGFzIMm1bH0gZnJvbSAnLi9hcHAvZW8tZnJhbWV3b3JrL2Zvcm0tZWxlbWVudHMvZGF0ZXRpbWUveWVhci1yYW5nZS95ZWFyLXJhbmdlLmRpcmVjdGl2ZSc7XG5leHBvcnQge2ZhZGVJbk91dCBhcyDJtW59IGZyb20gJy4vYXBwL2VvLWZyYW1ld29yay9mb3JtLWVsZW1lbnRzL2lkLXJlZmVyZW5jZS9hbmltYXRpb24vcmVmZXJlbmNlLWZpbmRlci5hbmltYXRpb24nO1xuZXhwb3J0IHtSZWZlcmVuY2VGaW5kZXJFbnRyeUNvbXBvbmVudCBhcyDJtXB9IGZyb20gJy4vYXBwL2VvLWZyYW1ld29yay9mb3JtLWVsZW1lbnRzL2lkLXJlZmVyZW5jZS9yZWZlcmVuY2UtZmluZGVyLWVudHJ5L3JlZmVyZW5jZS1maW5kZXItZW50cnkuY29tcG9uZW50JztcbmV4cG9ydCB7UmVmZXJlbmNlRmluZGVyQ29tcG9uZW50IGFzIMm1bX0gZnJvbSAnLi9hcHAvZW8tZnJhbWV3b3JrL2Zvcm0tZWxlbWVudHMvaWQtcmVmZXJlbmNlL3JlZmVyZW5jZS1maW5kZXIvcmVmZXJlbmNlLWZpbmRlci5jb21wb25lbnQnO1xuZXhwb3J0IHtSZWZlcmVuY2VGaW5kZXJTZXJ2aWNlIGFzIMm1b30gZnJvbSAnLi9hcHAvZW8tZnJhbWV3b3JrL2Zvcm0tZWxlbWVudHMvaWQtcmVmZXJlbmNlL3NlcnZpY2UvcmVmZXJlbmNlLWZpbmRlci5zZXJ2aWNlJztcbmV4cG9ydCB7UGFnaW5hdGlvbkNvbXBvbmVudCBhcyDJtXN9IGZyb20gJy4vYXBwL2VvLWZyYW1ld29yay9ncmlkL2V4dGVuc2lvbnMvcGFnaW5hdGlvbi9wYWdpbmF0aW9uLmNvbXBvbmVudCc7XG5leHBvcnQge0R5bmFtaWNMaXN0RmlsdGVyQ29tcG9uZW50IGFzIMm1cX0gZnJvbSAnLi9hcHAvZW8tZnJhbWV3b3JrL2dyaWQvZmlsdGVycy9keW5hbWljLWxpc3QtZmlsdGVyLmNvbXBvbmVudCc7XG5leHBvcnQge0xpc3RGaWx0ZXJDb21wb25lbnQgYXMgybVyfSBmcm9tICcuL2FwcC9lby1mcmFtZXdvcmsvZ3JpZC9maWx0ZXJzL2xpc3QtZmlsdGVyLmNvbXBvbmVudCc7XG5leHBvcnQge0R1ZXRpbWVJbmZvQ29tcG9uZW50IGFzIMm1Y219IGZyb20gJy4vYXBwL2VvLWZyYW1ld29yay9pbmJveC1kZXRhaWxzL2R1ZXRpbWVJbmZvL2R1ZXRpbWVJbmZvLmNvbXBvbmVudCc7XG5leHBvcnQge0VkaXRJY29uQ29tcG9uZW50IGFzIMm1Y2x9IGZyb20gJy4vYXBwL2VvLWZyYW1ld29yay9vYmplY3QtZGV0YWlscy9lZGl0LWljb24vZWRpdC1pY29uLmNvbXBvbmVudCc7XG5leHBvcnQge1ByZXBhcmVDb250ZW50RXhpc3RzSW5mb0NvbXBvbmVudCBhcyDJtWNufSBmcm9tICcuL2FwcC9lby1mcmFtZXdvcmsvcHJlcGFyZS1kZXRhaWxzL3ByZXBhcmUtY29udGVudC1leGlzdHMtaW5mby9wcmVwYXJlLWNvbnRlbnQtZXhpc3RzLWluZm8uY29tcG9uZW50JztcbmV4cG9ydCB7UHJvY2Vzc0Zvcm1Db21wb25lbnQgYXMgybV1fSBmcm9tICcuL2FwcC9lby1mcmFtZXdvcmsvcHJvY2Vzcy1mb3JtL3Byb2Nlc3MtZm9ybS5jb21wb25lbnQnO1xuZXhwb3J0IHtQcm9jZXNzRm9ybU1vZHVsZSBhcyDJtXR9IGZyb20gJy4vYXBwL2VvLWZyYW1ld29yay9wcm9jZXNzLWZvcm0vcHJvY2Vzcy1mb3JtLm1vZHVsZSc7XG5leHBvcnQge1N0b3JlZFF1ZXJ5TW9kdWxlIGFzIMm1Y299IGZyb20gJy4vYXBwL2VvLWZyYW1ld29yay9zdG9yZWQtcXVlcnknO1xuZXhwb3J0IHtUcmVlTm9kZUNvbXBvbmVudCBhcyDJtWp9IGZyb20gJy4vYXBwL2VvLWZyYW1ld29yay90cmVlL3RyZWUtbm9kZS90cmVlLW5vZGUuY29tcG9uZW50JztcbmV4cG9ydCB7VXNlckF2YXRhckNvbXBvbmVudCBhcyDJtWNqfSBmcm9tICcuL2FwcC9lby1mcmFtZXdvcmsvdWknO1xuZXhwb3J0IHtJbmRleGRhdGFTdW1tYXJ5RW50cnlDb21wb25lbnQgYXMgybVofSBmcm9tICcuL2FwcC9lby1mcmFtZXdvcmsvdWkvaW5kZXhkYXRhLXN1bW1hcnkvaW5kZXhkYXRhLXN1bW1hcnktZW50cnkvaW5kZXhkYXRhLXN1bW1hcnktZW50cnkuY29tcG9uZW50JztcbmV4cG9ydCB7UXVlcnlTY29wZVNlbGVjdENvbXBvbmVudCBhcyDJtWd9IGZyb20gJy4vYXBwL2VvLWZyYW1ld29yay91aS9xdWVyeS1zY29wZS1zZWxlY3QvcXVlcnktc2NvcGUtc2VsZWN0LmNvbXBvbmVudCc7XG5leHBvcnQge1VwbG9hZE92ZXJsYXlHdWFyZCBhcyDJtWJ9IGZyb20gJy4vYXBwL2VvLWZyYW1ld29yay91cGxvYWQtb3ZlcmxheS91cGxvYWQtb3ZlcmxheS1ndWFyZC5zZXJ2aWNlJztcbmV4cG9ydCB7VW5zdWJzY3JpYmVPbkRlc3Ryb3kgYXMgybVmfSBmcm9tICcuL2FwcC9lby1mcmFtZXdvcmsvdXRpbCc7XG5leHBvcnQge1ByZXZlbnREb3VibGVDbGlja0RpcmVjdGl2ZSBhcyDJtWNpfSBmcm9tICcuL2FwcC9lby1mcmFtZXdvcmsvdXRpbC9kaXJlY3RpdmUvcHJldmVudC1kb3VibGUtY2xpY2suZGlyZWN0aXZlJztcbmV4cG9ydCB7VHJhcEZvY3VzRGlyZWN0aXZlIGFzIMm1Y2t9IGZyb20gJy4vYXBwL2VvLWZyYW1ld29yay91dGlsL2RpcmVjdGl2ZS90cmFwLWZvY3VzLmRpcmVjdGl2ZSc7XG5leHBvcnQge09yZGVyQnlQaXBlIGFzIMm1aX0gZnJvbSAnLi9hcHAvZW8tZnJhbWV3b3JrL3V0aWwvc29ydGFibGUvb3JkZXItYnkucGlwZSc7Il19
@@ -94,7 +94,7 @@ export class AuthService {
94
94
  const loginHeader = new HttpHeaders({
95
95
  'Content-Type': 'application/x-www-form-urlencoded'
96
96
  });
97
- return this.http.post(host + this.config.getLoginBase() + '/login', `username=${encodeURIComponent(username)}&password=${encodeURIComponent(password)}`, {
97
+ return this.http.post(host + this.config.getContextPath() + '/login', `username=${encodeURIComponent(username)}&password=${encodeURIComponent(password)}`, {
98
98
  headers: loginHeader,
99
99
  responseType: 'text',
100
100
  withCredentials: this.coreConfig.withCredentials
@@ -227,7 +227,7 @@ export class AuthService {
227
227
  'Content-Type': 'application/json'
228
228
  });
229
229
  return this.http
230
- .get(`${host || ''}${this.config.getLoginBase()}/auth/info`, { headers, withCredentials: this.coreConfig.withCredentials })
230
+ .get(`${host || ''}${this.config.getContextPath()}/auth/info`, { headers, withCredentials: this.coreConfig.withCredentials })
231
231
  .pipe(switchMap((info) => {
232
232
  this.gatewayInfo = info;
233
233
  this.envService.cloudEnvironment = (this.gatewayInfo && this.gatewayInfo.oauth2);
@@ -289,14 +289,14 @@ export class AuthService {
289
289
  // remove stored access data
290
290
  this.storage.removeItem(this.TOKEN_STORAGE_KEY).subscribe();
291
291
  if (this.coreConfig.environment.production && EnvironmentEnaio.isWebEnvironment()) {
292
- window.location.href = this.config.getLoginBase() + '/logout';
292
+ window.location.href = this.config.getContextPath() + '/logout';
293
293
  return;
294
294
  }
295
295
  }
296
296
  if (gatewayLogout) {
297
297
  // by default we are just resetting internal state to 'logged out' and in
298
298
  // some cases call gateways logout endpoint to do logout stuff there silently
299
- this.http.get(`${this.profile.host || ''}${this.config.getLoginBase()}/logout`, { withCredentials: this.coreConfig.withCredentials }).subscribe();
299
+ this.http.get(`${this.profile.host || ''}${this.config.getContextPath()}/logout`, { withCredentials: this.coreConfig.withCredentials }).subscribe();
300
300
  }
301
301
  this.backend.setAuthProfile(this.profile);
302
302
  this.eventService.trigger(EnaioEvent.LOGOUT);
@@ -373,4 +373,4 @@ AuthService.ctorParameters = () => [
373
373
  { type: LocalStorage },
374
374
  { type: LocalStorageService }
375
375
  ];
376
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZW8tc2RrL2NvcmUvc3JjL2xpYi9zZXJ2aWNlL2F1dGgvYXV0aC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxlQUFlLEVBQUUsVUFBVSxFQUFFLFFBQVEsSUFBSSxrQkFBa0IsRUFDM0QsRUFBRSxJQUFJLFlBQVksRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFDbEQsTUFBTSxNQUFNLENBQUM7QUFDZCxPQUFPLEVBQUMsR0FBRyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzFFLE9BQU8sRUFBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN6RCxPQUFPLEVBQUMsVUFBVSxFQUFxQixXQUFXLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUNoRixPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDM0QsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQ2hELE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUNqRCxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDdkQsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQzFELE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUNqRCxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFFeEMsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQzFELE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUNwRCxPQUFPLEVB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QUMsaUJBQWlCLEVBQUUsQ0FBQztTQUN2QztRQUNELElBQUksWUFBWSxDQUFDLE1BQU0sRUFBRTtZQUN2QixJQUFJLENBQUMsY0FBYyxDQUFDLHlCQUF5QixFQUFFLENBQUM7U0FDakQ7UUFFRCxNQUFNLElBQUksR0FBRztZQUNYLElBQUksQ0FBQyxVQUFVLENBQUMsdUJBQXVCLEVBQUU7WUFDekMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLENBQUM7U0FDakQsQ0FBQztRQUVGLE9BQU8sa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUNsQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQ3BCLENBQUM7SUFDSixDQUFDOzs7WUF4WEYsVUFBVTs7O1lBM0JILE1BQU07WUFvQk4sVUFBVSx1QkF5Q2IsTUFBTSxTQUFDLFdBQVc7WUE5RGYsZUFBZTtZQXVCZixrQkFBa0I7WUF4QmxCLFVBQVU7WUFnQlYsVUFBVTtZQWpCVSxNQUFNO1lBc0IxQixnQkFBZ0I7WUFWaEIsbUJBQW1CO1lBSm5CLE1BQU07WUFHTixZQUFZO1lBRFosY0FBYztZQUpkLGNBQWM7WUFEZCxhQUFhO1lBRWIsV0FBVztZQVFYLFlBQVk7WUFJWixtQkFBbUI7WUFObkIsWUFBWTtZQUNaLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgZm9ya0pvaW4gYXMgb2JzZXJ2YWJsZUZvcmtKb2luLFxuICBvZiBhcyBvYnNlcnZhYmxlT2YsIFN1YmplY3QsIHRocm93RXJyb3IsIGludGVydmFsXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHttYXAsIHN3aXRjaE1hcCwgdGFrZVVudGlsLCB0YXAsIGNhdGNoRXJyb3J9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7SW5qZWN0LCBJbmplY3RhYmxlLCBOZ1pvbmV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtIdHRwQ2xpZW50LCBIdHRwRXJyb3JSZXNwb25zZSwgSHR0cEhlYWRlcnN9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7QXBwQ2FjaGVTZXJ2aWNlfSBmcm9tICcuLi9jYWNoZS9hcHAtY2FjaGUuc2VydmljZSc7XG5pbXBvcnQge0NvbmZpZ30gZnJvbSAnLi4vY29uZmlnL2NvbmZpZy5zZXJ2aWNlJztcbmltcG9ydCB7RW9Vc2VyfSBmcm9tICcuLi8uLi9tb2RlbC9lby11c2VyLm1vZGVsJztcbmltcG9ydCB7U3lzdGVtU2VydmljZX0gZnJvbSAnLi4vc3lzdGVtL3N5c3RlbS5zZXJ2aWNlJztcbmltcG9ydCB7QmFja2VuZFNlcnZpY2V9IGZyb20gJy4uL2JhY2tlbmQvYmFja2VuZC5zZXJ2aWNlJztcbmltcG9ydCB7VXNlclNlcnZpY2V9IGZyb20gJy4uL3VzZXIvdXNlci5zZXJ2aWNlJztcbmltcG9ydCB7TG9nZ2VyfSBmcm9tICcuLi9sb2dnZXIvbG9nZ2VyJztcbmltcG9ydCB7QXV0aFByb2ZpbGV9IGZyb20gJy4vYXV0aC1wcm9maWxlLmludGVyZmFjZSc7XG5pbXBvcnQge1ByZXBhcmVTZXJ2aWNlfSBmcm9tICcuLi9wcmVwYXJlL3ByZXBhcmUuc2VydmljZSc7XG5pbXBvcnQge0luYm94U2VydmljZX0gZnJvbSAnLi4vaW5ib3gvaW5ib3guc2VydmljZSc7XG5pbXBvcnQge0NhcGFiaWxpdGllc1NlcnZpY2V9IGZyb20gJy4uL2NhcGFiaWxpdGllcy9jYXBhYmlsaXRpZXMuc2VydmljZSc7XG5pbXBvcnQge0xvY2FsU3RvcmFnZX0gZnJvbSAnQG5neC1wd2EvbG9jYWwtc3RvcmFnZSc7XG5pbXBvcnQge0xvY2FsU3RvcmFnZVNlcnZpY2V9IGZyb20gJy4uL3N0b3JhZ2UvbG9jYWwtc3RvcmFnZS5zZXJ2aWNlJztcbmltcG9ydCB7RXZlbnRTZXJ2aWNlfSBmcm9tICcuLi9ldmVudHMvZXZlbnQuc2VydmljZSc7XG5pbXBvcnQge0VuYWlvRXZlbnR9IGZyb20gJy4uL2V2ZW50cy9ldmVudHMnO1xuaW1wb3J0IHtCcG1TZXJ2aWNlfSBmcm9tICcuLi9icG0vYnBtLnNlcnZpY2UnO1xuaW1wb3J0IHtHYXRld2F5SW5mb30gZnJvbSAnLi9nYXRld2F5LWluZm8uaW50ZXJmYWNlJztcbmltcG9ydCB7U3lzdGVtU3RhdHVzU2VydmljZX0gZnJvbSAnLi4vc3lzdGVtLXN0YXR1cy9zeXN0ZW0tc3RhdHVzLnNlcnZpY2UnO1xuaW1wb3J0IHtFbnZpcm9ubWVudEVuYWlvfSBmcm9tICcuLi8uLi9lbnZpcm9ubWVudC5lbmFpbyc7XG5pbXBvcnQge0xvZ2luRGV2aWNlUmVzdWx0LCBTdG9yZWRUb2tlbn0gZnJvbSAnLi9hdXRoLmNsb3VkLmludGVyZmFjZSc7XG5pbXBvcnQge1BsYXRmb3JtTG9jYXRpb259IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge0NvcmVDb25maWd9IGZyb20gJy4uLy4uL2NvbmZpZy9jb3JlLWNvbmZpZyc7XG5pbXBvcnQge0NPUkVfQ09ORklHfSBmcm9tICcuLi8uLi9jb25maWcvY29yZS1pbml0LnRva2Vucyc7XG5pbXBvcnQge0Vudmlyb25tZW50U2VydmljZX0gZnJvbSAnLi4vZW52aXJvbm1lbnQvZW52aXJvbm1lbnQuc2VydmljZSc7XG5cbi8qKlxuICogYEF1dGhTZXJ2aWNlYCBoYW5kbGVzIGF1dGhlbnRpY2F0aW9uIGFnYWluc3QgYW4geXV1dmlzPHN1cD4mcmVnOzwvc3VwPiBSQUQgYmFja2VuZC5cbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEF1dGhTZXJ2aWNlIHtcblxuICBwcml2YXRlIFRPS0VOX1NUT1JBR0VfS0VZID0gJ2VvLmF1dGguY2xvdWQuY3JlZGVudGlhbHMnO1xuICBwcml2YXRlIHVzZXJQcm9maWxlVXJpID0gdGhpcy51c2VyU2VydmljZS5VU0VSX0ZFVENIX1VSSTtcbiAgcHJpdmF0ZSBhdXRoU291cmNlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIHByaXZhdGUgbG9nZ2VkSW5DYWNoZUtleSA9ICdlby51c2VyLmxvZ2dlZEluJztcblxuICAvKipcbiAgICogT2JzZXJ2YWJsZSB0byBzdWJzY3JpYmUgdG8gZm9yIGdldHRpbmcgdGhlIHN0YXRlIG9mIGJlaW5nIGF1dGhlbnRpY2F0ZWQuIFdpbGwgZW1pdCB0cnVlIHdoZW4gYSB1c2VyIGxvZ2dlZCBpbixcbiAgICogZmFsc2Ugd2hlbiB0aGUgdXNlciBsb2dnZWQgb3V0IG9yIHRoZSBnYXRld2F5cyBzZXNzaW9uIHRpbWVkIG91dC5cbiAgICovXG4gIHB1YmxpYyBhdXRoZW50aWNhdGVkJDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IHRoaXMuYXV0aFNvdXJjZS5hc09ic2VydmFibGUoKTtcblxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgcHVibGljIGhvc3RzOiBzdHJpbmdbXSA9IFtdO1xuICBwcml2YXRlIGdhdGV3YXlJbmZvOiBHYXRld2F5SW5mbztcblxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgcHVibGljIHByb2ZpbGU6IEF1dGhQcm9maWxlID0ge1xuICAgIGhvc3Q6ICcnLFxuICAgIHVzZXI6IG51bGwsXG4gICAgYXV0aDogbnVsbCxcbiAgICBhY3RpdmU6IGZhbHNlXG4gIH07XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY29uZmlnOiBDb25maWcsXG4gICAgQEluamVjdChDT1JFX0NPTkZJRykgcHVibGljIGNvcmVDb25maWc6IENvcmVDb25maWcsXG4gICAgcHJpdmF0ZSBhcHBDYWNoZTogQXBwQ2FjaGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgZW52U2VydmljZTogRW52aXJvbm1lbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcbiAgICBwcml2YXRlIGJwbVNlcnZpY2U6IEJwbVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSxcbiAgICBwcml2YXRlIGxvY2F0aW9uOiBQbGF0Zm9ybUxvY2F0aW9uLFxuICAgIHByaXZhdGUgY2FwYWJpbGl0aWVzU2VydmljZTogQ2FwYWJpbGl0aWVzU2VydmljZSxcbiAgICBwcml2YXRlIGxvZ2dlcjogTG9nZ2VyLFxuICAgIHByaXZhdGUgaW5ib3hTZXJ2aWNlOiBJbmJveFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBwcmVwYXJlU2VydmljZTogUHJlcGFyZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBiYWNrZW5kOiBCYWNrZW5kU2VydmljZSxcbiAgICBwcml2YXRlIHN5c3RlbVNlcnZpY2U6IFN5c3RlbVNlcnZpY2UsXG4gICAgcHJpdmF0ZSB1c2VyU2VydmljZTogVXNlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBldmVudFNlcnZpY2U6IEV2ZW50U2VydmljZSxcbiAgICBwcml2YXRlIHN5c3RlbVN0YXR1c1NlcnZpY2U6IFN5c3RlbVN0YXR1c1NlcnZpY2UsXG4gICAgcHJvdGVjdGVkIHN0b3JhZ2U6IExvY2FsU3RvcmFnZSxcbiAgICBwcm90ZWN0ZWQgbG9jYWw6IExvY2FsU3RvcmFnZVNlcnZpY2UpIHtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignc3RvcmFnZScsIGV2dCA9PiB7XG4gICAgICBpZiAoZXZ0LmtleSA9PT0gdGhpcy5sb2dnZWRJbkNhY2hlS2V5KSB7XG4gICAgICAgIGNvbnN0IGhvc3QgPSBKU09OLnBhcnNlKGV2dC5uZXdWYWx1ZSkuaG9zdDtcbiAgICAgICAgdGhpcy5pbml0VXNlcihob3N0KS5zdWJzY3JpYmUoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMb2dpbiBhIHVzZXIgdXNpbmcgZm9ybSBiYXNlZCBsb2dpbi5cbiAgICogQHBhcmFtIGhvc3QgVGhlIHRhcmdldCBob3N0IChjb3VsZCBiZSBudWxsIGlmIHlvdSBhcmUgcnVubmluZyBpbiB3ZWIgZW52aXJvbm1lbnQpXG4gICAqIEBwYXJhbSB1c2VybmFtZSBUaGUgdXNlcm5hbWVcbiAgICogQHBhcmFtIHBhc3N3b3JkIFRoZSBwYXNzd29yZFxuICAgKiBAcmV0dXJucyBSZXNvbHZlcyB3aXRoIHRoZSBsb2dnZWQgaW4gdXNlclxuICAgKi9cbiAgcHVibGljIGxvZ2luKGhvc3Q6IHN0cmluZywgdXNlcm5hbWU6IHN0cmluZywgcGFzc3dvcmQ6IHN0cmluZyk6IE9ic2VydmFibGU8RW9Vc2VyPiB7XG5cbiAgICBob3N0ID0gaG9zdCB8fCAnJztcbiAgICBjb25zdCBmZCA9IG5ldyBGb3JtRGF0YSgpO1xuICAgIGZkLmFwcGVuZCgndXNlcm5hbWUnLCBlbmNvZGVVUklDb21wb25lbnQodXNlcm5hbWUpKTtcbiAgICBmZC5hcHBlbmQoJ3Bhc3N3b3JkJywgZW5jb2RlVVJJQ29tcG9uZW50KHBhc3N3b3JkKSk7XG5cbiAgICBjb25zdCBsb2dpbkhlYWRlciA9IG5ldyBIdHRwSGVhZGVycyh7XG4gICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCdcbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoaG9zdCArIHRoaXMuY29uZmlnLmdldExvZ2luQmFzZSgpICsgJy9sb2dpbicsXG4gICAgICBgdXNlcm5hbWU9JHtlbmNvZGVVUklDb21wb25lbnQodXNlcm5hbWUpfSZwYXNzd29yZD0ke2VuY29kZVVSSUNvbXBvbmVudChwYXNzd29yZCl9YCwge1xuICAgICAgaGVhZGVyczogbG9naW5IZWFkZXIsXG4gICAgICByZXNwb25zZVR5cGU6ICd0ZXh0JyxcbiAgICAgIHdpdGhDcmVkZW50aWFsczogdGhpcy5jb3JlQ29uZmlnLndpdGhDcmVkZW50aWFsc1xuICAgIH0pLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5pbml0VXNlcihob3N0KSlcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIExvZyBpbiB0byBhIGNsb3VkIGJhY2tlbmQgdXNpbmcgZGV2aWNlIGZsb3cuXG4gICAqIEBwYXJhbSBob3N0IFRoZSB0YXJnZXQgaG9zdCAoY291bGQgYmUgbnVsbCBpZiB5b3UgYXJlIHJ1bm5pbmcgaW4gd2ViIGVudmlyb25tZW50KVxuICAgKiBAcGFyYW0gdGVuYW50IFRoZSB0ZW5hbnRcbiAgICogQHJldHVybnMgUmVzb2x2ZXMgd2l0aCB0aGUgbG9nZ2VkIGluIHVzZXJcbiAgICovXG4gIHB1YmxpYyBjbG91ZExvZ2luKGhvc3Q6IHN0cmluZywgdGVuYW50OiBzdHJpbmcpOiBPYnNlcnZhYmxlPEVvVXNlcj4ge1xuICAgIHJldHVybiBPYnNlcnZhYmxlLmNyZWF0ZShvID0+IHtcbiAgICAgIGNvbnN0IHN0b3BUcmlnZ2VyJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gICAgICAvL2NvbnN0IHRhcmdldEhvc3QgPSB0aGlzLmxvY2F0aW9uLnBhdGhuYW1lLnN1YnN0cmluZygwLCB0aGlzLmxvY2F0aW9uLnBhdGhuYW1lLmluZGV4T2YoJy9lbnRlcicpKTsgLy8gaG9zdCB8fCAnJztcbiAgICAgIGNvbnN0IHRhcmdldEhvc3QgPSBob3N0IHx8ICcnO1xuICAgICAgLy8gc3RhcnQgYXV0aCBmbG93XG4gICAgICB0aGlzLmh0dHAuZ2V0KGAke3RhcmdldEhvc3R9L3RlbmFudC8ke3RlbmFudH0vbG9naW5EZXZpY2VgKS5zdWJzY3JpYmUoKHJlczogTG9naW5EZXZpY2VSZXN1bHQpID0+IHtcblxuICAgICAgICAvLyBvcGVuIG5ldyB3aW5kb3cgZm9yIHRoZSBhdXRoZW50aWNhdGlvbiBwcm9jZXNzIC4uLlxuICAgICAgICBjb25zdCB0YXJnZXRVcmkgPSBgJHt0YXJnZXRIb3N0fS9vYXV0aC8ke3RlbmFudH0/dXNlcl9jb2RlPSR7cmVzLnVzZXJfY29kZX1gO1xuICAgICAgICBjb25zdCB3aW4gPSB3aW5kb3cub3Blbih0YXJnZXRVcmksICdhdXRoJyk7XG4gICAgICAgIGlmICh3aW4pIHtcbiAgICAgICAgICAvLyBAc2VlOiBodHRwOi8vYXRhc2hiYWhhci5jb20vcG9zdC8yMDEwLTA0LTI3LWRldGVjdC13aGVuLWEtamF2YXNjcmlwdC1wb3B1cC13aW5kb3ctZ2V0cy1jbG9zZWRcbiAgICAgICAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB3aW5UaW1lciA9IHNldEludGVydmFsKCgpID0+IHtcbiAgICAgICAgICAgICAgaWYgKHdpbi5jbG9zZWQpIHtcbiAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKHdpblRpbWVyKTtcbiAgICAgICAgICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgc3RvcFRyaWdnZXIkLm5leHQoKTtcbiAgICAgICAgICAgICAgICAgIHN0b3BUcmlnZ2VyJC5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LCAxMDAwKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIC4uLiBhbmQgc3RhcnQgcG9sbGluZyBmb3IgYXV0aGVudGljYXRpb24gcmVzdWx0c1xuICAgICAgICB0aGlzLmNsb3VkTG9naW5Qb2xsRm9yUmVzdWx0KGAke3RhcmdldEhvc3R9L2F1dGgvaW5mby9zdGF0ZT9kZXZpY2VfY29kZT0ke3Jlcy5kZXZpY2VfY29kZX1gLCAxMDAwLCBzdG9wVHJpZ2dlciQpXG4gICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICB0YXAoKGFjY2Vzc1Rva2VuOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgICAgaWYgKGFjY2Vzc1Rva2VuKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jbG91ZExvZ2luU2V0SGVhZGVycyhhY2Nlc3NUb2tlbiwgdGVuYW50KTtcbiAgICAgICAgICAgICAgICBjb25zdCBzdG9yZVRva2VuOiBTdG9yZWRUb2tlbiA9IHtcbiAgICAgICAgICAgICAgICAgIHRlbmFudDogdGVuYW50LFxuICAgICAgICAgICAgICAgICAgYWNjZXNzVG9rZW46IGFjY2Vzc1Rva2VuXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0b3JhZ2Uuc2V0SXRlbSh0aGlzLlRPS0VOX1NUT1JBR0VfS0VZLCBzdG9yZVRva2VuKS5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBzd2l0Y2hNYXAoKGF1dGhSZXM6IGFueSkgPT4ge1xuICAgICAgICAgICAgICBpZiAoYXV0aFJlcykge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmluaXRVc2VyKHRhcmdldEhvc3QpO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRocm93RXJyb3IoJ25vdCBhdXRoZW50aWNhdGVkJyk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKS5zdWJzY3JpYmUoXG4gICAgICAgICAgICAodXNlcjogRW9Vc2VyKSA9PiB7XG5cbiAgICAgICAgICAgICAgd2luLmNsb3NlKCk7XG4gICAgICAgICAgICAgIG8ubmV4dCh1c2VyKTtcbiAgICAgICAgICAgICAgby5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgfSwgZXJyID0+IHtcbiAgICAgICAgICAgICAgd2luLmNsb3NlKCk7XG4gICAgICAgICAgICAgIG8uZXJyb3IoZXJyKTtcbiAgICAgICAgICAgICAgby5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIClcbiAgICAgIH0sIGVyciA9PiB7XG4gICAgICAgIG8uZXJyb3IoJ3VuYWJsZSB0byBjYWxsIGRldmljZSBmbG93IGVuZHBvaW50JywgZXJyKTtcbiAgICAgICAgby5jb21wbGV0ZSgpO1xuICAgICAgfSlcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdGFydHMgcG9sbGluZyBmb3IgbG9naW4gcmVzdWx0cyBpbiBjYXNlIG9mIGxvZ2dpbmcgaW4gdG8gYSBjbG91ZCBiYWNrZW5kLlxuICAgKiBAcGFyYW0gdXJpIFVSSSB0byBwb2xsXG4gICAqIEBwYXJhbSBwb2xsaW5nSW50ZXJ2YWwgUG9sbGluZyBpbnRlcnZhbGwgaW4gbWlsbGlzZWNvbmRzXG4gICAqIEBwYXJhbSBzdG9wVHJpZ2dlciBTdWJqZWN0IGFjdGluZyBhcyBzdG9wIHRyaWdnZXJcbiAgICogQHJldHVybnMgQWNjZXNzIFRva2VuIGlmIGxvZ2dlZCBpbiBzdWNjZXNzZnVsbHkgb3IgTlVMTCBvdGhlcndpc2VcbiAgICovXG4gIHByaXZhdGUgY2xvdWRMb2dpblBvbGxGb3JSZXN1bHQodXJpOiBzdHJpbmcsIHBvbGxpbmdJbnRlcnZhbDogbnVtYmVyLCBzdG9wVHJpZ2dlcjogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCkpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuXG4gICAgcmV0dXJuIE9ic2VydmFibGUuY3JlYXRlKG8gPT4ge1xuICAgICAgbGV0IGFjY2Vzc0dyYW50ZWQgPSBmYWxzZTtcbiAgICAgIGxldCBhY2Nlc3NEZW5pZWQgPSBmYWxzZTtcblxuICAgICAgdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICBpbnRlcnZhbChwb2xsaW5nSW50ZXJ2YWwpLnBpcGUoXG4gICAgICAgICAgdGFrZVVudGlsKHN0b3BUcmlnZ2VyKSxcbiAgICAgICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5odHRwLmdldCh1cmkpLnBpcGUoXG4gICAgICAgICAgICBjYXRjaEVycm9yKChlcnI6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgIC8vIE9BdXRoIHN0YW5kYXJkIHdlIGFyZSB1c2luZyBpcyByZXR1cm5pbmcgd2l0aCBhIHN0YXR1cyBvZiA0MDAgd2hpbGUgbG9nZ2luZyBpbiAobm8gaWRlYSB3aHk/Pz8pXG4gICAgICAgICAgICAgIC8vIHNvIHdlIGdvdCB0byBmZXRjaCB0aGF0IHRvIG5vdCBicmVhayB0aGUgcGFyZW50IHBpcGVcbiAgICAgICAgICAgICAgaWYgKGVyci5zdGF0dXMgPT09IDQwMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBvYnNlcnZhYmxlT2YoZXJyLmVycm9yKTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aHJvd0Vycm9yKGVycik7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKSlcbiAgICAgICAgKS5zdWJzY3JpYmUoXG4gICAgICAgICAgKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgICAgICBhY2Nlc3NHcmFudGVkID0gISFyZXMuYWNjZXNzX3Rva2VuO1xuICAgICAgICAgICAgICBhY2Nlc3NEZW5pZWQgPSByZXMuZXJyb3IgPT09ICdhY2Nlc3NfZGVuaWVkJztcblxuICAgICAgICAgICAgICBpZiAoYWNjZXNzR3JhbnRlZCB8fCBhY2Nlc3NEZW5pZWQpIHtcbiAgICAgICAgICAgICAgICAvLyBsb2dnZWQgaW5cbiAgICAgICAgICAgICAgICBzdG9wVHJpZ2dlci5uZXh0KCk7XG4gICAgICAgICAgICAgICAgc3RvcFRyaWdnZXIuY29tcGxldGUoKTtcbiAgICAgICAgICAgICAgICBvLm5leHQoYWNjZXNzR3JhbnRlZCA/IHJlcy5hY2Nlc3NfdG9rZW4gOiBudWxsKTtcbiAgICAgICAgICAgICAgICBvLmNvbXBsZXRlKCk7XG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAocmVzLmVycm9yID09PSAnZXhwaXJlZF90b2tlbicpIHtcbiAgICAgICAgICAgICAgICAvLyBleHBpcmVkIHNvIHNraXAgcG9sbGluZ1xuICAgICAgICAgICAgICAgIHRocm93RXJyb3IoJ1Rva2VuIGV4cGlyZWQnKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSwgZXJyID0+IHtcbiAgICAgICAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgICAgIG8uZXJyb3IoZXJyKTtcbiAgICAgICAgICAgICAgby5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSwgKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgICAgby5uZXh0KGFjY2Vzc0dyYW50ZWQpO1xuICAgICAgICAgICAgICBvLmNvbXBsZXRlKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBjbG91ZExvZ2luU2V0SGVhZGVycyhhY2Nlc3NUb2tlbjogc3RyaW5nLCB0ZW5hbnQ6IHN0cmluZykge1xuICAgIHRoaXMuYmFja2VuZC5zZXRIZWFkZXIoJ0F1dGhvcml6YXRpb24nLCAnYmVhcmVyICcgKyBhY2Nlc3NUb2tlbik7XG4gICAgdGhpcy5iYWNrZW5kLnNldEhlYWRlcignWC1JRC1URU5BTlQtTkFNRScsIHRlbmFudCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyBjYWxsZWQgd2hpbGUgYXBwIGluaXRcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgaW5pdFVzZXIoaG9zdD86IHN0cmluZykge1xuXG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycyh7XG4gICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nXG4gICAgfSk7XG5cbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAuZ2V0KGAke2hvc3QgfHwgJyd9JHt0aGlzLmNvbmZpZy5nZXRMb2dpbkJhc2UoKX0vYXV0aC9pbmZvYCwge2hlYWRlcnMsIHdpdGhDcmVkZW50aWFsczogdGhpcy5jb3JlQ29uZmlnLndpdGhDcmVkZW50aWFsc30pXG4gICAgICAucGlwZShzd2l0Y2hNYXAoKGluZm86IEdhdGV3YXlJbmZvKSA9PiB7XG4gICAgICAgIHRoaXMuZ2F0ZXdheUluZm8gPSBpbmZvO1xuXG4gICAgICAgIHRoaXMuZW52U2VydmljZS5jbG91ZEVudmlyb25tZW50ID0gKHRoaXMuZ2F0ZXdheUluZm8gJiYgdGhpcy5nYXRld2F5SW5mby5vYXV0aDIpO1xuICAgICAgICBpZiAodGhpcy5pc0Nsb3VkRW52aXJvbm1lbnQoKSkge1xuICAgICAgICAgIC8vIGluIGNhc2Ugb2YgcnVubmluZyBhZ2FpbnN0IGNsb3VkIGJhY2tlbmQsIHdlIHRyeSB0byBmZXRjaFxuICAgICAgICAgIC8vIGFjY2VzcyB0b2tlbiBhbmQgdGVuYW50IGZyb20gbG9jYWwgc3RvcmFnZVxuICAgICAgICAgIHJldHVybiB0aGlzLnN0b3JhZ2UuZ2V0SXRlbSh0aGlzLlRPS0VOX1NUT1JBR0VfS0VZKS5waXBlKFxuICAgICAgICAgICAgc3dpdGNoTWFwKChyZXM6IGFueSkgPT4ge1xuICAgICAgICAgICAgICBpZiAocmVzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jbG91ZExvZ2luU2V0SGVhZGVycyhyZXMuYWNjZXNzVG9rZW4sIHJlcy50ZW5hbnQpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJldHVybiB0aGlzLmZldGNoVXNlcihpbmZvLCBob3N0KTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiB0aGlzLmZldGNoVXNlcihpbmZvLCBob3N0KVxuICAgICAgICB9XG4gICAgICB9KSk7XG4gIH1cblxuICAvKipcbiAgICpcbiAgICogQHBhcmFtIGdhdGV3YXlJbmZvXG4gICAqIEBwYXJhbSBob3N0XG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8RW9Vc2VyPlxuICAgKi9cbiAgcHJpdmF0ZSBmZXRjaFVzZXIoZ2F0ZXdheUluZm86IGFueSwgaG9zdD86IHN0cmluZyk6IE9ic2VydmFibGU8RW9Vc2VyPiB7XG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycyh7XG4gICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nXG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLmdldChgJHtob3N0IHx8ICcnfSR7dGhpcy5jb25maWcuZ2V0VXJpKCdzZXJ2aWNlQmFzZScpfSR7dGhpcy51c2VyUHJvZmlsZVVyaX1gLCB7aGVhZGVycywgd2l0aENyZWRlbnRpYWxzOiB0aGlzLmNvcmVDb25maWcud2l0aENyZWRlbnRpYWxzfSlcbiAgICAgIC5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoKHVzZXI6IGFueSkgPT4ge1xuICAgICAgICAgIHRoaXMucHJvZmlsZSA9IHtcbiAgICAgICAgICAgIGhvc3Q6IGhvc3QgfHwgJycsXG4gICAgICAgICAgICB1c2VyOiB1c2VyLnVzZXIubmFtZSxcbiAgICAgICAgICAgIGF1dGg6IG51bGwsXG4gICAgICAgICAgICBhY3RpdmU6IHRydWVcbiAgICAgICAgICB9O1xuICAgICAgICAgIGlmIChob3N0KSB7XG4gICAgICAgICAgICB0aGlzLmFkZEhvc3RDb25maWcoaG9zdCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLmxvZ2dlZEluQ2FjaGVLZXksIEpTT04uc3RyaW5naWZ5KHt1c2VySWQ6IHVzZXIudXNlci5pZCwgaG9zdDogaG9zdH0pKTtcbiAgICAgICAgICByZXR1cm4gdGhpcy5pbml0QXBwKHVzZXIsIGdhdGV3YXlJbmZvLm50bG0pO1xuICAgICAgICB9KSxcbiAgICAgICAgdGFwKCgpID0+IHRoaXMuYXV0aFNvdXJjZS5uZXh0KHRoaXMuaXNMb2dnZWRJbigpKSlcbiAgICAgICk7XG4gIH1cblxuICAvKipcbiAgICogTG9ncyBvdXQgdGhlIGN1cnJlbnQgdXNlci5cbiAgICogQHBhcmFtIGdhdGV3YXlMb2dvdXQgRmxhZyBpbmRpY2F0aW5nIHdoZXRoZXIgb3Igbm90IHRvIHBlcmZvcm0gYSBnYXRld2F5IGxvZ291dCBhcyB3ZWxsXG4gICAqL1xuICBwdWJsaWMgbG9nb3V0KGdhdGV3YXlMb2dvdXQ/OiBib29sZWFuKSB7XG5cbiAgICB0aGlzLmF1dGhTb3VyY2UubmV4dChmYWxzZSk7XG4gICAgdGhpcy5zeXN0ZW1TdGF0dXNTZXJ2aWNlLnN0b3AoKTtcblxuICAgIHRoaXMucHJvZmlsZSA9IHtcbiAgICAgIGhvc3Q6ICcnLFxuICAgICAgdXNlcjogbnVsbCxcbiAgICAgIGF1dGg6IG51bGwsXG4gICAgICBhY3RpdmU6IGZhbHNlXG4gICAgfTtcblxuICAgIGlmICh0aGlzLmlzQ2xvdWRFbnZpcm9ubWVudCgpKSB7XG4gICAgICAvLyByZW1vdmUgc3RvcmVkIGFjY2VzcyBkYXRhXG4gICAgICB0aGlzLnN0b3JhZ2UucmVtb3ZlSXRlbSh0aGlzLlRPS0VOX1NUT1JBR0VfS0VZKS5zdWJzY3JpYmUoKTtcbiAgICAgIGlmICh0aGlzLmNvcmVDb25maWcuZW52aXJvbm1lbnQucHJvZHVjdGlvbiAmJiBFbnZpcm9ubWVudEVuYWlvLmlzV2ViRW52aXJvbm1lbnQoKSkge1xuICAgICAgICAod2luZG93IGFzIGFueSkubG9jYXRpb24uaHJlZiA9IHRoaXMuY29uZmlnLmdldExvZ2luQmFzZSgpICsgJy9sb2dvdXQnO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChnYXRld2F5TG9nb3V0KSB7XG4gICAgICAvLyBieSBkZWZhdWx0IHdlIGFyZSBqdXN0IHJlc2V0dGluZyBpbnRlcm5hbCBzdGF0ZSB0byAnbG9nZ2VkIG91dCcgYW5kIGluXG4gICAgICAvLyBzb21lIGNhc2VzIGNhbGwgZ2F0ZXdheXMgbG9nb3V0IGVuZHBvaW50IHRvIGRvIGxvZ291dCBzdHVmZiB0aGVyZSBzaWxlbnRseVxuICAgICAgdGhpcy5odHRwLmdldChgJHt0aGlzLnByb2ZpbGUuaG9zdCB8fCAnJ30ke3RoaXMuY29uZmlnLmdldExvZ2luQmFzZSgpfS9sb2dvdXRgLCB7d2l0aENyZWRlbnRpYWxzOiB0aGlzLmNvcmVDb25maWcud2l0aENyZWRlbnRpYWxzfSkuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG5cbiAgICB0aGlzLmJhY2tlbmQuc2V0QXV0aFByb2ZpbGUodGhpcy5wcm9maWxlKTtcbiAgICB0aGlzLmV2ZW50U2VydmljZS50cmlnZ2VyKEVuYWlvRXZlbnQuTE9HT1VUKTtcbiAgfVxuXG4gIGlzQ2xvdWRFbnZpcm9ubWVudCgpOiBib29sZWFuIHtcbiAgICAvLyBvYXV0aDIgaW5kaWNhdGVzIHRoYXQgd2UgYXJlIHJ1bm5pbmcgaW4gYSBjbG91ZCBlbnZpcm9ubWVudFxuICAgIHJldHVybiB0aGlzLmdhdGV3YXlJbmZvICYmIHRoaXMuZ2F0ZXdheUluZm8ub2F1dGgyO1xuICB9XG5cbiAgLyoqXG4gICAqIGZvciBkZXNrdG9wIGFuZCBtb2JpbGUgZGV2aWNlcyB3ZSBwcm92aWRlIGEgbGlzdCBvZiBob3N0cyBmb3IgdGhlIGxvZ2luXG4gICAqXG4gICAqIEBwYXJhbSBzdHJpbmcgaG9zdFxuICAgKi9cbiAgcHJpdmF0ZSBhZGRIb3N0Q29uZmlnKGhvc3Q6IHN0cmluZykge1xuICAgIGNvbnN0IGV4aXN0aW5nSG9zdCA9IHRoaXMuaG9zdHMuZmluZChoID0+IGggPT09IGhvc3QpO1xuICAgIGlmICghZXhpc3RpbmdIb3N0KSB7XG4gICAgICB0aGlzLmhvc3RzLnB1c2goaG9zdCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgY3VycmVudCBzdGF0ZSBvZiBhIHVzZXIgYmVpbmcgbG9nZ2VkIGluLiBUaGlzIGlzIGtpbmQgb2YgdGhlIHN5bmNocm9ub3VzIHZlcnNpb24gb2Ygc3Vic2NyaWJpbmcgdG8gYGF1dGhlbnRpY2F0ZWQkYC5cbiAgICogQHJldHVybnMgVHJ1ZSBpZiB0aGVyZSBpcyBhIGxvZ2dlZCBpbiB1c2VyLCBmYWxzZSBvdGhlcndpc2VcbiAgICovXG4gIHB1YmxpYyBpc0xvZ2dlZEluKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnByb2ZpbGUudXNlciAhPT0gbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKiBAcGFyYW0gdXNlclxuICAgKiBAcGFyYW0gYm9vbGVhbiBzc29cbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxFb1VzZXI+XG4gICAqL1xuICBwcml2YXRlIGluaXRBcHAodXNlcjogYW55LCBzc28/OiBib29sZWFuKTogT2JzZXJ2YWJsZTxFb1VzZXI+IHtcblxuICAgIGNvbnN0IGN1cnJVc2VyID0gbmV3IEVvVXNlcih1c2VyKTtcbiAgICB0aGlzLmJhY2tlbmQuc2V0QXV0aFByb2ZpbGUodGhpcy5wcm9maWxlKTtcbiAgICB0aGlzLnVzZXJTZXJ2aWNlLnNldEN1cnJlbnRVc2VyKHVzZXIpO1xuICAgIGNvbnN0IGNhcGFiaWxpdGllcyA9IHRoaXMuY2FwYWJpbGl0aWVzU2VydmljZS5zZXRDYXBhYmlsaXRpZXModXNlci5jYXBhYmlsaXRpZXMsIHNzbyk7XG5cbiAgICB0aGlzLnN5c3RlbVN0YXR1c1NlcnZpY2UuaW5pdCh0aGlzLmNvbmZpZy5nZXRSYXcoJ3N5c3RlbVN0YXR1c1VwZGF0ZUludGVydmFsJykpO1xuXG4gICAgLy8gdXBkYXRlIHN0YXRlc1xuICAgIGlmIChjYXBhYmlsaXRpZXMuaW5ib3gpIHtcbiAgICAgIHRoaXMuaW5ib3hTZXJ2aWNlLnJlZnJlc2hJbmJveFN0YXRlKCk7XG4gICAgfVxuICAgIGlmIChjYXBhYmlsaXRpZXMuaW50cmF5KSB7XG4gICAgICB0aGlzLnByZXBhcmVTZXJ2aWNlLnJlZnJlc2hQcmVwYXJlZEl0ZW1zQ291bnQoKTtcbiAgICB9XG5cbiAgICBjb25zdCB0b2RvID0gW1xuICAgICAgdGhpcy5icG1TZXJ2aWNlLmluaXRFeGVjdXRhYmxlUHJvY2Vzc2VzKCksXG4gICAgICB0aGlzLnN5c3RlbVNlcnZpY2UuZ2V0U3lzdGVtRGVmaW5pdGlvbihjdXJyVXNlcilcbiAgICBdO1xuXG4gICAgcmV0dXJuIG9ic2VydmFibGVGb3JrSm9pbih0b2RvKS5waXBlKFxuICAgICAgbWFwKCgpID0+IGN1cnJVc2VyKVxuICAgICk7XG4gIH1cbn1cbiJdfQ==
376
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZW8tc2RrL2NvcmUvc3JjL2xpYi9zZXJ2aWNlL2F1dGgvYXV0aC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxlQUFlLEVBQUUsVUFBVSxFQUFFLFFBQVEsSUFBSSxrQkFBa0IsRUFDM0QsRUFBRSxJQUFJLFlBQVksRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFDbEQsTUFBTSxNQUFNLENBQUM7QUFDZCxPQUFPLEVBQUMsR0FBRyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzFFLE9BQU8sRUFBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN6RCxPQUFPLEVBQUMsVUFBVSxFQUFxQixXQUFXLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUNoRixPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDM0QsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQ2hELE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUNqRCxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDdkQsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQzFELE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUNqRCxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFFeEMsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQzFELE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUNwRCxPQUFPLEVB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QUMsaUJBQWlCLEVBQUUsQ0FBQztTQUN2QztRQUNELElBQUksWUFBWSxDQUFDLE1BQU0sRUFBRTtZQUN2QixJQUFJLENBQUMsY0FBYyxDQUFDLHlCQUF5QixFQUFFLENBQUM7U0FDakQ7UUFFRCxNQUFNLElBQUksR0FBRztZQUNYLElBQUksQ0FBQyxVQUFVLENBQUMsdUJBQXVCLEVBQUU7WUFDekMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLENBQUM7U0FDakQsQ0FBQztRQUVGLE9BQU8sa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUNsQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQ3BCLENBQUM7SUFDSixDQUFDOzs7WUF4WEYsVUFBVTs7O1lBM0JILE1BQU07WUFvQk4sVUFBVSx1QkF5Q2IsTUFBTSxTQUFDLFdBQVc7WUE5RGYsZUFBZTtZQXVCZixrQkFBa0I7WUF4QmxCLFVBQVU7WUFnQlYsVUFBVTtZQWpCVSxNQUFNO1lBc0IxQixnQkFBZ0I7WUFWaEIsbUJBQW1CO1lBSm5CLE1BQU07WUFHTixZQUFZO1lBRFosY0FBYztZQUpkLGNBQWM7WUFEZCxhQUFhO1lBRWIsV0FBVztZQVFYLFlBQVk7WUFJWixtQkFBbUI7WUFObkIsWUFBWTtZQUNaLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgZm9ya0pvaW4gYXMgb2JzZXJ2YWJsZUZvcmtKb2luLFxuICBvZiBhcyBvYnNlcnZhYmxlT2YsIFN1YmplY3QsIHRocm93RXJyb3IsIGludGVydmFsXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHttYXAsIHN3aXRjaE1hcCwgdGFrZVVudGlsLCB0YXAsIGNhdGNoRXJyb3J9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7SW5qZWN0LCBJbmplY3RhYmxlLCBOZ1pvbmV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtIdHRwQ2xpZW50LCBIdHRwRXJyb3JSZXNwb25zZSwgSHR0cEhlYWRlcnN9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7QXBwQ2FjaGVTZXJ2aWNlfSBmcm9tICcuLi9jYWNoZS9hcHAtY2FjaGUuc2VydmljZSc7XG5pbXBvcnQge0NvbmZpZ30gZnJvbSAnLi4vY29uZmlnL2NvbmZpZy5zZXJ2aWNlJztcbmltcG9ydCB7RW9Vc2VyfSBmcm9tICcuLi8uLi9tb2RlbC9lby11c2VyLm1vZGVsJztcbmltcG9ydCB7U3lzdGVtU2VydmljZX0gZnJvbSAnLi4vc3lzdGVtL3N5c3RlbS5zZXJ2aWNlJztcbmltcG9ydCB7QmFja2VuZFNlcnZpY2V9IGZyb20gJy4uL2JhY2tlbmQvYmFja2VuZC5zZXJ2aWNlJztcbmltcG9ydCB7VXNlclNlcnZpY2V9IGZyb20gJy4uL3VzZXIvdXNlci5zZXJ2aWNlJztcbmltcG9ydCB7TG9nZ2VyfSBmcm9tICcuLi9sb2dnZXIvbG9nZ2VyJztcbmltcG9ydCB7QXV0aFByb2ZpbGV9IGZyb20gJy4vYXV0aC1wcm9maWxlLmludGVyZmFjZSc7XG5pbXBvcnQge1ByZXBhcmVTZXJ2aWNlfSBmcm9tICcuLi9wcmVwYXJlL3ByZXBhcmUuc2VydmljZSc7XG5pbXBvcnQge0luYm94U2VydmljZX0gZnJvbSAnLi4vaW5ib3gvaW5ib3guc2VydmljZSc7XG5pbXBvcnQge0NhcGFiaWxpdGllc1NlcnZpY2V9IGZyb20gJy4uL2NhcGFiaWxpdGllcy9jYXBhYmlsaXRpZXMuc2VydmljZSc7XG5pbXBvcnQge0xvY2FsU3RvcmFnZX0gZnJvbSAnQG5neC1wd2EvbG9jYWwtc3RvcmFnZSc7XG5pbXBvcnQge0xvY2FsU3RvcmFnZVNlcnZpY2V9IGZyb20gJy4uL3N0b3JhZ2UvbG9jYWwtc3RvcmFnZS5zZXJ2aWNlJztcbmltcG9ydCB7RXZlbnRTZXJ2aWNlfSBmcm9tICcuLi9ldmVudHMvZXZlbnQuc2VydmljZSc7XG5pbXBvcnQge0VuYWlvRXZlbnR9IGZyb20gJy4uL2V2ZW50cy9ldmVudHMnO1xuaW1wb3J0IHtCcG1TZXJ2aWNlfSBmcm9tICcuLi9icG0vYnBtLnNlcnZpY2UnO1xuaW1wb3J0IHtHYXRld2F5SW5mb30gZnJvbSAnLi9nYXRld2F5LWluZm8uaW50ZXJmYWNlJztcbmltcG9ydCB7U3lzdGVtU3RhdHVzU2VydmljZX0gZnJvbSAnLi4vc3lzdGVtLXN0YXR1cy9zeXN0ZW0tc3RhdHVzLnNlcnZpY2UnO1xuaW1wb3J0IHtFbnZpcm9ubWVudEVuYWlvfSBmcm9tICcuLi8uLi9lbnZpcm9ubWVudC5lbmFpbyc7XG5pbXBvcnQge0xvZ2luRGV2aWNlUmVzdWx0LCBTdG9yZWRUb2tlbn0gZnJvbSAnLi9hdXRoLmNsb3VkLmludGVyZmFjZSc7XG5pbXBvcnQge1BsYXRmb3JtTG9jYXRpb259IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge0NvcmVDb25maWd9IGZyb20gJy4uLy4uL2NvbmZpZy9jb3JlLWNvbmZpZyc7XG5pbXBvcnQge0NPUkVfQ09ORklHfSBmcm9tICcuLi8uLi9jb25maWcvY29yZS1pbml0LnRva2Vucyc7XG5pbXBvcnQge0Vudmlyb25tZW50U2VydmljZX0gZnJvbSAnLi4vZW52aXJvbm1lbnQvZW52aXJvbm1lbnQuc2VydmljZSc7XG5cbi8qKlxuICogYEF1dGhTZXJ2aWNlYCBoYW5kbGVzIGF1dGhlbnRpY2F0aW9uIGFnYWluc3QgYW4geXV1dmlzPHN1cD4mcmVnOzwvc3VwPiBSQUQgYmFja2VuZC5cbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEF1dGhTZXJ2aWNlIHtcblxuICBwcml2YXRlIFRPS0VOX1NUT1JBR0VfS0VZID0gJ2VvLmF1dGguY2xvdWQuY3JlZGVudGlhbHMnO1xuICBwcml2YXRlIHVzZXJQcm9maWxlVXJpID0gdGhpcy51c2VyU2VydmljZS5VU0VSX0ZFVENIX1VSSTtcbiAgcHJpdmF0ZSBhdXRoU291cmNlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIHByaXZhdGUgbG9nZ2VkSW5DYWNoZUtleSA9ICdlby51c2VyLmxvZ2dlZEluJztcblxuICAvKipcbiAgICogT2JzZXJ2YWJsZSB0byBzdWJzY3JpYmUgdG8gZm9yIGdldHRpbmcgdGhlIHN0YXRlIG9mIGJlaW5nIGF1dGhlbnRpY2F0ZWQuIFdpbGwgZW1pdCB0cnVlIHdoZW4gYSB1c2VyIGxvZ2dlZCBpbixcbiAgICogZmFsc2Ugd2hlbiB0aGUgdXNlciBsb2dnZWQgb3V0IG9yIHRoZSBnYXRld2F5cyBzZXNzaW9uIHRpbWVkIG91dC5cbiAgICovXG4gIHB1YmxpYyBhdXRoZW50aWNhdGVkJDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IHRoaXMuYXV0aFNvdXJjZS5hc09ic2VydmFibGUoKTtcblxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgcHVibGljIGhvc3RzOiBzdHJpbmdbXSA9IFtdO1xuICBwcml2YXRlIGdhdGV3YXlJbmZvOiBHYXRld2F5SW5mbztcblxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgcHVibGljIHByb2ZpbGU6IEF1dGhQcm9maWxlID0ge1xuICAgIGhvc3Q6ICcnLFxuICAgIHVzZXI6IG51bGwsXG4gICAgYXV0aDogbnVsbCxcbiAgICBhY3RpdmU6IGZhbHNlXG4gIH07XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY29uZmlnOiBDb25maWcsXG4gICAgQEluamVjdChDT1JFX0NPTkZJRykgcHVibGljIGNvcmVDb25maWc6IENvcmVDb25maWcsXG4gICAgcHJpdmF0ZSBhcHBDYWNoZTogQXBwQ2FjaGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgZW52U2VydmljZTogRW52aXJvbm1lbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcbiAgICBwcml2YXRlIGJwbVNlcnZpY2U6IEJwbVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSxcbiAgICBwcml2YXRlIGxvY2F0aW9uOiBQbGF0Zm9ybUxvY2F0aW9uLFxuICAgIHByaXZhdGUgY2FwYWJpbGl0aWVzU2VydmljZTogQ2FwYWJpbGl0aWVzU2VydmljZSxcbiAgICBwcml2YXRlIGxvZ2dlcjogTG9nZ2VyLFxuICAgIHByaXZhdGUgaW5ib3hTZXJ2aWNlOiBJbmJveFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBwcmVwYXJlU2VydmljZTogUHJlcGFyZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBiYWNrZW5kOiBCYWNrZW5kU2VydmljZSxcbiAgICBwcml2YXRlIHN5c3RlbVNlcnZpY2U6IFN5c3RlbVNlcnZpY2UsXG4gICAgcHJpdmF0ZSB1c2VyU2VydmljZTogVXNlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBldmVudFNlcnZpY2U6IEV2ZW50U2VydmljZSxcbiAgICBwcml2YXRlIHN5c3RlbVN0YXR1c1NlcnZpY2U6IFN5c3RlbVN0YXR1c1NlcnZpY2UsXG4gICAgcHJvdGVjdGVkIHN0b3JhZ2U6IExvY2FsU3RvcmFnZSxcbiAgICBwcm90ZWN0ZWQgbG9jYWw6IExvY2FsU3RvcmFnZVNlcnZpY2UpIHtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignc3RvcmFnZScsIGV2dCA9PiB7XG4gICAgICBpZiAoZXZ0LmtleSA9PT0gdGhpcy5sb2dnZWRJbkNhY2hlS2V5KSB7XG4gICAgICAgIGNvbnN0IGhvc3QgPSBKU09OLnBhcnNlKGV2dC5uZXdWYWx1ZSkuaG9zdDtcbiAgICAgICAgdGhpcy5pbml0VXNlcihob3N0KS5zdWJzY3JpYmUoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMb2dpbiBhIHVzZXIgdXNpbmcgZm9ybSBiYXNlZCBsb2dpbi5cbiAgICogQHBhcmFtIGhvc3QgVGhlIHRhcmdldCBob3N0IChjb3VsZCBiZSBudWxsIGlmIHlvdSBhcmUgcnVubmluZyBpbiB3ZWIgZW52aXJvbm1lbnQpXG4gICAqIEBwYXJhbSB1c2VybmFtZSBUaGUgdXNlcm5hbWVcbiAgICogQHBhcmFtIHBhc3N3b3JkIFRoZSBwYXNzd29yZFxuICAgKiBAcmV0dXJucyBSZXNvbHZlcyB3aXRoIHRoZSBsb2dnZWQgaW4gdXNlclxuICAgKi9cbiAgcHVibGljIGxvZ2luKGhvc3Q6IHN0cmluZywgdXNlcm5hbWU6IHN0cmluZywgcGFzc3dvcmQ6IHN0cmluZyk6IE9ic2VydmFibGU8RW9Vc2VyPiB7XG5cbiAgICBob3N0ID0gaG9zdCB8fCAnJztcbiAgICBjb25zdCBmZCA9IG5ldyBGb3JtRGF0YSgpO1xuICAgIGZkLmFwcGVuZCgndXNlcm5hbWUnLCBlbmNvZGVVUklDb21wb25lbnQodXNlcm5hbWUpKTtcbiAgICBmZC5hcHBlbmQoJ3Bhc3N3b3JkJywgZW5jb2RlVVJJQ29tcG9uZW50KHBhc3N3b3JkKSk7XG5cbiAgICBjb25zdCBsb2dpbkhlYWRlciA9IG5ldyBIdHRwSGVhZGVycyh7XG4gICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCdcbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoaG9zdCArIHRoaXMuY29uZmlnLmdldENvbnRleHRQYXRoKCkgKyAnL2xvZ2luJyxcbiAgICAgIGB1c2VybmFtZT0ke2VuY29kZVVSSUNvbXBvbmVudCh1c2VybmFtZSl9JnBhc3N3b3JkPSR7ZW5jb2RlVVJJQ29tcG9uZW50KHBhc3N3b3JkKX1gLCB7XG4gICAgICBoZWFkZXJzOiBsb2dpbkhlYWRlcixcbiAgICAgIHJlc3BvbnNlVHlwZTogJ3RleHQnLFxuICAgICAgd2l0aENyZWRlbnRpYWxzOiB0aGlzLmNvcmVDb25maWcud2l0aENyZWRlbnRpYWxzXG4gICAgfSkucGlwZShcbiAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLmluaXRVc2VyKGhvc3QpKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogTG9nIGluIHRvIGEgY2xvdWQgYmFja2VuZCB1c2luZyBkZXZpY2UgZmxvdy5cbiAgICogQHBhcmFtIGhvc3QgVGhlIHRhcmdldCBob3N0IChjb3VsZCBiZSBudWxsIGlmIHlvdSBhcmUgcnVubmluZyBpbiB3ZWIgZW52aXJvbm1lbnQpXG4gICAqIEBwYXJhbSB0ZW5hbnQgVGhlIHRlbmFudFxuICAgKiBAcmV0dXJucyBSZXNvbHZlcyB3aXRoIHRoZSBsb2dnZWQgaW4gdXNlclxuICAgKi9cbiAgcHVibGljIGNsb3VkTG9naW4oaG9zdDogc3RyaW5nLCB0ZW5hbnQ6IHN0cmluZyk6IE9ic2VydmFibGU8RW9Vc2VyPiB7XG4gICAgcmV0dXJuIE9ic2VydmFibGUuY3JlYXRlKG8gPT4ge1xuICAgICAgY29uc3Qgc3RvcFRyaWdnZXIkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgICAgIC8vY29uc3QgdGFyZ2V0SG9zdCA9IHRoaXMubG9jYXRpb24ucGF0aG5hbWUuc3Vic3RyaW5nKDAsIHRoaXMubG9jYXRpb24ucGF0aG5hbWUuaW5kZXhPZignL2VudGVyJykpOyAvLyBob3N0IHx8ICcnO1xuICAgICAgY29uc3QgdGFyZ2V0SG9zdCA9IGhvc3QgfHwgJyc7XG4gICAgICAvLyBzdGFydCBhdXRoIGZsb3dcbiAgICAgIHRoaXMuaHR0cC5nZXQoYCR7dGFyZ2V0SG9zdH0vdGVuYW50LyR7dGVuYW50fS9sb2dpbkRldmljZWApLnN1YnNjcmliZSgocmVzOiBMb2dpbkRldmljZVJlc3VsdCkgPT4ge1xuXG4gICAgICAgIC8vIG9wZW4gbmV3IHdpbmRvdyBmb3IgdGhlIGF1dGhlbnRpY2F0aW9uIHByb2Nlc3MgLi4uXG4gICAgICAgIGNvbnN0IHRhcmdldFVyaSA9IGAke3RhcmdldEhvc3R9L29hdXRoLyR7dGVuYW50fT91c2VyX2NvZGU9JHtyZXMudXNlcl9jb2RlfWA7XG4gICAgICAgIGNvbnN0IHdpbiA9IHdpbmRvdy5vcGVuKHRhcmdldFVyaSwgJ2F1dGgnKTtcbiAgICAgICAgaWYgKHdpbikge1xuICAgICAgICAgIC8vIEBzZWU6IGh0dHA6Ly9hdGFzaGJhaGFyLmNvbS9wb3N0LzIwMTAtMDQtMjctZGV0ZWN0LXdoZW4tYS1qYXZhc2NyaXB0LXBvcHVwLXdpbmRvdy1nZXRzLWNsb3NlZFxuICAgICAgICAgIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHdpblRpbWVyID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgICAgICAgICBpZiAod2luLmNsb3NlZCkge1xuICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwod2luVGltZXIpO1xuICAgICAgICAgICAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICBzdG9wVHJpZ2dlciQubmV4dCgpO1xuICAgICAgICAgICAgICAgICAgc3RvcFRyaWdnZXIkLmNvbXBsZXRlKCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sIDEwMDApO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gLi4uIGFuZCBzdGFydCBwb2xsaW5nIGZvciBhdXRoZW50aWNhdGlvbiByZXN1bHRzXG4gICAgICAgIHRoaXMuY2xvdWRMb2dpblBvbGxGb3JSZXN1bHQoYCR7dGFyZ2V0SG9zdH0vYXV0aC9pbmZvL3N0YXRlP2RldmljZV9jb2RlPSR7cmVzLmRldmljZV9jb2RlfWAsIDEwMDAsIHN0b3BUcmlnZ2VyJClcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIHRhcCgoYWNjZXNzVG9rZW46IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgICBpZiAoYWNjZXNzVG9rZW4pIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNsb3VkTG9naW5TZXRIZWFkZXJzKGFjY2Vzc1Rva2VuLCB0ZW5hbnQpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHN0b3JlVG9rZW46IFN0b3JlZFRva2VuID0ge1xuICAgICAgICAgICAgICAgICAgdGVuYW50OiB0ZW5hbnQsXG4gICAgICAgICAgICAgICAgICBhY2Nlc3NUb2tlbjogYWNjZXNzVG9rZW5cbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIHRoaXMuc3RvcmFnZS5zZXRJdGVtKHRoaXMuVE9LRU5fU1RPUkFHRV9LRVksIHN0b3JlVG9rZW4pLnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHN3aXRjaE1hcCgoYXV0aFJlczogYW55KSA9PiB7XG4gICAgICAgICAgICAgIGlmIChhdXRoUmVzKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuaW5pdFVzZXIodGFyZ2V0SG9zdCk7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhyb3dFcnJvcignbm90IGF1dGhlbnRpY2F0ZWQnKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICApLnN1YnNjcmliZShcbiAgICAgICAgICAgICh1c2VyOiBFb1VzZXIpID0+IHtcblxuICAgICAgICAgICAgICB3aW4uY2xvc2UoKTtcbiAgICAgICAgICAgICAgby5uZXh0KHVzZXIpO1xuICAgICAgICAgICAgICBvLmNvbXBsZXRlKCk7XG4gICAgICAgICAgICB9LCBlcnIgPT4ge1xuICAgICAgICAgICAgICB3aW4uY2xvc2UoKTtcbiAgICAgICAgICAgICAgby5lcnJvcihlcnIpO1xuICAgICAgICAgICAgICBvLmNvbXBsZXRlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgKVxuICAgICAgfSwgZXJyID0+IHtcbiAgICAgICAgby5lcnJvcigndW5hYmxlIHRvIGNhbGwgZGV2aWNlIGZsb3cgZW5kcG9pbnQnLCBlcnIpO1xuICAgICAgICBvLmNvbXBsZXRlKCk7XG4gICAgICB9KVxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFN0YXJ0cyBwb2xsaW5nIGZvciBsb2dpbiByZXN1bHRzIGluIGNhc2Ugb2YgbG9nZ2luZyBpbiB0byBhIGNsb3VkIGJhY2tlbmQuXG4gICAqIEBwYXJhbSB1cmkgVVJJIHRvIHBvbGxcbiAgICogQHBhcmFtIHBvbGxpbmdJbnRlcnZhbCBQb2xsaW5nIGludGVydmFsbCBpbiBtaWxsaXNlY29uZHNcbiAgICogQHBhcmFtIHN0b3BUcmlnZ2VyIFN1YmplY3QgYWN0aW5nIGFzIHN0b3AgdHJpZ2dlclxuICAgKiBAcmV0dXJucyBBY2Nlc3MgVG9rZW4gaWYgbG9nZ2VkIGluIHN1Y2Nlc3NmdWxseSBvciBOVUxMIG90aGVyd2lzZVxuICAgKi9cbiAgcHJpdmF0ZSBjbG91ZExvZ2luUG9sbEZvclJlc3VsdCh1cmk6IHN0cmluZywgcG9sbGluZ0ludGVydmFsOiBudW1iZXIsIHN0b3BUcmlnZ2VyOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKSk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG5cbiAgICByZXR1cm4gT2JzZXJ2YWJsZS5jcmVhdGUobyA9PiB7XG4gICAgICBsZXQgYWNjZXNzR3JhbnRlZCA9IGZhbHNlO1xuICAgICAgbGV0IGFjY2Vzc0RlbmllZCA9IGZhbHNlO1xuXG4gICAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgIGludGVydmFsKHBvbGxpbmdJbnRlcnZhbCkucGlwZShcbiAgICAgICAgICB0YWtlVW50aWwoc3RvcFRyaWdnZXIpLFxuICAgICAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLmh0dHAuZ2V0KHVyaSkucGlwZShcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgLy8gT0F1dGggc3RhbmRhcmQgd2UgYXJlIHVzaW5nIGlzIHJldHVybmluZyB3aXRoIGEgc3RhdHVzIG9mIDQwMCB3aGlsZSBsb2dnaW5nIGluIChubyBpZGVhIHdoeT8/PylcbiAgICAgICAgICAgICAgLy8gc28gd2UgZ290IHRvIGZldGNoIHRoYXQgdG8gbm90IGJyZWFrIHRoZSBwYXJlbnQgcGlwZVxuICAgICAgICAgICAgICBpZiAoZXJyLnN0YXR1cyA9PT0gNDAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG9ic2VydmFibGVPZihlcnIuZXJyb3IpO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRocm93RXJyb3IoZXJyKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICApKVxuICAgICAgICApLnN1YnNjcmliZShcbiAgICAgICAgICAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgICAgIGFjY2Vzc0dyYW50ZWQgPSAhIXJlcy5hY2Nlc3NfdG9rZW47XG4gICAgICAgICAgICAgIGFjY2Vzc0RlbmllZCA9IHJlcy5lcnJvciA9PT0gJ2FjY2Vzc19kZW5pZWQnO1xuXG4gICAgICAgICAgICAgIGlmIChhY2Nlc3NHcmFudGVkIHx8IGFjY2Vzc0RlbmllZCkge1xuICAgICAgICAgICAgICAgIC8vIGxvZ2dlZCBpblxuICAgICAgICAgICAgICAgIHN0b3BUcmlnZ2VyLm5leHQoKTtcbiAgICAgICAgICAgICAgICBzdG9wVHJpZ2dlci5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgICAgIG8ubmV4dChhY2Nlc3NHcmFudGVkID8gcmVzLmFjY2Vzc190b2tlbiA6IG51bGwpO1xuICAgICAgICAgICAgICAgIG8uY29tcGxldGUoKTtcbiAgICAgICAgICAgICAgfSBlbHNlIGlmIChyZXMuZXJyb3IgPT09ICdleHBpcmVkX3Rva2VuJykge1xuICAgICAgICAgICAgICAgIC8vIGV4cGlyZWQgc28gc2tpcCBwb2xsaW5nXG4gICAgICAgICAgICAgICAgdGhyb3dFcnJvcignVG9rZW4gZXhwaXJlZCcpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9LCBlcnIgPT4ge1xuICAgICAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgICAgby5lcnJvcihlcnIpO1xuICAgICAgICAgICAgICBvLmNvbXBsZXRlKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9LCAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgICAgICBvLm5leHQoYWNjZXNzR3JhbnRlZCk7XG4gICAgICAgICAgICAgIG8uY29tcGxldGUoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGNsb3VkTG9naW5TZXRIZWFkZXJzKGFjY2Vzc1Rva2VuOiBzdHJpbmcsIHRlbmFudDogc3RyaW5nKSB7XG4gICAgdGhpcy5iYWNrZW5kLnNldEhlYWRlcignQXV0aG9yaXphdGlvbicsICdiZWFyZXIgJyArIGFjY2Vzc1Rva2VuKTtcbiAgICB0aGlzLmJhY2tlbmQuc2V0SGVhZGVyKCdYLUlELVRFTkFOVC1OQU1FJywgdGVuYW50KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIGNhbGxlZCB3aGlsZSBhcHAgaW5pdFxuICAgKiBAaWdub3JlXG4gICAqL1xuICBpbml0VXNlcihob3N0Pzogc3RyaW5nKSB7XG5cbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKHtcbiAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbidcbiAgICB9KTtcblxuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5nZXQoYCR7aG9zdCB8fCAnJ30ke3RoaXMuY29uZmlnLmdldENvbnRleHRQYXRoKCl9L2F1dGgvaW5mb2AsIHtoZWFkZXJzLCB3aXRoQ3JlZGVudGlhbHM6IHRoaXMuY29yZUNvbmZpZy53aXRoQ3JlZGVudGlhbHN9KVxuICAgICAgLnBpcGUoc3dpdGNoTWFwKChpbmZvOiBHYXRld2F5SW5mbykgPT4ge1xuICAgICAgICB0aGlzLmdhdGV3YXlJbmZvID0gaW5mbztcblxuICAgICAgICB0aGlzLmVudlNlcnZpY2UuY2xvdWRFbnZpcm9ubWVudCA9ICh0aGlzLmdhdGV3YXlJbmZvICYmIHRoaXMuZ2F0ZXdheUluZm8ub2F1dGgyKTtcbiAgICAgICAgaWYgKHRoaXMuaXNDbG91ZEVudmlyb25tZW50KCkpIHtcbiAgICAgICAgICAvLyBpbiBjYXNlIG9mIHJ1bm5pbmcgYWdhaW5zdCBjbG91ZCBiYWNrZW5kLCB3ZSB0cnkgdG8gZmV0Y2hcbiAgICAgICAgICAvLyBhY2Nlc3MgdG9rZW4gYW5kIHRlbmFudCBmcm9tIGxvY2FsIHN0b3JhZ2VcbiAgICAgICAgICByZXR1cm4gdGhpcy5zdG9yYWdlLmdldEl0ZW0odGhpcy5UT0tFTl9TVE9SQUdFX0tFWSkucGlwZShcbiAgICAgICAgICAgIHN3aXRjaE1hcCgocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgaWYgKHJlcykge1xuICAgICAgICAgICAgICAgIHRoaXMuY2xvdWRMb2dpblNldEhlYWRlcnMocmVzLmFjY2Vzc1Rva2VuLCByZXMudGVuYW50KTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICByZXR1cm4gdGhpcy5mZXRjaFVzZXIoaW5mbywgaG9zdCk7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgIClcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5mZXRjaFVzZXIoaW5mbywgaG9zdClcbiAgICAgICAgfVxuICAgICAgfSkpO1xuICB9XG5cbiAgLyoqXG4gICAqXG4gICAqIEBwYXJhbSBnYXRld2F5SW5mb1xuICAgKiBAcGFyYW0gaG9zdFxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPEVvVXNlcj5cbiAgICovXG4gIHByaXZhdGUgZmV0Y2hVc2VyKGdhdGV3YXlJbmZvOiBhbnksIGhvc3Q/OiBzdHJpbmcpOiBPYnNlcnZhYmxlPEVvVXNlcj4ge1xuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoe1xuICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJ1xuICAgIH0pO1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5nZXQoYCR7aG9zdCB8fCAnJ30ke3RoaXMuY29uZmlnLmdldFVyaSgnc2VydmljZUJhc2UnKX0ke3RoaXMudXNlclByb2ZpbGVVcml9YCwge2hlYWRlcnMsIHdpdGhDcmVkZW50aWFsczogdGhpcy5jb3JlQ29uZmlnLndpdGhDcmVkZW50aWFsc30pXG4gICAgICAucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKCh1c2VyOiBhbnkpID0+IHtcbiAgICAgICAgICB0aGlzLnByb2ZpbGUgPSB7XG4gICAgICAgICAgICBob3N0OiBob3N0IHx8ICcnLFxuICAgICAgICAgICAgdXNlcjogdXNlci51c2VyLm5hbWUsXG4gICAgICAgICAgICBhdXRoOiBudWxsLFxuICAgICAgICAgICAgYWN0aXZlOiB0cnVlXG4gICAgICAgICAgfTtcbiAgICAgICAgICBpZiAoaG9zdCkge1xuICAgICAgICAgICAgdGhpcy5hZGRIb3N0Q29uZmlnKGhvc3QpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB3aW5kb3cubG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5sb2dnZWRJbkNhY2hlS2V5LCBKU09OLnN0cmluZ2lmeSh7dXNlcklkOiB1c2VyLnVzZXIuaWQsIGhvc3Q6IGhvc3R9KSk7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuaW5pdEFwcCh1c2VyLCBnYXRld2F5SW5mby5udGxtKTtcbiAgICAgICAgfSksXG4gICAgICAgIHRhcCgoKSA9PiB0aGlzLmF1dGhTb3VyY2UubmV4dCh0aGlzLmlzTG9nZ2VkSW4oKSkpXG4gICAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIExvZ3Mgb3V0IHRoZSBjdXJyZW50IHVzZXIuXG4gICAqIEBwYXJhbSBnYXRld2F5TG9nb3V0IEZsYWcgaW5kaWNhdGluZyB3aGV0aGVyIG9yIG5vdCB0byBwZXJmb3JtIGEgZ2F0ZXdheSBsb2dvdXQgYXMgd2VsbFxuICAgKi9cbiAgcHVibGljIGxvZ291dChnYXRld2F5TG9nb3V0PzogYm9vbGVhbikge1xuXG4gICAgdGhpcy5hdXRoU291cmNlLm5leHQoZmFsc2UpO1xuICAgIHRoaXMuc3lzdGVtU3RhdHVzU2VydmljZS5zdG9wKCk7XG5cbiAgICB0aGlzLnByb2ZpbGUgPSB7XG4gICAgICBob3N0OiAnJyxcbiAgICAgIHVzZXI6IG51bGwsXG4gICAgICBhdXRoOiBudWxsLFxuICAgICAgYWN0aXZlOiBmYWxzZVxuICAgIH07XG5cbiAgICBpZiAodGhpcy5pc0Nsb3VkRW52aXJvbm1lbnQoKSkge1xuICAgICAgLy8gcmVtb3ZlIHN0b3JlZCBhY2Nlc3MgZGF0YVxuICAgICAgdGhpcy5zdG9yYWdlLnJlbW92ZUl0ZW0odGhpcy5UT0tFTl9TVE9SQUdFX0tFWSkuc3Vic2NyaWJlKCk7XG4gICAgICBpZiAodGhpcy5jb3JlQ29uZmlnLmVudmlyb25tZW50LnByb2R1Y3Rpb24gJiYgRW52aXJvbm1lbnRFbmFpby5pc1dlYkVudmlyb25tZW50KCkpIHtcbiAgICAgICAgKHdpbmRvdyBhcyBhbnkpLmxvY2F0aW9uLmhyZWYgPSB0aGlzLmNvbmZpZy5nZXRDb250ZXh0UGF0aCgpICsgJy9sb2dvdXQnO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChnYXRld2F5TG9nb3V0KSB7XG4gICAgICAvLyBieSBkZWZhdWx0IHdlIGFyZSBqdXN0IHJlc2V0dGluZyBpbnRlcm5hbCBzdGF0ZSB0byAnbG9nZ2VkIG91dCcgYW5kIGluXG4gICAgICAvLyBzb21lIGNhc2VzIGNhbGwgZ2F0ZXdheXMgbG9nb3V0IGVuZHBvaW50IHRvIGRvIGxvZ291dCBzdHVmZiB0aGVyZSBzaWxlbnRseVxuICAgICAgdGhpcy5odHRwLmdldChgJHt0aGlzLnByb2ZpbGUuaG9zdCB8fCAnJ30ke3RoaXMuY29uZmlnLmdldENvbnRleHRQYXRoKCl9L2xvZ291dGAsIHt3aXRoQ3JlZGVudGlhbHM6IHRoaXMuY29yZUNvbmZpZy53aXRoQ3JlZGVudGlhbHN9KS5zdWJzY3JpYmUoKTtcbiAgICB9XG5cblxuICAgIHRoaXMuYmFja2VuZC5zZXRBdXRoUHJvZmlsZSh0aGlzLnByb2ZpbGUpO1xuICAgIHRoaXMuZXZlbnRTZXJ2aWNlLnRyaWdnZXIoRW5haW9FdmVudC5MT0dPVVQpO1xuICB9XG5cbiAgaXNDbG91ZEVudmlyb25tZW50KCk6IGJvb2xlYW4ge1xuICAgIC8vIG9hdXRoMiBpbmRpY2F0ZXMgdGhhdCB3ZSBhcmUgcnVubmluZyBpbiBhIGNsb3VkIGVudmlyb25tZW50XG4gICAgcmV0dXJuIHRoaXMuZ2F0ZXdheUluZm8gJiYgdGhpcy5nYXRld2F5SW5mby5vYXV0aDI7XG4gIH1cblxuICAvKipcbiAgICogZm9yIGRlc2t0b3AgYW5kIG1vYmlsZSBkZXZpY2VzIHdlIHByb3ZpZGUgYSBsaXN0IG9mIGhvc3RzIGZvciB0aGUgbG9naW5cbiAgICpcbiAgICogQHBhcmFtIHN0cmluZyBob3N0XG4gICAqL1xuICBwcml2YXRlIGFkZEhvc3RDb25maWcoaG9zdDogc3RyaW5nKSB7XG4gICAgY29uc3QgZXhpc3RpbmdIb3N0ID0gdGhpcy5ob3N0cy5maW5kKGggPT4gaCA9PT0gaG9zdCk7XG4gICAgaWYgKCFleGlzdGluZ0hvc3QpIHtcbiAgICAgIHRoaXMuaG9zdHMucHVzaChob3N0KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBjdXJyZW50IHN0YXRlIG9mIGEgdXNlciBiZWluZyBsb2dnZWQgaW4uIFRoaXMgaXMga2luZCBvZiB0aGUgc3luY2hyb25vdXMgdmVyc2lvbiBvZiBzdWJzY3JpYmluZyB0byBgYXV0aGVudGljYXRlZCRgLlxuICAgKiBAcmV0dXJucyBUcnVlIGlmIHRoZXJlIGlzIGEgbG9nZ2VkIGluIHVzZXIsIGZhbHNlIG90aGVyd2lzZVxuICAgKi9cbiAgcHVibGljIGlzTG9nZ2VkSW4oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMucHJvZmlsZS51c2VyICE9PSBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqXG4gICAqIEBwYXJhbSB1c2VyXG4gICAqIEBwYXJhbSBib29sZWFuIHNzb1xuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPEVvVXNlcj5cbiAgICovXG4gIHByaXZhdGUgaW5pdEFwcCh1c2VyOiBhbnksIHNzbz86IGJvb2xlYW4pOiBPYnNlcnZhYmxlPEVvVXNlcj4ge1xuXG4gICAgY29uc3QgY3VyclVzZXIgPSBuZXcgRW9Vc2VyKHVzZXIpO1xuICAgIHRoaXMuYmFja2VuZC5zZXRBdXRoUHJvZmlsZSh0aGlzLnByb2ZpbGUpO1xuICAgIHRoaXMudXNlclNlcnZpY2Uuc2V0Q3VycmVudFVzZXIodXNlcik7XG4gICAgY29uc3QgY2FwYWJpbGl0aWVzID0gdGhpcy5jYXBhYmlsaXRpZXNTZXJ2aWNlLnNldENhcGFiaWxpdGllcyh1c2VyLmNhcGFiaWxpdGllcywgc3NvKTtcblxuICAgIHRoaXMuc3lzdGVtU3RhdHVzU2VydmljZS5pbml0KHRoaXMuY29uZmlnLmdldFJhdygnc3lzdGVtU3RhdHVzVXBkYXRlSW50ZXJ2YWwnKSk7XG5cbiAgICAvLyB1cGRhdGUgc3RhdGVzXG4gICAgaWYgKGNhcGFiaWxpdGllcy5pbmJveCkge1xuICAgICAgdGhpcy5pbmJveFNlcnZpY2UucmVmcmVzaEluYm94U3RhdGUoKTtcbiAgICB9XG4gICAgaWYgKGNhcGFiaWxpdGllcy5pbnRyYXkpIHtcbiAgICAgIHRoaXMucHJlcGFyZVNlcnZpY2UucmVmcmVzaFByZXBhcmVkSXRlbXNDb3VudCgpO1xuICAgIH1cblxuICAgIGNvbnN0IHRvZG8gPSBbXG4gICAgICB0aGlzLmJwbVNlcnZpY2UuaW5pdEV4ZWN1dGFibGVQcm9jZXNzZXMoKSxcbiAgICAgIHRoaXMuc3lzdGVtU2VydmljZS5nZXRTeXN0ZW1EZWZpbml0aW9uKGN1cnJVc2VyKVxuICAgIF07XG5cbiAgICByZXR1cm4gb2JzZXJ2YWJsZUZvcmtKb2luKHRvZG8pLnBpcGUoXG4gICAgICBtYXAoKCkgPT4gY3VyclVzZXIpXG4gICAgKTtcbiAgfVxufVxuIl19
@@ -8,6 +8,7 @@ import { Logger } from '../logger/logger';
8
8
  import { finalize, shareReplay } from 'rxjs/operators';
9
9
  import { CoreConfig } from '../../config/core-config';
10
10
  import { CORE_CONFIG } from '../../config/core-init.tokens';
11
+ // @ts-ignore
11
12
  /**
12
13
  * `BackendService` encapsulates the communication with the yuuvis<sup>&reg;</sup> RAD REST endpoints.
13
14
  *
@@ -76,49 +77,49 @@ export class BackendService {
76
77
  * @returns Base URI
77
78
  */
78
79
  getServiceBase() {
79
- return this.getHost() + this.config.getUri('serviceBase');
80
+ return this.config.getUri('serviceBase');
80
81
  }
81
82
  /**
82
83
  * Gets the base URI for the Search-Service endpoint
83
84
  * @returns Base URI
84
85
  */
85
86
  getSearchBase() {
86
- return this.getHost() + this.config.getUri('searchBase');
87
+ return this.config.getUri('searchBase');
87
88
  }
88
89
  /**
89
90
  * Gets the base URI for the Context-Service endpoint
90
91
  * @returns Base URI
91
92
  */
92
93
  getContextBase() {
93
- return this.getHost() + this.config.getUri('contextBase');
94
+ return this.config.getUri('contextBase');
94
95
  }
95
96
  /**
96
97
  * Gets the base URI for the Inbox-Service endpoint
97
98
  * @returns Base URI
98
99
  */
99
100
  getInboxBase() {
100
- return this.getHost() + this.config.getUri('inboxBase');
101
+ return this.config.getUri('inboxBase');
101
102
  }
102
103
  /**
103
104
  * Gets the base URI for the BPM-Service endpoint
104
105
  * @returns Base URI
105
106
  */
106
107
  getBpmBase() {
107
- return this.getHost() + this.config.getUri('bpmBase');
108
+ return this.config.getUri('bpmBase');
108
109
  }
109
110
  /**
110
111
  * Gets the base URI for the Agent-Service endpoint
111
112
  * @returns Base URI
112
113
  */
113
114
  getAgentBase() {
114
- return this.getHost() + this.config.getUri('agentBase');
115
+ return this.config.getUri('agentBase');
115
116
  }
116
117
  /**
117
118
  * Gets the base URI for the Status-Service endpoint
118
119
  * @returns Base URI
119
120
  */
120
121
  getStatusBase() {
121
- return this.getHost() + this.config.getUri('statusBase');
122
+ return this.config.getUri('statusBase');
122
123
  }
123
124
  /**
124
125
  * @ignore
@@ -132,6 +133,12 @@ export class BackendService {
132
133
  getHost() {
133
134
  return this.authProfile.host || '';
134
135
  }
136
+ getBaseWithContext(base) {
137
+ return (base === null || base === void 0 ? void 0 : base.startsWith('/')) ? this.config.getContextPath() + base : base;
138
+ }
139
+ getContextPath(base) {
140
+ return this.getHost() + (this.getBaseWithContext(base || this.getServiceBase()));
141
+ }
135
142
  /**
136
143
  * Wrapped HTTP GET method
137
144
  * @param uri The REST URI to be queried
@@ -140,7 +147,7 @@ export class BackendService {
140
147
  * @returns The data retrieved from the given endpoint
141
148
  */
142
149
  get(uri, base, requestOptions) {
143
- return this.http.get((base || this.getServiceBase()) + uri, this.getHttpOptions(requestOptions));
150
+ return this.http.get(this.getContextPath(base) + uri, this.getHttpOptions(requestOptions));
144
151
  }
145
152
  /**
146
153
  * Wrapped HTTP PUT method
@@ -151,13 +158,13 @@ export class BackendService {
151
158
  * @returns The return value of the target PUT endpoint
152
159
  */
153
160
  put(uri, data, base, requestOptions) {
154
- return this.http.put((base || this.getServiceBase()) + uri, data, this.getHttpOptions(requestOptions));
161
+ return this.http.put(this.getContextPath(base) + uri, data, this.getHttpOptions(requestOptions));
155
162
  }
156
163
  /**
157
164
  * @ignore
158
165
  */
159
166
  getJson(uri, base) {
160
- return this.get(uri, base || this.getServiceBase(), { responseType: 'json' });
167
+ return this.http.get(this.getContextPath(base) + uri, this.getHttpOptions({ responseType: 'json' }));
161
168
  }
162
169
  /**
163
170
  * Wrapped HTTP POST method
@@ -168,7 +175,7 @@ export class BackendService {
168
175
  * @returns The return value of the target POST endpoint
169
176
  */
170
177
  post(uri, data, base, requestOptions) {
171
- const baseUri = base || this.getServiceBase();
178
+ const baseUri = this.getContextPath(base);
172
179
  const payload = data ? JSON.stringify(data) : '';
173
180
  return this.http.post(`${baseUri}${uri}`, payload, this.getHttpOptions(requestOptions));
174
181
  }
@@ -181,7 +188,7 @@ export class BackendService {
181
188
  * @returns The return value of the target POST endpoint
182
189
  */
183
190
  postMultiPart(uri, formData, base, requestOptions) {
184
- const baseUri = base || this.getServiceBase();
191
+ const baseUri = this.getContextPath(base);
185
192
  const headers = this.getHeaders();
186
193
  headers.delete('Content-Type');
187
194
  const reqOptions = Object.assign({ headers: headers, withCredentials: this.coreConfig.withCredentials }, requestOptions);
@@ -195,7 +202,7 @@ export class BackendService {
195
202
  * @returns The return value of the target DELETE endpoint
196
203
  */
197
204
  del(uri, base, requestOptions) {
198
- return this.http.delete((base || this.getServiceBase()) + uri, this.getHttpOptions(requestOptions));
205
+ return this.http.delete(this.getContextPath(base) + uri, this.getHttpOptions(requestOptions));
199
206
  }
200
207
  /**
201
208
  * @ignore
@@ -318,4 +325,4 @@ BackendService.ctorParameters = () => [
318
325
  { type: Logger },
319
326
  { type: Config }
320
327
  ];
321
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFja2VuZC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZW8tc2RrL2NvcmUvc3JjL2xpYi9zZXJ2aWNlL2JhY2tlbmQvYmFja2VuZC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxFQUFFLElBQUksWUFBWSxFQUF1QyxNQUFNLE1BQU0sQ0FBQztBQUM5RSxPQUFPLEVBQUMsR0FBRyxFQUFFLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3hDLE9BQU8sRUFBQyxNQUFNLEVBQUUsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBQyxVQUFVLEVBQUUsV0FBVyxFQUFlLE1BQU0sc0JBQXNCLENBQUM7QUFDM0UsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBRWhELE9BQU8sS0FBSyxTQUFTLE1BQU0sWUFBWSxDQUFDO0FBQ3hDLE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUd4QyxPQUFPLEVBQUMsUUFBUSxFQUFFLFdBQVcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3JELE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUNwRCxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sK0JBQStCLENBQUM7QUF5QjFEOzs7O0dBSUc7QUFFSCxNQUFNLE9BQU8sY0FBYztJQVF6Qjs7T0FFRztJQUNILFlBQW9CLElBQWdCLEVBQ04sVUFBc0IsRUFDMUMsTUFBYyxFQUNkLE1BQWM7UUFISixTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ04sZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUMxQyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQVpqQixtQkFBYyxHQUFrQyxHQUFHLENBQUMsQ0FBQyxJQUFXLEVBQUUsRUFB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ekYsd0JBQXdCLENBQUMsS0FBSyxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDekQsTUFBTSxlQUFlLEdBQUcsMEJBQTBCLENBQUMsQ0FBQyxDQUFDLDBCQUEwQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDMUYsTUFBTSxRQUFRLEdBQUcsZUFBZSxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBQ25GLE1BQU0sS0FBSyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3hGLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsS0FBSyxPQUFPLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO0lBQ2pHLENBQUM7SUFHRDs7OztPQUlHO0lBQ0ssaUJBQWlCO1FBQ3ZCLE9BQU8sSUFBSSxXQUFXLENBQUM7WUFDckIsY0FBYyxFQUFFLGtCQUFrQjtZQUNsQyxvQkFBb0IsRUFBRSxPQUFPO1lBQzdCLHNCQUFzQixFQUFFLE9BQU87WUFDL0IsaUJBQWlCLEVBQUUsTUFBTTtTQUMxQixDQUFDLENBQUM7SUFDTCxDQUFDOzs7WUF6VUYsVUFBVTs7O1lBdkNILFVBQVU7WUFRVixVQUFVLHVCQTRDYixNQUFNLFNBQUMsV0FBVztZQWhEZixNQUFNO1lBSE4sTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7b2YgYXMgb2JzZXJ2YWJsZU9mLCBPYnNlcnZhYmxlLCBNb25vVHlwZU9wZXJhdG9yRnVuY3Rpb259IGZyb20gJ3J4anMnO1xuaW1wb3J0IHttYXAsIHRhcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtJbmplY3QsIEluamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtIdHRwQ2xpZW50LCBIdHRwSGVhZGVycywgSHR0cFJlc3BvbnNlfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQge0NvbmZpZ30gZnJvbSAnLi4vY29uZmlnL2NvbmZpZy5zZXJ2aWNlJztcbmltcG9ydCB7RG1zT2JqZWN0fSBmcm9tICcuLi8uLi9tb2RlbC9kbXMtb2JqZWN0Lm1vZGVsJztcbmltcG9ydCAqIGFzIEZpbGVTYXZlciBmcm9tICdmaWxlLXNhdmVyJztcbmltcG9ydCB7TG9nZ2VyfSBmcm9tICcuLi9sb2dnZXIvbG9nZ2VyJztcbmltcG9ydCB7QXV0aFByb2ZpbGV9IGZyb20gJy4uL2F1dGgvYXV0aC1wcm9maWxlLmludGVyZmFjZSc7XG5pbXBvcnQge0h0dHBQYXJhbXN9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7ZmluYWxpemUsIHNoYXJlUmVwbGF5fSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge0NvcmVDb25maWd9IGZyb20gJy4uLy4uL2NvbmZpZy9jb3JlLWNvbmZpZyc7XG5pbXBvcnQge0NPUkVfQ09ORklHfSBmcm9tICcuLi8uLi9jb25maWcvY29yZS1pbml0LnRva2Vucyc7XG5cbi8qKlxuICogSHR0cE9wdGlvbnMgZm9yIGh0dHAgcmVxdWVzdFxuICogQHBhcmFtIG9ic2VydmU6ICdib2R5JyB8ICdldmVudHMnIHwgJ3Jlc3BvbnNlJ1xuICogQHBhcmFtIHJlc3BvbnNlVHlwZTogJ2FycmF5YnVmZmVyJyB8ICdibG9iJyB8ICdqc29uJyB8ICd0ZXh0J1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEh0dHBPcHRpb25zIHtcbiAgaGVhZGVycz86XG4gIHwgSHR0cEhlYWRlcnNcbiAgfCB7XG4gICAgW2hlYWRlcjogc3RyaW5nXTogc3RyaW5nIHwgc3RyaW5nW107XG4gIH07XG4gIG9ic2VydmU/OiBhbnk7XG4gIHBhcmFtcz86XG4gIHwgSHR0cFBhcmFtc1xuICB8IHtcbiAgICBbcGFyYW06IHN0cmluZ106IHN0cmluZyB8IHN0cmluZ1tdO1xuICB9O1xuICByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW47XG4gIHJlc3BvbnNlVHlwZT86IGFueTtcbiAgd2l0aENyZWRlbnRpYWxzPzogYm9vbGVhbjtcbn1cblxuXG4vKipcbiAqIGBCYWNrZW5kU2VydmljZWAgZW5jYXBzdWxhdGVzIHRoZSBjb21tdW5pY2F0aW9uIHdpdGggdGhlIHl1dXZpczxzdXA+JnJlZzs8L3N1cD4gUkFEIFJFU1QgZW5kcG9pbnRzLlxuICpcbiAqIEFzIHl1dXZpczxzdXA+JnJlZzs8L3N1cD4gUkFEIHByb3ZpZGVzIGRpZmZlcmVudCBzZXJ2aWNlcywgdGhpcyBzZXJ2aWNlIGlzIGFsc28gY2FwYWJsZSBvZiBwcm92aWRpbmcgdGhlIGJhc2UgVVJJcyBmb3IgdGhvc2Ugc2VydmljZXMuXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBCYWNrZW5kU2VydmljZSB7XG5cbiAgcHVibGljIGdyaWREYXRhRmlsdGVyOiBNb25vVHlwZU9wZXJhdG9yRnVuY3Rpb248YW55PiA9IG1hcCgoZGF0YTogYW55W10pID0+IGRhdGE/LmZpbHRlcigodjogYW55KSA9PiAhdi5fX3JlbW92ZWQpKTtcbiAgcHJpdmF0ZSBhdXRoUHJvZmlsZTogQXV0aFByb2ZpbGU7XG4gIHByaXZhdGUgY2FjaGUgPSBuZXcgTWFwPHN0cmluZywgYW55PigpO1xuICBwcml2YXRlIHRlbXAgPSBuZXcgTWFwPHN0cmluZywgT2JzZXJ2YWJsZTxhbnk+PigpO1xuICBwcml2YXRlIGhlYWRlcnMgPSB0aGlzLnNldERlZmF1bHRIZWFkZXJzKCk7XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcbiAgICBASW5qZWN0KENPUkVfQ09ORklHKSBwdWJsaWMgY29yZUNvbmZpZzogQ29yZUNvbmZpZyxcbiAgICBwcml2YXRlIGxvZ2dlcjogTG9nZ2VyLFxuICAgIHByaXZhdGUgY29uZmlnOiBDb25maWcpIHtcblxuICAgIC8qKlxuICAgICAqIGRlZmF1bHQgcHJvZmlsZSBpcyBzdXBwb3NlZCB0byB1c2UgTlRMTVxuICAgICAqIEB0eXBlIHtob3N0OiBzdHJpbmc7IG50bG06IGJvb2xlYW59XG4gICAgICovXG4gICAgdGhpcy5hdXRoUHJvZmlsZSA9IHtcbiAgICAgIGhvc3Q6ICcnLFxuICAgICAgbnRsbTogdHJ1ZVxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgcHVibGljIHNldEF1dGhQcm9maWxlKHByb2ZpbGU/OiBBdXRoUHJvZmlsZSkge1xuICAgIGlmIChwcm9maWxlKSB7XG4gICAgICB0aGlzLmhlYWRlcnMgPSB0aGlzLnNldERlZmF1bHRIZWFkZXJzKCk7XG4gICAgICB0aGlzLmF1dGhQcm9maWxlID0gcHJvZmlsZTtcbiAgICAgIGlmICh0aGlzLmF1dGhQcm9maWxlLmF1dGgpIHtcbiAgICAgICAgLy8gdGhpcy5zZXRIZWFkZXIoJ0F1dGhvcml6YXRpb24nLCB0aGlzLmF1dGhQcm9maWxlLmF1dGgpO1xuICAgICAgfVxuICAgICAgdGhpcy5oZWFkZXJzLmRlbGV0ZSgnQXV0aG9yaXphdGlvbicpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYSBuZXcgaGVhZGVyLlxuICAgKiBAcGFyYW0ga2V5IFRoZSBoZWFkZXJzIG5hbWVcbiAgICogQHBhcmFtIHZhbHVlIFRoZSB2YWx1ZVxuICAgKi9cbiAgcHVibGljIHNldEhlYWRlcihrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZykge1xuICAgIGlmICh2YWx1ZSAmJiB2YWx1ZS5sZW5ndGgpIHtcbiAgICAgIHRoaXMuaGVhZGVycyA9IHRoaXMuaGVhZGVycy5zZXQoa2V5LCB2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJldHJpZXZlcyB0aGUgY3VycmVudCBoZWFkZXJzXG4gICAqIEByZXR1cm5zIFRoZSBgSHR0cEhlYWRlcnNgIHRoYXQgYXJlIGN1cnJlbnRseSBzZXQgdXBcbiAgICovXG4gIHB1YmxpYyBnZXRIZWFkZXJzKCk6IEh0dHBIZWFkZXJzIHtcbiAgICByZXR1cm4gdGhpcy5oZWFkZXJzO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHB1YmxpYyBnZXRIdHRwT3B0aW9ucyhyZXF1ZXN0T3B0aW9ucz86IEh0dHBPcHRpb25zKTogSHR0cE9wdGlvbnMge1xuICAgIHJldHVybiBPYmplY3QuYXNzaWduKHtoZWFkZXJzOiB0aGlzLmdldEhlYWRlcnMoKSwgd2l0aENyZWRlbnRpYWxzOiB0aGlzLmNvcmVDb25maWcud2l0aENyZWRlbnRpYWxzfSwgcmVxdWVzdE9wdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGJhc2UgVVJJIGZvciB0aGUgRE1TLVNlcnZpY2UgZW5kcG9pbnRcbiAgICogQHJldHVybnMgQmFzZSBVUklcbiAgICovXG4gIHB1YmxpYyBnZXRTZXJ2aWNlQmFzZSgpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRIb3N0KCkgKyB0aGlzLmNvbmZpZy5nZXRVcmkoJ3NlcnZpY2VCYXNlJyk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgYmFzZSBVUkkgZm9yIHRoZSBTZWFyY2gtU2VydmljZSBlbmRwb2ludFxuICAgKiBAcmV0dXJucyBCYXNlIFVSSVxuICAgKi9cbiAgcHVibGljIGdldFNlYXJjaEJhc2UoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0SG9zdCgpICsgdGhpcy5jb25maWcuZ2V0VXJpKCdzZWFyY2hCYXNlJyk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgYmFzZSBVUkkgZm9yIHRoZSBDb250ZXh0LVNlcnZpY2UgZW5kcG9pbnRcbiAgICogQHJldHVybnMgQmFzZSBVUklcbiAgICovXG4gIHB1YmxpYyBnZXRDb250ZXh0QmFzZSgpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRIb3N0KCkgKyB0aGlzLmNvbmZpZy5nZXRVcmkoJ2NvbnRleHRCYXNlJyk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgYmFzZSBVUkkgZm9yIHRoZSBJbmJveC1TZXJ2aWNlIGVuZHBvaW50XG4gICAqIEByZXR1cm5zIEJhc2UgVVJJXG4gICAqL1xuICBwdWJsaWMgZ2V0SW5ib3hCYXNlKCkge1xuICAgIHJldHVybiB0aGlzLmdldEhvc3QoKSArIHRoaXMuY29uZmlnLmdldFVyaSgnaW5ib3hCYXNlJyk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgYmFzZSBVUkkgZm9yIHRoZSBCUE0tU2VydmljZSBlbmRwb2ludFxuICAgKiBAcmV0dXJucyBCYXNlIFVSSVxuICAgKi9cbiAgcHVibGljIGdldEJwbUJhc2UoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0SG9zdCgpICsgdGhpcy5jb25maWcuZ2V0VXJpKCdicG1CYXNlJyk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgYmFzZSBVUkkgZm9yIHRoZSBBZ2VudC1TZXJ2aWNlIGVuZHBvaW50XG4gICAqIEByZXR1cm5zIEJhc2UgVVJJXG4gICAqL1xuICBwdWJsaWMgZ2V0QWdlbnRCYXNlKCkge1xuICAgIHJldHVybiB0aGlzLmdldEhvc3QoKSArIHRoaXMuY29uZmlnLmdldFVyaSgnYWdlbnRCYXNlJyk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgYmFzZSBVUkkgZm9yIHRoZSBTdGF0dXMtU2VydmljZSBlbmRwb2ludFxuICAgKiBAcmV0dXJucyBCYXNlIFVSSVxuICAgKi9cbiAgcHVibGljIGdldFN0YXR1c0Jhc2UoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0SG9zdCgpICsgdGhpcy5jb25maWcuZ2V0VXJpKCdzdGF0dXNCYXNlJyk7XG4gIH1cblxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgcHVibGljIGdldEljb25CYXNlKGlkOiBzdHJpbmcgPSAnJykge1xuICAgIHJldHVybiB0aGlzLmdldFNlcnZpY2VCYXNlKCkgKyAnL3VpL2ljb24vJyArIGlkO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHB1YmxpYyBnZXRIb3N0KCkge1xuICAgIHJldHVybiB0aGlzLmF1dGhQcm9maWxlLmhvc3QgfHwgJyc7XG4gIH1cblxuICAvKipcbiAgICogV3JhcHBlZCBIVFRQIEdFVCBtZXRob2RcbiAgICogQHBhcmFtIHVyaSBUaGUgUkVTVCBVUkkgdG8gYmUgcXVlcmllZFxuICAgKiBAcGFyYW0gYmFzZSBUaGUgQmFzZSBVUkkgKGJhY2tlbmQgc2VydmljZSkgdG8gYmUgdXNlZFxuICAgKiBAcGFyYW0gcmVxdWVzdE9wdGlvbnMgQWRkaXRpb25hbCByZXF1ZXN0IG9wdGlvbnNcbiAgICogQHJldHVybnMgVGhlIGRhdGEgcmV0cmlldmVkIGZyb20gdGhlIGdpdmVuIGVuZHBvaW50XG4gICAqL1xuICBwdWJsaWMgZ2V0KHVyaTogc3RyaW5nLCBiYXNlPzogc3RyaW5nLCByZXF1ZXN0T3B0aW9ucz86IEh0dHBPcHRpb25zKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldCgoYmFzZSB8fCB0aGlzLmdldFNlcnZpY2VCYXNlKCkpICsgdXJpLCB0aGlzLmdldEh0dHBPcHRpb25zKHJlcXVlc3RPcHRpb25zKSk7XG4gIH1cblxuICAvKipcbiAgICogV3JhcHBlZCBIVFRQIFBVVCBtZXRob2RcbiAgICogQHBhcmFtIHVyaSBUaGUgdGFyZ2V0IFJFU1QgVVJJXG4gICAqIEBwYXJhbSBkYXRhIERhdGEgdG8gYmUgJ3Bvc3RlZCdcbiAgICogQHBhcmFtIGJhc2UgVGhlIEJhc2UgVVJJIChiYWNrZW5kIHNlcnZpY2UpIHRvIGJlIHVzZWRcbiAgICogQHBhcmFtIHJlcXVlc3RPcHRpb25zIEFkZGl0aW9uYWwgcmVxdWVzdCBvcHRpb25zXG4gICAqIEByZXR1cm5zIFRoZSByZXR1cm4gdmFsdWUgb2YgdGhlIHRhcmdldCBQVVQgZW5kcG9pbnRcbiAgICovXG4gIHB1YmxpYyBwdXQodXJpOiBzdHJpbmcsIGRhdGE/OiBhbnksIGJhc2U/OiBzdHJpbmcsIHJlcXVlc3RPcHRpb25zPzogSHR0cE9wdGlvbnMpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAucHV0KChiYXNlIHx8IHRoaXMuZ2V0U2VydmljZUJhc2UoKSkgKyB1cmksIGRhdGEsIHRoaXMuZ2V0SHR0cE9wdGlvbnMocmVxdWVzdE9wdGlvbnMpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBwdWJsaWMgZ2V0SnNvbih1cmk6IHN0cmluZywgYmFzZT86IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0KHVyaSwgYmFzZSB8fCB0aGlzLmdldFNlcnZpY2VCYXNlKCksIHtyZXNwb25zZVR5cGU6ICdqc29uJ30pO1xuICB9XG5cbiAgLyoqXG4gICAqIFdyYXBwZWQgSFRUUCBQT1NUIG1ldGhvZFxuICAgKiBAcGFyYW0gdXJpIFRoZSB0YXJnZXQgUkVTVCBVUklcbiAgICogQHBhcmFtIGRhdGEgRGF0YSB0byBiZSAncG9zdGVkJ1xuICAgKiBAcGFyYW0gYmFzZSBUaGUgQmFzZSBVUkkgKGJhY2tlbmQgc2VydmljZSkgdG8gYmUgdXNlZFxuICAgKiBAcGFyYW0gcmVxdWVzdE9wdGlvbnMgQWRkaXRpb25hbCByZXF1ZXN0IG9wdGlvbnNcbiAgICogQHJldHVybnMgVGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgdGFyZ2V0IFBPU1QgZW5kcG9pbnRcbiAgICovXG4gIHB1YmxpYyBwb3N0KHVyaTogc3RyaW5nLCBkYXRhPywgYmFzZT86IHN0cmluZywgcmVxdWVzdE9wdGlvbnM/OiBIdHRwT3B0aW9ucyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgY29uc3QgYmFzZVVyaSA9IGJhc2UgfHwgdGhpcy5nZXRTZXJ2aWNlQmFzZSgpO1xuICAgIGNvbnN0IHBheWxvYWQgPSBkYXRhID8gSlNPTi5zdHJpbmdpZnkoZGF0YSkgOiAnJztcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7YmFzZVVyaX0ke3VyaX1gLCBwYXlsb2FkLCB0aGlzLmdldEh0dHBPcHRpb25zKHJlcXVlc3RPcHRpb25zKSk7XG4gIH1cblxuICAvKipcbiAgICogUGVyZm9ybXMgYSBtdWx0aXBhcnQgZm9ybSBkYXRhIFBPU1QgcmVxdWVzdC5cbiAgICogQHBhcmFtIHVyaSBUaGUgdGFyZ2V0IFJFU1QgVVJJXG4gICAqIEBwYXJhbSBmb3JtRGF0YSBGb3JtRGF0YSB0byBiZSAncG9zdGVkJ1xuICAgKiBAcGFyYW0gYmFzZSBUaGUgQmFzZSBVUkkgKGJhY2tlbmQgc2VydmljZSkgdG8gYmUgdXNlZFxuICAgKiBAcGFyYW0gcmVxdWVzdE9wdGlvbnMgQWRkaXRpb25hbCByZXF1ZXN0IG9wdGlvbnNcbiAgICogQHJldHVybnMgVGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgdGFyZ2V0IFBPU1QgZW5kcG9pbnRcbiAgICovXG4gIHB1YmxpYyBwb3N0TXVsdGlQYXJ0KHVyaTogc3RyaW5nLCBmb3JtRGF0YTogRm9ybURhdGEsIGJhc2U/OiBzdHJpbmcsIHJlcXVlc3RPcHRpb25zPzogSHR0cE9wdGlvbnMpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGNvbnN0IGJhc2VVcmkgPSBiYXNlIHx8IHRoaXMuZ2V0U2VydmljZUJhc2UoKTtcbiAgICBjb25zdCBoZWFkZXJzID0gdGhpcy5nZXRIZWFkZXJzKCk7XG4gICAgaGVhZGVycy5kZWxldGUoJ0NvbnRlbnQtVHlwZScpO1xuICAgIGNvbnN0IHJlcU9wdGlvbnMgPSBPYmplY3QuYXNzaWduKHtoZWFkZXJzOiBoZWFkZXJzLCB3aXRoQ3JlZGVudGlhbHM6IHRoaXMuY29yZUNvbmZpZy53aXRoQ3JlZGVudGlhbHN9LCByZXF1ZXN0T3B0aW9ucyk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke2Jhc2VVcml9JHt1cml9YCwgZm9ybURhdGEsIHJlcU9wdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFdyYXBwZWQgSFRUUCBERUxFVEUgbWV0aG9kXG4gICAqIEBwYXJhbSB1cmkgVGhlIHRhcmdldCBSRVNUIFVSSVxuICAgKiBAcGFyYW0gYmFzZSBUaGUgQmFzZSBVUkkgKGJhY2tlbmQgc2VydmljZSkgdG8gYmUgdXNlZFxuICAgKiBAcGFyYW0gcmVxdWVzdE9wdGlvbnMgQWRkaXRpb25hbCByZXF1ZXN0IG9wdGlvbnNcbiAgICogQHJldHVybnMgVGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgdGFyZ2V0IERFTEVURSBlbmRwb2ludFxuICAgKi9cbiAgcHVibGljIGRlbCh1cmk6IHN0cmluZywgYmFzZT86IHN0cmluZywgcmVxdWVzdE9wdGlvbnM/OiBIdHRwT3B0aW9ucyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5kZWxldGUoKGJhc2UgfHwgdGhpcy5nZXRTZXJ2aWNlQmFzZSgpKSArIHVyaSwgdGhpcy5nZXRIdHRwT3B0aW9ucyhyZXF1ZXN0T3B0aW9ucykpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICogU29mdCB1cGRhdGUgZm9yIGxpc3RzIC0gZW5hYmxlcyBncmlkIHRvIGhhbmRsZSBhbGwgY2hhbmdlc1xuICAgKiB0byBhZGQgbmV3IC0gb25seSBpdGVtIHNob3VsZCBiZSBzcGVjaWZpZWRcbiAgICogdG8gcmVtb3ZlIC0gb25seSBpZCBzaG91bGQgYmUgc3BlY2lmaWVkXG4gICAqIHRvIHVwZGF0ZSAtIGJvdGggcGFyYW1zIHNob3VsZCBiZSBzcGVjaWZpZWRcbiAgICpcbiAgICogQHBhcmFtIGFueVtdIGxpc3QgT3JpZ2luYWwgbGlzdCBvZiBpdGVtc1xuICAgKiBAcGFyYW0gaWQ/OiBzdHJpbmc7IGl0ZW0/OiBhbnkgZGF0YVtdXG4gICAqIEByZXR1cm5zIGFueVtdXG4gICAqL1xuICBwdWJsaWMgdXBkYXRlKGxpc3Q6IGFueVtdLCBkYXRhOiB7aWQ/OiBzdHJpbmcsIGl0ZW0/OiBhbnl9W10pIHtcbiAgICBkYXRhLmZvckVhY2goKHtpZCwgaXRlbX0pID0+IHtcbiAgICAgIGlmIChpZCkge1xuICAgICAgICBjb25zdCBfaXRlbSA9IGxpc3QuZmluZChsID0+IGwuaWQgPT09IGlkKTtcbiAgICAgICAgT2JqZWN0LmFzc2lnbihfaXRlbSwgaXRlbSwgaXRlbSA/IHtfX3VwZGF0ZWQ6IHRydWV9IDoge19fcmVtb3ZlZDogdHJ1ZX0pO1xuICAgICAgfSBlbHNlIGlmIChpdGVtKSB7XG4gICAgICAgIGxpc3QudW5zaGlmdChPYmplY3QuYXNzaWduKGl0ZW0sIHtfX2FkZGVkOiB0cnVlfSkpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBsaXN0O1xuICB9XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICogQ2FjaGUgZm9yIHNtYWxsIHJlcXVlc3RzIGxpa2UgaWNvbnMgYW5kIGNvbmZpZ3NcbiAgICpcbiAgICogQHBhcmFtIHN0cmluZyB1cmlcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxhbnk+XG4gICAqL1xuICBwdWJsaWMgZ2V0VmlhQ2FjaGUodXJpOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGlmICh0aGlzLmNhY2hlLmhhcyh1cmkpKSB7XG4gICAgICByZXR1cm4gb2JzZXJ2YWJsZU9mKHRoaXMuY2FjaGUuZ2V0KHVyaSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRWaWFUZW1wQ2FjaGUodXJpLCAoKSA9PiB0aGlzLmh0dHAuZ2V0KHVyaSwge3dpdGhDcmVkZW50aWFsczogdGhpcy5jb3JlQ29uZmlnLndpdGhDcmVkZW50aWFscywgcmVzcG9uc2VUeXBlOiAndGV4dCd9KS5waXBlKFxuICAgICAgICB0YXAodGV4dCA9PiB0aGlzLmNhY2hlLnNldCh1cmksIHRleHQpKSkpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqIFRlbXBvcmFyeSBDYWNoZSBmb3IgbXVsdGlwbGUgaWRlbnRpY2FsIHJlcXVlc3RzXG4gICAqXG4gICAqIEBwYXJhbSBzdHJpbmcgaWRcbiAgICogQHBhcmFtIEZ1bmN0aW9uIHJlcXVlc3RcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxhbnk+XG4gICAqL1xuICBwdWJsaWMgZ2V0VmlhVGVtcENhY2hlKGlkOiBzdHJpbmcsIHJlcXVlc3Q/OiBGdW5jdGlvbik6IE9ic2VydmFibGU8YW55PiB7XG4gICAgaWYgKHRoaXMudGVtcC5oYXMoaWQpKSB7XG4gICAgICByZXR1cm4gdGhpcy50ZW1wLmdldChpZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHJlc3AgPSAocmVxdWVzdCA/IHJlcXVlc3QoKSA6IHRoaXMuZ2V0KGlkKSkucGlwZShcbiAgICAgICAgZmluYWxpemUoKCkgPT4gdGhpcy50ZW1wLmRlbGV0ZShpZCkpLFxuICAgICAgICBzaGFyZVJlcGxheSgxKVxuICAgICAgKTtcbiAgICAgIHRoaXMudGVtcC5zZXQoaWQsIHJlc3ApO1xuICAgICAgcmV0dXJuIHJlc3A7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIERvd25sb2FkIHRoZSBjb250ZW50IG9mIGRtcyBvYmplY3RzLlxuICAgKlxuICAgKiBAcGFyYW0gRG1zT2JqZWN0W10gZG1zT2JqZWN0cyBBcnJheSBvZiBkbXMgb2JqZWN0cyB0byBiZSBkb3dubG9hZGVkXG4gICAqIEBwYXJhbSBcIlBERlwiIHwgXCJUSUZGXCIgfCBcIlRFWFRcIiB8IFwiSlBFR1wiIHJlbmRpdGlvbiBUaGUgdHlwZSBvZiByZW5kaXRpb24gdG8gYmUgZG93bmxvYWRlZC4gSWYgbm90IHNwZWNpZmllZCwgdGhlIG9yaWdpbmFsIGNvbnRlbnQgd2lsbCBiZSBkb3dubG9hZGVkLlxuICAgKiBQb3NzaWJsZSByZW5kaXRpb25zIGFyZSBgUERGYCwgYFRJRkZgLCBgVEVYVGAsIGBKUEVHYC5cbiAgICovXG4gIHB1YmxpYyBkb3dubG9hZENvbnRlbnQoZG1zT2JqZWN0czogRG1zT2JqZWN0W10sIHJlbmRpdGlvbj86ICdQREYnIHwgJ1RJRkYnIHwgJ1RFWFQnIHwgJ0pQRUcnLCBmaWxlTmFtZVdpdGhWZXJzaW9uTnVtYmVyPzogYm9vbGVhbikge1xuXG4gICAgZG1zT2JqZWN0cy5mb3JFYWNoKGRtc09iamVjdCA9PiB7XG4gICAgICBpZiAoZG1zT2JqZWN0LmNvbnRlbnQpIHtcblxuICAgICAgICBsZXQgdXJpID0gYCR7dGhpcy5nZXRTZXJ2aWNlQmFzZSgpfS9kbXMvJHtkbXNPYmplY3QuY29udGVudC5pZH0vY29udGVudD90eXBlPSR7ZG1zT2JqZWN0LmNvbnRlbnQudHlwZX0mYXNkb3dubG9hZD10cnVlYDtcbiAgICAgICAgaWYgKHJlbmRpdGlvbikge1xuICAgICAgICAgIHVyaSArPSBgJnJlbmRpdGlvbj0ke3JlbmRpdGlvbn0mX2ludGVudD1ET1dOTE9BRF8ke3JlbmRpdGlvbn1gO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHVyaSArPSAnJl9pbnRlbnQ9RE9XTkxPQUQnO1xuICAgICAgICB9XG4gICAgICAgIGlmIChkbXNPYmplY3QuY29udGVudC5pZCA9PT0gZG1zT2JqZWN0LmlkKSB7XG4gICAgICAgICAgdXJpICs9IGAmdmVyc2lvbj0ke2Rtc09iamVjdC52ZXJzaW9ufWA7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5kb3dubG9hZCh1cmksIGZpbGVOYW1lV2l0aFZlcnNpb25OdW1iZXIgPyBkbXNPYmplY3QudmVyc2lvbiA6IG51bGwpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoJ1RoZSBwcm92aWRlZCBkbXMgb2JqZWN0IGhhcyBubyBjb250ZW50JywgZG1zT2JqZWN0KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBkb3dubG9hZCh1cmk6IHN0cmluZywgdmVyc2lvbj86IG51bWJlcikge1xuICAgIHRoaXMuaHR0cC5nZXQodXJpLCB7b2JzZXJ2ZTogJ3Jlc3BvbnNlJywgcmVzcG9uc2VUeXBlOiAnYmxvYicsIHdpdGhDcmVkZW50aWFsczogdGhpcy5jb3JlQ29uZmlnLndpdGhDcmVkZW50aWFsc30pXG4gICAgICAuc3Vic2NyaWJlKChyZXMpID0+IHtcbiAgICAgICAgRmlsZVNhdmVyLnNhdmVBcyhcbiAgICAgICAgICByZXMuYm9keSxcbiAgICAgICAgICB0aGlzLmdldEZpbGVOYW1lRnJvbUh0dHBSZXNwb25zZShyZXMsIHZlcnNpb24pXG4gICAgICAgICk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RmlsZU5hbWVGcm9tSHR0cFJlc3BvbnNlKHJlczogSHR0cFJlc3BvbnNlPGFueT4sIHZlcnNpb246IG51bWJlcikge1xuICAgIGNvbnN0IGNvbnRlbnREaXNwb3NpdGlvbkhlYWRlciA9IHJlcy5oZWFkZXJzLmdldCgnQ29udGVudC1EaXNwb3NpdGlvbicpIHx8ICcnO1xuICAgIGNvbnN0IGVuY29kZWRGaWxlTmFtZU1hdGNoUmVzdWx0ID0gY29udGVudERpc3Bvc2l0aW9uSGVhZGVyLm1hdGNoKCdmaWxlbmFtZVxcXFwqPVVURi04XFwnXFwnKC4qKScpXG4gICAgICB8fCBjb250ZW50RGlzcG9zaXRpb25IZWFkZXIubWF0Y2goJ2ZpbGVuYW1lPVxcXCIoLiopXFxcIicpO1xuICAgIGNvbnN0IGVuY29kZWRGaWxlTmFtZSA9IGVuY29kZWRGaWxlTmFtZU1hdGNoUmVzdWx0ID8gZW5jb2RlZEZpbGVOYW1lTWF0Y2hSZXN1bHRbMV0gOiBudWxsO1xuICAgIGNvbnN0IGZpbGVuYW1lID0gZW5jb2RlZEZpbGVOYW1lID8gZGVjb2RlVVJJQ29tcG9uZW50KGVuY29kZWRGaWxlTmFtZSkgOiAndW5rbm93bic7XG4gICAgY29uc3QgaW5kZXggPSAhfmZpbGVuYW1lLmxhc3RJbmRleE9mKCcuJykgPyBmaWxlbmFtZS5sZW5ndGggOiBmaWxlbmFtZS5sYXN0SW5kZXhPZignLicpO1xuICAgIHJldHVybiAhdmVyc2lvbiA/IGZpbGVuYW1lIDogYCR7ZmlsZW5hbWUuc2xpY2UoMCwgaW5kZXgpfV92JHt2ZXJzaW9ufSR7ZmlsZW5hbWUuc2xpY2UoaW5kZXgpfWA7XG4gIH1cblxuXG4gIC8qKlxuICAgKiBHZXR0ZXIgZm9yIHRoZSBIVFRQIEhlYWRlcnNcbiAgICpcbiAgICogQHJldHVybnMgSHR0cEhlYWRlcnNcbiAgICovXG4gIHByaXZhdGUgc2V0RGVmYXVsdEhlYWRlcnMoKTogSHR0cEhlYWRlcnMge1xuICAgIHJldHVybiBuZXcgSHR0cEhlYWRlcnMoe1xuICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICdYLW9zLWluY2x1ZGUtbGlua3MnOiAnZmFsc2UnLFxuICAgICAgJ1gtb3MtaW5jbHVkZS1hY3Rpb25zJzogJ2ZhbHNlJyxcbiAgICAgICdYLW9zLXN5bmMtaW5kZXgnOiAndHJ1ZSdcbiAgICB9KTtcbiAgfVxufVxuIl19
328
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFja2VuZC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZW8tc2RrL2NvcmUvc3JjL2xpYi9zZXJ2aWNlL2JhY2tlbmQvYmFja2VuZC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxFQUFFLElBQUksWUFBWSxFQUF1QyxNQUFNLE1BQU0sQ0FBQztBQUM5RSxPQUFPLEVBQUMsR0FBRyxFQUFFLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3hDLE9BQU8sRUFBQyxNQUFNLEVBQUUsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBQyxVQUFVLEVBQUUsV0FBVyxFQUFlLE1BQU0sc0JBQXNCLENBQUM7QUFDM0UsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBRWhELE9BQU8sS0FBSyxTQUFTLE1BQU0sWUFBWSxDQUFDO0FBQ3hDLE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUd4QyxPQUFPLEVBQUMsUUFBUSxFQUFFLFdBQVcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3JELE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUNwRCxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sK0JBQStCLENBQUM7QUF5QjFELGFBQWE7QUFDYjs7OztHQUlHO0FBRUgsTUFBTSxPQUFPLGNBQWM7SUFRekI7O09BRUc7SUFDSCxZQUFvQixJQUFnQixFQUNOLFVBQXNCLEVBQzFDLE1BQWMsRUFDZCxNQUFjO1FBSEosU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNOLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDMUMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLFdBQU0sR0FBTixNQUFNLENBQVE7UUFaakIsbUJBQWMsR0FBa0MsR0FBRyxDQUFDLENBQUMsSUFB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QUFDLFdBQVc7WUFqRGYsTUFBTTtZQUhOLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge29mIGFzIG9ic2VydmFibGVPZiwgT2JzZXJ2YWJsZSwgTW9ub1R5cGVPcGVyYXRvckZ1bmN0aW9ufSBmcm9tICdyeGpzJztcbmltcG9ydCB7bWFwLCB0YXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7SW5qZWN0LCBJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7SHR0cENsaWVudCwgSHR0cEhlYWRlcnMsIEh0dHBSZXNwb25zZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHtDb25maWd9IGZyb20gJy4uL2NvbmZpZy9jb25maWcuc2VydmljZSc7XG5pbXBvcnQge0Rtc09iamVjdH0gZnJvbSAnLi4vLi4vbW9kZWwvZG1zLW9iamVjdC5tb2RlbCc7XG5pbXBvcnQgKiBhcyBGaWxlU2F2ZXIgZnJvbSAnZmlsZS1zYXZlcic7XG5pbXBvcnQge0xvZ2dlcn0gZnJvbSAnLi4vbG9nZ2VyL2xvZ2dlcic7XG5pbXBvcnQge0F1dGhQcm9maWxlfSBmcm9tICcuLi9hdXRoL2F1dGgtcHJvZmlsZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHtIdHRwUGFyYW1zfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQge2ZpbmFsaXplLCBzaGFyZVJlcGxheX0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtDb3JlQ29uZmlnfSBmcm9tICcuLi8uLi9jb25maWcvY29yZS1jb25maWcnO1xuaW1wb3J0IHtDT1JFX0NPTkZJR30gZnJvbSAnLi4vLi4vY29uZmlnL2NvcmUtaW5pdC50b2tlbnMnO1xuXG4vKipcbiAqIEh0dHBPcHRpb25zIGZvciBodHRwIHJlcXVlc3RcbiAqIEBwYXJhbSBvYnNlcnZlOiAnYm9keScgfCAnZXZlbnRzJyB8ICdyZXNwb25zZSdcbiAqIEBwYXJhbSByZXNwb25zZVR5cGU6ICdhcnJheWJ1ZmZlcicgfCAnYmxvYicgfCAnanNvbicgfCAndGV4dCdcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBIdHRwT3B0aW9ucyB7XG4gIGhlYWRlcnM/OlxuICB8IEh0dHBIZWFkZXJzXG4gIHwge1xuICAgIFtoZWFkZXI6IHN0cmluZ106IHN0cmluZyB8IHN0cmluZ1tdO1xuICB9O1xuICBvYnNlcnZlPzogYW55O1xuICBwYXJhbXM/OlxuICB8IEh0dHBQYXJhbXNcbiAgfCB7XG4gICAgW3BhcmFtOiBzdHJpbmddOiBzdHJpbmcgfCBzdHJpbmdbXTtcbiAgfTtcbiAgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuO1xuICByZXNwb25zZVR5cGU/OiBhbnk7XG4gIHdpdGhDcmVkZW50aWFscz86IGJvb2xlYW47XG59XG5cblxuLy8gQHRzLWlnbm9yZVxuLyoqXG4gKiBgQmFja2VuZFNlcnZpY2VgIGVuY2Fwc3VsYXRlcyB0aGUgY29tbXVuaWNhdGlvbiB3aXRoIHRoZSB5dXV2aXM8c3VwPiZyZWc7PC9zdXA+IFJBRCBSRVNUIGVuZHBvaW50cy5cbiAqXG4gKiBBcyB5dXV2aXM8c3VwPiZyZWc7PC9zdXA+IFJBRCBwcm92aWRlcyBkaWZmZXJlbnQgc2VydmljZXMsIHRoaXMgc2VydmljZSBpcyBhbHNvIGNhcGFibGUgb2YgcHJvdmlkaW5nIHRoZSBiYXNlIFVSSXMgZm9yIHRob3NlIHNlcnZpY2VzLlxuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQmFja2VuZFNlcnZpY2Uge1xuXG4gIHB1YmxpYyBncmlkRGF0YUZpbHRlcjogTW9ub1R5cGVPcGVyYXRvckZ1bmN0aW9uPGFueT4gPSBtYXAoKGRhdGE6IGFueVtdKSA9PiBkYXRhPy5maWx0ZXIoKHY6IGFueSkgPT4gIXYuX19yZW1vdmVkKSk7XG4gIHByaXZhdGUgYXV0aFByb2ZpbGU6IEF1dGhQcm9maWxlO1xuICBwcml2YXRlIGNhY2hlID0gbmV3IE1hcDxzdHJpbmcsIGFueT4oKTtcbiAgcHJpdmF0ZSB0ZW1wID0gbmV3IE1hcDxzdHJpbmcsIE9ic2VydmFibGU8YW55Pj4oKTtcbiAgcHJpdmF0ZSBoZWFkZXJzID0gdGhpcy5zZXREZWZhdWx0SGVhZGVycygpO1xuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXG4gICAgQEluamVjdChDT1JFX0NPTkZJRykgcHVibGljIGNvcmVDb25maWc6IENvcmVDb25maWcsXG4gICAgcHJpdmF0ZSBsb2dnZXI6IExvZ2dlcixcbiAgICBwcml2YXRlIGNvbmZpZzogQ29uZmlnKSB7XG5cbiAgICAvKipcbiAgICAgKiBkZWZhdWx0IHByb2ZpbGUgaXMgc3VwcG9zZWQgdG8gdXNlIE5UTE1cbiAgICAgKiBAdHlwZSB7aG9zdDogc3RyaW5nOyBudGxtOiBib29sZWFufVxuICAgICAqL1xuICAgIHRoaXMuYXV0aFByb2ZpbGUgPSB7XG4gICAgICBob3N0OiAnJyxcbiAgICAgIG50bG06IHRydWVcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHB1YmxpYyBzZXRBdXRoUHJvZmlsZShwcm9maWxlPzogQXV0aFByb2ZpbGUpIHtcbiAgICBpZiAocHJvZmlsZSkge1xuICAgICAgdGhpcy5oZWFkZXJzID0gdGhpcy5zZXREZWZhdWx0SGVhZGVycygpO1xuICAgICAgdGhpcy5hdXRoUHJvZmlsZSA9IHByb2ZpbGU7XG4gICAgICBpZiAodGhpcy5hdXRoUHJvZmlsZS5hdXRoKSB7XG4gICAgICAgIC8vIHRoaXMuc2V0SGVhZGVyKCdBdXRob3JpemF0aW9uJywgdGhpcy5hdXRoUHJvZmlsZS5hdXRoKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuaGVhZGVycy5kZWxldGUoJ0F1dGhvcml6YXRpb24nKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQWRkIGEgbmV3IGhlYWRlci5cbiAgICogQHBhcmFtIGtleSBUaGUgaGVhZGVycyBuYW1lXG4gICAqIEBwYXJhbSB2YWx1ZSBUaGUgdmFsdWVcbiAgICovXG4gIHB1YmxpYyBzZXRIZWFkZXIoa2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpIHtcbiAgICBpZiAodmFsdWUgJiYgdmFsdWUubGVuZ3RoKSB7XG4gICAgICB0aGlzLmhlYWRlcnMgPSB0aGlzLmhlYWRlcnMuc2V0KGtleSwgdmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZXMgdGhlIGN1cnJlbnQgaGVhZGVyc1xuICAgKiBAcmV0dXJucyBUaGUgYEh0dHBIZWFkZXJzYCB0aGF0IGFyZSBjdXJyZW50bHkgc2V0IHVwXG4gICAqL1xuICBwdWJsaWMgZ2V0SGVhZGVycygpOiBIdHRwSGVhZGVycyB7XG4gICAgcmV0dXJuIHRoaXMuaGVhZGVycztcbiAgfVxuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBwdWJsaWMgZ2V0SHR0cE9wdGlvbnMocmVxdWVzdE9wdGlvbnM/OiBIdHRwT3B0aW9ucyk6IEh0dHBPcHRpb25zIHtcbiAgICByZXR1cm4gT2JqZWN0LmFzc2lnbih7aGVhZGVyczogdGhpcy5nZXRIZWFkZXJzKCksIHdpdGhDcmVkZW50aWFsczogdGhpcy5jb3JlQ29uZmlnLndpdGhDcmVkZW50aWFsc30sIHJlcXVlc3RPcHRpb25zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBiYXNlIFVSSSBmb3IgdGhlIERNUy1TZXJ2aWNlIGVuZHBvaW50XG4gICAqIEByZXR1cm5zIEJhc2UgVVJJXG4gICAqL1xuICBwdWJsaWMgZ2V0U2VydmljZUJhc2UoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLmdldFVyaSgnc2VydmljZUJhc2UnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBiYXNlIFVSSSBmb3IgdGhlIFNlYXJjaC1TZXJ2aWNlIGVuZHBvaW50XG4gICAqIEByZXR1cm5zIEJhc2UgVVJJXG4gICAqL1xuICBwdWJsaWMgZ2V0U2VhcmNoQmFzZSgpIHtcbiAgICByZXR1cm4gdGhpcy5jb25maWcuZ2V0VXJpKCdzZWFyY2hCYXNlJyk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgYmFzZSBVUkkgZm9yIHRoZSBDb250ZXh0LVNlcnZpY2UgZW5kcG9pbnRcbiAgICogQHJldHVybnMgQmFzZSBVUklcbiAgICovXG4gIHB1YmxpYyBnZXRDb250ZXh0QmFzZSgpIHtcbiAgICByZXR1cm4gdGhpcy5jb25maWcuZ2V0VXJpKCdjb250ZXh0QmFzZScpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGJhc2UgVVJJIGZvciB0aGUgSW5ib3gtU2VydmljZSBlbmRwb2ludFxuICAgKiBAcmV0dXJucyBCYXNlIFVSSVxuICAgKi9cbiAgcHVibGljIGdldEluYm94QmFzZSgpIHtcbiAgICByZXR1cm4gdGhpcy5jb25maWcuZ2V0VXJpKCdpbmJveEJhc2UnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBiYXNlIFVSSSBmb3IgdGhlIEJQTS1TZXJ2aWNlIGVuZHBvaW50XG4gICAqIEByZXR1cm5zIEJhc2UgVVJJXG4gICAqL1xuICBwdWJsaWMgZ2V0QnBtQmFzZSgpIHtcbiAgICByZXR1cm4gdGhpcy5jb25maWcuZ2V0VXJpKCdicG1CYXNlJyk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgYmFzZSBVUkkgZm9yIHRoZSBBZ2VudC1TZXJ2aWNlIGVuZHBvaW50XG4gICAqIEByZXR1cm5zIEJhc2UgVVJJXG4gICAqL1xuICBwdWJsaWMgZ2V0QWdlbnRCYXNlKCkge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZy5nZXRVcmkoJ2FnZW50QmFzZScpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGJhc2UgVVJJIGZvciB0aGUgU3RhdHVzLVNlcnZpY2UgZW5kcG9pbnRcbiAgICogQHJldHVybnMgQmFzZSBVUklcbiAgICovXG4gIHB1YmxpYyBnZXRTdGF0dXNCYXNlKCkge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZy5nZXRVcmkoJ3N0YXR1c0Jhc2UnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBwdWJsaWMgZ2V0SWNvbkJhc2UoaWQ6IHN0cmluZyA9ICcnKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0U2VydmljZUJhc2UoKSArICcvdWkvaWNvbi8nICsgaWQ7XG4gIH1cblxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgcHVibGljIGdldEhvc3QoKSB7XG4gICAgcmV0dXJuIHRoaXMuYXV0aFByb2ZpbGUuaG9zdCB8fCAnJztcbiAgfVxuXG4gIHByaXZhdGUgZ2V0QmFzZVdpdGhDb250ZXh0KGJhc2U6IHN0cmluZykge1xuICAgIHJldHVybiBiYXNlPy5zdGFydHNXaXRoKCcvJykgPyB0aGlzLmNvbmZpZy5nZXRDb250ZXh0UGF0aCgpICsgYmFzZSA6IGJhc2U7XG4gIH1cblxuICBwcml2YXRlIGdldENvbnRleHRQYXRoKGJhc2U/OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmdldEhvc3QoKSArICh0aGlzLmdldEJhc2VXaXRoQ29udGV4dChiYXNlIHx8IHRoaXMuZ2V0U2VydmljZUJhc2UoKSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFdyYXBwZWQgSFRUUCBHRVQgbWV0aG9kXG4gICAqIEBwYXJhbSB1cmkgVGhlIFJFU1QgVVJJIHRvIGJlIHF1ZXJpZWRcbiAgICogQHBhcmFtIGJhc2UgVGhlIEJhc2UgVVJJIChiYWNrZW5kIHNlcnZpY2UpIHRvIGJlIHVzZWRcbiAgICogQHBhcmFtIHJlcXVlc3RPcHRpb25zIEFkZGl0aW9uYWwgcmVxdWVzdCBvcHRpb25zXG4gICAqIEByZXR1cm5zIFRoZSBkYXRhIHJldHJpZXZlZCBmcm9tIHRoZSBnaXZlbiBlbmRwb2ludFxuICAgKi9cbiAgcHVibGljIGdldCh1cmk6IHN0cmluZywgYmFzZT86IHN0cmluZywgcmVxdWVzdE9wdGlvbnM/OiBIdHRwT3B0aW9ucyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodGhpcy5nZXRDb250ZXh0UGF0aChiYXNlKSArIHVyaSwgdGhpcy5nZXRIdHRwT3B0aW9ucyhyZXF1ZXN0T3B0aW9ucykpO1xuICB9XG5cbiAgLyoqXG4gICAqIFdyYXBwZWQgSFRUUCBQVVQgbWV0aG9kXG4gICAqIEBwYXJhbSB1cmkgVGhlIHRhcmdldCBSRVNUIFVSSVxuICAgKiBAcGFyYW0gZGF0YSBEYXRhIHRvIGJlICdwb3N0ZWQnXG4gICAqIEBwYXJhbSBiYXNlIFRoZSBCYXNlIFVSSSAoYmFja2VuZCBzZXJ2aWNlKSB0byBiZSB1c2VkXG4gICAqIEBwYXJhbSByZXF1ZXN0T3B0aW9ucyBBZGRpdGlvbmFsIHJlcXVlc3Qgb3B0aW9uc1xuICAgKiBAcmV0dXJucyBUaGUgcmV0dXJuIHZhbHVlIG9mIHRoZSB0YXJnZXQgUFVUIGVuZHBvaW50XG4gICAqL1xuICBwdWJsaWMgcHV0KHVyaTogc3RyaW5nLCBkYXRhPzogYW55LCBiYXNlPzogc3RyaW5nLCByZXF1ZXN0T3B0aW9ucz86IEh0dHBPcHRpb25zKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dCh0aGlzLmdldENvbnRleHRQYXRoKGJhc2UpICsgdXJpLCBkYXRhLCB0aGlzLmdldEh0dHBPcHRpb25zKHJlcXVlc3RPcHRpb25zKSk7XG4gIH1cblxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgcHVibGljIGdldEpzb24odXJpOiBzdHJpbmcsIGJhc2U/OiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMuZ2V0Q29udGV4dFBhdGgoYmFzZSkgKyB1cmksIHRoaXMuZ2V0SHR0cE9wdGlvbnMoe3Jlc3BvbnNlVHlwZTogJ2pzb24nfSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFdyYXBwZWQgSFRUUCBQT1NUIG1ldGhvZFxuICAgKiBAcGFyYW0gdXJpIFRoZSB0YXJnZXQgUkVTVCBVUklcbiAgICogQHBhcmFtIGRhdGEgRGF0YSB0byBiZSAncG9zdGVkJ1xuICAgKiBAcGFyYW0gYmFzZSBUaGUgQmFzZSBVUkkgKGJhY2tlbmQgc2VydmljZSkgdG8gYmUgdXNlZFxuICAgKiBAcGFyYW0gcmVxdWVzdE9wdGlvbnMgQWRkaXRpb25hbCByZXF1ZXN0IG9wdGlvbnNcbiAgICogQHJldHVybnMgVGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgdGFyZ2V0IFBPU1QgZW5kcG9pbnRcbiAgICovXG4gIHB1YmxpYyBwb3N0KHVyaTogc3RyaW5nLCBkYXRhPywgYmFzZT86IHN0cmluZywgcmVxdWVzdE9wdGlvbnM/OiBIdHRwT3B0aW9ucyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgY29uc3QgYmFzZVVyaSA9IHRoaXMuZ2V0Q29udGV4dFBhdGgoYmFzZSk7XG4gICAgY29uc3QgcGF5bG9hZCA9IGRhdGEgPyBKU09OLnN0cmluZ2lmeShkYXRhKSA6ICcnO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHtiYXNlVXJpfSR7dXJpfWAsIHBheWxvYWQsIHRoaXMuZ2V0SHR0cE9wdGlvbnMocmVxdWVzdE9wdGlvbnMpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQZXJmb3JtcyBhIG11bHRpcGFydCBmb3JtIGRhdGEgUE9TVCByZXF1ZXN0LlxuICAgKiBAcGFyYW0gdXJpIFRoZSB0YXJnZXQgUkVTVCBVUklcbiAgICogQHBhcmFtIGZvcm1EYXRhIEZvcm1EYXRhIHRvIGJlICdwb3N0ZWQnXG4gICAqIEBwYXJhbSBiYXNlIFRoZSBCYXNlIFVSSSAoYmFja2VuZCBzZXJ2aWNlKSB0byBiZSB1c2VkXG4gICAqIEBwYXJhbSByZXF1ZXN0T3B0aW9ucyBBZGRpdGlvbmFsIHJlcXVlc3Qgb3B0aW9uc1xuICAgKiBAcmV0dXJucyBUaGUgcmV0dXJuIHZhbHVlIG9mIHRoZSB0YXJnZXQgUE9TVCBlbmRwb2ludFxuICAgKi9cbiAgcHVibGljIHBvc3RNdWx0aVBhcnQodXJpOiBzdHJpbmcsIGZvcm1EYXRhOiBGb3JtRGF0YSwgYmFzZT86IHN0cmluZywgcmVxdWVzdE9wdGlvbnM/OiBIdHRwT3B0aW9ucyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgY29uc3QgYmFzZVVyaSA9IHRoaXMuZ2V0Q29udGV4dFBhdGgoYmFzZSk7XG4gICAgY29uc3QgaGVhZGVycyA9IHRoaXMuZ2V0SGVhZGVycygpO1xuICAgIGhlYWRlcnMuZGVsZXRlKCdDb250ZW50LVR5cGUnKTtcbiAgICBjb25zdCByZXFPcHRpb25zID0gT2JqZWN0LmFzc2lnbih7aGVhZGVyczogaGVhZGVycywgd2l0aENyZWRlbnRpYWxzOiB0aGlzLmNvcmVDb25maWcud2l0aENyZWRlbnRpYWxzfSwgcmVxdWVzdE9wdGlvbnMpO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHtiYXNlVXJpfSR7dXJpfWAsIGZvcm1EYXRhLCByZXFPcHRpb25zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXcmFwcGVkIEhUVFAgREVMRVRFIG1ldGhvZFxuICAgKiBAcGFyYW0gdXJpIFRoZSB0YXJnZXQgUkVTVCBVUklcbiAgICogQHBhcmFtIGJhc2UgVGhlIEJhc2UgVVJJIChiYWNrZW5kIHNlcnZpY2UpIHRvIGJlIHVzZWRcbiAgICogQHBhcmFtIHJlcXVlc3RPcHRpb25zIEFkZGl0aW9uYWwgcmVxdWVzdCBvcHRpb25zXG4gICAqIEByZXR1cm5zIFRoZSByZXR1cm4gdmFsdWUgb2YgdGhlIHRhcmdldCBERUxFVEUgZW5kcG9pbnRcbiAgICovXG4gIHB1YmxpYyBkZWwodXJpOiBzdHJpbmcsIGJhc2U/OiBzdHJpbmcsIHJlcXVlc3RPcHRpb25zPzogSHR0cE9wdGlvbnMpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZGVsZXRlKHRoaXMuZ2V0Q29udGV4dFBhdGgoYmFzZSkgKyB1cmksIHRoaXMuZ2V0SHR0cE9wdGlvbnMocmVxdWVzdE9wdGlvbnMpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqIFNvZnQgdXBkYXRlIGZvciBsaXN0cyAtIGVuYWJsZXMgZ3JpZCB0byBoYW5kbGUgYWxsIGNoYW5nZXNcbiAgICogdG8gYWRkIG5ldyAtIG9ubHkgaXRlbSBzaG91bGQgYmUgc3BlY2lmaWVkXG4gICAqIHRvIHJlbW92ZSAtIG9ubHkgaWQgc2hvdWxkIGJlIHNwZWNpZmllZFxuICAgKiB0byB1cGRhdGUgLSBib3RoIHBhcmFtcyBzaG91bGQgYmUgc3BlY2lmaWVkXG4gICAqXG4gICAqIEBwYXJhbSBhbnlbXSBsaXN0IE9yaWdpbmFsIGxpc3Qgb2YgaXRlbXNcbiAgICogQHBhcmFtIGlkPzogc3RyaW5nOyBpdGVtPzogYW55IGRhdGFbXVxuICAgKiBAcmV0dXJucyBhbnlbXVxuICAgKi9cbiAgcHVibGljIHVwZGF0ZShsaXN0OiBhbnlbXSwgZGF0YToge2lkPzogc3RyaW5nLCBpdGVtPzogYW55fVtdKSB7XG4gICAgZGF0YS5mb3JFYWNoKCh7aWQsIGl0ZW19KSA9PiB7XG4gICAgICBpZiAoaWQpIHtcbiAgICAgICAgY29uc3QgX2l0ZW0gPSBsaXN0LmZpbmQobCA9PiBsLmlkID09PSBpZCk7XG4gICAgICAgIE9iamVjdC5hc3NpZ24oX2l0ZW0sIGl0ZW0sIGl0ZW0gPyB7X191cGRhdGVkOiB0cnVlfSA6IHtfX3JlbW92ZWQ6IHRydWV9KTtcbiAgICAgIH0gZWxzZSBpZiAoaXRlbSkge1xuICAgICAgICBsaXN0LnVuc2hpZnQoT2JqZWN0LmFzc2lnbihpdGVtLCB7X19hZGRlZDogdHJ1ZX0pKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gbGlzdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqIENhY2hlIGZvciBzbWFsbCByZXF1ZXN0cyBsaWtlIGljb25zIGFuZCBjb25maWdzXG4gICAqXG4gICAqIEBwYXJhbSBzdHJpbmcgdXJpXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8YW55PlxuICAgKi9cbiAgcHVibGljIGdldFZpYUNhY2hlKHVyaTogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBpZiAodGhpcy5jYWNoZS5oYXModXJpKSkge1xuICAgICAgcmV0dXJuIG9ic2VydmFibGVPZih0aGlzLmNhY2hlLmdldCh1cmkpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0VmlhVGVtcENhY2hlKHVyaSwgKCkgPT4gdGhpcy5odHRwLmdldCh1cmksIHt3aXRoQ3JlZGVudGlhbHM6IHRoaXMuY29yZUNvbmZpZy53aXRoQ3JlZGVudGlhbHMsIHJlc3BvbnNlVHlwZTogJ3RleHQnfSkucGlwZShcbiAgICAgICAgdGFwKHRleHQgPT4gdGhpcy5jYWNoZS5zZXQodXJpLCB0ZXh0KSkpKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKiBUZW1wb3JhcnkgQ2FjaGUgZm9yIG11bHRpcGxlIGlkZW50aWNhbCByZXF1ZXN0c1xuICAgKlxuICAgKiBAcGFyYW0gc3RyaW5nIGlkXG4gICAqIEBwYXJhbSBGdW5jdGlvbiByZXF1ZXN0XG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8YW55PlxuICAgKi9cbiAgcHVibGljIGdldFZpYVRlbXBDYWNoZShpZDogc3RyaW5nLCByZXF1ZXN0PzogRnVuY3Rpb24pOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGlmICh0aGlzLnRlbXAuaGFzKGlkKSkge1xuICAgICAgcmV0dXJuIHRoaXMudGVtcC5nZXQoaWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCByZXNwID0gKHJlcXVlc3QgPyByZXF1ZXN0KCkgOiB0aGlzLmdldChpZCkpLnBpcGUoXG4gICAgICAgIGZpbmFsaXplKCgpID0+IHRoaXMudGVtcC5kZWxldGUoaWQpKSxcbiAgICAgICAgc2hhcmVSZXBsYXkoMSlcbiAgICAgICk7XG4gICAgICB0aGlzLnRlbXAuc2V0KGlkLCByZXNwKTtcbiAgICAgIHJldHVybiByZXNwO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBEb3dubG9hZCB0aGUgY29udGVudCBvZiBkbXMgb2JqZWN0cy5cbiAgICpcbiAgICogQHBhcmFtIERtc09iamVjdFtdIGRtc09iamVjdHMgQXJyYXkgb2YgZG1zIG9iamVjdHMgdG8gYmUgZG93bmxvYWRlZFxuICAgKiBAcGFyYW0gXCJQREZcIiB8IFwiVElGRlwiIHwgXCJURVhUXCIgfCBcIkpQRUdcIiByZW5kaXRpb24gVGhlIHR5cGUgb2YgcmVuZGl0aW9uIHRvIGJlIGRvd25sb2FkZWQuIElmIG5vdCBzcGVjaWZpZWQsIHRoZSBvcmlnaW5hbCBjb250ZW50IHdpbGwgYmUgZG93bmxvYWRlZC5cbiAgICogUG9zc2libGUgcmVuZGl0aW9ucyBhcmUgYFBERmAsIGBUSUZGYCwgYFRFWFRgLCBgSlBFR2AuXG4gICAqL1xuICBwdWJsaWMgZG93bmxvYWRDb250ZW50KGRtc09iamVjdHM6IERtc09iamVjdFtdLCByZW5kaXRpb24/OiAnUERGJyB8ICdUSUZGJyB8ICdURVhUJyB8ICdKUEVHJywgZmlsZU5hbWVXaXRoVmVyc2lvbk51bWJlcj86IGJvb2xlYW4pIHtcblxuICAgIGRtc09iamVjdHMuZm9yRWFjaChkbXNPYmplY3QgPT4ge1xuICAgICAgaWYgKGRtc09iamVjdC5jb250ZW50KSB7XG5cbiAgICAgICAgbGV0IHVyaSA9IGAke3RoaXMuZ2V0U2VydmljZUJhc2UoKX0vZG1zLyR7ZG1zT2JqZWN0LmNvbnRlbnQuaWR9L2NvbnRlbnQ/dHlwZT0ke2Rtc09iamVjdC5jb250ZW50LnR5cGV9JmFzZG93bmxvYWQ9dHJ1ZWA7XG4gICAgICAgIGlmIChyZW5kaXRpb24pIHtcbiAgICAgICAgICB1cmkgKz0gYCZyZW5kaXRpb249JHtyZW5kaXRpb259Jl9pbnRlbnQ9RE9XTkxPQURfJHtyZW5kaXRpb259YDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB1cmkgKz0gJyZfaW50ZW50PURPV05MT0FEJztcbiAgICAgICAgfVxuICAgICAgICBpZiAoZG1zT2JqZWN0LmNvbnRlbnQuaWQgPT09IGRtc09iamVjdC5pZCkge1xuICAgICAgICAgIHVyaSArPSBgJnZlcnNpb249JHtkbXNPYmplY3QudmVyc2lvbn1gO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZG93bmxvYWQodXJpLCBmaWxlTmFtZVdpdGhWZXJzaW9uTnVtYmVyID8gZG1zT2JqZWN0LnZlcnNpb24gOiBudWxsKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMubG9nZ2VyLmVycm9yKCdUaGUgcHJvdmlkZWQgZG1zIG9iamVjdCBoYXMgbm8gY29udGVudCcsIGRtc09iamVjdCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgZG93bmxvYWQodXJpOiBzdHJpbmcsIHZlcnNpb24/OiBudW1iZXIpIHtcbiAgICB0aGlzLmh0dHAuZ2V0KHVyaSwge29ic2VydmU6ICdyZXNwb25zZScsIHJlc3BvbnNlVHlwZTogJ2Jsb2InLCB3aXRoQ3JlZGVudGlhbHM6IHRoaXMuY29yZUNvbmZpZy53aXRoQ3JlZGVudGlhbHN9KVxuICAgICAgLnN1YnNjcmliZSgocmVzKSA9PiB7XG4gICAgICAgIEZpbGVTYXZlci5zYXZlQXMoXG4gICAgICAgICAgcmVzLmJvZHksXG4gICAgICAgICAgdGhpcy5nZXRGaWxlTmFtZUZyb21IdHRwUmVzcG9uc2UocmVzLCB2ZXJzaW9uKVxuICAgICAgICApO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGdldEZpbGVOYW1lRnJvbUh0dHBSZXNwb25zZShyZXM6IEh0dHBSZXNwb25zZTxhbnk+LCB2ZXJzaW9uOiBudW1iZXIpIHtcbiAgICBjb25zdCBjb250ZW50RGlzcG9zaXRpb25IZWFkZXIgPSByZXMuaGVhZGVycy5nZXQoJ0NvbnRlbnQtRGlzcG9zaXRpb24nKSB8fCAnJztcbiAgICBjb25zdCBlbmNvZGVkRmlsZU5hbWVNYXRjaFJlc3VsdCA9IGNvbnRlbnREaXNwb3NpdGlvbkhlYWRlci5tYXRjaCgnZmlsZW5hbWVcXFxcKj1VVEYtOFxcJ1xcJyguKiknKVxuICAgICAgfHwgY29udGVudERpc3Bvc2l0aW9uSGVhZGVyLm1hdGNoKCdmaWxlbmFtZT1cXFwiKC4qKVxcXCInKTtcbiAgICBjb25zdCBlbmNvZGVkRmlsZU5hbWUgPSBlbmNvZGVkRmlsZU5hbWVNYXRjaFJlc3VsdCA/IGVuY29kZWRGaWxlTmFtZU1hdGNoUmVzdWx0WzFdIDogbnVsbDtcbiAgICBjb25zdCBmaWxlbmFtZSA9IGVuY29kZWRGaWxlTmFtZSA/IGRlY29kZVVSSUNvbXBvbmVudChlbmNvZGVkRmlsZU5hbWUpIDogJ3Vua25vd24nO1xuICAgIGNvbnN0IGluZGV4ID0gIX5maWxlbmFtZS5sYXN0SW5kZXhPZignLicpID8gZmlsZW5hbWUubGVuZ3RoIDogZmlsZW5hbWUubGFzdEluZGV4T2YoJy4nKTtcbiAgICByZXR1cm4gIXZlcnNpb24gPyBmaWxlbmFtZSA6IGAke2ZpbGVuYW1lLnNsaWNlKDAsIGluZGV4KX1fdiR7dmVyc2lvbn0ke2ZpbGVuYW1lLnNsaWNlKGluZGV4KX1gO1xuICB9XG5cblxuICAvKipcbiAgICogR2V0dGVyIGZvciB0aGUgSFRUUCBIZWFkZXJzXG4gICAqXG4gICAqIEByZXR1cm5zIEh0dHBIZWFkZXJzXG4gICAqL1xuICBwcml2YXRlIHNldERlZmF1bHRIZWFkZXJzKCk6IEh0dHBIZWFkZXJzIHtcbiAgICByZXR1cm4gbmV3IEh0dHBIZWFkZXJzKHtcbiAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICAnWC1vcy1pbmNsdWRlLWxpbmtzJzogJ2ZhbHNlJyxcbiAgICAgICdYLW9zLWluY2x1ZGUtYWN0aW9ucyc6ICdmYWxzZScsXG4gICAgICAnWC1vcy1zeW5jLWluZGV4JzogJ3RydWUnXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==