@smartbit4all/ng-client 4.2.172 → 4.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (358) hide show
  1. package/README.md +386 -386
  2. package/esm2022/lib/component-factory-service/component-factory-service.module.mjs +1 -1
  3. package/esm2022/lib/component-factory-service/component-factory-service.service.mjs +1 -1
  4. package/esm2022/lib/component-factory-service/projects.mjs +1 -1
  5. package/esm2022/lib/session/api/api/api.mjs +1 -1
  6. package/esm2022/lib/session/api/index.mjs +1 -1
  7. package/esm2022/lib/session/api/model/models.mjs +1 -1
  8. package/esm2022/lib/session/api/model/session.mjs +1 -1
  9. package/esm2022/lib/session/api/model/sessionInfoData.mjs +1 -1
  10. package/esm2022/lib/session/cookie-service/smart-cookie.service.mjs +1 -1
  11. package/esm2022/lib/session/projects.mjs +1 -1
  12. package/esm2022/lib/session/smart-error-catching.interceptor.mjs +1 -1
  13. package/esm2022/lib/session/smart-header-maintainer.interceptor.mjs +1 -1
  14. package/esm2022/lib/session/smart-session-handler.service.mjs +1 -1
  15. package/esm2022/lib/session/smart-session.module.mjs +1 -1
  16. package/esm2022/lib/session/smart-session.service.mjs +1 -1
  17. package/esm2022/lib/session/smart-timer/smart-session-timer.component.mjs +3 -3
  18. package/esm2022/lib/session/smart-timer/smart-session-timer.service.mjs +1 -1
  19. package/esm2022/lib/shared/projects.mjs +1 -1
  20. package/esm2022/lib/shared/shared.module.mjs +1 -1
  21. package/esm2022/lib/shared/smart-tooltip.directive.mjs +1 -1
  22. package/esm2022/lib/shared/smarttable.date-pipe.mjs +1 -1
  23. package/esm2022/lib/smart-client/projects.mjs +1 -1
  24. package/esm2022/lib/smart-client/smart-authentication.service.mjs +1 -1
  25. package/esm2022/lib/smart-client/smart-component-api-client.mjs +12 -2
  26. package/esm2022/lib/smart-client/smart-file-uploader/smart-file-uploader.component.mjs +3 -3
  27. package/esm2022/lib/smart-client/smart.component.mjs +1 -1
  28. package/esm2022/lib/smart-client/smart.service.mjs +1 -1
  29. package/esm2022/lib/smart-component-layout/api/api/api.mjs +1 -1
  30. package/esm2022/lib/smart-component-layout/api/api/default.service.mjs +1 -1
  31. package/esm2022/lib/smart-component-layout/api/api.module.mjs +1 -1
  32. package/esm2022/lib/smart-component-layout/api/configuration.mjs +1 -1
  33. package/esm2022/lib/smart-component-layout/api/encoder.mjs +1 -1
  34. package/esm2022/lib/smart-component-layout/api/index.mjs +1 -1
  35. package/esm2022/lib/smart-component-layout/api/model/componentType.mjs +1 -1
  36. package/esm2022/lib/smart-component-layout/api/model/componentWidgetType.mjs +1 -1
  37. package/esm2022/lib/smart-component-layout/api/model/layoutDefinitionDescriptor.mjs +1 -1
  38. package/esm2022/lib/smart-component-layout/api/model/layoutDirection.mjs +1 -1
  39. package/esm2022/lib/smart-component-layout/api/model/models.mjs +1 -1
  40. package/esm2022/lib/smart-component-layout/api/model/smartComponentLayoutDefinition.mjs +1 -1
  41. package/esm2022/lib/smart-component-layout/api/model/smartComponentWidgetDefinition.mjs +1 -1
  42. package/esm2022/lib/smart-component-layout/api/model/toolbarProperties.mjs +1 -1
  43. package/esm2022/lib/smart-component-layout/api/param.mjs +1 -1
  44. package/esm2022/lib/smart-component-layout/api/variables.mjs +1 -1
  45. package/esm2022/lib/smart-component-layout/projects.mjs +1 -1
  46. package/esm2022/lib/smart-component-layout/smart-component-layout-utility.mjs +1 -1
  47. package/esm2022/lib/smart-component-layout/smart-component-layout.component.mjs +3 -3
  48. package/esm2022/lib/smart-component-layout/smart-component-layout.module.mjs +1 -1
  49. package/esm2022/lib/smart-diagram/api/api/api.mjs +1 -1
  50. package/esm2022/lib/smart-diagram/api/api/diagramService.service.mjs +1 -1
  51. package/esm2022/lib/smart-diagram/api/api.module.mjs +1 -1
  52. package/esm2022/lib/smart-diagram/api/configuration.mjs +1 -1
  53. package/esm2022/lib/smart-diagram/api/encoder.mjs +1 -1
  54. package/esm2022/lib/smart-diagram/api/index.mjs +1 -1
  55. package/esm2022/lib/smart-diagram/api/model/diagramColor.mjs +1 -1
  56. package/esm2022/lib/smart-diagram/api/model/diagramDataContainer.mjs +1 -1
  57. package/esm2022/lib/smart-diagram/api/model/diagramDataItem.mjs +1 -1
  58. package/esm2022/lib/smart-diagram/api/model/diagramDataSet.mjs +1 -1
  59. package/esm2022/lib/smart-diagram/api/model/diagramDescriptor.mjs +1 -1
  60. package/esm2022/lib/smart-diagram/api/model/diagramModel.mjs +1 -1
  61. package/esm2022/lib/smart-diagram/api/model/diagramShape.mjs +1 -1
  62. package/esm2022/lib/smart-diagram/api/model/drawTime.mjs +1 -1
  63. package/esm2022/lib/smart-diagram/api/model/labelText.mjs +1 -1
  64. package/esm2022/lib/smart-diagram/api/model/models.mjs +1 -1
  65. package/esm2022/lib/smart-diagram/api/param.mjs +1 -1
  66. package/esm2022/lib/smart-diagram/api/variables.mjs +1 -1
  67. package/esm2022/lib/smart-diagram/component/default-smart-diagram-options.provider.mjs +1 -1
  68. package/esm2022/lib/smart-diagram/component/smart-diagram.component.mjs +22 -22
  69. package/esm2022/lib/smart-diagram/component/smart-diagram.module.mjs +1 -1
  70. package/esm2022/lib/smart-diagram/component/smart-diagram.util.mjs +1 -1
  71. package/esm2022/lib/smart-diagram/projects.mjs +1 -1
  72. package/esm2022/lib/smart-dialog/projects.mjs +1 -1
  73. package/esm2022/lib/smart-dialog/smartdialog.component.mjs +3 -3
  74. package/esm2022/lib/smart-dialog/smartdialog.model.mjs +1 -1
  75. package/esm2022/lib/smart-dialog/smartdialog.module.mjs +1 -1
  76. package/esm2022/lib/smart-dialog/smartdialog.service.mjs +1 -1
  77. package/esm2022/lib/smart-expandable-section/expandable-section.component.mjs +3 -3
  78. package/esm2022/lib/smart-expandable-section/expandable-section.model.mjs +1 -1
  79. package/esm2022/lib/smart-expandable-section/projects.mjs +1 -1
  80. package/esm2022/lib/smart-expandable-section/smart-expandable-section.module.mjs +1 -1
  81. package/esm2022/lib/smart-expandable-section/smart-expandable-section.service.mjs +1 -1
  82. package/esm2022/lib/smart-filter/api/filter/model/filterExpressionBoolOperator.mjs +1 -1
  83. package/esm2022/lib/smart-filter/api/filter/model/filterExpressionBuilderField.mjs +1 -1
  84. package/esm2022/lib/smart-filter/api/filter/model/filterExpressionBuilderGroup.mjs +1 -1
  85. package/esm2022/lib/smart-filter/api/filter/model/filterExpressionBuilderModel.mjs +1 -1
  86. package/esm2022/lib/smart-filter/api/filter/model/filterExpressionData.mjs +1 -1
  87. package/esm2022/lib/smart-filter/api/filter/model/filterExpressionDataType.mjs +1 -1
  88. package/esm2022/lib/smart-filter/api/filter/model/filterExpressionField.mjs +1 -1
  89. package/esm2022/lib/smart-filter/api/filter/model/filterExpressionFieldList.mjs +1 -1
  90. package/esm2022/lib/smart-filter/api/filter/model/filterExpressionFieldWidgetType.mjs +1 -1
  91. package/esm2022/lib/smart-filter/api/filter/model/filterExpressionList.mjs +1 -1
  92. package/esm2022/lib/smart-filter/api/filter/model/filterExpressionOperandData.mjs +1 -1
  93. package/esm2022/lib/smart-filter/api/filter/model/filterExpressionOperation.mjs +1 -1
  94. package/esm2022/lib/smart-filter/api/filter/model/filterExpressionOrderBy.mjs +1 -1
  95. package/esm2022/lib/smart-filter/api/filter/model/model.mjs +1 -1
  96. package/esm2022/lib/smart-filter/api/filter/model/searchIndexObjectDefinitionData.mjs +1 -1
  97. package/esm2022/lib/smart-filter/api/filter/model/searchIndexPropertyDefinitionData.mjs +1 -1
  98. package/esm2022/lib/smart-filter/api/value/model/value.mjs +1 -1
  99. package/esm2022/lib/smart-filter/projects.mjs +1 -1
  100. package/esm2022/lib/smart-filter/smart-filter/components/smart-filter-expression-field/smart-filter-expression-field.component.mjs +1 -1
  101. package/esm2022/lib/smart-filter/smart-filter/components/smart-filter-simple/components/smart-filter-simple-field/smart-filter-simple-field.component.mjs +3 -3
  102. package/esm2022/lib/smart-filter/smart-filter/components/smart-filter-simple/smart-filter-simple.component.mjs +3 -3
  103. package/esm2022/lib/smart-filter/smart-filter/smart-filter.component.mjs +3 -3
  104. package/esm2022/lib/smart-filter/smart-filter/smart-filter.service.mjs +1 -1
  105. package/esm2022/lib/smart-filter/smart-filter.model.mjs +1 -1
  106. package/esm2022/lib/smart-filter/smart-filter.module.mjs +1 -1
  107. package/esm2022/lib/smart-filter-editor/api/api/filter.service.mjs +1 -1
  108. package/esm2022/lib/smart-filter-editor/api/configuration.mjs +1 -1
  109. package/esm2022/lib/smart-filter-editor/api/encoder.mjs +1 -1
  110. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionBoolOperator.mjs +1 -1
  111. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionBuilderApiConfig.mjs +1 -1
  112. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionBuilderField.mjs +1 -1
  113. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionBuilderGroup.mjs +1 -1
  114. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionBuilderModel.mjs +1 -1
  115. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionBuilderUiModel.mjs +1 -1
  116. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionData.mjs +1 -1
  117. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionDataType.mjs +1 -1
  118. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionField.mjs +1 -1
  119. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionFieldEditor.mjs +1 -1
  120. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionFieldList.mjs +1 -1
  121. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionFieldWidgetType.mjs +1 -1
  122. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionList.mjs +1 -1
  123. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionOperandData.mjs +1 -1
  124. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionOperation.mjs +1 -1
  125. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionOrderBy.mjs +1 -1
  126. package/esm2022/lib/smart-filter-editor/api/model/smartFilterType.mjs +1 -1
  127. package/esm2022/lib/smart-filter-editor/api/param.mjs +1 -1
  128. package/esm2022/lib/smart-filter-editor/api/variables.mjs +1 -1
  129. package/esm2022/lib/smart-filter-editor/filterExpressionBuilderApiActions.mjs +1 -1
  130. package/esm2022/lib/smart-filter-editor/project.mjs +1 -1
  131. package/esm2022/lib/smart-filter-editor/smart-filter-editor-content/components/smart-filter-expression-item/smart-filter-expression-item.component.mjs +3 -3
  132. package/esm2022/lib/smart-filter-editor/smart-filter-editor-content/components/smart-filter-expression-items/smart-filter-expression-items.component.mjs +3 -3
  133. package/esm2022/lib/smart-filter-editor/smart-filter-editor-content/smart-filter-editor-content.component.mjs +3 -3
  134. package/esm2022/lib/smart-filter-editor/smart-filter-editor.model.mjs +1 -1
  135. package/esm2022/lib/smart-filter-editor/smart-filter-editor.module.mjs +1 -1
  136. package/esm2022/lib/smart-filter-editor/smart-filter-editor.service.mjs +1 -1
  137. package/esm2022/lib/smart-filter-editor/smart-filter-params/components/smart-filter-param/smart-filter-param.component.mjs +3 -3
  138. package/esm2022/lib/smart-filter-editor/smart-filter-params/smart-filter-params.component.mjs +3 -3
  139. package/esm2022/lib/smart-form/api/model/dateFieldProperties.mjs +1 -1
  140. package/esm2022/lib/smart-form/api/model/models.mjs +1 -1
  141. package/esm2022/lib/smart-form/api/model/multiFileUploaderProperties.mjs +1 -1
  142. package/esm2022/lib/smart-form/api/model/selectionDefinition.mjs +1 -1
  143. package/esm2022/lib/smart-form/api/model/smartFormWidgetType.mjs +1 -1
  144. package/esm2022/lib/smart-form/api/model/smartWidgetDefinition.mjs +1 -1
  145. package/esm2022/lib/smart-form/api/model/valueChangeMode.mjs +1 -1
  146. package/esm2022/lib/smart-form/highlightMacthingString-pipe.mjs +1 -1
  147. package/esm2022/lib/smart-form/projects.mjs +1 -1
  148. package/esm2022/lib/smart-form/services/smartform.layout-definition.service.mjs +1 -1
  149. package/esm2022/lib/smart-form/services/smartform.service.mjs +1 -1
  150. package/esm2022/lib/smart-form/smartfileuploader/large-file-snack-bar/large-file-snack-bar.component.mjs +3 -3
  151. package/esm2022/lib/smart-form/smartfileuploader/smartfileuploader.component.mjs +3 -3
  152. package/esm2022/lib/smart-form/smartfileuploader/smartfileuploader.model.mjs +1 -1
  153. package/esm2022/lib/smart-form/smartform.component.mjs +3 -3
  154. package/esm2022/lib/smart-form/smartform.form-model.mjs +1 -1
  155. package/esm2022/lib/smart-form/smartform.model.mjs +1 -1
  156. package/esm2022/lib/smart-form/widgets/components/smart-file-editor/smart-file-editor.component.mjs +3 -3
  157. package/esm2022/lib/smart-form/widgets/components/smart-month-picker/smart-month-picker.component.mjs +3 -3
  158. package/esm2022/lib/smart-form/widgets/components/smart-multi-file-editor/smart-multi-file-editor.component.mjs +3 -3
  159. package/esm2022/lib/smart-form/widgets/directives/comparable-dropdown.directive.mjs +1 -1
  160. package/esm2022/lib/smart-form/widgets/directives/comparable-multiselect.directive.mjs +1 -1
  161. package/esm2022/lib/smart-form/widgets/smartformwidget/smartformwidget.component.mjs +3 -3
  162. package/esm2022/lib/smart-form/widgets/smartformwidget/sortable-widget/sortable-widget.component.mjs +3 -3
  163. package/esm2022/lib/smart-form/widgets/smartformwidget/trackCaps.directive.mjs +1 -1
  164. package/esm2022/lib/smart-grid/api/grid-api/api/api.mjs +1 -1
  165. package/esm2022/lib/smart-grid/api/grid-api/api/grid.service.mjs +1 -1
  166. package/esm2022/lib/smart-grid/api/grid-api/api.module.mjs +1 -1
  167. package/esm2022/lib/smart-grid/api/grid-api/configuration.mjs +1 -1
  168. package/esm2022/lib/smart-grid/api/grid-api/encoder.mjs +1 -1
  169. package/esm2022/lib/smart-grid/api/grid-api/index.mjs +1 -1
  170. package/esm2022/lib/smart-grid/api/grid-api/model/gridColumnContentType.mjs +1 -1
  171. package/esm2022/lib/smart-grid/api/grid-api/model/gridColumnMeta.mjs +1 -1
  172. package/esm2022/lib/smart-grid/api/grid-api/model/gridDataAccessConfig.mjs +1 -1
  173. package/esm2022/lib/smart-grid/api/grid-api/model/gridExportDescriptor.mjs +1 -1
  174. package/esm2022/lib/smart-grid/api/grid-api/model/gridModel.mjs +1 -1
  175. package/esm2022/lib/smart-grid/api/grid-api/model/gridPage.mjs +1 -1
  176. package/esm2022/lib/smart-grid/api/grid-api/model/gridRow.mjs +1 -1
  177. package/esm2022/lib/smart-grid/api/grid-api/model/gridSelectionChange.mjs +1 -1
  178. package/esm2022/lib/smart-grid/api/grid-api/model/gridSelectionMode.mjs +1 -1
  179. package/esm2022/lib/smart-grid/api/grid-api/model/gridSelectionType.mjs +1 -1
  180. package/esm2022/lib/smart-grid/api/grid-api/model/gridServerModel.mjs +1 -1
  181. package/esm2022/lib/smart-grid/api/grid-api/model/gridUpdateData.mjs +1 -1
  182. package/esm2022/lib/smart-grid/api/grid-api/model/gridView.mjs +1 -1
  183. package/esm2022/lib/smart-grid/api/grid-api/model/gridViewDescriptor.mjs +1 -1
  184. package/esm2022/lib/smart-grid/api/grid-api/model/models.mjs +1 -1
  185. package/esm2022/lib/smart-grid/api/grid-api/param.mjs +1 -1
  186. package/esm2022/lib/smart-grid/api/grid-api/variables.mjs +1 -1
  187. package/esm2022/lib/smart-grid/components/expandable-grid/expandable-grid.component.mjs +3 -3
  188. package/esm2022/lib/smart-grid/components/generic-component/expanded-row-renderer.component.mjs +3 -3
  189. package/esm2022/lib/smart-grid/components/smart-grid-card/smart-grid-card.component.mjs +3 -3
  190. package/esm2022/lib/smart-grid/components/table-layout-definer/table-layout-definer.component.mjs +3 -3
  191. package/esm2022/lib/smart-grid/models/model.mjs +1 -1
  192. package/esm2022/lib/smart-grid/projects.mjs +1 -1
  193. package/esm2022/lib/smart-grid/smart-grid-toolbar-util.mjs +1 -1
  194. package/esm2022/lib/smart-grid/smart-grid.component.mjs +3 -3
  195. package/esm2022/lib/smart-grid/smart-grid.module.mjs +1 -1
  196. package/esm2022/lib/smart-grid/smart-grid.service.mjs +1 -1
  197. package/esm2022/lib/smart-icon/projects.mjs +1 -1
  198. package/esm2022/lib/smart-icon/smart-icon/smart-icon.component.mjs +3 -3
  199. package/esm2022/lib/smart-icon/smart-icon/ui-badge/ui-badge.component.mjs +3 -3
  200. package/esm2022/lib/smart-icon/smart-icon/ui-badge/ui-badge.directive.mjs +1 -1
  201. package/esm2022/lib/smart-icon/smart-icon.module.mjs +1 -1
  202. package/esm2022/lib/smart-icon/smart-icon.service.mjs +1 -1
  203. package/esm2022/lib/smart-map/abstract-map.mjs +1 -1
  204. package/esm2022/lib/smart-map/api/api/api.mjs +1 -1
  205. package/esm2022/lib/smart-map/api/api/geoMap.service.mjs +1 -1
  206. package/esm2022/lib/smart-map/api/api.module.mjs +1 -1
  207. package/esm2022/lib/smart-map/api/configuration.mjs +1 -1
  208. package/esm2022/lib/smart-map/api/encoder.mjs +1 -1
  209. package/esm2022/lib/smart-map/api/index.mjs +1 -1
  210. package/esm2022/lib/smart-map/api/model/gPSPosition.mjs +1 -1
  211. package/esm2022/lib/smart-map/api/model/gPSRoute.mjs +1 -1
  212. package/esm2022/lib/smart-map/api/model/geoMapChange.mjs +1 -1
  213. package/esm2022/lib/smart-map/api/model/geoMapDataLoadingMode.mjs +1 -1
  214. package/esm2022/lib/smart-map/api/model/geoMapDataSourceDescriptor.mjs +1 -1
  215. package/esm2022/lib/smart-map/api/model/geoMapDataSourceType.mjs +1 -1
  216. package/esm2022/lib/smart-map/api/model/geoMapEditingSession.mjs +1 -1
  217. package/esm2022/lib/smart-map/api/model/geoMapInteraction.mjs +1 -1
  218. package/esm2022/lib/smart-map/api/model/geoMapItem.mjs +1 -1
  219. package/esm2022/lib/smart-map/api/model/geoMapItemKind.mjs +1 -1
  220. package/esm2022/lib/smart-map/api/model/geoMapLayer.mjs +1 -1
  221. package/esm2022/lib/smart-map/api/model/geoMapLayerChange.mjs +1 -1
  222. package/esm2022/lib/smart-map/api/model/geoMapLayerDescriptor.mjs +1 -1
  223. package/esm2022/lib/smart-map/api/model/geoMapModel.mjs +1 -1
  224. package/esm2022/lib/smart-map/api/model/geoMapOperationMode.mjs +1 -1
  225. package/esm2022/lib/smart-map/api/model/geoMapSelectionMode.mjs +1 -1
  226. package/esm2022/lib/smart-map/api/model/geoMapServerModel.mjs +1 -1
  227. package/esm2022/lib/smart-map/api/model/geoMapTextType.mjs +1 -1
  228. package/esm2022/lib/smart-map/api/model/geoMapViewState.mjs +1 -1
  229. package/esm2022/lib/smart-map/api/model/geoMapViewport.mjs +1 -1
  230. package/esm2022/lib/smart-map/api/model/models.mjs +1 -1
  231. package/esm2022/lib/smart-map/api/param.mjs +1 -1
  232. package/esm2022/lib/smart-map/api/variables.mjs +1 -1
  233. package/esm2022/lib/smart-map/api-default/api-default.mjs +1 -1
  234. package/esm2022/lib/smart-map/impl/google-map.mjs +1 -1
  235. package/esm2022/lib/smart-map/impl/leaflet-map.mjs +1 -1
  236. package/esm2022/lib/smart-map/projects.mjs +1 -1
  237. package/esm2022/lib/smart-map/smart-map.component.mjs +3 -3
  238. package/esm2022/lib/smart-map/smart-map.module.mjs +1 -1
  239. package/esm2022/lib/smart-map/smart-map.types.mjs +1 -1
  240. package/esm2022/lib/smart-navbar/projects.mjs +1 -1
  241. package/esm2022/lib/smart-navbar/smart-navbar.component.mjs +3 -3
  242. package/esm2022/lib/smart-navbar/smart-navbar.model.mjs +1 -1
  243. package/esm2022/lib/smart-navbar/smart-navbar.module.mjs +1 -1
  244. package/esm2022/lib/smart-navbar/smart-navbar.service.mjs +1 -1
  245. package/esm2022/lib/smart-navigation/projects.mjs +1 -1
  246. package/esm2022/lib/smart-navigation/smart-navigation.interface.mjs +1 -1
  247. package/esm2022/lib/smart-navigation/smart-navigation.module.mjs +1 -1
  248. package/esm2022/lib/smart-navigation/smart-navigation.service.mjs +1 -1
  249. package/esm2022/lib/smart-ng-client.module.mjs +1 -1
  250. package/esm2022/lib/smart-ng-client.service.mjs +1 -1
  251. package/esm2022/lib/smart-subject/projects.mjs +1 -1
  252. package/esm2022/lib/smart-subject/smart-subject.mjs +1 -1
  253. package/esm2022/lib/smart-tab-group/projects.mjs +1 -1
  254. package/esm2022/lib/smart-tab-group/smart-tab-group.component.mjs +3 -3
  255. package/esm2022/lib/smart-tab-group/smart-tab-group.module.mjs +1 -1
  256. package/esm2022/lib/smart-tab-group/smart-tab-group.service.mjs +1 -1
  257. package/esm2022/lib/smart-tab-group/tab-content/tab-content.component.mjs +3 -3
  258. package/esm2022/lib/smart-tab-group/tab-group-simplified/tab-group.component.mjs +3 -3
  259. package/esm2022/lib/smart-tab-group/tabTile.model.mjs +1 -1
  260. package/esm2022/lib/smart-table/components/default-actions-popup/default-actions-popup.component.mjs +3 -3
  261. package/esm2022/lib/smart-table/components/loading/loading.component.mjs +3 -3
  262. package/esm2022/lib/smart-table/directives/mat-context-menu-trigger-for.directive.mjs +1 -1
  263. package/esm2022/lib/smart-table/projects.mjs +1 -1
  264. package/esm2022/lib/smart-table/smarttable.component.mjs +3 -3
  265. package/esm2022/lib/smart-table/smarttable.model.mjs +1 -1
  266. package/esm2022/lib/smart-table/smarttable.module.mjs +1 -1
  267. package/esm2022/lib/smart-table/smarttable.service.mjs +1 -1
  268. package/esm2022/lib/smart-table/tables/material-table/material-table.component.mjs +3 -3
  269. package/esm2022/lib/smart-table/tables/mobile-table/mobile-table.component.mjs +3 -3
  270. package/esm2022/lib/smart-table/tables/table.mjs +1 -1
  271. package/esm2022/lib/smart-tree/projects.mjs +1 -1
  272. package/esm2022/lib/smart-tree/smarttree-generic.service.mjs +1 -1
  273. package/esm2022/lib/smart-tree/smarttree.component.mjs +3 -3
  274. package/esm2022/lib/smart-tree/smarttree.model.mjs +1 -1
  275. package/esm2022/lib/smart-tree/smarttree.module.mjs +1 -1
  276. package/esm2022/lib/smart-tree/smarttree.node.model.mjs +1 -1
  277. package/esm2022/lib/smart-tree/smarttree.service.interface.mjs +1 -1
  278. package/esm2022/lib/smart-tree/smarttree.service.mjs +1 -1
  279. package/esm2022/lib/smart-tree/tree-api/api/tree.service.mjs +1 -1
  280. package/esm2022/lib/smart-tree/tree-api/configuration.mjs +1 -1
  281. package/esm2022/lib/smart-tree/tree-api/encoder.mjs +1 -1
  282. package/esm2022/lib/smart-tree/tree-api/param.mjs +1 -1
  283. package/esm2022/lib/smart-tree/tree-api/variables.mjs +1 -1
  284. package/esm2022/lib/smart-validation/named-validator.service.mjs +1 -1
  285. package/esm2022/lib/smart-validation/projects.mjs +1 -1
  286. package/esm2022/lib/smart-validation/smart-validation.module.mjs +1 -1
  287. package/esm2022/lib/smart-validation/smart-validation.types.mjs +1 -1
  288. package/esm2022/lib/view-context/api/api/view.service.mjs +1 -1
  289. package/esm2022/lib/view-context/api/api-default/binaryData.mjs +1 -1
  290. package/esm2022/lib/view-context/api/api-default/invocationError.mjs +1 -1
  291. package/esm2022/lib/view-context/api/api-default/invocationRequest.mjs +1 -1
  292. package/esm2022/lib/view-context/api/model/models.mjs +1 -1
  293. package/esm2022/lib/view-context/api/model/smartLinkData.mjs +1 -1
  294. package/esm2022/lib/view-context/api/model/uiAction.mjs +1 -1
  295. package/esm2022/lib/view-context/api/model/uiActionDefinition.mjs +1 -1
  296. package/esm2022/lib/view-context/api/model/uiActionSchedule.mjs +1 -1
  297. package/esm2022/lib/view-context/invalid-fields-snack-bar/invalid-fields-snack-bar.component.mjs +3 -3
  298. package/esm2022/lib/view-context/message-dialog/message-dialog.component.mjs +3 -3
  299. package/esm2022/lib/view-context/projects.mjs +1 -1
  300. package/esm2022/lib/view-context/property-definition-data.mjs +1 -1
  301. package/esm2022/lib/view-context/smart-ui-action/components/menu/menu.component.mjs +3 -3
  302. package/esm2022/lib/view-context/smart-ui-action/components/menu/menu.constants.mjs +1 -1
  303. package/esm2022/lib/view-context/smart-ui-action/components/menu/menu.service.mjs +1 -1
  304. package/esm2022/lib/view-context/smart-ui-action/components/success-snack-bar/success-snack-bar.component.mjs +3 -3
  305. package/esm2022/lib/view-context/smart-ui-action/components/upload-widget/photo-capture-widget/photo-capture-widget.component.mjs +3 -3
  306. package/esm2022/lib/view-context/smart-ui-action/components/upload-widget/prime-file-uploader/prime-file-uploader.component.mjs +3 -3
  307. package/esm2022/lib/view-context/smart-ui-action/components/upload-widget/upload-widget.component.mjs +3 -3
  308. package/esm2022/lib/view-context/smart-ui-action/components/upload-widget/upload-widget.utils.mjs +1 -1
  309. package/esm2022/lib/view-context/smart-ui-action/components/upload-widget/voice-record-widget/voice-record-widget.component.mjs +3 -3
  310. package/esm2022/lib/view-context/smart-ui-action/dialogs/ui-action-confirm-dialog/ui-action-confirm-dialog.component.mjs +3 -3
  311. package/esm2022/lib/view-context/smart-ui-action/dialogs/ui-action-confirm-dialog/ui-action-confirm-dialog.service.mjs +1 -1
  312. package/esm2022/lib/view-context/smart-ui-action/dialogs/ui-action-dialog-button/ui-action-dialog-button.component.mjs +3 -3
  313. package/esm2022/lib/view-context/smart-ui-action/dialogs/ui-action-file-upload-dialog/ui-action-file-upload-dialog.component.mjs +3 -3
  314. package/esm2022/lib/view-context/smart-ui-action/dialogs/ui-action-file-upload-dialog/ui-action-file-upload-dialog.service.mjs +1 -1
  315. package/esm2022/lib/view-context/smart-ui-action/dialogs/ui-action-input-dialog/ui-action-input-dialog.component.mjs +3 -3
  316. package/esm2022/lib/view-context/smart-ui-action/dialogs/ui-action-input-dialog/ui-action-input-dialog.service.mjs +1 -1
  317. package/esm2022/lib/view-context/smart-ui-action/ui-action-button/ui-action-button.component.mjs +3 -3
  318. package/esm2022/lib/view-context/smart-ui-action/ui-action-toolbar.component.mjs +3 -3
  319. package/esm2022/lib/view-context/smart-ui-action/ui-action.descriptor.service.mjs +1 -1
  320. package/esm2022/lib/view-context/smart-ui-action/ui-action.model.mjs +1 -1
  321. package/esm2022/lib/view-context/smart-ui-action/ui-action.service.mjs +1 -1
  322. package/esm2022/lib/view-context/smart-view-context-dialog.service.mjs +2 -1
  323. package/esm2022/lib/view-context/smart-view-context-error-dialog/smart-view-context-error-dialog.component.mjs +3 -3
  324. package/esm2022/lib/view-context/smart-view-context-error-dialog/smart-view-context-error-dialog.service.mjs +1 -1
  325. package/esm2022/lib/view-context/smart-view-context.interceptor.mjs +1 -1
  326. package/esm2022/lib/view-context/smart-view-context.model.mjs +1 -1
  327. package/esm2022/lib/view-context/smart-view-context.module.mjs +1 -1
  328. package/esm2022/lib/view-context/smart-view-context.service.mjs +1 -1
  329. package/esm2022/lib/view-context/smart-view-redirect/smart-view-redirect.mjs +1 -1
  330. package/esm2022/lib/view-context/utility/componentLibrary.mjs +1 -1
  331. package/esm2022/lib/view-context/utility/smart-object-utility.mjs +1 -1
  332. package/esm2022/lib/view-context/utility/smart-style-utility.mjs +1 -1
  333. package/esm2022/lib/view-context/value-api/api/api.mjs +1 -1
  334. package/esm2022/lib/view-context/value-api/api/value.service.mjs +1 -1
  335. package/esm2022/lib/view-context/value-api/api.module.mjs +1 -1
  336. package/esm2022/lib/view-context/value-api/configuration.mjs +1 -1
  337. package/esm2022/lib/view-context/value-api/encoder.mjs +1 -1
  338. package/esm2022/lib/view-context/value-api/index.mjs +1 -1
  339. package/esm2022/lib/view-context/value-api/model/genericValue.mjs +1 -1
  340. package/esm2022/lib/view-context/value-api/model/models.mjs +1 -1
  341. package/esm2022/lib/view-context/value-api/model/value.mjs +1 -1
  342. package/esm2022/lib/view-context/value-api/model/valueSetData.mjs +1 -1
  343. package/esm2022/lib/view-context/value-api/model/valueSetDefinition.mjs +1 -1
  344. package/esm2022/lib/view-context/value-api/model/valueSetDefinitionData.mjs +1 -1
  345. package/esm2022/lib/view-context/value-api/model/valueSetDefinitionIdentifier.mjs +1 -1
  346. package/esm2022/lib/view-context/value-api/model/valueSetDefinitionKind.mjs +1 -1
  347. package/esm2022/lib/view-context/value-api/model/valueSetExpression.mjs +1 -1
  348. package/esm2022/lib/view-context/value-api/model/valueSetOperand.mjs +1 -1
  349. package/esm2022/lib/view-context/value-api/model/valueSetOperation.mjs +1 -1
  350. package/esm2022/lib/view-context/value-api/param.mjs +1 -1
  351. package/esm2022/lib/view-context/value-api/variables.mjs +1 -1
  352. package/esm2022/projects.mjs +1 -1
  353. package/fesm2022/smartbit4all-ng-client.mjs +141 -130
  354. package/fesm2022/smartbit4all-ng-client.mjs.map +1 -1
  355. package/lib/smart-client/smart-component-api-client.d.ts +3 -1
  356. package/package.json +1 -1
  357. package/smartbit4all-ng-client-4.3.1.tgz +0 -0
  358. package/smartbit4all-ng-client-4.2.172.tgz +0 -0
@@ -688,4 +688,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
688
688
  providedIn: 'root',
689
689
  }]
690
690
  }], ctorParameters: () => [] });
691
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRmb3JtLmxheW91dC1kZWZpbml0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi9zbWFydC1mb3JtL3NlcnZpY2VzL3NtYXJ0Zm9ybS5sYXlvdXQtZGVmaW5pdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLHdCQUF3QixFQUFFLG1CQUFtQixFQUF5QixNQUFNLFFBQVEsQ0FBQzs7QUFrQjlGLE1BQU0sT0FBTyxnQ0FBZ0M7YUFDbkIsMEJBQXFCLEdBQWlCO1FBQzVELE9BQU8sRUFBRTtZQUNQLFNBQVMsRUFBRTtnQkFDVCxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxNQUFNLENBQUM7Z0JBQ2pELENBQUMsWUFBWSxDQUFDO2dCQUNkLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUM7Z0JBQzlCLENBQUMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLENBQUM7Z0JBQ3pDLENBQUMsT0FBTyxDQUFDO2FBQ1Y7U0FDRjtLQUNGLEFBVjRDLENBVTNDO0lBQ0YsZ0JBQWUsQ0FBQztJQUVULE1BQU0sQ0FBQyxNQUF5QztRQUNyRCxJQUFJLE9BQU8sR0FBMkIsRUFBRSxDQUFDO1FBRXpDLE1BQU0sQ0FBQyxpQkFBaUIsRUFBRSxPQUFPLENBQUMsQ0FBQyxnQkFBdUMsRUFBRSxFQUFFO1lBQzVFLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUM7Z0JBQzdCLEdBQUcsTUFBTTtnQkFDVCxnQkFBZ0I7YUFDakIsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxNQUFN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QVksRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUN2QyxDQUFDO1FBRUQsTUFBTSxJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFFLEtBQUssQ0FBQyxNQUFNLENBQVksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFXLENBQUM7UUFDeEUsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQzdCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxnQkFBZ0IsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNwRCxDQUFDO1FBRUQsTUFBTSxZQUFZLEdBQUcsQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFFLEtBQUssQ0FBQyxjQUFjLENBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFXLENBQUM7UUFDL0YsSUFBSSxVQUFVLEdBQXVCLFNBQVMsQ0FBQztRQUMvQyxJQUFJLEtBQUssQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDO1lBQ3hCLFVBQVUsR0FBRyxLQUFLLENBQUMsWUFBWSxDQUFxQixDQUFDO1FBQ3ZELENBQUM7UUFFRCxPQUFPLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsQ0FBQztJQUM1QyxDQUFDO0lBRU8sa0JBQWtCLENBQUMsZ0JBQXVDLEVBQUUsSUFBWTtRQUM5RSxPQUFPLENBQUMsS0FBSyxDQUNYLGFBQWEsSUFBSSxxQ0FBcUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQ3pGLENBQUM7SUFDSixDQUFDOytHQTFzQlUsZ0NBQWdDO21IQUFoQyxnQ0FBZ0MsY0FGL0IsTUFBTTs7NEZBRVAsZ0NBQWdDO2tCQUg1QyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNtYXJ0Rm9ybVdpZGdldERpcmVjdGlvbiwgU21hcnRGb3JtV2lkZ2V0VHlwZSwgU21hcnRXaWRnZXREZWZpbml0aW9uIH0gZnJvbSAnLi4vYXBpJztcbmltcG9ydCB7IFNtYXJ0Rm9ybVdpZGdldCB9IGZyb20gJy4uL3NtYXJ0Zm9ybS5mb3JtLW1vZGVsJztcbmltcG9ydCB7IFZhbHVlIH0gZnJvbSAnLi4vc21hcnRmb3JtLm1vZGVsJztcbmltcG9ydCB7IFF1aWxsTW9kdWxlcyB9IGZyb20gJ25neC1xdWlsbCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU21hcnRmb3JtTGF5b3V0Q3JlYXRlV2lkZ2V0Q29uZmlnIHtcbiAgbGF5b3V0RGVmaW5pdGlvbnM/OiBTbWFydFdpZGdldERlZmluaXRpb25bXTtcbiAgbGF5b3V0RGVmaW5pdGlvbj86IFNtYXJ0V2lkZ2V0RGVmaW5pdGlvbjtcbiAgdXBsb2FkQ2FsbGJhY2s/OiAoa2V5OiBzdHJpbmcsIGZpbGVzOiBhbnlbXSkgPT4gdm9pZDtcbiAgYnV0dG9uQ2FsbGJhY2s/OiAoKHVpQWN0aW9uOiBhbnkpID0+IHZvaWQpIHwgKChrZXk6IHN0cmluZykgPT4gdm9pZCk7XG4gIHVpQWN0aW9ucz86IGFueVtdO1xuICB1aUFjdGlvbkRlc2NyaXB0b3JzPzogKHVpQWN0aW9uOiBhbnkpID0+IGFueTtcbiAgbW9kZWw/OiBhbnk7XG59XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBTbWFydGZvcm1MYXlvdXREZWZpbml0aW9uU2VydmljZSB7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IERFRkFVTFRfUVVJTExfTU9EVUxFUzogUXVpbGxNb2R1bGVzID0ge1xuICAgIHRvb2xiYXI6IHtcbiAgICAgIGNvbnRhaW5lcjogW1xuICAgICAgICBbJ2JvbGQnLCAnaXRhbGljJywgJ3VuZGVybGluZScsICdzdHJpa2UnLCAnbGluayddLFxuICAgICAgICBbJ2NvZGUtYmxvY2snXSxcbiAgICAgICAgW3sgaGVhZGVyOiAxIH0sIHsgaGVhZGVyOiAyIH1dLFxuICAgICAgICBbeyBsaXN0OiAnb3JkZXJlZCcgfSwgeyBsaXN0OiAnYnVsbGV0JyB9XSxcbiAgICAgICAgWydjbGVhbiddLFxuICAgICAgXSxcbiAgICB9LFxuICB9O1xuICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgcHVibGljIHJlbmRlcihjb25maWc6IFNtYXJ0Zm9ybUxheW91dENyZWF0ZVdpZGdldENvbmZpZyk6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+W10ge1xuICAgIGxldCB3aWRnZXRzOiBTbWFydEZvcm1XaWRnZXQ8YW55PltdID0gW107XG5cbiAgICBjb25maWcubGF5b3V0RGVmaW5pdGlvbnM/LmZvckVhY2goKGxheW91dERlZmluaXRpb246IFNtYXJ0V2lkZ2V0RGVmaW5pdGlvbikgPT4ge1xuICAgICAgbGV0IHdpZGdldCA9IHRoaXMuY3JlYXRlV2lkZ2V0KHtcbiAgICAgICAgLi4uY29uZmlnLFxuICAgICAgICBsYXlvdXREZWZpbml0aW9uLFxuICAgICAgfSk7XG4gICAgICBpZiAod2lkZ2V0KSB7XG4gICAgICAgIHdpZGdldHMucHVzaCh3aWRnZXQpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHdpZGdldHM7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZVdpZGdldChcbiAgICBjb25maWc6IFNtYXJ0Zm9ybUxheW91dENyZWF0ZVdpZGdldENvbmZpZ1xuICApOiBTbWFydEZvcm1XaWRnZXQ8YW55PiB8IHVuZGVmaW5lZCB7XG4gICAgc3dpdGNoIChjb25maWcubGF5b3V0RGVmaW5pdGlvbj8udHlwZSkge1xuICAgICAgY2FzZSBTbWFydEZvcm1XaWRnZXRUeXBlLkNPTlRBSU5FUjpcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlQ29udGFpbmVyKGNvbmZpZywgY29uZmlnLmxheW91dERlZmluaXRpb24pO1xuICAgICAgY2FzZSBTbWFydEZvcm1XaWRnZXRUeXBlLkxBQkVMOlxuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVMYWJlbChjb25maWcubGF5b3V0RGVmaW5pdGlvbik7XG4gICAgICBjYXNlIFNtYXJ0Rm9ybVdpZGdldFR5cGUuVEVYVF9GSUVMRDpcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlVGV4dEZpZWxkKGNvbmZpZy5sYXlvdXREZWZpbml0aW9uKTtcbiAgICAgIGNhc2UgU21hcnRGb3JtV2lkZ2V0VHlwZS5URVhUX0ZJRUxEX0NISVBTOlxuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVUZXh0RmllbGRDaGlwcyhjb25maWcubGF5b3V0RGVmaW5pdGlvbik7XG4gICAgICBjYXNlIFNtYXJ0Rm9ybVdpZGdldFR5cGUuVEVYVF9GSUVMRF9OVU1CRVI6XG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZVRleHRGaWVsZE51bWJlcihjb25maWcubGF5b3V0RGVmaW5pdGlvbik7XG4gICAgICBjYXNlIFNtYXJ0Rm9ybVdpZGdldFR5cGUuVEVYVF9GSUVMRF9MT09LVVA6XG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZVRleHRGaWVsZExvb2t1cChjb25maWcubGF5b3V0RGVmaW5pdGlvbik7XG4gICAgICBjYXNlIFNtYXJ0Rm9ybVdpZGdldFR5cGUuVEVYVF9CT1g6XG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZVRleHRCb3goY29uZmlnLmxheW91dERlZmluaXRpb24pO1xuICAgICAgY2FzZSBTbWFydEZvcm1XaWRnZXRUeXBlLlRPR0dMRTpcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlVG9nZ2xlKGNvbmZpZy5sYXlvdXREZWZpbml0aW9uKTtcbiAgICAgIGNhc2UgU21hcnRGb3JtV2lkZ2V0VHlwZS5SQURJT19CVVRUT046XG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZVJhZGlvQnV0dG9uKGNvbmZpZy5sYXlvdXREZWZpbml0aW9uKTtcbiAgICAgIGNhc2UgU21hcnRGb3JtV2lkZ2V0VHlwZS5DSEVDS19CT1g6XG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZUNoZWNrQm94KGNvbmZpZy5sYXlvdXREZWZpbml0aW9uKTtcbiAgICAgIGNhc2UgU21hcnRGb3JtV2lkZ2V0VHlwZS5DSEVDS19CT1hfMjpcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlQ2hlY2tCb3gyKGNvbmZpZy5sYXlvdXREZWZpbml0aW9uKTtcbiAgICAgIGNhc2UgU21hcnRGb3JtV2lkZ2V0VHlwZS5TRUxFQ1Q6XG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZVNlbGVjdChjb25maWcubGF5b3V0RGVmaW5pdGlvbiwgY29uZmlnLm1vZGVsKTtcbiAgICAgIGNhc2UgU21hcnRGb3JtV2lkZ2V0VHlwZS5TRUxFQ1RfTVVMVElQTEU6XG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZVNlbGVjdE11bHRpcGxlKGNvbmZpZy5sYXlvdXREZWZpbml0aW9uKTtcbiAgICAgIGNhc2UgU21hcnRGb3JtV2lkZ2V0VHlwZS5EQVRFX1BJQ0tFUjpcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlRGF0ZVBpY2tlcihjb25maWcubGF5b3V0RGVmaW5pdGlvbik7XG4gICAgICBjYXNlIFNtYXJ0Rm9ybVdpZGdldFR5cGUuREFURV9USU1FX1BJQ0tFUjpcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlRGF0ZVRpbWVQaWNrZXIoY29uZmlnLmxheW91dERlZmluaXRpb24pO1xuICAgICAgY2FzZSBTbWFydEZvcm1XaWRnZXRUeXBlLklNQUdFOlxuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVJbWFnZShjb25maWcubGF5b3V0RGVmaW5pdGlvbik7XG4gICAgICBjYXNlIFNtYXJ0Rm9ybVdpZGdldFR5cGUuU1ZHOlxuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVTdmcoY29uZmlnLmxheW91dERlZmluaXRpb24pO1xuICAgICAgY2FzZSBTbWFydEZvcm1XaWRnZXRUeXBlLkJVVFRPTjpcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlQnV0dG9uKGNvbmZpZyk7XG4gICAgICBjYXNlIFNtYXJ0Rm9ybVdpZGdldFR5cGUuRElWSURFUjpcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlRGl2aWRlcihjb25maWcubGF5b3V0RGVmaW5pdGlvbik7XG4gICAgICBjYXNlIFNtYXJ0Rm9ybVdpZGdldFR5cGUuUklDSF9URVhUOlxuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVSaWNoVGV4dChjb25maWcubGF5b3V0RGVmaW5pdGlvbik7XG4gICAgICBjYXNlIFNtYXJ0Rm9ybVdpZGdldFR5cGUuRklMRV9VUExPQURFUjpcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlRmlsZVVwbG9hZGVyKGNvbmZpZy5sYXlvdXREZWZpbml0aW9uKTtcbiAgICAgIGNhc2UgU21hcnRGb3JtV2lkZ2V0VHlwZS5NVUxUSV9GSUxFX1VQTE9BREVSOlxuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVNdWx0aUZpbGVVcGxvYWRlcihjb25maWcubGF5b3V0RGVmaW5pdGlvbik7XG4gICAgICBjYXNlIFNtYXJ0Rm9ybVdpZGdldFR5cGUuTUFUUklYOlxuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVNYXRyaXgoY29uZmlnLmxheW91dERlZmluaXRpb24pO1xuICAgICAgY2FzZSBTbWFydEZvcm1XaWRnZXRUeXBlLlNPUlRBQkxFOlxuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVTb3J0YWJsZShjb25maWcubGF5b3V0RGVmaW5pdGlvbik7XG4gICAgICBjYXNlIFNtYXJ0Rm9ybVdpZGdldFR5cGUuTU9OVEhfUElDS0VSOlxuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVNb250aFBpY2tlcihjb25maWcubGF5b3V0RGVmaW5pdGlvbik7XG4gICAgICBjYXNlIFNtYXJ0Rm9ybVdpZGdldFR5cGUuWU9VVFVCRV9QTEFZRVI6XG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZVlvdXR1YmVQbGF5ZXIoY29uZmlnLmxheW91dERlZmluaXRpb24pO1xuICAgIH1cbiAgICByZXR1cm47XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZU1vbnRoUGlja2VyKGxheW91dERlZmluaXRpb246IFNtYXJ0V2lkZ2V0RGVmaW5pdGlvbik6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+IHtcbiAgICBsZXQgd2lkZ2V0OiBTbWFydEZvcm1XaWRnZXQ8YW55PiA9IHtcbiAgICAgIGtleTogbGF5b3V0RGVmaW5pdGlvbi5rZXksXG4gICAgICB2YWx1ZUNoYW5nZU1vZGU6IGxheW91dERlZmluaXRpb24udmFsdWVDaGFuZ2VNb2RlLFxuICAgICAgdHlwZTogU21hcnRGb3JtV2lkZ2V0VHlwZS5NT05USF9QSUNLRVIsXG4gICAgICBsYWJlbDogbGF5b3V0RGVmaW5pdGlvbi5sYWJlbCxcbiAgICAgIHNob3dMYWJlbDogbGF5b3V0RGVmaW5pdGlvbi5zaG93TGFiZWwsXG4gICAgICBzZXJ2ZXJFcnJvck1lc3NhZ2U6IGxheW91dERlZmluaXRpb24uZXJyb3JNZXNzYWdlLFxuICAgICAgc2VydmVyRXJyb3JJY29uOiBsYXlvdXREZWZpbml0aW9uLmVycm9ySWNvbixcbiAgICAgIHNlcnZlckVycm9yQ29sb3I6IGxheW91dERlZmluaXRpb24uZXJyb3JDb2xvcixcbiAgICB9O1xuICAgIHJldHVybiB3aWRnZXQ7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZU1hdHJpeChsYXlvdXREZWZpbml0aW9uOiBTbWFydFdpZGdldERlZmluaXRpb24pOiBTbWFydEZvcm1XaWRnZXQ8YW55PiB7XG4gICAgbGV0IHdpZGdldDogU21hcnRGb3JtV2lkZ2V0PGFueT4gPSB7XG4gICAgICB0eXBlOiBTbWFydEZvcm1XaWRnZXRUeXBlLk1BVFJJWCxcbiAgICAgIGxhYmVsOiBsYXlvdXREZWZpbml0aW9uLmxhYmVsLFxuICAgICAga2V5OiBsYXlvdXREZWZpbml0aW9uLmtleSxcbiAgICAgIHZhbHVlQ2hhbmdlTW9kZTogbGF5b3V0RGVmaW5pdGlvbi52YWx1ZUNoYW5nZU1vZGUsXG4gICAgICBzaG93TGFiZWw6IGxheW91dERlZmluaXRpb24uc2hvd0xhYmVsLFxuICAgICAgaXNNdWx0aXBsZTogbGF5b3V0RGVmaW5pdGlvbi5tYXRyaXg/Lm11bHRpU2VsZWN0LFxuICAgICAgdmFsdWU6IGxheW91dERlZmluaXRpb24ubWF0cml4LFxuICAgICAgc2VydmVyRXJyb3JNZXNzYWdlOiBsYXlvdXREZWZpbml0aW9uLmVycm9yTWVzc2FnZSxcbiAgICAgIHNlcnZlckVycm9ySWNvbjogbGF5b3V0RGVmaW5pdGlvbi5lcnJvckljb24sXG4gICAgICBzZXJ2ZXJFcnJvckNvbG9yOiBsYXlvdXREZWZpbml0aW9uLmVycm9yQ29sb3IsXG4gICAgfTtcbiAgICByZXR1cm4gd2lkZ2V0O1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVTb3J0YWJsZShsYXlvdXREZWZpbml0aW9uOiBTbWFydFdpZGdldERlZmluaXRpb24pIHtcbiAgICBsZXQgd2lkZ2V0OiBTbWFydEZvcm1XaWRnZXQ8YW55PiA9IHtcbiAgICAgIGtleTogbGF5b3V0RGVmaW5pdGlvbi5rZXksXG4gICAgICB2YWx1ZUNoYW5nZU1vZGU6IGxheW91dERlZmluaXRpb24udmFsdWVDaGFuZ2VNb2RlLFxuICAgICAgbGFiZWw6IGxheW91dERlZmluaXRpb24ubGFiZWwsXG4gICAgICBzaG93TGFiZWw6IGxheW91dERlZmluaXRpb24uc2hvd0xhYmVsLFxuICAgICAgdHlwZTogU21hcnRGb3JtV2lkZ2V0VHlwZS5TT1JUQUJMRSxcbiAgICAgIHNlcnZlckVycm9yTWVzc2FnZTogbGF5b3V0RGVmaW5pdGlvbi5lcnJvck1lc3NhZ2UsXG4gICAgICBzZXJ2ZXJFcnJvckljb246IGxheW91dERlZmluaXRpb24uZXJyb3JJY29uLFxuICAgICAgc2VydmVyRXJyb3JDb2xvcjogbGF5b3V0RGVmaW5pdGlvbi5lcnJvckNvbG9yLFxuICAgICAgaWNvbjogbGF5b3V0RGVmaW5pdGlvbi5pY29uLFxuICAgICAgc29ydERlZmluaXRpb246IGxheW91dERlZmluaXRpb24uc29ydERlZmluaXRpb24gPz8ge1xuICAgICAgICBrZXk6ICd1cmknLFxuICAgICAgICBkaXNwbGF5VmFsdWU6ICdkaXNwbGF5VmFsdWUnLFxuICAgICAgfSxcbiAgICB9O1xuICAgIHJldHVybiB3aWRnZXQ7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUxhYmVsKGxheW91dERlZmluaXRpb246IFNtYXJ0V2lkZ2V0RGVmaW5pdGlvbik6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+IHtcbiAgICBsZXQgd2lkZ2V0OiBTbWFydEZvcm1XaWRnZXQ8YW55PiA9IHtcbiAgICAgIHR5cGU6IFNtYXJ0Rm9ybVdpZGdldFR5cGUuTEFCRUwsXG4gICAgICBsYWJlbDogbGF5b3V0RGVmaW5pdGlvbi5sYWJlbCxcbiAgICAgIHdpZGdldERlc2NyaXB0aW9uOiBsYXlvdXREZWZpbml0aW9uLndpZGdldERlc2NyaXB0aW9uLFxuICAgICAgY3NzQ2xhc3M6IGxheW91dERlZmluaXRpb24uY3NzQ2xhc3MsXG4gICAgICBzdHlsZTogbGF5b3V0RGVmaW5pdGlvbi5zdHlsZSxcbiAgICB9O1xuICAgIHJldHVybiB3aWRnZXQ7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUNvbnRhaW5lcihcbiAgICBjb25maWc6IFNtYXJ0Zm9ybUxheW91dENyZWF0ZVdpZGdldENvbmZpZyxcbiAgICBsYXlvdXREZWZpbml0aW9uOiBTbWFydFdpZGdldERlZmluaXRpb25cbiAgKTogU21hcnRGb3JtV2lkZ2V0PGFueT4ge1xuICAgIGxldCB2YWx1ZUxpc3Q6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+W10gPSBbXTtcblxuICAgIGxheW91dERlZmluaXRpb24uY2hpbGRyZW5Db21wb25lbnRzPy5mb3JFYWNoKChsYXlvdXREZWZpbml0aW9uOiBTbWFydFdpZGdldERlZmluaXRpb24pID0+IHtcbiAgICAgIGxldCB3aWRnZXQgPSB0aGlzLmNyZWF0ZVdpZGdldCh7XG4gICAgICAgIC4uLmNvbmZpZyxcbiAgICAgICAgbGF5b3V0RGVmaW5pdGlvbixcbiAgICAgIH0pO1xuICAgICAgaWYgKHdpZGdldCkge1xuICAgICAgICB2YWx1ZUxpc3QucHVzaCh3aWRnZXQpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgbGV0IHdpZGdldDogU21hcnRGb3JtV2lkZ2V0PGFueT4gPSB7XG4gICAgICBrZXk6IGxheW91dERlZmluaXRpb24ua2V5LFxuICAgICAgdmFsdWVDaGFuZ2VNb2RlOiBsYXlvdXREZWZpbml0aW9uLnZhbHVlQ2hhbmdlTW9kZSxcbiAgICAgIHR5cGU6IFNtYXJ0Rm9ybVdpZGdldFR5cGUuQ09OVEFJTkVSLFxuICAgICAgY3NzQ2xhc3M6IGxheW91dERlZmluaXRpb24uY3NzQ2xhc3MsXG4gICAgICBzdHlsZTogbGF5b3V0RGVmaW5pdGlvbi5zdHlsZSxcbiAgICAgIGRpcmVjdGlvbjogbGF5b3V0RGVmaW5pdGlvbi5kaXJlY3Rpb24gPz8gU21hcnRGb3JtV2lkZ2V0RGlyZWN0aW9uLkNPTCxcbiAgICAgIHZhbHVlTGlzdCxcbiAgICB9O1xuXG4gICAgcmV0dXJuIHdpZGdldDtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlVGV4dEZpZWxkKGxheW91dERlZmluaXRpb246IFNtYXJ0V2lkZ2V0RGVmaW5pdGlvbik6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+IHtcbiAgICBsZXQgd2lkZ2V0OiBTbWFydEZvcm1XaWRnZXQ8YW55PiA9IHtcbiAgICAgIHR5cGU6IFNtYXJ0Rm9ybVdpZGdldFR5cGUuVEVYVF9GSUVMRCxcbiAgICAgIGtleTogbGF5b3V0RGVmaW5pdGlvbi5rZXksXG4gICAgICB2YWx1ZUNoYW5nZU1vZGU6IGxheW91dERlZmluaXRpb24udmFsdWVDaGFuZ2VNb2RlLFxuICAgICAgbGFiZWw6IGxheW91dERlZmluaXRpb24ubGFiZWwsXG4gICAgICBwbGFjZWhvbGRlcjogbGF5b3V0RGVmaW5pdGlvbi5wbGFjZWhvbGRlcixcbiAgICAgIHByZWZpeDogbGF5b3V0RGVmaW5pdGlvbi5wcmVmaXgsXG4gICAgICBzdWZmaXg6IGxheW91dERlZmluaXRpb24uc3VmZml4LFxuICAgICAgbWFzazogbGF5b3V0RGVmaW5pdGlvbi5tYXNrLFxuICAgICAgaWNvbjogbGF5b3V0RGVmaW5pdGlvbi5pY29uLFxuICAgICAgaWNvbkNvbG9yOiBsYXlvdXREZWZpbml0aW9uLmljb25Db2xvcixcbiAgICAgIGljb25Qb3NpdGlvbjogbGF5b3V0RGVmaW5pdGlvbi5pY29uUG9zaXRpb24sXG4gICAgICBzaG93TGFiZWw6IGxheW91dERlZmluaXRpb24uc2hvd0xhYmVsLFxuICAgICAgY3NzQ2xhc3M6IGxheW91dERlZmluaXRpb24uY3NzQ2xhc3MsXG4gICAgICBjc3NMYWJlbENsYXNzOiBsYXlvdXREZWZpbml0aW9uLmNzc0xhYmVsQ2xhc3MsXG4gICAgICBsYWJlbFBvc2l0aW9uQ2xhc3M6IGxheW91dERlZmluaXRpb24ubGFiZWxQb3NpdGlvbkNsYXNzLFxuICAgICAgaXNGbG9hdExhYmVsOiBsYXlvdXREZWZpbml0aW9uLmlzRmxvYXRMYWJlbCxcbiAgICAgIHN0eWxlOiBsYXlvdXREZWZpbml0aW9uLnN0eWxlLFxuICAgICAgbGFiZWxTdHlsZTogbGF5b3V0RGVmaW5pdGlvbi5sYWJlbFN0eWxlLFxuICAgICAgaXNQYXNzd29yZDogbGF5b3V0RGVmaW5pdGlvbi5pc1Bhc3N3b3JkLFxuICAgICAgc2VsZWN0aW9uOiBsYXlvdXREZWZpbml0aW9uLnNlbGVjdGlvbixcbiAgICAgIGZpbHRlckVycm9yTWVzc2FnZTogbGF5b3V0RGVmaW5pdGlvbi5maWx0ZXJFcnJvck1lc3NhZ2UsXG4gICAgICBzZXJ2ZXJFcnJvck1lc3NhZ2U6IGxheW91dERlZmluaXRpb24uZXJyb3JNZXNzYWdlLFxuICAgICAgc2VydmVyRXJyb3JJY29uOiBsYXlvdXREZWZpbml0aW9uLmVycm9ySWNvbixcbiAgICAgIHNlcnZlckVycm9yQ29sb3I6IGxheW91dERlZmluaXRpb24uZXJyb3JDb2xvcixcbiAgICAgIGhpbnQ6IGxheW91dERlZmluaXRpb24uaGludCxcbiAgICAgIG1heExlbmd0aDogbGF5b3V0RGVmaW5pdGlvbi5tYXhMZW5ndGgsXG4gICAgICBzaG93Q2hhcmFjdGVyTGltaXRTdWZmaXg6IGxheW91dERlZmluaXRpb24uc2hvd0NoYXJhY3RlckxpbWl0U3VmZml4LFxuICAgICAgdG9vbGJhcklkOiBsYXlvdXREZWZpbml0aW9uLnRvb2xiYXJJZCxcbiAgICAgIGlucHV0TW9kZTogbGF5b3V0RGVmaW5pdGlvbi5pbnB1dE1vZGUsXG4gICAgICB0ZXh0RmllbGRQcm9wZXJ0aWVzOiBsYXlvdXREZWZpbml0aW9uLnByb3BlcnRpZXM/LlsnVEVYVF9GSUVMRF9wcm9wZXJ0aWVzJ10sXG4gICAgfTtcbiAgICByZXR1cm4gd2lkZ2V0O1xuICB9XG4gIHByaXZhdGUgY3JlYXRlVGV4dEZpZWxkQ2hpcHMobGF5b3V0RGVmaW5pdGlvbjogU21hcnRXaWRnZXREZWZpbml0aW9uKTogU21hcnRGb3JtV2lkZ2V0PGFueT4ge1xuICAgIGxldCB3aWRnZXQ6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+ID0ge1xuICAgICAgdHlwZTogU21hcnRGb3JtV2lkZ2V0VHlwZS5URVhUX0ZJRUxEX0NISVBTLFxuICAgICAga2V5OiBsYXlvdXREZWZpbml0aW9uLmtleSxcbiAgICAgIHZhbHVlQ2hhbmdlTW9kZTogbGF5b3V0RGVmaW5pdGlvbi52YWx1ZUNoYW5nZU1vZGUsXG4gICAgICBsYWJlbDogbGF5b3V0RGVmaW5pdGlvbi5sYWJlbCxcbiAgICAgIHBsYWNlaG9sZGVyOiBsYXlvdXREZWZpbml0aW9uLnBsYWNlaG9sZGVyLFxuICAgICAgc2hvd0xhYmVsOiBsYXlvdXREZWZpbml0aW9uLnNob3dMYWJlbCxcbiAgICAgIGNzc0NsYXNzOiBsYXlvdXREZWZpbml0aW9uLmNzc0NsYXNzLFxuICAgICAgY3NzTGFiZWxDbGFzczogbGF5b3V0RGVmaW5pdGlvbi5jc3NMYWJlbENsYXNzLFxuICAgICAgbGFiZWxQb3NpdGlvbkNsYXNzOiBsYXlvdXREZWZpbml0aW9uLmxhYmVsUG9zaXRpb25DbGFzcyxcbiAgICAgIGlzRmxvYXRMYWJlbDogbGF5b3V0RGVmaW5pdGlvbi5pc0Zsb2F0TGFiZWwsXG4gICAgICBzdHlsZTogbGF5b3V0RGVmaW5pdGlvbi5zdHlsZSxcbiAgICAgIGxhYmVsU3R5bGU6IGxheW91dERlZmluaXRpb24ubGFiZWxTdHlsZSxcbiAgICAgIHZhbHVlTGlzdDogW10sXG4gICAgICBzZXJ2ZXJFcnJvck1lc3NhZ2U6IGxheW91dERlZmluaXRpb24uZXJyb3JNZXNzYWdlLFxuICAgICAgc2VydmVyRXJyb3JJY29uOiBsYXlvdXREZWZpbml0aW9uLmVycm9ySWNvbixcbiAgICAgIHNlcnZlckVycm9yQ29sb3I6IGxheW91dERlZmluaXRpb24uZXJyb3JDb2xvcixcbiAgICB9O1xuICAgIGlmIChsYXlvdXREZWZpbml0aW9uLnZhbHVlcykge1xuICAgICAgd2lkZ2V0LnZhbHVlTGlzdCA9IGxheW91dERlZmluaXRpb24udmFsdWVzLm1hcCgodmFsdWU6IFZhbHVlKSA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAga2V5OiB2YWx1ZS5jb2RlISxcbiAgICAgICAgICBsYWJlbDogdmFsdWUuZGlzcGxheVZhbHVlLFxuICAgICAgICAgIHR5cGU6IFNtYXJ0Rm9ybVdpZGdldFR5cGUuSVRFTSxcbiAgICAgICAgICB2YWx1ZTogdmFsdWUuY29kZSxcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gd2lkZ2V0O1xuICB9XG4gIHByaXZhdGUgY3JlYXRlVGV4dEZpZWxkTG9va3VwKGxheW91dERlZmluaXRpb246IFNtYXJ0V2lkZ2V0RGVmaW5pdGlvbik6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+IHtcbiAgICBsZXQgd2lkZ2V0OiBTbWFydEZvcm1XaWRnZXQ8YW55PiA9IHtcbiAgICAgIHR5cGU6IFNtYXJ0Rm9ybVdpZGdldFR5cGUuVEVYVF9GSUVMRF9MT09LVVAsXG4gICAgICBrZXk6IGxheW91dERlZmluaXRpb24ua2V5LFxuICAgICAgdmFsdWVDaGFuZ2VNb2RlOiBsYXlvdXREZWZpbml0aW9uLnZhbHVlQ2hhbmdlTW9kZSxcbiAgICAgIGxhYmVsOiBsYXlvdXREZWZpbml0aW9uLmxhYmVsLFxuICAgICAgcGxhY2Vob2xkZXI6IGxheW91dERlZmluaXRpb24ucGxhY2Vob2xkZXIsXG4gICAgICBzaG93TGFiZWw6IGxheW91dERlZmluaXRpb24uc2hvd0xhYmVsLFxuICAgICAgY3NzQ2xhc3M6IGxheW91dERlZmluaXRpb24uY3NzQ2xhc3MsXG4gICAgICBjc3NMYWJlbENsYXNzOiBsYXlvdXREZWZpbml0aW9uLmNzc0xhYmVsQ2xhc3MsXG4gICAgICBsYWJlbFBvc2l0aW9uQ2xhc3M6IGxheW91dERlZmluaXRpb24ubGFiZWxQb3NpdGlvbkNsYXNzLFxuICAgICAgaXNGbG9hdExhYmVsOiBsYXlvdXREZWZpbml0aW9uLmlzRmxvYXRMYWJlbCxcbiAgICAgIHN0eWxlOiBsYXlvdXREZWZpbml0aW9uLnN0eWxlLFxuICAgICAgbGFiZWxTdHlsZTogbGF5b3V0RGVmaW5pdGlvbi5sYWJlbFN0eWxlLFxuICAgICAgdG9vbGJhcklkOiBsYXlvdXREZWZpbml0aW9uLnRvb2xiYXJJZCxcbiAgICAgIHNlcnZlckVycm9yTWVzc2FnZTogbGF5b3V0RGVmaW5pdGlvbi5lcnJvck1lc3NhZ2UsXG4gICAgICBzZXJ2ZXJFcnJvckljb246IGxheW91dERlZmluaXRpb24uZXJyb3JJY29uLFxuICAgICAgc2VydmVyRXJyb3JDb2xvcjogbGF5b3V0RGVmaW5pdGlvbi5lcnJvckNvbG9yLFxuICAgIH07XG4gICAgcmV0dXJuIHdpZGdldDtcbiAgfVxuICBwcml2YXRlIGNyZWF0ZVRleHRGaWVsZE51bWJlcihsYXlvdXREZWZpbml0aW9uOiBTbWFydFdpZGdldERlZmluaXRpb24pOiBTbWFydEZvcm1XaWRnZXQ8YW55PiB7XG4gICAgbGV0IHdpZGdldDogU21hcnRGb3JtV2lkZ2V0PGFueT4gPSB7XG4gICAgICB0eXBlOiBTbWFydEZvcm1XaWRnZXRUeXBlLlRFWFRfRklFTERfTlVNQkVSLFxuICAgICAga2V5OiBsYXlvdXREZWZpbml0aW9uLmtleSxcbiAgICAgIHZhbHVlQ2hhbmdlTW9kZTogbGF5b3V0RGVmaW5pdGlvbi52YWx1ZUNoYW5nZU1vZGUsXG4gICAgICBsYWJlbDogbGF5b3V0RGVmaW5pdGlvbi5sYWJlbCxcbiAgICAgIHBsYWNlaG9sZGVyOiBsYXlvdXREZWZpbml0aW9uLnBsYWNlaG9sZGVyLFxuICAgICAgcHJlZml4OiBsYXlvdXREZWZpbml0aW9uLnByZWZpeCxcbiAgICAgIHN1ZmZpeDogbGF5b3V0RGVmaW5pdGlvbi5zdWZmaXgsXG4gICAgICBpY29uOiBsYXlvdXREZWZpbml0aW9uLmljb24sXG4gICAgICBpY29uQ29sb3I6IGxheW91dERlZmluaXRpb24uaWNvbkNvbG9yLFxuICAgICAgc2hvd0xhYmVsOiBsYXlvdXREZWZpbml0aW9uLnNob3dMYWJlbCxcbiAgICAgIGNzc0NsYXNzOiBsYXlvdXREZWZpbml0aW9uLmNzc0NsYXNzLFxuICAgICAgY3NzTGFiZWxDbGFzczogbGF5b3V0RGVmaW5pdGlvbi5jc3NMYWJlbENsYXNzLFxuICAgICAgbGFiZWxQb3NpdGlvbkNsYXNzOiBsYXlvdXREZWZpbml0aW9uLmxhYmVsUG9zaXRpb25DbGFzcyxcbiAgICAgIGlzRmxvYXRMYWJlbDogbGF5b3V0RGVmaW5pdGlvbi5pc0Zsb2F0TGFiZWwsXG4gICAgICBzdHlsZTogbGF5b3V0RGVmaW5pdGlvbi5zdHlsZSxcbiAgICAgIGxhYmVsU3R5bGU6IGxheW91dERlZmluaXRpb24ubGFiZWxTdHlsZSxcbiAgICAgIGhpbnQ6IGxheW91dERlZmluaXRpb24uaGludCxcbiAgICAgIHNlcnZlckVycm9yTWVzc2FnZTogbGF5b3V0RGVmaW5pdGlvbi5lcnJvck1lc3NhZ2UsXG4gICAgICBzZXJ2ZXJFcnJvckljb246IGxheW91dERlZmluaXRpb24uZXJyb3JJY29uLFxuICAgICAgc2VydmVyRXJyb3JDb2xvcjogbGF5b3V0RGVmaW5pdGlvbi5lcnJvckNvbG9yLFxuICAgIH07XG4gICAgcmV0dXJuIHdpZGdldDtcbiAgfVxuICBwcml2YXRlIGNyZWF0ZVRleHRCb3gobGF5b3V0RGVmaW5pdGlvbjogU21hcnRXaWRnZXREZWZpbml0aW9uKTogU21hcnRGb3JtV2lkZ2V0PGFueT4ge1xuICAgIGxldCB3aWRnZXQ6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+ID0ge1xuICAgICAgdHlwZTogU21hcnRGb3JtV2lkZ2V0VHlwZS5URVhUX0JPWCxcbiAgICAgIGtleTogbGF5b3V0RGVmaW5pdGlvbi5rZXksXG4gICAgICB2YWx1ZUNoYW5nZU1vZGU6IGxheW91dERlZmluaXRpb24udmFsdWVDaGFuZ2VNb2RlLFxuICAgICAgbGFiZWw6IGxheW91dERlZmluaXRpb24ubGFiZWwsXG4gICAgICBwbGFjZWhvbGRlcjogbGF5b3V0RGVmaW5pdGlvbi5wbGFjZWhvbGRlcixcbiAgICAgIHNob3dMYWJlbDogbGF5b3V0RGVmaW5pdGlvbi5zaG93TGFiZWwsXG4gICAgICBjc3NDbGFzczogbGF5b3V0RGVmaW5pdGlvbi5jc3NDbGFzcyxcbiAgICAgIGNzc0xhYmVsQ2xhc3M6IGxheW91dERlZmluaXRpb24uY3NzTGFiZWxDbGFzcyxcbiAgICAgIGxhYmVsUG9zaXRpb25DbGFzczogbGF5b3V0RGVmaW5pdGlvbi5sYWJlbFBvc2l0aW9uQ2xhc3MsXG4gICAgICBpc0Zsb2F0TGFiZWw6IGxheW91dERlZmluaXRpb24uaXNGbG9hdExhYmVsLFxuICAgICAgc3R5bGU6IGxheW91dERlZmluaXRpb24uc3R5bGUsXG4gICAgICBsYWJlbFN0eWxlOiBsYXlvdXREZWZpbml0aW9uLmxhYmVsU3R5bGUsXG4gICAgICBoaW50OiBsYXlvdXREZWZpbml0aW9uLmhpbnQsXG4gICAgICBtYXhMZW5ndGg6IGxheW91dERlZmluaXRpb24ubWF4TGVuZ3RoLFxuICAgICAgc2hvd0NoYXJhY3RlckxpbWl0U3VmZml4OiBsYXlvdXREZWZpbml0aW9uLnNob3dDaGFyYWN0ZXJMaW1pdFN1ZmZpeCxcbiAgICAgIHNlcnZlckVycm9yTWVzc2FnZTogbGF5b3V0RGVmaW5pdGlvbi5lcnJvck1lc3NhZ2UsXG4gICAgICBzZXJ2ZXJFcnJvckljb246IGxheW91dERlZmluaXRpb24uZXJyb3JJY29uLFxuICAgICAgc2VydmVyRXJyb3JDb2xvcjogbGF5b3V0RGVmaW5pdGlvbi5lcnJvckNvbG9yLFxuICAgIH07XG4gICAgcmV0dXJuIHdpZGdldDtcbiAgfVxuICBwcml2YXRlIGNyZWF0ZVJpY2hUZXh0KGxheW91dERlZmluaXRpb246IFNtYXJ0V2lkZ2V0RGVmaW5pdGlvbik6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+IHtcbiAgICBsZXQgcXVpbGxNb2R1bGVzOiBRdWlsbE1vZHVsZXM7XG4gICAgaWYgKGxheW91dERlZmluaXRpb24ucHJvcGVydGllcyAmJiBsYXlvdXREZWZpbml0aW9uLnByb3BlcnRpZXNbJ3F1aWxsTW9kdWxlcyddKSB7XG4gICAgICBxdWlsbE1vZHVsZXMgPSBsYXlvdXREZWZpbml0aW9uLnByb3BlcnRpZXNbJ3F1aWxsTW9kdWxlcyddIGFzIFF1aWxsTW9kdWxlcztcbiAgICB9IGVsc2Uge1xuICAgICAgcXVpbGxNb2R1bGVzID0gU21hcnRmb3JtTGF5b3V0RGVmaW5pdGlvblNlcnZpY2UuREVGQVVMVF9RVUlMTF9NT0RVTEVTO1xuICAgIH1cblxuICAgIGxldCB3aWRnZXQ6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+ID0ge1xuICAgICAgdHlwZTogU21hcnRGb3JtV2lkZ2V0VHlwZS5SSUNIX1RFWFQsXG4gICAgICBrZXk6IGxheW91dERlZmluaXRpb24ua2V5LFxuICAgICAgdmFsdWVDaGFuZ2VNb2RlOiBsYXlvdXREZWZpbml0aW9uLnZhbHVlQ2hhbmdlTW9kZSxcbiAgICAgIGxhYmVsOiBsYXlvdXREZWZpbml0aW9uLmxhYmVsLFxuICAgICAgcGxhY2Vob2xkZXI6IGxheW91dERlZmluaXRpb24ucGxhY2Vob2xkZXIsXG4gICAgICBzaG93TGFiZWw6IGxheW91dERlZmluaXRpb24uc2hvd0xhYmVsLFxuICAgICAgY3NzQ2xhc3M6IGxheW91dERlZmluaXRpb24uY3NzQ2xhc3MsXG4gICAgICBjc3NMYWJlbENsYXNzOiBsYXlvdXREZWZpbml0aW9uLmNzc0xhYmVsQ2xhc3MsXG4gICAgICBsYWJlbFBvc2l0aW9uQ2xhc3M6IGxheW91dERlZmluaXRpb24ubGFiZWxQb3NpdGlvbkNsYXNzLFxuICAgICAgaXNGbG9hdExhYmVsOiBsYXlvdXREZWZpbml0aW9uLmlzRmxvYXRMYWJlbCxcbiAgICAgIHN0eWxlOiBsYXlvdXREZWZpbml0aW9uLnN0eWxlLFxuICAgICAgbGFiZWxTdHlsZTogbGF5b3V0RGVmaW5pdGlvbi5sYWJlbFN0eWxlLFxuICAgICAgcXVpbGxNb2R1bGVzLFxuICAgICAgbWF4TGVuZ3RoOiBsYXlvdXREZWZpbml0aW9uLm1heExlbmd0aCxcbiAgICAgIHNob3dDaGFyYWN0ZXJMaW1pdFN1ZmZpeDogbGF5b3V0RGVmaW5pdGlvbi5zaG93Q2hhcmFjdGVyTGltaXRTdWZmaXgsXG4gICAgICBzZXJ2ZXJFcnJvck1lc3NhZ2U6IGxheW91dERlZmluaXRpb24uZXJyb3JNZXNzYWdlLFxuICAgICAgc2VydmVyRXJyb3JJY29uOiBsYXlvdXREZWZpbml0aW9uLmVycm9ySWNvbixcbiAgICAgIHNlcnZlckVycm9yQ29sb3I6IGxheW91dERlZmluaXRpb24uZXJyb3JDb2xvcixcbiAgICB9O1xuICAgIHJldHVybiB3aWRnZXQ7XG4gIH1cbiAgcHJpdmF0ZSBjcmVhdGVUb2dnbGUobGF5b3V0RGVmaW5pdGlvbjogU21hcnRXaWRnZXREZWZpbml0aW9uKTogU21hcnRGb3JtV2lkZ2V0PGFueT4ge1xuICAgIGxldCB3aWRnZXQ6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+ID0ge1xuICAgICAgdHlwZTogU21hcnRGb3JtV2lkZ2V0VHlwZS5UT0dHTEUsXG4gICAgICBrZXk6IGxheW91dERlZmluaXRpb24ua2V5LFxuICAgICAgdmFsdWVDaGFuZ2VNb2RlOiBsYXlvdXREZWZpbml0aW9uLnZhbHVlQ2hhbmdlTW9kZSxcbiAgICAgIGxhYmVsOiBsYXlvdXREZWZpbml0aW9uLmxhYmVsLFxuICAgICAgc2hvd0xhYmVsOiBsYXlvdXREZWZpbml0aW9uLnNob3dMYWJlbCxcbiAgICAgIGNzc0NsYXNzOiBsYXlvdXREZWZpbml0aW9uLmNzc0NsYXNzLFxuICAgICAgY3NzTGFiZWxDbGFzczogbGF5b3V0RGVmaW5pdGlvbi5jc3NMYWJlbENsYXNzLFxuICAgICAgbGFiZWxQb3NpdGlvbkNsYXNzOiBsYXlvdXREZWZpbml0aW9uLmxhYmVsUG9zaXRpb25DbGFzcyxcbiAgICAgIGlzRmxvYXRMYWJlbDogbGF5b3V0RGVmaW5pdGlvbi5pc0Zsb2F0TGFiZWwsXG4gICAgICBzdHlsZTogbGF5b3V0RGVmaW5pdGlvbi5zdHlsZSxcbiAgICAgIGxhYmVsU3R5bGU6IGxheW91dERlZmluaXRpb24ubGFiZWxTdHlsZSxcbiAgICAgIGhpbnQ6IGxheW91dERlZmluaXRpb24uaGludCxcbiAgICAgIHNlcnZlckVycm9yTWVzc2FnZTogbGF5b3V0RGVmaW5pdGlvbi5lcnJvck1lc3NhZ2UsXG4gICAgICBzZXJ2ZXJFcnJvckljb246IGxheW91dERlZmluaXRpb24uZXJyb3JJY29uLFxuICAgICAgc2VydmVyRXJyb3JDb2xvcjogbGF5b3V0RGVmaW5pdGlvbi5lcnJvckNvbG9yLFxuICAgIH07XG4gICAgcmV0dXJuIHdpZGdldDtcbiAgfVxuICBwcml2YXRlIGNyZWF0ZVJhZGlvQnV0dG9uKGxheW91dERlZmluaXRpb246IFNtYXJ0V2lkZ2V0RGVmaW5pdGlvbik6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+IHtcbiAgICBsZXQgd2lkZ2V0OiBTbWFydEZvcm1XaWRnZXQ8YW55PiA9IHtcbiAgICAgIHR5cGU6IFNtYXJ0Rm9ybVdpZGdldFR5cGUuUkFESU9fQlVUVE9OLFxuICAgICAga2V5OiBsYXlvdXREZWZpbml0aW9uLmtleSxcbiAgICAgIHZhbHVlQ2hhbmdlTW9kZTogbGF5b3V0RGVmaW5pdGlvbi52YWx1ZUNoYW5nZU1vZGUsXG4gICAgICBsYWJlbDogbGF5b3V0RGVmaW5pdGlvbi5sYWJlbCxcbiAgICAgIHNob3dMYWJlbDogbGF5b3V0RGVmaW5pdGlvbi5zaG93TGFiZWwsXG4gICAgICBjc3NDbGFzczogbGF5b3V0RGVmaW5pdGlvbi5jc3NDbGFzcyxcbiAgICAgIGNzc0xhYmVsQ2xhc3M6IGxheW91dERlZmluaXRpb24uY3NzTGFiZWxDbGFzcyxcbiAgICAgIGxhYmVsUG9zaXRpb25DbGFzczogbGF5b3V0RGVmaW5pdGlvbi5sYWJlbFBvc2l0aW9uQ2xhc3MsXG4gICAgICBpc0Zsb2F0TGFiZWw6IGxheW91dERlZmluaXRpb24uaXNGbG9hdExhYmVsLFxuICAgICAgc3R5bGU6IGxheW91dERlZmluaXRpb24uc3R5bGUsXG4gICAgICBsYWJlbFN0eWxlOiBsYXlvdXREZWZpbml0aW9uLmxhYmVsU3R5bGUsXG4gICAgICB2YWx1ZUxpc3Q6IFtdLFxuICAgICAgc2VsZWN0aW9uOiBsYXlvdXREZWZpbml0aW9uLnNlbGVjdGlvbixcbiAgICAgIGhpbnQ6IGxheW91dERlZmluaXRpb24uaGludCxcbiAgICAgIHNlcnZlckVycm9yTWVzc2FnZTogbGF5b3V0RGVmaW5pdGlvbi5lcnJvck1lc3NhZ2UsXG4gICAgICBzZXJ2ZXJFcnJvckljb246IGxheW91dERlZmluaXRpb24uZXJyb3JJY29uLFxuICAgICAgc2VydmVyRXJyb3JDb2xvcjogbGF5b3V0RGVmaW5pdGlvbi5lcnJvckNvbG9yLFxuICAgIH07XG5cbiAgICBpZiAobGF5b3V0RGVmaW5pdGlvbi52YWx1ZXMpIHtcbiAgICAgIHdpZGdldC52YWx1ZUxpc3QgPSBsYXlvdXREZWZpbml0aW9uLnZhbHVlcy5tYXAoKHZhbHVlOiBWYWx1ZSkgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGtleTogdmFsdWUuY29kZSEsXG4gICAgICAgICAgbGFiZWw6IHZhbHVlLmRpc3BsYXlWYWx1ZSxcbiAgICAgICAgICB0eXBlOiBTbWFydEZvcm1XaWRnZXRUeXBlLklURU0sXG4gICAgICAgICAgdmFsdWU6IHZhbHVlLmNvZGUsXG4gICAgICAgIH07XG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHdpZGdldDtcbiAgfVxuICBwcml2YXRlIGNyZWF0ZUNoZWNrQm94KGxheW91dERlZmluaXRpb246IFNtYXJ0V2lkZ2V0RGVmaW5pdGlvbik6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+IHtcbiAgICBsZXQgd2lkZ2V0OiBTbWFydEZvcm1XaWRnZXQ8YW55PiA9IHtcbiAgICAgIHR5cGU6IFNtYXJ0Rm9ybVdpZGdldFR5cGUuQ0hFQ0tfQk9YLFxuICAgICAga2V5OiBsYXlvdXREZWZpbml0aW9uLmtleSxcbiAgICAgIHZhbHVlQ2hhbmdlTW9kZTogbGF5b3V0RGVmaW5pdGlvbi52YWx1ZUNoYW5nZU1vZGUsXG4gICAgICBsYWJlbDogbGF5b3V0RGVmaW5pdGlvbi5sYWJlbCxcbiAgICAgIHNob3dMYWJlbDogbGF5b3V0RGVmaW5pdGlvbi5zaG93TGFiZWwsXG4gICAgICBjc3NDbGFzczogbGF5b3V0RGVmaW5pdGlvbi5jc3NDbGFzcyxcbiAgICAgIGNzc0xhYmVsQ2xhc3M6IGxheW91dERlZmluaXRpb24uY3NzTGFiZWxDbGFzcyxcbiAgICAgIGxhYmVsUG9zaXRpb25DbGFzczogbGF5b3V0RGVmaW5pdGlvbi5sYWJlbFBvc2l0aW9uQ2xhc3MsXG4gICAgICBpc0Zsb2F0TGFiZWw6IGxheW91dERlZmluaXRpb24uaXNGbG9hdExhYmVsLFxuICAgICAgc3R5bGU6IGxheW91dERlZmluaXRpb24uc3R5bGUsXG4gICAgICBsYWJlbFN0eWxlOiBsYXlvdXREZWZpbml0aW9uLmxhYmVsU3R5bGUsXG4gICAgICBzZWxlY3Rpb246IGxheW91dERlZmluaXRpb24uc2VsZWN0aW9uLFxuICAgICAgaGludDogbGF5b3V0RGVmaW5pdGlvbi5oaW50LFxuICAgICAgc2VydmVyRXJyb3JNZXNzYWdlOiBsYXlvdXREZWZpbml0aW9uLmVycm9yTWVzc2FnZSxcbiAgICAgIHNlcnZlckVycm9ySWNvbjogbGF5b3V0RGVmaW5pdGlvbi5lcnJvckljb24sXG4gICAgICBzZXJ2ZXJFcnJvckNvbG9yOiBsYXlvdXREZWZpbml0aW9uLmVycm9yQ29sb3IsXG4gICAgfTtcbiAgICByZXR1cm4gd2lkZ2V0O1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVDaGVja0JveDIobGF5b3V0RGVmaW5pdGlvbjogU21hcnRXaWRnZXREZWZpbml0aW9uKTogU21hcnRGb3JtV2lkZ2V0PGFueT4ge1xuICAgIGxldCB3aWRnZXQ6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+ID0ge1xuICAgICAgdHlwZTogU21hcnRGb3JtV2lkZ2V0VHlwZS5DSEVDS19CT1hfMixcbiAgICAgIGtleTogbGF5b3V0RGVmaW5pdGlvbi5rZXksXG4gICAgICB2YWx1ZUNoYW5nZU1vZGU6IGxheW91dERlZmluaXRpb24udmFsdWVDaGFuZ2VNb2RlLFxuICAgICAgbGFiZWw6IGxheW91dERlZmluaXRpb24ubGFiZWwsXG4gICAgICBzaG93TGFiZWw6IGxheW91dERlZmluaXRpb24uc2hvd0xhYmVsLFxuICAgICAgY3NzQ2xhc3M6IGxheW91dERlZmluaXRpb24uY3NzQ2xhc3MsXG4gICAgICBjc3NMYWJlbENsYXNzOiBsYXlvdXREZWZpbml0aW9uLmNzc0xhYmVsQ2xhc3MsXG4gICAgICBsYWJlbFBvc2l0aW9uQ2xhc3M6IGxheW91dERlZmluaXRpb24ubGFiZWxQb3NpdGlvbkNsYXNzLFxuICAgICAgaXNGbG9hdExhYmVsOiBsYXlvdXREZWZpbml0aW9uLmlzRmxvYXRMYWJlbCxcbiAgICAgIHN0eWxlOiBsYXlvdXREZWZpbml0aW9uLnN0eWxlLFxuICAgICAgbGFiZWxTdHlsZTogbGF5b3V0RGVmaW5pdGlvbi5sYWJlbFN0eWxlLFxuICAgICAgdmFsdWVMaXN0OiBbXSxcbiAgICAgIHNlbGVjdGlvbjogbGF5b3V0RGVmaW5pdGlvbi5zZWxlY3Rpb24sXG4gICAgICBoaW50OiBsYXlvdXREZWZpbml0aW9uLmhpbnQsXG4gICAgICBzZXJ2ZXJFcnJvck1lc3NhZ2U6IGxheW91dERlZmluaXRpb24uZXJyb3JNZXNzYWdlLFxuICAgICAgc2VydmVyRXJyb3JJY29uOiBsYXlvdXREZWZpbml0aW9uLmVycm9ySWNvbixcbiAgICAgIHNlcnZlckVycm9yQ29sb3I6IGxheW91dERlZmluaXRpb24uZXJyb3JDb2xvcixcbiAgICB9O1xuICAgIGlmIChsYXlvdXREZWZpbml0aW9uLnZhbHVlcykge1xuICAgICAgd2lkZ2V0LnZhbHVlTGlzdCA9IGxheW91dERlZmluaXRpb24udmFsdWVzLm1hcCgodmFsdWU6IFZhbHVlKSA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAga2V5OiB2YWx1ZS5jb2RlISxcbiAgICAgICAgICBsYWJlbDogdmFsdWUuZGlzcGxheVZhbHVlLFxuICAgICAgICAgIHR5cGU6IFNtYXJ0Rm9ybVdpZGdldFR5cGUuSVRFTSxcbiAgICAgICAgICB2YWx1ZTogZmFsc2UsXG4gICAgICAgIH07XG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHdpZGdldDtcbiAgfVxuICBwcml2YXRlIGNyZWF0ZVNlbGVjdChsYXlvdXREZWZpbml0aW9uOiBTbWFydFdpZGdldERlZmluaXRpb24sIG1vZGVsPzogYW55KTogU21hcnRGb3JtV2lkZ2V0PGFueT4ge1xuICAgIGxldCB3aWRnZXQ6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+ID0ge1xuICAgICAgdHlwZTogU21hcnRGb3JtV2lkZ2V0VHlwZS5TRUxFQ1QsXG4gICAgICBrZXk6IGxheW91dERlZmluaXRpb24ua2V5LFxuICAgICAgdmFsdWVDaGFuZ2VNb2RlOiBsYXlvdXREZWZpbml0aW9uLnZhbHVlQ2hhbmdlTW9kZSxcbiAgICAgIGxhYmVsOiBsYXlvdXREZWZpbml0aW9uLmxhYmVsLFxuICAgICAgc2hvd0xhYmVsOiBsYXlvdXREZWZpbml0aW9uLnNob3dMYWJlbCxcbiAgICAgIGNzc0NsYXNzOiBsYXlvdXREZWZpbml0aW9uLmNzc0NsYXNzLFxuICAgICAgY3NzTGFiZWxDbGFzczogbGF5b3V0RGVmaW5pdGlvbi5jc3NMYWJlbENsYXNzLFxuICAgICAgbGFiZWxQb3NpdGlvbkNsYXNzOiBsYXlvdXREZWZpbml0aW9uLmxhYmVsUG9zaXRpb25DbGFzcyxcbiAgICAgIGlzRmxvYXRMYWJlbDogbGF5b3V0RGVmaW5pdGlvbi5pc0Zsb2F0TGFiZWwsXG4gICAgICBzdHlsZTogbGF5b3V0RGVmaW5pdGlvbi5zdHlsZSxcbiAgICAgIGxhYmVsU3R5bGU6IGxheW91dERlZmluaXRpb24ubGFiZWxTdHlsZSxcbiAgICAgIHZhbHVlTGlzdDogW10sXG4gICAgICBzZWxlY3Rpb246IGxheW91dERlZmluaXRpb24uc2VsZWN0aW9uLFxuICAgICAgaGludDogbGF5b3V0RGVmaW5pdGlvbi5oaW50LFxuICAgICAgc2VydmVyRXJyb3JNZXNzYWdlOiBsYXlvdXREZWZpbml0aW9uLmVycm9yTWVzc2FnZSxcbiAgICAgIHNlcnZlckVycm9ySWNvbjogbGF5b3V0RGVmaW5pdGlvbi5lcnJvckljb24sXG4gICAgICBzZXJ2ZXJFcnJvckNvbG9yOiBsYXlvdXREZWZpbml0aW9uLmVycm9yQ29sb3IsXG4gICAgfTtcblxuICAgIGlmIChsYXlvdXREZWZpbml0aW9uLnZhbHVlcykge1xuICAgICAgd2lkZ2V0LnZhbHVlTGlzdCA9IGxheW91dERlZmluaXRpb24udmFsdWVzLm1hcCgodmFsdWU6IFZhbHVlKSA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAga2V5OiB2YWx1ZS5jb2RlISxcbiAgICAgICAgICBsYWJlbDogdmFsdWUuZGlzcGxheVZhbHVlLFxuICAgICAgICAgIHR5cGU6IFNtYXJ0Rm9ybVdpZGdldFR5cGUuSVRFTSxcbiAgICAgICAgICB2YWx1ZTogdmFsdWUuY29kZSxcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gd2lkZ2V0O1xuICB9XG4gIHByaXZhdGUgY3JlYXRlU2VsZWN0TXVsdGlwbGUobGF5b3V0RGVmaW5pdGlvbjogU21hcnRXaWRnZXREZWZpbml0aW9uKTogU21hcnRGb3JtV2lkZ2V0PGFueT4ge1xuICAgIGxldCB3aWRnZXQ6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+ID0ge1xuICAgICAgdHlwZTogU21hcnRGb3JtV2lkZ2V0VHlwZS5TRUxFQ1RfTVVMVElQTEUsXG4gICAgICBrZXk6IGxheW91dERlZmluaXRpb24ua2V5LFxuICAgICAgdmFsdWVDaGFuZ2VNb2RlOiBsYXlvdXREZWZpbml0aW9uLnZhbHVlQ2hhbmdlTW9kZSxcbiAgICAgIGxhYmVsOiBsYXlvdXREZWZpbml0aW9uLmxhYmVsLFxuICAgICAgc2hvd0xhYmVsOiBsYXlvdXREZWZpbml0aW9uLnNob3dMYWJlbCxcbiAgICAgIGNzc0NsYXNzOiBsYXlvdXREZWZpbml0aW9uLmNzc0NsYXNzLFxuICAgICAgY3NzTGFiZWxDbGFzczogbGF5b3V0RGVmaW5pdGlvbi5jc3NMYWJlbENsYXNzLFxuICAgICAgbGFiZWxQb3NpdGlvbkNsYXNzOiBsYXlvdXREZWZpbml0aW9uLmxhYmVsUG9zaXRpb25DbGFzcyxcbiAgICAgIGlzRmxvYXRMYWJlbDogbGF5b3V0RGVmaW5pdGlvbi5pc0Zsb2F0TGFiZWwsXG4gICAgICBzdHlsZTogbGF5b3V0RGVmaW5pdGlvbi5zdHlsZSxcbiAgICAgIGxhYmVsU3R5bGU6IGxheW91dERlZmluaXRpb24ubGFiZWxTdHlsZSxcbiAgICAgIHZhbHVlTGlzdDogW10sXG4gICAgICBzZWxlY3Rpb246IGxheW91dERlZmluaXRpb24uc2VsZWN0aW9uLFxuICAgICAgaGludDogbGF5b3V0RGVmaW5pdGlvbi5oaW50LFxuICAgICAgc2VydmVyRXJyb3JNZXNzYWdlOiBsYXlvdXREZWZpbml0aW9uLmVycm9yTWVzc2FnZSxcbiAgICAgIHNlcnZlckVycm9ySWNvbjogbGF5b3V0RGVmaW5pdGlvbi5lcnJvckljb24sXG4gICAgICBzZXJ2ZXJFcnJvckNvbG9yOiBsYXlvdXREZWZpbml0aW9uLmVycm9yQ29sb3IsXG4gICAgfTtcbiAgICBpZiAobGF5b3V0RGVmaW5pdGlvbi52YWx1ZXMpIHtcbiAgICAgIHdpZGdldC52YWx1ZUxpc3QgPSBsYXlvdXREZWZpbml0aW9uLnZhbHVlcy5tYXAoKHZhbHVlOiBWYWx1ZSkgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGtleTogdmFsdWUuY29kZSEsXG4gICAgICAgICAgbGFiZWw6IHZhbHVlLmRpc3BsYXlWYWx1ZSxcbiAgICAgICAgICB0eXBlOiBTbWFydEZvcm1XaWRnZXRUeXBlLklURU0sXG4gICAgICAgICAgdmFsdWU6IHZhbHVlLmNvZGUsXG4gICAgICAgIH07XG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHdpZGdldDtcbiAgfVxuICBwcml2YXRlIGNyZWF0ZURhdGVQaWNrZXIobGF5b3V0RGVmaW5pdGlvbjogU21hcnRXaWRnZXREZWZpbml0aW9uKTogU21hcnRGb3JtV2lkZ2V0PGFueT4ge1xuICAgIGxldCB3aWRnZXQ6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+ID0ge1xuICAgICAgdHlwZTogU21hcnRGb3JtV2lkZ2V0VHlwZS5EQVRFX1BJQ0tFUixcbiAgICAgIGtleTogbGF5b3V0RGVmaW5pdGlvbi5rZXksXG4gICAgICB2YWx1ZUNoYW5nZU1vZGU6IGxheW91dERlZmluaXRpb24udmFsdWVDaGFuZ2VNb2RlLFxuICAgICAgbGFiZWw6IGxheW91dERlZmluaXRpb24ubGFiZWwsXG4gICAgICBzaG93TGFiZWw6IGxheW91dERlZmluaXRpb24uc2hvd0xhYmVsLFxuICAgICAgY3NzQ2xhc3M6IGxheW91dERlZmluaXRpb24uY3NzQ2xhc3MsXG4gICAgICBjc3NMYWJlbENsYXNzOiBsYXlvdXREZWZpbml0aW9uLmNzc0xhYmVsQ2xhc3MsXG4gICAgICBsYWJlbFBvc2l0aW9uQ2xhc3M6IGxheW91dERlZmluaXRpb24ubGFiZWxQb3NpdGlvbkNsYXNzLFxuICAgICAgaXNGbG9hdExhYmVsOiBsYXlvdXREZWZpbml0aW9uLmlzRmxvYXRMYWJlbCxcbiAgICAgIHN0eWxlOiBsYXlvdXREZWZpbml0aW9uLnN0eWxlLFxuICAgICAgbGFiZWxTdHlsZTogbGF5b3V0RGVmaW5pdGlvbi5sYWJlbFN0eWxlLFxuICAgICAgaGludDogbGF5b3V0RGVmaW5pdGlvbi5oaW50LFxuICAgICAgc2VydmVyRXJyb3JNZXNzYWdlOiBsYXlvdXREZWZpbml0aW9uLmVycm9yTWVzc2FnZSxcbiAgICAgIHNlcnZlckVycm9ySWNvbjogbGF5b3V0RGVmaW5pdGlvbi5lcnJvckljb24sXG4gICAgICBzZXJ2ZXJFcnJvckNvbG9yOiBsYXlvdXREZWZpbml0aW9uLmVycm9yQ29sb3IsXG4gICAgICBkYXRlRmllbGRQcm9wZXJ0aWVzOiBsYXlvdXREZWZpbml0aW9uLnByb3BlcnRpZXM/LlsnREFURV9QSUNLRVJfcHJvcGVydGllcyddLFxuICAgIH07XG4gICAgcmV0dXJuIHdpZGdldDtcbiAgfVxuICBwcml2YXRlIGNyZWF0ZURhdGVUaW1lUGlja2VyKGxheW91dERlZmluaXRpb246IFNtYXJ0V2lkZ2V0RGVmaW5pdGlvbik6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+IHtcbiAgICBsZXQgd2lkZ2V0OiBTbWFydEZvcm1XaWRnZXQ8YW55PiA9IHtcbiAgICAgIHR5cGU6IFNtYXJ0Rm9ybVdpZGdldFR5cGUuREFURV9USU1FX1BJQ0tFUixcbiAgICAgIGtleTogbGF5b3V0RGVmaW5pdGlvbi5rZXksXG4gICAgICB2YWx1ZUNoYW5nZU1vZGU6IGxheW91dERlZmluaXRpb24udmFsdWVDaGFuZ2VNb2RlLFxuICAgICAgbGFiZWw6IGxheW91dERlZmluaXRpb24ubGFiZWwsXG4gICAgICBzaG93TGFiZWw6IGxheW91dERlZmluaXRpb24uc2hvd0xhYmVsLFxuICAgICAgY3NzQ2xhc3M6IGxheW91dERlZmluaXRpb24uY3NzQ2xhc3MsXG4gICAgICBjc3NMYWJlbENsYXNzOiBsYXlvdXREZWZpbml0aW9uLmNzc0xhYmVsQ2xhc3MsXG4gICAgICBsYWJlbFBvc2l0aW9uQ2xhc3M6IGxheW91dERlZmluaXRpb24ubGFiZWxQb3NpdGlvbkNsYXNzLFxuICAgICAgaXNGbG9hdExhYmVsOiBsYXlvdXREZWZpbml0aW9uLmlzRmxvYXRMYWJlbCxcbiAgICAgIHN0eWxlOiBsYXlvdXREZWZpbml0aW9uLnN0eWxlLFxuICAgICAgbGFiZWxTdHlsZTogbGF5b3V0RGVmaW5pdGlvbi5sYWJlbFN0eWxlLFxuICAgICAgaGludDogbGF5b3V0RGVmaW5pdGlvbi5oaW50LFxuICAgICAgc2VydmVyRXJyb3JNZXNzYWdlOiBsYXlvdXREZWZpbml0aW9uLmVycm9yTWVzc2FnZSxcbiAgICAgIHNlcnZlckVycm9ySWNvbjogbGF5b3V0RGVmaW5pdGlvbi5lcnJvckljb24sXG4gICAgICBzZXJ2ZXJFcnJvckNvbG9yOiBsYXlvdXREZWZpbml0aW9uLmVycm9yQ29sb3IsXG4gICAgICBkYXRlRmllbGRQcm9wZXJ0aWVzOiBsYXlvdXREZWZpbml0aW9uLnByb3BlcnRpZXM/LlsnREFURV9USU1FX1BJQ0tFUl9wcm9wZXJ0aWVzJ10sXG4gICAgfTtcbiAgICByZXR1cm4gd2lkZ2V0O1xuICB9XG4gIHByaXZhdGUgY3JlYXRlSW1hZ2UobGF5b3V0RGVmaW5pdGlvbjogU21hcnRXaWRnZXREZWZpbml0aW9uKTogU21hcnRGb3JtV2lkZ2V0PGFueT4ge1xuICAgIGxldCB3aWRnZXQ6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+ID0ge1xuICAgICAgdHlwZTogU21hcnRGb3JtV2lkZ2V0VHlwZS5JTUFHRSxcbiAgICAgIGtleTogbGF5b3V0RGVmaW5pdGlvbi5rZXksXG4gICAgICB2YWx1ZUNoYW5nZU1vZGU6IGxheW91dERlZmluaXRpb24udmFsdWVDaGFuZ2VNb2RlLFxuICAgICAgbGFiZWw6IGxheW91dERlZmluaXRpb24ubGFiZWwsXG4gICAgICBzaG93TGFiZWw6IGxheW91dERlZmluaXRpb24uc2hvd0xhYmVsLFxuICAgICAgY3NzQ2xhc3M6IGxheW91dERlZmluaXRpb24uY3NzQ2xhc3MsXG4gICAgICBjc3NMYWJlbENsYXNzOiBsYXlvdXREZWZpbml0aW9uLmNzc0xhYmVsQ2xhc3MsXG4gICAgICBsYWJlbFBvc2l0aW9uQ2xhc3M6IGxheW91dERlZmluaXRpb24ubGFiZWxQb3NpdGlvbkNsYXNzLFxuICAgICAgaXNGbG9hdExhYmVsOiBsYXlvdXREZWZpbml0aW9uLmlzRmxvYXRMYWJlbCxcbiAgICAgIHN0eWxlOiBsYXlvdXREZWZpbml0aW9uLnN0eWxlLFxuICAgICAgbGFiZWxTdHlsZTogbGF5b3V0RGVmaW5pdGlvbi5sYWJlbFN0eWxlLFxuICAgICAgaW1hZ2VQcm9wZXJ0aWVzOiBsYXlvdXREZWZpbml0aW9uLnByb3BlcnRpZXM/LlsnSU1BR0VfcHJvcGVydGllcyddLFxuICAgIH07XG4gICAgcmV0dXJuIHdpZGdldDtcbiAgfVxuICBwcml2YXRlIGNyZWF0ZVN2ZyhsYXlvdXREZWZpbml0aW9uOiBTbWFydFdpZGdldERlZmluaXRpb24pOiBTbWFydEZvcm1XaWRnZXQ8YW55PiB7XG4gICAgbGV0IHdpZGdldDogU21hcnRGb3JtV2lkZ2V0PGFueT4gPSB7XG4gICAgICB0eXBlOiBTbWFydEZvcm1XaWRnZXRUeXBlLlNWRyxcbiAgICAgIGtleTogbGF5b3V0RGVmaW5pdGlvbi5rZXksXG4gICAgICB2YWx1ZUNoYW5nZU1vZGU6IGxheW91dERlZmluaXRpb24udmFsdWVDaGFuZ2VNb2RlLFxuICAgICAgbGFiZWw6IGxheW91dERlZmluaXRpb24ubGFiZWwsXG4gICAgICBzaG93TGFiZWw6IGxheW91dERlZmluaXRpb24uc2hvd0xhYmVsLFxuICAgICAgY3NzQ2xhc3M6IGxheW91dERlZmluaXRpb24uY3NzQ2xhc3MsXG4gICAgICBjc3NMYWJlbENsYXNzOiBsYXlvdXREZWZpbml0aW9uLmNzc0xhYmVsQ2xhc3MsXG4gICAgICBsYWJlbFBvc2l0aW9uQ2xhc3M6IGxheW91dERlZmluaXRpb24ubGFiZWxQb3NpdGlvbkNsYXNzLFxuICAgICAgaXNGbG9hdExhYmVsOiBsYXlvdXREZWZpbml0aW9uLmlzRmxvYXRMYWJlbCxcbiAgICAgIHN0eWxlOiBsYXlvdXREZWZpbml0aW9uLnN0eWxlLFxuICAgICAgbGFiZWxTdHlsZTogbGF5b3V0RGVmaW5pdGlvbi5sYWJlbFN0eWxlLFxuICAgIH07XG4gICAgcmV0dXJuIHdpZGdldDtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlQnV0dG9uKGNvbmZpZzogU21hcnRmb3JtTGF5b3V0Q3JlYXRlV2lkZ2V0Q29uZmlnKTogU21hcnRGb3JtV2lkZ2V0PGFueT4ge1xuICAgIGxldCB1aUFjdGlvbjogYW55ID0gY29uZmlnLnVpQWN0aW9ucz8uZmluZChcbiAgICAgICh1aUFjdGlvbjogYW55KSA9PiB1aUFjdGlvbi5jb2RlID09PSBjb25maWcubGF5b3V0RGVmaW5pdGlvbj8ua2V5XG4gICAgKTtcbiAgICBsZXQgd2lkZ2V0OiBTbWFydEZvcm1XaWRnZXQ8YW55PiA9IHtcbiAgICAgIHR5cGU6IFNtYXJ0Rm9ybVdpZGdldFR5cGUuQlVUVE9OLFxuICAgICAga2V5OiBjb25maWcubGF5b3V0RGVmaW5pdGlvbj8ua2V5ISxcbiAgICAgIHZhbHVlQ2hhbmdlTW9kZTogY29uZmlnLmxheW91dERlZmluaXRpb24/LnZhbHVlQ2hhbmdlTW9kZSxcbiAgICAgIGxhYmVsOiBjb25maWcubGF5b3V0RGVmaW5pdGlvbj8ubGFiZWwhLFxuICAgICAgc2hvd0xhYmVsOiBjb25maWcubGF5b3V0RGVmaW5pdGlvbj8uc2hvd0xhYmVsLFxuICAgICAgY3NzQ2xhc3M6IGNvbmZpZy5sYXlvdXREZWZpbml0aW9uPy5jc3NDbGFzcyxcbiAgICAgIGNzc0xhYmVsQ2xhc3M6IGNvbmZpZy5sYXlvdXREZWZpbml0aW9uPy5jc3NMYWJlbENsYXNzLFxuICAgICAgc3R5bGU6IGNvbmZpZy5sYXlvdXREZWZpbml0aW9uPy5zdHlsZSxcbiAgICAgIGxhYmVsU3R5bGU6IGNvbmZpZy5sYXlvdXREZWZpbml0aW9uPy5sYWJlbFN0eWxlLFxuICAgICAgY2FsbGJhY2s6IGNvbmZpZy5idXR0b25DYWxsYmFjayEsXG4gICAgICB1aUFjdGlvbixcbiAgICAgIHVpQWN0aW9uRGVzY3JpcHRvcjogY29uZmlnLnVpQWN0aW9uRGVzY3JpcHRvcnMhKHVpQWN0aW9uKSxcbiAgICB9O1xuICAgIHJldHVybiB3aWRnZXQ7XG4gIH1cbiAgcHJpdmF0ZSBjcmVhdGVEaXZpZGVyKGxheW91dERlZmluaXRpb246IFNtYXJ0V2lkZ2V0RGVmaW5pdGlvbik6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+IHtcbiAgICBsZXQgd2lkZ2V0OiBTbWFydEZvcm1XaWRnZXQ8YW55PiA9IHtcbiAgICAgIHR5cGU6IFNtYXJ0Rm9ybVdpZGdldFR5cGUuRElWSURFUixcbiAgICAgIGtleTogbGF5b3V0RGVmaW5pdGlvbi5rZXksXG4gICAgICB2YWx1ZUNoYW5nZU1vZGU6IGxheW91dERlZmluaXRpb24udmFsdWVDaGFuZ2VNb2RlLFxuICAgICAgbGFiZWw6IGxheW91dERlZmluaXRpb24ubGFiZWwsXG4gICAgICBzaG93TGFiZWw6IGxheW91dERlZmluaXRpb24uc2hvd0xhYmVsLFxuICAgICAgY3NzQ2xhc3M6IGxheW91dERlZmluaXRpb24uY3NzQ2xhc3MsXG4gICAgICBjc3NMYWJlbENsYXNzOiBsYXlvdXREZWZpbml0aW9uLmNzc0xhYmVsQ2xhc3MsXG4gICAgICBzdHlsZTogbGF5b3V0RGVmaW5pdGlvbi5zdHlsZSxcbiAgICAgIGxhYmVsU3R5bGU6IGxheW91dERlZmluaXRpb24ubGFiZWxTdHlsZSxcbiAgICB9O1xuICAgIHJldHVybiB3aWRnZXQ7XG4gIH1cbiAgcHJpdmF0ZSBjcmVhdGVGaWxlVXBsb2FkZXIobGF5b3V0RGVmaW5pdGlvbjogU21hcnRXaWRnZXREZWZpbml0aW9uKTogU21hcnRGb3JtV2lkZ2V0PGFueT4ge1xuICAgIGxldCB3aWRnZXQ6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+ID0ge1xuICAgICAgdHlwZTogU21hcnRGb3JtV2lkZ2V0VHlwZS5GSUxFX1VQTE9BREVSLFxuICAgICAga2V5OiBsYXlvdXREZWZpbml0aW9uLmtleSxcbiAgICAgIHRvb2xiYXJJZDogbGF5b3V0RGVmaW5pdGlvbi50b29sYmFySWQsXG4gICAgICB2YWx1ZUNoYW5nZU1vZGU6IGxheW91dERlZmluaXRpb24udmFsdWVDaGFuZ2VNb2RlLFxuICAgICAgbGFiZWw6IGxheW91dERlZmluaXRpb24ubGFiZWwsXG4gICAgICBzaG93TGFiZWw6IGxheW91dERlZmluaXRpb24uc2hvd0xhYmVsLFxuICAgICAgY3NzQ2xhc3M6IGxheW91dERlZmluaXRpb24uY3NzQ2xhc3MsXG4gICAgICBjc3NMYWJlbENsYXNzOiBsYXlvdXREZWZpbml0aW9uLmNzc0xhYmVsQ2xhc3MsXG4gICAgICBsYWJlbFBvc2l0aW9uQ2xhc3M6IGxheW91dERlZmluaXRpb24ubGFiZWxQb3NpdGlvbkNsYXNzLFxuICAgICAgaXNGbG9hdExhYmVsOiBsYXlvdXREZWZpbml0aW9uLmlzRmxvYXRMYWJlbCxcbiAgICAgIHN0eWxlOiBsYXlvdXREZWZpbml0aW9uLnN0eWxlLFxuICAgICAgbGFiZWxTdHlsZTogbGF5b3V0RGVmaW5pdGlvbi5sYWJlbFN0eWxlLFxuICAgICAgZmlsZVVwbG9hZGVyUHJvcGVydGllczogbGF5b3V0RGVmaW5pdGlvbi5wcm9wZXJ0aWVzPy5bJ0ZJTEVfVVBMT0FERVJfcHJvcGVydGllcyddLFxuICAgIH07XG4gICAgcmV0dXJuIHdpZGdldDtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlTXVsdGlGaWxlVXBsb2FkZXIobGF5b3V0RGVmaW5pdGlvbjogU21hcnRXaWRnZXREZWZpbml0aW9uKTogU21hcnRGb3JtV2lkZ2V0PGFueT4ge1xuICAgIGxldCB3aWRnZXQ6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+ID0ge1xuICAgICAgdHlwZTogU21hcnRGb3JtV2lkZ2V0VHlwZS5NVUxUSV9GSUxFX1VQTE9BREVSLFxuICAgICAga2V5OiBsYXlvdXREZWZpbml0aW9uLmtleSxcbiAgICAgIHRvb2xiYXJJZDogbGF5b3V0RGVmaW5pdGlvbi50b29sYmFySWQsXG4gICAgICB2YWx1ZUNoYW5nZU1vZGU6IGxheW91dERlZmluaXRpb24udmFsdWVDaGFuZ2VNb2RlLFxuICAgICAgbGFiZWw6IGxheW91dERlZmluaXRpb24ubGFiZWwsXG4gICAgICBzaG93TGFiZWw6IGxheW91dERlZmluaXRpb24uc2hvd0xhYmVsLFxuICAgICAgY3NzQ2xhc3M6IGxheW91dERlZmluaXRpb24uY3NzQ2xhc3MsXG4gICAgICBjc3NMYWJlbENsYXNzOiBsYXlvdXREZWZpbml0aW9uLmNzc0xhYmVsQ2xhc3MsXG4gICAgICBsYWJlbFBvc2l0aW9uQ2xhc3M6IGxheW91dERlZmluaXRpb24ubGFiZWxQb3NpdGlvbkNsYXNzLFxuICAgICAgaXNGbG9hdExhYmVsOiBsYXlvdXREZWZpbml0aW9uLmlzRmxvYXRMYWJlbCxcbiAgICAgIHN0eWxlOiBsYXlvdXREZWZpbml0aW9uLnN0eWxlLFxuICAgICAgbGFiZWxTdHlsZTogbGF5b3V0RGVmaW5pdGlvbi5sYWJlbFN0eWxlLFxuICAgICAgbXVsdGlGaWxlVXBsb2FkZXJQcm9wZXJ0aWVzOiBsYXlvdXREZWZpbml0aW9uLnByb3BlcnRpZXM/LlsnTVVMVElfRklMRV9VUExPQURFUl9wcm9wZXJ0aWVzJ10sXG4gICAgfTtcbiAgICByZXR1cm4gd2lkZ2V0O1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVZb3V0dWJlUGxheWVyKGxheW91dERlZmluaXRpb246IFNtYXJ0V2lkZ2V0RGVmaW5pdGlvbik6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+IHtcbiAgICBjb25zdCB7IGxpbmssIHN0YXJ0U2Vjb25kcywgZW5kU2Vjb25kcyB9ID0gdGhpcy5leHRyYWN0WW91dHViZVBsYXllclByb3BzKGxheW91dERlZmluaXRpb24pO1xuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiBTbWFydEZvcm1XaWRnZXRUeXBlLllPVVRVQkVfUExBWUVSLFxuICAgICAga2V5OiBsYXlvdXREZWZpbml0aW9uLmtleSxcbiAgICAgIGxhYmVsOiBsYXlvdXREZWZpbml0aW9uLmxhYmVsLFxuICAgICAgaGludDogbGF5b3V0RGVmaW5pdGlvbi5oaW50LFxuICAgICAgdmFsdWVDaGFuZ2VNb2RlOiBsYXlvdXREZWZpbml0aW9uLnZhbHVlQ2hhbmdlTW9kZSxcbiAgICAgIHNob3dMYWJlbDogbGF5b3V0RGVmaW5pdGlvbi5zaG93TGFiZWwsXG4gICAgICBjc3NDbGFzczogbGF5b3V0RGVmaW5pdGlvbi5jc3NDbGFzcyxcbiAgICAgIGNzc0xhYmVsQ2xhc3M6IGxheW91dERlZmluaXRpb24uY3NzTGFiZWxDbGFzcyxcbiAgICAgIGxhYmVsUG9zaXRpb25DbGFzczogbGF5b3V0RGVmaW5pdGlvbi5sYWJlbFBvc2l0aW9uQ2xhc3MsXG4gICAgICBpc0Zsb2F0TGFiZWw6IGxheW91dERlZmluaXRpb24uaXNGbG9hdExhYmVsLFxuICAgICAgc3R5bGU6IGxheW91dERlZmluaXRpb24uc3R5bGUsXG4gICAgICBsYWJlbFN0eWxlOiBsYXlvdXREZWZpbml0aW9uLmxhYmVsU3R5bGUsXG4gICAgICBsaW5rLFxuICAgICAgc3RhcnRTZWNvbmRzLFxuICAgICAgZW5kU2Vjb25kcyxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBleHRyYWN0WW91dHViZVBsYXllclByb3BzKGxheW91dERlZmluaXRpb246IFNtYXJ0V2lkZ2V0RGVmaW5pdGlvbik6IHtcbiAgICBsaW5rOiBzdHJpbmc7XG4gICAgc3RhcnRTZWNvbmRzOiBudW1iZXI7XG4gICAgZW5kU2Vjb25kcz86IG51bWJlcjtcbiAgfSB7XG4gICAgY29uc3QgcHJvcHMgPSBsYXlvdXREZWZpbml0aW9uLnByb3BlcnRpZXM7XG4gICAgaWYgKCFwcm9wcykge1xuICAgICAgdGhpcy5sb2dNaXNzaW5nUHJvcGVydHkobGF5b3V0RGVmaW5pdGlvbiwgJ3Byb3BlcnRpZXMnKTtcbiAgICAgIHJldHVybiB7IGxpbms6ICcnLCBzdGFydFNlY29uZHM6IDAgfTtcbiAgICB9XG5cbiAgICBjb25zdCBsaW5rID0gKHByb3BzWydsaW5rJ10gPyAocHJvcHNbJ2xpbmsnXSBhcyBTdHJpbmcpIDogJycpIGFzIHN0cmluZztcbiAgICBpZiAoIWxpbmsgfHwgbGluay5sZW5ndGggPCAxKSB7XG4gICAgICB0aGlzLmxvZ01pc3NpbmdQcm9wZXJ0eShsYXlvdXREZWZpbml0aW9uLCAnbGluaycpO1xuICAgIH1cblxuICAgIGNvbnN0IHN0YXJ0U2Vjb25kcyA9IChwcm9wc1snc3RhcnRTZWNvbmRzJ10gPyAocHJvcHNbJ3N0YXJ0U2Vjb25kcyddIGFzIE51bWJlcikgOiAwKSBhcyBudW1iZXI7XG4gICAgbGV0IGVuZFNlY29uZHM6IG51bWJlciB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgICBpZiAocHJvcHNbJ2VuZFNlY29uZHMnXSkge1xuICAgICAgZW5kU2Vjb25kcyA9IHByb3BzWydlbmRTZWNvbmRzJ10gYXMgTnVtYmVyIGFzIG51bWJlcjtcbiAgICB9XG5cbiAgICByZXR1cm4geyBsaW5rLCBzdGFydFNlY29uZHMsIGVuZFNlY29uZHMgfTtcbiAgfVxuXG4gIHByaXZhdGUgbG9nTWlzc2luZ1Byb3BlcnR5KGxheW91dERlZmluaXRpb246IFNtYXJ0V2lkZ2V0RGVmaW5pdGlvbiwgcHJvcDogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc29sZS5lcnJvcihcbiAgICAgIGBQcm9wZXJ0eSA8JHtwcm9wfT4gbWlzc2luZyBmcm9tIGxheW91dCBkZWZpbml0aW9uOiAke0pTT04uc3RyaW5naWZ5KGxheW91dERlZmluaXRpb24pfWBcbiAgICApO1xuICB9XG59XG4iXX0=
691
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRmb3JtLmxheW91dC1kZWZpbml0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi9zbWFydC1mb3JtL3NlcnZpY2VzL3NtYXJ0Zm9ybS5sYXlvdXQtZGVmaW5pdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLHdCQUF3QixFQUFFLG1CQUFtQixFQUF5QixNQUFNLFFBQVEsQ0FBQzs7QUFrQjlGLE1BQU0sT0FBTyxnQ0FBZ0M7YUFDbkIsMEJBQXFCLEdBQWlCO1FBQzVELE9BQU8sRUFBRTtZQUNQLFNBQVMsRUFBRTtnQkFDVCxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxNQUFNLENBQUM7Z0JBQ2pELENBQUMsWUFBWSxDQUFDO2dCQUNkLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUM7Z0JBQzlCLENBQUMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLENBQUM7Z0JBQ3pDLENBQUMsT0FBTyxDQUFDO2FBQ1Y7U0FDRjtLQUNGLEFBVjRDLENBVTNDO0lBQ0YsZ0JBQWUsQ0FBQztJQUVULE1BQU0sQ0FBQyxNQUF5QztRQUNyRCxJQUFJLE9BQU8sR0FBMkIsRUFBRSxDQUFDO1FBRXpDLE1BQU0sQ0FBQyxpQkFBaUIsRUFBRSxPQUFPLENBQUMsQ0FBQyxnQkFBdUMsRUFBRSxFQUFFO1lBQzVFLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUM7Z0JBQzdCLEdBQUcsTUFBTTtnQkFDVCxnQkFBZ0I7YUFDakIsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxNQUFN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QVksRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUN2QyxDQUFDO1FBRUQsTUFBTSxJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFFLEtBQUssQ0FBQyxNQUFNLENBQVksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFXLENBQUM7UUFDeEUsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQzdCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxnQkFBZ0IsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNwRCxDQUFDO1FBRUQsTUFBTSxZQUFZLEdBQUcsQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFFLEtBQUssQ0FBQyxjQUFjLENBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFXLENBQUM7UUFDL0YsSUFBSSxVQUFVLEdBQXVCLFNBQVMsQ0FBQztRQUMvQyxJQUFJLEtBQUssQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDO1lBQ3hCLFVBQVUsR0FBRyxLQUFLLENBQUMsWUFBWSxDQUFxQixDQUFDO1FBQ3ZELENBQUM7UUFFRCxPQUFPLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsQ0FBQztJQUM1QyxDQUFDO0lBRU8sa0JBQWtCLENBQUMsZ0JBQXVDLEVBQUUsSUFBWTtRQUM5RSxPQUFPLENBQUMsS0FBSyxDQUNYLGFBQWEsSUFBSSxxQ0FBcUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQ3pGLENBQUM7SUFDSixDQUFDOytHQTFzQlUsZ0NBQWdDO21IQUFoQyxnQ0FBZ0MsY0FGL0IsTUFBTTs7NEZBRVAsZ0NBQWdDO2tCQUg1QyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgU21hcnRGb3JtV2lkZ2V0RGlyZWN0aW9uLCBTbWFydEZvcm1XaWRnZXRUeXBlLCBTbWFydFdpZGdldERlZmluaXRpb24gfSBmcm9tICcuLi9hcGknO1xyXG5pbXBvcnQgeyBTbWFydEZvcm1XaWRnZXQgfSBmcm9tICcuLi9zbWFydGZvcm0uZm9ybS1tb2RlbCc7XHJcbmltcG9ydCB7IFZhbHVlIH0gZnJvbSAnLi4vc21hcnRmb3JtLm1vZGVsJztcclxuaW1wb3J0IHsgUXVpbGxNb2R1bGVzIH0gZnJvbSAnbmd4LXF1aWxsJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgU21hcnRmb3JtTGF5b3V0Q3JlYXRlV2lkZ2V0Q29uZmlnIHtcclxuICBsYXlvdXREZWZpbml0aW9ucz86IFNtYXJ0V2lkZ2V0RGVmaW5pdGlvbltdO1xyXG4gIGxheW91dERlZmluaXRpb24/OiBTbWFydFdpZGdldERlZmluaXRpb247XHJcbiAgdXBsb2FkQ2FsbGJhY2s/OiAoa2V5OiBzdHJpbmcsIGZpbGVzOiBhbnlbXSkgPT4gdm9pZDtcclxuICBidXR0b25DYWxsYmFjaz86ICgodWlBY3Rpb246IGFueSkgPT4gdm9pZCkgfCAoKGtleTogc3RyaW5nKSA9PiB2b2lkKTtcclxuICB1aUFjdGlvbnM/OiBhbnlbXTtcclxuICB1aUFjdGlvbkRlc2NyaXB0b3JzPzogKHVpQWN0aW9uOiBhbnkpID0+IGFueTtcclxuICBtb2RlbD86IGFueTtcclxufVxyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIFNtYXJ0Zm9ybUxheW91dERlZmluaXRpb25TZXJ2aWNlIHtcclxuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBERUZBVUxUX1FVSUxMX01PRFVMRVM6IFF1aWxsTW9kdWxlcyA9IHtcclxuICAgIHRvb2xiYXI6IHtcclxuICAgICAgY29udGFpbmVyOiBbXHJcbiAgICAgICAgWydib2xkJywgJ2l0YWxpYycsICd1bmRlcmxpbmUnLCAnc3RyaWtlJywgJ2xpbmsnXSxcclxuICAgICAgICBbJ2NvZGUtYmxvY2snXSxcclxuICAgICAgICBbeyBoZWFkZXI6IDEgfSwgeyBoZWFkZXI6IDIgfV0sXHJcbiAgICAgICAgW3sgbGlzdDogJ29yZGVyZWQnIH0sIHsgbGlzdDogJ2J1bGxldCcgfV0sXHJcbiAgICAgICAgWydjbGVhbiddLFxyXG4gICAgICBdLFxyXG4gICAgfSxcclxuICB9O1xyXG4gIGNvbnN0cnVjdG9yKCkge31cclxuXHJcbiAgcHVibGljIHJlbmRlcihjb25maWc6IFNtYXJ0Zm9ybUxheW91dENyZWF0ZVdpZGdldENvbmZpZyk6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+W10ge1xyXG4gICAgbGV0IHdpZGdldHM6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+W10gPSBbXTtcclxuXHJcbiAgICBjb25maWcubGF5b3V0RGVmaW5pdGlvbnM/LmZvckVhY2goKGxheW91dERlZmluaXRpb246IFNtYXJ0V2lkZ2V0RGVmaW5pdGlvbikgPT4ge1xyXG4gICAgICBsZXQgd2lkZ2V0ID0gdGhpcy5jcmVhdGVXaWRnZXQoe1xyXG4gICAgICAgIC4uLmNvbmZpZyxcclxuICAgICAgICBsYXlvdXREZWZpbml0aW9uLFxyXG4gICAgICB9KTtcclxuICAgICAgaWYgKHdpZGdldCkge1xyXG4gICAgICAgIHdpZGdldHMucHVzaCh3aWRnZXQpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gd2lkZ2V0cztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY3JlYXRlV2lkZ2V0KFxyXG4gICAgY29uZmlnOiBTbWFydGZvcm1MYXlvdXRDcmVhdGVXaWRnZXRDb25maWdcclxuICApOiBTbWFydEZvcm1XaWRnZXQ8YW55PiB8IHVuZGVmaW5lZCB7XHJcbiAgICBzd2l0Y2ggKGNvbmZpZy5sYXlvdXREZWZpbml0aW9uPy50eXBlKSB7XHJcbiAgICAgIGNhc2UgU21hcnRGb3JtV2lkZ2V0VHlwZS5DT05UQUlORVI6XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlQ29udGFpbmVyKGNvbmZpZywgY29uZmlnLmxheW91dERlZmluaXRpb24pO1xyXG4gICAgICBjYXNlIFNtYXJ0Rm9ybVdpZGdldFR5cGUuTEFCRUw6XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlTGFiZWwoY29uZmlnLmxheW91dERlZmluaXRpb24pO1xyXG4gICAgICBjYXNlIFNtYXJ0Rm9ybVdpZGdldFR5cGUuVEVYVF9GSUVMRDpcclxuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVUZXh0RmllbGQoY29uZmlnLmxheW91dERlZmluaXRpb24pO1xyXG4gICAgICBjYXNlIFNtYXJ0Rm9ybVdpZGdldFR5cGUuVEVYVF9GSUVMRF9DSElQUzpcclxuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVUZXh0RmllbGRDaGlwcyhjb25maWcubGF5b3V0RGVmaW5pdGlvbik7XHJcbiAgICAgIGNhc2UgU21hcnRGb3JtV2lkZ2V0VHlwZS5URVhUX0ZJRUxEX05VTUJFUjpcclxuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVUZXh0RmllbGROdW1iZXIoY29uZmlnLmxheW91dERlZmluaXRpb24pO1xyXG4gICAgICBjYXNlIFNtYXJ0Rm9ybVdpZGdldFR5cGUuVEVYVF9GSUVMRF9MT09LVVA6XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlVGV4dEZpZWxkTG9va3VwKGNvbmZpZy5sYXlvdXREZWZpbml0aW9uKTtcclxuICAgICAgY2FzZSBTbWFydEZvcm1XaWRnZXRUeXBlLlRFWFRfQk9YOlxyXG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZVRleHRCb3goY29uZmlnLmxheW91dERlZmluaXRpb24pO1xyXG4gICAgICBjYXNlIFNtYXJ0Rm9ybVdpZGdldFR5cGUuVE9HR0xFOlxyXG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZVRvZ2dsZShjb25maWcubGF5b3V0RGVmaW5pdGlvbik7XHJcbiAgICAgIGNhc2UgU21hcnRGb3JtV2lkZ2V0VHlwZS5SQURJT19CVVRUT046XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlUmFkaW9CdXR0b24oY29uZmlnLmxheW91dERlZmluaXRpb24pO1xyXG4gICAgICBjYXNlIFNtYXJ0Rm9ybVdpZGdldFR5cGUuQ0hFQ0tfQk9YOlxyXG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZUNoZWNrQm94KGNvbmZpZy5sYXlvdXREZWZpbml0aW9uKTtcclxuICAgICAgY2FzZSBTbWFydEZvcm1XaWRnZXRUeXBlLkNIRUNLX0JPWF8yOlxyXG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZUNoZWNrQm94Mihjb25maWcubGF5b3V0RGVmaW5pdGlvbik7XHJcbiAgICAgIGNhc2UgU21hcnRGb3JtV2lkZ2V0VHlwZS5TRUxFQ1Q6XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlU2VsZWN0KGNvbmZpZy5sYXlvdXREZWZpbml0aW9uLCBjb25maWcubW9kZWwpO1xyXG4gICAgICBjYXNlIFNtYXJ0Rm9ybVdpZGdldFR5cGUuU0VMRUNUX01VTFRJUExFOlxyXG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZVNlbGVjdE11bHRpcGxlKGNvbmZpZy5sYXlvdXREZWZpbml0aW9uKTtcclxuICAgICAgY2FzZSBTbWFydEZvcm1XaWRnZXRUeXBlLkRBVEVfUElDS0VSOlxyXG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZURhdGVQaWNrZXIoY29uZmlnLmxheW91dERlZmluaXRpb24pO1xyXG4gICAgICBjYXNlIFNtYXJ0Rm9ybVdpZGdldFR5cGUuREFURV9USU1FX1BJQ0tFUjpcclxuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVEYXRlVGltZVBpY2tlcihjb25maWcubGF5b3V0RGVmaW5pdGlvbik7XHJcbiAgICAgIGNhc2UgU21hcnRGb3JtV2lkZ2V0VHlwZS5JTUFHRTpcclxuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVJbWFnZShjb25maWcubGF5b3V0RGVmaW5pdGlvbik7XHJcbiAgICAgIGNhc2UgU21hcnRGb3JtV2lkZ2V0VHlwZS5TVkc6XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlU3ZnKGNvbmZpZy5sYXlvdXREZWZpbml0aW9uKTtcclxuICAgICAgY2FzZSBTbWFydEZvcm1XaWRnZXRUeXBlLkJVVFRPTjpcclxuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVCdXR0b24oY29uZmlnKTtcclxuICAgICAgY2FzZSBTbWFydEZvcm1XaWRnZXRUeXBlLkRJVklERVI6XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlRGl2aWRlcihjb25maWcubGF5b3V0RGVmaW5pdGlvbik7XHJcbiAgICAgIGNhc2UgU21hcnRGb3JtV2lkZ2V0VHlwZS5SSUNIX1RFWFQ6XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlUmljaFRleHQoY29uZmlnLmxheW91dERlZmluaXRpb24pO1xyXG4gICAgICBjYXNlIFNtYXJ0Rm9ybVdpZGdldFR5cGUuRklMRV9VUExPQURFUjpcclxuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVGaWxlVXBsb2FkZXIoY29uZmlnLmxheW91dERlZmluaXRpb24pO1xyXG4gICAgICBjYXNlIFNtYXJ0Rm9ybVdpZGdldFR5cGUuTVVMVElfRklMRV9VUExPQURFUjpcclxuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVNdWx0aUZpbGVVcGxvYWRlcihjb25maWcubGF5b3V0RGVmaW5pdGlvbik7XHJcbiAgICAgIGNhc2UgU21hcnRGb3JtV2lkZ2V0VHlwZS5NQVRSSVg6XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlTWF0cml4KGNvbmZpZy5sYXlvdXREZWZpbml0aW9uKTtcclxuICAgICAgY2FzZSBTbWFydEZvcm1XaWRnZXRUeXBlLlNPUlRBQkxFOlxyXG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZVNvcnRhYmxlKGNvbmZpZy5sYXlvdXREZWZpbml0aW9uKTtcclxuICAgICAgY2FzZSBTbWFydEZvcm1XaWRnZXRUeXBlLk1PTlRIX1BJQ0tFUjpcclxuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVNb250aFBpY2tlcihjb25maWcubGF5b3V0RGVmaW5pdGlvbik7XHJcbiAgICAgIGNhc2UgU21hcnRGb3JtV2lkZ2V0VHlwZS5ZT1VUVUJFX1BMQVlFUjpcclxuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVZb3V0dWJlUGxheWVyKGNvbmZpZy5sYXlvdXREZWZpbml0aW9uKTtcclxuICAgIH1cclxuICAgIHJldHVybjtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY3JlYXRlTW9udGhQaWNrZXIobGF5b3V0RGVmaW5pdGlvbjogU21hcnRXaWRnZXREZWZpbml0aW9uKTogU21hcnRGb3JtV2lkZ2V0PGFueT4ge1xyXG4gICAgbGV0IHdpZGdldDogU21hcnRGb3JtV2lkZ2V0PGFueT4gPSB7XHJcbiAgICAgIGtleTogbGF5b3V0RGVmaW5pdGlvbi5rZXksXHJcbiAgICAgIHZhbHVlQ2hhbmdlTW9kZTogbGF5b3V0RGVmaW5pdGlvbi52YWx1ZUNoYW5nZU1vZGUsXHJcbiAgICAgIHR5cGU6IFNtYXJ0Rm9ybVdpZGdldFR5cGUuTU9OVEhfUElDS0VSLFxyXG4gICAgICBsYWJlbDogbGF5b3V0RGVmaW5pdGlvbi5sYWJlbCxcclxuICAgICAgc2hvd0xhYmVsOiBsYXlvdXREZWZpbml0aW9uLnNob3dMYWJlbCxcclxuICAgICAgc2VydmVyRXJyb3JNZXNzYWdlOiBsYXlvdXREZWZpbml0aW9uLmVycm9yTWVzc2FnZSxcclxuICAgICAgc2VydmVyRXJyb3JJY29uOiBsYXlvdXREZWZpbml0aW9uLmVycm9ySWNvbixcclxuICAgICAgc2VydmVyRXJyb3JDb2xvcjogbGF5b3V0RGVmaW5pdGlvbi5lcnJvckNvbG9yLFxyXG4gICAgfTtcclxuICAgIHJldHVybiB3aWRnZXQ7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNyZWF0ZU1hdHJpeChsYXlvdXREZWZpbml0aW9uOiBTbWFydFdpZGdldERlZmluaXRpb24pOiBTbWFydEZvcm1XaWRnZXQ8YW55PiB7XHJcbiAgICBsZXQgd2lkZ2V0OiBTbWFydEZvcm1XaWRnZXQ8YW55PiA9IHtcclxuICAgICAgdHlwZTogU21hcnRGb3JtV2lkZ2V0VHlwZS5NQVRSSVgsXHJcbiAgICAgIGxhYmVsOiBsYXlvdXREZWZpbml0aW9uLmxhYmVsLFxyXG4gICAgICBrZXk6IGxheW91dERlZmluaXRpb24ua2V5LFxyXG4gICAgICB2YWx1ZUNoYW5nZU1vZGU6IGxheW91dERlZmluaXRpb24udmFsdWVDaGFuZ2VNb2RlLFxyXG4gICAgICBzaG93TGFiZWw6IGxheW91dERlZmluaXRpb24uc2hvd0xhYmVsLFxyXG4gICAgICBpc011bHRpcGxlOiBsYXlvdXREZWZpbml0aW9uLm1hdHJpeD8ubXVsdGlTZWxlY3QsXHJcbiAgICAgIHZhbHVlOiBsYXlvdXREZWZpbml0aW9uLm1hdHJpeCxcclxuICAgICAgc2VydmVyRXJyb3JNZXNzYWdlOiBsYXlvdXREZWZpbml0aW9uLmVycm9yTWVzc2FnZSxcclxuICAgICAgc2VydmVyRXJyb3JJY29uOiBsYXlvdXREZWZpbml0aW9uLmVycm9ySWNvbixcclxuICAgICAgc2VydmVyRXJyb3JDb2xvcjogbGF5b3V0RGVmaW5pdGlvbi5lcnJvckNvbG9yLFxyXG4gICAgfTtcclxuICAgIHJldHVybiB3aWRnZXQ7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNyZWF0ZVNvcnRhYmxlKGxheW91dERlZmluaXRpb246IFNtYXJ0V2lkZ2V0RGVmaW5pdGlvbikge1xyXG4gICAgbGV0IHdpZGdldDogU21hcnRGb3JtV2lkZ2V0PGFueT4gPSB7XHJcbiAgICAgIGtleTogbGF5b3V0RGVmaW5pdGlvbi5rZXksXHJcbiAgICAgIHZhbHVlQ2hhbmdlTW9kZTogbGF5b3V0RGVmaW5pdGlvbi52YWx1ZUNoYW5nZU1vZGUsXHJcbiAgICAgIGxhYmVsOiBsYXlvdXREZWZpbml0aW9uLmxhYmVsLFxyXG4gICAgICBzaG93TGFiZWw6IGxheW91dERlZmluaXRpb24uc2hvd0xhYmVsLFxyXG4gICAgICB0eXBlOiBTbWFydEZvcm1XaWRnZXRUeXBlLlNPUlRBQkxFLFxyXG4gICAgICBzZXJ2ZXJFcnJvck1lc3NhZ2U6IGxheW91dERlZmluaXRpb24uZXJyb3JNZXNzYWdlLFxyXG4gICAgICBzZXJ2ZXJFcnJvckljb246IGxheW91dERlZmluaXRpb24uZXJyb3JJY29uLFxyXG4gICAgICBzZXJ2ZXJFcnJvckNvbG9yOiBsYXlvdXREZWZpbml0aW9uLmVycm9yQ29sb3IsXHJcbiAgICAgIGljb246IGxheW91dERlZmluaXRpb24uaWNvbixcclxuICAgICAgc29ydERlZmluaXRpb246IGxheW91dERlZmluaXRpb24uc29ydERlZmluaXRpb24gPz8ge1xyXG4gICAgICAgIGtleTogJ3VyaScsXHJcbiAgICAgICAgZGlzcGxheVZhbHVlOiAnZGlzcGxheVZhbHVlJyxcclxuICAgICAgfSxcclxuICAgIH07XHJcbiAgICByZXR1cm4gd2lkZ2V0O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjcmVhdGVMYWJlbChsYXlvdXREZWZpbml0aW9uOiBTbWFydFdpZGdldERlZmluaXRpb24pOiBTbWFydEZvcm1XaWRnZXQ8YW55PiB7XHJcbiAgICBsZXQgd2lkZ2V0OiBTbWFydEZvcm1XaWRnZXQ8YW55PiA9IHtcclxuICAgICAgdHlwZTogU21hcnRGb3JtV2lkZ2V0VHlwZS5MQUJFTCxcclxuICAgICAgbGFiZWw6IGxheW91dERlZmluaXRpb24ubGFiZWwsXHJcbiAgICAgIHdpZGdldERlc2NyaXB0aW9uOiBsYXlvdXREZWZpbml0aW9uLndpZGdldERlc2NyaXB0aW9uLFxyXG4gICAgICBjc3NDbGFzczogbGF5b3V0RGVmaW5pdGlvbi5jc3NDbGFzcyxcclxuICAgICAgc3R5bGU6IGxheW91dERlZmluaXRpb24uc3R5bGUsXHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIHdpZGdldDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY3JlYXRlQ29udGFpbmVyKFxyXG4gICAgY29uZmlnOiBTbWFydGZvcm1MYXlvdXRDcmVhdGVXaWRnZXRDb25maWcsXHJcbiAgICBsYXlvdXREZWZpbml0aW9uOiBTbWFydFdpZGdldERlZmluaXRpb25cclxuICApOiBTbWFydEZvcm1XaWRnZXQ8YW55PiB7XHJcbiAgICBsZXQgdmFsdWVMaXN0OiBTbWFydEZvcm1XaWRnZXQ8YW55PltdID0gW107XHJcblxyXG4gICAgbGF5b3V0RGVmaW5pdGlvbi5jaGlsZHJlbkNvbXBvbmVudHM/LmZvckVhY2goKGxheW91dERlZmluaXRpb246IFNtYXJ0V2lkZ2V0RGVmaW5pdGlvbikgPT4ge1xyXG4gICAgICBsZXQgd2lkZ2V0ID0gdGhpcy5jcmVhdGVXaWRnZXQoe1xyXG4gICAgICAgIC4uLmNvbmZpZyxcclxuICAgICAgICBsYXlvdXREZWZpbml0aW9uLFxyXG4gICAgICB9KTtcclxuICAgICAgaWYgKHdpZGdldCkge1xyXG4gICAgICAgIHZhbHVlTGlzdC5wdXNoKHdpZGdldCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIGxldCB3aWRnZXQ6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+ID0ge1xyXG4gICAgICBrZXk6IGxheW91dERlZmluaXRpb24ua2V5LFxyXG4gICAgICB2YWx1ZUNoYW5nZU1vZGU6IGxheW91dERlZmluaXRpb24udmFsdWVDaGFuZ2VNb2RlLFxyXG4gICAgICB0eXBlOiBTbWFydEZvcm1XaWRnZXRUeXBlLkNPTlRBSU5FUixcclxuICAgICAgY3NzQ2xhc3M6IGxheW91dERlZmluaXRpb24uY3NzQ2xhc3MsXHJcbiAgICAgIHN0eWxlOiBsYXlvdXREZWZpbml0aW9uLnN0eWxlLFxyXG4gICAgICBkaXJlY3Rpb246IGxheW91dERlZmluaXRpb24uZGlyZWN0aW9uID8/IFNtYXJ0Rm9ybVdpZGdldERpcmVjdGlvbi5DT0wsXHJcbiAgICAgIHZhbHVlTGlzdCxcclxuICAgIH07XHJcblxyXG4gICAgcmV0dXJuIHdpZGdldDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY3JlYXRlVGV4dEZpZWxkKGxheW91dERlZmluaXRpb246IFNtYXJ0V2lkZ2V0RGVmaW5pdGlvbik6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+IHtcclxuICAgIGxldCB3aWRnZXQ6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+ID0ge1xyXG4gICAgICB0eXBlOiBTbWFydEZvcm1XaWRnZXRUeXBlLlRFWFRfRklFTEQsXHJcbiAgICAgIGtleTogbGF5b3V0RGVmaW5pdGlvbi5rZXksXHJcbiAgICAgIHZhbHVlQ2hhbmdlTW9kZTogbGF5b3V0RGVmaW5pdGlvbi52YWx1ZUNoYW5nZU1vZGUsXHJcbiAgICAgIGxhYmVsOiBsYXlvdXREZWZpbml0aW9uLmxhYmVsLFxyXG4gICAgICBwbGFjZWhvbGRlcjogbGF5b3V0RGVmaW5pdGlvbi5wbGFjZWhvbGRlcixcclxuICAgICAgcHJlZml4OiBsYXlvdXREZWZpbml0aW9uLnByZWZpeCxcclxuICAgICAgc3VmZml4OiBsYXlvdXREZWZpbml0aW9uLnN1ZmZpeCxcclxuICAgICAgbWFzazogbGF5b3V0RGVmaW5pdGlvbi5tYXNrLFxyXG4gICAgICBpY29uOiBsYXlvdXREZWZpbml0aW9uLmljb24sXHJcbiAgICAgIGljb25Db2xvcjogbGF5b3V0RGVmaW5pdGlvbi5pY29uQ29sb3IsXHJcbiAgICAgIGljb25Qb3NpdGlvbjogbGF5b3V0RGVmaW5pdGlvbi5pY29uUG9zaXRpb24sXHJcbiAgICAgIHNob3dMYWJlbDogbGF5b3V0RGVmaW5pdGlvbi5zaG93TGFiZWwsXHJcbiAgICAgIGNzc0NsYXNzOiBsYXlvdXREZWZpbml0aW9uLmNzc0NsYXNzLFxyXG4gICAgICBjc3NMYWJlbENsYXNzOiBsYXlvdXREZWZpbml0aW9uLmNzc0xhYmVsQ2xhc3MsXHJcbiAgICAgIGxhYmVsUG9zaXRpb25DbGFzczogbGF5b3V0RGVmaW5pdGlvbi5sYWJlbFBvc2l0aW9uQ2xhc3MsXHJcbiAgICAgIGlzRmxvYXRMYWJlbDogbGF5b3V0RGVmaW5pdGlvbi5pc0Zsb2F0TGFiZWwsXHJcbiAgICAgIHN0eWxlOiBsYXlvdXREZWZpbml0aW9uLnN0eWxlLFxyXG4gICAgICBsYWJlbFN0eWxlOiBsYXlvdXREZWZpbml0aW9uLmxhYmVsU3R5bGUsXHJcbiAgICAgIGlzUGFzc3dvcmQ6IGxheW91dERlZmluaXRpb24uaXNQYXNzd29yZCxcclxuICAgICAgc2VsZWN0aW9uOiBsYXlvdXREZWZpbml0aW9uLnNlbGVjdGlvbixcclxuICAgICAgZmlsdGVyRXJyb3JNZXNzYWdlOiBsYXlvdXREZWZpbml0aW9uLmZpbHRlckVycm9yTWVzc2FnZSxcclxuICAgICAgc2VydmVyRXJyb3JNZXNzYWdlOiBsYXlvdXREZWZpbml0aW9uLmVycm9yTWVzc2FnZSxcclxuICAgICAgc2VydmVyRXJyb3JJY29uOiBsYXlvdXREZWZpbml0aW9uLmVycm9ySWNvbixcclxuICAgICAgc2VydmVyRXJyb3JDb2xvcjogbGF5b3V0RGVmaW5pdGlvbi5lcnJvckNvbG9yLFxyXG4gICAgICBoaW50OiBsYXlvdXREZWZpbml0aW9uLmhpbnQsXHJcbiAgICAgIG1heExlbmd0aDogbGF5b3V0RGVmaW5pdGlvbi5tYXhMZW5ndGgsXHJcbiAgICAgIHNob3dDaGFyYWN0ZXJMaW1pdFN1ZmZpeDogbGF5b3V0RGVmaW5pdGlvbi5zaG93Q2hhcmFjdGVyTGltaXRTdWZmaXgsXHJcbiAgICAgIHRvb2xiYXJJZDogbGF5b3V0RGVmaW5pdGlvbi50b29sYmFySWQsXHJcbiAgICAgIGlucHV0TW9kZTogbGF5b3V0RGVmaW5pdGlvbi5pbnB1dE1vZGUsXHJcbiAgICAgIHRleHRGaWVsZFByb3BlcnRpZXM6IGxheW91dERlZmluaXRpb24ucHJvcGVydGllcz8uWydURVhUX0ZJRUxEX3Byb3BlcnRpZXMnXSxcclxuICAgIH07XHJcbiAgICByZXR1cm4gd2lkZ2V0O1xyXG4gIH1cclxuICBwcml2YXRlIGNyZWF0ZVRleHRGaWVsZENoaXBzKGxheW91dERlZmluaXRpb246IFNtYXJ0V2lkZ2V0RGVmaW5pdGlvbik6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+IHtcclxuICAgIGxldCB3aWRnZXQ6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+ID0ge1xyXG4gICAgICB0eXBlOiBTbWFydEZvcm1XaWRnZXRUeXBlLlRFWFRfRklFTERfQ0hJUFMsXHJcbiAgICAgIGtleTogbGF5b3V0RGVmaW5pdGlvbi5rZXksXHJcbiAgICAgIHZhbHVlQ2hhbmdlTW9kZTogbGF5b3V0RGVmaW5pdGlvbi52YWx1ZUNoYW5nZU1vZGUsXHJcbiAgICAgIGxhYmVsOiBsYXlvdXREZWZpbml0aW9uLmxhYmVsLFxyXG4gICAgICBwbGFjZWhvbGRlcjogbGF5b3V0RGVmaW5pdGlvbi5wbGFjZWhvbGRlcixcclxuICAgICAgc2hvd0xhYmVsOiBsYXlvdXREZWZpbml0aW9uLnNob3dMYWJlbCxcclxuICAgICAgY3NzQ2xhc3M6IGxheW91dERlZmluaXRpb24uY3NzQ2xhc3MsXHJcbiAgICAgIGNzc0xhYmVsQ2xhc3M6IGxheW91dERlZmluaXRpb24uY3NzTGFiZWxDbGFzcyxcclxuICAgICAgbGFiZWxQb3NpdGlvbkNsYXNzOiBsYXlvdXREZWZpbml0aW9uLmxhYmVsUG9zaXRpb25DbGFzcyxcclxuICAgICAgaXNGbG9hdExhYmVsOiBsYXlvdXREZWZpbml0aW9uLmlzRmxvYXRMYWJlbCxcclxuICAgICAgc3R5bGU6IGxheW91dERlZmluaXRpb24uc3R5bGUsXHJcbiAgICAgIGxhYmVsU3R5bGU6IGxheW91dERlZmluaXRpb24ubGFiZWxTdHlsZSxcclxuICAgICAgdmFsdWVMaXN0OiBbXSxcclxuICAgICAgc2VydmVyRXJyb3JNZXNzYWdlOiBsYXlvdXREZWZpbml0aW9uLmVycm9yTWVzc2FnZSxcclxuICAgICAgc2VydmVyRXJyb3JJY29uOiBsYXlvdXREZWZpbml0aW9uLmVycm9ySWNvbixcclxuICAgICAgc2VydmVyRXJyb3JDb2xvcjogbGF5b3V0RGVmaW5pdGlvbi5lcnJvckNvbG9yLFxyXG4gICAgfTtcclxuICAgIGlmIChsYXlvdXREZWZpbml0aW9uLnZhbHVlcykge1xyXG4gICAgICB3aWRnZXQudmFsdWVMaXN0ID0gbGF5b3V0RGVmaW5pdGlvbi52YWx1ZXMubWFwKCh2YWx1ZTogVmFsdWUpID0+IHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAga2V5OiB2YWx1ZS5jb2RlISxcclxuICAgICAgICAgIGxhYmVsOiB2YWx1ZS5kaXNwbGF5VmFsdWUsXHJcbiAgICAgICAgICB0eXBlOiBTbWFydEZvcm1XaWRnZXRUeXBlLklURU0sXHJcbiAgICAgICAgICB2YWx1ZTogdmFsdWUuY29kZSxcclxuICAgICAgICB9O1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHJldHVybiB3aWRnZXQ7XHJcbiAgfVxyXG4gIHByaXZhdGUgY3JlYXRlVGV4dEZpZWxkTG9va3VwKGxheW91dERlZmluaXRpb246IFNtYXJ0V2lkZ2V0RGVmaW5pdGlvbik6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+IHtcclxuICAgIGxldCB3aWRnZXQ6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+ID0ge1xyXG4gICAgICB0eXBlOiBTbWFydEZvcm1XaWRnZXRUeXBlLlRFWFRfRklFTERfTE9PS1VQLFxyXG4gICAgICBrZXk6IGxheW91dERlZmluaXRpb24ua2V5LFxyXG4gICAgICB2YWx1ZUNoYW5nZU1vZGU6IGxheW91dERlZmluaXRpb24udmFsdWVDaGFuZ2VNb2RlLFxyXG4gICAgICBsYWJlbDogbGF5b3V0RGVmaW5pdGlvbi5sYWJlbCxcclxuICAgICAgcGxhY2Vob2xkZXI6IGxheW91dERlZmluaXRpb24ucGxhY2Vob2xkZXIsXHJcbiAgICAgIHNob3dMYWJlbDogbGF5b3V0RGVmaW5pdGlvbi5zaG93TGFiZWwsXHJcbiAgICAgIGNzc0NsYXNzOiBsYXlvdXREZWZpbml0aW9uLmNzc0NsYXNzLFxyXG4gICAgICBjc3NMYWJlbENsYXNzOiBsYXlvdXREZWZpbml0aW9uLmNzc0xhYmVsQ2xhc3MsXHJcbiAgICAgIGxhYmVsUG9zaXRpb25DbGFzczogbGF5b3V0RGVmaW5pdGlvbi5sYWJlbFBvc2l0aW9uQ2xhc3MsXHJcbiAgICAgIGlzRmxvYXRMYWJlbDogbGF5b3V0RGVmaW5pdGlvbi5pc0Zsb2F0TGFiZWwsXHJcbiAgICAgIHN0eWxlOiBsYXlvdXREZWZpbml0aW9uLnN0eWxlLFxyXG4gICAgICBsYWJlbFN0eWxlOiBsYXlvdXREZWZpbml0aW9uLmxhYmVsU3R5bGUsXHJcbiAgICAgIHRvb2xiYXJJZDogbGF5b3V0RGVmaW5pdGlvbi50b29sYmFySWQsXHJcbiAgICAgIHNlcnZlckVycm9yTWVzc2FnZTogbGF5b3V0RGVmaW5pdGlvbi5lcnJvck1lc3NhZ2UsXHJcbiAgICAgIHNlcnZlckVycm9ySWNvbjogbGF5b3V0RGVmaW5pdGlvbi5lcnJvckljb24sXHJcbiAgICAgIHNlcnZlckVycm9yQ29sb3I6IGxheW91dERlZmluaXRpb24uZXJyb3JDb2xvcixcclxuICAgIH07XHJcbiAgICByZXR1cm4gd2lkZ2V0O1xyXG4gIH1cclxuICBwcml2YXRlIGNyZWF0ZVRleHRGaWVsZE51bWJlcihsYXlvdXREZWZpbml0aW9uOiBTbWFydFdpZGdldERlZmluaXRpb24pOiBTbWFydEZvcm1XaWRnZXQ8YW55PiB7XHJcbiAgICBsZXQgd2lkZ2V0OiBTbWFydEZvcm1XaWRnZXQ8YW55PiA9IHtcclxuICAgICAgdHlwZTogU21hcnRGb3JtV2lkZ2V0VHlwZS5URVhUX0ZJRUxEX05VTUJFUixcclxuICAgICAga2V5OiBsYXlvdXREZWZpbml0aW9uLmtleSxcclxuICAgICAgdmFsdWVDaGFuZ2VNb2RlOiBsYXlvdXREZWZpbml0aW9uLnZhbHVlQ2hhbmdlTW9kZSxcclxuICAgICAgbGFiZWw6IGxheW91dERlZmluaXRpb24ubGFiZWwsXHJcbiAgICAgIHBsYWNlaG9sZGVyOiBsYXlvdXREZWZpbml0aW9uLnBsYWNlaG9sZGVyLFxyXG4gICAgICBwcmVmaXg6IGxheW91dERlZmluaXRpb24ucHJlZml4LFxyXG4gICAgICBzdWZmaXg6IGxheW91dERlZmluaXRpb24uc3VmZml4LFxyXG4gICAgICBpY29uOiBsYXlvdXREZWZpbml0aW9uLmljb24sXHJcbiAgICAgIGljb25Db2xvcjogbGF5b3V0RGVmaW5pdGlvbi5pY29uQ29sb3IsXHJcbiAgICAgIHNob3dMYWJlbDogbGF5b3V0RGVmaW5pdGlvbi5zaG93TGFiZWwsXHJcbiAgICAgIGNzc0NsYXNzOiBsYXlvdXREZWZpbml0aW9uLmNzc0NsYXNzLFxyXG4gICAgICBjc3NMYWJlbENsYXNzOiBsYXlvdXREZWZpbml0aW9uLmNzc0xhYmVsQ2xhc3MsXHJcbiAgICAgIGxhYmVsUG9zaXRpb25DbGFzczogbGF5b3V0RGVmaW5pdGlvbi5sYWJlbFBvc2l0aW9uQ2xhc3MsXHJcbiAgICAgIGlzRmxvYXRMYWJlbDogbGF5b3V0RGVmaW5pdGlvbi5pc0Zsb2F0TGFiZWwsXHJcbiAgICAgIHN0eWxlOiBsYXlvdXREZWZpbml0aW9uLnN0eWxlLFxyXG4gICAgICBsYWJlbFN0eWxlOiBsYXlvdXREZWZpbml0aW9uLmxhYmVsU3R5bGUsXHJcbiAgICAgIGhpbnQ6IGxheW91dERlZmluaXRpb24uaGludCxcclxuICAgICAgc2VydmVyRXJyb3JNZXNzYWdlOiBsYXlvdXREZWZpbml0aW9uLmVycm9yTWVzc2FnZSxcclxuICAgICAgc2VydmVyRXJyb3JJY29uOiBsYXlvdXREZWZpbml0aW9uLmVycm9ySWNvbixcclxuICAgICAgc2VydmVyRXJyb3JDb2xvcjogbGF5b3V0RGVmaW5pdGlvbi5lcnJvckNvbG9yLFxyXG4gICAgfTtcclxuICAgIHJldHVybiB3aWRnZXQ7XHJcbiAgfVxyXG4gIHByaXZhdGUgY3JlYXRlVGV4dEJveChsYXlvdXREZWZpbml0aW9uOiBTbWFydFdpZGdldERlZmluaXRpb24pOiBTbWFydEZvcm1XaWRnZXQ8YW55PiB7XHJcbiAgICBsZXQgd2lkZ2V0OiBTbWFydEZvcm1XaWRnZXQ8YW55PiA9IHtcclxuICAgICAgdHlwZTogU21hcnRGb3JtV2lkZ2V0VHlwZS5URVhUX0JPWCxcclxuICAgICAga2V5OiBsYXlvdXREZWZpbml0aW9uLmtleSxcclxuICAgICAgdmFsdWVDaGFuZ2VNb2RlOiBsYXlvdXREZWZpbml0aW9uLnZhbHVlQ2hhbmdlTW9kZSxcclxuICAgICAgbGFiZWw6IGxheW91dERlZmluaXRpb24ubGFiZWwsXHJcbiAgICAgIHBsYWNlaG9sZGVyOiBsYXlvdXREZWZpbml0aW9uLnBsYWNlaG9sZGVyLFxyXG4gICAgICBzaG93TGFiZWw6IGxheW91dERlZmluaXRpb24uc2hvd0xhYmVsLFxyXG4gICAgICBjc3NDbGFzczogbGF5b3V0RGVmaW5pdGlvbi5jc3NDbGFzcyxcclxuICAgICAgY3NzTGFiZWxDbGFzczogbGF5b3V0RGVmaW5pdGlvbi5jc3NMYWJlbENsYXNzLFxyXG4gICAgICBsYWJlbFBvc2l0aW9uQ2xhc3M6IGxheW91dERlZmluaXRpb24ubGFiZWxQb3NpdGlvbkNsYXNzLFxyXG4gICAgICBpc0Zsb2F0TGFiZWw6IGxheW91dERlZmluaXRpb24uaXNGbG9hdExhYmVsLFxyXG4gICAgICBzdHlsZTogbGF5b3V0RGVmaW5pdGlvbi5zdHlsZSxcclxuICAgICAgbGFiZWxTdHlsZTogbGF5b3V0RGVmaW5pdGlvbi5sYWJlbFN0eWxlLFxyXG4gICAgICBoaW50OiBsYXlvdXREZWZpbml0aW9uLmhpbnQsXHJcbiAgICAgIG1heExlbmd0aDogbGF5b3V0RGVmaW5pdGlvbi5tYXhMZW5ndGgsXHJcbiAgICAgIHNob3dDaGFyYWN0ZXJMaW1pdFN1ZmZpeDogbGF5b3V0RGVmaW5pdGlvbi5zaG93Q2hhcmFjdGVyTGltaXRTdWZmaXgsXHJcbiAgICAgIHNlcnZlckVycm9yTWVzc2FnZTogbGF5b3V0RGVmaW5pdGlvbi5lcnJvck1lc3NhZ2UsXHJcbiAgICAgIHNlcnZlckVycm9ySWNvbjogbGF5b3V0RGVmaW5pdGlvbi5lcnJvckljb24sXHJcbiAgICAgIHNlcnZlckVycm9yQ29sb3I6IGxheW91dERlZmluaXRpb24uZXJyb3JDb2xvcixcclxuICAgIH07XHJcbiAgICByZXR1cm4gd2lkZ2V0O1xyXG4gIH1cclxuICBwcml2YXRlIGNyZWF0ZVJpY2hUZXh0KGxheW91dERlZmluaXRpb246IFNtYXJ0V2lkZ2V0RGVmaW5pdGlvbik6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+IHtcclxuICAgIGxldCBxdWlsbE1vZHVsZXM6IFF1aWxsTW9kdWxlcztcclxuICAgIGlmIChsYXlvdXREZWZpbml0aW9uLnByb3BlcnRpZXMgJiYgbGF5b3V0RGVmaW5pdGlvbi5wcm9wZXJ0aWVzWydxdWlsbE1vZHVsZXMnXSkge1xyXG4gICAgICBxdWlsbE1vZHVsZXMgPSBsYXlvdXREZWZpbml0aW9uLnByb3BlcnRpZXNbJ3F1aWxsTW9kdWxlcyddIGFzIFF1aWxsTW9kdWxlcztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHF1aWxsTW9kdWxlcyA9IFNtYXJ0Zm9ybUxheW91dERlZmluaXRpb25TZXJ2aWNlLkRFRkFVTFRfUVVJTExfTU9EVUxFUztcclxuICAgIH1cclxuXHJcbiAgICBsZXQgd2lkZ2V0OiBTbWFydEZvcm1XaWRnZXQ8YW55PiA9IHtcclxuICAgICAgdHlwZTogU21hcnRGb3JtV2lkZ2V0VHlwZS5SSUNIX1RFWFQsXHJcbiAgICAgIGtleTogbGF5b3V0RGVmaW5pdGlvbi5rZXksXHJcbiAgICAgIHZhbHVlQ2hhbmdlTW9kZTogbGF5b3V0RGVmaW5pdGlvbi52YWx1ZUNoYW5nZU1vZGUsXHJcbiAgICAgIGxhYmVsOiBsYXlvdXREZWZpbml0aW9uLmxhYmVsLFxyXG4gICAgICBwbGFjZWhvbGRlcjogbGF5b3V0RGVmaW5pdGlvbi5wbGFjZWhvbGRlcixcclxuICAgICAgc2hvd0xhYmVsOiBsYXlvdXREZWZpbml0aW9uLnNob3dMYWJlbCxcclxuICAgICAgY3NzQ2xhc3M6IGxheW91dERlZmluaXRpb24uY3NzQ2xhc3MsXHJcbiAgICAgIGNzc0xhYmVsQ2xhc3M6IGxheW91dERlZmluaXRpb24uY3NzTGFiZWxDbGFzcyxcclxuICAgICAgbGFiZWxQb3NpdGlvbkNsYXNzOiBsYXlvdXREZWZpbml0aW9uLmxhYmVsUG9zaXRpb25DbGFzcyxcclxuICAgICAgaXNGbG9hdExhYmVsOiBsYXlvdXREZWZpbml0aW9uLmlzRmxvYXRMYWJlbCxcclxuICAgICAgc3R5bGU6IGxheW91dERlZmluaXRpb24uc3R5bGUsXHJcbiAgICAgIGxhYmVsU3R5bGU6IGxheW91dERlZmluaXRpb24ubGFiZWxTdHlsZSxcclxuICAgICAgcXVpbGxNb2R1bGVzLFxyXG4gICAgICBtYXhMZW5ndGg6IGxheW91dERlZmluaXRpb24ubWF4TGVuZ3RoLFxyXG4gICAgICBzaG93Q2hhcmFjdGVyTGltaXRTdWZmaXg6IGxheW91dERlZmluaXRpb24uc2hvd0NoYXJhY3RlckxpbWl0U3VmZml4LFxyXG4gICAgICBzZXJ2ZXJFcnJvck1lc3NhZ2U6IGxheW91dERlZmluaXRpb24uZXJyb3JNZXNzYWdlLFxyXG4gICAgICBzZXJ2ZXJFcnJvckljb246IGxheW91dERlZmluaXRpb24uZXJyb3JJY29uLFxyXG4gICAgICBzZXJ2ZXJFcnJvckNvbG9yOiBsYXlvdXREZWZpbml0aW9uLmVycm9yQ29sb3IsXHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIHdpZGdldDtcclxuICB9XHJcbiAgcHJpdmF0ZSBjcmVhdGVUb2dnbGUobGF5b3V0RGVmaW5pdGlvbjogU21hcnRXaWRnZXREZWZpbml0aW9uKTogU21hcnRGb3JtV2lkZ2V0PGFueT4ge1xyXG4gICAgbGV0IHdpZGdldDogU21hcnRGb3JtV2lkZ2V0PGFueT4gPSB7XHJcbiAgICAgIHR5cGU6IFNtYXJ0Rm9ybVdpZGdldFR5cGUuVE9HR0xFLFxyXG4gICAgICBrZXk6IGxheW91dERlZmluaXRpb24ua2V5LFxyXG4gICAgICB2YWx1ZUNoYW5nZU1vZGU6IGxheW91dERlZmluaXRpb24udmFsdWVDaGFuZ2VNb2RlLFxyXG4gICAgICBsYWJlbDogbGF5b3V0RGVmaW5pdGlvbi5sYWJlbCxcclxuICAgICAgc2hvd0xhYmVsOiBsYXlvdXREZWZpbml0aW9uLnNob3dMYWJlbCxcclxuICAgICAgY3NzQ2xhc3M6IGxheW91dERlZmluaXRpb24uY3NzQ2xhc3MsXHJcbiAgICAgIGNzc0xhYmVsQ2xhc3M6IGxheW91dERlZmluaXRpb24uY3NzTGFiZWxDbGFzcyxcclxuICAgICAgbGFiZWxQb3NpdGlvbkNsYXNzOiBsYXlvdXREZWZpbml0aW9uLmxhYmVsUG9zaXRpb25DbGFzcyxcclxuICAgICAgaXNGbG9hdExhYmVsOiBsYXlvdXREZWZpbml0aW9uLmlzRmxvYXRMYWJlbCxcclxuICAgICAgc3R5bGU6IGxheW91dERlZmluaXRpb24uc3R5bGUsXHJcbiAgICAgIGxhYmVsU3R5bGU6IGxheW91dERlZmluaXRpb24ubGFiZWxTdHlsZSxcclxuICAgICAgaGludDogbGF5b3V0RGVmaW5pdGlvbi5oaW50LFxyXG4gICAgICBzZXJ2ZXJFcnJvck1lc3NhZ2U6IGxheW91dERlZmluaXRpb24uZXJyb3JNZXNzYWdlLFxyXG4gICAgICBzZXJ2ZXJFcnJvckljb246IGxheW91dERlZmluaXRpb24uZXJyb3JJY29uLFxyXG4gICAgICBzZXJ2ZXJFcnJvckNvbG9yOiBsYXlvdXREZWZpbml0aW9uLmVycm9yQ29sb3IsXHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIHdpZGdldDtcclxuICB9XHJcbiAgcHJpdmF0ZSBjcmVhdGVSYWRpb0J1dHRvbihsYXlvdXREZWZpbml0aW9uOiBTbWFydFdpZGdldERlZmluaXRpb24pOiBTbWFydEZvcm1XaWRnZXQ8YW55PiB7XHJcbiAgICBsZXQgd2lkZ2V0OiBTbWFydEZvcm1XaWRnZXQ8YW55PiA9IHtcclxuICAgICAgdHlwZTogU21hcnRGb3JtV2lkZ2V0VHlwZS5SQURJT19CVVRUT04sXHJcbiAgICAgIGtleTogbGF5b3V0RGVmaW5pdGlvbi5rZXksXHJcbiAgICAgIHZhbHVlQ2hhbmdlTW9kZTogbGF5b3V0RGVmaW5pdGlvbi52YWx1ZUNoYW5nZU1vZGUsXHJcbiAgICAgIGxhYmVsOiBsYXlvdXREZWZpbml0aW9uLmxhYmVsLFxyXG4gICAgICBzaG93TGFiZWw6IGxheW91dERlZmluaXRpb24uc2hvd0xhYmVsLFxyXG4gICAgICBjc3NDbGFzczogbGF5b3V0RGVmaW5pdGlvbi5jc3NDbGFzcyxcclxuICAgICAgY3NzTGFiZWxDbGFzczogbGF5b3V0RGVmaW5pdGlvbi5jc3NMYWJlbENsYXNzLFxyXG4gICAgICBsYWJlbFBvc2l0aW9uQ2xhc3M6IGxheW91dERlZmluaXRpb24ubGFiZWxQb3NpdGlvbkNsYXNzLFxyXG4gICAgICBpc0Zsb2F0TGFiZWw6IGxheW91dERlZmluaXRpb24uaXNGbG9hdExhYmVsLFxyXG4gICAgICBzdHlsZTogbGF5b3V0RGVmaW5pdGlvbi5zdHlsZSxcclxuICAgICAgbGFiZWxTdHlsZTogbGF5b3V0RGVmaW5pdGlvbi5sYWJlbFN0eWxlLFxyXG4gICAgICB2YWx1ZUxpc3Q6IFtdLFxyXG4gICAgICBzZWxlY3Rpb246IGxheW91dERlZmluaXRpb24uc2VsZWN0aW9uLFxyXG4gICAgICBoaW50OiBsYXlvdXREZWZpbml0aW9uLmhpbnQsXHJcbiAgICAgIHNlcnZlckVycm9yTWVzc2FnZTogbGF5b3V0RGVmaW5pdGlvbi5lcnJvck1lc3NhZ2UsXHJcbiAgICAgIHNlcnZlckVycm9ySWNvbjogbGF5b3V0RGVmaW5pdGlvbi5lcnJvckljb24sXHJcbiAgICAgIHNlcnZlckVycm9yQ29sb3I6IGxheW91dERlZmluaXRpb24uZXJyb3JDb2xvcixcclxuICAgIH07XHJcblxyXG4gICAgaWYgKGxheW91dERlZmluaXRpb24udmFsdWVzKSB7XHJcbiAgICAgIHdpZGdldC52YWx1ZUxpc3QgPSBsYXlvdXREZWZpbml0aW9uLnZhbHVlcy5tYXAoKHZhbHVlOiBWYWx1ZSkgPT4ge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICBrZXk6IHZhbHVlLmNvZGUhLFxyXG4gICAgICAgICAgbGFiZWw6IHZhbHVlLmRpc3BsYXlWYWx1ZSxcclxuICAgICAgICAgIHR5cGU6IFNtYXJ0Rm9ybVdpZGdldFR5cGUuSVRFTSxcclxuICAgICAgICAgIHZhbHVlOiB2YWx1ZS5jb2RlLFxyXG4gICAgICAgIH07XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHdpZGdldDtcclxuICB9XHJcbiAgcHJpdmF0ZSBjcmVhdGVDaGVja0JveChsYXlvdXREZWZpbml0aW9uOiBTbWFydFdpZGdldERlZmluaXRpb24pOiBTbWFydEZvcm1XaWRnZXQ8YW55PiB7XHJcbiAgICBsZXQgd2lkZ2V0OiBTbWFydEZvcm1XaWRnZXQ8YW55PiA9IHtcclxuICAgICAgdHlwZTogU21hcnRGb3JtV2lkZ2V0VHlwZS5DSEVDS19CT1gsXHJcbiAgICAgIGtleTogbGF5b3V0RGVmaW5pdGlvbi5rZXksXHJcbiAgICAgIHZhbHVlQ2hhbmdlTW9kZTogbGF5b3V0RGVmaW5pdGlvbi52YWx1ZUNoYW5nZU1vZGUsXHJcbiAgICAgIGxhYmVsOiBsYXlvdXREZWZpbml0aW9uLmxhYmVsLFxyXG4gICAgICBzaG93TGFiZWw6IGxheW91dERlZmluaXRpb24uc2hvd0xhYmVsLFxyXG4gICAgICBjc3NDbGFzczogbGF5b3V0RGVmaW5pdGlvbi5jc3NDbGFzcyxcclxuICAgICAgY3NzTGFiZWxDbGFzczogbGF5b3V0RGVmaW5pdGlvbi5jc3NMYWJlbENsYXNzLFxyXG4gICAgICBsYWJlbFBvc2l0aW9uQ2xhc3M6IGxheW91dERlZmluaXRpb24ubGFiZWxQb3NpdGlvbkNsYXNzLFxyXG4gICAgICBpc0Zsb2F0TGFiZWw6IGxheW91dERlZmluaXRpb24uaXNGbG9hdExhYmVsLFxyXG4gICAgICBzdHlsZTogbGF5b3V0RGVmaW5pdGlvbi5zdHlsZSxcclxuICAgICAgbGFiZWxTdHlsZTogbGF5b3V0RGVmaW5pdGlvbi5sYWJlbFN0eWxlLFxyXG4gICAgICBzZWxlY3Rpb246IGxheW91dERlZmluaXRpb24uc2VsZWN0aW9uLFxyXG4gICAgICBoaW50OiBsYXlvdXREZWZpbml0aW9uLmhpbnQsXHJcbiAgICAgIHNlcnZlckVycm9yTWVzc2FnZTogbGF5b3V0RGVmaW5pdGlvbi5lcnJvck1lc3NhZ2UsXHJcbiAgICAgIHNlcnZlckVycm9ySWNvbjogbGF5b3V0RGVmaW5pdGlvbi5lcnJvckljb24sXHJcbiAgICAgIHNlcnZlckVycm9yQ29sb3I6IGxheW91dERlZmluaXRpb24uZXJyb3JDb2xvcixcclxuICAgIH07XHJcbiAgICByZXR1cm4gd2lkZ2V0O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjcmVhdGVDaGVja0JveDIobGF5b3V0RGVmaW5pdGlvbjogU21hcnRXaWRnZXREZWZpbml0aW9uKTogU21hcnRGb3JtV2lkZ2V0PGFueT4ge1xyXG4gICAgbGV0IHdpZGdldDogU21hcnRGb3JtV2lkZ2V0PGFueT4gPSB7XHJcbiAgICAgIHR5cGU6IFNtYXJ0Rm9ybVdpZGdldFR5cGUuQ0hFQ0tfQk9YXzIsXHJcbiAgICAgIGtleTogbGF5b3V0RGVmaW5pdGlvbi5rZXksXHJcbiAgICAgIHZhbHVlQ2hhbmdlTW9kZTogbGF5b3V0RGVmaW5pdGlvbi52YWx1ZUNoYW5nZU1vZGUsXHJcbiAgICAgIGxhYmVsOiBsYXlvdXREZWZpbml0aW9uLmxhYmVsLFxyXG4gICAgICBzaG93TGFiZWw6IGxheW91dERlZmluaXRpb24uc2hvd0xhYmVsLFxyXG4gICAgICBjc3NDbGFzczogbGF5b3V0RGVmaW5pdGlvbi5jc3NDbGFzcyxcclxuICAgICAgY3NzTGFiZWxDbGFzczogbGF5b3V0RGVmaW5pdGlvbi5jc3NMYWJlbENsYXNzLFxyXG4gICAgICBsYWJlbFBvc2l0aW9uQ2xhc3M6IGxheW91dERlZmluaXRpb24ubGFiZWxQb3NpdGlvbkNsYXNzLFxyXG4gICAgICBpc0Zsb2F0TGFiZWw6IGxheW91dERlZmluaXRpb24uaXNGbG9hdExhYmVsLFxyXG4gICAgICBzdHlsZTogbGF5b3V0RGVmaW5pdGlvbi5zdHlsZSxcclxuICAgICAgbGFiZWxTdHlsZTogbGF5b3V0RGVmaW5pdGlvbi5sYWJlbFN0eWxlLFxyXG4gICAgICB2YWx1ZUxpc3Q6IFtdLFxyXG4gICAgICBzZWxlY3Rpb246IGxheW91dERlZmluaXRpb24uc2VsZWN0aW9uLFxyXG4gICAgICBoaW50OiBsYXlvdXREZWZpbml0aW9uLmhpbnQsXHJcbiAgICAgIHNlcnZlckVycm9yTWVzc2FnZTogbGF5b3V0RGVmaW5pdGlvbi5lcnJvck1lc3NhZ2UsXHJcbiAgICAgIHNlcnZlckVycm9ySWNvbjogbGF5b3V0RGVmaW5pdGlvbi5lcnJvckljb24sXHJcbiAgICAgIHNlcnZlckVycm9yQ29sb3I6IGxheW91dERlZmluaXRpb24uZXJyb3JDb2xvcixcclxuICAgIH07XHJcbiAgICBpZiAobGF5b3V0RGVmaW5pdGlvbi52YWx1ZXMpIHtcclxuICAgICAgd2lkZ2V0LnZhbHVlTGlzdCA9IGxheW91dERlZmluaXRpb24udmFsdWVzLm1hcCgodmFsdWU6IFZhbHVlKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgIGtleTogdmFsdWUuY29kZSEsXHJcbiAgICAgICAgICBsYWJlbDogdmFsdWUuZGlzcGxheVZhbHVlLFxyXG4gICAgICAgICAgdHlwZTogU21hcnRGb3JtV2lkZ2V0VHlwZS5JVEVNLFxyXG4gICAgICAgICAgdmFsdWU6IGZhbHNlLFxyXG4gICAgICAgIH07XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHdpZGdldDtcclxuICB9XHJcbiAgcHJpdmF0ZSBjcmVhdGVTZWxlY3QobGF5b3V0RGVmaW5pdGlvbjogU21hcnRXaWRnZXREZWZpbml0aW9uLCBtb2RlbD86IGFueSk6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+IHtcclxuICAgIGxldCB3aWRnZXQ6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+ID0ge1xyXG4gICAgICB0eXBlOiBTbWFydEZvcm1XaWRnZXRUeXBlLlNFTEVDVCxcclxuICAgICAga2V5OiBsYXlvdXREZWZpbml0aW9uLmtleSxcclxuICAgICAgdmFsdWVDaGFuZ2VNb2RlOiBsYXlvdXREZWZpbml0aW9uLnZhbHVlQ2hhbmdlTW9kZSxcclxuICAgICAgbGFiZWw6IGxheW91dERlZmluaXRpb24ubGFiZWwsXHJcbiAgICAgIHNob3dMYWJlbDogbGF5b3V0RGVmaW5pdGlvbi5zaG93TGFiZWwsXHJcbiAgICAgIGNzc0NsYXNzOiBsYXlvdXREZWZpbml0aW9uLmNzc0NsYXNzLFxyXG4gICAgICBjc3NMYWJlbENsYXNzOiBsYXlvdXREZWZpbml0aW9uLmNzc0xhYmVsQ2xhc3MsXHJcbiAgICAgIGxhYmVsUG9zaXRpb25DbGFzczogbGF5b3V0RGVmaW5pdGlvbi5sYWJlbFBvc2l0aW9uQ2xhc3MsXHJcbiAgICAgIGlzRmxvYXRMYWJlbDogbGF5b3V0RGVmaW5pdGlvbi5pc0Zsb2F0TGFiZWwsXHJcbiAgICAgIHN0eWxlOiBsYXlvdXREZWZpbml0aW9uLnN0eWxlLFxyXG4gICAgICBsYWJlbFN0eWxlOiBsYXlvdXREZWZpbml0aW9uLmxhYmVsU3R5bGUsXHJcbiAgICAgIHZhbHVlTGlzdDogW10sXHJcbiAgICAgIHNlbGVjdGlvbjogbGF5b3V0RGVmaW5pdGlvbi5zZWxlY3Rpb24sXHJcbiAgICAgIGhpbnQ6IGxheW91dERlZmluaXRpb24uaGludCxcclxuICAgICAgc2VydmVyRXJyb3JNZXNzYWdlOiBsYXlvdXREZWZpbml0aW9uLmVycm9yTWVzc2FnZSxcclxuICAgICAgc2VydmVyRXJyb3JJY29uOiBsYXlvdXREZWZpbml0aW9uLmVycm9ySWNvbixcclxuICAgICAgc2VydmVyRXJyb3JDb2xvcjogbGF5b3V0RGVmaW5pdGlvbi5lcnJvckNvbG9yLFxyXG4gICAgfTtcclxuXHJcbiAgICBpZiAobGF5b3V0RGVmaW5pdGlvbi52YWx1ZXMpIHtcclxuICAgICAgd2lkZ2V0LnZhbHVlTGlzdCA9IGxheW91dERlZmluaXRpb24udmFsdWVzLm1hcCgodmFsdWU6IFZhbHVlKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgIGtleTogdmFsdWUuY29kZSEsXHJcbiAgICAgICAgICBsYWJlbDogdmFsdWUuZGlzcGxheVZhbHVlLFxyXG4gICAgICAgICAgdHlwZTogU21hcnRGb3JtV2lkZ2V0VHlwZS5JVEVNLFxyXG4gICAgICAgICAgdmFsdWU6IHZhbHVlLmNvZGUsXHJcbiAgICAgICAgfTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gd2lkZ2V0O1xyXG4gIH1cclxuICBwcml2YXRlIGNyZWF0ZVNlbGVjdE11bHRpcGxlKGxheW91dERlZmluaXRpb246IFNtYXJ0V2lkZ2V0RGVmaW5pdGlvbik6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+IHtcclxuICAgIGxldCB3aWRnZXQ6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+ID0ge1xyXG4gICAgICB0eXBlOiBTbWFydEZvcm1XaWRnZXRUeXBlLlNFTEVDVF9NVUxUSVBMRSxcclxuICAgICAga2V5OiBsYXlvdXREZWZpbml0aW9uLmtleSxcclxuICAgICAgdmFsdWVDaGFuZ2VNb2RlOiBsYXlvdXREZWZpbml0aW9uLnZhbHVlQ2hhbmdlTW9kZSxcclxuICAgICAgbGFiZWw6IGxheW91dERlZmluaXRpb24ubGFiZWwsXHJcbiAgICAgIHNob3dMYWJlbDogbGF5b3V0RGVmaW5pdGlvbi5zaG93TGFiZWwsXHJcbiAgICAgIGNzc0NsYXNzOiBsYXlvdXREZWZpbml0aW9uLmNzc0NsYXNzLFxyXG4gICAgICBjc3NMYWJlbENsYXNzOiBsYXlvdXREZWZpbml0aW9uLmNzc0xhYmVsQ2xhc3MsXHJcbiAgICAgIGxhYmVsUG9zaXRpb25DbGFzczogbGF5b3V0RGVmaW5pdGlvbi5sYWJlbFBvc2l0aW9uQ2xhc3MsXHJcbiAgICAgIGlzRmxvYXRMYWJlbDogbGF5b3V0RGVmaW5pdGlvbi5pc0Zsb2F0TGFiZWwsXHJcbiAgICAgIHN0eWxlOiBsYXlvdXREZWZpbml0aW9uLnN0eWxlLFxyXG4gICAgICBsYWJlbFN0eWxlOiBsYXlvdXREZWZpbml0aW9uLmxhYmVsU3R5bGUsXHJcbiAgICAgIHZhbHVlTGlzdDogW10sXHJcbiAgICAgIHNlbGVjdGlvbjogbGF5b3V0RGVmaW5pdGlvbi5zZWxlY3Rpb24sXHJcbiAgICAgIGhpbnQ6IGxheW91dERlZmluaXRpb24uaGludCxcclxuICAgICAgc2VydmVyRXJyb3JNZXNzYWdlOiBsYXlvdXREZWZpbml0aW9uLmVycm9yTWVzc2FnZSxcclxuICAgICAgc2VydmVyRXJyb3JJY29uOiBsYXlvdXREZWZpbml0aW9uLmVycm9ySWNvbixcclxuICAgICAgc2VydmVyRXJyb3JDb2xvcjogbGF5b3V0RGVmaW5pdGlvbi5lcnJvckNvbG9yLFxyXG4gICAgfTtcclxuICAgIGlmIChsYXlvdXREZWZpbml0aW9uLnZhbHVlcykge1xyXG4gICAgICB3aWRnZXQudmFsdWVMaXN0ID0gbGF5b3V0RGVmaW5pdGlvbi52YWx1ZXMubWFwKCh2YWx1ZTogVmFsdWUpID0+IHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAga2V5OiB2YWx1ZS5jb2RlISxcclxuICAgICAgICAgIGxhYmVsOiB2YWx1ZS5kaXNwbGF5VmFsdWUsXHJcbiAgICAgICAgICB0eXBlOiBTbWFydEZvcm1XaWRnZXRUeXBlLklURU0sXHJcbiAgICAgICAgICB2YWx1ZTogdmFsdWUuY29kZSxcclxuICAgICAgICB9O1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHJldHVybiB3aWRnZXQ7XHJcbiAgfVxyXG4gIHByaXZhdGUgY3JlYXRlRGF0ZVBpY2tlcihsYXlvdXREZWZpbml0aW9uOiBTbWFydFdpZGdldERlZmluaXRpb24pOiBTbWFydEZvcm1XaWRnZXQ8YW55PiB7XHJcbiAgICBsZXQgd2lkZ2V0OiBTbWFydEZvcm1XaWRnZXQ8YW55PiA9IHtcclxuICAgICAgdHlwZTogU21hcnRGb3JtV2lkZ2V0VHlwZS5EQVRFX1BJQ0tFUixcclxuICAgICAga2V5OiBsYXlvdXREZWZpbml0aW9uLmtleSxcclxuICAgICAgdmFsdWVDaGFuZ2VNb2RlOiBsYXlvdXREZWZpbml0aW9uLnZhbHVlQ2hhbmdlTW9kZSxcclxuICAgICAgbGFiZWw6IGxheW91dERlZmluaXRpb24ubGFiZWwsXHJcbiAgICAgIHNob3dMYWJlbDogbGF5b3V0RGVmaW5pdGlvbi5zaG93TGFiZWwsXHJcbiAgICAgIGNzc0NsYXNzOiBsYXlvdXREZWZpbml0aW9uLmNzc0NsYXNzLFxyXG4gICAgICBjc3NMYWJlbENsYXNzOiBsYXlvdXREZWZpbml0aW9uLmNzc0xhYmVsQ2xhc3MsXHJcbiAgICAgIGxhYmVsUG9zaXRpb25DbGFzczogbGF5b3V0RGVmaW5pdGlvbi5sYWJlbFBvc2l0aW9uQ2xhc3MsXHJcbiAgICAgIGlzRmxvYXRMYWJlbDogbGF5b3V0RGVmaW5pdGlvbi5pc0Zsb2F0TGFiZWwsXHJcbiAgICAgIHN0eWxlOiBsYXlvdXREZWZpbml0aW9uLnN0eWxlLFxyXG4gICAgICBsYWJlbFN0eWxlOiBsYXlvdXREZWZpbml0aW9uLmxhYmVsU3R5bGUsXHJcbiAgICAgIGhpbnQ6IGxheW91dERlZmluaXRpb24uaGludCxcclxuICAgICAgc2VydmVyRXJyb3JNZXNzYWdlOiBsYXlvdXREZWZpbml0aW9uLmVycm9yTWVzc2FnZSxcclxuICAgICAgc2VydmVyRXJyb3JJY29uOiBsYXlvdXREZWZpbml0aW9uLmVycm9ySWNvbixcclxuICAgICAgc2VydmVyRXJyb3JDb2xvcjogbGF5b3V0RGVmaW5pdGlvbi5lcnJvckNvbG9yLFxyXG4gICAgICBkYXRlRmllbGRQcm9wZXJ0aWVzOiBsYXlvdXREZWZpbml0aW9uLnByb3BlcnRpZXM/LlsnREFURV9QSUNLRVJfcHJvcGVydGllcyddLFxyXG4gICAgfTtcclxuICAgIHJldHVybiB3aWRnZXQ7XHJcbiAgfVxyXG4gIHByaXZhdGUgY3JlYXRlRGF0ZVRpbWVQaWNrZXIobGF5b3V0RGVmaW5pdGlvbjogU21hcnRXaWRnZXREZWZpbml0aW9uKTogU21hcnRGb3JtV2lkZ2V0PGFueT4ge1xyXG4gICAgbGV0IHdpZGdldDogU21hcnRGb3JtV2lkZ2V0PGFueT4gPSB7XHJcbiAgICAgIHR5cGU6IFNtYXJ0Rm9ybVdpZGdldFR5cGUuREFURV9USU1FX1BJQ0tFUixcclxuICAgICAga2V5OiBsYXlvdXREZWZpbml0aW9uLmtleSxcclxuICAgICAgdmFsdWVDaGFuZ2VNb2RlOiBsYXlvdXREZWZpbml0aW9uLnZhbHVlQ2hhbmdlTW9kZSxcclxuICAgICAgbGFiZWw6IGxheW91dERlZmluaXRpb24ubGFiZWwsXHJcbiAgICAgIHNob3dMYWJlbDogbGF5b3V0RGVmaW5pdGlvbi5zaG93TGFiZWwsXHJcbiAgICAgIGNzc0NsYXNzOiBsYXlvdXREZWZpbml0aW9uLmNzc0NsYXNzLFxyXG4gICAgICBjc3NMYWJlbENsYXNzOiBsYXlvdXREZWZpbml0aW9uLmNzc0xhYmVsQ2xhc3MsXHJcbiAgICAgIGxhYmVsUG9zaXRpb25DbGFzczogbGF5b3V0RGVmaW5pdGlvbi5sYWJlbFBvc2l0aW9uQ2xhc3MsXHJcbiAgICAgIGlzRmxvYXRMYWJlbDogbGF5b3V0RGVmaW5pdGlvbi5pc0Zsb2F0TGFiZWwsXHJcbiAgICAgIHN0eWxlOiBsYXlvdXREZWZpbml0aW9uLnN0eWxlLFxyXG4gICAgICBsYWJlbFN0eWxlOiBsYXlvdXREZWZpbml0aW9uLmxhYmVsU3R5bGUsXHJcbiAgICAgIGhpbnQ6IGxheW91dERlZmluaXRpb24uaGludCxcclxuICAgICAgc2VydmVyRXJyb3JNZXNzYWdlOiBsYXlvdXREZWZpbml0aW9uLmVycm9yTWVzc2FnZSxcclxuICAgICAgc2VydmVyRXJyb3JJY29uOiBsYXlvdXREZWZpbml0aW9uLmVycm9ySWNvbixcclxuICAgICAgc2VydmVyRXJyb3JDb2xvcjogbGF5b3V0RGVmaW5pdGlvbi5lcnJvckNvbG9yLFxyXG4gICAgICBkYXRlRmllbGRQcm9wZXJ0aWVzOiBsYXlvdXREZWZpbml0aW9uLnByb3BlcnRpZXM/LlsnREFURV9USU1FX1BJQ0tFUl9wcm9wZXJ0aWVzJ10sXHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIHdpZGdldDtcclxuICB9XHJcbiAgcHJpdmF0ZSBjcmVhdGVJbWFnZShsYXlvdXREZWZpbml0aW9uOiBTbWFydFdpZGdldERlZmluaXRpb24pOiBTbWFydEZvcm1XaWRnZXQ8YW55PiB7XHJcbiAgICBsZXQgd2lkZ2V0OiBTbWFydEZvcm1XaWRnZXQ8YW55PiA9IHtcclxuICAgICAgdHlwZTogU21hcnRGb3JtV2lkZ2V0VHlwZS5JTUFHRSxcclxuICAgICAga2V5OiBsYXlvdXREZWZpbml0aW9uLmtleSxcclxuICAgICAgdmFsdWVDaGFuZ2VNb2RlOiBsYXlvdXREZWZpbml0aW9uLnZhbHVlQ2hhbmdlTW9kZSxcclxuICAgICAgbGFiZWw6IGxheW91dERlZmluaXRpb24ubGFiZWwsXHJcbiAgICAgIHNob3dMYWJlbDogbGF5b3V0RGVmaW5pdGlvbi5zaG93TGFiZWwsXHJcbiAgICAgIGNzc0NsYXNzOiBsYXlvdXREZWZpbml0aW9uLmNzc0NsYXNzLFxyXG4gICAgICBjc3NMYWJlbENsYXNzOiBsYXlvdXREZWZpbml0aW9uLmNzc0xhYmVsQ2xhc3MsXHJcbiAgICAgIGxhYmVsUG9zaXRpb25DbGFzczogbGF5b3V0RGVmaW5pdGlvbi5sYWJlbFBvc2l0aW9uQ2xhc3MsXHJcbiAgICAgIGlzRmxvYXRMYWJlbDogbGF5b3V0RGVmaW5pdGlvbi5pc0Zsb2F0TGFiZWwsXHJcbiAgICAgIHN0eWxlOiBsYXlvdXREZWZpbml0aW9uLnN0eWxlLFxyXG4gICAgICBsYWJlbFN0eWxlOiBsYXlvdXREZWZpbml0aW9uLmxhYmVsU3R5bGUsXHJcbiAgICAgIGltYWdlUHJvcGVydGllczogbGF5b3V0RGVmaW5pdGlvbi5wcm9wZXJ0aWVzPy5bJ0lNQUdFX3Byb3BlcnRpZXMnXSxcclxuICAgIH07XHJcbiAgICByZXR1cm4gd2lkZ2V0O1xyXG4gIH1cclxuICBwcml2YXRlIGNyZWF0ZVN2ZyhsYXlvdXREZWZpbml0aW9uOiBTbWFydFdpZGdldERlZmluaXRpb24pOiBTbWFydEZvcm1XaWRnZXQ8YW55PiB7XHJcbiAgICBsZXQgd2lkZ2V0OiBTbWFydEZvcm1XaWRnZXQ8YW55PiA9IHtcclxuICAgICAgdHlwZTogU21hcnRGb3JtV2lkZ2V0VHlwZS5TVkcsXHJcbiAgICAgIGtleTogbGF5b3V0RGVmaW5pdGlvbi5rZXksXHJcbiAgICAgIHZhbHVlQ2hhbmdlTW9kZTogbGF5b3V0RGVmaW5pdGlvbi52YWx1ZUNoYW5nZU1vZGUsXHJcbiAgICAgIGxhYmVsOiBsYXlvdXREZWZpbml0aW9uLmxhYmVsLFxyXG4gICAgICBzaG93TGFiZWw6IGxheW91dERlZmluaXRpb24uc2hvd0xhYmVsLFxyXG4gICAgICBjc3NDbGFzczogbGF5b3V0RGVmaW5pdGlvbi5jc3NDbGFzcyxcclxuICAgICAgY3NzTGFiZWxDbGFzczogbGF5b3V0RGVmaW5pdGlvbi5jc3NMYWJlbENsYXNzLFxyXG4gICAgICBsYWJlbFBvc2l0aW9uQ2xhc3M6IGxheW91dERlZmluaXRpb24ubGFiZWxQb3NpdGlvbkNsYXNzLFxyXG4gICAgICBpc0Zsb2F0TGFiZWw6IGxheW91dERlZmluaXRpb24uaXNGbG9hdExhYmVsLFxyXG4gICAgICBzdHlsZTogbGF5b3V0RGVmaW5pdGlvbi5zdHlsZSxcclxuICAgICAgbGFiZWxTdHlsZTogbGF5b3V0RGVmaW5pdGlvbi5sYWJlbFN0eWxlLFxyXG4gICAgfTtcclxuICAgIHJldHVybiB3aWRnZXQ7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNyZWF0ZUJ1dHRvbihjb25maWc6IFNtYXJ0Zm9ybUxheW91dENyZWF0ZVdpZGdldENvbmZpZyk6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+IHtcclxuICAgIGxldCB1aUFjdGlvbjogYW55ID0gY29uZmlnLnVpQWN0aW9ucz8uZmluZChcclxuICAgICAgKHVpQWN0aW9uOiBhbnkpID0+IHVpQWN0aW9uLmNvZGUgPT09IGNvbmZpZy5sYXlvdXREZWZpbml0aW9uPy5rZXlcclxuICAgICk7XHJcbiAgICBsZXQgd2lkZ2V0OiBTbWFydEZvcm1XaWRnZXQ8YW55PiA9IHtcclxuICAgICAgdHlwZTogU21hcnRGb3JtV2lkZ2V0VHlwZS5CVVRUT04sXHJcbiAgICAgIGtleTogY29uZmlnLmxheW91dERlZmluaXRpb24/LmtleSEsXHJcbiAgICAgIHZhbHVlQ2hhbmdlTW9kZTogY29uZmlnLmxheW91dERlZmluaXRpb24/LnZhbHVlQ2hhbmdlTW9kZSxcclxuICAgICAgbGFiZWw6IGNvbmZpZy5sYXlvdXREZWZpbml0aW9uPy5sYWJlbCEsXHJcbiAgICAgIHNob3dMYWJlbDogY29uZmlnLmxheW91dERlZmluaXRpb24/LnNob3dMYWJlbCxcclxuICAgICAgY3NzQ2xhc3M6IGNvbmZpZy5sYXlvdXREZWZpbml0aW9uPy5jc3NDbGFzcyxcclxuICAgICAgY3NzTGFiZWxDbGFzczogY29uZmlnLmxheW91dERlZmluaXRpb24/LmNzc0xhYmVsQ2xhc3MsXHJcbiAgICAgIHN0eWxlOiBjb25maWcubGF5b3V0RGVmaW5pdGlvbj8uc3R5bGUsXHJcbiAgICAgIGxhYmVsU3R5bGU6IGNvbmZpZy5sYXlvdXREZWZpbml0aW9uPy5sYWJlbFN0eWxlLFxyXG4gICAgICBjYWxsYmFjazogY29uZmlnLmJ1dHRvbkNhbGxiYWNrISxcclxuICAgICAgdWlBY3Rpb24sXHJcbiAgICAgIHVpQWN0aW9uRGVzY3JpcHRvcjogY29uZmlnLnVpQWN0aW9uRGVzY3JpcHRvcnMhKHVpQWN0aW9uKSxcclxuICAgIH07XHJcbiAgICByZXR1cm4gd2lkZ2V0O1xyXG4gIH1cclxuICBwcml2YXRlIGNyZWF0ZURpdmlkZXIobGF5b3V0RGVmaW5pdGlvbjogU21hcnRXaWRnZXREZWZpbml0aW9uKTogU21hcnRGb3JtV2lkZ2V0PGFueT4ge1xyXG4gICAgbGV0IHdpZGdldDogU21hcnRGb3JtV2lkZ2V0PGFueT4gPSB7XHJcbiAgICAgIHR5cGU6IFNtYXJ0Rm9ybVdpZGdldFR5cGUuRElWSURFUixcclxuICAgICAga2V5OiBsYXlvdXREZWZpbml0aW9uLmtleSxcclxuICAgICAgdmFsdWVDaGFuZ2VNb2RlOiBsYXlvdXREZWZpbml0aW9uLnZhbHVlQ2hhbmdlTW9kZSxcclxuICAgICAgbGFiZWw6IGxheW91dERlZmluaXRpb24ubGFiZWwsXHJcbiAgICAgIHNob3dMYWJlbDogbGF5b3V0RGVmaW5pdGlvbi5zaG93TGFiZWwsXHJcbiAgICAgIGNzc0NsYXNzOiBsYXlvdXREZWZpbml0aW9uLmNzc0NsYXNzLFxyXG4gICAgICBjc3NMYWJlbENsYXNzOiBsYXlvdXREZWZpbml0aW9uLmNzc0xhYmVsQ2xhc3MsXHJcbiAgICAgIHN0eWxlOiBsYXlvdXREZWZpbml0aW9uLnN0eWxlLFxyXG4gICAgICBsYWJlbFN0eWxlOiBsYXlvdXREZWZpbml0aW9uLmxhYmVsU3R5bGUsXHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIHdpZGdldDtcclxuICB9XHJcbiAgcHJpdmF0ZSBjcmVhdGVGaWxlVXBsb2FkZXIobGF5b3V0RGVmaW5pdGlvbjogU21hcnRXaWRnZXREZWZpbml0aW9uKTogU21hcnRGb3JtV2lkZ2V0PGFueT4ge1xyXG4gICAgbGV0IHdpZGdldDogU21hcnRGb3JtV2lkZ2V0PGFueT4gPSB7XHJcbiAgICAgIHR5cGU6IFNtYXJ0Rm9ybVdpZGdldFR5cGUuRklMRV9VUExPQURFUixcclxuICAgICAga2V5OiBsYXlvdXREZWZpbml0aW9uLmtleSxcclxuICAgICAgdG9vbGJhcklkOiBsYXlvdXREZWZpbml0aW9uLnRvb2xiYXJJZCxcclxuICAgICAgdmFsdWVDaGFuZ2VNb2RlOiBsYXlvdXREZWZpbml0aW9uLnZhbHVlQ2hhbmdlTW9kZSxcclxuICAgICAgbGFiZWw6IGxheW91dERlZmluaXRpb24ubGFiZWwsXHJcbiAgICAgIHNob3dMYWJlbDogbGF5b3V0RGVmaW5pdGlvbi5zaG93TGFiZWwsXHJcbiAgICAgIGNzc0NsYXNzOiBsYXlvdXREZWZpbml0aW9uLmNzc0NsYXNzLFxyXG4gICAgICBjc3NMYWJlbENsYXNzOiBsYXlvdXREZWZpbml0aW9uLmNzc0xhYmVsQ2xhc3MsXHJcbiAgICAgIGxhYmVsUG9zaXRpb25DbGFzczogbGF5b3V0RGVmaW5pdGlvbi5sYWJlbFBvc2l0aW9uQ2xhc3MsXHJcbiAgICAgIGlzRmxvYXRMYWJlbDogbGF5b3V0RGVmaW5pdGlvbi5pc0Zsb2F0TGFiZWwsXHJcbiAgICAgIHN0eWxlOiBsYXlvdXREZWZpbml0aW9uLnN0eWxlLFxyXG4gICAgICBsYWJlbFN0eWxlOiBsYXlvdXREZWZpbml0aW9uLmxhYmVsU3R5bGUsXHJcbiAgICAgIGZpbGVVcGxvYWRlclByb3BlcnRpZXM6IGxheW91dERlZmluaXRpb24ucHJvcGVydGllcz8uWydGSUxFX1VQTE9BREVSX3Byb3BlcnRpZXMnXSxcclxuICAgIH07XHJcbiAgICByZXR1cm4gd2lkZ2V0O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjcmVhdGVNdWx0aUZpbGVVcGxvYWRlcihsYXlvdXREZWZpbml0aW9uOiBTbWFydFdpZGdldERlZmluaXRpb24pOiBTbWFydEZvcm1XaWRnZXQ8YW55PiB7XHJcbiAgICBsZXQgd2lkZ2V0OiBTbWFydEZvcm1XaWRnZXQ8YW55PiA9IHtcclxuICAgICAgdHlwZTogU21hcnRGb3JtV2lkZ2V0VHlwZS5NVUxUSV9GSUxFX1VQTE9BREVSLFxyXG4gICAgICBrZXk6IGxheW91dERlZmluaXRpb24ua2V5LFxyXG4gICAgICB0b29sYmFySWQ6IGxheW91dERlZmluaXRpb24udG9vbGJhcklkLFxyXG4gICAgICB2YWx1ZUNoYW5nZU1vZGU6IGxheW91dERlZmluaXRpb24udmFsdWVDaGFuZ2VNb2RlLFxyXG4gICAgICBsYWJlbDogbGF5b3V0RGVmaW5pdGlvbi5sYWJlbCxcclxuICAgICAgc2hvd0xhYmVsOiBsYXlvdXREZWZpbml0aW9uLnNob3dMYWJlbCxcclxuICAgICAgY3NzQ2xhc3M6IGxheW91dERlZmluaXRpb24uY3NzQ2xhc3MsXHJcbiAgICAgIGNzc0xhYmVsQ2xhc3M6IGxheW91dERlZmluaXRpb24uY3NzTGFiZWxDbGFzcyxcclxuICAgICAgbGFiZWxQb3NpdGlvbkNsYXNzOiBsYXlvdXREZWZpbml0aW9uLmxhYmVsUG9zaXRpb25DbGFzcyxcclxuICAgICAgaXNGbG9hdExhYmVsOiBsYXlvdXREZWZpbml0aW9uLmlzRmxvYXRMYWJlbCxcclxuICAgICAgc3R5bGU6IGxheW91dERlZmluaXRpb24uc3R5bGUsXHJcbiAgICAgIGxhYmVsU3R5bGU6IGxheW91dERlZmluaXRpb24ubGFiZWxTdHlsZSxcclxuICAgICAgbXVsdGlGaWxlVXBsb2FkZXJQcm9wZXJ0aWVzOiBsYXlvdXREZWZpbml0aW9uLnByb3BlcnRpZXM/LlsnTVVMVElfRklMRV9VUExPQURFUl9wcm9wZXJ0aWVzJ10sXHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIHdpZGdldDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY3JlYXRlWW91dHViZVBsYXllcihsYXlvdXREZWZpbml0aW9uOiBTbWFydFdpZGdldERlZmluaXRpb24pOiBTbWFydEZvcm1XaWRnZXQ8YW55PiB7XHJcbiAgICBjb25zdCB7IGxpbmssIHN0YXJ0U2Vjb25kcywgZW5kU2Vjb25kcyB9ID0gdGhpcy5leHRyYWN0WW91dHViZVBsYXllclByb3BzKGxheW91dERlZmluaXRpb24pO1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgdHlwZTogU21hcnRGb3JtV2lkZ2V0VHlwZS5ZT1VUVUJFX1BMQVlFUixcclxuICAgICAga2V5OiBsYXlvdXREZWZpbml0aW9uLmtleSxcclxuICAgICAgbGFiZWw6IGxheW91dERlZmluaXRpb24ubGFiZWwsXHJcbiAgICAgIGhpbnQ6IGxheW91dERlZmluaXRpb24uaGludCxcclxuICAgICAgdmFsdWVDaGFuZ2VNb2RlOiBsYXlvdXREZWZpbml0aW9uLnZhbHVlQ2hhbmdlTW9kZSxcclxuICAgICAgc2hvd0xhYmVsOiBsYXlvdXREZWZpbml0aW9uLnNob3dMYWJlbCxcclxuICAgICAgY3NzQ2xhc3M6IGxheW91dERlZmluaXRpb24uY3NzQ2xhc3MsXHJcbiAgICAgIGNzc0xhYmVsQ2xhc3M6IGxheW91dERlZmluaXRpb24uY3NzTGFiZWxDbGFzcyxcclxuICAgICAgbGFiZWxQb3NpdGlvbkNsYXNzOiBsYXlvdXREZWZpbml0aW9uLmxhYmVsUG9zaXRpb25DbGFzcyxcclxuICAgICAgaXNGbG9hdExhYmVsOiBsYXlvdXREZWZpbml0aW9uLmlzRmxvYXRMYWJlbCxcclxuICAgICAgc3R5bGU6IGxheW91dERlZmluaXRpb24uc3R5bGUsXHJcbiAgICAgIGxhYmVsU3R5bGU6IGxheW91dERlZmluaXRpb24ubGFiZWxTdHlsZSxcclxuICAgICAgbGluayxcclxuICAgICAgc3RhcnRTZWNvbmRzLFxyXG4gICAgICBlbmRTZWNvbmRzLFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZXh0cmFjdFlvdXR1YmVQbGF5ZXJQcm9wcyhsYXlvdXREZWZpbml0aW9uOiBTbWFydFdpZGdldERlZmluaXRpb24pOiB7XHJcbiAgICBsaW5rOiBzdHJpbmc7XHJcbiAgICBzdGFydFNlY29uZHM6IG51bWJlcjtcclxuICAgIGVuZFNlY29uZHM/OiBudW1iZXI7XHJcbiAgfSB7XHJcbiAgICBjb25zdCBwcm9wcyA9IGxheW91dERlZmluaXRpb24ucHJvcGVydGllcztcclxuICAgIGlmICghcHJvcHMpIHtcclxuICAgICAgdGhpcy5sb2dNaXNzaW5nUHJvcGVydHkobGF5b3V0RGVmaW5pdGlvbiwgJ3Byb3BlcnRpZXMnKTtcclxuICAgICAgcmV0dXJuIHsgbGluazogJycsIHN0YXJ0U2Vjb25kczogMCB9O1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGxpbmsgPSAocHJvcHNbJ2xpbmsnXSA/IChwcm9wc1snbGluayddIGFzIFN0cmluZykgOiAnJykgYXMgc3RyaW5nO1xyXG4gICAgaWYgKCFsaW5rIHx8IGxpbmsubGVuZ3RoIDwgMSkge1xyXG4gICAgICB0aGlzLmxvZ01pc3NpbmdQcm9wZXJ0eShsYXlvdXREZWZpbml0aW9uLCAnbGluaycpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHN0YXJ0U2Vjb25kcyA9IChwcm9wc1snc3RhcnRTZWNvbmRzJ10gPyAocHJvcHNbJ3N0YXJ0U2Vjb25kcyddIGFzIE51bWJlcikgOiAwKSBhcyBudW1iZXI7XHJcbiAgICBsZXQgZW5kU2Vjb25kczogbnVtYmVyIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xyXG4gICAgaWYgKHByb3BzWydlbmRTZWNvbmRzJ10pIHtcclxuICAgICAgZW5kU2Vjb25kcyA9IHByb3BzWydlbmRTZWNvbmRzJ10gYXMgTnVtYmVyIGFzIG51bWJlcjtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4geyBsaW5rLCBzdGFydFNlY29uZHMsIGVuZFNlY29uZHMgfTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgbG9nTWlzc2luZ1Byb3BlcnR5KGxheW91dERlZmluaXRpb246IFNtYXJ0V2lkZ2V0RGVmaW5pdGlvbiwgcHJvcDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBjb25zb2xlLmVycm9yKFxyXG4gICAgICBgUHJvcGVydHkgPCR7cHJvcH0+IG1pc3NpbmcgZnJvbSBsYXlvdXQgZGVmaW5pdGlvbjogJHtKU09OLnN0cmluZ2lmeShsYXlvdXREZWZpbml0aW9uKX1gXHJcbiAgICApO1xyXG4gIH1cclxufVxyXG4iXX0=