@igo2/geo 16.0.0-rc.0 → 16.0.0-rc.2

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 (555) hide show
  1. package/esm2022/lib/catalog/catalog-browser/catalog-browser-group.component.mjs +7 -7
  2. package/esm2022/lib/catalog/catalog-browser/catalog-browser-layer.component.mjs +7 -7
  3. package/esm2022/lib/catalog/catalog-browser/catalog-browser.component.mjs +4 -4
  4. package/esm2022/lib/catalog/catalog-browser/catalog-browser.module.mjs +6 -6
  5. package/esm2022/lib/catalog/catalog-library/add-catalog-dialog.component.mjs +5 -5
  6. package/esm2022/lib/catalog/catalog-library/catalog-library-item.component.mjs +2 -2
  7. package/esm2022/lib/catalog/catalog-library/catalog-library.component.mjs +3 -3
  8. package/esm2022/lib/catalog/catalog-library/catalog-library.module.mjs +13 -13
  9. package/esm2022/lib/catalog/catalog.module.mjs +3 -3
  10. package/esm2022/lib/catalog/shared/catalog.abstract.mjs +1 -1
  11. package/esm2022/lib/catalog/shared/catalog.enum.mjs +1 -1
  12. package/esm2022/lib/catalog/shared/catalog.interface.mjs +1 -1
  13. package/esm2022/lib/catalog/shared/catalog.service.mjs +7 -8
  14. package/esm2022/lib/catalog/shared/catalogs.mjs +1 -1
  15. package/esm2022/lib/datasource/datasource.module.mjs +1 -1
  16. package/esm2022/lib/datasource/shared/capabilities.service.mjs +10 -10
  17. package/esm2022/lib/datasource/shared/datasource.service.mjs +9 -9
  18. package/esm2022/lib/datasource/shared/datasources/any-datasource.interface.mjs +1 -1
  19. package/esm2022/lib/datasource/shared/datasources/any-datasource.mjs +1 -1
  20. package/esm2022/lib/datasource/shared/datasources/arcgisrest-datasource.mjs +2 -2
  21. package/esm2022/lib/datasource/shared/datasources/carto-datasource.mjs +2 -2
  22. package/esm2022/lib/datasource/shared/datasources/cluster-datasource.interface.mjs +1 -1
  23. package/esm2022/lib/datasource/shared/datasources/cluster-datasource.mjs +2 -2
  24. package/esm2022/lib/datasource/shared/datasources/data.service.mjs +1 -1
  25. package/esm2022/lib/datasource/shared/datasources/datasource.interface.mjs +1 -1
  26. package/esm2022/lib/datasource/shared/datasources/datasource.mjs +1 -1
  27. package/esm2022/lib/datasource/shared/datasources/feature-datasource.interface.mjs +1 -1
  28. package/esm2022/lib/datasource/shared/datasources/feature-datasource.mjs +2 -2
  29. package/esm2022/lib/datasource/shared/datasources/imagearcgisrest-datasource.interface.mjs +1 -1
  30. package/esm2022/lib/datasource/shared/datasources/imagearcgisrest-datasource.mjs +2 -2
  31. package/esm2022/lib/datasource/shared/datasources/mvt-datasource.mjs +4 -4
  32. package/esm2022/lib/datasource/shared/datasources/tilearcgisrest-datasource.mjs +2 -2
  33. package/esm2022/lib/datasource/shared/datasources/tiledebug-datasource.interface.mjs +1 -1
  34. package/esm2022/lib/datasource/shared/datasources/websocket-datasource.interface.mjs +1 -1
  35. package/esm2022/lib/datasource/shared/datasources/websocket-datasource.mjs +1 -1
  36. package/esm2022/lib/datasource/shared/datasources/wfs-datasource.interface.mjs +1 -1
  37. package/esm2022/lib/datasource/shared/datasources/wfs-datasource.mjs +4 -19
  38. package/esm2022/lib/datasource/shared/datasources/wfs.service.mjs +5 -5
  39. package/esm2022/lib/datasource/shared/datasources/wms-datasource.interface.mjs +1 -1
  40. package/esm2022/lib/datasource/shared/datasources/wms-datasource.mjs +5 -5
  41. package/esm2022/lib/datasource/shared/datasources/wms-wfs.utils.mjs +7 -7
  42. package/esm2022/lib/datasource/shared/datasources/wmts-datasource.interface.mjs +1 -1
  43. package/esm2022/lib/datasource/shared/datasources/wmts-datasource.mjs +1 -1
  44. package/esm2022/lib/datasource/shared/datasources/xyz-datasource.interface.mjs +1 -1
  45. package/esm2022/lib/datasource/shared/datasources/xyz-datasource.mjs +1 -1
  46. package/esm2022/lib/datasource/shared/options/options-api.providers.mjs +2 -2
  47. package/esm2022/lib/datasource/shared/options/options-api.service.mjs +2 -2
  48. package/esm2022/lib/datasource/shared/options/options.service.mjs +1 -1
  49. package/esm2022/lib/datasource/utils/tilegrid.mjs +3 -3
  50. package/esm2022/lib/directions/directions-buttons/directions-buttons.component.mjs +4 -4
  51. package/esm2022/lib/directions/directions-inputs/directions-inputs.component.mjs +6 -6
  52. package/esm2022/lib/directions/directions-results/directions-results.component.mjs +5 -5
  53. package/esm2022/lib/directions/directions-sources/directions-source.interface.mjs +1 -1
  54. package/esm2022/lib/directions/directions-sources/directions-source.mjs +1 -1
  55. package/esm2022/lib/directions/directions-sources/osrm-directions-source.mjs +4 -4
  56. package/esm2022/lib/directions/directions.component.mjs +50 -25
  57. package/esm2022/lib/directions/directions.module.mjs +10 -6
  58. package/esm2022/lib/directions/shared/directions.interface.mjs +1 -1
  59. package/esm2022/lib/directions/shared/directions.service.mjs +10 -11
  60. package/esm2022/lib/directions/shared/directions.utils.mjs +7 -7
  61. package/esm2022/lib/directions/shared/store.mjs +1 -1
  62. package/esm2022/lib/download/download-button/download-button.component.mjs +3 -3
  63. package/esm2022/lib/download/download.module.mjs +2 -2
  64. package/esm2022/lib/download/shared/download.service.mjs +3 -3
  65. package/esm2022/lib/draw/draw/draw-layer-popup.component.mjs +2 -2
  66. package/esm2022/lib/draw/draw/draw-popup.component.mjs +9 -9
  67. package/esm2022/lib/draw/draw/draw-shorcuts.component.mjs +2 -2
  68. package/esm2022/lib/draw/draw/draw.component.mjs +28 -28
  69. package/esm2022/lib/draw/draw/draw.module.mjs +15 -15
  70. package/esm2022/lib/draw/drawingTool.module.mjs +1 -1
  71. package/esm2022/lib/draw/shared/draw-icon.service.mjs +1 -1
  72. package/esm2022/lib/draw/shared/draw.enum.mjs +1 -1
  73. package/esm2022/lib/draw/shared/draw.interface.mjs +1 -1
  74. package/esm2022/lib/draw/shared/draw.utils.mjs +6 -6
  75. package/esm2022/lib/environment/environment.interface.mjs +2 -0
  76. package/esm2022/lib/environment/index.mjs +2 -0
  77. package/esm2022/lib/feature/feature-details/feature-details.component.mjs +8 -8
  78. package/esm2022/lib/feature/feature-details/feature-details.directive.mjs +3 -3
  79. package/esm2022/lib/feature/feature-details/feature-details.module.mjs +3 -3
  80. package/esm2022/lib/feature/feature-form/feature-form.component.mjs +4 -4
  81. package/esm2022/lib/feature/feature-form/feature-form.module.mjs +2 -2
  82. package/esm2022/lib/feature/feature.module.mjs +2 -2
  83. package/esm2022/lib/feature/shared/feature.interfaces.mjs +1 -1
  84. package/esm2022/lib/feature/shared/feature.utils.mjs +7 -7
  85. package/esm2022/lib/feature/shared/store.mjs +3 -3
  86. package/esm2022/lib/feature/shared/strategies/geo-properties.mjs +4 -4
  87. package/esm2022/lib/feature/shared/strategies/in-map-extent.mjs +10 -22
  88. package/esm2022/lib/feature/shared/strategies/in-map-resolution.mjs +5 -2
  89. package/esm2022/lib/feature/shared/strategies/loading-layer.mjs +1 -1
  90. package/esm2022/lib/feature/shared/strategies/loading.mjs +1 -1
  91. package/esm2022/lib/feature/shared/strategies/search.mjs +2 -2
  92. package/esm2022/lib/feature/shared/strategies/selection.mjs +5 -5
  93. package/esm2022/lib/feature/shared/strategies.utils.mjs +2 -2
  94. package/esm2022/lib/filter/filter.module.mjs +21 -21
  95. package/esm2022/lib/filter/ogc-filter-button/ogc-filter-button.component.mjs +3 -3
  96. package/esm2022/lib/filter/ogc-filter-form/ogc-filter-form.component.mjs +5 -5
  97. package/esm2022/lib/filter/ogc-filter-selection/ogc-filter-selection.component.mjs +8 -8
  98. package/esm2022/lib/filter/ogc-filter-time/ogc-filter-time-slider.component.mjs +6 -6
  99. package/esm2022/lib/filter/ogc-filter-time/ogc-filter-time.component.mjs +5 -5
  100. package/esm2022/lib/filter/ogc-filterable-form/ogc-filterable-form.component.mjs +24 -4
  101. package/esm2022/lib/filter/ogc-filterable-item/ogc-filterable-item.component.mjs +4 -4
  102. package/esm2022/lib/filter/ogc-filterable-list/ogc-filterable-list-binding.directive.mjs +1 -1
  103. package/esm2022/lib/filter/ogc-filterable-list/ogc-filterable-list.component.mjs +3 -3
  104. package/esm2022/lib/filter/shared/filterable-datasource.pipe.mjs +1 -1
  105. package/esm2022/lib/filter/shared/ogc-filter-time.service.mjs +1 -1
  106. package/esm2022/lib/filter/shared/ogc-filter.enum.mjs +1 -1
  107. package/esm2022/lib/filter/shared/ogc-filter.interface.mjs +1 -1
  108. package/esm2022/lib/filter/shared/ogc-filter.mjs +5 -5
  109. package/esm2022/lib/filter/shared/ogc-filter.service.mjs +1 -1
  110. package/esm2022/lib/filter/shared/spatial-filter.enum.mjs +1 -1
  111. package/esm2022/lib/filter/shared/spatial-filter.service.mjs +2 -2
  112. package/esm2022/lib/filter/shared/time-filter.enum.mjs +1 -1
  113. package/esm2022/lib/filter/shared/time-filter.interface.mjs +1 -1
  114. package/esm2022/lib/filter/shared/time-filter.service.mjs +2 -2
  115. package/esm2022/lib/filter/spatial-filter/spatial-filter-item/spatial-filter-item.component.mjs +14 -14
  116. package/esm2022/lib/filter/spatial-filter/spatial-filter-list/spatial-filter-list.component.mjs +7 -7
  117. package/esm2022/lib/filter/spatial-filter/spatial-filter-type/spatial-filter-type.component.mjs +4 -4
  118. package/esm2022/lib/filter/time-filter-button/time-filter-button.component.mjs +3 -3
  119. package/esm2022/lib/filter/time-filter-form/time-filter-form.component.mjs +4 -4
  120. package/esm2022/lib/filter/time-filter-item/time-filter-item.component.mjs +3 -3
  121. package/esm2022/lib/filter/time-filter-list/time-filter-list-binding.directive.mjs +1 -1
  122. package/esm2022/lib/filter/time-filter-list/time-filter-list.component.mjs +3 -3
  123. package/esm2022/lib/geo.module.mjs +4 -4
  124. package/esm2022/lib/geometry/geometry-form-field/geometry-form-field-input.component.mjs +8 -8
  125. package/esm2022/lib/geometry/geometry-form-field/geometry-form-field.component.mjs +2 -2
  126. package/esm2022/lib/geometry/geometry-form-field/geometry-form-field.module.mjs +3 -3
  127. package/esm2022/lib/geometry/geometry.module.mjs +2 -2
  128. package/esm2022/lib/geometry/shared/controls/draw.mjs +6 -6
  129. package/esm2022/lib/geometry/shared/controls/modify.mjs +8 -8
  130. package/esm2022/lib/geometry/shared/controls/slice.mjs +2 -2
  131. package/esm2022/lib/geometry/shared/geometry.errors.mjs +1 -1
  132. package/esm2022/lib/geometry/shared/geometry.interfaces.mjs +1 -1
  133. package/esm2022/lib/geometry/shared/geometry.utils.mjs +5 -5
  134. package/esm2022/lib/import-export/export-button/export-button.component.mjs +4 -4
  135. package/esm2022/lib/import-export/import-export/import-export.component.mjs +38 -38
  136. package/esm2022/lib/import-export/import-export.module.mjs +3 -3
  137. package/esm2022/lib/import-export/shared/drop-geo-file.directive.mjs +10 -21
  138. package/esm2022/lib/import-export/shared/export.interface.mjs +1 -1
  139. package/esm2022/lib/import-export/shared/export.service.mjs +4 -4
  140. package/esm2022/lib/import-export/shared/export.type.mjs +1 -1
  141. package/esm2022/lib/import-export/shared/export.utils.mjs +2 -2
  142. package/esm2022/lib/import-export/shared/import.errors.mjs +1 -1
  143. package/esm2022/lib/import-export/shared/import.interface.mjs +1 -1
  144. package/esm2022/lib/import-export/shared/import.service.mjs +4 -4
  145. package/esm2022/lib/import-export/shared/import.utils.mjs +5 -5
  146. package/esm2022/lib/layer/layer-item/layer-item.component.mjs +3 -3
  147. package/esm2022/lib/layer/layer-legend/layer-legend.component.mjs +7 -7
  148. package/esm2022/lib/layer/layer-legend-item/layer-legend-item.component.mjs +4 -4
  149. package/esm2022/lib/layer/layer-legend-list/layer-legend-list-binding.directive.mjs +2 -2
  150. package/esm2022/lib/layer/layer-legend-list/layer-legend-list.component.mjs +4 -4
  151. package/esm2022/lib/layer/layer-list/layer-list-binding.directive.mjs +4 -4
  152. package/esm2022/lib/layer/layer-list/layer-list.component.mjs +9 -9
  153. package/esm2022/lib/layer/layer-list/layer-list.enum.mjs +1 -1
  154. package/esm2022/lib/layer/layer-list-tool/layer-list-tool.component.mjs +2 -2
  155. package/esm2022/lib/layer/layer-list-tool/layer-list-tool.service.mjs +1 -1
  156. package/esm2022/lib/layer/layer.module.mjs +9 -9
  157. package/esm2022/lib/layer/shared/clusterParam.mjs +1 -1
  158. package/esm2022/lib/layer/shared/layer.service.mjs +11 -11
  159. package/esm2022/lib/layer/shared/layers/any-layer.interface.mjs +1 -1
  160. package/esm2022/lib/layer/shared/layers/any-layer.mjs +1 -1
  161. package/esm2022/lib/layer/shared/layers/image-layer.interface.mjs +1 -1
  162. package/esm2022/lib/layer/shared/layers/image-layer.mjs +1 -1
  163. package/esm2022/lib/layer/shared/layers/layer.interface.mjs +1 -1
  164. package/esm2022/lib/layer/shared/layers/layer.mjs +1 -1
  165. package/esm2022/lib/layer/shared/layers/legend.interface.mjs +1 -1
  166. package/esm2022/lib/layer/shared/layers/tile-layer.interface.mjs +1 -1
  167. package/esm2022/lib/layer/shared/layers/tile-layer.mjs +1 -1
  168. package/esm2022/lib/layer/shared/layers/vector-layer.interface.mjs +1 -1
  169. package/esm2022/lib/layer/shared/layers/vector-layer.mjs +44 -33
  170. package/esm2022/lib/layer/shared/layers/vectortile-layer.interface.mjs +1 -1
  171. package/esm2022/lib/layer/shared/layers/vectortile-layer.mjs +2 -2
  172. package/esm2022/lib/layer/track-feature-button/track-feature-button.component.mjs +3 -3
  173. package/esm2022/lib/layer/utils/image-watcher.mjs +2 -2
  174. package/esm2022/lib/layer/utils/layer.utils.mjs +1 -1
  175. package/esm2022/lib/layer/utils/outputLegend.mjs +1 -1
  176. package/esm2022/lib/layer/utils/tile-watcher.mjs +2 -2
  177. package/esm2022/lib/layer/utils/vector-watcher.mjs +2 -2
  178. package/esm2022/lib/map/baselayers-switcher/baselayers-switcher.animation.mjs +2 -2
  179. package/esm2022/lib/map/baselayers-switcher/baselayers-switcher.component.mjs +4 -4
  180. package/esm2022/lib/map/baselayers-switcher/mini-basemap.component.mjs +3 -3
  181. package/esm2022/lib/map/geolocate-button/geolocate-button.component.mjs +3 -3
  182. package/esm2022/lib/map/home-extent-button/home-extent-button.component.mjs +8 -10
  183. package/esm2022/lib/map/home-extent-button/home-extent-button.interface.mjs +2 -0
  184. package/esm2022/lib/map/home-extent-button/index.mjs +2 -1
  185. package/esm2022/lib/map/info-section/info-section.component.mjs +2 -2
  186. package/esm2022/lib/map/map-browser/map-browser.component.mjs +2 -2
  187. package/esm2022/lib/map/map-center/map-center.component.mjs +2 -2
  188. package/esm2022/lib/map/map.module.mjs +14 -14
  189. package/esm2022/lib/map/menu-button/menu-button.component.mjs +9 -20
  190. package/esm2022/lib/map/offline-button/offline-button.component.mjs +2 -2
  191. package/esm2022/lib/map/rotation-button/rotation-button.component.mjs +3 -3
  192. package/esm2022/lib/map/shared/controllers/controller.mjs +1 -1
  193. package/esm2022/lib/map/shared/controllers/geolocation.interface.mjs +1 -1
  194. package/esm2022/lib/map/shared/controllers/geolocation.mjs +8 -8
  195. package/esm2022/lib/map/shared/controllers/view.mjs +3 -3
  196. package/esm2022/lib/map/shared/hover-feature.directive.mjs +15 -15
  197. package/esm2022/lib/map/shared/linkedLayers.utils.mjs +2 -2
  198. package/esm2022/lib/map/shared/map-pointer-position.directive.mjs +4 -4
  199. package/esm2022/lib/map/shared/map.abstract.mjs +1 -1
  200. package/esm2022/lib/map/shared/map.interface.mjs +1 -1
  201. package/esm2022/lib/map/shared/map.mjs +9 -6
  202. package/esm2022/lib/map/shared/map.utils.mjs +3 -3
  203. package/esm2022/lib/map/shared/mapOffline.directive.mjs +3 -3
  204. package/esm2022/lib/map/shared/projection.interfaces.mjs +1 -1
  205. package/esm2022/lib/map/shared/projection.service.mjs +3 -3
  206. package/esm2022/lib/map/shared/projection.utils.mjs +1 -1
  207. package/esm2022/lib/map/swipe-control/swipe-control.component.mjs +3 -3
  208. package/esm2022/lib/map/utils/layer-watcher.mjs +2 -2
  209. package/esm2022/lib/map/wake-lock-button/wake-lock-button.component.mjs +4 -4
  210. package/esm2022/lib/map/zoom-button/zoom-button.component.mjs +2 -2
  211. package/esm2022/lib/measure/measure.module.mjs +1 -1
  212. package/esm2022/lib/measure/measurer/measure-format.pipe.mjs +2 -2
  213. package/esm2022/lib/measure/measurer/measurer-dialog.component.mjs +3 -3
  214. package/esm2022/lib/measure/measurer/measurer-item.component.mjs +4 -4
  215. package/esm2022/lib/measure/measurer/measurer.component.mjs +11 -11
  216. package/esm2022/lib/measure/measurer/measurer.module.mjs +6 -6
  217. package/esm2022/lib/measure/shared/measure.enum.mjs +1 -1
  218. package/esm2022/lib/measure/shared/measure.interfaces.mjs +1 -1
  219. package/esm2022/lib/measure/shared/measure.utils.mjs +7 -7
  220. package/esm2022/lib/metadata/metadata-button/metadata-button.component.mjs +4 -4
  221. package/esm2022/lib/metadata/metadata.module.mjs +4 -4
  222. package/esm2022/lib/offline/geoDB/configFileToGeoDB.service.mjs +5 -5
  223. package/esm2022/lib/offline/geoDB/geoDB.enums.mjs +1 -1
  224. package/esm2022/lib/offline/geoDB/geoDB.interface.mjs +1 -1
  225. package/esm2022/lib/offline/geoDB/geoDB.service.mjs +3 -3
  226. package/esm2022/lib/offline/layerDB/index.mjs +1 -1
  227. package/esm2022/lib/offline/layerDB/layerDB.interface.mjs +1 -1
  228. package/esm2022/lib/offline/layerDB/layerDB.service.mjs +2 -2
  229. package/esm2022/lib/offline/shared/geo-network.service.mjs +1 -8
  230. package/esm2022/lib/overlay/overlay.module.mjs +1 -1
  231. package/esm2022/lib/overlay/shared/overlay.directive.mjs +1 -1
  232. package/esm2022/lib/overlay/shared/overlay.enum.mjs +1 -1
  233. package/esm2022/lib/overlay/shared/overlay.mjs +1 -1
  234. package/esm2022/lib/overlay/shared/overlay.service.mjs +1 -1
  235. package/esm2022/lib/overlay/shared/overlay.utils.mjs +1 -1
  236. package/esm2022/lib/print/print/print.component.mjs +3 -3
  237. package/esm2022/lib/print/print-form/print-form.component.mjs +4 -4
  238. package/esm2022/lib/print/print.module.mjs +4 -4
  239. package/esm2022/lib/print/shared/geopdf.mjs +1 -1
  240. package/esm2022/lib/print/shared/print.interface.mjs +1 -1
  241. package/esm2022/lib/print/shared/print.service.mjs +9 -9
  242. package/esm2022/lib/query/query.module.mjs +3 -3
  243. package/esm2022/lib/query/shared/query-search-source.mjs +2 -2
  244. package/esm2022/lib/query/shared/query-search-source.providers.mjs +1 -1
  245. package/esm2022/lib/query/shared/query.directive.mjs +7 -7
  246. package/esm2022/lib/query/shared/query.interfaces.mjs +1 -1
  247. package/esm2022/lib/query/shared/query.service.mjs +10 -10
  248. package/esm2022/lib/query/shared/query.utils.mjs +1 -1
  249. package/esm2022/lib/search/search-bar/search-bar.component.mjs +6 -6
  250. package/esm2022/lib/search/search-bar/search-bar.module.mjs +2 -2
  251. package/esm2022/lib/search/search-bar/search-url-param.directive.mjs +2 -2
  252. package/esm2022/lib/search/search-results/save-feature-dialog.component.mjs +5 -5
  253. package/esm2022/lib/search/search-results/search-results-add-button.component.mjs +15 -15
  254. package/esm2022/lib/search/search-results/search-results-item.component.mjs +5 -5
  255. package/esm2022/lib/search/search-results/search-results.component.mjs +7 -7
  256. package/esm2022/lib/search/search-results/search-results.module.mjs +11 -11
  257. package/esm2022/lib/search/search-selector/search-selector.component.mjs +4 -4
  258. package/esm2022/lib/search/search-selector/search-selector.module.mjs +2 -2
  259. package/esm2022/lib/search/search-settings/search-settings.component.mjs +4 -4
  260. package/esm2022/lib/search/search-settings/search-settings.module.mjs +3 -3
  261. package/esm2022/lib/search/search.module.mjs +8 -8
  262. package/esm2022/lib/search/shared/search-pointer-summary.directive.mjs +14 -14
  263. package/esm2022/lib/search/shared/search-source-service.providers.mjs +2 -2
  264. package/esm2022/lib/search/shared/search-source.service.mjs +1 -1
  265. package/esm2022/lib/search/shared/search.interfaces.mjs +1 -1
  266. package/esm2022/lib/search/shared/search.service.mjs +3 -3
  267. package/esm2022/lib/search/shared/search.utils.mjs +1 -1
  268. package/esm2022/lib/search/shared/sources/cadastre.mjs +7 -7
  269. package/esm2022/lib/search/shared/sources/cadastre.providers.mjs +2 -2
  270. package/esm2022/lib/search/shared/sources/coordinates.interfaces.mjs +1 -1
  271. package/esm2022/lib/search/shared/sources/coordinates.mjs +11 -11
  272. package/esm2022/lib/search/shared/sources/coordinates.providers.mjs +3 -3
  273. package/esm2022/lib/search/shared/sources/icherche.mjs +6 -6
  274. package/esm2022/lib/search/shared/sources/icherche.providers.mjs +3 -3
  275. package/esm2022/lib/search/shared/sources/ilayer.interfaces.mjs +1 -1
  276. package/esm2022/lib/search/shared/sources/ilayer.mjs +8 -8
  277. package/esm2022/lib/search/shared/sources/ilayer.providers.mjs +2 -2
  278. package/esm2022/lib/search/shared/sources/nominatim.mjs +6 -6
  279. package/esm2022/lib/search/shared/sources/nominatim.providers.mjs +2 -2
  280. package/esm2022/lib/search/shared/sources/source.interfaces.mjs +1 -1
  281. package/esm2022/lib/search/shared/sources/source.mjs +1 -1
  282. package/esm2022/lib/search/shared/sources/storedqueries.interfaces.mjs +1 -1
  283. package/esm2022/lib/search/shared/sources/storedqueries.mjs +7 -7
  284. package/esm2022/lib/search/shared/sources/storedqueries.providers.mjs +2 -2
  285. package/esm2022/lib/search/shared/sources/workspace.interfaces.mjs +1 -1
  286. package/esm2022/lib/search/shared/sources/workspace.mjs +6 -6
  287. package/esm2022/lib/search/shared/sources/workspace.providers.mjs +1 -1
  288. package/esm2022/lib/style/shared/datasource/esri-style-generator.mjs +2 -2
  289. package/esm2022/lib/style/shared/feature/feature-style.mjs +1 -1
  290. package/esm2022/lib/style/shared/font.enum.mjs +1 -1
  291. package/esm2022/lib/style/shared/overlay/overlay-marker-style.utils.mjs +2 -2
  292. package/esm2022/lib/style/shared/overlay/overlay-style.utils.mjs +2 -2
  293. package/esm2022/lib/style/shared/vector/commonVectorStyle.mjs +2 -2
  294. package/esm2022/lib/style/shared/vector/conversion.utils.mjs +1 -1
  295. package/esm2022/lib/style/shared/vector/vector-style.interface.mjs +1 -1
  296. package/esm2022/lib/style/style-list/style-list.module.mjs +2 -2
  297. package/esm2022/lib/style/style-list/style-list.provider.mjs +1 -1
  298. package/esm2022/lib/style/style-list/style-list.service.mjs +3 -3
  299. package/esm2022/lib/style/style-modal/drawing/style-modal-drawing.component.mjs +24 -33
  300. package/esm2022/lib/style/style-modal/layer/style-modal-layer.component.mjs +17 -25
  301. package/esm2022/lib/style/style-modal/layer-button/style-modal-layer-button.component.mjs +3 -3
  302. package/esm2022/lib/style/style-modal/shared/style-modal.interface.mjs +1 -1
  303. package/esm2022/lib/style/style-service/draw-style.service.mjs +2 -2
  304. package/esm2022/lib/style/style-service/style.service.mjs +3 -3
  305. package/esm2022/lib/style/style.module.mjs +4 -4
  306. package/esm2022/lib/toast/toast.component.mjs +3 -3
  307. package/esm2022/lib/toast/toast.module.mjs +3 -3
  308. package/esm2022/lib/utils/googleLinks.mjs +1 -1
  309. package/esm2022/lib/utils/id-generator.mjs +2 -2
  310. package/esm2022/lib/utils/osmLinks.mjs +1 -1
  311. package/esm2022/lib/utils/propertyTypeDetector/propertyTypeDetector.interface.mjs +1 -1
  312. package/esm2022/lib/utils/propertyTypeDetector/propertyTypeDetector.service.mjs +1 -1
  313. package/esm2022/lib/wkt/shared/wkt.service.mjs +2 -2
  314. package/esm2022/lib/wkt/wkt.module.mjs +1 -1
  315. package/esm2022/lib/workspace/confirmation-popup/confirmation-popup.component.mjs +4 -4
  316. package/esm2022/lib/workspace/confirmation-popup/confirmation-popup.module.mjs +2 -2
  317. package/esm2022/lib/workspace/confirmation-popup/index.mjs +1 -1
  318. package/esm2022/lib/workspace/shared/edition-workspace.mjs +10 -15
  319. package/esm2022/lib/workspace/shared/edition-workspace.service.mjs +7 -7
  320. package/esm2022/lib/workspace/shared/feature-workspace.mjs +1 -1
  321. package/esm2022/lib/workspace/shared/feature-workspace.service.mjs +6 -6
  322. package/esm2022/lib/workspace/shared/wfs-workspace.mjs +1 -1
  323. package/esm2022/lib/workspace/shared/wfs-workspace.service.mjs +6 -6
  324. package/esm2022/lib/workspace/shared/wms-workspace.service.mjs +5 -5
  325. package/esm2022/lib/workspace/shared/workspace.utils.mjs +2 -2
  326. package/esm2022/lib/workspace/widgets/ogc-filter/ogc-filter.component.mjs +3 -3
  327. package/esm2022/lib/workspace/widgets/ogc-filter/ogc-filter.module.mjs +2 -2
  328. package/esm2022/lib/workspace/workspace-selector/workspace-selector.directive.mjs +7 -7
  329. package/esm2022/lib/workspace/workspace-selector/workspace-selector.module.mjs +2 -2
  330. package/esm2022/lib/workspace/workspace-updator/workspace-updator.directive.mjs +5 -5
  331. package/esm2022/lib/workspace/workspace-updator/workspace-updator.module.mjs +2 -2
  332. package/esm2022/lib/workspace/workspace.module.mjs +4 -4
  333. package/esm2022/public_api.mjs +2 -1
  334. package/fesm2022/igo2-geo.mjs +34336 -34355
  335. package/fesm2022/igo2-geo.mjs.map +1 -1
  336. package/geo-theme.scss +23 -21
  337. package/lib/catalog/catalog-browser/catalog-browser-group.component.d.ts +3 -3
  338. package/lib/catalog/catalog-browser/catalog-browser-layer.component.d.ts +2 -2
  339. package/lib/catalog/catalog-browser/catalog-browser.component.d.ts +3 -3
  340. package/lib/catalog/catalog-browser/catalog-browser.theming.scss +22 -0
  341. package/lib/catalog/catalog-library/add-catalog-dialog.component.d.ts +4 -4
  342. package/lib/catalog/catalog-library/catalog-library.component.d.ts +1 -1
  343. package/lib/catalog/catalog.theming.scss +5 -0
  344. package/lib/catalog/shared/catalog.abstract.d.ts +2 -2
  345. package/lib/catalog/shared/catalog.enum.d.ts +4 -0
  346. package/lib/catalog/shared/catalog.interface.d.ts +10 -5
  347. package/lib/catalog/shared/catalog.service.d.ts +2 -2
  348. package/lib/datasource/shared/capabilities.service.d.ts +2 -2
  349. package/lib/datasource/shared/datasource.service.d.ts +6 -6
  350. package/lib/datasource/shared/datasources/any-datasource.d.ts +11 -11
  351. package/lib/datasource/shared/datasources/any-datasource.interface.d.ts +10 -10
  352. package/lib/datasource/shared/datasources/arcgisrest-datasource.d.ts +2 -2
  353. package/lib/datasource/shared/datasources/carto-datasource.d.ts +1 -1
  354. package/lib/datasource/shared/datasources/cluster-datasource.d.ts +1 -1
  355. package/lib/datasource/shared/datasources/cluster-datasource.interface.d.ts +1 -1
  356. package/lib/datasource/shared/datasources/datasource.d.ts +4 -4
  357. package/lib/datasource/shared/datasources/datasource.interface.d.ts +2 -2
  358. package/lib/datasource/shared/datasources/feature-datasource.d.ts +1 -1
  359. package/lib/datasource/shared/datasources/feature-datasource.interface.d.ts +2 -2
  360. package/lib/datasource/shared/datasources/imagearcgisrest-datasource.interface.d.ts +1 -1
  361. package/lib/datasource/shared/datasources/tiledebug-datasource.interface.d.ts +1 -1
  362. package/lib/datasource/shared/datasources/websocket-datasource.d.ts +1 -1
  363. package/lib/datasource/shared/datasources/wfs-datasource.d.ts +3 -4
  364. package/lib/datasource/shared/datasources/wfs-datasource.interface.d.ts +2 -2
  365. package/lib/datasource/shared/datasources/wfs.service.d.ts +1 -1
  366. package/lib/datasource/shared/datasources/wms-datasource.d.ts +5 -5
  367. package/lib/datasource/shared/datasources/wms-datasource.interface.d.ts +2 -2
  368. package/lib/datasource/shared/datasources/wms-wfs.utils.d.ts +4 -3
  369. package/lib/datasource/shared/options/options-api.providers.d.ts +1 -1
  370. package/lib/datasource/shared/options/options-api.service.d.ts +1 -1
  371. package/lib/directions/directions-buttons/directions-buttons.component.d.ts +2 -2
  372. package/lib/directions/directions-inputs/directions-inputs.component.d.ts +3 -3
  373. package/lib/directions/directions-sources/directions-source.interface.d.ts +12 -8
  374. package/lib/directions/directions-sources/osrm-directions-source.d.ts +1 -1
  375. package/lib/directions/directions.component.d.ts +11 -3
  376. package/lib/directions/directions.module.d.ts +5 -4
  377. package/lib/directions/directions.theming.scss +6 -6
  378. package/lib/directions/shared/directions.interface.d.ts +1 -1
  379. package/lib/directions/shared/directions.service.d.ts +5 -5
  380. package/lib/directions/shared/directions.utils.d.ts +3 -3
  381. package/lib/draw/draw/draw-popup.component.d.ts +3 -3
  382. package/lib/draw/draw/draw.component.d.ts +12 -12
  383. package/lib/draw/draw.theming.scss +32 -32
  384. package/lib/draw/shared/draw-icon.service.d.ts +1 -1
  385. package/lib/draw/shared/draw.interface.d.ts +3 -3
  386. package/lib/draw/shared/draw.utils.d.ts +4 -4
  387. package/lib/environment/environment.interface.d.ts +48 -0
  388. package/lib/environment/index.d.ts +1 -0
  389. package/lib/feature/feature-details/feature-details.component.d.ts +6 -6
  390. package/lib/feature/feature-details/feature-details.directive.d.ts +2 -2
  391. package/lib/feature/feature-details/feature-details.theming.scss +16 -16
  392. package/lib/feature/feature-form/feature-form.component.d.ts +1 -1
  393. package/lib/feature/shared/feature.interfaces.d.ts +5 -5
  394. package/lib/feature/shared/feature.utils.d.ts +4 -4
  395. package/lib/feature/shared/store.d.ts +1 -1
  396. package/lib/feature/shared/strategies/geo-properties.d.ts +2 -2
  397. package/lib/feature/shared/strategies/in-map-extent.d.ts +1 -1
  398. package/lib/feature/shared/strategies/in-map-resolution.d.ts +1 -1
  399. package/lib/feature/shared/strategies/loading-layer.d.ts +1 -1
  400. package/lib/feature/shared/strategies/search.d.ts +1 -1
  401. package/lib/feature/shared/strategies/selection.d.ts +2 -2
  402. package/lib/feature/shared/strategies.utils.d.ts +1 -1
  403. package/lib/filter/filter.theming.scss +0 -3
  404. package/lib/filter/ogc-filter-form/ogc-filter-form.component.d.ts +3 -3
  405. package/lib/filter/ogc-filter-selection/ogc-filter-selection.component.d.ts +5 -5
  406. package/lib/filter/ogc-filter-selection/ogc-filter-selection.theming.scss +18 -18
  407. package/lib/filter/ogc-filter-time/ogc-filter-time-slider.component.d.ts +1 -1
  408. package/lib/filter/ogc-filter-time/ogc-filter-time.component.d.ts +1 -1
  409. package/lib/filter/ogc-filterable-form/ogc-filterable-form.component.d.ts +1 -1
  410. package/lib/filter/ogc-filterable-item/ogc-filterable-item.component.d.ts +2 -2
  411. package/lib/filter/ogc-filterable-list/ogc-filterable-list-binding.directive.d.ts +1 -1
  412. package/lib/filter/shared/ogc-filter.d.ts +5 -4
  413. package/lib/filter/shared/ogc-filter.interface.d.ts +3 -3
  414. package/lib/filter/shared/spatial-filter.service.d.ts +1 -1
  415. package/lib/filter/shared/time-filter.interface.d.ts +1 -1
  416. package/lib/filter/shared/time-filter.service.d.ts +1 -1
  417. package/lib/filter/spatial-filter/spatial-filter-item/spatial-filter-item.component.d.ts +13 -13
  418. package/lib/filter/spatial-filter/spatial-filter-list/spatial-filter-list.component.d.ts +6 -6
  419. package/lib/filter/spatial-filter/spatial-filter-type/spatial-filter-type.component.d.ts +3 -3
  420. package/lib/filter/time-filter-button/time-filter-button.component.d.ts +1 -1
  421. package/lib/filter/time-filter-form/time-filter-form.component.d.ts +2 -2
  422. package/lib/filter/time-filter-form/time-filter-form.theming.scss +5 -5
  423. package/lib/filter/time-filter-item/time-filter-item.component.d.ts +2 -2
  424. package/lib/filter/time-filter-list/time-filter-list-binding.directive.d.ts +1 -1
  425. package/lib/geometry/geometry-form-field/geometry-form-field-input.component.d.ts +4 -4
  426. package/lib/geometry/shared/controls/draw.d.ts +4 -4
  427. package/lib/geometry/shared/controls/modify.d.ts +4 -4
  428. package/lib/geometry/shared/controls/slice.d.ts +3 -3
  429. package/lib/geometry/shared/geometry.interfaces.d.ts +1 -1
  430. package/lib/geometry/shared/geometry.utils.d.ts +2 -2
  431. package/lib/import-export/export-button/export-button.component.d.ts +1 -1
  432. package/lib/import-export/import-export/import-export.component.d.ts +14 -14
  433. package/lib/import-export/shared/drop-geo-file.directive.d.ts +6 -6
  434. package/lib/import-export/shared/export.interface.d.ts +1 -1
  435. package/lib/import-export/shared/export.service.d.ts +2 -2
  436. package/lib/import-export/shared/import.interface.d.ts +1 -0
  437. package/lib/import-export/shared/import.utils.d.ts +3 -3
  438. package/lib/layer/layer-item/layer-item.component.d.ts +2 -2
  439. package/lib/layer/layer-legend/layer-legend.component.d.ts +3 -3
  440. package/lib/layer/layer-legend-item/layer-legend-item.component.d.ts +2 -2
  441. package/lib/layer/layer-legend-list/layer-legend-list-binding.directive.d.ts +1 -1
  442. package/lib/layer/layer-legend-list/layer-legend-list.component.d.ts +2 -2
  443. package/lib/layer/layer-list/layer-list-binding.directive.d.ts +2 -2
  444. package/lib/layer/layer-list/layer-list.component.d.ts +5 -5
  445. package/lib/layer/layer-list-tool/layer-list-tool.component.d.ts +1 -1
  446. package/lib/layer/layer.theming.scss +0 -7
  447. package/lib/layer/shared/layer.service.d.ts +5 -5
  448. package/lib/layer/shared/layers/any-layer.d.ts +1 -1
  449. package/lib/layer/shared/layers/any-layer.interface.d.ts +1 -1
  450. package/lib/layer/shared/layers/image-layer.d.ts +5 -5
  451. package/lib/layer/shared/layers/image-layer.interface.d.ts +3 -3
  452. package/lib/layer/shared/layers/layer.d.ts +6 -6
  453. package/lib/layer/shared/layers/layer.interface.d.ts +2 -2
  454. package/lib/layer/shared/layers/tile-layer.d.ts +6 -6
  455. package/lib/layer/shared/layers/tile-layer.interface.d.ts +8 -8
  456. package/lib/layer/shared/layers/vector-layer.d.ts +18 -11
  457. package/lib/layer/shared/layers/vector-layer.interface.d.ts +13 -13
  458. package/lib/layer/shared/layers/vectortile-layer.d.ts +3 -3
  459. package/lib/layer/shared/layers/vectortile-layer.interface.d.ts +4 -4
  460. package/lib/layer/utils/image-watcher.d.ts +1 -1
  461. package/lib/map/baselayers-switcher/mini-basemap.component.d.ts +1 -1
  462. package/lib/map/geolocate-button/geolocate-button.component.d.ts +1 -1
  463. package/lib/map/home-extent-button/home-extent-button.interface.d.ts +6 -0
  464. package/lib/map/home-extent-button/index.d.ts +1 -0
  465. package/lib/map/map-browser/map-browser.component.d.ts +1 -1
  466. package/lib/map/map-browser/map-browser.theming.scss +46 -46
  467. package/lib/map/menu-button/menu-button.component.d.ts +1 -1
  468. package/lib/map/menu-button/menu-button.theming.scss +20 -24
  469. package/lib/map/shared/controllers/controller.d.ts +1 -1
  470. package/lib/map/shared/controllers/geolocation.d.ts +5 -5
  471. package/lib/map/shared/controllers/geolocation.interface.d.ts +8 -0
  472. package/lib/map/shared/controllers/view.d.ts +2 -2
  473. package/lib/map/shared/hover-feature.directive.d.ts +8 -8
  474. package/lib/map/shared/map-pointer-position.directive.d.ts +2 -2
  475. package/lib/map/shared/map.abstract.d.ts +5 -5
  476. package/lib/map/shared/map.d.ts +14 -10
  477. package/lib/map/shared/mapOffline.directive.d.ts +2 -2
  478. package/lib/map/shared/projection.interfaces.d.ts +1 -3
  479. package/lib/map/utils/layer-watcher.d.ts +2 -2
  480. package/lib/map/zoom-button/zoom-button.theming.scss +32 -32
  481. package/lib/measure/measurer/measurer-dialog.component.d.ts +1 -1
  482. package/lib/measure/measurer/measurer-item.component.d.ts +1 -1
  483. package/lib/measure/measurer/measurer.component.d.ts +5 -5
  484. package/lib/measure/shared/measure.utils.d.ts +5 -5
  485. package/lib/metadata/metadata-button/metadata-button.component.d.ts +1 -1
  486. package/lib/offline/geoDB/configFileToGeoDB.service.d.ts +1 -1
  487. package/lib/offline/geoDB/geoDB.service.d.ts +1 -1
  488. package/lib/offline/shared/geo-network.service.d.ts +2 -1
  489. package/lib/overlay/shared/overlay.d.ts +1 -1
  490. package/lib/overlay/shared/overlay.directive.d.ts +2 -2
  491. package/lib/print/print/print.component.d.ts +1 -1
  492. package/lib/print/print-form/print-form.component.d.ts +2 -2
  493. package/lib/print/shared/print.interface.d.ts +1 -1
  494. package/lib/print/shared/print.service.d.ts +2 -2
  495. package/lib/query/shared/query.directive.d.ts +4 -4
  496. package/lib/query/shared/query.interfaces.d.ts +3 -3
  497. package/lib/query/shared/query.service.d.ts +3 -3
  498. package/lib/search/search-bar/search-bar.component.d.ts +5 -5
  499. package/lib/search/search-bar/search-bar.theming.scss +36 -36
  500. package/lib/search/search-bar/search-url-param.directive.d.ts +1 -1
  501. package/lib/search/search-results/save-feature-dialog.component.d.ts +3 -3
  502. package/lib/search/search-results/search-results-add-button.component.d.ts +7 -7
  503. package/lib/search/search-results/search-results-item.component.d.ts +1 -1
  504. package/lib/search/search-results/search-results.component.d.ts +4 -4
  505. package/lib/search/search-selector/search-selector.component.d.ts +1 -1
  506. package/lib/search/search-settings/search-settings.component.d.ts +2 -2
  507. package/lib/search/search.theming.scss +5 -5
  508. package/lib/search/shared/search-pointer-summary.directive.d.ts +5 -5
  509. package/lib/search/shared/search-source-service.providers.d.ts +1 -1
  510. package/lib/search/shared/search.interfaces.d.ts +1 -1
  511. package/lib/search/shared/search.service.d.ts +2 -2
  512. package/lib/search/shared/search.utils.d.ts +1 -1
  513. package/lib/search/shared/sources/cadastre.d.ts +1 -1
  514. package/lib/search/shared/sources/cadastre.providers.d.ts +1 -1
  515. package/lib/search/shared/sources/coordinates.d.ts +5 -5
  516. package/lib/search/shared/sources/coordinates.providers.d.ts +2 -2
  517. package/lib/search/shared/sources/icherche.d.ts +4 -4
  518. package/lib/search/shared/sources/icherche.providers.d.ts +2 -2
  519. package/lib/search/shared/sources/ilayer.d.ts +2 -2
  520. package/lib/search/shared/sources/ilayer.interfaces.d.ts +1 -1
  521. package/lib/search/shared/sources/ilayer.providers.d.ts +1 -1
  522. package/lib/search/shared/sources/nominatim.d.ts +1 -1
  523. package/lib/search/shared/sources/nominatim.providers.d.ts +1 -1
  524. package/lib/search/shared/sources/source.d.ts +2 -2
  525. package/lib/search/shared/sources/storedqueries.d.ts +4 -4
  526. package/lib/search/shared/sources/storedqueries.providers.d.ts +1 -1
  527. package/lib/search/shared/sources/workspace.d.ts +1 -1
  528. package/lib/style/shared/feature/feature-style.d.ts +2 -2
  529. package/lib/style/shared/overlay/overlay-style.utils.d.ts +1 -1
  530. package/lib/style/shared/vector/conversion.utils.d.ts +1 -1
  531. package/lib/style/shared/vector/vector-style.interface.d.ts +6 -1
  532. package/lib/style/style-list/style-list.provider.d.ts +1 -1
  533. package/lib/style/style-modal/drawing/style-modal-drawing.component.d.ts +3 -3
  534. package/lib/style/style-modal/layer/style-modal-layer.component.d.ts +3 -3
  535. package/lib/style/style-service/draw-style.service.d.ts +1 -1
  536. package/lib/style/style-service/style.service.d.ts +3 -3
  537. package/lib/utils/id-generator.d.ts +2 -2
  538. package/lib/workspace/confirmation-popup/confirmation-popup.component.d.ts +1 -1
  539. package/lib/workspace/confirmation-popup/confirmation-popup.theming.scss +14 -14
  540. package/lib/workspace/shared/edition-workspace.d.ts +7 -9
  541. package/lib/workspace/shared/edition-workspace.service.d.ts +5 -5
  542. package/lib/workspace/shared/feature-workspace.service.d.ts +3 -3
  543. package/lib/workspace/shared/wfs-workspace.service.d.ts +3 -3
  544. package/lib/workspace/shared/wms-workspace.service.d.ts +4 -4
  545. package/lib/workspace/shared/workspace.utils.d.ts +4 -4
  546. package/lib/workspace/widgets/ogc-filter/ogc-filter.component.d.ts +1 -1
  547. package/lib/workspace/workspace-selector/workspace-selector.directive.d.ts +4 -4
  548. package/lib/workspace/workspace-updator/workspace-updator.directive.d.ts +3 -3
  549. package/lib/workspace/workspace.theming.scss +6 -6
  550. package/locale/en.geo.json +11 -4
  551. package/locale/fr.geo.json +11 -4
  552. package/package.json +5 -5
  553. package/public_api.d.ts +1 -0
  554. package/style/style.css +0 -1
  555. package/lib/filter/ogc-filter-time/ogc-filter-time-slider.theming.scss +0 -15
@@ -1,17 +1,17 @@
1
1
  import { __decorate, __metadata } from "tslib";
2
- import { Injectable, Inject, Injector } from '@angular/core';
3
2
  import { HttpClient, HttpParams } from '@angular/common/http';
4
- import { Observable, of, BehaviorSubject } from 'rxjs';
5
- import { map, catchError } from 'rxjs/operators';
3
+ import { Inject, Injectable, Injector } from '@angular/core';
6
4
  import { AuthService } from '@igo2/auth';
7
5
  import { LanguageService, StorageService } from '@igo2/core';
8
6
  import { ObjectUtils, customCacheHasher } from '@igo2/utils';
9
7
  import pointOnFeature from '@turf/point-on-feature';
8
+ import { BehaviorSubject, Observable, of } from 'rxjs';
9
+ import { catchError, map } from 'rxjs/operators';
10
+ import { Cacheable } from 'ts-cacheable';
10
11
  import { FEATURE } from '../../../feature';
12
+ import { computeTermSimilarity } from '../search.utils';
11
13
  import { GoogleLinks } from './../../../utils/googleLinks';
12
14
  import { SearchSource } from './source';
13
- import { computeTermSimilarity } from '../search.utils';
14
- import { Cacheable } from 'ts-cacheable';
15
15
  import * as i0 from "@angular/core";
16
16
  import * as i1 from "@igo2/core";
17
17
  import * as i2 from "@angular/common/http";
@@ -793,4 +793,4 @@ __decorate([
793
793
  type: Inject,
794
794
  args: ['options']
795
795
  }] }, { type: i0.Injector }]; }, { getReverseSearch: [] }); })();
796
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNoZXJjaGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9zZWFyY2gvc2hhcmVkL3NvdXJjZXMvaWNoZXJjaGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQ0wsVUFBVSxFQUNWLFVBQVUsRUFFWCxNQUFNLHNCQUFzQixDQUFDO0FBRTlCLE9BQU8sRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN2RCxPQUFPLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWpELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDekMsT0FBTyxFQUFFLGVBQWUsRUFBRSxjQUFjLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDN0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUU3RCxPQUFPLGNBQWMsTUFBTSx3QkFBd0IsQ0FBQztBQUVwRCxPQUFPLEVBQUUsT0FBTyxFQUFXLE1BQU0sa0JBQWtCLENBQUM7QUFDcEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRzNELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFheEMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7OztBQUd6QyxNQUFNLE9BQU8sNkJBQTZCO0lBQ3BCO0lBQXBCLFlBQW9CLGVBQWdDO1FBQWhDLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtJQUFHLENBQUM7SUFFeEQsWUFBWSxDQUFDLE1BQTZCO1FBQ3hDLE9B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QUFTLENBQUM7UUFDVCxhQUFhLEVBQUUsRUFBRTtRQUNqQixXQUFXLEVBQUUsaUJBQWlCO0tBQy9CLENBQUM7O3FDQUVRLFVBQVU7b0NBQ2pCLFVBQVU7bUVBTVo7dUZBbEtVLDJCQUEyQjtjQUR2QyxVQUFVOztzQkFtQk4sTUFBTTt1QkFBQyxTQUFTOytDQXdJWCxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3QsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgSHR0cENsaWVudCxcclxuICBIdHRwUGFyYW1zLFxyXG4gIEh0dHBQYXJhbWV0ZXJDb2RlY1xyXG59IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuXHJcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mLCBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgbWFwLCBjYXRjaEVycm9yIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5cclxuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICdAaWdvMi9hdXRoJztcclxuaW1wb3J0IHsgTGFuZ3VhZ2VTZXJ2aWNlLCBTdG9yYWdlU2VydmljZSB9IGZyb20gJ0BpZ28yL2NvcmUnO1xyXG5pbXBvcnQgeyBPYmplY3RVdGlscywgY3VzdG9tQ2FjaGVIYXNoZXIgfSBmcm9tICdAaWdvMi91dGlscyc7XHJcblxyXG5pbXBvcnQgcG9pbnRPbkZlYXR1cmUgZnJvbSAnQHR1cmYvcG9pbnQtb24tZmVhdHVyZSc7XHJcblxyXG5pbXBvcnQgeyBGRUFUVVJFLCBGZWF0dXJlIH0gZnJvbSAnLi4vLi4vLi4vZmVhdHVyZSc7XHJcbmltcG9ydCB7IEdvb2dsZUxpbmtzIH0gZnJvbSAnLi8uLi8uLi8uLi91dGlscy9nb29nbGVMaW5rcyc7XHJcblxyXG5pbXBvcnQgeyBTZWFyY2hSZXN1bHQsIFRleHRTZWFyY2gsIFJldmVyc2VTZWFyY2ggfSBmcm9tICcuLi9zZWFyY2guaW50ZXJmYWNlcyc7XHJcbmltcG9ydCB7IFNlYXJjaFNvdXJjZSB9IGZyb20gJy4vc291cmNlJztcclxuaW1wb3J0IHtcclxuICBTZWFyY2hTb3VyY2VPcHRpb25zLFxyXG4gIFRleHRTZWFyY2hPcHRpb25zLFxyXG4gIFJldmVyc2VTZWFyY2hPcHRpb25zLFxyXG4gIFNlYXJjaFNvdXJjZVNldHRpbmdzXHJcbn0gZnJvbSAnLi9zb3VyY2UuaW50ZXJmYWNlcyc7XHJcbmltcG9ydCB7XHJcbiAgSUNoZXJjaGVEYXRhLFxyXG4gIElDaGVyY2hlUmVzcG9uc2UsXHJcbiAgSUNoZXJjaGVSZXZlcnNlRGF0YSxcclxuICBJQ2hlcmNoZVJldmVyc2VSZXNwb25zZVxyXG59IGZyb20gJy4vaWNoZXJjaGUuaW50ZXJmYWNlcyc7XHJcbmltcG9ydCB7IGNvbXB1dGVUZXJtU2ltaWxhcml0eSB9IGZyb20gJy4uL3NlYXJjaC51dGlscyc7XHJcbmltcG9ydCB7IENhY2hlYWJsZSB9IGZyb20gJ3RzLWNhY2hlYWJsZSc7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBJQ2hlcmNoZVNlYXJjaFJlc3VsdEZvcm1hdHRlciB7XHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBsYW5ndWFnZVNlcnZpY2U6IExhbmd1YWdlU2VydmljZSkge31cclxuXHJcbiAgZm9ybWF0UmVzdWx0KHJlc3VsdDogU2VhcmNoUmVzdWx0PEZlYXR1cmU+KTogU2VhcmNoUmVzdWx0PEZlYXR1cmU+IHtcclxuICAgIHJldHVybiByZXN1bHQ7XHJcbiAgfVxyXG59XHJcblxyXG4vLyBGaXggdGhlIFwiK1wiIGlzIHJlcGxhY2VkIHdpdGggc3BhY2UgXCIgXCIgaW4gYSBxdWVyeSBzdHJpbmdcclxuLy8gaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9pc3N1ZXMvMTEwNThcclxuZXhwb3J0IGNsYXNzIElnb0h0dHBQYXJhbWV0ZXJDb2RlYyBpbXBsZW1lbnRzIEh0dHBQYXJhbWV0ZXJDb2RlYyB7XHJcbiAgZW5jb2RlS2V5KGtleTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBlbmNvZGVVUklDb21wb25lbnQoa2V5KTtcclxuICB9XHJcblxyXG4gIGVuY29kZVZhbHVlKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudCh2YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBkZWNvZGVLZXkoa2V5OiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChrZXkpO1xyXG4gIH1cclxuXHJcbiAgZGVjb2RlVmFsdWUodmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KHZhbHVlKTtcclxuICB9XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBJQ2hlcmNoZSBzZWFyY2ggc291cmNlXHJcbiAqL1xyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBJQ2hlcmNoZVNlYXJjaFNvdXJjZSBleHRlbmRzIFNlYXJjaFNvdXJjZSBpbXBsZW1lbnRzIFRleHRTZWFyY2gge1xyXG4gIHN0YXRpYyBpZCA9ICdpY2hlcmNoZSc7XHJcbiAgc3RhdGljIHR5cGUgPSBGRUFUVVJFO1xyXG4gIHN0YXRpYyBwcm9wZXJ0aWVzQmxhY2tsaXN0OiBzdHJpbmdbXSA9IFtdO1xyXG4gIHRpdGxlJDogQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4oJycpO1xyXG5cclxuICBwcml2YXRlIGhhc2h0YWdzTGlldXhUb0tlZXAgPSBbXTtcclxuXHJcbiAgZ2V0IHRpdGxlKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy50aXRsZSQuZ2V0VmFsdWUoKTtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxyXG4gICAgcHJpdmF0ZSBsYW5ndWFnZVNlcnZpY2U6IExhbmd1YWdlU2VydmljZSxcclxuICAgIHN0b3JhZ2VTZXJ2aWNlOiBTdG9yYWdlU2VydmljZSxcclxuICAgIEBJbmplY3QoJ29wdGlvbnMnKSBvcHRpb25zOiBTZWFyY2hTb3VyY2VPcHRpb25zLFxyXG4gICAgQEluamVjdChJQ2hlcmNoZVNlYXJjaFJlc3VsdEZvcm1hdHRlcilcclxuICAgIHByaXZhdGUgZm9ybWF0dGVyOiBJQ2hlcmNoZVNlYXJjaFJlc3VsdEZvcm1hdHRlcixcclxuICAgIGluamVjdG9yOiBJbmplY3RvclxyXG4gICkge1xyXG4gICAgc3VwZXIob3B0aW9ucywgc3RvcmFnZVNlcnZpY2UpO1xyXG5cclxuICAgIGNvbnN0IGF1dGhTZXJ2aWNlID0gaW5qZWN0b3IuZ2V0KEF1dGhTZXJ2aWNlKTtcclxuICAgIGlmICh0aGlzLnNldHRpbmdzLmxlbmd0aCkge1xyXG4gICAgICBpZiAoIWF1dGhTZXJ2aWNlKSB7XHJcbiAgICAgICAgdGhpcy5nZXRBbGxvd2VkVHlwZXMoKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBhdXRoU2VydmljZS5hdXRoZW50aWNhdGUkLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmdldEFsbG93ZWRUeXBlcygpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5sYW5ndWFnZVNlcnZpY2UubGFuZ3VhZ2UkLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIHRoaXMudGl0bGUkLm5leHQoXHJcbiAgICAgICAgdGhpcy5sYW5ndWFnZVNlcnZpY2UudHJhbnNsYXRlLmluc3RhbnQodGhpcy5vcHRpb25zLnRpdGxlKVxyXG4gICAgICApO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBnZXRJZCgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIElDaGVyY2hlU2VhcmNoU291cmNlLmlkO1xyXG4gIH1cclxuXHJcbiAgZ2V0VHlwZSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIElDaGVyY2hlU2VhcmNoU291cmNlLnR5cGU7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgZ2V0RGVmYXVsdE9wdGlvbnMoKTogU2VhcmNoU291cmNlT3B0aW9ucyB7XHJcbiAgICBjb25zdCBsaW1pdCA9XHJcbiAgICAgIHRoaXMub3B0aW9ucy5wYXJhbXMgJiYgdGhpcy5vcHRpb25zLnBhcmFtcy5saW1pdFxyXG4gICAgICAgID8gTnVtYmVyKHRoaXMub3B0aW9ucy5wYXJhbXMubGltaXQpXHJcbiAgICAgICAgOiB1bmRlZmluZWQ7XHJcbiAgICBjb25zdCBlY21heCA9XHJcbiAgICAgIHRoaXMub3B0aW9ucy5wYXJhbXMgJiYgdGhpcy5vcHRpb25zLnBhcmFtcy5lY21heFxyXG4gICAgICAgID8gTnVtYmVyKHRoaXMub3B0aW9ucy5wYXJhbXMuZWNtYXgpXHJcbiAgICAgICAgOiB1bmRlZmluZWQ7XHJcblxyXG4gICAgY29uc3QgdHlwZXMgPSB0aGlzLm9wdGlvbnMucGFyYW1zPy50eXBlXHJcbiAgICAgID8gdGhpcy5vcHRpb25zLnBhcmFtcy50eXBlLnJlcGxhY2UoL1xccy9nLCAnJykudG9Mb3dlckNhc2UoKS5zcGxpdCgnLCcpXHJcbiAgICAgIDogW1xyXG4gICAgICAgICAgJ2FkcmVzc2VzJyxcclxuICAgICAgICAgICdjb2Rlcy1wb3N0YXV4JyxcclxuICAgICAgICAgICdyb3V0ZXMnLFxyXG4gICAgICAgICAgJ2ludGVyc2VjdGlvbnMnLFxyXG4gICAgICAgICAgJ211bmljaXBhbGl0ZXMnLFxyXG4gICAgICAgICAgJ21yYycsXHJcbiAgICAgICAgICAncmVnYWRtaW4nLFxyXG4gICAgICAgICAgJ2xpZXV4J1xyXG4gICAgICAgIF07XHJcblxyXG4gICAgY29uc3Qgc2hvd0FkdmFuY2VkUGFyYW1zID0gdGhpcy5vcHRpb25zLnNob3dBZHZhbmNlZFNldHRpbmdzID8/IHRydWU7XHJcblxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgdGl0bGU6ICdpZ28uZ2VvLnNlYXJjaC5pY2hlcmNoZS5uYW1lJyxcclxuICAgICAgc2VhcmNoVXJsOiAnaHR0cHM6Ly9nZW9lZ2wubXNwLmdvdXYucWMuY2EvYXBpcy9pY2hlcmNoZScsXHJcbiAgICAgIHNldHRpbmdzOiBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgdHlwZTogJ2NoZWNrYm94JyxcclxuICAgICAgICAgIHRpdGxlOiAncmVzdWx0cyB0eXBlJyxcclxuICAgICAgICAgIG5hbWU6ICd0eXBlJyxcclxuICAgICAgICAgIHZhbHVlczogW1xyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgdGl0bGU6ICdpZ28uZ2VvLnNlYXJjaC5pY2hlcmNoZS50eXBlLmFkZHJlc3MnLFxyXG4gICAgICAgICAgICAgIHZhbHVlOiAnYWRyZXNzZXMnLFxyXG4gICAgICAgICAgICAgIGVuYWJsZWQ6IHR5cGVzLmluZGV4T2YoJ2FkcmVzc2VzJykgIT09IC0xLFxyXG4gICAgICAgICAgICAgIGhhc2h0YWdzOiBbJ2FkcmVzc2UnXVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgdGl0bGU6ICdpZ28uZ2VvLnNlYXJjaC5pY2hlcmNoZS50eXBlLm9sZEFkZHJlc3MnLFxyXG4gICAgICAgICAgICAgIHZhbHVlOiAnYW5jaWVubmVzLWFkcmVzc2VzJyxcclxuICAgICAgICAgICAgICBlbmFibGVkOiB0eXBlcy5pbmRleE9mKCdhbmNpZW5uZXMtYWRyZXNzZXMnKSAhPT0gLTEsXHJcbiAgICAgICAgICAgICAgaGFzaHRhZ3M6IFsnYW5jaWVubmVzLWFkcmVzc2VzJ11cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHRpdGxlOiAnaWdvLmdlby5zZWFyY2guaWNoZXJjaGUudHlwZS5vbGRDaXR5JyxcclxuICAgICAgICAgICAgICB2YWx1ZTogJ2FuY2llbm5lcy1tdW5pY2lwYWxpdGVzJyxcclxuICAgICAgICAgICAgICBlbmFibGVkOiB0eXBlcy5pbmRleE9mKCdhbmNpZW5uZXMtbXVuaWNpcGFsaXRlcycpICE9PSAtMSxcclxuICAgICAgICAgICAgICBoYXNodGFnczogWydhbmNpZW5uZXMtbXVuaWNpcGFsaXRlcyddXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICB0aXRsZTogJ2lnby5nZW8uc2VhcmNoLmljaGVyY2hlLnR5cGUuY24nLFxyXG4gICAgICAgICAgICAgIHZhbHVlOiAnYm9ybmVzLWNuJyxcclxuICAgICAgICAgICAgICBlbmFibGVkOiB0eXBlcy5pbmRleE9mKCdib3JuZXMtY24nKSAhPT0gLTEsXHJcbiAgICAgICAgICAgICAgaGFzaHRhZ3M6IFsnYm9ybmUnLCAnYm9ybmVzJywgJ2NuJ11cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHRpdGxlOiAnaWdvLmdlby5zZWFyY2guaWNoZXJjaGUudHlwZS5zdW1pJyxcclxuICAgICAgICAgICAgICB2YWx1ZTogJ2Jvcm5lcy1zdW1pJyxcclxuICAgICAgICAgICAgICBlbmFibGVkOiB0eXBlcy5pbmRleE9mKCdib3JuZXMtc3VtaScpICE9PSAtMSxcclxuICAgICAgICAgICAgICBoYXNodGFnczogWydib3JuZScsICdib3JuZXMnLCAnc3VtaSddXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICB0aXRsZTogJ2lnby5nZW8uc2VhcmNoLmljaGVyY2hlLnR5cGUuY2FkYXN0cmUnLFxyXG4gICAgICAgICAgICAgIHZhbHVlOiAnY2FkYXN0cmUnLFxyXG4gICAgICAgICAgICAgIGVuYWJsZWQ6IHR5cGVzLmluZGV4T2YoJ2NhZGFzdHJlJykgIT09IC0xLFxyXG4gICAgICAgICAgICAgIGhhc2h0YWdzOiBbJ2NhZGFzdHJlJ11cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHRpdGxlOiAnaWdvLmdlby5zZWFyY2guaWNoZXJjaGUudHlwZS5wb3N0YWxDb2RlJyxcclxuICAgICAgICAgICAgICB2YWx1ZTogJ2NvZGVzLXBvc3RhdXgnLFxyXG4gICAgICAgICAgICAgIGVuYWJsZWQ6IHR5cGVzLmluZGV4T2YoJ2NvZGVzLXBvc3RhdXgnKSAhPT0gLTEsXHJcbiAgICAgICAgICAgICAgaGFzaHRhZ3M6IFsnY29kZS1wb3N0YWwnXVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgdGl0bGU6ICdpZ28uZ2VvLnNlYXJjaC5pY2hlcmNoZS50eXBlLmVudHJlcHJpc2UnLFxyXG4gICAgICAgICAgICAgIHZhbHVlOiAnZW50cmVwcmlzZXMnLFxyXG4gICAgICAgICAgICAgIGVuYWJsZWQ6IHR5cGVzLmluZGV4T2YoJ2VudHJlcHJpc2VzJykgIT09IC0xLFxyXG4gICAgICAgICAgICAgIGF2YWlsYWJsZTogZmFsc2UsXHJcbiAgICAgICAgICAgICAgaGFzaHRhZ3M6IFsnZW50cmVwcmlzZSddXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICB0aXRsZTogJ2lnby5nZW8uc2VhcmNoLmljaGVyY2hlLnR5cGUuY3ljbGVTdG9wJyxcclxuICAgICAgICAgICAgICB2YWx1ZTogJ2hhbHRlc19jeWNsYWJsZXMnLFxyXG4gICAgICAgICAgICAgIGVuYWJsZWQ6IHR5cGVzLmluZGV4T2YoJ2hhbHRlc19jeWNsYWJsZXMnKSAhPT0gLTEsXHJcbiAgICAgICAgICAgICAgaGFzaHRhZ3M6IFsnaGFsdGV2ZWxvJywgJ2hhbHRlc19jeWNsYWJsZXMnXVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgdGl0bGU6ICdpZ28uZ2VvLnNlYXJjaC5pY2hlcmNoZS50eXBlLnJlc3RBcmVhJyxcclxuICAgICAgICAgICAgICB2YWx1ZTogJ2hhbHRlc19yb3V0aWVyZXMnLFxyXG4gICAgICAgICAgICAgIGVuYWJsZWQ6IHR5cGVzLmluZGV4T2YoJ2hhbHRlc19yb3V0aWVyZXMnKSAhPT0gLTEsXHJcbiAgICAgICAgICAgICAgaGFzaHRhZ3M6IFsnaGFsdGVyb3V0ZScsICdoYWx0ZXNfcm91dGllcmVzJ11cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHRpdGxlOiAnaWdvLmdlby5zZWFyY2guaWNoZXJjaGUudHlwZS5ocScsXHJcbiAgICAgICAgICAgICAgdmFsdWU6ICdocScsXHJcbiAgICAgICAgICAgICAgZW5hYmxlZDogdHlwZXMuaW5kZXhPZignaHEnKSAhPT0gLTEsXHJcbiAgICAgICAgICAgICAgaGFzaHRhZ3M6IFsnaHEnXVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgdGl0bGU6ICdpZ28uZ2VvLnNlYXJjaC5pY2hlcmNoZS50eXBlLmludGVyc2VjdGlvbicsXHJcbiAgICAgICAgICAgICAgdmFsdWU6ICdpbnRlcnNlY3Rpb25zJyxcclxuICAgICAgICAgICAgICBlbmFibGVkOiB0eXBlcy5pbmRleE9mKCdpbnRlcnNlY3Rpb25zJykgIT09IC0xLFxyXG4gICAgICAgICAgICAgIGhhc2h0YWdzOiBbJ2ludGVyc2VjdGlvbicsICcrJ11cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHRpdGxlOiAnaWdvLmdlby5zZWFyY2guaWNoZXJjaGUudHlwZS5wbGFjZScsXHJcbiAgICAgICAgICAgICAgdmFsdWU6ICdsaWV1eCcsXHJcbiAgICAgICAgICAgICAgZW5hYmxlZDogdHlwZXMuaW5kZXhPZignbGlldXgnKSAhPT0gLTEsXHJcbiAgICAgICAgICAgICAgaGFzaHRhZ3M6IFsnbGlldSddXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICB0aXRsZTogJ2lnby5nZW8uc2VhcmNoLmljaGVyY2hlLnR5cGUubXJjJyxcclxuICAgICAgICAgICAgICB2YWx1ZTogJ21yYycsXHJcbiAgICAgICAgICAgICAgZW5hYmxlZDogdHlwZXMuaW5kZXhPZignbXJjJykgIT09IC0xLFxyXG4gICAgICAgICAgICAgIGhhc2h0YWdzOiBbJ21yYyddXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICB0aXRsZTogJ2lnby5nZW8uc2VhcmNoLmljaGVyY2hlLnR5cGUuY2l0eScsXHJcbiAgICAgICAgICAgICAgdmFsdWU6ICdtdW5pY2lwYWxpdGVzJyxcclxuICAgICAgICAgICAgICBlbmFibGVkOiB0eXBlcy5pbmRleE9mKCdtdW5pY2lwYWxpdGVzJykgIT09IC0xLFxyXG4gICAgICAgICAgICAgIGhhc2h0YWdzOiBbJ211bmljaXBhbGl0w6knLCAnbXVuJ11cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHRpdGxlOiAnaWdvLmdlby5zZWFyY2guaWNoZXJjaGUudHlwZS5yZWdhZG1pbicsXHJcbiAgICAgICAgICAgICAgdmFsdWU6ICdyZWdhZG1pbicsXHJcbiAgICAgICAgICAgICAgZW5hYmxlZDogdHlwZXMuaW5kZXhPZigncmVnYWRtaW4nKSAhPT0gLTEsXHJcbiAgICAgICAgICAgICAgaGFzaHRhZ3M6IFsncsOpZ2lvbi1hZG1pbmlzdHJhdGl2ZScsICdyZWdhZG1pbiddXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICB0aXRsZTogJ2lnby5nZW8uc2VhcmNoLmljaGVyY2hlLnR5cGUuZ2NjJyxcclxuICAgICAgICAgICAgICB2YWx1ZTogJ2Jvcm5lcy1nY2MnLFxyXG4gICAgICAgICAgICAgIGVuYWJsZWQ6IHR5cGVzLmluZGV4T2YoJ2Jvcm5lcy1nY2MnKSAhPT0gLTEsXHJcbiAgICAgICAgICAgICAgaGFzaHRhZ3M6IFsnYm9ybmUnLCAnYm9ybmVzJywgJ3JlcMOocmUnLCAnZ2NjJywgJ2NjZyddXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICB0aXRsZTogJ2lnby5nZW8uc2VhcmNoLmljaGVyY2hlLnR5cGUua20nLFxyXG4gICAgICAgICAgICAgIHZhbHVlOiAnYm9ybmVzLWttJyxcclxuICAgICAgICAgICAgICBlbmFibGVkOiB0eXBlcy5pbmRleE9mKCdib3JuZXMta20nKSAhPT0gLTEsXHJcbiAgICAgICAgICAgICAgaGFzaHRhZ3M6IFsnYm9ybmUnLCAnYm9ybmVzJywgJ3JlcMOocmUnLCAna20nXVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgdGl0bGU6ICdpZ28uZ2VvLnNlYXJjaC5pY2hlcmNoZS50eXBlLnJvYWQnLFxyXG4gICAgICAgICAgICAgIHZhbHVlOiAncm91dGVzJyxcclxuICAgICAgICAgICAgICBlbmFibGVkOiB0eXBlcy5pbmRleE9mKCdyb3V0ZXMnKSAhPT0gLTEsXHJcbiAgICAgICAgICAgICAgaGFzaHRhZ3M6IFsncm91dGUnXVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgdGl0bGU6ICdpZ28uZ2VvLnNlYXJjaC5pY2hlcmNoZS50eXBlLmV4aXQnLFxyXG4gICAgICAgICAgICAgIHZhbHVlOiAnc29ydGllcy1hdXRvcm91dGUnLFxyXG4gICAgICAgICAgICAgIGVuYWJsZWQ6IHR5cGVzLmluZGV4T2YoJ3NvcnRpZXMtYXV0b3JvdXRlJykgIT09IC0xLFxyXG4gICAgICAgICAgICAgIGhhc2h0YWdzOiBbJ3NvcnRpZScsICdzb3J0aWVzJywgJ2V4aXQnXVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgdGl0bGU6ICdpZ28uZ2VvLnNlYXJjaC5pY2hlcmNoZS50eXBlLmN1bHRwYXRyaScsXHJcbiAgICAgICAgICAgICAgdmFsdWU6ICdjdWx0dXJlJyxcclxuICAgICAgICAgICAgICBlbmFibGVkOiB0eXBlcy5pbmRleE9mKCdjdWx0dXJlJykgIT09IC0xLFxyXG4gICAgICAgICAgICAgIGhhc2h0YWdzOiBbJ2dyaWxsZScsICdjdWx0dXJlJ11cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgXVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgdHlwZTogJ3JhZGlvYnV0dG9uJyxcclxuICAgICAgICAgIHRpdGxlOiAncmVzdWx0cyBsaW1pdCcsXHJcbiAgICAgICAgICBuYW1lOiAnbGltaXQnLFxyXG4gICAgICAgICAgdmFsdWVzOiBbXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICB0aXRsZTogJzEnLFxyXG4gICAgICAgICAgICAgIHZhbHVlOiAxLFxyXG4gICAgICAgICAgICAgIGVuYWJsZWQ6IGxpbWl0ID09PSAxXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICB0aXRsZTogJzUnLFxyXG4gICAgICAgICAgICAgIHZhbHVlOiA1LFxyXG4gICAgICAgICAgICAgIGVuYWJsZWQ6IGxpbWl0ID09PSA1IHx8ICFsaW1pdFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgdGl0bGU6ICcxMCcsXHJcbiAgICAgICAgICAgICAgdmFsdWU6IDEwLFxyXG4gICAgICAgICAgICAgIGVuYWJsZWQ6IGxpbWl0ID09PSAxMFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgdGl0bGU6ICcyNScsXHJcbiAgICAgICAgICAgICAgdmFsdWU6IDI1LFxyXG4gICAgICAgICAgICAgIGVuYWJsZWQ6IGxpbWl0ID09PSAyNVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgdGl0bGU6ICc1MCcsXHJcbiAgICAgICAgICAgICAgdmFsdWU6IDUwLFxyXG4gICAgICAgICAgICAgIGVuYWJsZWQ6IGxpbWl0ID09PSA1MFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICBdXHJcbiAgICAgICAgfSxcclxuICAgICAgICBzaG93QWR2YW5jZWRQYXJhbXMgJiYge1xyXG4gICAgICAgICAgdHlwZTogJ3JhZGlvYnV0dG9uJyxcclxuICAgICAgICAgIHRpdGxlOiAnZWNtYXgnLFxyXG4gICAgICAgICAgbmFtZTogJ2VjbWF4JyxcclxuICAgICAgICAgIHZhbHVlczogW1xyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgdGl0bGU6ICcxMCAlJyxcclxuICAgICAgICAgICAgICB2YWx1ZTogMTAsXHJcbiAgICAgICAgICAgICAgZW5hYmxlZDogZWNtYXggPT09IDEwXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICB0aXRsZTogJzMwICUnLFxyXG4gICAgICAgICAgICAgIHZhbHVlOiAzMCxcclxuICAgICAgICAgICAgICBlbmFibGVkOiBlY21heCA9PT0gMzAgfHwgIWVjbWF4XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICB0aXRsZTogJzUwICUnLFxyXG4gICAgICAgICAgICAgIHZhbHVlOiA1MCxcclxuICAgICAgICAgICAgICBlbmFibGVkOiBlY21heCA9PT0gNTBcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHRpdGxlOiAnNzUgJScsXHJcbiAgICAgICAgICAgICAgdmFsdWU6IDc1LFxyXG4gICAgICAgICAgICAgIGVuYWJsZWQ6IGVjbWF4ID09PSA3NVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgdGl0bGU6ICcxMDAgJScsXHJcbiAgICAgICAgICAgICAgdmFsdWU6IDEwMCxcclxuICAgICAgICAgICAgICBlbmFibGVkOiBlY21heCA9PT0gMTAwXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIF1cclxuICAgICAgICB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIHR5cGU6ICdyYWRpb2J1dHRvbicsXHJcbiAgICAgICAgICB0aXRsZTogJ3Jlc3RyaWN0RXh0ZW50JyxcclxuICAgICAgICAgIG5hbWU6ICdsb2MnLFxyXG4gICAgICAgICAgdmFsdWVzOiBbXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICB0aXRsZTogJ2lnby5nZW8uc2VhcmNoLmljaGVyY2hlLnJlc3RyaWN0RXh0ZW50Lm1hcCcsXHJcbiAgICAgICAgICAgICAgdmFsdWU6ICd0cnVlJyxcclxuICAgICAgICAgICAgICBlbmFibGVkOiBmYWxzZVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgdGl0bGU6ICdpZ28uZ2VvLnNlYXJjaC5pY2hlcmNoZS5yZXN0cmljdEV4dGVudC5xdWViZWMnLFxyXG4gICAgICAgICAgICAgIHZhbHVlOiAnZmFsc2UnLFxyXG4gICAgICAgICAgICAgIGVuYWJsZWQ6IHRydWVcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgXVxyXG4gICAgICAgIH1cclxuICAgICAgXS5maWx0ZXIoQm9vbGVhbikgYXMgU2VhcmNoU291cmNlU2V0dGluZ3NbXVxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNlYXJjaCBhIGxvY2F0aW9uIGJ5IG5hbWUgb3Iga2V5d29yZFxyXG4gICAqIEBwYXJhbSB0ZXJtIExvY2F0aW9uIG5hbWUgb3Iga2V5d29yZFxyXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGUgb2YgPFNlYXJjaFJlc3VsdDxGZWF0dXJlPltdXHJcbiAgICovXHJcbiAgc2VhcmNoKFxyXG4gICAgdGVybTogc3RyaW5nLFxyXG4gICAgb3B0aW9ucz86IFRleHRTZWFyY2hPcHRpb25zXHJcbiAgKTogT2JzZXJ2YWJsZTxTZWFyY2hSZXN1bHQ8RmVhdHVyZT5bXT4ge1xyXG4gICAgY29uc3QgcGFyYW1zID0gdGhpcy5jb21wdXRlUmVxdWVzdFBhcmFtcyh0ZXJtLCBvcHRpb25zIHx8IHt9KTtcclxuICAgIGlmICghcGFyYW1zLmdldCgndHlwZScpLmxlbmd0aCkge1xyXG4gICAgICByZXR1cm4gb2YoW10pO1xyXG4gICAgfVxyXG4gICAgdGhpcy5vcHRpb25zLnBhcmFtcy5wYWdlID0gcGFyYW1zLmdldCgncGFnZScpIHx8ICcxJztcclxuXHJcbiAgICByZXR1cm4gdGhpcy5nZXRTZWFyY2godGVybSwgcGFyYW1zKTtcclxuICB9XHJcblxyXG4gIEBDYWNoZWFibGUoe1xyXG4gICAgbWF4Q2FjaGVDb3VudDogMjAsXHJcbiAgICBjYWNoZUhhc2hlcjogY3VzdG9tQ2FjaGVIYXNoZXJcclxuICB9KVxyXG4gIHByaXZhdGUgZ2V0U2VhcmNoKFxyXG4gICAgdGVybTogc3RyaW5nLFxyXG4gICAgcGFyYW1zOiBIdHRwUGFyYW1zXHJcbiAgKTogT2JzZXJ2YWJsZTxTZWFyY2hSZXN1bHQ8RmVhdHVyZT5bXT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoYCR7dGhpcy5zZWFyY2hVcmx9L2dlb2NvZGVgLCB7IHBhcmFtcyB9KS5waXBlKFxyXG4gICAgICBtYXAoKHJlc3BvbnNlOiBJQ2hlcmNoZVJlc3BvbnNlKSA9PiB0aGlzLmV4dHJhY3RSZXN1bHRzKHJlc3BvbnNlLCB0ZXJtKSksXHJcbiAgICAgIGNhdGNoRXJyb3IoKGVycikgPT4ge1xyXG4gICAgICAgIGVyci5lcnJvci50b0Rpc3BsYXkgPSB0cnVlO1xyXG4gICAgICAgIGVyci5lcnJvci50aXRsZSA9IHRoaXMubGFuZ3VhZ2VTZXJ2aWNlLnRyYW5zbGF0ZS5pbnN0YW50KFxyXG4gICAgICAgICAgdGhpcy5nZXREZWZhdWx0T3B0aW9ucygpLnRpdGxlXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aHJvdyBlcnI7XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxuICBwcml2YXRlIGdldEFsbG93ZWRUeXBlcygpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgLmdldChgJHt0aGlzLnNlYXJjaFVybH0vdHlwZXNgKVxyXG4gICAgICAuc3Vic2NyaWJlKCh0eXBlczogc3RyaW5nW10pID0+IHtcclxuICAgICAgICBjb25zdCB0eXBlU2V0dGluZyA9IHRoaXMuc2V0dGluZ3MuZmluZCgocykgPT4gcy5uYW1lID09PSAndHlwZScpO1xyXG4gICAgICAgIHR5cGVTZXR0aW5nLnZhbHVlcy5mb3JFYWNoKCh2KSA9PiB7XHJcbiAgICAgICAgICBjb25zdCByZWdleCA9IG5ldyBSZWdFeHAoYF4ke3YudmFsdWV9KFxcXFwufCQpYCk7XHJcbiAgICAgICAgICBjb25zdCB0eXBlc01hdGNoZWQgPSB0eXBlcy5maWx0ZXIoKHZhbHVlKSA9PiByZWdleC50ZXN0KHZhbHVlKSk7XHJcbiAgICAgICAgICB2LmF2YWlsYWJsZSA9IHR5cGVzTWF0Y2hlZC5sZW5ndGggPiAwO1xyXG4gICAgICAgICAgaWYgKHYudmFsdWUgPT09ICdsaWV1eCcpIHtcclxuICAgICAgICAgICAgdGhpcy5oYXNodGFnc0xpZXV4VG9LZWVwID0gW1xyXG4gICAgICAgICAgICAgIC4uLihuZXcgU2V0KFxyXG4gICAgICAgICAgICAgICAgdHlwZXNNYXRjaGVkXHJcbiAgICAgICAgICAgICAgICAgIC5tYXAoKHQpID0+IHQuc3BsaXQoJy4nKSlcclxuICAgICAgICAgICAgICAgICAgLnJlZHVjZSgoYSwgYikgPT4gYS5jb25jYXQoYikpXHJcbiAgICAgICAgICAgICAgICAgIC5maWx0ZXIoKHQpID0+IHQgIT09ICdsaWV1eCcpXHJcbiAgICAgICAgICAgICAgKSBhcyBhbnkpXHJcbiAgICAgICAgICAgIF07XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5zZXRQYXJhbUZyb21TZXR0aW5nKHR5cGVTZXR0aW5nLCBmYWxzZSk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjb21wdXRlUmVxdWVzdFBhcmFtcyhcclxuICAgIHRlcm06IHN0cmluZyxcclxuICAgIG9wdGlvbnM6IFRleHRTZWFyY2hPcHRpb25zXHJcbiAgKTogSHR0cFBhcmFtcyB7XHJcbiAgICBjb25zdCBxdWVyeVBhcmFtczogYW55ID0gT2JqZWN0LmFzc2lnbihcclxuICAgICAge1xyXG4gICAgICAgIGdlb21ldHJ5OiB0cnVlLFxyXG4gICAgICAgIGJib3g6IHRydWUsXHJcbiAgICAgICAgaWNvbjogdHJ1ZSxcclxuICAgICAgICB0eXBlOiAnYWRyZXNzZXMsY29kZXMtcG9zdGF1eCxtdW5pY2lwYWxpdGVzLG1yYyxyZWdhZG1pbixsaWV1eCxlbnRyZXByaXNlcyxib3JuZXMtc3VtaSdcclxuICAgICAgfSxcclxuICAgICAgdGhpcy5wYXJhbXMsXHJcbiAgICAgIHRoaXMuY29tcHV0ZU9wdGlvbnNQYXJhbSh0ZXJtLCBvcHRpb25zIHx8IHt9KS5wYXJhbXMsXHJcbiAgICAgIHtcclxuICAgICAgICBxOiB0aGlzLmNvbXB1dGVUZXJtKHRlcm0pLFxyXG4gICAgICAgIHBhZ2U6IG9wdGlvbnMucGFnZVxyXG4gICAgICB9XHJcbiAgICApO1xyXG5cclxuICAgIGlmIChxdWVyeVBhcmFtcy5sb2MgPT09ICd0cnVlJykge1xyXG4gICAgICBjb25zdCBbeE1pbiwgeU1pbiwgeE1heCwgeU1heF0gPSBvcHRpb25zLmV4dGVudDtcclxuICAgICAgcXVlcnlQYXJhbXMubG9jID0gYCR7eE1pbn0sJHt5TWlufTske3hNYXh9LCR7eU1pbn07JHt4TWF4fSwke3lNYXh9OyR7eE1pbn0sJHt5TWF4fTske3hNaW59LCR7eU1pbn1gO1xyXG4gICAgfSBlbHNlIGlmIChxdWVyeVBhcmFtcy5sb2MgPT09ICdmYWxzZScpIHtcclxuICAgICAgZGVsZXRlIHF1ZXJ5UGFyYW1zLmxvYztcclxuICAgIH1cclxuXHJcbiAgICBpZiAoLyNbQS1aYS16XSsvLnRlc3QocXVlcnlQYXJhbXMucSkpIHtcclxuICAgICAgcXVlcnlQYXJhbXMudHlwZSA9ICdsaWV1eCc7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIG5ldyBIdHRwUGFyYW1zKHtcclxuICAgICAgZnJvbU9iamVjdDogT2JqZWN0VXRpbHMucmVtb3ZlVW5kZWZpbmVkKHF1ZXJ5UGFyYW1zKSxcclxuICAgICAgZW5jb2RlcjogbmV3IElnb0h0dHBQYXJhbWV0ZXJDb2RlYygpXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZXh0cmFjdFJlc3VsdHMoXHJcbiAgICByZXNwb25zZTogSUNoZXJjaGVSZXNwb25zZSxcclxuICAgIHRlcm06IHN0cmluZ1xyXG4gICk6IFNlYXJjaFJlc3VsdDxGZWF0dXJlPltdIHtcclxuICAgIHJldHVybiByZXNwb25zZS5mZWF0dXJlcy5tYXAoKGRhdGE6IElDaGVyY2hlRGF0YSkgPT4ge1xyXG4gICAgICByZXR1cm4gdGhpcy5mb3JtYXR0ZXIuZm9ybWF0UmVzdWx0KFxyXG4gICAgICAgIHRoaXMuZGF0YVRvUmVzdWx0KGRhdGEsIHRlcm0sIHJlc3BvbnNlKVxyXG4gICAgICApO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGRhdGFUb1Jlc3VsdChcclxuICAgIGRhdGE6IElDaGVyY2hlRGF0YSxcclxuICAgIHRlcm06IHN0cmluZyxcclxuICAgIHJlc3BvbnNlPzogSUNoZXJjaGVSZXNwb25zZVxyXG4gICk6IFNlYXJjaFJlc3VsdDxGZWF0dXJlPiB7XHJcbiAgICBjb25zdCBwcm9wZXJ0aWVzID0gdGhpcy5jb21wdXRlUHJvcGVydGllcyhkYXRhKTtcclxuICAgIGNvbnN0IGlkID0gW3RoaXMuZ2V0SWQoKSwgcHJvcGVydGllcy50eXBlLCBwcm9wZXJ0aWVzLmNvZGVdLmpvaW4oJy4nKTtcclxuXHJcbiAgICBjb25zdCB0aXRsZUh0bWwgPSBkYXRhLmhpZ2hsaWdodC50aXRsZSB8fCBkYXRhLnByb3BlcnRpZXMubm9tO1xyXG4gICAgY29uc3Qgc3VidGl0bGVIdG1sID0gZGF0YS5oaWdobGlnaHQudGl0bGUyXHJcbiAgICAgID8gJyA8c21hbGw+ICcgKyBkYXRhLmhpZ2hsaWdodC50aXRsZTIgKyAnPC9zbWFsbD4nXHJcbiAgICAgIDogJyc7XHJcbiAgICBjb25zdCBzdWJ0aXRsZUh0bWwyID0gZGF0YS5oaWdobGlnaHQudGl0bGUzXHJcbiAgICAgID8gJzxicj48c21hbGw+ICcgKyBkYXRhLmhpZ2hsaWdodC50aXRsZTMgKyAnPC9zbWFsbD4nXHJcbiAgICAgIDogJyc7XHJcblxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgc291cmNlOiB0aGlzLFxyXG4gICAgICBkYXRhOiB7XHJcbiAgICAgICAgdHlwZTogRkVBVFVSRSxcclxuICAgICAgICBwcm9qZWN0aW9uOiAnRVBTRzo0MzI2JyxcclxuICAgICAgICBnZW9tZXRyeTogZGF0YS5nZW9tZXRyeSxcclxuICAgICAgICBleHRlbnQ6IGRhdGEuYmJveCxcclxuICAgICAgICBwcm9wZXJ0aWVzLFxyXG4gICAgICAgIG1ldGE6IHtcclxuICAgICAgICAgIGlkLFxyXG4gICAgICAgICAgdGl0bGU6IGRhdGEucHJvcGVydGllcy5ub21cclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIG1ldGE6IHtcclxuICAgICAgICBkYXRhVHlwZTogRkVBVFVSRSxcclxuICAgICAgICBpZCxcclxuICAgICAgICB0aXRsZTogZGF0YS5wcm9wZXJ0aWVzLm5vbSxcclxuICAgICAgICB0aXRsZUh0bWw6IHRpdGxlSHRtbCArIHN1YnRpdGxlSHRtbCArIHN1YnRpdGxlSHRtbDIsXHJcbiAgICAgICAgaWNvbjogZGF0YS5pY29uIHx8ICdtYXAtbWFya2VyJyxcclxuICAgICAgICBzY29yZTpcclxuICAgICAgICAgIGRhdGEuc2NvcmUgfHwgY29tcHV0ZVRlcm1TaW1pbGFyaXR5KHRlcm0udHJpbSgpLCBkYXRhLnByb3BlcnRpZXMubm9tKSxcclxuICAgICAgICBuZXh0UGFnZTpcclxuICAgICAgICAgIHJlc3BvbnNlLmZlYXR1cmVzLmxlbmd0aCAlICt0aGlzLm9wdGlvbnMucGFyYW1zLmxpbWl0ID09PSAwICYmXHJcbiAgICAgICAgICArdGhpcy5vcHRpb25zLnBhcmFtcy5wYWdlIDwgMTBcclxuICAgICAgfVxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY29tcHV0ZVByb3BlcnRpZXMoZGF0YTogSUNoZXJjaGVEYXRhKTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB7XHJcbiAgICBjb25zdCBwcm9wZXJ0aWVzID0gT2JqZWN0VXRpbHMucmVtb3ZlS2V5cyhcclxuICAgICAgZGF0YS5wcm9wZXJ0aWVzLFxyXG4gICAgICBJQ2hlcmNoZVNlYXJjaFNvdXJjZS5wcm9wZXJ0aWVzQmxhY2tsaXN0XHJcbiAgICApO1xyXG5cclxuICAgIGlmICghZGF0YS5nZW9tZXRyeSkge1xyXG4gICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbih7IHR5cGU6IGRhdGEuaW5kZXggfSwgcHJvcGVydGllcyk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgZ29vZ2xlTGlua3NQcm9wZXJ0aWVzOiB7XHJcbiAgICAgIEdvb2dsZU1hcHM6IHN0cmluZztcclxuICAgICAgR29vZ2xlU3RyZWV0Vmlldz86IHN0cmluZztcclxuICAgIH0gPSB7XHJcbiAgICAgIEdvb2dsZU1hcHM6ICcnXHJcbiAgICB9O1xyXG5cclxuICAgIGxldCBnb29nbGVNYXBzO1xyXG4gICAgaWYgKGRhdGEuZ2VvbWV0cnkudHlwZSA9PT0gJ1BvaW50Jykge1xyXG4gICAgICBnb29nbGVNYXBzID0gR29vZ2xlTGlua3MuZ2V0R29vZ2xlTWFwc0Nvb3JkTGluayhcclxuICAgICAgICBkYXRhLmdlb21ldHJ5LmNvb3JkaW5hdGVzWzBdLFxyXG4gICAgICAgIGRhdGEuZ2VvbWV0cnkuY29vcmRpbmF0ZXNbMV1cclxuICAgICAgKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IHBvaW50ID0gcG9pbnRPbkZlYXR1cmUoZGF0YS5nZW9tZXRyeSk7XHJcbiAgICAgIGdvb2dsZU1hcHMgPSBHb29nbGVMaW5rcy5nZXRHb29nbGVNYXBzQ29vcmRMaW5rKFxyXG4gICAgICAgIHBvaW50Lmdlb21ldHJ5LmNvb3JkaW5hdGVzWzBdLFxyXG4gICAgICAgIHBvaW50Lmdlb21ldHJ5LmNvb3JkaW5hdGVzWzFdXHJcbiAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IGdvb2dsZU1hcHNOb207XHJcbiAgICBpZiAoZGF0YS5pbmRleCA9PT0gJ3JvdXRlcycpIHtcclxuICAgICAgZ29vZ2xlTWFwc05vbSA9IEdvb2dsZUxpbmtzLmdldEdvb2dsZU1hcHNOYW1lTGluayhcclxuICAgICAgICBkYXRhLnByb3BlcnRpZXMubm9tICsgJywgJyArIGRhdGEucHJvcGVydGllcy5tdW5pY2lwYWxpdGVcclxuICAgICAgKTtcclxuICAgIH0gZWxzZSBpZiAoZGF0YS5pbmRleCA9PT0gJ211bmljaXBhbGl0ZXMnKSB7XHJcbiAgICAgIGdvb2dsZU1hcHNOb20gPSBHb29nbGVMaW5rcy5nZXRHb29nbGVNYXBzTmFtZUxpbmsoXHJcbiAgICAgICAgZGF0YS5wcm9wZXJ0aWVzLm5vbSArICcsICcgKyAndmlsbGUnXHJcbiAgICAgICk7XHJcbiAgICB9IGVsc2UgaWYgKGRhdGEuaW5kZXggPT09ICdtcmMnKSB7XHJcbiAgICAgIGdvb2dsZU1hcHNOb20gPSBHb29nbGVMaW5rcy5nZXRHb29nbGVNYXBzTmFtZUxpbmsoXHJcbiAgICAgICAgJ21yYysnICsgZGF0YS5wcm9wZXJ0aWVzLm5vbVxyXG4gICAgICApO1xyXG4gICAgfSBlbHNlIGlmIChkYXRhLmluZGV4ID09PSAncmVnYWRtaW4nKSB7XHJcbiAgICAgIGdvb2dsZU1hcHNOb20gPSBHb29nbGVMaW5rcy5nZXRHb29nbGVNYXBzTmFtZUxpbmsoXHJcbiAgICAgICAgZGF0YS5wcm9wZXJ0aWVzLm5vbSArICcsK1FDJ1xyXG4gICAgICApO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgZ29vZ2xlTWFwc05vbSA9IEdvb2dsZUxpbmtzLmdldEdvb2dsZU1hcHNOYW1lTGluayhcclxuICAgICAgICBkYXRhLnByb3BlcnRpZXMubm9tIHx8IGRhdGEuaGlnaGxpZ2h0LnRpdGxlXHJcbiAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgZ29vZ2xlTGlua3NQcm9wZXJ0aWVzLkdvb2dsZU1hcHMgPVxyXG4gICAgICAnPGEgaHJlZj0nICtcclxuICAgICAgZ29vZ2xlTWFwcyArXHJcbiAgICAgICcgdGFyZ2V0PVwiX2JsYW5rXCI+JyArXHJcbiAgICAgIHRoaXMubGFuZ3VhZ2VTZXJ2aWNlLnRyYW5zbGF0ZS5pbnN0YW50KCdpZ28uZ2VvLnNlYXJjaEJ5Q29vcmQnKSArXHJcbiAgICAgICc8L2E+IDxiciAvPiA8YSBocmVmPScgK1xyXG4gICAgICBnb29nbGVNYXBzTm9tICtcclxuICAgICAgJyB0YXJnZXQ9XCJfYmxhbmtcIj4nICtcclxuICAgICAgdGhpcy5sYW5ndWFnZVNlcnZpY2UudHJhbnNsYXRlLmluc3RhbnQoJ2lnby5nZW8uc2VhcmNoQnlOYW1lJykgK1xyXG4gICAgICAnPC9hPic7XHJcblxyXG4gICAgaWYgKGRhdGEuZ2VvbWV0cnkudHlwZSA9PT0gJ1BvaW50Jykge1xyXG4gICAgICBnb29nbGVMaW5rc1Byb3BlcnRpZXMuR29vZ2xlU3RyZWV0VmlldyA9XHJcbiAgICAgICAgR29vZ2xlTGlua3MuZ2V0R29vZ2xlU3RyZWV0Vmlld0xpbmsoXHJcbiAgICAgICAgICBkYXRhLmdlb21ldHJ5LmNvb3JkaW5hdGVzWzBdLFxyXG4gICAgICAgICAgZGF0YS5nZW9tZXRyeS5jb29yZGluYXRlc1sxXVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3Qgcm91dGluZzoge1xyXG4gICAgICBSb3V0ZTogc3RyaW5nO1xyXG4gICAgfSA9IHtcclxuICAgICAgUm91dGU6XHJcbiAgICAgICAgJzxzcGFuIGNsYXNzPVwicm91dGluZ1wiPiA8dT4nICtcclxuICAgICAgICB0aGlzLmxhbmd1YWdlU2VydmljZS50cmFuc2xhdGUuaW5zdGFudCgnaWdvLmdlby5zZWVSb3V0aW5nJykgK1xyXG4gICAgICAgICc8L3U+IDwvc3Bhbj4nXHJcbiAgICB9O1xyXG5cclxuICAgIHJldHVybiBPYmplY3QuYXNzaWduKFxyXG4gICAgICB7IHR5cGU6IGRhdGEuaW5kZXggfSxcclxuICAgICAgcHJvcGVydGllcyxcclxuICAgICAgZ29vZ2xlTGlua3NQcm9wZXJ0aWVzLFxyXG4gICAgICByb3V0aW5nXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVtb3ZlIGhhc2h0YWcgZnJvbSBxdWVyeVxyXG4gICAqIEBwYXJhbSB0ZXJtIFF1ZXJ5IHdpdGggaGFzaHRhZ1xyXG4gICAqL1xyXG4gIHByaXZhdGUgY29tcHV0ZVRlcm0odGVybTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIC8vIEtlZXAgaGFzaHRhZ3MgZm9yIFwibGlldXhcIlxyXG4gICAgY29uc3QgaGFzaHRhZ3MgPSB0ZXJtLm1hdGNoKC8oI1tBLVphLXpdKykvZykgfHwgW107XHJcbiAgICBsZXQga2VlcCA9IGZhbHNlO1xyXG4gICAga2VlcCA9IGhhc2h0YWdzLnNvbWUoKGhhc2h0YWcpID0+IHtcclxuICAgICAgY29uc3QgaGFzaHRhZ0tleSA9IGhhc2h0YWcuc3Vic3RyaW5nKDEpO1xyXG4gICAgICByZXR1cm4gdGhpcy5oYXNodGFnc0xpZXV4VG9LZWVwLnNvbWUoXHJcbiAgICAgICAgKGgpID0+XHJcbiAgICAgICAgICBoXHJcbiAgICAgICAgICAgIC50b0xvd2VyQ2FzZSgpXHJcbiAgICAgICAgICAgIC5ub3JtYWxpemUoJ05GRCcpXHJcbiAgICAgICAgICAgIC5yZXBsYWNlKC9bXFx1MDMwMC1cXHUwMzZmXS9nLCAnJykgPT09XHJcbiAgICAgICAgICBoYXNodGFnS2V5XHJcbiAgICAgICAgICAgIC50b0xvd2VyQ2FzZSgpXHJcbiAgICAgICAgICAgIC5ub3JtYWxpemUoJ05GRCcpXHJcbiAgICAgICAgICAgIC5yZXBsYWNlKC9bXFx1MDMwMC1cXHUwMzZmXS9nLCAnJylcclxuICAgICAgKTtcclxuICAgIH0pO1xyXG5cclxuICAgIGlmICgha2VlcCkge1xyXG4gICAgICB0ZXJtID0gdGVybS5yZXBsYWNlKC8oI1tBLVphLXpdKykvZywgJycpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0ZXJtLnJlcGxhY2UoL1teXFx3w4Atw78gIVxcLVxcK1xcKFxcKVxcLlxcL8K9wrzCviwnI10rL2csICcnKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEFkZCBoYXNodGFnIHRvIHBhcmFtIGlmIHZhbGlkXHJcbiAgICogQHBhcmFtIHRlcm0gUXVlcnkgd2l0aCBoYXNodGFnXHJcbiAgICogQHBhcmFtIG9wdGlvbnMgVGV4dFNlYXJjaE9wdGlvbnNcclxuICAgKi9cclxuICBwcml2YXRlIGNvbXB1dGVPcHRpb25zUGFyYW0oXHJcbiAgICB0ZXJtOiBzdHJpbmcsXHJcbiAgICBvcHRpb25zOiBUZXh0U2VhcmNoT3B0aW9uc1xyXG4gICk6IFRleHRTZWFyY2hPcHRpb25zIHtcclxuICAgIGNvbnN0IGhhc2h0YWdzID0gc3VwZXIuZ2V0SGFzaHRhZ3NWYWxpZCh0ZXJtLCAndHlwZScpO1xyXG4gICAgaWYgKGhhc2h0YWdzKSB7XHJcbiAgICAgIG9wdGlvbnMucGFyYW1zID0gT2JqZWN0LmFzc2lnbihvcHRpb25zLnBhcmFtcyB8fCB7fSwge1xyXG4gICAgICAgIHR5cGU6IGhhc2h0YWdzLmpvaW4oJywnKVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gb3B0aW9ucztcclxuICB9XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBJQ2hlcmNoZVJldmVyc2Ugc2VhcmNoIHNvdXJjZVxyXG4gKi9cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgSUNoZXJjaGVSZXZlcnNlU2VhcmNoU291cmNlXHJcbiAgZXh0ZW5kcyBTZWFyY2hTb3VyY2VcclxuICBpbXBsZW1lbnRzIFJldmVyc2VTZWFyY2hcclxue1xyXG4gIHN0YXRpYyBpZCA9ICdpY2hlcmNoZXJldmVyc2UnO1xyXG4gIHN0YXRpYyB0eXBlID0gRkVBVFVSRTtcclxuICBzdGF0aWMgcHJvcGVydGllc0JsYWNrbGlzdDogc3RyaW5nW10gPSBbXTtcclxuXHJcbiAgdGl0bGUkOiBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPignJyk7XHJcblxyXG4gIGdldCB0aXRsZSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMudGl0bGUkLmdldFZhbHVlKCk7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcclxuICAgIHByaXZhdGUgbGFuZ3VhZ2VTZXJ2aWNlOiBMYW5ndWFnZVNlcnZpY2UsXHJcbiAgICBzdG9yYWdlU2VydmljZTogU3RvcmFnZVNlcnZpY2UsXHJcbiAgICBASW5qZWN0KCdvcHRpb25zJykgb3B0aW9uczogU2VhcmNoU291cmNlT3B0aW9ucyxcclxuICAgIGluamVjdG9yOiBJbmplY3RvclxyXG4gICkge1xyXG4gICAgc3VwZXIob3B0aW9ucywgc3RvcmFnZVNlcnZpY2UpO1xyXG5cclxuICAgIHRoaXMubGFuZ3VhZ2VTZXJ2aWNlLmxhbmd1YWdlJC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICB0aGlzLnRpdGxlJC5uZXh0KFxyXG4gICAgICAgIHRoaXMubGFuZ3VhZ2VTZXJ2aWNlLnRyYW5zbGF0ZS5pbnN0YW50KHRoaXMub3B0aW9ucy50aXRsZSlcclxuICAgICAgKTtcclxuICAgIH0pO1xyXG5cclxuICAgIGNvbnN0IGF1dGhTZXJ2aWNlID0gaW5qZWN0b3IuZ2V0KEF1dGhTZXJ2aWNlKTtcclxuICAgIGlmICh0aGlzLnNldHRpbmdzLmxlbmd0aCkge1xyXG4gICAgICBpZiAoIWF1dGhTZXJ2aWNlKSB7XHJcbiAgICAgICAgdGhpcy5nZXRBbGxvd2VkVHlwZXMoKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBhdXRoU2VydmljZS5hdXRoZW50aWNhdGUkLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmdldEFsbG93ZWRUeXBlcygpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRJZCgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIElDaGVyY2hlUmV2ZXJzZVNlYXJjaFNvdXJjZS5pZDtcclxuICB9XHJcblxyXG4gIGdldFR5cGUoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBJQ2hlcmNoZVJldmVyc2VTZWFyY2hTb3VyY2UudHlwZTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBnZXREZWZhdWx0T3B0aW9ucygpOiBTZWFyY2hTb3VyY2VPcHRpb25zIHtcclxuICAgIGNvbnN0IHR5cGVzID1cclxuICAgICAgdGhpcy5vcHRpb25zLnBhcmFtcyAmJiB0aGlzLm9wdGlvbnMucGFyYW1zLnR5cGVcclxuICAgICAgICA/IHRoaXMub3B0aW9ucy5wYXJhbXMudHlwZS5yZXBsYWNlKC9cXHMvZywgJycpLnRvTG93ZXJDYXNlKCkuc3BsaXQoJywnKVxyXG4gICAgICAgIDogWydhZHJlc3NlcycsICdtdW5pY2lwYWxpdGVzJywgJ21yYycsICdyZWdhZG1pbiddO1xyXG5cclxuICAgIHJldHVybiB7XHJcbiAgICAgIHRpdGxlOiAnaWdvLmdlby5zZWFyY2guaWNoZXJjaGVSZXZlcnNlLm5hbWUnLFxyXG4gICAgICBzZWFyY2hVcmw6ICdodHRwczovL2dlb2VnbC5tc3AuZ291di5xYy5jYS9hcGlzL3RlcnJhcGknLFxyXG4gICAgICBzZXR0aW5nczogW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgIHR5cGU6ICdjaGVja2JveCcsXHJcbiAgICAgICAgICB0aXRsZTogJ3Jlc3VsdHMgdHlwZScsXHJcbiAgICAgICAgICBuYW1lOiAndHlwZScsXHJcbiAgICAgICAgICB2YWx1ZXM6IFtcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHRpdGxlOiAnaWdvLmdlby5zZWFyY2guaWNoZXJjaGUudHlwZS5hZGRyZXNzJyxcclxuICAgICAgICAgICAgICB2YWx1ZTogJ2FkcmVzc2VzJyxcclxuICAgICAgICAgICAgICBlbmFibGVkOiB0eXBlcy5pbmRleE9mKCdhZHJlc3NlcycpICE9PSAtMVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgdGl0bGU6ICdpZ28uZ2VvLnNlYXJjaC5pY2hlcmNoZS50eXBlLnJvYWQnLFxyXG4gICAgICAgICAgICAgIHZhbHVlOiAncm91dGVzJyxcclxuICAgICAgICAgICAgICBlbmFibGVkOiB0eXBlcy5pbmRleE9mKCdyb3V0ZXMnKSAhPT0gLTEsXHJcbiAgICAgICAgICAgICAgYXZhaWxhYmxlOiBmYWxzZVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgdGl0bGU6ICdpZ28uZ2VvLnNlYXJjaC5pY2hlcmNoZS50eXBlLmRpc3RyaWN0JyxcclxuICAgICAgICAgICAgICB2YWx1ZTogJ2Fycm9uZGlzc2VtZW50cycsXHJcbiAgICAgICAgICAgICAgZW5hYmxlZDogdHlwZXMuaW5kZXhPZignYXJyb25kaXNzZW1lbnRzJykgIT09IC0xXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICB0aXRsZTogJ2lnby5nZW8uc2VhcmNoLmljaGVyY2hlLnR5cGUuY2l0eScsXHJcbiAgICAgICAgICAgICAgdmFsdWU6ICdtdW5pY2lwYWxpdGVzJyxcclxuICAgICAgICAgICAgICBlbmFibGVkOiB0eXBlcy5pbmRleE9mKCdtdW5pY2lwYWxpdGVzJykgIT09IC0xXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICB0aXRsZTogJ2lnby5nZW8uc2VhcmNoLmljaGVyY2hlLnR5cGUubXJjJyxcclxuICAgICAgICAgICAgICB2YWx1ZTogJ21yYycsXHJcbiAgICAgICAgICAgICAgZW5hYmxlZDogdHlwZXMuaW5kZXhPZignbXJjJykgIT09IC0xXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICB0aXRsZTogJ2lnby5nZW8uc2VhcmNoLmljaGVyY2hlLnR5cGUucmVnYWRtaW4nLFxyXG4gICAgICAgICAgICAgIHZhbHVlOiAncmVnYWRtaW4nLFxyXG4gICAgICAgICAgICAgIGVuYWJsZWQ6IHR5cGVzLmluZGV4T2YoJ3JlZ2FkbWluJykgIT09IC0xXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIF1cclxuICAgICAgICB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIHR5cGU6ICdyYWRpb2J1dHRvbicsXHJcbiAgICAgICAgICB0aXRsZTogJ3JhZGl1cycsXHJcbiAgICAgICAgICBuYW1lOiAnYnVmZmVySW5wdXQnLFxyXG4gICAgICAgICAgdmFsdWVzOiBbXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICB0aXRsZTogJzEwMCBtJyxcclxuICAgICAgICAgICAgICB2YWx1ZTogMTAwLFxyXG4gICAgICAgICAgICAgIGVuYWJsZWQ6ICF0aGlzLm9wdGlvbnMuZGlzdGFuY2UgfHwgdGhpcy5vcHRpb25zLmRpc3RhbmNlID09PSAxMDBcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHRpdGxlOiAnNTAwIG0nLFxyXG4gICAgICAgICAgICAgIHZhbHVlOiA1MDAsXHJcbiAgICAgICAgICAgICAgZW5hYmxlZDogdGhpcy5vcHRpb25zLmRpc3RhbmNlID09PSA1MDBcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHRpdGxlOiAnMSBrbScsXHJcbiAgICAgICAgICAgICAgdmFsdWU6IDEwMDAsXHJcbiAgICAgICAgICAgICAgZW5hYmxlZDogdGhpcy5vcHRpb25zLmRpc3RhbmNlID09PSAxMDAwXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICB0aXRsZTogJzIga20nLFxyXG4gICAgICAgICAgICAgIHZhbHVlOiAyMDAwLFxyXG4gICAgICAgICAgICAgIGVuYWJsZWQ6IHRoaXMub3B0aW9ucy5kaXN0YW5jZSA9PT0gMjAwMFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgdGl0bGU6ICc1IGttJyxcclxuICAgICAgICAgICAgICB2YWx1ZTogNTAwMCxcclxuICAgICAgICAgICAgICBlbmFibGVkOiB0aGlzLm9wdGlvbnMuZGlzdGFuY2UgPT09IDUwMDBcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgXVxyXG4gICAgICAgIH1cclxuICAgICAgXVxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNlYXJjaCBhIGxvY2F0aW9uIGJ5IGNvb3JkaW5hdGVzXHJcbiAgICogQHBhcmFtIGxvbkxhdCBMb2NhdGlvbiBjb29yZGluYXRlc1xyXG4gICAqIEBwYXJhbSBkaXN0YW5jZSBTZWFyY2ggcmFpZHVzIGFyb3VuZCBsb25MYXRcclxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlIG9mIDxTZWFyY2hSZXN1bHQ8RmVhdHVyZT5bXVxyXG4gICAqL1xyXG4gIHJldmVyc2VTZWFyY2goXHJcbiAgICBsb25MYXQ6IFtudW1iZXIsIG51bWJlcl0sXHJcbiAgICBvcHRpb25zPzogUmV2ZXJzZVNlYXJjaE9wdGlvbnNcclxuICApOiBPYnNlcnZhYmxlPFNlYXJjaFJlc3VsdDxGZWF0dXJlPltdPiB7XHJcbiAgICBjb25zdCBwYXJhbXMgPSB0aGlzLmNvbXB1dGVSZXF1ZXN0UGFyYW1zKGxvbkxhdCwgb3B0aW9ucyB8fCB7fSk7XHJcbiAgICBpZiAoIXBhcmFtcy5nZXQoJ3R5cGUnKS5sZW5ndGgpIHtcclxuICAgICAgcmV0dXJuIG9mKFtdKTtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLmdldFJldmVyc2VTZWFyY2gocGFyYW1zKTtcclxuICB9XHJcblxyXG4gIEBDYWNoZWFibGUoe1xyXG4gICAgbWF4Q2FjaGVDb3VudDogMjAsXHJcbiAgICBjYWNoZUhhc2hlcjogY3VzdG9tQ2FjaGVIYXNoZXJcclxuICB9KVxyXG4gIHByaXZhdGUgZ2V0UmV2ZXJzZVNlYXJjaChcclxuICAgIHBhcmFtczogSHR0cFBhcmFtc1xyXG4gICk6IE9ic2VydmFibGU8U2VhcmNoUmVzdWx0PEZlYXR1cmU+W10+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGAke3RoaXMuc2VhcmNoVXJsfS9sb2NhdGVgLCB7IHBhcmFtcyB9KS5waXBlKFxyXG4gICAgICBtYXAoKHJlc3BvbnNlOiBJQ2hlcmNoZVJldmVyc2VSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmV4dHJhY3RSZXN1bHRzKHJlc3BvbnNlKTtcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldEFsbG93ZWRUeXBlcygpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgLmdldChgJHt0aGlzLnNlYXJjaFVybH0vdHlwZXNgKVxyXG4gICAgICAuc3Vic2NyaWJlKCh0eXBlczogc3RyaW5nW10pID0+IHtcclxuICAgICAgICBjb25zdCB0eXBlU2V0dGluZyA9IHRoaXMuc2V0dGluZ3MuZmluZCgocykgPT4gcy5uYW1lID09PSAndHlwZScpO1xyXG4gICAgICAgIHR5cGVTZXR0aW5nLnZhbHVlcy5mb3JFYWNoKCh2KSA9PiB7XHJcbiAgICAgICAgICB2LmF2YWlsYWJsZSA9IHR5cGVzLmluZGV4T2Yodi52YWx1ZSBhcyBzdHJpbmcpID4gLTE7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5zZXRQYXJhbUZyb21TZXR0aW5nKHR5cGVTZXR0aW5nLCBmYWxzZSk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjb21wdXRlUmVxdWVzdFBhcmFtcyhcclxuICAgIGxvbkxhdDogW251bWJlciwgbnVtYmVyXSxcclxuICAgIG9wdGlvbnM/OiBSZXZlcnNlU2VhcmNoT3B0aW9uc1xyXG4gICk6IEh0dHBQYXJhbXMge1xyXG4gICAgaWYgKG9wdGlvbnMuZGlzdGFuY2UgfHwgdGhpcy5vcHRpb25zLmRpc3RhbmNlKSB7XHJcbiAgICAgIG9wdGlvbnMucGFyYW1zID0gT2JqZWN0LmFzc2lnbihvcHRpb25zLnBhcmFtcyB8fCB7fSwge1xyXG4gICAgICAgIGJ1ZmZlcklucHV0OiBvcHRpb25zLmRpc3RhbmNlIHx8IHRoaXMub3B0aW9ucy5kaXN0YW5jZVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gbmV3IEh0dHBQYXJhbXMoe1xyXG4gICAgICBmcm9tT2JqZWN0OiBPYmplY3QuYXNzaWduKFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGxvYzogbG9uTGF0LmpvaW4oJywnKSxcclxuICAgICAgICAgIHNvcnQ6ICdkaXN0YW5jZScsXHJcbiAgICAgICAgICBnZW9tZXRyeTogdHJ1ZSxcclxuICAgICAgICAgIGljb246IHRydWVcclxuICAgICAgICB9LFxyXG4gICAgICAgIG9wdGlvbnMucGFyYW1zIHx8IHt9LFxyXG4gICAgICAgIHRoaXMucGFyYW1zXHJcbiAgICAgIClcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBleHRyYWN0UmVzdWx0cyhcclxuICAgIHJlc3BvbnNlOiBJQ2hlcmNoZVJldmVyc2VSZXNwb25zZVxyXG4gICk6IFNlYXJjaFJlc3VsdDxGZWF0dXJlPltdIHtcclxuICAgIHJldHVybiByZXNwb25zZS5mZWF0dXJlcy5tYXAoKGRhdGE6IElDaGVyY2hlUmV2ZXJzZURhdGEpID0+IHtcclxuICAgICAgcmV0dXJuIHRoaXMuZGF0YVRvUmVzdWx0KGRhdGEpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldFN1YnRpdGxlKGRhdGE6IElDaGVyY2hlUmV2ZXJzZURhdGEpIHtcclxuICAgIGlmICghdGhpcy5zZXR0aW5ncy5sZW5ndGgpIHtcclxuICAgICAgcmV0dXJuICcnO1xyXG4gICAgfVxyXG4gICAgbGV0IHN1YnRpdGxlID0gJyc7XHJcbiAgICBzd2l0Y2ggKGRhdGEucHJvcGVydGllcy50eXBlKSB7XHJcbiAgICAgIGNhc2UgJ2Fycm9uZGlzc2VtZW50cyc6XHJcbiAgICAgICAgc3VidGl0bGUgPSBkYXRhLnByb3BlcnRpZXMubXVuaWNpcGFsaXRlICsgJyAoQXJyb25kaXNzZW1lbnQpJztcclxuICAgICAgICBicmVhaztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICBjb25zdCB0eXBlU2V0dGluZyA9IHRoaXMuc2V0dGluZ3MuZmluZCgocykgPT4gcy5uYW1lID09PSAndHlwZScpO1xyXG4gICAgICAgIGNvbnN0IHR5cGUgPSB0eXBlU2V0dGluZy52YWx1ZXMuZmluZChcclxuICAgICAgICAgICh0KSA9PiB0LnZhbHVlID09PSBkYXRhLnByb3BlcnRpZXMudHlwZVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgaWYgKHR5cGUpIHtcclxuICAgICAgICAgIHN1YnRpdGxlID0gdGhpcy5sYW5ndWFnZVNlcnZpY2UudHJhbnNsYXRlLmluc3RhbnQodHlwZS50aXRsZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHN1YnRpdGxlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBkYXRhVG9SZXN1bHQoZGF0YTogSUNoZXJjaGVSZXZlcnNlRGF0YSk6IFNlYXJjaFJlc3VsdDxGZWF0dXJlPiB7XHJcbiAgICBjb25zdCBwcm9wZXJ0aWVzID0gdGhpcy5jb21wdXRlUHJvcGVydGllcyhkYXRhKTtcclxuICAgIGNvbnN0IGV4dGVudCA9IHRoaXMuY29tcHV0ZUV4dGVudChkYXRhKTtcclxuICAgIGNvbnN0IGlkID0gW3RoaXMuZ2V0SWQoKSwgcHJvcGVydGllcy50eXBlLCBwcm9wZXJ0aWVzLmNvZGVdLmpvaW4oJy4nKTtcclxuXHJcbiAgICBjb25zdCB0aXRsZUh0bWwgPSBkYXRhLnByb3BlcnRpZXMubm9tO1xyXG4gICAgY29uc3Qgc3VidGl0bGVIdG1sID0gJyA8c21hbGw+ICcgKyB0aGlzLmdldFN1YnRpdGxlKGRhdGEpICsgJzwvc21hbGw+JztcclxuXHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBzb3VyY2U6IHRoaXMsXHJcbiAgICAgIGRhdGE6IHtcclxuICAgICAgICB0eXBlOiBGRUFUVVJFLFxyXG4gICAgICAgIHByb2plY3Rpb246ICdFUFNHOjQzMjYnLFxyXG4gICAgICAgIGdlb21ldHJ5OiBkYXRhLmdlb21ldHJ5LFxyXG4gICAgICAgIGV4dGVudCxcclxuICAgICAgICBwcm9wZXJ0aWVzLFxyXG4gICAgICAgIG1ldGE6IHtcclxuICAgICAgICAgIGlkLFxyXG4gICAgICAgICAgdGl0bGU6IGRhdGEucHJvcGVydGllcy5ub21cclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIG1ldGE6IHtcclxuICAgICAgICBkYXRhVHlwZTogRkVBVFVSRSxcclxuICAgICAgICBpZCxcclxuICAgICAgICB0aXRsZTogZGF0YS5wcm9wZXJ0aWVzLm5vbSxcclxuICAgICAgICB0aXRsZUh0bWw6IHRpdGxlSHRtbCArIHN1YnRpdGxlSHRtbCxcclxuICAgICAgICBpY29uOiBkYXRhLmljb24gfHwgJ21hcC1tYXJrZXInLFxyXG4gICAgICAgIHBvaW50ZXJTdW1tYXJ5VGl0bGU6IHRoaXMuZ2V0U3VidGl0bGUoZGF0YSkgKyAnOiAnICsgZGF0YS5wcm9wZXJ0aWVzLm5vbVxyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjb21wdXRlUHJvcGVydGllcyhkYXRhOiBJQ2hlcmNoZVJldmVyc2VEYXRhKTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB7XHJcbiAgICBjb25zdCBwcm9wZXJ0aWVzID0gT2JqZWN0VXRpbHMucmVtb3ZlS2V5cyhcclxuICAgICAgZGF0YS5wcm9wZXJ0aWVzLFxyXG4gICAgICBJQ2hlcmNoZVJldmVyc2VTZWFyY2hTb3VyY2UucHJvcGVydGllc0JsYWNrbGlzdFxyXG4gICAgKTtcclxuXHJcbiAgICBjb25zdCByb3V0aW5nOiB7XHJcbiAgICAgIFJvdXRlOiBzdHJpbmc7XHJcbiAgICB9ID0ge1xyXG4gICAgICBSb3V0ZTpcclxuICAgICAgICAnPHNwYW4gY2xhc3M9XCJyb3V0aW5nXCI+IDx1PicgK1xyXG4gICAgICAgIHRoaXMubGFuZ3VhZ2VTZXJ2aWNlLnRyYW5zbGF0ZS5pbnN0YW50KCdpZ28uZ2VvLnNlZVJvdXRpbmcnKSArXHJcbiAgICAgICAgJzwvdT4gPC9zcGFuPidcclxuICAgIH07XHJcblxyXG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24ocHJvcGVydGllcywgcm91dGluZyk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNvbXB1dGVFeHRlbnQoXHJcbiAgICBkYXRhOiBJQ2hlcmNoZVJldmVyc2VEYXRhXHJcbiAgKTogW251bWJlciwgbnVtYmVyLCBudW1iZXIsIG51bWJlcl0gfCB1bmRlZmluZWQge1xyXG4gICAgcmV0dXJuIGRhdGEuYmJveFxyXG4gICAgICA/IFtkYXRhLmJib3hbMF0sIGRhdGEuYmJveFsyXSwgZGF0YS5iYm94WzFdLCBkYXRhLmJib3hbM11dXHJcbiAgICAgIDogdW5kZWZpbmVkO1xyXG4gIH1cclxufVxyXG4iXX0=
796
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNoZXJjaGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9zZWFyY2gvc2hhcmVkL3NvdXJjZXMvaWNoZXJjaGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFDTCxVQUFVLEVBRVYsVUFBVSxFQUNYLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTdELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDekMsT0FBTyxFQUFFLGVBQWUsRUFBRSxjQUFjLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDN0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUU3RCxPQUFPLGNBQWMsTUFBTSx3QkFBd0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsZUFBZSxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRXpDLE9BQU8sRUFBRSxPQUFPLEVBQVcsTUFBTSxrQkFBa0IsQ0FBQztBQUVwRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFPM0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFVBQVUsQ0FBQzs7OztBQVN4QyxNQUFNLE9BQU8sNkJBQTZCO0lBQ3BCO0lBQXBCLFlBQW9CLGVBQWdDO1FBQWhDLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtJQUFHLENBQUM7SUFFeEQsWUFBWSxDQUFDLE1BQTZCO1FBQ3hDLE9B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QUFTLENBQUM7UUFDVCxhQUFhLEVBQUUsRUFBRTtRQUNqQixXQUFXLEVBQUUsaUJBQWlCO0tBQy9CLENBQUM7O3FDQUVRLFVBQVU7b0NBQ2pCLFVBQVU7bUVBTVo7dUZBbEtVLDJCQUEyQjtjQUR2QyxVQUFVOztzQkFtQk4sTUFBTTt1QkFBQyxTQUFTOytDQXdJWCxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIEh0dHBDbGllbnQsXHJcbiAgSHR0cFBhcmFtZXRlckNvZGVjLFxyXG4gIEh0dHBQYXJhbXNcclxufSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnQGlnbzIvYXV0aCc7XHJcbmltcG9ydCB7IExhbmd1YWdlU2VydmljZSwgU3RvcmFnZVNlcnZpY2UgfSBmcm9tICdAaWdvMi9jb3JlJztcclxuaW1wb3J0IHsgT2JqZWN0VXRpbHMsIGN1c3RvbUNhY2hlSGFzaGVyIH0gZnJvbSAnQGlnbzIvdXRpbHMnO1xyXG5cclxuaW1wb3J0IHBvaW50T25GZWF0dXJlIGZyb20gJ0B0dXJmL3BvaW50LW9uLWZlYXR1cmUnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGNhdGNoRXJyb3IsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgQ2FjaGVhYmxlIH0gZnJvbSAndHMtY2FjaGVhYmxlJztcclxuXHJcbmltcG9ydCB7IEZFQVRVUkUsIEZlYXR1cmUgfSBmcm9tICcuLi8uLi8uLi9mZWF0dXJlJztcclxuaW1wb3J0IHsgUmV2ZXJzZVNlYXJjaCwgU2VhcmNoUmVzdWx0LCBUZXh0U2VhcmNoIH0gZnJvbSAnLi4vc2VhcmNoLmludGVyZmFjZXMnO1xyXG5pbXBvcnQgeyBjb21wdXRlVGVybVNpbWlsYXJpdHkgfSBmcm9tICcuLi9zZWFyY2gudXRpbHMnO1xyXG5pbXBvcnQgeyBHb29nbGVMaW5rcyB9IGZyb20gJy4vLi4vLi4vLi4vdXRpbHMvZ29vZ2xlTGlua3MnO1xyXG5pbXBvcnQge1xyXG4gIElDaGVyY2hlRGF0YSxcclxuICBJQ2hlcmNoZVJlc3BvbnNlLFxyXG4gIElDaGVyY2hlUmV2ZXJzZURhdGEsXHJcbiAgSUNoZXJjaGVSZXZlcnNlUmVzcG9uc2VcclxufSBmcm9tICcuL2ljaGVyY2hlLmludGVyZmFjZXMnO1xyXG5pbXBvcnQgeyBTZWFyY2hTb3VyY2UgfSBmcm9tICcuL3NvdXJjZSc7XHJcbmltcG9ydCB7XHJcbiAgUmV2ZXJzZVNlYXJjaE9wdGlvbnMsXHJcbiAgU2VhcmNoU291cmNlT3B0aW9ucyxcclxuICBTZWFyY2hTb3VyY2VTZXR0aW5ncyxcclxuICBUZXh0U2VhcmNoT3B0aW9uc1xyXG59IGZyb20gJy4vc291cmNlLmludGVyZmFjZXMnO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgSUNoZXJjaGVTZWFyY2hSZXN1bHRGb3JtYXR0ZXIge1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgbGFuZ3VhZ2VTZXJ2aWNlOiBMYW5ndWFnZVNlcnZpY2UpIHt9XHJcblxyXG4gIGZvcm1hdFJlc3VsdChyZXN1bHQ6IFNlYXJjaFJlc3VsdDxGZWF0dXJlPik6IFNlYXJjaFJlc3VsdDxGZWF0dXJlPiB7XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxufVxyXG5cclxuLy8gRml4IHRoZSBcIitcIiBpcyByZXBsYWNlZCB3aXRoIHNwYWNlIFwiIFwiIGluIGEgcXVlcnkgc3RyaW5nXHJcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvaXNzdWVzLzExMDU4XHJcbmV4cG9ydCBjbGFzcyBJZ29IdHRwUGFyYW1ldGVyQ29kZWMgaW1wbGVtZW50cyBIdHRwUGFyYW1ldGVyQ29kZWMge1xyXG4gIGVuY29kZUtleShrZXk6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KGtleSk7XHJcbiAgfVxyXG5cclxuICBlbmNvZGVWYWx1ZSh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBlbmNvZGVVUklDb21wb25lbnQodmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgZGVjb2RlS2V5KGtleTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBkZWNvZGVVUklDb21wb25lbnQoa2V5KTtcclxuICB9XHJcblxyXG4gIGRlY29kZVZhbHVlKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudCh2YWx1ZSk7XHJcbiAgfVxyXG59XHJcblxyXG4vKipcclxuICogSUNoZXJjaGUgc2VhcmNoIHNvdXJjZVxyXG4gKi9cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgSUNoZXJjaGVTZWFyY2hTb3VyY2UgZXh0ZW5kcyBTZWFyY2hTb3VyY2UgaW1wbGVtZW50cyBUZXh0U2VhcmNoIHtcclxuICBzdGF0aWMgaWQgPSAnaWNoZXJjaGUnO1xyXG4gIHN0YXRpYyB0eXBlID0gRkVBVFVSRTtcclxuICBzdGF0aWMgcHJvcGVydGllc0JsYWNrbGlzdDogc3RyaW5nW10gPSBbXTtcclxuICB0aXRsZSQ6IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KCcnKTtcclxuXHJcbiAgcHJpdmF0ZSBoYXNodGFnc0xpZXV4VG9LZWVwID0gW107XHJcblxyXG4gIGdldCB0aXRsZSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMudGl0bGUkLmdldFZhbHVlKCk7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcclxuICAgIHByaXZhdGUgbGFuZ3VhZ2VTZXJ2aWNlOiBMYW5ndWFnZVNlcnZpY2UsXHJcbiAgICBzdG9yYWdlU2VydmljZTogU3RvcmFnZVNlcnZpY2UsXHJcbiAgICBASW5qZWN0KCdvcHRpb25zJykgb3B0aW9uczogU2VhcmNoU291cmNlT3B0aW9ucyxcclxuICAgIEBJbmplY3QoSUNoZXJjaGVTZWFyY2hSZXN1bHRGb3JtYXR0ZXIpXHJcbiAgICBwcml2YXRlIGZvcm1hdHRlcjogSUNoZXJjaGVTZWFyY2hSZXN1bHRGb3JtYXR0ZXIsXHJcbiAgICBpbmplY3RvcjogSW5qZWN0b3JcclxuICApIHtcclxuICAgIHN1cGVyKG9wdGlvbnMsIHN0b3JhZ2VTZXJ2aWNlKTtcclxuXHJcbiAgICBjb25zdCBhdXRoU2VydmljZSA9IGluamVjdG9yLmdldChBdXRoU2VydmljZSk7XHJcbiAgICBpZiAodGhpcy5zZXR0aW5ncy5sZW5ndGgpIHtcclxuICAgICAgaWYgKCFhdXRoU2VydmljZSkge1xyXG4gICAgICAgIHRoaXMuZ2V0QWxsb3dlZFR5cGVzKCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgYXV0aFNlcnZpY2UuYXV0aGVudGljYXRlJC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5nZXRBbGxvd2VkVHlwZXMoKTtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMubGFuZ3VhZ2VTZXJ2aWNlLmxhbmd1YWdlJC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICB0aGlzLnRpdGxlJC5uZXh0KFxyXG4gICAgICAgIHRoaXMubGFuZ3VhZ2VTZXJ2aWNlLnRyYW5zbGF0ZS5pbnN0YW50KHRoaXMub3B0aW9ucy50aXRsZSlcclxuICAgICAgKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0SWQoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBJQ2hlcmNoZVNlYXJjaFNvdXJjZS5pZDtcclxuICB9XHJcblxyXG4gIGdldFR5cGUoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBJQ2hlcmNoZVNlYXJjaFNvdXJjZS50eXBlO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIGdldERlZmF1bHRPcHRpb25zKCk6IFNlYXJjaFNvdXJjZU9wdGlvbnMge1xyXG4gICAgY29uc3QgbGltaXQgPVxyXG4gICAgICB0aGlzLm9wdGlvbnMucGFyYW1zICYmIHRoaXMub3B0aW9ucy5wYXJhbXMubGltaXRcclxuICAgICAgICA/IE51bWJlcih0aGlzLm9wdGlvbnMucGFyYW1zLmxpbWl0KVxyXG4gICAgICAgIDogdW5kZWZpbmVkO1xyXG4gICAgY29uc3QgZWNtYXggPVxyXG4gICAgICB0aGlzLm9wdGlvbnMucGFyYW1zICYmIHRoaXMub3B0aW9ucy5wYXJhbXMuZWNtYXhcclxuICAgICAgICA/IE51bWJlcih0aGlzLm9wdGlvbnMucGFyYW1zLmVjbWF4KVxyXG4gICAgICAgIDogdW5kZWZpbmVkO1xyXG5cclxuICAgIGNvbnN0IHR5cGVzID0gdGhpcy5vcHRpb25zLnBhcmFtcz8udHlwZVxyXG4gICAgICA/IHRoaXMub3B0aW9ucy5wYXJhbXMudHlwZS5yZXBsYWNlKC9cXHMvZywgJycpLnRvTG93ZXJDYXNlKCkuc3BsaXQoJywnKVxyXG4gICAgICA6IFtcclxuICAgICAgICAgICdhZHJlc3NlcycsXHJcbiAgICAgICAgICAnY29kZXMtcG9zdGF1eCcsXHJcbiAgICAgICAgICAncm91dGVzJyxcclxuICAgICAgICAgICdpbnRlcnNlY3Rpb25zJyxcclxuICAgICAgICAgICdtdW5pY2lwYWxpdGVzJyxcclxuICAgICAgICAgICdtcmMnLFxyXG4gICAgICAgICAgJ3JlZ2FkbWluJyxcclxuICAgICAgICAgICdsaWV1eCdcclxuICAgICAgICBdO1xyXG5cclxuICAgIGNvbnN0IHNob3dBZHZhbmNlZFBhcmFtcyA9IHRoaXMub3B0aW9ucy5zaG93QWR2YW5jZWRTZXR0aW5ncyA/PyB0cnVlO1xyXG5cclxuICAgIHJldHVybiB7XHJcbiAgICAgIHRpdGxlOiAnaWdvLmdlby5zZWFyY2guaWNoZXJjaGUubmFtZScsXHJcbiAgICAgIHNlYXJjaFVybDogJ2h0dHBzOi8vZ2VvZWdsLm1zcC5nb3V2LnFjLmNhL2FwaXMvaWNoZXJjaGUnLFxyXG4gICAgICBzZXR0aW5nczogW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgIHR5cGU6ICdjaGVja2JveCcsXHJcbiAgICAgICAgICB0aXRsZTogJ3Jlc3VsdHMgdHlwZScsXHJcbiAgICAgICAgICBuYW1lOiAndHlwZScsXHJcbiAgICAgICAgICB2YWx1ZXM6IFtcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHRpdGxlOiAnaWdvLmdlby5zZWFyY2guaWNoZXJjaGUudHlwZS5hZGRyZXNzJyxcclxuICAgICAgICAgICAgICB2YWx1ZTogJ2FkcmVzc2VzJyxcclxuICAgICAgICAgICAgICBlbmFibGVkOiB0eXBlcy5pbmRleE9mKCdhZHJlc3NlcycpICE9PSAtMSxcclxuICAgICAgICAgICAgICBoYXNodGFnczogWydhZHJlc3NlJ11cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHRpdGxlOiAnaWdvLmdlby5zZWFyY2guaWNoZXJjaGUudHlwZS5vbGRBZGRyZXNzJyxcclxuICAgICAgICAgICAgICB2YWx1ZTogJ2FuY2llbm5lcy1hZHJlc3NlcycsXHJcbiAgICAgICAgICAgICAgZW5hYmxlZDogdHlwZXMuaW5kZXhPZignYW5jaWVubmVzLWFkcmVzc2VzJykgIT09IC0xLFxyXG4gICAgICAgICAgICAgIGhhc2h0YWdzOiBbJ2FuY2llbm5lcy1hZHJlc3NlcyddXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICB0aXRsZTogJ2lnby5nZW8uc2VhcmNoLmljaGVyY2hlLnR5cGUub2xkQ2l0eScsXHJcbiAgICAgICAgICAgICAgdmFsdWU6ICdhbmNpZW5uZXMtbXVuaWNpcGFsaXRlcycsXHJcbiAgICAgICAgICAgICAgZW5hYmxlZDogdHlwZXMuaW5kZXhPZignYW5jaWVubmVzLW11bmljaXBhbGl0ZXMnKSAhPT0gLTEsXHJcbiAgICAgICAgICAgICAgaGFzaHRhZ3M6IFsnYW5jaWVubmVzLW11bmljaXBhbGl0ZXMnXVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgdGl0bGU6ICdpZ28uZ2VvLnNlYXJjaC5pY2hlcmNoZS50eXBlLmNuJyxcclxuICAgICAgICAgICAgICB2YWx1ZTogJ2Jvcm5lcy1jbicsXHJcbiAgICAgICAgICAgICAgZW5hYmxlZDogdHlwZXMuaW5kZXhPZignYm9ybmVzLWNuJykgIT09IC0xLFxyXG4gICAgICAgICAgICAgIGhhc2h0YWdzOiBbJ2Jvcm5lJywgJ2Jvcm5lcycsICdjbiddXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICB0aXRsZTogJ2lnby5nZW8uc2VhcmNoLmljaGVyY2hlLnR5cGUuc3VtaScsXHJcbiAgICAgICAgICAgICAgdmFsdWU6ICdib3JuZXMtc3VtaScsXHJcbiAgICAgICAgICAgICAgZW5hYmxlZDogdHlwZXMuaW5kZXhPZignYm9ybmVzLXN1bWknKSAhPT0gLTEsXHJcbiAgICAgICAgICAgICAgaGFzaHRhZ3M6IFsnYm9ybmUnLCAnYm9ybmVzJywgJ3N1bWknXVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgdGl0bGU6ICdpZ28uZ2VvLnNlYXJjaC5pY2hlcmNoZS50eXBlLmNhZGFzdHJlJyxcclxuICAgICAgICAgICAgICB2YWx1ZTogJ2NhZGFzdHJlJyxcclxuICAgICAgICAgICAgICBlbmFibGVkOiB0eXBlcy5pbmRleE9mKCdjYWRhc3RyZScpICE9PSAtMSxcclxuICAgICAgICAgICAgICBoYXNodGFnczogWydjYWRhc3RyZSddXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICB0aXRsZTogJ2lnby5nZW8uc2VhcmNoLmljaGVyY2hlLnR5cGUucG9zdGFsQ29kZScsXHJcbiAgICAgICAgICAgICAgdmFsdWU6ICdjb2Rlcy1wb3N0YXV4JyxcclxuICAgICAgICAgICAgICBlbmFibGVkOiB0eXBlcy5pbmRleE9mKCdjb2Rlcy1wb3N0YXV4JykgIT09IC0xLFxyXG4gICAgICAgICAgICAgIGhhc2h0YWdzOiBbJ2NvZGUtcG9zdGFsJ11cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHRpdGxlOiAnaWdvLmdlby5zZWFyY2guaWNoZXJjaGUudHlwZS5lbnRyZXByaXNlJyxcclxuICAgICAgICAgICAgICB2YWx1ZTogJ2VudHJlcHJpc2VzJyxcclxuICAgICAgICAgICAgICBlbmFibGVkOiB0eXBlcy5pbmRleE9mKCdlbnRyZXByaXNlcycpICE9PSAtMSxcclxuICAgICAgICAgICAgICBhdmFpbGFibGU6IGZhbHNlLFxyXG4gICAgICAgICAgICAgIGhhc2h0YWdzOiBbJ2VudHJlcHJpc2UnXVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgdGl0bGU6ICdpZ28uZ2VvLnNlYXJjaC5pY2hlcmNoZS50eXBlLmN5Y2xlU3RvcCcsXHJcbiAgICAgICAgICAgICAgdmFsdWU6ICdoYWx0ZXNfY3ljbGFibGVzJyxcclxuICAgICAgICAgICAgICBlbmFibGVkOiB0eXBlcy5pbmRleE9mKCdoYWx0ZXNfY3ljbGFibGVzJykgIT09IC0xLFxyXG4gICAgICAgICAgICAgIGhhc2h0YWdzOiBbJ2hhbHRldmVsbycsICdoYWx0ZXNfY3ljbGFibGVzJ11cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHRpdGxlOiAnaWdvLmdlby5zZWFyY2guaWNoZXJjaGUudHlwZS5yZXN0QXJlYScsXHJcbiAgICAgICAgICAgICAgdmFsdWU6ICdoYWx0ZXNfcm91dGllcmVzJyxcclxuICAgICAgICAgICAgICBlbmFibGVkOiB0eXBlcy5pbmRleE9mKCdoYWx0ZXNfcm91dGllcmVzJykgIT09IC0xLFxyXG4gICAgICAgICAgICAgIGhhc2h0YWdzOiBbJ2hhbHRlcm91dGUnLCAnaGFsdGVzX3JvdXRpZXJlcyddXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICB0aXRsZTogJ2lnby5nZW8uc2VhcmNoLmljaGVyY2hlLnR5cGUuaHEnLFxyXG4gICAgICAgICAgICAgIHZhbHVlOiAnaHEnLFxyXG4gICAgICAgICAgICAgIGVuYWJsZWQ6IHR5cGVzLmluZGV4T2YoJ2hxJykgIT09IC0xLFxyXG4gICAgICAgICAgICAgIGhhc2h0YWdzOiBbJ2hxJ11cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHRpdGxlOiAnaWdvLmdlby5zZWFyY2guaWNoZXJjaGUudHlwZS5pbnRlcnNlY3Rpb24nLFxyXG4gICAgICAgICAgICAgIHZhbHVlOiAnaW50ZXJzZWN0aW9ucycsXHJcbiAgICAgICAgICAgICAgZW5hYmxlZDogdHlwZXMuaW5kZXhPZignaW50ZXJzZWN0aW9ucycpICE9PSAtMSxcclxuICAgICAgICAgICAgICBoYXNodGFnczogWydpbnRlcnNlY3Rpb24nLCAnKyddXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICB0aXRsZTogJ2lnby5nZW8uc2VhcmNoLmljaGVyY2hlLnR5cGUucGxhY2UnLFxyXG4gICAgICAgICAgICAgIHZhbHVlOiAnbGlldXgnLFxyXG4gICAgICAgICAgICAgIGVuYWJsZWQ6IHR5cGVzLmluZGV4T2YoJ2xpZXV4JykgIT09IC0xLFxyXG4gICAgICAgICAgICAgIGhhc2h0YWdzOiBbJ2xpZXUnXVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgdGl0bGU6ICdpZ28uZ2VvLnNlYXJjaC5pY2hlcmNoZS50eXBlLm1yYycsXHJcbiAgICAgICAgICAgICAgdmFsdWU6ICdtcmMnLFxyXG4gICAgICAgICAgICAgIGVuYWJsZWQ6IHR5cGVzLmluZGV4T2YoJ21yYycpICE9PSAtMSxcclxuICAgICAgICAgICAgICBoYXNodGFnczogWydtcmMnXVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgdGl0bGU6ICdpZ28uZ2VvLnNlYXJjaC5pY2hlcmNoZS50eXBlLmNpdHknLFxyXG4gICAgICAgICAgICAgIHZhbHVlOiAnbXVuaWNpcGFsaXRlcycsXHJcbiAgICAgICAgICAgICAgZW5hYmxlZDogdHlwZXMuaW5kZXhPZignbXVuaWNpcGFsaXRlcycpICE9PSAtMSxcclxuICAgICAgICAgICAgICBoYXNodGFnczogWydtdW5pY2lwYWxpdMOpJywgJ211biddXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICB0aXRsZTogJ2lnby5nZW8uc2VhcmNoLmljaGVyY2hlLnR5cGUucmVnYWRtaW4nLFxyXG4gICAgICAgICAgICAgIHZhbHVlOiAncmVnYWRtaW4nLFxyXG4gICAgICAgICAgICAgIGVuYWJsZWQ6IHR5cGVzLmluZGV4T2YoJ3JlZ2FkbWluJykgIT09IC0xLFxyXG4gICAgICAgICAgICAgIGhhc2h0YWdzOiBbJ3LDqWdpb24tYWRtaW5pc3RyYXRpdmUnLCAncmVnYWRtaW4nXVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgdGl0bGU6ICdpZ28uZ2VvLnNlYXJjaC5pY2hlcmNoZS50eXBlLmdjYycsXHJcbiAgICAgICAgICAgICAgdmFsdWU6ICdib3JuZXMtZ2NjJyxcclxuICAgICAgICAgICAgICBlbmFibGVkOiB0eXBlcy5pbmRleE9mKCdib3JuZXMtZ2NjJykgIT09IC0xLFxyXG4gICAgICAgICAgICAgIGhhc2h0YWdzOiBbJ2Jvcm5lJywgJ2Jvcm5lcycsICdyZXDDqHJlJywgJ2djYycsICdjY2cnXVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgdGl0bGU6ICdpZ28uZ2VvLnNlYXJjaC5pY2hlcmNoZS50eXBlLmttJyxcclxuICAgICAgICAgICAgICB2YWx1ZTogJ2Jvcm5lcy1rbScsXHJcbiAgICAgICAgICAgICAgZW5hYmxlZDogdHlwZXMuaW5kZXhPZignYm9ybmVzLWttJykgIT09IC0xLFxyXG4gICAgICAgICAgICAgIGhhc2h0YWdzOiBbJ2Jvcm5lJywgJ2Jvcm5lcycsICdyZXDDqHJlJywgJ2ttJ11cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHRpdGxlOiAnaWdvLmdlby5zZWFyY2guaWNoZXJjaGUudHlwZS5yb2FkJyxcclxuICAgICAgICAgICAgICB2YWx1ZTogJ3JvdXRlcycsXHJcbiAgICAgICAgICAgICAgZW5hYmxlZDogdHlwZXMuaW5kZXhPZigncm91dGVzJykgIT09IC0xLFxyXG4gICAgICAgICAgICAgIGhhc2h0YWdzOiBbJ3JvdXRlJ11cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHRpdGxlOiAnaWdvLmdlby5zZWFyY2guaWNoZXJjaGUudHlwZS5leGl0JyxcclxuICAgICAgICAgICAgICB2YWx1ZTogJ3NvcnRpZXMtYXV0b3JvdXRlJyxcclxuICAgICAgICAgICAgICBlbmFibGVkOiB0eXBlcy5pbmRleE9mKCdzb3J0aWVzLWF1dG9yb3V0ZScpICE9PSAtMSxcclxuICAgICAgICAgICAgICBoYXNodGFnczogWydzb3J0aWUnLCAnc29ydGllcycsICdleGl0J11cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHRpdGxlOiAnaWdvLmdlby5zZWFyY2guaWNoZXJjaGUudHlwZS5jdWx0cGF0cmknLFxyXG4gICAgICAgICAgICAgIHZhbHVlOiAnY3VsdHVyZScsXHJcbiAgICAgICAgICAgICAgZW5hYmxlZDogdHlwZXMuaW5kZXhPZignY3VsdHVyZScpICE9PSAtMSxcclxuICAgICAgICAgICAgICBoYXNodGFnczogWydncmlsbGUnLCAnY3VsdHVyZSddXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIF1cclxuICAgICAgICB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIHR5cGU6ICdyYWRpb2J1dHRvbicsXHJcbiAgICAgICAgICB0aXRsZTogJ3Jlc3VsdHMgbGltaXQnLFxyXG4gICAgICAgICAgbmFtZTogJ2xpbWl0JyxcclxuICAgICAgICAgIHZhbHVlczogW1xyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgdGl0bGU6ICcxJyxcclxuICAgICAgICAgICAgICB2YWx1ZTogMSxcclxuICAgICAgICAgICAgICBlbmFibGVkOiBsaW1pdCA9PT0gMVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgdGl0bGU6ICc1JyxcclxuICAgICAgICAgICAgICB2YWx1ZTogNSxcclxuICAgICAgICAgICAgICBlbmFibGVkOiBsaW1pdCA9PT0gNSB8fCAhbGltaXRcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHRpdGxlOiAnMTAnLFxyXG4gICAgICAgICAgICAgIHZhbHVlOiAxMCxcclxuICAgICAgICAgICAgICBlbmFibGVkOiBsaW1pdCA9PT0gMTBcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHRpdGxlOiAnMjUnLFxyXG4gICAgICAgICAgICAgIHZhbHVlOiAyNSxcclxuICAgICAgICAgICAgICBlbmFibGVkOiBsaW1pdCA9PT0gMjVcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHRpdGxlOiAnNTAnLFxyXG4gICAgICAgICAgICAgIHZhbHVlOiA1MCxcclxuICAgICAgICAgICAgICBlbmFibGVkOiBsaW1pdCA9PT0gNTBcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgXVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgc2hvd0FkdmFuY2VkUGFyYW1zICYmIHtcclxuICAgICAgICAgIHR5cGU6ICdyYWRpb2J1dHRvbicsXHJcbiAgICAgICAgICB0aXRsZTogJ2VjbWF4JyxcclxuICAgICAgICAgIG5hbWU6ICdlY21heCcsXHJcbiAgICAgICAgICB2YWx1ZXM6IFtcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHRpdGxlOiAnMTAgJScsXHJcbiAgICAgICAgICAgICAgdmFsdWU6IDEwLFxyXG4gICAgICAgICAgICAgIGVuYWJsZWQ6IGVjbWF4ID09PSAxMFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgdGl0bGU6ICczMCAlJyxcclxuICAgICAgICAgICAgICB2YWx1ZTogMzAsXHJcbiAgICAgICAgICAgICAgZW5hYmxlZDogZWNtYXggPT09IDMwIHx8ICFlY21heFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgdGl0bGU6ICc1MCAlJyxcclxuICAgICAgICAgICAgICB2YWx1ZTogNTAsXHJcbiAgICAgICAgICAgICAgZW5hYmxlZDogZWNtYXggPT09IDUwXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICB0aXRsZTogJzc1ICUnLFxyXG4gICAgICAgICAgICAgIHZhbHVlOiA3NSxcclxuICAgICAgICAgICAgICBlbmFibGVkOiBlY21heCA9PT0gNzVcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHRpdGxlOiAnMTAwICUnLFxyXG4gICAgICAgICAgICAgIHZhbHVlOiAxMDAsXHJcbiAgICAgICAgICAgICAgZW5hYmxlZDogZWNtYXggPT09IDEwMFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICBdXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICB0eXBlOiAncmFkaW9idXR0b24nLFxyXG4gICAgICAgICAgdGl0bGU6ICdyZXN0cmljdEV4dGVudCcsXHJcbiAgICAgICAgICBuYW1lOiAnbG9jJyxcclxuICAgICAgICAgIHZhbHVlczogW1xyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgdGl0bGU6ICdpZ28uZ2VvLnNlYXJjaC5pY2hlcmNoZS5yZXN0cmljdEV4dGVudC5tYXAnLFxyXG4gICAgICAgICAgICAgIHZhbHVlOiAndHJ1ZScsXHJcbiAgICAgICAgICAgICAgZW5hYmxlZDogZmFsc2VcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHRpdGxlOiAnaWdvLmdlby5zZWFyY2guaWNoZXJjaGUucmVzdHJpY3RFeHRlbnQucXVlYmVjJyxcclxuICAgICAgICAgICAgICB2YWx1ZTogJ2ZhbHNlJyxcclxuICAgICAgICAgICAgICBlbmFibGVkOiB0cnVlXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIF1cclxuICAgICAgICB9XHJcbiAgICAgIF0uZmlsdGVyKEJvb2xlYW4pIGFzIFNlYXJjaFNvdXJjZVNldHRpbmdzW11cclxuICAgIH07XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZWFyY2ggYSBsb2NhdGlvbiBieSBuYW1lIG9yIGtleXdvcmRcclxuICAgKiBAcGFyYW0gdGVybSBMb2NhdGlvbiBuYW1lIG9yIGtleXdvcmRcclxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlIG9mIDxTZWFyY2hSZXN1bHQ8RmVhdHVyZT5bXVxyXG4gICAqL1xyXG4gIHNlYXJjaChcclxuICAgIHRlcm06IHN0cmluZyxcclxuICAgIG9wdGlvbnM/OiBUZXh0U2VhcmNoT3B0aW9uc1xyXG4gICk6IE9ic2VydmFibGU8U2VhcmNoUmVzdWx0PEZlYXR1cmU+W10+IHtcclxuICAgIGNvbnN0IHBhcmFtcyA9IHRoaXMuY29tcHV0ZVJlcXVlc3RQYXJhbXModGVybSwgb3B0aW9ucyB8fCB7fSk7XHJcbiAgICBpZiAoIXBhcmFtcy5nZXQoJ3R5cGUnKS5sZW5ndGgpIHtcclxuICAgICAgcmV0dXJuIG9mKFtdKTtcclxuICAgIH1cclxuICAgIHRoaXMub3B0aW9ucy5wYXJhbXMucGFnZSA9IHBhcmFtcy5nZXQoJ3BhZ2UnKSB8fCAnMSc7XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuZ2V0U2VhcmNoKHRlcm0sIHBhcmFtcyk7XHJcbiAgfVxyXG5cclxuICBAQ2FjaGVhYmxlKHtcclxuICAgIG1heENhY2hlQ291bnQ6IDIwLFxyXG4gICAgY2FjaGVIYXNoZXI6IGN1c3RvbUNhY2hlSGFzaGVyXHJcbiAgfSlcclxuICBwcml2YXRlIGdldFNlYXJjaChcclxuICAgIHRlcm06IHN0cmluZyxcclxuICAgIHBhcmFtczogSHR0cFBhcmFtc1xyXG4gICk6IE9ic2VydmFibGU8U2VhcmNoUmVzdWx0PEZlYXR1cmU+W10+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGAke3RoaXMuc2VhcmNoVXJsfS9nZW9jb2RlYCwgeyBwYXJhbXMgfSkucGlwZShcclxuICAgICAgbWFwKChyZXNwb25zZTogSUNoZXJjaGVSZXNwb25zZSkgPT4gdGhpcy5leHRyYWN0UmVzdWx0cyhyZXNwb25zZSwgdGVybSkpLFxyXG4gICAgICBjYXRjaEVycm9yKChlcnIpID0+IHtcclxuICAgICAgICBlcnIuZXJyb3IudG9EaXNwbGF5ID0gdHJ1ZTtcclxuICAgICAgICBlcnIuZXJyb3IudGl0bGUgPSB0aGlzLmxhbmd1YWdlU2VydmljZS50cmFuc2xhdGUuaW5zdGFudChcclxuICAgICAgICAgIHRoaXMuZ2V0RGVmYXVsdE9wdGlvbnMoKS50aXRsZVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhyb3cgZXJyO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcbiAgcHJpdmF0ZSBnZXRBbGxvd2VkVHlwZXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgIC5nZXQoYCR7dGhpcy5zZWFyY2hVcmx9L3R5cGVzYClcclxuICAgICAgLnN1YnNjcmliZSgodHlwZXM6IHN0cmluZ1tdKSA9PiB7XHJcbiAgICAgICAgY29uc3QgdHlwZVNldHRpbmcgPSB0aGlzLnNldHRpbmdzLmZpbmQoKHMpID0+IHMubmFtZSA9PT0gJ3R5cGUnKTtcclxuICAgICAgICB0eXBlU2V0dGluZy52YWx1ZXMuZm9yRWFjaCgodikgPT4ge1xyXG4gICAgICAgICAgY29uc3QgcmVnZXggPSBuZXcgUmVnRXhwKGBeJHt2LnZhbHVlfShcXFxcLnwkKWApO1xyXG4gICAgICAgICAgY29uc3QgdHlwZXNNYXRjaGVkID0gdHlwZXMuZmlsdGVyKCh2YWx1ZSkgPT4gcmVnZXgudGVzdCh2YWx1ZSkpO1xyXG4gICAgICAgICAgdi5hdmFpbGFibGUgPSB0eXBlc01hdGNoZWQubGVuZ3RoID4gMDtcclxuICAgICAgICAgIGlmICh2LnZhbHVlID09PSAnbGlldXgnKSB7XHJcbiAgICAgICAgICAgIHRoaXMuaGFzaHRhZ3NMaWV1eFRvS2VlcCA9IFtcclxuICAgICAgICAgICAgICAuLi4obmV3IFNldChcclxuICAgICAgICAgICAgICAgIHR5cGVzTWF0Y2hlZFxyXG4gICAgICAgICAgICAgICAgICAubWFwKCh0KSA9PiB0LnNwbGl0KCcuJykpXHJcbiAgICAgICAgICAgICAgICAgIC5yZWR1Y2UoKGEsIGIpID0+IGEuY29uY2F0KGIpKVxyXG4gICAgICAgICAgICAgICAgICAuZmlsdGVyKCh0KSA9PiB0ICE9PSAnbGlldXgnKVxyXG4gICAgICAgICAgICAgICkgYXMgYW55KVxyXG4gICAgICAgICAgICBdO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuc2V0UGFyYW1Gcm9tU2V0dGluZyh0eXBlU2V0dGluZywgZmFsc2UpO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY29tcHV0ZVJlcXVlc3RQYXJhbXMoXHJcbiAgICB0ZXJtOiBzdHJpbmcsXHJcbiAgICBvcHRpb25zOiBUZXh0U2VhcmNoT3B0aW9uc1xyXG4gICk6IEh0dHBQYXJhbXMge1xyXG4gICAgY29uc3QgcXVlcnlQYXJhbXM6IGFueSA9IE9iamVjdC5hc3NpZ24oXHJcbiAgICAgIHtcclxuICAgICAgICBnZW9tZXRyeTogdHJ1ZSxcclxuICAgICAgICBiYm94OiB0cnVlLFxyXG4gICAgICAgIGljb246IHRydWUsXHJcbiAgICAgICAgdHlwZTogJ2FkcmVzc2VzLGNvZGVzLXBvc3RhdXgsbXVuaWNpcGFsaXRlcyxtcmMscmVnYWRtaW4sbGlldXgsZW50cmVwcmlzZXMsYm9ybmVzLXN1bWknXHJcbiAgICAgIH0sXHJcbiAgICAgIHRoaXMucGFyYW1zLFxyXG4gICAgICB0aGlzLmNvbXB1dGVPcHRpb25zUGFyYW0odGVybSwgb3B0aW9ucyB8fCB7fSkucGFyYW1zLFxyXG4gICAgICB7XHJcbiAgICAgICAgcTogdGhpcy5jb21wdXRlVGVybSh0ZXJtKSxcclxuICAgICAgICBwYWdlOiBvcHRpb25zLnBhZ2VcclxuICAgICAgfVxyXG4gICAgKTtcclxuXHJcbiAgICBpZiAocXVlcnlQYXJhbXMubG9jID09PSAndHJ1ZScpIHtcclxuICAgICAgY29uc3QgW3hNaW4sIHlNaW4sIHhNYXgsIHlNYXhdID0gb3B0aW9ucy5leHRlbnQ7XHJcbiAgICAgIHF1ZXJ5UGFyYW1zLmxvYyA9IGAke3hNaW59LCR7eU1pbn07JHt4TWF4fSwke3lNaW59OyR7eE1heH0sJHt5TWF4fTske3hNaW59LCR7eU1heH07JHt4TWlufSwke3lNaW59YDtcclxuICAgIH0gZWxzZSBpZiAocXVlcnlQYXJhbXMubG9jID09PSAnZmFsc2UnKSB7XHJcbiAgICAgIGRlbGV0ZSBxdWVyeVBhcmFtcy5sb2M7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKC8jW0EtWmEtel0rLy50ZXN0KHF1ZXJ5UGFyYW1zLnEpKSB7XHJcbiAgICAgIHF1ZXJ5UGFyYW1zLnR5cGUgPSAnbGlldXgnO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBuZXcgSHR0cFBhcmFtcyh7XHJcbiAgICAgIGZyb21PYmplY3Q6IE9iamVjdFV0aWxzLnJlbW92ZVVuZGVmaW5lZChxdWVyeVBhcmFtcyksXHJcbiAgICAgIGVuY29kZXI6IG5ldyBJZ29IdHRwUGFyYW1ldGVyQ29kZWMoKVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGV4dHJhY3RSZXN1bHRzKFxyXG4gICAgcmVzcG9uc2U6IElDaGVyY2hlUmVzcG9uc2UsXHJcbiAgICB0ZXJtOiBzdHJpbmdcclxuICApOiBTZWFyY2hSZXN1bHQ8RmVhdHVyZT5bXSB7XHJcbiAgICByZXR1cm4gcmVzcG9uc2UuZmVhdHVyZXMubWFwKChkYXRhOiBJQ2hlcmNoZURhdGEpID0+IHtcclxuICAgICAgcmV0dXJuIHRoaXMuZm9ybWF0dGVyLmZvcm1hdFJlc3VsdChcclxuICAgICAgICB0aGlzLmRhdGFUb1Jlc3VsdChkYXRhLCB0ZXJtLCByZXNwb25zZSlcclxuICAgICAgKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBkYXRhVG9SZXN1bHQoXHJcbiAgICBkYXRhOiBJQ2hlcmNoZURhdGEsXHJcbiAgICB0ZXJtOiBzdHJpbmcsXHJcbiAgICByZXNwb25zZT86IElDaGVyY2hlUmVzcG9uc2VcclxuICApOiBTZWFyY2hSZXN1bHQ8RmVhdHVyZT4ge1xyXG4gICAgY29uc3QgcHJvcGVydGllcyA9IHRoaXMuY29tcHV0ZVByb3BlcnRpZXMoZGF0YSk7XHJcbiAgICBjb25zdCBpZCA9IFt0aGlzLmdldElkKCksIHByb3BlcnRpZXMudHlwZSwgcHJvcGVydGllcy5jb2RlXS5qb2luKCcuJyk7XHJcblxyXG4gICAgY29uc3QgdGl0bGVIdG1sID0gZGF0YS5oaWdobGlnaHQudGl0bGUgfHwgZGF0YS5wcm9wZXJ0aWVzLm5vbTtcclxuICAgIGNvbnN0IHN1YnRpdGxlSHRtbCA9IGRhdGEuaGlnaGxpZ2h0LnRpdGxlMlxyXG4gICAgICA/ICcgPHNtYWxsPiAnICsgZGF0YS5oaWdobGlnaHQudGl0bGUyICsgJzwvc21hbGw+J1xyXG4gICAgICA6ICcnO1xyXG4gICAgY29uc3Qgc3VidGl0bGVIdG1sMiA9IGRhdGEuaGlnaGxpZ2h0LnRpdGxlM1xyXG4gICAgICA/ICc8YnI+PHNtYWxsPiAnICsgZGF0YS5oaWdobGlnaHQudGl0bGUzICsgJzwvc21hbGw+J1xyXG4gICAgICA6ICcnO1xyXG5cclxuICAgIHJldHVybiB7XHJcbiAgICAgIHNvdXJjZTogdGhpcyxcclxuICAgICAgZGF0YToge1xyXG4gICAgICAgIHR5cGU6IEZFQVRVUkUsXHJcbiAgICAgICAgcHJvamVjdGlvbjogJ0VQU0c6NDMyNicsXHJcbiAgICAgICAgZ2VvbWV0cnk6IGRhdGEuZ2VvbWV0cnksXHJcbiAgICAgICAgZXh0ZW50OiBkYXRhLmJib3gsXHJcbiAgICAgICAgcHJvcGVydGllcyxcclxuICAgICAgICBtZXRhOiB7XHJcbiAgICAgICAgICBpZCxcclxuICAgICAgICAgIHRpdGxlOiBkYXRhLnByb3BlcnRpZXMubm9tXHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICBtZXRhOiB7XHJcbiAgICAgICAgZGF0YVR5cGU6IEZFQVRVUkUsXHJcbiAgICAgICAgaWQsXHJcbiAgICAgICAgdGl0bGU6IGRhdGEucHJvcGVydGllcy5ub20sXHJcbiAgICAgICAgdGl0bGVIdG1sOiB0aXRsZUh0bWwgKyBzdWJ0aXRsZUh0bWwgKyBzdWJ0aXRsZUh0bWwyLFxyXG4gICAgICAgIGljb246IGRhdGEuaWNvbiB8fCAnbWFwLW1hcmtlcicsXHJcbiAgICAgICAgc2NvcmU6XHJcbiAgICAgICAgICBkYXRhLnNjb3JlIHx8IGNvbXB1dGVUZXJtU2ltaWxhcml0eSh0ZXJtLnRyaW0oKSwgZGF0YS5wcm9wZXJ0aWVzLm5vbSksXHJcbiAgICAgICAgbmV4dFBhZ2U6XHJcbiAgICAgICAgICByZXNwb25zZS5mZWF0dXJlcy5sZW5ndGggJSArdGhpcy5vcHRpb25zLnBhcmFtcy5saW1pdCA9PT0gMCAmJlxyXG4gICAgICAgICAgK3RoaXMub3B0aW9ucy5wYXJhbXMucGFnZSA8IDEwXHJcbiAgICAgIH1cclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNvbXB1dGVQcm9wZXJ0aWVzKGRhdGE6IElDaGVyY2hlRGF0YSk6IHsgW2tleTogc3RyaW5nXTogYW55IH0ge1xyXG4gICAgY29uc3QgcHJvcGVydGllcyA9IE9iamVjdFV0aWxzLnJlbW92ZUtleXMoXHJcbiAgICAgIGRhdGEucHJvcGVydGllcyxcclxuICAgICAgSUNoZXJjaGVTZWFyY2hTb3VyY2UucHJvcGVydGllc0JsYWNrbGlzdFxyXG4gICAgKTtcclxuXHJcbiAgICBpZiAoIWRhdGEuZ2VvbWV0cnkpIHtcclxuICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oeyB0eXBlOiBkYXRhLmluZGV4IH0sIHByb3BlcnRpZXMpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGdvb2dsZUxpbmtzUHJvcGVydGllczoge1xyXG4gICAgICBHb29nbGVNYXBzOiBzdHJpbmc7XHJcbiAgICAgIEdvb2dsZVN0cmVldFZpZXc/OiBzdHJpbmc7XHJcbiAgICB9ID0ge1xyXG4gICAgICBHb29nbGVNYXBzOiAnJ1xyXG4gICAgfTtcclxuXHJcbiAgICBsZXQgZ29vZ2xlTWFwcztcclxuICAgIGlmIChkYXRhLmdlb21ldHJ5LnR5cGUgPT09ICdQb2ludCcpIHtcclxuICAgICAgZ29vZ2xlTWFwcyA9IEdvb2dsZUxpbmtzLmdldEdvb2dsZU1hcHNDb29yZExpbmsoXHJcbiAgICAgICAgZGF0YS5nZW9tZXRyeS5jb29yZGluYXRlc1swXSxcclxuICAgICAgICBkYXRhLmdlb21ldHJ5LmNvb3JkaW5hdGVzWzFdXHJcbiAgICAgICk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zdCBwb2ludCA9IHBvaW50T25GZWF0dXJlKGRhdGEuZ2VvbWV0cnkpO1xyXG4gICAgICBnb29nbGVNYXBzID0gR29vZ2xlTGlua3MuZ2V0R29vZ2xlTWFwc0Nvb3JkTGluayhcclxuICAgICAgICBwb2ludC5nZW9tZXRyeS5jb29yZGluYXRlc1swXSxcclxuICAgICAgICBwb2ludC5nZW9tZXRyeS5jb29yZGluYXRlc1sxXVxyXG4gICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBnb29nbGVNYXBzTm9tO1xyXG4gICAgaWYgKGRhdGEuaW5kZXggPT09ICdyb3V0ZXMnKSB7XHJcbiAgICAgIGdvb2dsZU1hcHNOb20gPSBHb29nbGVMaW5rcy5nZXRHb29nbGVNYXBzTmFtZUxpbmsoXHJcbiAgICAgICAgZGF0YS5wcm9wZXJ0aWVzLm5vbSArICcsICcgKyBkYXRhLnByb3BlcnRpZXMubXVuaWNpcGFsaXRlXHJcbiAgICAgICk7XHJcbiAgICB9IGVsc2UgaWYgKGRhdGEuaW5kZXggPT09ICdtdW5pY2lwYWxpdGVzJykge1xyXG4gICAgICBnb29nbGVNYXBzTm9tID0gR29vZ2xlTGlua3MuZ2V0R29vZ2xlTWFwc05hbWVMaW5rKFxyXG4gICAgICAgIGRhdGEucHJvcGVydGllcy5ub20gKyAnLCAnICsgJ3ZpbGxlJ1xyXG4gICAgICApO1xyXG4gICAgfSBlbHNlIGlmIChkYXRhLmluZGV4ID09PSAnbXJjJykge1xyXG4gICAgICBnb29nbGVNYXBzTm9tID0gR29vZ2xlTGlua3MuZ2V0R29vZ2xlTWFwc05hbWVMaW5rKFxyXG4gICAgICAgICdtcmMrJyArIGRhdGEucHJvcGVydGllcy5ub21cclxuICAgICAgKTtcclxuICAgIH0gZWxzZSBpZiAoZGF0YS5pbmRleCA9PT0gJ3JlZ2FkbWluJykge1xyXG4gICAgICBnb29nbGVNYXBzTm9tID0gR29vZ2xlTGlua3MuZ2V0R29vZ2xlTWFwc05hbWVMaW5rKFxyXG4gICAgICAgIGRhdGEucHJvcGVydGllcy5ub20gKyAnLCtRQydcclxuICAgICAgKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGdvb2dsZU1hcHNOb20gPSBHb29nbGVMaW5rcy5nZXRHb29nbGVNYXBzTmFtZUxpbmsoXHJcbiAgICAgICAgZGF0YS5wcm9wZXJ0aWVzLm5vbSB8fCBkYXRhLmhpZ2hsaWdodC50aXRsZVxyXG4gICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIGdvb2dsZUxpbmtzUHJvcGVydGllcy5Hb29nbGVNYXBzID1cclxuICAgICAgJzxhIGhyZWY9JyArXHJcbiAgICAgIGdvb2dsZU1hcHMgK1xyXG4gICAgICAnIHRhcmdldD1cIl9ibGFua1wiPicgK1xyXG4gICAgICB0aGlzLmxhbmd1YWdlU2VydmljZS50cmFuc2xhdGUuaW5zdGFudCgnaWdvLmdlby5zZWFyY2hCeUNvb3JkJykgK1xyXG4gICAgICAnPC9hPiA8YnIgLz4gPGEgaHJlZj0nICtcclxuICAgICAgZ29vZ2xlTWFwc05vbSArXHJcbiAgICAgICcgdGFyZ2V0PVwiX2JsYW5rXCI+JyArXHJcbiAgICAgIHRoaXMubGFuZ3VhZ2VTZXJ2aWNlLnRyYW5zbGF0ZS5pbnN0YW50KCdpZ28uZ2VvLnNlYXJjaEJ5TmFtZScpICtcclxuICAgICAgJzwvYT4nO1xyXG5cclxuICAgIGlmIChkYXRhLmdlb21ldHJ5LnR5cGUgPT09ICdQb2ludCcpIHtcclxuICAgICAgZ29vZ2xlTGlua3NQcm9wZXJ0aWVzLkdvb2dsZVN0cmVldFZpZXcgPVxyXG4gICAgICAgIEdvb2dsZUxpbmtzLmdldEdvb2dsZVN0cmVldFZpZXdMaW5rKFxyXG4gICAgICAgICAgZGF0YS5nZW9tZXRyeS5jb29yZGluYXRlc1swXSxcclxuICAgICAgICAgIGRhdGEuZ2VvbWV0cnkuY29vcmRpbmF0ZXNbMV1cclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHJvdXRpbmc6IHtcclxuICAgICAgUm91dGU6IHN0cmluZztcclxuICAgIH0gPSB7XHJcbiAgICAgIFJvdXRlOlxyXG4gICAgICAgICc8c3BhbiBjbGFzcz1cInJvdXRpbmdcIj4gPHU+JyArXHJcbiAgICAgICAgdGhpcy5sYW5ndWFnZVNlcnZpY2UudHJhbnNsYXRlLmluc3RhbnQoJ2lnby5nZW8uc2VlUm91dGluZycpICtcclxuICAgICAgICAnPC91PiA8L3NwYW4+J1xyXG4gICAgfTtcclxuXHJcbiAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihcclxuICAgICAgeyB0eXBlOiBkYXRhLmluZGV4IH0sXHJcbiAgICAgIHByb3BlcnRpZXMsXHJcbiAgICAgIGdvb2dsZUxpbmtzUHJvcGVydGllcyxcclxuICAgICAgcm91dGluZ1xyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJlbW92ZSBoYXNodGFnIGZyb20gcXVlcnlcclxuICAgKiBAcGFyYW0gdGVybSBRdWVyeSB3aXRoIGhhc2h0YWdcclxuICAgKi9cclxuICBwcml2YXRlIGNvbXB1dGVUZXJtKHRlcm06IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICAvLyBLZWVwIGhhc2h0YWdzIGZvciBcImxpZXV4XCJcclxuICAgIGNvbnN0IGhhc2h0YWdzID0gdGVybS5tYXRjaCgvKCNbQS1aYS16XSspL2cpIHx8IFtdO1xyXG4gICAgbGV0IGtlZXAgPSBmYWxzZTtcclxuICAgIGtlZXAgPSBoYXNodGFncy5zb21lKChoYXNodGFnKSA9PiB7XHJcbiAgICAgIGNvbnN0IGhhc2h0YWdLZXkgPSBoYXNodGFnLnN1YnN0cmluZygxKTtcclxuICAgICAgcmV0dXJuIHRoaXMuaGFzaHRhZ3NMaWV1eFRvS2VlcC5zb21lKFxyXG4gICAgICAgIChoKSA9PlxyXG4gICAgICAgICAgaFxyXG4gICAgICAgICAgICAudG9Mb3dlckNhc2UoKVxyXG4gICAgICAgICAgICAubm9ybWFsaXplKCdORkQnKVxyXG4gICAgICAgICAgICAucmVwbGFjZSgvW1xcdTAzMDAtXFx1MDM2Zl0vZywgJycpID09PVxyXG4gICAgICAgICAgaGFzaHRhZ0tleVxyXG4gICAgICAgICAgICAudG9Mb3dlckNhc2UoKVxyXG4gICAgICAgICAgICAubm9ybWFsaXplKCdORkQnKVxyXG4gICAgICAgICAgICAucmVwbGFjZSgvW1xcdTAzMDAtXFx1MDM2Zl0vZywgJycpXHJcbiAgICAgICk7XHJcbiAgICB9KTtcclxuXHJcbiAgICBpZiAoIWtlZXApIHtcclxuICAgICAgdGVybSA9IHRlcm0ucmVwbGFjZSgvKCNbQS1aYS16XSspL2csICcnKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdGVybS5yZXBsYWNlKC9bXlxcd8OALcO/ICFcXC1cXCtcXChcXClcXC5cXC/CvcK8wr4sJyNdKy9nLCAnJyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBZGQgaGFzaHRhZyB0byBwYXJhbSBpZiB2YWxpZFxyXG4gICAqIEBwYXJhbSB0ZXJtIFF1ZXJ5IHdpdGggaGFzaHRhZ1xyXG4gICAqIEBwYXJhbSBvcHRpb25zIFRleHRTZWFyY2hPcHRpb25zXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBjb21wdXRlT3B0aW9uc1BhcmFtKFxyXG4gICAgdGVybTogc3RyaW5nLFxyXG4gICAgb3B0aW9uczogVGV4dFNlYXJjaE9wdGlvbnNcclxuICApOiBUZXh0U2VhcmNoT3B0aW9ucyB7XHJcbiAgICBjb25zdCBoYXNodGFncyA9IHN1cGVyLmdldEhhc2h0YWdzVmFsaWQodGVybSwgJ3R5cGUnKTtcclxuICAgIGlmIChoYXNodGFncykge1xyXG4gICAgICBvcHRpb25zLnBhcmFtcyA9IE9iamVjdC5hc3NpZ24ob3B0aW9ucy5wYXJhbXMgfHwge30sIHtcclxuICAgICAgICB0eXBlOiBoYXNodGFncy5qb2luKCcsJylcclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIG9wdGlvbnM7XHJcbiAgfVxyXG59XHJcblxyXG4vKipcclxuICogSUNoZXJjaGVSZXZlcnNlIHNlYXJjaCBzb3VyY2VcclxuICovXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIElDaGVyY2hlUmV2ZXJzZVNlYXJjaFNvdXJjZVxyXG4gIGV4dGVuZHMgU2VhcmNoU291cmNlXHJcbiAgaW1wbGVtZW50cyBSZXZlcnNlU2VhcmNoXHJcbntcclxuICBzdGF0aWMgaWQgPSAnaWNoZXJjaGVyZXZlcnNlJztcclxuICBzdGF0aWMgdHlwZSA9IEZFQVRVUkU7XHJcbiAgc3RhdGljIHByb3BlcnRpZXNCbGFja2xpc3Q6IHN0cmluZ1tdID0gW107XHJcblxyXG4gIHRpdGxlJDogQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4oJycpO1xyXG5cclxuICBnZXQgdGl0bGUoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLnRpdGxlJC5nZXRWYWx1ZSgpO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXHJcbiAgICBwcml2YXRlIGxhbmd1YWdlU2VydmljZTogTGFuZ3VhZ2VTZXJ2aWNlLFxyXG4gICAgc3RvcmFnZVNlcnZpY2U6IFN0b3JhZ2VTZXJ2aWNlLFxyXG4gICAgQEluamVjdCgnb3B0aW9ucycpIG9wdGlvbnM6IFNlYXJjaFNvdXJjZU9wdGlvbnMsXHJcbiAgICBpbmplY3RvcjogSW5qZWN0b3JcclxuICApIHtcclxuICAgIHN1cGVyKG9wdGlvbnMsIHN0b3JhZ2VTZXJ2aWNlKTtcclxuXHJcbiAgICB0aGlzLmxhbmd1YWdlU2VydmljZS5sYW5ndWFnZSQuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgdGhpcy50aXRsZSQubmV4dChcclxuICAgICAgICB0aGlzLmxhbmd1YWdlU2VydmljZS50cmFuc2xhdGUuaW5zdGFudCh0aGlzLm9wdGlvbnMudGl0bGUpXHJcbiAgICAgICk7XHJcbiAgICB9KTtcclxuXHJcbiAgICBjb25zdCBhdXRoU2VydmljZSA9IGluamVjdG9yLmdldChBdXRoU2VydmljZSk7XHJcbiAgICBpZiAodGhpcy5zZXR0aW5ncy5sZW5ndGgpIHtcclxuICAgICAgaWYgKCFhdXRoU2VydmljZSkge1xyXG4gICAgICAgIHRoaXMuZ2V0QWxsb3dlZFR5cGVzKCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgYXV0aFNlcnZpY2UuYXV0aGVudGljYXRlJC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5nZXRBbGxvd2VkVHlwZXMoKTtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0SWQoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBJQ2hlcmNoZVJldmVyc2VTZWFyY2hTb3VyY2UuaWQ7XHJcbiAgfVxyXG5cclxuICBnZXRUeXBlKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gSUNoZXJjaGVSZXZlcnNlU2VhcmNoU291cmNlLnR5cGU7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgZ2V0RGVmYXVsdE9wdGlvbnMoKTogU2VhcmNoU291cmNlT3B0aW9ucyB7XHJcbiAgICBjb25zdCB0eXBlcyA9XHJcbiAgICAgIHRoaXMub3B0aW9ucy5wYXJhbXMgJiYgdGhpcy5vcHRpb25zLnBhcmFtcy50eXBlXHJcbiAgICAgICAgPyB0aGlzLm9wdGlvbnMucGFyYW1zLnR5cGUucmVwbGFjZSgvXFxzL2csICcnKS50b0xvd2VyQ2FzZSgpLnNwbGl0KCcsJylcclxuICAgICAgICA6IFsnYWRyZXNzZXMnLCAnbXVuaWNpcGFsaXRlcycsICdtcmMnLCAncmVnYWRtaW4nXTtcclxuXHJcbiAgICByZXR1cm4ge1xyXG4gICAgICB0aXRsZTogJ2lnby5nZW8uc2VhcmNoLmljaGVyY2hlUmV2ZXJzZS5uYW1lJyxcclxuICAgICAgc2VhcmNoVXJsOiAnaHR0cHM6Ly9nZW9lZ2wubXNwLmdvdXYucWMuY2EvYXBpcy90ZXJyYXBpJyxcclxuICAgICAgc2V0dGluZ3M6IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICB0eXBlOiAnY2hlY2tib3gnLFxyXG4gICAgICAgICAgdGl0bGU6ICdyZXN1bHRzIHR5cGUnLFxyXG4gICAgICAgICAgbmFtZTogJ3R5cGUnLFxyXG4gICAgICAgICAgdmFsdWVzOiBbXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICB0aXRsZTogJ2lnby5nZW8uc2VhcmNoLmljaGVyY2hlLnR5cGUuYWRkcmVzcycsXHJcbiAgICAgICAgICAgICAgdmFsdWU6ICdhZHJlc3NlcycsXHJcbiAgICAgICAgICAgICAgZW5hYmxlZDogdHlwZXMuaW5kZXhPZignYWRyZXNzZXMnKSAhPT0gLTFcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHRpdGxlOiAnaWdvLmdlby5zZWFyY2guaWNoZXJjaGUudHlwZS5yb2FkJyxcclxuICAgICAgICAgICAgICB2YWx1ZTogJ3JvdXRlcycsXHJcbiAgICAgICAgICAgICAgZW5hYmxlZDogdHlwZXMuaW5kZXhPZigncm91dGVzJykgIT09IC0xLFxyXG4gICAgICAgICAgICAgIGF2YWlsYWJsZTogZmFsc2VcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHRpdGxlOiAnaWdvLmdlby5zZWFyY2guaWNoZXJjaGUudHlwZS5kaXN0cmljdCcsXHJcbiAgICAgICAgICAgICAgdmFsdWU6ICdhcnJvbmRpc3NlbWVudHMnLFxyXG4gICAgICAgICAgICAgIGVuYWJsZWQ6IHR5cGVzLmluZGV4T2YoJ2Fycm9uZGlzc2VtZW50cycpICE9PSAtMVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgdGl0bGU6ICdpZ28uZ2VvLnNlYXJjaC5pY2hlcmNoZS50eXBlLmNpdHknLFxyXG4gICAgICAgICAgICAgIHZhbHVlOiAnbXVuaWNpcGFsaXRlcycsXHJcbiAgICAgICAgICAgICAgZW5hYmxlZDogdHlwZXMuaW5kZXhPZignbXVuaWNpcGFsaXRlcycpICE9PSAtMVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgdGl0bGU6ICdpZ28uZ2VvLnNlYXJjaC5pY2hlcmNoZS50eXBlLm1yYycsXHJcbiAgICAgICAgICAgICAgdmFsdWU6ICdtcmMnLFxyXG4gICAgICAgICAgICAgIGVuYWJsZWQ6IHR5cGVzLmluZGV4T2YoJ21yYycpICE9PSAtMVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgdGl0bGU6ICdpZ28uZ2VvLnNlYXJjaC5pY2hlcmNoZS50eXBlLnJlZ2FkbWluJyxcclxuICAgICAgICAgICAgICB2YWx1ZTogJ3JlZ2FkbWluJyxcclxuICAgICAgICAgICAgICBlbmFibGVkOiB0eXBlcy5pbmRleE9mKCdyZWdhZG1pbicpICE9PSAtMVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICBdXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICB0eXBlOiAncmFkaW9idXR0b24nLFxyXG4gICAgICAgICAgdGl0bGU6ICdyYWRpdXMnLFxyXG4gICAgICAgICAgbmFtZTogJ2J1ZmZlcklucHV0JyxcclxuICAgICAgICAgIHZhbHVlczogW1xyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgdGl0bGU6ICcxMDAgbScsXHJcbiAgICAgICAgICAgICAgdmFsdWU6IDEwMCxcclxuICAgICAgICAgICAgICBlbmFibGVkOiAhdGhpcy5vcHRpb25zLmRpc3RhbmNlIHx8IHRoaXMub3B0aW9ucy5kaXN0YW5jZSA9PT0gMTAwXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICB0aXRsZTogJzUwMCBtJyxcclxuICAgICAgICAgICAgICB2YWx1ZTogNTAwLFxyXG4gICAgICAgICAgICAgIGVuYWJsZWQ6IHRoaXMub3B0aW9ucy5kaXN0YW5jZSA9PT0gNTAwXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICB0aXRsZTogJzEga20nLFxyXG4gICAgICAgICAgICAgIHZhbHVlOiAxMDAwLFxyXG4gICAgICAgICAgICAgIGVuYWJsZWQ6IHRoaXMub3B0aW9ucy5kaXN0YW5jZSA9PT0gMTAwMFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgdGl0bGU6ICcyIGttJyxcclxuICAgICAgICAgICAgICB2YWx1ZTogMjAwMCxcclxuICAgICAgICAgICAgICBlbmFibGVkOiB0aGlzLm9wdGlvbnMuZGlzdGFuY2UgPT09IDIwMDBcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHRpdGxlOiAnNSBrbScsXHJcbiAgICAgICAgICAgICAgdmFsdWU6IDUwMDAsXHJcbiAgICAgICAgICAgICAgZW5hYmxlZDogdGhpcy5vcHRpb25zLmRpc3RhbmNlID09PSA1MDAwXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIF1cclxuICAgICAgICB9XHJcbiAgICAgIF1cclxuICAgIH07XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZWFyY2ggYSBsb2NhdGlvbiBieSBjb29yZGluYXRlc1xyXG4gICAqIEBwYXJhbSBsb25MYXQgTG9jYXRpb24gY29vcmRpbmF0ZXNcclxuICAgKiBAcGFyYW0gZGlzdGFuY2UgU2VhcmNoIHJhaWR1cyBhcm91bmQgbG9uTGF0XHJcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZSBvZiA8U2VhcmNoUmVzdWx0PEZlYXR1cmU+W11cclxuICAgKi9cclxuICByZXZlcnNlU2VhcmNoKFxyXG4gICAgbG9uTGF0OiBbbnVtYmVyLCBudW1iZXJdLFxyXG4gICAgb3B0aW9ucz86IFJldmVyc2VTZWFyY2hPcHRpb25zXHJcbiAgKTogT2JzZXJ2YWJsZTxTZWFyY2hSZXN1bHQ8RmVhdHVyZT5bXT4ge1xyXG4gICAgY29uc3QgcGFyYW1zID0gdGhpcy5jb21wdXRlUmVxdWVzdFBhcmFtcyhsb25MYXQsIG9wdGlvbnMgfHwge30pO1xyXG4gICAgaWYgKCFwYXJhbXMuZ2V0KCd0eXBlJykubGVuZ3RoKSB7XHJcbiAgICAgIHJldHVybiBvZihbXSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5nZXRSZXZlcnNlU2VhcmNoKHBhcmFtcyk7XHJcbiAgfVxyXG5cclxuICBAQ2FjaGVhYmxlKHtcclxuICAgIG1heENhY2hlQ291bnQ6IDIwLFxyXG4gICAgY2FjaGVIYXNoZXI6IGN1c3RvbUNhY2hlSGFzaGVyXHJcbiAgfSlcclxuICBwcml2YXRlIGdldFJldmVyc2VTZWFyY2goXHJcbiAgICBwYXJhbXM6IEh0dHBQYXJhbXNcclxuICApOiBPYnNlcnZhYmxlPFNlYXJjaFJlc3VsdDxGZWF0dXJlPltdPiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChgJHt0aGlzLnNlYXJjaFVybH0vbG9jYXRlYCwgeyBwYXJhbXMgfSkucGlwZShcclxuICAgICAgbWFwKChyZXNwb25zZTogSUNoZXJjaGVSZXZlcnNlUmVzcG9uc2UpID0+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5leHRyYWN0UmVzdWx0cyhyZXNwb25zZSk7XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRBbGxvd2VkVHlwZXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgIC5nZXQoYCR7dGhpcy5zZWFyY2hVcmx9L3R5cGVzYClcclxuICAgICAgLnN1YnNjcmliZSgodHlwZXM6IHN0cmluZ1tdKSA9PiB7XHJcbiAgICAgICAgY29uc3QgdHlwZVNldHRpbmcgPSB0aGlzLnNldHRpbmdzLmZpbmQoKHMpID0+IHMubmFtZSA9PT0gJ3R5cGUnKTtcclxuICAgICAgICB0eXBlU2V0dGluZy52YWx1ZXMuZm9yRWFjaCgodikgPT4ge1xyXG4gICAgICAgICAgdi5hdmFpbGFibGUgPSB0eXBlcy5pbmRleE9mKHYudmFsdWUgYXMgc3RyaW5nKSA+IC0xO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuc2V0UGFyYW1Gcm9tU2V0dGluZyh0eXBlU2V0dGluZywgZmFsc2UpO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY29tcHV0ZVJlcXVlc3RQYXJhbXMoXHJcbiAgICBsb25MYXQ6IFtudW1iZXIsIG51bWJlcl0sXHJcbiAgICBvcHRpb25zPzogUmV2ZXJzZVNlYXJjaE9wdGlvbnNcclxuICApOiBIdHRwUGFyYW1zIHtcclxuICAgIGlmIChvcHRpb25zLmRpc3RhbmNlIHx8IHRoaXMub3B0aW9ucy5kaXN0YW5jZSkge1xyXG4gICAgICBvcHRpb25zLnBhcmFtcyA9IE9iamVjdC5hc3NpZ24ob3B0aW9ucy5wYXJhbXMgfHwge30sIHtcclxuICAgICAgICBidWZmZXJJbnB1dDogb3B0aW9ucy5kaXN0YW5jZSB8fCB0aGlzLm9wdGlvbnMuZGlzdGFuY2VcclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIG5ldyBIdHRwUGFyYW1zKHtcclxuICAgICAgZnJvbU9iamVjdDogT2JqZWN0LmFzc2lnbihcclxuICAgICAgICB7XHJcbiAgICAgICAgICBsb2M6IGxvbkxhdC5qb2luKCcsJyksXHJcbiAgICAgICAgICBzb3J0OiAnZGlzdGFuY2UnLFxyXG4gICAgICAgICAgZ2VvbWV0cnk6IHRydWUsXHJcbiAgICAgICAgICBpY29uOiB0cnVlXHJcbiAgICAgICAgfSxcclxuICAgICAgICBvcHRpb25zLnBhcmFtcyB8fCB7fSxcclxuICAgICAgICB0aGlzLnBhcmFtc1xyXG4gICAgICApXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZXh0cmFjdFJlc3VsdHMoXHJcbiAgICByZXNwb25zZTogSUNoZXJjaGVSZXZlcnNlUmVzcG9uc2VcclxuICApOiBTZWFyY2hSZXN1bHQ8RmVhdHVyZT5bXSB7XHJcbiAgICByZXR1cm4gcmVzcG9uc2UuZmVhdHVyZXMubWFwKChkYXRhOiBJQ2hlcmNoZVJldmVyc2VEYXRhKSA9PiB7XHJcbiAgICAgIHJldHVybiB0aGlzLmRhdGFUb1Jlc3VsdChkYXRhKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRTdWJ0aXRsZShkYXRhOiBJQ2hlcmNoZVJldmVyc2VEYXRhKSB7XHJcbiAgICBpZiAoIXRoaXMuc2V0dGluZ3MubGVuZ3RoKSB7XHJcbiAgICAgIHJldHVybiAnJztcclxuICAgIH1cclxuICAgIGxldCBzdWJ0aXRsZSA9ICcnO1xyXG4gICAgc3dpdGNoIChkYXRhLnByb3BlcnRpZXMudHlwZSkge1xyXG4gICAgICBjYXNlICdhcnJvbmRpc3NlbWVudHMnOlxyXG4gICAgICAgIHN1YnRpdGxlID0gZGF0YS5wcm9wZXJ0aWVzLm11bmljaXBhbGl0ZSArICcgKEFycm9uZGlzc2VtZW50KSc7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgY29uc3QgdHlwZVNldHRpbmcgPSB0aGlzLnNldHRpbmdzLmZpbmQoKHMpID0+IHMubmFtZSA9PT0gJ3R5cGUnKTtcclxuICAgICAgICBjb25zdCB0eXBlID0gdHlwZVNldHRpbmcudmFsdWVzLmZpbmQoXHJcbiAgICAgICAgICAodCkgPT4gdC52YWx1ZSA9PT0gZGF0YS5wcm9wZXJ0aWVzLnR5cGVcclxuICAgICAgICApO1xyXG4gICAgICAgIGlmICh0eXBlKSB7XHJcbiAgICAgICAgICBzdWJ0aXRsZSA9IHRoaXMubGFuZ3VhZ2VTZXJ2aWNlLnRyYW5zbGF0ZS5pbnN0YW50KHR5cGUudGl0bGUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBzdWJ0aXRsZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZGF0YVRvUmVzdWx0KGRhdGE6IElDaGVyY2hlUmV2ZXJzZURhdGEpOiBTZWFyY2hSZXN1bHQ8RmVhdHVyZT4ge1xyXG4gICAgY29uc3QgcHJvcGVydGllcyA9IHRoaXMuY29tcHV0ZVByb3BlcnRpZXMoZGF0YSk7XHJcbiAgICBjb25zdCBleHRlbnQgPSB0aGlzLmNvbXB1dGVFeHRlbnQoZGF0YSk7XHJcbiAgICBjb25zdCBpZCA9IFt0aGlzLmdldElkKCksIHByb3BlcnRpZXMudHlwZSwgcHJvcGVydGllcy5jb2RlXS5qb2luKCcuJyk7XHJcblxyXG4gICAgY29uc3QgdGl0bGVIdG1sID0gZGF0YS5wcm9wZXJ0aWVzLm5vbTtcclxuICAgIGNvbnN0IHN1YnRpdGxlSHRtbCA9ICcgPHNtYWxsPiAnICsgdGhpcy5nZXRTdWJ0aXRsZShkYXRhKSArICc8L3NtYWxsPic7XHJcblxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgc291cmNlOiB0aGlzLFxyXG4gICAgICBkYXRhOiB7XHJcbiAgICAgICAgdHlwZTogRkVBVFVSRSxcclxuICAgICAgICBwcm9qZWN0aW9uOiAnRVBTRzo0MzI2JyxcclxuICAgICAgICBnZW9tZXRyeTogZGF0YS5nZW9tZXRyeSxcclxuICAgICAgICBleHRlbnQsXHJcbiAgICAgICAgcHJvcGVydGllcyxcclxuICAgICAgICBtZXRhOiB7XHJcbiAgICAgICAgICBpZCxcclxuICAgICAgICAgIHRpdGxlOiBkYXRhLnByb3BlcnRpZXMubm9tXHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICBtZXRhOiB7XHJcbiAgICAgICAgZGF0YVR5cGU6IEZFQVRVUkUsXHJcbiAgICAgICAgaWQsXHJcbiAgICAgICAgdGl0bGU6IGRhdGEucHJvcGVydGllcy5ub20sXHJcbiAgICAgICAgdGl0bGVIdG1sOiB0aXRsZUh0bWwgKyBzdWJ0aXRsZUh0bWwsXHJcbiAgICAgICAgaWNvbjogZGF0YS5pY29uIHx8ICdtYXAtbWFya2VyJyxcclxuICAgICAgICBwb2ludGVyU3VtbWFyeVRpdGxlOiB0aGlzLmdldFN1YnRpdGxlKGRhdGEpICsgJzogJyArIGRhdGEucHJvcGVydGllcy5ub21cclxuICAgICAgfVxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY29tcHV0ZVByb3BlcnRpZXMoZGF0YTogSUNoZXJjaGVSZXZlcnNlRGF0YSk6IHsgW2tleTogc3RyaW5nXTogYW55IH0ge1xyXG4gICAgY29uc3QgcHJvcGVydGllcyA9IE9iamVjdFV0aWxzLnJlbW92ZUtleXMoXHJcbiAgICAgIGRhdGEucHJvcGVydGllcyxcclxuICAgICAgSUNoZXJjaGVSZXZlcnNlU2VhcmNoU291cmNlLnByb3BlcnRpZXNCbGFja2xpc3RcclxuICAgICk7XHJcblxyXG4gICAgY29uc3Qgcm91dGluZzoge1xyXG4gICAgICBSb3V0ZTogc3RyaW5nO1xyXG4gICAgfSA9IHtcclxuICAgICAgUm91dGU6XHJcbiAgICAgICAgJzxzcGFuIGNsYXNzPVwicm91dGluZ1wiPiA8dT4nICtcclxuICAgICAgICB0aGlzLmxhbmd1YWdlU2VydmljZS50cmFuc2xhdGUuaW5zdGFudCgnaWdvLmdlby5zZWVSb3V0aW5nJykgK1xyXG4gICAgICAgICc8L3U+IDwvc3Bhbj4nXHJcbiAgICB9O1xyXG5cclxuICAgIHJldHVybiBPYmplY3QuYXNzaWduKHByb3BlcnRpZXMsIHJvdXRpbmcpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjb21wdXRlRXh0ZW50KFxyXG4gICAgZGF0YTogSUNoZXJjaGVSZXZlcnNlRGF0YVxyXG4gICk6IFtudW1iZXIsIG51bWJlciwgbnVtYmVyLCBudW1iZXJdIHwgdW5kZWZpbmVkIHtcclxuICAgIHJldHVybiBkYXRhLmJib3hcclxuICAgICAgPyBbZGF0YS5iYm94WzBdLCBkYXRhLmJib3hbMl0sIGRhdGEuYmJveFsxXSwgZGF0YS5iYm94WzNdXVxyXG4gICAgICA6IHVuZGVmaW5lZDtcclxuICB9XHJcbn1cclxuIl19
@@ -1,8 +1,8 @@
1
- import { Injector } from '@angular/core';
2
1
  import { HttpClient } from '@angular/common/http';
2
+ import { Injector } from '@angular/core';
3
3
  import { ConfigService, LanguageService, StorageService } from '@igo2/core';
4
+ import { IChercheReverseSearchSource, IChercheSearchResultFormatter, IChercheSearchSource } from './icherche';
4
5
  import { SearchSource } from './source';
5
- import { IChercheSearchSource, IChercheSearchResultFormatter, IChercheReverseSearchSource } from './icherche';
6
6
  /**
7
7
  * ICherche search result formatter factory
8
8
  * @ignore
@@ -63,4 +63,4 @@ export function provideIChercheReverseSearchSource() {
63
63
  deps: [HttpClient, LanguageService, StorageService, ConfigService, Injector]
64
64
  };
65
65
  }
66
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNoZXJjaGUucHJvdmlkZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvc2VhcmNoL3NoYXJlZC9zb3VyY2VzL2ljaGVyY2hlLnByb3ZpZGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVsRCxPQUFPLEVBQUUsYUFBYSxFQUFFLGVBQWUsRUFBRSxjQUFjLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFNUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUN4QyxPQUFPLEVBQ0wsb0JBQW9CLEVBQ3BCLDZCQUE2QixFQUM3QiwyQkFBMkIsRUFDNUIsTUFBTSxZQUFZLENBQUM7QUFFcEI7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLDJDQUEyQyxDQUN6RCxlQUFnQztJQUVoQyxPQUFPLElBQUksNkJBQTZCLENBQUMsZUFBZSxDQUFDLENBQUM7QUFDNUQsQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLDJDQUEyQztJQUN6RCxPQUFPO1FBQ0wsT0FBTyxFQUFFLDZCQUE2QjtRQUN0QyxVQUFVLEVBQUUsMkNBQTJDO1FBQ3ZELElBQUksRUFBRSxDQUFDLGVBQWUsQ0FBQztLQUN4QixDQUFDO0FBQ0osQ0FBQztBQUVEOzs7R0FHRztBQUNILE1BQU0sVUFBVSwyQkFBMkIsQ0FDekMsSUFBZ0IsRUFDaEIsZUFBZ0MsRUFDaEMsY0FBOEIsRUFDOUIsTUFBcUIsRUFDckIsU0FBd0MsRUFDeEMsUUFBa0I7SUFFbEIsT0FBTyxJQUFJLG9CQUFvQixDQUM3QixJQUFJLEVBQ0osZUFBZSxFQUNmLGNBQWMsRUFDZCxNQUFNLENBQUMsU0FBUyxDQUFDLGlCQUFpQixvQkFBb0IsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUM1RCxTQUFTLEVBQ1QsUUFBUSxDQUNULENBQUM7QUFDSixDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsMkJBQTJCO0lBQ3pDLE9BQU87UUFDTCxPQUFPLEVBQUUsWUFBWTtRQUNyQixVQUFVLEVBQUUsMkJBQTJCO1FBQ3ZDLEtBQUssRUFBRSxJQUFJO1FBQ1gsSUFBSSxFQUFFO1lBQ0osVUFBVTtZQUNWLGVBQWU7WUFDZixjQUFjO1lBQ2QsYUFBYTtZQUNiLDZCQUE2QjtZQUM3QixRQUFRO1NBQ1Q7S0FDRixDQUFDO0FBQ0osQ0FBQztBQUVEOzs7R0FHRztBQUNILE1BQU0sVUFBVSxrQ0FBa0MsQ0FDaEQsSUFBZ0IsRUFDaEIsZUFBZ0MsRUFDaEMsY0FBOEIsRUFDOUIsTUFBcUIsRUFDckIsUUFBa0I7SUFFbEIsT0FBTyxJQUFJLDJCQUEyQixDQUNwQyxJQUFJLEVBQ0osZUFBZSxFQUNmLGNBQWMsRUFDZCxNQUFNLENBQUMsU0FBUyxDQUFDLGlCQUFpQiwyQkFBMkIsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUNuRSxRQUFRLENBQ1QsQ0FBQztBQUNKLENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sVUFBVSxrQ0FBa0M7SUFDaEQsT0FBTztRQUNMLE9BQU8sRUFBRSxZQUFZO1FBQ3JCLFVBQVUsRUFBRSxrQ0FBa0M7UUFDOUMsS0FBSyxFQUFFLElBQUk7UUFDWCxJQUFJLEVBQUUsQ0FBQyxVQUFVLEVBQUUsZUFBZSxFQUFFLGNBQWMsRUFBRSxhQUFhLEVBQUUsUUFBUSxDQUFDO0tBQzdFLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5cbmltcG9ydCB7IENvbmZpZ1NlcnZpY2UsIExhbmd1YWdlU2VydmljZSwgU3RvcmFnZVNlcnZpY2UgfSBmcm9tICdAaWdvMi9jb3JlJztcblxuaW1wb3J0IHsgU2VhcmNoU291cmNlIH0gZnJvbSAnLi9zb3VyY2UnO1xuaW1wb3J0IHtcbiAgSUNoZXJjaGVTZWFyY2hTb3VyY2UsXG4gIElDaGVyY2hlU2VhcmNoUmVzdWx0Rm9ybWF0dGVyLFxuICBJQ2hlcmNoZVJldmVyc2VTZWFyY2hTb3VyY2Vcbn0gZnJvbSAnLi9pY2hlcmNoZSc7XG5cbi8qKlxuICogSUNoZXJjaGUgc2VhcmNoIHJlc3VsdCBmb3JtYXR0ZXIgZmFjdG9yeVxuICogQGlnbm9yZVxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVmYXVsdElDaGVyY2hlU2VhcmNoUmVzdWx0Rm9ybWF0dGVyRmFjdG9yeShcbiAgbGFuZ3VhZ2VTZXJ2aWNlOiBMYW5ndWFnZVNlcnZpY2Vcbikge1xuICByZXR1cm4gbmV3IElDaGVyY2hlU2VhcmNoUmVzdWx0Rm9ybWF0dGVyKGxhbmd1YWdlU2VydmljZSk7XG59XG5cbi8qKlxuICogRnVuY3Rpb24gdGhhdCByZXR1cm5zIGEgcHJvdmlkZXIgZm9yIHRoZSBJQ2hlcmNoZSBzZWFyY2ggcmVzdWx0IGZvcm1hdHRlclxuICovXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZURlZmF1bHRJQ2hlcmNoZVNlYXJjaFJlc3VsdEZvcm1hdHRlcigpIHtcbiAgcmV0dXJuIHtcbiAgICBwcm92aWRlOiBJQ2hlcmNoZVNlYXJjaFJlc3VsdEZvcm1hdHRlcixcbiAgICB1c2VGYWN0b3J5OiBkZWZhdWx0SUNoZXJjaGVTZWFyY2hSZXN1bHRGb3JtYXR0ZXJGYWN0b3J5LFxuICAgIGRlcHM6IFtMYW5ndWFnZVNlcnZpY2VdXG4gIH07XG59XG5cbi8qKlxuICogSUNoZXJjaGUgc2VhcmNoIHNvdXJjZSBmYWN0b3J5XG4gKiBAaWdub3JlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpY2hlcmNoZVNlYXJjaFNvdXJjZUZhY3RvcnkoXG4gIGh0dHA6IEh0dHBDbGllbnQsXG4gIGxhbmd1YWdlU2VydmljZTogTGFuZ3VhZ2VTZXJ2aWNlLFxuICBzdG9yYWdlU2VydmljZTogU3RvcmFnZVNlcnZpY2UsXG4gIGNvbmZpZzogQ29uZmlnU2VydmljZSxcbiAgZm9ybWF0dGVyOiBJQ2hlcmNoZVNlYXJjaFJlc3VsdEZvcm1hdHRlcixcbiAgaW5qZWN0b3I6IEluamVjdG9yXG4pIHtcbiAgcmV0dXJuIG5ldyBJQ2hlcmNoZVNlYXJjaFNvdXJjZShcbiAgICBodHRwLFxuICAgIGxhbmd1YWdlU2VydmljZSxcbiAgICBzdG9yYWdlU2VydmljZSxcbiAgICBjb25maWcuZ2V0Q29uZmlnKGBzZWFyY2hTb3VyY2VzLiR7SUNoZXJjaGVTZWFyY2hTb3VyY2UuaWR9YCksXG4gICAgZm9ybWF0dGVyLFxuICAgIGluamVjdG9yXG4gICk7XG59XG5cbi8qKlxuICogRnVuY3Rpb24gdGhhdCByZXR1cm5zIGEgcHJvdmlkZXIgZm9yIHRoZSBJQ2hlcmNoZSBzZWFyY2ggc291cmNlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlSUNoZXJjaGVTZWFyY2hTb3VyY2UoKSB7XG4gIHJldHVybiB7XG4gICAgcHJvdmlkZTogU2VhcmNoU291cmNlLFxuICAgIHVzZUZhY3Rvcnk6IGljaGVyY2hlU2VhcmNoU291cmNlRmFjdG9yeSxcbiAgICBtdWx0aTogdHJ1ZSxcbiAgICBkZXBzOiBbXG4gICAgICBIdHRwQ2xpZW50LFxuICAgICAgTGFuZ3VhZ2VTZXJ2aWNlLFxuICAgICAgU3RvcmFnZVNlcnZpY2UsXG4gICAgICBDb25maWdTZXJ2aWNlLFxuICAgICAgSUNoZXJjaGVTZWFyY2hSZXN1bHRGb3JtYXR0ZXIsXG4gICAgICBJbmplY3RvclxuICAgIF1cbiAgfTtcbn1cblxuLyoqXG4gKiBJQ2hlcmNoZVJldmVyc2Ugc2VhcmNoIHNvdXJjZSBmYWN0b3J5XG4gKiBAaWdub3JlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpY2hlcmNoZVJldmVyc2VTZWFyY2hTb3VyY2VGYWN0b3J5KFxuICBodHRwOiBIdHRwQ2xpZW50LFxuICBsYW5ndWFnZVNlcnZpY2U6IExhbmd1YWdlU2VydmljZSxcbiAgc3RvcmFnZVNlcnZpY2U6IFN0b3JhZ2VTZXJ2aWNlLFxuICBjb25maWc6IENvbmZpZ1NlcnZpY2UsXG4gIGluamVjdG9yOiBJbmplY3RvclxuKSB7XG4gIHJldHVybiBuZXcgSUNoZXJjaGVSZXZlcnNlU2VhcmNoU291cmNlKFxuICAgIGh0dHAsXG4gICAgbGFuZ3VhZ2VTZXJ2aWNlLFxuICAgIHN0b3JhZ2VTZXJ2aWNlLFxuICAgIGNvbmZpZy5nZXRDb25maWcoYHNlYXJjaFNvdXJjZXMuJHtJQ2hlcmNoZVJldmVyc2VTZWFyY2hTb3VyY2UuaWR9YCksXG4gICAgaW5qZWN0b3JcbiAgKTtcbn1cblxuLyoqXG4gKiBGdW5jdGlvbiB0aGF0IHJldHVybnMgYSBwcm92aWRlciBmb3IgdGhlIElDaGVyY2hlUmV2ZXJzZSBzZWFyY2ggc291cmNlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlSUNoZXJjaGVSZXZlcnNlU2VhcmNoU291cmNlKCkge1xuICByZXR1cm4ge1xuICAgIHByb3ZpZGU6IFNlYXJjaFNvdXJjZSxcbiAgICB1c2VGYWN0b3J5OiBpY2hlcmNoZVJldmVyc2VTZWFyY2hTb3VyY2VGYWN0b3J5LFxuICAgIG11bHRpOiB0cnVlLFxuICAgIGRlcHM6IFtIdHRwQ2xpZW50LCBMYW5ndWFnZVNlcnZpY2UsIFN0b3JhZ2VTZXJ2aWNlLCBDb25maWdTZXJ2aWNlLCBJbmplY3Rvcl1cbiAgfTtcbn1cbiJdfQ==
66
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNoZXJjaGUucHJvdmlkZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvc2VhcmNoL3NoYXJlZC9zb3VyY2VzL2ljaGVyY2hlLnByb3ZpZGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV6QyxPQUFPLEVBQUUsYUFBYSxFQUFFLGVBQWUsRUFBRSxjQUFjLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFNUUsT0FBTyxFQUNMLDJCQUEyQixFQUMzQiw2QkFBNkIsRUFDN0Isb0JBQW9CLEVBQ3JCLE1BQU0sWUFBWSxDQUFDO0FBQ3BCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFeEM7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLDJDQUEyQyxDQUN6RCxlQUFnQztJQUVoQyxPQUFPLElBQUksNkJBQTZCLENBQUMsZUFBZSxDQUFDLENBQUM7QUFDNUQsQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLDJDQUEyQztJQUN6RCxPQUFPO1FBQ0wsT0FBTyxFQUFFLDZCQUE2QjtRQUN0QyxVQUFVLEVBQUUsMkNBQTJDO1FBQ3ZELElBQUksRUFBRSxDQUFDLGVBQWUsQ0FBQztLQUN4QixDQUFDO0FBQ0osQ0FBQztBQUVEOzs7R0FHRztBQUNILE1BQU0sVUFBVSwyQkFBMkIsQ0FDekMsSUFBZ0IsRUFDaEIsZUFBZ0MsRUFDaEMsY0FBOEIsRUFDOUIsTUFBcUIsRUFDckIsU0FBd0MsRUFDeEMsUUFBa0I7SUFFbEIsT0FBTyxJQUFJLG9CQUFvQixDQUM3QixJQUFJLEVBQ0osZUFBZSxFQUNmLGNBQWMsRUFDZCxNQUFNLENBQUMsU0FBUyxDQUFDLGlCQUFpQixvQkFBb0IsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUM1RCxTQUFTLEVBQ1QsUUFBUSxDQUNULENBQUM7QUFDSixDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsMkJBQTJCO0lBQ3pDLE9BQU87UUFDTCxPQUFPLEVBQUUsWUFBWTtRQUNyQixVQUFVLEVBQUUsMkJBQTJCO1FBQ3ZDLEtBQUssRUFBRSxJQUFJO1FBQ1gsSUFBSSxFQUFFO1lBQ0osVUFBVTtZQUNWLGVBQWU7WUFDZixjQUFjO1lBQ2QsYUFBYTtZQUNiLDZCQUE2QjtZQUM3QixRQUFRO1NBQ1Q7S0FDRixDQUFDO0FBQ0osQ0FBQztBQUVEOzs7R0FHRztBQUNILE1BQU0sVUFBVSxrQ0FBa0MsQ0FDaEQsSUFBZ0IsRUFDaEIsZUFBZ0MsRUFDaEMsY0FBOEIsRUFDOUIsTUFBcUIsRUFDckIsUUFBa0I7SUFFbEIsT0FBTyxJQUFJLDJCQUEyQixDQUNwQyxJQUFJLEVBQ0osZUFBZSxFQUNmLGNBQWMsRUFDZCxNQUFNLENBQUMsU0FBUyxDQUFDLGlCQUFpQiwyQkFBMkIsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUNuRSxRQUFRLENBQ1QsQ0FBQztBQUNKLENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sVUFBVSxrQ0FBa0M7SUFDaEQsT0FBTztRQUNMLE9BQU8sRUFBRSxZQUFZO1FBQ3JCLFVBQVUsRUFBRSxrQ0FBa0M7UUFDOUMsS0FBSyxFQUFFLElBQUk7UUFDWCxJQUFJLEVBQUUsQ0FBQyxVQUFVLEVBQUUsZUFBZSxFQUFFLGNBQWMsRUFBRSxhQUFhLEVBQUUsUUFBUSxDQUFDO0tBQzdFLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IENvbmZpZ1NlcnZpY2UsIExhbmd1YWdlU2VydmljZSwgU3RvcmFnZVNlcnZpY2UgfSBmcm9tICdAaWdvMi9jb3JlJztcclxuXHJcbmltcG9ydCB7XHJcbiAgSUNoZXJjaGVSZXZlcnNlU2VhcmNoU291cmNlLFxyXG4gIElDaGVyY2hlU2VhcmNoUmVzdWx0Rm9ybWF0dGVyLFxyXG4gIElDaGVyY2hlU2VhcmNoU291cmNlXHJcbn0gZnJvbSAnLi9pY2hlcmNoZSc7XHJcbmltcG9ydCB7IFNlYXJjaFNvdXJjZSB9IGZyb20gJy4vc291cmNlJztcclxuXHJcbi8qKlxyXG4gKiBJQ2hlcmNoZSBzZWFyY2ggcmVzdWx0IGZvcm1hdHRlciBmYWN0b3J5XHJcbiAqIEBpZ25vcmVcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBkZWZhdWx0SUNoZXJjaGVTZWFyY2hSZXN1bHRGb3JtYXR0ZXJGYWN0b3J5KFxyXG4gIGxhbmd1YWdlU2VydmljZTogTGFuZ3VhZ2VTZXJ2aWNlXHJcbikge1xyXG4gIHJldHVybiBuZXcgSUNoZXJjaGVTZWFyY2hSZXN1bHRGb3JtYXR0ZXIobGFuZ3VhZ2VTZXJ2aWNlKTtcclxufVxyXG5cclxuLyoqXHJcbiAqIEZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhIHByb3ZpZGVyIGZvciB0aGUgSUNoZXJjaGUgc2VhcmNoIHJlc3VsdCBmb3JtYXR0ZXJcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlRGVmYXVsdElDaGVyY2hlU2VhcmNoUmVzdWx0Rm9ybWF0dGVyKCkge1xyXG4gIHJldHVybiB7XHJcbiAgICBwcm92aWRlOiBJQ2hlcmNoZVNlYXJjaFJlc3VsdEZvcm1hdHRlcixcclxuICAgIHVzZUZhY3Rvcnk6IGRlZmF1bHRJQ2hlcmNoZVNlYXJjaFJlc3VsdEZvcm1hdHRlckZhY3RvcnksXHJcbiAgICBkZXBzOiBbTGFuZ3VhZ2VTZXJ2aWNlXVxyXG4gIH07XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBJQ2hlcmNoZSBzZWFyY2ggc291cmNlIGZhY3RvcnlcclxuICogQGlnbm9yZVxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGljaGVyY2hlU2VhcmNoU291cmNlRmFjdG9yeShcclxuICBodHRwOiBIdHRwQ2xpZW50LFxyXG4gIGxhbmd1YWdlU2VydmljZTogTGFuZ3VhZ2VTZXJ2aWNlLFxyXG4gIHN0b3JhZ2VTZXJ2aWNlOiBTdG9yYWdlU2VydmljZSxcclxuICBjb25maWc6IENvbmZpZ1NlcnZpY2UsXHJcbiAgZm9ybWF0dGVyOiBJQ2hlcmNoZVNlYXJjaFJlc3VsdEZvcm1hdHRlcixcclxuICBpbmplY3RvcjogSW5qZWN0b3JcclxuKSB7XHJcbiAgcmV0dXJuIG5ldyBJQ2hlcmNoZVNlYXJjaFNvdXJjZShcclxuICAgIGh0dHAsXHJcbiAgICBsYW5ndWFnZVNlcnZpY2UsXHJcbiAgICBzdG9yYWdlU2VydmljZSxcclxuICAgIGNvbmZpZy5nZXRDb25maWcoYHNlYXJjaFNvdXJjZXMuJHtJQ2hlcmNoZVNlYXJjaFNvdXJjZS5pZH1gKSxcclxuICAgIGZvcm1hdHRlcixcclxuICAgIGluamVjdG9yXHJcbiAgKTtcclxufVxyXG5cclxuLyoqXHJcbiAqIEZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhIHByb3ZpZGVyIGZvciB0aGUgSUNoZXJjaGUgc2VhcmNoIHNvdXJjZVxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVJQ2hlcmNoZVNlYXJjaFNvdXJjZSgpIHtcclxuICByZXR1cm4ge1xyXG4gICAgcHJvdmlkZTogU2VhcmNoU291cmNlLFxyXG4gICAgdXNlRmFjdG9yeTogaWNoZXJjaGVTZWFyY2hTb3VyY2VGYWN0b3J5LFxyXG4gICAgbXVsdGk6IHRydWUsXHJcbiAgICBkZXBzOiBbXHJcbiAgICAgIEh0dHBDbGllbnQsXHJcbiAgICAgIExhbmd1YWdlU2VydmljZSxcclxuICAgICAgU3RvcmFnZVNlcnZpY2UsXHJcbiAgICAgIENvbmZpZ1NlcnZpY2UsXHJcbiAgICAgIElDaGVyY2hlU2VhcmNoUmVzdWx0Rm9ybWF0dGVyLFxyXG4gICAgICBJbmplY3RvclxyXG4gICAgXVxyXG4gIH07XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBJQ2hlcmNoZVJldmVyc2Ugc2VhcmNoIHNvdXJjZSBmYWN0b3J5XHJcbiAqIEBpZ25vcmVcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBpY2hlcmNoZVJldmVyc2VTZWFyY2hTb3VyY2VGYWN0b3J5KFxyXG4gIGh0dHA6IEh0dHBDbGllbnQsXHJcbiAgbGFuZ3VhZ2VTZXJ2aWNlOiBMYW5ndWFnZVNlcnZpY2UsXHJcbiAgc3RvcmFnZVNlcnZpY2U6IFN0b3JhZ2VTZXJ2aWNlLFxyXG4gIGNvbmZpZzogQ29uZmlnU2VydmljZSxcclxuICBpbmplY3RvcjogSW5qZWN0b3JcclxuKSB7XHJcbiAgcmV0dXJuIG5ldyBJQ2hlcmNoZVJldmVyc2VTZWFyY2hTb3VyY2UoXHJcbiAgICBodHRwLFxyXG4gICAgbGFuZ3VhZ2VTZXJ2aWNlLFxyXG4gICAgc3RvcmFnZVNlcnZpY2UsXHJcbiAgICBjb25maWcuZ2V0Q29uZmlnKGBzZWFyY2hTb3VyY2VzLiR7SUNoZXJjaGVSZXZlcnNlU2VhcmNoU291cmNlLmlkfWApLFxyXG4gICAgaW5qZWN0b3JcclxuICApO1xyXG59XHJcblxyXG4vKipcclxuICogRnVuY3Rpb24gdGhhdCByZXR1cm5zIGEgcHJvdmlkZXIgZm9yIHRoZSBJQ2hlcmNoZVJldmVyc2Ugc2VhcmNoIHNvdXJjZVxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVJQ2hlcmNoZVJldmVyc2VTZWFyY2hTb3VyY2UoKSB7XHJcbiAgcmV0dXJuIHtcclxuICAgIHByb3ZpZGU6IFNlYXJjaFNvdXJjZSxcclxuICAgIHVzZUZhY3Rvcnk6IGljaGVyY2hlUmV2ZXJzZVNlYXJjaFNvdXJjZUZhY3RvcnksXHJcbiAgICBtdWx0aTogdHJ1ZSxcclxuICAgIGRlcHM6IFtIdHRwQ2xpZW50LCBMYW5ndWFnZVNlcnZpY2UsIFN0b3JhZ2VTZXJ2aWNlLCBDb25maWdTZXJ2aWNlLCBJbmplY3Rvcl1cclxuICB9O1xyXG59XHJcbiJdfQ==
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWxheWVyLmludGVyZmFjZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9zZWFyY2gvc2hhcmVkL3NvdXJjZXMvaWxheWVyLmludGVyZmFjZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFF1ZXJ5YWJsZURhdGFTb3VyY2VPcHRpb25zIH0gZnJvbSAnLi8uLi8uLi8uLi9xdWVyeS9zaGFyZWQvcXVlcnkuaW50ZXJmYWNlcyc7XHJcbmltcG9ydCB7IFdNU0RhdGFTb3VyY2VPcHRpb25zIH0gZnJvbSAnLi4vLi4vLi4vZGF0YXNvdXJjZS9zaGFyZWQvZGF0YXNvdXJjZXMvd21zLWRhdGFzb3VyY2UuaW50ZXJmYWNlJztcclxuaW1wb3J0IHsgSW1hZ2VMYXllck9wdGlvbnMgfSBmcm9tICcuLi8uLi8uLi9sYXllci9zaGFyZWQvbGF5ZXJzL2ltYWdlLWxheWVyLmludGVyZmFjZSc7XHJcbmltcG9ydCB7IFNlYXJjaFNvdXJjZU9wdGlvbnMgfSBmcm9tICcuL3NvdXJjZS5pbnRlcmZhY2VzJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUxheWVyU2VhcmNoU291cmNlT3B0aW9ucyBleHRlbmRzIFNlYXJjaFNvdXJjZU9wdGlvbnMge1xyXG4gIHF1ZXJ5Rm9ybWF0PzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfCB7IHVybHM6IHN0cmluZ1tdIH0gfTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJTGF5ZXJTZXJ2aWNlUmVzcG9uc2Uge1xyXG4gIGl0ZW1zOiBJTGF5ZXJEYXRhW107XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUxheWVyRGF0YSB7XHJcbiAgc2NvcmU6IG51bWJlcjtcclxuICBwcm9wZXJ0aWVzOiBJTGF5ZXJEYXRhU291cmNlO1xyXG4gIGhpZ2hsaWdodDogSUxheWVyRGF0YUhpZ2hsaWdodDtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJTGF5ZXJEYXRhU291cmNlIHtcclxuICBpZD86IHN0cmluZztcclxuICB0aXRsZTogc3RyaW5nO1xyXG4gIGdyb3VwVGl0bGU6IHN0cmluZztcclxuICBhYnN0cmFjdDogc3RyaW5nO1xyXG4gIGZvcm1hdD86ICd3bXMnIHwgJ3dmcyc7XHJcbiAgdXJsPzogc3RyaW5nO1xyXG4gIHR5cGU/OiBzdHJpbmc7XHJcbiAgbmFtZT86IHN0cmluZztcclxuICBxdWVyeWFibGU/OiBib29sZWFuO1xyXG4gIG1ldGFkYXRhVXJsPzogc3RyaW5nO1xyXG4gIG1heFNjYWxlRGVub20/OiBzdHJpbmc7XHJcbiAgbWluU2NhbGVEZW5vbT86IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJTGF5ZXJEYXRhSGlnaGxpZ2h0IHtcclxuICB0aXRsZT86IHN0cmluZztcclxuICBncm91cFRpdGxlPzogc3RyaW5nO1xyXG59XHJcblxyXG5pbnRlcmZhY2UgUXVlcnlXTVNEYXRhU291cmNlT3B0aW9uc1xyXG4gIGV4dGVuZHMgV01TRGF0YVNvdXJjZU9wdGlvbnMsXHJcbiAgICBRdWVyeWFibGVEYXRhU291cmNlT3B0aW9ucyB7fVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJTGF5ZXJJdGVtUmVzcG9uc2UgZXh0ZW5kcyBJbWFnZUxheWVyT3B0aW9ucyB7XHJcbiAgdGl0bGU6IHN0cmluZztcclxuICBzb3VyY2VPcHRpb25zOiBRdWVyeVdNU0RhdGFTb3VyY2VPcHRpb25zO1xyXG4gIHByb3BlcnRpZXM6IHsgW2tleTogc3RyaW5nXTogYW55IH07XHJcbn1cclxuIl19
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWxheWVyLmludGVyZmFjZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9zZWFyY2gvc2hhcmVkL3NvdXJjZXMvaWxheWVyLmludGVyZmFjZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFdNU0RhdGFTb3VyY2VPcHRpb25zIH0gZnJvbSAnLi4vLi4vLi4vZGF0YXNvdXJjZS9zaGFyZWQvZGF0YXNvdXJjZXMvd21zLWRhdGFzb3VyY2UuaW50ZXJmYWNlJztcclxuaW1wb3J0IHsgSW1hZ2VMYXllck9wdGlvbnMgfSBmcm9tICcuLi8uLi8uLi9sYXllci9zaGFyZWQvbGF5ZXJzL2ltYWdlLWxheWVyLmludGVyZmFjZSc7XHJcbmltcG9ydCB7IFF1ZXJ5YWJsZURhdGFTb3VyY2VPcHRpb25zIH0gZnJvbSAnLi8uLi8uLi8uLi9xdWVyeS9zaGFyZWQvcXVlcnkuaW50ZXJmYWNlcyc7XHJcbmltcG9ydCB7IFNlYXJjaFNvdXJjZU9wdGlvbnMgfSBmcm9tICcuL3NvdXJjZS5pbnRlcmZhY2VzJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUxheWVyU2VhcmNoU291cmNlT3B0aW9ucyBleHRlbmRzIFNlYXJjaFNvdXJjZU9wdGlvbnMge1xyXG4gIHF1ZXJ5Rm9ybWF0PzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfCB7IHVybHM6IHN0cmluZ1tdIH0gfTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJTGF5ZXJTZXJ2aWNlUmVzcG9uc2Uge1xyXG4gIGl0ZW1zOiBJTGF5ZXJEYXRhW107XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUxheWVyRGF0YSB7XHJcbiAgc2NvcmU6IG51bWJlcjtcclxuICBwcm9wZXJ0aWVzOiBJTGF5ZXJEYXRhU291cmNlO1xyXG4gIGhpZ2hsaWdodDogSUxheWVyRGF0YUhpZ2hsaWdodDtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJTGF5ZXJEYXRhU291cmNlIHtcclxuICBpZD86IHN0cmluZztcclxuICB0aXRsZTogc3RyaW5nO1xyXG4gIGdyb3VwVGl0bGU6IHN0cmluZztcclxuICBhYnN0cmFjdDogc3RyaW5nO1xyXG4gIGZvcm1hdD86ICd3bXMnIHwgJ3dmcyc7XHJcbiAgdXJsPzogc3RyaW5nO1xyXG4gIHR5cGU/OiBzdHJpbmc7XHJcbiAgbmFtZT86IHN0cmluZztcclxuICBxdWVyeWFibGU/OiBib29sZWFuO1xyXG4gIG1ldGFkYXRhVXJsPzogc3RyaW5nO1xyXG4gIG1heFNjYWxlRGVub20/OiBzdHJpbmc7XHJcbiAgbWluU2NhbGVEZW5vbT86IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJTGF5ZXJEYXRhSGlnaGxpZ2h0IHtcclxuICB0aXRsZT86IHN0cmluZztcclxuICBncm91cFRpdGxlPzogc3RyaW5nO1xyXG59XHJcblxyXG5pbnRlcmZhY2UgUXVlcnlXTVNEYXRhU291cmNlT3B0aW9uc1xyXG4gIGV4dGVuZHMgV01TRGF0YVNvdXJjZU9wdGlvbnMsXHJcbiAgICBRdWVyeWFibGVEYXRhU291cmNlT3B0aW9ucyB7fVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJTGF5ZXJJdGVtUmVzcG9uc2UgZXh0ZW5kcyBJbWFnZUxheWVyT3B0aW9ucyB7XHJcbiAgdGl0bGU6IHN0cmluZztcclxuICBzb3VyY2VPcHRpb25zOiBRdWVyeVdNU0RhdGFTb3VyY2VPcHRpb25zO1xyXG4gIHByb3BlcnRpZXM6IHsgW2tleTogc3RyaW5nXTogYW55IH07XHJcbn1cclxuIl19
@@ -1,16 +1,16 @@
1
1
  import { __decorate, __metadata } from "tslib";
2
- import { Injectable, Inject } from '@angular/core';
3
2
  import { HttpClient, HttpParams } from '@angular/common/http';
4
- import { Observable, BehaviorSubject, of } from 'rxjs';
5
- import { map } from 'rxjs/operators';
3
+ import { Inject, Injectable } from '@angular/core';
6
4
  import { LanguageService, StorageService } from '@igo2/core';
7
- import { customCacheHasher, ObjectUtils } from '@igo2/utils';
8
- import { getResolutionFromScale } from '../../../map/shared/map.utils';
5
+ import { ObjectUtils, customCacheHasher } from '@igo2/utils';
6
+ import { BehaviorSubject, Observable, of } from 'rxjs';
7
+ import { map } from 'rxjs/operators';
8
+ import { Cacheable } from 'ts-cacheable';
9
9
  import { LAYER } from '../../../layer';
10
+ import { getResolutionFromScale } from '../../../map/shared/map.utils';
10
11
  import { QueryFormat } from '../../../query';
11
- import { SearchSource } from './source';
12
12
  import { computeTermSimilarity } from '../search.utils';
13
- import { Cacheable } from 'ts-cacheable';
13
+ import { SearchSource } from './source';
14
14
  import * as i0 from "@angular/core";
15
15
  import * as i1 from "@igo2/core";
16
16
  import * as i2 from "@angular/common/http";
@@ -332,4 +332,4 @@ __decorate([
332
332
  type: Inject,
333
333
  args: [ILayerSearchResultFormatter]
334
334
  }] }]; }, { getSearch: [] }); })();
335
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWxheWVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvc2VhcmNoL3NoYXJlZC9zb3VyY2VzL2lsYXllci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUU5RCxPQUFPLEVBQUUsVUFBVSxFQUFFLGVBQWUsRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdkQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXJDLE9BQU8sRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQzdELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxXQUFXLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFN0QsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDdkUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3ZDLE9BQU8sRUFBOEIsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFJekUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFVBQVUsQ0FBQztBQVN4QyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sY0FBYyxDQUFDOzs7O0FBR3pDLE1BQU0sT0FBTywyQkFBMkI7SUFDbEI7SUFBcEIsWUFBb0IsZUFBZ0M7UUFBaEMsb0JBQWUsR0FBZixlQUFlLENBQWlCO0lBQUcsQ0FBQztJQUV4RCxZQUFZLENBQUMsSUFBZ0I7UUFDM0IsTUFBTSxVQUFVLEdBQUc7WUFDakIsT0FBTztZQUNQLFVBQVU7WUFDVixZQUFZO1lBQ1osYUFB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LEVBQUUsRUFBRTtRQUNqQixXQUFXLEVBQUUsaUJBQWlCO0tBQy9CLENBQUM7OzZDQUdRLFVBQVU7b0NBQ2pCLFVBQVU7bURBUVo7dUZBdEtVLGtCQUFrQjtjQUQ5QixVQUFVOztzQkFlTixNQUFNO3VCQUFDLFNBQVM7O3NCQUNoQixNQUFNO3VCQUFDLDJCQUEyQjt3QkE0STdCLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cFBhcmFtcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuXHJcbmltcG9ydCB7IE9ic2VydmFibGUsIEJlaGF2aW9yU3ViamVjdCwgb2YgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5cclxuaW1wb3J0IHsgTGFuZ3VhZ2VTZXJ2aWNlLCBTdG9yYWdlU2VydmljZSB9IGZyb20gJ0BpZ28yL2NvcmUnO1xyXG5pbXBvcnQgeyBjdXN0b21DYWNoZUhhc2hlciwgT2JqZWN0VXRpbHMgfSBmcm9tICdAaWdvMi91dGlscyc7XHJcblxyXG5pbXBvcnQgeyBnZXRSZXNvbHV0aW9uRnJvbVNjYWxlIH0gZnJvbSAnLi4vLi4vLi4vbWFwL3NoYXJlZC9tYXAudXRpbHMnO1xyXG5pbXBvcnQgeyBMQVlFUiB9IGZyb20gJy4uLy4uLy4uL2xheWVyJztcclxuaW1wb3J0IHsgUXVlcnlhYmxlRGF0YVNvdXJjZU9wdGlvbnMsIFF1ZXJ5Rm9ybWF0IH0gZnJvbSAnLi4vLi4vLi4vcXVlcnknO1xyXG5pbXBvcnQgeyBRdWVyeUh0bWxUYXJnZXQgfSBmcm9tICcuLy4uLy4uLy4uL3F1ZXJ5L3NoYXJlZC9xdWVyeS5lbnVtcyc7XHJcblxyXG5pbXBvcnQgeyBTZWFyY2hSZXN1bHQsIFRleHRTZWFyY2ggfSBmcm9tICcuLi9zZWFyY2guaW50ZXJmYWNlcyc7XHJcbmltcG9ydCB7IFNlYXJjaFNvdXJjZSB9IGZyb20gJy4vc291cmNlJztcclxuaW1wb3J0IHsgVGV4dFNlYXJjaE9wdGlvbnMgfSBmcm9tICcuL3NvdXJjZS5pbnRlcmZhY2VzJztcclxuaW1wb3J0IHtcclxuICBJTGF5ZXJTZWFyY2hTb3VyY2VPcHRpb25zLFxyXG4gIElMYXllckRhdGEsXHJcbiAgSUxheWVySXRlbVJlc3BvbnNlLFxyXG4gIElMYXllclNlcnZpY2VSZXNwb25zZSxcclxuICBJTGF5ZXJEYXRhU291cmNlXHJcbn0gZnJvbSAnLi9pbGF5ZXIuaW50ZXJmYWNlcyc7XHJcbmltcG9ydCB7IGNvbXB1dGVUZXJtU2ltaWxhcml0eSB9IGZyb20gJy4uL3NlYXJjaC51dGlscyc7XHJcbmltcG9ydCB7IENhY2hlYWJsZSB9IGZyb20gJ3RzLWNhY2hlYWJsZSc7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBJTGF5ZXJTZWFyY2hSZXN1bHRGb3JtYXR0ZXIge1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgbGFuZ3VhZ2VTZXJ2aWNlOiBMYW5ndWFnZVNlcnZpY2UpIHt9XHJcblxyXG4gIGZvcm1hdFJlc3VsdChkYXRhOiBJTGF5ZXJEYXRhKTogSUxheWVyRGF0YSB7XHJcbiAgICBjb25zdCBhbGxvd2VkS2V5ID0gW1xyXG4gICAgICAndGl0bGUnLFxyXG4gICAgICAnYWJzdHJhY3QnLFxyXG4gICAgICAnZ3JvdXBUaXRsZScsXHJcbiAgICAgICdtZXRhZGF0YVVybCcsXHJcbiAgICAgICdkb3dubG9hZFVybCcsXHJcbiAgICAgICd1cmxJbmZvJyxcclxuICAgICAgJ25hbWUnXHJcbiAgICBdO1xyXG5cclxuICAgIGNvbnN0IHByb3BlcnR5ID0gT2JqZWN0LmVudHJpZXMoZGF0YS5wcm9wZXJ0aWVzKVxyXG4gICAgICAuZmlsdGVyKChba2V5XSkgPT4gYWxsb3dlZEtleS5pbmRleE9mKGtleSkgIT09IC0xKVxyXG4gICAgICAucmVkdWNlKChvdXQ6IHsgW2tleTogc3RyaW5nXTogYW55IH0sIGVudHJpZXM6IFtzdHJpbmcsIGFueV0pID0+IHtcclxuICAgICAgICBjb25zdCBba2V5LCB2YWx1ZV0gPSBlbnRyaWVzO1xyXG4gICAgICAgIGxldCBuZXdLZXk7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgIG5ld0tleSA9IHRoaXMubGFuZ3VhZ2VTZXJ2aWNlLnRyYW5zbGF0ZS5pbnN0YW50KFxyXG4gICAgICAgICAgICAnaWdvLmdlby5zZWFyY2guaWxheWVyLnByb3BlcnRpZXMuJyArIGtleVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICBuZXdLZXkgPSBrZXk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIG91dFtuZXdLZXldID0gdmFsdWUgPyB2YWx1ZSA6ICcnO1xyXG4gICAgICAgIHJldHVybiBvdXQ7XHJcbiAgICAgIH0sIHt9KTtcclxuXHJcbiAgICBjb25zdCBkYXRhUiA9IE9iamVjdC5hc3NpZ24oe30sIGRhdGEpO1xyXG4gICAgZGF0YVIucHJvcGVydGllcyA9IHByb3BlcnR5IGFzIElMYXllckRhdGFTb3VyY2U7XHJcblxyXG4gICAgcmV0dXJuIGRhdGFSO1xyXG4gIH1cclxufVxyXG5cclxuLyoqXHJcbiAqIElMYXllciBzZWFyY2ggc291cmNlXHJcbiAqL1xyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBJTGF5ZXJTZWFyY2hTb3VyY2UgZXh0ZW5kcyBTZWFyY2hTb3VyY2UgaW1wbGVtZW50cyBUZXh0U2VhcmNoIHtcclxuICBzdGF0aWMgaWQgPSAnaWxheWVyJztcclxuICBzdGF0aWMgdHlwZSA9IExBWUVSO1xyXG5cclxuICB0aXRsZSQ6IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KCcnKTtcclxuXHJcbiAgZ2V0IHRpdGxlKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy50aXRsZSQuZ2V0VmFsdWUoKTtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxyXG4gICAgcHJpdmF0ZSBsYW5ndWFnZVNlcnZpY2U6IExhbmd1YWdlU2VydmljZSxcclxuICAgIHN0b3JhZ2VTZXJ2aWNlOiBTdG9yYWdlU2VydmljZSxcclxuICAgIEBJbmplY3QoJ29wdGlvbnMnKSBvcHRpb25zOiBJTGF5ZXJTZWFyY2hTb3VyY2VPcHRpb25zLFxyXG4gICAgQEluamVjdChJTGF5ZXJTZWFyY2hSZXN1bHRGb3JtYXR0ZXIpXHJcbiAgICBwcml2YXRlIGZvcm1hdHRlcjogSUxheWVyU2VhcmNoUmVzdWx0Rm9ybWF0dGVyXHJcbiAgKSB7XHJcbiAgICBzdXBlcihvcHRpb25zLCBzdG9yYWdlU2VydmljZSk7XHJcbiAgICB0aGlzLmxhbmd1YWdlU2VydmljZS5sYW5ndWFnZSQuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgdGhpcy50aXRsZSQubmV4dChcclxuICAgICAgICB0aGlzLmxhbmd1YWdlU2VydmljZS50cmFuc2xhdGUuaW5zdGFudCh0aGlzLm9wdGlvbnMudGl0bGUpXHJcbiAgICAgICk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGdldElkKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gSUxheWVyU2VhcmNoU291cmNlLmlkO1xyXG4gIH1cclxuXHJcbiAgZ2V0VHlwZSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIElMYXllclNlYXJjaFNvdXJjZS50eXBlO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIGdldERlZmF1bHRPcHRpb25zKCk6IElMYXllclNlYXJjaFNvdXJjZU9wdGlvbnMge1xyXG4gICAgY29uc3QgbGltaXQgPVxyXG4gICAgICB0aGlzLm9wdGlvbnMucGFyYW1zICYmIHRoaXMub3B0aW9ucy5wYXJhbXMubGltaXRcclxuICAgICAgICA/IE51bWJlcih0aGlzLm9wdGlvbnMucGFyYW1zLmxpbWl0KVxyXG4gICAgICAgIDogdW5kZWZpbmVkO1xyXG4gICAgY29uc3QgZWNtYXggPVxyXG4gICAgICB0aGlzLm9wdGlvbnMucGFyYW1zICYmIHRoaXMub3B0aW9ucy5wYXJhbXMuZWNtYXhcclxuICAgICAgICA/IE51bWJlcih0aGlzLm9wdGlvbnMucGFyYW1zLmVjbWF4KVxyXG4gICAgICAgIDogdW5kZWZpbmVkO1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgdGl0bGU6ICdpZ28uZ2VvLnNlYXJjaC5pbGF5ZXIubmFtZScsXHJcbiAgICAgIHNlYXJjaFVybDogJ2h0dHBzOi8vZ2VvZWdsLm1zcC5nb3V2LnFjLmNhL2FwaXMvbGF5ZXJzL3NlYXJjaCcsXHJcbiAgICAgIHNldHRpbmdzOiBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgdHlwZTogJ2NoZWNrYm94JyxcclxuICAgICAgICAgIHRpdGxlOiAncmVzdWx0cyB0eXBlJyxcclxuICAgICAgICAgIG5hbWU6ICd0eXBlJyxcclxuICAgICAgICAgIHZhbHVlczogW1xyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgdGl0bGU6ICdpZ28uZ2VvLnNlYXJjaC5pbGF5ZXIudHlwZS5sYXllcicsXHJcbiAgICAgICAgICAgICAgdmFsdWU6ICdsYXllcicsXHJcbiAgICAgICAgICAgICAgZW5hYmxlZDogdHJ1ZSxcclxuICAgICAgICAgICAgICBoYXNodGFnczogWydsYXllcicsICdsYXllcnMnLCAnY291Y2hlJywgJ2NvdWNoZXMnXVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgdGl0bGU6ICdpZ28uZ2VvLnNlYXJjaC5pbGF5ZXIudHlwZS5ncm91cExheWVyJyxcclxuICAgICAgICAgICAgICB2YWx1ZTogJ2dyb3VwJyxcclxuICAgICAgICAgICAgICBlbmFibGVkOiBmYWxzZSxcclxuICAgICAgICAgICAgICBoYXNodGFnczogWydnci1sYXllcicsICdnci1sYXllcnMnLCAnZ3ItY291Y2hlJywgJ2dyLWNvdWNoZXMnXVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICBdXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICB0eXBlOiAncmFkaW9idXR0b24nLFxyXG4gICAgICAgICAgdGl0bGU6ICdyZXN1bHRzIGxpbWl0JyxcclxuICAgICAgICAgIG5hbWU6ICdsaW1pdCcsXHJcbiAgICAgICAgICB2YWx1ZXM6IFtcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHRpdGxlOiAnMScsXHJcbiAgICAgICAgICAgICAgdmFsdWU6IDEsXHJcbiAgICAgICAgICAgICAgZW5hYmxlZDogbGltaXQgPT09IDFcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHRpdGxlOiAnNScsXHJcbiAgICAgICAgICAgICAgdmFsdWU6IDUsXHJcbiAgICAgICAgICAgICAgZW5hYmxlZDogbGltaXQgPT09IDUgfHwgIWxpbWl0XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICB0aXRsZTogJzEwJyxcclxuICAgICAgICAgICAgICB2YWx1ZTogMTAsXHJcbiAgICAgICAgICAgICAgZW5hYmxlZDogbGltaXQgPT09IDEwXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICB0aXRsZTogJzI1JyxcclxuICAgICAgICAgICAgICB2YWx1ZTogMjUsXHJcbiAgICAgICAgICAgICAgZW5hYmxlZDogbGltaXQgPT09IDI1XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICB0aXRsZTogJzUwJyxcclxuICAgICAgICAgICAgICB2YWx1ZTogNTAsXHJcbiAgICAgICAgICAgICAgZW5hYmxlZDogbGltaXQgPT09IDUwXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIF1cclxuICAgICAgICB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIHR5cGU6ICdyYWRpb2J1dHRvbicsXHJcbiAgICAgICAgICB0aXRsZTogJ2VjbWF4JyxcclxuICAgICAgICAgIG5hbWU6ICdlY21heCcsXHJcbiAgICAgICAgICB2YWx1ZXM6IFtcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHRpdGxlOiAnMTAgJScsXHJcbiAgICAgICAgICAgICAgdmFsdWU6IDEwLFxyXG4gICAgICAgICAgICAgIGVuYWJsZWQ6IGVjbWF4ID09PSAxMFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgdGl0bGU6ICczMCAlJyxcclxuICAgICAgICAgICAgICB2YWx1ZTogMzAsXHJcbiAgICAgICAgICAgICAgZW5hYmxlZDogZWNtYXggPT09IDMwXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICB0aXRsZTogJzUwICUnLFxyXG4gICAgICAgICAgICAgIHZhbHVlOiA1MCxcclxuICAgICAgICAgICAgICBlbmFibGVkOiBlY21heCA9PT0gNTAgfHwgIWVjbWF4XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICB0aXRsZTogJzc1ICUnLFxyXG4gICAgICAgICAgICAgIHZhbHVlOiA3NSxcclxuICAgICAgICAgICAgICBlbmFibGVkOiBlY21heCA9PT0gNzVcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHRpdGxlOiAnMTAwICUnLFxyXG4gICAgICAgICAgICAgIHZhbHVlOiAxMDAsXHJcbiAgICAgICAgICAgICAgZW5hYmxlZDogZWNtYXggPT09IDEwMFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICBdXHJcbiAgICAgICAgfVxyXG4gICAgICBdXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2VhcmNoIGEgbGF5ZXIgYnkgbmFtZSBvciBrZXl3b3JkXHJcbiAgICogQHBhcmFtIHRlcm0gTGF5ZXIgbmFtZSBvciBrZXl3b3JkXHJcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZSBvZiA8U2VhcmNoUmVzdWx0PExheWVyT3B0aW9ucz5bXVxyXG4gICAqL1xyXG4gIHNlYXJjaChcclxuICAgIHRlcm06IHN0cmluZyB8IHVuZGVmaW5lZCxcclxuICAgIG9wdGlvbnM/OiBUZXh0U2VhcmNoT3B0aW9uc1xyXG4gICk6IE9ic2VydmFibGU8U2VhcmNoUmVzdWx0PElMYXllckl0ZW1SZXNwb25zZT5bXT4ge1xyXG4gICAgY29uc3QgcGFyYW1zID0gdGhpcy5jb21wdXRlU2VhcmNoUmVxdWVzdFBhcmFtcyh0ZXJtLCBvcHRpb25zIHx8IHt9KTtcclxuICAgIGlmICghcGFyYW1zLmdldCgncScpIHx8ICFwYXJhbXMuZ2V0KCd0eXBlJykpIHtcclxuICAgICAgcmV0dXJuIG9mKFtdKTtcclxuICAgIH1cclxuICAgIHRoaXMub3B0aW9ucy5wYXJhbXMucGFnZSA9IHBhcmFtcy5nZXQoJ3BhZ2UnKSB8fCAnMSc7XHJcbiAgICByZXR1cm4gdGhpcy5nZXRTZWFyY2godGVybSwgcGFyYW1zKTtcclxuICB9XHJcblxyXG4gIEBDYWNoZWFibGUoe1xyXG4gICAgbWF4Q2FjaGVDb3VudDogMjAsXHJcbiAgICBjYWNoZUhhc2hlcjogY3VzdG9tQ2FjaGVIYXNoZXJcclxuICB9KVxyXG4gIHByaXZhdGUgZ2V0U2VhcmNoKFxyXG4gICAgdGVybTogc3RyaW5nLFxyXG4gICAgcGFyYW1zOiBIdHRwUGFyYW1zXHJcbiAgKTogT2JzZXJ2YWJsZTxTZWFyY2hSZXN1bHQ8SUxheWVySXRlbVJlc3BvbnNlPltdPiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgIC5nZXQodGhpcy5zZWFyY2hVcmwsIHsgcGFyYW1zIH0pXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIG1hcCgocmVzcG9uc2U6IElMYXllclNlcnZpY2VSZXNwb25zZSkgPT5cclxuICAgICAgICAgIHRoaXMuZXh0cmFjdFJlc3VsdHMocmVzcG9uc2UsIHRlcm0pXHJcbiAgICAgICAgKVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjb21wdXRlU2VhcmNoUmVxdWVzdFBhcmFtcyhcclxuICAgIHRlcm06IHN0cmluZyxcclxuICAgIG9wdGlvbnM6IFRleHRTZWFyY2hPcHRpb25zXHJcbiAgKTogSHR0cFBhcmFtcyB7XHJcbiAgICByZXR1cm4gbmV3IEh0dHBQYXJhbXMoe1xyXG4gICAgICBmcm9tT2JqZWN0OiBPYmplY3RVdGlscy5yZW1vdmVVbmRlZmluZWQoXHJcbiAgICAgICAgT2JqZWN0LmFzc2lnbihcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgcTogdGhpcy5jb21wdXRlVGVybSh0ZXJtKVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHRoaXMucGFyYW1zLFxyXG4gICAgICAgICAgdGhpcy5jb21wdXRlT3B0aW9uc1BhcmFtKHRlcm0sIG9wdGlvbnMgfHwge30pLnBhcmFtcyxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgcGFnZTogb3B0aW9ucy5wYWdlXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgKVxyXG4gICAgICApXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJlbW92ZSBoYXNodGFnIGZyb20gcXVlcnlcclxuICAgKiBAcGFyYW0gdGVybSBRdWVyeSB3aXRoIGhhc2h0YWdcclxuICAgKi9cclxuICBwcml2YXRlIGNvbXB1dGVUZXJtKHRlcm06IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGVybS5yZXBsYWNlKC8oI1teXFxzXSopL2csICcnKS5yZXBsYWNlKC9bXlxcd8OALcO/ICFcXC1cXChcXCksJyNdKy9nLCAnJyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBZGQgaGFzaHRhZyB0byBwYXJhbSBpZiB2YWxpZFxyXG4gICAqIEBwYXJhbSB0ZXJtIFF1ZXJ5IHdpdGggaGFzaHRhZ1xyXG4gICAqIEBwYXJhbSBvcHRpb25zIFRleHRTZWFyY2hPcHRpb25zXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBjb21wdXRlT3B0aW9uc1BhcmFtKFxyXG4gICAgdGVybTogc3RyaW5nLFxyXG4gICAgb3B0aW9uczogVGV4dFNlYXJjaE9wdGlvbnNcclxuICApOiBUZXh0U2VhcmNoT3B0aW9ucyB7XHJcbiAgICBjb25zdCBoYXNodGFncyA9IHN1cGVyLmdldEhhc2h0YWdzVmFsaWQodGVybSwgJ3R5cGUnKTtcclxuICAgIGlmIChoYXNodGFncykge1xyXG4gICAgICBvcHRpb25zLnBhcmFtcyA9IE9iamVjdC5hc3NpZ24ob3B0aW9ucy5wYXJhbXMgfHwge30sIHtcclxuICAgICAgICB0eXBlOiBoYXNodGFncy5qb2luKCcsJylcclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIG9wdGlvbnM7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGV4dHJhY3RSZXN1bHRzKFxyXG4gICAgcmVzcG9uc2U6IElMYXllclNlcnZpY2VSZXNwb25zZSxcclxuICAgIHRlcm06IHN0cmluZ1xyXG4gICk6IFNlYXJjaFJlc3VsdDxJTGF5ZXJJdGVtUmVzcG9uc2U+W10ge1xyXG4gICAgcmV0dXJuIHJlc3BvbnNlLml0ZW1zLm1hcCgoZGF0YTogSUxheWVyRGF0YSkgPT5cclxuICAgICAgdGhpcy5kYXRhVG9SZXN1bHQoZGF0YSwgdGVybSwgcmVzcG9uc2UpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBkYXRhVG9SZXN1bHQoXHJcbiAgICBkYXRhOiBJTGF5ZXJEYXRhLFxyXG4gICAgdGVybTogc3RyaW5nLFxyXG4gICAgcmVzcG9uc2U/OiBJTGF5ZXJTZXJ2aWNlUmVzcG9uc2VcclxuICApOiBTZWFyY2hSZXN1bHQ8SUxheWVySXRlbVJlc3BvbnNlPiB7XHJcbiAgICBjb25zdCBsYXllck9wdGlvbnMgPSB0aGlzLmNvbXB1dGVMYXllck9wdGlvbnMoZGF0YSk7XHJcblxyXG4gICAgY29uc3QgdGl0bGVIdG1sID0gZGF0YS5oaWdobGlnaHQudGl0bGUgfHwgZGF0YS5wcm9wZXJ0aWVzLnRpdGxlO1xyXG4gICAgY29uc3QgZ3JvdXBUaXRsZSA9IGRhdGEuaGlnaGxpZ2h0Lmdyb3VwVGl0bGUgfHwgZGF0YS5wcm9wZXJ0aWVzLmdyb3VwVGl0bGU7XHJcbiAgICBjb25zdCBzdWJ0aXRsZUh0bWwgPSBncm91cFRpdGxlXHJcbiAgICAgID8gJyA8c21hbGwgc3R5bGU9XCJjb2xvcjogIzZmNjk2OVwiPiAnICsgZ3JvdXBUaXRsZSArICc8L3NtYWxsPidcclxuICAgICAgOiAnJztcclxuXHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBzb3VyY2U6IHRoaXMsXHJcbiAgICAgIG1ldGE6IHtcclxuICAgICAgICBkYXRhVHlwZTogTEFZRVIsXHJcbiAgICAgICAgaWQ6IFt0aGlzLmdldElkKCksIGRhdGEucHJvcGVydGllcy5pZF0uam9pbignLicpLFxyXG4gICAgICAgIHRpdGxlOiBkYXRhLnByb3BlcnRpZXMudGl0bGUsXHJcbiAgICAgICAgdGl0bGVIdG1sOiB0aXRsZUh0bWwgKyBzdWJ0aXRsZUh0bWwsXHJcbiAgICAgICAgaWNvbjogZGF0YS5wcm9wZXJ0aWVzLnR5cGUgPT09ICdMYXllcicgPyAnbGF5ZXJzJyA6ICdtYXAnLFxyXG4gICAgICAgIHNjb3JlOlxyXG4gICAgICAgICAgZGF0YS5zY29yZSB8fFxyXG4gICAgICAgICAgY29tcHV0ZVRlcm1TaW1pbGFyaXR5KHRlcm0udHJpbSgpLCBkYXRhLnByb3BlcnRpZXMubmFtZSksXHJcbiAgICAgICAgbmV4dFBhZ2U6XHJcbiAgICAgICAgICByZXNwb25zZS5pdGVtcy5sZW5ndGggJSArdGhpcy5vcHRpb25zLnBhcmFtcy5saW1pdCA9PT0gMCAmJlxyXG4gICAgICAgICAgK3RoaXMub3B0aW9ucy5wYXJhbXMucGFnZSA8IDEwXHJcbiAgICAgIH0sXHJcbiAgICAgIGRhdGE6IGxheWVyT3B0aW9uc1xyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY29tcHV0ZUxheWVyT3B0aW9ucyhkYXRhOiBJTGF5ZXJEYXRhKTogSUxheWVySXRlbVJlc3BvbnNlIHtcclxuICAgIGNvbnN0IHVybCA9IGRhdGEucHJvcGVydGllcy51cmw7XHJcbiAgICBjb25zdCBxdWVyeVBhcmFtczogUXVlcnlhYmxlRGF0YVNvdXJjZU9wdGlvbnMgPVxyXG4gICAgICB0aGlzLmV4dHJhY3RRdWVyeVBhcmFtc0Zyb21Tb3VyY2VVcmwodXJsKTtcclxuICAgIHJldHVybiBPYmplY3RVdGlscy5yZW1vdmVVbmRlZmluZWQoe1xyXG4gICAgICBzb3VyY2VPcHRpb25zOiB7XHJcbiAgICAgICAgaWQ6IGRhdGEucHJvcGVydGllcy5pZCxcclxuICAgICAgICB0eXBlOiBkYXRhLnByb3BlcnRpZXMuZm9ybWF0LFxyXG4gICAgICAgIHVybCxcclxuICAgICAgICBxdWVyeUZvcm1hdDogcXVlcnlQYXJhbXMucXVlcnlGb3JtYXQsXHJcbiAgICAgICAgcXVlcnlIdG1sVGFyZ2V0OiBxdWVyeVBhcmFtcy5xdWVyeUh0bWxUYXJnZXQsXHJcbiAgICAgICAgcGFyYW1zOlxyXG4gICAgICAgICAgZGF0YS5wcm9wZXJ0aWVzLmZvcm1hdCA9PT0gJ3dtcydcclxuICAgICAgICAgICAgPyB7IExBWUVSUzogZGF0YS5wcm9wZXJ0aWVzLm5hbWUgfVxyXG4gICAgICAgICAgICA6IHVuZGVmaW5lZCxcclxuICAgICAgICBsYXllcjpcclxuICAgICAgICAgIGRhdGEucHJvcGVydGllcy5mb3JtYXQgPT09ICd3bXMnID8gdW5kZWZpbmVkIDogZGF0YS5wcm9wZXJ0aWVzLm5hbWUsXHJcbiAgICAgICAgb3B0aW9uc0Zyb21DYXBhYmlsaXRpZXM6IHRydWUsXHJcbiAgICAgICAgY3Jvc3NPcmlnaW46ICdhbm9ueW1vdXMnXHJcbiAgICAgIH0sXHJcbiAgICAgIHRpdGxlOiBkYXRhLnByb3BlcnRpZXMudGl0bGUsXHJcbiAgICAgIG1heFJlc29sdXRpb246IGdldFJlc29sdXRpb25Gcm9tU2NhbGUoXHJcbiAgICAgICAgTnVtYmVyKGRhdGEucHJvcGVydGllcy5tYXhTY2FsZURlbm9tKVxyXG4gICAgICApLFxyXG4gICAgICBtaW5SZXNvbHV0aW9uOiBnZXRSZXNvbHV0aW9uRnJvbVNjYWxlKFxyXG4gICAgICAgIE51bWJlcihkYXRhLnByb3BlcnRpZXMubWluU2NhbGVEZW5vbSlcclxuICAgICAgKSxcclxuICAgICAgbWV0YWRhdGE6IHtcclxuICAgICAgICB1cmw6IGRhdGEucHJvcGVydGllcy5tZXRhZGF0YVVybCxcclxuICAgICAgICBleHRlcm46IGRhdGEucHJvcGVydGllcy5tZXRhZGF0YVVybCA/IHRydWUgOiB1bmRlZmluZWQsXHJcbiAgICAgICAgYWJzdHJhY3Q6IGRhdGEucHJvcGVydGllcy5hYnN0cmFjdCB8fCB1bmRlZmluZWRcclxuICAgICAgfSxcclxuICAgICAgcHJvcGVydGllczogdGhpcy5mb3JtYXR0ZXIuZm9ybWF0UmVzdWx0KGRhdGEpLnByb3BlcnRpZXNcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBleHRyYWN0UXVlcnlQYXJhbXNGcm9tU291cmNlVXJsKHVybDogc3RyaW5nKToge1xyXG4gICAgcXVlcnlGb3JtYXQ6IFF1ZXJ5Rm9ybWF0O1xyXG4gICAgcXVlcnlIdG1sVGFyZ2V0OiBRdWVyeUh0bWxUYXJnZXQ7XHJcbiAgfSB7XHJcbiAgICBsZXQgcXVlcnlGb3JtYXQ7XHJcbiAgICBsZXQgcXVlcnlIdG1sVGFyZ2V0O1xyXG4gICAgY29uc3QgZm9ybWF0T3B0ID0gKHRoaXMub3B0aW9ucyBhcyBJTGF5ZXJTZWFyY2hTb3VyY2VPcHRpb25zKS5xdWVyeUZvcm1hdDtcclxuICAgIGlmIChmb3JtYXRPcHQpIHtcclxuICAgICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMoZm9ybWF0T3B0KSkge1xyXG4gICAgICAgIGNvbnN0IHZhbHVlID0gZm9ybWF0T3B0W2tleV07XHJcbiAgICAgICAgaWYgKHZhbHVlID09PSAnKicpIHtcclxuICAgICAgICAgIHF1ZXJ5Rm9ybWF0ID0gUXVlcnlGb3JtYXRba2V5LnRvVXBwZXJDYXNlKCldO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCB1cmxzID0gKHZhbHVlIGFzIGFueSBhcyB7IHVybHM6IHN0cmluZ1tdIH0pLnVybHM7XHJcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodXJscykpIHtcclxuICAgICAgICAgIHVybHMuZm9yRWFjaCgodXJsT3B0KSA9PiB7XHJcbiAgICAgICAgICAgIGlmICh1cmwuaW5kZXhPZih1cmxPcHQpICE9PSAtMSkge1xyXG4gICAgICAgICAgICAgIHF1ZXJ5Rm9ybWF0ID0gUXVlcnlGb3JtYXRba2V5LnRvVXBwZXJDYXNlKCldO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKFxyXG4gICAgICAgIHF1ZXJ5Rm9ybWF0ID09PSBRdWVyeUZvcm1hdC5IVE1MIHx8XHJcbiAgICAgICAgcXVlcnlGb3JtYXQgPT09IFF1ZXJ5Rm9ybWF0LkhUTUxHTUwyXHJcbiAgICAgICkge1xyXG4gICAgICAgIHF1ZXJ5SHRtbFRhcmdldCA9ICdpZnJhbWUnO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgcXVlcnlGb3JtYXQsXHJcbiAgICAgIHF1ZXJ5SHRtbFRhcmdldFxyXG4gICAgfTtcclxuICB9XHJcbn1cclxuIl19
335
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWxheWVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvc2VhcmNoL3NoYXJlZC9zb3VyY2VzL2lsYXllci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuRCxPQUFPLEVBQUUsZUFBZSxFQUFFLGNBQWMsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUM3RCxPQUFPLEVBQUUsV0FBVyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRTdELE9BQU8sRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN2RCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUV6QyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkMsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDdkUsT0FBTyxFQUFFLFdBQVcsRUFBOEIsTUFBTSxnQkFBZ0IsQ0FBQztBQUV6RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQVN4RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sVUFBVSxDQUFDOzs7O0FBSXhDLE1BQU0sT0FBTywyQkFBMkI7SUFDbEI7SUFBcEIsWUFBb0IsZUFBZ0M7UUFBaEMsb0JBQWUsR0FBZixlQUFlLENBQWlCO0lBQUcsQ0FBQztJQUV4RCxZQUFZLENBQUMsSUFBZ0I7UUFDM0IsTUFBTSxVQUFVLEdBQUc7WUFDakIsT0FBTztZQUNQLFVBQVU7WUFDVixZQUFZO1lBQ1osYUFB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LEVBQUUsRUFBRTtRQUNqQixXQUFXLEVBQUUsaUJBQWlCO0tBQy9CLENBQUM7OzZDQUdRLFVBQVU7b0NBQ2pCLFVBQVU7bURBUVo7dUZBdEtVLGtCQUFrQjtjQUQ5QixVQUFVOztzQkFlTixNQUFNO3VCQUFDLFNBQVM7O3NCQUNoQixNQUFNO3VCQUFDLDJCQUEyQjt3QkE0STdCLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwUGFyYW1zIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IExhbmd1YWdlU2VydmljZSwgU3RvcmFnZVNlcnZpY2UgfSBmcm9tICdAaWdvMi9jb3JlJztcclxuaW1wb3J0IHsgT2JqZWN0VXRpbHMsIGN1c3RvbUNhY2hlSGFzaGVyIH0gZnJvbSAnQGlnbzIvdXRpbHMnO1xyXG5cclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IENhY2hlYWJsZSB9IGZyb20gJ3RzLWNhY2hlYWJsZSc7XHJcblxyXG5pbXBvcnQgeyBMQVlFUiB9IGZyb20gJy4uLy4uLy4uL2xheWVyJztcclxuaW1wb3J0IHsgZ2V0UmVzb2x1dGlvbkZyb21TY2FsZSB9IGZyb20gJy4uLy4uLy4uL21hcC9zaGFyZWQvbWFwLnV0aWxzJztcclxuaW1wb3J0IHsgUXVlcnlGb3JtYXQsIFF1ZXJ5YWJsZURhdGFTb3VyY2VPcHRpb25zIH0gZnJvbSAnLi4vLi4vLi4vcXVlcnknO1xyXG5pbXBvcnQgeyBTZWFyY2hSZXN1bHQsIFRleHRTZWFyY2ggfSBmcm9tICcuLi9zZWFyY2guaW50ZXJmYWNlcyc7XHJcbmltcG9ydCB7IGNvbXB1dGVUZXJtU2ltaWxhcml0eSB9IGZyb20gJy4uL3NlYXJjaC51dGlscyc7XHJcbmltcG9ydCB7IFF1ZXJ5SHRtbFRhcmdldCB9IGZyb20gJy4vLi4vLi4vLi4vcXVlcnkvc2hhcmVkL3F1ZXJ5LmVudW1zJztcclxuaW1wb3J0IHtcclxuICBJTGF5ZXJEYXRhLFxyXG4gIElMYXllckRhdGFTb3VyY2UsXHJcbiAgSUxheWVySXRlbVJlc3BvbnNlLFxyXG4gIElMYXllclNlYXJjaFNvdXJjZU9wdGlvbnMsXHJcbiAgSUxheWVyU2VydmljZVJlc3BvbnNlXHJcbn0gZnJvbSAnLi9pbGF5ZXIuaW50ZXJmYWNlcyc7XHJcbmltcG9ydCB7IFNlYXJjaFNvdXJjZSB9IGZyb20gJy4vc291cmNlJztcclxuaW1wb3J0IHsgVGV4dFNlYXJjaE9wdGlvbnMgfSBmcm9tICcuL3NvdXJjZS5pbnRlcmZhY2VzJztcclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIElMYXllclNlYXJjaFJlc3VsdEZvcm1hdHRlciB7XHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBsYW5ndWFnZVNlcnZpY2U6IExhbmd1YWdlU2VydmljZSkge31cclxuXHJcbiAgZm9ybWF0UmVzdWx0KGRhdGE6IElMYXllckRhdGEpOiBJTGF5ZXJEYXRhIHtcclxuICAgIGNvbnN0IGFsbG93ZWRLZXkgPSBbXHJcbiAgICAgICd0aXRsZScsXHJcbiAgICAgICdhYnN0cmFjdCcsXHJcbiAgICAgICdncm91cFRpdGxlJyxcclxuICAgICAgJ21ldGFkYXRhVXJsJyxcclxuICAgICAgJ2Rvd25sb2FkVXJsJyxcclxuICAgICAgJ3VybEluZm8nLFxyXG4gICAgICAnbmFtZSdcclxuICAgIF07XHJcblxyXG4gICAgY29uc3QgcHJvcGVydHkgPSBPYmplY3QuZW50cmllcyhkYXRhLnByb3BlcnRpZXMpXHJcbiAgICAgIC5maWx0ZXIoKFtrZXldKSA9PiBhbGxvd2VkS2V5LmluZGV4T2Yoa2V5KSAhPT0gLTEpXHJcbiAgICAgIC5yZWR1Y2UoKG91dDogeyBba2V5OiBzdHJpbmddOiBhbnkgfSwgZW50cmllczogW3N0cmluZywgYW55XSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IFtrZXksIHZhbHVlXSA9IGVudHJpZXM7XHJcbiAgICAgICAgbGV0IG5ld0tleTtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgbmV3S2V5ID0gdGhpcy5sYW5ndWFnZVNlcnZpY2UudHJhbnNsYXRlLmluc3RhbnQoXHJcbiAgICAgICAgICAgICdpZ28uZ2VvLnNlYXJjaC5pbGF5ZXIucHJvcGVydGllcy4nICsga2V5XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgIG5ld0tleSA9IGtleTtcclxuICAgICAgICB9XHJcbiAgICAgICAgb3V0W25ld0tleV0gPSB2YWx1ZSA/IHZhbHVlIDogJyc7XHJcbiAgICAgICAgcmV0dXJuIG91dDtcclxuICAgICAgfSwge30pO1xyXG5cclxuICAgIGNvbnN0IGRhdGFSID0gT2JqZWN0LmFzc2lnbih7fSwgZGF0YSk7XHJcbiAgICBkYXRhUi5wcm9wZXJ0aWVzID0gcHJvcGVydHkgYXMgSUxheWVyRGF0YVNvdXJjZTtcclxuXHJcbiAgICByZXR1cm4gZGF0YVI7XHJcbiAgfVxyXG59XHJcblxyXG4vKipcclxuICogSUxheWVyIHNlYXJjaCBzb3VyY2VcclxuICovXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIElMYXllclNlYXJjaFNvdXJjZSBleHRlbmRzIFNlYXJjaFNvdXJjZSBpbXBsZW1lbnRzIFRleHRTZWFyY2gge1xyXG4gIHN0YXRpYyBpZCA9ICdpbGF5ZXInO1xyXG4gIHN0YXRpYyB0eXBlID0gTEFZRVI7XHJcblxyXG4gIHRpdGxlJDogQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4oJycpO1xyXG5cclxuICBnZXQgdGl0bGUoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLnRpdGxlJC5nZXRWYWx1ZSgpO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXHJcbiAgICBwcml2YXRlIGxhbmd1YWdlU2VydmljZTogTGFuZ3VhZ2VTZXJ2aWNlLFxyXG4gICAgc3RvcmFnZVNlcnZpY2U6IFN0b3JhZ2VTZXJ2aWNlLFxyXG4gICAgQEluamVjdCgnb3B0aW9ucycpIG9wdGlvbnM6IElMYXllclNlYXJjaFNvdXJjZU9wdGlvbnMsXHJcbiAgICBASW5qZWN0KElMYXllclNlYXJjaFJlc3VsdEZvcm1hdHRlcilcclxuICAgIHByaXZhdGUgZm9ybWF0dGVyOiBJTGF5ZXJTZWFyY2hSZXN1bHRGb3JtYXR0ZXJcclxuICApIHtcclxuICAgIHN1cGVyKG9wdGlvbnMsIHN0b3JhZ2VTZXJ2aWNlKTtcclxuICAgIHRoaXMubGFuZ3VhZ2VTZXJ2aWNlLmxhbmd1YWdlJC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICB0aGlzLnRpdGxlJC5uZXh0KFxyXG4gICAgICAgIHRoaXMubGFuZ3VhZ2VTZXJ2aWNlLnRyYW5zbGF0ZS5pbnN0YW50KHRoaXMub3B0aW9ucy50aXRsZSlcclxuICAgICAgKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0SWQoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBJTGF5ZXJTZWFyY2hTb3VyY2UuaWQ7XHJcbiAgfVxyXG5cclxuICBnZXRUeXBlKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gSUxheWVyU2VhcmNoU291cmNlLnR5cGU7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgZ2V0RGVmYXVsdE9wdGlvbnMoKTogSUxheWVyU2VhcmNoU291cmNlT3B0aW9ucyB7XHJcbiAgICBjb25zdCBsaW1pdCA9XHJcbiAgICAgIHRoaXMub3B0aW9ucy5wYXJhbXMgJiYgdGhpcy5vcHRpb25zLnBhcmFtcy5saW1pdFxyXG4gICAgICAgID8gTnVtYmVyKHRoaXMub3B0aW9ucy5wYXJhbXMubGltaXQpXHJcbiAgICAgICAgOiB1bmRlZmluZWQ7XHJcbiAgICBjb25zdCBlY21heCA9XHJcbiAgICAgIHRoaXMub3B0aW9ucy5wYXJhbXMgJiYgdGhpcy5vcHRpb25zLnBhcmFtcy5lY21heFxyXG4gICAgICAgID8gTnVtYmVyKHRoaXMub3B0aW9ucy5wYXJhbXMuZWNtYXgpXHJcbiAgICAgICAgOiB1bmRlZmluZWQ7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICB0aXRsZTogJ2lnby5nZW8uc2VhcmNoLmlsYXllci5uYW1lJyxcclxuICAgICAgc2VhcmNoVXJsOiAnaHR0cHM6Ly9nZW9lZ2wubXNwLmdvdXYucWMuY2EvYXBpcy9sYXllcnMvc2VhcmNoJyxcclxuICAgICAgc2V0dGluZ3M6IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICB0eXBlOiAnY2hlY2tib3gnLFxyXG4gICAgICAgICAgdGl0bGU6ICdyZXN1bHRzIHR5cGUnLFxyXG4gICAgICAgICAgbmFtZTogJ3R5cGUnLFxyXG4gICAgICAgICAgdmFsdWVzOiBbXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICB0aXRsZTogJ2lnby5nZW8uc2VhcmNoLmlsYXllci50eXBlLmxheWVyJyxcclxuICAgICAgICAgICAgICB2YWx1ZTogJ2xheWVyJyxcclxuICAgICAgICAgICAgICBlbmFibGVkOiB0cnVlLFxyXG4gICAgICAgICAgICAgIGhhc2h0YWdzOiBbJ2xheWVyJywgJ2xheWVycycsICdjb3VjaGUnLCAnY291Y2hlcyddXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICB0aXRsZTogJ2lnby5nZW8uc2VhcmNoLmlsYXllci50eXBlLmdyb3VwTGF5ZXInLFxyXG4gICAgICAgICAgICAgIHZhbHVlOiAnZ3JvdXAnLFxyXG4gICAgICAgICAgICAgIGVuYWJsZWQ6IGZhbHNlLFxyXG4gICAgICAgICAgICAgIGhhc2h0YWdzOiBbJ2dyLWxheWVyJywgJ2dyLWxheWVycycsICdnci1jb3VjaGUnLCAnZ3ItY291Y2hlcyddXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIF1cclxuICAgICAgICB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIHR5cGU6ICdyYWRpb2J1dHRvbicsXHJcbiAgICAgICAgICB0aXRsZTogJ3Jlc3VsdHMgbGltaXQnLFxyXG4gICAgICAgICAgbmFtZTogJ2xpbWl0JyxcclxuICAgICAgICAgIHZhbHVlczogW1xyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgdGl0bGU6ICcxJyxcclxuICAgICAgICAgICAgICB2YWx1ZTogMSxcclxuICAgICAgICAgICAgICBlbmFibGVkOiBsaW1pdCA9PT0gMVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgdGl0bGU6ICc1JyxcclxuICAgICAgICAgICAgICB2YWx1ZTogNSxcclxuICAgICAgICAgICAgICBlbmFibGVkOiBsaW1pdCA9PT0gNSB8fCAhbGltaXRcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHRpdGxlOiAnMTAnLFxyXG4gICAgICAgICAgICAgIHZhbHVlOiAxMCxcclxuICAgICAgICAgICAgICBlbmFibGVkOiBsaW1pdCA9PT0gMTBcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHRpdGxlOiAnMjUnLFxyXG4gICAgICAgICAgICAgIHZhbHVlOiAyNSxcclxuICAgICAgICAgICAgICBlbmFibGVkOiBsaW1pdCA9PT0gMjVcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHRpdGxlOiAnNTAnLFxyXG4gICAgICAgICAgICAgIHZhbHVlOiA1MCxcclxuICAgICAgICAgICAgICBlbmFibGVkOiBsaW1pdCA9PT0gNTBcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgXVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgdHlwZTogJ3JhZGlvYnV0dG9uJyxcclxuICAgICAgICAgIHRpdGxlOiAnZWNtYXgnLFxyXG4gICAgICAgICAgbmFtZTogJ2VjbWF4JyxcclxuICAgICAgICAgIHZhbHVlczogW1xyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgdGl0bGU6ICcxMCAlJyxcclxuICAgICAgICAgICAgICB2YWx1ZTogMTAsXHJcbiAgICAgICAgICAgICAgZW5hYmxlZDogZWNtYXggPT09IDEwXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICB0aXRsZTogJzMwICUnLFxyXG4gICAgICAgICAgICAgIHZhbHVlOiAzMCxcclxuICAgICAgICAgICAgICBlbmFibGVkOiBlY21heCA9PT0gMzBcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHRpdGxlOiAnNTAgJScsXHJcbiAgICAgICAgICAgICAgdmFsdWU6IDUwLFxyXG4gICAgICAgICAgICAgIGVuYWJsZWQ6IGVjbWF4ID09PSA1MCB8fCAhZWNtYXhcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHRpdGxlOiAnNzUgJScsXHJcbiAgICAgICAgICAgICAgdmFsdWU6IDc1LFxyXG4gICAgICAgICAgICAgIGVuYWJsZWQ6IGVjbWF4ID09PSA3NVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgdGl0bGU6ICcxMDAgJScsXHJcbiAgICAgICAgICAgICAgdmFsdWU6IDEwMCxcclxuICAgICAgICAgICAgICBlbmFibGVkOiBlY21heCA9PT0gMTAwXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIF1cclxuICAgICAgICB9XHJcbiAgICAgIF1cclxuICAgIH07XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZWFyY2ggYSBsYXllciBieSBuYW1lIG9yIGtleXdvcmRcclxuICAgKiBAcGFyYW0gdGVybSBMYXllciBuYW1lIG9yIGtleXdvcmRcclxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlIG9mIDxTZWFyY2hSZXN1bHQ8TGF5ZXJPcHRpb25zPltdXHJcbiAgICovXHJcbiAgc2VhcmNoKFxyXG4gICAgdGVybTogc3RyaW5nIHwgdW5kZWZpbmVkLFxyXG4gICAgb3B0aW9ucz86IFRleHRTZWFyY2hPcHRpb25zXHJcbiAgKTogT2JzZXJ2YWJsZTxTZWFyY2hSZXN1bHQ8SUxheWVySXRlbVJlc3BvbnNlPltdPiB7XHJcbiAgICBjb25zdCBwYXJhbXMgPSB0aGlzLmNvbXB1dGVTZWFyY2hSZXF1ZXN0UGFyYW1zKHRlcm0sIG9wdGlvbnMgfHwge30pO1xyXG4gICAgaWYgKCFwYXJhbXMuZ2V0KCdxJykgfHwgIXBhcmFtcy5nZXQoJ3R5cGUnKSkge1xyXG4gICAgICByZXR1cm4gb2YoW10pO1xyXG4gICAgfVxyXG4gICAgdGhpcy5vcHRpb25zLnBhcmFtcy5wYWdlID0gcGFyYW1zLmdldCgncGFnZScpIHx8ICcxJztcclxuICAgIHJldHVybiB0aGlzLmdldFNlYXJjaCh0ZXJtLCBwYXJhbXMpO1xyXG4gIH1cclxuXHJcbiAgQENhY2hlYWJsZSh7XHJcbiAgICBtYXhDYWNoZUNvdW50OiAyMCxcclxuICAgIGNhY2hlSGFzaGVyOiBjdXN0b21DYWNoZUhhc2hlclxyXG4gIH0pXHJcbiAgcHJpdmF0ZSBnZXRTZWFyY2goXHJcbiAgICB0ZXJtOiBzdHJpbmcsXHJcbiAgICBwYXJhbXM6IEh0dHBQYXJhbXNcclxuICApOiBPYnNlcnZhYmxlPFNlYXJjaFJlc3VsdDxJTGF5ZXJJdGVtUmVzcG9uc2U+W10+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgLmdldCh0aGlzLnNlYXJjaFVybCwgeyBwYXJhbXMgfSlcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgbWFwKChyZXNwb25zZTogSUxheWVyU2VydmljZVJlc3BvbnNlKSA9PlxyXG4gICAgICAgICAgdGhpcy5leHRyYWN0UmVzdWx0cyhyZXNwb25zZSwgdGVybSlcclxuICAgICAgICApXHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNvbXB1dGVTZWFyY2hSZXF1ZXN0UGFyYW1zKFxyXG4gICAgdGVybTogc3RyaW5nLFxyXG4gICAgb3B0aW9uczogVGV4dFNlYXJjaE9wdGlvbnNcclxuICApOiBIdHRwUGFyYW1zIHtcclxuICAgIHJldHVybiBuZXcgSHR0cFBhcmFtcyh7XHJcbiAgICAgIGZyb21PYmplY3Q6IE9iamVjdFV0aWxzLnJlbW92ZVVuZGVmaW5lZChcclxuICAgICAgICBPYmplY3QuYXNzaWduKFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBxOiB0aGlzLmNvbXB1dGVUZXJtKHRlcm0pXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgdGhpcy5wYXJhbXMsXHJcbiAgICAgICAgICB0aGlzLmNvbXB1dGVPcHRpb25zUGFyYW0odGVybSwgb3B0aW9ucyB8fCB7fSkucGFyYW1zLFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBwYWdlOiBvcHRpb25zLnBhZ2VcclxuICAgICAgICAgIH1cclxuICAgICAgICApXHJcbiAgICAgIClcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVtb3ZlIGhhc2h0YWcgZnJvbSBxdWVyeVxyXG4gICAqIEBwYXJhbSB0ZXJtIFF1ZXJ5IHdpdGggaGFzaHRhZ1xyXG4gICAqL1xyXG4gIHByaXZhdGUgY29tcHV0ZVRlcm0odGVybTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0ZXJtLnJlcGxhY2UoLygjW15cXHNdKikvZywgJycpLnJlcGxhY2UoL1teXFx3w4Atw78gIVxcLVxcKFxcKSwnI10rL2csICcnKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEFkZCBoYXNodGFnIHRvIHBhcmFtIGlmIHZhbGlkXHJcbiAgICogQHBhcmFtIHRlcm0gUXVlcnkgd2l0aCBoYXNodGFnXHJcbiAgICogQHBhcmFtIG9wdGlvbnMgVGV4dFNlYXJjaE9wdGlvbnNcclxuICAgKi9cclxuICBwcml2YXRlIGNvbXB1dGVPcHRpb25zUGFyYW0oXHJcbiAgICB0ZXJtOiBzdHJpbmcsXHJcbiAgICBvcHRpb25zOiBUZXh0U2VhcmNoT3B0aW9uc1xyXG4gICk6IFRleHRTZWFyY2hPcHRpb25zIHtcclxuICAgIGNvbnN0IGhhc2h0YWdzID0gc3VwZXIuZ2V0SGFzaHRhZ3NWYWxpZCh0ZXJtLCAndHlwZScpO1xyXG4gICAgaWYgKGhhc2h0YWdzKSB7XHJcbiAgICAgIG9wdGlvbnMucGFyYW1zID0gT2JqZWN0LmFzc2lnbihvcHRpb25zLnBhcmFtcyB8fCB7fSwge1xyXG4gICAgICAgIHR5cGU6IGhhc2h0YWdzLmpvaW4oJywnKVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gb3B0aW9ucztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZXh0cmFjdFJlc3VsdHMoXHJcbiAgICByZXNwb25zZTogSUxheWVyU2VydmljZVJlc3BvbnNlLFxyXG4gICAgdGVybTogc3RyaW5nXHJcbiAgKTogU2VhcmNoUmVzdWx0PElMYXllckl0ZW1SZXNwb25zZT5bXSB7XHJcbiAgICByZXR1cm4gcmVzcG9uc2UuaXRlbXMubWFwKChkYXRhOiBJTGF5ZXJEYXRhKSA9PlxyXG4gICAgICB0aGlzLmRhdGFUb1Jlc3VsdChkYXRhLCB0ZXJtLCByZXNwb25zZSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGRhdGFUb1Jlc3VsdChcclxuICAgIGRhdGE6IElMYXllckRhdGEsXHJcbiAgICB0ZXJtOiBzdHJpbmcsXHJcbiAgICByZXNwb25zZT86IElMYXllclNlcnZpY2VSZXNwb25zZVxyXG4gICk6IFNlYXJjaFJlc3VsdDxJTGF5ZXJJdGVtUmVzcG9uc2U+IHtcclxuICAgIGNvbnN0IGxheWVyT3B0aW9ucyA9IHRoaXMuY29tcHV0ZUxheWVyT3B0aW9ucyhkYXRhKTtcclxuXHJcbiAgICBjb25zdCB0aXRsZUh0bWwgPSBkYXRhLmhpZ2hsaWdodC50aXRsZSB8fCBkYXRhLnByb3BlcnRpZXMudGl0bGU7XHJcbiAgICBjb25zdCBncm91cFRpdGxlID0gZGF0YS5oaWdobGlnaHQuZ3JvdXBUaXRsZSB8fCBkYXRhLnByb3BlcnRpZXMuZ3JvdXBUaXRsZTtcclxuICAgIGNvbnN0IHN1YnRpdGxlSHRtbCA9IGdyb3VwVGl0bGVcclxuICAgICAgPyAnIDxzbWFsbCBzdHlsZT1cImNvbG9yOiAjNmY2OTY5XCI+ICcgKyBncm91cFRpdGxlICsgJzwvc21hbGw+J1xyXG4gICAgICA6ICcnO1xyXG5cclxuICAgIHJldHVybiB7XHJcbiAgICAgIHNvdXJjZTogdGhpcyxcclxuICAgICAgbWV0YToge1xyXG4gICAgICAgIGRhdGFUeXBlOiBMQVlFUixcclxuICAgICAgICBpZDogW3RoaXMuZ2V0SWQoKSwgZGF0YS5wcm9wZXJ0aWVzLmlkXS5qb2luKCcuJyksXHJcbiAgICAgICAgdGl0bGU6IGRhdGEucHJvcGVydGllcy50aXRsZSxcclxuICAgICAgICB0aXRsZUh0bWw6IHRpdGxlSHRtbCArIHN1YnRpdGxlSHRtbCxcclxuICAgICAgICBpY29uOiBkYXRhLnByb3BlcnRpZXMudHlwZSA9PT0gJ0xheWVyJyA/ICdsYXllcnMnIDogJ21hcCcsXHJcbiAgICAgICAgc2NvcmU6XHJcbiAgICAgICAgICBkYXRhLnNjb3JlIHx8XHJcbiAgICAgICAgICBjb21wdXRlVGVybVNpbWlsYXJpdHkodGVybS50cmltKCksIGRhdGEucHJvcGVydGllcy5uYW1lKSxcclxuICAgICAgICBuZXh0UGFnZTpcclxuICAgICAgICAgIHJlc3BvbnNlLml0ZW1zLmxlbmd0aCAlICt0aGlzLm9wdGlvbnMucGFyYW1zLmxpbWl0ID09PSAwICYmXHJcbiAgICAgICAgICArdGhpcy5vcHRpb25zLnBhcmFtcy5wYWdlIDwgMTBcclxuICAgICAgfSxcclxuICAgICAgZGF0YTogbGF5ZXJPcHRpb25zXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjb21wdXRlTGF5ZXJPcHRpb25zKGRhdGE6IElMYXllckRhdGEpOiBJTGF5ZXJJdGVtUmVzcG9uc2Uge1xyXG4gICAgY29uc3QgdXJsID0gZGF0YS5wcm9wZXJ0aWVzLnVybDtcclxuICAgIGNvbnN0IHF1ZXJ5UGFyYW1zOiBRdWVyeWFibGVEYXRhU291cmNlT3B0aW9ucyA9XHJcbiAgICAgIHRoaXMuZXh0cmFjdFF1ZXJ5UGFyYW1zRnJvbVNvdXJjZVVybCh1cmwpO1xyXG4gICAgcmV0dXJuIE9iamVjdFV0aWxzLnJlbW92ZVVuZGVmaW5lZCh7XHJcbiAgICAgIHNvdXJjZU9wdGlvbnM6IHtcclxuICAgICAgICBpZDogZGF0YS5wcm9wZXJ0aWVzLmlkLFxyXG4gICAgICAgIHR5cGU6IGRhdGEucHJvcGVydGllcy5mb3JtYXQsXHJcbiAgICAgICAgdXJsLFxyXG4gICAgICAgIHF1ZXJ5Rm9ybWF0OiBxdWVyeVBhcmFtcy5xdWVyeUZvcm1hdCxcclxuICAgICAgICBxdWVyeUh0bWxUYXJnZXQ6IHF1ZXJ5UGFyYW1zLnF1ZXJ5SHRtbFRhcmdldCxcclxuICAgICAgICBwYXJhbXM6XHJcbiAgICAgICAgICBkYXRhLnByb3BlcnRpZXMuZm9ybWF0ID09PSAnd21zJ1xyXG4gICAgICAgICAgICA/IHsgTEFZRVJTOiBkYXRhLnByb3BlcnRpZXMubmFtZSB9XHJcbiAgICAgICAgICAgIDogdW5kZWZpbmVkLFxyXG4gICAgICAgIGxheWVyOlxyXG4gICAgICAgICAgZGF0YS5wcm9wZXJ0aWVzLmZvcm1hdCA9PT0gJ3dtcycgPyB1bmRlZmluZWQgOiBkYXRhLnByb3BlcnRpZXMubmFtZSxcclxuICAgICAgICBvcHRpb25zRnJvbUNhcGFiaWxpdGllczogdHJ1ZSxcclxuICAgICAgICBjcm9zc09yaWdpbjogJ2Fub255bW91cydcclxuICAgICAgfSxcclxuICAgICAgdGl0bGU6IGRhdGEucHJvcGVydGllcy50aXRsZSxcclxuICAgICAgbWF4UmVzb2x1dGlvbjogZ2V0UmVzb2x1dGlvbkZyb21TY2FsZShcclxuICAgICAgICBOdW1iZXIoZGF0YS5wcm9wZXJ0aWVzLm1heFNjYWxlRGVub20pXHJcbiAgICAgICksXHJcbiAgICAgIG1pblJlc29sdXRpb246IGdldFJlc29sdXRpb25Gcm9tU2NhbGUoXHJcbiAgICAgICAgTnVtYmVyKGRhdGEucHJvcGVydGllcy5taW5TY2FsZURlbm9tKVxyXG4gICAgICApLFxyXG4gICAgICBtZXRhZGF0YToge1xyXG4gICAgICAgIHVybDogZGF0YS5wcm9wZXJ0aWVzLm1ldGFkYXRhVXJsLFxyXG4gICAgICAgIGV4dGVybjogZGF0YS5wcm9wZXJ0aWVzLm1ldGFkYXRhVXJsID8gdHJ1ZSA6IHVuZGVmaW5lZCxcclxuICAgICAgICBhYnN0cmFjdDogZGF0YS5wcm9wZXJ0aWVzLmFic3RyYWN0IHx8IHVuZGVmaW5lZFxyXG4gICAgICB9LFxyXG4gICAgICBwcm9wZXJ0aWVzOiB0aGlzLmZvcm1hdHRlci5mb3JtYXRSZXN1bHQoZGF0YSkucHJvcGVydGllc1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGV4dHJhY3RRdWVyeVBhcmFtc0Zyb21Tb3VyY2VVcmwodXJsOiBzdHJpbmcpOiB7XHJcbiAgICBxdWVyeUZvcm1hdDogUXVlcnlGb3JtYXQ7XHJcbiAgICBxdWVyeUh0bWxUYXJnZXQ6IFF1ZXJ5SHRtbFRhcmdldDtcclxuICB9IHtcclxuICAgIGxldCBxdWVyeUZvcm1hdDtcclxuICAgIGxldCBxdWVyeUh0bWxUYXJnZXQ7XHJcbiAgICBjb25zdCBmb3JtYXRPcHQgPSAodGhpcy5vcHRpb25zIGFzIElMYXllclNlYXJjaFNvdXJjZU9wdGlvbnMpLnF1ZXJ5Rm9ybWF0O1xyXG4gICAgaWYgKGZvcm1hdE9wdCkge1xyXG4gICAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhmb3JtYXRPcHQpKSB7XHJcbiAgICAgICAgY29uc3QgdmFsdWUgPSBmb3JtYXRPcHRba2V5XTtcclxuICAgICAgICBpZiAodmFsdWUgPT09ICcqJykge1xyXG4gICAgICAgICAgcXVlcnlGb3JtYXQgPSBRdWVyeUZvcm1hdFtrZXkudG9VcHBlckNhc2UoKV07XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IHVybHMgPSAodmFsdWUgYXMgYW55IGFzIHsgdXJsczogc3RyaW5nW10gfSkudXJscztcclxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh1cmxzKSkge1xyXG4gICAgICAgICAgdXJscy5mb3JFYWNoKCh1cmxPcHQpID0+IHtcclxuICAgICAgICAgICAgaWYgKHVybC5pbmRleE9mKHVybE9wdCkgIT09IC0xKSB7XHJcbiAgICAgICAgICAgICAgcXVlcnlGb3JtYXQgPSBRdWVyeUZvcm1hdFtrZXkudG9VcHBlckNhc2UoKV07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoXHJcbiAgICAgICAgcXVlcnlGb3JtYXQgPT09IFF1ZXJ5Rm9ybWF0LkhUTUwgfHxcclxuICAgICAgICBxdWVyeUZvcm1hdCA9PT0gUXVlcnlGb3JtYXQuSFRNTEdNTDJcclxuICAgICAgKSB7XHJcbiAgICAgICAgcXVlcnlIdG1sVGFyZ2V0ID0gJ2lmcmFtZSc7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBxdWVyeUZvcm1hdCxcclxuICAgICAgcXVlcnlIdG1sVGFyZ2V0XHJcbiAgICB9O1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -1,7 +1,7 @@
1
1
  import { HttpClient } from '@angular/common/http';
2
2
  import { ConfigService, LanguageService, StorageService } from '@igo2/core';
3
+ import { ILayerSearchResultFormatter, ILayerSearchSource } from './ilayer';
3
4
  import { SearchSource } from './source';
4
- import { ILayerSearchSource, ILayerSearchResultFormatter } from './ilayer';
5
5
  /**
6
6
  * ILayer search result formatter factory
7
7
  * @ignore
@@ -43,4 +43,4 @@ export function provideILayerSearchSource() {
43
43
  ]
44
44
  };
45
45
  }
46
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWxheWVyLnByb3ZpZGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dlby9zcmMvbGliL3NlYXJjaC9zaGFyZWQvc291cmNlcy9pbGF5ZXIucHJvdmlkZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVsRCxPQUFPLEVBQUUsYUFBYSxFQUFFLGVBQWUsRUFBRSxjQUFjLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFNUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUN4QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFM0U7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLGtDQUFrQyxDQUNoRCxlQUFnQztJQUVoQyxPQUFPLElBQUksMkJBQTJCLENBQUMsZUFBZSxDQUFDLENBQUM7QUFDMUQsQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLGtDQUFrQztJQUNoRCxPQUFPO1FBQ0wsT0FBTyxFQUFFLDJCQUEyQjtRQUNwQyxVQUFVLEVBQUUsa0NBQWtDO1FBQzlDLElBQUksRUFBRSxDQUFDLGVBQWUsQ0FBQztLQUN4QixDQUFDO0FBQ0osQ0FBQztBQUVEOzs7R0FHRztBQUNILE1BQU0sVUFBVSx5QkFBeUIsQ0FDdkMsSUFBZ0IsRUFDaEIsZUFBZ0MsRUFDaEMsY0FBOEIsRUFDOUIsTUFBcUIsRUFDckIsU0FBc0M7SUFFdEMsT0FBTyxJQUFJLGtCQUFrQixDQUMzQixJQUFJLEVBQ0osZUFBZSxFQUNmLGNBQWMsRUFDZCxNQUFNLENBQUMsU0FBUyxDQUFDLGlCQUFpQixrQkFBa0IsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUMxRCxTQUFTLENBQ1YsQ0FBQztBQUNKLENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sVUFBVSx5QkFBeUI7SUFDdkMsT0FBTztRQUNMLE9BQU8sRUFBRSxZQUFZO1FBQ3JCLFVBQVUsRUFBRSx5QkFBeUI7UUFDckMsS0FBSyxFQUFFLElBQUk7UUFDWCxJQUFJLEVBQUU7WUFDSixVQUFVO1lBQ1YsZUFBZTtZQUNmLGNBQWM7WUFDZCxhQUFhO1lBQ2IsMkJBQTJCO1NBQzVCO0tBQ0YsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5cclxuaW1wb3J0IHsgQ29uZmlnU2VydmljZSwgTGFuZ3VhZ2VTZXJ2aWNlLCBTdG9yYWdlU2VydmljZSB9IGZyb20gJ0BpZ28yL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgU2VhcmNoU291cmNlIH0gZnJvbSAnLi9zb3VyY2UnO1xyXG5pbXBvcnQgeyBJTGF5ZXJTZWFyY2hTb3VyY2UsIElMYXllclNlYXJjaFJlc3VsdEZvcm1hdHRlciB9IGZyb20gJy4vaWxheWVyJztcclxuXHJcbi8qKlxyXG4gKiBJTGF5ZXIgc2VhcmNoIHJlc3VsdCBmb3JtYXR0ZXIgZmFjdG9yeVxyXG4gKiBAaWdub3JlXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gaWxheWVyU2VhcmNoUmVzdWx0Rm9ybWF0dGVyRmFjdG9yeShcclxuICBsYW5ndWFnZVNlcnZpY2U6IExhbmd1YWdlU2VydmljZVxyXG4pIHtcclxuICByZXR1cm4gbmV3IElMYXllclNlYXJjaFJlc3VsdEZvcm1hdHRlcihsYW5ndWFnZVNlcnZpY2UpO1xyXG59XHJcblxyXG4vKipcclxuICogRnVuY3Rpb24gdGhhdCByZXR1cm5zIGEgcHJvdmlkZXIgZm9yIHRoZSBJTGF5ZXIgc2VhcmNoIHJlc3VsdCBmb3JtYXR0ZXJcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlSUxheWVyU2VhcmNoUmVzdWx0Rm9ybWF0dGVyKCkge1xyXG4gIHJldHVybiB7XHJcbiAgICBwcm92aWRlOiBJTGF5ZXJTZWFyY2hSZXN1bHRGb3JtYXR0ZXIsXHJcbiAgICB1c2VGYWN0b3J5OiBpbGF5ZXJTZWFyY2hSZXN1bHRGb3JtYXR0ZXJGYWN0b3J5LFxyXG4gICAgZGVwczogW0xhbmd1YWdlU2VydmljZV1cclxuICB9O1xyXG59XHJcblxyXG4vKipcclxuICogSUxheWVyIHNlYXJjaCBzb3VyY2UgZmFjdG9yeVxyXG4gKiBAaWdub3JlXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gaWxheWVyU2VhcmNoU291cmNlRmFjdG9yeShcclxuICBodHRwOiBIdHRwQ2xpZW50LFxyXG4gIGxhbmd1YWdlU2VydmljZTogTGFuZ3VhZ2VTZXJ2aWNlLFxyXG4gIHN0b3JhZ2VTZXJ2aWNlOiBTdG9yYWdlU2VydmljZSxcclxuICBjb25maWc6IENvbmZpZ1NlcnZpY2UsXHJcbiAgZm9ybWF0dGVyOiBJTGF5ZXJTZWFyY2hSZXN1bHRGb3JtYXR0ZXJcclxuKSB7XHJcbiAgcmV0dXJuIG5ldyBJTGF5ZXJTZWFyY2hTb3VyY2UoXHJcbiAgICBodHRwLFxyXG4gICAgbGFuZ3VhZ2VTZXJ2aWNlLFxyXG4gICAgc3RvcmFnZVNlcnZpY2UsXHJcbiAgICBjb25maWcuZ2V0Q29uZmlnKGBzZWFyY2hTb3VyY2VzLiR7SUxheWVyU2VhcmNoU291cmNlLmlkfWApLFxyXG4gICAgZm9ybWF0dGVyXHJcbiAgKTtcclxufVxyXG5cclxuLyoqXHJcbiAqIEZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhIHByb3ZpZGVyIGZvciB0aGUgSUxheWVyIHNlYXJjaCBzb3VyY2VcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlSUxheWVyU2VhcmNoU291cmNlKCkge1xyXG4gIHJldHVybiB7XHJcbiAgICBwcm92aWRlOiBTZWFyY2hTb3VyY2UsXHJcbiAgICB1c2VGYWN0b3J5OiBpbGF5ZXJTZWFyY2hTb3VyY2VGYWN0b3J5LFxyXG4gICAgbXVsdGk6IHRydWUsXHJcbiAgICBkZXBzOiBbXHJcbiAgICAgIEh0dHBDbGllbnQsXHJcbiAgICAgIExhbmd1YWdlU2VydmljZSxcclxuICAgICAgU3RvcmFnZVNlcnZpY2UsXHJcbiAgICAgIENvbmZpZ1NlcnZpY2UsXHJcbiAgICAgIElMYXllclNlYXJjaFJlc3VsdEZvcm1hdHRlclxyXG4gICAgXVxyXG4gIH07XHJcbn1cclxuIl19
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWxheWVyLnByb3ZpZGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dlby9zcmMvbGliL3NlYXJjaC9zaGFyZWQvc291cmNlcy9pbGF5ZXIucHJvdmlkZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVsRCxPQUFPLEVBQUUsYUFBYSxFQUFFLGVBQWUsRUFBRSxjQUFjLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFNUUsT0FBTyxFQUFFLDJCQUEyQixFQUFFLGtCQUFrQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQzNFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFeEM7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLGtDQUFrQyxDQUNoRCxlQUFnQztJQUVoQyxPQUFPLElBQUksMkJBQTJCLENBQUMsZUFBZSxDQUFDLENBQUM7QUFDMUQsQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLGtDQUFrQztJQUNoRCxPQUFPO1FBQ0wsT0FBTyxFQUFFLDJCQUEyQjtRQUNwQyxVQUFVLEVBQUUsa0NBQWtDO1FBQzlDLElBQUksRUFBRSxDQUFDLGVBQWUsQ0FBQztLQUN4QixDQUFDO0FBQ0osQ0FBQztBQUVEOzs7R0FHRztBQUNILE1BQU0sVUFBVSx5QkFBeUIsQ0FDdkMsSUFBZ0IsRUFDaEIsZUFBZ0MsRUFDaEMsY0FBOEIsRUFDOUIsTUFBcUIsRUFDckIsU0FBc0M7SUFFdEMsT0FBTyxJQUFJLGtCQUFrQixDQUMzQixJQUFJLEVBQ0osZUFBZSxFQUNmLGNBQWMsRUFDZCxNQUFNLENBQUMsU0FBUyxDQUFDLGlCQUFpQixrQkFBa0IsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUMxRCxTQUFTLENBQ1YsQ0FBQztBQUNKLENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sVUFBVSx5QkFBeUI7SUFDdkMsT0FBTztRQUNMLE9BQU8sRUFBRSxZQUFZO1FBQ3JCLFVBQVUsRUFBRSx5QkFBeUI7UUFDckMsS0FBSyxFQUFFLElBQUk7UUFDWCxJQUFJLEVBQUU7WUFDSixVQUFVO1lBQ1YsZUFBZTtZQUNmLGNBQWM7WUFDZCxhQUFhO1lBQ2IsMkJBQTJCO1NBQzVCO0tBQ0YsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5cclxuaW1wb3J0IHsgQ29uZmlnU2VydmljZSwgTGFuZ3VhZ2VTZXJ2aWNlLCBTdG9yYWdlU2VydmljZSB9IGZyb20gJ0BpZ28yL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgSUxheWVyU2VhcmNoUmVzdWx0Rm9ybWF0dGVyLCBJTGF5ZXJTZWFyY2hTb3VyY2UgfSBmcm9tICcuL2lsYXllcic7XHJcbmltcG9ydCB7IFNlYXJjaFNvdXJjZSB9IGZyb20gJy4vc291cmNlJztcclxuXHJcbi8qKlxyXG4gKiBJTGF5ZXIgc2VhcmNoIHJlc3VsdCBmb3JtYXR0ZXIgZmFjdG9yeVxyXG4gKiBAaWdub3JlXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gaWxheWVyU2VhcmNoUmVzdWx0Rm9ybWF0dGVyRmFjdG9yeShcclxuICBsYW5ndWFnZVNlcnZpY2U6IExhbmd1YWdlU2VydmljZVxyXG4pIHtcclxuICByZXR1cm4gbmV3IElMYXllclNlYXJjaFJlc3VsdEZvcm1hdHRlcihsYW5ndWFnZVNlcnZpY2UpO1xyXG59XHJcblxyXG4vKipcclxuICogRnVuY3Rpb24gdGhhdCByZXR1cm5zIGEgcHJvdmlkZXIgZm9yIHRoZSBJTGF5ZXIgc2VhcmNoIHJlc3VsdCBmb3JtYXR0ZXJcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlSUxheWVyU2VhcmNoUmVzdWx0Rm9ybWF0dGVyKCkge1xyXG4gIHJldHVybiB7XHJcbiAgICBwcm92aWRlOiBJTGF5ZXJTZWFyY2hSZXN1bHRGb3JtYXR0ZXIsXHJcbiAgICB1c2VGYWN0b3J5OiBpbGF5ZXJTZWFyY2hSZXN1bHRGb3JtYXR0ZXJGYWN0b3J5LFxyXG4gICAgZGVwczogW0xhbmd1YWdlU2VydmljZV1cclxuICB9O1xyXG59XHJcblxyXG4vKipcclxuICogSUxheWVyIHNlYXJjaCBzb3VyY2UgZmFjdG9yeVxyXG4gKiBAaWdub3JlXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gaWxheWVyU2VhcmNoU291cmNlRmFjdG9yeShcclxuICBodHRwOiBIdHRwQ2xpZW50LFxyXG4gIGxhbmd1YWdlU2VydmljZTogTGFuZ3VhZ2VTZXJ2aWNlLFxyXG4gIHN0b3JhZ2VTZXJ2aWNlOiBTdG9yYWdlU2VydmljZSxcclxuICBjb25maWc6IENvbmZpZ1NlcnZpY2UsXHJcbiAgZm9ybWF0dGVyOiBJTGF5ZXJTZWFyY2hSZXN1bHRGb3JtYXR0ZXJcclxuKSB7XHJcbiAgcmV0dXJuIG5ldyBJTGF5ZXJTZWFyY2hTb3VyY2UoXHJcbiAgICBodHRwLFxyXG4gICAgbGFuZ3VhZ2VTZXJ2aWNlLFxyXG4gICAgc3RvcmFnZVNlcnZpY2UsXHJcbiAgICBjb25maWcuZ2V0Q29uZmlnKGBzZWFyY2hTb3VyY2VzLiR7SUxheWVyU2VhcmNoU291cmNlLmlkfWApLFxyXG4gICAgZm9ybWF0dGVyXHJcbiAgKTtcclxufVxyXG5cclxuLyoqXHJcbiAqIEZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhIHByb3ZpZGVyIGZvciB0aGUgSUxheWVyIHNlYXJjaCBzb3VyY2VcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlSUxheWVyU2VhcmNoU291cmNlKCkge1xyXG4gIHJldHVybiB7XHJcbiAgICBwcm92aWRlOiBTZWFyY2hTb3VyY2UsXHJcbiAgICB1c2VGYWN0b3J5OiBpbGF5ZXJTZWFyY2hTb3VyY2VGYWN0b3J5LFxyXG4gICAgbXVsdGk6IHRydWUsXHJcbiAgICBkZXBzOiBbXHJcbiAgICAgIEh0dHBDbGllbnQsXHJcbiAgICAgIExhbmd1YWdlU2VydmljZSxcclxuICAgICAgU3RvcmFnZVNlcnZpY2UsXHJcbiAgICAgIENvbmZpZ1NlcnZpY2UsXHJcbiAgICAgIElMYXllclNlYXJjaFJlc3VsdEZvcm1hdHRlclxyXG4gICAgXVxyXG4gIH07XHJcbn1cclxuIl19