@smartbit4all/ng-client 4.5.16 → 4.5.18

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 (319) 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/api/session.service.mjs +1 -1
  7. package/esm2022/lib/session/api/configuration.mjs +1 -1
  8. package/esm2022/lib/session/api/encoder.mjs +1 -1
  9. package/esm2022/lib/session/api/index.mjs +1 -1
  10. package/esm2022/lib/session/api/model/accountInfo.mjs +1 -1
  11. package/esm2022/lib/session/api/model/apiError.mjs +1 -1
  12. package/esm2022/lib/session/api/model/authenticationProviderData.mjs +1 -1
  13. package/esm2022/lib/session/api/model/getAuthenticationProvidersResponse.mjs +1 -1
  14. package/esm2022/lib/session/api/model/models.mjs +1 -1
  15. package/esm2022/lib/session/api/model/refreshSessionRequest.mjs +1 -1
  16. package/esm2022/lib/session/api/model/session.mjs +1 -1
  17. package/esm2022/lib/session/api/model/sessionInfoData.mjs +1 -1
  18. package/esm2022/lib/session/api/model/userActivityLog.mjs +1 -1
  19. package/esm2022/lib/session/api/param.mjs +1 -1
  20. package/esm2022/lib/session/api/variables.mjs +1 -1
  21. package/esm2022/lib/session/cookie-service/smart-cookie.service.mjs +1 -1
  22. package/esm2022/lib/session/projects.mjs +1 -1
  23. package/esm2022/lib/session/smart-backend-bootstrap.config.mjs +1 -1
  24. package/esm2022/lib/session/smart-backend-bootstrap.service.mjs +1 -1
  25. package/esm2022/lib/session/smart-default-error-ui.service.mjs +1 -1
  26. package/esm2022/lib/session/smart-error-catching.interceptor.mjs +1 -1
  27. package/esm2022/lib/session/smart-header-maintainer.interceptor.mjs +1 -1
  28. package/esm2022/lib/session/smart-session-handler.service.mjs +1 -1
  29. package/esm2022/lib/session/smart-session.module.mjs +1 -1
  30. package/esm2022/lib/session/smart-session.service.mjs +1 -1
  31. package/esm2022/lib/session/smart-timer/smart-session-timer.component.mjs +3 -3
  32. package/esm2022/lib/session/smart-timer/smart-session-timer.service.mjs +1 -1
  33. package/esm2022/lib/shared/projects.mjs +1 -1
  34. package/esm2022/lib/shared/shared.module.mjs +1 -1
  35. package/esm2022/lib/shared/smart-tooltip.directive.mjs +1 -1
  36. package/esm2022/lib/shared/smarttable.date-pipe.mjs +1 -1
  37. package/esm2022/lib/smart-client/projects.mjs +1 -1
  38. package/esm2022/lib/smart-client/smart-component-api-client.mjs +35 -37
  39. package/esm2022/lib/smart-client/smart-file-uploader/smart-file-uploader.component.mjs +3 -3
  40. package/esm2022/lib/smart-client/smart.component.mjs +1 -1
  41. package/esm2022/lib/smart-client/smart.service.mjs +1 -1
  42. package/esm2022/lib/smart-component-layout/api/model/componentWidgetType.mjs +1 -1
  43. package/esm2022/lib/smart-component-layout/api/model/models.mjs +1 -1
  44. package/esm2022/lib/smart-component-layout/api/model/toolbarDirection.mjs +1 -1
  45. package/esm2022/lib/smart-component-layout/api/model/toolbarProperties.mjs +1 -1
  46. package/esm2022/lib/smart-component-layout/projects.mjs +1 -1
  47. package/esm2022/lib/smart-component-layout/smart-component-layout-utility.mjs +17 -1
  48. package/esm2022/lib/smart-component-layout/smart-component-layout.component.mjs +17 -9
  49. package/esm2022/lib/smart-component-layout/smart-component-layout.module.mjs +1 -1
  50. package/esm2022/lib/smart-diagram/component/default-smart-diagram-options.provider.mjs +1 -1
  51. package/esm2022/lib/smart-diagram/component/smart-diagram.component.mjs +22 -22
  52. package/esm2022/lib/smart-diagram/component/smart-diagram.module.mjs +1 -1
  53. package/esm2022/lib/smart-diagram/component/smart-diagram.util.mjs +1 -1
  54. package/esm2022/lib/smart-diagram/projects.mjs +1 -1
  55. package/esm2022/lib/smart-dialog/projects.mjs +1 -1
  56. package/esm2022/lib/smart-dialog/smartdialog.component.mjs +3 -3
  57. package/esm2022/lib/smart-dialog/smartdialog.model.mjs +1 -1
  58. package/esm2022/lib/smart-dialog/smartdialog.module.mjs +1 -1
  59. package/esm2022/lib/smart-dialog/smartdialog.service.mjs +1 -1
  60. package/esm2022/lib/smart-expandable-section/expandable-section.component.mjs +3 -3
  61. package/esm2022/lib/smart-expandable-section/expandable-section.model.mjs +1 -1
  62. package/esm2022/lib/smart-expandable-section/projects.mjs +1 -1
  63. package/esm2022/lib/smart-expandable-section/smart-expandable-section.module.mjs +1 -1
  64. package/esm2022/lib/smart-expandable-section/smart-expandable-section.service.mjs +1 -1
  65. package/esm2022/lib/smart-filter/api/filter/model/filterExpressionBoolOperator.mjs +1 -1
  66. package/esm2022/lib/smart-filter/api/filter/model/filterExpressionBuilderField.mjs +1 -1
  67. package/esm2022/lib/smart-filter/api/filter/model/filterExpressionBuilderGroup.mjs +1 -1
  68. package/esm2022/lib/smart-filter/api/filter/model/filterExpressionBuilderModel.mjs +1 -1
  69. package/esm2022/lib/smart-filter/api/filter/model/filterExpressionData.mjs +1 -1
  70. package/esm2022/lib/smart-filter/api/filter/model/filterExpressionDataType.mjs +1 -1
  71. package/esm2022/lib/smart-filter/api/filter/model/filterExpressionField.mjs +1 -1
  72. package/esm2022/lib/smart-filter/api/filter/model/filterExpressionFieldList.mjs +1 -1
  73. package/esm2022/lib/smart-filter/api/filter/model/filterExpressionFieldWidgetType.mjs +1 -1
  74. package/esm2022/lib/smart-filter/api/filter/model/filterExpressionList.mjs +1 -1
  75. package/esm2022/lib/smart-filter/api/filter/model/filterExpressionOperandData.mjs +1 -1
  76. package/esm2022/lib/smart-filter/api/filter/model/filterExpressionOperation.mjs +1 -1
  77. package/esm2022/lib/smart-filter/api/filter/model/filterExpressionOrderBy.mjs +1 -1
  78. package/esm2022/lib/smart-filter/api/filter/model/model.mjs +1 -1
  79. package/esm2022/lib/smart-filter/api/filter/model/searchIndexObjectDefinitionData.mjs +1 -1
  80. package/esm2022/lib/smart-filter/api/filter/model/searchIndexPropertyDefinitionData.mjs +1 -1
  81. package/esm2022/lib/smart-filter/api/value/model/value.mjs +1 -1
  82. package/esm2022/lib/smart-filter/projects.mjs +1 -1
  83. package/esm2022/lib/smart-filter/smart-filter/components/smart-filter-expression-field/smart-filter-expression-field.component.mjs +1 -1
  84. package/esm2022/lib/smart-filter/smart-filter/components/smart-filter-simple/components/smart-filter-simple-field/smart-filter-simple-field.component.mjs +3 -3
  85. package/esm2022/lib/smart-filter/smart-filter/components/smart-filter-simple/smart-filter-simple.component.mjs +3 -3
  86. package/esm2022/lib/smart-filter/smart-filter/smart-filter.component.mjs +3 -3
  87. package/esm2022/lib/smart-filter/smart-filter/smart-filter.service.mjs +1 -1
  88. package/esm2022/lib/smart-filter/smart-filter.model.mjs +1 -1
  89. package/esm2022/lib/smart-filter/smart-filter.module.mjs +1 -1
  90. package/esm2022/lib/smart-filter-editor/api/api/filter.service.mjs +1 -1
  91. package/esm2022/lib/smart-filter-editor/api/configuration.mjs +1 -1
  92. package/esm2022/lib/smart-filter-editor/api/encoder.mjs +1 -1
  93. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionBoolOperator.mjs +1 -1
  94. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionBuilderApiConfig.mjs +1 -1
  95. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionBuilderField.mjs +1 -1
  96. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionBuilderGroup.mjs +1 -1
  97. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionBuilderModel.mjs +1 -1
  98. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionBuilderUiModel.mjs +1 -1
  99. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionData.mjs +1 -1
  100. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionDataType.mjs +1 -1
  101. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionField.mjs +1 -1
  102. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionFieldEditor.mjs +1 -1
  103. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionFieldList.mjs +1 -1
  104. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionFieldWidgetType.mjs +1 -1
  105. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionList.mjs +1 -1
  106. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionOperandData.mjs +1 -1
  107. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionOperation.mjs +1 -1
  108. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionOrderBy.mjs +1 -1
  109. package/esm2022/lib/smart-filter-editor/api/model/smartFilterType.mjs +1 -1
  110. package/esm2022/lib/smart-filter-editor/api/param.mjs +1 -1
  111. package/esm2022/lib/smart-filter-editor/api/variables.mjs +1 -1
  112. package/esm2022/lib/smart-filter-editor/filterExpressionBuilderApiActions.mjs +1 -1
  113. package/esm2022/lib/smart-filter-editor/project.mjs +1 -1
  114. package/esm2022/lib/smart-filter-editor/smart-filter-editor-content/components/smart-filter-expression-item/smart-filter-expression-item.component.mjs +3 -3
  115. package/esm2022/lib/smart-filter-editor/smart-filter-editor-content/components/smart-filter-expression-items/smart-filter-expression-items.component.mjs +3 -3
  116. package/esm2022/lib/smart-filter-editor/smart-filter-editor-content/smart-filter-editor-content.component.mjs +3 -3
  117. package/esm2022/lib/smart-filter-editor/smart-filter-editor.model.mjs +1 -1
  118. package/esm2022/lib/smart-filter-editor/smart-filter-editor.module.mjs +1 -1
  119. package/esm2022/lib/smart-filter-editor/smart-filter-editor.service.mjs +1 -1
  120. package/esm2022/lib/smart-filter-editor/smart-filter-params/components/smart-filter-param/smart-filter-param.component.mjs +3 -3
  121. package/esm2022/lib/smart-filter-editor/smart-filter-params/smart-filter-params.component.mjs +3 -3
  122. package/esm2022/lib/smart-form/highlightMacthingString-pipe.mjs +1 -1
  123. package/esm2022/lib/smart-form/projects.mjs +1 -1
  124. package/esm2022/lib/smart-form/services/smartform.layout-definition.service.mjs +1 -1
  125. package/esm2022/lib/smart-form/services/smartform.service.mjs +1 -1
  126. package/esm2022/lib/smart-form/smartfileuploader/large-file-snack-bar/large-file-snack-bar.component.mjs +3 -3
  127. package/esm2022/lib/smart-form/smartfileuploader/smartfileuploader.component.mjs +3 -3
  128. package/esm2022/lib/smart-form/smartfileuploader/smartfileuploader.model.mjs +1 -1
  129. package/esm2022/lib/smart-form/smartform.component.mjs +3 -3
  130. package/esm2022/lib/smart-form/smartform.form-model.mjs +1 -1
  131. package/esm2022/lib/smart-form/smartform.model.mjs +1 -1
  132. package/esm2022/lib/smart-form/widgets/components/smart-file-editor/smart-file-editor.component.mjs +3 -3
  133. package/esm2022/lib/smart-form/widgets/components/smart-month-picker/smart-month-picker.component.mjs +3 -3
  134. package/esm2022/lib/smart-form/widgets/components/smart-multi-file-editor/smart-multi-file-editor.component.mjs +3 -3
  135. package/esm2022/lib/smart-form/widgets/components/smart-voice-recorder/smart-voice-recorder.component.mjs +3 -3
  136. package/esm2022/lib/smart-form/widgets/directives/comparable-dropdown.directive.mjs +1 -1
  137. package/esm2022/lib/smart-form/widgets/directives/comparable-multiselect.directive.mjs +1 -1
  138. package/esm2022/lib/smart-form/widgets/smartformwidget/smartformwidget.component.mjs +3 -3
  139. package/esm2022/lib/smart-form/widgets/smartformwidget/sortable-widget/sortable-widget.component.mjs +3 -3
  140. package/esm2022/lib/smart-form/widgets/smartformwidget/trackCaps.directive.mjs +1 -1
  141. package/esm2022/lib/smart-grid/api/grid-api/api/api.mjs +1 -1
  142. package/esm2022/lib/smart-grid/api/grid-api/api/grid.service.mjs +1 -1
  143. package/esm2022/lib/smart-grid/api/grid-api/api.module.mjs +1 -1
  144. package/esm2022/lib/smart-grid/api/grid-api/configuration.mjs +1 -1
  145. package/esm2022/lib/smart-grid/api/grid-api/encoder.mjs +1 -1
  146. package/esm2022/lib/smart-grid/api/grid-api/index.mjs +1 -1
  147. package/esm2022/lib/smart-grid/api/grid-api/model/gridColumnContentType.mjs +1 -1
  148. package/esm2022/lib/smart-grid/api/grid-api/model/gridColumnMeta.mjs +1 -1
  149. package/esm2022/lib/smart-grid/api/grid-api/model/gridDataAccessConfig.mjs +1 -1
  150. package/esm2022/lib/smart-grid/api/grid-api/model/gridExportDescriptor.mjs +1 -1
  151. package/esm2022/lib/smart-grid/api/grid-api/model/gridModel.mjs +1 -1
  152. package/esm2022/lib/smart-grid/api/grid-api/model/gridPage.mjs +1 -1
  153. package/esm2022/lib/smart-grid/api/grid-api/model/gridRow.mjs +1 -1
  154. package/esm2022/lib/smart-grid/api/grid-api/model/gridSelectionChange.mjs +1 -1
  155. package/esm2022/lib/smart-grid/api/grid-api/model/gridSelectionMode.mjs +1 -1
  156. package/esm2022/lib/smart-grid/api/grid-api/model/gridSelectionType.mjs +1 -1
  157. package/esm2022/lib/smart-grid/api/grid-api/model/gridServerModel.mjs +1 -1
  158. package/esm2022/lib/smart-grid/api/grid-api/model/gridUpdateData.mjs +1 -1
  159. package/esm2022/lib/smart-grid/api/grid-api/model/gridView.mjs +1 -1
  160. package/esm2022/lib/smart-grid/api/grid-api/model/gridViewDescriptor.mjs +1 -1
  161. package/esm2022/lib/smart-grid/api/grid-api/model/models.mjs +1 -1
  162. package/esm2022/lib/smart-grid/api/grid-api/param.mjs +1 -1
  163. package/esm2022/lib/smart-grid/api/grid-api/variables.mjs +1 -1
  164. package/esm2022/lib/smart-grid/components/expandable-grid/expandable-grid.component.mjs +3 -3
  165. package/esm2022/lib/smart-grid/components/generic-component/expanded-row-renderer.component.mjs +3 -3
  166. package/esm2022/lib/smart-grid/components/smart-grid-card/smart-grid-card.component.mjs +10 -4
  167. package/esm2022/lib/smart-grid/components/table-layout-definer/table-layout-definer.component.mjs +3 -3
  168. package/esm2022/lib/smart-grid/models/model.mjs +1 -1
  169. package/esm2022/lib/smart-grid/projects.mjs +1 -1
  170. package/esm2022/lib/smart-grid/smart-grid-toolbar-util.mjs +1 -1
  171. package/esm2022/lib/smart-grid/smart-grid.component.mjs +3 -3
  172. package/esm2022/lib/smart-grid/smart-grid.module.mjs +1 -1
  173. package/esm2022/lib/smart-grid/smart-grid.service.mjs +1 -1
  174. package/esm2022/lib/smart-icon/projects.mjs +1 -1
  175. package/esm2022/lib/smart-icon/smart-icon/smart-icon.component.mjs +3 -3
  176. package/esm2022/lib/smart-icon/smart-icon/ui-badge/ui-badge.component.mjs +3 -3
  177. package/esm2022/lib/smart-icon/smart-icon/ui-badge/ui-badge.directive.mjs +1 -1
  178. package/esm2022/lib/smart-icon/smart-icon.module.mjs +1 -1
  179. package/esm2022/lib/smart-icon/smart-icon.service.mjs +1 -1
  180. package/esm2022/lib/smart-map/abstract-map.mjs +1 -1
  181. package/esm2022/lib/smart-map/api-default/api-default.mjs +1 -1
  182. package/esm2022/lib/smart-map/impl/google-map.mjs +1 -1
  183. package/esm2022/lib/smart-map/impl/leaflet-map.mjs +1 -1
  184. package/esm2022/lib/smart-map/projects.mjs +1 -1
  185. package/esm2022/lib/smart-map/smart-map.component.mjs +3 -3
  186. package/esm2022/lib/smart-map/smart-map.module.mjs +1 -1
  187. package/esm2022/lib/smart-map/smart-map.types.mjs +1 -1
  188. package/esm2022/lib/smart-navbar/projects.mjs +1 -1
  189. package/esm2022/lib/smart-navbar/smart-navbar.component.mjs +3 -3
  190. package/esm2022/lib/smart-navbar/smart-navbar.model.mjs +1 -1
  191. package/esm2022/lib/smart-navbar/smart-navbar.module.mjs +1 -1
  192. package/esm2022/lib/smart-navbar/smart-navbar.service.mjs +1 -1
  193. package/esm2022/lib/smart-navigation/projects.mjs +1 -1
  194. package/esm2022/lib/smart-navigation/smart-navigation.interface.mjs +1 -1
  195. package/esm2022/lib/smart-navigation/smart-navigation.module.mjs +1 -1
  196. package/esm2022/lib/smart-navigation/smart-navigation.service.mjs +1 -1
  197. package/esm2022/lib/smart-ng-client.module.mjs +1 -1
  198. package/esm2022/lib/smart-ng-client.service.mjs +1 -1
  199. package/esm2022/lib/smart-subject/projects.mjs +1 -1
  200. package/esm2022/lib/smart-subject/smart-subject.mjs +1 -1
  201. package/esm2022/lib/smart-tab-group/projects.mjs +1 -1
  202. package/esm2022/lib/smart-tab-group/smart-tab-group.component.mjs +3 -3
  203. package/esm2022/lib/smart-tab-group/smart-tab-group.module.mjs +1 -1
  204. package/esm2022/lib/smart-tab-group/smart-tab-group.service.mjs +1 -1
  205. package/esm2022/lib/smart-tab-group/tab-content/tab-content.component.mjs +3 -3
  206. package/esm2022/lib/smart-tab-group/tab-group-simplified/tab-group.component.mjs +3 -3
  207. package/esm2022/lib/smart-tab-group/tabTile.model.mjs +1 -1
  208. package/esm2022/lib/smart-table/components/default-actions-popup/default-actions-popup.component.mjs +3 -3
  209. package/esm2022/lib/smart-table/components/loading/loading.component.mjs +3 -3
  210. package/esm2022/lib/smart-table/directives/mat-context-menu-trigger-for.directive.mjs +1 -1
  211. package/esm2022/lib/smart-table/projects.mjs +1 -1
  212. package/esm2022/lib/smart-table/smarttable.component.mjs +3 -3
  213. package/esm2022/lib/smart-table/smarttable.model.mjs +1 -1
  214. package/esm2022/lib/smart-table/smarttable.module.mjs +1 -1
  215. package/esm2022/lib/smart-table/smarttable.service.mjs +1 -1
  216. package/esm2022/lib/smart-table/tables/material-table/material-table.component.mjs +3 -3
  217. package/esm2022/lib/smart-table/tables/mobile-table/mobile-table.component.mjs +3 -3
  218. package/esm2022/lib/smart-table/tables/table.mjs +1 -1
  219. package/esm2022/lib/smart-tree/projects.mjs +1 -1
  220. package/esm2022/lib/smart-tree/smarttree-generic.service.mjs +1 -1
  221. package/esm2022/lib/smart-tree/smarttree.component.mjs +3 -3
  222. package/esm2022/lib/smart-tree/smarttree.model.mjs +1 -1
  223. package/esm2022/lib/smart-tree/smarttree.module.mjs +1 -1
  224. package/esm2022/lib/smart-tree/smarttree.node.model.mjs +1 -1
  225. package/esm2022/lib/smart-tree/smarttree.service.interface.mjs +1 -1
  226. package/esm2022/lib/smart-tree/smarttree.service.mjs +1 -1
  227. package/esm2022/lib/smart-tree/tree-api/api/tree.service.mjs +1 -1
  228. package/esm2022/lib/smart-tree/tree-api/configuration.mjs +1 -1
  229. package/esm2022/lib/smart-tree/tree-api/encoder.mjs +1 -1
  230. package/esm2022/lib/smart-tree/tree-api/param.mjs +1 -1
  231. package/esm2022/lib/smart-tree/tree-api/variables.mjs +1 -1
  232. package/esm2022/lib/smart-validation/named-validator.service.mjs +1 -1
  233. package/esm2022/lib/smart-validation/projects.mjs +1 -1
  234. package/esm2022/lib/smart-validation/smart-validation.module.mjs +1 -1
  235. package/esm2022/lib/smart-validation/smart-validation.types.mjs +1 -1
  236. package/esm2022/lib/view-context/api/api/view.service.mjs +1 -1
  237. package/esm2022/lib/view-context/api/api-default/binaryData.mjs +1 -1
  238. package/esm2022/lib/view-context/api/api-default/invocationError.mjs +1 -1
  239. package/esm2022/lib/view-context/api/api-default/invocationRequest.mjs +1 -1
  240. package/esm2022/lib/view-context/api/api-default/invocationRun.mjs +1 -1
  241. package/esm2022/lib/view-context/api/model/models.mjs +1 -1
  242. package/esm2022/lib/view-context/api/model/smartLinkData.mjs +1 -1
  243. package/esm2022/lib/view-context/api/model/uiAction.mjs +1 -1
  244. package/esm2022/lib/view-context/api/model/uiActionDefinition.mjs +1 -1
  245. package/esm2022/lib/view-context/api/model/uiActionDefinitionEntry.mjs +1 -1
  246. package/esm2022/lib/view-context/api/model/uiActionInputType.mjs +1 -1
  247. package/esm2022/lib/view-context/api/model/uiActionSchedule.mjs +1 -1
  248. package/esm2022/lib/view-context/api/model/uiActionUploadDescriptor.mjs +1 -1
  249. package/esm2022/lib/view-context/api/model/view.mjs +1 -1
  250. package/esm2022/lib/view-context/api/model/viewData.mjs +1 -1
  251. package/esm2022/lib/view-context/api/model/viewEventHandler.mjs +1 -1
  252. package/esm2022/lib/view-context/invalid-fields-snack-bar/invalid-fields-snack-bar.component.mjs +3 -3
  253. package/esm2022/lib/view-context/message-dialog/message-dialog.component.mjs +5 -3
  254. package/esm2022/lib/view-context/projects.mjs +1 -1
  255. package/esm2022/lib/view-context/property-definition-data.mjs +1 -1
  256. package/esm2022/lib/view-context/smart-embedded-slot.directive.mjs +1 -1
  257. package/esm2022/lib/view-context/smart-ui-action/components/menu/menu.component.mjs +3 -3
  258. package/esm2022/lib/view-context/smart-ui-action/components/menu/menu.constants.mjs +1 -1
  259. package/esm2022/lib/view-context/smart-ui-action/components/menu/menu.service.mjs +1 -1
  260. package/esm2022/lib/view-context/smart-ui-action/components/success-snack-bar/success-snack-bar.component.mjs +3 -3
  261. package/esm2022/lib/view-context/smart-ui-action/components/upload-widget/photo-capture-widget/photo-capture-widget.component.mjs +3 -3
  262. package/esm2022/lib/view-context/smart-ui-action/components/upload-widget/prime-file-uploader/prime-file-uploader.component.mjs +3 -3
  263. package/esm2022/lib/view-context/smart-ui-action/components/upload-widget/upload-widget.component.mjs +3 -3
  264. package/esm2022/lib/view-context/smart-ui-action/components/upload-widget/upload-widget.utils.mjs +1 -1
  265. package/esm2022/lib/view-context/smart-ui-action/components/upload-widget/voice-record-widget/voice-record-widget.component.mjs +3 -3
  266. package/esm2022/lib/view-context/smart-ui-action/dialogs/ui-action-confirm-dialog/ui-action-confirm-dialog.component.mjs +3 -3
  267. package/esm2022/lib/view-context/smart-ui-action/dialogs/ui-action-confirm-dialog/ui-action-confirm-dialog.service.mjs +1 -1
  268. package/esm2022/lib/view-context/smart-ui-action/dialogs/ui-action-dialog-button/ui-action-dialog-button.component.mjs +3 -3
  269. package/esm2022/lib/view-context/smart-ui-action/dialogs/ui-action-file-upload-dialog/ui-action-file-upload-dialog.component.mjs +3 -3
  270. package/esm2022/lib/view-context/smart-ui-action/dialogs/ui-action-file-upload-dialog/ui-action-file-upload-dialog.service.mjs +1 -1
  271. package/esm2022/lib/view-context/smart-ui-action/dialogs/ui-action-input-dialog/ui-action-input-dialog.component.mjs +3 -3
  272. package/esm2022/lib/view-context/smart-ui-action/dialogs/ui-action-input-dialog/ui-action-input-dialog.service.mjs +1 -1
  273. package/esm2022/lib/view-context/smart-ui-action/file-editor-toolbar/file-editor-toolbar.component.mjs +3 -3
  274. package/esm2022/lib/view-context/smart-ui-action/ui-action-button/ui-action-button.component.mjs +3 -3
  275. package/esm2022/lib/view-context/smart-ui-action/ui-action-toolbar.component.mjs +3 -3
  276. package/esm2022/lib/view-context/smart-ui-action/ui-action.descriptor.service.mjs +1 -1
  277. package/esm2022/lib/view-context/smart-ui-action/ui-action.model.mjs +1 -1
  278. package/esm2022/lib/view-context/smart-ui-action/ui-action.service.mjs +1 -1
  279. package/esm2022/lib/view-context/smart-view-context-dialog.service.mjs +1 -1
  280. package/esm2022/lib/view-context/smart-view-context-error-dialog/smart-view-context-error-dialog.component.mjs +3 -3
  281. package/esm2022/lib/view-context/smart-view-context-error-dialog/smart-view-context-error-dialog.service.mjs +1 -1
  282. package/esm2022/lib/view-context/smart-view-context.interceptor.mjs +1 -1
  283. package/esm2022/lib/view-context/smart-view-context.model.mjs +1 -1
  284. package/esm2022/lib/view-context/smart-view-context.module.mjs +1 -1
  285. package/esm2022/lib/view-context/smart-view-context.service.mjs +1 -1
  286. package/esm2022/lib/view-context/smart-view-redirect/smart-view-redirect.mjs +1 -1
  287. package/esm2022/lib/view-context/utility/componentLibrary.mjs +1 -1
  288. package/esm2022/lib/view-context/utility/smart-object-utility.mjs +1 -1
  289. package/esm2022/lib/view-context/utility/smart-style-utility.mjs +1 -1
  290. package/esm2022/lib/view-context/value-api/api/api.mjs +1 -1
  291. package/esm2022/lib/view-context/value-api/api/value.service.mjs +1 -1
  292. package/esm2022/lib/view-context/value-api/api.module.mjs +1 -1
  293. package/esm2022/lib/view-context/value-api/configuration.mjs +1 -1
  294. package/esm2022/lib/view-context/value-api/encoder.mjs +1 -1
  295. package/esm2022/lib/view-context/value-api/index.mjs +1 -1
  296. package/esm2022/lib/view-context/value-api/model/genericValue.mjs +1 -1
  297. package/esm2022/lib/view-context/value-api/model/models.mjs +1 -1
  298. package/esm2022/lib/view-context/value-api/model/value.mjs +1 -1
  299. package/esm2022/lib/view-context/value-api/model/valueSetData.mjs +1 -1
  300. package/esm2022/lib/view-context/value-api/model/valueSetDefinition.mjs +1 -1
  301. package/esm2022/lib/view-context/value-api/model/valueSetDefinitionData.mjs +1 -1
  302. package/esm2022/lib/view-context/value-api/model/valueSetDefinitionIdentifier.mjs +1 -1
  303. package/esm2022/lib/view-context/value-api/model/valueSetDefinitionKind.mjs +1 -1
  304. package/esm2022/lib/view-context/value-api/model/valueSetExpression.mjs +1 -1
  305. package/esm2022/lib/view-context/value-api/model/valueSetOperand.mjs +1 -1
  306. package/esm2022/lib/view-context/value-api/model/valueSetOperation.mjs +1 -1
  307. package/esm2022/lib/view-context/value-api/param.mjs +1 -1
  308. package/esm2022/lib/view-context/value-api/variables.mjs +1 -1
  309. package/esm2022/projects.mjs +1 -1
  310. package/fesm2022/smartbit4all-ng-client.mjs +355 -326
  311. package/fesm2022/smartbit4all-ng-client.mjs.map +1 -1
  312. package/lib/smart-client/smart-component-api-client.d.ts +2 -1
  313. package/lib/smart-component-layout/smart-component-layout-utility.d.ts +1 -0
  314. package/lib/smart-component-layout/smart-component-layout.component.d.ts +4 -1
  315. package/lib/smart-grid/components/smart-grid-card/smart-grid-card.component.d.ts +1 -0
  316. package/lib/view-context/message-dialog/message-dialog.component.d.ts +1 -0
  317. package/package.json +1 -1
  318. package/smartbit4all-ng-client-4.5.18.tgz +0 -0
  319. package/smartbit4all-ng-client-4.5.16.tgz +0 -0
@@ -1,11 +1,12 @@
1
- import { Component, HostBinding, Input, ViewChild, ViewChildren, ViewContainerRef, } from '@angular/core';
1
+ import { ApplicationRef, Component, effect, HostBinding, inject, Input, viewChild, ViewChild, ViewChildren, ViewContainerRef, } from '@angular/core';
2
2
  import { ComponentType, ComponentWidgetType, LayoutDirection, } from './api';
3
- import { SmartFormWidgetDirection, } from '../smart-form/projects';
3
+ import { SmartFormWidgetDirection, SmartformComponent, } from '../smart-form/projects';
4
4
  import { GridUiActionType, SmartLayoutDef, } from '../smart-grid/projects';
5
5
  import { ExpandableSectionComponent } from '../smart-expandable-section/expandable-section.component';
6
6
  import { Subject, takeUntil } from 'rxjs';
7
7
  import { deepEqual } from 'fast-equals';
8
8
  import { SmartStyleUtility } from '../view-context/utility/smart-style-utility';
9
+ import { SmartComponentLayoutUtility } from './smart-component-layout-utility';
9
10
  import * as i0 from "@angular/core";
10
11
  import * as i1 from "../smart-form/projects";
11
12
  import * as i2 from "../view-context/smart-view-context.service";
@@ -41,6 +42,16 @@ export class SmartComponentLayoutComponent {
41
42
  this.element = element;
42
43
  this.renderer = renderer;
43
44
  this._destroy$ = new Subject();
45
+ this.appRef = inject(ApplicationRef);
46
+ this.formRef = viewChild(SmartformComponent);
47
+ this.onFormChange = effect(() => {
48
+ const form = this.formRef();
49
+ if (this.smartForm && form && this.parentSmartComponent) {
50
+ this.parentSmartComponent.handleDataChangeSubscriptions(form);
51
+ this.parentSmartComponent.handleLayoutUploadCallback(form);
52
+ form.markAllWidgetsForChangeDetection();
53
+ }
54
+ });
44
55
  this.pendingOrphanCleanup = false;
45
56
  this.embeddedSlotActive = false;
46
57
  }
@@ -118,6 +129,7 @@ export class SmartComponentLayoutComponent {
118
129
  }
119
130
  // layout changed, render, but save current
120
131
  // this.currentLayout = JSON.parse(JSON.stringify(this.smartComponentLayout));
132
+ SmartComponentLayoutUtility.clearFormHandlers(this);
121
133
  this.currentLayout = this.smartComponentLayout;
122
134
  this.uuid = this.parentSmartComponent.uuid;
123
135
  this.treeService = this.parentSmartComponent.smartTreeService;
@@ -231,10 +243,6 @@ export class SmartComponentLayoutComponent {
231
243
  }
232
244
  bindForm() {
233
245
  if (this.parentSmartComponent?.useQueryLists) {
234
- if (this.smartForm && this.smartFormComponent && this.parentSmartComponent) {
235
- this.parentSmartComponent.handleDataChangeSubscriptions();
236
- this.parentSmartComponent.handleLayoutUploadCallback(this.smartFormComponent);
237
- }
238
246
  return;
239
247
  }
240
248
  if (this.smartForm && this.smartFormComponent) {
@@ -372,11 +380,11 @@ export class SmartComponentLayoutComponent {
372
380
  }
373
381
  }
374
382
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartComponentLayoutComponent, deps: [{ token: i1.SmartformLayoutDefinitionService }, { token: i2.SmartViewContextService }, { token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component }); }
375
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.11", type: SmartComponentLayoutComponent, selector: "smart-component-layout", inputs: { smartComponentLayout: "smartComponentLayout", parentLayoutComponent: "parentLayoutComponent", parentSmartComponent: "parentSmartComponent", gridRow: "gridRow" }, host: { properties: { "attr.data-testid": "this.testId", "class.horizontal": "this.isHorizontal", "class.vertical": "this.isVertical" } }, viewQueries: [{ propertyName: "embeddedSlotVcRefSetter", first: true, predicate: ["embeddedSlot"], descendants: true, read: ViewContainerRef }, { propertyName: "smartFormList", predicate: ["form"], descendants: true }, { propertyName: "smartGridList", predicate: ["grid"], descendants: true }, { propertyName: "smartMapList", predicate: ["map"], descendants: true }, { propertyName: "smartDiagramList", predicate: ["diagram"], descendants: true }, { propertyName: "smartFilterList", predicate: ["filter"], descendants: true }, { propertyName: "toolbarList", predicate: ["toolbar"], descendants: true }, { propertyName: "expandableComponents", predicate: ExpandableSectionComponent, descendants: true }, { propertyName: "components", predicate: SmartComponentLayoutComponent, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div *ngIf=\"smartComponentLayout?.expandable; then expandable; else normal\"> </div>\r\n\r\n<ng-template #expandable>\r\n <smart-expandable-section\r\n *ngIf=\"expandableSection\"\r\n [data]=\"expandableSection\"\r\n ></smart-expandable-section>\r\n</ng-template>\r\n\r\n<ng-template #normal>\r\n @if (smartComponentLayout?.type === type().CONTAINER) {\r\n <smart-component-layout\r\n *ngFor=\"let layout of smartComponentLayout?.components\"\r\n [parentSmartComponent]=\"parentSmartComponent\"\r\n [parentLayoutComponent]=\"this\"\r\n [smartComponentLayout]=\"layout\"\r\n [gridRow]=\"gridRow\"\r\n ></smart-component-layout>\r\n }\r\n <smartform *ngIf=\"smartForm\" #form [smartForm]=\"smartForm\"></smartform>\r\n <smart-grid *ngIf=\"smartGrid\" #grid [smartGrid]=\"smartGrid\" [uuid]=\"uuid!\"></smart-grid>\r\n <smart-map\r\n *ngIf=\"!!uuid && !!mapId\"\r\n #map\r\n [uuid]=\"uuid\"\r\n [identifier]=\"mapId\"\r\n [parent]=\"parentSmartComponent\"\r\n ></smart-map>\r\n <smart-diagram\r\n *ngIf=\"!!uuid && !!smartDiagramId\"\r\n #diagram\r\n [uuid]=\"uuid\"\r\n [identifier]=\"smartDiagramId\"\r\n [parent]=\"parentSmartComponent\"\r\n ></smart-diagram>\r\n <!-- <smart-filter #filter [filter]=\"smartFilter\"></smart-filter> -->\r\n <smart-tree *ngIf=\"treeService\" [treeService]=\"treeService!\"></smart-tree>\r\n <smart-ui-action-toolbar\r\n *ngIf=\"!!toolbarId\"\r\n #toolbar\r\n [id]=\"toolbarId\"\r\n [toolbarPropertes]=\"toolbarPropertes\"\r\n ></smart-ui-action-toolbar>\r\n <ng-container *ngIf=\"embeddedSlotActive\" #embeddedSlot></ng-container>\r\n</ng-template>\r\n", styles: [":host(.horizontal){display:flex;flex-direction:row}:host(.vertical){display:flex;flex-direction:column}:host(.horizontal) smart-component-layout{display:flex}:host(.horizontal) smartform{flex:1;display:flex}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.SmartGridComponent, selector: "smart-grid", inputs: ["smartGrid", "uuid", "dev"] }, { kind: "component", type: i5.ExpandableSectionComponent, selector: "smart-expandable-section", inputs: ["data", "index"] }, { kind: "component", type: i6.SmartTreeComponent, selector: "smart-tree", inputs: ["treeStyle", "treeService"] }, { kind: "component", type: i7.UiActionToolbarComponent, selector: "smart-ui-action-toolbar", inputs: ["uiActionModels", "uiActionDescriptorService", "id", "scrollOnWrap", "toolbarPropertes"] }, { kind: "component", type: i8.SmartformComponent, selector: "smartform", inputs: ["smartForm"] }, { kind: "component", type: i9.SmartMapComponent, selector: "smart-map", inputs: ["uuid", "identifier", "parent"] }, { kind: "component", type: i10.SmartDiagramComponent, selector: "smart-diagram", inputs: ["uuid", "identifier", "parent", "diagramModel", "options", "plugins"], outputs: ["elementSelect", "canvasClick", "dataClick"] }, { kind: "component", type: SmartComponentLayoutComponent, selector: "smart-component-layout", inputs: ["smartComponentLayout", "parentLayoutComponent", "parentSmartComponent", "gridRow"] }] }); }
383
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.11", type: SmartComponentLayoutComponent, selector: "smart-component-layout", inputs: { smartComponentLayout: "smartComponentLayout", parentLayoutComponent: "parentLayoutComponent", parentSmartComponent: "parentSmartComponent", gridRow: "gridRow" }, host: { properties: { "attr.data-testid": "this.testId", "class.horizontal": "this.isHorizontal", "class.vertical": "this.isVertical" } }, viewQueries: [{ propertyName: "formRef", first: true, predicate: SmartformComponent, descendants: true, isSignal: true }, { propertyName: "embeddedSlotVcRefSetter", first: true, predicate: ["embeddedSlot"], descendants: true, read: ViewContainerRef }, { propertyName: "smartFormList", predicate: ["form"], descendants: true }, { propertyName: "smartGridList", predicate: ["grid"], descendants: true }, { propertyName: "smartMapList", predicate: ["map"], descendants: true }, { propertyName: "smartDiagramList", predicate: ["diagram"], descendants: true }, { propertyName: "smartFilterList", predicate: ["filter"], descendants: true }, { propertyName: "toolbarList", predicate: ["toolbar"], descendants: true }, { propertyName: "expandableComponents", predicate: ExpandableSectionComponent, descendants: true }, { propertyName: "components", predicate: SmartComponentLayoutComponent, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div *ngIf=\"smartComponentLayout?.expandable; then expandable; else normal\"> </div>\n\n<ng-template #expandable>\n <smart-expandable-section\n *ngIf=\"expandableSection\"\n [data]=\"expandableSection\"\n ></smart-expandable-section>\n</ng-template>\n\n<ng-template #normal>\n @if (smartComponentLayout?.type === type().CONTAINER) {\n <smart-component-layout\n *ngFor=\"let layout of smartComponentLayout?.components\"\n [parentSmartComponent]=\"parentSmartComponent\"\n [parentLayoutComponent]=\"this\"\n [smartComponentLayout]=\"layout\"\n [gridRow]=\"gridRow\"\n ></smart-component-layout>\n }\n <smartform *ngIf=\"smartForm\" #form [smartForm]=\"smartForm\"></smartform>\n <smart-grid *ngIf=\"smartGrid\" #grid [smartGrid]=\"smartGrid\" [uuid]=\"uuid!\"></smart-grid>\n <smart-map\n *ngIf=\"!!uuid && !!mapId\"\n #map\n [uuid]=\"uuid\"\n [identifier]=\"mapId\"\n [parent]=\"parentSmartComponent\"\n ></smart-map>\n <smart-diagram\n *ngIf=\"!!uuid && !!smartDiagramId\"\n #diagram\n [uuid]=\"uuid\"\n [identifier]=\"smartDiagramId\"\n [parent]=\"parentSmartComponent\"\n ></smart-diagram>\n <!-- <smart-filter #filter [filter]=\"smartFilter\"></smart-filter> -->\n <smart-tree *ngIf=\"treeService\" [treeService]=\"treeService!\"></smart-tree>\n <smart-ui-action-toolbar\n *ngIf=\"!!toolbarId\"\n #toolbar\n [id]=\"toolbarId\"\n [toolbarPropertes]=\"toolbarPropertes\"\n ></smart-ui-action-toolbar>\n <ng-container *ngIf=\"embeddedSlotActive\" #embeddedSlot></ng-container>\n</ng-template>\n", styles: [":host(.horizontal){display:flex;flex-direction:row}:host(.vertical){display:flex;flex-direction:column}:host(.horizontal) smart-component-layout{display:flex}:host(.horizontal) smartform{flex:1;display:flex}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.SmartGridComponent, selector: "smart-grid", inputs: ["smartGrid", "uuid", "dev"] }, { kind: "component", type: i5.ExpandableSectionComponent, selector: "smart-expandable-section", inputs: ["data", "index"] }, { kind: "component", type: i6.SmartTreeComponent, selector: "smart-tree", inputs: ["treeStyle", "treeService"] }, { kind: "component", type: i7.UiActionToolbarComponent, selector: "smart-ui-action-toolbar", inputs: ["uiActionModels", "uiActionDescriptorService", "id", "scrollOnWrap", "toolbarPropertes"] }, { kind: "component", type: i8.SmartformComponent, selector: "smartform", inputs: ["smartForm"] }, { kind: "component", type: i9.SmartMapComponent, selector: "smart-map", inputs: ["uuid", "identifier", "parent"] }, { kind: "component", type: i10.SmartDiagramComponent, selector: "smart-diagram", inputs: ["uuid", "identifier", "parent", "diagramModel", "options", "plugins"], outputs: ["elementSelect", "canvasClick", "dataClick"] }, { kind: "component", type: SmartComponentLayoutComponent, selector: "smart-component-layout", inputs: ["smartComponentLayout", "parentLayoutComponent", "parentSmartComponent", "gridRow"] }] }); }
376
384
  }
377
385
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartComponentLayoutComponent, decorators: [{
378
386
  type: Component,
379
- args: [{ selector: 'smart-component-layout', template: "<div *ngIf=\"smartComponentLayout?.expandable; then expandable; else normal\"> </div>\r\n\r\n<ng-template #expandable>\r\n <smart-expandable-section\r\n *ngIf=\"expandableSection\"\r\n [data]=\"expandableSection\"\r\n ></smart-expandable-section>\r\n</ng-template>\r\n\r\n<ng-template #normal>\r\n @if (smartComponentLayout?.type === type().CONTAINER) {\r\n <smart-component-layout\r\n *ngFor=\"let layout of smartComponentLayout?.components\"\r\n [parentSmartComponent]=\"parentSmartComponent\"\r\n [parentLayoutComponent]=\"this\"\r\n [smartComponentLayout]=\"layout\"\r\n [gridRow]=\"gridRow\"\r\n ></smart-component-layout>\r\n }\r\n <smartform *ngIf=\"smartForm\" #form [smartForm]=\"smartForm\"></smartform>\r\n <smart-grid *ngIf=\"smartGrid\" #grid [smartGrid]=\"smartGrid\" [uuid]=\"uuid!\"></smart-grid>\r\n <smart-map\r\n *ngIf=\"!!uuid && !!mapId\"\r\n #map\r\n [uuid]=\"uuid\"\r\n [identifier]=\"mapId\"\r\n [parent]=\"parentSmartComponent\"\r\n ></smart-map>\r\n <smart-diagram\r\n *ngIf=\"!!uuid && !!smartDiagramId\"\r\n #diagram\r\n [uuid]=\"uuid\"\r\n [identifier]=\"smartDiagramId\"\r\n [parent]=\"parentSmartComponent\"\r\n ></smart-diagram>\r\n <!-- <smart-filter #filter [filter]=\"smartFilter\"></smart-filter> -->\r\n <smart-tree *ngIf=\"treeService\" [treeService]=\"treeService!\"></smart-tree>\r\n <smart-ui-action-toolbar\r\n *ngIf=\"!!toolbarId\"\r\n #toolbar\r\n [id]=\"toolbarId\"\r\n [toolbarPropertes]=\"toolbarPropertes\"\r\n ></smart-ui-action-toolbar>\r\n <ng-container *ngIf=\"embeddedSlotActive\" #embeddedSlot></ng-container>\r\n</ng-template>\r\n", styles: [":host(.horizontal){display:flex;flex-direction:row}:host(.vertical){display:flex;flex-direction:column}:host(.horizontal) smart-component-layout{display:flex}:host(.horizontal) smartform{flex:1;display:flex}\n"] }]
387
+ args: [{ selector: 'smart-component-layout', template: "<div *ngIf=\"smartComponentLayout?.expandable; then expandable; else normal\"> </div>\n\n<ng-template #expandable>\n <smart-expandable-section\n *ngIf=\"expandableSection\"\n [data]=\"expandableSection\"\n ></smart-expandable-section>\n</ng-template>\n\n<ng-template #normal>\n @if (smartComponentLayout?.type === type().CONTAINER) {\n <smart-component-layout\n *ngFor=\"let layout of smartComponentLayout?.components\"\n [parentSmartComponent]=\"parentSmartComponent\"\n [parentLayoutComponent]=\"this\"\n [smartComponentLayout]=\"layout\"\n [gridRow]=\"gridRow\"\n ></smart-component-layout>\n }\n <smartform *ngIf=\"smartForm\" #form [smartForm]=\"smartForm\"></smartform>\n <smart-grid *ngIf=\"smartGrid\" #grid [smartGrid]=\"smartGrid\" [uuid]=\"uuid!\"></smart-grid>\n <smart-map\n *ngIf=\"!!uuid && !!mapId\"\n #map\n [uuid]=\"uuid\"\n [identifier]=\"mapId\"\n [parent]=\"parentSmartComponent\"\n ></smart-map>\n <smart-diagram\n *ngIf=\"!!uuid && !!smartDiagramId\"\n #diagram\n [uuid]=\"uuid\"\n [identifier]=\"smartDiagramId\"\n [parent]=\"parentSmartComponent\"\n ></smart-diagram>\n <!-- <smart-filter #filter [filter]=\"smartFilter\"></smart-filter> -->\n <smart-tree *ngIf=\"treeService\" [treeService]=\"treeService!\"></smart-tree>\n <smart-ui-action-toolbar\n *ngIf=\"!!toolbarId\"\n #toolbar\n [id]=\"toolbarId\"\n [toolbarPropertes]=\"toolbarPropertes\"\n ></smart-ui-action-toolbar>\n <ng-container *ngIf=\"embeddedSlotActive\" #embeddedSlot></ng-container>\n</ng-template>\n", styles: [":host(.horizontal){display:flex;flex-direction:row}:host(.vertical){display:flex;flex-direction:column}:host(.horizontal) smart-component-layout{display:flex}:host(.horizontal) smartform{flex:1;display:flex}\n"] }]
380
388
  }], ctorParameters: () => [{ type: i1.SmartformLayoutDefinitionService }, { type: i2.SmartViewContextService }, { type: i0.ElementRef }, { type: i0.Renderer2 }], propDecorators: { smartComponentLayout: [{
381
389
  type: Input
382
390
  }], parentLayoutComponent: [{
@@ -422,4 +430,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
422
430
  type: ViewChildren,
423
431
  args: [SmartComponentLayoutComponent]
424
432
  }] } });
425
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtY29tcG9uZW50LWxheW91dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi9zbWFydC1jb21wb25lbnQtbGF5b3V0L3NtYXJ0LWNvbXBvbmVudC1sYXlvdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtbmctY2xpZW50L3NyYy9saWIvc21hcnQtY29tcG9uZW50LWxheW91dC9zbWFydC1jb21wb25lbnQtbGF5b3V0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHTCxTQUFTLEVBRVQsV0FBVyxFQUNYLEtBQUssRUFPTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLGdCQUFnQixHQUNqQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsYUFBYSxFQUNiLG1CQUFtQixFQUNuQixlQUFlLEdBR2hCLE1BQU0sT0FBTyxDQUFDO0FBQ2YsT0FBTyxFQUVMLHdCQUF3QixHQUd6QixNQUFNLHdCQUF3QixDQUFDO0FBQ2hDLE9BQU8sRUFDTCxnQkFBZ0IsRUFHaEIsY0FBYyxHQUNmLE1BQU0sd0JBQXdCLENBQUM7QUFJaEMsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sMERBQTBELENBQUM7QUFDdEcsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFMUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN4QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQzs7Ozs7Ozs7Ozs7O0FBVWhGLE1BQU0sT0FBTyw2QkFBNkI7SUFZeEMsSUFDSSxNQUFNO1FBQ1IsT0FBTyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsVUFBVSxJQUFJLElBQUksQ0FBQztJQUN2RCxDQUFDO0lBRUQsSUFDSSxZQUFZO1FB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Z0JBYTdCLGFBQWE7c0JBRFosWUFBWTt1QkFBQyxNQUFNO2dCQU1wQixhQUFhO3NCQURaLFlBQVk7dUJBQUMsTUFBTTtnQkFNcEIsWUFBWTtzQkFEWCxZQUFZO3VCQUFDLEtBQUs7Z0JBTW5CLGdCQUFnQjtzQkFEZixZQUFZO3VCQUFDLFNBQVM7Z0JBTXZCLGVBQWU7c0JBRGQsWUFBWTt1QkFBQyxRQUFRO2dCQU10QixXQUFXO3NCQURWLFlBQVk7dUJBQUMsU0FBUztnQkFlbkIsdUJBQXVCO3NCQUQxQixTQUFTO3VCQUFDLGNBQWMsRUFBRSxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQVNwRSxvQkFBb0I7c0JBRG5CLFlBQVk7dUJBQUMsMEJBQTBCO2dCQUl4QyxVQUFVO3NCQURULFlBQVk7dUJBQUMsNkJBQTZCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBBZnRlclZpZXdDaGVja2VkLFxyXG4gIEFmdGVyVmlld0luaXQsXHJcbiAgQ29tcG9uZW50LFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgSG9zdEJpbmRpbmcsXHJcbiAgSW5wdXQsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIE9uRGVzdHJveSxcclxuICBPbkluaXQsXHJcbiAgUXVlcnlMaXN0LFxyXG4gIFJlbmRlcmVyMixcclxuICBTaW1wbGVDaGFuZ2VzLFxyXG4gIFZpZXdDaGlsZCxcclxuICBWaWV3Q2hpbGRyZW4sXHJcbiAgVmlld0NvbnRhaW5lclJlZixcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtcclxuICBDb21wb25lbnRUeXBlLFxyXG4gIENvbXBvbmVudFdpZGdldFR5cGUsXHJcbiAgTGF5b3V0RGlyZWN0aW9uLFxyXG4gIFNtYXJ0Q29tcG9uZW50TGF5b3V0RGVmaW5pdGlvbixcclxuICBUb29sYmFyUHJvcGVydGllcyxcclxufSBmcm9tICcuL2FwaSc7XHJcbmltcG9ydCB7XHJcbiAgU21hcnRGb3JtLFxyXG4gIFNtYXJ0Rm9ybVdpZGdldERpcmVjdGlvbixcclxuICBTbWFydGZvcm1Db21wb25lbnQsXHJcbiAgU21hcnRmb3JtTGF5b3V0RGVmaW5pdGlvblNlcnZpY2UsXHJcbn0gZnJvbSAnLi4vc21hcnQtZm9ybS9wcm9qZWN0cyc7XHJcbmltcG9ydCB7XHJcbiAgR3JpZFVpQWN0aW9uVHlwZSxcclxuICBTbWFydEdyaWQsXHJcbiAgU21hcnRHcmlkQ29tcG9uZW50LFxyXG4gIFNtYXJ0TGF5b3V0RGVmLFxyXG59IGZyb20gJy4uL3NtYXJ0LWdyaWQvcHJvamVjdHMnO1xyXG5pbXBvcnQgeyBTbWFydEZpbHRlciwgU21hcnRGaWx0ZXJDb21wb25lbnQgfSBmcm9tICcuLi9zbWFydC1maWx0ZXIvcHJvamVjdHMnO1xyXG5pbXBvcnQgeyBTbWFydHRyZWVHZW5lcmljU2VydmljZSB9IGZyb20gJy4uL3NtYXJ0LXRyZWUvcHJvamVjdHMnO1xyXG5pbXBvcnQgeyBFeHBhbmRhYmxlU2VjdGlvbiB9IGZyb20gJy4uL3NtYXJ0LWV4cGFuZGFibGUtc2VjdGlvbi9wcm9qZWN0cyc7XHJcbmltcG9ydCB7IEV4cGFuZGFibGVTZWN0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi4vc21hcnQtZXhwYW5kYWJsZS1zZWN0aW9uL2V4cGFuZGFibGUtc2VjdGlvbi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgVWlBY3Rpb25Ub29sYmFyQ29tcG9uZW50IH0gZnJvbSAnLi4vdmlldy1jb250ZXh0L3Byb2plY3RzJztcclxuaW1wb3J0IHsgZGVlcEVxdWFsIH0gZnJvbSAnZmFzdC1lcXVhbHMnO1xyXG5pbXBvcnQgeyBTbWFydFN0eWxlVXRpbGl0eSB9IGZyb20gJy4uL3ZpZXctY29udGV4dC91dGlsaXR5L3NtYXJ0LXN0eWxlLXV0aWxpdHknO1xyXG5pbXBvcnQgeyBTbWFydFZpZXdDb250ZXh0U2VydmljZSB9IGZyb20gJy4uL3ZpZXctY29udGV4dC9zbWFydC12aWV3LWNvbnRleHQuc2VydmljZSc7XHJcbmltcG9ydCB7IFNtYXJ0TWFwQ29tcG9uZW50IH0gZnJvbSAnLi4vc21hcnQtbWFwL3NtYXJ0LW1hcC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBTbWFydERpYWdyYW1Db21wb25lbnQgfSBmcm9tICcuLi9zbWFydC1kaWFncmFtL3Byb2plY3RzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnc21hcnQtY29tcG9uZW50LWxheW91dCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3NtYXJ0LWNvbXBvbmVudC1sYXlvdXQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3NtYXJ0LWNvbXBvbmVudC1sYXlvdXQuY29tcG9uZW50LmNzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU21hcnRDb21wb25lbnRMYXlvdXRDb21wb25lbnRcclxuICBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIEFmdGVyVmlld0NoZWNrZWQsIE9uRGVzdHJveSwgT25DaGFuZ2VzXHJcbntcclxuICBwcm90ZWN0ZWQgX2Rlc3Ryb3kkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3QoKTtcclxuXHJcbiAgQElucHV0KCkgc21hcnRDb21wb25lbnRMYXlvdXQ/OiBTbWFydENvbXBvbmVudExheW91dERlZmluaXRpb247XHJcbiAgQElucHV0KCkgcGFyZW50TGF5b3V0Q29tcG9uZW50PzogU21hcnRDb21wb25lbnRMYXlvdXRDb21wb25lbnQ7XHJcbiAgQElucHV0KCkgcGFyZW50U21hcnRDb21wb25lbnQ6IGFueTtcclxuICBASW5wdXQoKSBncmlkUm93OiBhbnk7XHJcblxyXG4gIHByaXZhdGUgcGVuZGluZ09ycGhhbkNsZWFudXA6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmRhdGEtdGVzdGlkJylcclxuICBnZXQgdGVzdElkKCk6IHN0cmluZyB8IG51bGwge1xyXG4gICAgcmV0dXJuIHRoaXMuc21hcnRDb21wb25lbnRMYXlvdXQ/LmlkZW50aWZpZXIgPz8gbnVsbDtcclxuICB9XHJcblxyXG4gIEBIb3N0QmluZGluZygnY2xhc3MuaG9yaXpvbnRhbCcpXHJcbiAgZ2V0IGlzSG9yaXpvbnRhbCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAoXHJcbiAgICAgIHRoaXMuc21hcnRDb21wb25lbnRMYXlvdXQ/LnR5cGUgPT09IHRoaXMudHlwZSgpLkNPTlRBSU5FUiAmJlxyXG4gICAgICB0aGlzLnNtYXJ0Q29tcG9uZW50TGF5b3V0Py5kaXJlY3Rpb24gPT09ICdob3Jpem9udGFsJ1xyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIEBIb3N0QmluZGluZygnY2xhc3MudmVydGljYWwnKVxyXG4gIGdldCBpc1ZlcnRpY2FsKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgdGhpcy5zbWFydENvbXBvbmVudExheW91dD8udHlwZSA9PT0gdGhpcy50eXBlKCkuQ09OVEFJTkVSICYmXHJcbiAgICAgICh0aGlzLnNtYXJ0Q29tcG9uZW50TGF5b3V0Py5kaXJlY3Rpb24gPz8gJ3ZlcnRpY2FsJykgPT09ICd2ZXJ0aWNhbCdcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBjdXJyZW50TGF5b3V0PzogU21hcnRDb21wb25lbnRMYXlvdXREZWZpbml0aW9uO1xyXG5cclxuICB1dWlkPzogc3RyaW5nO1xyXG5cclxuICBAVmlld0NoaWxkcmVuKCdmb3JtJylcclxuICBzbWFydEZvcm1MaXN0ITogUXVlcnlMaXN0PFNtYXJ0Zm9ybUNvbXBvbmVudD47XHJcbiAgc21hcnRGb3JtQ29tcG9uZW50PzogU21hcnRmb3JtQ29tcG9uZW50O1xyXG4gIHNtYXJ0Rm9ybT86IFNtYXJ0Rm9ybTtcclxuXHJcbiAgQFZpZXdDaGlsZHJlbignZ3JpZCcpXHJcbiAgc21hcnRHcmlkTGlzdCE6IFF1ZXJ5TGlzdDxTbWFydEdyaWRDb21wb25lbnQ+O1xyXG4gIHNtYXJ0R3JpZENvbXBvbmVudD86IFNtYXJ0R3JpZENvbXBvbmVudDtcclxuICBzbWFydEdyaWQ/OiBTbWFydEdyaWQ7XHJcblxyXG4gIEBWaWV3Q2hpbGRyZW4oJ21hcCcpXHJcbiAgc21hcnRNYXBMaXN0ITogUXVlcnlMaXN0PFNtYXJ0TWFwQ29tcG9uZW50PjtcclxuICBzbWFydE1hcENvbXBvbmVudD86IFNtYXJ0TWFwQ29tcG9uZW50O1xyXG4gIG1hcElkPzogc3RyaW5nO1xyXG5cclxuICBAVmlld0NoaWxkcmVuKCdkaWFncmFtJylcclxuICBzbWFydERpYWdyYW1MaXN0ITogUXVlcnlMaXN0PFNtYXJ0RGlhZ3JhbUNvbXBvbmVudD47XHJcbiAgc21hcnREaWFncmFtQ29tcG9uZW50PzogU21hcnREaWFncmFtQ29tcG9uZW50O1xyXG4gIHNtYXJ0RGlhZ3JhbUlkPzogc3RyaW5nO1xyXG5cclxuICBAVmlld0NoaWxkcmVuKCdmaWx0ZXInKVxyXG4gIHNtYXJ0RmlsdGVyTGlzdCE6IFF1ZXJ5TGlzdDxTbWFydEZpbHRlckNvbXBvbmVudD47XHJcbiAgc21hcnRGaWx0ZXJDb21wb25lbnQ/OiBTbWFydEZpbHRlckNvbXBvbmVudDtcclxuICBzbWFydEZpbHRlcj86IFNtYXJ0RmlsdGVyO1xyXG5cclxuICBAVmlld0NoaWxkcmVuKCd0b29sYmFyJylcclxuICB0b29sYmFyTGlzdCE6IFF1ZXJ5TGlzdDxVaUFjdGlvblRvb2xiYXJDb21wb25lbnQ+O1xyXG4gIHRvb2xiYXI/OiBVaUFjdGlvblRvb2xiYXJDb21wb25lbnQ7XHJcbiAgdG9vbGJhcklkPzogc3RyaW5nO1xyXG4gIHRvb2xiYXJQcm9wZXJ0ZXM/OiBUb29sYmFyUHJvcGVydGllcztcclxuXHJcbiAgdHJlZVNlcnZpY2U/OiBTbWFydHRyZWVHZW5lcmljU2VydmljZTtcclxuXHJcbiAgZXhwYW5kYWJsZVNlY3Rpb24/OiBFeHBhbmRhYmxlU2VjdGlvbjxTbWFydENvbXBvbmVudExheW91dERlZmluaXRpb24+O1xyXG5cclxuICBlbWJlZGRlZFNsb3RBY3RpdmU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBlbWJlZGRlZFNsb3RDb250YWluZXJJZD86IHN0cmluZztcclxuICBfZW1iZWRkZWRTbG90VmNSZWY/OiBWaWV3Q29udGFpbmVyUmVmO1xyXG5cclxuICBAVmlld0NoaWxkKCdlbWJlZGRlZFNsb3QnLCB7IHJlYWQ6IFZpZXdDb250YWluZXJSZWYsIHN0YXRpYzogZmFsc2UgfSlcclxuICBzZXQgZW1iZWRkZWRTbG90VmNSZWZTZXR0ZXIodmNSZWY6IFZpZXdDb250YWluZXJSZWYgfCB1bmRlZmluZWQpIHtcclxuICAgIHRoaXMuX2VtYmVkZGVkU2xvdFZjUmVmID0gdmNSZWY7XHJcbiAgICBpZiAodmNSZWYpIHtcclxuICAgICAgdGhpcy50cnlSZWdpc3RlckVtYmVkZGVkU2xvdCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQFZpZXdDaGlsZHJlbihFeHBhbmRhYmxlU2VjdGlvbkNvbXBvbmVudClcclxuICBleHBhbmRhYmxlQ29tcG9uZW50cyE6IFF1ZXJ5TGlzdDxFeHBhbmRhYmxlU2VjdGlvbkNvbXBvbmVudD47XHJcblxyXG4gIEBWaWV3Q2hpbGRyZW4oU21hcnRDb21wb25lbnRMYXlvdXRDb21wb25lbnQpXHJcbiAgY29tcG9uZW50cyE6IFF1ZXJ5TGlzdDxTbWFydENvbXBvbmVudExheW91dENvbXBvbmVudD47XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBsYXlvdXRTZXJ2aWNlOiBTbWFydGZvcm1MYXlvdXREZWZpbml0aW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgdmlld0NvbnRleHQ6IFNtYXJ0Vmlld0NvbnRleHRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBlbGVtZW50PzogRWxlbWVudFJlZixcclxuICAgIHByaXZhdGUgcmVuZGVyZXI/OiBSZW5kZXJlcjJcclxuICApIHt9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnNtYXJ0Rm9ybUxpc3Q/LmZpcnN0KSB7XHJcbiAgICAgIHRoaXMuc2V0Rm9ybUNvbXBvbmVudCh0aGlzLnNtYXJ0Rm9ybUxpc3Q/LmZpcnN0KTtcclxuICAgIH1cclxuICAgIHRoaXMuc21hcnRGb3JtTGlzdC5jaGFuZ2VzXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKGxpc3Q6IFF1ZXJ5TGlzdDxTbWFydGZvcm1Db21wb25lbnQ+KSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXRGb3JtQ29tcG9uZW50KGxpc3QuZmlyc3QpO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICBpZiAodGhpcy5zbWFydEdyaWRMaXN0Py5maXJzdCkge1xyXG4gICAgICB0aGlzLnNldEdyaWRDb21wb25lbnQodGhpcy5zbWFydEdyaWRMaXN0Py5maXJzdCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnNtYXJ0R3JpZExpc3QuY2hhbmdlc1xyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKChsaXN0OiBRdWVyeUxpc3Q8U21hcnRHcmlkQ29tcG9uZW50PikgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0R3JpZENvbXBvbmVudChsaXN0LmZpcnN0KTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgaWYgKHRoaXMuc21hcnRNYXBMaXN0Py5maXJzdCkge1xyXG4gICAgICB0aGlzLnNldE1hcENvbXBvbmVudCh0aGlzLnNtYXJ0TWFwTGlzdD8uZmlyc3QpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zbWFydE1hcExpc3QuY2hhbmdlcy5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCkpLnN1YnNjcmliZSgobWFwcykgPT4ge1xyXG4gICAgICB0aGlzLnNldE1hcENvbXBvbmVudChtYXBzLmZpcnN0KTtcclxuICAgIH0pO1xyXG5cclxuICAgIGlmICh0aGlzLnNtYXJ0RGlhZ3JhbUxpc3Q/LmZpcnN0KSB7XHJcbiAgICAgIHRoaXMuc2V0RGlhZ3JhbUNvbXBvbmVudCh0aGlzLnNtYXJ0RGlhZ3JhbUxpc3Q/LmZpcnN0KTtcclxuICAgIH1cclxuICAgIHRoaXMuc21hcnREaWFncmFtTGlzdC5jaGFuZ2VzLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSkuc3Vic2NyaWJlKChkaWFncmFtcykgPT4ge1xyXG4gICAgICB0aGlzLnNldERpYWdyYW1Db21wb25lbnQoZGlhZ3JhbXMuZmlyc3QpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5zbWFydEZpbHRlckxpc3QuY2hhbmdlc1xyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKChsaXN0OiBRdWVyeUxpc3Q8U21hcnRGaWx0ZXJDb21wb25lbnQ+KSA9PiB7XHJcbiAgICAgICAgaWYgKCF0aGlzLnNtYXJ0RmlsdGVyQ29tcG9uZW50KSB7XHJcbiAgICAgICAgICB0aGlzLnNtYXJ0RmlsdGVyQ29tcG9uZW50ID0gbGlzdC5maXJzdDtcclxuICAgICAgICAgIHRoaXMuYmluZEZpbHRlcigpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcblxyXG4gICAgaWYgKHRoaXMudG9vbGJhckxpc3Q/LmZpcnN0KSB7XHJcbiAgICAgIHRoaXMuc2V0VG9vbGJhckNvbXBvbmVudCh0aGlzLnRvb2xiYXJMaXN0Py5maXJzdCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnRvb2xiYXJMaXN0LmNoYW5nZXNcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSgobGlzdDogUXVlcnlMaXN0PFVpQWN0aW9uVG9vbGJhckNvbXBvbmVudD4pID0+IHtcclxuICAgICAgICB0aGlzLnNldFRvb2xiYXJDb21wb25lbnQobGlzdC5maXJzdCk7XHJcbiAgICAgIH0pO1xyXG4gICAgdGhpcy5zZXRVcCgpO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdDaGVja2VkKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMucGVuZGluZ09ycGhhbkNsZWFudXApIHtcclxuICAgICAgdGhpcy5wZW5kaW5nT3JwaGFuQ2xlYW51cCA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnZpZXdDb250ZXh0LmNsZWFudXBPcnBoYW5lZEVtYmVkZGVkVmlld3ModGhpcy51dWlkISk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmVtYmVkZGVkU2xvdENvbnRhaW5lcklkICYmIHRoaXMudXVpZCkge1xyXG4gICAgICB0aGlzLnZpZXdDb250ZXh0LnVucmVnaXN0ZXJFbWJlZGRlZFNsb3QodGhpcy51dWlkLCB0aGlzLmVtYmVkZGVkU2xvdENvbnRhaW5lcklkKTtcclxuICAgIH1cclxuICAgIHRoaXMuX2Rlc3Ryb3kkLm5leHQoKTtcclxuICAgIHRoaXMuX2Rlc3Ryb3kkLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICB0aGlzLnNldFVwKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldFVwKCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLnBhcmVudFNtYXJ0Q29tcG9uZW50IHx8ICF0aGlzLnNtYXJ0Q29tcG9uZW50TGF5b3V0KSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmIChkZWVwRXF1YWwodGhpcy5zbWFydENvbXBvbmVudExheW91dCwgdGhpcy5jdXJyZW50TGF5b3V0KSkge1xyXG4gICAgICAvLyBubyBsYXlvdXQgY2hhbmdlLCBrZWVwIGN1cnJlbnQgc3RhdGVcclxuICAgICAgdGhpcy5zbWFydENvbXBvbmVudExheW91dCA9IHRoaXMuY3VycmVudExheW91dDtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgLy8gbGF5b3V0IGNoYW5nZWQsIHJlbmRlciwgYnV0IHNhdmUgY3VycmVudFxyXG4gICAgLy8gdGhpcy5jdXJyZW50TGF5b3V0ID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLnNtYXJ0Q29tcG9uZW50TGF5b3V0KSk7XHJcbiAgICB0aGlzLmN1cnJlbnRMYXlvdXQgPSB0aGlzLnNtYXJ0Q29tcG9uZW50TGF5b3V0O1xyXG5cclxuICAgIHRoaXMudXVpZCA9IHRoaXMucGFyZW50U21hcnRDb21wb25lbnQudXVpZDtcclxuICAgIHRoaXMudHJlZVNlcnZpY2UgPSB0aGlzLnBhcmVudFNtYXJ0Q29tcG9uZW50LnNtYXJ0VHJlZVNlcnZpY2U7XHJcblxyXG4gICAgLy8gVG9wLWxldmVsIGxheW91dDogZGV0YWNoIGVtYmVkZGVkIHZpZXdzIGJlZm9yZSB0aGUgdHJlZSBpcyByZS1yZW5kZXJlZCxcclxuICAgIC8vIHNvIHRoZXkgc3Vydml2ZSAqbmdGb3IgY29tcG9uZW50IGRlc3RydWN0aW9uXHJcbiAgICBpZiAoIXRoaXMucGFyZW50TGF5b3V0Q29tcG9uZW50ICYmIHRoaXMudXVpZCkge1xyXG4gICAgICB0aGlzLnZpZXdDb250ZXh0LmRldGFjaEFsbEVtYmVkZGVkVmlld3ModGhpcy51dWlkKTtcclxuICAgICAgdGhpcy5wZW5kaW5nT3JwaGFuQ2xlYW51cCA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5zbWFydENvbXBvbmVudExheW91dD8uZGlyZWN0aW9uO1xyXG5cclxuICAgIC8vIHRoZSBuYXR1cmUgb2YgdGhlIGxheW91dCBtaWdodCBoYXZlIGNoYW5nZWQgKGUuZy4gZnJvbSBHUklEIHRvIEZPUk0pLCB3ZSBudWxsIG91dCBldmVyeVxyXG4gICAgLy8gdGVtcGxhdGUtcmVsYXRlZCBlbGVtZW50LCBzbyBubyBzdGFsZSBkYXRhIGlzIGxlZnQgb24gc2NyZWVuOlxyXG4gICAgdGhpcy5leHBhbmRhYmxlU2VjdGlvbiA9IHVuZGVmaW5lZDtcclxuICAgIHRoaXMuc21hcnRGb3JtID0gdW5kZWZpbmVkO1xyXG4gICAgdGhpcy5zbWFydEZvcm1Db21wb25lbnQgPSB1bmRlZmluZWQ7XHJcbiAgICB0aGlzLnNtYXJ0R3JpZCA9IHVuZGVmaW5lZDtcclxuICAgIHRoaXMuc21hcnRHcmlkQ29tcG9uZW50ID0gdW5kZWZpbmVkO1xyXG4gICAgdGhpcy5zbWFydEZpbHRlciA9IHVuZGVmaW5lZDtcclxuICAgIHRoaXMuc21hcnRGaWx0ZXJDb21wb25lbnQgPSB1bmRlZmluZWQ7XHJcbiAgICB0aGlzLnNtYXJ0R3JpZCA9IHVuZGVmaW5lZDtcclxuICAgIHRoaXMudG9vbGJhcklkID0gdW5kZWZpbmVkO1xyXG4gICAgdGhpcy50b29sYmFyID0gdW5kZWZpbmVkO1xyXG4gICAgLy8gbnVsbCBvdXQgdG9vbGJhcj9cclxuICAgIHRoaXMubWFwSWQgPSB1bmRlZmluZWQ7XHJcbiAgICB0aGlzLnNtYXJ0RGlhZ3JhbUlkID0gdW5kZWZpbmVkO1xyXG4gICAgaWYgKHRoaXMuZW1iZWRkZWRTbG90Q29udGFpbmVySWQgJiYgdGhpcy51dWlkKSB7XHJcbiAgICAgIHRoaXMudmlld0NvbnRleHQudW5yZWdpc3RlckVtYmVkZGVkU2xvdCh0aGlzLnV1aWQsIHRoaXMuZW1iZWRkZWRTbG90Q29udGFpbmVySWQpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5lbWJlZGRlZFNsb3RBY3RpdmUgPSBmYWxzZTtcclxuICAgIHRoaXMuZW1iZWRkZWRTbG90Q29udGFpbmVySWQgPSB1bmRlZmluZWQ7XHJcblxyXG4gICAgaWYgKHRoaXMuc21hcnRDb21wb25lbnRMYXlvdXQ/LmV4cGFuZGFibGUpIHtcclxuICAgICAgdGhpcy5jb25zdHJ1Y3RFeHBhbmRhYmxlU2VjdGlvbigpO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLnNtYXJ0Q29tcG9uZW50TGF5b3V0Py50eXBlID09PSBDb21wb25lbnRUeXBlLkZPUk0pIHtcclxuICAgICAgdGhpcy5jb25zdHJ1Y3RGb3JtKCk7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuc21hcnRDb21wb25lbnRMYXlvdXQ/LnR5cGUgPT09IENvbXBvbmVudFR5cGUuV0lER0VUKSB7XHJcbiAgICAgIGlmICh0aGlzLnNtYXJ0Q29tcG9uZW50TGF5b3V0LndpZGdldD8udHlwZSA9PT0gQ29tcG9uZW50V2lkZ2V0VHlwZS5HUklEKSB7XHJcbiAgICAgICAgdGhpcy5jb25zdHJ1Y3RHcmlkKCk7XHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5zbWFydENvbXBvbmVudExheW91dC53aWRnZXQ/LnR5cGUgPT09IENvbXBvbmVudFdpZGdldFR5cGUuRklMVEVSKSB7XHJcbiAgICAgICAgY29uc29sZS53YXJuKCdDb21wb25lbnRXaWRnZXRUeXBlLkZJTFRFUiBpcyBub3Qgc3VwcG9ydGVkJyk7XHJcbiAgICAgICAgLy8gdGhpcy5jb25zdHJ1Y3RGaWx0ZXIoKTtcclxuICAgICAgfSBlbHNlIGlmICh0aGlzLnNtYXJ0Q29tcG9uZW50TGF5b3V0LndpZGdldD8udHlwZSA9PT0gQ29tcG9uZW50V2lkZ2V0VHlwZS5UUkVFKSB7XHJcbiAgICAgICAgdGhpcy5jb25zdHJ1Y3RUcmVlKCk7XHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5zbWFydENvbXBvbmVudExheW91dC53aWRnZXQ/LnR5cGUgPT09IENvbXBvbmVudFdpZGdldFR5cGUuVE9PTEJBUikge1xyXG4gICAgICAgIHRoaXMuY29uc3RydWN0VG9vbGJhcigpO1xyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuc21hcnRDb21wb25lbnRMYXlvdXQud2lkZ2V0Py50eXBlID09PSBDb21wb25lbnRXaWRnZXRUeXBlLk1BUCkge1xyXG4gICAgICAgIHRoaXMuY29uc3RydWN0TWFwKCk7XHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5zbWFydENvbXBvbmVudExheW91dC53aWRnZXQ/LnR5cGUgPT09IENvbXBvbmVudFdpZGdldFR5cGUuRElBR1JBTSkge1xyXG4gICAgICAgIHRoaXMuY29uc3RydWNEaWFncmFtKCk7XHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5zbWFydENvbXBvbmVudExheW91dC53aWRnZXQ/LnR5cGUgPT09IENvbXBvbmVudFdpZGdldFR5cGUuRU1CRURERURfU0xPVCkge1xyXG4gICAgICAgIHRoaXMuY29uc3RydWN0RW1iZWRkZWRTbG90KCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICghdGhpcy5wYXJlbnRMYXlvdXRDb21wb25lbnQpIHtcclxuICAgICAgICAvLyBvbmx5IHRvcCBsZXZlbCBjb21wb25lbnQgc2hvdWxkIGNhbGwgaW5pdCBhY3Rpb25zXHJcbiAgICAgICAgdGhpcy5wYXJlbnRTbWFydENvbXBvbmVudC5pbml0QWN0aW9ucygpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgU21hcnRTdHlsZVV0aWxpdHkuYXBwbHlTdHlsZSh0aGlzLnNtYXJ0Q29tcG9uZW50TGF5b3V0LnN0eWxlLCB0aGlzLmVsZW1lbnQsIHRoaXMucmVuZGVyZXIpO1xyXG4gIH1cclxuXHJcbiAgdHlwZSgpOiB0eXBlb2YgQ29tcG9uZW50VHlwZSB7XHJcbiAgICByZXR1cm4gQ29tcG9uZW50VHlwZTtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdEV4cGFuZGFibGVTZWN0aW9uKCk6IHZvaWQge1xyXG4gICAgbGV0IGRhdGE6IFNtYXJ0Q29tcG9uZW50TGF5b3V0RGVmaW5pdGlvbiA9IHsgLi4udGhpcy5zbWFydENvbXBvbmVudExheW91dCEgfTtcclxuICAgIGRhdGEuZXhwYW5kYWJsZSA9IGZhbHNlO1xyXG5cclxuICAgIHRoaXMuZXhwYW5kYWJsZVNlY3Rpb24gPSB7XHJcbiAgICAgIHRpdGxlOiB0aGlzLnNtYXJ0Q29tcG9uZW50TGF5b3V0Py5leHBhbmRhYmxlU2VjdGlvbkxhYmVsID8/ICcnLFxyXG4gICAgICBpbnB1dHM6IG5ldyBNYXA8c3RyaW5nLCBhbnk+KFtcclxuICAgICAgICBbJ3NtYXJ0Q29tcG9uZW50TGF5b3V0JywgZGF0YV0sXHJcbiAgICAgICAgWydwYXJlbnRTbWFydENvbXBvbmVudCcsIHRoaXMucGFyZW50U21hcnRDb21wb25lbnRdLFxyXG4gICAgICAgIFsncGFyZW50TGF5b3V0Q29tcG9uZW50JywgdGhpcy5wYXJlbnRMYXlvdXRDb21wb25lbnRdLFxyXG4gICAgICBdKSxcclxuICAgICAgaGVhZGVyVG9vbGJhcklkOiB0aGlzLnNtYXJ0Q29tcG9uZW50TGF5b3V0Py5leHBhbmRhYmxlU2VjdGlvbkhlYWRlclRvb2xiYXJJZCxcclxuICAgICAgY3VzdG9tQ29tcG9uZW50OiBTbWFydENvbXBvbmVudExheW91dENvbXBvbmVudCxcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RGb3JtKCk6IHZvaWQge1xyXG4gICAgY29uc3Qgd2lkZ2V0cyA9IHRoaXMubGF5b3V0U2VydmljZS5yZW5kZXIoe1xyXG4gICAgICBsYXlvdXREZWZpbml0aW9uczogdGhpcy5zbWFydENvbXBvbmVudExheW91dD8uZm9ybSxcclxuICAgIH0pO1xyXG5cclxuICAgIGlmICh0aGlzLmdyaWRSb3cgJiYgIXRoaXMuZ3JpZFJvdy52YWx1ZVNldCkge1xyXG4gICAgICB0aGlzLmdyaWRSb3cudmFsdWVTZXRzID0gdGhpcy5wYXJlbnRTbWFydENvbXBvbmVudC5tb2RlbC52YWx1ZVNldHM7XHJcbiAgICB9XHJcbiAgICB0aGlzLnNtYXJ0Rm9ybSA9IHtcclxuICAgICAgZGlyZWN0aW9uOiB0aGlzLmdldEZvcm1MYXlvdXQoKSxcclxuICAgICAgY29tcG9uZW50TW9kZWw6IHRoaXMuZ3JpZFJvdyA/IHRoaXMuZ3JpZFJvdyA6IHRoaXMucGFyZW50U21hcnRDb21wb25lbnQ/Lm1vZGVsLFxyXG4gICAgICB3aWRnZXRzLFxyXG4gICAgfTtcclxuXHJcbiAgICB0aGlzLmJpbmRGb3JtKCk7XHJcbiAgfVxyXG5cclxuICBnZXRGb3JtTGF5b3V0KCk6IFNtYXJ0Rm9ybVdpZGdldERpcmVjdGlvbiB7XHJcbiAgICBpZiAodGhpcy5zbWFydENvbXBvbmVudExheW91dD8uZGlyZWN0aW9uKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLnNtYXJ0Q29tcG9uZW50TGF5b3V0Py5kaXJlY3Rpb24gPT09IExheW91dERpcmVjdGlvbi5IT1JJWk9OVEFMXHJcbiAgICAgICAgPyBTbWFydEZvcm1XaWRnZXREaXJlY3Rpb24uUk9XXHJcbiAgICAgICAgOiBTbWFydEZvcm1XaWRnZXREaXJlY3Rpb24uQ09MO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIFNtYXJ0Rm9ybVdpZGdldERpcmVjdGlvbi5DT0w7XHJcbiAgfVxyXG5cclxuICBzZXRGb3JtQ29tcG9uZW50KGNvbXA6IFNtYXJ0Zm9ybUNvbXBvbmVudCkge1xyXG4gICAgaWYgKCF0aGlzLnNtYXJ0Rm9ybUNvbXBvbmVudCkge1xyXG4gICAgICB0aGlzLnNtYXJ0Rm9ybUNvbXBvbmVudCA9IGNvbXA7XHJcbiAgICAgIHRoaXMuYmluZEZvcm0oKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGJpbmRGb3JtKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMucGFyZW50U21hcnRDb21wb25lbnQ/LnVzZVF1ZXJ5TGlzdHMpIHtcclxuICAgICAgaWYgKHRoaXMuc21hcnRGb3JtICYmIHRoaXMuc21hcnRGb3JtQ29tcG9uZW50ICYmIHRoaXMucGFyZW50U21hcnRDb21wb25lbnQpIHtcclxuICAgICAgICB0aGlzLnBhcmVudFNtYXJ0Q29tcG9uZW50LmhhbmRsZURhdGFDaGFuZ2VTdWJzY3JpcHRpb25zKCk7XHJcbiAgICAgICAgdGhpcy5wYXJlbnRTbWFydENvbXBvbmVudC5oYW5kbGVMYXlvdXRVcGxvYWRDYWxsYmFjayh0aGlzLnNtYXJ0Rm9ybUNvbXBvbmVudCk7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuc21hcnRGb3JtICYmIHRoaXMuc21hcnRGb3JtQ29tcG9uZW50KSB7XHJcbiAgICAgIHRoaXMucGFyZW50U21hcnRDb21wb25lbnQ/LmFkZEZvcm0oXHJcbiAgICAgICAgLy8gdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBmb3JtXHJcbiAgICAgICAgYGZvcm1fJHt0aGlzLm1ha2VpZCg1KX1gLFxyXG4gICAgICAgIHRoaXMuc21hcnRGb3JtLFxyXG4gICAgICAgIHRoaXMuc21hcnRGb3JtQ29tcG9uZW50XHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBtYWtlaWQobGVuZ3RoOiBudW1iZXIpIHtcclxuICAgIGxldCByZXN1bHQgPSAnJztcclxuICAgIGNvbnN0IGNoYXJhY3RlcnMgPSAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODknO1xyXG4gICAgY29uc3QgY2hhcmFjdGVyc0xlbmd0aCA9IGNoYXJhY3RlcnMubGVuZ3RoO1xyXG4gICAgbGV0IGNvdW50ZXIgPSAwO1xyXG4gICAgd2hpbGUgKGNvdW50ZXIgPCBsZW5ndGgpIHtcclxuICAgICAgcmVzdWx0ICs9IGNoYXJhY3RlcnMuY2hhckF0KE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIGNoYXJhY3RlcnNMZW5ndGgpKTtcclxuICAgICAgY291bnRlciArPSAxO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdEdyaWQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnNtYXJ0R3JpZCA9IHtcclxuICAgICAgZ3JpZElkZW50aWZpZXI6IHRoaXMuc21hcnRDb21wb25lbnRMYXlvdXQ/LndpZGdldD8uaWRlbnRpZmllciEsXHJcbiAgICAgIGdyaWRNb2RlbDoge1xyXG4gICAgICAgIHBhZ2U6IHt9LFxyXG4gICAgICB9LFxyXG4gICAgICBvcHRpb25zOiB7XHJcbiAgICAgICAgcm93VWlBY3Rpb25UeXBlOiBHcmlkVWlBY3Rpb25UeXBlLlBPUFVQX01FTlUsXHJcbiAgICAgIH0sXHJcbiAgICAgIGxheW91dERlZjogU21hcnRMYXlvdXREZWYuVEFCTEUsXHJcbiAgICAgIHBhZ2luYXRvcjogdHJ1ZSxcclxuICAgIH07XHJcblxyXG4gICAgdGhpcy5iaW5kR3JpZCgpO1xyXG4gIH1cclxuXHJcbiAgc2V0R3JpZENvbXBvbmVudChjb21wOiBTbWFydEdyaWRDb21wb25lbnQpIHtcclxuICAgIGlmICghdGhpcy5zbWFydEdyaWRDb21wb25lbnQpIHtcclxuICAgICAgdGhpcy5zbWFydEdyaWRDb21wb25lbnQgPSBjb21wO1xyXG4gICAgICB0aGlzLmJpbmRHcmlkKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBiaW5kR3JpZCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnBhcmVudFNtYXJ0Q29tcG9uZW50Py51c2VRdWVyeUxpc3RzKSB7XHJcbiAgICAgIGlmICh0aGlzLnNtYXJ0R3JpZCAmJiB0aGlzLnNtYXJ0R3JpZENvbXBvbmVudCAmJiB0aGlzLnBhcmVudFNtYXJ0Q29tcG9uZW50KSB7XHJcbiAgICAgICAgdGhpcy5wYXJlbnRTbWFydENvbXBvbmVudC5zZXR1cEdyaWRTZXJ2aWNlcyh0aGlzLnNtYXJ0R3JpZENvbXBvbmVudCk7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuc21hcnRHcmlkICYmIHRoaXMuc21hcnRHcmlkQ29tcG9uZW50KSB7XHJcbiAgICAgIHRoaXMuc21hcnRHcmlkID0gdGhpcy5wYXJlbnRTbWFydENvbXBvbmVudD8uYWRkR3JpZChcclxuICAgICAgICB0aGlzLnNtYXJ0R3JpZCxcclxuICAgICAgICB7XHJcbiAgICAgICAgICByb3dVaUFjdGlvblR5cGU6IEdyaWRVaUFjdGlvblR5cGUuUE9QVVBfTUVOVSxcclxuICAgICAgICB9LFxyXG4gICAgICAgIGZhbHNlLFxyXG4gICAgICAgIHRoaXMuc21hcnRHcmlkQ29tcG9uZW50XHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RNYXAoKSB7XHJcbiAgICB0aGlzLm1hcElkID0gdGhpcy5zbWFydENvbXBvbmVudExheW91dD8ud2lkZ2V0Py5pZGVudGlmaWVyO1xyXG4gICAgdGhpcy5iaW5kTWFwKCk7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y0RpYWdyYW0oKSB7XHJcbiAgICB0aGlzLnNtYXJ0RGlhZ3JhbUlkID0gdGhpcy5zbWFydENvbXBvbmVudExheW91dD8ud2lkZ2V0Py5pZGVudGlmaWVyO1xyXG4gICAgdGhpcy5iaW5kRGlhZ3JhbSgpO1xyXG4gIH1cclxuXHJcbiAgc2V0TWFwQ29tcG9uZW50KGNvbXA6IFNtYXJ0TWFwQ29tcG9uZW50KSB7XHJcbiAgICBpZiAoIXRoaXMuc21hcnRNYXBDb21wb25lbnQpIHtcclxuICAgICAgdGhpcy5zbWFydE1hcENvbXBvbmVudCA9IGNvbXA7XHJcbiAgICAgIHRoaXMuYmluZE1hcCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0RGlhZ3JhbUNvbXBvbmVudChjb21wOiBTbWFydERpYWdyYW1Db21wb25lbnQpIHtcclxuICAgIGlmICghdGhpcy5zbWFydERpYWdyYW1Db21wb25lbnQpIHtcclxuICAgICAgdGhpcy5zbWFydERpYWdyYW1Db21wb25lbnQgPSBjb21wO1xyXG4gICAgICB0aGlzLmJpbmREaWFncmFtKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBiaW5kTWFwKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMucGFyZW50U21hcnRDb21wb25lbnQudXNlUXVlcnlMaXN0cykge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc29sZS53YXJuKCdNYXAgY29tcG9uZW50cyBhcmUgb25seSBzdXBwb3J0ZWQgdGhyb3VnaCBRdWVyeUxpc3RzIScpO1xyXG4gIH1cclxuXHJcbiAgYmluZERpYWdyYW0oKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5wYXJlbnRTbWFydENvbXBvbmVudC51c2VRdWVyeUxpc3RzKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zb2xlLndhcm4oJ0RpYWdyYW0gY29tcG9uZW50cyBhcmUgb25seSBzdXBwb3J0ZWQgdGhyb3VnaCBRdWVyeUxpc3RzIScpO1xyXG4gIH1cclxuXHJcbiAgc2V0VG9vbGJhckNvbXBvbmVudChjb21wOiBVaUFjdGlvblRvb2xiYXJDb21wb25lbnQpIHtcclxuICAgIHRoaXMudG9vbGJhciA9IGNvbXA7XHJcbiAgfVxyXG5cclxuICAvLyBOT1QgVVNFRCwgRE9FU04nVCBXT1JLXHJcbiAgLy8gY29uc3RydWN0RmlsdGVyKCk6IHZvaWQge1xyXG4gIC8vICAgdGhpcy5zbWFydEZpbHRlciA9ICh0aGlzLnNtYXJ0Q29tcG9uZW50TGF5b3V0IS5wYXJlbnRDb21wb25lbnQgYXMgYW55KS5hZGRGaWx0ZXIoXHJcbiAgLy8gICAgIGBmaWx0ZXJfJHt0aGlzLm1ha2VpZCg1KX1gLFxyXG4gIC8vICAgICB0aGlzLnNtYXJ0Q29tcG9uZW50TGF5b3V0Py53aWRnZXQ/LmZpbHRlckV4cHJlc3Npb25GaWVsZExpc3QsXHJcbiAgLy8gICAgIHRoaXMuc21hcnRDb21wb25lbnRMYXlvdXQ/LndpZGdldD8uZmlsdGVyVHlwZSxcclxuICAvLyAgICAgdGhpcy5zbWFydEZpbHRlckNvbXBvbmVudFxyXG4gIC8vICAgKTtcclxuICAvLyB9XHJcblxyXG4gIGJpbmRGaWx0ZXIoKTogdm9pZCB7XHJcbiAgICAvLyBUT0RPXHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RUcmVlKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMucGFyZW50U21hcnRDb21wb25lbnQ/LnVzZVF1ZXJ5TGlzdHMpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5wYXJlbnRTbWFydENvbXBvbmVudC5zZXRVcERlZmF1bHRUcmVlKHRoaXMuc21hcnRDb21wb25lbnRMYXlvdXQ/LndpZGdldD8uaWRlbnRpZmllcik7XHJcbiAgICB0aGlzLnRyZWVTZXJ2aWNlPy5pbml0aWFsaXplKCk7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RUb29sYmFyKCk6IHZvaWQge1xyXG4gICAgbGV0IHRvb2xiYXJJZCA9IHRoaXMuc21hcnRDb21wb25lbnRMYXlvdXQ/LndpZGdldD8uaWRlbnRpZmllcjtcclxuICAgIGlmICh0aGlzLnRvb2xiYXJJZCAhPT0gdG9vbGJhcklkKSB7XHJcbiAgICAgIHRoaXMudG9vbGJhcklkID0gdG9vbGJhcklkO1xyXG4gICAgfVxyXG4gICAgbGV0IHByb3BlcnRpZXMgPSB0aGlzLnNtYXJ0Q29tcG9uZW50TGF5b3V0Py53aWRnZXQ/LnByb3BlcnRpZXM7XHJcbiAgICBpZiAocHJvcGVydGllcyAmJiBwcm9wZXJ0aWVzWyd0b29sYmFyX3Byb3BlcnRpZXMnXSkge1xyXG4gICAgICB0aGlzLnRvb2xiYXJQcm9wZXJ0ZXMgPSBwcm9wZXJ0aWVzWyd0b29sYmFyX3Byb3BlcnRpZXMnXTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdEVtYmVkZGVkU2xvdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZW1iZWRkZWRTbG90Q29udGFpbmVySWQgPSB0aGlzLnNtYXJ0Q29tcG9uZW50TGF5b3V0Py53aWRnZXQ/LmlkZW50aWZpZXI7XHJcbiAgICB0aGlzLmVtYmVkZGVkU2xvdEFjdGl2ZSA9IHRydWU7XHJcbiAgICB0aGlzLnRyeVJlZ2lzdGVyRW1iZWRkZWRTbG90KCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHRyeVJlZ2lzdGVyRW1iZWRkZWRTbG90KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuZW1iZWRkZWRTbG90Q29udGFpbmVySWQgJiYgdGhpcy51dWlkICYmIHRoaXMuX2VtYmVkZGVkU2xvdFZjUmVmKSB7XHJcbiAgICAgIHRoaXMudmlld0NvbnRleHQucmVnaXN0ZXJFbWJlZGRlZFNsb3QoXHJcbiAgICAgICAgdGhpcy51dWlkLFxyXG4gICAgICAgIHRoaXMuZW1iZWRkZWRTbG90Q29udGFpbmVySWQsXHJcbiAgICAgICAgdGhpcy5fZW1iZWRkZWRTbG90VmNSZWZcclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHVwZGF0ZVV1aWQobmV3VXVpZD86IHN0cmluZyk6IHZvaWQge1xyXG4gICAgY29uc3Qgb2xkVXVpZCA9IHRoaXMudXVpZDtcclxuICAgIHRoaXMudXVpZCA9IG5ld1V1aWQ7XHJcbiAgICBpZiAob2xkVXVpZCAhPT0gbmV3VXVpZCAmJiB0aGlzLmVtYmVkZGVkU2xvdENvbnRhaW5lcklkKSB7XHJcbiAgICAgIGlmIChvbGRVdWlkKSB7XHJcbiAgICAgICAgdGhpcy52aWV3Q29udGV4dC51bnJlZ2lzdGVyRW1iZWRkZWRTbG90KG9sZFV1aWQsIHRoaXMuZW1iZWRkZWRTbG90Q29udGFpbmVySWQpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMudHJ5UmVnaXN0ZXJFbWJlZGRlZFNsb3QoKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPGRpdiAqbmdJZj1cInNtYXJ0Q29tcG9uZW50TGF5b3V0Py5leHBhbmRhYmxlOyB0aGVuIGV4cGFuZGFibGU7IGVsc2Ugbm9ybWFsXCI+IDwvZGl2PlxyXG5cclxuPG5nLXRlbXBsYXRlICNleHBhbmRhYmxlPlxyXG4gIDxzbWFydC1leHBhbmRhYmxlLXNlY3Rpb25cclxuICAgICpuZ0lmPVwiZXhwYW5kYWJsZVNlY3Rpb25cIlxyXG4gICAgW2RhdGFdPVwiZXhwYW5kYWJsZVNlY3Rpb25cIlxyXG4gID48L3NtYXJ0LWV4cGFuZGFibGUtc2VjdGlvbj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjbm9ybWFsPlxyXG4gIEBpZiAoc21hcnRDb21wb25lbnRMYXlvdXQ/LnR5cGUgPT09IHR5cGUoKS5DT05UQUlORVIpIHtcclxuICAgIDxzbWFydC1jb21wb25lbnQtbGF5b3V0XHJcbiAgICAgICpuZ0Zvcj1cImxldCBsYXlvdXQgb2Ygc21hcnRDb21wb25lbnRMYXlvdXQ/LmNvbXBvbmVudHNcIlxyXG4gICAgICBbcGFyZW50U21hcnRDb21wb25lbnRdPVwicGFyZW50U21hcnRDb21wb25lbnRcIlxyXG4gICAgICBbcGFyZW50TGF5b3V0Q29tcG9uZW50XT1cInRoaXNcIlxyXG4gICAgICBbc21hcnRDb21wb25lbnRMYXlvdXRdPVwibGF5b3V0XCJcclxuICAgICAgW2dyaWRSb3ddPVwiZ3JpZFJvd1wiXHJcbiAgICA+PC9zbWFydC1jb21wb25lbnQtbGF5b3V0PlxyXG4gIH1cclxuICA8c21hcnRmb3JtICpuZ0lmPVwic21hcnRGb3JtXCIgI2Zvcm0gW3NtYXJ0Rm9ybV09XCJzbWFydEZvcm1cIj48L3NtYXJ0Zm9ybT5cclxuICA8c21hcnQtZ3JpZCAqbmdJZj1cInNtYXJ0R3JpZFwiICNncmlkIFtzbWFydEdyaWRdPVwic21hcnRHcmlkXCIgW3V1aWRdPVwidXVpZCFcIj48L3NtYXJ0LWdyaWQ+XHJcbiAgPHNtYXJ0LW1hcFxyXG4gICAgKm5nSWY9XCIhIXV1aWQgJiYgISFtYXBJZFwiXHJcbiAgICAjbWFwXHJcbiAgICBbdXVpZF09XCJ1dWlkXCJcclxuICAgIFtpZGVudGlmaWVyXT1cIm1hcElkXCJcclxuICAgIFtwYXJlbnRdPVwicGFyZW50U21hcnRDb21wb25lbnRcIlxyXG4gID48L3NtYXJ0LW1hcD5cclxuICA8c21hcnQtZGlhZ3JhbVxyXG4gICAgKm5nSWY9XCIhIXV1aWQgJiYgISFzbWFydERpYWdyYW1JZFwiXHJcbiAgICAjZGlhZ3JhbVxyXG4gICAgW3V1aWRdPVwidXVpZFwiXHJcbiAgICBbaWRlbnRpZmllcl09XCJzbWFydERpYWdyYW1JZFwiXHJcbiAgICBbcGFyZW50XT1cInBhcmVudFNtYXJ0Q29tcG9uZW50XCJcclxuICA+PC9zbWFydC1kaWFncmFtPlxyXG4gIDwhLS0gPHNtYXJ0LWZpbHRlciAjZmlsdGVyIFtmaWx0ZXJdPVwic21hcnRGaWx0ZXJcIj48L3NtYXJ0LWZpbHRlcj4gLS0+XHJcbiAgPHNtYXJ0LXRyZWUgKm5nSWY9XCJ0cmVlU2VydmljZVwiIFt0cmVlU2VydmljZV09XCJ0cmVlU2VydmljZSFcIj48L3NtYXJ0LXRyZWU+XHJcbiAgPHNtYXJ0LXVpLWFjdGlvbi10b29sYmFyXHJcbiAgICAqbmdJZj1cIiEhdG9vbGJhcklkXCJcclxuICAgICN0b29sYmFyXHJcbiAgICBbaWRdPVwidG9vbGJhcklkXCJcclxuICAgIFt0b29sYmFyUHJvcGVydGVzXT1cInRvb2xiYXJQcm9wZXJ0ZXNcIlxyXG4gID48L3NtYXJ0LXVpLWFjdGlvbi10b29sYmFyPlxyXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJlbWJlZGRlZFNsb3RBY3RpdmVcIiAjZW1iZWRkZWRTbG90PjwvbmctY29udGFpbmVyPlxyXG48L25nLXRlbXBsYXRlPlxyXG4iXX0=
433
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtY29tcG9uZW50LWxheW91dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi9zbWFydC1jb21wb25lbnQtbGF5b3V0L3NtYXJ0LWNvbXBvbmVudC1sYXlvdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtbmctY2xpZW50L3NyYy9saWIvc21hcnQtY29tcG9uZW50LWxheW91dC9zbWFydC1jb21wb25lbnQtbGF5b3V0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHTCxjQUFjLEVBQ2QsU0FBUyxFQUNULE1BQU0sRUFFTixXQUFXLEVBQ1gsTUFBTSxFQUNOLEtBQUssRUFPTCxTQUFTLEVBQ1QsU0FBUyxFQUNULFlBQVksRUFDWixnQkFBZ0IsR0FDakIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNMLGFBQWEsRUFDYixtQkFBbUIsRUFDbkIsZUFBZSxHQUdoQixNQUFNLE9BQU8sQ0FBQztBQUNmLE9BQU8sRUFFTCx3QkFBd0IsRUFDeEIsa0JBQWtCLEdBRW5CLE1BQU0sd0JBQXdCLENBQUM7QUFDaEMsT0FBTyxFQUNMLGdCQUFnQixFQUdoQixjQUFjLEdBQ2YsTUFBTSx3QkFBd0IsQ0FBQztBQUloQyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSwwREFBMEQsQ0FBQztBQUN0RyxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUxQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBSWhGLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDOzs7Ozs7Ozs7Ozs7QUFPL0UsTUFBTSxPQUFPLDZCQUE2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LENBQUM7K0dBbGVVLDZCQUE2QjttR0FBN0IsNkJBQTZCLDhaQVdwQixrQkFBa0IscUpBNEVILGdCQUFnQixrZ0JBUXJDLDBCQUEwQixnRUFHMUIsNkJBQTZCLHFFQzVKN0MsdWpEQTZDQSxnOENEYWEsNkJBQTZCOzs0RkFBN0IsNkJBQTZCO2tCQUx6QyxTQUFTOytCQUNFLHdCQUF3Qjs0TEFTekIsb0JBQW9CO3NCQUE1QixLQUFLO2dCQUNHLHFCQUFxQjtzQkFBN0IsS0FBSztnQkFDRyxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQWdCRixNQUFNO3NCQURULFdBQVc7dUJBQUMsa0JBQWtCO2dCQU0zQixZQUFZO3NCQURmLFdBQVc7dUJBQUMsa0JBQWtCO2dCQVMzQixVQUFVO3NCQURiLFdBQVc7dUJBQUMsZ0JBQWdCO2dCQWE3QixhQUFhO3NCQURaLFlBQVk7dUJBQUMsTUFBTTtnQkFNcEIsYUFBYTtzQkFEWixZQUFZO3VCQUFDLE1BQU07Z0JBTXBCLFlBQVk7c0JBRFgsWUFBWTt1QkFBQyxLQUFLO2dCQU1uQixnQkFBZ0I7c0JBRGYsWUFBWTt1QkFBQyxTQUFTO2dCQU12QixlQUFlO3NCQURkLFlBQVk7dUJBQUMsUUFBUTtnQkFNdEIsV0FBVztzQkFEVixZQUFZO3VCQUFDLFNBQVM7Z0JBZW5CLHVCQUF1QjtzQkFEMUIsU0FBUzt1QkFBQyxjQUFjLEVBQUUsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFTcEUsb0JBQW9CO3NCQURuQixZQUFZO3VCQUFDLDBCQUEwQjtnQkFJeEMsVUFBVTtzQkFEVCxZQUFZO3VCQUFDLDZCQUE2QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0NoZWNrZWQsXG4gIEFmdGVyVmlld0luaXQsXG4gIEFwcGxpY2F0aW9uUmVmLFxuICBDb21wb25lbnQsXG4gIGVmZmVjdCxcbiAgRWxlbWVudFJlZixcbiAgSG9zdEJpbmRpbmcsXG4gIGluamVjdCxcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIFF1ZXJ5TGlzdCxcbiAgUmVuZGVyZXIyLFxuICBTaW1wbGVDaGFuZ2VzLFxuICB2aWV3Q2hpbGQsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0NoaWxkcmVuLFxuICBWaWV3Q29udGFpbmVyUmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIENvbXBvbmVudFR5cGUsXG4gIENvbXBvbmVudFdpZGdldFR5cGUsXG4gIExheW91dERpcmVjdGlvbixcbiAgU21hcnRDb21wb25lbnRMYXlvdXREZWZpbml0aW9uLFxuICBUb29sYmFyUHJvcGVydGllcyxcbn0gZnJvbSAnLi9hcGknO1xuaW1wb3J0IHtcbiAgU21hcnRGb3JtLFxuICBTbWFydEZvcm1XaWRnZXREaXJlY3Rpb24sXG4gIFNtYXJ0Zm9ybUNvbXBvbmVudCxcbiAgU21hcnRmb3JtTGF5b3V0RGVmaW5pdGlvblNlcnZpY2UsXG59IGZyb20gJy4uL3NtYXJ0LWZvcm0vcHJvamVjdHMnO1xuaW1wb3J0IHtcbiAgR3JpZFVpQWN0aW9uVHlwZSxcbiAgU21hcnRHcmlkLFxuICBTbWFydEdyaWRDb21wb25lbnQsXG4gIFNtYXJ0TGF5b3V0RGVmLFxufSBmcm9tICcuLi9zbWFydC1ncmlkL3Byb2plY3RzJztcbmltcG9ydCB7IFNtYXJ0RmlsdGVyLCBTbWFydEZpbHRlckNvbXBvbmVudCB9IGZyb20gJy4uL3NtYXJ0LWZpbHRlci9wcm9qZWN0cyc7XG5pbXBvcnQgeyBTbWFydHRyZWVHZW5lcmljU2VydmljZSB9IGZyb20gJy4uL3NtYXJ0LXRyZWUvcHJvamVjdHMnO1xuaW1wb3J0IHsgRXhwYW5kYWJsZVNlY3Rpb24gfSBmcm9tICcuLi9zbWFydC1leHBhbmRhYmxlLXNlY3Rpb24vcHJvamVjdHMnO1xuaW1wb3J0IHsgRXhwYW5kYWJsZVNlY3Rpb25Db21wb25lbnQgfSBmcm9tICcuLi9zbWFydC1leHBhbmRhYmxlLXNlY3Rpb24vZXhwYW5kYWJsZS1zZWN0aW9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFVpQWN0aW9uVG9vbGJhckNvbXBvbmVudCB9IGZyb20gJy4uL3ZpZXctY29udGV4dC9wcm9qZWN0cyc7XG5pbXBvcnQgeyBkZWVwRXF1YWwgfSBmcm9tICdmYXN0LWVxdWFscyc7XG5pbXBvcnQgeyBTbWFydFN0eWxlVXRpbGl0eSB9IGZyb20gJy4uL3ZpZXctY29udGV4dC91dGlsaXR5L3NtYXJ0LXN0eWxlLXV0aWxpdHknO1xuaW1wb3J0IHsgU21hcnRWaWV3Q29udGV4dFNlcnZpY2UgfSBmcm9tICcuLi92aWV3LWNvbnRleHQvc21hcnQtdmlldy1jb250ZXh0LnNlcnZpY2UnO1xuaW1wb3J0IHsgU21hcnRNYXBDb21wb25lbnQgfSBmcm9tICcuLi9zbWFydC1tYXAvc21hcnQtbWFwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTbWFydERpYWdyYW1Db21wb25lbnQgfSBmcm9tICcuLi9zbWFydC1kaWFncmFtL3Byb2plY3RzJztcbmltcG9ydCB7IFNtYXJ0Q29tcG9uZW50TGF5b3V0VXRpbGl0eSB9IGZyb20gJy4vc21hcnQtY29tcG9uZW50LWxheW91dC11dGlsaXR5JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc21hcnQtY29tcG9uZW50LWxheW91dCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9zbWFydC1jb21wb25lbnQtbGF5b3V0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc21hcnQtY29tcG9uZW50LWxheW91dC5jb21wb25lbnQuY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFNtYXJ0Q29tcG9uZW50TGF5b3V0Q29tcG9uZW50XG4gIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgQWZ0ZXJWaWV3Q2hlY2tlZCwgT25EZXN0cm95LCBPbkNoYW5nZXNcbntcbiAgcHJvdGVjdGVkIF9kZXN0cm95JDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgQElucHV0KCkgc21hcnRDb21wb25lbnRMYXlvdXQ/OiBTbWFydENvbXBvbmVudExheW91dERlZmluaXRpb247XG4gIEBJbnB1dCgpIHBhcmVudExheW91dENvbXBvbmVudD86IFNtYXJ0Q29tcG9uZW50TGF5b3V0Q29tcG9uZW50O1xuICBASW5wdXQoKSBwYXJlbnRTbWFydENvbXBvbmVudDogYW55O1xuICBASW5wdXQoKSBncmlkUm93OiBhbnk7XG5cbiAgYXBwUmVmOiBBcHBsaWNhdGlvblJlZiA9IGluamVjdChBcHBsaWNhdGlvblJlZik7XG4gIGZvcm1SZWYgPSB2aWV3Q2hpbGQoU21hcnRmb3JtQ29tcG9uZW50KTtcbiAgb25Gb3JtQ2hhbmdlID0gZWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBmb3JtID0gdGhpcy5mb3JtUmVmKCk7XG4gICAgaWYgKHRoaXMuc21hcnRGb3JtICYmIGZvcm0gJiYgdGhpcy5wYXJlbnRTbWFydENvbXBvbmVudCkge1xuICAgICAgdGhpcy5wYXJlbnRTbWFydENvbXBvbmVudC5oYW5kbGVEYXRhQ2hhbmdlU3Vic2NyaXB0aW9ucyhmb3JtKTtcbiAgICAgIHRoaXMucGFyZW50U21hcnRDb21wb25lbnQuaGFuZGxlTGF5b3V0VXBsb2FkQ2FsbGJhY2soZm9ybSk7XG4gICAgICBmb3JtLm1hcmtBbGxXaWRnZXRzRm9yQ2hhbmdlRGV0ZWN0aW9uKCk7XG4gICAgfVxuICB9KTtcblxuICBwcml2YXRlIHBlbmRpbmdPcnBoYW5DbGVhbnVwOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmRhdGEtdGVzdGlkJylcbiAgZ2V0IHRlc3RJZCgpOiBzdHJpbmcgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5zbWFydENvbXBvbmVudExheW91dD8uaWRlbnRpZmllciA/PyBudWxsO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5ob3Jpem9udGFsJylcbiAgZ2V0IGlzSG9yaXpvbnRhbCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5zbWFydENvbXBvbmVudExheW91dD8udHlwZSA9PT0gdGhpcy50eXBlKCkuQ09OVEFJTkVSICYmXG4gICAgICB0aGlzLnNtYXJ0Q29tcG9uZW50TGF5b3V0Py5kaXJlY3Rpb24gPT09ICdob3Jpem9udGFsJ1xuICAgICk7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnZlcnRpY2FsJylcbiAgZ2V0IGlzVmVydGljYWwoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuc21hcnRDb21wb25lbnRMYXlvdXQ/LnR5cGUgPT09IHRoaXMudHlwZSgpLkNPTlRBSU5FUiAmJlxuICAgICAgKHRoaXMuc21hcnRDb21wb25lbnRMYXlvdXQ/LmRpcmVjdGlvbiA/PyAndmVydGljYWwnKSA9PT0gJ3ZlcnRpY2FsJ1xuICAgICk7XG4gIH1cblxuICBjdXJyZW50TGF5b3V0PzogU21hcnRDb21wb25lbnRMYXlvdXREZWZpbml0aW9uO1xuXG4gIHV1aWQ/OiBzdHJpbmc7XG5cbiAgQFZpZXdDaGlsZHJlbignZm9ybScpXG4gIHNtYXJ0Rm9ybUxpc3QhOiBRdWVyeUxpc3Q8U21hcnRmb3JtQ29tcG9uZW50PjtcbiAgc21hcnRGb3JtQ29tcG9uZW50PzogU21hcnRmb3JtQ29tcG9uZW50O1xuICBzbWFydEZvcm0/OiBTbWFydEZvcm07XG5cbiAgQFZpZXdDaGlsZHJlbignZ3JpZCcpXG4gIHNtYXJ0R3JpZExpc3QhOiBRdWVyeUxpc3Q8U21hcnRHcmlkQ29tcG9uZW50PjtcbiAgc21hcnRHcmlkQ29tcG9uZW50PzogU21hcnRHcmlkQ29tcG9uZW50O1xuICBzbWFydEdyaWQ/OiBTbWFydEdyaWQ7XG5cbiAgQFZpZXdDaGlsZHJlbignbWFwJylcbiAgc21hcnRNYXBMaXN0ITogUXVlcnlMaXN0PFNtYXJ0TWFwQ29tcG9uZW50PjtcbiAgc21hcnRNYXBDb21wb25lbnQ/OiBTbWFydE1hcENvbXBvbmVudDtcbiAgbWFwSWQ/OiBzdHJpbmc7XG5cbiAgQFZpZXdDaGlsZHJlbignZGlhZ3JhbScpXG4gIHNtYXJ0RGlhZ3JhbUxpc3QhOiBRdWVyeUxpc3Q8U21hcnREaWFncmFtQ29tcG9uZW50PjtcbiAgc21hcnREaWFncmFtQ29tcG9uZW50PzogU21hcnREaWFncmFtQ29tcG9uZW50O1xuICBzbWFydERpYWdyYW1JZD86IHN0cmluZztcblxuICBAVmlld0NoaWxkcmVuKCdmaWx0ZXInKVxuICBzbWFydEZpbHRlckxpc3QhOiBRdWVyeUxpc3Q8U21hcnRGaWx0ZXJDb21wb25lbnQ+O1xuICBzbWFydEZpbHRlckNvbXBvbmVudD86IFNtYXJ0RmlsdGVyQ29tcG9uZW50O1xuICBzbWFydEZpbHRlcj86IFNtYXJ0RmlsdGVyO1xuXG4gIEBWaWV3Q2hpbGRyZW4oJ3Rvb2xiYXInKVxuICB0b29sYmFyTGlzdCE6IFF1ZXJ5TGlzdDxVaUFjdGlvblRvb2xiYXJDb21wb25lbnQ+O1xuICB0b29sYmFyPzogVWlBY3Rpb25Ub29sYmFyQ29tcG9uZW50O1xuICB0b29sYmFySWQ/OiBzdHJpbmc7XG4gIHRvb2xiYXJQcm9wZXJ0ZXM/OiBUb29sYmFyUHJvcGVydGllcztcblxuICB0cmVlU2VydmljZT86IFNtYXJ0dHJlZUdlbmVyaWNTZXJ2aWNlO1xuXG4gIGV4cGFuZGFibGVTZWN0aW9uPzogRXhwYW5kYWJsZVNlY3Rpb248U21hcnRDb21wb25lbnRMYXlvdXREZWZpbml0aW9uPjtcblxuICBlbWJlZGRlZFNsb3RBY3RpdmU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgZW1iZWRkZWRTbG90Q29udGFpbmVySWQ/OiBzdHJpbmc7XG4gIF9lbWJlZGRlZFNsb3RWY1JlZj86IFZpZXdDb250YWluZXJSZWY7XG5cbiAgQFZpZXdDaGlsZCgnZW1iZWRkZWRTbG90JywgeyByZWFkOiBWaWV3Q29udGFpbmVyUmVmLCBzdGF0aWM6IGZhbHNlIH0pXG4gIHNldCBlbWJlZGRlZFNsb3RWY1JlZlNldHRlcih2Y1JlZjogVmlld0NvbnRhaW5lclJlZiB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuX2VtYmVkZGVkU2xvdFZjUmVmID0gdmNSZWY7XG4gICAgaWYgKHZjUmVmKSB7XG4gICAgICB0aGlzLnRyeVJlZ2lzdGVyRW1iZWRkZWRTbG90KCk7XG4gICAgfVxuICB9XG5cbiAgQFZpZXdDaGlsZHJlbihFeHBhbmRhYmxlU2VjdGlvbkNvbXBvbmVudClcbiAgZXhwYW5kYWJsZUNvbXBvbmVudHMhOiBRdWVyeUxpc3Q8RXhwYW5kYWJsZVNlY3Rpb25Db21wb25lbnQ+O1xuXG4gIEBWaWV3Q2hpbGRyZW4oU21hcnRDb21wb25lbnRMYXlvdXRDb21wb25lbnQpXG4gIGNvbXBvbmVudHMhOiBRdWVyeUxpc3Q8U21hcnRDb21wb25lbnRMYXlvdXRDb21wb25lbnQ+O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgbGF5b3V0U2VydmljZTogU21hcnRmb3JtTGF5b3V0RGVmaW5pdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSB2aWV3Q29udGV4dDogU21hcnRWaWV3Q29udGV4dFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBlbGVtZW50PzogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIHJlbmRlcmVyPzogUmVuZGVyZXIyXG4gICkge31cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc21hcnRGb3JtTGlzdD8uZmlyc3QpIHtcbiAgICAgIHRoaXMuc2V0Rm9ybUNvbXBvbmVudCh0aGlzLnNtYXJ0Rm9ybUxpc3Q/LmZpcnN0KTtcbiAgICB9XG4gICAgdGhpcy5zbWFydEZvcm1MaXN0LmNoYW5nZXNcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCkpXG4gICAgICAuc3Vic2NyaWJlKChsaXN0OiBRdWVyeUxpc3Q8U21hcnRmb3JtQ29tcG9uZW50PikgPT4ge1xuICAgICAgICB0aGlzLnNldEZvcm1Db21wb25lbnQobGlzdC5maXJzdCk7XG4gICAgICB9KTtcblxuICAgIGlmICh0aGlzLnNtYXJ0R3JpZExpc3Q/LmZpcnN0KSB7XG4gICAgICB0aGlzLnNldEdyaWRDb21wb25lbnQodGhpcy5zbWFydEdyaWRMaXN0Py5maXJzdCk7XG4gICAgfVxuICAgIHRoaXMuc21hcnRHcmlkTGlzdC5jaGFuZ2VzXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpKVxuICAgICAgLnN1YnNjcmliZSgobGlzdDogUXVlcnlMaXN0PFNtYXJ0R3JpZENvbXBvbmVudD4pID0+IHtcbiAgICAgICAgdGhpcy5zZXRHcmlkQ29tcG9uZW50KGxpc3QuZmlyc3QpO1xuICAgICAgfSk7XG5cbiAgICBpZiAodGhpcy5zbWFydE1hcExpc3Q/LmZpcnN0KSB7XG4gICAgICB0aGlzLnNldE1hcENvbXBvbmVudCh0aGlzLnNtYXJ0TWFwTGlzdD8uZmlyc3QpO1xuICAgIH1cbiAgICB0aGlzLnNtYXJ0TWFwTGlzdC5jaGFuZ2VzLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSkuc3Vic2NyaWJlKChtYXBzKSA9PiB7XG4gICAgICB0aGlzLnNldE1hcENvbXBvbmVudChtYXBzLmZpcnN0KTtcbiAgICB9KTtcblxuICAgIGlmICh0aGlzLnNtYXJ0RGlhZ3JhbUxpc3Q/LmZpcnN0KSB7XG4gICAgICB0aGlzLnNldERpYWdyYW1Db21wb25lbnQodGhpcy5zbWFydERpYWdyYW1MaXN0Py5maXJzdCk7XG4gICAgfVxuICAgIHRoaXMuc21hcnREaWFncmFtTGlzdC5jaGFuZ2VzLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSkuc3Vic2NyaWJlKChkaWFncmFtcykgPT4ge1xuICAgICAgdGhpcy5zZXREaWFncmFtQ29tcG9uZW50KGRpYWdyYW1zLmZpcnN0KTtcbiAgICB9KTtcblxuICAgIHRoaXMuc21hcnRGaWx0ZXJMaXN0LmNoYW5nZXNcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCkpXG4gICAgICAuc3Vic2NyaWJlKChsaXN0OiBRdWVyeUxpc3Q8U21hcnRGaWx0ZXJDb21wb25lbnQ+KSA9PiB7XG4gICAgICAgIGlmICghdGhpcy5zbWFydEZpbHRlckNvbXBvbmVudCkge1xuICAgICAgICAgIHRoaXMuc21hcnRGaWx0ZXJDb21wb25lbnQgPSBsaXN0LmZpcnN0O1xuICAgICAgICAgIHRoaXMuYmluZEZpbHRlcigpO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgIGlmICh0aGlzLnRvb2xiYXJMaXN0Py5maXJzdCkge1xuICAgICAgdGhpcy5zZXRUb29sYmFyQ29tcG9uZW50KHRoaXMudG9vbGJhckxpc3Q/LmZpcnN0KTtcbiAgICB9XG4gICAgdGhpcy50b29sYmFyTGlzdC5jaGFuZ2VzXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpKVxuICAgICAgLnN1YnNjcmliZSgobGlzdDogUXVlcnlMaXN0PFVpQWN0aW9uVG9vbGJhckNvbXBvbmVudD4pID0+IHtcbiAgICAgICAgdGhpcy5zZXRUb29sYmFyQ29tcG9uZW50KGxpc3QuZmlyc3QpO1xuICAgICAgfSk7XG4gICAgdGhpcy5zZXRVcCgpO1xuICB9XG5cbiAgbmdBZnRlclZpZXdDaGVja2VkKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnBlbmRpbmdPcnBoYW5DbGVhbnVwKSB7XG4gICAgICB0aGlzLnBlbmRpbmdPcnBoYW5DbGVhbnVwID0gZmFsc2U7XG4gICAgICB0aGlzLnZpZXdDb250ZXh0LmNsZWFudXBPcnBoYW5lZEVtYmVkZGVkVmlld3ModGhpcy51dWlkISk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZW1iZWRkZWRTbG90Q29udGFpbmVySWQgJiYgdGhpcy51dWlkKSB7XG4gICAgICB0aGlzLnZpZXdDb250ZXh0LnVucmVnaXN0ZXJFbWJlZGRlZFNsb3QodGhpcy51dWlkLCB0aGlzLmVtYmVkZGVkU2xvdENvbnRhaW5lcklkKTtcbiAgICB9XG4gICAgdGhpcy5fZGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMuX2Rlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgdGhpcy5zZXRVcCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRVcCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMucGFyZW50U21hcnRDb21wb25lbnQgfHwgIXRoaXMuc21hcnRDb21wb25lbnRMYXlvdXQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGRlZXBFcXVhbCh0aGlzLnNtYXJ0Q29tcG9uZW50TGF5b3V0LCB0aGlzLmN1cnJlbnRMYXlvdXQpKSB7XG4gICAgICAvLyBubyBsYXlvdXQgY2hhbmdlLCBrZWVwIGN1cnJlbnQgc3RhdGVcbiAgICAgIHRoaXMuc21hcnRDb21wb25lbnRMYXlvdXQgPSB0aGlzLmN1cnJlbnRMYXlvdXQ7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIC8vIGxheW91dCBjaGFuZ2VkLCByZW5kZXIsIGJ1dCBzYXZlIGN1cnJlbnRcbiAgICAvLyB0aGlzLmN1cnJlbnRMYXlvdXQgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMuc21hcnRDb21wb25lbnRMYXlvdXQpKTtcblxuICAgIFNtYXJ0Q29tcG9uZW50TGF5b3V0VXRpbGl0eS5jbGVhckZvcm1IYW5kbGVycyh0aGlzKTtcbiAgICB0aGlzLmN1cnJlbnRMYXlvdXQgPSB0aGlzLnNtYXJ0Q29tcG9uZW50TGF5b3V0O1xuXG4gICAgdGhpcy51dWlkID0gdGhpcy5wYXJlbnRTbWFydENvbXBvbmVudC51dWlkO1xuICAgIHRoaXMudHJlZVNlcnZpY2UgPSB0aGlzLnBhcmVudFNtYXJ0Q29tcG9uZW50LnNtYXJ0VHJlZVNlcnZpY2U7XG5cbiAgICAvLyBUb3AtbGV2ZWwgbGF5b3V0OiBkZXRhY2ggZW1iZWRkZWQgdmlld3MgYmVmb3JlIHRoZSB0cmVlIGlzIHJlLXJlbmRlcmVkLFxuICAgIC8vIHNvIHRoZXkgc3Vydml2ZSAqbmdGb3IgY29tcG9uZW50IGRlc3RydWN0aW9uXG4gICAgaWYgKCF0aGlzLnBhcmVudExheW91dENvbXBvbmVudCAmJiB0aGlzLnV1aWQpIHtcbiAgICAgIHRoaXMudmlld0NvbnRleHQuZGV0YWNoQWxsRW1iZWRkZWRWaWV3cyh0aGlzLnV1aWQpO1xuICAgICAgdGhpcy5wZW5kaW5nT3JwaGFuQ2xlYW51cCA9IHRydWU7XG4gICAgfVxuXG4gICAgdGhpcy5zbWFydENvbXBvbmVudExheW91dD8uZGlyZWN0aW9uO1xuXG4gICAgLy8gdGhlIG5hdHVyZSBvZiB0aGUgbGF5b3V0IG1pZ2h0IGhhdmUgY2hhbmdlZCAoZS5nLiBmcm9tIEdSSUQgdG8gRk9STSksIHdlIG51bGwgb3V0IGV2ZXJ5XG4gICAgLy8gdGVtcGxhdGUtcmVsYXRlZCBlbGVtZW50LCBzbyBubyBzdGFsZSBkYXRhIGlzIGxlZnQgb24gc2NyZWVuOlxuICAgIHRoaXMuZXhwYW5kYWJsZVNlY3Rpb24gPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5zbWFydEZvcm0gPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5zbWFydEZvcm1Db21wb25lbnQgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5zbWFydEdyaWQgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5zbWFydEdyaWRDb21wb25lbnQgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5zbWFydEZpbHRlciA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLnNtYXJ0RmlsdGVyQ29tcG9uZW50ID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuc21hcnRHcmlkID0gdW5kZWZpbmVkO1xuICAgIHRoaXMudG9vbGJhcklkID0gdW5kZWZpbmVkO1xuICAgIHRoaXMudG9vbGJhciA9IHVuZGVmaW5lZDtcbiAgICAvLyBudWxsIG91dCB0b29sYmFyP1xuICAgIHRoaXMubWFwSWQgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5zbWFydERpYWdyYW1JZCA9IHVuZGVmaW5lZDtcbiAgICBpZiAodGhpcy5lbWJlZGRlZFNsb3RDb250YWluZXJJZCAmJiB0aGlzLnV1aWQpIHtcbiAgICAgIHRoaXMudmlld0NvbnRleHQudW5yZWdpc3RlckVtYmVkZGVkU2xvdCh0aGlzLnV1aWQsIHRoaXMuZW1iZWRkZWRTbG90Q29udGFpbmVySWQpO1xuICAgIH1cbiAgICB0aGlzLmVtYmVkZGVkU2xvdEFjdGl2ZSA9IGZhbHNlO1xuICAgIHRoaXMuZW1iZWRkZWRTbG90Q29udGFpbmVySWQgPSB1bmRlZmluZWQ7XG5cbiAgICBpZiAodGhpcy5zbWFydENvbXBvbmVudExheW91dD8uZXhwYW5kYWJsZSkge1xuICAgICAgdGhpcy5jb25zdHJ1Y3RFeHBhbmRhYmxlU2VjdGlvbigpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5zbWFydENvbXBvbmVudExheW91dD8udHlwZSA9PT0gQ29tcG9uZW50VHlwZS5GT1JNKSB7XG4gICAgICB0aGlzLmNvbnN0cnVjdEZvcm0oKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuc21hcnRDb21wb25lbnRMYXlvdXQ/LnR5cGUgPT09IENvbXBvbmVudFR5cGUuV0lER0VUKSB7XG4gICAgICBpZiAodGhpcy5zbWFydENvbXBvbmVudExheW91dC53aWRnZXQ/LnR5cGUgPT09IENvbXBvbmVudFdpZGdldFR5cGUuR1JJRCkge1xuICAgICAgICB0aGlzLmNvbnN0cnVjdEdyaWQoKTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5zbWFydENvbXBvbmVudExheW91dC53aWRnZXQ/LnR5cGUgPT09IENvbXBvbmVudFdpZGdldFR5cGUuRklMVEVSKSB7XG4gICAgICAgIGNvbnNvbGUud2FybignQ29tcG9uZW50V2lkZ2V0VHlwZS5GSUxURVIgaXMgbm90IHN1cHBvcnRlZCcpO1xuICAgICAgICAvLyB0aGlzLmNvbnN0cnVjdEZpbHRlcigpO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLnNtYXJ0Q29tcG9uZW50TGF5b3V0LndpZGdldD8udHlwZSA9PT0gQ29tcG9uZW50V2lkZ2V0VHlwZS5UUkVFKSB7XG4gICAgICAgIHRoaXMuY29uc3RydWN0VHJlZSgpO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLnNtYXJ0Q29tcG9uZW50TGF5b3V0LndpZGdldD8udHlwZSA9PT0gQ29tcG9uZW50V2lkZ2V0VHlwZS5UT09MQkFSKSB7XG4gICAgICAgIHRoaXMuY29uc3RydWN0VG9vbGJhcigpO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLnNtYXJ0Q29tcG9uZW50TGF5b3V0LndpZGdldD8udHlwZSA9PT0gQ29tcG9uZW50V2lkZ2V0VHlwZS5NQVApIHtcbiAgICAgICAgdGhpcy5jb25zdHJ1Y3RNYXAoKTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5zbWFydENvbXBvbmVudExheW91dC53aWRnZXQ/LnR5cGUgPT09IENvbXBvbmVudFdpZGdldFR5cGUuRElBR1JBTSkge1xuICAgICAgICB0aGlzLmNvbnN0cnVjRGlhZ3JhbSgpO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLnNtYXJ0Q29tcG9uZW50TGF5b3V0LndpZGdldD8udHlwZSA9PT0gQ29tcG9uZW50V2lkZ2V0VHlwZS5FTUJFRERFRF9TTE9UKSB7XG4gICAgICAgIHRoaXMuY29uc3RydWN0RW1iZWRkZWRTbG90KCk7XG4gICAgICB9XG5cbiAgICAgIGlmICghdGhpcy5wYXJlbnRMYXlvdXRDb21wb25lbnQpIHtcbiAgICAgICAgLy8gb25seSB0b3AgbGV2ZWwgY29tcG9uZW50IHNob3VsZCBjYWxsIGluaXQgYWN0aW9uc1xuICAgICAgICB0aGlzLnBhcmVudFNtYXJ0Q29tcG9uZW50LmluaXRBY3Rpb25zKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgU21hcnRTdHlsZVV0aWxpdHkuYXBwbHlTdHlsZSh0aGlzLnNtYXJ0Q29tcG9uZW50TGF5b3V0LnN0eWxlLCB0aGlzLmVsZW1lbnQsIHRoaXMucmVuZGVyZXIpO1xuICB9XG5cbiAgdHlwZSgpOiB0eXBlb2YgQ29tcG9uZW50VHlwZSB7XG4gICAgcmV0dXJuIENvbXBvbmVudFR5cGU7XG4gIH1cblxuICBjb25zdHJ1Y3RFeHBhbmRhYmxlU2VjdGlvbigpOiB2b2lkIHtcbiAgICBsZXQgZGF0YTogU21hcnRDb21wb25lbnRMYXlvdXREZWZpbml0aW9uID0geyAuLi50aGlzLnNtYXJ0Q29tcG9uZW50TGF5b3V0ISB9O1xuICAgIGRhdGEuZXhwYW5kYWJsZSA9IGZhbHNlO1xuXG4gICAgdGhpcy5leHBhbmRhYmxlU2VjdGlvbiA9IHtcbiAgICAgIHRpdGxlOiB0aGlzLnNtYXJ0Q29tcG9uZW50TGF5b3V0Py5leHBhbmRhYmxlU2VjdGlvbkxhYmVsID8/ICcnLFxuICAgICAgaW5wdXRzOiBuZXcgTWFwPHN0cmluZywgYW55PihbXG4gICAgICAgIFsnc21hcnRDb21wb25lbnRMYXlvdXQnLCBkYXRhXSxcbiAgICAgICAgWydwYXJlbnRTbWFydENvbXBvbmVudCcsIHRoaXMucGFyZW50U21hcnRDb21wb25lbnRdLFxuICAgICAgICBbJ3BhcmVudExheW91dENvbXBvbmVudCcsIHRoaXMucGFyZW50TGF5b3V0Q29tcG9uZW50XSxcbiAgICAgIF0pLFxuICAgICAgaGVhZGVyVG9vbGJhcklkOiB0aGlzLnNtYXJ0Q29tcG9uZW50TGF5b3V0Py5leHBhbmRhYmxlU2VjdGlvbkhlYWRlclRvb2xiYXJJZCxcbiAgICAgIGN1c3RvbUNvbXBvbmVudDogU21hcnRDb21wb25lbnRMYXlvdXRDb21wb25lbnQsXG4gICAgfTtcbiAgfVxuXG4gIGNvbnN0cnVjdEZvcm0oKTogdm9pZCB7XG4gICAgY29uc3Qgd2lkZ2V0cyA9IHRoaXMubGF5b3V0U2VydmljZS5yZW5kZXIoe1xuICAgICAgbGF5b3V0RGVmaW5pdGlvbnM6IHRoaXMuc21hcnRDb21wb25lbnRMYXlvdXQ/LmZvcm0sXG4gICAgfSk7XG5cbiAgICBpZiAodGhpcy5ncmlkUm93ICYmICF0aGlzLmdyaWRSb3cudmFsdWVTZXQpIHtcbiAgICAgIHRoaXMuZ3JpZFJvdy52YWx1ZVNldHMgPSB0aGlzLnBhcmVudFNtYXJ0Q29tcG9uZW50Lm1vZGVsLnZhbHVlU2V0cztcbiAgICB9XG4gICAgdGhpcy5zbWFydEZvcm0gPSB7XG4gICAgICBkaXJlY3Rpb246IHRoaXMuZ2V0Rm9ybUxheW91dCgpLFxuICAgICAgY29tcG9uZW50TW9kZWw6IHRoaXMuZ3JpZFJvdyA/IHRoaXMuZ3JpZFJvdyA6IHRoaXMucGFyZW50U21hcnRDb21wb25lbnQ/Lm1vZGVsLFxuICAgICAgd2lkZ2V0cyxcbiAgICB9O1xuXG4gICAgdGhpcy5iaW5kRm9ybSgpO1xuICB9XG5cbiAgZ2V0Rm9ybUxheW91dCgpOiBTbWFydEZvcm1XaWRnZXREaXJlY3Rpb24ge1xuICAgIGlmICh0aGlzLnNtYXJ0Q29tcG9uZW50TGF5b3V0Py5kaXJlY3Rpb24pIHtcbiAgICAgIHJldHVybiB0aGlzLnNtYXJ0Q29tcG9uZW50TGF5b3V0Py5kaXJlY3Rpb24gPT09IExheW91dERpcmVjdGlvbi5IT1JJWk9OVEFMXG4gICAgICAgID8gU21hcnRGb3JtV2lkZ2V0RGlyZWN0aW9uLlJPV1xuICAgICAgICA6IFNtYXJ0Rm9ybVdpZGdldERpcmVjdGlvbi5DT0w7XG4gICAgfVxuICAgIHJldHVybiBTbWFydEZvcm1XaWRnZXREaXJlY3Rpb24uQ09MO1xuICB9XG5cbiAgc2V0Rm9ybUNvbXBvbmVudChjb21wOiBTbWFydGZvcm1Db21wb25lbnQpIHtcbiAgICBpZiAoIXRoaXMuc21hcnRGb3JtQ29tcG9uZW50KSB7XG4gICAgICB0aGlzLnNtYXJ0Rm9ybUNvbXBvbmVudCA9IGNvbXA7XG4gICAgICB0aGlzLmJpbmRGb3JtKCk7XG4gICAgfVxuICB9XG5cbiAgYmluZEZvcm0oKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucGFyZW50U21hcnRDb21wb25lbnQ/LnVzZVF1ZXJ5TGlzdHMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMuc21hcnRGb3JtICYmIHRoaXMuc21hcnRGb3JtQ29tcG9uZW50KSB7XG4gICAgICB0aGlzLnBhcmVudFNtYXJ0Q29tcG9uZW50Py5hZGRGb3JtKFxuICAgICAgICAvLyB1bmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIGZvcm1cbiAgICAgICAgYGZvcm1fJHt0aGlzLm1ha2VpZCg1KX1gLFxuICAgICAgICB0aGlzLnNtYXJ0Rm9ybSxcbiAgICAgICAgdGhpcy5zbWFydEZvcm1Db21wb25lbnRcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgbWFrZWlkKGxlbmd0aDogbnVtYmVyKSB7XG4gICAgbGV0IHJlc3VsdCA9ICcnO1xuICAgIGNvbnN0IGNoYXJhY3RlcnMgPSAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODknO1xuICAgIGNvbnN0IGNoYXJhY3RlcnNMZW5ndGggPSBjaGFyYWN0ZXJzLmxlbmd0aDtcbiAgICBsZXQgY291bnRlciA9IDA7XG4gICAgd2hpbGUgKGNvdW50ZXIgPCBsZW5ndGgpIHtcbiAgICAgIHJlc3VsdCArPSBjaGFyYWN0ZXJzLmNoYXJBdChNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBjaGFyYWN0ZXJzTGVuZ3RoKSk7XG4gICAgICBjb3VudGVyICs9IDE7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBjb25zdHJ1Y3RHcmlkKCk6IHZvaWQge1xuICAgIHRoaXMuc21hcnRHcmlkID0ge1xuICAgICAgZ3JpZElkZW50aWZpZXI6IHRoaXMuc21hcnRDb21wb25lbnRMYXlvdXQ/LndpZGdldD8uaWRlbnRpZmllciEsXG4gICAgICBncmlkTW9kZWw6IHtcbiAgICAgICAgcGFnZToge30sXG4gICAgICB9LFxuICAgICAgb3B0aW9uczoge1xuICAgICAgICByb3dVaUFjdGlvblR5cGU6IEdyaWRVaUFjdGlvblR5cGUuUE9QVVBfTUVOVSxcbiAgICAgIH0sXG4gICAgICBsYXlvdXREZWY6IFNtYXJ0TGF5b3V0RGVmLlRBQkxFLFxuICAgICAgcGFnaW5hdG9yOiB0cnVlLFxuICAgIH07XG5cbiAgICB0aGlzLmJpbmRHcmlkKCk7XG4gIH1cblxuICBzZXRHcmlkQ29tcG9uZW50KGNvbXA6IFNtYXJ0R3JpZENvbXBvbmVudCkge1xuICAgIGlmICghdGhpcy5zbWFydEdyaWRDb21wb25lbnQpIHtcbiAgICAgIHRoaXMuc21hcnRHcmlkQ29tcG9uZW50ID0gY29tcDtcbiAgICAgIHRoaXMuYmluZEdyaWQoKTtcbiAgICB9XG4gIH1cblxuICBiaW5kR3JpZCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5wYXJlbnRTbWFydENvbXBvbmVudD8udXNlUXVlcnlMaXN0cykge1xuICAgICAgaWYgKHRoaXMuc21hcnRHcmlkICYmIHRoaXMuc21hcnRHcmlkQ29tcG9uZW50ICYmIHRoaXMucGFyZW50U21hcnRDb21wb25lbnQpIHtcbiAgICAgICAgdGhpcy5wYXJlbnRTbWFydENvbXBvbmVudC5zZXR1cEdyaWRTZXJ2aWNlcyh0aGlzLnNtYXJ0R3JpZENvbXBvbmVudCk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0aGlzLnNtYXJ0R3JpZCAmJiB0aGlzLnNtYXJ0R3JpZENvbXBvbmVudCkge1xuICAgICAgdGhpcy5zbWFydEdyaWQgPSB0aGlzLnBhcmVudFNtYXJ0Q29tcG9uZW50Py5hZGRHcmlkKFxuICAgICAgICB0aGlzLnNtYXJ0R3JpZCxcbiAgICAgICAge1xuICAgICAgICAgIHJvd1VpQWN0aW9uVHlwZTogR3JpZFVpQWN0aW9uVHlwZS5QT1BVUF9NRU5VLFxuICAgICAgICB9LFxuICAgICAgICBmYWxzZSxcbiAgICAgICAgdGhpcy5zbWFydEdyaWRDb21wb25lbnRcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgY29uc3RydWN0TWFwKCkge1xuICAgIHRoaXMubWFwSWQgPSB0aGlzLnNtYXJ0Q29tcG9uZW50TGF5b3V0Py53aWRnZXQ/LmlkZW50aWZpZXI7XG4gICAgdGhpcy5iaW5kTWFwKCk7XG4gIH1cblxuICBjb25zdHJ1Y0RpYWdyYW0oKSB7XG4gICAgdGhpcy5zbWFydERpYWdyYW1JZCA9IHRoaXMuc21hcnRDb21wb25lbnRMYXlvdXQ/LndpZGdldD8uaWRlbnRpZmllcjtcbiAgICB0aGlzLmJpbmREaWFncmFtKCk7XG4gIH1cblxuICBzZXRNYXBDb21wb25lbnQoY29tcDogU21hcnRNYXBDb21wb25lbnQpIHtcbiAgICBpZiAoIXRoaXMuc21hcnRNYXBDb21wb25lbnQpIHtcbiAgICAgIHRoaXMuc21hcnRNYXBDb21wb25lbnQgPSBjb21wO1xuICAgICAgdGhpcy5iaW5kTWFwKCk7XG4gICAgfVxuICB9XG5cbiAgc2V0RGlhZ3JhbUNvbXBvbmVudChjb21wOiBTbWFydERpYWdyYW1Db21wb25lbnQpIHtcbiAgICBpZiAoIXRoaXMuc21hcnREaWFncmFtQ29tcG9uZW50KSB7XG4gICAgICB0aGlzLnNtYXJ0RGlhZ3JhbUNvbXBvbmVudCA9IGNvbXA7XG4gICAgICB0aGlzLmJpbmREaWFncmFtKCk7XG4gICAgfVxuICB9XG5cbiAgYmluZE1hcCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5wYXJlbnRTbWFydENvbXBvbmVudC51c2VRdWVyeUxpc3RzKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc29sZS53YXJuKCdNYXAgY29tcG9uZW50cyBhcmUgb25seSBzdXBwb3J0ZWQgdGhyb3VnaCBRdWVyeUxpc3RzIScpO1xuICB9XG5cbiAgYmluZERpYWdyYW0oKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucGFyZW50U21hcnRDb21wb25lbnQudXNlUXVlcnlMaXN0cykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnNvbGUud2FybignRGlhZ3JhbSBjb21wb25lbnRzIGFyZSBvbmx5IHN1cHBvcnRlZCB0aHJvdWdoIFF1ZXJ5TGlzdHMhJyk7XG4gIH1cblxuICBzZXRUb29sYmFyQ29tcG9uZW50KGNvbXA6IFVpQWN0aW9uVG9vbGJhckNvbXBvbmVudCkge1xuICAgIHRoaXMudG9vbGJhciA9IGNvbXA7XG4gIH1cblxuICAvLyBOT1QgVVNFRCwgRE9FU04nVCBXT1JLXG4gIC8vIGNvbnN0cnVjdEZpbHRlcigpOiB2b2lkIHtcbiAgLy8gICB0aGlzLnNtYXJ0RmlsdGVyID0gKHRoaXMuc21hcnRDb21wb25lbnRMYXlvdXQhLnBhcmVudENvbXBvbmVudCBhcyBhbnkpLmFkZEZpbHRlcihcbiAgLy8gICAgIGBmaWx0ZXJfJHt0aGlzLm1ha2VpZCg1KX1gLFxuICAvLyAgICAgdGhpcy5zbWFydENvbXBvbmVudExheW91dD8ud2lkZ2V0Py5maWx0ZXJFeHByZXNzaW9uRmllbGRMaXN0LFxuICAvLyAgICAgdGhpcy5zbWFydENvbXBvbmVudExheW91dD8ud2lkZ2V0Py5maWx0ZXJUeXBlLFxuICAvLyAgICAgdGhpcy5zbWFydEZpbHRlckNvbXBvbmVudFxuICAvLyAgICk7XG4gIC8vIH1cblxuICBiaW5kRmlsdGVyKCk6IHZvaWQge1xuICAgIC8vIFRPRE9cbiAgfVxuXG4gIGNvbnN0cnVjdFRyZWUoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucGFyZW50U21hcnRDb21wb25lbnQ/LnVzZVF1ZXJ5TGlzdHMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5wYXJlbnRTbWFydENvbXBvbmVudC5zZXRVcERlZmF1bHRUcmVlKHRoaXMuc21hcnRDb21wb25lbnRMYXlvdXQ/LndpZGdldD8uaWRlbnRpZmllcik7XG4gICAgdGhpcy50cmVlU2VydmljZT8uaW5pdGlhbGl6ZSgpO1xuICB9XG5cbiAgY29uc3RydWN0VG9vbGJhcigpOiB2b2lkIHtcbiAgICBsZXQgdG9vbGJhcklkID0gdGhpcy5zbWFydENvbXBvbmVudExheW91dD8ud2lkZ2V0Py5pZGVudGlmaWVyO1xuICAgIGlmICh0aGlzLnRvb2xiYXJJZCAhPT0gdG9vbGJhcklkKSB7XG4gICAgICB0aGlzLnRvb2xiYXJJZCA9IHRvb2xiYXJJZDtcbiAgICB9XG4gICAgbGV0IHByb3BlcnRpZXMgPSB0aGlzLnNtYXJ0Q29tcG9uZW50TGF5b3V0Py53aWRnZXQ/LnByb3BlcnRpZXM7XG4gICAgaWYgKHByb3BlcnRpZXMgJiYgcHJvcGVydGllc1sndG9vbGJhcl9wcm9wZXJ0aWVzJ10pIHtcbiAgICAgIHRoaXMudG9vbGJhclByb3BlcnRlcyA9IHByb3BlcnRpZXNbJ3Rvb2xiYXJfcHJvcGVydGllcyddO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0cnVjdEVtYmVkZGVkU2xvdCgpOiB2b2lkIHtcbiAgICB0aGlzLmVtYmVkZGVkU2xvdENvbnRhaW5lcklkID0gdGhpcy5zbWFydENvbXBvbmVudExheW91dD8ud2lkZ2V0Py5pZGVudGlmaWVyO1xuICAgIHRoaXMuZW1iZWRkZWRTbG90QWN0aXZlID0gdHJ1ZTtcbiAgICB0aGlzLnRyeVJlZ2lzdGVyRW1iZWRkZWRTbG90KCk7XG4gIH1cblxuICBwcml2YXRlIHRyeVJlZ2lzdGVyRW1iZWRkZWRTbG90KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmVtYmVkZGVkU2xvdENvbnRhaW5lcklkICYmIHRoaXMudXVpZCAmJiB0aGlzLl9lbWJlZGRlZFNsb3RWY1JlZikge1xuICAgICAgdGhpcy52aWV3Q29udGV4dC5yZWdpc3RlckVtYmVkZGVkU2xvdChcbiAgICAgICAgdGhpcy51dWlkLFxuICAgICAgICB0aGlzLmVtYmVkZGVkU2xvdENvbnRhaW5lcklkLFxuICAgICAgICB0aGlzLl9lbWJlZGRlZFNsb3RWY1JlZlxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICB1cGRhdGVVdWlkKG5ld1V1aWQ/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBvbGRVdWlkID0gdGhpcy51dWlkO1xuICAgIHRoaXMudXVpZCA9IG5ld1V1aWQ7XG4gICAgaWYgKG9sZFV1aWQgIT09IG5ld1V1aWQgJiYgdGhpcy5lbWJlZGRlZFNsb3RDb250YWluZXJJZCkge1xuICAgICAgaWYgKG9sZFV1aWQpIHtcbiAgICAgICAgdGhpcy52aWV3Q29udGV4dC51bnJlZ2lzdGVyRW1iZWRkZWRTbG90KG9sZFV1aWQsIHRoaXMuZW1iZWRkZWRTbG90Q29udGFpbmVySWQpO1xuICAgICAgfVxuICAgICAgdGhpcy50cnlSZWdpc3RlckVtYmVkZGVkU2xvdCgpO1xuICAgIH1cbiAgfVxufVxuIiwiPGRpdiAqbmdJZj1cInNtYXJ0Q29tcG9uZW50TGF5b3V0Py5leHBhbmRhYmxlOyB0aGVuIGV4cGFuZGFibGU7IGVsc2Ugbm9ybWFsXCI+IDwvZGl2PlxuXG48bmctdGVtcGxhdGUgI2V4cGFuZGFibGU+XG4gIDxzbWFydC1leHBhbmRhYmxlLXNlY3Rpb25cbiAgICAqbmdJZj1cImV4cGFuZGFibGVTZWN0aW9uXCJcbiAgICBbZGF0YV09XCJleHBhbmRhYmxlU2VjdGlvblwiXG4gID48L3NtYXJ0LWV4cGFuZGFibGUtc2VjdGlvbj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjbm9ybWFsPlxuICBAaWYgKHNtYXJ0Q29tcG9uZW50TGF5b3V0Py50eXBlID09PSB0eXBlKCkuQ09OVEFJTkVSKSB7XG4gICAgPHNtYXJ0LWNvbXBvbmVudC1sYXlvdXRcbiAgICAgICpuZ0Zvcj1cImxldCBsYXlvdXQgb2Ygc21hcnRDb21wb25lbnRMYXlvdXQ/LmNvbXBvbmVudHNcIlxuICAgICAgW3BhcmVudFNtYXJ0Q29tcG9uZW50XT1cInBhcmVudFNtYXJ0Q29tcG9uZW50XCJcbiAgICAgIFtwYXJlbnRMYXlvdXRDb21wb25lbnRdPVwidGhpc1wiXG4gICAgICBbc21hcnRDb21wb25lbnRMYXlvdXRdPVwibGF5b3V0XCJcbiAgICAgIFtncmlkUm93XT1cImdyaWRSb3dcIlxuICAgID48L3NtYXJ0LWNvbXBvbmVudC1sYXlvdXQ+XG4gIH1cbiAgPHNtYXJ0Zm9ybSAqbmdJZj1cInNtYXJ0Rm9ybVwiICNmb3JtIFtzbWFydEZvcm1dPVwic21hcnRGb3JtXCI+PC9zbWFydGZvcm0+XG4gIDxzbWFydC1ncmlkICpuZ0lmPVwic21hcnRHcmlkXCIgI2dyaWQgW3NtYXJ0R3JpZF09XCJzbWFydEdyaWRcIiBbdXVpZF09XCJ1dWlkIVwiPjwvc21hcnQtZ3JpZD5cbiAgPHNtYXJ0LW1hcFxuICAgICpuZ0lmPVwiISF1dWlkICYmICEhbWFwSWRcIlxuICAgICNtYXBcbiAgICBbdXVpZF09XCJ1dWlkXCJcbiAgICBbaWRlbnRpZmllcl09XCJtYXBJZFwiXG4gICAgW3BhcmVudF09XCJwYXJlbnRTbWFydENvbXBvbmVudFwiXG4gID48L3NtYXJ0LW1hcD5cbiAgPHNtYXJ0LWRpYWdyYW1cbiAgICAqbmdJZj1cIiEhdXVpZCAmJiAhIXNtYXJ0RGlhZ3JhbUlkXCJcbiAgICAjZGlhZ3JhbVxuICAgIFt1dWlkXT1cInV1aWRcIlxuICAgIFtpZGVudGlmaWVyXT1cInNtYXJ0RGlhZ3JhbUlkXCJcbiAgICBbcGFyZW50XT1cInBhcmVudFNtYXJ0Q29tcG9uZW50XCJcbiAgPjwvc21hcnQtZGlhZ3JhbT5cbiAgPCEtLSA8c21hcnQtZmlsdGVyICNmaWx0ZXIgW2ZpbHRlcl09XCJzbWFydEZpbHRlclwiPjwvc21hcnQtZmlsdGVyPiAtLT5cbiAgPHNtYXJ0LXRyZWUgKm5nSWY9XCJ0cmVlU2VydmljZVwiIFt0cmVlU2VydmljZV09XCJ0cmVlU2VydmljZSFcIj48L3NtYXJ0LXRyZWU+XG4gIDxzbWFydC11aS1hY3Rpb24tdG9vbGJhclxuICAgICpuZ0lmPVwiISF0b29sYmFySWRcIlxuICAgICN0b29sYmFyXG4gICAgW2lkXT1cInRvb2xiYXJJZFwiXG4gICAgW3Rvb2xiYXJQcm9wZXJ0ZXNdPVwidG9vbGJhclByb3BlcnRlc1wiXG4gID48L3NtYXJ0LXVpLWFjdGlvbi10b29sYmFyPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiZW1iZWRkZWRTbG90QWN0aXZlXCIgI2VtYmVkZGVkU2xvdD48L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
@@ -54,4 +54,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
54
54
  providers: [],
55
55
  }]
56
56
  }] });
57
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtY29tcG9uZW50LWxheW91dC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi9zbWFydC1jb21wb25lbnQtbGF5b3V0L3NtYXJ0LWNvbXBvbmVudC1sYXlvdXQubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDbEUsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sNkRBQTZELENBQUM7QUFDM0csT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUMvRCxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNuRixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNuRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7QUFtQmhFLE1BQU0sT0FBTywwQkFBMEI7K0dBQTFCLDBCQUEwQjtnSEFBMUIsMEJBQTBCLGlCQWhCdEIsNkJBQTZCLGFBRTFDLGFBQWE7WUFDYixlQUFlO1lBQ2YsZUFBZTtZQUNmLDRCQUE0QjtZQUM1QixlQUFlO1lBQ2Ysc0JBQXNCO1lBQ3RCLGNBQWM7WUFDZCxrQkFBa0I7WUFDbEIsZ0JBQWdCO1lBQ2hCLHFCQUFxQixhQUViLDZCQUE2QjtnSEFHNUIsMEJBQTBCLFlBZG5DLGFBQWE7WUFDYixlQUFlO1lBQ2YsZUFBZTtZQUNmLDRCQUE0QjtZQUM1QixlQUFlO1lBQ2Ysc0JBQXNCO1lBQ3RCLGNBQWM7WUFDZCxrQkFBa0I7WUFDbEIsZ0JBQWdCO1lBQ2hCLHFCQUFxQjs7NEZBS1osMEJBQTBCO2tCQWpCdEMsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsQ0FBQyw2QkFBNkIsQ0FBQztvQkFDN0MsT0FBTyxFQUFFO3dCQUNQLGFBQWE7d0JBQ2IsZUFBZTt3QkFDZixlQUFlO3dCQUNmLDRCQUE0Qjt3QkFDNUIsZUFBZTt3QkFDZixzQkFBc0I7d0JBQ3RCLGNBQWM7d0JBQ2Qsa0JBQWtCO3dCQUNsQixnQkFBZ0I7d0JBQ2hCLHFCQUFxQjtxQkFDdEI7b0JBQ0QsT0FBTyxFQUFFLENBQUMsNkJBQTZCLENBQUM7b0JBQ3hDLFNBQVMsRUFBRSxFQUFFO2lCQUNkIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWF0Q29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XHJcbmltcG9ydCB7IEJyb3dzZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcclxuaW1wb3J0IHsgU21hcnRHcmlkTW9kdWxlIH0gZnJvbSAnLi4vc21hcnQtZ3JpZC9zbWFydC1ncmlkLm1vZHVsZSc7XHJcbmltcG9ydCB7IFNtYXJ0RXhwYW5kYWJsZVNlY3Rpb25Nb2R1bGUgfSBmcm9tICcuLi9zbWFydC1leHBhbmRhYmxlLXNlY3Rpb24vc21hcnQtZXhwYW5kYWJsZS1zZWN0aW9uLm1vZHVsZSc7XHJcbmltcG9ydCB7IFNtYXJ0dHJlZU1vZHVsZSB9IGZyb20gJy4uL3NtYXJ0LXRyZWUvc21hcnR0cmVlLm1vZHVsZSc7XHJcbmltcG9ydCB7IFNtYXJ0TWFwTW9kdWxlIH0gZnJvbSAnLi4vc21hcnQtbWFwL3NtYXJ0LW1hcC5tb2R1bGUnO1xyXG5pbXBvcnQgeyBTbWFydENvbXBvbmVudExheW91dENvbXBvbmVudCB9IGZyb20gJy4vc21hcnQtY29tcG9uZW50LWxheW91dC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBTbWFydFZpZXdDb250ZXh0TW9kdWxlIH0gZnJvbSAnLi4vdmlldy1jb250ZXh0L3NtYXJ0LXZpZXctY29udGV4dC5tb2R1bGUnO1xyXG5pbXBvcnQgeyBTbWFydERpYWdyYW1Nb2R1bGUgfSBmcm9tICcuLi9zbWFydC1kaWFncmFtL3Byb2plY3RzJztcclxuaW1wb3J0IHsgSW5wdXRHcm91cE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvaW5wdXRncm91cCc7XHJcbmltcG9ydCB7IElucHV0R3JvdXBBZGRvbk1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvaW5wdXRncm91cGFkZG9uJztcclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgZGVjbGFyYXRpb25zOiBbU21hcnRDb21wb25lbnRMYXlvdXRDb21wb25lbnRdLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIEJyb3dzZXJNb2R1bGUsXHJcbiAgICBNYXRDb21tb25Nb2R1bGUsXHJcbiAgICBTbWFydEdyaWRNb2R1bGUsXHJcbiAgICBTbWFydEV4cGFuZGFibGVTZWN0aW9uTW9kdWxlLFxyXG4gICAgU21hcnR0cmVlTW9kdWxlLFxyXG4gICAgU21hcnRWaWV3Q29udGV4dE1vZHVsZSxcclxuICAgIFNtYXJ0TWFwTW9kdWxlLFxyXG4gICAgU21hcnREaWFncmFtTW9kdWxlLFxyXG4gICAgSW5wdXRHcm91cE1vZHVsZSxcclxuICAgIElucHV0R3JvdXBBZGRvbk1vZHVsZSxcclxuICBdLFxyXG4gIGV4cG9ydHM6IFtTbWFydENvbXBvbmVudExheW91dENvbXBvbmVudF0sXHJcbiAgcHJvdmlkZXJzOiBbXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFNtYXJ0Q29tcG9uZW50TGF5b3V0TW9kdWxlIHt9XHJcbiJdfQ==
57
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtY29tcG9uZW50LWxheW91dC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi9zbWFydC1jb21wb25lbnQtbGF5b3V0L3NtYXJ0LWNvbXBvbmVudC1sYXlvdXQubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDbEUsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sNkRBQTZELENBQUM7QUFDM0csT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUMvRCxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNuRixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNuRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7QUFtQmhFLE1BQU0sT0FBTywwQkFBMEI7K0dBQTFCLDBCQUEwQjtnSEFBMUIsMEJBQTBCLGlCQWhCdEIsNkJBQTZCLGFBRTFDLGFBQWE7WUFDYixlQUFlO1lBQ2YsZUFBZTtZQUNmLDRCQUE0QjtZQUM1QixlQUFlO1lBQ2Ysc0JBQXNCO1lBQ3RCLGNBQWM7WUFDZCxrQkFBa0I7WUFDbEIsZ0JBQWdCO1lBQ2hCLHFCQUFxQixhQUViLDZCQUE2QjtnSEFHNUIsMEJBQTBCLFlBZG5DLGFBQWE7WUFDYixlQUFlO1lBQ2YsZUFBZTtZQUNmLDRCQUE0QjtZQUM1QixlQUFlO1lBQ2Ysc0JBQXNCO1lBQ3RCLGNBQWM7WUFDZCxrQkFBa0I7WUFDbEIsZ0JBQWdCO1lBQ2hCLHFCQUFxQjs7NEZBS1osMEJBQTBCO2tCQWpCdEMsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsQ0FBQyw2QkFBNkIsQ0FBQztvQkFDN0MsT0FBTyxFQUFFO3dCQUNQLGFBQWE7d0JBQ2IsZUFBZTt3QkFDZixlQUFlO3dCQUNmLDRCQUE0Qjt3QkFDNUIsZUFBZTt3QkFDZixzQkFBc0I7d0JBQ3RCLGNBQWM7d0JBQ2Qsa0JBQWtCO3dCQUNsQixnQkFBZ0I7d0JBQ2hCLHFCQUFxQjtxQkFDdEI7b0JBQ0QsT0FBTyxFQUFFLENBQUMsNkJBQTZCLENBQUM7b0JBQ3hDLFNBQVMsRUFBRSxFQUFFO2lCQUNkIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xuaW1wb3J0IHsgQnJvd3Nlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHsgU21hcnRHcmlkTW9kdWxlIH0gZnJvbSAnLi4vc21hcnQtZ3JpZC9zbWFydC1ncmlkLm1vZHVsZSc7XG5pbXBvcnQgeyBTbWFydEV4cGFuZGFibGVTZWN0aW9uTW9kdWxlIH0gZnJvbSAnLi4vc21hcnQtZXhwYW5kYWJsZS1zZWN0aW9uL3NtYXJ0LWV4cGFuZGFibGUtc2VjdGlvbi5tb2R1bGUnO1xuaW1wb3J0IHsgU21hcnR0cmVlTW9kdWxlIH0gZnJvbSAnLi4vc21hcnQtdHJlZS9zbWFydHRyZWUubW9kdWxlJztcbmltcG9ydCB7IFNtYXJ0TWFwTW9kdWxlIH0gZnJvbSAnLi4vc21hcnQtbWFwL3NtYXJ0LW1hcC5tb2R1bGUnO1xuaW1wb3J0IHsgU21hcnRDb21wb25lbnRMYXlvdXRDb21wb25lbnQgfSBmcm9tICcuL3NtYXJ0LWNvbXBvbmVudC1sYXlvdXQuY29tcG9uZW50JztcbmltcG9ydCB7IFNtYXJ0Vmlld0NvbnRleHRNb2R1bGUgfSBmcm9tICcuLi92aWV3LWNvbnRleHQvc21hcnQtdmlldy1jb250ZXh0Lm1vZHVsZSc7XG5pbXBvcnQgeyBTbWFydERpYWdyYW1Nb2R1bGUgfSBmcm9tICcuLi9zbWFydC1kaWFncmFtL3Byb2plY3RzJztcbmltcG9ydCB7IElucHV0R3JvdXBNb2R1bGUgfSBmcm9tICdwcmltZW5nL2lucHV0Z3JvdXAnO1xuaW1wb3J0IHsgSW5wdXRHcm91cEFkZG9uTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9pbnB1dGdyb3VwYWRkb24nO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtTbWFydENvbXBvbmVudExheW91dENvbXBvbmVudF0sXG4gIGltcG9ydHM6IFtcbiAgICBCcm93c2VyTW9kdWxlLFxuICAgIE1hdENvbW1vbk1vZHVsZSxcbiAgICBTbWFydEdyaWRNb2R1bGUsXG4gICAgU21hcnRFeHBhbmRhYmxlU2VjdGlvbk1vZHVsZSxcbiAgICBTbWFydHRyZWVNb2R1bGUsXG4gICAgU21hcnRWaWV3Q29udGV4dE1vZHVsZSxcbiAgICBTbWFydE1hcE1vZHVsZSxcbiAgICBTbWFydERpYWdyYW1Nb2R1bGUsXG4gICAgSW5wdXRHcm91cE1vZHVsZSxcbiAgICBJbnB1dEdyb3VwQWRkb25Nb2R1bGUsXG4gIF0sXG4gIGV4cG9ydHM6IFtTbWFydENvbXBvbmVudExheW91dENvbXBvbmVudF0sXG4gIHByb3ZpZGVyczogW10sXG59KVxuZXhwb3J0IGNsYXNzIFNtYXJ0Q29tcG9uZW50TGF5b3V0TW9kdWxlIHt9XG4iXX0=
@@ -309,4 +309,4 @@ function generateRandomColor() {
309
309
  const random = Math.floor(Math.random() * 16777215).toString(16);
310
310
  return `#${'000000'.substring(0, 6 - random.length) + random}`;
311
311
  }
312
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC1zbWFydC1kaWFncmFtLW9wdGlvbnMucHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi9zbWFydC1kaWFncmFtL2NvbXBvbmVudC9kZWZhdWx0LXNtYXJ0LWRpYWdyYW0tb3B0aW9ucy5wcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTdFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7QUFJakQsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsSUFBSSxjQUFjLENBQWlCLHdCQUF3QixDQUFDLENBQUM7QUFTbkcsTUFBTSxVQUFVLDRCQUE0QixDQUFDLFNBQStCO0lBQzFFLE9BQU87UUFDTCxNQUFNLEVBQUUsU0FBUyxDQUFDLE1BQU07UUFDeEIsUUFBUSxFQUFFLFNBQVMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDeEMsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUssSUFBSSxtQkFBbUIsRUFBRSxDQUFDO1lBQ3JELE9BQU87Z0JBQ0wsSUFBSSxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO2dCQUM5QyxLQUFLLEVBQUUsT0FBTyxDQUFDLEtBQUs7Z0JBQ3BCLGVBQWUsRUFBRSxLQUFLO2dCQUN0QixXQUFXLEVBQUUsS0FBSzthQUNuQixDQUFDO1FBQ0osQ0FBQyxDQUFDO0tBQ0gsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLFVBQVUsNkJBQTZCLENBQUMsU0FBK0I7SUFDM0UsT0FBTztRQUNMLE1BQU0sRUFBRSxTQUFT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QUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBSUksTUFBTTsyQkFBQyxzQkFBc0I7OzBCQUM3QixRQUFROztBQWtCYixTQUFTLG1CQUFtQjtJQUMxQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDakUsT0FBTyxJQUFJLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsTUFBTSxFQUFFLENBQUM7QUFDakUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdGlvblRva2VuLCBPcHRpb25hbCwgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IERpYWdyYW1EYXRhQ29udGFpbmVyIH0gZnJvbSAnLi4vYXBpJztcclxuaW1wb3J0IHsgZGVlcE1lcmdlIH0gZnJvbSAnLi9zbWFydC1kaWFncmFtLnV0aWwnO1xyXG5pbXBvcnQgeyBYIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2tleWNvZGVzJztcclxuaW1wb3J0IHsgbGF5b3V0cyB9IGZyb20gJ2NoYXJ0LmpzJztcclxuXHJcbmV4cG9ydCBjb25zdCBDVVNUT01fRElBR1JBTV9PUFRJT05TID0gbmV3IEluamVjdGlvblRva2VuPERpYWdyYW1GYWN0b3J5PignQ1VTVE9NX0RJQUdSQU1fT1BUSU9OUycpO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBEaWFncmFtRmFjdG9yeSB7XHJcbiAgcmVhZG9ubHkgY2hhcnRUeXBlOiBzdHJpbmc7XHJcbiAgcmVhZG9ubHkgY2hhcnRKc1R5cGU6IHN0cmluZztcclxuICBjcmVhdGVPcHRpb25zKGNoYXJ0RGF0YTogRGlhZ3JhbURhdGFDb250YWluZXIpOiBhbnk7XHJcbiAgdHJhbnNmb3JtRGF0YShjaGFydERhdGE6IERpYWdyYW1EYXRhQ29udGFpbmVyKTogYW55O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gdHJhbnNmb3JtRGF0YVRvQmFzaWNEYXRhU2V0cyhjaGFydERhdGE6IERpYWdyYW1EYXRhQ29udGFpbmVyKTogYW55IHtcclxuICByZXR1cm4ge1xyXG4gICAgbGFiZWxzOiBjaGFydERhdGEubGFiZWxzLFxyXG4gICAgZGF0YXNldHM6IGNoYXJ0RGF0YS5pdGVtcy5tYXAoKGRhdGFzZXQpID0+IHtcclxuICAgICAgY29uc3QgY29sb3IgPSBkYXRhc2V0LmNvbG9yIHx8IGdlbmVyYXRlUmFuZG9tQ29sb3IoKTtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBkYXRhOiBkYXRhc2V0Lml0ZW1zLm1hcCgoaXRlbSkgPT4gaXRlbS54VmFsdWUpLFxyXG4gICAgICAgIGxhYmVsOiBkYXRhc2V0LmxhYmVsLFxyXG4gICAgICAgIGJhY2tncm91bmRDb2xvcjogY29sb3IsXHJcbiAgICAgICAgYm9yZGVyQ29sb3I6IGNvbG9yLFxyXG4gICAgICB9O1xyXG4gICAgfSksXHJcbiAgfTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIHRyYW5zZm9ybURhdGFUb0Jhckxpa2VEYXRhU2V0KGNoYXJ0RGF0YTogRGlhZ3JhbURhdGFDb250YWluZXIpOiBhbnkge1xyXG4gIHJldHVybiB7XHJcbiAgICBsYWJlbHM6IGNoYXJ0RGF0YS5sYWJlbHMsXHJcbiAgICBkYXRhc2V0czogY2hhcnREYXRhLml0ZW1zLm1hcCgoZGF0YXNldCkgPT4ge1xyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIGRhdGE6IGRhdGFzZXQuaXRlbXMubWFwKChpdGVtKSA9PiBpdGVtLnhWYWx1ZSksXHJcbiAgICAgICAgbGFiZWw6IGRhdGFzZXQubGFiZWwsXHJcbiAgICAgICAgYmFja2dyb3VuZENvbG9yOiBkYXRhc2V0Lml0ZW1zLm1hcCgoaXRlbSkgPT4gaXRlbS5pdGVtQ29sb3IgfHwgZ2VuZXJhdGVSYW5kb21Db2xvcigpKSxcclxuICAgICAgICBib3JkZXJDb2xvcjogZGF0YXNldC5pdGVtcy5tYXAoKGl0ZW0pID0+IGl0ZW0uaXRlbUNvbG9yIHx8IGdlbmVyYXRlUmFuZG9tQ29sb3IoKSksXHJcbiAgICAgIH07XHJcbiAgICB9KSxcclxuICB9O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gdHJhbnNmb3JtRGF0YVRvU2NhdHRlcihjaGFydERhdGE6IERpYWdyYW1EYXRhQ29udGFpbmVyKTogYW55IHtcclxuICByZXR1cm4ge1xyXG4gICAgZGF0YXNldHM6IGNoYXJ0RGF0YS5pdGVtcy5tYXAoKGRhdGFzZXQpID0+IHtcclxuICAgICAgY29uc3QgY29sb3IgPSBkYXRhc2V0LmNvbG9yIHx8IGdlbmVyYXRlUmFuZG9tQ29sb3IoKTtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBsYWJlbDogZGF0YXNldC5sYWJlbCxcclxuICAgICAgICBkYXRhOiBkYXRhc2V0Lml0ZW1zLm1hcCgoaXRlbSkgPT4gKHtcclxuICAgICAgICAgIHg6IGl0ZW0ueFZhbHVlLFxyXG4gICAgICAgICAgeTogaXRlbS55VmFsdWUsXHJcbiAgICAgICAgfSkpLFxyXG4gICAgICAgIGJhY2tncm91bmRDb2xvcjogY29sb3IsXHJcbiAgICAgICAgYm9yZGVyQ29sb3I6IGNvbG9yLFxyXG4gICAgICB9O1xyXG4gICAgfSksXHJcbiAgfTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIHRyYW5zZm9ybURhdGFUb0J1YmJsZShjaGFydERhdGE6IERpYWdyYW1EYXRhQ29udGFpbmVyKTogYW55IHtcclxuICByZXR1cm4ge1xyXG4gICAgZGF0YXNldHM6IGNoYXJ0RGF0YS5pdGVtcy5tYXAoKGRhdGFzZXQpID0+IHtcclxuICAgICAgY29uc3QgY29sb3IgPSBkYXRhc2V0LmNvbG9yIHx8IGdlbmVyYXRlUmFuZG9tQ29sb3IoKTtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBsYWJlbDogZGF0YXNldC5sYWJlbCxcclxuICAgICAgICBkYXRhOiBkYXRhc2V0Lml0ZW1zLm1hcCgoaXRlbSkgPT4gKHtcclxuICAgICAgICAgIHg6IGl0ZW0ueFZhbHVlLFxyXG4gICAgICAgICAgeTogaXRlbS55VmFsdWUsXHJcbiAgICAgICAgICByOiBpdGVtLnJWYWx1ZSA/PyA1LFxyXG4gICAgICAgIH0pKSxcclxuICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IGNvbG9yLFxyXG4gICAgICAgIGJvcmRlckNvbG9yOiBjb2xvcixcclxuICAgICAgfTtcclxuICAgIH0pLFxyXG4gIH07XHJcbn1cclxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUJhc2ljT3B0aW9ucygpOiBhbnkge1xyXG4gIHJldHVybiB7XHJcbiAgICBzY2FsZXM6IHtcclxuICAgICAgeToge1xyXG4gICAgICAgIGJlZ2luQXRaZXJvOiB0cnVlLFxyXG4gICAgICAgIGdyYWNlOiAnNSUnLFxyXG4gICAgICB9LFxyXG4gICAgfSxcclxuICAgIGRldmljZVBpeGVsUmF0aW86IDIsXHJcbiAgICBhc3BlY3RSYXRpbzogMS43OCxcclxuICAgIHJlc3BvbnNpdmU6IHRydWUsXHJcbiAgfTtcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IGJhckNoYXJ0OiBEaWFncmFtRmFjdG9yeSA9IHtcclxuICBjaGFydFR5cGU6ICdiYXInLFxyXG4gIGNoYXJ0SnNUeXBlOiAnYmFyJyxcclxuICBjcmVhdGVPcHRpb25zOiBjcmVhdGVCYXNpY09wdGlvbnMsXHJcbiAgdHJhbnNmb3JtRGF0YTogdHJhbnNmb3JtRGF0YVRvQmFyTGlrZURhdGFTZXQsXHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgaG9yaXpvbnRhbEJhckNoYXJ0OiBEaWFncmFtRmFjdG9yeSA9IHtcclxuICBjaGFydFR5cGU6ICdob3Jpem9udGFsQmFyJyxcclxuICBjaGFydEpzVHlwZTogJ2JhcicsXHJcbiAgY3JlYXRlT3B0aW9uczogKCkgPT5cclxuICAgIGRlZXBNZXJnZShjcmVhdGVCYXNpY09wdGlvbnMoKSwge1xyXG4gICAgICBpbmRleEF4aXM6ICd5JyxcclxuICAgICAgbGF5b3V0OiB7XHJcbiAgICAgICAgcGFkZGluZzoge1xyXG4gICAgICAgICAgcmlnaHQ6IDUsXHJcbiAgICAgICAgfSxcclxuICAgICAgfSxcclxuICAgIH0pLFxyXG4gIHRyYW5zZm9ybURhdGE6IHRyYW5zZm9ybURhdGFUb0Jhckxpa2VEYXRhU2V0LFxyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IHN0YWNrZWRCYXJDaGFydDogRGlhZ3JhbUZhY3RvcnkgPSB7XHJcbiAgY2hhcnRUeXBlOiAnc3RhY2tlZEJhcicsXHJcbiAgY2hhcnRKc1R5cGU6ICdiYXInLFxyXG4gIGNyZWF0ZU9wdGlvbnM6ICgpID0+XHJcbiAgICBkZWVwTWVyZ2UoY3JlYXRlQmFzaWNPcHRpb25zKCksIHtcclxuICAgICAgc2NhbGVzOiB7XHJcbiAgICAgICAgeDogeyBzdGFja2VkOiB0cnVlIH0sXHJcbiAgICAgICAgeTogeyBzdGFja2VkOiB0cnVlIH0sXHJcbiAgICAgIH0sXHJcbiAgICB9KSxcclxuICB0cmFuc2Zvcm1EYXRhOiB0cmFuc2Zvcm1EYXRhVG9CYXNpY0RhdGFTZXRzLFxyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IGhvcml6b250YWxTdGFja2VkQmFyQ2hhcnQ6IERpYWdyYW1GYWN0b3J5ID0ge1xyXG4gIGNoYXJ0VHlwZTogJ2hvcml6b250YWxTdGFja2VkQmFyJyxcclxuICBjaGFydEpzVHlwZTogJ2JhcicsXHJcbiAgY3JlYXRlT3B0aW9uczogKCkgPT5cclxuICAgIGRlZXBNZXJnZShjcmVhdGVCYXNpY09wdGlvbnMoKSwge1xyXG4gICAgICBpbmRleEF4aXM6ICd5JyxcclxuICAgICAgc2NhbGVzOiB7XHJcbiAgICAgICAgeDogeyBzdGFja2VkOiB0cnVlIH0sXHJcbiAgICAgICAgeToge1xyXG4gICAgICAgICAgc3RhY2tlZDogdHJ1ZSxcclxuICAgICAgICAgIHRpY2tzOiB7XHJcbiAgICAgICAgICAgIGF1dG9Ta2lwOiBmYWxzZSxcclxuICAgICAgICAgICAgY2FsbGJhY2s6IGZ1bmN0aW9uICh2YWx1ZTogYW55LCBpbmRleDogYW55LCB0aWNrczogYW55KSB7XHJcbiAgICAgICAgICAgICAgY29uc3QgbGFiZWwgPSAodGhpcyBhcyBhbnkpLmdldExhYmVsRm9yVmFsdWUodmFsdWUpO1xyXG4gICAgICAgICAgICAgIGNvbnN0IG1heCA9IDEwO1xyXG4gICAgICAgICAgICAgIGlmICghbGFiZWwpIHJldHVybiAnJztcclxuICAgICAgICAgICAgICBpZiAobGFiZWwubGVuZ3RoIDw9IG1heCkgcmV0dXJuIGxhYmVsO1xyXG4gICAgICAgICAgICAgIHJldHVybiBsYWJlbC5zcGxpdCgnICcpO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9LFxyXG4gICAgICB9LFxyXG4gICAgICBsYXlvdXQ6IHsgcGFkZGluZzogeyByaWdodDogNSB9IH0sXHJcbiAgICB9KSxcclxuICB0cmFuc2Zvcm1EYXRhOiB0cmFuc2Zvcm1EYXRhVG9CYXNpY0RhdGFTZXRzLFxyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IHBpZUNoYXJ0OiBEaWFncmFtRmFjdG9yeSA9IHtcclxuICBjaGFydFR5cGU6ICdwaWUnLFxyXG4gIGNoYXJ0SnNUeXBlOiAncGllJyxcclxuICBjcmVhdGVPcHRpb25zOiAoKSA9PiB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICByYWRpdXM6ICc5NSUnLFxyXG4gICAgICBsYXlvdXQ6IHtcclxuICAgICAgICBwYWRkaW5nOiAwLFxyXG4gICAgICB9LFxyXG4gICAgICBhc3BlY3RSYXRpbzogMSxcclxuICAgICAgcmVzcG9uc2l2ZTogdHJ1ZSxcclxuICAgIH07XHJcbiAgfSxcclxuICB0cmFuc2Zvcm1EYXRhOiB0cmFuc2Zvcm1EYXRhVG9CYXJMaWtlRGF0YVNldCxcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBkb3VnaG51dENoYXJ0OiBEaWFncmFtRmFjdG9yeSA9IHtcclxuICBjaGFydFR5cGU6ICdkb3VnaG51dCcsXHJcbiAgY2hhcnRKc1R5cGU6ICdkb3VnaG51dCcsXHJcbiAgY3JlYXRlT3B0aW9uczogKCkgPT4ge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgcmFkaXVzOiAnOTUlJyxcclxuICAgICAgbGF5b3V0OiB7XHJcbiAgICAgICAgcGFkZGluZzogMCxcclxuICAgICAgfSxcclxuICAgICAgYXNwZWN0UmF0aW86IDEsXHJcbiAgICAgIHJlc3BvbnNpdmU6IHRydWUsXHJcbiAgICB9O1xyXG4gIH0sXHJcbiAgdHJhbnNmb3JtRGF0YTogdHJhbnNmb3JtRGF0YVRvQmFyTGlrZURhdGFTZXQsXHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgcG9sYXJBcmVhQ2hhcnQ6IERpYWdyYW1GYWN0b3J5ID0ge1xyXG4gIGNoYXJ0VHlwZTogJ3BvbGFyQXJlYScsXHJcbiAgY2hhcnRKc1R5cGU6ICdwb2xhckFyZWEnLFxyXG4gIGNyZWF0ZU9wdGlvbnM6ICgpID0+IHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIHJhZGl1czogJzk1JScsXHJcbiAgICAgIGxheW91dDoge1xyXG4gICAgICAgIHBhZGRpbmc6IDAsXHJcbiAgICAgIH0sXHJcbiAgICAgIGFzcGVjdFJhdGlvOiAxLFxyXG4gICAgICByZXNwb25zaXZlOiB0cnVlLFxyXG4gICAgfTtcclxuICB9LFxyXG4gIHRyYW5zZm9ybURhdGE6IChjaGFydERhdGE6IERpYWdyYW1EYXRhQ29udGFpbmVyKTogYW55ID0+IHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIGxhYmVsczogY2hhcnREYXRhLmxhYmVscyxcclxuICAgICAgZGF0YXNldHM6IGNoYXJ0RGF0YS5pdGVtcy5tYXAoKGRhdGFzZXQpID0+ICh7XHJcbiAgICAgICAgZGF0YTogZGF0YXNldC5pdGVtcy5tYXAoKGl0ZW0pID0+IGl0ZW0ueFZhbHVlKSxcclxuICAgICAgICBsYWJlbDogZGF0YXNldC5sYWJlbCxcclxuICAgICAgICBib3JkZXJDb2xvcjogZGF0YXNldC5pdGVtcy5tYXAoKGl0ZW0pID0+IGl0ZW0uaXRlbUNvbG9yKSxcclxuICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IGRhdGFzZXQuaXRlbXMubWFwKChpdGVtKSA9PiBpdGVtLml0ZW1Db2xvciksXHJcbiAgICAgIH0pKSxcclxuICAgIH07XHJcbiAgfSxcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCByYWRhckNoYXJ0OiBEaWFncmFtRmFjdG9yeSA9IHtcclxuICBjaGFydFR5cGU6ICdyYWRhcicsXHJcbiAgY2hhcnRKc1R5cGU6ICdyYWRhcicsXHJcbiAgY3JlYXRlT3B0aW9uczogKCkgPT4ge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgYXNwZWN0UmF0aW86IDEsXHJcbiAgICAgIHJlc3BvbnNpdmU6IHRydWUsXHJcbiAgICB9O1xyXG4gIH0sXHJcbiAgdHJhbnNmb3JtRGF0YTogKGNoYXJ0RGF0YTogRGlhZ3JhbURhdGFDb250YWluZXIpOiBhbnkgPT4ge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgbGFiZWxzOiBjaGFydERhdGEubGFiZWxzLFxyXG4gICAgICBkYXRhc2V0czogY2hhcnREYXRhLml0ZW1zLm1hcCgoZGF0YXNldCkgPT4gKHtcclxuICAgICAgICBkYXRhOiBkYXRhc2V0Lml0ZW1zLm1hcCgoaXRlbSkgPT4gaXRlbS54VmFsdWUpLFxyXG4gICAgICAgIGxhYmVsOiBkYXRhc2V0LmxhYmVsLFxyXG4gICAgICAgIGJvcmRlckNvbG9yOiBkYXRhc2V0LmNvbG9yLFxyXG4gICAgICAgIHBvaW50QmFja2dyb3VuZENvbG9yOiBkYXRhc2V0LmNvbG9yLFxyXG4gICAgICAgIHBvaW50Qm9yZGVyQ29sb3I6IGRhdGFzZXQuY29sb3IsXHJcbiAgICAgICAgcG9pbnRIb3ZlckJhY2tncm91bmRDb2xvcjogJyMwMDAwMDAnLFxyXG4gICAgICAgIHBvaW50SG92ZXJCb3JkZXJDb2xvcjogZGF0YXNldC5jb2xvcixcclxuICAgICAgfSkpLFxyXG4gICAgfTtcclxuICB9LFxyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IHNjYXR0ZXJDaGFydDogRGlhZ3JhbUZhY3RvcnkgPSB7XHJcbiAgY2hhcnRUeXBlOiAnc2NhdHRlcicsXHJcbiAgY2hhcnRKc1R5cGU6ICdzY2F0dGVyJyxcclxuICBjcmVhdGVPcHRpb25zOiAoKSA9PlxyXG4gICAgZGVlcE1lcmdlKGNyZWF0ZUJhc2ljT3B0aW9ucygpLCB7XHJcbiAgICAgIHNjYWxlczoge1xyXG4gICAgICAgIHk6IHtcclxuICAgICAgICAgIGJlZ2luQXRaZXJvOiB0cnVlLFxyXG4gICAgICAgICAgZ3JhY2U6ICc1JScsXHJcbiAgICAgICAgfSxcclxuICAgICAgICB4OiB7XHJcbiAgICAgICAgICBiZWdpbkF0WmVybzogdHJ1ZSxcclxuICAgICAgICAgIGdyYWNlOiAnNSUnLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH0sXHJcbiAgICB9KSxcclxuICB0cmFuc2Zvcm1EYXRhOiB0cmFuc2Zvcm1EYXRhVG9TY2F0dGVyLFxyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IGJ1YmJsZUNoYXJ0OiBEaWFncmFtRmFjdG9yeSA9IHtcclxuICBjaGFydFR5cGU6ICdidWJibGUnLFxyXG4gIGNoYXJ0SnNUeXBlOiAnYnViYmxlJyxcclxuICBjcmVhdGVPcHRpb25zOiAoKSA9PlxyXG4gICAgZGVlcE1lcmdlKGNyZWF0ZUJhc2ljT3B0aW9ucygpLCB7XHJcbiAgICAgIHNjYWxlczoge1xyXG4gICAgICAgIHk6IHtcclxuICAgICAgICAgIGJlZ2luQXRaZXJvOiB0cnVlLFxyXG4gICAgICAgICAgZ3JhY2U6ICc1JScsXHJcbiAgICAgICAgfSxcclxuICAgICAgICB4OiB7XHJcbiAgICAgICAgICBiZWdpbkF0WmVybzogdHJ1ZSxcclxuICAgICAgICAgIGdyYWNlOiAnNSUnLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH0sXHJcbiAgICB9KSxcclxuICB0cmFuc2Zvcm1EYXRhOiB0cmFuc2Zvcm1EYXRhVG9CdWJibGUsXHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgbXVsdGlBeGlzTGluZUNoYXJ0OiBEaWFncmFtRmFjdG9yeSA9IHtcclxuICBjaGFydFR5cGU6ICdtdWx0aUF4aXNMaW5lJyxcclxuICBjaGFydEpzVHlwZTogJ2xpbmUnLFxyXG4gIGNyZWF0ZU9wdGlvbnM6IChjaGFydERhdGE6IERpYWdyYW1EYXRhQ29udGFpbmVyKTogYW55ID0+IHtcclxuICAgIGNvbnN0IHlBeGVzID0gY2hhcnREYXRhLml0ZW1zLm1hcCgoZGF0YXNldCwgaW5kZXgpID0+ICh7XHJcbiAgICAgIGlkOiBgeSR7aW5kZXggPT0gMSA/ICcnIDogaW5kZXh9YCxcclxuICAgICAgdHlwZTogJ2xpbmVhcicsXHJcbiAgICAgIHBvc2l0aW9uOiBpbmRleCAlIDIgPT09IDAgPyAnbGVmdCcgOiAncmlnaHQnLFxyXG4gICAgfSkpO1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgc2NhbGVzOiB7XHJcbiAgICAgICAgLi4ueUF4ZXMucmVkdWNlKChhY2M6IGFueSwgYXhpcykgPT4ge1xyXG4gICAgICAgICAgYWNjW2F4aXMuaWRdID0gYXhpcztcclxuICAgICAgICAgIHJldHVybiBhY2M7XHJcbiAgICAgICAgfSwge30pLFxyXG4gICAgICB9LFxyXG4gICAgICBhc3BlY3RSYXRpbzogMS43OCxcclxuICAgICAgcmVzcG9uc2l2ZTogdHJ1ZSxcclxuICAgICAgbWFpbnRhaW5Bc3BlY3RSYXRpbzogdHJ1ZSxcclxuICAgIH07XHJcbiAgfSxcclxuICB0cmFuc2Zvcm1EYXRhOiAoY2hhcnREYXRhOiBEaWFncmFtRGF0YUNvbnRhaW5lcik6IGFueSA9PiB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBsYWJlbHM6IGNoYXJ0RGF0YS5sYWJlbHMsXHJcbiAgICAgIGRhdGFzZXRzOiBjaGFydERhdGEuaXRlbXMubWFwKChkYXRhc2V0LCBpbmRleCkgPT4gKHtcclxuICAgICAgICBkYXRhOiBkYXRhc2V0Lml0ZW1zLm1hcCgoaXRlbSkgPT4gaXRlbS54VmFsdWUpLFxyXG4gICAgICAgIGxhYmVsOiBkYXRhc2V0LmxhYmVsLFxyXG4gICAgICAgIHlBeGlzSUQ6IGB5JHtpbmRleCA9PSAxID8gJycgOiBpbmRleH1gLFxyXG4gICAgICAgIGJhY2tncm91bmRDb2xvcjogZGF0YXNldC5jb2xvcixcclxuICAgICAgICBib3JkZXJDb2xvcjogZGF0YXNldC5jb2xvcixcclxuICAgICAgfSkpLFxyXG4gICAgfTtcclxuICB9LFxyXG59O1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIERlZmF1bHRDaGFydE9wdGlvbnNQcm92aWRlciB7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBmYWN0b3JpZXNCeVR5cGU6IE1hcDxzdHJpbmcsIERpYWdyYW1GYWN0b3J5PjtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIEBJbmplY3QoQ1VTVE9NX0RJQUdSQU1fT1BUSU9OUylcclxuICAgIEBPcHRpb25hbCgpXHJcbiAgICBmYWN0b3JpZXM6IERpYWdyYW1GYWN0b3J5W10gfCB1bmRlZmluZWRcclxuICApIHtcclxuICAgIHRoaXMuZmFjdG9yaWVzQnlUeXBlID0gbmV3IE1hcChmYWN0b3JpZXM/Lm1hcCgoZikgPT4gW2YuY2hhcnRUeXBlLCBmXSkgPz8gW10pO1xyXG4gIH1cclxuXHJcbiAgZ2V0RmFjdG9yeShjaGFydFR5cGU6IHN0cmluZyk6IERpYWdyYW1GYWN0b3J5IHtcclxuICAgIHJldHVybiAoXHJcbiAgICAgIHRoaXMuZmFjdG9yaWVzQnlUeXBlLmdldChjaGFydFR5cGUpID8/IHtcclxuICAgICAgICBjaGFydFR5cGU6IGNoYXJ0VHlwZSxcclxuICAgICAgICBjaGFydEpzVHlwZTogY2hhcnRUeXBlLFxyXG4gICAgICAgIHRyYW5zZm9ybURhdGE6IHRyYW5zZm9ybURhdGFUb0Jhc2ljRGF0YVNldHMsXHJcbiAgICAgICAgY3JlYXRlT3B0aW9uczogY3JlYXRlQmFzaWNPcHRpb25zLFxyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gZ2VuZXJhdGVSYW5kb21Db2xvcigpOiBzdHJpbmcge1xyXG4gIGNvbnN0IHJhbmRvbSA9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDE2Nzc3MjE1KS50b1N0cmluZygxNik7XHJcbiAgcmV0dXJuIGAjJHsnMDAwMDAwJy5zdWJzdHJpbmcoMCwgNiAtIHJhbmRvbS5sZW5ndGgpICsgcmFuZG9tfWA7XHJcbn1cclxuIl19
312
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC1zbWFydC1kaWFncmFtLW9wdGlvbnMucHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi9zbWFydC1kaWFncmFtL2NvbXBvbmVudC9kZWZhdWx0LXNtYXJ0LWRpYWdyYW0tb3B0aW9ucy5wcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTdFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7QUFJakQsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsSUFBSSxjQUFjLENBQWlCLHdCQUF3QixDQUFDLENBQUM7QUFTbkcsTUFBTSxVQUFVLDRCQUE0QixDQUFDLFNBQStCO0lBQzFFLE9BQU87UUFDTCxNQUFNLEVBQUUsU0FBUyxDQUFDLE1BQU07UUFDeEIsUUFBUSxFQUFFLFNBQVMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDeEMsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUssSUFBSSxtQkFBbUIsRUFBRSxDQUFDO1lBQ3JELE9BQU87Z0JBQ0wsSUFBSSxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO2dCQUM5QyxLQUFLLEVBQUUsT0FBTyxDQUFDLEtBQUs7Z0JBQ3BCLGVBQWUsRUFBRSxLQUFLO2dCQUN0QixXQUFXLEVBQUUsS0FBSzthQUNuQixDQUFDO1FBQ0osQ0FBQyxDQUFDO0tBQ0gsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLFVBQVUsNkJBQTZCLENBQUMsU0FBK0I7SUFDM0UsT0FBTztRQUNMLE1BQU0sRUFBRSxTQUFT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QUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBSUksTUFBTTsyQkFBQyxzQkFBc0I7OzBCQUM3QixRQUFROztBQWtCYixTQUFTLG1CQUFtQjtJQUMxQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDakUsT0FBTyxJQUFJLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsTUFBTSxFQUFFLENBQUM7QUFDakUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdGlvblRva2VuLCBPcHRpb25hbCwgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEaWFncmFtRGF0YUNvbnRhaW5lciB9IGZyb20gJy4uL2FwaSc7XG5pbXBvcnQgeyBkZWVwTWVyZ2UgfSBmcm9tICcuL3NtYXJ0LWRpYWdyYW0udXRpbCc7XG5pbXBvcnQgeyBYIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2tleWNvZGVzJztcbmltcG9ydCB7IGxheW91dHMgfSBmcm9tICdjaGFydC5qcyc7XG5cbmV4cG9ydCBjb25zdCBDVVNUT01fRElBR1JBTV9PUFRJT05TID0gbmV3IEluamVjdGlvblRva2VuPERpYWdyYW1GYWN0b3J5PignQ1VTVE9NX0RJQUdSQU1fT1BUSU9OUycpO1xuXG5leHBvcnQgaW50ZXJmYWNlIERpYWdyYW1GYWN0b3J5IHtcbiAgcmVhZG9ubHkgY2hhcnRUeXBlOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGNoYXJ0SnNUeXBlOiBzdHJpbmc7XG4gIGNyZWF0ZU9wdGlvbnMoY2hhcnREYXRhOiBEaWFncmFtRGF0YUNvbnRhaW5lcik6IGFueTtcbiAgdHJhbnNmb3JtRGF0YShjaGFydERhdGE6IERpYWdyYW1EYXRhQ29udGFpbmVyKTogYW55O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHJhbnNmb3JtRGF0YVRvQmFzaWNEYXRhU2V0cyhjaGFydERhdGE6IERpYWdyYW1EYXRhQ29udGFpbmVyKTogYW55IHtcbiAgcmV0dXJuIHtcbiAgICBsYWJlbHM6IGNoYXJ0RGF0YS5sYWJlbHMsXG4gICAgZGF0YXNldHM6IGNoYXJ0RGF0YS5pdGVtcy5tYXAoKGRhdGFzZXQpID0+IHtcbiAgICAgIGNvbnN0IGNvbG9yID0gZGF0YXNldC5jb2xvciB8fCBnZW5lcmF0ZVJhbmRvbUNvbG9yKCk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBkYXRhOiBkYXRhc2V0Lml0ZW1zLm1hcCgoaXRlbSkgPT4gaXRlbS54VmFsdWUpLFxuICAgICAgICBsYWJlbDogZGF0YXNldC5sYWJlbCxcbiAgICAgICAgYmFja2dyb3VuZENvbG9yOiBjb2xvcixcbiAgICAgICAgYm9yZGVyQ29sb3I6IGNvbG9yLFxuICAgICAgfTtcbiAgICB9KSxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRyYW5zZm9ybURhdGFUb0Jhckxpa2VEYXRhU2V0KGNoYXJ0RGF0YTogRGlhZ3JhbURhdGFDb250YWluZXIpOiBhbnkge1xuICByZXR1cm4ge1xuICAgIGxhYmVsczogY2hhcnREYXRhLmxhYmVscyxcbiAgICBkYXRhc2V0czogY2hhcnREYXRhLml0ZW1zLm1hcCgoZGF0YXNldCkgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGF0YTogZGF0YXNldC5pdGVtcy5tYXAoKGl0ZW0pID0+IGl0ZW0ueFZhbHVlKSxcbiAgICAgICAgbGFiZWw6IGRhdGFzZXQubGFiZWwsXG4gICAgICAgIGJhY2tncm91bmRDb2xvcjogZGF0YXNldC5pdGVtcy5tYXAoKGl0ZW0pID0+IGl0ZW0uaXRlbUNvbG9yIHx8IGdlbmVyYXRlUmFuZG9tQ29sb3IoKSksXG4gICAgICAgIGJvcmRlckNvbG9yOiBkYXRhc2V0Lml0ZW1zLm1hcCgoaXRlbSkgPT4gaXRlbS5pdGVtQ29sb3IgfHwgZ2VuZXJhdGVSYW5kb21Db2xvcigpKSxcbiAgICAgIH07XG4gICAgfSksXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0cmFuc2Zvcm1EYXRhVG9TY2F0dGVyKGNoYXJ0RGF0YTogRGlhZ3JhbURhdGFDb250YWluZXIpOiBhbnkge1xuICByZXR1cm4ge1xuICAgIGRhdGFzZXRzOiBjaGFydERhdGEuaXRlbXMubWFwKChkYXRhc2V0KSA9PiB7XG4gICAgICBjb25zdCBjb2xvciA9IGRhdGFzZXQuY29sb3IgfHwgZ2VuZXJhdGVSYW5kb21Db2xvcigpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbGFiZWw6IGRhdGFzZXQubGFiZWwsXG4gICAgICAgIGRhdGE6IGRhdGFzZXQuaXRlbXMubWFwKChpdGVtKSA9PiAoe1xuICAgICAgICAgIHg6IGl0ZW0ueFZhbHVlLFxuICAgICAgICAgIHk6IGl0ZW0ueVZhbHVlLFxuICAgICAgICB9KSksXG4gICAgICAgIGJhY2tncm91bmRDb2xvcjogY29sb3IsXG4gICAgICAgIGJvcmRlckNvbG9yOiBjb2xvcixcbiAgICAgIH07XG4gICAgfSksXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0cmFuc2Zvcm1EYXRhVG9CdWJibGUoY2hhcnREYXRhOiBEaWFncmFtRGF0YUNvbnRhaW5lcik6IGFueSB7XG4gIHJldHVybiB7XG4gICAgZGF0YXNldHM6IGNoYXJ0RGF0YS5pdGVtcy5tYXAoKGRhdGFzZXQpID0+IHtcbiAgICAgIGNvbnN0IGNvbG9yID0gZGF0YXNldC5jb2xvciB8fCBnZW5lcmF0ZVJhbmRvbUNvbG9yKCk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBsYWJlbDogZGF0YXNldC5sYWJlbCxcbiAgICAgICAgZGF0YTogZGF0YXNldC5pdGVtcy5tYXAoKGl0ZW0pID0+ICh7XG4gICAgICAgICAgeDogaXRlbS54VmFsdWUsXG4gICAgICAgICAgeTogaXRlbS55VmFsdWUsXG4gICAgICAgICAgcjogaXRlbS5yVmFsdWUgPz8gNSxcbiAgICAgICAgfSkpLFxuICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IGNvbG9yLFxuICAgICAgICBib3JkZXJDb2xvcjogY29sb3IsXG4gICAgICB9O1xuICAgIH0pLFxuICB9O1xufVxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUJhc2ljT3B0aW9ucygpOiBhbnkge1xuICByZXR1cm4ge1xuICAgIHNjYWxlczoge1xuICAgICAgeToge1xuICAgICAgICBiZWdpbkF0WmVybzogdHJ1ZSxcbiAgICAgICAgZ3JhY2U6ICc1JScsXG4gICAgICB9LFxuICAgIH0sXG4gICAgZGV2aWNlUGl4ZWxSYXRpbzogMixcbiAgICBhc3BlY3RSYXRpbzogMS43OCxcbiAgICByZXNwb25zaXZlOiB0cnVlLFxuICB9O1xufVxuXG5leHBvcnQgY29uc3QgYmFyQ2hhcnQ6IERpYWdyYW1GYWN0b3J5ID0ge1xuICBjaGFydFR5cGU6ICdiYXInLFxuICBjaGFydEpzVHlwZTogJ2JhcicsXG4gIGNyZWF0ZU9wdGlvbnM6IGNyZWF0ZUJhc2ljT3B0aW9ucyxcbiAgdHJhbnNmb3JtRGF0YTogdHJhbnNmb3JtRGF0YVRvQmFyTGlrZURhdGFTZXQsXG59O1xuXG5leHBvcnQgY29uc3QgaG9yaXpvbnRhbEJhckNoYXJ0OiBEaWFncmFtRmFjdG9yeSA9IHtcbiAgY2hhcnRUeXBlOiAnaG9yaXpvbnRhbEJhcicsXG4gIGNoYXJ0SnNUeXBlOiAnYmFyJyxcbiAgY3JlYXRlT3B0aW9uczogKCkgPT5cbiAgICBkZWVwTWVyZ2UoY3JlYXRlQmFzaWNPcHRpb25zKCksIHtcbiAgICAgIGluZGV4QXhpczogJ3knLFxuICAgICAgbGF5b3V0OiB7XG4gICAgICAgIHBhZGRpbmc6IHtcbiAgICAgICAgICByaWdodDogNSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSksXG4gIHRyYW5zZm9ybURhdGE6IHRyYW5zZm9ybURhdGFUb0Jhckxpa2VEYXRhU2V0LFxufTtcblxuZXhwb3J0IGNvbnN0IHN0YWNrZWRCYXJDaGFydDogRGlhZ3JhbUZhY3RvcnkgPSB7XG4gIGNoYXJ0VHlwZTogJ3N0YWNrZWRCYXInLFxuICBjaGFydEpzVHlwZTogJ2JhcicsXG4gIGNyZWF0ZU9wdGlvbnM6ICgpID0+XG4gICAgZGVlcE1lcmdlKGNyZWF0ZUJhc2ljT3B0aW9ucygpLCB7XG4gICAgICBzY2FsZXM6IHtcbiAgICAgICAgeDogeyBzdGFja2VkOiB0cnVlIH0sXG4gICAgICAgIHk6IHsgc3RhY2tlZDogdHJ1ZSB9LFxuICAgICAgfSxcbiAgICB9KSxcbiAgdHJhbnNmb3JtRGF0YTogdHJhbnNmb3JtRGF0YVRvQmFzaWNEYXRhU2V0cyxcbn07XG5cbmV4cG9ydCBjb25zdCBob3Jpem9udGFsU3RhY2tlZEJhckNoYXJ0OiBEaWFncmFtRmFjdG9yeSA9IHtcbiAgY2hhcnRUeXBlOiAnaG9yaXpvbnRhbFN0YWNrZWRCYXInLFxuICBjaGFydEpzVHlwZTogJ2JhcicsXG4gIGNyZWF0ZU9wdGlvbnM6ICgpID0+XG4gICAgZGVlcE1lcmdlKGNyZWF0ZUJhc2ljT3B0aW9ucygpLCB7XG4gICAgICBpbmRleEF4aXM6ICd5JyxcbiAgICAgIHNjYWxlczoge1xuICAgICAgICB4OiB7IHN0YWNrZWQ6IHRydWUgfSxcbiAgICAgICAgeToge1xuICAgICAgICAgIHN0YWNrZWQ6IHRydWUsXG4gICAgICAgICAgdGlja3M6IHtcbiAgICAgICAgICAgIGF1dG9Ta2lwOiBmYWxzZSxcbiAgICAgICAgICAgIGNhbGxiYWNrOiBmdW5jdGlvbiAodmFsdWU6IGFueSwgaW5kZXg6IGFueSwgdGlja3M6IGFueSkge1xuICAgICAgICAgICAgICBjb25zdCBsYWJlbCA9ICh0aGlzIGFzIGFueSkuZ2V0TGFiZWxGb3JWYWx1ZSh2YWx1ZSk7XG4gICAgICAgICAgICAgIGNvbnN0IG1heCA9IDEwO1xuICAgICAgICAgICAgICBpZiAoIWxhYmVsKSByZXR1cm4gJyc7XG4gICAgICAgICAgICAgIGlmIChsYWJlbC5sZW5ndGggPD0gbWF4KSByZXR1cm4gbGFiZWw7XG4gICAgICAgICAgICAgIHJldHVybiBsYWJlbC5zcGxpdCgnICcpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIGxheW91dDogeyBwYWRkaW5nOiB7IHJpZ2h0OiA1IH0gfSxcbiAgICB9KSxcbiAgdHJhbnNmb3JtRGF0YTogdHJhbnNmb3JtRGF0YVRvQmFzaWNEYXRhU2V0cyxcbn07XG5cbmV4cG9ydCBjb25zdCBwaWVDaGFydDogRGlhZ3JhbUZhY3RvcnkgPSB7XG4gIGNoYXJ0VHlwZTogJ3BpZScsXG4gIGNoYXJ0SnNUeXBlOiAncGllJyxcbiAgY3JlYXRlT3B0aW9uczogKCkgPT4ge1xuICAgIHJldHVybiB7XG4gICAgICByYWRpdXM6ICc5NSUnLFxuICAgICAgbGF5b3V0OiB7XG4gICAgICAgIHBhZGRpbmc6IDAsXG4gICAgICB9LFxuICAgICAgYXNwZWN0UmF0aW86IDEsXG4gICAgICByZXNwb25zaXZlOiB0cnVlLFxuICAgIH07XG4gIH0sXG4gIHRyYW5zZm9ybURhdGE6IHRyYW5zZm9ybURhdGFUb0Jhckxpa2VEYXRhU2V0LFxufTtcblxuZXhwb3J0IGNvbnN0IGRvdWdobnV0Q2hhcnQ6IERpYWdyYW1GYWN0b3J5ID0ge1xuICBjaGFydFR5cGU6ICdkb3VnaG51dCcsXG4gIGNoYXJ0SnNUeXBlOiAnZG91Z2hudXQnLFxuICBjcmVhdGVPcHRpb25zOiAoKSA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHJhZGl1czogJzk1JScsXG4gICAgICBsYXlvdXQ6IHtcbiAgICAgICAgcGFkZGluZzogMCxcbiAgICAgIH0sXG4gICAgICBhc3BlY3RSYXRpbzogMSxcbiAgICAgIHJlc3BvbnNpdmU6IHRydWUsXG4gICAgfTtcbiAgfSxcbiAgdHJhbnNmb3JtRGF0YTogdHJhbnNmb3JtRGF0YVRvQmFyTGlrZURhdGFTZXQsXG59O1xuXG5leHBvcnQgY29uc3QgcG9sYXJBcmVhQ2hhcnQ6IERpYWdyYW1GYWN0b3J5ID0ge1xuICBjaGFydFR5cGU6ICdwb2xhckFyZWEnLFxuICBjaGFydEpzVHlwZTogJ3BvbGFyQXJlYScsXG4gIGNyZWF0ZU9wdGlvbnM6ICgpID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgcmFkaXVzOiAnOTUlJyxcbiAgICAgIGxheW91dDoge1xuICAgICAgICBwYWRkaW5nOiAwLFxuICAgICAgfSxcbiAgICAgIGFzcGVjdFJhdGlvOiAxLFxuICAgICAgcmVzcG9uc2l2ZTogdHJ1ZSxcbiAgICB9O1xuICB9LFxuICB0cmFuc2Zvcm1EYXRhOiAoY2hhcnREYXRhOiBEaWFncmFtRGF0YUNvbnRhaW5lcik6IGFueSA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGxhYmVsczogY2hhcnREYXRhLmxhYmVscyxcbiAgICAgIGRhdGFzZXRzOiBjaGFydERhdGEuaXRlbXMubWFwKChkYXRhc2V0KSA9PiAoe1xuICAgICAgICBkYXRhOiBkYXRhc2V0Lml0ZW1zLm1hcCgoaXRlbSkgPT4gaXRlbS54VmFsdWUpLFxuICAgICAgICBsYWJlbDogZGF0YXNldC5sYWJlbCxcbiAgICAgICAgYm9yZGVyQ29sb3I6IGRhdGFzZXQuaXRlbXMubWFwKChpdGVtKSA9PiBpdGVtLml0ZW1Db2xvciksXG4gICAgICAgIGJhY2tncm91bmRDb2xvcjogZGF0YXNldC5pdGVtcy5tYXAoKGl0ZW0pID0+IGl0ZW0uaXRlbUNvbG9yKSxcbiAgICAgIH0pKSxcbiAgICB9O1xuICB9LFxufTtcblxuZXhwb3J0IGNvbnN0IHJhZGFyQ2hhcnQ6IERpYWdyYW1GYWN0b3J5ID0ge1xuICBjaGFydFR5cGU6ICdyYWRhcicsXG4gIGNoYXJ0SnNUeXBlOiAncmFkYXInLFxuICBjcmVhdGVPcHRpb25zOiAoKSA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGFzcGVjdFJhdGlvOiAxLFxuICAgICAgcmVzcG9uc2l2ZTogdHJ1ZSxcbiAgICB9O1xuICB9LFxuICB0cmFuc2Zvcm1EYXRhOiAoY2hhcnREYXRhOiBEaWFncmFtRGF0YUNvbnRhaW5lcik6IGFueSA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGxhYmVsczogY2hhcnREYXRhLmxhYmVscyxcbiAgICAgIGRhdGFzZXRzOiBjaGFydERhdGEuaXRlbXMubWFwKChkYXRhc2V0KSA9PiAoe1xuICAgICAgICBkYXRhOiBkYXRhc2V0Lml0ZW1zLm1hcCgoaXRlbSkgPT4gaXRlbS54VmFsdWUpLFxuICAgICAgICBsYWJlbDogZGF0YXNldC5sYWJlbCxcbiAgICAgICAgYm9yZGVyQ29sb3I6IGRhdGFzZXQuY29sb3IsXG4gICAgICAgIHBvaW50QmFja2dyb3VuZENvbG9yOiBkYXRhc2V0LmNvbG9yLFxuICAgICAgICBwb2ludEJvcmRlckNvbG9yOiBkYXRhc2V0LmNvbG9yLFxuICAgICAgICBwb2ludEhvdmVyQmFja2dyb3VuZENvbG9yOiAnIzAwMDAwMCcsXG4gICAgICAgIHBvaW50SG92ZXJCb3JkZXJDb2xvcjogZGF0YXNldC5jb2xvcixcbiAgICAgIH0pKSxcbiAgICB9O1xuICB9LFxufTtcblxuZXhwb3J0IGNvbnN0IHNjYXR0ZXJDaGFydDogRGlhZ3JhbUZhY3RvcnkgPSB7XG4gIGNoYXJ0VHlwZTogJ3NjYXR0ZXInLFxuICBjaGFydEpzVHlwZTogJ3NjYXR0ZXInLFxuICBjcmVhdGVPcHRpb25zOiAoKSA9PlxuICAgIGRlZXBNZXJnZShjcmVhdGVCYXNpY09wdGlvbnMoKSwge1xuICAgICAgc2NhbGVzOiB7XG4gICAgICAgIHk6IHtcbiAgICAgICAgICBiZWdpbkF0WmVybzogdHJ1ZSxcbiAgICAgICAgICBncmFjZTogJzUlJyxcbiAgICAgICAgfSxcbiAgICAgICAgeDoge1xuICAgICAgICAgIGJlZ2luQXRaZXJvOiB0cnVlLFxuICAgICAgICAgIGdyYWNlOiAnNSUnLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9KSxcbiAgdHJhbnNmb3JtRGF0YTogdHJhbnNmb3JtRGF0YVRvU2NhdHRlcixcbn07XG5cbmV4cG9ydCBjb25zdCBidWJibGVDaGFydDogRGlhZ3JhbUZhY3RvcnkgPSB7XG4gIGNoYXJ0VHlwZTogJ2J1YmJsZScsXG4gIGNoYXJ0SnNUeXBlOiAnYnViYmxlJyxcbiAgY3JlYXRlT3B0aW9uczogKCkgPT5cbiAgICBkZWVwTWVyZ2UoY3JlYXRlQmFzaWNPcHRpb25zKCksIHtcbiAgICAgIHNjYWxlczoge1xuICAgICAgICB5OiB7XG4gICAgICAgICAgYmVnaW5BdFplcm86IHRydWUsXG4gICAgICAgICAgZ3JhY2U6ICc1JScsXG4gICAgICAgIH0sXG4gICAgICAgIHg6IHtcbiAgICAgICAgICBiZWdpbkF0WmVybzogdHJ1ZSxcbiAgICAgICAgICBncmFjZTogJzUlJyxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSksXG4gIHRyYW5zZm9ybURhdGE6IHRyYW5zZm9ybURhdGFUb0J1YmJsZSxcbn07XG5cbmV4cG9ydCBjb25zdCBtdWx0aUF4aXNMaW5lQ2hhcnQ6IERpYWdyYW1GYWN0b3J5ID0ge1xuICBjaGFydFR5cGU6ICdtdWx0aUF4aXNMaW5lJyxcbiAgY2hhcnRKc1R5cGU6ICdsaW5lJyxcbiAgY3JlYXRlT3B0aW9uczogKGNoYXJ0RGF0YTogRGlhZ3JhbURhdGFDb250YWluZXIpOiBhbnkgPT4ge1xuICAgIGNvbnN0IHlBeGVzID0gY2hhcnREYXRhLml0ZW1zLm1hcCgoZGF0YXNldCwgaW5kZXgpID0+ICh7XG4gICAgICBpZDogYHkke2luZGV4ID09IDEgPyAnJyA6IGluZGV4fWAsXG4gICAgICB0eXBlOiAnbGluZWFyJyxcbiAgICAgIHBvc2l0aW9uOiBpbmRleCAlIDIgPT09IDAgPyAnbGVmdCcgOiAncmlnaHQnLFxuICAgIH0pKTtcbiAgICByZXR1cm4ge1xuICAgICAgc2NhbGVzOiB7XG4gICAgICAgIC4uLnlBeGVzLnJlZHVjZSgoYWNjOiBhbnksIGF4aXMpID0+IHtcbiAgICAgICAgICBhY2NbYXhpcy5pZF0gPSBheGlzO1xuICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgIH0sIHt9KSxcbiAgICAgIH0sXG4gICAgICBhc3BlY3RSYXRpbzogMS43OCxcbiAgICAgIHJlc3BvbnNpdmU6IHRydWUsXG4gICAgICBtYWludGFpbkFzcGVjdFJhdGlvOiB0cnVlLFxuICAgIH07XG4gIH0sXG4gIHRyYW5zZm9ybURhdGE6IChjaGFydERhdGE6IERpYWdyYW1EYXRhQ29udGFpbmVyKTogYW55ID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgbGFiZWxzOiBjaGFydERhdGEubGFiZWxzLFxuICAgICAgZGF0YXNldHM6IGNoYXJ0RGF0YS5pdGVtcy5tYXAoKGRhdGFzZXQsIGluZGV4KSA9PiAoe1xuICAgICAgICBkYXRhOiBkYXRhc2V0Lml0ZW1zLm1hcCgoaXRlbSkgPT4gaXRlbS54VmFsdWUpLFxuICAgICAgICBsYWJlbDogZGF0YXNldC5sYWJlbCxcbiAgICAgICAgeUF4aXNJRDogYHkke2luZGV4ID09IDEgPyAnJyA6IGluZGV4fWAsXG4gICAgICAgIGJhY2tncm91bmRDb2xvcjogZGF0YXNldC5jb2xvcixcbiAgICAgICAgYm9yZGVyQ29sb3I6IGRhdGFzZXQuY29sb3IsXG4gICAgICB9KSksXG4gICAgfTtcbiAgfSxcbn07XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBEZWZhdWx0Q2hhcnRPcHRpb25zUHJvdmlkZXIge1xuICBwcml2YXRlIHJlYWRvbmx5IGZhY3Rvcmllc0J5VHlwZTogTWFwPHN0cmluZywgRGlhZ3JhbUZhY3Rvcnk+O1xuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KENVU1RPTV9ESUFHUkFNX09QVElPTlMpXG4gICAgQE9wdGlvbmFsKClcbiAgICBmYWN0b3JpZXM6IERpYWdyYW1GYWN0b3J5W10gfCB1bmRlZmluZWRcbiAgKSB7XG4gICAgdGhpcy5mYWN0b3JpZXNCeVR5cGUgPSBuZXcgTWFwKGZhY3Rvcmllcz8ubWFwKChmKSA9PiBbZi5jaGFydFR5cGUsIGZdKSA/PyBbXSk7XG4gIH1cblxuICBnZXRGYWN0b3J5KGNoYXJ0VHlwZTogc3RyaW5nKTogRGlhZ3JhbUZhY3Rvcnkge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLmZhY3Rvcmllc0J5VHlwZS5nZXQoY2hhcnRUeXBlKSA/PyB7XG4gICAgICAgIGNoYXJ0VHlwZTogY2hhcnRUeXBlLFxuICAgICAgICBjaGFydEpzVHlwZTogY2hhcnRUeXBlLFxuICAgICAgICB0cmFuc2Zvcm1EYXRhOiB0cmFuc2Zvcm1EYXRhVG9CYXNpY0RhdGFTZXRzLFxuICAgICAgICBjcmVhdGVPcHRpb25zOiBjcmVhdGVCYXNpY09wdGlvbnMsXG4gICAgICB9XG4gICAgKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBnZW5lcmF0ZVJhbmRvbUNvbG9yKCk6IHN0cmluZyB7XG4gIGNvbnN0IHJhbmRvbSA9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDE2Nzc3MjE1KS50b1N0cmluZygxNik7XG4gIHJldHVybiBgIyR7JzAwMDAwMCcuc3Vic3RyaW5nKDAsIDYgLSByYW5kb20ubGVuZ3RoKSArIHJhbmRvbX1gO1xufVxuIl19