ontimize-web-ngx 15.6.0-next.1 → 15.6.0-next.11

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 (161) hide show
  1. package/esm2020/lib/components/app-header/o-app-header.component.mjs +3 -3
  2. package/esm2020/lib/components/app-sidenav/menu-group/o-app-sidenav-menu-group.component.mjs +19 -3
  3. package/esm2020/lib/components/app-sidenav/menu-item/o-app-sidenav-menu-item.component.mjs +17 -4
  4. package/esm2020/lib/components/app-sidenav/o-app-sidenav.component.mjs +7 -5
  5. package/esm2020/lib/components/filter-builder/o-filter-builder.component.mjs +1 -1
  6. package/esm2020/lib/components/form/navigation/o-form-navigation.component.mjs +42 -24
  7. package/esm2020/lib/components/form/o-form.component.mjs +4 -3
  8. package/esm2020/lib/components/form/services/o-form-message.service.mjs +2 -2
  9. package/esm2020/lib/components/grid/o-grid.component.mjs +19 -17
  10. package/esm2020/lib/components/grid/skeketon/o-grid-skeleton.component.mjs +12 -15
  11. package/esm2020/lib/components/index.mjs +2 -1
  12. package/esm2020/lib/components/input/file-input/o-file-input.component.mjs +3 -2
  13. package/esm2020/lib/components/input/o-boolean-form-data-component.class.mjs +9 -1
  14. package/esm2020/lib/components/input/o-form-service-component.class.mjs +4 -3
  15. package/esm2020/lib/components/list/list-item/o-list-item.component.mjs +8 -3
  16. package/esm2020/lib/components/list/o-list.component.mjs +41 -16
  17. package/esm2020/lib/components/list/skeleton/o-list-skeleton.component.mjs +12 -15
  18. package/esm2020/lib/components/o-form-data-component.class.mjs +2 -2
  19. package/esm2020/lib/components/o-repeatable-skeleton.component.mjs +33 -0
  20. package/esm2020/lib/components/o-service-base-component.class.mjs +5 -4
  21. package/esm2020/lib/components/o-service-component.class.mjs +10 -9
  22. package/esm2020/lib/components/o-skeleton.component.mjs +15 -6
  23. package/esm2020/lib/components/table/column/cell-editor/o-base-table-cell-editor.class.mjs +2 -2
  24. package/esm2020/lib/components/table/column/cell-renderer/o-base-table-cell-renderer.class.mjs +1 -1
  25. package/esm2020/lib/components/table/column/cell-renderer/service/o-table-cell-renderer-service.component.mjs +5 -4
  26. package/esm2020/lib/components/table/column/o-column.class.mjs +2 -1
  27. package/esm2020/lib/components/table/column/o-table-column.component.mjs +10 -4
  28. package/esm2020/lib/components/table/extensions/contextmenu/o-table-context-menu.component.mjs +24 -6
  29. package/esm2020/lib/components/table/extensions/dialog/filter-by-column/o-table-filter-by-column-data-dialog.component.mjs +75 -87
  30. package/esm2020/lib/components/table/extensions/dialog/filter-by-column/o-table-filter-by-column.service.mjs +53 -0
  31. package/esm2020/lib/components/table/extensions/header/table-columns-filter/o-table-columns-filter.component.mjs +12 -4
  32. package/esm2020/lib/components/table/extensions/header/table-menu/o-table-menu.component.mjs +2 -2
  33. package/esm2020/lib/components/table/extensions/o-table.dao.mjs +6 -4
  34. package/esm2020/lib/components/table/extensions/skeleton/o-table-skeleton.component.mjs +5 -19
  35. package/esm2020/lib/components/table/o-table-base.class.mjs +1 -1
  36. package/esm2020/lib/components/table/o-table.component.mjs +104 -10
  37. package/esm2020/lib/components/table/o-table.module.mjs +4 -1
  38. package/esm2020/lib/components/tree/o-tree.component.mjs +96 -14
  39. package/esm2020/lib/components/tree/o-tree.datasource.mjs +3 -3
  40. package/esm2020/lib/components/user-info/o-user-info.component.mjs +5 -4
  41. package/esm2020/lib/config/o-providers.mjs +5 -3
  42. package/esm2020/lib/i18n/i18n.mjs +6 -3
  43. package/esm2020/lib/injection-tokens/index.mjs +19 -0
  44. package/esm2020/lib/interfaces/base-response.interface.mjs +1 -1
  45. package/esm2020/lib/interfaces/form-layout-manager.interface.mjs +1 -1
  46. package/esm2020/lib/interfaces/index.mjs +3 -1
  47. package/esm2020/lib/interfaces/jsonapi-config.interface.mjs +3 -0
  48. package/esm2020/lib/interfaces/jsonapi-response.interface.mjs +2 -1
  49. package/esm2020/lib/interfaces/o-table-column.interface.mjs +1 -1
  50. package/esm2020/lib/interfaces/service-response.interface.mjs +1 -1
  51. package/esm2020/lib/layouts/app-layout/o-app-layout-base.class.mjs +1 -1
  52. package/esm2020/lib/layouts/app-layout/o-app-layout.component.mjs +26 -9
  53. package/esm2020/lib/layouts/form-layout/o-form-layout-manager.component.mjs +4 -3
  54. package/esm2020/lib/layouts/form-layout/split-pane/o-form-layout-split-pane.component.mjs +2 -2
  55. package/esm2020/lib/layouts/form-layout/tabgroup/o-form-layout-tabgroup.component.mjs +2 -1
  56. package/esm2020/lib/services/base-service.class.mjs +3 -3
  57. package/esm2020/lib/services/factories.mjs +25 -53
  58. package/esm2020/lib/services/index.mjs +2 -2
  59. package/esm2020/lib/services/jsonapi/jsonapi-preferences.service.mjs +2 -2
  60. package/esm2020/lib/services/jsonapi/jsonapi.service.mjs +53 -21
  61. package/esm2020/lib/services/request-adapter/base-request-argument.adapter.mjs +12 -0
  62. package/esm2020/lib/services/request-adapter/base-request-argument.interface.mjs +2 -0
  63. package/esm2020/lib/services/request-adapter/index.mjs +5 -0
  64. package/esm2020/lib/services/request-adapter/jsonapi-request-arguments.adapter.mjs +70 -0
  65. package/esm2020/lib/services/request-adapter/ontimize-request-arguments.adapter.mjs +19 -0
  66. package/esm2020/lib/services/state/o-filter-builder-component-state.service.mjs +1 -1
  67. package/esm2020/lib/services/state/o-table-component-state.class.mjs +7 -1
  68. package/esm2020/lib/services/state/o-table-component-state.service.mjs +8 -2
  69. package/esm2020/lib/services/translate/o-translate.service.mjs +3 -2
  70. package/esm2020/lib/types/config.type.mjs +1 -1
  71. package/esm2020/lib/types/form-layout-detail-component-data.type.mjs +1 -1
  72. package/esm2020/lib/types/index.mjs +1 -2
  73. package/esm2020/lib/types/service-configuration.type.mjs +1 -1
  74. package/esm2020/lib/types/table/index.mjs +2 -1
  75. package/esm2020/lib/types/table/o-column-value-filter.type.mjs +1 -1
  76. package/esm2020/lib/types/table/o-table-expandable-row-state.type.mjs +2 -0
  77. package/esm2020/lib/util/codes.mjs +3 -1
  78. package/esm2020/lib/util/errors.mjs +3 -9
  79. package/esm2020/lib/util/factory.util.mjs +67 -0
  80. package/esm2020/lib/util/index.mjs +3 -1
  81. package/esm2020/lib/util/injection-token.utils.mjs +4 -0
  82. package/esm2020/lib/util/preference-mapping-util.mjs +2 -2
  83. package/esm2020/lib/util/sqltypes.mjs +2 -2
  84. package/esm2020/lib/util/util.mjs +11 -53
  85. package/esm2020/public-api.mjs +2 -1
  86. package/fesm2015/ontimize-web-ngx.mjs +6995 -6537
  87. package/fesm2015/ontimize-web-ngx.mjs.map +1 -1
  88. package/fesm2020/ontimize-web-ngx.mjs +6634 -6194
  89. package/fesm2020/ontimize-web-ngx.mjs.map +1 -1
  90. package/lib/components/app-sidenav/menu-group/o-app-sidenav-menu-group.component.d.ts +3 -0
  91. package/lib/components/app-sidenav/menu-item/o-app-sidenav-menu-item.component.d.ts +1 -0
  92. package/lib/components/app-sidenav/o-app-sidenav.component.d.ts +2 -1
  93. package/lib/components/filter-builder/o-filter-builder.component.d.ts +1 -1
  94. package/lib/components/form/navigation/o-form-navigation.component.d.ts +7 -4
  95. package/lib/components/grid/skeketon/o-grid-skeleton.component.d.ts +4 -7
  96. package/lib/components/index.d.ts +1 -0
  97. package/lib/components/input/o-boolean-form-data-component.class.d.ts +1 -0
  98. package/lib/components/list/o-list.component.d.ts +5 -1
  99. package/lib/components/list/skeleton/o-list-skeleton.component.d.ts +4 -7
  100. package/lib/components/o-repeatable-skeleton.component.d.ts +9 -0
  101. package/lib/components/o-skeleton.component.d.ts +10 -5
  102. package/lib/components/table/column/cell-renderer/o-base-table-cell-renderer.class.d.ts +1 -1
  103. package/lib/components/table/column/o-column.class.d.ts +2 -1
  104. package/lib/components/table/column/o-table-column.component.d.ts +2 -2
  105. package/lib/components/table/extensions/contextmenu/o-table-context-menu.component.d.ts +2 -0
  106. package/lib/components/table/extensions/dialog/filter-by-column/o-table-filter-by-column-data-dialog.component.d.ts +9 -6
  107. package/lib/components/table/extensions/dialog/filter-by-column/o-table-filter-by-column.service.d.ts +12 -0
  108. package/lib/components/table/extensions/header/o-table-header-components.d.ts +2 -2
  109. package/lib/components/table/extensions/header/table-columns-filter/o-table-columns-filter.component.d.ts +1 -1
  110. package/lib/components/table/extensions/skeleton/o-table-skeleton.component.d.ts +1 -10
  111. package/lib/components/table/o-table-base.class.d.ts +2 -0
  112. package/lib/components/table/o-table.component.d.ts +12 -2
  113. package/lib/components/tree/o-tree.component.d.ts +10 -1
  114. package/lib/components/user-info/o-user-info.component.d.ts +2 -1
  115. package/lib/config/o-directives.d.ts +1 -1
  116. package/lib/i18n/i18n.d.ts +3 -0
  117. package/lib/injection-tokens/index.d.ts +33 -0
  118. package/lib/interfaces/base-response.interface.d.ts +0 -2
  119. package/lib/interfaces/form-layout-manager.interface.d.ts +1 -1
  120. package/lib/interfaces/index.d.ts +2 -0
  121. package/lib/interfaces/jsonapi-config.interface.d.ts +3 -0
  122. package/lib/interfaces/jsonapi-response.interface.d.ts +47 -7
  123. package/lib/interfaces/o-table-column.interface.d.ts +2 -1
  124. package/lib/interfaces/service-response.interface.d.ts +2 -0
  125. package/lib/layouts/app-layout/o-app-layout-base.class.d.ts +1 -1
  126. package/lib/layouts/app-layout/o-app-layout.component.d.ts +7 -3
  127. package/lib/services/base-service.class.d.ts +2 -2
  128. package/lib/services/factories.d.ts +7 -28
  129. package/lib/services/index.d.ts +1 -1
  130. package/lib/services/jsonapi/jsonapi.service.d.ts +7 -4
  131. package/lib/services/{query-arguments/base-query-argument.adapter.d.ts → request-adapter/base-request-argument.adapter.d.ts} +2 -1
  132. package/lib/services/{query-arguments/base-query-argument.interface.d.ts → request-adapter/base-request-argument.interface.d.ts} +1 -1
  133. package/lib/services/request-adapter/index.d.ts +4 -0
  134. package/lib/services/request-adapter/jsonapi-request-arguments.adapter.d.ts +13 -0
  135. package/lib/services/request-adapter/ontimize-request-arguments.adapter.d.ts +8 -0
  136. package/lib/services/state/o-filter-builder-component-state.service.d.ts +1 -1
  137. package/lib/services/state/o-table-component-state.class.d.ts +3 -0
  138. package/lib/types/config.type.d.ts +2 -2
  139. package/lib/types/form-layout-detail-component-data.type.d.ts +1 -1
  140. package/lib/types/index.d.ts +0 -1
  141. package/lib/types/service-configuration.type.d.ts +12 -2
  142. package/lib/types/table/index.d.ts +1 -0
  143. package/lib/types/table/o-column-value-filter.type.d.ts +3 -0
  144. package/lib/types/table/o-table-expandable-row-state.type.d.ts +5 -0
  145. package/lib/util/codes.d.ts +3 -0
  146. package/lib/util/factory.util.d.ts +10 -0
  147. package/lib/util/index.d.ts +2 -0
  148. package/lib/util/injection-token.utils.d.ts +2 -0
  149. package/lib/util/util.d.ts +1 -5
  150. package/package.json +1 -1
  151. package/public-api.d.ts +1 -0
  152. package/esm2020/lib/services/query-arguments/base-query-argument.adapter.mjs +0 -9
  153. package/esm2020/lib/services/query-arguments/base-query-argument.interface.mjs +0 -2
  154. package/esm2020/lib/services/query-arguments/index.mjs +0 -5
  155. package/esm2020/lib/services/query-arguments/jsonapi-query-arguments.adapter.mjs +0 -62
  156. package/esm2020/lib/services/query-arguments/ontimize-query-arguments.adapter.mjs +0 -19
  157. package/esm2020/lib/types/ontimize-service-config.type.mjs +0 -2
  158. package/lib/services/query-arguments/index.d.ts +0 -4
  159. package/lib/services/query-arguments/jsonapi-query-arguments.adapter.d.ts +0 -12
  160. package/lib/services/query-arguments/ontimize-query-arguments.adapter.d.ts +0 -8
  161. package/lib/types/ontimize-service-config.type.d.ts +0 -5
@@ -1,11 +1,11 @@
1
- import { InjectionToken, Injector } from '@angular/core';
1
+ import { Injector } from '@angular/core';
2
2
  import { AppConfig } from '../config/app-config';
3
- import { ServiceType } from '../types/service-type.type';
3
+ import { O_AUTH_SERVICE, O_COMPONENT_STATE_SERVICE, O_DATA_SERVICE, O_EXPORT_DATA_SERVICE, O_EXPORT_SERVICE, O_FILE_SERVICE, O_LOCALSTORAGE_SERVICE, O_PERMISSION_SERVICE, O_RESPONSE_ADAPTER, O_REQUEST_ADAPTER } from '../injection-tokens';
4
+ import { _getInjectionTokenValue } from '../util/injection-token.utils';
4
5
  import { Util } from '../util/util';
5
6
  import { AuthService } from './auth.service';
6
7
  import { JSONAPIPreferencesService } from './jsonapi/jsonapi-preferences.service';
7
8
  import { JSONAPIServiceResponseAdapter } from './jsonapi/jsonapi-service-response.adapter';
8
- import { JSONAPIService } from './jsonapi/jsonapi.service';
9
9
  import { LocalStorageService } from './local-storage.service';
10
10
  import { NameConventionLower } from './name-convention/name-convention-lower.service';
11
11
  import { NameConventionUpper } from './name-convention/name-convention-upper.service';
@@ -13,7 +13,6 @@ import { NameConvention } from './name-convention/name-convention.service';
13
13
  import { OntimizeAuthService } from './o-auth.service';
14
14
  import { OntimizeExportDataProviderService3X } from './ontimize-export-data-provider-3x.service';
15
15
  import { OntimizeExportDataProviderService } from './ontimize-export-data-provider.service';
16
- import { OntimizeEEService } from './ontimize/ontimize-ee.service';
17
16
  import { OntimizeExportService3X } from './ontimize/ontimize-export-3xx.service';
18
17
  import { OntimizeExportService } from './ontimize/ontimize-export.service';
19
18
  import { OntimizeFileService } from './ontimize/ontimize-file.service';
@@ -22,24 +21,10 @@ import { OntimizeServiceResponseAdapter } from './ontimize/ontimize-service-resp
22
21
  import { OntimizeService } from './ontimize/ontimize.service';
23
22
  import { OntimizeEEPermissionsService } from './permissions/ontimize-ee-permissions.service';
24
23
  import { OntimizePermissionsService } from './permissions/ontimize-permissions.service';
25
- import { JSONAPIQueryArgumentsAdapter } from './query-arguments/jsonapi-query-arguments.adapter';
26
- import { OntimizeQueryArgumentsAdapter } from './query-arguments/ontimize-query-arguments.adapter';
24
+ import { JSONAPIRequestArgumentsAdapter } from './request-adapter/jsonapi-request-arguments.adapter';
25
+ import { OntimizeRequestArgumentsAdapter } from './request-adapter/ontimize-request-arguments.adapter';
27
26
  import { AbstractComponentStateService, DefaultComponentStateService } from './state/o-component-state.service';
28
- export const O_DATA_SERVICE = new InjectionToken('Ontimize data service');
29
- export const O_RESPONSE_ADAPTER = new InjectionToken('Service response adapter');
30
- export const O_TRANSLATE_SERVICE = new InjectionToken('Translate service');
31
- export const O_FILE_SERVICE = new InjectionToken('File uploader service');
32
- export const O_LOCALSTORAGE_SERVICE = new InjectionToken('Local storage service');
33
- export const O_EXPORT_SERVICE = new InjectionToken('Export service');
34
- export const O_PERMISSION_SERVICE = new InjectionToken('Permission service');
35
- export const O_AUTH_SERVICE = new InjectionToken('Authentication service');
36
- export const O_COMPONENT_STATE_SERVICE = new InjectionToken('Component state service');
37
- export const O_CHART_ON_DEMAND_SERVICE = new InjectionToken('Chart on demand service');
38
- export const O_REPORT_SERVICE = new InjectionToken('Report service');
39
- export const O_ERROR_DIALOG_MANAGER = new InjectionToken('Error dialog manager');
40
- export const O_EXPORT_DATA_SERVICE = new InjectionToken('Export data provider');
41
- export const O_MAT_ERROR_OPTIONS = new InjectionToken('o-mat-error-options');
42
- export const O_FORM_MESSAGE_SERVICE = new InjectionToken('Ontimize o-form message service');
27
+ import { FactoryUtil } from '../util/factory.util';
43
28
  export function dataServiceFactory(injector) {
44
29
  const serviceClass = _getInjectionTokenValue(O_DATA_SERVICE, injector);
45
30
  const service = Util.createServiceInstance(serviceClass, injector);
@@ -48,19 +33,10 @@ export function dataServiceFactory(injector) {
48
33
  }
49
34
  const config = injector.get(AppConfig).getConfiguration();
50
35
  const serviceType = config.serviceType;
51
- return createServiceInstance(serviceType, injector);
36
+ return FactoryUtil.createServiceInstanceByType(serviceType, injector);
52
37
  }
53
- export function createServiceInstance(serviceType, injector) {
54
- if (!Util.isDefined(serviceType) || ServiceType.OntimizeEE === serviceType) {
55
- return new OntimizeEEService(injector);
56
- }
57
- if (ServiceType.Ontimize === serviceType) {
58
- return new OntimizeService(injector);
59
- }
60
- if (ServiceType.JSONAPI === serviceType) {
61
- return new JSONAPIService(injector);
62
- }
63
- return Util.createServiceInstance(serviceType, injector);
38
+ export function createServiceInstance(serviceClass, injector) {
39
+ return Util.createServiceInstance(serviceClass, injector);
64
40
  }
65
41
  export function fileServiceFactory(injector) {
66
42
  const serviceClass = _getInjectionTokenValue(O_FILE_SERVICE, injector);
@@ -106,15 +82,20 @@ export function exportDataFactory(injector) {
106
82
  }
107
83
  }
108
84
  export function serviceRequestAdapterFactory(injector) {
85
+ const serviceClass = _getInjectionTokenValue(O_REQUEST_ADAPTER, injector);
86
+ const service = Util.createServiceInstance(serviceClass, injector);
87
+ if (Util.isDefined(service)) {
88
+ return service;
89
+ }
109
90
  const config = injector.get(AppConfig).getConfiguration();
110
91
  if (!Util.isDefined(config.serviceType) ||
111
- Util.isOntimizeEEService(injector)) {
112
- return new OntimizeQueryArgumentsAdapter();
92
+ FactoryUtil.isOntimizeEEService(injector)) {
93
+ return new OntimizeRequestArgumentsAdapter();
113
94
  }
114
- else if (Util.isJsonApiService(injector)) {
115
- return new JSONAPIQueryArgumentsAdapter();
95
+ else if (FactoryUtil.isJsonApiService(injector)) {
96
+ return new JSONAPIRequestArgumentsAdapter();
116
97
  }
117
- return new OntimizeQueryArgumentsAdapter();
98
+ return new OntimizeRequestArgumentsAdapter();
118
99
  }
119
100
  export function serviceResponseAdapterFactory(injector) {
120
101
  const serviceClass = _getInjectionTokenValue(O_RESPONSE_ADAPTER, injector);
@@ -124,10 +105,10 @@ export function serviceResponseAdapterFactory(injector) {
124
105
  }
125
106
  const config = injector.get(AppConfig).getConfiguration();
126
107
  if (!Util.isDefined(config.serviceType) ||
127
- (Util.isOntimizeEEService(injector))) {
108
+ (FactoryUtil.isOntimizeEEService(injector))) {
128
109
  return new OntimizeServiceResponseAdapter();
129
110
  }
130
- else if (Util.isJsonApiService(injector)) {
111
+ else if (FactoryUtil.isJsonApiService(injector)) {
131
112
  return new JSONAPIServiceResponseAdapter();
132
113
  }
133
114
  return new JSONAPIServiceResponseAdapter();
@@ -149,10 +130,10 @@ export function permissionsServiceFactory(injector) {
149
130
  }
150
131
  export function preferencesServiceFactory(injector) {
151
132
  const config = injector.get(AppConfig).getConfiguration();
152
- if (!Util.isDefined(config.serviceType) || Util.isOntimizeEEService(injector)) {
133
+ if (!Util.isDefined(config.serviceType) || FactoryUtil.isOntimizeEEService(injector)) {
153
134
  return new OntimizePreferencesService(injector);
154
135
  }
155
- else if (ServiceType.JSONAPI === config.serviceType) {
136
+ else if (FactoryUtil.isJsonApiService(injector)) {
156
137
  return new JSONAPIPreferencesService(injector);
157
138
  }
158
139
  return new JSONAPIPreferencesService(injector);
@@ -171,19 +152,10 @@ export const OntimizeExportServiceProvider = { provide: OntimizeExportService, u
171
152
  export const OntimizeAuthServiceProvider = { provide: AuthService, useFactory: authServiceFactory, deps: [Injector] };
172
153
  export const ComponentStateServiceProvider = { provide: AbstractComponentStateService, useFactory: componentStateFactory, deps: [Injector] };
173
154
  export const ExportDataServiceProvider = { provide: OntimizeExportDataProviderService, useFactory: exportDataFactory, deps: [Injector] };
174
- export const ServiceRequestAdapter = { provide: OntimizeQueryArgumentsAdapter, useFactory: serviceRequestAdapterFactory, deps: [Injector] };
155
+ export const ServiceRequestAdapter = { provide: OntimizeRequestArgumentsAdapter, useFactory: serviceRequestAdapterFactory, deps: [Injector] };
175
156
  export const ServiceResponseAdapter = { provide: OntimizeServiceResponseAdapter, useFactory: serviceResponseAdapterFactory, deps: [Injector] };
176
157
  export const NameConventionProvider = { provide: NameConvention, useFactory: nameConventionServiceFactory, deps: [Injector] };
177
158
  export const OntimizeLocalStorageServiceProvider = { provide: LocalStorageService, useFactory: localStorageServiceFactory, deps: [Injector] };
178
- export function _getInjectionTokenValue(token, injector) {
179
- let service;
180
- try {
181
- service = injector.get(token);
182
- }
183
- catch (e) {
184
- }
185
- return service;
186
- }
187
159
  export function nameConventionServiceFactory(injector) {
188
160
  const config = injector.get(AppConfig).getConfiguration();
189
161
  if (config?.nameConvention === 'lower') {
@@ -194,4 +166,4 @@ export function nameConventionServiceFactory(injector) {
194
166
  }
195
167
  return new NameConvention();
196
168
  }
197
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjdG9yaWVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvb250aW1pemUtd2ViLW5neC9zcmMvbGliL3NlcnZpY2VzL2ZhY3Rvcmllcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV6RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFZakQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDcEMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTdDLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQzNGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUN0RixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUN0RixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDM0UsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFdkQsT0FBTyxFQUFFLG1DQUFtQyxFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDakcsT0FBTyxFQUFFLGlDQUFpQyxFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDNUYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDbkUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0s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LENBQUMsTUFBTSxzQkFBc0IsR0FBRyxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsVUFBVSxFQUFFLDRCQUE0QixFQUFFLElBQUksRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7QUFDOUgsTUFBTSxDQUFDLE1BQU0sbUNBQW1DLEdBQUcsRUFBRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsVUFBVSxFQUFFLDBCQUEwQixFQUFFLElBQUksRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7QUFVOUksTUFBTSxVQUFVLHVCQUF1QixDQUFJLEtBQXdCLEVBQUUsUUFBa0I7SUFDckYsSUFBSSxPQUFVLENBQUM7SUFDZixJQUFJO1FBQ0YsT0FBTyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7S0FDL0I7SUFBQyxPQUFPLENBQUMsRUFBRTtLQUVYO0lBQ0QsT0FBTyxPQUFPLENBQUM7QUFDakIsQ0FBQztBQU1ELE1BQU0sVUFBVSw0QkFBNEIsQ0FBQyxRQUFrQjtJQUU3RCxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFFMUQsSUFBSSxNQUFNLEVBQUUsY0FBYyxLQUFLLE9BQU8sRUFBRTtRQUN0QyxPQUFPLElBQUksbUJBQW1CLEVBQUUsQ0FBQztLQUNsQztTQUFNLElBQUksTUFBTSxFQUFFLGNBQWMsS0FBSyxPQUFPLEVBQUU7UUFDN0MsT0FBTyxJQUFJLG1CQUFtQixFQUFFLENBQUM7S0FDbEM7SUFDRCxPQUFPLElBQUksY0FBYyxFQUFFLENBQUM7QUFDOUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuLCBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBBcHBDb25maWcgfSBmcm9tICcuLi9jb25maWcvYXBwLWNvbmZpZyc7XG5pbXBvcnQgeyBJQ2hhcnRPbkRlbWFuZFNlcnZpY2UgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2NoYXJ0LW9uLWRlbWFuZC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSUV4cG9ydERhdGFQcm92aWRlciB9IGZyb20gJy4uL2ludGVyZmFjZXMvZXhwb3J0LWRhdGEtcHJvdmlkZXIuaW50ZXJmYWNlJztcbmltcG9ydCB7IElFeHBvcnRTZXJ2aWNlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9leHBvcnQtc2VydmljZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSUZpbGVTZXJ2aWNlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9maWxlLXNlcnZpY2UuaW50ZXJmYWNlJztcbmltcG9ydCB7IElMb2NhbFN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9sb2NhbC1zZXJ2aWNlLmludGVyZmFjZSc7XG5pbXBvcnQgeyBJTmFtZUNvbnZlbnRpb24gfSBmcm9tICcuLi9pbnRlcmZhY2VzL25hbWUtY29udmVudGlvbi5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSVBlcm1pc3Npb25zU2VydmljZSB9IGZyb20gJy4uL2ludGVyZmFjZXMvcGVybWlzc2lvbnMtc2VydmljZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSVByZWZlcmVuY2VzU2VydmljZSB9IGZyb20gJy4uL2ludGVyZmFjZXMvcHJlZmVyZWNlcy1zZXJ2aWNlLmludGVyZmFjZSc7XG5pbXBvcnQgeyBJUmVwb3J0U2VydmljZSB9IGZyb20gJy4uL2ludGVyZmFjZXMvcmVwb3J0LW9uLWRlbWFuZC1zZXJ2aWNlLmludGVyZmFjZSc7XG5pbXBvcnQgeyBJU2VydmljZVJlc3BvbnNlQWRhcHRlciB9IGZyb20gJy4uL2ludGVyZmFjZXMvc2VydmljZS1yZXNwb25zZS1hZGFwdGVyLmludGVyZmFjZSc7XG5pbXBvcnQgeyBPTWF0RXJyb3JPcHRpb25zIH0gZnJvbSAnLi4vdHlwZXMvby1tYXQtZXJyb3IudHlwZSc7XG5pbXBvcnQgeyBTZXJ2aWNlVHlwZSB9IGZyb20gJy4uL3R5cGVzL3NlcnZpY2UtdHlwZS50eXBlJztcbmltcG9ydCB7IFV0aWwgfSBmcm9tICcuLi91dGlsL3V0aWwnO1xuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuL2F1dGguc2VydmljZSc7XG5pbXBvcnQgeyBCYXNlU2VydmljZVJlc3BvbnNlIH0gZnJvbSAnLi9iYXNlLXNlcnZpY2UtcmVzcG9uc2UuY2xhc3MnO1xuaW1wb3J0IHsgSlNPTkFQSVByZWZlcmVuY2VzU2VydmljZSB9IGZyb20gJy4vanNvbmFwaS9qc29uYXBpLXByZWZlcmVuY2VzLnNlcnZpY2UnO1xuaW1wb3J0IHsgSlNPTkFQSVNlcnZpY2VSZXNwb25zZUFkYXB0ZXIgfSBmcm9tICcuL2pzb25hcGkvanNvbmFwaS1zZXJ2aWNlLXJlc3BvbnNlLmFkYXB0ZXInO1xuaW1wb3J0IHsgSlNPTkFQSVNlcnZpY2UgfSBmcm9tICcuL2pzb25hcGkvanNvbmFwaS5zZXJ2aWNlJztcbmltcG9ydCB7IExvY2FsU3RvcmFnZVNlcnZpY2UgfSBmcm9tICcuL2xvY2FsLXN0b3JhZ2Uuc2VydmljZSc7XG5pbXBvcnQgeyBOYW1lQ29udmVudGlvbkxvd2VyIH0gZnJvbSAnLi9uYW1lLWNvbnZlbnRpb24vbmFtZS1jb252ZW50aW9uLWxvd2VyLnNlcnZpY2UnO1xuaW1wb3J0IHsgTmFtZUNvbnZlbnRpb25VcHBlciB9IGZyb20gJy4vbmFtZS1jb252ZW50aW9uL25hbWUtY29udmVudGlvbi11cHBlci5zZXJ2aWNlJztcbmltcG9ydCB7IE5hbWVDb252ZW50aW9uIH0gZnJvbSAnLi9uYW1lLWNvbnZlbnRpb24vbmFtZS1jb252ZW50aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgT250aW1pemVBdXRoU2VydmljZSB9IGZyb20gJy4vby1hdXRoLnNlcnZpY2UnO1xuaW1wb3J0IHsgT0Vycm9yRGlhbG9nTWFuYWdlciB9IGZyb20gJy4vby1lcnJvci1kaWFsb2ctbWFuYWdlci5zZXJ2aWNlJztcbmltcG9ydCB7IE9udGltaXplRXhwb3J0RGF0YVByb3ZpZGVyU2VydmljZTNYIH0gZnJvbSAnLi9vbnRpbWl6ZS1leHBvcnQtZGF0YS1wcm92aWRlci0zeC5zZXJ2aWNlJztcbmltcG9ydCB7IE9udGltaXplRXhwb3J0RGF0YVByb3ZpZGVyU2VydmljZSB9IGZyb20gJy4vb250aW1pemUtZXhwb3J0LWRhdGEtcHJvdmlkZXIuc2VydmljZSc7XG5pbXBvcnQgeyBPbnRpbWl6ZUVFU2VydmljZSB9IGZyb20gJy4vb250aW1pemUvb250aW1pemUtZWUuc2VydmljZSc7XG5pbXBvcnQgeyBPbnRpbWl6ZUV4cG9ydFNlcnZpY2UzWCB9IGZyb20gJy4vb250aW1pemUvb250aW1pemUtZXhwb3J0LTN4eC5zZXJ2aWNlJztcbmltcG9ydCB7IE9udGltaXplRXhwb3J0U2VydmljZSB9IGZyb20gJy4vb250aW1pemUvb250aW1pemUtZXhwb3J0LnNlcnZpY2UnO1xuaW1wb3J0IHsgT250aW1pemVGaWxlU2VydmljZSB9IGZyb20gJy4vb250aW1pemUvb250aW1pemUtZmlsZS5zZXJ2aWNlJztcbmltcG9ydCB7IE9udGltaXplUHJlZmVyZW5jZXNTZXJ2aWNlIH0gZnJvbSAnLi9vbnRpbWl6ZS9vbnRpbWl6ZS1wcmVmZXJlbmNlcy5zZXJ2aWNlJztcbmltcG9ydCB7IE9udGltaXplU2VydmljZVJlc3BvbnNlQWRhcHRlciB9IGZyb20gJy4vb250aW1pemUvb250aW1pemUtc2VydmljZS1yZXNwb25zZS5hZGFwdGVyJztcbmltcG9ydCB7IE9udGltaXplU2VydmljZSB9IGZyb20gJy4vb250aW1pemUvb250aW1pemUuc2VydmljZSc7XG5pbXBvcnQgeyBPbnRpbWl6ZUVFUGVybWlzc2lvbnNTZXJ2aWNlIH0gZnJvbSAnLi9wZXJtaXNzaW9ucy9vbnRpbWl6ZS1lZS1wZXJtaXNzaW9ucy5zZXJ2aWNlJztcbmltcG9ydCB7IE9udGltaXplUGVybWlzc2lvbnNTZXJ2aWNlIH0gZnJvbSAnLi9wZXJtaXNzaW9ucy9vbnRpbWl6ZS1wZXJtaXNzaW9ucy5zZXJ2aWNlJztcbmltcG9ydCB7IElCYXNlUXVlcnlBcmd1bWVudCB9IGZyb20gJy4vcXVlcnktYXJndW1lbnRzL2Jhc2UtcXVlcnktYXJndW1lbnQuaW50ZXJmYWNlJztcbmltcG9ydCB7IEpTT05BUElRdWVyeUFyZ3VtZW50c0FkYXB0ZXIgfSBmcm9tICcuL3F1ZXJ5LWFyZ3VtZW50cy9qc29uYXBpLXF1ZXJ5LWFyZ3VtZW50cy5hZGFwdGVyJztcbmltcG9ydCB7IE9udGltaXplUXVlcnlBcmd1bWVudHNBZGFwdGVyIH0gZnJvbSAnLi9xdWVyeS1hcmd1bWVudHMvb250aW1pemUtcXVlcnktYXJndW1lbnRzLmFkYXB0ZXInO1xuaW1wb3J0IHsgQWJzdHJhY3RDb21wb25lbnRTdGF0ZVNlcnZpY2UsIERlZmF1bHRDb21wb25lbnRTdGF0ZVNlcnZpY2UgfSBmcm9tICcuL3N0YXRlL28tY29tcG9uZW50LXN0YXRlLnNlcnZpY2UnO1xuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBJTkpFQ1RJT04gVE9LRU5TIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbi8qKlxuICogSW5qZWN0aW9uIHRva2VuIHRoYXQgY2FuIGJlIHVzZWQgdG8gcmVwbGFjZSB0aGUgZGF0YSBzZXJ2aWNlIGBPbnRpbWl6ZVNlcnZpY2VgIG9yIGBPbnRpbWl6ZUVFU2VydmljZWAuXG4gKi9cbmV4cG9ydCBjb25zdCBPX0RBVEFfU0VSVklDRSA9IG5ldyBJbmplY3Rpb25Ub2tlbignT250aW1pemUgZGF0YSBzZXJ2aWNlJyk7XG5cbmV4cG9ydCBjb25zdCBPX1JFU1BPTlNFX0FEQVBURVIgPSBuZXcgSW5qZWN0aW9uVG9rZW48SVNlcnZpY2VSZXNwb25zZUFkYXB0ZXI8QmFzZVNlcnZpY2VSZXNwb25zZT4+KCdTZXJ2aWNlIHJlc3BvbnNlIGFkYXB0ZXInKTtcblxuLyoqXG4gKiBJbmplY3Rpb24gdG9rZW4gdGhhdCBjYW4gYmUgdXNlZCB0byByZXBsYWNlIHRoZSB0cmFuc2xhdGUgc2VydmljZSBgT1RyYW5zbGF0ZVNlcnZpY2VgLlxuICovXG5leHBvcnQgY29uc3QgT19UUkFOU0xBVEVfU0VSVklDRSA9IG5ldyBJbmplY3Rpb25Ub2tlbignVHJhbnNsYXRlIHNlcnZpY2UnKTtcblxuLyoqXG4gKiBJbmplY3Rpb24gdG9rZW4gdGhhdCBjYW4gYmUgdXNlZCB0byByZXBsYWNlIHRoZSBmaWxlIHNlcnZpY2UgYE9udGltaXplRmlsZVNlcnZpY2VgLlxuICovXG5leHBvcnQgY29uc3QgT19GSUxFX1NFUlZJQ0UgPSBuZXcgSW5qZWN0aW9uVG9rZW48SUZpbGVTZXJ2aWNlPignRmlsZSB1cGxvYWRlciBzZXJ2aWNlJyk7XG5cbi8qKlxuICogSW5qZWN0aW9uIHRva2VuIHRoYXQgY2FuIGJlIHVzZWQgdG8gcmVwbGFjZSB0aGUgbG9jYWxzdG9yYWdlIHNlcnZpY2UgYExvY2FsU3RvcmFnZVNlcnZpY2VgLlxuICovXG5leHBvcnQgY29uc3QgT19MT0NBTFNUT1JBR0VfU0VSVklDRSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxJTG9jYWxTdG9yYWdlU2VydmljZT4oJ0xvY2FsIHN0b3JhZ2Ugc2VydmljZScpO1xuXG4vKipcbiAqIEluamVjdGlvbiB0b2tlbiB0aGF0IGNhbiBiZSB1c2VkIHRvIHJlcGxhY2UgdGhlIGV4cG9ydGF0aW9uIHNlcnZpY2UgYE9udGltaXplRXhwb3J0U2VydmljZWAuXG4gKi9cbmV4cG9ydCBjb25zdCBPX0VYUE9SVF9TRVJWSUNFID0gbmV3IEluamVjdGlvblRva2VuPElFeHBvcnRTZXJ2aWNlPignRXhwb3J0IHNlcnZpY2UnKTtcblxuLyoqXG4gKiBJbmplY3Rpb24gdG9rZW4gdGhhdCBjYW4gYmUgdXNlZCB0byByZXBsYWNlIHRoZSBwZXJtaXNzaW9uIHNlcnZpY2UgYE9udGltaXplUGVybWlzc2lvbnNTZXJ2aWNlIG9yIE9udGltaXplRUVQZXJtaXNzaW9uc1NlcnZpY2VgLlxuICovXG5leHBvcnQgY29uc3QgT19QRVJNSVNTSU9OX1NFUlZJQ0UgPSBuZXcgSW5qZWN0aW9uVG9rZW48SVBlcm1pc3Npb25zU2VydmljZT4oJ1Blcm1pc3Npb24gc2VydmljZScpO1xuXG4vKipcbiAqIEluamVjdGlvbiB0b2tlbiB0aGF0IGNhbiBiZSB1c2VkIHRvIHJlcGxhY2UgdGhlIGF1dGhlbnRpY2F0aW9uIHNlcnZpY2UgYEF1dGhTZXJ2aWNlYC5cbiAqL1xuZXhwb3J0IGNvbnN0IE9fQVVUSF9TRVJWSUNFID0gbmV3IEluamVjdGlvblRva2VuPEF1dGhTZXJ2aWNlPignQXV0aGVudGljYXRpb24gc2VydmljZScpO1xuXG4vKipcbiogSW5qZWN0aW9uIHRva2VuIHRoYXQgY2FuIGJlIHVzZWQgdG8gcmVwbGFjZSB0aGUgY29tcG9uZW50IHN0YXRlIHNlcnZpY2UgYERlZmF1bHRDb21wb25lbnRTdGF0ZVNlcnZpY2VgLlxuKi9cbmV4cG9ydCBjb25zdCBPX0NPTVBPTkVOVF9TVEFURV9TRVJWSUNFID0gbmV3IEluamVjdGlvblRva2VuPERlZmF1bHRDb21wb25lbnRTdGF0ZVNlcnZpY2U+KCdDb21wb25lbnQgc3RhdGUgc2VydmljZScpO1xuXG5cbi8qKlxuKiBJbmplY3Rpb24gdG9rZW4gdGhhdCBjYW4gYmUgdXNlZCB0byByZXBsYWNlIHRoZSBjb21wb25lbnQgc3RhdGUgc2VydmljZSBgRGVmYXVsdENvbXBvbmVudFN0YXRlU2VydmljZWAuXG4qL1xuZXhwb3J0IGNvbnN0IE9fQ0hBUlRfT05fREVNQU5EX1NFUlZJQ0UgPSBuZXcgSW5qZWN0aW9uVG9rZW48SUNoYXJ0T25EZW1hbmRTZXJ2aWNlPignQ2hhcnQgb24gZGVtYW5kIHNlcnZpY2UnKTtcblxuZXhwb3J0IGNvbnN0IE9fUkVQT1JUX1NFUlZJQ0UgPSBuZXcgSW5qZWN0aW9uVG9rZW48SVJlcG9ydFNlcnZpY2U+KCdSZXBvcnQgc2VydmljZScpO1xuXG5leHBvcnQgY29uc3QgT19FUlJPUl9ESUFMT0dfTUFOQUdFUiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxPRXJyb3JEaWFsb2dNYW5hZ2VyPignRXJyb3IgZGlhbG9nIG1hbmFnZXInKTtcblxuZXhwb3J0IGNvbnN0IE9fRVhQT1JUX0RBVEFfU0VSVklDRSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxJRXhwb3J0RGF0YVByb3ZpZGVyPignRXhwb3J0IGRhdGEgcHJvdmlkZXInKTtcblxuZXhwb3J0IGNvbnN0IE9fTUFUX0VSUk9SX09QVElPTlMgPSBuZXcgSW5qZWN0aW9uVG9rZW48T01hdEVycm9yT3B0aW9ucz4oJ28tbWF0LWVycm9yLW9wdGlvbnMnKTtcblxuZXhwb3J0IGNvbnN0IE9fRk9STV9NRVNTQUdFX1NFUlZJQ0UgPSBuZXcgSW5qZWN0aW9uVG9rZW4oJ09udGltaXplIG8tZm9ybSBtZXNzYWdlIHNlcnZpY2UnKTtcblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEZBQ1RPUklFUyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG4vKipcbiAqIENyZWF0ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIGRhdGEgc2VydmljZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRhdGFTZXJ2aWNlRmFjdG9yeShpbmplY3RvcjogSW5qZWN0b3IpOiBhbnkge1xuICBjb25zdCBzZXJ2aWNlQ2xhc3MgPSBfZ2V0SW5qZWN0aW9uVG9rZW5WYWx1ZShPX0RBVEFfU0VSVklDRSwgaW5qZWN0b3IpO1xuICBjb25zdCBzZXJ2aWNlID0gVXRpbC5jcmVhdGVTZXJ2aWNlSW5zdGFuY2Uoc2VydmljZUNsYXNzLCBpbmplY3Rvcik7XG4gIGlmIChVdGlsLmlzRGVmaW5lZChzZXJ2aWNlKSkge1xuICAgIHJldHVybiBzZXJ2aWNlO1xuICB9XG4gIGNvbnN0IGNvbmZpZyA9IGluamVjdG9yLmdldChBcHBDb25maWcpLmdldENvbmZpZ3VyYXRpb24oKTtcbiAgY29uc3Qgc2VydmljZVR5cGUgPSBjb25maWcuc2VydmljZVR5cGU7XG4gIHJldHVybiBjcmVhdGVTZXJ2aWNlSW5zdGFuY2Uoc2VydmljZVR5cGUsIGluamVjdG9yKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVNlcnZpY2VJbnN0YW5jZShzZXJ2aWNlVHlwZTogU2VydmljZVR5cGUsIGluamVjdG9yOiBJbmplY3Rvcik6IGFueSB7XG4gICAgaWYgKCFVdGlsLmlzRGVmaW5lZChzZXJ2aWNlVHlwZSkgfHwgU2VydmljZVR5cGUuT250aW1pemVFRSA9PT0gc2VydmljZVR5cGUpIHtcbiAgICAgIHJldHVybiBuZXcgT250aW1pemVFRVNlcnZpY2UoaW5qZWN0b3IpO1xuICAgIH1cbiAgICBpZiAoU2VydmljZVR5cGUuT250aW1pemUgPT09IHNlcnZpY2VUeXBlKSB7XG4gICAgICByZXR1cm4gbmV3IE9udGltaXplU2VydmljZShpbmplY3Rvcik7XG4gICAgfVxuICAgIGlmIChTZXJ2aWNlVHlwZS5KU09OQVBJID09PSBzZXJ2aWNlVHlwZSkge1xuICAgICAgcmV0dXJuIG5ldyBKU09OQVBJU2VydmljZShpbmplY3Rvcik7XG4gICAgfVxuICAgIHJldHVybiBVdGlsLmNyZWF0ZVNlcnZpY2VJbnN0YW5jZShzZXJ2aWNlVHlwZSwgaW5qZWN0b3IpO1xuXG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgZmlsZSBzZXJ2aWNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZmlsZVNlcnZpY2VGYWN0b3J5KGluamVjdG9yOiBJbmplY3Rvcik6IElGaWxlU2VydmljZSB7XG4gIGNvbnN0IHNlcnZpY2VDbGFzcyA9IF9nZXRJbmplY3Rpb25Ub2tlblZhbHVlKE9fRklMRV9TRVJWSUNFLCBpbmplY3Rvcik7XG4gIGNvbnN0IHNlcnZpY2UgPSBVdGlsLmNyZWF0ZVNlcnZpY2VJbnN0YW5jZShzZXJ2aWNlQ2xhc3MsIGluamVjdG9yKTtcbiAgcmV0dXJuIFV0aWwuaXNEZWZpbmVkKHNlcnZpY2UpID8gc2VydmljZSA6IG5ldyBPbnRpbWl6ZUZpbGVTZXJ2aWNlKGluamVjdG9yKTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgbmV3IGluc3RhbmNlIG9mIHRoZSBsb2NhbCBzdG9yYWdlIHNlcnZpY2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBsb2NhbFN0b3JhZ2VTZXJ2aWNlRmFjdG9yeShpbmplY3RvcjogSW5qZWN0b3IpOiBJTG9jYWxTdG9yYWdlU2VydmljZSB7XG4gIGNvbnN0IHNlcnZpY2VDbGFzcyA9IF9nZXRJbmplY3Rpb25Ub2tlblZhbHVlKE9fTE9DQUxTVE9SQUdFX1NFUlZJQ0UsIGluamVjdG9yKTtcbiAgY29uc3Qgc2VydmljZSA9IFV0aWwuY3JlYXRlU2VydmljZUluc3RhbmNlKHNlcnZpY2VDbGFzcywgaW5qZWN0b3IpO1xuICByZXR1cm4gVXRpbC5pc0RlZmluZWQoc2VydmljZSkgPyBzZXJ2aWNlIDogbmV3IExvY2FsU3RvcmFnZVNlcnZpY2UoaW5qZWN0b3IpO1xufVxuLyoqXG4gKiBDcmVhdGVzIGEgbmV3IGluc3RhbmNlIG9mIHRoZSBleHBvcnRhdGlvbiBzZXJ2aWNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZXhwb3J0U2VydmljZUZhY3RvcnkoaW5qZWN0b3I6IEluamVjdG9yKTogSUV4cG9ydFNlcnZpY2Uge1xuICBjb25zdCBzZXJ2aWNlQ2xhc3MgPSBfZ2V0SW5qZWN0aW9uVG9rZW5WYWx1ZShPX0VYUE9SVF9TRVJWSUNFLCBpbmplY3Rvcik7XG4gIGNvbnN0IHNlcnZpY2UgPSBVdGlsLmNyZWF0ZVNlcnZpY2VJbnN0YW5jZShzZXJ2aWNlQ2xhc3MsIGluamVjdG9yKTtcbiAgaWYgKFV0aWwuaXNEZWZpbmVkKHNlcnZpY2UpKSB7XG4gICAgcmV0dXJuIHNlcnZpY2U7XG4gIH1cbiAgY29uc3QgY29uZmlnID0gaW5qZWN0b3IuZ2V0KEFwcENvbmZpZykuZ2V0Q29uZmlndXJhdGlvbigpO1xuXG4gIGlmICh0eXBlb2YgKGNvbmZpZy5leHBvcnRTZXJ2aWNlVHlwZSkgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgaWYgKGNvbmZpZy5leHBvcnRDb25maWd1cmF0aW9uKSB7XG4gICAgICByZXR1cm4gbmV3IE9udGltaXplRXhwb3J0U2VydmljZTNYKGluamVjdG9yKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG5ldyBPbnRpbWl6ZUV4cG9ydFNlcnZpY2UoaW5qZWN0b3IpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gVXRpbC5jcmVhdGVTZXJ2aWNlSW5zdGFuY2UoY29uZmlnLmV4cG9ydFNlcnZpY2VUeXBlLCBpbmplY3Rvcik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBleHBvcnREYXRhRmFjdG9yeShpbmplY3RvcjogSW5qZWN0b3IpOiBJRXhwb3J0RGF0YVByb3ZpZGVyIHtcbiAgY29uc3QgcHJvdmlkZXIgPSBfZ2V0SW5qZWN0aW9uVG9rZW5WYWx1ZShPX0VYUE9SVF9EQVRBX1NFUlZJQ0UsIGluamVjdG9yKTtcbiAgY29uc3Qgc2VydmljZSA9IFV0aWwuY3JlYXRlU2VydmljZUluc3RhbmNlKHByb3ZpZGVyLCBpbmplY3Rvcik7XG4gIGlmIChVdGlsLmlzRGVmaW5lZChzZXJ2aWNlKSkge1xuICAgIHJldHVybiBzZXJ2aWNlO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IGNvbmZpZyA9IGluamVjdG9yLmdldChBcHBDb25maWcpLmdldENvbmZpZ3VyYXRpb24oKTtcbiAgICBpZiAodHlwZW9mIChjb25maWcuZXhwb3J0Q29uZmlndXJhdGlvbikgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICByZXR1cm4gbmV3IE9udGltaXplRXhwb3J0RGF0YVByb3ZpZGVyU2VydmljZShpbmplY3Rvcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBuZXcgT250aW1pemVFeHBvcnREYXRhUHJvdmlkZXJTZXJ2aWNlM1goaW5qZWN0b3IpO1xuICAgIH1cbiAgfVxuXG59XG5leHBvcnQgZnVuY3Rpb24gc2VydmljZVJlcXVlc3RBZGFwdGVyRmFjdG9yeShpbmplY3RvcjogSW5qZWN0b3IpOiBJQmFzZVF1ZXJ5QXJndW1lbnQge1xuICBjb25zdCBjb25maWcgPSBpbmplY3Rvci5nZXQoQXBwQ29uZmlnKS5nZXRDb25maWd1cmF0aW9uKCk7XG4gIGlmICghVXRpbC5pc0RlZmluZWQoY29uZmlnLnNlcnZpY2VUeXBlKSB8fFxuICAgIFV0aWwuaXNPbnRpbWl6ZUVFU2VydmljZShpbmplY3RvcikpIHtcbiAgICByZXR1cm4gbmV3IE9udGltaXplUXVlcnlBcmd1bWVudHNBZGFwdGVyKCk7XG4gIH0gZWxzZSBpZiAoVXRpbC5pc0pzb25BcGlTZXJ2aWNlKGluamVjdG9yKSkge1xuICAgIHJldHVybiBuZXcgSlNPTkFQSVF1ZXJ5QXJndW1lbnRzQWRhcHRlcigpO1xuICB9XG4gIHJldHVybiBuZXcgT250aW1pemVRdWVyeUFyZ3VtZW50c0FkYXB0ZXIoKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlcnZpY2VSZXNwb25zZUFkYXB0ZXJGYWN0b3J5KGluamVjdG9yOiBJbmplY3Rvcik6IElTZXJ2aWNlUmVzcG9uc2VBZGFwdGVyPEJhc2VTZXJ2aWNlUmVzcG9uc2U+IHtcbiAgY29uc3Qgc2VydmljZUNsYXNzID0gX2dldEluamVjdGlvblRva2VuVmFsdWUoT19SRVNQT05TRV9BREFQVEVSLCBpbmplY3Rvcik7XG4gIGNvbnN0IHNlcnZpY2UgPSBVdGlsLmNyZWF0ZVNlcnZpY2VJbnN0YW5jZShzZXJ2aWNlQ2xhc3MsIGluamVjdG9yKTtcblxuICBpZiAoVXRpbC5pc0RlZmluZWQoc2VydmljZSkpIHtcbiAgICByZXR1cm4gc2VydmljZTtcbiAgfVxuICBjb25zdCBjb25maWcgPSBpbmplY3Rvci5nZXQoQXBwQ29uZmlnKS5nZXRDb25maWd1cmF0aW9uKCk7XG4gIGlmICghVXRpbC5pc0RlZmluZWQoY29uZmlnLnNlcnZpY2VUeXBlKSB8fFxuICAgIChVdGlsLmlzT250aW1pemVFRVNlcnZpY2UoaW5qZWN0b3IpKSkge1xuICAgIHJldHVybiBuZXcgT250aW1pemVTZXJ2aWNlUmVzcG9uc2VBZGFwdGVyKCk7XG4gIH0gZWxzZSBpZiAoVXRpbC5pc0pzb25BcGlTZXJ2aWNlKGluamVjdG9yKSkge1xuXG4gICAgcmV0dXJuIG5ldyBKU09OQVBJU2VydmljZVJlc3BvbnNlQWRhcHRlcigpO1xuICB9XG4gIHJldHVybiBuZXcgSlNPTkFQSVNlcnZpY2VSZXNwb25zZUFkYXB0ZXIoKTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgbmV3IGluc3RhbmNlIG9mIHRoZSBwZXJtaXNzaW9uIHNlcnZpY2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwZXJtaXNzaW9uc1NlcnZpY2VGYWN0b3J5KGluamVjdG9yOiBJbmplY3Rvcik6IElQZXJtaXNzaW9uc1NlcnZpY2Uge1xuICBjb25zdCBzZXJ2aWNlQ2xhc3MgPSBfZ2V0SW5qZWN0aW9uVG9rZW5WYWx1ZShPX1BFUk1JU1NJT05fU0VSVklDRSwgaW5qZWN0b3IpO1xuICBjb25zdCBzZXJ2aWNlID0gVXRpbC5jcmVhdGVTZXJ2aWNlSW5zdGFuY2Uoc2VydmljZUNsYXNzLCBpbmplY3Rvcik7XG4gIGlmIChVdGlsLmlzRGVmaW5lZChzZXJ2aWNlKSkge1xuICAgIHJldHVybiBzZXJ2aWNlO1xuICB9XG4gIGNvbnN0IGNvbmZpZyA9IGluamVjdG9yLmdldChBcHBDb25maWcpLmdldENvbmZpZ3VyYXRpb24oKTtcblxuICBpZiAoIVV0aWwuaXNEZWZpbmVkKGNvbmZpZy5wZXJtaXNzaW9uc1NlcnZpY2VUeXBlKSB8fCAnT250aW1pemVFRVBlcm1pc3Npb25zJyA9PT0gY29uZmlnLnBlcm1pc3Npb25zU2VydmljZVR5cGUpIHtcbiAgICByZXR1cm4gbmV3IE9udGltaXplRUVQZXJtaXNzaW9uc1NlcnZpY2UoaW5qZWN0b3IpO1xuICB9IGVsc2UgaWYgKCdPbnRpbWl6ZVBlcm1pc3Npb25zJyA9PT0gY29uZmlnLnBlcm1pc3Npb25zU2VydmljZVR5cGUpIHtcbiAgICByZXR1cm4gbmV3IE9udGltaXplUGVybWlzc2lvbnNTZXJ2aWNlKGluamVjdG9yKTtcbiAgfVxuICByZXR1cm4gVXRpbC5jcmVhdGVTZXJ2aWNlSW5zdGFuY2UoY29uZmlnLnBlcm1pc3Npb25zU2VydmljZVR5cGUsIGluamVjdG9yKTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgbmV3IGluc3RhbmNlIG9mIHRoZSBwcmVmZXJlbmNlcyBzZXJ2aWNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcHJlZmVyZW5jZXNTZXJ2aWNlRmFjdG9yeShpbmplY3RvcjogSW5qZWN0b3IpOiBJUHJlZmVyZW5jZXNTZXJ2aWNlIHtcblxuICBjb25zdCBjb25maWcgPSBpbmplY3Rvci5nZXQoQXBwQ29uZmlnKS5nZXRDb25maWd1cmF0aW9uKCk7XG5cbiAgaWYgKCFVdGlsLmlzRGVmaW5lZChjb25maWcuc2VydmljZVR5cGUpIHx8IFV0aWwuaXNPbnRpbWl6ZUVFU2VydmljZShpbmplY3RvcikpIHtcbiAgICByZXR1cm4gbmV3IE9udGltaXplUHJlZmVyZW5jZXNTZXJ2aWNlKGluamVjdG9yKTtcbiAgfSBlbHNlIGlmIChTZXJ2aWNlVHlwZS5KU09OQVBJID09PSBjb25maWcuc2VydmljZVR5cGUpIHtcbiAgICByZXR1cm4gbmV3IEpTT05BUElQcmVmZXJlbmNlc1NlcnZpY2UoaW5qZWN0b3IpO1xuICB9XG4gIHJldHVybiBuZXcgSlNPTkFQSVByZWZlcmVuY2VzU2VydmljZShpbmplY3Rvcik7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgYXV0aGVudGljYXRpb24gc2VydmljZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGF1dGhTZXJ2aWNlRmFjdG9yeShpbmplY3RvcjogSW5qZWN0b3IpOiBBdXRoU2VydmljZSB7XG4gIGNvbnN0IHNlcnZpY2VDbGFzcyA9IF9nZXRJbmplY3Rpb25Ub2tlblZhbHVlKE9fQVVUSF9TRVJWSUNFLCBpbmplY3Rvcik7XG4gIGNvbnN0IHNlcnZpY2UgPSBVdGlsLmNyZWF0ZVNlcnZpY2VJbnN0YW5jZShzZXJ2aWNlQ2xhc3MsIGluamVjdG9yKTtcbiAgcmV0dXJuIFV0aWwuaXNEZWZpbmVkKHNlcnZpY2UpID8gc2VydmljZSA6IG5ldyBPbnRpbWl6ZUF1dGhTZXJ2aWNlKGluamVjdG9yKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbXBvbmVudFN0YXRlRmFjdG9yeShpbmplY3RvcjogSW5qZWN0b3IpOiBBYnN0cmFjdENvbXBvbmVudFN0YXRlU2VydmljZTxhbnksIGFueT4ge1xuICBjb25zdCBzZXJ2aWNlID0gX2dldEluamVjdGlvblRva2VuVmFsdWUoT19DT01QT05FTlRfU1RBVEVfU0VSVklDRSwgaW5qZWN0b3IpO1xuICByZXR1cm4gVXRpbC5pc0RlZmluZWQoc2VydmljZSkgPyBzZXJ2aWNlIDogbmV3IERlZmF1bHRDb21wb25lbnRTdGF0ZVNlcnZpY2UoaW5qZWN0b3IpO1xufVxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBQUk9WSURFUlMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBVc2luZyB0aGUgc2FtZSBwcm92aWRlciBtdWx0aXBsZSB0aW1lcyBhY2Nyb3NzIHRoZSBwcm9qZWN0IHByb2R1Y2VzIG5hbWVzcGFjZXMgY29uZmxpY3RzIHdoZW5cbiAqIGJ1aWxkaW5nIHdpdGggbmctcGFja2Fnciwgc28gd2UgcmV1c2VkIHRoZSBwcm92aWRlcnMgZGVmaW5lZCBoZXJlLlxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG5leHBvcnQgY29uc3QgT250aW1pemVTZXJ2aWNlUHJvdmlkZXIgPSB7IHByb3ZpZGU6IE9udGltaXplU2VydmljZSwgdXNlRmFjdG9yeTogZGF0YVNlcnZpY2VGYWN0b3J5LCBkZXBzOiBbSW5qZWN0b3JdIH07XG5cbmV4cG9ydCBjb25zdCBPbnRpbWl6ZUV4cG9ydFNlcnZpY2VQcm92aWRlciA9IHsgcHJvdmlkZTogT250aW1pemVFeHBvcnRTZXJ2aWNlLCB1c2VGYWN0b3J5OiBleHBvcnRTZXJ2aWNlRmFjdG9yeSwgZGVwczogW0luamVjdG9yXSB9O1xuXG5leHBvcnQgY29uc3QgT250aW1pemVBdXRoU2VydmljZVByb3ZpZGVyID0geyBwcm92aWRlOiBBdXRoU2VydmljZSwgdXNlRmFjdG9yeTogYXV0aFNlcnZpY2VGYWN0b3J5LCBkZXBzOiBbSW5qZWN0b3JdIH07XG5cbmV4cG9ydCBjb25zdCBDb21wb25lbnRTdGF0ZVNlcnZpY2VQcm92aWRlciA9IHsgcHJvdmlkZTogQWJzdHJhY3RDb21wb25lbnRTdGF0ZVNlcnZpY2UsIHVzZUZhY3Rvcnk6IGNvbXBvbmVudFN0YXRlRmFjdG9yeSwgZGVwczogW0luamVjdG9yXSB9O1xuXG5leHBvcnQgY29uc3QgRXhwb3J0RGF0YVNlcnZpY2VQcm92aWRlciA9IHsgcHJvdmlkZTogT250aW1pemVFeHBvcnREYXRhUHJvdmlkZXJTZXJ2aWNlLCB1c2VGYWN0b3J5OiBleHBvcnREYXRhRmFjdG9yeSwgZGVwczogW0luamVjdG9yXSB9O1xuXG5leHBvcnQgY29uc3QgU2VydmljZVJlcXVlc3RBZGFwdGVyID0geyBwcm92aWRlOiBPbnRpbWl6ZVF1ZXJ5QXJndW1lbnRzQWRhcHRlciwgdXNlRmFjdG9yeTogc2VydmljZVJlcXVlc3RBZGFwdGVyRmFjdG9yeSwgZGVwczogW0luamVjdG9yXSB9O1xuXG5leHBvcnQgY29uc3QgU2VydmljZVJlc3BvbnNlQWRhcHRlciA9IHsgcHJvdmlkZTogT250aW1pemVTZXJ2aWNlUmVzcG9uc2VBZGFwdGVyLCB1c2VGYWN0b3J5OiBzZXJ2aWNlUmVzcG9uc2VBZGFwdGVyRmFjdG9yeSwgZGVwczogW0luamVjdG9yXSB9O1xuXG5leHBvcnQgY29uc3QgTmFtZUNvbnZlbnRpb25Qcm92aWRlciA9IHsgcHJvdmlkZTogTmFtZUNvbnZlbnRpb24sIHVzZUZhY3Rvcnk6IG5hbWVDb252ZW50aW9uU2VydmljZUZhY3RvcnksIGRlcHM6IFtJbmplY3Rvcl0gfTtcbmV4cG9ydCBjb25zdCBPbnRpbWl6ZUxvY2FsU3RvcmFnZVNlcnZpY2VQcm92aWRlciA9IHsgcHJvdmlkZTogTG9jYWxTdG9yYWdlU2VydmljZSwgdXNlRmFjdG9yeTogbG9jYWxTdG9yYWdlU2VydmljZUZhY3RvcnksIGRlcHM6IFtJbmplY3Rvcl0gfTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFV0aWxpdHkgbWV0aG9kcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSB2YWx1ZSBmb3IgdGhlIHByb3ZpZGVkIGluamVjdGlvbiB0b2tlblxuICogQHBhcmFtIHRva2VuIHRoZSBpbmplY3Rpb24gdG9rZW5cbiAqIEBwYXJhbSBpbmplY3RvciB0aGUgaW5qZWN0b3JcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIF9nZXRJbmplY3Rpb25Ub2tlblZhbHVlPFQ+KHRva2VuOiBJbmplY3Rpb25Ub2tlbjxUPiwgaW5qZWN0b3I6IEluamVjdG9yKTogVCB7XG4gIGxldCBzZXJ2aWNlOiBUO1xuICB0cnkge1xuICAgIHNlcnZpY2UgPSBpbmplY3Rvci5nZXQodG9rZW4pO1xuICB9IGNhdGNoIChlKSB7XG4gICAgLy8gTm8gdmFsdWUgcHJvdmlkZWQgZm9yIHRoZSBpbmplY3Rpb24gdG9rZW5cbiAgfVxuICByZXR1cm4gc2VydmljZTtcbn1cblxuXG4vKipcbiAqIENyZWF0ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIHByZWZlcmVuY2VzIHNlcnZpY2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBuYW1lQ29udmVudGlvblNlcnZpY2VGYWN0b3J5KGluamVjdG9yOiBJbmplY3Rvcik6IElOYW1lQ29udmVudGlvbiB7XG5cbiAgY29uc3QgY29uZmlnID0gaW5qZWN0b3IuZ2V0KEFwcENvbmZpZykuZ2V0Q29uZmlndXJhdGlvbigpO1xuXG4gIGlmIChjb25maWc/Lm5hbWVDb252ZW50aW9uID09PSAnbG93ZXInKSB7XG4gICAgcmV0dXJuIG5ldyBOYW1lQ29udmVudGlvbkxvd2VyKCk7XG4gIH0gZWxzZSBpZiAoY29uZmlnPy5uYW1lQ29udmVudGlvbiA9PT0gJ3VwcGVyJykge1xuICAgIHJldHVybiBuZXcgTmFtZUNvbnZlbnRpb25VcHBlcigpO1xuICB9XG4gIHJldHVybiBuZXcgTmFtZUNvbnZlbnRpb24oKTtcbn1cblxuXG5cbiJdfQ==
169
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjdG9yaWVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvb250aW1pemUtd2ViLW5neC9zcmMvbGliL3NlcnZpY2VzL2ZhY3Rvcmllcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNqRCxPQUFPLEVBQ0wsY0FBYyxFQUNkLHlCQUF5QixFQUN6QixjQUFjLEVBQ2QscUJBQXFCLEVBQ3JCLGdCQUFnQixFQUNoQixjQUFjLEVBQ2Qsc0JBQXNCLEVBQ3RCLG9CQUFvQixFQUNwQixrQkFBa0IsRUFDbEIsaUJBQWlCLEVBQ2xCLE1BQU0scUJBQXFCLENBQUM7QUFTN0IsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDeEUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNwQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFN0MsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDbEYsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDM0YsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDOUQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0saURBQWlELENBQUM7QUFDdEYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0saURBQWlELENBQUM7QUFDdEYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxtQ0FBbUMsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ2pHLE9BQU8sRUFBRSxpQ0FB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LEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO0FBQzlILE1BQU0sQ0FBQyxNQUFNLG1DQUFtQyxHQUFHLEVBQUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLFVBQVUsRUFBRSwwQkFBMEIsRUFBRSxJQUFJLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO0FBSzlJLE1BQU0sVUFBVSw0QkFBNEIsQ0FBQyxRQUFrQjtJQUU3RCxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFFMUQsSUFBSSxNQUFNLEVBQUUsY0FBYyxLQUFLLE9BQU8sRUFBRTtRQUN0QyxPQUFPLElBQUksbUJBQW1CLEVBQUUsQ0FBQztLQUNsQztTQUFNLElBQUksTUFBTSxFQUFFLGNBQWMsS0FBSyxPQUFPLEVBQUU7UUFDN0MsT0FBTyxJQUFJLG1CQUFtQixFQUFFLENBQUM7S0FDbEM7SUFDRCxPQUFPLElBQUksY0FBYyxFQUFFLENBQUM7QUFDOUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEFwcENvbmZpZyB9IGZyb20gJy4uL2NvbmZpZy9hcHAtY29uZmlnJztcbmltcG9ydCB7XG4gIE9fQVVUSF9TRVJWSUNFLFxuICBPX0NPTVBPTkVOVF9TVEFURV9TRVJWSUNFLFxuICBPX0RBVEFfU0VSVklDRSxcbiAgT19FWFBPUlRfREFUQV9TRVJWSUNFLFxuICBPX0VYUE9SVF9TRVJWSUNFLFxuICBPX0ZJTEVfU0VSVklDRSxcbiAgT19MT0NBTFNUT1JBR0VfU0VSVklDRSxcbiAgT19QRVJNSVNTSU9OX1NFUlZJQ0UsXG4gIE9fUkVTUE9OU0VfQURBUFRFUixcbiAgT19SRVFVRVNUX0FEQVBURVJcbn0gZnJvbSAnLi4vaW5qZWN0aW9uLXRva2Vucyc7XG5pbXBvcnQgeyBJRXhwb3J0RGF0YVByb3ZpZGVyIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9leHBvcnQtZGF0YS1wcm92aWRlci5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSUV4cG9ydFNlcnZpY2UgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2V4cG9ydC1zZXJ2aWNlLmludGVyZmFjZSc7XG5pbXBvcnQgeyBJRmlsZVNlcnZpY2UgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2ZpbGUtc2VydmljZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSUxvY2FsU3RvcmFnZVNlcnZpY2UgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2xvY2FsLXNlcnZpY2UuaW50ZXJmYWNlJztcbmltcG9ydCB7IElOYW1lQ29udmVudGlvbiB9IGZyb20gJy4uL2ludGVyZmFjZXMvbmFtZS1jb252ZW50aW9uLmludGVyZmFjZSc7XG5pbXBvcnQgeyBJUGVybWlzc2lvbnNTZXJ2aWNlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9wZXJtaXNzaW9ucy1zZXJ2aWNlLmludGVyZmFjZSc7XG5pbXBvcnQgeyBJUHJlZmVyZW5jZXNTZXJ2aWNlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9wcmVmZXJlY2VzLXNlcnZpY2UuaW50ZXJmYWNlJztcbmltcG9ydCB7IElTZXJ2aWNlUmVzcG9uc2VBZGFwdGVyIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9zZXJ2aWNlLXJlc3BvbnNlLWFkYXB0ZXIuaW50ZXJmYWNlJztcbmltcG9ydCB7IF9nZXRJbmplY3Rpb25Ub2tlblZhbHVlIH0gZnJvbSAnLi4vdXRpbC9pbmplY3Rpb24tdG9rZW4udXRpbHMnO1xuaW1wb3J0IHsgVXRpbCB9IGZyb20gJy4uL3V0aWwvdXRpbCc7XG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4vYXV0aC5zZXJ2aWNlJztcbmltcG9ydCB7IEJhc2VTZXJ2aWNlUmVzcG9uc2UgfSBmcm9tICcuL2Jhc2Utc2VydmljZS1yZXNwb25zZS5jbGFzcyc7XG5pbXBvcnQgeyBKU09OQVBJUHJlZmVyZW5jZXNTZXJ2aWNlIH0gZnJvbSAnLi9qc29uYXBpL2pzb25hcGktcHJlZmVyZW5jZXMuc2VydmljZSc7XG5pbXBvcnQgeyBKU09OQVBJU2VydmljZVJlc3BvbnNlQWRhcHRlciB9IGZyb20gJy4vanNvbmFwaS9qc29uYXBpLXNlcnZpY2UtcmVzcG9uc2UuYWRhcHRlcic7XG5pbXBvcnQgeyBMb2NhbFN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnLi9sb2NhbC1zdG9yYWdlLnNlcnZpY2UnO1xuaW1wb3J0IHsgTmFtZUNvbnZlbnRpb25Mb3dlciB9IGZyb20gJy4vbmFtZS1jb252ZW50aW9uL25hbWUtY29udmVudGlvbi1sb3dlci5zZXJ2aWNlJztcbmltcG9ydCB7IE5hbWVDb252ZW50aW9uVXBwZXIgfSBmcm9tICcuL25hbWUtY29udmVudGlvbi9uYW1lLWNvbnZlbnRpb24tdXBwZXIuc2VydmljZSc7XG5pbXBvcnQgeyBOYW1lQ29udmVudGlvbiB9IGZyb20gJy4vbmFtZS1jb252ZW50aW9uL25hbWUtY29udmVudGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IE9udGltaXplQXV0aFNlcnZpY2UgfSBmcm9tICcuL28tYXV0aC5zZXJ2aWNlJztcbmltcG9ydCB7IE9udGltaXplRXhwb3J0RGF0YVByb3ZpZGVyU2VydmljZTNYIH0gZnJvbSAnLi9vbnRpbWl6ZS1leHBvcnQtZGF0YS1wcm92aWRlci0zeC5zZXJ2aWNlJztcbmltcG9ydCB7IE9udGltaXplRXhwb3J0RGF0YVByb3ZpZGVyU2VydmljZSB9IGZyb20gJy4vb250aW1pemUtZXhwb3J0LWRhdGEtcHJvdmlkZXIuc2VydmljZSc7XG5pbXBvcnQgeyBPbnRpbWl6ZUV4cG9ydFNlcnZpY2UzWCB9IGZyb20gJy4vb250aW1pemUvb250aW1pemUtZXhwb3J0LTN4eC5zZXJ2aWNlJztcbmltcG9ydCB7IE9udGltaXplRXhwb3J0U2VydmljZSB9IGZyb20gJy4vb250aW1pemUvb250aW1pemUtZXhwb3J0LnNlcnZpY2UnO1xuaW1wb3J0IHsgT250aW1pemVGaWxlU2VydmljZSB9IGZyb20gJy4vb250aW1pemUvb250aW1pemUtZmlsZS5zZXJ2aWNlJztcbmltcG9ydCB7IE9udGltaXplUHJlZmVyZW5jZXNTZXJ2aWNlIH0gZnJvbSAnLi9vbnRpbWl6ZS9vbnRpbWl6ZS1wcmVmZXJlbmNlcy5zZXJ2aWNlJztcbmltcG9ydCB7IE9udGltaXplU2VydmljZVJlc3BvbnNlQWRhcHRlciB9IGZyb20gJy4vb250aW1pemUvb250aW1pemUtc2VydmljZS1yZXNwb25zZS5hZGFwdGVyJztcbmltcG9ydCB7IE9udGltaXplU2VydmljZSB9IGZyb20gJy4vb250aW1pemUvb250aW1pemUuc2VydmljZSc7XG5pbXBvcnQgeyBPbnRpbWl6ZUVFUGVybWlzc2lvbnNTZXJ2aWNlIH0gZnJvbSAnLi9wZXJtaXNzaW9ucy9vbnRpbWl6ZS1lZS1wZXJtaXNzaW9ucy5zZXJ2aWNlJztcbmltcG9ydCB7IE9udGltaXplUGVybWlzc2lvbnNTZXJ2aWNlIH0gZnJvbSAnLi9wZXJtaXNzaW9ucy9vbnRpbWl6ZS1wZXJtaXNzaW9ucy5zZXJ2aWNlJztcbmltcG9ydCB7IElCYXNlUmVxdWVzdEFyZ3VtZW50IH0gZnJvbSAnLi9yZXF1ZXN0LWFkYXB0ZXIvYmFzZS1yZXF1ZXN0LWFyZ3VtZW50LmludGVyZmFjZSc7XG5pbXBvcnQgeyBKU09OQVBJUmVxdWVzdEFyZ3VtZW50c0FkYXB0ZXIgfSBmcm9tICcuL3JlcXVlc3QtYWRhcHRlci9qc29uYXBpLXJlcXVlc3QtYXJndW1lbnRzLmFkYXB0ZXInO1xuaW1wb3J0IHsgT250aW1pemVSZXF1ZXN0QXJndW1lbnRzQWRhcHRlciB9IGZyb20gJy4vcmVxdWVzdC1hZGFwdGVyL29udGltaXplLXJlcXVlc3QtYXJndW1lbnRzLmFkYXB0ZXInO1xuaW1wb3J0IHsgQWJzdHJhY3RDb21wb25lbnRTdGF0ZVNlcnZpY2UsIERlZmF1bHRDb21wb25lbnRTdGF0ZVNlcnZpY2UgfSBmcm9tICcuL3N0YXRlL28tY29tcG9uZW50LXN0YXRlLnNlcnZpY2UnO1xuaW1wb3J0IHsgRmFjdG9yeVV0aWwgfSBmcm9tICcuLi91dGlsL2ZhY3RvcnkudXRpbCc7XG5cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEZBQ1RPUklFUyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG4vKipcbiAqIENyZWF0ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIGRhdGEgc2VydmljZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRhdGFTZXJ2aWNlRmFjdG9yeShpbmplY3RvcjogSW5qZWN0b3IpOiBhbnkge1xuICBjb25zdCBzZXJ2aWNlQ2xhc3MgPSBfZ2V0SW5qZWN0aW9uVG9rZW5WYWx1ZShPX0RBVEFfU0VSVklDRSwgaW5qZWN0b3IpO1xuICBjb25zdCBzZXJ2aWNlID0gVXRpbC5jcmVhdGVTZXJ2aWNlSW5zdGFuY2Uoc2VydmljZUNsYXNzLCBpbmplY3Rvcik7XG4gIGlmIChVdGlsLmlzRGVmaW5lZChzZXJ2aWNlKSkge1xuICAgIHJldHVybiBzZXJ2aWNlO1xuICB9XG4gIGNvbnN0IGNvbmZpZyA9IGluamVjdG9yLmdldChBcHBDb25maWcpLmdldENvbmZpZ3VyYXRpb24oKTtcbiAgY29uc3Qgc2VydmljZVR5cGUgPSBjb25maWcuc2VydmljZVR5cGU7XG4gIHJldHVybiBGYWN0b3J5VXRpbC5jcmVhdGVTZXJ2aWNlSW5zdGFuY2VCeVR5cGUoc2VydmljZVR5cGUsIGluamVjdG9yKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVNlcnZpY2VJbnN0YW5jZShzZXJ2aWNlQ2xhc3M6IGFueSwgaW5qZWN0b3I6IEluamVjdG9yKTogYW55IHtcbiAgcmV0dXJuIFV0aWwuY3JlYXRlU2VydmljZUluc3RhbmNlKHNlcnZpY2VDbGFzcywgaW5qZWN0b3IpO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIGZpbGUgc2VydmljZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbGVTZXJ2aWNlRmFjdG9yeShpbmplY3RvcjogSW5qZWN0b3IpOiBJRmlsZVNlcnZpY2Uge1xuICBjb25zdCBzZXJ2aWNlQ2xhc3MgPSBfZ2V0SW5qZWN0aW9uVG9rZW5WYWx1ZShPX0ZJTEVfU0VSVklDRSwgaW5qZWN0b3IpO1xuICBjb25zdCBzZXJ2aWNlID0gVXRpbC5jcmVhdGVTZXJ2aWNlSW5zdGFuY2Uoc2VydmljZUNsYXNzLCBpbmplY3Rvcik7XG4gIHJldHVybiBVdGlsLmlzRGVmaW5lZChzZXJ2aWNlKSA/IHNlcnZpY2UgOiBuZXcgT250aW1pemVGaWxlU2VydmljZShpbmplY3Rvcik7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgbG9jYWwgc3RvcmFnZSBzZXJ2aWNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbG9jYWxTdG9yYWdlU2VydmljZUZhY3RvcnkoaW5qZWN0b3I6IEluamVjdG9yKTogSUxvY2FsU3RvcmFnZVNlcnZpY2Uge1xuICBjb25zdCBzZXJ2aWNlQ2xhc3MgPSBfZ2V0SW5qZWN0aW9uVG9rZW5WYWx1ZShPX0xPQ0FMU1RPUkFHRV9TRVJWSUNFLCBpbmplY3Rvcik7XG4gIGNvbnN0IHNlcnZpY2UgPSBVdGlsLmNyZWF0ZVNlcnZpY2VJbnN0YW5jZShzZXJ2aWNlQ2xhc3MsIGluamVjdG9yKTtcbiAgcmV0dXJuIFV0aWwuaXNEZWZpbmVkKHNlcnZpY2UpID8gc2VydmljZSA6IG5ldyBMb2NhbFN0b3JhZ2VTZXJ2aWNlKGluamVjdG9yKTtcbn1cbi8qKlxuICogQ3JlYXRlcyBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgZXhwb3J0YXRpb24gc2VydmljZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGV4cG9ydFNlcnZpY2VGYWN0b3J5KGluamVjdG9yOiBJbmplY3Rvcik6IElFeHBvcnRTZXJ2aWNlIHtcbiAgY29uc3Qgc2VydmljZUNsYXNzID0gX2dldEluamVjdGlvblRva2VuVmFsdWUoT19FWFBPUlRfU0VSVklDRSwgaW5qZWN0b3IpO1xuICBjb25zdCBzZXJ2aWNlID0gVXRpbC5jcmVhdGVTZXJ2aWNlSW5zdGFuY2Uoc2VydmljZUNsYXNzLCBpbmplY3Rvcik7XG4gIGlmIChVdGlsLmlzRGVmaW5lZChzZXJ2aWNlKSkge1xuICAgIHJldHVybiBzZXJ2aWNlO1xuICB9XG4gIGNvbnN0IGNvbmZpZyA9IGluamVjdG9yLmdldChBcHBDb25maWcpLmdldENvbmZpZ3VyYXRpb24oKTtcblxuICBpZiAodHlwZW9mIChjb25maWcuZXhwb3J0U2VydmljZVR5cGUpID09PSAndW5kZWZpbmVkJykge1xuICAgIGlmIChjb25maWcuZXhwb3J0Q29uZmlndXJhdGlvbikge1xuICAgICAgcmV0dXJuIG5ldyBPbnRpbWl6ZUV4cG9ydFNlcnZpY2UzWChpbmplY3Rvcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBuZXcgT250aW1pemVFeHBvcnRTZXJ2aWNlKGluamVjdG9yKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIFV0aWwuY3JlYXRlU2VydmljZUluc3RhbmNlKGNvbmZpZy5leHBvcnRTZXJ2aWNlVHlwZSwgaW5qZWN0b3IpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXhwb3J0RGF0YUZhY3RvcnkoaW5qZWN0b3I6IEluamVjdG9yKTogSUV4cG9ydERhdGFQcm92aWRlciB7XG4gIGNvbnN0IHByb3ZpZGVyID0gX2dldEluamVjdGlvblRva2VuVmFsdWUoT19FWFBPUlRfREFUQV9TRVJWSUNFLCBpbmplY3Rvcik7XG4gIGNvbnN0IHNlcnZpY2UgPSBVdGlsLmNyZWF0ZVNlcnZpY2VJbnN0YW5jZShwcm92aWRlciwgaW5qZWN0b3IpO1xuICBpZiAoVXRpbC5pc0RlZmluZWQoc2VydmljZSkpIHtcbiAgICByZXR1cm4gc2VydmljZTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBjb25maWcgPSBpbmplY3Rvci5nZXQoQXBwQ29uZmlnKS5nZXRDb25maWd1cmF0aW9uKCk7XG4gICAgaWYgKHR5cGVvZiAoY29uZmlnLmV4cG9ydENvbmZpZ3VyYXRpb24pID09PSAndW5kZWZpbmVkJykge1xuICAgICAgcmV0dXJuIG5ldyBPbnRpbWl6ZUV4cG9ydERhdGFQcm92aWRlclNlcnZpY2UoaW5qZWN0b3IpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbmV3IE9udGltaXplRXhwb3J0RGF0YVByb3ZpZGVyU2VydmljZTNYKGluamVjdG9yKTtcbiAgICB9XG4gIH1cblxufVxuZXhwb3J0IGZ1bmN0aW9uIHNlcnZpY2VSZXF1ZXN0QWRhcHRlckZhY3RvcnkoaW5qZWN0b3I6IEluamVjdG9yKTogSUJhc2VSZXF1ZXN0QXJndW1lbnQge1xuXG4gIGNvbnN0IHNlcnZpY2VDbGFzcyA9IF9nZXRJbmplY3Rpb25Ub2tlblZhbHVlKE9fUkVRVUVTVF9BREFQVEVSLCBpbmplY3Rvcik7XG4gIGNvbnN0IHNlcnZpY2UgPSBVdGlsLmNyZWF0ZVNlcnZpY2VJbnN0YW5jZShzZXJ2aWNlQ2xhc3MsIGluamVjdG9yKTtcblxuICBpZiAoVXRpbC5pc0RlZmluZWQoc2VydmljZSkpIHtcbiAgICByZXR1cm4gc2VydmljZTtcbiAgfVxuXG4gIGNvbnN0IGNvbmZpZyA9IGluamVjdG9yLmdldChBcHBDb25maWcpLmdldENvbmZpZ3VyYXRpb24oKTtcbiAgaWYgKCFVdGlsLmlzRGVmaW5lZChjb25maWcuc2VydmljZVR5cGUpIHx8XG4gICAgRmFjdG9yeVV0aWwuaXNPbnRpbWl6ZUVFU2VydmljZShpbmplY3RvcikpIHtcbiAgICByZXR1cm4gbmV3IE9udGltaXplUmVxdWVzdEFyZ3VtZW50c0FkYXB0ZXIoKTtcbiAgfSBlbHNlIGlmIChGYWN0b3J5VXRpbC5pc0pzb25BcGlTZXJ2aWNlKGluamVjdG9yKSkge1xuICAgIHJldHVybiBuZXcgSlNPTkFQSVJlcXVlc3RBcmd1bWVudHNBZGFwdGVyKCk7XG4gIH1cbiAgcmV0dXJuIG5ldyBPbnRpbWl6ZVJlcXVlc3RBcmd1bWVudHNBZGFwdGVyKCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXJ2aWNlUmVzcG9uc2VBZGFwdGVyRmFjdG9yeShpbmplY3RvcjogSW5qZWN0b3IpOiBJU2VydmljZVJlc3BvbnNlQWRhcHRlcjxCYXNlU2VydmljZVJlc3BvbnNlPiB7XG4gIGNvbnN0IHNlcnZpY2VDbGFzcyA9IF9nZXRJbmplY3Rpb25Ub2tlblZhbHVlKE9fUkVTUE9OU0VfQURBUFRFUiwgaW5qZWN0b3IpO1xuICBjb25zdCBzZXJ2aWNlID0gVXRpbC5jcmVhdGVTZXJ2aWNlSW5zdGFuY2Uoc2VydmljZUNsYXNzLCBpbmplY3Rvcik7XG5cbiAgaWYgKFV0aWwuaXNEZWZpbmVkKHNlcnZpY2UpKSB7XG4gICAgcmV0dXJuIHNlcnZpY2U7XG4gIH1cbiAgY29uc3QgY29uZmlnID0gaW5qZWN0b3IuZ2V0KEFwcENvbmZpZykuZ2V0Q29uZmlndXJhdGlvbigpO1xuICBpZiAoIVV0aWwuaXNEZWZpbmVkKGNvbmZpZy5zZXJ2aWNlVHlwZSkgfHxcbiAgICAoRmFjdG9yeVV0aWwuaXNPbnRpbWl6ZUVFU2VydmljZShpbmplY3RvcikpKSB7XG4gICAgcmV0dXJuIG5ldyBPbnRpbWl6ZVNlcnZpY2VSZXNwb25zZUFkYXB0ZXIoKTtcbiAgfSBlbHNlIGlmIChGYWN0b3J5VXRpbC5pc0pzb25BcGlTZXJ2aWNlKGluamVjdG9yKSkge1xuXG4gICAgcmV0dXJuIG5ldyBKU09OQVBJU2VydmljZVJlc3BvbnNlQWRhcHRlcigpO1xuICB9XG4gIHJldHVybiBuZXcgSlNPTkFQSVNlcnZpY2VSZXNwb25zZUFkYXB0ZXIoKTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgbmV3IGluc3RhbmNlIG9mIHRoZSBwZXJtaXNzaW9uIHNlcnZpY2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwZXJtaXNzaW9uc1NlcnZpY2VGYWN0b3J5KGluamVjdG9yOiBJbmplY3Rvcik6IElQZXJtaXNzaW9uc1NlcnZpY2Uge1xuICBjb25zdCBzZXJ2aWNlQ2xhc3MgPSBfZ2V0SW5qZWN0aW9uVG9rZW5WYWx1ZShPX1BFUk1JU1NJT05fU0VSVklDRSwgaW5qZWN0b3IpO1xuICBjb25zdCBzZXJ2aWNlID0gVXRpbC5jcmVhdGVTZXJ2aWNlSW5zdGFuY2Uoc2VydmljZUNsYXNzLCBpbmplY3Rvcik7XG4gIGlmIChVdGlsLmlzRGVmaW5lZChzZXJ2aWNlKSkge1xuICAgIHJldHVybiBzZXJ2aWNlO1xuICB9XG4gIGNvbnN0IGNvbmZpZyA9IGluamVjdG9yLmdldChBcHBDb25maWcpLmdldENvbmZpZ3VyYXRpb24oKTtcblxuICBpZiAoIVV0aWwuaXNEZWZpbmVkKGNvbmZpZy5wZXJtaXNzaW9uc1NlcnZpY2VUeXBlKSB8fCAnT250aW1pemVFRVBlcm1pc3Npb25zJyA9PT0gY29uZmlnLnBlcm1pc3Npb25zU2VydmljZVR5cGUpIHtcbiAgICByZXR1cm4gbmV3IE9udGltaXplRUVQZXJtaXNzaW9uc1NlcnZpY2UoaW5qZWN0b3IpO1xuICB9IGVsc2UgaWYgKCdPbnRpbWl6ZVBlcm1pc3Npb25zJyA9PT0gY29uZmlnLnBlcm1pc3Npb25zU2VydmljZVR5cGUpIHtcbiAgICByZXR1cm4gbmV3IE9udGltaXplUGVybWlzc2lvbnNTZXJ2aWNlKGluamVjdG9yKTtcbiAgfVxuICByZXR1cm4gVXRpbC5jcmVhdGVTZXJ2aWNlSW5zdGFuY2UoY29uZmlnLnBlcm1pc3Npb25zU2VydmljZVR5cGUsIGluamVjdG9yKTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgbmV3IGluc3RhbmNlIG9mIHRoZSBwcmVmZXJlbmNlcyBzZXJ2aWNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcHJlZmVyZW5jZXNTZXJ2aWNlRmFjdG9yeShpbmplY3RvcjogSW5qZWN0b3IpOiBJUHJlZmVyZW5jZXNTZXJ2aWNlIHtcblxuICBjb25zdCBjb25maWcgPSBpbmplY3Rvci5nZXQoQXBwQ29uZmlnKS5nZXRDb25maWd1cmF0aW9uKCk7XG5cbiAgaWYgKCFVdGlsLmlzRGVmaW5lZChjb25maWcuc2VydmljZVR5cGUpIHx8IEZhY3RvcnlVdGlsLmlzT250aW1pemVFRVNlcnZpY2UoaW5qZWN0b3IpKSB7XG4gICAgcmV0dXJuIG5ldyBPbnRpbWl6ZVByZWZlcmVuY2VzU2VydmljZShpbmplY3Rvcik7XG4gIH0gZWxzZSBpZiAoRmFjdG9yeVV0aWwuaXNKc29uQXBpU2VydmljZShpbmplY3RvcikpIHtcbiAgICByZXR1cm4gbmV3IEpTT05BUElQcmVmZXJlbmNlc1NlcnZpY2UoaW5qZWN0b3IpO1xuICB9XG4gIHJldHVybiBuZXcgSlNPTkFQSVByZWZlcmVuY2VzU2VydmljZShpbmplY3Rvcik7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgYXV0aGVudGljYXRpb24gc2VydmljZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGF1dGhTZXJ2aWNlRmFjdG9yeShpbmplY3RvcjogSW5qZWN0b3IpOiBBdXRoU2VydmljZSB7XG4gIGNvbnN0IHNlcnZpY2VDbGFzcyA9IF9nZXRJbmplY3Rpb25Ub2tlblZhbHVlKE9fQVVUSF9TRVJWSUNFLCBpbmplY3Rvcik7XG4gIGNvbnN0IHNlcnZpY2UgPSBVdGlsLmNyZWF0ZVNlcnZpY2VJbnN0YW5jZShzZXJ2aWNlQ2xhc3MsIGluamVjdG9yKTtcbiAgcmV0dXJuIFV0aWwuaXNEZWZpbmVkKHNlcnZpY2UpID8gc2VydmljZSA6IG5ldyBPbnRpbWl6ZUF1dGhTZXJ2aWNlKGluamVjdG9yKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbXBvbmVudFN0YXRlRmFjdG9yeShpbmplY3RvcjogSW5qZWN0b3IpOiBBYnN0cmFjdENvbXBvbmVudFN0YXRlU2VydmljZTxhbnksIGFueT4ge1xuICBjb25zdCBzZXJ2aWNlID0gX2dldEluamVjdGlvblRva2VuVmFsdWUoT19DT01QT05FTlRfU1RBVEVfU0VSVklDRSwgaW5qZWN0b3IpO1xuICByZXR1cm4gVXRpbC5pc0RlZmluZWQoc2VydmljZSkgPyBzZXJ2aWNlIDogbmV3IERlZmF1bHRDb21wb25lbnRTdGF0ZVNlcnZpY2UoaW5qZWN0b3IpO1xufVxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBQUk9WSURFUlMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBVc2luZyB0aGUgc2FtZSBwcm92aWRlciBtdWx0aXBsZSB0aW1lcyBhY2Nyb3NzIHRoZSBwcm9qZWN0IHByb2R1Y2VzIG5hbWVzcGFjZXMgY29uZmxpY3RzIHdoZW5cbiAqIGJ1aWxkaW5nIHdpdGggbmctcGFja2Fnciwgc28gd2UgcmV1c2VkIHRoZSBwcm92aWRlcnMgZGVmaW5lZCBoZXJlLlxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG5leHBvcnQgY29uc3QgT250aW1pemVTZXJ2aWNlUHJvdmlkZXIgPSB7IHByb3ZpZGU6IE9udGltaXplU2VydmljZSwgdXNlRmFjdG9yeTogZGF0YVNlcnZpY2VGYWN0b3J5LCBkZXBzOiBbSW5qZWN0b3JdIH07XG5cbmV4cG9ydCBjb25zdCBPbnRpbWl6ZUV4cG9ydFNlcnZpY2VQcm92aWRlciA9IHsgcHJvdmlkZTogT250aW1pemVFeHBvcnRTZXJ2aWNlLCB1c2VGYWN0b3J5OiBleHBvcnRTZXJ2aWNlRmFjdG9yeSwgZGVwczogW0luamVjdG9yXSB9O1xuXG5leHBvcnQgY29uc3QgT250aW1pemVBdXRoU2VydmljZVByb3ZpZGVyID0geyBwcm92aWRlOiBBdXRoU2VydmljZSwgdXNlRmFjdG9yeTogYXV0aFNlcnZpY2VGYWN0b3J5LCBkZXBzOiBbSW5qZWN0b3JdIH07XG5cbmV4cG9ydCBjb25zdCBDb21wb25lbnRTdGF0ZVNlcnZpY2VQcm92aWRlciA9IHsgcHJvdmlkZTogQWJzdHJhY3RDb21wb25lbnRTdGF0ZVNlcnZpY2UsIHVzZUZhY3Rvcnk6IGNvbXBvbmVudFN0YXRlRmFjdG9yeSwgZGVwczogW0luamVjdG9yXSB9O1xuXG5leHBvcnQgY29uc3QgRXhwb3J0RGF0YVNlcnZpY2VQcm92aWRlciA9IHsgcHJvdmlkZTogT250aW1pemVFeHBvcnREYXRhUHJvdmlkZXJTZXJ2aWNlLCB1c2VGYWN0b3J5OiBleHBvcnREYXRhRmFjdG9yeSwgZGVwczogW0luamVjdG9yXSB9O1xuXG5leHBvcnQgY29uc3QgU2VydmljZVJlcXVlc3RBZGFwdGVyID0geyBwcm92aWRlOiBPbnRpbWl6ZVJlcXVlc3RBcmd1bWVudHNBZGFwdGVyLCB1c2VGYWN0b3J5OiBzZXJ2aWNlUmVxdWVzdEFkYXB0ZXJGYWN0b3J5LCBkZXBzOiBbSW5qZWN0b3JdIH07XG5cbmV4cG9ydCBjb25zdCBTZXJ2aWNlUmVzcG9uc2VBZGFwdGVyID0geyBwcm92aWRlOiBPbnRpbWl6ZVNlcnZpY2VSZXNwb25zZUFkYXB0ZXIsIHVzZUZhY3Rvcnk6IHNlcnZpY2VSZXNwb25zZUFkYXB0ZXJGYWN0b3J5LCBkZXBzOiBbSW5qZWN0b3JdIH07XG5cbmV4cG9ydCBjb25zdCBOYW1lQ29udmVudGlvblByb3ZpZGVyID0geyBwcm92aWRlOiBOYW1lQ29udmVudGlvbiwgdXNlRmFjdG9yeTogbmFtZUNvbnZlbnRpb25TZXJ2aWNlRmFjdG9yeSwgZGVwczogW0luamVjdG9yXSB9O1xuZXhwb3J0IGNvbnN0IE9udGltaXplTG9jYWxTdG9yYWdlU2VydmljZVByb3ZpZGVyID0geyBwcm92aWRlOiBMb2NhbFN0b3JhZ2VTZXJ2aWNlLCB1c2VGYWN0b3J5OiBsb2NhbFN0b3JhZ2VTZXJ2aWNlRmFjdG9yeSwgZGVwczogW0luamVjdG9yXSB9O1xuXG4vKipcbiAqIENyZWF0ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIHByZWZlcmVuY2VzIHNlcnZpY2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBuYW1lQ29udmVudGlvblNlcnZpY2VGYWN0b3J5KGluamVjdG9yOiBJbmplY3Rvcik6IElOYW1lQ29udmVudGlvbiB7XG5cbiAgY29uc3QgY29uZmlnID0gaW5qZWN0b3IuZ2V0KEFwcENvbmZpZykuZ2V0Q29uZmlndXJhdGlvbigpO1xuXG4gIGlmIChjb25maWc/Lm5hbWVDb252ZW50aW9uID09PSAnbG93ZXInKSB7XG4gICAgcmV0dXJuIG5ldyBOYW1lQ29udmVudGlvbkxvd2VyKCk7XG4gIH0gZWxzZSBpZiAoY29uZmlnPy5uYW1lQ29udmVudGlvbiA9PT0gJ3VwcGVyJykge1xuICAgIHJldHVybiBuZXcgTmFtZUNvbnZlbnRpb25VcHBlcigpO1xuICB9XG4gIHJldHVybiBuZXcgTmFtZUNvbnZlbnRpb24oKTtcbn1cblxuXG5cbiJdfQ==
@@ -32,8 +32,8 @@ export * from './translate/index';
32
32
  export * from './ontimize-export-data-provider-3x.service';
33
33
  export * from './ontimize-export-data-provider.service';
34
34
  export * from './appearance.service';
35
- export * from './query-arguments/index';
35
+ export * from './request-adapter/index';
36
36
  export * from './name-convention/index';
37
37
  export * from './pagination-context.service';
38
38
  export * from './base-data-service.class';
39
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9vbnRpbWl6ZS13ZWItbmd4L3NyYy9saWIvc2VydmljZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxrQ0FBa0MsQ0FBQztBQUNqRCxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsaUNBQWlDLENBQUM7QUFDaEQsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsa0NBQWtDLENBQUM7QUFDakQsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsb0NBQW9DLENBQUM7QUFDbkQsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsb0NBQW9DLENBQUM7QUFDbkQsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsNENBQTRDLENBQUM7QUFDM0QsY0FBYyx5Q0FBeUMsQ0FBQztBQUN4RCxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsMkJBQTJCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2FwcC1jb25maWcucHJvdmlkZXInO1xuZXhwb3J0ICogZnJvbSAnLi9hcHAtbWVudS5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vYXV0aC1ndWFyZC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vYXV0aC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vYmFzZS1zZXJ2aWNlLXJlc3BvbnNlLmNsYXNzJztcbmV4cG9ydCAqIGZyb20gJy4vYmFzZS1zZXJ2aWNlLmNsYXNzJztcbmV4cG9ydCAqIGZyb20gJy4vY3VycmVuY3kuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2RpYWxvZy5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vZmFjdG9yaWVzJztcbmV4cG9ydCAqIGZyb20gJy4vaWNvbi5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbG9jYWwtc3RvcmFnZS5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbG9naW4tc3RvcmFnZS5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbW9tZW50LnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9uYXZpZ2F0aW9uLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9udW1iZXIuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL28tYXV0aC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vby1lcnJvci1kaWFsb2ctbWFuYWdlci5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vby1icmVhZGNydW1iLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9vLWZvcm0tbGF5b3V0LW1hbmFnZXIuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL28tbW9kdWxlcy1pbmZvLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9vLXVzZXItaW5mby5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vb250aW1pemUtaWNvbi1yZWdpc3RyeS5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vb250aW1pemUvaW5kZXgnO1xuZXhwb3J0ICogZnJvbSAnLi9qc29uYXBpL2luZGV4JztcbmV4cG9ydCAqIGZyb20gJy4vcGFyc2VyL28tc2VydmljZS1yZXNwb25zZS5wYXJzZXInO1xuZXhwb3J0ICogZnJvbSAnLi9wZXJtaXNzaW9ucy9pbmRleCc7XG5leHBvcnQgKiBmcm9tICcuL3JlbW90ZS1jb25maWcuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3NoYXJlLWNhbi1hY3RpdmF0ZS1jaGlsZC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vc25hY2tiYXIuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3N0YXRlL2luZGV4JztcbmV4cG9ydCAqIGZyb20gJy4vdHJhbnNsYXRlL2luZGV4JztcbmV4cG9ydCAqIGZyb20gJy4vb250aW1pemUtZXhwb3J0LWRhdGEtcHJvdmlkZXItM3guc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL29udGltaXplLWV4cG9ydC1kYXRhLXByb3ZpZGVyLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9hcHBlYXJhbmNlLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9xdWVyeS1hcmd1bWVudHMvaW5kZXgnO1xuZXhwb3J0ICogZnJvbSAnLi9uYW1lLWNvbnZlbnRpb24vaW5kZXgnO1xuZXhwb3J0ICogZnJvbSAnLi9wYWdpbmF0aW9uLWNvbnRleHQuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2Jhc2UtZGF0YS1zZXJ2aWNlLmNsYXNzJztcbiJdfQ==
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9vbnRpbWl6ZS13ZWItbmd4L3NyYy9saWIvc2VydmljZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxrQ0FBa0MsQ0FBQztBQUNqRCxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsaUNBQWlDLENBQUM7QUFDaEQsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsa0NBQWtDLENBQUM7QUFDakQsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsb0NBQW9DLENBQUM7QUFDbkQsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsb0NBQW9DLENBQUM7QUFDbkQsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsNENBQTRDLENBQUM7QUFDM0QsY0FBYyx5Q0FBeUMsQ0FBQztBQUN4RCxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsMkJBQTJCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2FwcC1jb25maWcucHJvdmlkZXInO1xuZXhwb3J0ICogZnJvbSAnLi9hcHAtbWVudS5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vYXV0aC1ndWFyZC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vYXV0aC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vYmFzZS1zZXJ2aWNlLXJlc3BvbnNlLmNsYXNzJztcbmV4cG9ydCAqIGZyb20gJy4vYmFzZS1zZXJ2aWNlLmNsYXNzJztcbmV4cG9ydCAqIGZyb20gJy4vY3VycmVuY3kuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2RpYWxvZy5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vZmFjdG9yaWVzJztcbmV4cG9ydCAqIGZyb20gJy4vaWNvbi5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbG9jYWwtc3RvcmFnZS5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbG9naW4tc3RvcmFnZS5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbW9tZW50LnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9uYXZpZ2F0aW9uLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9udW1iZXIuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL28tYXV0aC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vby1lcnJvci1kaWFsb2ctbWFuYWdlci5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vby1icmVhZGNydW1iLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9vLWZvcm0tbGF5b3V0LW1hbmFnZXIuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL28tbW9kdWxlcy1pbmZvLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9vLXVzZXItaW5mby5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vb250aW1pemUtaWNvbi1yZWdpc3RyeS5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vb250aW1pemUvaW5kZXgnO1xuZXhwb3J0ICogZnJvbSAnLi9qc29uYXBpL2luZGV4JztcbmV4cG9ydCAqIGZyb20gJy4vcGFyc2VyL28tc2VydmljZS1yZXNwb25zZS5wYXJzZXInO1xuZXhwb3J0ICogZnJvbSAnLi9wZXJtaXNzaW9ucy9pbmRleCc7XG5leHBvcnQgKiBmcm9tICcuL3JlbW90ZS1jb25maWcuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3NoYXJlLWNhbi1hY3RpdmF0ZS1jaGlsZC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vc25hY2tiYXIuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3N0YXRlL2luZGV4JztcbmV4cG9ydCAqIGZyb20gJy4vdHJhbnNsYXRlL2luZGV4JztcbmV4cG9ydCAqIGZyb20gJy4vb250aW1pemUtZXhwb3J0LWRhdGEtcHJvdmlkZXItM3guc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL29udGltaXplLWV4cG9ydC1kYXRhLXByb3ZpZGVyLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9hcHBlYXJhbmNlLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9yZXF1ZXN0LWFkYXB0ZXIvaW5kZXgnO1xuZXhwb3J0ICogZnJvbSAnLi9uYW1lLWNvbnZlbnRpb24vaW5kZXgnO1xuZXhwb3J0ICogZnJvbSAnLi9wYWdpbmF0aW9uLWNvbnRleHQuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2Jhc2UtZGF0YS1zZXJ2aWNlLmNsYXNzJztcbiJdfQ==
@@ -22,7 +22,7 @@ export class JSONAPIPreferencesService extends JSONAPIService {
22
22
  savePreferences(id, preferencesparams) {
23
23
  preferencesparams = this.parseObjectToPreference(preferencesparams);
24
24
  preferencesparams = OPreferenceMappingUtils.jsonApiPreferencesDataMapping(preferencesparams);
25
- return super.update({ PREFERENCEID: id }, preferencesparams, 'Preference');
25
+ return super.update(id.toString(), preferencesparams, 'Preference');
26
26
  }
27
27
  getPreferences(entity, service, type) {
28
28
  let queryParams = { fields: {}, filter: {} };
@@ -44,4 +44,4 @@ JSONAPIPreferencesService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.
44
44
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: JSONAPIPreferencesService, decorators: [{
45
45
  type: Injectable
46
46
  }] });
47
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbmFwaS1wcmVmZXJlbmNlcy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb250aW1pemUtd2ViLW5neC9zcmMvbGliL3NlcnZpY2VzL2pzb25hcGkvanNvbmFwaS1wcmVmZXJlbmNlcy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFJM0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ25ELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDOztBQUc3RSxNQUFNLE9BQU8seUJBQTBCLFNBQVEsY0FBYztJQUVwRCxnQkFBZ0IsQ0FBQyxNQUFXO1FBQ2pDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMvQixJQUFJLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQTtJQUN2RixDQUFDO0lBRVMsdUJBQXVCLENBQUMsaUJBQXlCO1FBQ3pELGlCQUFpQixDQUFDLHNCQUFzQixDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsaUJBQWlCLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDNUcsaUJBQWlCLENBQUMsa0JBQWtCLENBQUMsR0FBRyxpQkFBaUIsQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLEdBQUcsR0FBRyxpQkFBaUIsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQzdILGlCQUFpQixDQUFDLGdCQUFnQixDQUFDLEdBQUcsaUJBQWlCLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQy9GLE9BQU8saUJBQWlCLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUM5QyxPQUFPLGlCQUFpQixDQUFDO0lBQzNCLENBQUM7SUFFTSxpQkFBaUIsQ0FBQyxpQkFBeUI7UUFDaEQsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDcEUsaUJBQWlCLEdBQUcsdUJBQXVCLENBQUMsNkJBQTZCLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUM3RixPQUFPLEtBQUssQ0FBQyxNQUFNLENBQUMsaUJBQWlCLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVNLGVBQWUsQ0FBQyxFQUFVLEVBQUUsaUJBQXlCO1FBQzFELGlCQUFpQixHQUFHLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ3BFLGlCQUFpQixHQUFHLHVCQUF1QixDQUFDLDZCQUE2QixDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDN0YsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUUsWUFBWSxFQUFFLEVBQUUsRUFBRSxFQUFFLGlCQUFpQixFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQzdFLENBQUM7SUFFTSxjQUFjLENBQUMsTUFBYyxFQUFFLE9BQWUsRUFBRSxJQUFZO1FBQ2pFLElBQUksV0FBVyxHQUEwQixFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDO1FBRXBFLElBQUksTUFBTSxHQUFHLEVBQUUsVUFBVSxFQUFFLHlHQUF5RyxFQUFFLENBQUM7UUFDdkksV0FBVyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDO1FBQ3JELFdBQVcsQ0FBQyxNQUFNLEdBQUcsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLEdBQUcsR0FBRyxHQUFHLE9BQU8sRUFBRSxjQUFjLEVBQUUsQ0FBQyxJQUFJLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDL0csT0FBTyxLQUFLLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFHTSxpQkFBaUIsQ0FBQyxFQUFXO1FBQ2xDLE1BQU0sR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxJQUFJLEVBQUUsRUFBRSxDQUFDO1FBQ2hELE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztZQUNwQixNQUFNLEVBQUUsUUFBUTtZQUNoQixHQUFHLEVBQUUsR0FBRztTQUNULENBQUMsQ0FBQztJQUNMLENBQUM7O3NIQTNDVSx5QkFBeUI7MEhBQXpCLHlCQUF5QjsyRkFBekIseUJBQXlCO2tCQURyQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBKU09OQVBJUXVlcnlQYXJhbWV0ZXIgfSBmcm9tICcuLi8uLi90eXBlcy9qc29uLXF1ZXJ5LXBhcmFtZXRlci50eXBlJztcbmltcG9ydCB7IEpTT05BUElTZXJ2aWNlIH0gZnJvbSAnLi9qc29uYXBpLnNlcnZpY2UnO1xuaW1wb3J0IHsgT1ByZWZlcmVuY2VNYXBwaW5nVXRpbHMgfSBmcm9tICcuLi8uLi91dGlsL3ByZWZlcmVuY2UtbWFwcGluZy11dGlsJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEpTT05BUElQcmVmZXJlbmNlc1NlcnZpY2UgZXh0ZW5kcyBKU09OQVBJU2VydmljZSB7XG5cbiAgcHVibGljIGNvbmZpZ3VyZVNlcnZpY2UoY29uZmlnOiBhbnkpOiB2b2lkIHtcbiAgICBzdXBlci5jb25maWd1cmVTZXJ2aWNlKGNvbmZpZyk7XG4gICAgdGhpcy5wYXRoID0gY29uZmlnWydwcmVmZXJlbmNlcyddPy5wYXRoID8gY29uZmlnWydwcmVmZXJlbmNlcyddPy5wYXRoIDogJy9QcmVmZXJlbmNlJ1xuICB9XG5cbiAgcHJvdGVjdGVkIHBhcnNlT2JqZWN0VG9QcmVmZXJlbmNlKHByZWZlcmVuY2VzcGFyYW1zOiBvYmplY3QpIHtcbiAgICBwcmVmZXJlbmNlc3BhcmFtc1sncHJlZmVyZW5jZXBhcmFtZXRlcnMnXSA9IGJ0b2EoSlNPTi5zdHJpbmdpZnkocHJlZmVyZW5jZXNwYXJhbXNbJ3ByZWZlcmVuY2VwYXJhbWV0ZXJzJ10pKTtcbiAgICBwcmVmZXJlbmNlc3BhcmFtc1sncHJlZmVyZW5jZWVudGl0eSddID0gcHJlZmVyZW5jZXNwYXJhbXNbJ3ByZWZlcmVuY2VlbnRpdHknXSArICctJyArIHByZWZlcmVuY2VzcGFyYW1zWydwcmVmZXJlbmNlc2VydmljZSddO1xuICAgIHByZWZlcmVuY2VzcGFyYW1zWydwcmVmZXJlbmNldHlwZSddID0gcHJlZmVyZW5jZXNwYXJhbXNbJ3ByZWZlcmVuY2V0eXBlJ10gPT09ICdSRVBPUlQnID8gMCA6IDE7XG4gICAgZGVsZXRlIHByZWZlcmVuY2VzcGFyYW1zWydwcmVmZXJlbmNlc2VydmljZSddO1xuICAgIHJldHVybiBwcmVmZXJlbmNlc3BhcmFtcztcbiAgfVxuXG4gIHB1YmxpYyBzYXZlQXNQcmVmZXJlbmNlcyhwcmVmZXJlbmNlc3BhcmFtczogb2JqZWN0KTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBwcmVmZXJlbmNlc3BhcmFtcyA9IHRoaXMucGFyc2VPYmplY3RUb1ByZWZlcmVuY2UocHJlZmVyZW5jZXNwYXJhbXMpO1xuICAgIHByZWZlcmVuY2VzcGFyYW1zID0gT1ByZWZlcmVuY2VNYXBwaW5nVXRpbHMuanNvbkFwaVByZWZlcmVuY2VzRGF0YU1hcHBpbmcocHJlZmVyZW5jZXNwYXJhbXMpO1xuICAgIHJldHVybiBzdXBlci5pbnNlcnQocHJlZmVyZW5jZXNwYXJhbXMsICdQcmVmZXJlbmNlJyk7XG4gIH1cblxuICBwdWJsaWMgc2F2ZVByZWZlcmVuY2VzKGlkOiBudW1iZXIsIHByZWZlcmVuY2VzcGFyYW1zOiBvYmplY3QpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHByZWZlcmVuY2VzcGFyYW1zID0gdGhpcy5wYXJzZU9iamVjdFRvUHJlZmVyZW5jZShwcmVmZXJlbmNlc3BhcmFtcyk7XG4gICAgcHJlZmVyZW5jZXNwYXJhbXMgPSBPUHJlZmVyZW5jZU1hcHBpbmdVdGlscy5qc29uQXBpUHJlZmVyZW5jZXNEYXRhTWFwcGluZyhwcmVmZXJlbmNlc3BhcmFtcyk7XG4gICAgcmV0dXJuIHN1cGVyLnVwZGF0ZSh7IFBSRUZFUkVOQ0VJRDogaWQgfSwgcHJlZmVyZW5jZXNwYXJhbXMsICdQcmVmZXJlbmNlJyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0UHJlZmVyZW5jZXMoZW50aXR5OiBzdHJpbmcsIHNlcnZpY2U6IHN0cmluZywgdHlwZTogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBsZXQgcXVlcnlQYXJhbXM6IEpTT05BUElRdWVyeVBhcmFtZXRlciA9IHsgZmllbGRzOiB7fSwgZmlsdGVyOiB7fSB9O1xuXG4gICAgbGV0IGZpZWxkcyA9IHsgcHJlZmVyZW5jZTogJ1BSRUZFUkVOQ0VJRCxQUkVGRVJFTkNFTkFNRSxQUkVGRVJFTkNFREVTQ1JJUFRJT04sUFJFRkVSRU5DRVBSRUZFUkVOQ0VTLFBSRUZFUkVOQ0VFTlRJVFksUFJFRkVSRU5DRVRZUEUnIH07XG4gICAgcXVlcnlQYXJhbXMuZmllbGRzWydQcmVmZXJlbmNlJ10gPSBmaWVsZHMucHJlZmVyZW5jZTtcbiAgICBxdWVyeVBhcmFtcy5maWx0ZXIgPSB7IHByZWZlcmVuY2VlbnRpdHk6IGVudGl0eSArICctJyArIHNlcnZpY2UsIHByZWZlcmVuY2V0eXBlOiAodHlwZSA9PT0gJ1JFUE9SVCcgPyAwIDogMSkgfTtcbiAgICByZXR1cm4gc3VwZXIucXVlcnkocXVlcnlQYXJhbXMpO1xuICB9XG5cblxuICBwdWJsaWMgZGVsZXRlUHJlZmVyZW5jZXMoaWQ/OiBudW1iZXIpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGNvbnN0IHVybCA9IGAke3RoaXMudXJsQmFzZX0ke3RoaXMucGF0aH0vJHtpZH1gO1xuICAgIHJldHVybiB0aGlzLmRvUmVxdWVzdCh7XG4gICAgICBtZXRob2Q6ICdERUxFVEUnLFxuICAgICAgdXJsOiB1cmxcbiAgICB9KTtcbiAgfVxufVxuIl19
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbmFwaS1wcmVmZXJlbmNlcy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb250aW1pemUtd2ViLW5neC9zcmMvbGliL3NlcnZpY2VzL2pzb25hcGkvanNvbmFwaS1wcmVmZXJlbmNlcy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFJM0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ25ELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDOztBQUc3RSxNQUFNLE9BQU8seUJBQTBCLFNBQVEsY0FBYztJQUVwRCxnQkFBZ0IsQ0FBQyxNQUFXO1FBQ2pDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMvQixJQUFJLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQTtJQUN2RixDQUFDO0lBRVMsdUJBQXVCLENBQUMsaUJBQXlCO1FBQ3pELGlCQUFpQixDQUFDLHNCQUFzQixDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsaUJBQWlCLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDNUcsaUJBQWlCLENBQUMsa0JBQWtCLENBQUMsR0FBRyxpQkFBaUIsQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLEdBQUcsR0FBRyxpQkFBaUIsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQzdILGlCQUFpQixDQUFDLGdCQUFnQixDQUFDLEdBQUcsaUJBQWlCLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQy9GLE9BQU8saUJBQWlCLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUM5QyxPQUFPLGlCQUFpQixDQUFDO0lBQzNCLENBQUM7SUFFTSxpQkFBaUIsQ0FBQyxpQkFBeUI7UUFDaEQsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDcEUsaUJBQWlCLEdBQUcsdUJBQXVCLENBQUMsNkJBQTZCLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUM3RixPQUFPLEtBQUssQ0FBQyxNQUFNLENBQUMsaUJBQWlCLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVNLGVBQWUsQ0FBQyxFQUFVLEVBQUUsaUJBQXlCO1FBQzFELGlCQUFpQixHQUFHLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ3BFLGlCQUFpQixHQUFHLHVCQUF1QixDQUFDLDZCQUE2QixDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDN0YsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsRUFBRSxpQkFBaUIsRUFBRSxZQUFZLENBQUMsQ0FBQztJQUN0RSxDQUFDO0lBRU0sY0FBYyxDQUFDLE1BQWMsRUFBRSxPQUFlLEVBQUUsSUFBWTtRQUNqRSxJQUFJLFdBQVcsR0FBMEIsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQztRQUVwRSxJQUFJLE1BQU0sR0FBRyxFQUFFLFVBQVUsRUFBRSx5R0FBeUcsRUFBRSxDQUFDO1FBQ3ZJLFdBQVcsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQztRQUNyRCxXQUFXLENBQUMsTUFBTSxHQUFHLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxHQUFHLEdBQUcsR0FBRyxPQUFPLEVBQUUsY0FBYyxFQUFFLENBQUMsSUFBSSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQy9HLE9BQU8sS0FBSyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBR00saUJBQWlCLENBQUMsRUFBVztRQUNsQyxNQUFNLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksSUFBSSxFQUFFLEVBQUUsQ0FBQztRQUNoRCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7WUFDcEIsTUFBTSxFQUFFLFFBQVE7WUFDaEIsR0FBRyxFQUFFLEdBQUc7U0FDVCxDQUFDLENBQUM7SUFDTCxDQUFDOztzSEEzQ1UseUJBQXlCOzBIQUF6Qix5QkFBeUI7MkZBQXpCLHlCQUF5QjtrQkFEckMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgSlNPTkFQSVF1ZXJ5UGFyYW1ldGVyIH0gZnJvbSAnLi4vLi4vdHlwZXMvanNvbi1xdWVyeS1wYXJhbWV0ZXIudHlwZSc7XG5pbXBvcnQgeyBKU09OQVBJU2VydmljZSB9IGZyb20gJy4vanNvbmFwaS5zZXJ2aWNlJztcbmltcG9ydCB7IE9QcmVmZXJlbmNlTWFwcGluZ1V0aWxzIH0gZnJvbSAnLi4vLi4vdXRpbC9wcmVmZXJlbmNlLW1hcHBpbmctdXRpbCc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBKU09OQVBJUHJlZmVyZW5jZXNTZXJ2aWNlIGV4dGVuZHMgSlNPTkFQSVNlcnZpY2Uge1xuXG4gIHB1YmxpYyBjb25maWd1cmVTZXJ2aWNlKGNvbmZpZzogYW55KTogdm9pZCB7XG4gICAgc3VwZXIuY29uZmlndXJlU2VydmljZShjb25maWcpO1xuICAgIHRoaXMucGF0aCA9IGNvbmZpZ1sncHJlZmVyZW5jZXMnXT8ucGF0aCA/IGNvbmZpZ1sncHJlZmVyZW5jZXMnXT8ucGF0aCA6ICcvUHJlZmVyZW5jZSdcbiAgfVxuXG4gIHByb3RlY3RlZCBwYXJzZU9iamVjdFRvUHJlZmVyZW5jZShwcmVmZXJlbmNlc3BhcmFtczogb2JqZWN0KSB7XG4gICAgcHJlZmVyZW5jZXNwYXJhbXNbJ3ByZWZlcmVuY2VwYXJhbWV0ZXJzJ10gPSBidG9hKEpTT04uc3RyaW5naWZ5KHByZWZlcmVuY2VzcGFyYW1zWydwcmVmZXJlbmNlcGFyYW1ldGVycyddKSk7XG4gICAgcHJlZmVyZW5jZXNwYXJhbXNbJ3ByZWZlcmVuY2VlbnRpdHknXSA9IHByZWZlcmVuY2VzcGFyYW1zWydwcmVmZXJlbmNlZW50aXR5J10gKyAnLScgKyBwcmVmZXJlbmNlc3BhcmFtc1sncHJlZmVyZW5jZXNlcnZpY2UnXTtcbiAgICBwcmVmZXJlbmNlc3BhcmFtc1sncHJlZmVyZW5jZXR5cGUnXSA9IHByZWZlcmVuY2VzcGFyYW1zWydwcmVmZXJlbmNldHlwZSddID09PSAnUkVQT1JUJyA/IDAgOiAxO1xuICAgIGRlbGV0ZSBwcmVmZXJlbmNlc3BhcmFtc1sncHJlZmVyZW5jZXNlcnZpY2UnXTtcbiAgICByZXR1cm4gcHJlZmVyZW5jZXNwYXJhbXM7XG4gIH1cblxuICBwdWJsaWMgc2F2ZUFzUHJlZmVyZW5jZXMocHJlZmVyZW5jZXNwYXJhbXM6IG9iamVjdCk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcHJlZmVyZW5jZXNwYXJhbXMgPSB0aGlzLnBhcnNlT2JqZWN0VG9QcmVmZXJlbmNlKHByZWZlcmVuY2VzcGFyYW1zKTtcbiAgICBwcmVmZXJlbmNlc3BhcmFtcyA9IE9QcmVmZXJlbmNlTWFwcGluZ1V0aWxzLmpzb25BcGlQcmVmZXJlbmNlc0RhdGFNYXBwaW5nKHByZWZlcmVuY2VzcGFyYW1zKTtcbiAgICByZXR1cm4gc3VwZXIuaW5zZXJ0KHByZWZlcmVuY2VzcGFyYW1zLCAnUHJlZmVyZW5jZScpO1xuICB9XG5cbiAgcHVibGljIHNhdmVQcmVmZXJlbmNlcyhpZDogbnVtYmVyLCBwcmVmZXJlbmNlc3BhcmFtczogb2JqZWN0KTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBwcmVmZXJlbmNlc3BhcmFtcyA9IHRoaXMucGFyc2VPYmplY3RUb1ByZWZlcmVuY2UocHJlZmVyZW5jZXNwYXJhbXMpO1xuICAgIHByZWZlcmVuY2VzcGFyYW1zID0gT1ByZWZlcmVuY2VNYXBwaW5nVXRpbHMuanNvbkFwaVByZWZlcmVuY2VzRGF0YU1hcHBpbmcocHJlZmVyZW5jZXNwYXJhbXMpO1xuICAgIHJldHVybiBzdXBlci51cGRhdGUoaWQudG9TdHJpbmcoKSwgcHJlZmVyZW5jZXNwYXJhbXMsICdQcmVmZXJlbmNlJyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0UHJlZmVyZW5jZXMoZW50aXR5OiBzdHJpbmcsIHNlcnZpY2U6IHN0cmluZywgdHlwZTogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBsZXQgcXVlcnlQYXJhbXM6IEpTT05BUElRdWVyeVBhcmFtZXRlciA9IHsgZmllbGRzOiB7fSwgZmlsdGVyOiB7fSB9O1xuXG4gICAgbGV0IGZpZWxkcyA9IHsgcHJlZmVyZW5jZTogJ1BSRUZFUkVOQ0VJRCxQUkVGRVJFTkNFTkFNRSxQUkVGRVJFTkNFREVTQ1JJUFRJT04sUFJFRkVSRU5DRVBSRUZFUkVOQ0VTLFBSRUZFUkVOQ0VFTlRJVFksUFJFRkVSRU5DRVRZUEUnIH07XG4gICAgcXVlcnlQYXJhbXMuZmllbGRzWydQcmVmZXJlbmNlJ10gPSBmaWVsZHMucHJlZmVyZW5jZTtcbiAgICBxdWVyeVBhcmFtcy5maWx0ZXIgPSB7IHByZWZlcmVuY2VlbnRpdHk6IGVudGl0eSArICctJyArIHNlcnZpY2UsIHByZWZlcmVuY2V0eXBlOiAodHlwZSA9PT0gJ1JFUE9SVCcgPyAwIDogMSkgfTtcbiAgICByZXR1cm4gc3VwZXIucXVlcnkocXVlcnlQYXJhbXMpO1xuICB9XG5cblxuICBwdWJsaWMgZGVsZXRlUHJlZmVyZW5jZXMoaWQ/OiBudW1iZXIpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGNvbnN0IHVybCA9IGAke3RoaXMudXJsQmFzZX0ke3RoaXMucGF0aH0vJHtpZH1gO1xuICAgIHJldHVybiB0aGlzLmRvUmVxdWVzdCh7XG4gICAgICBtZXRob2Q6ICdERUxFVEUnLFxuICAgICAgdXJsOiB1cmxcbiAgICB9KTtcbiAgfVxufVxuIl19
@@ -4,12 +4,16 @@ import { Observable, share } from 'rxjs';
4
4
  import { AppConfig } from '../../config/app-config';
5
5
  import { Util } from '../../util/util';
6
6
  import { BaseDataService } from '../base-data-service.class';
7
+ import { O_JSON_API_CONFIG } from '../../injection-tokens';
7
8
  import * as i0 from "@angular/core";
8
9
  export class JSONAPIService extends BaseDataService {
9
10
  constructor(injector) {
10
11
  super(injector);
11
12
  this.injector = injector;
13
+ this.DEFAULT_DELIMITER = '_';
12
14
  this.config = this.injector.get(AppConfig);
15
+ const jsonApiConfig = this.injector.get(O_JSON_API_CONFIG);
16
+ this.delimiter = jsonApiConfig?.multipleKeyDelimiter || this.DEFAULT_DELIMITER;
13
17
  }
14
18
  startsession(user, password) {
15
19
  const url = this.urlBase + this._startSessionPath;
@@ -70,11 +74,19 @@ export class JSONAPIService extends BaseDataService {
70
74
  super.configureService(config);
71
75
  this._startSessionPath = this._appConfig.startSessionPath ? this._appConfig.startSessionPath : '/auth/login';
72
76
  this.path = config.path;
77
+ this.delimiter = this.getValidDelimiter(config.multipleKeyDelimiter ?? this.delimiter);
78
+ }
79
+ getValidDelimiter(delimiter) {
80
+ if (!delimiter || !/^[_-]$/.test(delimiter)) {
81
+ console.warn(`Delimiter '${delimiter}' is not valid for URL, defaulting to '${this.DEFAULT_DELIMITER}'.`);
82
+ return this.DEFAULT_DELIMITER;
83
+ }
84
+ return delimiter;
73
85
  }
74
86
  query(queryParams) {
75
87
  queryParams = this.parseNameConventionQueryParams(queryParams);
76
- queryParams = Util.objectToQueryString(queryParams);
77
- const queryParamsString = Util.isDefined(queryParams) ? '?' + queryParams : '';
88
+ const queryParamsToString = Util.objectToQueryString(queryParams);
89
+ const queryParamsString = Util.isDefined(queryParams) ? '?' + queryParamsToString : '';
78
90
  const url = `${this.urlBase}${this.path}${queryParamsString}`;
79
91
  return this.doRequest({
80
92
  method: 'GET',
@@ -88,8 +100,8 @@ export class JSONAPIService extends BaseDataService {
88
100
  }
89
101
  queryById(queryParams) {
90
102
  queryParams = this.parseNameConventionQueryParams(queryParams);
91
- const id = Object.values(queryParams.filter)[0];
92
- const url = `${this.urlBase}${this.path}/${id}?${Util.objectToQueryString(queryParams)}`;
103
+ const serializedId = this.serializeCompositeKey(queryParams.filter);
104
+ const url = `${this.urlBase}${this.path}/${serializedId}`;
93
105
  return this.doRequest({
94
106
  method: 'GET',
95
107
  url: url,
@@ -97,6 +109,29 @@ export class JSONAPIService extends BaseDataService {
97
109
  errorCallBack: this.parseUnsuccessfulQueryResponse,
98
110
  });
99
111
  }
112
+ serializeCompositeKey(keyObj) {
113
+ if (keyObj == null) {
114
+ console.warn('JSONAPI Service: Key object is null or undefined.');
115
+ return '';
116
+ }
117
+ if (typeof keyObj === 'string') {
118
+ if (keyObj.trim() === '') {
119
+ console.warn('JSONAPI Service: Key string is empty.');
120
+ }
121
+ return keyObj;
122
+ }
123
+ const values = Object.values(keyObj);
124
+ if (values.length === 0) {
125
+ console.warn('JSONAPI Service: Key object has no properties.');
126
+ return '';
127
+ }
128
+ for (const val of values) {
129
+ if (val == null) {
130
+ console.warn('JSONAPI Service: Key object contains null or undefined value.');
131
+ }
132
+ }
133
+ return Object.values(keyObj).join(this.delimiter);
134
+ }
100
135
  parseNameConventionQueryParams(queryParams) {
101
136
  if (Util.isDefined(queryParams.fields)) {
102
137
  const entity = Object.keys(queryParams.fields)[0];
@@ -112,12 +147,12 @@ export class JSONAPIService extends BaseDataService {
112
147
  }
113
148
  return queryParams;
114
149
  }
115
- insert(av, entity) {
150
+ insert(attributes, type) {
116
151
  const url = `${this.urlBase}${this.path}`;
117
- av = this.nameConvention.parseDataToNameConvention(av);
118
- let attributes = { attributes: av, type: entity };
152
+ attributes = this.nameConvention.parseDataToNameConvention(attributes);
153
+ let data = { attributes: attributes, type: type };
119
154
  const body = JSON.stringify({
120
- data: attributes
155
+ data: data
121
156
  });
122
157
  return this.doRequest({
123
158
  method: 'POST',
@@ -127,13 +162,13 @@ export class JSONAPIService extends BaseDataService {
127
162
  errorCallBack: this.parseUnsuccessfulInsertResponse
128
163
  });
129
164
  }
130
- update(kv, av, entity) {
131
- const id = Object.values(kv)[0];
132
- const url = `${this.urlBase}${this.path}/${id}`;
133
- av = this.nameConvention.parseDataToNameConvention(av);
134
- let attributes = { ...{ attributes: av }, ...{ id: id }, ...{ type: entity } };
165
+ update(id, attributes, type) {
166
+ const serializedId = this.serializeCompositeKey(id);
167
+ const url = `${this.urlBase}${this.path}/${serializedId}`;
168
+ attributes = this.nameConvention.parseDataToNameConvention(attributes);
169
+ let data = { ...{ attributes: attributes }, ...{ id: serializedId }, ...{ type: type } };
135
170
  const body = JSON.stringify({
136
- data: attributes
171
+ data: data
137
172
  });
138
173
  return this.doRequest({
139
174
  method: 'PATCH',
@@ -143,9 +178,9 @@ export class JSONAPIService extends BaseDataService {
143
178
  errorCallBack: this.parseUnsuccessfulUpdateResponse
144
179
  });
145
180
  }
146
- delete(kv = {}) {
147
- const id = Object.values(kv)[0];
148
- const url = `${this.urlBase}${this.path}/${id}`;
181
+ delete(id) {
182
+ const serializedId = this.serializeCompositeKey(id);
183
+ const url = `${this.urlBase}${this.path}/${serializedId}`;
149
184
  return this.doRequest({
150
185
  method: 'DELETE',
151
186
  url: url,
@@ -153,13 +188,10 @@ export class JSONAPIService extends BaseDataService {
153
188
  errorCallBack: this.parseUnsuccessfulDeleteResponse
154
189
  });
155
190
  }
156
- getStandartEntity(entity) {
157
- return entity.charAt(0).toUpperCase() + entity.slice(1);
158
- }
159
191
  }
160
192
  JSONAPIService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: JSONAPIService, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable });
161
193
  JSONAPIService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: JSONAPIService });
162
194
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: JSONAPIService, decorators: [{
163
195
  type: Injectable
164
196
  }], ctorParameters: function () { return [{ type: i0.Injector }]; } });
165
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbmFwaS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb250aW1pemUtd2ViLW5neC9zcmMvbGliL3NlcnZpY2VzL2pzb25hcGkvanNvbmFwaS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRCxPQUFPLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUV6QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFJcEQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7QUFHN0QsTUFBTSxPQUFPLGNBQWUsU0FBUSxlQUFnQztJQUlsRSxZQUFzQixRQUFrQjtRQUN0QyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUFESSxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBRXRDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVNLFlBQVksQ0FBQyxJQUFZLEVBQUUsUUFBZ0I7UUFDaEQsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUM7UUFDbEQsTUFBTSxPQUFPLEdBQVE7WUFDbkIsT0FBTyxFQUFFLElBQUksV0FBVyxDQUFDO2dCQUN2QixhQUFhLEVBQUUsUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLEdBQUcsR0FBRyxHQUFHLFFBQVEsQ0FBQzthQUN0RCxDQUFDO1lBQ0YsT0FBTyxFQUFFLFVBQVU7U0FDcEIsQ0FBQztRQUNG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dXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBIZWFkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIHNoYXJlIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IEFwcENvbmZpZyB9IGZyb20gJy4uLy4uL2NvbmZpZy9hcHAtY29uZmlnJztcbmltcG9ydCB7IElBdXRoU2VydmljZSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvYXV0aC1zZXJ2aWNlLmludGVyZmFjZSc7XG5pbXBvcnQgeyBKU09OQVBJUmVzcG9uc2UgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2pzb25hcGktcmVzcG9uc2UuaW50ZXJmYWNlJztcbmltcG9ydCB7IEpTT05BUElRdWVyeVBhcmFtZXRlciB9IGZyb20gJy4uLy4uL3R5cGVzL2pzb24tcXVlcnktcGFyYW1ldGVyLnR5cGUnO1xuaW1wb3J0IHsgVXRpbCB9IGZyb20gJy4uLy4uL3V0aWwvdXRpbCc7XG5pbXBvcnQgeyBCYXNlRGF0YVNlcnZpY2UgfSBmcm9tICcuLi9iYXNlLWRhdGEtc2VydmljZS5jbGFzcyc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBKU09OQVBJU2VydmljZSBleHRlbmRzIEJhc2VEYXRhU2VydmljZTxKU09OQVBJUmVzcG9uc2U+IGltcGxlbWVudHMgSUF1dGhTZXJ2aWNlIHtcbiAgcHJvdGVjdGVkIF9zdGFydFNlc3Npb25QYXRoOiBzdHJpbmc7XG4gIHByb3RlY3RlZCBjb25maWc6IEFwcENvbmZpZztcblxuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgaW5qZWN0b3I6IEluamVjdG9yKSB7XG4gICAgc3VwZXIoaW5qZWN0b3IpO1xuICAgIHRoaXMuY29uZmlnID0gdGhpcy5pbmplY3Rvci5nZXQoQXBwQ29uZmlnKTtcbiAgfVxuXG4gIHB1YmxpYyBzdGFydHNlc3Npb24odXNlcjogc3RyaW5nLCBwYXNzd29yZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxzdHJpbmcgfCBudW1iZXI+IHtcbiAgICBjb25zdCB1cmwgPSB0aGlzLnVybEJhc2UgKyB0aGlzLl9zdGFydFNlc3Npb25QYXRoO1xuICAgIGNvbnN0IG9wdGlvbnM6IGFueSA9IHtcbiAgICAgIGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh7XG4gICAgICAgIEF1dGhvcml6YXRpb246ICdCYXNpYyAnICsgYnRvYSh1c2VyICsgJzonICsgcGFzc3dvcmQpXG4gICAgICB9KSxcbiAgICAgIG9ic2VydmU6ICdyZXNwb25zZSdcbiAgICB9O1xuICAgIGNvbnN0IGRhdGFPYnNlcnZhYmxlOiBPYnNlcnZhYmxlPHN0cmluZyB8IG51bWJlcj4gPSBuZXcgT2JzZXJ2YWJsZShvYnNlcnZlciA9PiB7XG4gICAgICB0aGlzLmh0dHBDbGllbnQucG9zdCh1cmwsIG51bGwsIG9wdGlvbnMpLnN1YnNjcmliZShcbiAgICAgICAge1xuICAgICAgICAgIG5leHQ6IChyZXNwOiBhbnkpID0+IHtcbiAgICAgICAgICAgIGlmIChVdGlsLmlzRGVmaW5lZChyZXNwKSAmJiBVdGlsLmlzRGVmaW5lZChyZXNwLmhlYWRlcnMpICYmIFV0aWwuaXNEZWZpbmVkKHJlc3AuaGVhZGVycy5nZXQoJ1gtQXV0aC1Ub2tlbicpKSkge1xuICAgICAgICAgICAgICBvYnNlcnZlci5uZXh0KHJlc3AuaGVhZGVycy5nZXQoJ1gtQXV0aC1Ub2tlbicpKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIC8vIEludmFsaWQgc2Vzc2lvbklkIC4uLlxuICAgICAgICAgICAgICBvYnNlcnZlci5lcnJvcignSW52YWxpZCB1c2VyIG9yIHBhc3N3b3JkJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgICwgZXJyb3I6IChlcnJvcikgPT4gb2JzZXJ2ZXIuZXJyb3IoZXJyb3IpXG4gICAgICAgIH0pO1xuICAgIH0pO1xuICAgIHJldHVybiBkYXRhT2JzZXJ2YWJsZS5waXBlKHNoYXJlKCkpO1xuICB9XG5cbiAgcHVibGljIGVuZHNlc3Npb24odXNlcjogc3RyaW5nLCBzZXNzaW9uSWQ6IG51bWJlcik6IE9ic2VydmFibGU8bnVtYmVyPiB7XG4gICAgY29uc3QgdXJsID0gdGhpcy51cmxCYXNlICsgJy9lbmRzZXNzaW9uP3VzZXI9JyArIHVzZXIgKyAnJnNlc3Npb25pZD0nICsgc2Vzc2lvbklkO1xuICAgIGNvbnN0IGRhdGFPYnNlcnZhYmxlOiBPYnNlcnZhYmxlPGFueT4gPSBuZXcgT2JzZXJ2YWJsZShfY2xvc2VTZXNzaW9uT2JzZXJ2ZXIgPT4ge1xuICAgICAgdGhpcy5odHRwQ2xpZW50LmdldCh1cmwpLnN1YnNjcmliZShcbiAgICAgICAge1xuICAgICAgICAgIG5leHQ6IChyZXNwKSA9PiB7XG4gICAgICAgICAgICBfY2xvc2VTZXNzaW9uT2JzZXJ2ZXIubmV4dChyZXNwKTtcbiAgICAgICAgICB9LCBlcnJvcjogKGVycm9yKSA9PiB7XG4gICAgICAgICAgICBpZiAoZXJyb3Iuc3RhdHVzID09PSA0MDEgfHwgZXJyb3Iuc3RhdHVzID09PSAwIHx8ICFlcnJvci5vaykge1xuICAgICAgICAgICAgICBfY2xvc2VTZXNzaW9uT2JzZXJ2ZXIubmV4dCgwKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIF9jbG9zZVNlc3Npb25PYnNlcnZlci5lcnJvcihlcnJvcik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgIH0pO1xuICAgIHJldHVybiBkYXRhT2JzZXJ2YWJsZS5waXBlKHNoYXJlKCkpO1xuXG4gIH1cblxuICBwcm90ZWN0ZWQgYnVpbGRIZWFkZXJzKCk6IEh0dHBIZWFkZXJzIHtcbiAgICBsZXQgaGVhZGVycyA9IHN1cGVyLmJ1aWxkSGVhZGVycygpO1xuICAgIGNvbnN0IHNlc3Npb25JZCA9IHRoaXMuYXV0aFNlcnZpY2UuZ2V0U2Vzc2lvbkluZm8oKS5pZDtcbiAgICBpZiAoVXRpbC5pc0RlZmluZWQoc2Vzc2lvbklkKSkge1xuICAgICAgaGVhZGVycyA9IGhlYWRlcnMuYXBwZW5kKCdBdXRob3JpemF0aW9uJywgJ0JlYXJlciAnICsgc2Vzc2lvbklkKTtcbiAgICB9XG4gICAgcmV0dXJuIGhlYWRlcnM7XG4gIH1cblxuICBwdWJsaWMgaGFzc2Vzc2lvbih1c2VyOiBzdHJpbmcsIHNlc3Npb25JZDogYW55KTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgY29uc3QgZGF0YU9ic2VydmFibGU6IE9ic2VydmFibGU8YW55PiA9IG5ldyBPYnNlcnZhYmxlKG9ic2VydmVyID0+IHtcbiAgICAgIG9ic2VydmVyLm5leHQodHJ1ZSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIGRhdGFPYnNlcnZhYmxlLnBpcGUoc2hhcmUoKSk7XG4gIH1cblxuICBwdWJsaWMgY29uZmlndXJlU2VydmljZShjb25maWc6IGFueSk6IHZvaWQge1xuICAgIHN1cGVyLmNvbmZpZ3VyZVNlcnZpY2UoY29uZmlnKTtcbiAgICB0aGlzLl9zdGFydFNlc3Npb25QYXRoID0gdGhpcy5fYXBwQ29uZmlnLnN0YXJ0U2Vzc2lvblBhdGggPyB0aGlzLl9hcHBDb25maWcuc3RhcnRTZXNzaW9uUGF0aCA6ICcvYXV0aC9sb2dpbic7XG4gICAgdGhpcy5wYXRoID0gY29uZmlnLnBhdGg7XG4gIH1cblxuICBxdWVyeShxdWVyeVBhcmFtczogSlNPTkFQSVF1ZXJ5UGFyYW1ldGVyKTogT2JzZXJ2YWJsZTxKU09OQVBJUmVzcG9uc2U+IHtcbiAgICBxdWVyeVBhcmFtcyA9IHRoaXMucGFyc2VOYW1lQ29udmVudGlvblF1ZXJ5UGFyYW1zKHF1ZXJ5UGFyYW1zKTtcbiAgICBxdWVyeVBhcmFtcyA9IFV0aWwub2JqZWN0VG9RdWVyeVN0cmluZyhxdWVyeVBhcmFtcyk7XG5cbiAgICBjb25zdCBxdWVyeVBhcmFtc1N0cmluZyA9IFV0aWwuaXNEZWZpbmVkKHF1ZXJ5UGFyYW1zKSA/ICc/JyArIHF1ZXJ5UGFyYW1zIDogJyc7XG5cbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLnVybEJhc2V9JHt0aGlzLnBhdGh9JHtxdWVyeVBhcmFtc1N0cmluZ31gO1xuXG4gICAgcmV0dXJuIHRoaXMuZG9SZXF1ZXN0KHtcbiAgICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgICB1cmw6IHVybCxcbiAgICAgIHN1Y2Nlc3NDYWxsYmFjazogdGhpcy5wYXJzZVN1Y2Nlc3NmdWxRdWVyeVJlc3BvbnNlLFxuICAgICAgZXJyb3JDYWxsQmFjazogdGhpcy5wYXJzZVVuc3VjY2Vzc2Z1bFF1ZXJ5UmVzcG9uc2VcbiAgICB9KTtcbiAgfVxuXG4gIGFkdmFuY2VkUXVlcnkocXVlcnlQYXJhbXM6IEpTT05BUElRdWVyeVBhcmFtZXRlcik6IE9ic2VydmFibGU8SlNPTkFQSVJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMucXVlcnkocXVlcnlQYXJhbXMpO1xuICB9XG5cbiAgcXVlcnlCeUlkKHF1ZXJ5UGFyYW1zOiBKU09OQVBJUXVlcnlQYXJhbWV0ZXIpOiBPYnNlcnZhYmxlPEpTT05BUElSZXNwb25zZT4ge1xuXG4gICAgcXVlcnlQYXJhbXMgPSB0aGlzLnBhcnNlTmFtZUNvbnZlbnRpb25RdWVyeVBhcmFtcyhxdWVyeVBhcmFtcyk7XG5cbiAgICBjb25zdCBpZCA9IE9iamVjdC52YWx1ZXMocXVlcnlQYXJhbXMuZmlsdGVyKVswXTtcblxuICAgIGNvbnN0IHVybCA9IGAke3RoaXMudXJsQmFzZX0ke3RoaXMucGF0aH0vJHtpZH0/JHtVdGlsLm9iamVjdFRvUXVlcnlTdHJpbmcocXVlcnlQYXJhbXMpfWA7XG5cbiAgICByZXR1cm4gdGhpcy5kb1JlcXVlc3Qoe1xuICAgICAgbWV0aG9kOiAnR0VUJyxcbiAgICAgIHVybDogdXJsLFxuICAgICAgc3VjY2Vzc0NhbGxiYWNrOiB0aGlzLnBhcnNlU3VjY2Vzc2Z1bFF1ZXJ5UmVzcG9uc2UsXG4gICAgICBlcnJvckNhbGxCYWNrOiB0aGlzLnBhcnNlVW5zdWNjZXNzZnVsUXVlcnlSZXNwb25zZSxcbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBwYXJzZU5hbWVDb252ZW50aW9uUXVlcnlQYXJhbXMocXVlcnlQYXJhbXM6IEpTT05BUElRdWVyeVBhcmFtZXRlcik6IEpTT05BUElRdWVyeVBhcmFtZXRlciB7XG4gICAgaWYgKFV0aWwuaXNEZWZpbmVkKHF1ZXJ5UGFyYW1zLmZpZWxkcykpIHtcbiAgICAgIGNvbnN0IGVudGl0eSA9IE9iamVjdC5rZXlzKHF1ZXJ5UGFyYW1zLmZpZWxkcylbMF07XG4gICAgICBjb25zdCBmaWVsZHMgPSBPYmplY3QudmFsdWVzKHF1ZXJ5UGFyYW1zLmZpZWxkcylbMF07XG4gICAgICBxdWVyeVBhcmFtcy5maWVsZHNbZW50aXR5XSA9IHRoaXMubmFtZUNvbnZlbnRpb24ucGFyc2VDb2x1bW5zVG9OYW1lQ29udmVudGlvbkZvckpTT05BUEkoZmllbGRzKTtcbiAgICB9XG4gICAgaWYgKFV0aWwuaXNEZWZpbmVkKHF1ZXJ5UGFyYW1zLnNvcnQpKSB7XG4gICAgICBxdWVyeVBhcmFtcy5zb3J0ID0gdGhpcy5uYW1lQ29udmVudGlvbi5wYXJzZUNvbHVtbnNUb05hbWVDb252ZW50aW9uRm9ySlNPTkFQSShxdWVyeVBhcmFtcy5zb3J0KTtcbiAgICB9XG5cbiAgICBpZiAoVXRpbC5pc0RlZmluZWQocXVlcnlQYXJhbXMuZmlsdGVyKSkge1xuICAgICAgY29uc3QgZmlsdGVyID0gdGhpcy5uYW1lQ29udmVudGlvbi5wYXJzZUZpbHRlclRvTmFtZUNvbnZlbnRpb24ocXVlcnlQYXJhbXMuZmlsdGVyKTtcbiAgICAgIHF1ZXJ5UGFyYW1zLmZpbHRlciA9IHsgLi4uZmlsdGVyIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHF1ZXJ5UGFyYW1zO1xuICB9XG5cbiAgaW5zZXJ0KGF2OiBvYmplY3QsIGVudGl0eTogc3RyaW5nKTogT2JzZXJ2YWJsZTxKU09OQVBJUmVzcG9uc2U+IHtcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLnVybEJhc2V9JHt0aGlzLnBhdGh9YDtcblxuICAgIGF2ID0gdGhpcy5uYW1lQ29udmVudGlvbi5wYXJzZURhdGFUb05hbWVDb252ZW50aW9uKGF2KTtcblxuICAgIGxldCBhdHRyaWJ1dGVzID0geyBhdHRyaWJ1dGVzOiBhdiwgdHlwZTogZW50aXR5IH07XG4gICAgY29uc3QgYm9keSA9IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgIGRhdGE6IGF0dHJpYnV0ZXNcbiAgICB9KTtcblxuICAgIHJldHVybiB0aGlzLmRvUmVxdWVzdCh7XG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIHVybDogdXJsLFxuICAgICAgYm9keTogYm9keSxcbiAgICAgIHN1Y2Nlc3NDYWxsYmFjazogdGhpcy5wYXJzZVN1Y2Nlc3NmdWxJbnNlcnRSZXNwb25zZSxcbiAgICAgIGVycm9yQ2FsbEJhY2s6IHRoaXMucGFyc2VVbnN1Y2Nlc3NmdWxJbnNlcnRSZXNwb25zZVxuICAgIH0pO1xuICB9XG5cbiAgdXBkYXRlKGt2OiBvYmplY3QsIGF2OiBvYmplY3QsIGVudGl0eT86IHN0cmluZyk6IE9ic2VydmFibGU8SlNPTkFQSVJlc3BvbnNlPiB7XG4gICAgY29uc3QgaWQgPSBPYmplY3QudmFsdWVzKGt2KVswXTtcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLnVybEJhc2V9JHt0aGlzLnBhdGh9LyR7aWR9YDtcblxuICAgIGF2ID0gdGhpcy5uYW1lQ29udmVudGlvbi5wYXJzZURhdGFUb05hbWVDb252ZW50aW9uKGF2KTtcblxuICAgIGxldCBhdHRyaWJ1dGVzID0geyAuLi57IGF0dHJpYnV0ZXM6IGF2IH0sIC4uLnsgaWQ6IGlkIH0sIC4uLnsgdHlwZTogZW50aXR5IH0gfTtcblxuICAgIGNvbnN0IGJvZHkgPSBKU09OLnN0cmluZ2lmeSh7XG4gICAgICBkYXRhOiBhdHRyaWJ1dGVzXG4gICAgfSk7XG5cbiAgICByZXR1cm4gdGhpcy5kb1JlcXVlc3Qoe1xuICAgICAgbWV0aG9kOiAnUEFUQ0gnLFxuICAgICAgdXJsOiB1cmwsXG4gICAgICBib2R5OiBib2R5LFxuICAgICAgc3VjY2Vzc0NhbGxiYWNrOiB0aGlzLnBhcnNlU3VjY2Vzc2Z1bFVwZGF0ZVJlc3BvbnNlLFxuICAgICAgZXJyb3JDYWxsQmFjazogdGhpcy5wYXJzZVVuc3VjY2Vzc2Z1bFVwZGF0ZVJlc3BvbnNlXG4gICAgfSk7XG4gIH1cblxuICBkZWxldGUoa3Y6IG9iamVjdCA9IHt9KTogT2JzZXJ2YWJsZTxKU09OQVBJUmVzcG9uc2U+IHtcbiAgICBjb25zdCBpZCA9IE9iamVjdC52YWx1ZXMoa3YpWzBdO1xuICAgIGNvbnN0IHVybCA9IGAke3RoaXMudXJsQmFzZX0ke3RoaXMucGF0aH0vJHtpZH1gO1xuXG4gICAgcmV0dXJuIHRoaXMuZG9SZXF1ZXN0KHtcbiAgICAgIG1ldGhvZDogJ0RFTEVURScsXG4gICAgICB1cmw6IHVybCxcbiAgICAgIHN1Y2Nlc3NDYWxsYmFjazogdGhpcy5wYXJzZVN1Y2Nlc3NmdWxEZWxldGVSZXNwb25zZSxcbiAgICAgIGVycm9yQ2FsbEJhY2s6IHRoaXMucGFyc2VVbnN1Y2Nlc3NmdWxEZWxldGVSZXNwb25zZVxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICogR2V0cyBzdGFuZGFydCBlbnRpdHlcbiAgKiBAcGFyYW0gZW50aXR5XG4gICogQHJldHVybnMgIHJldHVybiB0aGUgZmlyc3QgY2hhcnQgb2YgdGhlIGVudGl0eSBpbiB1cHBlcmNhc2VcbiAgKi9cblxuICBnZXRTdGFuZGFydEVudGl0eShlbnRpdHk6IHN0cmluZykge1xuICAgIHJldHVybiBlbnRpdHkuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBlbnRpdHkuc2xpY2UoMSk7XG4gIH1cblxufVxuIl19
197
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbmFwaS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb250aW1pemUtd2ViLW5neC9zcmMvbGliL3NlcnZpY2VzL2pzb25hcGkvanNvbmFwaS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRCxPQUFPLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUV6QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFJcEQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7QUFJM0QsTUFBTSxPQUFPLGNBQWUsU0FBUSxlQUFnQztJQU9sRSxZQUFzQixRQUFrQjtRQUN0QyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUFESSxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBSnJCLHNCQUFpQixHQUFHLEdBQUcsQ0FBQztRQU16QyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzNDLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFpQixpQkFBaUIsQ0FBQyxDQUFDO1FBQzNFLElBQUksQ0FBQyxTQUFTLEdBQUcsYUFBYSxFQUFFLG9CQUFvQixJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztJQUNqRixDQUFDO0lBRU0sWUFBWSxDQUFDLElBQVksRUFBRSxRQUFnQjtRQUNoRCxNQUFNLEdBQUcs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LElBQUksQ0FBQywrQkFBK0I7U0FDcEQsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7MkdBcE9VLGNBQWM7K0dBQWQsY0FBYzsyRkFBZCxjQUFjO2tCQUQxQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cEhlYWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgc2hhcmUgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgQXBwQ29uZmlnIH0gZnJvbSAnLi4vLi4vY29uZmlnL2FwcC1jb25maWcnO1xuaW1wb3J0IHsgSUF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9hdXRoLXNlcnZpY2UuaW50ZXJmYWNlJztcbmltcG9ydCB7IEpTT05BUElSZXNwb25zZSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvanNvbmFwaS1yZXNwb25zZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSlNPTkFQSVF1ZXJ5UGFyYW1ldGVyIH0gZnJvbSAnLi4vLi4vdHlwZXMvanNvbi1xdWVyeS1wYXJhbWV0ZXIudHlwZSc7XG5pbXBvcnQgeyBVdGlsIH0gZnJvbSAnLi4vLi4vdXRpbC91dGlsJztcbmltcG9ydCB7IEJhc2VEYXRhU2VydmljZSB9IGZyb20gJy4uL2Jhc2UtZGF0YS1zZXJ2aWNlLmNsYXNzJztcbmltcG9ydCB7IE9fSlNPTl9BUElfQ09ORklHIH0gZnJvbSAnLi4vLi4vaW5qZWN0aW9uLXRva2Vucyc7XG5pbXBvcnQgeyBJSnNvbkFwaUNvbmZpZyB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvanNvbmFwaS1jb25maWcuaW50ZXJmYWNlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEpTT05BUElTZXJ2aWNlIGV4dGVuZHMgQmFzZURhdGFTZXJ2aWNlPEpTT05BUElSZXNwb25zZT4gaW1wbGVtZW50cyBJQXV0aFNlcnZpY2Uge1xuICBwcm90ZWN0ZWQgX3N0YXJ0U2Vzc2lvblBhdGg6IHN0cmluZztcbiAgcHJvdGVjdGVkIGNvbmZpZzogQXBwQ29uZmlnO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgREVGQVVMVF9ERUxJTUlURVIgPSAnXyc7XG4gIGRlbGltaXRlcjogc3RyaW5nO1xuXG5cbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIGluamVjdG9yOiBJbmplY3Rvcikge1xuICAgIHN1cGVyKGluamVjdG9yKTtcbiAgICB0aGlzLmNvbmZpZyA9IHRoaXMuaW5qZWN0b3IuZ2V0KEFwcENvbmZpZyk7XG4gICAgY29uc3QganNvbkFwaUNvbmZpZyA9IHRoaXMuaW5qZWN0b3IuZ2V0PElKc29uQXBpQ29uZmlnPihPX0pTT05fQVBJX0NPTkZJRyk7XG4gICAgdGhpcy5kZWxpbWl0ZXIgPSBqc29uQXBpQ29uZmlnPy5tdWx0aXBsZUtleURlbGltaXRlciB8fCB0aGlzLkRFRkFVTFRfREVMSU1JVEVSO1xuICB9XG5cbiAgcHVibGljIHN0YXJ0c2Vzc2lvbih1c2VyOiBzdHJpbmcsIHBhc3N3b3JkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPHN0cmluZyB8IG51bWJlcj4ge1xuICAgIGNvbnN0IHVybCA9IHRoaXMudXJsQmFzZSArIHRoaXMuX3N0YXJ0U2Vzc2lvblBhdGg7XG4gICAgY29uc3Qgb3B0aW9uczogYW55ID0ge1xuICAgICAgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKHtcbiAgICAgICAgQXV0aG9yaXphdGlvbjogJ0Jhc2ljICcgKyBidG9hKHVzZXIgKyAnOicgKyBwYXNzd29yZClcbiAgICAgIH0pLFxuICAgICAgb2JzZXJ2ZTogJ3Jlc3BvbnNlJ1xuICAgIH07XG4gICAgY29uc3QgZGF0YU9ic2VydmFibGU6IE9ic2VydmFibGU8c3RyaW5nIHwgbnVtYmVyPiA9IG5ldyBPYnNlcnZhYmxlKG9ic2VydmVyID0+IHtcbiAgICAgIHRoaXMuaHR0cENsaWVudC5wb3N0KHVybCwgbnVsbCwgb3B0aW9ucykuc3Vic2NyaWJlKFxuICAgICAgICB7XG4gICAgICAgICAgbmV4dDogKHJlc3A6IGFueSkgPT4ge1xuICAgICAgICAgICAgaWYgKFV0aWwuaXNEZWZpbmVkKHJlc3ApICYmIFV0aWwuaXNEZWZpbmVkKHJlc3AuaGVhZGVycykgJiYgVXRpbC5pc0RlZmluZWQocmVzcC5oZWFkZXJzLmdldCgnWC1BdXRoLVRva2VuJykpKSB7XG4gICAgICAgICAgICAgIG9ic2VydmVyLm5leHQocmVzcC5oZWFkZXJzLmdldCgnWC1BdXRoLVRva2VuJykpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgLy8gSW52YWxpZCBzZXNzaW9uSWQgLi4uXG4gICAgICAgICAgICAgIG9ic2VydmVyLmVycm9yKCdJbnZhbGlkIHVzZXIgb3IgcGFzc3dvcmQnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgLCBlcnJvcjogKGVycm9yKSA9PiBvYnNlcnZlci5lcnJvcihlcnJvcilcbiAgICAgICAgfSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIGRhdGFPYnNlcnZhYmxlLnBpcGUoc2hhcmUoKSk7XG4gIH1cblxuICBwdWJsaWMgZW5kc2Vzc2lvbih1c2VyOiBzdHJpbmcsIHNlc3Npb25JZDogbnVtYmVyKTogT2JzZXJ2YWJsZTxudW1iZXI+IHtcbiAgICBjb25zdCB1cmwgPSB0aGlzLnVybEJhc2UgKyAnL2VuZHNlc3Npb24/dXNlcj0nICsgdXNlciArICcmc2Vzc2lvbmlkPScgKyBzZXNzaW9uSWQ7XG4gICAgY29uc3QgZGF0YU9ic2VydmFibGU6IE9ic2VydmFibGU8YW55PiA9IG5ldyBPYnNlcnZhYmxlKF9jbG9zZVNlc3Npb25PYnNlcnZlciA9PiB7XG4gICAgICB0aGlzLmh0dHBDbGllbnQuZ2V0KHVybCkuc3Vic2NyaWJlKFxuICAgICAgICB7XG4gICAgICAgICAgbmV4dDogKHJlc3ApID0+IHtcbiAgICAgICAgICAgIF9jbG9zZVNlc3Npb25PYnNlcnZlci5uZXh0KHJlc3ApO1xuICAgICAgICAgIH0sIGVycm9yOiAoZXJyb3IpID0+IHtcbiAgICAgICAgICAgIGlmIChlcnJvci5zdGF0dXMgPT09IDQwMSB8fCBlcnJvci5zdGF0dXMgPT09IDAgfHwgIWVycm9yLm9rKSB7XG4gICAgICAgICAgICAgIF9jbG9zZVNlc3Npb25PYnNlcnZlci5uZXh0KDApO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgX2Nsb3NlU2Vzc2lvbk9ic2VydmVyLmVycm9yKGVycm9yKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgfSk7XG4gICAgcmV0dXJuIGRhdGFPYnNlcnZhYmxlLnBpcGUoc2hhcmUoKSk7XG5cbiAgfVxuXG4gIHByb3RlY3RlZCBidWlsZEhlYWRlcnMoKTogSHR0cEhlYWRlcnMge1xuICAgIGxldCBoZWFkZXJzID0gc3VwZXIuYnVpbGRIZWFkZXJzKCk7XG4gICAgY29uc3Qgc2Vzc2lvbklkID0gdGhpcy5hdXRoU2VydmljZS5nZXRTZXNzaW9uSW5mbygpLmlkO1xuICAgIGlmIChVdGlsLmlzRGVmaW5lZChzZXNzaW9uSWQpKSB7XG4gICAgICBoZWFkZXJzID0gaGVhZGVycy5hcHBlbmQoJ0F1dGhvcml6YXRpb24nLCAnQmVhcmVyICcgKyBzZXNzaW9uSWQpO1xuICAgIH1cbiAgICByZXR1cm4gaGVhZGVycztcbiAgfVxuXG4gIHB1YmxpYyBoYXNzZXNzaW9uKHVzZXI6IHN0cmluZywgc2Vzc2lvbklkOiBhbnkpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICBjb25zdCBkYXRhT2JzZXJ2YWJsZTogT2JzZXJ2YWJsZTxhbnk+ID0gbmV3IE9ic2VydmFibGUob2JzZXJ2ZXIgPT4ge1xuICAgICAgb2JzZXJ2ZXIubmV4dCh0cnVlKTtcbiAgICB9KTtcbiAgICByZXR1cm4gZGF0YU9ic2VydmFibGUucGlwZShzaGFyZSgpKTtcbiAgfVxuXG4gIHB1YmxpYyBjb25maWd1cmVTZXJ2aWNlKGNvbmZpZzogYW55KTogdm9pZCB7XG4gICAgc3VwZXIuY29uZmlndXJlU2VydmljZShjb25maWcpO1xuICAgIHRoaXMuX3N0YXJ0U2Vzc2lvblBhdGggPSB0aGlzLl9hcHBDb25maWcuc3RhcnRTZXNzaW9uUGF0aCA/IHRoaXMuX2FwcENvbmZpZy5zdGFydFNlc3Npb25QYXRoIDogJy9hdXRoL2xvZ2luJztcbiAgICB0aGlzLnBhdGggPSBjb25maWcucGF0aDtcbiAgICB0aGlzLmRlbGltaXRlciA9IHRoaXMuZ2V0VmFsaWREZWxpbWl0ZXIoY29uZmlnLm11bHRpcGxlS2V5RGVsaW1pdGVyID8/IHRoaXMuZGVsaW1pdGVyKTtcbiAgfVxuXG5cbiAgcHJvdGVjdGVkIGdldFZhbGlkRGVsaW1pdGVyKGRlbGltaXRlcj86IHN0cmluZyk6IHN0cmluZyB7XG5cbiAgICBpZiAoIWRlbGltaXRlciB8fCAhL15bXy1dJC8udGVzdChkZWxpbWl0ZXIpKSB7XG4gICAgICBjb25zb2xlLndhcm4oYERlbGltaXRlciAnJHtkZWxpbWl0ZXJ9JyBpcyBub3QgdmFsaWQgZm9yIFVSTCwgZGVmYXVsdGluZyB0byAnJHt0aGlzLkRFRkFVTFRfREVMSU1JVEVSfScuYCk7XG4gICAgICByZXR1cm4gdGhpcy5ERUZBVUxUX0RFTElNSVRFUlxuICAgIH1cbiAgICByZXR1cm4gZGVsaW1pdGVyO1xuICB9XG5cbiAgcXVlcnkocXVlcnlQYXJhbXM6IEpTT05BUElRdWVyeVBhcmFtZXRlcik6IE9ic2VydmFibGU8SlNPTkFQSVJlc3BvbnNlPiB7XG4gICAgcXVlcnlQYXJhbXMgPSB0aGlzLnBhcnNlTmFtZUNvbnZlbnRpb25RdWVyeVBhcmFtcyhxdWVyeVBhcmFtcyk7XG4gICAgY29uc3QgcXVlcnlQYXJhbXNUb1N0cmluZyA9IFV0aWwub2JqZWN0VG9RdWVyeVN0cmluZyhxdWVyeVBhcmFtcyk7XG5cbiAgICBjb25zdCBxdWVyeVBhcmFtc1N0cmluZyA9IFV0aWwuaXNEZWZpbmVkKHF1ZXJ5UGFyYW1zKSA/ICc/JyArIHF1ZXJ5UGFyYW1zVG9TdHJpbmcgOiAnJztcblxuICAgIGNvbnN0IHVybCA9IGAke3RoaXMudXJsQmFzZX0ke3RoaXMucGF0aH0ke3F1ZXJ5UGFyYW1zU3RyaW5nfWA7XG5cbiAgICByZXR1cm4gdGhpcy5kb1JlcXVlc3Qoe1xuICAgICAgbWV0aG9kOiAnR0VUJyxcbiAgICAgIHVybDogdXJsLFxuICAgICAgc3VjY2Vzc0NhbGxiYWNrOiB0aGlzLnBhcnNlU3VjY2Vzc2Z1bFF1ZXJ5UmVzcG9uc2UsXG4gICAgICBlcnJvckNhbGxCYWNrOiB0aGlzLnBhcnNlVW5zdWNjZXNzZnVsUXVlcnlSZXNwb25zZVxuICAgIH0pO1xuICB9XG5cbiAgYWR2YW5jZWRRdWVyeShxdWVyeVBhcmFtczogSlNPTkFQSVF1ZXJ5UGFyYW1ldGVyKTogT2JzZXJ2YWJsZTxKU09OQVBJUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5xdWVyeShxdWVyeVBhcmFtcyk7XG4gIH1cblxuICBxdWVyeUJ5SWQocXVlcnlQYXJhbXM6IEpTT05BUElRdWVyeVBhcmFtZXRlcik6IE9ic2VydmFibGU8SlNPTkFQSVJlc3BvbnNlPiB7XG4gICAgcXVlcnlQYXJhbXMgPSB0aGlzLnBhcnNlTmFtZUNvbnZlbnRpb25RdWVyeVBhcmFtcyhxdWVyeVBhcmFtcyk7XG5cbiAgICBjb25zdCBzZXJpYWxpemVkSWQgPSB0aGlzLnNlcmlhbGl6ZUNvbXBvc2l0ZUtleShxdWVyeVBhcmFtcy5maWx0ZXIpO1xuICAgIGNvbnN0IHVybCA9IGAke3RoaXMudXJsQmFzZX0ke3RoaXMucGF0aH0vJHtzZXJpYWxpemVkSWR9YDtcblxuICAgIHJldHVybiB0aGlzLmRvUmVxdWVzdCh7XG4gICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgdXJsOiB1cmwsXG4gICAgICBzdWNjZXNzQ2FsbGJhY2s6IHRoaXMucGFyc2VTdWNjZXNzZnVsUXVlcnlSZXNwb25zZSxcbiAgICAgIGVycm9yQ2FsbEJhY2s6IHRoaXMucGFyc2VVbnN1Y2Nlc3NmdWxRdWVyeVJlc3BvbnNlLFxuICAgIH0pO1xuICB9XG5cblxuICBwcm90ZWN0ZWQgc2VyaWFsaXplQ29tcG9zaXRlS2V5KGtleU9iajogc3RyaW5nIHwgb2JqZWN0KTogc3RyaW5nIHtcbiAgICBpZiAoa2V5T2JqID09IG51bGwpIHtcbiAgICAgIGNvbnNvbGUud2FybignSlNPTkFQSSBTZXJ2aWNlOiBLZXkgb2JqZWN0IGlzIG51bGwgb3IgdW5kZWZpbmVkLicpO1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2Yga2V5T2JqID09PSAnc3RyaW5nJykge1xuICAgICAgaWYgKGtleU9iai50cmltKCkgPT09ICcnKSB7XG4gICAgICAgIGNvbnNvbGUud2FybignSlNPTkFQSSBTZXJ2aWNlOiBLZXkgc3RyaW5nIGlzIGVtcHR5LicpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGtleU9iajtcbiAgICB9XG5cbiAgICBjb25zdCB2YWx1ZXMgPSBPYmplY3QudmFsdWVzKGtleU9iaik7XG5cbiAgICBpZiAodmFsdWVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgY29uc29sZS53YXJuKCdKU09OQVBJIFNlcnZpY2U6IEtleSBvYmplY3QgaGFzIG5vIHByb3BlcnRpZXMuJyk7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCB2YWwgb2YgdmFsdWVzKSB7XG4gICAgICBpZiAodmFsID09IG51bGwpIHtcbiAgICAgICAgY29uc29sZS53YXJuKCdKU09OQVBJIFNlcnZpY2U6IEtleSBvYmplY3QgY29udGFpbnMgbnVsbCBvciB1bmRlZmluZWQgdmFsdWUuJyk7XG4gICAgICB9XG4gICAgfVxuXG5cbiAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyhrZXlPYmopLmpvaW4odGhpcy5kZWxpbWl0ZXIpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHBhcnNlTmFtZUNvbnZlbnRpb25RdWVyeVBhcmFtcyhxdWVyeVBhcmFtczogSlNPTkFQSVF1ZXJ5UGFyYW1ldGVyKTogSlNPTkFQSVF1ZXJ5UGFyYW1ldGVyIHtcbiAgICBpZiAoVXRpbC5pc0RlZmluZWQocXVlcnlQYXJhbXMuZmllbGRzKSkge1xuICAgICAgY29uc3QgZW50aXR5ID0gT2JqZWN0LmtleXMocXVlcnlQYXJhbXMuZmllbGRzKVswXTtcbiAgICAgIGNvbnN0IGZpZWxkcyA9IE9iamVjdC52YWx1ZXMocXVlcnlQYXJhbXMuZmllbGRzKVswXTtcbiAgICAgIHF1ZXJ5UGFyYW1zLmZpZWxkc1tlbnRpdHldID0gdGhpcy5uYW1lQ29udmVudGlvbi5wYXJzZUNvbHVtbnNUb05hbWVDb252ZW50aW9uRm9ySlNPTkFQSShmaWVsZHMpO1xuICAgIH1cbiAgICBpZiAoVXRpbC5pc0RlZmluZWQocXVlcnlQYXJhbXMuc29ydCkpIHtcbiAgICAgIHF1ZXJ5UGFyYW1zLnNvcnQgPSB0aGlzLm5hbWVDb252ZW50aW9uLnBhcnNlQ29sdW1uc1RvTmFtZUNvbnZlbnRpb25Gb3JKU09OQVBJKHF1ZXJ5UGFyYW1zLnNvcnQpO1xuICAgIH1cblxuICAgIGlmIChVdGlsLmlzRGVmaW5lZChxdWVyeVBhcmFtcy5maWx0ZXIpKSB7XG4gICAgICBjb25zdCBmaWx0ZXIgPSB0aGlzLm5hbWVDb252ZW50aW9uLnBhcnNlRmlsdGVyVG9OYW1lQ29udmVudGlvbihxdWVyeVBhcmFtcy5maWx0ZXIpO1xuICAgICAgcXVlcnlQYXJhbXMuZmlsdGVyID0geyAuLi5maWx0ZXIgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gcXVlcnlQYXJhbXM7XG4gIH1cblxuICBpbnNlcnQoYXR0cmlidXRlczogb2JqZWN0LCB0eXBlOiBzdHJpbmcpOiBPYnNlcnZhYmxlPEpTT05BUElSZXNwb25zZT4ge1xuICAgIGNvbnN0IHVybCA9IGAke3RoaXMudXJsQmFzZX0ke3RoaXMucGF0aH1gO1xuXG4gICAgYXR0cmlidXRlcyA9IHRoaXMubmFtZUNvbnZlbnRpb24ucGFyc2VEYXRhVG9OYW1lQ29udmVudGlvbihhdHRyaWJ1dGVzKTtcblxuICAgIGxldCBkYXRhID0geyBhdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzLCB0eXBlOiB0eXBlIH07XG4gICAgY29uc3QgYm9keSA9IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgIGRhdGE6IGRhdGFcbiAgICB9KTtcblxuICAgIHJldHVybiB0aGlzLmRvUmVxdWVzdCh7XG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIHVybDogdXJsLFxuICAgICAgYm9keTogYm9keSxcbiAgICAgIHN1Y2Nlc3NDYWxsYmFjazogdGhpcy5wYXJzZVN1Y2Nlc3NmdWxJbnNlcnRSZXNwb25zZSxcbiAgICAgIGVycm9yQ2FsbEJhY2s6IHRoaXMucGFyc2VVbnN1Y2Nlc3NmdWxJbnNlcnRSZXNwb25zZVxuICAgIH0pO1xuICB9XG5cbiAgdXBkYXRlKGlkOiBzdHJpbmcgfCBvYmplY3QsIGF0dHJpYnV0ZXM6IG9iamVjdCwgdHlwZTogc3RyaW5nKTogT2JzZXJ2YWJsZTxKU09OQVBJUmVzcG9uc2U+IHtcblxuICAgIGNvbnN0IHNlcmlhbGl6ZWRJZCA9IHRoaXMuc2VyaWFsaXplQ29tcG9zaXRlS2V5KGlkKTtcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLnVybEJhc2V9JHt0aGlzLnBhdGh9LyR7c2VyaWFsaXplZElkfWA7XG5cblxuICAgIGF0dHJpYnV0ZXMgPSB0aGlzLm5hbWVDb252ZW50aW9uLnBhcnNlRGF0YVRvTmFtZUNvbnZlbnRpb24oYXR0cmlidXRlcyk7XG5cbiAgICBsZXQgZGF0YSA9IHsgLi4ueyBhdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzIH0sIC4uLnsgaWQ6IHNlcmlhbGl6ZWRJZCB9LCAuLi57IHR5cGU6IHR5cGUgfSB9O1xuXG4gICAgY29uc3QgYm9keSA9IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgIGRhdGE6IGRhdGFcbiAgICB9KTtcblxuICAgIHJldHVybiB0aGlzLmRvUmVxdWVzdCh7XG4gICAgICBtZXRob2Q6ICdQQVRDSCcsXG4gICAgICB1cmw6IHVybCxcbiAgICAgIGJvZHk6IGJvZHksXG4gICAgICBzdWNjZXNzQ2FsbGJhY2s6IHRoaXMucGFyc2VTdWNjZXNzZnVsVXBkYXRlUmVzcG9uc2UsXG4gICAgICBlcnJvckNhbGxCYWNrOiB0aGlzLnBhcnNlVW5zdWNjZXNzZnVsVXBkYXRlUmVzcG9uc2VcbiAgICB9KTtcbiAgfVxuXG4gIGRlbGV0ZShpZDogb2JqZWN0KTogT2JzZXJ2YWJsZTxKU09OQVBJUmVzcG9uc2U+IHtcbiAgICBjb25zdCBzZXJpYWxpemVkSWQgPSB0aGlzLnNlcmlhbGl6ZUNvbXBvc2l0ZUtleShpZCk7XG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy51cmxCYXNlfSR7dGhpcy5wYXRofS8ke3NlcmlhbGl6ZWRJZH1gO1xuXG4gICAgcmV0dXJuIHRoaXMuZG9SZXF1ZXN0KHtcbiAgICAgIG1ldGhvZDogJ0RFTEVURScsXG4gICAgICB1cmw6IHVybCxcbiAgICAgIHN1Y2Nlc3NDYWxsYmFjazogdGhpcy5wYXJzZVN1Y2Nlc3NmdWxEZWxldGVSZXNwb25zZSxcbiAgICAgIGVycm9yQ2FsbEJhY2s6IHRoaXMucGFyc2VVbnN1Y2Nlc3NmdWxEZWxldGVSZXNwb25zZVxuICAgIH0pO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,12 @@
1
+ export class BaseRequestArgument {
2
+ request(method, service, queryArguments) {
3
+ return service[method](...queryArguments);
4
+ }
5
+ parseQueryParameters(args) {
6
+ return args;
7
+ }
8
+ getIdFromFilter(filter) {
9
+ return filter;
10
+ }
11
+ }
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1yZXF1ZXN0LWFyZ3VtZW50LmFkYXB0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbnRpbWl6ZS13ZWItbmd4L3NyYy9saWIvc2VydmljZXMvcmVxdWVzdC1hZGFwdGVyL2Jhc2UtcmVxdWVzdC1hcmd1bWVudC5hZGFwdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE1BQU0sT0FBTyxtQkFBbUI7SUFFOUIsT0FBTyxDQUFDLE1BQWMsRUFBRSxPQUFZLEVBQUUsY0FBbUI7UUFDdkQsT0FBUSxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxjQUFjLENBQWlDLENBQUM7SUFDN0UsQ0FBQztJQUVELG9CQUFvQixDQUFDLElBQVM7UUFDNUIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBQ0QsZUFBZSxDQUFDLE1BQVc7UUFDekIsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztDQUVGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyBTZXJ2aWNlUmVzcG9uc2UgfSBmcm9tIFwiLi4vLi4vaW50ZXJmYWNlcy9zZXJ2aWNlLXJlc3BvbnNlLmludGVyZmFjZVwiO1xuXG5leHBvcnQgY2xhc3MgQmFzZVJlcXVlc3RBcmd1bWVudCB7XG5cbiAgcmVxdWVzdChtZXRob2Q6IHN0cmluZywgc2VydmljZTogYW55LCBxdWVyeUFyZ3VtZW50czogYW55KSB7XG4gICAgcmV0dXJuIChzZXJ2aWNlW21ldGhvZF0oLi4ucXVlcnlBcmd1bWVudHMpIGFzIE9ic2VydmFibGU8U2VydmljZVJlc3BvbnNlPik7XG4gIH1cblxuICBwYXJzZVF1ZXJ5UGFyYW1ldGVycyhhcmdzOiBhbnkpIDphbnkge1xuICAgIHJldHVybiBhcmdzO1xuICB9XG4gIGdldElkRnJvbUZpbHRlcihmaWx0ZXI6IGFueSk6IGFueSB7XG4gICAgcmV0dXJuIGZpbHRlcjtcbiAgfVxuXG59XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1yZXF1ZXN0LWFyZ3VtZW50LmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9zZXJ2aWNlcy9yZXF1ZXN0LWFkYXB0ZXIvYmFzZS1yZXF1ZXN0LWFyZ3VtZW50LmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBJQmFzZVJlcXVlc3RBcmd1bWVudCB7XG4gIHBhcnNlUXVlcnlQYXJhbWV0ZXJzKHBhcmFtczogYW55KTogYW55O1xufVxuIl19
@@ -0,0 +1,5 @@
1
+ export * from './base-request-argument.adapter';
2
+ export * from './base-request-argument.interface';
3
+ export * from './jsonapi-request-arguments.adapter';
4
+ export * from './ontimize-request-arguments.adapter';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbnRpbWl6ZS13ZWItbmd4L3NyYy9saWIvc2VydmljZXMvcmVxdWVzdC1hZGFwdGVyL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsaUNBQWlDLENBQUM7QUFDaEQsY0FBYyxtQ0FBbUMsQ0FBQztBQUNsRCxjQUFjLHFDQUFxQyxDQUFDO0FBQ3BELGNBQWMsc0NBQXNDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2Jhc2UtcmVxdWVzdC1hcmd1bWVudC5hZGFwdGVyJztcbmV4cG9ydCAqIGZyb20gJy4vYmFzZS1yZXF1ZXN0LWFyZ3VtZW50LmludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL2pzb25hcGktcmVxdWVzdC1hcmd1bWVudHMuYWRhcHRlcic7XG5leHBvcnQgKiBmcm9tICcuL29udGltaXplLXJlcXVlc3QtYXJndW1lbnRzLmFkYXB0ZXInO1xuIl19