@smartbit4all/ng-client 4.2.33 → 5.0.0

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 (434) hide show
  1. package/fesm2022/smartbit4all-ng-client-src-lib-smart-chart.mjs +12 -12
  2. package/fesm2022/smartbit4all-ng-client-src-lib-smart-chart.mjs.map +1 -1
  3. package/fesm2022/smartbit4all-ng-client.mjs +559 -535
  4. package/fesm2022/smartbit4all-ng-client.mjs.map +1 -1
  5. package/lib/smart-client/smart-component-api-client.d.ts +2 -2
  6. package/lib/smart-component-layout/smart-component-layout.component.d.ts +1 -1
  7. package/lib/smart-dialog/smartdialog.module.d.ts +2 -1
  8. package/lib/smart-grid/smart-grid.component.d.ts +1 -1
  9. package/lib/smart-grid/smart-grid.module.d.ts +21 -19
  10. package/lib/smart-map/abstract-map.d.ts +1 -1
  11. package/lib/smart-ng-client.module.d.ts +4 -3
  12. package/lib/view-context/message-dialog/message-dialog.component.d.ts +4 -1
  13. package/lib/view-context/smart-view-context.module.d.ts +42 -43
  14. package/package.json +12 -13
  15. package/smartbit4all-ng-client-5.0.0.tgz +0 -0
  16. package/esm2022/lib/component-factory-service/component-factory-service.module.mjs +0 -17
  17. package/esm2022/lib/component-factory-service/component-factory-service.service.mjs +0 -35
  18. package/esm2022/lib/component-factory-service/projects.mjs +0 -6
  19. package/esm2022/lib/session/api/api/api.mjs +0 -4
  20. package/esm2022/lib/session/api/api/session.service.mjs +0 -306
  21. package/esm2022/lib/session/api/configuration.mjs +0 -91
  22. package/esm2022/lib/session/api/encoder.mjs +0 -19
  23. package/esm2022/lib/session/api/index.mjs +0 -3
  24. package/esm2022/lib/session/api/model/accountInfo.mjs +0 -13
  25. package/esm2022/lib/session/api/model/apiError.mjs +0 -13
  26. package/esm2022/lib/session/api/model/authenticationProviderData.mjs +0 -13
  27. package/esm2022/lib/session/api/model/getAuthenticationProvidersResponse.mjs +0 -2
  28. package/esm2022/lib/session/api/model/models.mjs +0 -9
  29. package/esm2022/lib/session/api/model/refreshSessionRequest.mjs +0 -13
  30. package/esm2022/lib/session/api/model/session.mjs +0 -2
  31. package/esm2022/lib/session/api/model/sessionInfoData.mjs +0 -2
  32. package/esm2022/lib/session/api/model/userActivityLog.mjs +0 -13
  33. package/esm2022/lib/session/api/param.mjs +0 -2
  34. package/esm2022/lib/session/api/variables.mjs +0 -9
  35. package/esm2022/lib/session/cookie-service/smart-cookie.service.mjs +0 -225
  36. package/esm2022/lib/session/projects.mjs +0 -10
  37. package/esm2022/lib/session/smart-error-catching.interceptor.mjs +0 -95
  38. package/esm2022/lib/session/smart-header-maintainer.interceptor.mjs +0 -46
  39. package/esm2022/lib/session/smart-session-handler.service.mjs +0 -6
  40. package/esm2022/lib/session/smart-session.module.mjs +0 -58
  41. package/esm2022/lib/session/smart-session.service.mjs +0 -230
  42. package/esm2022/lib/session/smart-timer/smart-session-timer.component.mjs +0 -35
  43. package/esm2022/lib/session/smart-timer/smart-session-timer.service.mjs +0 -58
  44. package/esm2022/lib/shared/projects.mjs +0 -4
  45. package/esm2022/lib/shared/shared.module.mjs +0 -19
  46. package/esm2022/lib/shared/smart-tooltip.directive.mjs +0 -58
  47. package/esm2022/lib/shared/smarttable.date-pipe.mjs +0 -43
  48. package/esm2022/lib/smart-client/projects.mjs +0 -5
  49. package/esm2022/lib/smart-client/smart-authentication.service.mjs +0 -21
  50. package/esm2022/lib/smart-client/smart-component-api-client.mjs +0 -786
  51. package/esm2022/lib/smart-client/smart-file-uploader/smart-file-uploader.component.mjs +0 -81
  52. package/esm2022/lib/smart-client/smart.component.mjs +0 -84
  53. package/esm2022/lib/smart-client/smart.service.mjs +0 -75
  54. package/esm2022/lib/smart-component-layout/api/api/api.mjs +0 -4
  55. package/esm2022/lib/smart-component-layout/api/api/default.service.mjs +0 -133
  56. package/esm2022/lib/smart-component-layout/api/api.module.mjs +0 -40
  57. package/esm2022/lib/smart-component-layout/api/configuration.mjs +0 -91
  58. package/esm2022/lib/smart-component-layout/api/encoder.mjs +0 -19
  59. package/esm2022/lib/smart-component-layout/api/index.mjs +0 -7
  60. package/esm2022/lib/smart-component-layout/api/model/componentType.mjs +0 -18
  61. package/esm2022/lib/smart-component-layout/api/model/componentWidgetType.mjs +0 -20
  62. package/esm2022/lib/smart-component-layout/api/model/layoutDirection.mjs +0 -17
  63. package/esm2022/lib/smart-component-layout/api/model/models.mjs +0 -6
  64. package/esm2022/lib/smart-component-layout/api/model/smartComponentLayoutDefinition.mjs +0 -2
  65. package/esm2022/lib/smart-component-layout/api/model/smartComponentWidgetDefinition.mjs +0 -2
  66. package/esm2022/lib/smart-component-layout/api/param.mjs +0 -2
  67. package/esm2022/lib/smart-component-layout/api/variables.mjs +0 -9
  68. package/esm2022/lib/smart-component-layout/projects.mjs +0 -8
  69. package/esm2022/lib/smart-component-layout/smart-component-layout-utility.mjs +0 -111
  70. package/esm2022/lib/smart-component-layout/smart-component-layout.component.mjs +0 -307
  71. package/esm2022/lib/smart-component-layout/smart-component-layout.module.mjs +0 -45
  72. package/esm2022/lib/smart-dialog/projects.mjs +0 -8
  73. package/esm2022/lib/smart-dialog/smartdialog.component.mjs +0 -54
  74. package/esm2022/lib/smart-dialog/smartdialog.model.mjs +0 -16
  75. package/esm2022/lib/smart-dialog/smartdialog.module.mjs +0 -46
  76. package/esm2022/lib/smart-dialog/smartdialog.service.mjs +0 -90
  77. package/esm2022/lib/smart-expandable-section/expandable-section.component.mjs +0 -96
  78. package/esm2022/lib/smart-expandable-section/expandable-section.model.mjs +0 -12
  79. package/esm2022/lib/smart-expandable-section/projects.mjs +0 -8
  80. package/esm2022/lib/smart-expandable-section/smart-expandable-section.module.mjs +0 -53
  81. package/esm2022/lib/smart-expandable-section/smart-expandable-section.service.mjs +0 -14
  82. package/esm2022/lib/smart-filter/api/filter/model/filterExpressionBoolOperator.mjs +0 -17
  83. package/esm2022/lib/smart-filter/api/filter/model/filterExpressionBuilderField.mjs +0 -2
  84. package/esm2022/lib/smart-filter/api/filter/model/filterExpressionBuilderGroup.mjs +0 -8
  85. package/esm2022/lib/smart-filter/api/filter/model/filterExpressionBuilderModel.mjs +0 -2
  86. package/esm2022/lib/smart-filter/api/filter/model/filterExpressionData.mjs +0 -2
  87. package/esm2022/lib/smart-filter/api/filter/model/filterExpressionDataType.mjs +0 -20
  88. package/esm2022/lib/smart-filter/api/filter/model/filterExpressionField.mjs +0 -2
  89. package/esm2022/lib/smart-filter/api/filter/model/filterExpressionFieldList.mjs +0 -2
  90. package/esm2022/lib/smart-filter/api/filter/model/filterExpressionFieldWidgetType.mjs +0 -28
  91. package/esm2022/lib/smart-filter/api/filter/model/filterExpressionList.mjs +0 -2
  92. package/esm2022/lib/smart-filter/api/filter/model/filterExpressionOperandData.mjs +0 -2
  93. package/esm2022/lib/smart-filter/api/filter/model/filterExpressionOperation.mjs +0 -32
  94. package/esm2022/lib/smart-filter/api/filter/model/filterExpressionOrderBy.mjs +0 -18
  95. package/esm2022/lib/smart-filter/api/filter/model/model.mjs +0 -16
  96. package/esm2022/lib/smart-filter/api/filter/model/searchIndexObjectDefinitionData.mjs +0 -2
  97. package/esm2022/lib/smart-filter/api/filter/model/searchIndexPropertyDefinitionData.mjs +0 -13
  98. package/esm2022/lib/smart-filter/api/value/model/value.mjs +0 -13
  99. package/esm2022/lib/smart-filter/projects.mjs +0 -9
  100. package/esm2022/lib/smart-filter/smart-filter/components/smart-filter-expression-field/smart-filter-expression-field.component.mjs +0 -14
  101. package/esm2022/lib/smart-filter/smart-filter/components/smart-filter-simple/components/smart-filter-simple-field/smart-filter-simple-field.component.mjs +0 -165
  102. package/esm2022/lib/smart-filter/smart-filter/components/smart-filter-simple/smart-filter-simple.component.mjs +0 -45
  103. package/esm2022/lib/smart-filter/smart-filter/smart-filter.component.mjs +0 -36
  104. package/esm2022/lib/smart-filter/smart-filter/smart-filter.service.mjs +0 -31
  105. package/esm2022/lib/smart-filter/smart-filter.model.mjs +0 -13
  106. package/esm2022/lib/smart-filter/smart-filter.module.mjs +0 -33
  107. package/esm2022/lib/smart-filter-editor/api/api/filter.service.mjs +0 -198
  108. package/esm2022/lib/smart-filter-editor/api/configuration.mjs +0 -91
  109. package/esm2022/lib/smart-filter-editor/api/encoder.mjs +0 -19
  110. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionBoolOperator.mjs +0 -17
  111. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionBuilderApiConfig.mjs +0 -13
  112. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionBuilderField.mjs +0 -2
  113. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionBuilderGroup.mjs +0 -8
  114. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionBuilderModel.mjs +0 -2
  115. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionBuilderUiModel.mjs +0 -7
  116. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionData.mjs +0 -2
  117. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionDataType.mjs +0 -20
  118. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionField.mjs +0 -2
  119. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionFieldEditor.mjs +0 -2
  120. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionFieldList.mjs +0 -2
  121. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionFieldWidgetType.mjs +0 -28
  122. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionList.mjs +0 -2
  123. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionOperandData.mjs +0 -2
  124. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionOperation.mjs +0 -32
  125. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionOrderBy.mjs +0 -19
  126. package/esm2022/lib/smart-filter-editor/api/model/smartFilterType.mjs +0 -17
  127. package/esm2022/lib/smart-filter-editor/api/param.mjs +0 -2
  128. package/esm2022/lib/smart-filter-editor/api/variables.mjs +0 -9
  129. package/esm2022/lib/smart-filter-editor/filterExpressionBuilderApiActions.mjs +0 -15
  130. package/esm2022/lib/smart-filter-editor/project.mjs +0 -8
  131. package/esm2022/lib/smart-filter-editor/smart-filter-editor-content/components/smart-filter-expression-item/smart-filter-expression-item.component.mjs +0 -73
  132. package/esm2022/lib/smart-filter-editor/smart-filter-editor-content/components/smart-filter-expression-items/smart-filter-expression-items.component.mjs +0 -40
  133. package/esm2022/lib/smart-filter-editor/smart-filter-editor-content/smart-filter-editor-content.component.mjs +0 -273
  134. package/esm2022/lib/smart-filter-editor/smart-filter-editor.model.mjs +0 -2
  135. package/esm2022/lib/smart-filter-editor/smart-filter-editor.module.mjs +0 -69
  136. package/esm2022/lib/smart-filter-editor/smart-filter-editor.service.mjs +0 -47
  137. package/esm2022/lib/smart-filter-editor/smart-filter-params/components/smart-filter-param/smart-filter-param.component.mjs +0 -24
  138. package/esm2022/lib/smart-filter-editor/smart-filter-params/smart-filter-params.component.mjs +0 -57
  139. package/esm2022/lib/smart-form/api/api/api.mjs +0 -4
  140. package/esm2022/lib/smart-form/api/api/default.service.mjs +0 -133
  141. package/esm2022/lib/smart-form/api/api.module.mjs +0 -40
  142. package/esm2022/lib/smart-form/api/configuration.mjs +0 -91
  143. package/esm2022/lib/smart-form/api/encoder.mjs +0 -19
  144. package/esm2022/lib/smart-form/api/index.mjs +0 -7
  145. package/esm2022/lib/smart-form/api/model/models.mjs +0 -12
  146. package/esm2022/lib/smart-form/api/model/propertyMapping.mjs +0 -13
  147. package/esm2022/lib/smart-form/api/model/selectionDefinition.mjs +0 -7
  148. package/esm2022/lib/smart-form/api/model/smartFormInputMode.mjs +0 -22
  149. package/esm2022/lib/smart-form/api/model/smartFormWidgetDirection.mjs +0 -17
  150. package/esm2022/lib/smart-form/api/model/smartFormWidgetType.mjs +0 -46
  151. package/esm2022/lib/smart-form/api/model/smartLayoutDefinition.mjs +0 -2
  152. package/esm2022/lib/smart-form/api/model/smartMatrixModel.mjs +0 -2
  153. package/esm2022/lib/smart-form/api/model/smartWidgetDefinition.mjs +0 -2
  154. package/esm2022/lib/smart-form/api/model/smartWidgetHint.mjs +0 -18
  155. package/esm2022/lib/smart-form/api/model/sortDefinition.mjs +0 -13
  156. package/esm2022/lib/smart-form/api/model/valueChangeMode.mjs +0 -20
  157. package/esm2022/lib/smart-form/api/param.mjs +0 -2
  158. package/esm2022/lib/smart-form/api/variables.mjs +0 -9
  159. package/esm2022/lib/smart-form/highlightMacthingString-pipe.mjs +0 -20
  160. package/esm2022/lib/smart-form/projects.mjs +0 -15
  161. package/esm2022/lib/smart-form/services/smartform.layout-definition.service.mjs +0 -613
  162. package/esm2022/lib/smart-form/services/smartform.service.mjs +0 -673
  163. package/esm2022/lib/smart-form/smartfileuploader/large-file-snack-bar/large-file-snack-bar.component.mjs +0 -15
  164. package/esm2022/lib/smart-form/smartfileuploader/smartfileuploader.component.mjs +0 -78
  165. package/esm2022/lib/smart-form/smartfileuploader/smartfileuploader.model.mjs +0 -2
  166. package/esm2022/lib/smart-form/smartform.component.mjs +0 -185
  167. package/esm2022/lib/smart-form/smartform.form-model.mjs +0 -2
  168. package/esm2022/lib/smart-form/smartform.model.mjs +0 -38
  169. package/esm2022/lib/smart-form/widgets/components/smart-month-picker/smart-month-picker.component.mjs +0 -84
  170. package/esm2022/lib/smart-form/widgets/directives/comparable-dropdown.directive.mjs +0 -36
  171. package/esm2022/lib/smart-form/widgets/directives/comparable-multiselect.directive.mjs +0 -79
  172. package/esm2022/lib/smart-form/widgets/smartformwidget/smartformwidget.component.mjs +0 -874
  173. package/esm2022/lib/smart-form/widgets/smartformwidget/sortable-widget/sortable-widget.component.mjs +0 -78
  174. package/esm2022/lib/smart-form/widgets/smartformwidget/trackCaps.directive.mjs +0 -31
  175. package/esm2022/lib/smart-grid/api/grid-api/api/api.mjs +0 -4
  176. package/esm2022/lib/smart-grid/api/grid-api/api/grid.service.mjs +0 -451
  177. package/esm2022/lib/smart-grid/api/grid-api/api.module.mjs +0 -40
  178. package/esm2022/lib/smart-grid/api/grid-api/configuration.mjs +0 -91
  179. package/esm2022/lib/smart-grid/api/grid-api/encoder.mjs +0 -19
  180. package/esm2022/lib/smart-grid/api/grid-api/index.mjs +0 -7
  181. package/esm2022/lib/smart-grid/api/grid-api/model/gridColumnContentType.mjs +0 -17
  182. package/esm2022/lib/smart-grid/api/grid-api/model/gridColumnMeta.mjs +0 -2
  183. package/esm2022/lib/smart-grid/api/grid-api/model/gridDataAccessConfig.mjs +0 -20
  184. package/esm2022/lib/smart-grid/api/grid-api/model/gridModel.mjs +0 -2
  185. package/esm2022/lib/smart-grid/api/grid-api/model/gridPage.mjs +0 -2
  186. package/esm2022/lib/smart-grid/api/grid-api/model/gridRow.mjs +0 -2
  187. package/esm2022/lib/smart-grid/api/grid-api/model/gridSelectionChange.mjs +0 -13
  188. package/esm2022/lib/smart-grid/api/grid-api/model/gridSelectionMode.mjs +0 -18
  189. package/esm2022/lib/smart-grid/api/grid-api/model/gridSelectionType.mjs +0 -17
  190. package/esm2022/lib/smart-grid/api/grid-api/model/gridServerModel.mjs +0 -2
  191. package/esm2022/lib/smart-grid/api/grid-api/model/gridUpdateData.mjs +0 -2
  192. package/esm2022/lib/smart-grid/api/grid-api/model/gridView.mjs +0 -2
  193. package/esm2022/lib/smart-grid/api/grid-api/model/gridViewDescriptor.mjs +0 -8
  194. package/esm2022/lib/smart-grid/api/grid-api/model/models.mjs +0 -14
  195. package/esm2022/lib/smart-grid/api/grid-api/param.mjs +0 -2
  196. package/esm2022/lib/smart-grid/api/grid-api/variables.mjs +0 -9
  197. package/esm2022/lib/smart-grid/components/expandable-grid/expandable-grid.component.mjs +0 -20
  198. package/esm2022/lib/smart-grid/components/smart-grid-card/smart-grid-card.component.mjs +0 -66
  199. package/esm2022/lib/smart-grid/components/table-layout-definer/table-layout-definer.component.mjs +0 -182
  200. package/esm2022/lib/smart-grid/models/model.mjs +0 -29
  201. package/esm2022/lib/smart-grid/projects.mjs +0 -9
  202. package/esm2022/lib/smart-grid/smart-grid.component.mjs +0 -934
  203. package/esm2022/lib/smart-grid/smart-grid.module.mjs +0 -100
  204. package/esm2022/lib/smart-grid/smart-grid.service.mjs +0 -80
  205. package/esm2022/lib/smart-icon/projects.mjs +0 -7
  206. package/esm2022/lib/smart-icon/smart-icon/smart-icon.component.mjs +0 -53
  207. package/esm2022/lib/smart-icon/smart-icon.module.mjs +0 -22
  208. package/esm2022/lib/smart-icon/smart-icon.service.mjs +0 -74
  209. package/esm2022/lib/smart-map/abstract-map.mjs +0 -112
  210. package/esm2022/lib/smart-map/api/api/api.mjs +0 -4
  211. package/esm2022/lib/smart-map/api/api/geoMap.service.mjs +0 -312
  212. package/esm2022/lib/smart-map/api/api.module.mjs +0 -40
  213. package/esm2022/lib/smart-map/api/configuration.mjs +0 -91
  214. package/esm2022/lib/smart-map/api/encoder.mjs +0 -19
  215. package/esm2022/lib/smart-map/api/index.mjs +0 -7
  216. package/esm2022/lib/smart-map/api/model/gPSPosition.mjs +0 -13
  217. package/esm2022/lib/smart-map/api/model/gPSRoute.mjs +0 -2
  218. package/esm2022/lib/smart-map/api/model/geoMapChange.mjs +0 -2
  219. package/esm2022/lib/smart-map/api/model/geoMapDataLoadingMode.mjs +0 -17
  220. package/esm2022/lib/smart-map/api/model/geoMapDataSourceDescriptor.mjs +0 -2
  221. package/esm2022/lib/smart-map/api/model/geoMapDataSourceType.mjs +0 -19
  222. package/esm2022/lib/smart-map/api/model/geoMapEditingSession.mjs +0 -2
  223. package/esm2022/lib/smart-map/api/model/geoMapInteraction.mjs +0 -2
  224. package/esm2022/lib/smart-map/api/model/geoMapItem.mjs +0 -2
  225. package/esm2022/lib/smart-map/api/model/geoMapItemKind.mjs +0 -18
  226. package/esm2022/lib/smart-map/api/model/geoMapLayer.mjs +0 -2
  227. package/esm2022/lib/smart-map/api/model/geoMapLayerChange.mjs +0 -2
  228. package/esm2022/lib/smart-map/api/model/geoMapLayerDescriptor.mjs +0 -2
  229. package/esm2022/lib/smart-map/api/model/geoMapModel.mjs +0 -2
  230. package/esm2022/lib/smart-map/api/model/geoMapOperationMode.mjs +0 -17
  231. package/esm2022/lib/smart-map/api/model/geoMapSelectionMode.mjs +0 -18
  232. package/esm2022/lib/smart-map/api/model/geoMapServerModel.mjs +0 -2
  233. package/esm2022/lib/smart-map/api/model/geoMapTextType.mjs +0 -17
  234. package/esm2022/lib/smart-map/api/model/geoMapViewState.mjs +0 -2
  235. package/esm2022/lib/smart-map/api/model/geoMapViewport.mjs +0 -2
  236. package/esm2022/lib/smart-map/api/model/models.mjs +0 -21
  237. package/esm2022/lib/smart-map/api/param.mjs +0 -2
  238. package/esm2022/lib/smart-map/api/variables.mjs +0 -9
  239. package/esm2022/lib/smart-map/api-default/api-default.mjs +0 -2
  240. package/esm2022/lib/smart-map/impl/google-map.mjs +0 -221
  241. package/esm2022/lib/smart-map/impl/leaflet-map.mjs +0 -264
  242. package/esm2022/lib/smart-map/projects.mjs +0 -9
  243. package/esm2022/lib/smart-map/smart-map.component.mjs +0 -218
  244. package/esm2022/lib/smart-map/smart-map.module.mjs +0 -22
  245. package/esm2022/lib/smart-map/smart-map.types.mjs +0 -2
  246. package/esm2022/lib/smart-navbar/projects.mjs +0 -8
  247. package/esm2022/lib/smart-navbar/smart-navbar.component.mjs +0 -61
  248. package/esm2022/lib/smart-navbar/smart-navbar.model.mjs +0 -6
  249. package/esm2022/lib/smart-navbar/smart-navbar.module.mjs +0 -63
  250. package/esm2022/lib/smart-navbar/smart-navbar.service.mjs +0 -14
  251. package/esm2022/lib/smart-navigation/projects.mjs +0 -6
  252. package/esm2022/lib/smart-navigation/smart-navigation.interface.mjs +0 -2
  253. package/esm2022/lib/smart-navigation/smart-navigation.module.mjs +0 -18
  254. package/esm2022/lib/smart-navigation/smart-navigation.service.mjs +0 -56
  255. package/esm2022/lib/smart-ng-client.module.mjs +0 -130
  256. package/esm2022/lib/smart-ng-client.service.mjs +0 -19
  257. package/esm2022/lib/smart-subject/projects.mjs +0 -5
  258. package/esm2022/lib/smart-subject/smart-subject.mjs +0 -21
  259. package/esm2022/lib/smart-tab-group/projects.mjs +0 -9
  260. package/esm2022/lib/smart-tab-group/smart-tab-group.component.mjs +0 -43
  261. package/esm2022/lib/smart-tab-group/smart-tab-group.module.mjs +0 -25
  262. package/esm2022/lib/smart-tab-group/smart-tab-group.service.mjs +0 -14
  263. package/esm2022/lib/smart-tab-group/tab-content/tab-content.component.mjs +0 -31
  264. package/esm2022/lib/smart-tab-group/tab-group-simplified/tab-group.component.mjs +0 -66
  265. package/esm2022/lib/smart-tab-group/tabTile.model.mjs +0 -2
  266. package/esm2022/lib/smart-table/components/default-actions-popup/default-actions-popup.component.mjs +0 -43
  267. package/esm2022/lib/smart-table/components/loading/loading.component.mjs +0 -15
  268. package/esm2022/lib/smart-table/directives/mat-context-menu-trigger-for.directive.mjs +0 -52
  269. package/esm2022/lib/smart-table/projects.mjs +0 -8
  270. package/esm2022/lib/smart-table/smarttable.component.mjs +0 -98
  271. package/esm2022/lib/smart-table/smarttable.model.mjs +0 -169
  272. package/esm2022/lib/smart-table/smarttable.module.mjs +0 -105
  273. package/esm2022/lib/smart-table/smarttable.service.mjs +0 -14
  274. package/esm2022/lib/smart-table/tables/material-table/material-table.component.mjs +0 -39
  275. package/esm2022/lib/smart-table/tables/mobile-table/mobile-table.component.mjs +0 -23
  276. package/esm2022/lib/smart-table/tables/table.mjs +0 -520
  277. package/esm2022/lib/smart-tree/projects.mjs +0 -9
  278. package/esm2022/lib/smart-tree/smarttree-generic.service.mjs +0 -288
  279. package/esm2022/lib/smart-tree/smarttree.component.mjs +0 -181
  280. package/esm2022/lib/smart-tree/smarttree.model.mjs +0 -7
  281. package/esm2022/lib/smart-tree/smarttree.module.mjs +0 -60
  282. package/esm2022/lib/smart-tree/smarttree.node.model.mjs +0 -6
  283. package/esm2022/lib/smart-tree/smarttree.service.interface.mjs +0 -2
  284. package/esm2022/lib/smart-tree/smarttree.service.mjs +0 -47
  285. package/esm2022/lib/smart-tree/tree-api/api/tree.service.mjs +0 -1190
  286. package/esm2022/lib/smart-tree/tree-api/configuration.mjs +0 -91
  287. package/esm2022/lib/smart-tree/tree-api/encoder.mjs +0 -19
  288. package/esm2022/lib/smart-tree/tree-api/param.mjs +0 -2
  289. package/esm2022/lib/smart-tree/tree-api/variables.mjs +0 -9
  290. package/esm2022/lib/smart-validation/named-validator.service.mjs +0 -115
  291. package/esm2022/lib/smart-validation/projects.mjs +0 -4
  292. package/esm2022/lib/smart-validation/smart-validation.module.mjs +0 -24
  293. package/esm2022/lib/smart-validation/smart-validation.types.mjs +0 -4
  294. package/esm2022/lib/view-context/api/api/api.mjs +0 -4
  295. package/esm2022/lib/view-context/api/api/view.service.mjs +0 -903
  296. package/esm2022/lib/view-context/api/api.module.mjs +0 -40
  297. package/esm2022/lib/view-context/api/configuration.mjs +0 -91
  298. package/esm2022/lib/view-context/api/encoder.mjs +0 -19
  299. package/esm2022/lib/view-context/api/index.mjs +0 -7
  300. package/esm2022/lib/view-context/api/model/clipboardData.mjs +0 -13
  301. package/esm2022/lib/view-context/api/model/closeResult.mjs +0 -18
  302. package/esm2022/lib/view-context/api/model/componentConstraint.mjs +0 -2
  303. package/esm2022/lib/view-context/api/model/componentModel.mjs +0 -2
  304. package/esm2022/lib/view-context/api/model/componentModelChange.mjs +0 -13
  305. package/esm2022/lib/view-context/api/model/dataChange.mjs +0 -2
  306. package/esm2022/lib/view-context/api/model/dataChangeEvent.mjs +0 -2
  307. package/esm2022/lib/view-context/api/model/dataChangeKind.mjs +0 -21
  308. package/esm2022/lib/view-context/api/model/deviceInfo.mjs +0 -13
  309. package/esm2022/lib/view-context/api/model/downloadedFile.mjs +0 -13
  310. package/esm2022/lib/view-context/api/model/iconPosition.mjs +0 -20
  311. package/esm2022/lib/view-context/api/model/imageResource.mjs +0 -8
  312. package/esm2022/lib/view-context/api/model/link.mjs +0 -20
  313. package/esm2022/lib/view-context/api/model/messageData.mjs +0 -2
  314. package/esm2022/lib/view-context/api/model/messageOption.mjs +0 -2
  315. package/esm2022/lib/view-context/api/model/messageOptionType.mjs +0 -18
  316. package/esm2022/lib/view-context/api/model/messageResult.mjs +0 -2
  317. package/esm2022/lib/view-context/api/model/messageTextType.mjs +0 -17
  318. package/esm2022/lib/view-context/api/model/messageType.mjs +0 -19
  319. package/esm2022/lib/view-context/api/model/models.mjs +0 -54
  320. package/esm2022/lib/view-context/api/model/namedValidator.mjs +0 -19
  321. package/esm2022/lib/view-context/api/model/openPendingData.mjs +0 -2
  322. package/esm2022/lib/view-context/api/model/serverRequestExecutionStat.mjs +0 -2
  323. package/esm2022/lib/view-context/api/model/serverRequestTrack.mjs +0 -2
  324. package/esm2022/lib/view-context/api/model/serverRequestType.mjs +0 -24
  325. package/esm2022/lib/view-context/api/model/smartLinkData.mjs +0 -2
  326. package/esm2022/lib/view-context/api/model/statisticRecord.mjs +0 -13
  327. package/esm2022/lib/view-context/api/model/style.mjs +0 -13
  328. package/esm2022/lib/view-context/api/model/uiAction.mjs +0 -2
  329. package/esm2022/lib/view-context/api/model/uiActionButtonDescriptor.mjs +0 -2
  330. package/esm2022/lib/view-context/api/model/uiActionButtonType.mjs +0 -27
  331. package/esm2022/lib/view-context/api/model/uiActionConstraint.mjs +0 -13
  332. package/esm2022/lib/view-context/api/model/uiActionDescriptor.mjs +0 -2
  333. package/esm2022/lib/view-context/api/model/uiActionDialogDescriptor.mjs +0 -2
  334. package/esm2022/lib/view-context/api/model/uiActionFeedbackType.mjs +0 -20
  335. package/esm2022/lib/view-context/api/model/uiActionInputType.mjs +0 -21
  336. package/esm2022/lib/view-context/api/model/uiActionRequest.mjs +0 -13
  337. package/esm2022/lib/view-context/api/model/uiActionTooltip.mjs +0 -22
  338. package/esm2022/lib/view-context/api/model/uiActionUploadDescriptor.mjs +0 -13
  339. package/esm2022/lib/view-context/api/model/uploadedFile.mjs +0 -13
  340. package/esm2022/lib/view-context/api/model/valueSet.mjs +0 -2
  341. package/esm2022/lib/view-context/api/model/view.mjs +0 -2
  342. package/esm2022/lib/view-context/api/model/viewApiError.mjs +0 -13
  343. package/esm2022/lib/view-context/api/model/viewConstraint.mjs +0 -2
  344. package/esm2022/lib/view-context/api/model/viewContext.mjs +0 -2
  345. package/esm2022/lib/view-context/api/model/viewContextChange.mjs +0 -2
  346. package/esm2022/lib/view-context/api/model/viewContextData.mjs +0 -2
  347. package/esm2022/lib/view-context/api/model/viewContextUpdate.mjs +0 -2
  348. package/esm2022/lib/view-context/api/model/viewData.mjs +0 -2
  349. package/esm2022/lib/view-context/api/model/viewEventHandler.mjs +0 -18
  350. package/esm2022/lib/view-context/api/model/viewPlaceholder.mjs +0 -13
  351. package/esm2022/lib/view-context/api/model/viewState.mjs +0 -22
  352. package/esm2022/lib/view-context/api/model/viewStateUpdate.mjs +0 -2
  353. package/esm2022/lib/view-context/api/model/viewType.mjs +0 -18
  354. package/esm2022/lib/view-context/api/param.mjs +0 -2
  355. package/esm2022/lib/view-context/api/variables.mjs +0 -9
  356. package/esm2022/lib/view-context/invalid-fields-snack-bar/invalid-fields-snack-bar.component.mjs +0 -20
  357. package/esm2022/lib/view-context/message-dialog/message-dialog.component.mjs +0 -66
  358. package/esm2022/lib/view-context/projects.mjs +0 -19
  359. package/esm2022/lib/view-context/property-definition-data.mjs +0 -2
  360. package/esm2022/lib/view-context/smart-ui-action/components/success-snack-bar/success-snack-bar.component.mjs +0 -30
  361. package/esm2022/lib/view-context/smart-ui-action/dialogs/ui-action-confirm-dialog/ui-action-confirm-dialog.component.mjs +0 -63
  362. package/esm2022/lib/view-context/smart-ui-action/dialogs/ui-action-confirm-dialog/ui-action-confirm-dialog.service.mjs +0 -55
  363. package/esm2022/lib/view-context/smart-ui-action/dialogs/ui-action-dialog-button/ui-action-dialog-button.component.mjs +0 -60
  364. package/esm2022/lib/view-context/smart-ui-action/dialogs/ui-action-file-upload-dialog/ui-action-file-upload-dialog.component.mjs +0 -97
  365. package/esm2022/lib/view-context/smart-ui-action/dialogs/ui-action-file-upload-dialog/ui-action-file-upload-dialog.service.mjs +0 -60
  366. package/esm2022/lib/view-context/smart-ui-action/dialogs/ui-action-input-dialog/ui-action-input-dialog.component.mjs +0 -132
  367. package/esm2022/lib/view-context/smart-ui-action/dialogs/ui-action-input-dialog/ui-action-input-dialog.service.mjs +0 -59
  368. package/esm2022/lib/view-context/smart-ui-action/ui-action-toolbar.component.mjs +0 -192
  369. package/esm2022/lib/view-context/smart-ui-action/ui-action.descriptor.service.mjs +0 -183
  370. package/esm2022/lib/view-context/smart-ui-action/ui-action.model.mjs +0 -7
  371. package/esm2022/lib/view-context/smart-ui-action/ui-action.service.mjs +0 -211
  372. package/esm2022/lib/view-context/smart-view-context-dialog.service.mjs +0 -83
  373. package/esm2022/lib/view-context/smart-view-context-error-dialog/smart-view-context-error-dialog.component.mjs +0 -29
  374. package/esm2022/lib/view-context/smart-view-context-error-dialog/smart-view-context-error-dialog.service.mjs +0 -75
  375. package/esm2022/lib/view-context/smart-view-context.interceptor.mjs +0 -39
  376. package/esm2022/lib/view-context/smart-view-context.model.mjs +0 -2
  377. package/esm2022/lib/view-context/smart-view-context.module.mjs +0 -327
  378. package/esm2022/lib/view-context/smart-view-context.service.mjs +0 -696
  379. package/esm2022/lib/view-context/smart-view-redirect/smart-view-redirect.mjs +0 -33
  380. package/esm2022/lib/view-context/utility/componentLibrary.mjs +0 -9
  381. package/esm2022/lib/view-context/utility/smart-object-utility.mjs +0 -44
  382. package/esm2022/lib/view-context/utility/smart-style-utility.mjs +0 -68
  383. package/esm2022/lib/view-context/value-api/api/api.mjs +0 -4
  384. package/esm2022/lib/view-context/value-api/api/value.service.mjs +0 -138
  385. package/esm2022/lib/view-context/value-api/api.module.mjs +0 -40
  386. package/esm2022/lib/view-context/value-api/configuration.mjs +0 -91
  387. package/esm2022/lib/view-context/value-api/encoder.mjs +0 -19
  388. package/esm2022/lib/view-context/value-api/index.mjs +0 -7
  389. package/esm2022/lib/view-context/value-api/model/genericValue.mjs +0 -13
  390. package/esm2022/lib/view-context/value-api/model/models.mjs +0 -11
  391. package/esm2022/lib/view-context/value-api/model/value.mjs +0 -13
  392. package/esm2022/lib/view-context/value-api/model/valueSetData.mjs +0 -2
  393. package/esm2022/lib/view-context/value-api/model/valueSetDefinition.mjs +0 -2
  394. package/esm2022/lib/view-context/value-api/model/valueSetDefinitionData.mjs +0 -2
  395. package/esm2022/lib/view-context/value-api/model/valueSetDefinitionIdentifier.mjs +0 -13
  396. package/esm2022/lib/view-context/value-api/model/valueSetDefinitionKind.mjs +0 -24
  397. package/esm2022/lib/view-context/value-api/model/valueSetExpression.mjs +0 -2
  398. package/esm2022/lib/view-context/value-api/model/valueSetOperand.mjs +0 -2
  399. package/esm2022/lib/view-context/value-api/model/valueSetOperation.mjs +0 -19
  400. package/esm2022/lib/view-context/value-api/param.mjs +0 -2
  401. package/esm2022/lib/view-context/value-api/variables.mjs +0 -9
  402. package/esm2022/projects.mjs +0 -28
  403. package/esm2022/smartbit4all-ng-client.mjs +0 -5
  404. package/esm2022/src/lib/smart-chart/smart-chart/api/model/chartData.mjs +0 -2
  405. package/esm2022/src/lib/smart-chart/smart-chart/api/model/chartDescriptor.mjs +0 -2
  406. package/esm2022/src/lib/smart-chart/smart-chart/api/model/chartOrientation.mjs +0 -16
  407. package/esm2022/src/lib/smart-chart/smart-chart/api/model/chartType.mjs +0 -21
  408. package/esm2022/src/lib/smart-chart/smart-chart/api/model/chartValue.mjs +0 -13
  409. package/esm2022/src/lib/smart-chart/smart-chart/api/model/models.mjs +0 -7
  410. package/esm2022/src/lib/smart-chart/smart-chart/api/model/pieChartLegendPosition.mjs +0 -16
  411. package/esm2022/src/lib/smart-chart/smart-chart/default-chart-options.provider.mjs +0 -233
  412. package/esm2022/src/lib/smart-chart/smart-chart/smart-chart.component.mjs +0 -285
  413. package/esm2022/src/lib/smart-chart/smart-chart/smart-chart.module.mjs +0 -39
  414. package/esm2022/src/lib/smart-chart/smart-chart/smart-chart2/api/api/api.mjs +0 -2
  415. package/esm2022/src/lib/smart-chart/smart-chart/smart-chart2/api/api.module.mjs +0 -40
  416. package/esm2022/src/lib/smart-chart/smart-chart/smart-chart2/api/configuration.mjs +0 -91
  417. package/esm2022/src/lib/smart-chart/smart-chart/smart-chart2/api/index.mjs +0 -7
  418. package/esm2022/src/lib/smart-chart/smart-chart/smart-chart2/api/model/diagramColor.mjs +0 -13
  419. package/esm2022/src/lib/smart-chart/smart-chart/smart-chart2/api/model/diagramDataContainer.mjs +0 -2
  420. package/esm2022/src/lib/smart-chart/smart-chart/smart-chart2/api/model/diagramDataItem.mjs +0 -13
  421. package/esm2022/src/lib/smart-chart/smart-chart/smart-chart2/api/model/diagramDataSet.mjs +0 -2
  422. package/esm2022/src/lib/smart-chart/smart-chart/smart-chart2/api/model/diagramDataSetConstructionInstruction.mjs +0 -13
  423. package/esm2022/src/lib/smart-chart/smart-chart/smart-chart2/api/model/diagramDescriptor.mjs +0 -2
  424. package/esm2022/src/lib/smart-chart/smart-chart/smart-chart2/api/model/diagramShape.mjs +0 -2
  425. package/esm2022/src/lib/smart-chart/smart-chart/smart-chart2/api/model/diagramUiModel.mjs +0 -2
  426. package/esm2022/src/lib/smart-chart/smart-chart/smart-chart2/api/model/drawTime.mjs +0 -18
  427. package/esm2022/src/lib/smart-chart/smart-chart/smart-chart2/api/model/labelText.mjs +0 -2
  428. package/esm2022/src/lib/smart-chart/smart-chart/smart-chart2/api/model/models.mjs +0 -11
  429. package/esm2022/src/lib/smart-chart/smart-chart/smart-chart2/api/param.mjs +0 -2
  430. package/esm2022/src/lib/smart-chart/smart-chart/smart-chart2/api/variables.mjs +0 -9
  431. package/esm2022/src/lib/smart-chart/smart-chart-projects.mjs +0 -9
  432. package/esm2022/src/lib/smart-chart/smartbit4all-ng-client-src-lib-smart-chart.mjs +0 -5
  433. package/esm2022/src/lib/smart-chart/view-context/utility/componentLibrary.mjs +0 -9
  434. package/smartbit4all-ng-client-4.2.33.tgz +0 -0
@@ -1,451 +0,0 @@
1
- /**
2
- * Grid api
3
- * The grid api is resposible for the grid components that shows a list of item.
4
- *
5
- * The version of the OpenAPI document: 1.0.0
6
- * Contact: info@it4all.hu
7
- *
8
- * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
9
- * https://openapi-generator.tech
10
- * Do not edit the class manually.
11
- */
12
- /* tslint:disable:no-unused-variable member-ordering */
13
- import { Inject, Injectable, Optional } from '@angular/core';
14
- import { HttpHeaders, HttpContext } from '@angular/common/http';
15
- import { CustomHttpParameterCodec } from '../encoder';
16
- // @ts-ignore
17
- import { BASE_PATH } from '../variables';
18
- import { Configuration } from '../configuration';
19
- import * as i0 from "@angular/core";
20
- import * as i1 from "@angular/common/http";
21
- import * as i2 from "../configuration";
22
- export class GridService {
23
- constructor(httpClient, basePath, configuration) {
24
- this.httpClient = httpClient;
25
- this.basePath = 'http://localhost';
26
- this.defaultHeaders = new HttpHeaders();
27
- this.configuration = new Configuration();
28
- if (configuration) {
29
- this.configuration = configuration;
30
- }
31
- if (typeof this.configuration.basePath !== 'string') {
32
- if (Array.isArray(basePath) && basePath.length > 0) {
33
- basePath = basePath[0];
34
- }
35
- if (typeof basePath !== 'string') {
36
- basePath = this.basePath;
37
- }
38
- this.configuration.basePath = basePath;
39
- }
40
- this.encoder = this.configuration.encoder || new CustomHttpParameterCodec();
41
- }
42
- // @ts-ignore
43
- addToHttpParams(httpParams, value, key) {
44
- if (typeof value === "object" && value instanceof Date === false) {
45
- httpParams = this.addToHttpParamsRecursive(httpParams, value);
46
- }
47
- else {
48
- httpParams = this.addToHttpParamsRecursive(httpParams, value, key);
49
- }
50
- return httpParams;
51
- }
52
- addToHttpParamsRecursive(httpParams, value, key) {
53
- if (value == null) {
54
- return httpParams;
55
- }
56
- if (typeof value === "object") {
57
- if (Array.isArray(value)) {
58
- value.forEach(elem => httpParams = this.addToHttpParamsRecursive(httpParams, elem, key));
59
- }
60
- else if (value instanceof Date) {
61
- if (key != null) {
62
- httpParams = httpParams.append(key, value.toISOString().substr(0, 10));
63
- }
64
- else {
65
- throw Error("key may not be null if value is Date");
66
- }
67
- }
68
- else {
69
- Object.keys(value).forEach(k => httpParams = this.addToHttpParamsRecursive(httpParams, value[k], key != null ? `${key}.${k}` : k));
70
- }
71
- }
72
- else if (key != null) {
73
- httpParams = httpParams.append(key, value);
74
- }
75
- else {
76
- throw Error("key may not be null if value is not object or array");
77
- }
78
- return httpParams;
79
- }
80
- expand(uuid, gridId, rowId, observe = 'body', reportProgress = false, options) {
81
- if (uuid === null || uuid === undefined) {
82
- throw new Error('Required parameter uuid was null or undefined when calling expand.');
83
- }
84
- if (gridId === null || gridId === undefined) {
85
- throw new Error('Required parameter gridId was null or undefined when calling expand.');
86
- }
87
- if (rowId === null || rowId === undefined) {
88
- throw new Error('Required parameter rowId was null or undefined when calling expand.');
89
- }
90
- let localVarHeaders = this.defaultHeaders;
91
- let localVarHttpHeaderAcceptSelected = options && options.httpHeaderAccept;
92
- if (localVarHttpHeaderAcceptSelected === undefined) {
93
- // to determine the Accept header
94
- const httpHeaderAccepts = [
95
- 'application/json'
96
- ];
97
- localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);
98
- }
99
- if (localVarHttpHeaderAcceptSelected !== undefined) {
100
- localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);
101
- }
102
- let localVarHttpContext = options && options.context;
103
- if (localVarHttpContext === undefined) {
104
- localVarHttpContext = new HttpContext();
105
- }
106
- let responseType_ = 'json';
107
- if (localVarHttpHeaderAcceptSelected) {
108
- if (localVarHttpHeaderAcceptSelected.startsWith('text')) {
109
- responseType_ = 'text';
110
- }
111
- else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {
112
- responseType_ = 'json';
113
- }
114
- else {
115
- responseType_ = 'blob';
116
- }
117
- }
118
- let localVarPath = `/grid/${this.configuration.encodeParam({ name: "uuid", value: uuid, in: "path", style: "simple", explode: false, dataType: "string", dataFormat: "uuid" })}/${this.configuration.encodeParam({ name: "gridId", value: gridId, in: "path", style: "simple", explode: false, dataType: "string", dataFormat: undefined })}/${this.configuration.encodeParam({ name: "rowId", value: rowId, in: "path", style: "simple", explode: false, dataType: "string", dataFormat: undefined })}/expand`;
119
- return this.httpClient.request('post', `${this.configuration.basePath}${localVarPath}`, {
120
- context: localVarHttpContext,
121
- responseType: responseType_,
122
- withCredentials: this.configuration.withCredentials,
123
- headers: localVarHeaders,
124
- observe: observe,
125
- reportProgress: reportProgress
126
- });
127
- }
128
- load(uuid, gridIdentifier, observe = 'body', reportProgress = false, options) {
129
- if (uuid === null || uuid === undefined) {
130
- throw new Error('Required parameter uuid was null or undefined when calling load.');
131
- }
132
- if (gridIdentifier === null || gridIdentifier === undefined) {
133
- throw new Error('Required parameter gridIdentifier was null or undefined when calling load.');
134
- }
135
- let localVarHeaders = this.defaultHeaders;
136
- let localVarHttpHeaderAcceptSelected = options && options.httpHeaderAccept;
137
- if (localVarHttpHeaderAcceptSelected === undefined) {
138
- // to determine the Accept header
139
- const httpHeaderAccepts = [
140
- 'application/json'
141
- ];
142
- localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);
143
- }
144
- if (localVarHttpHeaderAcceptSelected !== undefined) {
145
- localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);
146
- }
147
- let localVarHttpContext = options && options.context;
148
- if (localVarHttpContext === undefined) {
149
- localVarHttpContext = new HttpContext();
150
- }
151
- let responseType_ = 'json';
152
- if (localVarHttpHeaderAcceptSelected) {
153
- if (localVarHttpHeaderAcceptSelected.startsWith('text')) {
154
- responseType_ = 'text';
155
- }
156
- else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {
157
- responseType_ = 'json';
158
- }
159
- else {
160
- responseType_ = 'blob';
161
- }
162
- }
163
- let localVarPath = `/grid/${this.configuration.encodeParam({ name: "uuid", value: uuid, in: "path", style: "simple", explode: false, dataType: "string", dataFormat: "uuid" })}/${this.configuration.encodeParam({ name: "gridIdentifier", value: gridIdentifier, in: "path", style: "simple", explode: false, dataType: "string", dataFormat: undefined })}/load`;
164
- return this.httpClient.request('post', `${this.configuration.basePath}${localVarPath}`, {
165
- context: localVarHttpContext,
166
- responseType: responseType_,
167
- withCredentials: this.configuration.withCredentials,
168
- headers: localVarHeaders,
169
- observe: observe,
170
- reportProgress: reportProgress
171
- });
172
- }
173
- select(uuid, gridId, rowId, selected, observe = 'body', reportProgress = false, options) {
174
- if (uuid === null || uuid === undefined) {
175
- throw new Error('Required parameter uuid was null or undefined when calling select.');
176
- }
177
- if (gridId === null || gridId === undefined) {
178
- throw new Error('Required parameter gridId was null or undefined when calling select.');
179
- }
180
- if (rowId === null || rowId === undefined) {
181
- throw new Error('Required parameter rowId was null or undefined when calling select.');
182
- }
183
- let localVarHeaders = this.defaultHeaders;
184
- if (selected !== undefined && selected !== null) {
185
- localVarHeaders = localVarHeaders.set('selected', String(selected));
186
- }
187
- let localVarHttpHeaderAcceptSelected = options && options.httpHeaderAccept;
188
- if (localVarHttpHeaderAcceptSelected === undefined) {
189
- // to determine the Accept header
190
- const httpHeaderAccepts = [
191
- 'application/json'
192
- ];
193
- localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);
194
- }
195
- if (localVarHttpHeaderAcceptSelected !== undefined) {
196
- localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);
197
- }
198
- let localVarHttpContext = options && options.context;
199
- if (localVarHttpContext === undefined) {
200
- localVarHttpContext = new HttpContext();
201
- }
202
- let responseType_ = 'json';
203
- if (localVarHttpHeaderAcceptSelected) {
204
- if (localVarHttpHeaderAcceptSelected.startsWith('text')) {
205
- responseType_ = 'text';
206
- }
207
- else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {
208
- responseType_ = 'json';
209
- }
210
- else {
211
- responseType_ = 'blob';
212
- }
213
- }
214
- let localVarPath = `/grid/${this.configuration.encodeParam({ name: "uuid", value: uuid, in: "path", style: "simple", explode: false, dataType: "string", dataFormat: "uuid" })}/${this.configuration.encodeParam({ name: "gridId", value: gridId, in: "path", style: "simple", explode: false, dataType: "string", dataFormat: undefined })}/${this.configuration.encodeParam({ name: "rowId", value: rowId, in: "path", style: "simple", explode: false, dataType: "string", dataFormat: undefined })}/select`;
215
- return this.httpClient.request('post', `${this.configuration.basePath}${localVarPath}`, {
216
- context: localVarHttpContext,
217
- responseType: responseType_,
218
- withCredentials: this.configuration.withCredentials,
219
- headers: localVarHeaders,
220
- observe: observe,
221
- reportProgress: reportProgress
222
- });
223
- }
224
- selectAll(uuid, gridId, selected, observe = 'body', reportProgress = false, options) {
225
- if (uuid === null || uuid === undefined) {
226
- throw new Error('Required parameter uuid was null or undefined when calling selectAll.');
227
- }
228
- if (gridId === null || gridId === undefined) {
229
- throw new Error('Required parameter gridId was null or undefined when calling selectAll.');
230
- }
231
- let localVarHeaders = this.defaultHeaders;
232
- if (selected !== undefined && selected !== null) {
233
- localVarHeaders = localVarHeaders.set('selected', String(selected));
234
- }
235
- let localVarHttpHeaderAcceptSelected = options && options.httpHeaderAccept;
236
- if (localVarHttpHeaderAcceptSelected === undefined) {
237
- // to determine the Accept header
238
- const httpHeaderAccepts = [
239
- 'application/json'
240
- ];
241
- localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);
242
- }
243
- if (localVarHttpHeaderAcceptSelected !== undefined) {
244
- localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);
245
- }
246
- let localVarHttpContext = options && options.context;
247
- if (localVarHttpContext === undefined) {
248
- localVarHttpContext = new HttpContext();
249
- }
250
- let responseType_ = 'json';
251
- if (localVarHttpHeaderAcceptSelected) {
252
- if (localVarHttpHeaderAcceptSelected.startsWith('text')) {
253
- responseType_ = 'text';
254
- }
255
- else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {
256
- responseType_ = 'json';
257
- }
258
- else {
259
- responseType_ = 'blob';
260
- }
261
- }
262
- let localVarPath = `/grid/${this.configuration.encodeParam({ name: "uuid", value: uuid, in: "path", style: "simple", explode: false, dataType: "string", dataFormat: "uuid" })}/${this.configuration.encodeParam({ name: "gridId", value: gridId, in: "path", style: "simple", explode: false, dataType: "string", dataFormat: undefined })}/select`;
263
- return this.httpClient.request('post', `${this.configuration.basePath}${localVarPath}`, {
264
- context: localVarHttpContext,
265
- responseType: responseType_,
266
- withCredentials: this.configuration.withCredentials,
267
- headers: localVarHeaders,
268
- observe: observe,
269
- reportProgress: reportProgress
270
- });
271
- }
272
- selectRows(uuid, gridId, gridSelectionChange, observe = 'body', reportProgress = false, options) {
273
- if (uuid === null || uuid === undefined) {
274
- throw new Error('Required parameter uuid was null or undefined when calling selectRows.');
275
- }
276
- if (gridId === null || gridId === undefined) {
277
- throw new Error('Required parameter gridId was null or undefined when calling selectRows.');
278
- }
279
- if (gridSelectionChange === null || gridSelectionChange === undefined) {
280
- throw new Error('Required parameter gridSelectionChange was null or undefined when calling selectRows.');
281
- }
282
- let localVarHeaders = this.defaultHeaders;
283
- let localVarHttpHeaderAcceptSelected = options && options.httpHeaderAccept;
284
- if (localVarHttpHeaderAcceptSelected === undefined) {
285
- // to determine the Accept header
286
- const httpHeaderAccepts = [
287
- 'application/json'
288
- ];
289
- localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);
290
- }
291
- if (localVarHttpHeaderAcceptSelected !== undefined) {
292
- localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);
293
- }
294
- let localVarHttpContext = options && options.context;
295
- if (localVarHttpContext === undefined) {
296
- localVarHttpContext = new HttpContext();
297
- }
298
- // to determine the Content-Type header
299
- const consumes = [
300
- 'application/json'
301
- ];
302
- const httpContentTypeSelected = this.configuration.selectHeaderContentType(consumes);
303
- if (httpContentTypeSelected !== undefined) {
304
- localVarHeaders = localVarHeaders.set('Content-Type', httpContentTypeSelected);
305
- }
306
- let responseType_ = 'json';
307
- if (localVarHttpHeaderAcceptSelected) {
308
- if (localVarHttpHeaderAcceptSelected.startsWith('text')) {
309
- responseType_ = 'text';
310
- }
311
- else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {
312
- responseType_ = 'json';
313
- }
314
- else {
315
- responseType_ = 'blob';
316
- }
317
- }
318
- let localVarPath = `/grid/${this.configuration.encodeParam({ name: "uuid", value: uuid, in: "path", style: "simple", explode: false, dataType: "string", dataFormat: "uuid" })}/${this.configuration.encodeParam({ name: "gridId", value: gridId, in: "path", style: "simple", explode: false, dataType: "string", dataFormat: undefined })}/selects`;
319
- return this.httpClient.request('post', `${this.configuration.basePath}${localVarPath}`, {
320
- context: localVarHttpContext,
321
- body: gridSelectionChange,
322
- responseType: responseType_,
323
- withCredentials: this.configuration.withCredentials,
324
- headers: localVarHeaders,
325
- observe: observe,
326
- reportProgress: reportProgress
327
- });
328
- }
329
- setPage(uuid, gridIdentifier, offset, limit, observe = 'body', reportProgress = false, options) {
330
- if (uuid === null || uuid === undefined) {
331
- throw new Error('Required parameter uuid was null or undefined when calling setPage.');
332
- }
333
- if (gridIdentifier === null || gridIdentifier === undefined) {
334
- throw new Error('Required parameter gridIdentifier was null or undefined when calling setPage.');
335
- }
336
- if (offset === null || offset === undefined) {
337
- throw new Error('Required parameter offset was null or undefined when calling setPage.');
338
- }
339
- if (limit === null || limit === undefined) {
340
- throw new Error('Required parameter limit was null or undefined when calling setPage.');
341
- }
342
- let localVarHeaders = this.defaultHeaders;
343
- let localVarHttpHeaderAcceptSelected = options && options.httpHeaderAccept;
344
- if (localVarHttpHeaderAcceptSelected === undefined) {
345
- // to determine the Accept header
346
- const httpHeaderAccepts = [];
347
- localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);
348
- }
349
- if (localVarHttpHeaderAcceptSelected !== undefined) {
350
- localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);
351
- }
352
- let localVarHttpContext = options && options.context;
353
- if (localVarHttpContext === undefined) {
354
- localVarHttpContext = new HttpContext();
355
- }
356
- let responseType_ = 'json';
357
- if (localVarHttpHeaderAcceptSelected) {
358
- if (localVarHttpHeaderAcceptSelected.startsWith('text')) {
359
- responseType_ = 'text';
360
- }
361
- else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {
362
- responseType_ = 'json';
363
- }
364
- else {
365
- responseType_ = 'blob';
366
- }
367
- }
368
- let localVarPath = `/grid/${this.configuration.encodeParam({ name: "uuid", value: uuid, in: "path", style: "simple", explode: false, dataType: "string", dataFormat: "uuid" })}/${this.configuration.encodeParam({ name: "gridIdentifier", value: gridIdentifier, in: "path", style: "simple", explode: false, dataType: "string", dataFormat: undefined })}/page/${this.configuration.encodeParam({ name: "offset", value: offset, in: "path", style: "simple", explode: false, dataType: "string", dataFormat: undefined })}/${this.configuration.encodeParam({ name: "limit", value: limit, in: "path", style: "simple", explode: false, dataType: "string", dataFormat: undefined })}`;
369
- return this.httpClient.request('post', `${this.configuration.basePath}${localVarPath}`, {
370
- context: localVarHttpContext,
371
- responseType: responseType_,
372
- withCredentials: this.configuration.withCredentials,
373
- headers: localVarHeaders,
374
- observe: observe,
375
- reportProgress: reportProgress
376
- });
377
- }
378
- update(uuid, gridIdentifier, gridUpdateData, observe = 'body', reportProgress = false, options) {
379
- if (uuid === null || uuid === undefined) {
380
- throw new Error('Required parameter uuid was null or undefined when calling update.');
381
- }
382
- if (gridIdentifier === null || gridIdentifier === undefined) {
383
- throw new Error('Required parameter gridIdentifier was null or undefined when calling update.');
384
- }
385
- if (gridUpdateData === null || gridUpdateData === undefined) {
386
- throw new Error('Required parameter gridUpdateData was null or undefined when calling update.');
387
- }
388
- let localVarHeaders = this.defaultHeaders;
389
- let localVarHttpHeaderAcceptSelected = options && options.httpHeaderAccept;
390
- if (localVarHttpHeaderAcceptSelected === undefined) {
391
- // to determine the Accept header
392
- const httpHeaderAccepts = [
393
- 'application/json'
394
- ];
395
- localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);
396
- }
397
- if (localVarHttpHeaderAcceptSelected !== undefined) {
398
- localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);
399
- }
400
- let localVarHttpContext = options && options.context;
401
- if (localVarHttpContext === undefined) {
402
- localVarHttpContext = new HttpContext();
403
- }
404
- // to determine the Content-Type header
405
- const consumes = [
406
- 'application/json'
407
- ];
408
- const httpContentTypeSelected = this.configuration.selectHeaderContentType(consumes);
409
- if (httpContentTypeSelected !== undefined) {
410
- localVarHeaders = localVarHeaders.set('Content-Type', httpContentTypeSelected);
411
- }
412
- let responseType_ = 'json';
413
- if (localVarHttpHeaderAcceptSelected) {
414
- if (localVarHttpHeaderAcceptSelected.startsWith('text')) {
415
- responseType_ = 'text';
416
- }
417
- else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {
418
- responseType_ = 'json';
419
- }
420
- else {
421
- responseType_ = 'blob';
422
- }
423
- }
424
- let localVarPath = `/grid/${this.configuration.encodeParam({ name: "uuid", value: uuid, in: "path", style: "simple", explode: false, dataType: "string", dataFormat: "uuid" })}/${this.configuration.encodeParam({ name: "gridIdentifier", value: gridIdentifier, in: "path", style: "simple", explode: false, dataType: "string", dataFormat: undefined })}/update`;
425
- return this.httpClient.request('post', `${this.configuration.basePath}${localVarPath}`, {
426
- context: localVarHttpContext,
427
- body: gridUpdateData,
428
- responseType: responseType_,
429
- withCredentials: this.configuration.withCredentials,
430
- headers: localVarHeaders,
431
- observe: observe,
432
- reportProgress: reportProgress
433
- });
434
- }
435
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: GridService, deps: [{ token: i1.HttpClient }, { token: BASE_PATH, optional: true }, { token: i2.Configuration, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
436
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: GridService, providedIn: 'root' }); }
437
- }
438
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: GridService, decorators: [{
439
- type: Injectable,
440
- args: [{
441
- providedIn: 'root'
442
- }]
443
- }], ctorParameters: () => [{ type: i1.HttpClient }, { type: undefined, decorators: [{
444
- type: Optional
445
- }, {
446
- type: Inject,
447
- args: [BASE_PATH]
448
- }] }, { type: i2.Configuration, decorators: [{
449
- type: Optional
450
- }] }] });
451
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtbmctY2xpZW50L3NyYy9saWIvc21hcnQtZ3JpZC9hcGkvZ3JpZC1hcGkvYXBpL2dyaWQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7OztHQVVHO0FBQ0gsdURBQXVEO0FBRXZELE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUEyQixlQUFlLENBQUM7QUFDbEYsT0FBTyxFQUFjLFdBQVcsRUFDc0IsV0FBVyxFQUN4RCxNQUFZLHNCQUFzQixDQUFDO0FBQzVDLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUErQixZQUFZLENBQUM7QUFZL0UsYUFBYTtBQUNiLE9BQU8sRUFBRSxTQUFTLEVBQXNCLE1BQTBCLGNBQWMsQ0FBQztBQUNqRixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQTBDLGtCQUFrQixDQUFDOzs7O0FBT3JGLE1BQU0sT0FBTyxXQUFXO0lBT3BCLFlBQXNCLFVBQXNCLEVBQWdDLFFBQXlCLEVBQWMsYUFBNEI7UUFBekgsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUxsQyxhQUFRLEdBQUcsa0JBQWtCLENBQUM7UUFDakMsbUJBQWMsR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFDO1FBQ25DLGtCQUFhLEdBQUcsSUFBSSxhQUFhLEVBQUUsQ0FBQztRQUl2QyxJQUFJLGFBQWEsRUFBRSxDQUFDO1lBQ2hCLElBQUksQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDO1FBQ3ZDLENBQUM7UUFDRCxJQUFJLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDbEQsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ2pELFFBQVEs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QUFVLEVBQUUsU0FBUyxFQUFDLENBQUMsU0FBUyxDQUFDO1FBQ2pXLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQVksTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEdBQUcsWUFBWSxFQUFFLEVBQzdGO1lBQ0ksT0FBTyxFQUFFLG1CQUFtQjtZQUM1QixJQUFJLEVBQUUsY0FBYztZQUNwQixZQUFZLEVBQU8sYUFBYTtZQUNoQyxlQUFlLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxlQUFlO1lBQ25ELE9BQU8sRUFBRSxlQUFlO1lBQ3hCLE9BQU8sRUFBRSxPQUFPO1lBQ2hCLGNBQWMsRUFBRSxjQUFjO1NBQ2pDLENBQ0osQ0FBQztJQUNOLENBQUM7K0dBaGlCUSxXQUFXLDRDQU82QyxTQUFTO21IQVBqRSxXQUFXLGNBRlYsTUFBTTs7NEZBRVAsV0FBVztrQkFIdkIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQVFrRCxRQUFROzswQkFBRyxNQUFNOzJCQUFDLFNBQVM7OzBCQUE4QixRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHcmlkIGFwaVxuICogVGhlIGdyaWQgYXBpIGlzIHJlc3Bvc2libGUgZm9yIHRoZSBncmlkIGNvbXBvbmVudHMgdGhhdCBzaG93cyBhIGxpc3Qgb2YgaXRlbS4gXG4gKlxuICogVGhlIHZlcnNpb24gb2YgdGhlIE9wZW5BUEkgZG9jdW1lbnQ6IDEuMC4wXG4gKiBDb250YWN0OiBpbmZvQGl0NGFsbC5odVxuICpcbiAqIE5PVEU6IFRoaXMgY2xhc3MgaXMgYXV0byBnZW5lcmF0ZWQgYnkgT3BlbkFQSSBHZW5lcmF0b3IgKGh0dHBzOi8vb3BlbmFwaS1nZW5lcmF0b3IudGVjaCkuXG4gKiBodHRwczovL29wZW5hcGktZ2VuZXJhdG9yLnRlY2hcbiAqIERvIG5vdCBlZGl0IHRoZSBjbGFzcyBtYW51YWxseS5cbiAqL1xuLyogdHNsaW50OmRpc2FibGU6bm8tdW51c2VkLXZhcmlhYmxlIG1lbWJlci1vcmRlcmluZyAqL1xuXG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIE9wdGlvbmFsIH0gICAgICAgICAgICAgICAgICAgICAgZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwSGVhZGVycywgSHR0cFBhcmFtcyxcbiAgICAgICAgIEh0dHBSZXNwb25zZSwgSHR0cEV2ZW50LCBIdHRwUGFyYW1ldGVyQ29kZWMsIEh0dHBDb250ZXh0IFxuICAgICAgICB9ICAgICAgIGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEN1c3RvbUh0dHBQYXJhbWV0ZXJDb2RlYyB9ICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tICcuLi9lbmNvZGVyJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tICdyeGpzJztcblxuLy8gQHRzLWlnbm9yZVxuaW1wb3J0IHsgR3JpZE1vZGVsIH0gZnJvbSAnLi4vbW9kZWwvZ3JpZE1vZGVsJztcbi8vIEB0cy1pZ25vcmVcbmltcG9ydCB7IEdyaWRTZWxlY3Rpb25DaGFuZ2UgfSBmcm9tICcuLi9tb2RlbC9ncmlkU2VsZWN0aW9uQ2hhbmdlJztcbi8vIEB0cy1pZ25vcmVcbmltcG9ydCB7IEdyaWRVcGRhdGVEYXRhIH0gZnJvbSAnLi4vbW9kZWwvZ3JpZFVwZGF0ZURhdGEnO1xuLy8gQHRzLWlnbm9yZVxuaW1wb3J0IHsgVmlld0NvbnRleHRDaGFuZ2UgfSBmcm9tICcuLi8uLi8uLi8uLi92aWV3LWNvbnRleHQvYXBpJztcblxuLy8gQHRzLWlnbm9yZVxuaW1wb3J0IHsgQkFTRV9QQVRILCBDT0xMRUNUSU9OX0ZPUk1BVFMgfSAgICAgICAgICAgICAgICAgICAgIGZyb20gJy4uL3ZhcmlhYmxlcyc7XG5pbXBvcnQgeyBDb25maWd1cmF0aW9uIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSAnLi4vY29uZmlndXJhdGlvbic7XG5cblxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBHcmlkU2VydmljZSB7XG5cbiAgICBwcm90ZWN0ZWQgYmFzZVBhdGggPSAnaHR0cDovL2xvY2FsaG9zdCc7XG4gICAgcHVibGljIGRlZmF1bHRIZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCk7XG4gICAgcHVibGljIGNvbmZpZ3VyYXRpb24gPSBuZXcgQ29uZmlndXJhdGlvbigpO1xuICAgIHB1YmxpYyBlbmNvZGVyOiBIdHRwUGFyYW1ldGVyQ29kZWM7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgaHR0cENsaWVudDogSHR0cENsaWVudCwgQE9wdGlvbmFsKClASW5qZWN0KEJBU0VfUEFUSCkgYmFzZVBhdGg6IHN0cmluZ3xzdHJpbmdbXSwgQE9wdGlvbmFsKCkgY29uZmlndXJhdGlvbjogQ29uZmlndXJhdGlvbikge1xuICAgICAgICBpZiAoY29uZmlndXJhdGlvbikge1xuICAgICAgICAgICAgdGhpcy5jb25maWd1cmF0aW9uID0gY29uZmlndXJhdGlvbjtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuY29uZmlndXJhdGlvbi5iYXNlUGF0aCAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGJhc2VQYXRoKSAmJiBiYXNlUGF0aC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgYmFzZVBhdGggPSBiYXNlUGF0aFswXTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHR5cGVvZiBiYXNlUGF0aCAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICBiYXNlUGF0aCA9IHRoaXMuYmFzZVBhdGg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmNvbmZpZ3VyYXRpb24uYmFzZVBhdGggPSBiYXNlUGF0aDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmVuY29kZXIgPSB0aGlzLmNvbmZpZ3VyYXRpb24uZW5jb2RlciB8fCBuZXcgQ3VzdG9tSHR0cFBhcmFtZXRlckNvZGVjKCk7XG4gICAgfVxuXG5cbiAgICAvLyBAdHMtaWdub3JlXG4gICAgcHJpdmF0ZSBhZGRUb0h0dHBQYXJhbXMoaHR0cFBhcmFtczogSHR0cFBhcmFtcywgdmFsdWU6IGFueSwga2V5Pzogc3RyaW5nKTogSHR0cFBhcmFtcyB7XG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCIgJiYgdmFsdWUgaW5zdGFuY2VvZiBEYXRlID09PSBmYWxzZSkge1xuICAgICAgICAgICAgaHR0cFBhcmFtcyA9IHRoaXMuYWRkVG9IdHRwUGFyYW1zUmVjdXJzaXZlKGh0dHBQYXJhbXMsIHZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGh0dHBQYXJhbXMgPSB0aGlzLmFkZFRvSHR0cFBhcmFtc1JlY3Vyc2l2ZShodHRwUGFyYW1zLCB2YWx1ZSwga2V5KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaHR0cFBhcmFtcztcbiAgICB9XG5cbiAgICBwcml2YXRlIGFkZFRvSHR0cFBhcmFtc1JlY3Vyc2l2ZShodHRwUGFyYW1zOiBIdHRwUGFyYW1zLCB2YWx1ZT86IGFueSwga2V5Pzogc3RyaW5nKTogSHR0cFBhcmFtcyB7XG4gICAgICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gaHR0cFBhcmFtcztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICAgICAgICAgICh2YWx1ZSBhcyBhbnlbXSkuZm9yRWFjaCggZWxlbSA9PiBodHRwUGFyYW1zID0gdGhpcy5hZGRUb0h0dHBQYXJhbXNSZWN1cnNpdmUoaHR0cFBhcmFtcywgZWxlbSwga2V5KSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgICAgICAgICAgIGlmIChrZXkgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICBodHRwUGFyYW1zID0gaHR0cFBhcmFtcy5hcHBlbmQoa2V5LCAodmFsdWUgYXMgRGF0ZSkudG9JU09TdHJpbmcoKS5zdWJzdHIoMCwgMTApKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgIHRocm93IEVycm9yKFwia2V5IG1heSBub3QgYmUgbnVsbCBpZiB2YWx1ZSBpcyBEYXRlXCIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgT2JqZWN0LmtleXModmFsdWUpLmZvckVhY2goIGsgPT4gaHR0cFBhcmFtcyA9IHRoaXMuYWRkVG9IdHRwUGFyYW1zUmVjdXJzaXZlKFxuICAgICAgICAgICAgICAgICAgICBodHRwUGFyYW1zLCB2YWx1ZVtrXSwga2V5ICE9IG51bGwgPyBgJHtrZXl9LiR7a31gIDogaykpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGtleSAhPSBudWxsKSB7XG4gICAgICAgICAgICBodHRwUGFyYW1zID0gaHR0cFBhcmFtcy5hcHBlbmQoa2V5LCB2YWx1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBFcnJvcihcImtleSBtYXkgbm90IGJlIG51bGwgaWYgdmFsdWUgaXMgbm90IG9iamVjdCBvciBhcnJheVwiKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaHR0cFBhcmFtcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBcbiAgICAgKiBAcGFyYW0gdXVpZCBcbiAgICAgKiBAcGFyYW0gZ3JpZElkIFxuICAgICAqIEBwYXJhbSByb3dJZCBcbiAgICAgKiBAcGFyYW0gb2JzZXJ2ZSBzZXQgd2hldGhlciBvciBub3QgdG8gcmV0dXJuIHRoZSBkYXRhIE9ic2VydmFibGUgYXMgdGhlIGJvZHksIHJlc3BvbnNlIG9yIGV2ZW50cy4gZGVmYXVsdHMgdG8gcmV0dXJuaW5nIHRoZSBib2R5LlxuICAgICAqIEBwYXJhbSByZXBvcnRQcm9ncmVzcyBmbGFnIHRvIHJlcG9ydCByZXF1ZXN0IGFuZCByZXNwb25zZSBwcm9ncmVzcy5cbiAgICAgKi9cbiAgICBwdWJsaWMgZXhwYW5kKHV1aWQ6IHN0cmluZywgZ3JpZElkOiBzdHJpbmcsIHJvd0lkOiBzdHJpbmcsIG9ic2VydmU/OiAnYm9keScsIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbiwgb3B0aW9ucz86IHtodHRwSGVhZGVyQWNjZXB0PzogJ2FwcGxpY2F0aW9uL2pzb24nLCBjb250ZXh0PzogSHR0cENvbnRleHR9KTogT2JzZXJ2YWJsZTxvYmplY3Q+O1xuICAgIHB1YmxpYyBleHBhbmQodXVpZDogc3RyaW5nLCBncmlkSWQ6IHN0cmluZywgcm93SWQ6IHN0cmluZywgb2JzZXJ2ZT86ICdyZXNwb25zZScsIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbiwgb3B0aW9ucz86IHtodHRwSGVhZGVyQWNjZXB0PzogJ2FwcGxpY2F0aW9uL2pzb24nLCBjb250ZXh0PzogSHR0cENvbnRleHR9KTogT2JzZXJ2YWJsZTxIdHRwUmVzcG9uc2U8b2JqZWN0Pj47XG4gICAgcHVibGljIGV4cGFuZCh1dWlkOiBzdHJpbmcsIGdyaWRJZDogc3RyaW5nLCByb3dJZDogc3RyaW5nLCBvYnNlcnZlPzogJ2V2ZW50cycsIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbiwgb3B0aW9ucz86IHtodHRwSGVhZGVyQWNjZXB0PzogJ2FwcGxpY2F0aW9uL2pzb24nLCBjb250ZXh0PzogSHR0cENvbnRleHR9KTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8b2JqZWN0Pj47XG4gICAgcHVibGljIGV4cGFuZCh1dWlkOiBzdHJpbmcsIGdyaWRJZDogc3RyaW5nLCByb3dJZDogc3RyaW5nLCBvYnNlcnZlOiBhbnkgPSAnYm9keScsIHJlcG9ydFByb2dyZXNzOiBib29sZWFuID0gZmFsc2UsIG9wdGlvbnM/OiB7aHR0cEhlYWRlckFjY2VwdD86ICdhcHBsaWNhdGlvbi9qc29uJywgY29udGV4dD86IEh0dHBDb250ZXh0fSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgICAgIGlmICh1dWlkID09PSBudWxsIHx8IHV1aWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdSZXF1aXJlZCBwYXJhbWV0ZXIgdXVpZCB3YXMgbnVsbCBvciB1bmRlZmluZWQgd2hlbiBjYWxsaW5nIGV4cGFuZC4nKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZ3JpZElkID09PSBudWxsIHx8IGdyaWRJZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1JlcXVpcmVkIHBhcmFtZXRlciBncmlkSWQgd2FzIG51bGwgb3IgdW5kZWZpbmVkIHdoZW4gY2FsbGluZyBleHBhbmQuJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJvd0lkID09PSBudWxsIHx8IHJvd0lkID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignUmVxdWlyZWQgcGFyYW1ldGVyIHJvd0lkIHdhcyBudWxsIG9yIHVuZGVmaW5lZCB3aGVuIGNhbGxpbmcgZXhwYW5kLicpO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGxvY2FsVmFySGVhZGVycyA9IHRoaXMuZGVmYXVsdEhlYWRlcnM7XG5cbiAgICAgICAgbGV0IGxvY2FsVmFySHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkOiBzdHJpbmcgfCB1bmRlZmluZWQgPSBvcHRpb25zICYmIG9wdGlvbnMuaHR0cEhlYWRlckFjY2VwdDtcbiAgICAgICAgaWYgKGxvY2FsVmFySHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIC8vIHRvIGRldGVybWluZSB0aGUgQWNjZXB0IGhlYWRlclxuICAgICAgICAgICAgY29uc3QgaHR0cEhlYWRlckFjY2VwdHM6IHN0cmluZ1tdID0gW1xuICAgICAgICAgICAgICAgICdhcHBsaWNhdGlvbi9qc29uJ1xuICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIGxvY2FsVmFySHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkID0gdGhpcy5jb25maWd1cmF0aW9uLnNlbGVjdEhlYWRlckFjY2VwdChodHRwSGVhZGVyQWNjZXB0cyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGxvY2FsVmFySHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGxvY2FsVmFySGVhZGVycyA9IGxvY2FsVmFySGVhZGVycy5zZXQoJ0FjY2VwdCcsIGxvY2FsVmFySHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBsb2NhbFZhckh0dHBDb250ZXh0OiBIdHRwQ29udGV4dCB8IHVuZGVmaW5lZCA9IG9wdGlvbnMgJiYgb3B0aW9ucy5jb250ZXh0O1xuICAgICAgICBpZiAobG9jYWxWYXJIdHRwQ29udGV4dCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBsb2NhbFZhckh0dHBDb250ZXh0ID0gbmV3IEh0dHBDb250ZXh0KCk7XG4gICAgICAgIH1cblxuXG4gICAgICAgIGxldCByZXNwb25zZVR5cGVfOiAndGV4dCcgfCAnanNvbicgfCAnYmxvYicgPSAnanNvbic7XG4gICAgICAgIGlmIChsb2NhbFZhckh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZCkge1xuICAgICAgICAgICAgaWYgKGxvY2FsVmFySHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkLnN0YXJ0c1dpdGgoJ3RleHQnKSkge1xuICAgICAgICAgICAgICAgIHJlc3BvbnNlVHlwZV8gPSAndGV4dCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuY29uZmlndXJhdGlvbi5pc0pzb25NaW1lKGxvY2FsVmFySHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkKSkge1xuICAgICAgICAgICAgICAgIHJlc3BvbnNlVHlwZV8gPSAnanNvbic7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJlc3BvbnNlVHlwZV8gPSAnYmxvYic7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgbG9jYWxWYXJQYXRoID0gYC9ncmlkLyR7dGhpcy5jb25maWd1cmF0aW9uLmVuY29kZVBhcmFtKHtuYW1lOiBcInV1aWRcIiwgdmFsdWU6IHV1aWQsIGluOiBcInBhdGhcIiwgc3R5bGU6IFwic2ltcGxlXCIsIGV4cGxvZGU6IGZhbHNlLCBkYXRhVHlwZTogXCJzdHJpbmdcIiwgZGF0YUZvcm1hdDogXCJ1dWlkXCJ9KX0vJHt0aGlzLmNvbmZpZ3VyYXRpb24uZW5jb2RlUGFyYW0oe25hbWU6IFwiZ3JpZElkXCIsIHZhbHVlOiBncmlkSWQsIGluOiBcInBhdGhcIiwgc3R5bGU6IFwic2ltcGxlXCIsIGV4cGxvZGU6IGZhbHNlLCBkYXRhVHlwZTogXCJzdHJpbmdcIiwgZGF0YUZvcm1hdDogdW5kZWZpbmVkfSl9LyR7dGhpcy5jb25maWd1cmF0aW9uLmVuY29kZVBhcmFtKHtuYW1lOiBcInJvd0lkXCIsIHZhbHVlOiByb3dJZCwgaW46IFwicGF0aFwiLCBzdHlsZTogXCJzaW1wbGVcIiwgZXhwbG9kZTogZmFsc2UsIGRhdGFUeXBlOiBcInN0cmluZ1wiLCBkYXRhRm9ybWF0OiB1bmRlZmluZWR9KX0vZXhwYW5kYDtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5yZXF1ZXN0PG9iamVjdD4oJ3Bvc3QnLCBgJHt0aGlzLmNvbmZpZ3VyYXRpb24uYmFzZVBhdGh9JHtsb2NhbFZhclBhdGh9YCxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjb250ZXh0OiBsb2NhbFZhckh0dHBDb250ZXh0LFxuICAgICAgICAgICAgICAgIHJlc3BvbnNlVHlwZTogPGFueT5yZXNwb25zZVR5cGVfLFxuICAgICAgICAgICAgICAgIHdpdGhDcmVkZW50aWFsczogdGhpcy5jb25maWd1cmF0aW9uLndpdGhDcmVkZW50aWFscyxcbiAgICAgICAgICAgICAgICBoZWFkZXJzOiBsb2NhbFZhckhlYWRlcnMsXG4gICAgICAgICAgICAgICAgb2JzZXJ2ZTogb2JzZXJ2ZSxcbiAgICAgICAgICAgICAgICByZXBvcnRQcm9ncmVzczogcmVwb3J0UHJvZ3Jlc3NcbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBcbiAgICAgKiBAcGFyYW0gdXVpZCBcbiAgICAgKiBAcGFyYW0gZ3JpZElkZW50aWZpZXIgXG4gICAgICogQHBhcmFtIG9ic2VydmUgc2V0IHdoZXRoZXIgb3Igbm90IHRvIHJldHVybiB0aGUgZGF0YSBPYnNlcnZhYmxlIGFzIHRoZSBib2R5LCByZXNwb25zZSBvciBldmVudHMuIGRlZmF1bHRzIHRvIHJldHVybmluZyB0aGUgYm9keS5cbiAgICAgKiBAcGFyYW0gcmVwb3J0UHJvZ3Jlc3MgZmxhZyB0byByZXBvcnQgcmVxdWVzdCBhbmQgcmVzcG9uc2UgcHJvZ3Jlc3MuXG4gICAgICovXG4gICAgcHVibGljIGxvYWQodXVpZDogc3RyaW5nLCBncmlkSWRlbnRpZmllcjogc3RyaW5nLCBvYnNlcnZlPzogJ2JvZHknLCByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW4sIG9wdGlvbnM/OiB7aHR0cEhlYWRlckFjY2VwdD86ICdhcHBsaWNhdGlvbi9qc29uJywgY29udGV4dD86IEh0dHBDb250ZXh0fSk6IE9ic2VydmFibGU8R3JpZE1vZGVsPjtcbiAgICBwdWJsaWMgbG9hZCh1dWlkOiBzdHJpbmcsIGdyaWRJZGVudGlmaWVyOiBzdHJpbmcsIG9ic2VydmU/OiAncmVzcG9uc2UnLCByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW4sIG9wdGlvbnM/OiB7aHR0cEhlYWRlckFjY2VwdD86ICdhcHBsaWNhdGlvbi9qc29uJywgY29udGV4dD86IEh0dHBDb250ZXh0fSk6IE9ic2VydmFibGU8SHR0cFJlc3BvbnNlPEdyaWRNb2RlbD4+O1xuICAgIHB1YmxpYyBsb2FkKHV1aWQ6IHN0cmluZywgZ3JpZElkZW50aWZpZXI6IHN0cmluZywgb2JzZXJ2ZT86ICdldmVudHMnLCByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW4sIG9wdGlvbnM/OiB7aHR0cEhlYWRlckFjY2VwdD86ICdhcHBsaWNhdGlvbi9qc29uJywgY29udGV4dD86IEh0dHBDb250ZXh0fSk6IE9ic2VydmFibGU8SHR0cEV2ZW50PEdyaWRNb2RlbD4+O1xuICAgIHB1YmxpYyBsb2FkKHV1aWQ6IHN0cmluZywgZ3JpZElkZW50aWZpZXI6IHN0cmluZywgb2JzZXJ2ZTogYW55ID0gJ2JvZHknLCByZXBvcnRQcm9ncmVzczogYm9vbGVhbiA9IGZhbHNlLCBvcHRpb25zPzoge2h0dHBIZWFkZXJBY2NlcHQ/OiAnYXBwbGljYXRpb24vanNvbicsIGNvbnRleHQ/OiBIdHRwQ29udGV4dH0pOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgICAgICBpZiAodXVpZCA9PT0gbnVsbCB8fCB1dWlkID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignUmVxdWlyZWQgcGFyYW1ldGVyIHV1aWQgd2FzIG51bGwgb3IgdW5kZWZpbmVkIHdoZW4gY2FsbGluZyBsb2FkLicpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChncmlkSWRlbnRpZmllciA9PT0gbnVsbCB8fCBncmlkSWRlbnRpZmllciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1JlcXVpcmVkIHBhcmFtZXRlciBncmlkSWRlbnRpZmllciB3YXMgbnVsbCBvciB1bmRlZmluZWQgd2hlbiBjYWxsaW5nIGxvYWQuJyk7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgbG9jYWxWYXJIZWFkZXJzID0gdGhpcy5kZWZhdWx0SGVhZGVycztcblxuICAgICAgICBsZXQgbG9jYWxWYXJIdHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQ6IHN0cmluZyB8IHVuZGVmaW5lZCA9IG9wdGlvbnMgJiYgb3B0aW9ucy5odHRwSGVhZGVyQWNjZXB0O1xuICAgICAgICBpZiAobG9jYWxWYXJIdHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgLy8gdG8gZGV0ZXJtaW5lIHRoZSBBY2NlcHQgaGVhZGVyXG4gICAgICAgICAgICBjb25zdCBodHRwSGVhZGVyQWNjZXB0czogc3RyaW5nW10gPSBbXG4gICAgICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL2pzb24nXG4gICAgICAgICAgICBdO1xuICAgICAgICAgICAgbG9jYWxWYXJIdHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQgPSB0aGlzLmNvbmZpZ3VyYXRpb24uc2VsZWN0SGVhZGVyQWNjZXB0KGh0dHBIZWFkZXJBY2NlcHRzKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobG9jYWxWYXJIdHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgbG9jYWxWYXJIZWFkZXJzID0gbG9jYWxWYXJIZWFkZXJzLnNldCgnQWNjZXB0JywgbG9jYWxWYXJIdHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQpO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGxvY2FsVmFySHR0cENvbnRleHQ6IEh0dHBDb250ZXh0IHwgdW5kZWZpbmVkID0gb3B0aW9ucyAmJiBvcHRpb25zLmNvbnRleHQ7XG4gICAgICAgIGlmIChsb2NhbFZhckh0dHBDb250ZXh0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGxvY2FsVmFySHR0cENvbnRleHQgPSBuZXcgSHR0cENvbnRleHQoKTtcbiAgICAgICAgfVxuXG5cbiAgICAgICAgbGV0IHJlc3BvbnNlVHlwZV86ICd0ZXh0JyB8ICdqc29uJyB8ICdibG9iJyA9ICdqc29uJztcbiAgICAgICAgaWYgKGxvY2FsVmFySHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkKSB7XG4gICAgICAgICAgICBpZiAobG9jYWxWYXJIdHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQuc3RhcnRzV2l0aCgndGV4dCcpKSB7XG4gICAgICAgICAgICAgICAgcmVzcG9uc2VUeXBlXyA9ICd0ZXh0JztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5jb25maWd1cmF0aW9uLmlzSnNvbk1pbWUobG9jYWxWYXJIdHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQpKSB7XG4gICAgICAgICAgICAgICAgcmVzcG9uc2VUeXBlXyA9ICdqc29uJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmVzcG9uc2VUeXBlXyA9ICdibG9iJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBsb2NhbFZhclBhdGggPSBgL2dyaWQvJHt0aGlzLmNvbmZpZ3VyYXRpb24uZW5jb2RlUGFyYW0oe25hbWU6IFwidXVpZFwiLCB2YWx1ZTogdXVpZCwgaW46IFwicGF0aFwiLCBzdHlsZTogXCJzaW1wbGVcIiwgZXhwbG9kZTogZmFsc2UsIGRhdGFUeXBlOiBcInN0cmluZ1wiLCBkYXRhRm9ybWF0OiBcInV1aWRcIn0pfS8ke3RoaXMuY29uZmlndXJhdGlvbi5lbmNvZGVQYXJhbSh7bmFtZTogXCJncmlkSWRlbnRpZmllclwiLCB2YWx1ZTogZ3JpZElkZW50aWZpZXIsIGluOiBcInBhdGhcIiwgc3R5bGU6IFwic2ltcGxlXCIsIGV4cGxvZGU6IGZhbHNlLCBkYXRhVHlwZTogXCJzdHJpbmdcIiwgZGF0YUZvcm1hdDogdW5kZWZpbmVkfSl9L2xvYWRgO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LnJlcXVlc3Q8R3JpZE1vZGVsPigncG9zdCcsIGAke3RoaXMuY29uZmlndXJhdGlvbi5iYXNlUGF0aH0ke2xvY2FsVmFyUGF0aH1gLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNvbnRleHQ6IGxvY2FsVmFySHR0cENvbnRleHQsXG4gICAgICAgICAgICAgICAgcmVzcG9uc2VUeXBlOiA8YW55PnJlc3BvbnNlVHlwZV8sXG4gICAgICAgICAgICAgICAgd2l0aENyZWRlbnRpYWxzOiB0aGlzLmNvbmZpZ3VyYXRpb24ud2l0aENyZWRlbnRpYWxzLFxuICAgICAgICAgICAgICAgIGhlYWRlcnM6IGxvY2FsVmFySGVhZGVycyxcbiAgICAgICAgICAgICAgICBvYnNlcnZlOiBvYnNlcnZlLFxuICAgICAgICAgICAgICAgIHJlcG9ydFByb2dyZXNzOiByZXBvcnRQcm9ncmVzc1xuICAgICAgICAgICAgfVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFxuICAgICAqIEBwYXJhbSB1dWlkIFxuICAgICAqIEBwYXJhbSBncmlkSWQgXG4gICAgICogQHBhcmFtIHJvd0lkIFxuICAgICAqIEBwYXJhbSBzZWxlY3RlZCBcbiAgICAgKiBAcGFyYW0gb2JzZXJ2ZSBzZXQgd2hldGhlciBvciBub3QgdG8gcmV0dXJuIHRoZSBkYXRhIE9ic2VydmFibGUgYXMgdGhlIGJvZHksIHJlc3BvbnNlIG9yIGV2ZW50cy4gZGVmYXVsdHMgdG8gcmV0dXJuaW5nIHRoZSBib2R5LlxuICAgICAqIEBwYXJhbSByZXBvcnRQcm9ncmVzcyBmbGFnIHRvIHJlcG9ydCByZXF1ZXN0IGFuZCByZXNwb25zZSBwcm9ncmVzcy5cbiAgICAgKi9cbiAgICBwdWJsaWMgc2VsZWN0KHV1aWQ6IHN0cmluZywgZ3JpZElkOiBzdHJpbmcsIHJvd0lkOiBzdHJpbmcsIHNlbGVjdGVkPzogYm9vbGVhbiwgb2JzZXJ2ZT86ICdib2R5JywgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuLCBvcHRpb25zPzoge2h0dHBIZWFkZXJBY2NlcHQ/OiAnYXBwbGljYXRpb24vanNvbicsIGNvbnRleHQ/OiBIdHRwQ29udGV4dH0pOiBPYnNlcnZhYmxlPFZpZXdDb250ZXh0Q2hhbmdlPjtcbiAgICBwdWJsaWMgc2VsZWN0KHV1aWQ6IHN0cmluZywgZ3JpZElkOiBzdHJpbmcsIHJvd0lkOiBzdHJpbmcsIHNlbGVjdGVkPzogYm9vbGVhbiwgb2JzZXJ2ZT86ICdyZXNwb25zZScsIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbiwgb3B0aW9ucz86IHtodHRwSGVhZGVyQWNjZXB0PzogJ2FwcGxpY2F0aW9uL2pzb24nLCBjb250ZXh0PzogSHR0cENvbnRleHR9KTogT2JzZXJ2YWJsZTxIdHRwUmVzcG9uc2U8Vmlld0NvbnRleHRDaGFuZ2U+PjtcbiAgICBwdWJsaWMgc2VsZWN0KHV1aWQ6IHN0cmluZywgZ3JpZElkOiBzdHJpbmcsIHJvd0lkOiBzdHJpbmcsIHNlbGVjdGVkPzogYm9vbGVhbiwgb2JzZXJ2ZT86ICdldmVudHMnLCByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW4sIG9wdGlvbnM/OiB7aHR0cEhlYWRlckFjY2VwdD86ICdhcHBsaWNhdGlvbi9qc29uJywgY29udGV4dD86IEh0dHBDb250ZXh0fSk6IE9ic2VydmFibGU8SHR0cEV2ZW50PFZpZXdDb250ZXh0Q2hhbmdlPj47XG4gICAgcHVibGljIHNlbGVjdCh1dWlkOiBzdHJpbmcsIGdyaWRJZDogc3RyaW5nLCByb3dJZDogc3RyaW5nLCBzZWxlY3RlZD86IGJvb2xlYW4sIG9ic2VydmU6IGFueSA9ICdib2R5JywgcmVwb3J0UHJvZ3Jlc3M6IGJvb2xlYW4gPSBmYWxzZSwgb3B0aW9ucz86IHtodHRwSGVhZGVyQWNjZXB0PzogJ2FwcGxpY2F0aW9uL2pzb24nLCBjb250ZXh0PzogSHR0cENvbnRleHR9KTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICAgICAgaWYgKHV1aWQgPT09IG51bGwgfHwgdXVpZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1JlcXVpcmVkIHBhcmFtZXRlciB1dWlkIHdhcyBudWxsIG9yIHVuZGVmaW5lZCB3aGVuIGNhbGxpbmcgc2VsZWN0LicpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChncmlkSWQgPT09IG51bGwgfHwgZ3JpZElkID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignUmVxdWlyZWQgcGFyYW1ldGVyIGdyaWRJZCB3YXMgbnVsbCBvciB1bmRlZmluZWQgd2hlbiBjYWxsaW5nIHNlbGVjdC4nKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocm93SWQgPT09IG51bGwgfHwgcm93SWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdSZXF1aXJlZCBwYXJhbWV0ZXIgcm93SWQgd2FzIG51bGwgb3IgdW5kZWZpbmVkIHdoZW4gY2FsbGluZyBzZWxlY3QuJyk7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgbG9jYWxWYXJIZWFkZXJzID0gdGhpcy5kZWZhdWx0SGVhZGVycztcbiAgICAgICAgaWYgKHNlbGVjdGVkICE9PSB1bmRlZmluZWQgJiYgc2VsZWN0ZWQgIT09IG51bGwpIHtcbiAgICAgICAgICAgIGxvY2FsVmFySGVhZGVycyA9IGxvY2FsVmFySGVhZGVycy5zZXQoJ3NlbGVjdGVkJywgU3RyaW5nKHNlbGVjdGVkKSk7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgbG9jYWxWYXJIdHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQ6IHN0cmluZyB8IHVuZGVmaW5lZCA9IG9wdGlvbnMgJiYgb3B0aW9ucy5odHRwSGVhZGVyQWNjZXB0O1xuICAgICAgICBpZiAobG9jYWxWYXJIdHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgLy8gdG8gZGV0ZXJtaW5lIHRoZSBBY2NlcHQgaGVhZGVyXG4gICAgICAgICAgICBjb25zdCBodHRwSGVhZGVyQWNjZXB0czogc3RyaW5nW10gPSBbXG4gICAgICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL2pzb24nXG4gICAgICAgICAgICBdO1xuICAgICAgICAgICAgbG9jYWxWYXJIdHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQgPSB0aGlzLmNvbmZpZ3VyYXRpb24uc2VsZWN0SGVhZGVyQWNjZXB0KGh0dHBIZWFkZXJBY2NlcHRzKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobG9jYWxWYXJIdHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgbG9jYWxWYXJIZWFkZXJzID0gbG9jYWxWYXJIZWFkZXJzLnNldCgnQWNjZXB0JywgbG9jYWxWYXJIdHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQpO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGxvY2FsVmFySHR0cENvbnRleHQ6IEh0dHBDb250ZXh0IHwgdW5kZWZpbmVkID0gb3B0aW9ucyAmJiBvcHRpb25zLmNvbnRleHQ7XG4gICAgICAgIGlmIChsb2NhbFZhckh0dHBDb250ZXh0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGxvY2FsVmFySHR0cENvbnRleHQgPSBuZXcgSHR0cENvbnRleHQoKTtcbiAgICAgICAgfVxuXG5cbiAgICAgICAgbGV0IHJlc3BvbnNlVHlwZV86ICd0ZXh0JyB8ICdqc29uJyB8ICdibG9iJyA9ICdqc29uJztcbiAgICAgICAgaWYgKGxvY2FsVmFySHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkKSB7XG4gICAgICAgICAgICBpZiAobG9jYWxWYXJIdHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQuc3RhcnRzV2l0aCgndGV4dCcpKSB7XG4gICAgICAgICAgICAgICAgcmVzcG9uc2VUeXBlXyA9ICd0ZXh0JztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5jb25maWd1cmF0aW9uLmlzSnNvbk1pbWUobG9jYWxWYXJIdHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQpKSB7XG4gICAgICAgICAgICAgICAgcmVzcG9uc2VUeXBlXyA9ICdqc29uJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmVzcG9uc2VUeXBlXyA9ICdibG9iJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBsb2NhbFZhclBhdGggPSBgL2dyaWQvJHt0aGlzLmNvbmZpZ3VyYXRpb24uZW5jb2RlUGFyYW0oe25hbWU6IFwidXVpZFwiLCB2YWx1ZTogdXVpZCwgaW46IFwicGF0aFwiLCBzdHlsZTogXCJzaW1wbGVcIiwgZXhwbG9kZTogZmFsc2UsIGRhdGFUeXBlOiBcInN0cmluZ1wiLCBkYXRhRm9ybWF0OiBcInV1aWRcIn0pfS8ke3RoaXMuY29uZmlndXJhdGlvbi5lbmNvZGVQYXJhbSh7bmFtZTogXCJncmlkSWRcIiwgdmFsdWU6IGdyaWRJZCwgaW46IFwicGF0aFwiLCBzdHlsZTogXCJzaW1wbGVcIiwgZXhwbG9kZTogZmFsc2UsIGRhdGFUeXBlOiBcInN0cmluZ1wiLCBkYXRhRm9ybWF0OiB1bmRlZmluZWR9KX0vJHt0aGlzLmNvbmZpZ3VyYXRpb24uZW5jb2RlUGFyYW0oe25hbWU6IFwicm93SWRcIiwgdmFsdWU6IHJvd0lkLCBpbjogXCJwYXRoXCIsIHN0eWxlOiBcInNpbXBsZVwiLCBleHBsb2RlOiBmYWxzZSwgZGF0YVR5cGU6IFwic3RyaW5nXCIsIGRhdGFGb3JtYXQ6IHVuZGVmaW5lZH0pfS9zZWxlY3RgO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LnJlcXVlc3Q8Vmlld0NvbnRleHRDaGFuZ2U+KCdwb3N0JywgYCR7dGhpcy5jb25maWd1cmF0aW9uLmJhc2VQYXRofSR7bG9jYWxWYXJQYXRofWAsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY29udGV4dDogbG9jYWxWYXJIdHRwQ29udGV4dCxcbiAgICAgICAgICAgICAgICByZXNwb25zZVR5cGU6IDxhbnk+cmVzcG9uc2VUeXBlXyxcbiAgICAgICAgICAgICAgICB3aXRoQ3JlZGVudGlhbHM6IHRoaXMuY29uZmlndXJhdGlvbi53aXRoQ3JlZGVudGlhbHMsXG4gICAgICAgICAgICAgICAgaGVhZGVyczogbG9jYWxWYXJIZWFkZXJzLFxuICAgICAgICAgICAgICAgIG9ic2VydmU6IG9ic2VydmUsXG4gICAgICAgICAgICAgICAgcmVwb3J0UHJvZ3Jlc3M6IHJlcG9ydFByb2dyZXNzXG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogXG4gICAgICogQHBhcmFtIHV1aWQgXG4gICAgICogQHBhcmFtIGdyaWRJZCBcbiAgICAgKiBAcGFyYW0gc2VsZWN0ZWQgXG4gICAgICogQHBhcmFtIG9ic2VydmUgc2V0IHdoZXRoZXIgb3Igbm90IHRvIHJldHVybiB0aGUgZGF0YSBPYnNlcnZhYmxlIGFzIHRoZSBib2R5LCByZXNwb25zZSBvciBldmVudHMuIGRlZmF1bHRzIHRvIHJldHVybmluZyB0aGUgYm9keS5cbiAgICAgKiBAcGFyYW0gcmVwb3J0UHJvZ3Jlc3MgZmxhZyB0byByZXBvcnQgcmVxdWVzdCBhbmQgcmVzcG9uc2UgcHJvZ3Jlc3MuXG4gICAgICovXG4gICAgcHVibGljIHNlbGVjdEFsbCh1dWlkOiBzdHJpbmcsIGdyaWRJZDogc3RyaW5nLCBzZWxlY3RlZD86IGJvb2xlYW4sIG9ic2VydmU/OiAnYm9keScsIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbiwgb3B0aW9ucz86IHtodHRwSGVhZGVyQWNjZXB0PzogJ2FwcGxpY2F0aW9uL2pzb24nLCBjb250ZXh0PzogSHR0cENvbnRleHR9KTogT2JzZXJ2YWJsZTxWaWV3Q29udGV4dENoYW5nZT47XG4gICAgcHVibGljIHNlbGVjdEFsbCh1dWlkOiBzdHJpbmcsIGdyaWRJZDogc3RyaW5nLCBzZWxlY3RlZD86IGJvb2xlYW4sIG9ic2VydmU/OiAncmVzcG9uc2UnLCByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW4sIG9wdGlvbnM/OiB7aHR0cEhlYWRlckFjY2VwdD86ICdhcHBsaWNhdGlvbi9qc29uJywgY29udGV4dD86IEh0dHBDb250ZXh0fSk6IE9ic2VydmFibGU8SHR0cFJlc3BvbnNlPFZpZXdDb250ZXh0Q2hhbmdlPj47XG4gICAgcHVibGljIHNlbGVjdEFsbCh1dWlkOiBzdHJpbmcsIGdyaWRJZDogc3RyaW5nLCBzZWxlY3RlZD86IGJvb2xlYW4sIG9ic2VydmU/OiAnZXZlbnRzJywgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuLCBvcHRpb25zPzoge2h0dHBIZWFkZXJBY2NlcHQ/OiAnYXBwbGljYXRpb24vanNvbicsIGNvbnRleHQ/OiBIdHRwQ29udGV4dH0pOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxWaWV3Q29udGV4dENoYW5nZT4+O1xuICAgIHB1YmxpYyBzZWxlY3RBbGwodXVpZDogc3RyaW5nLCBncmlkSWQ6IHN0cmluZywgc2VsZWN0ZWQ/OiBib29sZWFuLCBvYnNlcnZlOiBhbnkgPSAnYm9keScsIHJlcG9ydFByb2dyZXNzOiBib29sZWFuID0gZmFsc2UsIG9wdGlvbnM/OiB7aHR0cEhlYWRlckFjY2VwdD86ICdhcHBsaWNhdGlvbi9qc29uJywgY29udGV4dD86IEh0dHBDb250ZXh0fSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgICAgIGlmICh1dWlkID09PSBudWxsIHx8IHV1aWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdSZXF1aXJlZCBwYXJhbWV0ZXIgdXVpZCB3YXMgbnVsbCBvciB1bmRlZmluZWQgd2hlbiBjYWxsaW5nIHNlbGVjdEFsbC4nKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZ3JpZElkID09PSBudWxsIHx8IGdyaWRJZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1JlcXVpcmVkIHBhcmFtZXRlciBncmlkSWQgd2FzIG51bGwgb3IgdW5kZWZpbmVkIHdoZW4gY2FsbGluZyBzZWxlY3RBbGwuJyk7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgbG9jYWxWYXJIZWFkZXJzID0gdGhpcy5kZWZhdWx0SGVhZGVycztcbiAgICAgICAgaWYgKHNlbGVjdGVkICE9PSB1bmRlZmluZWQgJiYgc2VsZWN0ZWQgIT09IG51bGwpIHtcbiAgICAgICAgICAgIGxvY2FsVmFySGVhZGVycyA9IGxvY2FsVmFySGVhZGVycy5zZXQoJ3NlbGVjdGVkJywgU3RyaW5nKHNlbGVjdGVkKSk7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgbG9jYWxWYXJIdHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQ6IHN0cmluZyB8IHVuZGVmaW5lZCA9IG9wdGlvbnMgJiYgb3B0aW9ucy5odHRwSGVhZGVyQWNjZXB0O1xuICAgICAgICBpZiAobG9jYWxWYXJIdHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgLy8gdG8gZGV0ZXJtaW5lIHRoZSBBY2NlcHQgaGVhZGVyXG4gICAgICAgICAgICBjb25zdCBodHRwSGVhZGVyQWNjZXB0czogc3RyaW5nW10gPSBbXG4gICAgICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL2pzb24nXG4gICAgICAgICAgICBdO1xuICAgICAgICAgICAgbG9jYWxWYXJIdHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQgPSB0aGlzLmNvbmZpZ3VyYXRpb24uc2VsZWN0SGVhZGVyQWNjZXB0KGh0dHBIZWFkZXJBY2NlcHRzKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobG9jYWxWYXJIdHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgbG9jYWxWYXJIZWFkZXJzID0gbG9jYWxWYXJIZWFkZXJzLnNldCgnQWNjZXB0JywgbG9jYWxWYXJIdHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQpO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGxvY2FsVmFySHR0cENvbnRleHQ6IEh0dHBDb250ZXh0IHwgdW5kZWZpbmVkID0gb3B0aW9ucyAmJiBvcHRpb25zLmNvbnRleHQ7XG4gICAgICAgIGlmIChsb2NhbFZhckh0dHBDb250ZXh0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGxvY2FsVmFySHR0cENvbnRleHQgPSBuZXcgSHR0cENvbnRleHQoKTtcbiAgICAgICAgfVxuXG5cbiAgICAgICAgbGV0IHJlc3BvbnNlVHlwZV86ICd0ZXh0JyB8ICdqc29uJyB8ICdibG9iJyA9ICdqc29uJztcbiAgICAgICAgaWYgKGxvY2FsVmFySHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkKSB7XG4gICAgICAgICAgICBpZiAobG9jYWxWYXJIdHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQuc3RhcnRzV2l0aCgndGV4dCcpKSB7XG4gICAgICAgICAgICAgICAgcmVzcG9uc2VUeXBlXyA9ICd0ZXh0JztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5jb25maWd1cmF0aW9uLmlzSnNvbk1pbWUobG9jYWxWYXJIdHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQpKSB7XG4gICAgICAgICAgICAgICAgcmVzcG9uc2VUeXBlXyA9ICdqc29uJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmVzcG9uc2VUeXBlXyA9ICdibG9iJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBsb2NhbFZhclBhdGggPSBgL2dyaWQvJHt0aGlzLmNvbmZpZ3VyYXRpb24uZW5jb2RlUGFyYW0oe25hbWU6IFwidXVpZFwiLCB2YWx1ZTogdXVpZCwgaW46IFwicGF0aFwiLCBzdHlsZTogXCJzaW1wbGVcIiwgZXhwbG9kZTogZmFsc2UsIGRhdGFUeXBlOiBcInN0cmluZ1wiLCBkYXRhRm9ybWF0OiBcInV1aWRcIn0pfS8ke3RoaXMuY29uZmlndXJhdGlvbi5lbmNvZGVQYXJhbSh7bmFtZTogXCJncmlkSWRcIiwgdmFsdWU6IGdyaWRJZCwgaW46IFwicGF0aFwiLCBzdHlsZTogXCJzaW1wbGVcIiwgZXhwbG9kZTogZmFsc2UsIGRhdGFUeXBlOiBcInN0cmluZ1wiLCBkYXRhRm9ybWF0OiB1bmRlZmluZWR9KX0vc2VsZWN0YDtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5yZXF1ZXN0PFZpZXdDb250ZXh0Q2hhbmdlPigncG9zdCcsIGAke3RoaXMuY29uZmlndXJhdGlvbi5iYXNlUGF0aH0ke2xvY2FsVmFyUGF0aH1gLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNvbnRleHQ6IGxvY2FsVmFySHR0cENvbnRleHQsXG4gICAgICAgICAgICAgICAgcmVzcG9uc2VUeXBlOiA8YW55PnJlc3BvbnNlVHlwZV8sXG4gICAgICAgICAgICAgICAgd2l0aENyZWRlbnRpYWxzOiB0aGlzLmNvbmZpZ3VyYXRpb24ud2l0aENyZWRlbnRpYWxzLFxuICAgICAgICAgICAgICAgIGhlYWRlcnM6IGxvY2FsVmFySGVhZGVycyxcbiAgICAgICAgICAgICAgICBvYnNlcnZlOiBvYnNlcnZlLFxuICAgICAgICAgICAgICAgIHJlcG9ydFByb2dyZXNzOiByZXBvcnRQcm9ncmVzc1xuICAgICAgICAgICAgfVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFxuICAgICAqIEBwYXJhbSB1dWlkIFxuICAgICAqIEBwYXJhbSBncmlkSWQgXG4gICAgICogQHBhcmFtIGdyaWRTZWxlY3Rpb25DaGFuZ2UgXG4gICAgICogQHBhcmFtIG9ic2VydmUgc2V0IHdoZXRoZXIgb3Igbm90IHRvIHJldHVybiB0aGUgZGF0YSBPYnNlcnZhYmxlIGFzIHRoZSBib2R5LCByZXNwb25zZSBvciBldmVudHMuIGRlZmF1bHRzIHRvIHJldHVybmluZyB0aGUgYm9keS5cbiAgICAgKiBAcGFyYW0gcmVwb3J0UHJvZ3Jlc3MgZmxhZyB0byByZXBvcnQgcmVxdWVzdCBhbmQgcmVzcG9uc2UgcHJvZ3Jlc3MuXG4gICAgICovXG4gICAgcHVibGljIHNlbGVjdFJvd3ModXVpZDogc3RyaW5nLCBncmlkSWQ6IHN0cmluZywgZ3JpZFNlbGVjdGlvbkNoYW5nZTogR3JpZFNlbGVjdGlvbkNoYW5nZSwgb2JzZXJ2ZT86ICdib2R5JywgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuLCBvcHRpb25zPzoge2h0dHBIZWFkZXJBY2NlcHQ/OiAnYXBwbGljYXRpb24vanNvbicsIGNvbnRleHQ/OiBIdHRwQ29udGV4dH0pOiBPYnNlcnZhYmxlPFZpZXdDb250ZXh0Q2hhbmdlPjtcbiAgICBwdWJsaWMgc2VsZWN0Um93cyh1dWlkOiBzdHJpbmcsIGdyaWRJZDogc3RyaW5nLCBncmlkU2VsZWN0aW9uQ2hhbmdlOiBHcmlkU2VsZWN0aW9uQ2hhbmdlLCBvYnNlcnZlPzogJ3Jlc3BvbnNlJywgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuLCBvcHRpb25zPzoge2h0dHBIZWFkZXJBY2NlcHQ/OiAnYXBwbGljYXRpb24vanNvbicsIGNvbnRleHQ/OiBIdHRwQ29udGV4dH0pOiBPYnNlcnZhYmxlPEh0dHBSZXNwb25zZTxWaWV3Q29udGV4dENoYW5nZT4+O1xuICAgIHB1YmxpYyBzZWxlY3RSb3dzKHV1aWQ6IHN0cmluZywgZ3JpZElkOiBzdHJpbmcsIGdyaWRTZWxlY3Rpb25DaGFuZ2U6IEdyaWRTZWxlY3Rpb25DaGFuZ2UsIG9ic2VydmU/OiAnZXZlbnRzJywgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuLCBvcHRpb25zPzoge2h0dHBIZWFkZXJBY2NlcHQ/OiAnYXBwbGljYXRpb24vanNvbicsIGNvbnRleHQ/OiBIdHRwQ29udGV4dH0pOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxWaWV3Q29udGV4dENoYW5nZT4+O1xuICAgIHB1YmxpYyBzZWxlY3RSb3dzKHV1aWQ6IHN0cmluZywgZ3JpZElkOiBzdHJpbmcsIGdyaWRTZWxlY3Rpb25DaGFuZ2U6IEdyaWRTZWxlY3Rpb25DaGFuZ2UsIG9ic2VydmU6IGFueSA9ICdib2R5JywgcmVwb3J0UHJvZ3Jlc3M6IGJvb2xlYW4gPSBmYWxzZSwgb3B0aW9ucz86IHtodHRwSGVhZGVyQWNjZXB0PzogJ2FwcGxpY2F0aW9uL2pzb24nLCBjb250ZXh0PzogSHR0cENvbnRleHR9KTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICAgICAgaWYgKHV1aWQgPT09IG51bGwgfHwgdXVpZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1JlcXVpcmVkIHBhcmFtZXRlciB1dWlkIHdhcyBudWxsIG9yIHVuZGVmaW5lZCB3aGVuIGNhbGxpbmcgc2VsZWN0Um93cy4nKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZ3JpZElkID09PSBudWxsIHx8IGdyaWRJZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1JlcXVpcmVkIHBhcmFtZXRlciBncmlkSWQgd2FzIG51bGwgb3IgdW5kZWZpbmVkIHdoZW4gY2FsbGluZyBzZWxlY3RSb3dzLicpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChncmlkU2VsZWN0aW9uQ2hhbmdlID09PSBudWxsIHx8IGdyaWRTZWxlY3Rpb25DaGFuZ2UgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdSZXF1aXJlZCBwYXJhbWV0ZXIgZ3JpZFNlbGVjdGlvbkNoYW5nZSB3YXMgbnVsbCBvciB1bmRlZmluZWQgd2hlbiBjYWxsaW5nIHNlbGVjdFJvd3MuJyk7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgbG9jYWxWYXJIZWFkZXJzID0gdGhpcy5kZWZhdWx0SGVhZGVycztcblxuICAgICAgICBsZXQgbG9jYWxWYXJIdHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQ6IHN0cmluZyB8IHVuZGVmaW5lZCA9IG9wdGlvbnMgJiYgb3B0aW9ucy5odHRwSGVhZGVyQWNjZXB0O1xuICAgICAgICBpZiAobG9jYWxWYXJIdHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgLy8gdG8gZGV0ZXJtaW5lIHRoZSBBY2NlcHQgaGVhZGVyXG4gICAgICAgICAgICBjb25zdCBodHRwSGVhZGVyQWNjZXB0czogc3RyaW5nW10gPSBbXG4gICAgICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL2pzb24nXG4gICAgICAgICAgICBdO1xuICAgICAgICAgICAgbG9jYWxWYXJIdHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQgPSB0aGlzLmNvbmZpZ3VyYXRpb24uc2VsZWN0SGVhZGVyQWNjZXB0KGh0dHBIZWFkZXJBY2NlcHRzKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobG9jYWxWYXJIdHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgbG9jYWxWYXJIZWFkZXJzID0gbG9jYWxWYXJIZWFkZXJzLnNldCgnQWNjZXB0JywgbG9jYWxWYXJIdHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQpO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGxvY2FsVmFySHR0cENvbnRleHQ6IEh0dHBDb250ZXh0IHwgdW5kZWZpbmVkID0gb3B0aW9ucyAmJiBvcHRpb25zLmNvbnRleHQ7XG4gICAgICAgIGlmIChsb2NhbFZhckh0dHBDb250ZXh0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGxvY2FsVmFySHR0cENvbnRleHQgPSBuZXcgSHR0cENvbnRleHQoKTtcbiAgICAgICAgfVxuXG5cbiAgICAgICAgLy8gdG8gZGV0ZXJtaW5lIHRoZSBDb250ZW50LVR5cGUgaGVhZGVyXG4gICAgICAgIGNvbnN0IGNvbnN1bWVzOiBzdHJpbmdbXSA9IFtcbiAgICAgICAgICAgICdhcHBsaWNhdGlvbi9qc29uJ1xuICAgICAgICBdO1xuICAgICAgICBjb25zdCBodHRwQ29udGVudFR5cGVTZWxlY3RlZDogc3RyaW5nIHwgdW5kZWZpbmVkID0gdGhpcy5jb25maWd1cmF0aW9uLnNlbGVjdEhlYWRlckNvbnRlbnRUeXBlKGNvbnN1bWVzKTtcbiAgICAgICAgaWYgKGh0dHBDb250ZW50VHlwZVNlbGVjdGVkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGxvY2FsVmFySGVhZGVycyA9IGxvY2FsVmFySGVhZGVycy5zZXQoJ0NvbnRlbnQtVHlwZScsIGh0dHBDb250ZW50VHlwZVNlbGVjdGVkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCByZXNwb25zZVR5cGVfOiAndGV4dCcgfCAnanNvbicgfCAnYmxvYicgPSAnanNvbic7XG4gICAgICAgIGlmIChsb2NhbFZhckh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZCkge1xuICAgICAgICAgICAgaWYgKGxvY2FsVmFySHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkLnN0YXJ0c1dpdGgoJ3RleHQnKSkge1xuICAgICAgICAgICAgICAgIHJlc3BvbnNlVHlwZV8gPSAndGV4dCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuY29uZmlndXJhdGlvbi5pc0pzb25NaW1lKGxvY2FsVmFySHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkKSkge1xuICAgICAgICAgICAgICAgIHJlc3BvbnNlVHlwZV8gPSAnanNvbic7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJlc3BvbnNlVHlwZV8gPSAnYmxvYic7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgbG9jYWxWYXJQYXRoID0gYC9ncmlkLyR7dGhpcy5jb25maWd1cmF0aW9uLmVuY29kZVBhcmFtKHtuYW1lOiBcInV1aWRcIiwgdmFsdWU6IHV1aWQsIGluOiBcInBhdGhcIiwgc3R5bGU6IFwic2ltcGxlXCIsIGV4cGxvZGU6IGZhbHNlLCBkYXRhVHlwZTogXCJzdHJpbmdcIiwgZGF0YUZvcm1hdDogXCJ1dWlkXCJ9KX0vJHt0aGlzLmNvbmZpZ3VyYXRpb24uZW5jb2RlUGFyYW0oe25hbWU6IFwiZ3JpZElkXCIsIHZhbHVlOiBncmlkSWQsIGluOiBcInBhdGhcIiwgc3R5bGU6IFwic2ltcGxlXCIsIGV4cGxvZGU6IGZhbHNlLCBkYXRhVHlwZTogXCJzdHJpbmdcIiwgZGF0YUZvcm1hdDogdW5kZWZpbmVkfSl9L3NlbGVjdHNgO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LnJlcXVlc3Q8Vmlld0NvbnRleHRDaGFuZ2U+KCdwb3N0JywgYCR7dGhpcy5jb25maWd1cmF0aW9uLmJhc2VQYXRofSR7bG9jYWxWYXJQYXRofWAsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY29udGV4dDogbG9jYWxWYXJIdHRwQ29udGV4dCxcbiAgICAgICAgICAgICAgICBib2R5OiBncmlkU2VsZWN0aW9uQ2hhbmdlLFxuICAgICAgICAgICAgICAgIHJlc3BvbnNlVHlwZTogPGFueT5yZXNwb25zZVR5cGVfLFxuICAgICAgICAgICAgICAgIHdpdGhDcmVkZW50aWFsczogdGhpcy5jb25maWd1cmF0aW9uLndpdGhDcmVkZW50aWFscyxcbiAgICAgICAgICAgICAgICBoZWFkZXJzOiBsb2NhbFZhckhlYWRlcnMsXG4gICAgICAgICAgICAgICAgb2JzZXJ2ZTogb2JzZXJ2ZSxcbiAgICAgICAgICAgICAgICByZXBvcnRQcm9ncmVzczogcmVwb3J0UHJvZ3Jlc3NcbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBcbiAgICAgKiBAcGFyYW0gdXVpZCBcbiAgICAgKiBAcGFyYW0gZ3JpZElkZW50aWZpZXIgXG4gICAgICogQHBhcmFtIG9mZnNldCBcbiAgICAgKiBAcGFyYW0gbGltaXQgXG4gICAgICogQHBhcmFtIG9ic2VydmUgc2V0IHdoZXRoZXIgb3Igbm90IHRvIHJldHVybiB0aGUgZGF0YSBPYnNlcnZhYmxlIGFzIHRoZSBib2R5LCByZXNwb25zZSBvciBldmVudHMuIGRlZmF1bHRzIHRvIHJldHVybmluZyB0aGUgYm9keS5cbiAgICAgKiBAcGFyYW0gcmVwb3J0UHJvZ3Jlc3MgZmxhZyB0byByZXBvcnQgcmVxdWVzdCBhbmQgcmVzcG9uc2UgcHJvZ3Jlc3MuXG4gICAgICovXG4gICAgcHVibGljIHNldFBhZ2UodXVpZDogc3RyaW5nLCBncmlkSWRlbnRpZmllcjogc3RyaW5nLCBvZmZzZXQ6IHN0cmluZywgbGltaXQ6IHN0cmluZywgb2JzZXJ2ZT86ICdib2R5JywgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuLCBvcHRpb25zPzoge2h0dHBIZWFkZXJBY2NlcHQ/OiB1bmRlZmluZWQsIGNvbnRleHQ/OiBIdHRwQ29udGV4dH0pOiBPYnNlcnZhYmxlPGFueT47XG4gICAgcHVibGljIHNldFBhZ2UodXVpZDogc3RyaW5nLCBncmlkSWRlbnRpZmllcjogc3RyaW5nLCBvZmZzZXQ6IHN0cmluZywgbGltaXQ6IHN0cmluZywgb2JzZXJ2ZT86ICdyZXNwb25zZScsIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbiwgb3B0aW9ucz86IHtodHRwSGVhZGVyQWNjZXB0PzogdW5kZWZpbmVkLCBjb250ZXh0PzogSHR0cENvbnRleHR9KTogT2JzZXJ2YWJsZTxIdHRwUmVzcG9uc2U8YW55Pj47XG4gICAgcHVibGljIHNldFBhZ2UodXVpZDogc3RyaW5nLCBncmlkSWRlbnRpZmllcjogc3RyaW5nLCBvZmZzZXQ6IHN0cmluZywgbGltaXQ6IHN0cmluZywgb2JzZXJ2ZT86ICdldmVudHMnLCByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW4sIG9wdGlvbnM/OiB7aHR0cEhlYWRlckFjY2VwdD86IHVuZGVmaW5lZCwgY29udGV4dD86IEh0dHBDb250ZXh0fSk6IE9ic2VydmFibGU8SHR0cEV2ZW50PGFueT4+O1xuICAgIHB1YmxpYyBzZXRQYWdlKHV1aWQ6IHN0cmluZywgZ3JpZElkZW50aWZpZXI6IHN0cmluZywgb2Zmc2V0OiBzdHJpbmcsIGxpbWl0OiBzdHJpbmcsIG9ic2VydmU6IGFueSA9ICdib2R5JywgcmVwb3J0UHJvZ3Jlc3M6IGJvb2xlYW4gPSBmYWxzZSwgb3B0aW9ucz86IHtodHRwSGVhZGVyQWNjZXB0PzogdW5kZWZpbmVkLCBjb250ZXh0PzogSHR0cENvbnRleHR9KTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICAgICAgaWYgKHV1aWQgPT09IG51bGwgfHwgdXVpZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1JlcXVpcmVkIHBhcmFtZXRlciB1dWlkIHdhcyBudWxsIG9yIHVuZGVmaW5lZCB3aGVuIGNhbGxpbmcgc2V0UGFnZS4nKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZ3JpZElkZW50aWZpZXIgPT09IG51bGwgfHwgZ3JpZElkZW50aWZpZXIgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdSZXF1aXJlZCBwYXJhbWV0ZXIgZ3JpZElkZW50aWZpZXIgd2FzIG51bGwgb3IgdW5kZWZpbmVkIHdoZW4gY2FsbGluZyBzZXRQYWdlLicpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvZmZzZXQgPT09IG51bGwgfHwgb2Zmc2V0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignUmVxdWlyZWQgcGFyYW1ldGVyIG9mZnNldCB3YXMgbnVsbCBvciB1bmRlZmluZWQgd2hlbiBjYWxsaW5nIHNldFBhZ2UuJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGxpbWl0ID09PSBudWxsIHx8IGxpbWl0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignUmVxdWlyZWQgcGFyYW1ldGVyIGxpbWl0IHdhcyBudWxsIG9yIHVuZGVmaW5lZCB3aGVuIGNhbGxpbmcgc2V0UGFnZS4nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBsb2NhbFZhckhlYWRlcnMgPSB0aGlzLmRlZmF1bHRIZWFkZXJzO1xuXG4gICAgICAgIGxldCBsb2NhbFZhckh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZDogc3RyaW5nIHwgdW5kZWZpbmVkID0gb3B0aW9ucyAmJiBvcHRpb25zLmh0dHBIZWFkZXJBY2NlcHQ7XG4gICAgICAgIGlmIChsb2NhbFZhckh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAvLyB0byBkZXRlcm1pbmUgdGhlIEFjY2VwdCBoZWFkZXJcbiAgICAgICAgICAgIGNvbnN0IGh0dHBIZWFkZXJBY2NlcHRzOiBzdHJpbmdbXSA9IFtcbiAgICAgICAgICAgIF07XG4gICAgICAgICAgICBsb2NhbFZhckh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZCA9IHRoaXMuY29uZmlndXJhdGlvbi5zZWxlY3RIZWFkZXJBY2NlcHQoaHR0cEhlYWRlckFjY2VwdHMpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChsb2NhbFZhckh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBsb2NhbFZhckhlYWRlcnMgPSBsb2NhbFZhckhlYWRlcnMuc2V0KCdBY2NlcHQnLCBsb2NhbFZhckh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZCk7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgbG9jYWxWYXJIdHRwQ29udGV4dDogSHR0cENvbnRleHQgfCB1bmRlZmluZWQgPSBvcHRpb25zICYmIG9wdGlvbnMuY29udGV4dDtcbiAgICAgICAgaWYgKGxvY2FsVmFySHR0cENvbnRleHQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgbG9jYWxWYXJIdHRwQ29udGV4dCA9IG5ldyBIdHRwQ29udGV4dCgpO1xuICAgICAgICB9XG5cblxuICAgICAgICBsZXQgcmVzcG9uc2VUeXBlXzogJ3RleHQnIHwgJ2pzb24nIHwgJ2Jsb2InID0gJ2pzb24nO1xuICAgICAgICBpZiAobG9jYWxWYXJIdHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQpIHtcbiAgICAgICAgICAgIGlmIChsb2NhbFZhckh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZC5zdGFydHNXaXRoKCd0ZXh0JykpIHtcbiAgICAgICAgICAgICAgICByZXNwb25zZVR5cGVfID0gJ3RleHQnO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmNvbmZpZ3VyYXRpb24uaXNKc29uTWltZShsb2NhbFZhckh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZCkpIHtcbiAgICAgICAgICAgICAgICByZXNwb25zZVR5cGVfID0gJ2pzb24nO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXNwb25zZVR5cGVfID0gJ2Jsb2InO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGxvY2FsVmFyUGF0aCA9IGAvZ3JpZC8ke3RoaXMuY29uZmlndXJhdGlvbi5lbmNvZGVQYXJhbSh7bmFtZTogXCJ1dWlkXCIsIHZhbHVlOiB1dWlkLCBpbjogXCJwYXRoXCIsIHN0eWxlOiBcInNpbXBsZVwiLCBleHBsb2RlOiBmYWxzZSwgZGF0YVR5cGU6IFwic3RyaW5nXCIsIGRhdGFGb3JtYXQ6IFwidXVpZFwifSl9LyR7dGhpcy5jb25maWd1cmF0aW9uLmVuY29kZVBhcmFtKHtuYW1lOiBcImdyaWRJZGVudGlmaWVyXCIsIHZhbHVlOiBncmlkSWRlbnRpZmllciwgaW46IFwicGF0aFwiLCBzdHlsZTogXCJzaW1wbGVcIiwgZXhwbG9kZTogZmFsc2UsIGRhdGFUeXBlOiBcInN0cmluZ1wiLCBkYXRhRm9ybWF0OiB1bmRlZmluZWR9KX0vcGFnZS8ke3RoaXMuY29uZmlndXJhdGlvbi5lbmNvZGVQYXJhbSh7bmFtZTogXCJvZmZzZXRcIiwgdmFsdWU6IG9mZnNldCwgaW46IFwicGF0aFwiLCBzdHlsZTogXCJzaW1wbGVcIiwgZXhwbG9kZTogZmFsc2UsIGRhdGFUeXBlOiBcInN0cmluZ1wiLCBkYXRhRm9ybWF0OiB1bmRlZmluZWR9KX0vJHt0aGlzLmNvbmZpZ3VyYXRpb24uZW5jb2RlUGFyYW0oe25hbWU6IFwibGltaXRcIiwgdmFsdWU6IGxpbWl0LCBpbjogXCJwYXRoXCIsIHN0eWxlOiBcInNpbXBsZVwiLCBleHBsb2RlOiBmYWxzZSwgZGF0YVR5cGU6IFwic3RyaW5nXCIsIGRhdGFGb3JtYXQ6IHVuZGVmaW5lZH0pfWA7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQucmVxdWVzdDxhbnk+KCdwb3N0JywgYCR7dGhpcy5jb25maWd1cmF0aW9uLmJhc2VQYXRofSR7bG9jYWxWYXJQYXRofWAsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY29udGV4dDogbG9jYWxWYXJIdHRwQ29udGV4dCxcbiAgICAgICAgICAgICAgICByZXNwb25zZVR5cGU6IDxhbnk+cmVzcG9uc2VUeXBlXyxcbiAgICAgICAgICAgICAgICB3aXRoQ3JlZGVudGlhbHM6IHRoaXMuY29uZmlndXJhdGlvbi53aXRoQ3JlZGVudGlhbHMsXG4gICAgICAgICAgICAgICAgaGVhZGVyczogbG9jYWxWYXJIZWFkZXJzLFxuICAgICAgICAgICAgICAgIG9ic2VydmU6IG9ic2VydmUsXG4gICAgICAgICAgICAgICAgcmVwb3J0UHJvZ3Jlc3M6IHJlcG9ydFByb2dyZXNzXG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogXG4gICAgICogQHBhcmFtIHV1aWQgXG4gICAgICogQHBhcmFtIGdyaWRJZGVudGlmaWVyIFxuICAgICAqIEBwYXJhbSBncmlkVXBkYXRlRGF0YSBcbiAgICAgKiBAcGFyYW0gb2JzZXJ2ZSBzZXQgd2hldGhlciBvciBub3QgdG8gcmV0dXJuIHRoZSBkYXRhIE9ic2VydmFibGUgYXMgdGhlIGJvZHksIHJlc3BvbnNlIG9yIGV2ZW50cy4gZGVmYXVsdHMgdG8gcmV0dXJuaW5nIHRoZSBib2R5LlxuICAgICAqIEBwYXJhbSByZXBvcnRQcm9ncmVzcyBmbGFnIHRvIHJlcG9ydCByZXF1ZXN0IGFuZCByZXNwb25zZSBwcm9ncmVzcy5cbiAgICAgKi9cbiAgICBwdWJsaWMgdXBkYXRlKHV1aWQ6IHN0cmluZywgZ3JpZElkZW50aWZpZXI6IHN0cmluZywgZ3JpZFVwZGF0ZURhdGE6IEdyaWRVcGRhdGVEYXRhLCBvYnNlcnZlPzogJ2JvZHknLCByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW4sIG9wdGlvbnM/OiB7aHR0cEhlYWRlckFjY2VwdD86ICdhcHBsaWNhdGlvbi9qc29uJywgY29udGV4dD86IEh0dHBDb250ZXh0fSk6IE9ic2VydmFibGU8R3JpZE1vZGVsPjtcbiAgICBwdWJsaWMgdXBkYXRlKHV1aWQ6IHN0cmluZywgZ3JpZElkZW50aWZpZXI6IHN0cmluZywgZ3JpZFVwZGF0ZURhdGE6IEdyaWRVcGRhdGVEYXRhLCBvYnNlcnZlPzogJ3Jlc3BvbnNlJywgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuLCBvcHRpb25zPzoge2h0dHBIZWFkZXJBY2NlcHQ/OiAnYXBwbGljYXRpb24vanNvbicsIGNvbnRleHQ/OiBIdHRwQ29udGV4dH0pOiBPYnNlcnZhYmxlPEh0dHBSZXNwb25zZTxHcmlkTW9kZWw+PjtcbiAgICBwdWJsaWMgdXBkYXRlKHV1aWQ6IHN0cmluZywgZ3JpZElkZW50aWZpZXI6IHN0cmluZywgZ3JpZFVwZGF0ZURhdGE6IEdyaWRVcGRhdGVEYXRhLCBvYnNlcnZlPzogJ2V2ZW50cycsIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbiwgb3B0aW9ucz86IHtodHRwSGVhZGVyQWNjZXB0PzogJ2FwcGxpY2F0aW9uL2pzb24nLCBjb250ZXh0PzogSHR0cENvbnRleHR9KTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8R3JpZE1vZGVsPj47XG4gICAgcHVibGljIHVwZGF0ZSh1dWlkOiBzdHJpbmcsIGdyaWRJZGVudGlmaWVyOiBzdHJpbmcsIGdyaWRVcGRhdGVEYXRhOiBHcmlkVXBkYXRlRGF0YSwgb2JzZXJ2ZTogYW55ID0gJ2JvZHknLCByZXBvcnRQcm9ncmVzczogYm9vbGVhbiA9IGZhbHNlLCBvcHRpb25zPzoge2h0dHBIZWFkZXJBY2NlcHQ/OiAnYXBwbGljYXRpb24vanNvbicsIGNvbnRleHQ/OiBIdHRwQ29udGV4dH0pOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgICAgICBpZiAodXVpZCA9PT0gbnVsbCB8fCB1dWlkID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignUmVxdWlyZWQgcGFyYW1ldGVyIHV1aWQgd2FzIG51bGwgb3IgdW5kZWZpbmVkIHdoZW4gY2FsbGluZyB1cGRhdGUuJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGdyaWRJZGVudGlmaWVyID09PSBudWxsIHx8IGdyaWRJZGVudGlmaWVyID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignUmVxdWlyZWQgcGFyYW1ldGVyIGdyaWRJZGVudGlmaWVyIHdhcyBudWxsIG9yIHVuZGVmaW5lZCB3aGVuIGNhbGxpbmcgdXBkYXRlLicpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChncmlkVXBkYXRlRGF0YSA9PT0gbnVsbCB8fCBncmlkVXBkYXRlRGF0YSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1JlcXVpcmVkIHBhcmFtZXRlciBncmlkVXBkYXRlRGF0YSB3YXMgbnVsbCBvciB1bmRlZmluZWQgd2hlbiBjYWxsaW5nIHVwZGF0ZS4nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBsb2NhbFZhckhlYWRlcnMgPSB0aGlzLmRlZmF1bHRIZWFkZXJzO1xuXG4gICAgICAgIGxldCBsb2NhbFZhckh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZDogc3RyaW5nIHwgdW5kZWZpbmVkID0gb3B0aW9ucyAmJiBvcHRpb25zLmh0dHBIZWFkZXJBY2NlcHQ7XG4gICAgICAgIGlmIChsb2NhbFZhckh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAvLyB0byBkZXRlcm1pbmUgdGhlIEFjY2VwdCBoZWFkZXJcbiAgICAgICAgICAgIGNvbnN0IGh0dHBIZWFkZXJBY2NlcHRzOiBzdHJpbmdbXSA9IFtcbiAgICAgICAgICAgICAgICAnYXBwbGljYXRpb24vanNvbidcbiAgICAgICAgICAgIF07XG4gICAgICAgICAgICBsb2NhbFZhckh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZCA9IHRoaXMuY29uZmlndXJhdGlvbi5zZWxlY3RIZWFkZXJBY2NlcHQoaHR0cEhlYWRlckFjY2VwdHMpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChsb2NhbFZhckh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBsb2NhbFZhckhlYWRlcnMgPSBsb2NhbFZhckhlYWRlcnMuc2V0KCdBY2NlcHQnLCBsb2NhbFZhckh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZCk7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgbG9jYWxWYXJIdHRwQ29udGV4dDogSHR0cENvbnRleHQgfCB1bmRlZmluZWQgPSBvcHRpb25zICYmIG9wdGlvbnMuY29udGV4dDtcbiAgICAgICAgaWYgKGxvY2FsVmFySHR0cENvbnRleHQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgbG9jYWxWYXJIdHRwQ29udGV4dCA9IG5ldyBIdHRwQ29udGV4dCgpO1xuICAgICAgICB9XG5cblxuICAgICAgICAvLyB0byBkZXRlcm1pbmUgdGhlIENvbnRlbnQtVHlwZSBoZWFkZXJcbiAgICAgICAgY29uc3QgY29uc3VtZXM6IHN0cmluZ1tdID0gW1xuICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL2pzb24nXG4gICAgICAgIF07XG4gICAgICAgIGNvbnN0IGh0dHBDb250ZW50VHlwZVNlbGVjdGVkOiBzdHJpbmcgfCB1bmRlZmluZWQgPSB0aGlzLmNvbmZpZ3VyYXRpb24uc2VsZWN0SGVhZGVyQ29udGVudFR5cGUoY29uc3VtZXMpO1xuICAgICAgICBpZiAoaHR0cENvbnRlbnRUeXBlU2VsZWN0ZWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgbG9jYWxWYXJIZWFkZXJzID0gbG9jYWxWYXJIZWFkZXJzLnNldCgnQ29udGVudC1UeXBlJywgaHR0cENvbnRlbnRUeXBlU2VsZWN0ZWQpO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHJlc3BvbnNlVHlwZV86ICd0ZXh0JyB8ICdqc29uJyB8ICdibG9iJyA9ICdqc29uJztcbiAgICAgICAgaWYgKGxvY2FsVmFySHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkKSB7XG4gICAgICAgICAgICBpZiAobG9jYWxWYXJIdHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQuc3RhcnRzV2l0aCgndGV4dCcpKSB7XG4gICAgICAgICAgICAgICAgcmVzcG9uc2VUeXBlXyA9ICd0ZXh0JztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5jb25maWd1cmF0aW9uLmlzSnNvbk1pbWUobG9jYWxWYXJIdHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQpKSB7XG4gICAgICAgICAgICAgICAgcmVzcG9uc2VUeXBlXyA9ICdqc29uJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmVzcG9uc2VUeXBlXyA9ICdibG9iJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBsb2NhbFZhclBhdGggPSBgL2dyaWQvJHt0aGlzLmNvbmZpZ3VyYXRpb24uZW5jb2RlUGFyYW0oe25hbWU6IFwidXVpZFwiLCB2YWx1ZTogdXVpZCwgaW46IFwicGF0aFwiLCBzdHlsZTogXCJzaW1wbGVcIiwgZXhwbG9kZTogZmFsc2UsIGRhdGFUeXBlOiBcInN0cmluZ1wiLCBkYXRhRm9ybWF0OiBcInV1aWRcIn0pfS8ke3RoaXMuY29uZmlndXJhdGlvbi5lbmNvZGVQYXJhbSh7bmFtZTogXCJncmlkSWRlbnRpZmllclwiLCB2YWx1ZTogZ3JpZElkZW50aWZpZXIsIGluOiBcInBhdGhcIiwgc3R5bGU6IFwic2ltcGxlXCIsIGV4cGxvZGU6IGZhbHNlLCBkYXRhVHlwZTogXCJzdHJpbmdcIiwgZGF0YUZvcm1hdDogdW5kZWZpbmVkfSl9L3VwZGF0ZWA7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQucmVxdWVzdDxHcmlkTW9kZWw+KCdwb3N0JywgYCR7dGhpcy5jb25maWd1cmF0aW9uLmJhc2VQYXRofSR7bG9jYWxWYXJQYXRofWAsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY29udGV4dDogbG9jYWxWYXJIdHRwQ29udGV4dCxcbiAgICAgICAgICAgICAgICBib2R5OiBncmlkVXBkYXRlRGF0YSxcbiAgICAgICAgICAgICAgICByZXNwb25zZVR5cGU6IDxhbnk+cmVzcG9uc2VUeXBlXyxcbiAgICAgICAgICAgICAgICB3aXRoQ3JlZGVudGlhbHM6IHRoaXMuY29uZmlndXJhdGlvbi53aXRoQ3JlZGVudGlhbHMsXG4gICAgICAgICAgICAgICAgaGVhZGVyczogbG9jYWxWYXJIZWFkZXJzLFxuICAgICAgICAgICAgICAgIG9ic2VydmU6IG9ic2VydmUsXG4gICAgICAgICAgICAgICAgcmVwb3J0UHJvZ3Jlc3M6IHJlcG9ydFByb2dyZXNzXG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgfVxuXG59XG4iXX0=
@@ -1,40 +0,0 @@
1
- import { NgModule, SkipSelf, Optional } from '@angular/core';
2
- import { Configuration } from './configuration';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "@angular/common/http";
5
- export class ApiModule {
6
- static forRoot(configurationFactory) {
7
- return {
8
- ngModule: ApiModule,
9
- providers: [{ provide: Configuration, useFactory: configurationFactory }]
10
- };
11
- }
12
- constructor(parentModule, http) {
13
- if (parentModule) {
14
- throw new Error('ApiModule is already loaded. Import in your base AppModule only.');
15
- }
16
- if (!http) {
17
- throw new Error('You need to import the HttpClientModule in your AppModule! \n' +
18
- 'See also https://github.com/angular/angular/issues/20575');
19
- }
20
- }
21
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: ApiModule, deps: [{ token: ApiModule, optional: true, skipSelf: true }, { token: i1.HttpClient, optional: true }], target: i0.ɵɵFactoryTarget.NgModule }); }
22
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.11", ngImport: i0, type: ApiModule }); }
23
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: ApiModule }); }
24
- }
25
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: ApiModule, decorators: [{
26
- type: NgModule,
27
- args: [{
28
- imports: [],
29
- declarations: [],
30
- exports: [],
31
- providers: []
32
- }]
33
- }], ctorParameters: () => [{ type: ApiModule, decorators: [{
34
- type: Optional
35
- }, {
36
- type: SkipSelf
37
- }] }, { type: i1.HttpClient, decorators: [{
38
- type: Optional
39
- }] }] });
40
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LW5nLWNsaWVudC9zcmMvbGliL3NtYXJ0LWdyaWQvYXBpL2dyaWQtYXBpL2FwaS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBdUIsUUFBUSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7OztBQVVoRCxNQUFNLE9BQU8sU0FBUztJQUNYLE1BQU0sQ0FBQyxPQUFPLENBQUMsb0JBQXlDO1FBQzNELE9BQU87WUFDSCxRQUFRLEVBQUUsU0FBUztZQUNuQixTQUFTLEVBQUUsQ0FBRSxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsVUFBVSxFQUFFLG9CQUFvQixFQUFFLENBQUU7U0FDOUUsQ0FBQztJQUNOLENBQUM7SUFFRCxZQUFxQyxZQUF1QixFQUNuQyxJQUFnQjtRQUNyQyxJQUFJLFlBQVksRUFBRSxDQUFDO1lBQ2YsTUFBTSxJQUFJLEtBQUssQ0FBQyxrRUFBa0UsQ0FBQyxDQUFDO1FBQ3hGLENBQUM7UUFDRCxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDUixNQUFNLElBQUksS0FBSyxDQUFDLCtEQUErRDtnQkFDL0UsMERBQTBELENBQUMsQ0FBQztRQUNoRSxDQUFDO0lBQ0wsQ0FBQzsrR0FqQlEsU0FBUztnSEFBVCxTQUFTO2dIQUFULFNBQVM7OzRGQUFULFNBQVM7a0JBTnJCLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFPLEVBQUU7b0JBQ2hCLFlBQVksRUFBRSxFQUFFO29CQUNoQixPQUFPLEVBQU8sRUFBRTtvQkFDaEIsU0FBUyxFQUFFLEVBQUU7aUJBQ2Q7OzBCQVNpQixRQUFROzswQkFBSSxRQUFROzswQkFDcEIsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlLCBNb2R1bGVXaXRoUHJvdmlkZXJzLCBTa2lwU2VsZiwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbmZpZ3VyYXRpb24gfSBmcm9tICcuL2NvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcblxuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiAgICAgIFtdLFxuICBkZWNsYXJhdGlvbnM6IFtdLFxuICBleHBvcnRzOiAgICAgIFtdLFxuICBwcm92aWRlcnM6IFtdXG59KVxuZXhwb3J0IGNsYXNzIEFwaU1vZHVsZSB7XG4gICAgcHVibGljIHN0YXRpYyBmb3JSb290KGNvbmZpZ3VyYXRpb25GYWN0b3J5OiAoKSA9PiBDb25maWd1cmF0aW9uKTogTW9kdWxlV2l0aFByb3ZpZGVyczxBcGlNb2R1bGU+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIG5nTW9kdWxlOiBBcGlNb2R1bGUsXG4gICAgICAgICAgICBwcm92aWRlcnM6IFsgeyBwcm92aWRlOiBDb25maWd1cmF0aW9uLCB1c2VGYWN0b3J5OiBjb25maWd1cmF0aW9uRmFjdG9yeSB9IF1cbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvciggQE9wdGlvbmFsKCkgQFNraXBTZWxmKCkgcGFyZW50TW9kdWxlOiBBcGlNb2R1bGUsXG4gICAgICAgICAgICAgICAgIEBPcHRpb25hbCgpIGh0dHA6IEh0dHBDbGllbnQpIHtcbiAgICAgICAgaWYgKHBhcmVudE1vZHVsZSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdBcGlNb2R1bGUgaXMgYWxyZWFkeSBsb2FkZWQuIEltcG9ydCBpbiB5b3VyIGJhc2UgQXBwTW9kdWxlIG9ubHkuJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFodHRwKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1lvdSBuZWVkIHRvIGltcG9ydCB0aGUgSHR0cENsaWVudE1vZHVsZSBpbiB5b3VyIEFwcE1vZHVsZSEgXFxuJyArXG4gICAgICAgICAgICAnU2VlIGFsc28gaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9pc3N1ZXMvMjA1NzUnKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==