@igo2/geo 1.15.4 → 1.15.6

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 (420) hide show
  1. package/esm2020/lib/catalog/catalog-browser/catalog-browser-group.component.mjs +2 -2
  2. package/esm2020/lib/catalog/catalog-browser/catalog-browser-layer.component.mjs +2 -2
  3. package/esm2020/lib/catalog/catalog-browser/catalog-browser.component.mjs +2 -2
  4. package/esm2020/lib/catalog/catalog-browser/catalog-browser.module.mjs +1 -1
  5. package/esm2020/lib/catalog/catalog-library/add-catalog-dialog.component.mjs +2 -2
  6. package/esm2020/lib/catalog/catalog-library/catalog-library-item.component.mjs +2 -2
  7. package/esm2020/lib/catalog/catalog-library/catalog-library.component.mjs +2 -2
  8. package/esm2020/lib/catalog/catalog-library/catalog-library.module.mjs +1 -1
  9. package/esm2020/lib/catalog/catalog.module.mjs +1 -1
  10. package/esm2020/lib/catalog/index.mjs +1 -1
  11. package/esm2020/lib/catalog/shared/catalog.abstract.mjs +1 -1
  12. package/esm2020/lib/catalog/shared/catalog.enum.mjs +1 -1
  13. package/esm2020/lib/catalog/shared/catalog.interface.mjs +1 -1
  14. package/esm2020/lib/catalog/shared/catalog.service.mjs +1 -1
  15. package/esm2020/lib/datasource/datasource.module.mjs +1 -1
  16. package/esm2020/lib/datasource/shared/capabilities.service.mjs +1 -1
  17. package/esm2020/lib/datasource/shared/datasource.service.mjs +1 -1
  18. package/esm2020/lib/datasource/shared/datasources/any-datasource.interface.mjs +1 -1
  19. package/esm2020/lib/datasource/shared/datasources/any-datasource.mjs +1 -1
  20. package/esm2020/lib/datasource/shared/datasources/arcgisrest-datasource.interface.mjs +1 -1
  21. package/esm2020/lib/datasource/shared/datasources/arcgisrest-datasource.mjs +1 -1
  22. package/esm2020/lib/datasource/shared/datasources/carto-datasource.interface.mjs +1 -1
  23. package/esm2020/lib/datasource/shared/datasources/carto-datasource.mjs +1 -1
  24. package/esm2020/lib/datasource/shared/datasources/cluster-datasource.interface.mjs +1 -1
  25. package/esm2020/lib/datasource/shared/datasources/cluster-datasource.mjs +1 -1
  26. package/esm2020/lib/datasource/shared/datasources/data.service.mjs +1 -1
  27. package/esm2020/lib/datasource/shared/datasources/datasource.interface.mjs +1 -1
  28. package/esm2020/lib/datasource/shared/datasources/datasource.mjs +1 -1
  29. package/esm2020/lib/datasource/shared/datasources/feature-datasource.interface.mjs +1 -1
  30. package/esm2020/lib/datasource/shared/datasources/feature-datasource.mjs +1 -1
  31. package/esm2020/lib/datasource/shared/datasources/imagearcgisrest-datasource.interface.mjs +1 -1
  32. package/esm2020/lib/datasource/shared/datasources/imagearcgisrest-datasource.mjs +1 -1
  33. package/esm2020/lib/datasource/shared/datasources/mvt-datasource.interface.mjs +1 -1
  34. package/esm2020/lib/datasource/shared/datasources/mvt-datasource.mjs +1 -1
  35. package/esm2020/lib/datasource/shared/datasources/osm-datasource.interface.mjs +1 -1
  36. package/esm2020/lib/datasource/shared/datasources/osm-datasource.mjs +1 -1
  37. package/esm2020/lib/datasource/shared/datasources/tilearcgisrest-datasource.interface.mjs +1 -1
  38. package/esm2020/lib/datasource/shared/datasources/tilearcgisrest-datasource.mjs +1 -1
  39. package/esm2020/lib/datasource/shared/datasources/tiledebug-datasource.interface.mjs +1 -1
  40. package/esm2020/lib/datasource/shared/datasources/tiledebug-datasource.mjs +1 -1
  41. package/esm2020/lib/datasource/shared/datasources/websocket-datasource.interface.mjs +1 -1
  42. package/esm2020/lib/datasource/shared/datasources/websocket-datasource.mjs +1 -1
  43. package/esm2020/lib/datasource/shared/datasources/wfs-datasource.interface.mjs +1 -1
  44. package/esm2020/lib/datasource/shared/datasources/wfs-datasource.mjs +1 -1
  45. package/esm2020/lib/datasource/shared/datasources/wfs.service.mjs +1 -1
  46. package/esm2020/lib/datasource/shared/datasources/wms-datasource.interface.mjs +1 -1
  47. package/esm2020/lib/datasource/shared/datasources/wms-datasource.mjs +1 -1
  48. package/esm2020/lib/datasource/shared/datasources/wms-wfs.utils.mjs +1 -1
  49. package/esm2020/lib/datasource/shared/datasources/wmts-datasource.interface.mjs +1 -1
  50. package/esm2020/lib/datasource/shared/datasources/wmts-datasource.mjs +1 -1
  51. package/esm2020/lib/datasource/shared/datasources/xyz-datasource.interface.mjs +1 -1
  52. package/esm2020/lib/datasource/shared/datasources/xyz-datasource.mjs +1 -1
  53. package/esm2020/lib/datasource/shared/index.mjs +1 -1
  54. package/esm2020/lib/datasource/shared/options/index.mjs +1 -1
  55. package/esm2020/lib/datasource/shared/options/options-api.interface.mjs +1 -1
  56. package/esm2020/lib/datasource/shared/options/options-api.providers.mjs +1 -1
  57. package/esm2020/lib/datasource/shared/options/options-api.service.mjs +1 -1
  58. package/esm2020/lib/datasource/shared/options/options.service.mjs +1 -1
  59. package/esm2020/lib/datasource/utils/index.mjs +1 -1
  60. package/esm2020/lib/datasource/utils/tilegrid.mjs +1 -1
  61. package/esm2020/lib/directions/directions-buttons/directions-buttons.component.mjs +2 -2
  62. package/esm2020/lib/directions/directions-inputs/directions-inputs.component.mjs +2 -2
  63. package/esm2020/lib/directions/directions-results/directions-results.component.mjs +2 -2
  64. package/esm2020/lib/directions/directions-sources/directions-source.interface.mjs +1 -1
  65. package/esm2020/lib/directions/directions-sources/directions-source.mjs +1 -1
  66. package/esm2020/lib/directions/directions-sources/directions-source.provider.mjs +1 -1
  67. package/esm2020/lib/directions/directions-sources/osrm-directions-source.mjs +1 -1
  68. package/esm2020/lib/directions/directions.component.mjs +2 -2
  69. package/esm2020/lib/directions/directions.module.mjs +1 -1
  70. package/esm2020/lib/directions/shared/directions.interface.mjs +1 -1
  71. package/esm2020/lib/directions/shared/directions.service.mjs +1 -1
  72. package/esm2020/lib/directions/shared/directions.utils.mjs +1 -1
  73. package/esm2020/lib/directions/shared/store.mjs +1 -1
  74. package/esm2020/lib/download/download-button/download-button.component.mjs +2 -2
  75. package/esm2020/lib/download/download.module.mjs +1 -1
  76. package/esm2020/lib/download/shared/download.service.mjs +1 -1
  77. package/esm2020/lib/draw/draw/draw-layer-popup.component.mjs +2 -2
  78. package/esm2020/lib/draw/draw/draw-popup.component.mjs +2 -2
  79. package/esm2020/lib/draw/draw/draw-shorcuts.component.mjs +2 -2
  80. package/esm2020/lib/draw/draw/draw.component.mjs +2 -2
  81. package/esm2020/lib/draw/draw/draw.module.mjs +1 -1
  82. package/esm2020/lib/draw/drawingTool.module.mjs +1 -1
  83. package/esm2020/lib/draw/shared/draw-icon.service.mjs +1 -1
  84. package/esm2020/lib/draw/shared/draw.enum.mjs +1 -1
  85. package/esm2020/lib/draw/shared/draw.interface.mjs +1 -1
  86. package/esm2020/lib/draw/shared/draw.utils.mjs +1 -1
  87. package/esm2020/lib/draw/shared/index.mjs +1 -1
  88. package/esm2020/lib/feature/feature-details/feature-details.component.mjs +2 -2
  89. package/esm2020/lib/feature/feature-details/feature-details.directive.mjs +1 -1
  90. package/esm2020/lib/feature/feature-details/feature-details.module.mjs +1 -1
  91. package/esm2020/lib/feature/feature-form/feature-form.component.mjs +2 -2
  92. package/esm2020/lib/feature/feature-form/feature-form.module.mjs +1 -1
  93. package/esm2020/lib/feature/feature.module.mjs +1 -1
  94. package/esm2020/lib/feature/index.mjs +1 -1
  95. package/esm2020/lib/feature/shared/feature.interfaces.mjs +1 -1
  96. package/esm2020/lib/feature/shared/feature.utils.mjs +1 -1
  97. package/esm2020/lib/feature/shared/index.mjs +1 -1
  98. package/esm2020/lib/feature/shared/store.mjs +1 -1
  99. package/esm2020/lib/feature/shared/strategies/in-map-extent.mjs +1 -1
  100. package/esm2020/lib/feature/shared/strategies/in-map-resolution.mjs +1 -1
  101. package/esm2020/lib/feature/shared/strategies/index.mjs +1 -1
  102. package/esm2020/lib/feature/shared/strategies/loading-layer.mjs +1 -1
  103. package/esm2020/lib/feature/shared/strategies/loading.mjs +1 -1
  104. package/esm2020/lib/feature/shared/strategies/search.mjs +1 -1
  105. package/esm2020/lib/feature/shared/strategies/selection.mjs +1 -1
  106. package/esm2020/lib/feature/shared/strategies.utils.mjs +1 -1
  107. package/esm2020/lib/filter/filter.module.mjs +1 -1
  108. package/esm2020/lib/filter/index.mjs +1 -1
  109. package/esm2020/lib/filter/ogc-filter-button/index.mjs +1 -1
  110. package/esm2020/lib/filter/ogc-filter-button/ogc-filter-button.component.mjs +2 -2
  111. package/esm2020/lib/filter/ogc-filter-form/index.mjs +1 -1
  112. package/esm2020/lib/filter/ogc-filter-form/ogc-filter-form.component.mjs +2 -2
  113. package/esm2020/lib/filter/ogc-filter-selection/index.mjs +1 -1
  114. package/esm2020/lib/filter/ogc-filter-selection/ogc-filter-selection.component.mjs +2 -2
  115. package/esm2020/lib/filter/ogc-filter-time/index.mjs +1 -1
  116. package/esm2020/lib/filter/ogc-filter-time/ogc-filter-time-slider.component.mjs +2 -2
  117. package/esm2020/lib/filter/ogc-filter-time/ogc-filter-time.component.mjs +2 -2
  118. package/esm2020/lib/filter/ogc-filterable-form/index.mjs +1 -1
  119. package/esm2020/lib/filter/ogc-filterable-form/ogc-filterable-form.component.mjs +2 -2
  120. package/esm2020/lib/filter/ogc-filterable-item/index.mjs +1 -1
  121. package/esm2020/lib/filter/ogc-filterable-item/ogc-filterable-item.component.mjs +2 -2
  122. package/esm2020/lib/filter/ogc-filterable-list/index.mjs +1 -1
  123. package/esm2020/lib/filter/ogc-filterable-list/ogc-filterable-list-binding.directive.mjs +1 -1
  124. package/esm2020/lib/filter/ogc-filterable-list/ogc-filterable-list.component.mjs +2 -2
  125. package/esm2020/lib/filter/shared/filterable-datasource.pipe.mjs +1 -1
  126. package/esm2020/lib/filter/shared/index.mjs +1 -1
  127. package/esm2020/lib/filter/shared/ogc-filter-time.service.mjs +1 -1
  128. package/esm2020/lib/filter/shared/ogc-filter.enum.mjs +1 -1
  129. package/esm2020/lib/filter/shared/ogc-filter.interface.mjs +1 -1
  130. package/esm2020/lib/filter/shared/ogc-filter.mjs +1 -1
  131. package/esm2020/lib/filter/shared/ogc-filter.service.mjs +1 -1
  132. package/esm2020/lib/filter/shared/spatial-filter.enum.mjs +1 -1
  133. package/esm2020/lib/filter/shared/spatial-filter.interface.mjs +1 -1
  134. package/esm2020/lib/filter/shared/spatial-filter.service.mjs +1 -1
  135. package/esm2020/lib/filter/shared/time-filter.enum.mjs +1 -1
  136. package/esm2020/lib/filter/shared/time-filter.interface.mjs +1 -1
  137. package/esm2020/lib/filter/shared/time-filter.service.mjs +1 -1
  138. package/esm2020/lib/filter/spatial-filter/spatial-filter-item/index.mjs +1 -1
  139. package/esm2020/lib/filter/spatial-filter/spatial-filter-item/spatial-filter-item.component.mjs +2 -2
  140. package/esm2020/lib/filter/spatial-filter/spatial-filter-list/index.mjs +1 -1
  141. package/esm2020/lib/filter/spatial-filter/spatial-filter-list/spatial-filter-list.component.mjs +2 -2
  142. package/esm2020/lib/filter/spatial-filter/spatial-filter-type/index.mjs +1 -1
  143. package/esm2020/lib/filter/spatial-filter/spatial-filter-type/spatial-filter-type.component.mjs +2 -2
  144. package/esm2020/lib/filter/time-filter-button/index.mjs +1 -1
  145. package/esm2020/lib/filter/time-filter-button/time-filter-button.component.mjs +2 -2
  146. package/esm2020/lib/filter/time-filter-form/index.mjs +1 -1
  147. package/esm2020/lib/filter/time-filter-form/time-filter-form.component.mjs +2 -2
  148. package/esm2020/lib/filter/time-filter-item/index.mjs +1 -1
  149. package/esm2020/lib/filter/time-filter-item/time-filter-item.component.mjs +2 -2
  150. package/esm2020/lib/filter/time-filter-list/index.mjs +1 -1
  151. package/esm2020/lib/filter/time-filter-list/time-filter-list-binding.directive.mjs +1 -1
  152. package/esm2020/lib/filter/time-filter-list/time-filter-list.component.mjs +2 -2
  153. package/esm2020/lib/geo.module.mjs +1 -1
  154. package/esm2020/lib/geometry/geometry-form-field/geometry-form-field-input.component.mjs +1 -1
  155. package/esm2020/lib/geometry/geometry-form-field/geometry-form-field.component.mjs +2 -2
  156. package/esm2020/lib/geometry/geometry-form-field/geometry-form-field.module.mjs +1 -1
  157. package/esm2020/lib/geometry/geometry.module.mjs +1 -1
  158. package/esm2020/lib/geometry/index.mjs +1 -1
  159. package/esm2020/lib/geometry/shared/controls/draw.mjs +1 -1
  160. package/esm2020/lib/geometry/shared/controls/modify.mjs +1 -1
  161. package/esm2020/lib/geometry/shared/controls/slice.mjs +1 -1
  162. package/esm2020/lib/geometry/shared/geometry.errors.mjs +1 -1
  163. package/esm2020/lib/geometry/shared/geometry.interfaces.mjs +1 -1
  164. package/esm2020/lib/geometry/shared/geometry.utils.mjs +1 -1
  165. package/esm2020/lib/import-export/export-button/export-button.component.mjs +2 -2
  166. package/esm2020/lib/import-export/import-export/import-export.component.mjs +8 -8
  167. package/esm2020/lib/import-export/import-export.module.mjs +1 -1
  168. package/esm2020/lib/import-export/index.mjs +1 -1
  169. package/esm2020/lib/import-export/shared/drop-geo-file.directive.mjs +7 -7
  170. package/esm2020/lib/import-export/shared/export.interface.mjs +1 -1
  171. package/esm2020/lib/import-export/shared/export.service.mjs +1 -1
  172. package/esm2020/lib/import-export/shared/export.type.mjs +1 -1
  173. package/esm2020/lib/import-export/shared/export.utils.mjs +1 -1
  174. package/esm2020/lib/import-export/shared/import.errors.mjs +1 -1
  175. package/esm2020/lib/import-export/shared/import.interface.mjs +1 -1
  176. package/esm2020/lib/import-export/shared/import.service.mjs +1 -1
  177. package/esm2020/lib/import-export/shared/import.utils.mjs +1 -1
  178. package/esm2020/lib/layer/index.mjs +1 -1
  179. package/esm2020/lib/layer/layer-item/index.mjs +1 -1
  180. package/esm2020/lib/layer/layer-item/layer-item.component.mjs +2 -2
  181. package/esm2020/lib/layer/layer-legend/index.mjs +1 -1
  182. package/esm2020/lib/layer/layer-legend/layer-legend.component.mjs +2 -2
  183. package/esm2020/lib/layer/layer-legend-item/index.mjs +1 -1
  184. package/esm2020/lib/layer/layer-legend-item/layer-legend-item.component.mjs +2 -2
  185. package/esm2020/lib/layer/layer-legend-list/index.mjs +1 -1
  186. package/esm2020/lib/layer/layer-legend-list/layer-legend-list-binding.directive.mjs +1 -1
  187. package/esm2020/lib/layer/layer-legend-list/layer-legend-list.component.mjs +2 -2
  188. package/esm2020/lib/layer/layer-list/index.mjs +1 -1
  189. package/esm2020/lib/layer/layer-list/layer-list-binding.directive.mjs +1 -1
  190. package/esm2020/lib/layer/layer-list/layer-list.component.mjs +2 -2
  191. package/esm2020/lib/layer/layer-list/layer-list.enum.mjs +1 -1
  192. package/esm2020/lib/layer/layer-list-tool/index.mjs +1 -1
  193. package/esm2020/lib/layer/layer-list-tool/layer-list-tool.component.mjs +2 -2
  194. package/esm2020/lib/layer/layer-list-tool/layer-list-tool.enum.mjs +1 -1
  195. package/esm2020/lib/layer/layer-list-tool/layer-list-tool.interface.mjs +1 -1
  196. package/esm2020/lib/layer/layer-list-tool/layer-list-tool.service.mjs +1 -1
  197. package/esm2020/lib/layer/layer.module.mjs +1 -1
  198. package/esm2020/lib/layer/shared/clusterParam.mjs +1 -1
  199. package/esm2020/lib/layer/shared/index.mjs +1 -1
  200. package/esm2020/lib/layer/shared/layer.enums.mjs +1 -1
  201. package/esm2020/lib/layer/shared/layer.service.mjs +6 -6
  202. package/esm2020/lib/layer/shared/layers/any-layer.interface.mjs +1 -1
  203. package/esm2020/lib/layer/shared/layers/any-layer.mjs +1 -1
  204. package/esm2020/lib/layer/shared/layers/image-layer.interface.mjs +1 -1
  205. package/esm2020/lib/layer/shared/layers/image-layer.mjs +1 -1
  206. package/esm2020/lib/layer/shared/layers/layer.interface.mjs +1 -1
  207. package/esm2020/lib/layer/shared/layers/layer.mjs +1 -1
  208. package/esm2020/lib/layer/shared/layers/tile-layer.interface.mjs +1 -1
  209. package/esm2020/lib/layer/shared/layers/tile-layer.mjs +1 -1
  210. package/esm2020/lib/layer/shared/layers/vector-layer.interface.mjs +1 -1
  211. package/esm2020/lib/layer/shared/layers/vector-layer.mjs +1 -1
  212. package/esm2020/lib/layer/shared/layers/vectortile-layer.interface.mjs +1 -1
  213. package/esm2020/lib/layer/shared/layers/vectortile-layer.mjs +1 -1
  214. package/esm2020/lib/layer/track-feature-button/index.mjs +1 -1
  215. package/esm2020/lib/layer/track-feature-button/track-feature-button.component.mjs +2 -2
  216. package/esm2020/lib/layer/utils/image-watcher.mjs +1 -1
  217. package/esm2020/lib/layer/utils/index.mjs +1 -1
  218. package/esm2020/lib/layer/utils/layer.utils.mjs +1 -1
  219. package/esm2020/lib/layer/utils/outputLegend.mjs +1 -1
  220. package/esm2020/lib/layer/utils/tile-watcher.mjs +1 -1
  221. package/esm2020/lib/layer/utils/vector-watcher.mjs +1 -1
  222. package/esm2020/lib/map/baselayers-switcher/baselayers-switcher.animation.mjs +1 -1
  223. package/esm2020/lib/map/baselayers-switcher/baselayers-switcher.component.mjs +2 -2
  224. package/esm2020/lib/map/baselayers-switcher/index.mjs +1 -1
  225. package/esm2020/lib/map/baselayers-switcher/mini-basemap.component.mjs +11 -12
  226. package/esm2020/lib/map/geolocate-button/geolocate-button.component.mjs +2 -2
  227. package/esm2020/lib/map/geolocate-button/index.mjs +1 -1
  228. package/esm2020/lib/map/index.mjs +1 -1
  229. package/esm2020/lib/map/info-section/index.mjs +1 -1
  230. package/esm2020/lib/map/info-section/info-section.component.mjs +2 -2
  231. package/esm2020/lib/map/map-browser/index.mjs +1 -1
  232. package/esm2020/lib/map/map-browser/map-browser.component.mjs +2 -2
  233. package/esm2020/lib/map/map-center/index.mjs +1 -1
  234. package/esm2020/lib/map/map-center/map-center.component.mjs +2 -2
  235. package/esm2020/lib/map/map.module.mjs +1 -1
  236. package/esm2020/lib/map/menu-button/index.mjs +1 -1
  237. package/esm2020/lib/map/menu-button/menu-button.component.mjs +2 -2
  238. package/esm2020/lib/map/offline-button/index.mjs +1 -1
  239. package/esm2020/lib/map/offline-button/offline-button.component.mjs +2 -2
  240. package/esm2020/lib/map/rotation-button/index.mjs +1 -1
  241. package/esm2020/lib/map/rotation-button/rotation-button.component.mjs +2 -2
  242. package/esm2020/lib/map/shared/controllers/controller.mjs +1 -1
  243. package/esm2020/lib/map/shared/controllers/geolocation.mjs +1 -1
  244. package/esm2020/lib/map/shared/controllers/index.mjs +1 -1
  245. package/esm2020/lib/map/shared/controllers/view.mjs +1 -1
  246. package/esm2020/lib/map/shared/hover-feature.directive.mjs +1 -1
  247. package/esm2020/lib/map/shared/index.mjs +1 -1
  248. package/esm2020/lib/map/shared/linkedLayers.utils.mjs +3 -3
  249. package/esm2020/lib/map/shared/map-pointer-position.directive.mjs +1 -1
  250. package/esm2020/lib/map/shared/map.enums.mjs +1 -1
  251. package/esm2020/lib/map/shared/map.interface.mjs +1 -1
  252. package/esm2020/lib/map/shared/map.mjs +1 -1
  253. package/esm2020/lib/map/shared/map.service.mjs +1 -1
  254. package/esm2020/lib/map/shared/map.utils.mjs +1 -1
  255. package/esm2020/lib/map/shared/mapOffline.directive.mjs +1 -1
  256. package/esm2020/lib/map/shared/projection.interfaces.mjs +1 -1
  257. package/esm2020/lib/map/shared/projection.service.mjs +1 -1
  258. package/esm2020/lib/map/shared/projection.utils.mjs +1 -1
  259. package/esm2020/lib/map/swipe-control/index.mjs +1 -1
  260. package/esm2020/lib/map/swipe-control/swipe-control.component.mjs +2 -2
  261. package/esm2020/lib/map/utils/layer-watcher.mjs +1 -1
  262. package/esm2020/lib/map/wake-lock-button/index.mjs +1 -1
  263. package/esm2020/lib/map/wake-lock-button/wake-lock-button.component.mjs +2 -2
  264. package/esm2020/lib/map/zoom-button/index.mjs +1 -1
  265. package/esm2020/lib/map/zoom-button/zoom-button.component.mjs +2 -2
  266. package/esm2020/lib/measure/index.mjs +1 -1
  267. package/esm2020/lib/measure/measure.module.mjs +1 -1
  268. package/esm2020/lib/measure/measurer/measure-format.pipe.mjs +1 -1
  269. package/esm2020/lib/measure/measurer/measurer-dialog.component.mjs +2 -2
  270. package/esm2020/lib/measure/measurer/measurer-item.component.mjs +2 -2
  271. package/esm2020/lib/measure/measurer/measurer.component.mjs +2 -2
  272. package/esm2020/lib/measure/measurer/measurer.module.mjs +1 -1
  273. package/esm2020/lib/measure/shared/measure.enum.mjs +1 -1
  274. package/esm2020/lib/measure/shared/measure.interfaces.mjs +1 -1
  275. package/esm2020/lib/measure/shared/measure.utils.mjs +1 -1
  276. package/esm2020/lib/metadata/index.mjs +1 -1
  277. package/esm2020/lib/metadata/metadata-button/metadata-button.component.mjs +2 -2
  278. package/esm2020/lib/metadata/metadata.module.mjs +1 -1
  279. package/esm2020/lib/metadata/shared/metadata.interface.mjs +1 -1
  280. package/esm2020/lib/offline/geoDB/configFileToGeoDB.service.mjs +1 -1
  281. package/esm2020/lib/offline/geoDB/geoDB.enums.mjs +1 -1
  282. package/esm2020/lib/offline/geoDB/geoDB.interface.mjs +1 -1
  283. package/esm2020/lib/offline/geoDB/geoDB.service.mjs +1 -1
  284. package/esm2020/lib/offline/index.mjs +1 -1
  285. package/esm2020/lib/offline/layerDB/index.mjs +1 -1
  286. package/esm2020/lib/offline/layerDB/layerDB.interface.mjs +1 -1
  287. package/esm2020/lib/offline/layerDB/layerDB.service.mjs +1 -1
  288. package/esm2020/lib/offline/shared/geo-network.service.mjs +1 -1
  289. package/esm2020/lib/overlay/overlay.module.mjs +1 -1
  290. package/esm2020/lib/overlay/shared/index.mjs +1 -1
  291. package/esm2020/lib/overlay/shared/overlay.directive.mjs +1 -1
  292. package/esm2020/lib/overlay/shared/overlay.enum.mjs +1 -1
  293. package/esm2020/lib/overlay/shared/overlay.mjs +1 -1
  294. package/esm2020/lib/overlay/shared/overlay.service.mjs +1 -1
  295. package/esm2020/lib/overlay/shared/overlay.utils.mjs +1 -1
  296. package/esm2020/lib/print/print/print.component.mjs +2 -2
  297. package/esm2020/lib/print/print-form/print-form.component.mjs +2 -2
  298. package/esm2020/lib/print/print.module.mjs +1 -1
  299. package/esm2020/lib/print/shared/geopdf.mjs +1 -1
  300. package/esm2020/lib/print/shared/print.interface.mjs +1 -1
  301. package/esm2020/lib/print/shared/print.service.mjs +1 -1
  302. package/esm2020/lib/print/shared/print.type.mjs +1 -1
  303. package/esm2020/lib/query/query.module.mjs +1 -1
  304. package/esm2020/lib/query/shared/query-search-source.mjs +1 -1
  305. package/esm2020/lib/query/shared/query-search-source.providers.mjs +1 -1
  306. package/esm2020/lib/query/shared/query.directive.mjs +1 -1
  307. package/esm2020/lib/query/shared/query.interfaces.mjs +1 -1
  308. package/esm2020/lib/query/shared/query.service.mjs +1 -1
  309. package/esm2020/lib/query/shared/query.utils.mjs +1 -1
  310. package/esm2020/lib/search/index.mjs +1 -1
  311. package/esm2020/lib/search/search-bar/search-bar.component.mjs +2 -2
  312. package/esm2020/lib/search/search-bar/search-bar.module.mjs +1 -1
  313. package/esm2020/lib/search/search-bar/search-url-param.directive.mjs +1 -1
  314. package/esm2020/lib/search/search-results/save-feature-dialog.component.mjs +2 -2
  315. package/esm2020/lib/search/search-results/search-results-add-button.component.mjs +2 -2
  316. package/esm2020/lib/search/search-results/search-results-item.component.mjs +2 -2
  317. package/esm2020/lib/search/search-results/search-results.component.mjs +2 -2
  318. package/esm2020/lib/search/search-results/search-results.module.mjs +1 -1
  319. package/esm2020/lib/search/search-selector/search-selector.component.mjs +2 -2
  320. package/esm2020/lib/search/search-selector/search-selector.module.mjs +1 -1
  321. package/esm2020/lib/search/search-settings/search-settings.component.mjs +2 -2
  322. package/esm2020/lib/search/search-settings/search-settings.module.mjs +1 -1
  323. package/esm2020/lib/search/search.module.mjs +1 -1
  324. package/esm2020/lib/search/shared/search-pointer-summary.directive.mjs +1 -1
  325. package/esm2020/lib/search/shared/search-source-service.providers.mjs +1 -1
  326. package/esm2020/lib/search/shared/search-source.service.mjs +1 -1
  327. package/esm2020/lib/search/shared/search.enums.mjs +1 -1
  328. package/esm2020/lib/search/shared/search.interfaces.mjs +1 -1
  329. package/esm2020/lib/search/shared/search.service.mjs +1 -1
  330. package/esm2020/lib/search/shared/search.utils.mjs +1 -1
  331. package/esm2020/lib/search/shared/sources/cadastre.mjs +1 -1
  332. package/esm2020/lib/search/shared/sources/cadastre.providers.mjs +1 -1
  333. package/esm2020/lib/search/shared/sources/coordinates.interfaces.mjs +1 -1
  334. package/esm2020/lib/search/shared/sources/coordinates.mjs +1 -1
  335. package/esm2020/lib/search/shared/sources/coordinates.providers.mjs +1 -1
  336. package/esm2020/lib/search/shared/sources/icherche.interfaces.mjs +1 -1
  337. package/esm2020/lib/search/shared/sources/icherche.mjs +1 -1
  338. package/esm2020/lib/search/shared/sources/icherche.providers.mjs +1 -1
  339. package/esm2020/lib/search/shared/sources/ilayer.interfaces.mjs +1 -1
  340. package/esm2020/lib/search/shared/sources/ilayer.mjs +1 -1
  341. package/esm2020/lib/search/shared/sources/ilayer.providers.mjs +1 -1
  342. package/esm2020/lib/search/shared/sources/index.mjs +1 -1
  343. package/esm2020/lib/search/shared/sources/nominatim.mjs +2 -2
  344. package/esm2020/lib/search/shared/sources/nominatim.providers.mjs +1 -1
  345. package/esm2020/lib/search/shared/sources/source.interfaces.mjs +1 -1
  346. package/esm2020/lib/search/shared/sources/source.mjs +1 -1
  347. package/esm2020/lib/search/shared/sources/storedqueries.interfaces.mjs +1 -1
  348. package/esm2020/lib/search/shared/sources/storedqueries.mjs +1 -1
  349. package/esm2020/lib/search/shared/sources/storedqueries.providers.mjs +1 -1
  350. package/esm2020/lib/search/shared/sources/workspace.interfaces.mjs +1 -1
  351. package/esm2020/lib/search/shared/sources/workspace.mjs +1 -1
  352. package/esm2020/lib/search/shared/sources/workspace.providers.mjs +1 -1
  353. package/esm2020/lib/style/index.mjs +1 -1
  354. package/esm2020/lib/style/shared/datasource/esri-style-generator.mjs +1 -1
  355. package/esm2020/lib/style/shared/datasource/index.mjs +1 -1
  356. package/esm2020/lib/style/shared/feature/feature-style.mjs +1 -1
  357. package/esm2020/lib/style/shared/feature/index.mjs +1 -1
  358. package/esm2020/lib/style/shared/font.enum.mjs +1 -1
  359. package/esm2020/lib/style/shared/index.mjs +1 -1
  360. package/esm2020/lib/style/shared/overlay/index.mjs +1 -1
  361. package/esm2020/lib/style/shared/overlay/overlay-marker-style.utils.mjs +1 -1
  362. package/esm2020/lib/style/shared/overlay/overlay-style.utils.mjs +1 -1
  363. package/esm2020/lib/style/shared/vector/commonVectorStyle.mjs +1 -1
  364. package/esm2020/lib/style/shared/vector/conversion.utils.mjs +1 -1
  365. package/esm2020/lib/style/shared/vector/index.mjs +1 -1
  366. package/esm2020/lib/style/shared/vector/vector-style.interface.mjs +1 -1
  367. package/esm2020/lib/style/style-list/index.mjs +1 -1
  368. package/esm2020/lib/style/style-list/style-list.interface.mjs +1 -1
  369. package/esm2020/lib/style/style-list/style-list.module.mjs +1 -1
  370. package/esm2020/lib/style/style-list/style-list.provider.mjs +1 -1
  371. package/esm2020/lib/style/style-list/style-list.service.mjs +1 -1
  372. package/esm2020/lib/style/style-modal/drawing/index.mjs +1 -1
  373. package/esm2020/lib/style/style-modal/drawing/style-modal-drawing.component.mjs +2 -2
  374. package/esm2020/lib/style/style-modal/index.mjs +1 -1
  375. package/esm2020/lib/style/style-modal/layer/index.mjs +1 -1
  376. package/esm2020/lib/style/style-modal/layer/style-modal-layer.component.mjs +2 -2
  377. package/esm2020/lib/style/style-modal/layer-button/index.mjs +1 -1
  378. package/esm2020/lib/style/style-modal/layer-button/style-modal-layer-button.component.mjs +2 -2
  379. package/esm2020/lib/style/style-modal/shared/index.mjs +1 -1
  380. package/esm2020/lib/style/style-modal/shared/style-modal.interface.mjs +1 -1
  381. package/esm2020/lib/style/style-service/draw-style.service.mjs +1 -1
  382. package/esm2020/lib/style/style-service/index.mjs +1 -1
  383. package/esm2020/lib/style/style-service/style.service.mjs +1 -1
  384. package/esm2020/lib/style/style.module.mjs +1 -1
  385. package/esm2020/lib/toast/toast.component.mjs +2 -2
  386. package/esm2020/lib/toast/toast.module.mjs +1 -1
  387. package/esm2020/lib/utils/googleLinks.mjs +1 -1
  388. package/esm2020/lib/utils/id-generator.mjs +1 -1
  389. package/esm2020/lib/utils/index.mjs +1 -1
  390. package/esm2020/lib/utils/osmLinks.mjs +1 -1
  391. package/esm2020/lib/wkt/shared/wkt.service.mjs +15 -15
  392. package/esm2020/lib/wkt/wkt.module.mjs +1 -1
  393. package/esm2020/lib/workspace/confirmation-popup/confirmation-popup.component.mjs +2 -2
  394. package/esm2020/lib/workspace/confirmation-popup/confirmation-popup.module.mjs +1 -1
  395. package/esm2020/lib/workspace/confirmation-popup/index.mjs +1 -1
  396. package/esm2020/lib/workspace/shared/edition-workspace.mjs +1 -1
  397. package/esm2020/lib/workspace/shared/edition-workspace.service.mjs +1 -1
  398. package/esm2020/lib/workspace/shared/feature-workspace.mjs +1 -1
  399. package/esm2020/lib/workspace/shared/feature-workspace.service.mjs +1 -1
  400. package/esm2020/lib/workspace/shared/wfs-workspace.mjs +1 -1
  401. package/esm2020/lib/workspace/shared/wfs-workspace.service.mjs +1 -1
  402. package/esm2020/lib/workspace/shared/wms-workspace.service.mjs +1 -1
  403. package/esm2020/lib/workspace/shared/workspace.utils.mjs +1 -1
  404. package/esm2020/lib/workspace/widgets/ogc-filter/ogc-filter.component.mjs +2 -2
  405. package/esm2020/lib/workspace/widgets/ogc-filter/ogc-filter.module.mjs +1 -1
  406. package/esm2020/lib/workspace/workspace-selector/workspace-selector.directive.mjs +1 -1
  407. package/esm2020/lib/workspace/workspace-selector/workspace-selector.module.mjs +1 -1
  408. package/esm2020/lib/workspace/workspace-updator/workspace-updator.directive.mjs +1 -1
  409. package/esm2020/lib/workspace/workspace-updator/workspace-updator.module.mjs +1 -1
  410. package/esm2020/lib/workspace/workspace.module.mjs +1 -1
  411. package/esm2020/public_api.mjs +1 -1
  412. package/fesm2015/igo2-geo.mjs +116 -116
  413. package/fesm2015/igo2-geo.mjs.map +1 -1
  414. package/fesm2020/igo2-geo.mjs +115 -116
  415. package/fesm2020/igo2-geo.mjs.map +1 -1
  416. package/lib/layer/shared/layers/layer.interface.d.ts +2 -0
  417. package/lib/map/baselayers-switcher/mini-basemap.component.d.ts +1 -1
  418. package/ngcc.config.js +3 -3
  419. package/package.json +4 -4
  420. package/style/geo.theming.scss +12 -12
@@ -1036,7 +1036,7 @@ SpatialFilterItemComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type:
1036
1036
  } }, styles: [".header[_ngcontent-%COMP%]{margin-top:5px;width:100%}.mat-slide-toggle[_ngcontent-%COMP%]{padding:5px;margin-bottom:15px;width:98%}.mat-slide-toggle[_ngcontent-%COMP%] .mat-slide-toggle-content{width:calc(100% - 20px)}.title[_ngcontent-%COMP%]{margin-left:5px;font-size:medium;font-size:initial}.mat-radio-group[_ngcontent-%COMP%]{display:flex;flex-direction:column;padding-top:10px}.mat-radio-button[_ngcontent-%COMP%]{display:inline-flex;position:relative;margin-left:16px;margin-top:10px}.mat-form-field[_ngcontent-%COMP%]{margin-top:5px}.mat-column-select[_ngcontent-%COMP%]{overflow:auto}.buttons[_ngcontent-%COMP%]{margin-top:15px}.search-button[_ngcontent-%COMP%]{left:15px;width:46%}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){.search-button[_ngcontent-%COMP%]{left:10px;width:45%;min-height:35px;white-space:normal;line-height:normal}}.export-button[_ngcontent-%COMP%]{left:15px;width:46%;margin-bottom:5px}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){.export-button[_ngcontent-%COMP%]{left:10px;margin-top:10px;width:45%;min-height:35px;white-space:normal;line-height:normal}}.remove-button[_ngcontent-%COMP%]{margin-top:12px;left:5px;width:46%}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){.remove-button[_ngcontent-%COMP%]{margin:0;width:45%;min-height:35px;white-space:normal;line-height:normal}}.clear-form-button[_ngcontent-%COMP%]{left:5px;width:46%}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){.clear-form-button[_ngcontent-%COMP%]{width:45%;min-height:35px;white-space:normal;line-height:normal}}.clear-search-button[_ngcontent-%COMP%]{left:5px;width:46%}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){.clear-search-button[_ngcontent-%COMP%]{width:45%;min-height:35px;white-space:normal;line-height:normal}}.thematics[_ngcontent-%COMP%]{max-height:35%;overflow:auto;margin-top:5px;width:98%}.results[_ngcontent-%COMP%]{overflow:auto;max-height:250px;width:98%}.mat-column-typeResults[_ngcontent-%COMP%]{max-width:100px;margin-right:5px}.buffer-unit[_ngcontent-%COMP%], .radius-unit[_ngcontent-%COMP%]{display:flex;width:100%;margin-left:2px;padding:5px}.radius[_ngcontent-%COMP%], .buffer[_ngcontent-%COMP%]{display:flex;flex-flow:column nowrap;width:110%}.unit-field[_ngcontent-%COMP%]{width:110px;margin-left:30px}.example-tree-invisible[_ngcontent-%COMP%]{display:none}.tree-ul[_ngcontent-%COMP%]{margin:0;padding:0 0 0 20px;list-style-type:none}.tree-check[_ngcontent-%COMP%], .tree-check-2[_ngcontent-%COMP%]{position:relative;margin-left:auto;margin-right:5px}.thematics-header[_ngcontent-%COMP%]{max-width:250px}.checks-header[_ngcontent-%COMP%]{padding:none;max-width:calc(100% - 316px);overflow:hidden}.mat-checkbox[_ngcontent-%COMP%]{padding:5px}.mat-tree-node[_ngcontent-%COMP%]{position:relative;min-height:42px;width:280px}.mat-header-cell[_ngcontent-%COMP%]{height:56px}.results[_ngcontent-%COMP%]{max-height:45%;width:98%}.results[_ngcontent-%COMP%] igo-entity-table[_ngcontent-%COMP%] div.table-container{overflow:visible;overflow:initial}"], changeDetection: 0 });
1037
1037
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SpatialFilterItemComponent, [{
1038
1038
  type: Component,
1039
- args: [{ selector: 'igo-spatial-filter-item', changeDetection: ChangeDetectionStrategy.OnPush, template: "<igo-geometry-form-field-input\r\n [formControl]=\"formControl\"\r\n [map]=\"map\"\r\n [geometryType]=\"geometryType\"\r\n [drawGuide]=\"drawGuide$ | async\"\r\n [measure]=\"measure\"\r\n [drawControlIsActive]=\"drawControlIsActive\"\r\n [freehandDrawIsActive]=\"freehandDrawIsActive\"\r\n [drawStyle]=\"drawStyle$ | async\"\r\n [overlayStyle]=\"overlayStyle$ | async\"\r\n [radius]=\"radius\"\r\n [predefinedRadius]=\"predefinedRadius\">\r\n</igo-geometry-form-field-input>\r\n\r\n<div class=\"header\">\r\n <mat-slide-toggle *ngIf=\"!isPredefined()\"\r\n [checked]=\"drawControlIsActive\"\r\n [labelPosition]=\"'before'\"\r\n (change)=\"onDrawControlChange()\">\r\n {{'igo.geo.spatialFilter.drawControl' | translate}}\r\n </mat-slide-toggle>\r\n <mat-slide-toggle *ngIf=\"!isPredefined()\"\r\n [checked]=\"freehandDrawIsActive\"\r\n [labelPosition]=\"'before'\"\r\n (change)=\"onfreehandControlChange()\">\r\n {{'igo.geo.spatialFilter.freehandControl' | translate}}\r\n </mat-slide-toggle>\r\n</div>\r\n\r\n<div class=\"buffer-unit\" *ngIf=\"isPolygon()\">\r\n <form class=\"buffer-form\">\r\n <mat-form-field class=\"buffer\">\r\n <input type=\"number\" matInput placeholder=\"{{'igo.geo.spatialFilter.buffer' | translate}}\" [formControl]=\"bufferFormControl\"\r\n [value]=\"0\" [readonly]=\"this.formControl.value === null\">\r\n </mat-form-field>\r\n </form>\r\n\r\n <mat-form-field class=\"unit-field\">\r\n <mat-select\r\n [value]=\"measureUnit\"\r\n (selectionChange)=\"onMeasureUnitChange($event.value)\">\r\n <mat-option *ngFor=\"let measureUnit of measureUnits\" [value]=\"measureUnit\">\r\n {{('igo.geo.measure.' + measureUnit) | translate}}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n</div>\r\n\r\n<div class=\"radius-unit\" *ngIf=\"isPoint()\">\r\n <form class=\"radius-form\">\r\n <mat-form-field class=\"radius\">\r\n <input type=\"number\" matInput placeholder=\"{{'igo.geo.spatialFilter.radius' | translate}}\" [formControl]=\"radiusFormControl\"\r\n [value]=\"1000\" (input)=\"getRadius()\" [readonly]=\"this.freehandDrawIsActive && this.formControl.value === null\">\r\n </mat-form-field>\r\n </form>\r\n\r\n <mat-form-field class=\"unit-field\">\r\n <mat-select\r\n [value]=\"measureUnit\"\r\n (selectionChange)=\"onMeasureUnitChange($event.value)\">\r\n <mat-option *ngFor=\"let measureUnit of measureUnits\" [value]=\"measureUnit\">\r\n {{('igo.geo.measure.' + measureUnit) | translate}}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n</div>\r\n\r\n<mat-label class=\"title mat-typography\">{{'igo.geo.spatialFilter.search' | translate}} : </mat-label>\r\n<mat-radio-group [value]=\"selectedItemType\">\r\n <mat-radio-button *ngFor=\"let item of itemType\"\r\n [value]=\"item\"\r\n (change)=\"onItemTypeChange($event)\">\r\n {{'igo.geo.spatialFilter.' + item | translate}}\r\n </mat-radio-button>\r\n</mat-radio-group>\r\n\r\n<div class=\"thematics\" *ngIf=\"(selectedItemType==='Thematics' && !tableTemplate) || (selectedItemType==='Thematics' && tableTemplate && !listIsVisible)\">\r\n <mat-table>\r\n <!-- Name Column -->\r\n <ng-container matColumnDef=\"name\">\r\n <mat-header-cell *matHeaderCellDef class=\"thematics-header\">{{'igo.geo.spatialFilter.Thematics' | translate}}</mat-header-cell>\r\n </ng-container>\r\n\r\n <!-- Select Column -->\r\n <ng-container matColumnDef=\"select\">\r\n <mat-header-cell *matHeaderCellDef class=\"checks-header\">\r\n <mat-checkbox (change)=\"$event ? masterToggle() : null\"\r\n [checked]=\"isAllSelected()\"\r\n [indeterminate]=\"selectedThematics.hasValue() && !isAllSelected()\">\r\n </mat-checkbox>\r\n </mat-header-cell>\r\n </ng-container>\r\n\r\n <mat-header-row *matHeaderRowDef=\"displayedColumns\"></mat-header-row>\r\n <mat-row *matRowDef=\"let row; columns: displayedColumns;\"></mat-row>\r\n\r\n </mat-table>\r\n\r\n <mat-tree [dataSource]=\"dataSource\" [treeControl]=\"treeControl\">\r\n <!-- This is the tree node template for leaf nodes -->\r\n <mat-tree-node *matTreeNodeDef=\"let node\" matTreeNodeToggle>\r\n <li class=\"mat-tree-node\">\r\n <!-- use a disabled button to provide padding for tree leaf -->\r\n <button mat-icon-button disabled></button>\r\n {{node.name}}\r\n <mat-checkbox class=\"tree-check\" (click)=\"$event.stopPropagation()\"\r\n (change)=\"$event ? onToggleChange(node) : null\"\r\n [checked]=\"selectedThematics.isSelected(node)\">\r\n </mat-checkbox>\r\n </li>\r\n </mat-tree-node>\r\n\r\n <!-- This is the tree node template for expandable nodes -->\r\n <mat-nested-tree-node *matTreeNodeDef=\"let node; when: hasChild\">\r\n <div class=\"mat-tree-node\">\r\n <button mat-icon-button\r\n (click)=\"onToggleClick(node)\">\r\n <mat-icon [svgIcon]=\"treeControl.isExpanded(node) ? 'chevron-down' : 'chevron-right'\"></mat-icon>\r\n </button>\r\n {{node.name}}\r\n <mat-checkbox class=\"tree-check-2\" (change)=\"$event ? childrensToggle(node) : null\"\r\n [checked]=\"isAllSelected(node)\"\r\n [indeterminate]=\"hasChildrenSelected(node) && !isAllSelected(node)\">\r\n </mat-checkbox>\r\n </div>\r\n <ul class=\"tree-ul\" [class.example-tree-invisible]=\"!treeControl.isExpanded(node)\">\r\n <ng-container matTreeNodeOutlet></ng-container>\r\n </ul>\r\n </mat-nested-tree-node>\r\n\r\n </mat-tree>\r\n</div>\r\n\r\n<div class=\"buttons\">\r\n\r\n <button *ngIf=\"isPredefined()\" mat-raised-button class=\"clear-search-button\" [disabled]=\"disabledClearSearch()\"\r\n (click)=\"clearSearch()\">\r\n {{'igo.geo.spatialFilter.clearSearch' | translate}}\r\n </button>\r\n\r\n <button *ngIf=\"isPolygon() || isPoint()\" mat-raised-button class=\"clear-form-button\" [disabled]=\"this.formControl.value === null\"\r\n (click)=\"clearDrawZone()\">\r\n {{'igo.geo.spatialFilter.clearForm' | translate}}\r\n </button>\r\n\r\n <button mat-raised-button class=\"search-button\" [disabled]=\"disableSearchButton()\" color=\"primary\"\r\n (click)=\"toggleSearchButton()\">\r\n {{'igo.geo.spatialFilter.goSearch' | translate}}\r\n </button>\r\n\r\n <button mat-raised-button class=\"remove-button\" [disabled]=\"allLayers.length === 0\" (click)=\"clearButton()\">\r\n {{'igo.geo.spatialFilter.removeLayer' | translate}}\r\n </button>\r\n\r\n <button mat-raised-button class=\"export-button\" [disabled]=\"!store.entities$.getValue().length\" (click)=\"export.emit()\">\r\n {{'igo.geo.spatialFilter.exportLayer' | translate}}\r\n </button>\r\n\r\n</div>\r\n\r\n<button\r\n class=\"chevron-down\"\r\n *ngIf=\"store.all().length && tableTemplate && !listIsVisible\"\r\n mat-icon-button\r\n matTooltipShowDelay=\"500\"\r\n [matTooltip]=\"'igo.geo.spatialFilter.showSearchResults' | translate\"\r\n (click)=\"toggleVisibleList()\">\r\n <mat-icon svgIcon=\"chevron-down\"></mat-icon>\r\n</button>\r\n\r\n<div class=\"results\" *ngIf=\"store.all().length && tableTemplate && listIsVisible\">\r\n <button\r\n *ngIf=\"listIsVisible\"\r\n mat-icon-button\r\n matTooltipShowDelay=\"500\"\r\n [matTooltip]=\"'igo.geo.spatialFilter.hideSearchResults' | translate\"\r\n (click)=\"toggleVisibleList()\">\r\n <mat-icon svgIcon=\"chevron-up\"></mat-icon>\r\n </button>\r\n <igo-entity-table\r\n class=\"results-list\"\r\n [template]=\"tableTemplate\"\r\n [store]=\"store\"\r\n (entitySelectChange)=\"entityChange.emit($event)\">\r\n </igo-entity-table>\r\n</div>\r\n", styles: [".header{margin-top:5px;width:100%}.mat-slide-toggle{padding:5px;margin-bottom:15px;width:98%}.mat-slide-toggle ::ng-deep .mat-slide-toggle-content{width:calc(100% - 20px)}.title{margin-left:5px;font-size:medium;font-size:initial}.mat-radio-group{display:flex;flex-direction:column;padding-top:10px}.mat-radio-button{display:inline-flex;position:relative;margin-left:16px;margin-top:10px}.mat-form-field{margin-top:5px}.mat-column-select{overflow:auto}.buttons{margin-top:15px}.search-button{left:15px;width:46%}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){.search-button{left:10px;width:45%;min-height:35px;white-space:normal;line-height:normal}}.export-button{left:15px;width:46%;margin-bottom:5px}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){.export-button{left:10px;margin-top:10px;width:45%;min-height:35px;white-space:normal;line-height:normal}}.remove-button{margin-top:12px;left:5px;width:46%}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){.remove-button{margin:0;width:45%;min-height:35px;white-space:normal;line-height:normal}}.clear-form-button{left:5px;width:46%}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){.clear-form-button{width:45%;min-height:35px;white-space:normal;line-height:normal}}.clear-search-button{left:5px;width:46%}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){.clear-search-button{width:45%;min-height:35px;white-space:normal;line-height:normal}}.thematics{max-height:35%;overflow:auto;margin-top:5px;width:98%}.results{overflow:auto;max-height:250px;width:98%}.mat-column-typeResults{max-width:100px;margin-right:5px}.buffer-unit,.radius-unit{display:flex;width:100%;margin-left:2px;padding:5px}.radius,.buffer{display:flex;flex-flow:column nowrap;width:110%}.unit-field{width:110px;margin-left:30px}.example-tree-invisible{display:none}.tree-ul{margin:0;padding:0 0 0 20px;list-style-type:none}.tree-check,.tree-check-2{position:relative;margin-left:auto;margin-right:5px}.thematics-header{max-width:250px}.checks-header{padding:none;max-width:calc(100% - 316px);overflow:hidden}.mat-checkbox{padding:5px}.mat-tree-node{position:relative;min-height:42px;width:280px}.mat-header-cell{height:56px}.results{max-height:45%;width:98%}.results igo-entity-table ::ng-deep div.table-container{overflow:visible;overflow:initial}\n"] }]
1039
+ args: [{ selector: 'igo-spatial-filter-item', changeDetection: ChangeDetectionStrategy.OnPush, template: "<igo-geometry-form-field-input\n [formControl]=\"formControl\"\n [map]=\"map\"\n [geometryType]=\"geometryType\"\n [drawGuide]=\"drawGuide$ | async\"\n [measure]=\"measure\"\n [drawControlIsActive]=\"drawControlIsActive\"\n [freehandDrawIsActive]=\"freehandDrawIsActive\"\n [drawStyle]=\"drawStyle$ | async\"\n [overlayStyle]=\"overlayStyle$ | async\"\n [radius]=\"radius\"\n [predefinedRadius]=\"predefinedRadius\">\n</igo-geometry-form-field-input>\n\n<div class=\"header\">\n <mat-slide-toggle *ngIf=\"!isPredefined()\"\n [checked]=\"drawControlIsActive\"\n [labelPosition]=\"'before'\"\n (change)=\"onDrawControlChange()\">\n {{'igo.geo.spatialFilter.drawControl' | translate}}\n </mat-slide-toggle>\n <mat-slide-toggle *ngIf=\"!isPredefined()\"\n [checked]=\"freehandDrawIsActive\"\n [labelPosition]=\"'before'\"\n (change)=\"onfreehandControlChange()\">\n {{'igo.geo.spatialFilter.freehandControl' | translate}}\n </mat-slide-toggle>\n</div>\n\n<div class=\"buffer-unit\" *ngIf=\"isPolygon()\">\n <form class=\"buffer-form\">\n <mat-form-field class=\"buffer\">\n <input type=\"number\" matInput placeholder=\"{{'igo.geo.spatialFilter.buffer' | translate}}\" [formControl]=\"bufferFormControl\"\n [value]=\"0\" [readonly]=\"this.formControl.value === null\">\n </mat-form-field>\n </form>\n\n <mat-form-field class=\"unit-field\">\n <mat-select\n [value]=\"measureUnit\"\n (selectionChange)=\"onMeasureUnitChange($event.value)\">\n <mat-option *ngFor=\"let measureUnit of measureUnits\" [value]=\"measureUnit\">\n {{('igo.geo.measure.' + measureUnit) | translate}}\n </mat-option>\n </mat-select>\n </mat-form-field>\n</div>\n\n<div class=\"radius-unit\" *ngIf=\"isPoint()\">\n <form class=\"radius-form\">\n <mat-form-field class=\"radius\">\n <input type=\"number\" matInput placeholder=\"{{'igo.geo.spatialFilter.radius' | translate}}\" [formControl]=\"radiusFormControl\"\n [value]=\"1000\" (input)=\"getRadius()\" [readonly]=\"this.freehandDrawIsActive && this.formControl.value === null\">\n </mat-form-field>\n </form>\n\n <mat-form-field class=\"unit-field\">\n <mat-select\n [value]=\"measureUnit\"\n (selectionChange)=\"onMeasureUnitChange($event.value)\">\n <mat-option *ngFor=\"let measureUnit of measureUnits\" [value]=\"measureUnit\">\n {{('igo.geo.measure.' + measureUnit) | translate}}\n </mat-option>\n </mat-select>\n </mat-form-field>\n</div>\n\n<mat-label class=\"title mat-typography\">{{'igo.geo.spatialFilter.search' | translate}} : </mat-label>\n<mat-radio-group [value]=\"selectedItemType\">\n <mat-radio-button *ngFor=\"let item of itemType\"\n [value]=\"item\"\n (change)=\"onItemTypeChange($event)\">\n {{'igo.geo.spatialFilter.' + item | translate}}\n </mat-radio-button>\n</mat-radio-group>\n\n<div class=\"thematics\" *ngIf=\"(selectedItemType==='Thematics' && !tableTemplate) || (selectedItemType==='Thematics' && tableTemplate && !listIsVisible)\">\n <mat-table>\n <!-- Name Column -->\n <ng-container matColumnDef=\"name\">\n <mat-header-cell *matHeaderCellDef class=\"thematics-header\">{{'igo.geo.spatialFilter.Thematics' | translate}}</mat-header-cell>\n </ng-container>\n\n <!-- Select Column -->\n <ng-container matColumnDef=\"select\">\n <mat-header-cell *matHeaderCellDef class=\"checks-header\">\n <mat-checkbox (change)=\"$event ? masterToggle() : null\"\n [checked]=\"isAllSelected()\"\n [indeterminate]=\"selectedThematics.hasValue() && !isAllSelected()\">\n </mat-checkbox>\n </mat-header-cell>\n </ng-container>\n\n <mat-header-row *matHeaderRowDef=\"displayedColumns\"></mat-header-row>\n <mat-row *matRowDef=\"let row; columns: displayedColumns;\"></mat-row>\n\n </mat-table>\n\n <mat-tree [dataSource]=\"dataSource\" [treeControl]=\"treeControl\">\n <!-- This is the tree node template for leaf nodes -->\n <mat-tree-node *matTreeNodeDef=\"let node\" matTreeNodeToggle>\n <li class=\"mat-tree-node\">\n <!-- use a disabled button to provide padding for tree leaf -->\n <button mat-icon-button disabled></button>\n {{node.name}}\n <mat-checkbox class=\"tree-check\" (click)=\"$event.stopPropagation()\"\n (change)=\"$event ? onToggleChange(node) : null\"\n [checked]=\"selectedThematics.isSelected(node)\">\n </mat-checkbox>\n </li>\n </mat-tree-node>\n\n <!-- This is the tree node template for expandable nodes -->\n <mat-nested-tree-node *matTreeNodeDef=\"let node; when: hasChild\">\n <div class=\"mat-tree-node\">\n <button mat-icon-button\n (click)=\"onToggleClick(node)\">\n <mat-icon [svgIcon]=\"treeControl.isExpanded(node) ? 'chevron-down' : 'chevron-right'\"></mat-icon>\n </button>\n {{node.name}}\n <mat-checkbox class=\"tree-check-2\" (change)=\"$event ? childrensToggle(node) : null\"\n [checked]=\"isAllSelected(node)\"\n [indeterminate]=\"hasChildrenSelected(node) && !isAllSelected(node)\">\n </mat-checkbox>\n </div>\n <ul class=\"tree-ul\" [class.example-tree-invisible]=\"!treeControl.isExpanded(node)\">\n <ng-container matTreeNodeOutlet></ng-container>\n </ul>\n </mat-nested-tree-node>\n\n </mat-tree>\n</div>\n\n<div class=\"buttons\">\n\n <button *ngIf=\"isPredefined()\" mat-raised-button class=\"clear-search-button\" [disabled]=\"disabledClearSearch()\"\n (click)=\"clearSearch()\">\n {{'igo.geo.spatialFilter.clearSearch' | translate}}\n </button>\n\n <button *ngIf=\"isPolygon() || isPoint()\" mat-raised-button class=\"clear-form-button\" [disabled]=\"this.formControl.value === null\"\n (click)=\"clearDrawZone()\">\n {{'igo.geo.spatialFilter.clearForm' | translate}}\n </button>\n\n <button mat-raised-button class=\"search-button\" [disabled]=\"disableSearchButton()\" color=\"primary\"\n (click)=\"toggleSearchButton()\">\n {{'igo.geo.spatialFilter.goSearch' | translate}}\n </button>\n\n <button mat-raised-button class=\"remove-button\" [disabled]=\"allLayers.length === 0\" (click)=\"clearButton()\">\n {{'igo.geo.spatialFilter.removeLayer' | translate}}\n </button>\n\n <button mat-raised-button class=\"export-button\" [disabled]=\"!store.entities$.getValue().length\" (click)=\"export.emit()\">\n {{'igo.geo.spatialFilter.exportLayer' | translate}}\n </button>\n\n</div>\n\n<button\n class=\"chevron-down\"\n *ngIf=\"store.all().length && tableTemplate && !listIsVisible\"\n mat-icon-button\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"'igo.geo.spatialFilter.showSearchResults' | translate\"\n (click)=\"toggleVisibleList()\">\n <mat-icon svgIcon=\"chevron-down\"></mat-icon>\n</button>\n\n<div class=\"results\" *ngIf=\"store.all().length && tableTemplate && listIsVisible\">\n <button\n *ngIf=\"listIsVisible\"\n mat-icon-button\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"'igo.geo.spatialFilter.hideSearchResults' | translate\"\n (click)=\"toggleVisibleList()\">\n <mat-icon svgIcon=\"chevron-up\"></mat-icon>\n </button>\n <igo-entity-table\n class=\"results-list\"\n [template]=\"tableTemplate\"\n [store]=\"store\"\n (entitySelectChange)=\"entityChange.emit($event)\">\n </igo-entity-table>\n</div>\n", styles: [".header{margin-top:5px;width:100%}.mat-slide-toggle{padding:5px;margin-bottom:15px;width:98%}.mat-slide-toggle ::ng-deep .mat-slide-toggle-content{width:calc(100% - 20px)}.title{margin-left:5px;font-size:medium;font-size:initial}.mat-radio-group{display:flex;flex-direction:column;padding-top:10px}.mat-radio-button{display:inline-flex;position:relative;margin-left:16px;margin-top:10px}.mat-form-field{margin-top:5px}.mat-column-select{overflow:auto}.buttons{margin-top:15px}.search-button{left:15px;width:46%}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){.search-button{left:10px;width:45%;min-height:35px;white-space:normal;line-height:normal}}.export-button{left:15px;width:46%;margin-bottom:5px}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){.export-button{left:10px;margin-top:10px;width:45%;min-height:35px;white-space:normal;line-height:normal}}.remove-button{margin-top:12px;left:5px;width:46%}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){.remove-button{margin:0;width:45%;min-height:35px;white-space:normal;line-height:normal}}.clear-form-button{left:5px;width:46%}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){.clear-form-button{width:45%;min-height:35px;white-space:normal;line-height:normal}}.clear-search-button{left:5px;width:46%}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){.clear-search-button{width:45%;min-height:35px;white-space:normal;line-height:normal}}.thematics{max-height:35%;overflow:auto;margin-top:5px;width:98%}.results{overflow:auto;max-height:250px;width:98%}.mat-column-typeResults{max-width:100px;margin-right:5px}.buffer-unit,.radius-unit{display:flex;width:100%;margin-left:2px;padding:5px}.radius,.buffer{display:flex;flex-flow:column nowrap;width:110%}.unit-field{width:110px;margin-left:30px}.example-tree-invisible{display:none}.tree-ul{margin:0;padding:0 0 0 20px;list-style-type:none}.tree-check,.tree-check-2{position:relative;margin-left:auto;margin-right:5px}.thematics-header{max-width:250px}.checks-header{padding:none;max-width:calc(100% - 316px);overflow:hidden}.mat-checkbox{padding:5px}.mat-tree-node{position:relative;min-height:42px;width:280px}.mat-header-cell{height:56px}.results{max-height:45%;width:98%}.results igo-entity-table ::ng-deep div.table-container{overflow:visible;overflow:initial}\n"] }]
1040
1040
  }], function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.SpatialFilterService }, { type: i2.MessageService }, { type: i2.LanguageService }]; }, { map: [{
1041
1041
  type: Input
1042
1042
  }], type: [{
@@ -1086,4 +1086,4 @@ SpatialFilterItemComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type:
1086
1086
  }], entityChange: [{
1087
1087
  type: Output
1088
1088
  }] }); })();
1089
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BhdGlhbC1maWx0ZXItaXRlbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9maWx0ZXIvc3BhdGlhbC1maWx0ZXIvc3BhdGlhbC1maWx0ZXItaXRlbS9zcGF0aWFsLWZpbHRlci1pdGVtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dlby9zcmMvbGliL2ZpbHRlci9zcGF0aWFsLWZpbHRlci9zcGF0aWFsLWZpbHRlci1pdGVtL3NwYXRpYWwtZmlsdGVyLWl0ZW0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBQ0wsdUJBQXVCLEVBRXZCLE1BQU0sRUFDTixZQUFZLEVBR2IsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUEwQixpQkFBaUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQzdGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUUxRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUUzRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsZUFBZSxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUlyRCxPQUFPLEtBQUssT0FBTyxNQUFNLFVBQVUsQ0FBQztBQUNwQyxPQUFPLEtBQUssTUFBTSxNQUFNLFNBQVMsQ0FBQztBQUVsQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUVqRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNyRCxPQUFPLEVBQWUsa0NBQWtDLEVBQUUseUJBQXlCLEVBQXVCLE1BQU0sY0FBYyxDQUFDO0FBQy9ILE9BQU8sRUFBUyxXQUFXLEVBQUUsTUFBTSx1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O2tCQURSLEtBQUs7WUFrQkcsTUFBTTtrQkFBZCxLQUFLO1lBRUcsU0FBUztrQkFBakIsS0FBSztZQUdGLGNBQWM7a0JBRGpCLEtBQUs7WUFTSSxZQUFZO2tCQUFyQixNQUFNO1lBRUcsY0FBYztrQkFBdkIsTUFBTTtZQUVHLGNBQWM7a0JBQXZCLE1BQU07WUFFRyxhQUFhO2tCQUF0QixNQUFNO1lBRUcsV0FBVztrQkFBcEIsTUFBTTtZQUNHLG9CQUFvQjtrQkFBN0IsTUFBTTtZQUNHLGlCQUFpQjtrQkFBMUIsTUFBTTtZQUVHLFdBQVc7a0JBQXBCLE1BQU07WUFDRyxlQUFlO2tCQUF4QixNQUFNO1lBQ0csZ0JBQWdCO2tCQUF6QixNQUFNO1lBRUcsZ0JBQWdCO2tCQUF6QixNQUFNO1lBRUcsZ0JBQWdCO2tCQUF6QixNQUFNO1lBRUcsTUFBTTtrQkFBZixNQUFNO1lBRUcsYUFBYTtrQkFBdEIsTUFBTTtZQUNHLFlBQVk7a0JBQXJCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgT2xGZWF0dXJlIGZyb20gJ29sL0ZlYXR1cmUnO1xyXG5pbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBJbnB1dCxcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBPdXRwdXQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIE9uRGVzdHJveSxcclxuICBPbkluaXRcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgU3BhdGlhbEZpbHRlclF1ZXJ5VHlwZSwgU3BhdGlhbEZpbHRlclR5cGUgfSBmcm9tICcuLi8uLi9zaGFyZWQvc3BhdGlhbC1maWx0ZXIuZW51bSc7XHJcbmltcG9ydCB7IFNlbGVjdGlvbk1vZGVsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvbGxlY3Rpb25zJztcclxuaW1wb3J0IHsgSWdvTWFwIH0gZnJvbSAnLi4vLi4vLi4vbWFwJztcclxuaW1wb3J0IHsgU3BhdGlhbEZpbHRlckl0ZW1UeXBlIH0gZnJvbSAnLi8uLi8uLi9zaGFyZWQvc3BhdGlhbC1maWx0ZXIuZW51bSc7XHJcbmltcG9ydCB7IEZlYXR1cmUgfSBmcm9tICcuLy4uLy4uLy4uL2ZlYXR1cmUvc2hhcmVkL2ZlYXR1cmUuaW50ZXJmYWNlcyc7XHJcbmltcG9ydCB7IFVudHlwZWRGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHR5cGUgeyBUeXBlIH0gZnJvbSAnb2wvZ2VvbS9HZW9tZXRyeSc7XHJcbmltcG9ydCB0eXBlIHsgZGVmYXVsdCBhcyBPbEdlb21ldHJ5IH0gZnJvbSAnb2wvZ2VvbS9HZW9tZXRyeSc7XHJcbmltcG9ydCB7IEdlb0pTT05HZW9tZXRyeSB9IGZyb20gJy4uLy4uLy4uL2dlb21ldHJ5L3NoYXJlZC9nZW9tZXRyeS5pbnRlcmZhY2VzJztcclxuaW1wb3J0ICogYXMgb2xTdHlsZSBmcm9tICdvbC9zdHlsZSc7XHJcbmltcG9ydCAqIGFzIG9scHJvaiBmcm9tICdvbC9wcm9qJztcclxuaW1wb3J0IE9sUG9pbnQgZnJvbSAnb2wvZ2VvbS9Qb2ludCc7XHJcbmltcG9ydCB7IE1hdFRyZWVOZXN0ZWREYXRhU291cmNlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdHJlZSc7XHJcbmltcG9ydCB7IFNwYXRpYWxGaWx0ZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2hhcmVkL3NwYXRpYWwtZmlsdGVyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBNZWFzdXJlTGVuZ3RoVW5pdCB9IGZyb20gJy4uLy4uLy4uL21lYXN1cmUnO1xyXG5pbXBvcnQgeyBFbnRpdHlTdG9yZSwgRW50aXR5U3RvcmVGaWx0ZXJTZWxlY3Rpb25TdHJhdGVneSwgRW50aXR5VGFibGVDb2x1bW5SZW5kZXJlciwgRW50aXR5VGFibGVUZW1wbGF0ZSB9IGZyb20gJ0BpZ28yL2NvbW1vbic7XHJcbmltcG9ydCB7IExheWVyLCBWZWN0b3JMYXllciB9IGZyb20gJy4uLy4uLy4uL2xheWVyL3NoYXJlZCc7XHJcbmltcG9ydCB7IE5lc3RlZFRyZWVDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3RyZWUnO1xyXG5pbXBvcnQgeyBTcGF0aWFsRmlsdGVyVGhlbWF0aWMgfSBmcm9tICcuLy4uLy4uL3NoYXJlZC9zcGF0aWFsLWZpbHRlci5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBNZXNzYWdlU2VydmljZSwgTGFuZ3VhZ2VTZXJ2aWNlIH0gZnJvbSAnQGlnbzIvY29yZSc7XHJcbmltcG9ydCB7IGRlYm91bmNlVGltZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuXHJcbmltcG9ydCB7IEZlYXR1cmVNb3Rpb24sIEZlYXR1cmVTdG9yZVNlbGVjdGlvblN0cmF0ZWd5IH0gZnJvbSAnLi4vLi4vLi4vZmVhdHVyZSc7XHJcbmltcG9ydCB7IEZlYXR1cmVEYXRhU291cmNlIH0gZnJvbSAnLi4vLi4vLi4vZGF0YXNvdXJjZS9zaGFyZWQnO1xyXG5cclxuLyoqXHJcbiAqIFNwYXRpYWwtRmlsdGVyLUl0ZW0gKHNlYXJjaCBwYXJhbWV0ZXJzKVxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdpZ28tc3BhdGlhbC1maWx0ZXItaXRlbScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3NwYXRpYWwtZmlsdGVyLWl0ZW0uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3NwYXRpYWwtZmlsdGVyLWl0ZW0uY29tcG9uZW50LnNjc3MnXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU3BhdGlhbEZpbHRlckl0ZW1Db21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3ksIE9uSW5pdCB7XHJcblxyXG4gIEBJbnB1dCgpIG1hcDogSWdvTWFwO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGdldCB0eXBlKCk6IFNwYXRpYWxGaWx0ZXJUeXBlIHtcclxuICAgIHJldHVybiB0aGlzLl90eXBlO1xyXG4gIH1cclxuICBzZXQgdHlwZSh0eXBlOiBTcGF0aWFsRmlsdGVyVHlwZSkge1xyXG4gICAgdGhpcy5fdHlwZSA9IHR5cGU7XHJcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuZ2VvbWV0cnlUeXBlcy5maW5kSW5kZXgoZ2VvbSA9PiBnZW9tID09PSB0aGlzLnR5cGUpO1xyXG4gICAgdGhpcy5nZW9tZXRyeVR5cGUgPSB0aGlzLmdlb21ldHJ5VHlwZXNbaW5kZXhdO1xyXG4gICAgdGhpcy5mb3JtQ29udHJvbC5yZXNldCgpO1xyXG4gICAgdGhpcy5yYWRpdXMgPSB1bmRlZmluZWQ7XHJcbiAgICB0aGlzLmRyYXdHdWlkZSQubmV4dChudWxsKTtcclxuICAgIHRoaXMuZHJhd1N0eWxlJC5uZXh0KHVuZGVmaW5lZCk7XHJcblxyXG4gICAgLy8gTmVjZXNzYXJ5IHRvIGtlZXAgcmVmZXJlbmNlIHRvIHRoZSBnZW9tZXRyeSBmb3JtIGZpZWxkIGlucHV0XHJcbiAgICBpZiAodGhpcy50eXBlID09PSBTcGF0aWFsRmlsdGVyVHlwZS5QcmVkZWZpbmVkKSB7XHJcbiAgICAgIGNvbnN0IGdlb2pzb246IEdlb0pTT05HZW9tZXRyeSA9IHtcclxuICAgICAgICB0eXBlOiAnUG9pbnQnLFxyXG4gICAgICAgIGNvb3JkaW5hdGVzOiAnJ1xyXG4gICAgICB9O1xyXG4gICAgICB0aGlzLmZvcm1Db250cm9sLnNldFZhbHVlKGdlb2pzb24pO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIE5lY2Vzc2FyeSB0byBhcHBseSB0aGUgcmlnaHQgc3R5bGUgd2hlbiBnZW9tZXRyeSB0eXBlIGlzIFBvaW50XHJcbiAgICBpZiAodGhpcy50eXBlID09PSBTcGF0aWFsRmlsdGVyVHlwZS5Qb2ludCkge1xyXG4gICAgICB0aGlzLnJhZGl1cyA9IDEwMDA7IC8vIEJhc2UgcmFkaXVzXHJcbiAgICAgIHRoaXMucmFkaXVzRm9ybUNvbnRyb2wuc2V0VmFsdWUodGhpcy5yYWRpdXMpO1xyXG4gICAgICB0aGlzLlBvaW50U3R5bGUgPSAoZmVhdHVyZTogT2xGZWF0dXJlPE9sR2VvbWV0cnk+LCByZXNvbHV0aW9uOiBudW1iZXIpID0+IHtcclxuICAgICAgICBjb25zdCBnZW9tID0gZmVhdHVyZS5nZXRHZW9tZXRyeSgpIGFzIE9sUG9pbnQ7XHJcbiAgICAgICAgY29uc3QgY29vcmRpbmF0ZXMgPSBvbHByb2oudHJhbnNmb3JtKGdlb20uZ2V0Q29vcmRpbmF0ZXMoKSwgdGhpcy5tYXAucHJvamVjdGlvbiwgJ0VQU0c6NDMyNicpO1xyXG4gICAgICAgIHJldHVybiBuZXcgb2xTdHlsZS5TdHlsZSAoe1xyXG4gICAgICAgICAgaW1hZ2U6IG5ldyBvbFN0eWxlLkNpcmNsZSAoe1xyXG4gICAgICAgICAgICByYWRpdXM6IHRoaXMucmFkaXVzIC8gKE1hdGguY29zKChNYXRoLlBJIC8gMTgwKSAqIGNvb3JkaW5hdGVzWzFdKSkgLyByZXNvbHV0aW9uLCAvLyBMYXRpdHVkZSBjb3JyZWN0aW9uXHJcbiAgICAgICAgICAgIHN0cm9rZTogbmV3IG9sU3R5bGUuU3Ryb2tlKHtcclxuICAgICAgICAgICAgICB3aWR0aDogMixcclxuICAgICAgICAgICAgICBjb2xvcjogJ3JnYmEoMCwgMTUzLCAyNTUpJ1xyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgZmlsbDogbmV3IG9sU3R5bGUuRmlsbCh7XHJcbiAgICAgICAgICAgICAgY29sb3I6ICdyZ2JhKDAsIDE1MywgMjU1LCAwLjIpJ1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICB9KTtcclxuICAgICAgfTtcclxuICAgICAgdGhpcy5vdmVybGF5U3R5bGUgPSB0aGlzLlBvaW50U3R5bGU7XHJcbiAgICAgIHRoaXMuZHJhd1N0eWxlJC5uZXh0KHRoaXMub3ZlcmxheVN0eWxlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIC8vIElmIGdlb21ldHJ5IHR5cGVzIGlzIFBvbHlnb25cclxuICAgICAgdGhpcy5yYWRpdXMgPSB1bmRlZmluZWQ7XHJcbiAgICAgIHRoaXMuUG9seVN0eWxlID0gKCkgPT4ge1xyXG4gICAgICAgIHJldHVybiBuZXcgb2xTdHlsZS5TdHlsZSAoe1xyXG4gICAgICAgICAgc3Ryb2tlOiBuZXcgb2xTdHlsZS5TdHJva2Uoe1xyXG4gICAgICAgICAgICB3aWR0aDogMixcclxuICAgICAgICAgICAgY29sb3I6ICdyZ2JhKDAsIDE1MywgMjU1KSdcclxuICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgZmlsbDogbmV3IG9sU3R5bGUuRmlsbCh7XHJcbiAgICAgICAgICAgIGNvbG9yOiAncmdiYSgwLCAxNTMsIDI1NSwgMC4yKSdcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH07XHJcbiAgICAgIGNvbnN0IGNvbG9yID0gWzAsIDE1MywgMjU1XTtcclxuICAgICAgY29uc3QgZHJhd1N0eWxlID0gKCkgPT4ge1xyXG4gICAgICAgIHJldHVybiBuZXcgb2xTdHlsZS5TdHlsZSh7XHJcbiAgICAgICAgICBpbWFnZTogbmV3IG9sU3R5bGUuQ2lyY2xlICh7XHJcbiAgICAgICAgICAgIHJhZGl1czogOCxcclxuICAgICAgICAgICAgc3Ryb2tlOiBuZXcgb2xTdHlsZS5TdHJva2Uoe1xyXG4gICAgICAgICAgICAgIHdpZHRoOiAyLFxyXG4gICAgICAgICAgICAgIGNvbG9yOiAncmdiYSgwLCAxNTMsIDI1NSknXHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICBmaWxsOiBuZXcgb2xTdHlsZS5GaWxsKHtcclxuICAgICAgICAgICAgICBjb2xvcjogJ3JnYmEoMCwgMTUzLCAyNTUsIDAuMiknXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICB9KSxcclxuICAgICAgICAgIHN0cm9rZTogbmV3IG9sU3R5bGUuU3Ryb2tlKHtcclxuICAgICAgICAgICAgY29sb3I6IGNvbG9yLmNvbmNhdChbMV0pLFxyXG4gICAgICAgICAgICB3aWR0aDogMlxyXG4gICAgICAgICAgfSksXHJcbiAgICAgICAgICBmaWxsOiAgbmV3IG9sU3R5bGUuRmlsbCh7XHJcbiAgICAgICAgICAgIGNvbG9yOiBjb2xvci5jb25jYXQoWzAuMl0pXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9O1xyXG4gICAgICB0aGlzLm92ZXJsYXlTdHlsZSA9IHRoaXMuUG9seVN0eWxlO1xyXG4gICAgICB0aGlzLmRyYXdTdHlsZSQubmV4dChkcmF3U3R5bGUpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5vdmVybGF5U3R5bGUkLm5leHQodGhpcy5vdmVybGF5U3R5bGUpO1xyXG4gIH1cclxuICBwcml2YXRlIF90eXBlOiBTcGF0aWFsRmlsdGVyVHlwZTtcclxuXHJcbiAgQElucHV0KCkgcXVlcnlUeXBlOiBTcGF0aWFsRmlsdGVyUXVlcnlUeXBlO1xyXG5cclxuICBASW5wdXQoKSB6b25lOiBGZWF0dXJlO1xyXG5cclxuICBASW5wdXQoKSBsb2FkaW5nO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGdldCBzdG9yZSgpOiBFbnRpdHlTdG9yZTxGZWF0dXJlPiB7XHJcbiAgICByZXR1cm4gdGhpcy5fc3RvcmU7XHJcbiAgfVxyXG4gIHNldCBzdG9yZShzdG9yZTogRW50aXR5U3RvcmU8RmVhdHVyZT4pIHtcclxuICAgIHRoaXMuX3N0b3JlID0gc3RvcmU7XHJcbiAgICB0aGlzLl9zdG9yZS5lbnRpdGllcyQuc3Vic2NyaWJlKCgpID0+IHsgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7IH0pO1xyXG4gIH1cclxuICBwcml2YXRlIF9zdG9yZTogRW50aXR5U3RvcmU8RmVhdHVyZT47XHJcblxyXG4gIC8qKlxyXG4gICAqIEF2YWlsYWJsZSBtZWFzdXJlIHVuaXRzIGZvciB0aGUgbWVhc3VyZSB0eXBlIGdpdmVuXHJcbiAgICogQGludGVybmFsXHJcbiAgICovXHJcbiAgZ2V0IG1lYXN1cmVVbml0cygpOiBzdHJpbmdbXSB7XHJcbiAgICByZXR1cm4gW01lYXN1cmVMZW5ndGhVbml0Lk1ldGVycywgTWVhc3VyZUxlbmd0aFVuaXQuS2lsb21ldGVyc107XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKSBsYXllcnM6IExheWVyW10gPSBbXTtcclxuXHJcbiAgQElucHV0KCkgYWxsTGF5ZXJzOiBMYXllcltdID0gW107XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgZ2V0IHRoZW1hdGljTGVuZ3RoKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fdGhlbWF0aWNMZW5ndGg7XHJcbiAgfVxyXG4gIHNldCB0aGVtYXRpY0xlbmd0aCh2YWx1ZTogbnVtYmVyKSB7XHJcbiAgICB0aGlzLl90aGVtYXRpY0xlbmd0aCA9IHZhbHVlO1xyXG4gIH1cclxuICBwcml2YXRlIF90aGVtYXRpY0xlbmd0aDogbnVtYmVyO1xyXG5cclxuICBAT3V0cHV0KCkgdG9nZ2xlU2VhcmNoID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBAT3V0cHV0KCkgaXRlbVR5cGVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFNwYXRpYWxGaWx0ZXJJdGVtVHlwZT4oKTtcclxuXHJcbiAgQE91dHB1dCgpIHRoZW1hdGljQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxTcGF0aWFsRmlsdGVyVGhlbWF0aWNbXT4oKTtcclxuXHJcbiAgQE91dHB1dCgpIGRyYXdab25lRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPEZlYXR1cmU+KCk7XHJcblxyXG4gIEBPdXRwdXQoKSBidWZmZXJFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xyXG4gIEBPdXRwdXQoKSB6b25lV2l0aEJ1ZmZlckNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8RmVhdHVyZT4oKTtcclxuICBAT3V0cHV0KCkgbWVhc3VyZVVuaXRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPE1lYXN1cmVMZW5ndGhVbml0PigpO1xyXG5cclxuICBAT3V0cHV0KCkgcmFkaXVzRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcclxuICBAT3V0cHV0KCkgZnJlZWhhbmRDb250cm9sID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xyXG4gIEBPdXRwdXQoKSBwcmVkZWZpbmVkUmFkaXVzID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xyXG5cclxuICBAT3V0cHV0KCkgY2xlYXJCdXR0b25FdmVudCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgQE91dHB1dCgpIGNsZWFyU2VhcmNoRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIEBPdXRwdXQoKSBleHBvcnQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIEBPdXRwdXQoKSBvcGVuV29ya3NwYWNlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBlbnRpdHlDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgcHVibGljIGl0ZW1UeXBlOiBTcGF0aWFsRmlsdGVySXRlbVR5cGVbXSA9IFtTcGF0aWFsRmlsdGVySXRlbVR5cGUuQWRkcmVzcywgU3BhdGlhbEZpbHRlckl0ZW1UeXBlLlRoZW1hdGljc107XHJcbiAgcHVibGljIHNlbGVjdGVkSXRlbVR5cGU6IFNwYXRpYWxGaWx0ZXJJdGVtVHlwZSA9IFNwYXRpYWxGaWx0ZXJJdGVtVHlwZS5BZGRyZXNzO1xyXG4gIHB1YmxpYyBzZWxlY3RlZFNvdXJjZUFkZHJlc3M7XHJcblxyXG4gIHRyZWVDb250cm9sOiBOZXN0ZWRUcmVlQ29udHJvbDxTcGF0aWFsRmlsdGVyVGhlbWF0aWM+ID0gbmV3IE5lc3RlZFRyZWVDb250cm9sPFNwYXRpYWxGaWx0ZXJUaGVtYXRpYz4obm9kZSA9PiBub2RlLmNoaWxkcmVuKTtcclxuXHJcbiAgLy8gRm9yIHRoZW1hdGljcyBhbmQgcmVzdWx0cyB0YWJsZXNcclxuICBwdWJsaWMgZGlzcGxheWVkQ29sdW1uczogc3RyaW5nW10gPSBbJ25hbWUnLCAnc2VsZWN0J107XHJcbiAgcHVibGljIGNoaWxkcmVuczogU3BhdGlhbEZpbHRlclRoZW1hdGljW10gPSBbXTtcclxuICBwdWJsaWMgZ3JvdXBzOiBzdHJpbmdbXSA9IFtdO1xyXG4gIHB1YmxpYyB0aGVtYXRpY3M6IFNwYXRpYWxGaWx0ZXJUaGVtYXRpY1tdID0gW107XHJcbiAgcHVibGljIGRhdGFTb3VyY2UgPSBuZXcgTWF0VHJlZU5lc3RlZERhdGFTb3VyY2U8U3BhdGlhbEZpbHRlclRoZW1hdGljPigpO1xyXG4gIHB1YmxpYyBzZWxlY3RlZFRoZW1hdGljcyA9IG5ldyBTZWxlY3Rpb25Nb2RlbDxTcGF0aWFsRmlsdGVyVGhlbWF0aWM+KHRydWUsIFtdKTtcclxuXHJcbiAgLy8gRm9yIGdlb21ldHJ5IGZvcm0gZmllbGQgaW5wdXRcclxuICB2YWx1ZSQ6IEJlaGF2aW9yU3ViamVjdDxHZW9KU09OR2VvbWV0cnk+ID0gbmV3IEJlaGF2aW9yU3ViamVjdCh1bmRlZmluZWQpO1xyXG4gIGRyYXdHdWlkZSQ6IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+ID0gbmV3IEJlaGF2aW9yU3ViamVjdChudWxsKTtcclxuICBvdmVybGF5U3R5bGUkOiBCZWhhdmlvclN1YmplY3Q8b2xTdHlsZS5TdHlsZSB8ICgoZmVhdHVyZSwgcmVzb2x1dGlvbikgPT4gb2xTdHlsZS5TdHlsZSk+ID0gbmV3IEJlaGF2aW9yU3ViamVjdCh1bmRlZmluZWQpO1xyXG4gIGRyYXdTdHlsZSQ6IEJlaGF2aW9yU3ViamVjdDxvbFN0eWxlLlN0eWxlIHwgKChmZWF0dXJlLCByZXNvbHV0aW9uKSA9PiBvbFN0eWxlLlN0eWxlKT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KHVuZGVmaW5lZCk7XHJcblxyXG4gIHByaXZhdGUgdmFsdWUkJDogU3Vic2NyaXB0aW9uO1xyXG4gIHByaXZhdGUgcmFkaXVzQ2hhbmdlcyQkOiBTdWJzY3JpcHRpb247XHJcbiAgcHJpdmF0ZSBidWZmZXJDaGFuZ2VzJCQ6IFN1YnNjcmlwdGlvbjtcclxuXHJcbiAgcHVibGljIGZvcm1Db250cm9sID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbCgpO1xyXG4gIHB1YmxpYyBnZW9tZXRyeVR5cGU6IFR5cGUgfCBzdHJpbmc7XHJcbiAgcHVibGljIGdlb21ldHJ5VHlwZUZpZWxkID0gZmFsc2U7XHJcbiAgcHVibGljIGdlb21ldHJ5VHlwZXM6IHN0cmluZ1tdID0gWydQb2ludCcsICdQb2x5Z29uJ107XHJcbiAgcHVibGljIGRyYXdHdWlkZUZpZWxkID0gZmFsc2U7XHJcbiAgcHVibGljIGRyYXdHdWlkZTogbnVtYmVyID0gbnVsbDtcclxuICBwdWJsaWMgZHJhd0d1aWRlUGxhY2Vob2xkZXIgPSAnJztcclxuICBwdWJsaWMgbWVhc3VyZSA9IGZhbHNlO1xyXG4gIHB1YmxpYyBkcmF3Q29udHJvbElzQWN0aXZlID0gdHJ1ZTtcclxuICBwdWJsaWMgZnJlZWhhbmREcmF3SXNBY3RpdmUgPSBmYWxzZTtcclxuICBwdWJsaWMgZHJhd1N0eWxlOiBvbFN0eWxlLlN0eWxlIHwgKChmZWF0dXJlLCByZXNvbHV0aW9uKSA9PiBvbFN0eWxlLlN0eWxlKTtcclxuICBwdWJsaWMgZHJhd1pvbmU7XHJcbiAgcHVibGljIG92ZXJsYXlTdHlsZTogb2xTdHlsZS5TdHlsZSB8ICgoZmVhdHVyZSwgcmVzb2x1dGlvbikgPT4gb2xTdHlsZS5TdHlsZSk7XHJcbiAgcHVibGljIFBvaW50U3R5bGU6IG9sU3R5bGUuU3R5bGUgfCAoKGZlYXR1cmUsIHJlc29sdXRpb24pID0+IG9sU3R5bGUuU3R5bGUpO1xyXG4gIHB1YmxpYyBQb2x5U3R5bGU6IG9sU3R5bGUuU3R5bGUgfCAoKGZlYXR1cmUsIHJlc29sdXRpb24pID0+IG9sU3R5bGUuU3R5bGUpO1xyXG5cclxuICBwdWJsaWMgcmFkaXVzOiBudW1iZXI7XHJcbiAgcHVibGljIGJ1ZmZlcjogbnVtYmVyID0gMDtcclxuICBwdWJsaWMgcmFkaXVzRm9ybUNvbnRyb2wgPSBuZXcgVW50eXBlZEZvcm1Db250cm9sKCk7XHJcbiAgcHVibGljIGJ1ZmZlckZvcm1Db250cm9sID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbCgpO1xyXG5cclxuICBwdWJsaWMgbWVhc3VyZVVuaXQ6IE1lYXN1cmVMZW5ndGhVbml0ID0gTWVhc3VyZUxlbmd0aFVuaXQuTWV0ZXJzO1xyXG4gIHB1YmxpYyB6b25lV2l0aEJ1ZmZlcjtcclxuXHJcbiAgcHVibGljIGxpc3RJc1Zpc2libGUgPSB0cnVlO1xyXG4gIHB1YmxpYyB0YWJsZVRlbXBsYXRlOiBFbnRpdHlUYWJsZVRlbXBsYXRlO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgY2RSZWY6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHJpdmF0ZSBzcGF0aWFsRmlsdGVyU2VydmljZTogU3BhdGlhbEZpbHRlclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIG1lc3NhZ2VTZXJ2aWNlOiBNZXNzYWdlU2VydmljZSxcclxuICAgIHByaXZhdGUgbGFuZ3VhZ2VTZXJ2aWNlOiBMYW5ndWFnZVNlcnZpY2UpIHt9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5zcGF0aWFsRmlsdGVyU2VydmljZS5sb2FkVGhlbWF0aWNzTGlzdCgpXHJcbiAgICAuc3Vic2NyaWJlKChpdGVtczogU3BhdGlhbEZpbHRlclRoZW1hdGljW10pID0+IHtcclxuICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGl0ZW1zKSB7XHJcbiAgICAgICAgdGhpcy5jaGlsZHJlbnMucHVzaChpdGVtKTtcclxuICAgICAgICB0aGlzLmNoaWxkcmVucy5zb3J0KChhLCBiKSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gYS5uYW1lLmxvY2FsZUNvbXBhcmUoYi5uYW1lKTtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmdyb3Vwcy5wdXNoKHRoaXMubGFuZ3VhZ2VTZXJ2aWNlLnRyYW5zbGF0ZS5pbnN0YW50KCdpZ28uZ2VvLnRlcnJhcGkubGltaXRlcycpKTtcclxuICAgICAgY29uc3QgbGltaXRzOiBTcGF0aWFsRmlsdGVyVGhlbWF0aWMgPSB7XHJcbiAgICAgICAgbmFtZTogdGhpcy5ncm91cHNbMF0sXHJcbiAgICAgICAgY2hpbGRyZW46IFtdXHJcbiAgICAgIH07XHJcbiAgICAgIHRoaXMudGhlbWF0aWNzLnB1c2gobGltaXRzKTtcclxuICAgICAgdGhpcy5jaGlsZHJlbnMuZm9yRWFjaChjaGlsZCA9PiB7XHJcbiAgICAgICAgaWYgKGNoaWxkLmdyb3VwICYmICh0aGlzLmdyb3Vwcy5pbmRleE9mKGNoaWxkLmdyb3VwKSA9PT0gLTEpKSB7XHJcbiAgICAgICAgICB0aGlzLmdyb3Vwcy5wdXNoKGNoaWxkLmdyb3VwKTtcclxuICAgICAgICAgIGNvbnN0IHRoZW1hdGljOiBTcGF0aWFsRmlsdGVyVGhlbWF0aWMgPSB7XHJcbiAgICAgICAgICAgIG5hbWU6IGNoaWxkLmdyb3VwLFxyXG4gICAgICAgICAgICBjaGlsZHJlbjogW11cclxuICAgICAgICAgIH07XHJcbiAgICAgICAgICB0aGlzLnRoZW1hdGljcy5wdXNoKHRoZW1hdGljKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICghY2hpbGQuZ3JvdXApIHtcclxuICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgY2hpbGQubmFtZSA9PT0gdGhpcy5sYW5ndWFnZVNlcnZpY2UudHJhbnNsYXRlLmluc3RhbnQoJ2lnby5nZW8udGVycmFwaS5BZG1SZWdpb24nKSB8fFxyXG4gICAgICAgICAgICBjaGlsZC5uYW1lID09PSB0aGlzLmxhbmd1YWdlU2VydmljZS50cmFuc2xhdGUuaW5zdGFudCgnaWdvLmdlby50ZXJyYXBpLk11bicpIHx8XHJcbiAgICAgICAgICAgIGNoaWxkLm5hbWUgPT09IHRoaXMubGFuZ3VhZ2VTZXJ2aWNlLnRyYW5zbGF0ZS5pbnN0YW50KCdpZ28uZ2VvLnRlcnJhcGkuQXJyb25kJykgfHxcclxuICAgICAgICAgICAgY2hpbGQubmFtZSA9PT0gdGhpcy5sYW5ndWFnZVNlcnZpY2UudHJhbnNsYXRlLmluc3RhbnQoJ2lnby5nZW8udGVycmFwaS5DaXJjRmVkJykgfHxcclxuICAgICAgICAgICAgY2hpbGQubmFtZSA9PT0gdGhpcy5sYW5ndWFnZVNlcnZpY2UudHJhbnNsYXRlLmluc3RhbnQoJ2lnby5nZW8udGVycmFwaS5DaXJjUHJvdicpIHx8XHJcbiAgICAgICAgICAgIGNoaWxkLm5hbWUgPT09IHRoaXMubGFuZ3VhZ2VTZXJ2aWNlLnRyYW5zbGF0ZS5pbnN0YW50KCdpZ28uZ2VvLnRlcnJhcGkuRGlyUmVnJykgfHxcclxuICAgICAgICAgICAgY2hpbGQubmFtZSA9PT0gdGhpcy5sYW5ndWFnZVNlcnZpY2UudHJhbnNsYXRlLmluc3RhbnQoJ2lnby5nZW8udGVycmFwaS5NUkMnKSB8fFxyXG4gICAgICAgICAgICBjaGlsZC5uYW1lID09PSB0aGlzLmxhbmd1YWdlU2VydmljZS50cmFuc2xhdGUuaW5zdGFudCgnaWdvLmdlby50ZXJyYXBpLlJlZ1RvdXInKSkge1xyXG4gICAgICAgICAgICAgIGNoaWxkLmdyb3VwID0gbGltaXRzLm5hbWU7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKGNoaWxkLm5hbWUgPT09IHRoaXMubGFuZ3VhZ2VTZXJ2aWNlLnRyYW5zbGF0ZS5pbnN0YW50KCdpZ28uZ2VvLnRlcnJhcGkucm91dGVzJykpIHtcclxuICAgICAgICAgICAgY2hpbGQuZ3JvdXAgPSB0aGlzLmxhbmd1YWdlU2VydmljZS50cmFuc2xhdGUuaW5zdGFudCgnaWdvLmdlby5zcGF0aWFsRmlsdGVyLmdyb3VwLnRyYW5zcG9ydCcpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY29uc3QgdGhlbWF0aWM6IFNwYXRpYWxGaWx0ZXJUaGVtYXRpYyA9IHtcclxuICAgICAgICAgICAgICBuYW1lOiBjaGlsZC5uYW1lLFxyXG4gICAgICAgICAgICAgIGNoaWxkcmVuOiBbXSxcclxuICAgICAgICAgICAgICBzb3VyY2U6IGNoaWxkLnNvdXJjZVxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICB0aGlzLnRoZW1hdGljcy5wdXNoKHRoZW1hdGljKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy50aGVtYXRpY3Muc29ydCgoYSwgYikgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIGEubmFtZS5sb2NhbGVDb21wYXJlKGIubmFtZSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLnRoZW1hdGljcy5mb3JFYWNoKHRoZW1hdGljID0+IHtcclxuICAgICAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIHRoaXMuY2hpbGRyZW5zKSB7XHJcbiAgICAgICAgICBpZiAoY2hpbGQuZ3JvdXAgPT09IHRoZW1hdGljLm5hbWUpIHtcclxuICAgICAgICAgICAgdGhlbWF0aWMuY2hpbGRyZW4ucHVzaChjaGlsZCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuZGF0YVNvdXJjZS5kYXRhID0gdGhpcy50aGVtYXRpY3M7XHJcblxyXG4gICAgdGhpcy5kcmF3R3VpZGUkLm5leHQobnVsbCk7XHJcbiAgICB0aGlzLnZhbHVlJC5uZXh0KHRoaXMuZm9ybUNvbnRyb2wudmFsdWUgPyB0aGlzLmZvcm1Db250cm9sLnZhbHVlIDogdW5kZWZpbmVkKTtcclxuICAgIHRoaXMudmFsdWUkJCA9IHRoaXMuZm9ybUNvbnRyb2wudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgodmFsdWU6IEdlb0pTT05HZW9tZXRyeSkgPT4ge1xyXG4gICAgICBpZiAodmFsdWUpIHtcclxuICAgICAgICB0aGlzLnZhbHVlJC5uZXh0KHZhbHVlKTtcclxuICAgICAgICB0aGlzLmRyYXdab25lID0gdGhpcy5mb3JtQ29udHJvbC52YWx1ZSBhcyBGZWF0dXJlO1xyXG4gICAgICAgIGlmICh0aGlzLmJ1ZmZlciAhPT0gMCkge1xyXG4gICAgICAgICAgdGhpcy5kcmF3Wm9uZUV2ZW50LmVtaXQodGhpcy5kcmF3Wm9uZSk7XHJcbiAgICAgICAgICB0aGlzLmJ1ZmZlckZvcm1Db250cm9sLnNldFZhbHVlKHRoaXMuYnVmZmVyKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy52YWx1ZSQubmV4dCh1bmRlZmluZWQpO1xyXG4gICAgICAgIHRoaXMuZHJhd1pvbmUgPSB1bmRlZmluZWQ7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMudmFsdWUkLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIHRoaXMuZ2V0UmFkaXVzKCk7XHJcbiAgICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5yYWRpdXNDaGFuZ2VzJCQgPSB0aGlzLnJhZGl1c0Zvcm1Db250cm9sLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICB0aGlzLmdldFJhZGl1cygpO1xyXG4gICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYnVmZmVyQ2hhbmdlcyQkID0gdGhpcy5idWZmZXJGb3JtQ29udHJvbC52YWx1ZUNoYW5nZXNcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgZGVib3VuY2VUaW1lKDUwMClcclxuICAgICAgKVxyXG4gICAgICAuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLm1lYXN1cmVVbml0ID09PSBNZWFzdXJlTGVuZ3RoVW5pdC5NZXRlcnMgJiYgdmFsdWUgPiAwICYmIHZhbHVlIDw9IDEwMDAwMCkge1xyXG4gICAgICAgICAgdGhpcy5idWZmZXIgPSB2YWx1ZTtcclxuICAgICAgICAgIHRoaXMuYnVmZmVyRXZlbnQuZW1pdCh2YWx1ZSk7XHJcbiAgICAgICAgICB0aGlzLnNwYXRpYWxGaWx0ZXJTZXJ2aWNlLmxvYWRCdWZmZXJHZW9tZXRyeShcclxuICAgICAgICAgICAgdGhpcy5kcmF3Wm9uZSxcclxuICAgICAgICAgICAgU3BhdGlhbEZpbHRlclR5cGUuUG9seWdvbixcclxuICAgICAgICAgICAgdmFsdWVcclxuICAgICAgICAgICkuc3Vic2NyaWJlKChmZWF0dXJlR2VvbTogRmVhdHVyZSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnpvbmVXaXRoQnVmZmVyID0gZmVhdHVyZUdlb207XHJcbiAgICAgICAgICAgIHRoaXMuem9uZVdpdGhCdWZmZXJDaGFuZ2UuZW1pdCh0aGlzLnpvbmVXaXRoQnVmZmVyKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5tZWFzdXJlVW5pdCA9PT0gTWVhc3VyZUxlbmd0aFVuaXQuS2lsb21ldGVycyAmJiB2YWx1ZSA+IDAgJiYgdmFsdWUgPD0gMTAwKSB7XHJcbiAgICAgICAgICB0aGlzLmJ1ZmZlciA9IHZhbHVlO1xyXG4gICAgICAgICAgdGhpcy5idWZmZXJFdmVudC5lbWl0KHZhbHVlKTtcclxuICAgICAgICAgIHRoaXMuc3BhdGlhbEZpbHRlclNlcnZpY2UubG9hZEJ1ZmZlckdlb21ldHJ5KFxyXG4gICAgICAgICAgICB0aGlzLmRyYXdab25lLFxyXG4gICAgICAgICAgICBTcGF0aWFsRmlsdGVyVHlwZS5Qb2x5Z29uLFxyXG4gICAgICAgICAgICB2YWx1ZSAqIDEwMDBcclxuICAgICAgICAgICkuc3Vic2NyaWJlKChmZWF0dXJlR2VvbTogRmVhdHVyZSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnpvbmVXaXRoQnVmZmVyID0gZmVhdHVyZUdlb207XHJcbiAgICAgICAgICAgIHRoaXMuem9uZVdpdGhCdWZmZXJDaGFuZ2UuZW1pdCh0aGlzLnpvbmVXaXRoQnVmZmVyKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0gZWxzZSBpZiAodmFsdWUgPT09IDApIHtcclxuICAgICAgICAgIHRoaXMuYnVmZmVyID0gdmFsdWU7XHJcbiAgICAgICAgICB0aGlzLmJ1ZmZlckV2ZW50LmVtaXQodmFsdWUpO1xyXG4gICAgICAgICAgdGhpcy5kcmF3Wm9uZUV2ZW50LmVtaXQodGhpcy5kcmF3Wm9uZSk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChcclxuICAgICAgICAgIHZhbHVlIDwgMCB8fFxyXG4gICAgICAgICAgKHRoaXMubWVhc3VyZVVuaXQgPT09IE1lYXN1cmVMZW5ndGhVbml0Lk1ldGVycyAmJiB2YWx1ZSA+IDEwMDAwMCkgfHxcclxuICAgICAgICAgICh0aGlzLm1lYXN1cmVVbml0ID09PSBNZWFzdXJlTGVuZ3RoVW5pdC5LaWxvbWV0ZXJzICYmIHZhbHVlID4gMTAwKSkge1xyXG4gICAgICAgICAgICB0aGlzLmJ1ZmZlckZvcm1Db250cm9sLnNldFZhbHVlKDApO1xyXG4gICAgICAgICAgICB0aGlzLmJ1ZmZlciA9IDA7XHJcbiAgICAgICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWxlcnQoJ2lnby5nZW8uc3BhdGlhbEZpbHRlci5idWZmZXJBbGVydCcsJ2lnby5nZW8uc3BhdGlhbEZpbHRlci53YXJuaW5nJyk7XHJcbiAgICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgY29uc3Qgc2VsZWN0ZWRSZWNvcmRTdHJhdGVneSA9IG5ldyBFbnRpdHlTdG9yZUZpbHRlclNlbGVjdGlvblN0cmF0ZWd5KHt9KTtcclxuICAgIGNvbnN0IHNlbGVjdGlvblN0cmF0ZWd5ID0gbmV3IEZlYXR1cmVTdG9yZVNlbGVjdGlvblN0cmF0ZWd5KHtcclxuICAgICAgbGF5ZXI6IG5ldyBWZWN0b3JMYXllcih7XHJcbiAgICAgICAgekluZGV4OiAzMDAsXHJcbiAgICAgICAgc291cmNlOiBuZXcgRmVhdHVyZURhdGFTb3VyY2UoKSxcclxuICAgICAgICBzdHlsZTogdW5kZWZpbmVkLFxyXG4gICAgICAgIHNob3dJbkxheWVyTGlzdDogZmFsc2UsXHJcbiAgICAgICAgZXhwb3J0YWJsZTogZmFsc2UsXHJcbiAgICAgICAgYnJvd3NhYmxlOiBmYWxzZVxyXG4gICAgICB9KSxcclxuICAgICAgbWFwOiB0aGlzLm1hcCxcclxuICAgICAgaGl0VG9sZXJhbmNlOiAxNSxcclxuICAgICAgbW90aW9uOiBGZWF0dXJlTW90aW9uLkRlZmF1bHQsXHJcbiAgICAgIG1hbnk6IHRydWUsXHJcbiAgICAgIGRyYWdCb3g6IHRydWVcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuc3RvcmUuYWRkU3RyYXRlZ3koc2VsZWN0aW9uU3RyYXRlZ3ksIHRydWUpO1xyXG4gICAgdGhpcy5zdG9yZS5hZGRTdHJhdGVneShzZWxlY3RlZFJlY29yZFN0cmF0ZWd5LCBmYWxzZSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBVbnN1YnNjcmliZSB0byB0aGUgdmFsdWUgc3RyZWFtXHJcbiAgICogQGludGVybmFsXHJcbiAgICovXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLnZhbHVlJCQudW5zdWJzY3JpYmUoKTtcclxuICAgIHRoaXMucmFkaXVzQ2hhbmdlcyQkLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB0aGlzLmJ1ZmZlckNoYW5nZXMkJC51bnN1YnNjcmliZSgpO1xyXG4gICAgdGhpcy5jZFJlZi5kZXRhY2goKTtcclxuICAgIGlmICh0aGlzLnJhZGl1c0NoYW5nZXMkJCkge1xyXG4gICAgICB0aGlzLnJhZGl1c0NoYW5nZXMkJC51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMudmFsdWUkJCkge1xyXG4gICAgICB0aGlzLnZhbHVlJCQudW5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uSXRlbVR5cGVDaGFuZ2UoZXZlbnQpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRJdGVtVHlwZSA9IGV2ZW50LnZhbHVlO1xyXG4gICAgdGhpcy5pdGVtVHlwZUNoYW5nZS5lbWl0KHRoaXMuc2VsZWN0ZWRJdGVtVHlwZSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZXQgdGhlIG1lYXN1cmUgdW5pdFxyXG4gICAqIEBpbnRlcm5hbFxyXG4gICAqL1xyXG4gIG9uTWVhc3VyZVVuaXRDaGFuZ2UodW5pdDogTWVhc3VyZUxlbmd0aFVuaXQpIHtcclxuICAgIGlmICh1bml0ID09PSB0aGlzLm1lYXN1cmVVbml0KSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMubWVhc3VyZVVuaXQgPSB1bml0O1xyXG4gICAgICB0aGlzLm1lYXN1cmVVbml0Q2hhbmdlLmVtaXQodGhpcy5tZWFzdXJlVW5pdCk7XHJcbiAgICAgIGlmICh0aGlzLmlzUG9seWdvbigpKSB7XHJcbiAgICAgICAgdGhpcy5tZWFzdXJlVW5pdCA9PT0gTWVhc3VyZUxlbmd0aFVuaXQuTWV0ZXJzID9cclxuICAgICAgICAgIHRoaXMuYnVmZmVyRm9ybUNvbnRyb2wuc2V0VmFsdWUodGhpcy5idWZmZXJGb3JtQ29udHJvbC52YWx1ZSAqIDEwMDApIDpcclxuICAgICAgICAgIHRoaXMuYnVmZmVyRm9ybUNvbnRyb2wuc2V0VmFsdWUodGhpcy5idWZmZXJGb3JtQ29udHJvbC52YWx1ZSAvIDEwMDApO1xyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuaXNQb2ludCgpKSB7XHJcbiAgICAgICAgdGhpcy5tZWFzdXJlVW5pdCA9PT0gTWVhc3VyZUxlbmd0aFVuaXQuTWV0ZXJzID9cclxuICAgICAgICAgIHRoaXMucmFkaXVzRm9ybUNvbnRyb2wuc2V0VmFsdWUodGhpcy5yYWRpdXNGb3JtQ29udHJvbC52YWx1ZSAqIDEwMDApIDpcclxuICAgICAgICAgIHRoaXMucmFkaXVzRm9ybUNvbnRyb2wuc2V0VmFsdWUodGhpcy5yYWRpdXNGb3JtQ29udHJvbC52YWx1ZSAvIDEwMDApO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpc1ByZWRlZmluZWQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy50eXBlID09PSBTcGF0aWFsRmlsdGVyVHlwZS5QcmVkZWZpbmVkO1xyXG4gIH1cclxuXHJcbiAgaXNQb2x5Z29uKCkge1xyXG4gICAgcmV0dXJuIHRoaXMudHlwZSA9PT0gU3BhdGlhbEZpbHRlclR5cGUuUG9seWdvbjtcclxuICB9XHJcblxyXG4gIGlzUG9pbnQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy50eXBlID09PSBTcGF0aWFsRmlsdGVyVHlwZS5Qb2ludDtcclxuICB9XHJcblxyXG4gIGhhc0NoaWxkKF86IG51bWJlciwgbm9kZTogU3BhdGlhbEZpbHRlclRoZW1hdGljKSB7XHJcbiAgICBpZiAobm9kZS5jaGlsZHJlbikge1xyXG4gICAgICByZXR1cm4gbm9kZS5jaGlsZHJlbi5sZW5ndGg7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBvblRvZ2dsZUNsaWNrKG5vZGU6IFNwYXRpYWxGaWx0ZXJUaGVtYXRpYykge1xyXG4gICAgdGhpcy50cmVlQ29udHJvbC5pc0V4cGFuZGVkKG5vZGUpID8gdGhpcy50cmVlQ29udHJvbC5jb2xsYXBzZShub2RlKSA6IHRoaXMudHJlZUNvbnRyb2wuZXhwYW5kKG5vZGUpO1xyXG4gIH1cclxuXHJcbiAgaXNBbGxTZWxlY3RlZChub2RlPzogU3BhdGlhbEZpbHRlclRoZW1hdGljKSB7XHJcbiAgICBsZXQgbnVtU2VsZWN0ZWQ7XHJcbiAgICBsZXQgbnVtTm9kZXMgPSAwO1xyXG4gICAgaWYgKCFub2RlKSB7XHJcbiAgICAgIG51bVNlbGVjdGVkID0gdGhpcy5zZWxlY3RlZFRoZW1hdGljcy5zZWxlY3RlZC5sZW5ndGg7XHJcbiAgICAgIHRoaXMudGhlbWF0aWNzLmZvckVhY2godGhlbWF0aWMgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLmdyb3Vwcy5pbmRleE9mKHRoZW1hdGljLm5hbWUpID09PSAtMSkge1xyXG4gICAgICAgICAgbnVtTm9kZXMrKztcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLmNoaWxkcmVucy5mb3JFYWNoKGNoaWxkcmVuID0+IHtcclxuICAgICAgICBpZiAoIXRoaXMudGhlbWF0aWNzLmZpbmQodGhlbWF0aWMgPT4gdGhlbWF0aWMuc291cmNlID09PSBjaGlsZHJlbi5zb3VyY2UpKSB7XHJcbiAgICAgICAgICBudW1Ob2RlcysrO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBudW1TZWxlY3RlZCA9IG5vZGUuY2hpbGRyZW4ubGVuZ3RoO1xyXG4gICAgICBub2RlLmNoaWxkcmVuLmZvckVhY2goY2hpbGRyZW4gPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkVGhlbWF0aWNzLnNlbGVjdGVkLmZpbmQodGhlbWF0aWMgPT4gdGhlbWF0aWMgPT09IGNoaWxkcmVuKSkge1xyXG4gICAgICAgICAgbnVtTm9kZXMrKztcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChudW1Ob2RlcyA+PSAxKSB7XHJcbiAgICAgIHJldHVybiBudW1TZWxlY3RlZCA9PT0gbnVtTm9kZXM7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBoYXNDaGlsZHJlblNlbGVjdGVkKG5vZGU6IFNwYXRpYWxGaWx0ZXJUaGVtYXRpYykge1xyXG4gICAgbGV0IGJvb2wgPSBmYWxzZTtcclxuICAgIG5vZGUuY2hpbGRyZW4uZm9yRWFjaChjaGlsZCA9PiB7XHJcbiAgICAgIGlmICh0aGlzLnNlbGVjdGVkVGhlbWF0aWNzLnNlbGVjdGVkLmZpbmQodGhlbWF0aWMgPT4gdGhlbWF0aWMuc291cmNlID09PSBjaGlsZC5zb3VyY2UpKSB7XHJcbiAgICAgICAgYm9vbCA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGJvb2w7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBcHBseSBoZWFkZXIgY2hlY2tib3hcclxuICAgKi9cclxuICBtYXN0ZXJUb2dnbGUoKSB7XHJcbiAgICB0aGlzLmlzQWxsU2VsZWN0ZWQoKSA/XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRUaGVtYXRpY3MuY2xlYXIoKSA6XHJcbiAgICAgIHRoaXMuc2VsZWN0QWxsKCk7XHJcblxyXG4gICAgY29uc3Qgc2VsZWN0ZWRUaGVtYXRpY3NOYW1lOiBTcGF0aWFsRmlsdGVyVGhlbWF0aWNbXSA9IFtdO1xyXG4gICAgZm9yIChjb25zdCB0aGVtYXRpYyBvZiB0aGlzLnNlbGVjdGVkVGhlbWF0aWNzLnNlbGVjdGVkKSB7XHJcbiAgICAgIHNlbGVjdGVkVGhlbWF0aWNzTmFtZS5wdXNoKHRoZW1hdGljKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5pc0FsbFNlbGVjdGVkKCkpIHtcclxuICAgICAgdGhpcy50aGVtYXRpY3MuZm9yRWFjaCh0aGVtYXRpYyA9PiB7XHJcbiAgICAgICAgaWYgKHRoaXMuaGFzQ2hpbGQoMCwgdGhlbWF0aWMpKSB7XHJcbiAgICAgICAgICB0aGlzLnRyZWVDb250cm9sLmV4cGFuZCh0aGVtYXRpYyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMudGhlbWF0aWNzLmZvckVhY2godGhlbWF0aWMgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLmhhc0NoaWxkKDAsIHRoZW1hdGljKSkge1xyXG4gICAgICAgICAgdGhpcy50cmVlQ29udHJvbC5jb2xsYXBzZSh0aGVtYXRpYyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHRoaXMudGhlbWF0aWNDaGFuZ2UuZW1pdChzZWxlY3RlZFRoZW1hdGljc05hbWUpO1xyXG4gIH1cclxuXHJcbiAgc2VsZWN0QWxsKG5vZGU/OiBTcGF0aWFsRmlsdGVyVGhlbWF0aWMpIHtcclxuICAgIGlmICghbm9kZSkge1xyXG4gICAgICB0aGlzLnRoZW1hdGljcy5mb3JFYWNoKHRoZW1hdGljID0+IHtcclxuICAgICAgICBpZiAodGhpcy5ncm91cHMuaW5kZXhPZih0aGVtYXRpYy5uYW1lKSA9PT0gLTEpIHtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRUaGVtYXRpY3Muc2VsZWN0KHRoZW1hdGljKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLmNoaWxkcmVucy5mb3JFYWNoKGNoaWxkcmVuID0+IHtcclxuICAgICAgICBpZiAoIXRoaXMuc2VsZWN0ZWRUaGVtYXRpY3Muc2VsZWN0ZWQuZmluZCh0aGVtYXRpYyA9PiB0aGVtYXRpYy5zb3VyY2UgPT09IGNoaWxkcmVuLnNvdXJjZSkpIHtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRUaGVtYXRpY3Muc2VsZWN0KGNoaWxkcmVuKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHRoaXMuaGFzQ2hpbGQoMCwgbm9kZSkpIHtcclxuICAgICAgICBub2RlLmNoaWxkcmVuLmZvckVhY2goY2hpbGRyZW4gPT4gdGhpcy5zZWxlY3RlZFRoZW1hdGljcy5zZWxlY3QoY2hpbGRyZW4pKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2hpbGRyZW5zVG9nZ2xlKG5vZGU6IFNwYXRpYWxGaWx0ZXJUaGVtYXRpYykge1xyXG4gICAgdGhpcy5pc0FsbFNlbGVjdGVkKG5vZGUpID9cclxuICAgIG5vZGUuY2hpbGRyZW4uZm9yRWFjaChjaGlsZCA9PiB0aGlzLnNlbGVjdGVkVGhlbWF0aWNzLmRlc2VsZWN0KGNoaWxkKSkgOlxyXG4gICAgdGhpcy5zZWxlY3RBbGwobm9kZSk7XHJcblxyXG4gICAgY29uc3Qgc2VsZWN0ZWRUaGVtYXRpY3NOYW1lOiBTcGF0aWFsRmlsdGVyVGhlbWF0aWNbXSA9IFtdO1xyXG4gICAgZm9yIChjb25zdCB0aGVtYXRpYyBvZiB0aGlzLnNlbGVjdGVkVGhlbWF0aWNzLnNlbGVjdGVkKSB7XHJcbiAgICAgIHNlbGVjdGVkVGhlbWF0aWNzTmFtZS5wdXNoKHRoZW1hdGljKTtcclxuICAgIH1cclxuICAgIHRoaXMudHJlZUNvbnRyb2wuZXhwYW5kKG5vZGUpO1xyXG4gICAgdGhpcy50aGVtYXRpY0NoYW5nZS5lbWl0KHNlbGVjdGVkVGhlbWF0aWNzTmFtZSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBcHBseSBjaGFuZ2VzIHRvIHRoZSB0aGVtYXRpY3Mgc2VsZWN0ZWQgdHJlZSBhbmQgZW1pdCBldmVudFxyXG4gICAqL1xyXG4gIG9uVG9nZ2xlQ2hhbmdlKG5vZGVTZWxlY3RlZDogU3BhdGlhbEZpbHRlclRoZW1hdGljKSB7XHJcbiAgICBsZXQgc2VsZWN0ZWQgPSBmYWxzZTtcclxuICAgIGlmICh0aGlzLnNlbGVjdGVkVGhlbWF0aWNzLnNlbGVjdGVkLmZpbmQodGhlbWF0aWMgPT4gdGhlbWF0aWMuc291cmNlID09PSBub2RlU2VsZWN0ZWQuc291cmNlKSAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHNlbGVjdGVkID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmNoaWxkcmVucy5mb3JFYWNoKGNoaWxkcmVuID0+IHtcclxuICAgICAgaWYgKGNoaWxkcmVuID09PSBub2RlU2VsZWN0ZWQgJiYgc2VsZWN0ZWQgPT09IGZhbHNlKSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFRoZW1hdGljcy5zZWxlY3QoY2hpbGRyZW4pO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChjaGlsZHJlbiA9PT0gbm9kZVNlbGVjdGVkICYmIHNlbGVjdGVkID09PSB0cnVlKSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFRoZW1hdGljcy5kZXNlbGVjdChjaGlsZHJlbik7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgdGhpcy50aGVtYXRpY3MuZm9yRWFjaCh0aGVtYXRpYyA9PiB7XHJcbiAgICAgIGlmICh0aGVtYXRpYyA9PT0gbm9kZVNlbGVjdGVkICYmIHNlbGVjdGVkID09PSBmYWxzZSkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRUaGVtYXRpY3Muc2VsZWN0KHRoZW1hdGljKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhlbWF0aWMgPT09IG5vZGVTZWxlY3RlZCAmJiBzZWxlY3RlZCA9PT0gdHJ1ZSkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRUaGVtYXRpY3MuZGVzZWxlY3QodGhlbWF0aWMpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICBjb25zdCBzZWxlY3RlZFRoZW1hdGljc05hbWU6IFNwYXRpYWxGaWx0ZXJUaGVtYXRpY1tdID0gW107XHJcbiAgICBmb3IgKGNvbnN0IHRoZW1hdGljIG9mIHRoaXMuc2VsZWN0ZWRUaGVtYXRpY3Muc2VsZWN0ZWQpIHtcclxuICAgICAgc2VsZWN0ZWRUaGVtYXRpY3NOYW1lLnB1c2godGhlbWF0aWMpO1xyXG4gICAgfVxyXG4gICAgdGhpcy50aGVtYXRpY0NoYW5nZS5lbWl0KHNlbGVjdGVkVGhlbWF0aWNzTmFtZSk7XHJcbiAgfVxyXG5cclxuICBvbkRyYXdDb250cm9sQ2hhbmdlKCkge1xyXG4gICAgdGhpcy5kcmF3Q29udHJvbElzQWN0aXZlID0gIXRoaXMuZHJhd0NvbnRyb2xJc0FjdGl2ZTtcclxuICB9XHJcblxyXG4gIG9uZnJlZWhhbmRDb250cm9sQ2hhbmdlKCkge1xyXG4gICAgdGhpcy5mcmVlaGFuZERyYXdJc0FjdGl2ZSA9ICF0aGlzLmZyZWVoYW5kRHJhd0lzQWN0aXZlO1xyXG4gICAgdGhpcy5mcmVlaGFuZENvbnRyb2wuZW1pdCh0aGlzLmZyZWVoYW5kRHJhd0lzQWN0aXZlKTtcclxuICAgIGlmICh0aGlzLmlzUG9pbnQoKSkge1xyXG4gICAgICB0aGlzLnByZWRlZmluZWRSYWRpdXMuZW1pdCghdGhpcy5mcmVlaGFuZERyYXdJc0FjdGl2ZSk7XHJcbiAgICAgIGlmICh0aGlzLmZyZWVoYW5kRHJhd0lzQWN0aXZlKSB7XHJcbiAgICAgICAgdGhpcy5vdmVybGF5U3R5bGUkLm5leHQodW5kZWZpbmVkKTtcclxuICAgICAgICB0aGlzLmRyYXdTdHlsZSQubmV4dCh1bmRlZmluZWQpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnByZWRlZmluZWRSYWRpdXMuZW1pdChmYWxzZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBMYXVuY2ggc2VhcmNoIGJ1dHRvblxyXG4gICAqL1xyXG4gIHRvZ2dsZVNlYXJjaEJ1dHRvbigpIHtcclxuICAgIGlmICghdGhpcy5pc1ByZWRlZmluZWQoKSkge1xyXG4gICAgICBpZiAodGhpcy5idWZmZXIgPiAwKSB7XHJcbiAgICAgICAgdGhpcy56b25lV2l0aEJ1ZmZlci5tZXRhID0ge1xyXG4gICAgICAgICAgaWQ6IHVuZGVmaW5lZCxcclxuICAgICAgICAgIHRpdGxlOiAnWm9uZSdcclxuICAgICAgICB9O1xyXG4gICAgICAgIHRoaXMuem9uZVdpdGhCdWZmZXIucHJvcGVydGllcyA9IHtcclxuICAgICAgICAgIG5vbTogJ1pvbmUnLFxyXG4gICAgICAgICAgdHlwZTogdGhpcy50eXBlIGFzIHN0cmluZ1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgdGhpcy5kcmF3Wm9uZUV2ZW50LmVtaXQodGhpcy56b25lV2l0aEJ1ZmZlcik7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5kcmF3Wm9uZS5tZXRhID0ge1xyXG4gICAgICAgICAgaWQ6IHVuZGVmaW5lZCxcclxuICAgICAgICAgIHRpdGxlOiAnWm9uZSdcclxuICAgICAgICB9O1xyXG4gICAgICAgIHRoaXMuZHJhd1pvbmUucHJvcGVydGllcyA9IHtcclxuICAgICAgICAgIG5vbTogJ1pvbmUnLFxyXG4gICAgICAgICAgdHlwZTogdGhpcy50eXBlIGFzIHN0cmluZ1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgdGhpcy5kcmF3Wm9uZUV2ZW50LmVtaXQodGhpcy5kcmF3Wm9uZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmICh0aGlzLmlzUG9pbnQoKSkge1xyXG4gICAgICB0aGlzLnJhZGl1c0V2ZW50LmVtaXQodGhpcy5yYWRpdXMpO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLmlzUG9seWdvbigpKSB7XHJcbiAgICAgIHRoaXMuYnVmZmVyRXZlbnQuZW1pdCh0aGlzLmJ1ZmZlcik7XHJcbiAgICB9XHJcbiAgICB0aGlzLnRvZ2dsZVNlYXJjaC5lbWl0KCk7XHJcbiAgICB0aGlzLnN0b3JlLmVudGl0aWVzJC5waXBlKFxyXG4gICAgICBkZWJvdW5jZVRpbWUoNTAwKVxyXG4gICAgKS5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XHJcbiAgICAgIGlmICh2YWx1ZS5sZW5ndGggJiYgdGhpcy5sYXllcnMubGVuZ3RoID09PSB0aGlzLnRoZW1hdGljTGVuZ3RoICsgMSkge1xyXG4gICAgICAgIHRoaXMub3BlbldvcmtzcGFjZS5lbWl0KCk7XHJcbiAgICAgICAgdGhpcy5jcmVhdGVUYWJsZVRlbXBsYXRlKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTGF1bmNoIGNsZWFyIGJ1dHRvbiAoY2xlYXIgc3RvcmUgYW5kIG1hcCBsYXllcnMpXHJcbiAgICovXHJcbiAgY2xlYXJCdXR0b24oKSB7XHJcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG4gICAgaWYgKHRoaXMuc3RvcmUpIHtcclxuICAgICAgdGhpcy5zdG9yZS5jbGVhcigpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuaXNQb2ludCgpIHx8IHRoaXMuaXNQb2x5Z29uKCkpIHtcclxuICAgICAgdGhpcy5kcmF3Wm9uZSA9IHVuZGVmaW5lZDtcclxuICAgICAgdGhpcy5mb3JtQ29udHJvbC5yZXNldCgpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5idWZmZXJGb3JtQ29udHJvbC5zZXRWYWx1ZSgwKTtcclxuICAgIHRoaXMuYnVmZmVyID0gMDtcclxuICAgIHRoaXMuYnVmZmVyRXZlbnQuZW1pdCgwKTtcclxuICAgIHRoaXMuY2xlYXJCdXR0b25FdmVudC5lbWl0KCk7XHJcbiAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgIHRoaXMudGFibGVUZW1wbGF0ZSA9IHVuZGVmaW5lZDtcclxuICB9XHJcblxyXG4gIGNsZWFyRHJhd1pvbmUoKSB7XHJcbiAgICB0aGlzLmZvcm1Db250cm9sLnJlc2V0KCk7XHJcbiAgICB0aGlzLmJ1ZmZlckZvcm1Db250cm9sLnNldFZhbHVlKDApO1xyXG4gICAgdGhpcy5idWZmZXIgPSAwO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTGF1bmNoIGNsZWFyIHNlYXJjaCAoY2xlYXIgZmllbGQgaWYgdHlwZSBpcyBwcmVkZWZpbmVkKVxyXG4gICAqL1xyXG4gIGNsZWFyU2VhcmNoKCkge1xyXG4gICAgdGhpcy5zZWxlY3RlZFRoZW1hdGljcy5jbGVhcigpO1xyXG4gICAgdGhpcy5idWZmZXJGb3JtQ29udHJvbC5zZXRWYWx1ZSgwKTtcclxuICAgIHRoaXMuYnVmZmVyID0gMDtcclxuICAgIHRoaXMuYnVmZmVyRXZlbnQuZW1pdCgwKTtcclxuICAgIHRoaXMudGhlbWF0aWNDaGFuZ2UuZW1pdChbXSk7XHJcbiAgICB0aGlzLmNsZWFyU2VhcmNoRXZlbnQuZW1pdCgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVmVyaWZ5IGNvbmRpdGlvbnMgb2YgaW5jb21wbGV0ZSBmaWVsZHMgb3IgYnVzeSBzZXJ2aWNlXHJcbiAgICovXHJcbiAgZGlzYWJsZVNlYXJjaEJ1dHRvbigpOiBib29sZWFuIHtcclxuICAgIGlmICh0aGlzLnR5cGUgPT09IFNwYXRpYWxGaWx0ZXJUeXBlLlByZWRlZmluZWQpIHtcclxuICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRJdGVtVHlwZSA9PT0gU3BhdGlhbEZpbHRlckl0ZW1UeXBlLkFkZHJlc3MpIHtcclxuICAgICAgICBpZiAodGhpcy5xdWVyeVR5cGUgIT09IHVuZGVmaW5lZCAmJiB0aGlzLnpvbmUgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMubG9hZGluZztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRJdGVtVHlwZSA9PT0gU3BhdGlhbEZpbHRlckl0ZW1UeXBlLlRoZW1hdGljcykge1xyXG4gICAgICAgIGlmICh0aGlzLnF1ZXJ5VHlwZSAhPT0gdW5kZWZpbmVkICYmIHRoaXMuem9uZSAhPT0gdW5kZWZpbmVkICYmIHRoaXMuc2VsZWN0ZWRUaGVtYXRpY3Muc2VsZWN0ZWQubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMubG9hZGluZztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmICh0aGlzLnR5cGUgPT09IFNwYXRpYWxGaWx0ZXJUeXBlLlBvbHlnb24gfHwgdGhpcy50eXBlID09PSBTcGF0aWFsRmlsdGVyVHlwZS5Qb2ludCkge1xyXG4gICAgICBpZiAodGhpcy5zZWxlY3RlZEl0ZW1UeXBlID09PSBTcGF0aWFsRmlsdGVySXRlbVR5cGUuQWRkcmVzcyAmJiB0aGlzLmZvcm1Db250cm9sLnZhbHVlICE9PSBudWxsKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMubG9hZGluZztcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5zZWxlY3RlZEl0ZW1UeXBlID09PSBTcGF0aWFsRmlsdGVySXRlbVR5cGUuVGhlbWF0aWNzKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRUaGVtYXRpY3Muc2VsZWN0ZWQubGVuZ3RoID4gMCAmJiB0aGlzLmZvcm1Db250cm9sLnZhbHVlICE9PSBudWxsKSB7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5sb2FkaW5nO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICBkaXNhYmxlZENsZWFyU2VhcmNoKCkge1xyXG4gICAgbGV0IGRpc2FibGUgPSB0cnVlO1xyXG4gICAgdGhpcy5zZWxlY3RlZEl0ZW1UeXBlID09PSBTcGF0aWFsRmlsdGVySXRlbVR5cGUuQWRkcmVzcyA/XHJcbiAgICAgIGRpc2FibGUgPSB0aGlzLnF1ZXJ5VHlwZSA9PT0gdW5kZWZpbmVkIDpcclxuICAgICAgZGlzYWJsZSA9IHRoaXMucXVlcnlUeXBlID09PSB1bmRlZmluZWQgJiYgdGhpcy5zZWxlY3RlZFRoZW1hdGljcy5zZWxlY3RlZC5sZW5ndGggPT09IDA7XHJcblxyXG4gICAgcmV0dXJuIGRpc2FibGU7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNYW5hZ2UgcmFkaXVzIHZhbHVlIGF0IHVzZXIgY2hhbmdlXHJcbiAgICovXHJcbiAgZ2V0UmFkaXVzKCkge1xyXG4gICAgbGV0IGZvcm1WYWx1ZTtcclxuICAgIGlmICh0aGlzLmZvcm1Db250cm9sLnZhbHVlICE9PSBudWxsKSB7XHJcbiAgICAgIHRoaXMubWVhc3VyZVVuaXQgPT09IE1lYXN1cmVMZW5ndGhVbml0Lk1ldGVycyA/XHJcbiAgICAgICAgZm9ybVZhbHVlID0gdGhpcy5mb3JtQ29udHJvbC52YWx1ZS5yYWRpdXMgOlxyXG4gICAgICAgIGZvcm1WYWx1ZSA9IHRoaXMuZm9ybUNvbnRyb2wudmFsdWUucmFkaXVzIC8gMTAwMDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGZvcm1WYWx1ZSA9IHVuZGVmaW5lZDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy50eXBlID09PSBTcGF0aWFsRmlsdGVyVHlwZS5Qb2ludCkge1xyXG4gICAgICBpZiAoIXRoaXMuZnJlZWhhbmREcmF3SXNBY3RpdmUpIHtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICB0aGlzLnJhZGl1c0Zvcm1Db250cm9sLnZhbHVlIDwgMCB8fFxyXG4gICAgICAgICAgKHRoaXMubWVhc3VyZVVuaXQgPT09IE1lYXN1cmVMZW5ndGhVbml0Lk1ldGVycyAmJiB0aGlzLnJhZGl1c0Zvcm1Db250cm9sLnZhbHVlID49IDEwMDAwMCkgfHxcclxuICAgICAgICAgICh0aGlzLm1lYXN1cmVVbml0ID09PSBNZWFzdXJlTGVuZ3RoVW5pdC5LaWxvbWV0ZXJzICYmIHRoaXMucmFkaXVzRm9ybUNvbnRyb2wudmFsdWUgPj0gMTAwKSkge1xyXG4gICAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5hbGVydCgnaWdvLmdlby5zcGF0aWFsRmlsdGVyLnJhZGl1c0FsZXJ0JywgJ2lnby5nZW8uc3BhdGlhbEZpbHRlci53YXJuaW5nJyk7XHJcbiAgICAgICAgICB0aGlzLnJhZGl1cyA9IDEwMDA7XHJcbiAgICAgICAgICB0aGlzLm1lYXN1cmVVbml0ID09PSBNZWFzdXJlTGVuZ3RoVW5pdC5NZXRlcnMgP1xyXG4gICAgICAgICAgICB0aGlzLnJhZGl1c0Zvcm1Db250cm9sLnNldFZhbHVlKHRoaXMucmFkaXVzKSA6XHJcbiAgICAgICAgICAgIHRoaXMucmFkaXVzRm9ybUNvbnRyb2wuc2V0VmFsdWUodGhpcy5yYWRpdXMgLyAxMDAwKTtcclxuICAgICAgICAgIHRoaXMuZHJhd0d1aWRlJC5uZXh0KHRoaXMucmFkaXVzKTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKGZvcm1WYWx1ZSkge1xyXG4gICAgICAgICAgaWYgKGZvcm1WYWx1ZSA+PSAxMDAwMDApIHtcclxuICAgICAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5hbGVydCgnaWdvLmdlby5zcGF0aWFsRmlsdGVyLnJhZGl1c0FsZXJ0JywgJ2lnby5nZW8uc3BhdGlhbEZpbHRlci53YXJuaW5nJyk7XHJcbiAgICAgICAgICAgIHRoaXMuZm9ybUNvbnRyb2wucmVzZXQoKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKGZvcm1WYWx1ZSAhPT0gdGhpcy5yYWRpdXNGb3JtQ29udHJvbC52YWx1ZSkge1xyXG4gICAgICAgICAgICB0aGlzLnJhZGl1c0Zvcm1Db250cm9sLnNldFZhbHVlKGZvcm1WYWx1ZSk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMubWVhc3VyZVVuaXQgPT09IE1lYXN1cmVMZW5ndGhVbml0Lk1ldGVycykge1xyXG4gICAgICAgIHRoaXMucmFkaXVzID0gdGhpcy5yYWRpdXNGb3JtQ29udHJvbC52YWx1ZTtcclxuICAgICAgICB0aGlzLmRyYXdHdWlkZSQubmV4dCh0aGlzLnJhZGl1cyk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5yYWRpdXMgPSB0aGlzLnJhZGl1c0Zvcm1Db250cm9sLnZhbHVlICogMTAwMDtcclxuICAgICAgICB0aGlzLmRyYXdHdWlkZSQubmV4dCh0aGlzLnJhZGl1cyAqIDEwMDApO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMub3ZlcmxheVN0eWxlJC5uZXh0KHRoaXMuUG9pbnRTdHlsZSk7XHJcbiAgICAgIHRoaXMuZHJhd1N0eWxlJC5uZXh0KHRoaXMuUG9pbnRTdHlsZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB0b2dnbGVWaXNpYmxlTGlzdCgpIHtcclxuICAgIHRoaXMubGlzdElzVmlzaWJsZSA9ICF0aGlzLmxpc3RJc1Zpc2libGU7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNyZWF0ZVRhYmxlVGVtcGxhdGUoKSB7XHJcbiAgICBjb25zdCB0eXBlQ29sdW1uID0ge1xyXG4gICAgICBuYW1lOiAnbWV0YS50aXRsZScsXHJcbiAgICAgIHRpdGxlOiB0aGlzLmxhbmd1YWdlU2VydmljZS50cmFuc2xhdGUuaW5zdGFudCgnaWdvLmdlby5zcGF0aWFsRmlsdGVyLnR5cGUnKSxcclxuICAgICAgcmVuZGVyZXI6IEVudGl0eVRhYmxlQ29sdW1uUmVuZGVyZXIuVW5zYW5pdGl6ZWRIVE1MXHJcbiAgICB9O1xyXG4gICAgY29uc3QgbmFtZUNvbHVtbiA9IHtcclxuICAgICAgbmFtZTogJ3Byb3BlcnRpZXMubm9tJyxcclxuICAgICAgdGl0bGU6IHRoaXMubGFuZ3VhZ2VTZXJ2aWNlLnRyYW5zbGF0ZS5pbnN0YW50KCdpZ28uZ2VvLnNwYXRpYWxGaWx0ZXIuc2VhcmNoUmVzdWx0cycpLFxyXG4gICAgICByZW5kZXJlcjogRW50aXR5VGFibGVDb2x1bW5SZW5kZXJlci5VbnNhbml0aXplZEhUTUxcclxuICAgIH07XHJcbiAgICBjb25zdCBjb2x1bW5zID0gW3R5cGVDb2x1bW4sIG5hbWVDb2x1bW5dO1xyXG5cclxuICAgIHRoaXMudGFibGVUZW1wbGF0ZSA9IHtcclxuICAgICAgc2VsZWN0aW9uOiB0cnVlLFxyXG4gICAgICBzb3J0OiB0cnVlLFxyXG4gICAgICBjb2x1bW5zXHJcbiAgICB9O1xyXG4gIH1cclxufVxyXG4iLCI8aWdvLWdlb21ldHJ5LWZvcm0tZmllbGQtaW5wdXRcclxuICBbZm9ybUNvbnRyb2xdPVwiZm9ybUNvbnRyb2xcIlxyXG4gIFttYXBdPVwibWFwXCJcclxuICBbZ2VvbWV0cnlUeXBlXT1cImdlb21ldHJ5VHlwZVwiXHJcbiAgW2RyYXdHdWlkZV09XCJkcmF3R3VpZGUkIHwgYXN5bmNcIlxyXG4gIFttZWFzdXJlXT1cIm1lYXN1cmVcIlxyXG4gIFtkcmF3Q29udHJvbElzQWN0aXZlXT1cImRyYXdDb250cm9sSXNBY3RpdmVcIlxyXG4gIFtmcmVlaGFuZERyYXdJc0FjdGl2ZV09XCJmcmVlaGFuZERyYXdJc0FjdGl2ZVwiXHJcbiAgW2RyYXdTdHlsZV09XCJkcmF3U3R5bGUkIHwgYXN5bmNcIlxyXG4gIFtvdmVybGF5U3R5bGVdPVwib3ZlcmxheVN0eWxlJCB8IGFzeW5jXCJcclxuICBbcmFkaXVzXT1cInJhZGl1c1wiXHJcbiAgW3ByZWRlZmluZWRSYWRpdXNdPVwicHJlZGVmaW5lZFJhZGl1c1wiPlxyXG48L2lnby1nZW9tZXRyeS1mb3JtLWZpZWxkLWlucHV0PlxyXG5cclxuPGRpdiBjbGFzcz1cImhlYWRlclwiPlxyXG4gICAgPG1hdC1zbGlkZS10b2dnbGUgKm5nSWY9XCIhaXNQcmVkZWZpbmVkKClcIlxyXG4gICAgICBbY2hlY2tlZF09XCJkcmF3Q29udHJvbElzQWN0aXZlXCJcclxuICAgICAgW2xhYmVsUG9zaXRpb25dPVwiJ2JlZm9yZSdcIlxyXG4gICAgICAoY2hhbmdlKT1cIm9uRHJhd0NvbnRyb2xDaGFuZ2UoKVwiPlxyXG4gICAgICB7eydpZ28uZ2VvLnNwYXRpYWxGaWx0ZXIuZHJhd0NvbnRyb2wnIHwgdHJhbnNsYXRlfX1cclxuICAgIDwvbWF0LXNsaWRlLXRvZ2dsZT5cclxuICAgIDxtYXQtc2xpZGUtdG9nZ2xlICpuZ0lmPVwiIWlzUHJlZGVmaW5lZCgpXCJcclxuICAgICAgW2NoZWNrZWRdPVwiZnJlZWhhbmREcmF3SXNBY3RpdmVcIlxyXG4gICAgICBbbGFiZWxQb3NpdGlvbl09XCInYmVmb3JlJ1wiXHJcbiAgICAgIChjaGFuZ2UpPVwib25mcmVlaGFuZENvbnRyb2xDaGFuZ2UoKVwiPlxyXG4gICAgICB7eydpZ28uZ2VvLnNwYXRpYWxGaWx0ZXIuZnJlZWhhbmRDb250cm9sJyB8IHRyYW5zbGF0ZX19XHJcbiAgICA8L21hdC1zbGlkZS10b2dnbGU+XHJcbjwvZGl2PlxyXG5cclxuPGRpdiBjbGFzcz1cImJ1ZmZlci11bml0XCIgKm5nSWY9XCJpc1BvbHlnb24oKVwiPlxyXG4gIDxmb3JtIGNsYXNzPVwiYnVmZmVyLWZvcm1cIj5cclxuICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImJ1ZmZlclwiPlxyXG4gICAgICA8aW5wdXQgdHlwZT1cIm51bWJlclwiIG1hdElucHV0IHBsYWNlaG9sZGVyPVwie3snaWdvLmdlby5zcGF0aWFsRmlsdGVyLmJ1ZmZlcicgfCB0cmFuc2xhdGV9fVwiIFtmb3JtQ29udHJvbF09XCJidWZmZXJGb3JtQ29udHJvbFwiXHJcbiAgICAgIFt2YWx1ZV09XCIwXCIgW3JlYWRvbmx5XT1cInRoaXMuZm9ybUNvbnRyb2wudmFsdWUgPT09IG51bGxcIj5cclxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgPC9mb3JtPlxyXG5cclxuICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJ1bml0LWZpZWxkXCI+XHJcbiAgICA8bWF0LXNlbGVjdFxyXG4gICAgW3ZhbHVlXT1cIm1lYXN1cmVVbml0XCJcclxuICAgIChzZWxlY3Rpb25DaGFuZ2UpPVwib25NZWFzdXJlVW5pdENoYW5nZSgkZXZlbnQudmFsdWUpXCI+XHJcbiAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgbWVhc3VyZVVuaXQgb2YgbWVhc3VyZVVuaXRzXCIgW3ZhbHVlXT1cIm1lYXN1cmVVbml0XCI+XHJcbiAgICAgICAge3soJ2lnby5nZW8ubWVhc3VyZS4nICsgbWVhc3VyZVVuaXQpIHwgdHJhbnNsYXRlfX1cclxuICAgIDwvbWF0LW9wdGlvbj5cclxuICAgIDwvbWF0LXNlbGVjdD5cclxuICA8L21hdC1mb3JtLWZpZWxkPlxyXG48L2Rpdj5cclxuXHJcbjxkaXYgY2xhc3M9XCJyYWRpdXMtdW5pdFwiICpuZ0lmPVwiaXNQb2ludCgpXCI+XHJcbiAgPGZvcm0gY2xhc3M9XCJyYWRpdXMtZm9ybVwiPlxyXG4gICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwicmFkaXVzXCI+XHJcbiAgICAgIDxpbnB1dCB0eXBlPVwibnVtYmVyXCIgbWF0SW5wdXQgcGxhY2Vob2xkZXI9XCJ7eydpZ28uZ2VvLnNwYXRpYWxGaWx0ZXIucmFkaXVzJyB8IHRyYW5zbGF0ZX19XCIgW2Zvcm1Db250cm9sXT1cInJhZGl1c0Zvcm1Db250cm9sXCJcclxuICAgICAgW3ZhbHVlXT1cIjEwMDBcIiAoaW5wdXQpPVwiZ2V0UmFkaXVzKClcIiBbcmVhZG9ubHldPVwidGhpcy5mcmVlaGFuZERyYXdJc0FjdGl2ZSAmJiB0aGlzLmZvcm1Db250cm9sLnZhbHVlID09PSBudWxsXCI+XHJcbiAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gIDwvZm9ybT5cclxuXHJcbiAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwidW5pdC1maWVsZFwiPlxyXG4gICAgPG1hdC1zZWxlY3RcclxuICAgIFt2YWx1ZV09XCJtZWFzdXJlVW5pdFwiXHJcbiAgICAoc2VsZWN0aW9uQ2hhbmdlKT1cIm9uTWVhc3VyZVVuaXRDaGFuZ2UoJGV2ZW50LnZhbHVlKVwiPlxyXG4gICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IG1lYXN1cmVVbml0IG9mIG1lYXN1cmVVbml0c1wiIFt2YWx1ZV09XCJtZWFzdXJlVW5pdFwiPlxyXG4gICAgICAgIHt7KCdpZ28uZ2VvLm1lYXN1cmUuJyArIG1lYXN1cmVVbml0KSB8IHRyYW5zbGF0ZX19XHJcbiAgICA8L21hdC1vcHRpb24+XHJcbiAgICA8L21hdC1zZWxlY3Q+XHJcbiAgPC9tYXQtZm9ybS1maWVsZD5cclxuPC9kaXY+XHJcblxyXG48bWF0LWxhYmVsIGNsYXNzPVwidGl0bGUgbWF0LXR5cG9ncmFwaHlcIj57eydpZ28uZ2VvLnNwYXRpYWxGaWx0ZXIuc2VhcmNoJyB8IHRyYW5zbGF0ZX19IDogPC9tYXQtbGFiZWw+XHJcbjxtYXQtcmFkaW8tZ3JvdXAgW3ZhbHVlXT1cInNlbGVjdGVkSXRlbVR5cGVcIj5cclxuICAgIDxtYXQtcmFkaW8tYnV0dG9uICpuZ0Zvcj1cImxldCBpdGVtIG9mIGl0ZW1UeXBlXCJcclxuICAgICAgW3ZhbHVlXT1cIml0ZW1cIlxyXG4gICAgICAoY2hhbmdlKT1cIm9uSXRlbVR5cGVDaGFuZ2UoJGV2ZW50KVwiPlxyXG4gICAgICB7eydpZ28uZ2VvLnNwYXRpYWxGaWx0ZXIuJyArIGl0ZW0gfCB0cmFuc2xhdGV9fVxyXG4gICAgPC9tYXQtcmFkaW8tYnV0dG9uPlxyXG48L21hdC1yYWRpby1ncm91cD5cclxuXHJcbjxkaXYgY2xhc3M9XCJ0aGVtYXRpY3NcIiAqbmdJZj1cIihzZWxlY3RlZEl0ZW1UeXBlPT09J1RoZW1hdGljcycgJiYgIXRhYmxlVGVtcGxhdGUpIHx8IChzZWxlY3RlZEl0ZW1UeXBlPT09J1RoZW1hdGljcycgJiYgdGFibGVUZW1wbGF0ZSAmJiAhbGlzdElzVmlzaWJsZSlcIj5cclxuICA8bWF0LXRhYmxlPlxyXG4gICAgICA8IS0tIE5hbWUgQ29sdW1uIC0tPlxyXG4gICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cIm5hbWVcIj5cclxuICAgICAgICA8bWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmIGNsYXNzPVwidGhlbWF0aWNzLWhlYWRlclwiPnt7J2lnby5nZW8uc3BhdGlhbEZpbHRlci5UaGVtYXRpY3MnIHwgdHJhbnNsYXRlfX08L21hdC1oZWFkZXItY2VsbD5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICA8IS0tIFNlbGVjdCBDb2x1bW4gLS0+XHJcbiAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwic2VsZWN0XCI+XHJcbiAgICAgICAgPG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZiBjbGFzcz1cImNoZWNrcy1oZWFkZXJcIj5cclxuICAgICAgICAgIDxtYXQtY2hlY2tib3ggKGNoYW5nZSk9XCIkZXZlbnQgPyBtYXN0ZXJUb2dnbGUoKSA6IG51bGxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJpc0FsbFNlbGVjdGVkKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbaW5kZXRlcm1pbmF0ZV09XCJzZWxlY3RlZFRoZW1hdGljcy5oYXNWYWx1ZSgpICYmICFpc0FsbFNlbGVjdGVkKClcIj5cclxuICAgICAgICAgIDwvbWF0LWNoZWNrYm94PlxyXG4gICAgICAgIDwvbWF0LWhlYWRlci1jZWxsPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgPG1hdC1oZWFkZXItcm93ICptYXRIZWFkZXJSb3dEZWY9XCJkaXNwbGF5ZWRDb2x1bW5zXCI+PC9tYXQtaGVhZGVyLXJvdz5cclxuICAgIDxtYXQtcm93ICptYXRSb3dEZWY9XCJsZXQgcm93OyBjb2x1bW5zOiBkaXNwbGF5ZWRDb2x1bW5zO1wiPjwvbWF0LXJvdz5cclxuXHJcbiAgPC9tYXQtdGFibGU+XHJcblxyXG4gIDxtYXQtdHJlZSBbZGF0YVNvdXJjZV09XCJkYXRhU291cmNlXCIgW3RyZWVDb250cm9sXT1cInRyZWVDb250cm9sXCI+XHJcbiAgICA8IS0tIFRoaXMgaXMgdGhlIHRyZWUgbm9kZSB0ZW1wbGF0ZSBmb3IgbGVhZiBub2RlcyAtLT5cclxuICAgIDxtYXQtdHJlZS1ub2RlICptYXRUcmVlTm9kZURlZj1cImxldCBub2RlXCIgbWF0VHJlZU5vZGVUb2dnbGU+XHJcbiAgICAgIDxsaSBjbGFzcz1cIm1hdC10cmVlLW5vZGVcIj5cclxuICAgICAgICA8IS0tIHVzZSBhIGRpc2FibGVkIGJ1dHRvbiB0byBwcm92aWRlIHBhZGRpbmcgZm9yIHRyZWUgbGVhZiAtLT5cclxuICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiBkaXNhYmxlZD48L2J1dHRvbj5cclxuICAgICAgICB7e25vZGUubmFtZX19XHJcbiAgICAgICAgPG1hdC1jaGVja2JveCBjbGFzcz1cInRyZWUtY2hlY2tcIiAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcclxuICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwiJGV2ZW50ID8gb25Ub2dnbGVDaGFuZ2Uobm9kZSkgOiBudWxsXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cInNlbGVjdGVkVGhlbWF0aWNzLmlzU2VsZWN0ZWQobm9kZSlcIj5cclxuICAgICAgICA8L21hdC1jaGVja2JveD5cclxuICAgICAgPC9saT5cclxuICAgIDwvbWF0LXRyZWUtbm9kZT5cclxuXHJcbiAgICA8IS0tIFRoaXMgaXMgdGhlIHRyZWUgbm9kZSB0ZW1wbGF0ZSBmb3IgZXhwYW5kYWJsZSBub2RlcyAtLT5cclxuICAgIDxtYXQtbmVzdGVkLXRyZWUtbm9kZSAqbWF0VHJlZU5vZGVEZWY9XCJsZXQgbm9kZTsgd2hlbjogaGFzQ2hpbGRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibWF0LXRyZWUtbm9kZVwiPlxyXG4gICAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b25cclxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uVG9nZ2xlQ2xpY2sobm9kZSlcIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uIFtzdmdJY29uXT1cInRyZWVDb250cm9sLmlzRXhwYW5kZWQobm9kZSkgPyAnY2hldnJvbi1kb3duJyA6ICdjaGV2cm9uLXJpZ2h0J1wiPjwvbWF0LWljb24+XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIHt7bm9kZS5uYW1lfX1cclxuICAgICAgICAgIDxtYXQtY2hlY2tib3ggY2xhc3M9XCJ0cmVlLWNoZWNrLTJcIiAoY2hhbmdlKT1cIiRldmVudCA/IGNoaWxkcmVuc1RvZ2dsZShub2RlKSA6IG51bGxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJpc0FsbFNlbGVjdGVkKG5vZGUpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2luZGV0ZXJtaW5hdGVdPVwiaGFzQ2hpbGRyZW5TZWxlY3RlZChub2RlKSAmJiAhaXNBbGxTZWxlY3RlZChub2RlKVwiPlxyXG4gICAgICAgICAgPC9tYXQtY2hlY2tib3g+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPHVsIGNsYXNzPVwidHJlZS11bFwiIFtjbGFzcy5leGFtcGxlLXRyZWUtaW52aXNpYmxlXT1cIiF0cmVlQ29udHJvbC5pc0V4cGFuZGVkKG5vZGUpXCI+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyIG1hdFRyZWVOb2RlT3V0bGV0PjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvdWw+XHJcbiAgICA8L21hdC1uZXN0ZWQtdHJlZS1ub2RlPlxyXG5cclxuICA8L21hdC10cmVlPlxyXG48L2Rpdj5cclxuXHJcbjxkaXYgY2xhc3M9XCJidXR0b25zXCI+XHJcblxyXG4gIDxidXR0b24gKm5nSWY9XCJpc1ByZWRlZmluZWQoKVwiIG1hdC1yYWlzZWQtYnV0dG9uIGNsYXNzPVwiY2xlYXItc2VhcmNoLWJ1dHRvblwiIFtkaXNhYmxlZF09XCJkaXNhYmxlZENsZWFyU2VhcmNoKClcIlxyXG4gICAgKGNsaWNrKT1cImNsZWFyU2VhcmNoKClcIj5cclxuICAgICAge3snaWdvLmdlby5zcGF0aWFsRmlsdGVyLmNsZWFyU2VhcmNoJyB8IHRyYW5zbGF0ZX19XHJcbiAgPC9idXR0b24+XHJcblxyXG4gIDxidXR0b24gKm5nSWY9XCJpc1BvbHlnb24oKSB8fCBpc1BvaW50KClcIiBtYXQtcmFpc2VkLWJ1dHRvbiBjbGFzcz1cImNsZWFyLWZvcm0tYnV0dG9uXCIgW2Rpc2FibGVkXT1cInRoaXMuZm9ybUNvbnRyb2wudmFsdWUgPT09IG51bGxcIlxyXG4gICAgKGNsaWNrKT1cImNsZWFyRHJhd1pvbmUoKVwiPlxyXG4gICAge3snaWdvLmdlby5zcGF0aWFsRmlsdGVyLmNsZWFyRm9ybScgfCB0cmFuc2xhdGV9fVxyXG4gIDwvYnV0dG9uPlxyXG5cclxuICA8YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uIGNsYXNzPVwic2VhcmNoLWJ1dHRvblwiIFtkaXNhYmxlZF09XCJkaXNhYmxlU2VhcmNoQnV0dG9uKClcIiBjb2xvcj1cInByaW1hcnlcIlxyXG4gICAgKGNsaWNrKT1cInRvZ2dsZVNlYXJjaEJ1dHRvbigpXCI+XHJcbiAgICB7eydpZ28uZ2VvLnNwYXRpYWxGaWx0ZXIuZ29TZWFyY2gnIHwgdHJhbnNsYXRlfX1cclxuICA8L2J1dHRvbj5cclxuXHJcbiAgPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiBjbGFzcz1cInJlbW92ZS1idXR0b25cIiBbZGlzYWJsZWRdPVwiYWxsTGF5ZXJzLmxlbmd0aCA9PT0gMFwiIChjbGljayk9XCJjbGVhckJ1dHRvbigpXCI+XHJcbiAgICB7eydpZ28uZ2VvLnNwYXRpYWxGaWx0ZXIucmVtb3ZlTGF5ZXInIHwgdHJhbnNsYXRlfX1cclxuICA8L2J1dHRvbj5cclxuXHJcbiAgPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiBjbGFzcz1cImV4cG9ydC1idXR0b25cIiBbZGlzYWJsZWRdPVwiIXN0b3JlLmVudGl0aWVzJC5nZXRWYWx1ZSgpLmxlbmd0aFwiIChjbGljayk9XCJleHBvcnQuZW1pdCgpXCI+XHJcbiAgICB7eydpZ28uZ2VvLnNwYXRpYWxGaWx0ZXIuZXhwb3J0TGF5ZXInIHwgdHJhbnNsYXRlfX1cclxuICA8L2J1dHRvbj5cclxuXHJcbjwvZGl2PlxyXG5cclxuPGJ1dHRvblxyXG4gIGNsYXNzPVwiY2hldnJvbi1kb3duXCJcclxuICAqbmdJZj1cInN0b3JlLmFsbCgpLmxlbmd0aCAmJiB0YWJsZVRlbXBsYXRlICYmICFsaXN0SXNWaXNpYmxlXCJcclxuICBtYXQtaWNvbi1idXR0b25cclxuICBtYXRUb29sdGlwU2hvd0RlbGF5PVwiNTAwXCJcclxuICBbbWF0VG9vbHRpcF09XCInaWdvLmdlby5zcGF0aWFsRmlsdGVyLnNob3dTZWFyY2hSZXN1bHRzJyB8IHRyYW5zbGF0ZVwiXHJcbiAgKGNsaWNrKT1cInRvZ2dsZVZpc2libGVMaXN0KClcIj5cclxuICA8bWF0LWljb24gc3ZnSWNvbj1cImNoZXZyb24tZG93blwiPjwvbWF0LWljb24+XHJcbjwvYnV0dG9uPlxyXG5cclxuPGRpdiBjbGFzcz1cInJlc3VsdHNcIiAqbmdJZj1cInN0b3JlLmFsbCgpLmxlbmd0aCAmJiB0YWJsZVRlbXBsYXRlICYmIGxpc3RJc1Zpc2libGVcIj5cclxuICA8YnV0dG9uXHJcbiAgICAqbmdJZj1cImxpc3RJc1Zpc2libGVcIlxyXG4gICAgbWF0LWljb24tYnV0dG9uXHJcbiAgICBtYXRUb29sdGlwU2hvd0RlbGF5PVwiNTAwXCJcclxuICAgIFttYXRUb29sdGlwXT1cIidpZ28uZ2VvLnNwYXRpYWxGaWx0ZXIuaGlkZVNlYXJjaFJlc3VsdHMnIHwgdHJhbnNsYXRlXCJcclxuICAgIChjbGljayk9XCJ0b2dnbGVWaXNpYmxlTGlzdCgpXCI+XHJcbiAgPG1hdC1pY29uIHN2Z0ljb249XCJjaGV2cm9uLXVwXCI+PC9tYXQtaWNvbj5cclxuICA8L2J1dHRvbj5cclxuICA8aWdvLWVudGl0eS10YWJsZVxyXG4gICAgY2xhc3M9XCJyZXN1bHRzLWxpc3RcIlxyXG4gICAgW3RlbXBsYXRlXT1cInRhYmxlVGVtcGxhdGVcIlxyXG4gICAgW3N0b3JlXT1cInN0b3JlXCJcclxuICAgIChlbnRpdHlTZWxlY3RDaGFuZ2UpPVwiZW50aXR5Q2hhbmdlLmVtaXQoJGV2ZW50KVwiPlxyXG4gIDwvaWdvLWVudGl0eS10YWJsZT5cclxuPC9kaXY+XHJcbiJdfQ==
1089
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BhdGlhbC1maWx0ZXItaXRlbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9maWx0ZXIvc3BhdGlhbC1maWx0ZXIvc3BhdGlhbC1maWx0ZXItaXRlbS9zcGF0aWFsLWZpbHRlci1pdGVtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dlby9zcmMvbGliL2ZpbHRlci9zcGF0aWFsLWZpbHRlci9zcGF0aWFsLWZpbHRlci1pdGVtL3NwYXRpYWwtZmlsdGVyLWl0ZW0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBQ0wsdUJBQXVCLEVBRXZCLE1BQU0sRUFDTixZQUFZLEVBR2IsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUEwQixpQkFBaUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQzdGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUUxRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUUzRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsZUFBZSxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUlyRCxPQUFPLEtBQUssT0FBTyxNQUFNLFVBQVUsQ0FBQztBQUNwQyxPQUFPLEtBQUssTUFBTSxNQUFNLFNBQVMsQ0FBQztBQUVsQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUVqRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNyRCxPQUFPLEVBQWUsa0NBQWtDLEVBQUUseUJBQXlCLEVBQXVCLE1BQU0sY0FBYyxDQUFDO0FBQy9ILE9BQU8sRUFBUyxXQUFXLEVBQUUsTUFBTSx1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O2tCQURSLEtBQUs7WUFrQkcsTUFBTTtrQkFBZCxLQUFLO1lBRUcsU0FBUztrQkFBakIsS0FBSztZQUdGLGNBQWM7a0JBRGpCLEtBQUs7WUFTSSxZQUFZO2tCQUFyQixNQUFNO1lBRUcsY0FBYztrQkFBdkIsTUFBTTtZQUVHLGNBQWM7a0JBQXZCLE1BQU07WUFFRyxhQUFhO2tCQUF0QixNQUFNO1lBRUcsV0FBVztrQkFBcEIsTUFBTTtZQUNHLG9CQUFvQjtrQkFBN0IsTUFBTTtZQUNHLGlCQUFpQjtrQkFBMUIsTUFBTTtZQUVHLFdBQVc7a0JBQXBCLE1BQU07WUFDRyxlQUFlO2tCQUF4QixNQUFNO1lBQ0csZ0JBQWdCO2tCQUF6QixNQUFNO1lBRUcsZ0JBQWdCO2tCQUF6QixNQUFNO1lBRUcsZ0JBQWdCO2tCQUF6QixNQUFNO1lBRUcsTUFBTTtrQkFBZixNQUFNO1lBRUcsYUFBYTtrQkFBdEIsTUFBTTtZQUNHLFlBQVk7a0JBQXJCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgT2xGZWF0dXJlIGZyb20gJ29sL0ZlYXR1cmUnO1xuaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBPdXRwdXQsXG4gIEV2ZW50RW1pdHRlcixcbiAgT25EZXN0cm95LFxuICBPbkluaXRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTcGF0aWFsRmlsdGVyUXVlcnlUeXBlLCBTcGF0aWFsRmlsdGVyVHlwZSB9IGZyb20gJy4uLy4uL3NoYXJlZC9zcGF0aWFsLWZpbHRlci5lbnVtJztcbmltcG9ydCB7IFNlbGVjdGlvbk1vZGVsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvbGxlY3Rpb25zJztcbmltcG9ydCB7IElnb01hcCB9IGZyb20gJy4uLy4uLy4uL21hcCc7XG5pbXBvcnQgeyBTcGF0aWFsRmlsdGVySXRlbVR5cGUgfSBmcm9tICcuLy4uLy4uL3NoYXJlZC9zcGF0aWFsLWZpbHRlci5lbnVtJztcbmltcG9ydCB7IEZlYXR1cmUgfSBmcm9tICcuLy4uLy4uLy4uL2ZlYXR1cmUvc2hhcmVkL2ZlYXR1cmUuaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBVbnR5cGVkRm9ybUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHR5cGUgeyBUeXBlIH0gZnJvbSAnb2wvZ2VvbS9HZW9tZXRyeSc7XG5pbXBvcnQgdHlwZSB7IGRlZmF1bHQgYXMgT2xHZW9tZXRyeSB9IGZyb20gJ29sL2dlb20vR2VvbWV0cnknO1xuaW1wb3J0IHsgR2VvSlNPTkdlb21ldHJ5IH0gZnJvbSAnLi4vLi4vLi4vZ2VvbWV0cnkvc2hhcmVkL2dlb21ldHJ5LmludGVyZmFjZXMnO1xuaW1wb3J0ICogYXMgb2xTdHlsZSBmcm9tICdvbC9zdHlsZSc7XG5pbXBvcnQgKiBhcyBvbHByb2ogZnJvbSAnb2wvcHJvaic7XG5pbXBvcnQgT2xQb2ludCBmcm9tICdvbC9nZW9tL1BvaW50JztcbmltcG9ydCB7IE1hdFRyZWVOZXN0ZWREYXRhU291cmNlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdHJlZSc7XG5pbXBvcnQgeyBTcGF0aWFsRmlsdGVyU2VydmljZSB9IGZyb20gJy4uLy4uL3NoYXJlZC9zcGF0aWFsLWZpbHRlci5zZXJ2aWNlJztcbmltcG9ydCB7IE1lYXN1cmVMZW5ndGhVbml0IH0gZnJvbSAnLi4vLi4vLi4vbWVhc3VyZSc7XG5pbXBvcnQgeyBFbnRpdHlTdG9yZSwgRW50aXR5U3RvcmVGaWx0ZXJTZWxlY3Rpb25TdHJhdGVneSwgRW50aXR5VGFibGVDb2x1bW5SZW5kZXJlciwgRW50aXR5VGFibGVUZW1wbGF0ZSB9IGZyb20gJ0BpZ28yL2NvbW1vbic7XG5pbXBvcnQgeyBMYXllciwgVmVjdG9yTGF5ZXIgfSBmcm9tICcuLi8uLi8uLi9sYXllci9zaGFyZWQnO1xuaW1wb3J0IHsgTmVzdGVkVHJlZUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9jZGsvdHJlZSc7XG5pbXBvcnQgeyBTcGF0aWFsRmlsdGVyVGhlbWF0aWMgfSBmcm9tICcuLy4uLy4uL3NoYXJlZC9zcGF0aWFsLWZpbHRlci5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgTWVzc2FnZVNlcnZpY2UsIExhbmd1YWdlU2VydmljZSB9IGZyb20gJ0BpZ28yL2NvcmUnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBGZWF0dXJlTW90aW9uLCBGZWF0dXJlU3RvcmVTZWxlY3Rpb25TdHJhdGVneSB9IGZyb20gJy4uLy4uLy4uL2ZlYXR1cmUnO1xuaW1wb3J0IHsgRmVhdHVyZURhdGFTb3VyY2UgfSBmcm9tICcuLi8uLi8uLi9kYXRhc291cmNlL3NoYXJlZCc7XG5cbi8qKlxuICogU3BhdGlhbC1GaWx0ZXItSXRlbSAoc2VhcmNoIHBhcmFtZXRlcnMpXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2lnby1zcGF0aWFsLWZpbHRlci1pdGVtJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NwYXRpYWwtZmlsdGVyLWl0ZW0uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zcGF0aWFsLWZpbHRlci1pdGVtLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFNwYXRpYWxGaWx0ZXJJdGVtQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95LCBPbkluaXQge1xuXG4gIEBJbnB1dCgpIG1hcDogSWdvTWFwO1xuXG4gIEBJbnB1dCgpXG4gIGdldCB0eXBlKCk6IFNwYXRpYWxGaWx0ZXJUeXBlIHtcbiAgICByZXR1cm4gdGhpcy5fdHlwZTtcbiAgfVxuICBzZXQgdHlwZSh0eXBlOiBTcGF0aWFsRmlsdGVyVHlwZSkge1xuICAgIHRoaXMuX3R5cGUgPSB0eXBlO1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5nZW9tZXRyeVR5cGVzLmZpbmRJbmRleChnZW9tID0+IGdlb20gPT09IHRoaXMudHlwZSk7XG4gICAgdGhpcy5nZW9tZXRyeVR5cGUgPSB0aGlzLmdlb21ldHJ5VHlwZXNbaW5kZXhdO1xuICAgIHRoaXMuZm9ybUNvbnRyb2wucmVzZXQoKTtcbiAgICB0aGlzLnJhZGl1cyA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLmRyYXdHdWlkZSQubmV4dChudWxsKTtcbiAgICB0aGlzLmRyYXdTdHlsZSQubmV4dCh1bmRlZmluZWQpO1xuXG4gICAgLy8gTmVjZXNzYXJ5IHRvIGtlZXAgcmVmZXJlbmNlIHRvIHRoZSBnZW9tZXRyeSBmb3JtIGZpZWxkIGlucHV0XG4gICAgaWYgKHRoaXMudHlwZSA9PT0gU3BhdGlhbEZpbHRlclR5cGUuUHJlZGVmaW5lZCkge1xuICAgICAgY29uc3QgZ2VvanNvbjogR2VvSlNPTkdlb21ldHJ5ID0ge1xuICAgICAgICB0eXBlOiAnUG9pbnQnLFxuICAgICAgICBjb29yZGluYXRlczogJydcbiAgICAgIH07XG4gICAgICB0aGlzLmZvcm1Db250cm9sLnNldFZhbHVlKGdlb2pzb24pO1xuICAgIH1cblxuICAgIC8vIE5lY2Vzc2FyeSB0byBhcHBseSB0aGUgcmlnaHQgc3R5bGUgd2hlbiBnZW9tZXRyeSB0eXBlIGlzIFBvaW50XG4gICAgaWYgKHRoaXMudHlwZSA9PT0gU3BhdGlhbEZpbHRlclR5cGUuUG9pbnQpIHtcbiAgICAgIHRoaXMucmFkaXVzID0gMTAwMDsgLy8gQmFzZSByYWRpdXNcbiAgICAgIHRoaXMucmFkaXVzRm9ybUNvbnRyb2wuc2V0VmFsdWUodGhpcy5yYWRpdXMpO1xuICAgICAgdGhpcy5Qb2ludFN0eWxlID0gKGZlYXR1cmU6IE9sRmVhdHVyZTxPbEdlb21ldHJ5PiwgcmVzb2x1dGlvbjogbnVtYmVyKSA9PiB7XG4gICAgICAgIGNvbnN0IGdlb20gPSBmZWF0dXJlLmdldEdlb21ldHJ5KCkgYXMgT2xQb2ludDtcbiAgICAgICAgY29uc3QgY29vcmRpbmF0ZXMgPSBvbHByb2oudHJhbnNmb3JtKGdlb20uZ2V0Q29vcmRpbmF0ZXMoKSwgdGhpcy5tYXAucHJvamVjdGlvbiwgJ0VQU0c6NDMyNicpO1xuICAgICAgICByZXR1cm4gbmV3IG9sU3R5bGUuU3R5bGUgKHtcbiAgICAgICAgICBpbWFnZTogbmV3IG9sU3R5bGUuQ2lyY2xlICh7XG4gICAgICAgICAgICByYWRpdXM6IHRoaXMucmFkaXVzIC8gKE1hdGguY29zKChNYXRoLlBJIC8gMTgwKSAqIGNvb3JkaW5hdGVzWzFdKSkgLyByZXNvbHV0aW9uLCAvLyBMYXRpdHVkZSBjb3JyZWN0aW9uXG4gICAgICAgICAgICBzdHJva2U6IG5ldyBvbFN0eWxlLlN0cm9rZSh7XG4gICAgICAgICAgICAgIHdpZHRoOiAyLFxuICAgICAgICAgICAgICBjb2xvcjogJ3JnYmEoMCwgMTUzLCAyNTUpJ1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBmaWxsOiBuZXcgb2xTdHlsZS5GaWxsKHtcbiAgICAgICAgICAgICAgY29sb3I6ICdyZ2JhKDAsIDE1MywgMjU1LCAwLjIpJ1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9KVxuICAgICAgICB9KTtcbiAgICAgIH07XG4gICAgICB0aGlzLm92ZXJsYXlTdHlsZSA9IHRoaXMuUG9pbnRTdHlsZTtcbiAgICAgIHRoaXMuZHJhd1N0eWxlJC5uZXh0KHRoaXMub3ZlcmxheVN0eWxlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gSWYgZ2VvbWV0cnkgdHlwZXMgaXMgUG9seWdvblxuICAgICAgdGhpcy5yYWRpdXMgPSB1bmRlZmluZWQ7XG4gICAgICB0aGlzLlBvbHlTdHlsZSA9ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBvbFN0eWxlLlN0eWxlICh7XG4gICAgICAgICAgc3Ryb2tlOiBuZXcgb2xTdHlsZS5TdHJva2Uoe1xuICAgICAgICAgICAgd2lkdGg6IDIsXG4gICAgICAgICAgICBjb2xvcjogJ3JnYmEoMCwgMTUzLCAyNTUpJ1xuICAgICAgICAgIH0pLFxuICAgICAgICAgIGZpbGw6IG5ldyBvbFN0eWxlLkZpbGwoe1xuICAgICAgICAgICAgY29sb3I6ICdyZ2JhKDAsIDE1MywgMjU1LCAwLjIpJ1xuICAgICAgICAgIH0pXG4gICAgICAgIH0pO1xuICAgICAgfTtcbiAgICAgIGNvbnN0IGNvbG9yID0gWzAsIDE1MywgMjU1XTtcbiAgICAgIGNvbnN0IGRyYXdTdHlsZSA9ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBvbFN0eWxlLlN0eWxlKHtcbiAgICAgICAgICBpbWFnZTogbmV3IG9sU3R5bGUuQ2lyY2xlICh7XG4gICAgICAgICAgICByYWRpdXM6IDgsXG4gICAgICAgICAgICBzdHJva2U6IG5ldyBvbFN0eWxlLlN0cm9rZSh7XG4gICAgICAgICAgICAgIHdpZHRoOiAyLFxuICAgICAgICAgICAgICBjb2xvcjogJ3JnYmEoMCwgMTUzLCAyNTUpJ1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBmaWxsOiBuZXcgb2xTdHlsZS5GaWxsKHtcbiAgICAgICAgICAgICAgY29sb3I6ICdyZ2JhKDAsIDE1MywgMjU1LCAwLjIpJ1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBzdHJva2U6IG5ldyBvbFN0eWxlLlN0cm9rZSh7XG4gICAgICAgICAgICBjb2xvcjogY29sb3IuY29uY2F0KFsxXSksXG4gICAgICAgICAgICB3aWR0aDogMlxuICAgICAgICAgIH0pLFxuICAgICAgICAgIGZpbGw6ICBuZXcgb2xTdHlsZS5GaWxsKHtcbiAgICAgICAgICAgIGNvbG9yOiBjb2xvci5jb25jYXQoWzAuMl0pXG4gICAgICAgICAgfSlcbiAgICAgICAgfSk7XG4gICAgICB9O1xuICAgICAgdGhpcy5vdmVybGF5U3R5bGUgPSB0aGlzLlBvbHlTdHlsZTtcbiAgICAgIHRoaXMuZHJhd1N0eWxlJC5uZXh0KGRyYXdTdHlsZSk7XG4gICAgfVxuICAgIHRoaXMub3ZlcmxheVN0eWxlJC5uZXh0KHRoaXMub3ZlcmxheVN0eWxlKTtcbiAgfVxuICBwcml2YXRlIF90eXBlOiBTcGF0aWFsRmlsdGVyVHlwZTtcblxuICBASW5wdXQoKSBxdWVyeVR5cGU6IFNwYXRpYWxGaWx0ZXJRdWVyeVR5cGU7XG5cbiAgQElucHV0KCkgem9uZTogRmVhdHVyZTtcblxuICBASW5wdXQoKSBsb2FkaW5nO1xuXG4gIEBJbnB1dCgpXG4gIGdldCBzdG9yZSgpOiBFbnRpdHlTdG9yZTxGZWF0dXJlPiB7XG4gICAgcmV0dXJuIHRoaXMuX3N0b3JlO1xuICB9XG4gIHNldCBzdG9yZShzdG9yZTogRW50aXR5U3RvcmU8RmVhdHVyZT4pIHtcbiAgICB0aGlzLl9zdG9yZSA9IHN0b3JlO1xuICAgIHRoaXMuX3N0b3JlLmVudGl0aWVzJC5zdWJzY3JpYmUoKCkgPT4geyB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTsgfSk7XG4gIH1cbiAgcHJpdmF0ZSBfc3RvcmU6IEVudGl0eVN0b3JlPEZlYXR1cmU+O1xuXG4gIC8qKlxuICAgKiBBdmFpbGFibGUgbWVhc3VyZSB1bml0cyBmb3IgdGhlIG1lYXN1cmUgdHlwZSBnaXZlblxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGdldCBtZWFzdXJlVW5pdHMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBbTWVhc3VyZUxlbmd0aFVuaXQuTWV0ZXJzLCBNZWFzdXJlTGVuZ3RoVW5pdC5LaWxvbWV0ZXJzXTtcbiAgfVxuXG4gIEBJbnB1dCgpIGxheWVyczogTGF5ZXJbXSA9IFtdO1xuXG4gIEBJbnB1dCgpIGFsbExheWVyczogTGF5ZXJbXSA9IFtdO1xuXG4gIEBJbnB1dCgpXG4gIGdldCB0aGVtYXRpY0xlbmd0aCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl90aGVtYXRpY0xlbmd0aDtcbiAgfVxuICBzZXQgdGhlbWF0aWNMZW5ndGgodmFsdWU6IG51bWJlcikge1xuICAgIHRoaXMuX3RoZW1hdGljTGVuZ3RoID0gdmFsdWU7XG4gIH1cbiAgcHJpdmF0ZSBfdGhlbWF0aWNMZW5ndGg6IG51bWJlcjtcblxuICBAT3V0cHV0KCkgdG9nZ2xlU2VhcmNoID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIEBPdXRwdXQoKSBpdGVtVHlwZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8U3BhdGlhbEZpbHRlckl0ZW1UeXBlPigpO1xuXG4gIEBPdXRwdXQoKSB0aGVtYXRpY0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8U3BhdGlhbEZpbHRlclRoZW1hdGljW10+KCk7XG5cbiAgQE91dHB1dCgpIGRyYXdab25lRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPEZlYXR1cmU+KCk7XG5cbiAgQE91dHB1dCgpIGJ1ZmZlckV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG4gIEBPdXRwdXQoKSB6b25lV2l0aEJ1ZmZlckNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8RmVhdHVyZT4oKTtcbiAgQE91dHB1dCgpIG1lYXN1cmVVbml0Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxNZWFzdXJlTGVuZ3RoVW5pdD4oKTtcblxuICBAT3V0cHV0KCkgcmFkaXVzRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcbiAgQE91dHB1dCgpIGZyZWVoYW5kQ29udHJvbCA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgQE91dHB1dCgpIHByZWRlZmluZWRSYWRpdXMgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgQE91dHB1dCgpIGNsZWFyQnV0dG9uRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgQE91dHB1dCgpIGNsZWFyU2VhcmNoRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgQE91dHB1dCgpIGV4cG9ydCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBAT3V0cHV0KCkgb3BlbldvcmtzcGFjZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIGVudGl0eUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIHB1YmxpYyBpdGVtVHlwZTogU3BhdGlhbEZpbHRlckl0ZW1UeXBlW10gPSBbU3BhdGlhbEZpbHRlckl0ZW1UeXBlLkFkZHJlc3MsIFNwYXRpYWxGaWx0ZXJJdGVtVHlwZS5UaGVtYXRpY3NdO1xuICBwdWJsaWMgc2VsZWN0ZWRJdGVtVHlwZTogU3BhdGlhbEZpbHRlckl0ZW1UeXBlID0gU3BhdGlhbEZpbHRlckl0ZW1UeXBlLkFkZHJlc3M7XG4gIHB1YmxpYyBzZWxlY3RlZFNvdXJjZUFkZHJlc3M7XG5cbiAgdHJlZUNvbnRyb2w6IE5lc3RlZFRyZWVDb250cm9sPFNwYXRpYWxGaWx0ZXJUaGVtYXRpYz4gPSBuZXcgTmVzdGVkVHJlZUNvbnRyb2w8U3BhdGlhbEZpbHRlclRoZW1hdGljPihub2RlID0+IG5vZGUuY2hpbGRyZW4pO1xuXG4gIC8vIEZvciB0aGVtYXRpY3MgYW5kIHJlc3VsdHMgdGFibGVzXG4gIHB1YmxpYyBkaXNwbGF5ZWRDb2x1bW5zOiBzdHJpbmdbXSA9IFsnbmFtZScsICdzZWxlY3QnXTtcbiAgcHVibGljIGNoaWxkcmVuczogU3BhdGlhbEZpbHRlclRoZW1hdGljW10gPSBbXTtcbiAgcHVibGljIGdyb3Vwczogc3RyaW5nW10gPSBbXTtcbiAgcHVibGljIHRoZW1hdGljczogU3BhdGlhbEZpbHRlclRoZW1hdGljW10gPSBbXTtcbiAgcHVibGljIGRhdGFTb3VyY2UgPSBuZXcgTWF0VHJlZU5lc3RlZERhdGFTb3VyY2U8U3BhdGlhbEZpbHRlclRoZW1hdGljPigpO1xuICBwdWJsaWMgc2VsZWN0ZWRUaGVtYXRpY3MgPSBuZXcgU2VsZWN0aW9uTW9kZWw8U3BhdGlhbEZpbHRlclRoZW1hdGljPih0cnVlLCBbXSk7XG5cbiAgLy8gRm9yIGdlb21ldHJ5IGZvcm0gZmllbGQgaW5wdXRcbiAgdmFsdWUkOiBCZWhhdmlvclN1YmplY3Q8R2VvSlNPTkdlb21ldHJ5PiA9IG5ldyBCZWhhdmlvclN1YmplY3QodW5kZWZpbmVkKTtcbiAgZHJhd0d1aWRlJDogQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KG51bGwpO1xuICBvdmVybGF5U3R5bGUkOiBCZWhhdmlvclN1YmplY3Q8b2xTdHlsZS5TdHlsZSB8ICgoZmVhdHVyZSwgcmVzb2x1dGlvbikgPT4gb2xTdHlsZS5TdHlsZSk+ID0gbmV3IEJlaGF2aW9yU3ViamVjdCh1bmRlZmluZWQpO1xuICBkcmF3U3R5bGUkOiBCZWhhdmlvclN1YmplY3Q8b2xTdHlsZS5TdHlsZSB8ICgoZmVhdHVyZSwgcmVzb2x1dGlvbikgPT4gb2xTdHlsZS5TdHlsZSk+ID0gbmV3IEJlaGF2aW9yU3ViamVjdCh1bmRlZmluZWQpO1xuXG4gIHByaXZhdGUgdmFsdWUkJDogU3Vic2NyaXB0aW9uO1xuICBwcml2YXRlIHJhZGl1c0NoYW5nZXMkJDogU3Vic2NyaXB0aW9uO1xuICBwcml2YXRlIGJ1ZmZlckNoYW5nZXMkJDogU3Vic2NyaXB0aW9uO1xuXG4gIHB1YmxpYyBmb3JtQ29udHJvbCA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woKTtcbiAgcHVibGljIGdlb21ldHJ5VHlwZTogVHlwZSB8IHN0cmluZztcbiAgcHVibGljIGdlb21ldHJ5VHlwZUZpZWxkID0gZmFsc2U7XG4gIHB1YmxpYyBnZW9tZXRyeVR5cGVzOiBzdHJpbmdbXSA9IFsnUG9pbnQnLCAnUG9seWdvbiddO1xuICBwdWJsaWMgZHJhd0d1aWRlRmllbGQgPSBmYWxzZTtcbiAgcHVibGljIGRyYXdHdWlkZTogbnVtYmVyID0gbnVsbDtcbiAgcHVibGljIGRyYXdHdWlkZVBsYWNlaG9sZGVyID0gJyc7XG4gIHB1YmxpYyBtZWFzdXJlID0gZmFsc2U7XG4gIHB1YmxpYyBkcmF3Q29udHJvbElzQWN0aXZlID0gdHJ1ZTtcbiAgcHVibGljIGZyZWVoYW5kRHJhd0lzQWN0aXZlID0gZmFsc2U7XG4gIHB1YmxpYyBkcmF3U3R5bGU6IG9sU3R5bGUuU3R5bGUgfCAoKGZlYXR1cmUsIHJlc29sdXRpb24pID0+IG9sU3R5bGUuU3R5bGUpO1xuICBwdWJsaWMgZHJhd1pvbmU7XG4gIHB1YmxpYyBvdmVybGF5U3R5bGU6IG9sU3R5bGUuU3R5bGUgfCAoKGZlYXR1cmUsIHJlc29sdXRpb24pID0+IG9sU3R5bGUuU3R5bGUpO1xuICBwdWJsaWMgUG9pbnRTdHlsZTogb2xTdHlsZS5TdHlsZSB8ICgoZmVhdHVyZSwgcmVzb2x1dGlvbikgPT4gb2xTdHlsZS5TdHlsZSk7XG4gIHB1YmxpYyBQb2x5U3R5bGU6IG9sU3R5bGUuU3R5bGUgfCAoKGZlYXR1cmUsIHJlc29sdXRpb24pID0+IG9sU3R5bGUuU3R5bGUpO1xuXG4gIHB1YmxpYyByYWRpdXM6IG51bWJlcjtcbiAgcHVibGljIGJ1ZmZlcjogbnVtYmVyID0gMDtcbiAgcHVibGljIHJhZGl1c0Zvcm1Db250cm9sID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbCgpO1xuICBwdWJsaWMgYnVmZmVyRm9ybUNvbnRyb2wgPSBuZXcgVW50eXBlZEZvcm1Db250cm9sKCk7XG5cbiAgcHVibGljIG1lYXN1cmVVbml0OiBNZWFzdXJlTGVuZ3RoVW5pdCA9IE1lYXN1cmVMZW5ndGhVbml0Lk1ldGVycztcbiAgcHVibGljIHpvbmVXaXRoQnVmZmVyO1xuXG4gIHB1YmxpYyBsaXN0SXNWaXNpYmxlID0gdHJ1ZTtcbiAgcHVibGljIHRhYmxlVGVtcGxhdGU6IEVudGl0eVRhYmxlVGVtcGxhdGU7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBzcGF0aWFsRmlsdGVyU2VydmljZTogU3BhdGlhbEZpbHRlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBtZXNzYWdlU2VydmljZTogTWVzc2FnZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBsYW5ndWFnZVNlcnZpY2U6IExhbmd1YWdlU2VydmljZSkge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnNwYXRpYWxGaWx0ZXJTZXJ2aWNlLmxvYWRUaGVtYXRpY3NMaXN0KClcbiAgICAuc3Vic2NyaWJlKChpdGVtczogU3BhdGlhbEZpbHRlclRoZW1hdGljW10pID0+IHtcbiAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBpdGVtcykge1xuICAgICAgICB0aGlzLmNoaWxkcmVucy5wdXNoKGl0ZW0pO1xuICAgICAgICB0aGlzLmNoaWxkcmVucy5zb3J0KChhLCBiKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGEubmFtZS5sb2NhbGVDb21wYXJlKGIubmFtZSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgdGhpcy5ncm91cHMucHVzaCh0aGlzLmxhbmd1YWdlU2VydmljZS50cmFuc2xhdGUuaW5zdGFudCgnaWdvLmdlby50ZXJyYXBpLmxpbWl0ZXMnKSk7XG4gICAgICBjb25zdCBsaW1pdHM6IFNwYXRpYWxGaWx0ZXJUaGVtYXRpYyA9IHtcbiAgICAgICAgbmFtZTogdGhpcy5ncm91cHNbMF0sXG4gICAgICAgIGNoaWxkcmVuOiBbXVxuICAgICAgfTtcbiAgICAgIHRoaXMudGhlbWF0aWNzLnB1c2gobGltaXRzKTtcbiAgICAgIHRoaXMuY2hpbGRyZW5zLmZvckVhY2goY2hpbGQgPT4ge1xuICAgICAgICBpZiAoY2hpbGQuZ3JvdXAgJiYgKHRoaXMuZ3JvdXBzLmluZGV4T2YoY2hpbGQuZ3JvdXApID09PSAtMSkpIHtcbiAgICAgICAgICB0aGlzLmdyb3Vwcy5wdXNoKGNoaWxkLmdyb3VwKTtcbiAgICAgICAgICBjb25zdCB0aGVtYXRpYzogU3BhdGlhbEZpbHRlclRoZW1hdGljID0ge1xuICAgICAgICAgICAgbmFtZTogY2hpbGQuZ3JvdXAsXG4gICAgICAgICAgICBjaGlsZHJlbjogW11cbiAgICAgICAgICB9O1xuICAgICAgICAgIHRoaXMudGhlbWF0aWNzLnB1c2godGhlbWF0aWMpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFjaGlsZC5ncm91cCkge1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIGNoaWxkLm5hbWUgPT09IHRoaXMubGFuZ3VhZ2VTZXJ2aWNlLnRyYW5zbGF0ZS5pbnN0YW50KCdpZ28uZ2VvLnRlcnJhcGkuQWRtUmVnaW9uJykgfHxcbiAgICAgICAgICAgIGNoaWxkLm5hbWUgPT09IHRoaXMubGFuZ3VhZ2VTZXJ2aWNlLnRyYW5zbGF0ZS5pbnN0YW50KCdpZ28uZ2VvLnRlcnJhcGkuTXVuJykgfHxcbiAgICAgICAgICAgIGNoaWxkLm5hbWUgPT09IHRoaXMubGFuZ3VhZ2VTZXJ2aWNlLnRyYW5zbGF0ZS5pbnN0YW50KCdpZ28uZ2VvLnRlcnJhcGkuQXJyb25kJykgfHxcbiAgICAgICAgICAgIGNoaWxkLm5hbWUgPT09IHRoaXMubGFuZ3VhZ2VTZXJ2aWNlLnRyYW5zbGF0ZS5pbnN0YW50KCdpZ28uZ2VvLnRlcnJhcGkuQ2lyY0ZlZCcpIHx8XG4gICAgICAgICAgICBjaGlsZC5uYW1lID09PSB0aGlzLmxhbmd1YWdlU2VydmljZS50cmFuc2xhdGUuaW5zdGFudCgnaWdvLmdlby50ZXJyYXBpLkNpcmNQcm92JykgfHxcbiAgICAgICAgICAgIGNoaWxkLm5hbWUgPT09IHRoaXMubGFuZ3VhZ2VTZXJ2aWNlLnRyYW5zbGF0ZS5pbnN0YW50KCdpZ28uZ2VvLnRlcnJhcGkuRGlyUmVnJykgfHxcbiAgICAgICAgICAgIGNoaWxkLm5hbWUgPT09IHRoaXMubGFuZ3VhZ2VTZXJ2aWNlLnRyYW5zbGF0ZS5pbnN0YW50KCdpZ28uZ2VvLnRlcnJhcGkuTVJDJykgfHxcbiAgICAgICAgICAgIGNoaWxkLm5hbWUgPT09IHRoaXMubGFuZ3VhZ2VTZXJ2aWNlLnRyYW5zbGF0ZS5pbnN0YW50KCdpZ28uZ2VvLnRlcnJhcGkuUmVnVG91cicpKSB7XG4gICAgICAgICAgICAgIGNoaWxkLmdyb3VwID0gbGltaXRzLm5hbWU7XG4gICAgICAgICAgfSBlbHNlIGlmIChjaGlsZC5uYW1lID09PSB0aGlzLmxhbmd1YWdlU2VydmljZS50cmFuc2xhdGUuaW5zdGFudCgnaWdvLmdlby50ZXJyYXBpLnJvdXRlcycpKSB7XG4gICAgICAgICAgICBjaGlsZC5ncm91cCA9IHRoaXMubGFuZ3VhZ2VTZXJ2aWNlLnRyYW5zbGF0ZS5pbnN0YW50KCdpZ28uZ2VvLnNwYXRpYWxGaWx0ZXIuZ3JvdXAudHJhbnNwb3J0Jyk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IHRoZW1hdGljOiBTcGF0aWFsRmlsdGVyVGhlbWF0aWMgPSB7XG4gICAgICAgICAgICAgIG5hbWU6IGNoaWxkLm5hbWUsXG4gICAgICAgICAgICAgIGNoaWxkcmVuOiBbXSxcbiAgICAgICAgICAgICAgc291cmNlOiBjaGlsZC5zb3VyY2VcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICB0aGlzLnRoZW1hdGljcy5wdXNoKHRoZW1hdGljKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy50aGVtYXRpY3Muc29ydCgoYSwgYikgPT4ge1xuICAgICAgICAgIHJldHVybiBhLm5hbWUubG9jYWxlQ29tcGFyZShiLm5hbWUpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgICAgdGhpcy50aGVtYXRpY3MuZm9yRWFjaCh0aGVtYXRpYyA9PiB7XG4gICAgICAgIGZvciAoY29uc3QgY2hpbGQgb2YgdGhpcy5jaGlsZHJlbnMpIHtcbiAgICAgICAgICBpZiAoY2hpbGQuZ3JvdXAgPT09IHRoZW1hdGljLm5hbWUpIHtcbiAgICAgICAgICAgIHRoZW1hdGljLmNoaWxkcmVuLnB1c2goY2hpbGQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICB0aGlzLmRhdGFTb3VyY2UuZGF0YSA9IHRoaXMudGhlbWF0aWNzO1xuXG4gICAgdGhpcy5kcmF3R3VpZGUkLm5leHQobnVsbCk7XG4gICAgdGhpcy52YWx1ZSQubmV4dCh0aGlzLmZvcm1Db250cm9sLnZhbHVlID8gdGhpcy5mb3JtQ29udHJvbC52YWx1ZSA6IHVuZGVmaW5lZCk7XG4gICAgdGhpcy52YWx1ZSQkID0gdGhpcy5mb3JtQ29udHJvbC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCh2YWx1ZTogR2VvSlNPTkdlb21ldHJ5KSA9PiB7XG4gICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgdGhpcy52YWx1ZSQubmV4dCh2YWx1ZSk7XG4gICAgICAgIHRoaXMuZHJhd1pvbmUgPSB0aGlzLmZvcm1Db250cm9sLnZhbHVlIGFzIEZlYXR1cmU7XG4gICAgICAgIGlmICh0aGlzLmJ1ZmZlciAhPT0gMCkge1xuICAgICAgICAgIHRoaXMuZHJhd1pvbmVFdmVudC5lbWl0KHRoaXMuZHJhd1pvbmUpO1xuICAgICAgICAgIHRoaXMuYnVmZmVyRm9ybUNvbnRyb2wuc2V0VmFsdWUodGhpcy5idWZmZXIpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnZhbHVlJC5uZXh0KHVuZGVmaW5lZCk7XG4gICAgICAgIHRoaXMuZHJhd1pvbmUgPSB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLnZhbHVlJC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5nZXRSYWRpdXMoKTtcbiAgICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5yYWRpdXNDaGFuZ2VzJCQgPSB0aGlzLnJhZGl1c0Zvcm1Db250cm9sLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5nZXRSYWRpdXMoKTtcbiAgICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5idWZmZXJDaGFuZ2VzJCQgPSB0aGlzLmJ1ZmZlckZvcm1Db250cm9sLnZhbHVlQ2hhbmdlc1xuICAgICAgLnBpcGUoXG4gICAgICAgIGRlYm91bmNlVGltZSg1MDApXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xuICAgICAgICBpZiAodGhpcy5tZWFzdXJlVW5pdCA9PT0gTWVhc3VyZUxlbmd0aFVuaXQuTWV0ZXJzICYmIHZhbHVlID4gMCAmJiB2YWx1ZSA8PSAxMDAwMDApIHtcbiAgICAgICAgICB0aGlzLmJ1ZmZlciA9IHZhbHVlO1xuICAgICAgICAgIHRoaXMuYnVmZmVyRXZlbnQuZW1pdCh2YWx1ZSk7XG4gICAgICAgICAgdGhpcy5zcGF0aWFsRmlsdGVyU2VydmljZS5sb2FkQnVmZmVyR2VvbWV0cnkoXG4gICAgICAgICAgICB0aGlzLmRyYXdab25lLFxuICAgICAgICAgICAgU3BhdGlhbEZpbHRlclR5cGUuUG9seWdvbixcbiAgICAgICAgICAgIHZhbHVlXG4gICAgICAgICAgKS5zdWJzY3JpYmUoKGZlYXR1cmVHZW9tOiBGZWF0dXJlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnpvbmVXaXRoQnVmZmVyID0gZmVhdHVyZUdlb207XG4gICAgICAgICAgICB0aGlzLnpvbmVXaXRoQnVmZmVyQ2hhbmdlLmVtaXQodGhpcy56b25lV2l0aEJ1ZmZlcik7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5tZWFzdXJlVW5pdCA9PT0gTWVhc3VyZUxlbmd0aFVuaXQuS2lsb21ldGVycyAmJiB2YWx1ZSA+IDAgJiYgdmFsdWUgPD0gMTAwKSB7XG4gICAgICAgICAgdGhpcy5idWZmZXIgPSB2YWx1ZTtcbiAgICAgICAgICB0aGlzLmJ1ZmZlckV2ZW50LmVtaXQodmFsdWUpO1xuICAgICAgICAgIHRoaXMuc3BhdGlhbEZpbHRlclNlcnZpY2UubG9hZEJ1ZmZlckdlb21ldHJ5KFxuICAgICAgICAgICAgdGhpcy5kcmF3Wm9uZSxcbiAgICAgICAgICAgIFNwYXRpYWxGaWx0ZXJUeXBlLlBvbHlnb24sXG4gICAgICAgICAgICB2YWx1ZSAqIDEwMDBcbiAgICAgICAgICApLnN1YnNjcmliZSgoZmVhdHVyZUdlb206IEZlYXR1cmUpID0+IHtcbiAgICAgICAgICAgIHRoaXMuem9uZVdpdGhCdWZmZXIgPSBmZWF0dXJlR2VvbTtcbiAgICAgICAgICAgIHRoaXMuem9uZVdpdGhCdWZmZXJDaGFuZ2UuZW1pdCh0aGlzLnpvbmVXaXRoQnVmZmVyKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIGlmICh2YWx1ZSA9PT0gMCkge1xuICAgICAgICAgIHRoaXMuYnVmZmVyID0gdmFsdWU7XG4gICAgICAgICAgdGhpcy5idWZmZXJFdmVudC5lbWl0KHZhbHVlKTtcbiAgICAgICAgICB0aGlzLmRyYXdab25lRXZlbnQuZW1pdCh0aGlzLmRyYXdab25lKTtcbiAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICB2YWx1ZSA8IDAgfHxcbiAgICAgICAgICAodGhpcy5tZWFzdXJlVW5pdCA9PT0gTWVhc3VyZUxlbmd0aFVuaXQuTWV0ZXJzICYmIHZhbHVlID4gMTAwMDAwKSB8fFxuICAgICAgICAgICh0aGlzLm1lYXN1cmVVbml0ID09PSBNZWFzdXJlTGVuZ3RoVW5pdC5LaWxvbWV0ZXJzICYmIHZhbHVlID4gMTAwKSkge1xuICAgICAgICAgICAgdGhpcy5idWZmZXJGb3JtQ29udHJvbC5zZXRWYWx1ZSgwKTtcbiAgICAgICAgICAgIHRoaXMuYnVmZmVyID0gMDtcbiAgICAgICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWxlcnQoJ2lnby5nZW8uc3BhdGlhbEZpbHRlci5idWZmZXJBbGVydCcsJ2lnby5nZW8uc3BhdGlhbEZpbHRlci53YXJuaW5nJyk7XG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIGNvbnN0IHNlbGVjdGVkUmVjb3JkU3RyYXRlZ3kgPSBuZXcgRW50aXR5U3RvcmVGaWx0ZXJTZWxlY3Rpb25TdHJhdGVneSh7fSk7XG4gICAgY29uc3Qgc2VsZWN0aW9uU3RyYXRlZ3kgPSBuZXcgRmVhdHVyZVN0b3JlU2VsZWN0aW9uU3RyYXRlZ3koe1xuICAgICAgbGF5ZXI6IG5ldyBWZWN0b3JMYXllcih7XG4gICAgICAgIHpJbmRleDogMzAwLFxuICAgICAgICBzb3VyY2U6IG5ldyBGZWF0dXJlRGF0YVNvdXJjZSgpLFxuICAgICAgICBzdHlsZTogdW5kZWZpbmVkLFxuICAgICAgICBzaG93SW5MYXllckxpc3Q6IGZhbHNlLFxuICAgICAgICBleHBvcnRhYmxlOiBmYWxzZSxcbiAgICAgICAgYnJvd3NhYmxlOiBmYWxzZVxuICAgICAgfSksXG4gICAgICBtYXA6IHRoaXMubWFwLFxuICAgICAgaGl0VG9sZXJhbmNlOiAxNSxcbiAgICAgIG1vdGlvbjogRmVhdHVyZU1vdGlvbi5EZWZhdWx0LFxuICAgICAgbWFueTogdHJ1ZSxcbiAgICAgIGRyYWdCb3g6IHRydWVcbiAgICB9KTtcblxuICAgIHRoaXMuc3RvcmUuYWRkU3RyYXRlZ3koc2VsZWN0aW9uU3RyYXRlZ3ksIHRydWUpO1xuICAgIHRoaXMuc3RvcmUuYWRkU3RyYXRlZ3koc2VsZWN0ZWRSZWNvcmRTdHJhdGVneSwgZmFsc2UpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVuc3Vic2NyaWJlIHRvIHRoZSB2YWx1ZSBzdHJlYW1cbiAgICogQGludGVybmFsXG4gICAqL1xuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnZhbHVlJCQudW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLnJhZGl1c0NoYW5nZXMkJC51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuYnVmZmVyQ2hhbmdlcyQkLnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5jZFJlZi5kZXRhY2goKTtcbiAgICBpZiAodGhpcy5yYWRpdXNDaGFuZ2VzJCQpIHtcbiAgICAgIHRoaXMucmFkaXVzQ2hhbmdlcyQkLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICAgIGlmICh0aGlzLnZhbHVlJCQpIHtcbiAgICAgIHRoaXMudmFsdWUkJC51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuXG4gIG9uSXRlbVR5cGVDaGFuZ2UoZXZlbnQpIHtcbiAgICB0aGlzLnNlbGVjdGVkSXRlbVR5cGUgPSBldmVudC52YWx1ZTtcbiAgICB0aGlzLml0ZW1UeXBlQ2hhbmdlLmVtaXQodGhpcy5zZWxlY3RlZEl0ZW1UeXBlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIG1lYXN1cmUgdW5pdFxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIG9uTWVhc3VyZVVuaXRDaGFuZ2UodW5pdDogTWVhc3VyZUxlbmd0aFVuaXQpIHtcbiAgICBpZiAodW5pdCA9PT0gdGhpcy5tZWFzdXJlVW5pdCkge1xuICAgICAgcmV0dXJuO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm1lYXN1cmVVbml0ID0gdW5pdDtcbiAgICAgIHRoaXMubWVhc3VyZVVuaXRDaGFuZ2UuZW1pdCh0aGlzLm1lYXN1cmVVbml0KTtcbiAgICAgIGlmICh0aGlzLmlzUG9seWdvbigpKSB7XG4gICAgICAgIHRoaXMubWVhc3VyZVVuaXQgPT09IE1lYXN1cmVMZW5ndGhVbml0Lk1ldGVycyA/XG4gICAgICAgICAgdGhpcy5idWZmZXJGb3JtQ29udHJvbC5zZXRWYWx1ZSh0aGlzLmJ1ZmZlckZvcm1Db250cm9sLnZhbHVlICogMTAwMCkgOlxuICAgICAgICAgIHRoaXMuYnVmZmVyRm9ybUNvbnRyb2wuc2V0VmFsdWUodGhpcy5idWZmZXJGb3JtQ29udHJvbC52YWx1ZSAvIDEwMDApO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLmlzUG9pbnQoKSkge1xuICAgICAgICB0aGlzLm1lYXN1cmVVbml0ID09PSBNZWFzdXJlTGVuZ3RoVW5pdC5NZXRlcnMgP1xuICAgICAgICAgIHRoaXMucmFkaXVzRm9ybUNvbnRyb2wuc2V0VmFsdWUodGhpcy5yYWRpdXNGb3JtQ29udHJvbC52YWx1ZSAqIDEwMDApIDpcbiAgICAgICAgICB0aGlzLnJhZGl1c0Zvcm1Db250cm9sLnNldFZhbHVlKHRoaXMucmFkaXVzRm9ybUNvbnRyb2wudmFsdWUgLyAxMDAwKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpc1ByZWRlZmluZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMudHlwZSA9PT0gU3BhdGlhbEZpbHRlclR5cGUuUHJlZGVmaW5lZDtcbiAgfVxuXG4gIGlzUG9seWdvbigpIHtcbiAgICByZXR1cm4gdGhpcy50eXBlID09PSBTcGF0aWFsRmlsdGVyVHlwZS5Qb2x5Z29uO1xuICB9XG5cbiAgaXNQb2ludCgpIHtcbiAgICByZXR1cm4gdGhpcy50eXBlID09PSBTcGF0aWFsRmlsdGVyVHlwZS5Qb2ludDtcbiAgfVxuXG4gIGhhc0NoaWxkKF86IG51bWJlciwgbm9kZTogU3BhdGlhbEZpbHRlclRoZW1hdGljKSB7XG4gICAgaWYgKG5vZGUuY2hpbGRyZW4pIHtcbiAgICAgIHJldHVybiBub2RlLmNoaWxkcmVuLmxlbmd0aDtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgb25Ub2dnbGVDbGljayhub2RlOiBTcGF0aWFsRmlsdGVyVGhlbWF0aWMpIHtcbiAgICB0aGlzLnRyZWVDb250cm9sLmlzRXhwYW5kZWQobm9kZSkgPyB0aGlzLnRyZWVDb250cm9sLmNvbGxhcHNlKG5vZGUpIDogdGhpcy50cmVlQ29udHJvbC5leHBhbmQobm9kZSk7XG4gIH1cblxuICBpc0FsbFNlbGVjdGVkKG5vZGU/OiBTcGF0aWFsRmlsdGVyVGhlbWF0aWMpIHtcbiAgICBsZXQgbnVtU2VsZWN0ZWQ7XG4gICAgbGV0IG51bU5vZGVzID0gMDtcbiAgICBpZiAoIW5vZGUpIHtcbiAgICAgIG51bVNlbGVjdGVkID0gdGhpcy5zZWxlY3RlZFRoZW1hdGljcy5zZWxlY3RlZC5sZW5ndGg7XG4gICAgICB0aGlzLnRoZW1hdGljcy5mb3JFYWNoKHRoZW1hdGljID0+IHtcbiAgICAgICAgaWYgKHRoaXMuZ3JvdXBzLmluZGV4T2YodGhlbWF0aWMubmFtZSkgPT09IC0xKSB7XG4gICAgICAgICAgbnVtTm9kZXMrKztcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICB0aGlzLmNoaWxkcmVucy5mb3JFYWNoKGNoaWxkcmVuID0+IHtcbiAgICAgICAgaWYgKCF0aGlzLnRoZW1hdGljcy5maW5kKHRoZW1hdGljID0+IHRoZW1hdGljLnNvdXJjZSA9PT0gY2hpbGRyZW4uc291cmNlKSkge1xuICAgICAgICAgIG51bU5vZGVzKys7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBudW1TZWxlY3RlZCA9IG5vZGUuY2hpbGRyZW4ubGVuZ3RoO1xuICAgICAgbm9kZS5jaGlsZHJlbi5mb3JFYWNoKGNoaWxkcmVuID0+IHtcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRUaGVtYXRpY3Muc2VsZWN0ZWQuZmluZCh0aGVtYXRpYyA9PiB0aGVtYXRpYyA9PT0gY2hpbGRyZW4pKSB7XG4gICAgICAgICAgbnVtTm9kZXMrKztcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKG51bU5vZGVzID49IDEpIHtcbiAgICAgIHJldHVybiBudW1TZWxlY3RlZCA9PT0gbnVtTm9kZXM7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBoYXNDaGlsZHJlblNlbGVjdGVkKG5vZGU6IFNwYXRpYWxGaWx0ZXJUaGVtYXRpYykge1xuICAgIGxldCBib29sID0gZmFsc2U7XG4gICAgbm9kZS5jaGlsZHJlbi5mb3JFYWNoKGNoaWxkID0+IHtcbiAgICAgIGlmICh0aGlzLnNlbGVjdGVkVGhlbWF0aWNzLnNlbGVjdGVkLmZpbmQodGhlbWF0aWMgPT4gdGhlbWF0aWMuc291cmNlID09PSBjaGlsZC5zb3VyY2UpKSB7XG4gICAgICAgIGJvb2wgPSB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBib29sO1xuICB9XG5cbiAgLyoqXG4gICAqIEFwcGx5IGhlYWRlciBjaGVja2JveFxuICAgKi9cbiAgbWFzdGVyVG9nZ2xlKCkge1xuICAgIHRoaXMuaXNBbGxTZWxlY3RlZCgpID9cbiAgICAgIHRoaXMuc2VsZWN0ZWRUaGVtYXRpY3MuY2xlYXIoKSA6XG4gICAgICB0aGlzLnNlbGVjdEFsbCgpO1xuXG4gICAgY29uc3Qgc2VsZWN0ZWRUaGVtYXRpY3NOYW1lOiBTcGF0aWFsRmlsdGVyVGhlbWF0aWNbXSA9IFtdO1xuICAgIGZvciAoY29uc3QgdGhlbWF0aWMgb2YgdGhpcy5zZWxlY3RlZFRoZW1hdGljcy5zZWxlY3RlZCkge1xuICAgICAgc2VsZWN0ZWRUaGVtYXRpY3NOYW1lLnB1c2godGhlbWF0aWMpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmlzQWxsU2VsZWN0ZWQoKSkge1xuICAgICAgdGhpcy50aGVtYXRpY3MuZm9yRWFjaCh0aGVtYXRpYyA9PiB7XG4gICAgICAgIGlmICh0aGlzLmhhc0NoaWxkKDAsIHRoZW1hdGljKSkge1xuICAgICAgICAgIHRoaXMudHJlZUNvbnRyb2wuZXhwYW5kKHRoZW1hdGljKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudGhlbWF0aWNzLmZvckVhY2godGhlbWF0aWMgPT4ge1xuICAgICAgICBpZiAodGhpcy5oYXNDaGlsZCgwLCB0aGVtYXRpYykpIHtcbiAgICAgICAgICB0aGlzLnRyZWVDb250cm9sLmNvbGxhcHNlKHRoZW1hdGljKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIHRoaXMudGhlbWF0aWNDaGFuZ2UuZW1pdChzZWxlY3RlZFRoZW1hdGljc05hbWUpO1xuICB9XG5cbiAgc2VsZWN0QWxsKG5vZGU/OiBTcGF0aWFsRmlsdGVyVGhlbWF0aWMpIHtcbiAgICBpZiAoIW5vZGUpIHtcbiAgICAgIHRoaXMudGhlbWF0aWNzLmZvckVhY2godGhlbWF0aWMgPT4ge1xuICAgICAgICBpZiAodGhpcy5ncm91cHMuaW5kZXhPZih0aGVtYXRpYy5uYW1lKSA9PT0gLTEpIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkVGhlbWF0aWNzLnNlbGVjdCh0aGVtYXRpYyk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgdGhpcy5jaGlsZHJlbnMuZm9yRWFjaChjaGlsZHJlbiA9PiB7XG4gICAgICAgIGlmICghdGhpcy5zZWxlY3RlZFRoZW1hdGljcy5zZWxlY3RlZC5maW5kKHRoZW1hdGljID0+IHRoZW1hdGljLnNvdXJjZSA9PT0gY2hpbGRyZW4uc291cmNlKSkge1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRUaGVtYXRpY3Muc2VsZWN0KGNoaWxkcmVuKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0aGlzLmhhc0NoaWxkKDAsIG5vZGUpKSB7XG4gICAgICAgIG5vZGUuY2hpbGRyZW4uZm9yRWFjaChjaGlsZHJlbiA9PiB0aGlzLnNlbGVjdGVkVGhlbWF0aWNzLnNlbGVjdChjaGlsZHJlbikpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNoaWxkcmVuc1RvZ2dsZShub2RlOiBTcGF0aWFsRmlsdGVyVGhlbWF0aWMpIHtcbiAgICB0aGlzLmlzQWxsU2VsZWN0ZWQobm9kZSkgP1xuICAgIG5vZGUuY2hpbGRyZW4uZm9yRWFjaChjaGlsZCA9PiB0aGlzLnNlbGVjdGVkVGhlbWF0aWNzLmRlc2VsZWN0KGNoaWxkKSkgOlxuICAgIHRoaXMuc2VsZWN0QWxsKG5vZGUpO1xuXG4gICAgY29uc3Qgc2VsZWN0ZWRUaGVtYXRpY3NOYW1lOiBTcGF0aWFsRmlsdGVyVGhlbWF0aWNbXSA9IFtdO1xuICAgIGZvciAoY29uc3QgdGhlbWF0aWMgb2YgdGhpcy5zZWxlY3RlZFRoZW1hdGljcy5zZWxlY3RlZCkge1xuICAgICAgc2VsZWN0ZWRUaGVtYXRpY3NOYW1lLnB1c2godGhlbWF0aWMpO1xuICAgIH1cbiAgICB0aGlzLnRyZWVDb250cm9sLmV4cGFuZChub2RlKTtcbiAgICB0aGlzLnRoZW1hdGljQ2hhbmdlLmVtaXQoc2VsZWN0ZWRUaGVtYXRpY3NOYW1lKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBcHBseSBjaGFuZ2VzIHRvIHRoZSB0aGVtYXRpY3Mgc2VsZWN0ZWQgdHJlZSBhbmQgZW1pdCBldmVudFxuICAgKi9cbiAgb25Ub2dnbGVDaGFuZ2Uobm9kZVNlbGVjdGVkOiBTcGF0aWFsRmlsdGVyVGhlbWF0aWMpIHtcbiAgICBsZXQgc2VsZWN0ZWQgPSBmYWxzZTtcbiAgICBpZiAodGhpcy5zZWxlY3RlZFRoZW1hdGljcy5zZWxlY3RlZC5maW5kKHRoZW1hdGljID0+IHRoZW1hdGljLnNvdXJjZSA9PT0gbm9kZVNlbGVjdGVkLnNvdXJjZSkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgc2VsZWN0ZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIHRoaXMuY2hpbGRyZW5zLmZvckVhY2goY2hpbGRyZW4gPT4ge1xuICAgICAgaWYgKGNoaWxkcmVuID09PSBub2RlU2VsZWN0ZWQgJiYgc2VsZWN0ZWQgPT09IGZhbHNlKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRUaGVtYXRpY3Muc2VsZWN0KGNoaWxkcmVuKTtcbiAgICAgIH1cbiAgICAgIGlmIChjaGlsZHJlbiA9PT0gbm9kZVNlbGVjdGVkICYmIHNlbGVjdGVkID09PSB0cnVlKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRUaGVtYXRpY3MuZGVzZWxlY3QoY2hpbGRyZW4pO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMudGhlbWF0aWNzLmZvckVhY2godGhlbWF0aWMgPT4ge1xuICAgICAgaWYgKHRoZW1hdGljID09PSBub2RlU2VsZWN0ZWQgJiYgc2VsZWN0ZWQgPT09IGZhbHNlKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRUaGVtYXRpY3Muc2VsZWN0KHRoZW1hdGljKTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGVtYXRpYyA9PT0gbm9kZVNlbGVjdGVkICYmIHNlbGVjdGVkID09PSB0cnVlKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRUaGVtYXRpY3MuZGVzZWxlY3QodGhlbWF0aWMpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3Qgc2VsZWN0ZWRUaGVtYXRpY3NOYW1lOiBTcGF0aWFsRmlsdGVyVGhlbWF0aWNbXSA9IFtdO1xuICAgIGZvciAoY29uc3QgdGhlbWF0aWMgb2YgdGhpcy5zZWxlY3RlZFRoZW1hdGljcy5zZWxlY3RlZCkge1xuICAgICAgc2VsZWN0ZWRUaGVtYXRpY3NOYW1lLnB1c2godGhlbWF0aWMpO1xuICAgIH1cbiAgICB0aGlzLnRoZW1hdGljQ2hhbmdlLmVtaXQoc2VsZWN0ZWRUaGVtYXRpY3NOYW1lKTtcbiAgfVxuXG4gIG9uRHJhd0NvbnRyb2xDaGFuZ2UoKSB7XG4gICAgdGhpcy5kcmF3Q29udHJvbElzQWN0aXZlID0gIXRoaXMuZHJhd0NvbnRyb2xJc0FjdGl2ZTtcbiAgfVxuXG4gIG9uZnJlZWhhbmRDb250cm9sQ2hhbmdlKCkge1xuICAgIHRoaXMuZnJlZWhhbmREcmF3SXNBY3RpdmUgPSAhdGhpcy5mcmVlaGFuZERyYXdJc0FjdGl2ZTtcbiAgICB0aGlzLmZyZWVoYW5kQ29udHJvbC5lbWl0KHRoaXMuZnJlZWhhbmREcmF3SXNBY3RpdmUpO1xuICAgIGlmICh0aGlzLmlzUG9pbnQoKSkge1xuICAgICAgdGhpcy5wcmVkZWZpbmVkUmFkaXVzLmVtaXQoIXRoaXMuZnJlZWhhbmREcmF3SXNBY3RpdmUpO1xuICAgICAgaWYgKHRoaXMuZnJlZWhhbmREcmF3SXNBY3RpdmUpIHtcbiAgICAgICAgdGhpcy5vdmVybGF5U3R5bGUkLm5leHQodW5kZWZpbmVkKTtcbiAgICAgICAgdGhpcy5kcmF3U3R5bGUkLm5leHQodW5kZWZpbmVkKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5wcmVkZWZpbmVkUmFkaXVzLmVtaXQoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBMYXVuY2ggc2VhcmNoIGJ1dHRvblxuICAgKi9cbiAgdG9nZ2xlU2VhcmNoQnV0dG9uKCkge1xuICAgIGlmICghdGhpcy5pc1ByZWRlZmluZWQoKSkge1xuICAgICAgaWYgKHRoaXMuYnVmZmVyID4gMCkge1xuICAgICAgICB0aGlzLnpvbmVXaXRoQnVmZmVyLm1ldGEgPSB7XG4gICAgICAgICAgaWQ6IHVuZGVmaW5lZCxcbiAgICAgICAgICB0aXRsZTogJ1pvbmUnXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuem9uZVdpdGhCdWZmZXIucHJvcGVydGllcyA9IHtcbiAgICAgICAgICBub206ICdab25lJyxcbiAgICAgICAgICB0eXBlOiB0aGlzLnR5cGUgYXMgc3RyaW5nXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuZHJhd1pvbmVFdmVudC5lbWl0KHRoaXMuem9uZVdpdGhCdWZmZXIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5kcmF3Wm9uZS5tZXRhID0ge1xuICAgICAgICAgIGlkOiB1bmRlZmluZWQsXG4gICAgICAgICAgdGl0bGU6ICdab25lJ1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLmRyYXdab25lLnByb3BlcnRpZXMgPSB7XG4gICAgICAgICAgbm9tOiAnWm9uZScsXG4gICAgICAgICAgdHlwZTogdGhpcy50eXBlIGFzIHN0cmluZ1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLmRyYXdab25lRXZlbnQuZW1pdCh0aGlzLmRyYXdab25lKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHRoaXMuaXNQb2ludCgpKSB7XG4gICAgICB0aGlzLnJhZGl1c0V2ZW50LmVtaXQodGhpcy5yYWRpdXMpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5pc1BvbHlnb24oKSkge1xuICAgICAgdGhpcy5idWZmZXJFdmVudC5lbWl0KHRoaXMuYnVmZmVyKTtcbiAgICB9XG4gICAgdGhpcy50b2dnbGVTZWFyY2guZW1pdCgpO1xuICAgIHRoaXMuc3RvcmUuZW50aXRpZXMkLnBpcGUoXG4gICAgICBkZWJvdW5jZVRpbWUoNTAwKVxuICAgICkuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xuICAgICAgaWYgKHZhbHVlLmxlbmd0aCAmJiB0aGlzLmxheWVycy5sZW5ndGggPT09IHRoaXMudGhlbWF0aWNMZW5ndGggKyAxKSB7XG4gICAgICAgIHRoaXMub3BlbldvcmtzcGFjZS5lbWl0KCk7XG4gICAgICAgIHRoaXMuY3JlYXRlVGFibGVUZW1wbGF0ZSgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIExhdW5jaCBjbGVhciBidXR0b24gKGNsZWFyIHN0b3JlIGFuZCBtYXAgbGF5ZXJzKVxuICAgKi9cbiAgY2xlYXJCdXR0b24oKSB7XG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICBpZiAodGhpcy5zdG9yZSkge1xuICAgICAgdGhpcy5zdG9yZS5jbGVhcigpO1xuICAgIH1cbiAgICBpZiAodGhpcy5pc1BvaW50KCkgfHwgdGhpcy5pc1BvbHlnb24oKSkge1xuICAgICAgdGhpcy5kcmF3Wm9uZSA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuZm9ybUNvbnRyb2wucmVzZXQoKTtcbiAgICB9XG4gICAgdGhpcy5idWZmZXJGb3JtQ29udHJvbC5zZXRWYWx1ZSgwKTtcbiAgICB0aGlzLmJ1ZmZlciA9IDA7XG4gICAgdGhpcy5idWZmZXJFdmVudC5lbWl0KDApO1xuICAgIHRoaXMuY2xlYXJCdXR0b25FdmVudC5lbWl0KCk7XG4gICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgdGhpcy50YWJsZVRlbXBsYXRlID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgY2xlYXJEcmF3Wm9uZSgpIHtcbiAgICB0aGlzLmZvcm1Db250cm9sLnJlc2V0KCk7XG4gICAgdGhpcy5idWZmZXJGb3JtQ29udHJvbC5zZXRWYWx1ZSgwKTtcbiAgICB0aGlzLmJ1ZmZlciA9IDA7XG4gIH1cblxuICAvKipcbiAgICogTGF1bmNoIGNsZWFyIHNlYXJjaCAoY2xlYXIgZmllbGQgaWYgdHlwZSBpcyBwcmVkZWZpbmVkKVxuICAgKi9cbiAgY2xlYXJTZWFyY2goKSB7XG4gICAgdGhpcy5zZWxlY3RlZFRoZW1hdGljcy5jbGVhcigpO1xuICAgIHRoaXMuYnVmZmVyRm9ybUNvbnRyb2wuc2V0VmFsdWUoMCk7XG4gICAgdGhpcy5idWZmZXIgPSAwO1xuICAgIHRoaXMuYnVmZmVyRXZlbnQuZW1pdCgwKTtcbiAgICB0aGlzLnRoZW1hdGljQ2hhbmdlLmVtaXQoW10pO1xuICAgIHRoaXMuY2xlYXJTZWFyY2hFdmVudC5lbWl0KCk7XG4gIH1cblxuICAvKipcbiAgICogVmVyaWZ5IGNvbmRpdGlvbnMgb2YgaW5jb21wbGV0ZSBmaWVsZHMgb3IgYnVzeSBzZXJ2aWNlXG4gICAqL1xuICBkaXNhYmxlU2VhcmNoQnV0dG9uKCk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLnR5cGUgPT09IFNwYXRpYWxGaWx0ZXJUeXBlLlByZWRlZmluZWQpIHtcbiAgICAgIGlmICh0aGlzLnNlbGVjdGVkSXRlbVR5cGUgPT09IFNwYXRpYWxGaWx0ZXJJdGVtVHlwZS5BZGRyZXNzKSB7XG4gICAgICAgIGlmICh0aGlzLnF1ZXJ5VHlwZSAhPT0gdW5kZWZpbmVkICYmIHRoaXMuem9uZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMubG9hZGluZztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRJdGVtVHlwZSA9PT0gU3BhdGlhbEZpbHRlckl0ZW1UeXBlLlRoZW1hdGljcykge1xuICAgICAgICBpZiAodGhpcy5xdWVyeVR5cGUgIT09IHVuZGVmaW5lZCAmJiB0aGlzLnpvbmUgIT09IHVuZGVmaW5lZCAmJiB0aGlzLnNlbGVjdGVkVGhlbWF0aWNzLnNlbGVjdGVkLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5sb2FkaW5nO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGlmICh0aGlzLnR5cGUgPT09IFNwYXRpYWxGaWx0ZXJUeXBlLlBvbHlnb24gfHwgdGhpcy50eXBlID09PSBTcGF0aWFsRmlsdGVyVHlwZS5Qb2ludCkge1xuICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRJdGVtVHlwZSA9PT0gU3BhdGlhbEZpbHRlckl0ZW1UeXBlLkFkZHJlc3MgJiYgdGhpcy5mb3JtQ29udHJvbC52YWx1ZSAhPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gdGhpcy5sb2FkaW5nO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRJdGVtVHlwZSA9PT0gU3BhdGlhbEZpbHRlckl0ZW1UeXBlLlRoZW1hdGljcykge1xuICAgICAgICBpZiAodGhpcy5zZWxlY3RlZFRoZW1hdGljcy5zZWxlY3RlZC5sZW5ndGggPiAwICYmIHRoaXMuZm9ybUNvbnRyb2wudmFsdWUgIT09IG51bGwpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5sb2FkaW5nO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgZGlzYWJsZWRDbGVhclNlYXJjaCgpIHtcbiAgICBsZXQgZGlzYWJsZSA9IHRydWU7XG4gICAgdGhpcy5zZWxlY3RlZEl0ZW1UeXBlID09PSBTcGF0aWFsRmlsdGVySXRlbVR5cGUuQWRkcmVzcyA/XG4gICAgICBkaXNhYmxlID0gdGhpcy5xdWVyeVR5cGUgPT09IHVuZGVmaW5lZCA6XG4gICAgICBkaXNhYmxlID0gdGhpcy5xdWVyeVR5cGUgPT09IHVuZGVmaW5lZCAmJiB0aGlzLnNlbGVjdGVkVGhlbWF0aWNzLnNlbGVjdGVkLmxlbmd0aCA9PT0gMDtcblxuICAgIHJldHVybiBkaXNhYmxlO1xuICB9XG5cbiAgLyoqXG4gICAqIE1hbmFnZSByYWRpdXMgdmFsdWUgYXQgdXNlciBjaGFuZ2VcbiAgICovXG4gIGdldFJhZGl1cygpIHtcbiAgICBsZXQgZm9ybVZhbHVlO1xuICAgIGlmICh0aGlzLmZvcm1Db250cm9sLnZhbHVlICE9PSBudWxsKSB7XG4gICAgICB0aGlzLm1lYXN1cmVVbml0ID09PSBNZWFzdXJlTGVuZ3RoVW5pdC5NZXRlcnMgP1xuICAgICAgICBmb3JtVmFsdWUgPSB0aGlzLmZvcm1Db250cm9sLnZhbHVlLnJhZGl1cyA6XG4gICAgICAgIGZvcm1WYWx1ZSA9IHRoaXMuZm9ybUNvbnRyb2wudmFsdWUucmFkaXVzIC8gMTAwMDtcbiAgICB9IGVsc2Uge1xuICAgICAgZm9ybVZhbHVlID0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnR5cGUgPT09IFNwYXRpYWxGaWx0ZXJUeXBlLlBvaW50KSB7XG4gICAgICBpZiAoIXRoaXMuZnJlZWhhbmREcmF3SXNBY3RpdmUpIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIHRoaXMucmFkaXVzRm9ybUNvbnRyb2wudmFsdWUgPCAwIHx8XG4gICAgICAgICAgKHRoaXMubWVhc3VyZVVuaXQgPT09IE1lYXN1cmVMZW5ndGhVbml0Lk1ldGVycyAmJiB0aGlzLnJhZGl1c0Zvcm1Db250cm9sLnZhbHVlID49IDEwMDAwMCkgfHxcbiAgICAgICAgICAodGhpcy5tZWFzdXJlVW5pdCA9PT0gTWVhc3VyZUxlbmd0aFVuaXQuS2lsb21ldGVycyAmJiB0aGlzLnJhZGl1c0Zvcm1Db250cm9sLnZhbHVlID49IDEwMCkpIHtcbiAgICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFsZXJ0KCdpZ28uZ2VvLnNwYXRpYWxGaWx0ZXIucmFkaXVzQWxlcnQnLCAnaWdvLmdlby5zcGF0aWFsRmlsdGVyLndhcm5pbmcnKTtcbiAgICAgICAgICB0aGlzLnJhZGl1cyA9IDEwMDA7XG4gICAgICAgICAgdGhpcy5tZWFzdXJlVW5pdCA9PT0gTWVhc3VyZUxlbmd0aFVuaXQuTWV0ZXJzID9cbiAgICAgICAgICAgIHRoaXMucmFkaXVzRm9ybUNvbnRyb2wuc2V0VmFsdWUodGhpcy5yYWRpdXMpIDpcbiAgICAgICAgICAgIHRoaXMucmFkaXVzRm9ybUNvbnRyb2wuc2V0VmFsdWUodGhpcy5yYWRpdXMgLyAxMDAwKTtcbiAgICAgICAgICB0aGlzLmRyYXdHdWlkZSQubmV4dCh0aGlzLnJhZGl1cyk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoZm9ybVZhbHVlKSB7XG4gICAgICAgICAgaWYgKGZvcm1WYWx1ZSA+PSAxMDAwMDApIHtcbiAgICAgICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWxlcnQoJ2lnby5nZW8uc3BhdGlhbEZpbHRlci5yYWRpdXNBbGVydCcsICdpZ28uZ2VvLnNwYXRpYWxGaWx0ZXIud2FybmluZycpO1xuICAgICAgICAgICAgdGhpcy5mb3JtQ29udHJvbC5yZXNldCgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoZm9ybVZhbHVlICE9PSB0aGlzLnJhZGl1c0Zvcm1Db250cm9sLnZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLnJhZGl1c0Zvcm1Db250cm9sLnNldFZhbHVlKGZvcm1WYWx1ZSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5tZWFzdXJlVW5pdCA9PT0gTWVhc3VyZUxlbmd0aFVuaXQuTWV0ZXJzKSB7XG4gICAgICAgIHRoaXMucmFkaXVzID0gdGhpcy5yYWRpdXNGb3JtQ29udHJvbC52YWx1ZTtcbiAgICAgICAgdGhpcy5kcmF3R3VpZGUkLm5leHQodGhpcy5yYWRpdXMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5yYWRpdXMgPSB0aGlzLnJhZGl1c0Zvcm1Db250cm9sLnZhbHVlICogMTAwMDtcbiAgICAgICAgdGhpcy5kcmF3R3VpZGUkLm5leHQodGhpcy5yYWRpdXMgKiAxMDAwKTtcbiAgICAgIH1cbiAgICAgIHRoaXMub3ZlcmxheVN0eWxlJC5uZXh0KHRoaXMuUG9pbnRTdHlsZSk7XG4gICAgICB0aGlzLmRyYXdTdHlsZSQubmV4dCh0aGlzLlBvaW50U3R5bGUpO1xuICAgIH1cbiAgfVxuXG4gIHRvZ2dsZVZpc2libGVMaXN0KCkge1xuICAgIHRoaXMubGlzdElzVmlzaWJsZSA9ICF0aGlzLmxpc3RJc1Zpc2libGU7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZVRhYmxlVGVtcGxhdGUoKSB7XG4gICAgY29uc3QgdHlwZUNvbHVtbiA9IHtcbiAgICAgIG5hbWU6ICdtZXRhLnRpdGxlJyxcbiAgICAgIHRpdGxlOiB0aGlzLmxhbmd1YWdlU2VydmljZS50cmFuc2xhdGUuaW5zdGFudCgnaWdvLmdlby5zcGF0aWFsRmlsdGVyLnR5cGUnKSxcbiAgICAgIHJlbmRlcmVyOiBFbnRpdHlUYWJsZUNvbHVtblJlbmRlcmVyLlVuc2FuaXRpemVkSFRNTFxuICAgIH07XG4gICAgY29uc3QgbmFtZUNvbHVtbiA9IHtcbiAgICAgIG5hbWU6ICdwcm9wZXJ0aWVzLm5vbScsXG4gICAgICB0aXRsZTogdGhpcy5sYW5ndWFnZVNlcnZpY2UudHJhbnNsYXRlLmluc3RhbnQoJ2lnby5nZW8uc3BhdGlhbEZpbHRlci5zZWFyY2hSZXN1bHRzJyksXG4gICAgICByZW5kZXJlcjogRW50aXR5VGFibGVDb2x1bW5SZW5kZXJlci5VbnNhbml0aXplZEhUTUxcbiAgICB9O1xuICAgIGNvbnN0IGNvbHVtbnMgPSBbdHlwZUNvbHVtbiwgbmFtZUNvbHVtbl07XG5cbiAgICB0aGlzLnRhYmxlVGVtcGxhdGUgPSB7XG4gICAgICBzZWxlY3Rpb246IHRydWUsXG4gICAgICBzb3J0OiB0cnVlLFxuICAgICAgY29sdW1uc1xuICAgIH07XG4gIH1cbn1cbiIsIjxpZ28tZ2VvbWV0cnktZm9ybS1maWVsZC1pbnB1dFxuICBbZm9ybUNvbnRyb2xdPVwiZm9ybUNvbnRyb2xcIlxuICBbbWFwXT1cIm1hcFwiXG4gIFtnZW9tZXRyeVR5cGVdPVwiZ2VvbWV0cnlUeXBlXCJcbiAgW2RyYXdHdWlkZV09XCJkcmF3R3VpZGUkIHwgYXN5bmNcIlxuICBbbWVhc3VyZV09XCJtZWFzdXJlXCJcbiAgW2RyYXdDb250cm9sSXNBY3RpdmVdPVwiZHJhd0NvbnRyb2xJc0FjdGl2ZVwiXG4gIFtmcmVlaGFuZERyYXdJc0FjdGl2ZV09XCJmcmVlaGFuZERyYXdJc0FjdGl2ZVwiXG4gIFtkcmF3U3R5bGVdPVwiZHJhd1N0eWxlJCB8IGFzeW5jXCJcbiAgW292ZXJsYXlTdHlsZV09XCJvdmVybGF5U3R5bGUkIHwgYXN5bmNcIlxuICBbcmFkaXVzXT1cInJhZGl1c1wiXG4gIFtwcmVkZWZpbmVkUmFkaXVzXT1cInByZWRlZmluZWRSYWRpdXNcIj5cbjwvaWdvLWdlb21ldHJ5LWZvcm0tZmllbGQtaW5wdXQ+XG5cbjxkaXYgY2xhc3M9XCJoZWFkZXJcIj5cbiAgICA8bWF0LXNsaWRlLXRvZ2dsZSAqbmdJZj1cIiFpc1ByZWRlZmluZWQoKVwiXG4gICAgICBbY2hlY2tlZF09XCJkcmF3Q29udHJvbElzQWN0aXZlXCJcbiAgICAgIFtsYWJlbFBvc2l0aW9uXT1cIidiZWZvcmUnXCJcbiAgICAgIChjaGFuZ2UpPVwib25EcmF3Q29udHJvbENoYW5nZSgpXCI+XG4gICAgICB7eydpZ28uZ2VvLnNwYXRpYWxGaWx0ZXIuZHJhd0NvbnRyb2wnIHwgdHJhbnNsYXRlfX1cbiAgICA8L21hdC1zbGlkZS10b2dnbGU+XG4gICAgPG1hdC1zbGlkZS10b2dnbGUgKm5nSWY9XCIhaXNQcmVkZWZpbmVkKClcIlxuICAgICAgW2NoZWNrZWRdPVwiZnJlZWhhbmREcmF3SXNBY3RpdmVcIlxuICAgICAgW2xhYmVsUG9zaXRpb25dPVwiJ2JlZm9yZSdcIlxuICAgICAgKGNoYW5nZSk9XCJvbmZyZWVoYW5kQ29udHJvbENoYW5nZSgpXCI+XG4gICAgICB7eydpZ28uZ2VvLnNwYXRpYWxGaWx0ZXIuZnJlZWhhbmRDb250cm9sJyB8IHRyYW5zbGF0ZX19XG4gICAgPC9tYXQtc2xpZGUtdG9nZ2xlPlxuPC9kaXY+XG5cbjxkaXYgY2xhc3M9XCJidWZmZXItdW5pdFwiICpuZ0lmPVwiaXNQb2x5Z29uKClcIj5cbiAgPGZvcm0gY2xhc3M9XCJidWZmZXItZm9ybVwiPlxuICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImJ1ZmZlclwiPlxuICAgICAgPGlucHV0IHR5cGU9XCJudW1iZXJcIiBtYXRJbnB1dCBwbGFjZWhvbGRlcj1cInt7J2lnby5nZW8uc3BhdGlhbEZpbHRlci5idWZmZXInIHwgdHJhbnNsYXRlfX1cIiBbZm9ybUNvbnRyb2xdPVwiYnVmZmVyRm9ybUNvbnRyb2xcIlxuICAgICAgW3ZhbHVlXT1cIjBcIiBbcmVhZG9ubHldPVwidGhpcy5mb3JtQ29udHJvbC52YWx1ZSA9PT0gbnVsbFwiPlxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gIDwvZm9ybT5cblxuICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJ1bml0LWZpZWxkXCI+XG4gICAgPG1hdC1zZWxlY3RcbiAgICBbdmFsdWVdPVwibWVhc3VyZVVuaXRcIlxuICAgIChzZWxlY3Rpb25DaGFuZ2UpPVwib25NZWFzdXJlVW5pdENoYW5nZSgkZXZlbnQudmFsdWUpXCI+XG4gICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IG1lYXN1cmVVbml0IG9mIG1lYXN1cmVVbml0c1wiIFt2YWx1ZV09XCJtZWFzdXJlVW5pdFwiPlxuICAgICAgICB7eygnaWdvLmdlby5tZWFzdXJlLicgKyBtZWFzdXJlVW5pdCkgfCB0cmFuc2xhdGV9fVxuICAgIDwvbWF0LW9wdGlvbj5cbiAgICA8L21hdC1zZWxlY3Q+XG4gIDwvbWF0LWZvcm0tZmllbGQ+XG48L2Rpdj5cblxuPGRpdiBjbGFzcz1cInJhZGl1cy11bml0XCIgKm5nSWY9XCJpc1BvaW50KClcIj5cbiAgPGZvcm0gY2xhc3M9XCJyYWRpdXMtZm9ybVwiPlxuICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cInJhZGl1c1wiPlxuICAgICAgPGlucHV0IHR5cGU9XCJudW1iZXJcIiBtYXRJbnB1dCBwbGFjZWhvbGRlcj1cInt7J2lnby5nZW8uc3BhdGlhbEZpbHRlci5yYWRpdXMnIHwgdHJhbnNsYXRlfX1cIiBbZm9ybUNvbnRyb2xdPVwicmFkaXVzRm9ybUNvbnRyb2xcIlxuICAgICAgW3ZhbHVlXT1cIjEwMDBcIiAoaW5wdXQpPVwiZ2V0UmFkaXVzKClcIiBbcmVhZG9ubHldPVwidGhpcy5mcmVlaGFuZERyYXdJc0FjdGl2ZSAmJiB0aGlzLmZvcm1Db250cm9sLnZhbHVlID09PSBudWxsXCI+XG4gICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgPC9mb3JtPlxuXG4gIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cInVuaXQtZmllbGRcIj5cbiAgICA8bWF0LXNlbGVjdFxuICAgIFt2YWx1ZV09XCJtZWFzdXJlVW5pdFwiXG4gICAgKHNlbGVjdGlvbkNoYW5nZSk9XCJvbk1lYXN1cmVVbml0Q2hhbmdlKCRldmVudC52YWx1ZSlcIj5cbiAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgbWVhc3VyZVVuaXQgb2YgbWVhc3VyZVVuaXRzXCIgW3ZhbHVlXT1cIm1lYXN1cmVVbml0XCI+XG4gICAgICAgIHt7KCdpZ28uZ2VvLm1lYXN1cmUuJyArIG1lYXN1cmVVbml0KSB8IHRyYW5zbGF0ZX19XG4gICAgPC9tYXQtb3B0aW9uPlxuICAgIDwvbWF0LXNlbGVjdD5cbiAgPC9tYXQtZm9ybS1maWVsZD5cbjwvZGl2PlxuXG48bWF0LWxhYmVsIGNsYXNzPVwidGl0bGUgbWF0LXR5cG9ncmFwaHlcIj57eydpZ28uZ2VvLnNwYXRpYWxGaWx0ZXIuc2VhcmNoJyB8IHRyYW5zbGF0ZX19IDogPC9tYXQtbGFiZWw+XG48bWF0LXJhZGlvLWdyb3VwIFt2YWx1ZV09XCJzZWxlY3RlZEl0ZW1UeXBlXCI+XG4gICAgPG1hdC1yYWRpby1idXR0b24gKm5nRm9yPVwibGV0IGl0ZW0gb2YgaXRlbVR5cGVcIlxuICAgICAgW3ZhbHVlXT1cIml0ZW1cIlxuICAgICAgKGNoYW5nZSk9XCJvbkl0ZW1UeXBlQ2hhbmdlKCRldmVudClcIj5cbiAgICAgIHt7J2lnby5nZW8uc3BhdGlhbEZpbHRlci4nICsgaXRlbSB8IHRyYW5zbGF0ZX19XG4gICAgPC9tYXQtcmFkaW8tYnV0dG9uPlxuPC9tYXQtcmFkaW8tZ3JvdXA+XG5cbjxkaXYgY2xhc3M9XCJ0aGVtYXRpY3NcIiAqbmdJZj1cIihzZWxlY3RlZEl0ZW1UeXBlPT09J1RoZW1hdGljcycgJiYgIXRhYmxlVGVtcGxhdGUpIHx8IChzZWxlY3RlZEl0ZW1UeXBlPT09J1RoZW1hdGljcycgJiYgdGFibGVUZW1wbGF0ZSAmJiAhbGlzdElzVmlzaWJsZSlcIj5cbiAgPG1hdC10YWJsZT5cbiAgICAgIDwhLS0gTmFtZSBDb2x1bW4gLS0+XG4gICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cIm5hbWVcIj5cbiAgICAgICAgPG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZiBjbGFzcz1cInRoZW1hdGljcy1oZWFkZXJcIj57eydpZ28uZ2VvLnNwYXRpYWxGaWx0ZXIuVGhlbWF0aWNzJyB8IHRyYW5zbGF0ZX19PC9tYXQtaGVhZGVyLWNlbGw+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPCEtLSBTZWxlY3QgQ29sdW1uIC0tPlxuICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJzZWxlY3RcIj5cbiAgICAgICAgPG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZiBjbGFzcz1cImNoZWNrcy1oZWFkZXJcIj5cbiAgICAgICAgICA8bWF0LWNoZWNrYm94IChjaGFuZ2UpPVwiJGV2ZW50ID8gbWFzdGVyVG9nZ2xlKCkgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cImlzQWxsU2VsZWN0ZWQoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaW5kZXRlcm1pbmF0ZV09XCJzZWxlY3RlZFRoZW1hdGljcy5oYXNWYWx1ZSgpICYmICFpc0FsbFNlbGVjdGVkKClcIj5cbiAgICAgICAgICA8L21hdC1jaGVja2JveD5cbiAgICAgICAgPC9tYXQtaGVhZGVyLWNlbGw+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8bWF0LWhlYWRlci1yb3cgKm1hdEhlYWRlclJvd0RlZj1cImRpc3BsYXllZENvbHVtbnNcIj48L21hdC1oZWFkZXItcm93PlxuICAgIDxtYXQtcm93ICptYXRSb3dEZWY9XCJsZXQgcm93OyBjb2x1bW5zOiBkaXNwbGF5ZWRDb2x1bW5zO1wiPjwvbWF0LXJvdz5cblxuICA8L21hdC10YWJsZT5cblxuICA8bWF0LXRyZWUgW2RhdGFTb3VyY2VdPVwiZGF0YVNvdXJjZVwiIFt0cmVlQ29udHJvbF09XCJ0cmVlQ29udHJvbFwiPlxuICAgIDwhLS0gVGhpcyBpcyB0aGUgdHJlZSBub2RlIHRlbXBsYXRlIGZvciBsZWFmIG5vZGVzIC0tPlxuICAgIDxtYXQtdHJlZS1ub2RlICptYXRUcmVlTm9kZURlZj1cImxldCBub2RlXCIgbWF0VHJlZU5vZGVUb2dnbGU+XG4gICAgICA8bGkgY2xhc3M9XCJtYXQtdHJlZS1ub2RlXCI+XG4gICAgICAgIDwhLS0gdXNlIGEgZGlzYWJsZWQgYnV0dG9uIHRvIHByb3ZpZGUgcGFkZGluZyBmb3IgdHJlZSBsZWFmIC0tPlxuICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiBkaXNhYmxlZD48L2J1dHRvbj5cbiAgICAgICAge3tub2RlLm5hbWV9fVxuICAgICAgICA8bWF0LWNoZWNrYm94IGNsYXNzPVwidHJlZS1jaGVja1wiIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwiJGV2ZW50ID8gb25Ub2dnbGVDaGFuZ2Uobm9kZSkgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJzZWxlY3RlZFRoZW1hdGljcy5pc1NlbGVjdGVkKG5vZGUpXCI+XG4gICAgICAgIDwvbWF0LWNoZWNrYm94PlxuICAgICAgPC9saT5cbiAgICA8L21hdC10cmVlLW5vZGU+XG5cbiAgICA8IS0tIFRoaXMgaXMgdGhlIHRyZWUgbm9kZSB0ZW1wbGF0ZSBmb3IgZXhwYW5kYWJsZSBub2RlcyAtLT5cbiAgICA8bWF0LW5lc3RlZC10cmVlLW5vZGUgKm1hdFRyZWVOb2RlRGVmPVwibGV0IG5vZGU7IHdoZW46IGhhc0NoaWxkXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtYXQtdHJlZS1ub2RlXCI+XG4gICAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b25cbiAgICAgICAgICAgIChjbGljayk9XCJvblRvZ2dsZUNsaWNrKG5vZGUpXCI+XG4gICAgICAgICAgICA8bWF0LWljb24gW3N2Z0ljb25dPVwidHJlZUNvbnRyb2wuaXNFeHBhbmRlZChub2RlKSA/ICdjaGV2cm9uLWRvd24nIDogJ2NoZXZyb24tcmlnaHQnXCI+PC9tYXQtaWNvbj5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICB7e25vZGUubmFtZX19XG4gICAgICAgICAgPG1hdC1jaGVja2JveCBjbGFzcz1cInRyZWUtY2hlY2stMlwiIChjaGFuZ2UpPVwiJGV2ZW50ID8gY2hpbGRyZW5zVG9nZ2xlKG5vZGUpIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJpc0FsbFNlbGVjdGVkKG5vZGUpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpbmRldGVybWluYXRlXT1cImhhc0NoaWxkcmVuU2VsZWN0ZWQobm9kZSkgJiYgIWlzQWxsU2VsZWN0ZWQobm9kZSlcIj5cbiAgICAgICAgICA8L21hdC1jaGVja2JveD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDx1bCBjbGFzcz1cInRyZWUtdWxcIiBbY2xhc3MuZXhhbXBsZS10cmVlLWludmlzaWJsZV09XCIhdHJlZUNvbnRyb2wuaXNFeHBhbmRlZChub2RlKVwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgbWF0VHJlZU5vZGVPdXRsZXQ+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvdWw+XG4gICAgPC9tYXQtbmVzdGVkLXRyZWUtbm9kZT5cblxuICA8L21hdC10cmVlPlxuPC9kaXY+XG5cbjxkaXYgY2xhc3M9XCJidXR0b25zXCI+XG5cbiAgPGJ1dHRvbiAqbmdJZj1cImlzUHJlZGVmaW5lZCgpXCIgbWF0LXJhaXNlZC1idXR0b24gY2xhc3M9XCJjbGVhci1zZWFyY2gtYnV0dG9uXCIgW2Rpc2FibGVkXT1cImRpc2FibGVkQ2xlYXJTZWFyY2goKVwiXG4gICAgKGNsaWNrKT1cImNsZWFyU2VhcmNoKClcIj5cbiAgICAgIHt7J2lnby5nZW8uc3BhdGlhbEZpbHRlci5jbGVhclNlYXJjaCcgfCB0cmFuc2xhdGV9fVxuICA8L2J1dHRvbj5cblxuICA8YnV0dG9uICpuZ0lmPVwiaXNQb2x5Z29uKCkgfHwgaXNQb2ludCgpXCIgbWF0LXJhaXNlZC1idXR0b24gY2xhc3M9XCJjbGVhci1mb3JtLWJ1dHRvblwiIFtkaXNhYmxlZF09XCJ0aGlzLmZvcm1Db250cm9sLnZhbHVlID09PSBudWxsXCJcbiAgICAoY2xpY2spPVwiY2xlYXJEcmF3Wm9uZSgpXCI+XG4gICAge3snaWdvLmdlby5zcGF0aWFsRmlsdGVyLmNsZWFyRm9ybScgfCB0cmFuc2xhdGV9fVxuICA8L2J1dHRvbj5cblxuICA8YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uIGNsYXNzPVwic2VhcmNoLWJ1dHRvblwiIFtkaXNhYmxlZF09XCJkaXNhYmxlU2VhcmNoQnV0dG9uKClcIiBjb2xvcj1cInByaW1hcnlcIlxuICAgIChjbGljayk9XCJ0b2dnbGVTZWFyY2hCdXR0b24oKVwiPlxuICAgIHt7J2lnby5nZW8uc3BhdGlhbEZpbHRlci5nb1NlYXJjaCcgfCB0cmFuc2xhdGV9fVxuICA8L2J1dHRvbj5cblxuICA8YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uIGNsYXNzPVwicmVtb3ZlLWJ1dHRvblwiIFtkaXNhYmxlZF09XCJhbGxMYXllcnMubGVuZ3RoID09PSAwXCIgKGNsaWNrKT1cImNsZWFyQnV0dG9uKClcIj5cbiAgICB7eydpZ28uZ2VvLnNwYXRpYWxGaWx0ZXIucmVtb3ZlTGF5ZXInIHwgdHJhbnNsYXRlfX1cbiAgPC9idXR0b24+XG5cbiAgPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiBjbGFzcz1cImV4cG9ydC1idXR0b25cIiBbZGlzYWJsZWRdPVwiIXN0b3JlLmVudGl0aWVzJC5nZXRWYWx1ZSgpLmxlbmd0aFwiIChjbGljayk9XCJleHBvcnQuZW1pdCgpXCI+XG4gICAge3snaWdvLmdlby5zcGF0aWFsRmlsdGVyLmV4cG9ydExheWVyJyB8IHRyYW5zbGF0ZX19XG4gIDwvYnV0dG9uPlxuXG48L2Rpdj5cblxuPGJ1dHRvblxuICBjbGFzcz1cImNoZXZyb24tZG93blwiXG4gICpuZ0lmPVwic3RvcmUuYWxsKCkubGVuZ3RoICYmIHRhYmxlVGVtcGxhdGUgJiYgIWxpc3RJc1Zpc2libGVcIlxuICBtYXQtaWNvbi1idXR0b25cbiAgbWF0VG9vbHRpcFNob3dEZWxheT1cIjUwMFwiXG4gIFttYXRUb29sdGlwXT1cIidpZ28uZ2VvLnNwYXRpYWxGaWx0ZXIuc2hvd1NlYXJjaFJlc3VsdHMnIHwgdHJhbnNsYXRlXCJcbiAgKGNsaWNrKT1cInRvZ2dsZVZpc2libGVMaXN0KClcIj5cbiAgPG1hdC1pY29uIHN2Z0ljb249XCJjaGV2cm9uLWRvd25cIj48L21hdC1pY29uPlxuPC9idXR0b24+XG5cbjxkaXYgY2xhc3M9XCJyZXN1bHRzXCIgKm5nSWY9XCJzdG9yZS5hbGwoKS5sZW5ndGggJiYgdGFibGVUZW1wbGF0ZSAmJiBsaXN0SXNWaXNpYmxlXCI+XG4gIDxidXR0b25cbiAgICAqbmdJZj1cImxpc3RJc1Zpc2libGVcIlxuICAgIG1hdC1pY29uLWJ1dHRvblxuICAgIG1hdFRvb2x0aXBTaG93RGVsYXk9XCI1MDBcIlxuICAgIFttYXRUb29sdGlwXT1cIidpZ28uZ2VvLnNwYXRpYWxGaWx0ZXIuaGlkZVNlYXJjaFJlc3VsdHMnIHwgdHJhbnNsYXRlXCJcbiAgICAoY2xpY2spPVwidG9nZ2xlVmlzaWJsZUxpc3QoKVwiPlxuICA8bWF0LWljb24gc3ZnSWNvbj1cImNoZXZyb24tdXBcIj48L21hdC1pY29uPlxuICA8L2J1dHRvbj5cbiAgPGlnby1lbnRpdHktdGFibGVcbiAgICBjbGFzcz1cInJlc3VsdHMtbGlzdFwiXG4gICAgW3RlbXBsYXRlXT1cInRhYmxlVGVtcGxhdGVcIlxuICAgIFtzdG9yZV09XCJzdG9yZVwiXG4gICAgKGVudGl0eVNlbGVjdENoYW5nZSk9XCJlbnRpdHlDaGFuZ2UuZW1pdCgkZXZlbnQpXCI+XG4gIDwvaWdvLWVudGl0eS10YWJsZT5cbjwvZGl2PlxuIl19
@@ -1,2 +1,2 @@
1
1
  export * from './spatial-filter-list.component';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9maWx0ZXIvc3BhdGlhbC1maWx0ZXIvc3BhdGlhbC1maWx0ZXItbGlzdC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGlDQUFpQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9zcGF0aWFsLWZpbHRlci1saXN0LmNvbXBvbmVudCc7XHJcbiJdfQ==
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9maWx0ZXIvc3BhdGlhbC1maWx0ZXIvc3BhdGlhbC1maWx0ZXItbGlzdC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGlDQUFpQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9zcGF0aWFsLWZpbHRlci1saXN0LmNvbXBvbmVudCc7XG4iXX0=
@@ -186,7 +186,7 @@ SpatialFilterListComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type:
186
186
  } }, dependencies: [i3.NgForOf, i4.ɵNgNoValidate, i4.DefaultValueAccessor, i4.NumberValueAccessor, i4.NgControlStatus, i4.NgControlStatusGroup, i4.NgForm, i4.FormControlDirective, i5.MatAutocomplete, i5.MatAutocompleteTrigger, i6.MatOption, i7.MatFormField, i8.MatInput, i9.MatSelect, i3.AsyncPipe, i10.TranslatePipe], styles: [".buffer-div[_ngcontent-%COMP%]{display:flex;width:100%;margin-left:2px;padding:5px}.zone-list[_ngcontent-%COMP%]{padding:5px;width:95%;margin-left:2px}.buffer[_ngcontent-%COMP%]{display:flex;flex-flow:column nowrap;width:110%}.unit-field[_ngcontent-%COMP%]{width:110px;margin-left:30px}"], changeDetection: 0 });
187
187
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SpatialFilterListComponent, [{
188
188
  type: Component,
189
- args: [{ selector: 'igo-spatial-filter-list', changeDetection: ChangeDetectionStrategy.OnPush, template: "<form class=\"form-list\">\r\n <mat-form-field class=\"zone-list\">\r\n <input #input type=\"text\" placeholder=\"{{'igo.geo.spatialFilter.listLabel' |\u00A0translate}}\" matInput\r\n [formControl]=\"formControl\" [matAutocomplete]=\"auto\">\r\n <mat-autocomplete #auto=\"matAutocomplete\" (optionSelected)=\"onZoneChange($event.option.value)\"\r\n [displayWith]=\"displayFn\">\r\n <mat-option *ngFor=\"let entities of this.store.view.all$() | async\" [value]=\"entities\">\r\n {{entities.properties.nom}}\r\n </mat-option>\r\n </mat-autocomplete>\r\n </mat-form-field>\r\n<form>\r\n\r\n<div class=\"buffer-div\">\r\n <form class=\"buffer-form\">\r\n <mat-form-field class=\"buffer\">\r\n <input type=\"number\" matInput placeholder=\"{{'igo.geo.spatialFilter.buffer' | translate}}\" [formControl]=\"bufferFormControl\"\r\n [value]=\"0\" [readonly]=\"!zone\">\r\n </mat-form-field>\r\n </form>\r\n\r\n <mat-form-field class=\"unit-field\">\r\n <mat-select\r\n [value]=\"measureUnit\"\r\n (selectionChange)=\"onMeasureUnitChange($event.value)\">\r\n <mat-option *ngFor=\"let measureUnit of measureUnits\" [value]=\"measureUnit\">\r\n {{('igo.geo.measure.' + measureUnit) | translate}}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n</div>\r\n", styles: [".buffer-div{display:flex;width:100%;margin-left:2px;padding:5px}.zone-list{padding:5px;width:95%;margin-left:2px}.buffer{display:flex;flex-flow:column nowrap;width:110%}.unit-field{width:110px;margin-left:30px}\n"] }]
189
+ args: [{ selector: 'igo-spatial-filter-list', changeDetection: ChangeDetectionStrategy.OnPush, template: "<form class=\"form-list\">\n <mat-form-field class=\"zone-list\">\n <input #input type=\"text\" placeholder=\"{{'igo.geo.spatialFilter.listLabel' |\u00A0translate}}\" matInput\n [formControl]=\"formControl\" [matAutocomplete]=\"auto\">\n <mat-autocomplete #auto=\"matAutocomplete\" (optionSelected)=\"onZoneChange($event.option.value)\"\n [displayWith]=\"displayFn\">\n <mat-option *ngFor=\"let entities of this.store.view.all$() | async\" [value]=\"entities\">\n {{entities.properties.nom}}\n </mat-option>\n </mat-autocomplete>\n </mat-form-field>\n<form>\n\n<div class=\"buffer-div\">\n <form class=\"buffer-form\">\n <mat-form-field class=\"buffer\">\n <input type=\"number\" matInput placeholder=\"{{'igo.geo.spatialFilter.buffer' | translate}}\" [formControl]=\"bufferFormControl\"\n [value]=\"0\" [readonly]=\"!zone\">\n </mat-form-field>\n </form>\n\n <mat-form-field class=\"unit-field\">\n <mat-select\n [value]=\"measureUnit\"\n (selectionChange)=\"onMeasureUnitChange($event.value)\">\n <mat-option *ngFor=\"let measureUnit of measureUnits\" [value]=\"measureUnit\">\n {{('igo.geo.measure.' + measureUnit) | translate}}\n </mat-option>\n </mat-select>\n </mat-form-field>\n</div>\n", styles: [".buffer-div{display:flex;width:100%;margin-left:2px;padding:5px}.zone-list{padding:5px;width:95%;margin-left:2px}.buffer{display:flex;flex-flow:column nowrap;width:110%}.unit-field{width:110px;margin-left:30px}\n"] }]
190
190
  }], function () { return [{ type: i1.SpatialFilterService }, { type: i2.MessageService }]; }, { store: [{
191
191
  type: Input
192
192
  }], queryType: [{
@@ -204,4 +204,4 @@ SpatialFilterListComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type:
204
204
  }], measureUnitChange: [{
205
205
  type: Output
206
206
  }] }); })();
207
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BhdGlhbC1maWx0ZXItbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9maWx0ZXIvc3BhdGlhbC1maWx0ZXIvc3BhdGlhbC1maWx0ZXItbGlzdC9zcGF0aWFsLWZpbHRlci1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dlby9zcmMvbGliL2ZpbHRlci9zcGF0aWFsLWZpbHRlci9zcGF0aWFsLWZpbHRlci1saXN0L3NwYXRpYWwtZmlsdGVyLWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR3BFLE9BQU8sRUFBMEIsaUJBQWlCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUMvRixPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFHTCx1QkFBdUIsRUFDdkIsTUFBTSxFQUNOLFlBQVksRUFDYixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVwRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7Ozs7Ozs7Ozs7OztJQ1ZoRCxzQ0FBdUY7SUFDbkYsWUFDSjtJQUFBLGlCQUFhOzs7SUFGdUQsbUNBQWtCO0lBQ2xGLGVBQ0o7SUFESSwyREFDSjs7O0lBaUJKLHNDQUEyRTtJQUN2RSxZQUNKOztJQUFBLGlCQUFhOzs7SUFGd0Msc0NBQXFCO0lBQ3RFLGVBQ0o7SUFESSwwRkFDSjs7QUREUixNQUFNLE9BQU8sMEJBQTBCO0lBNkRyQyxZQUNVLG9CQUEwQyxFQUMxQyxjQUE4QjtRQUQ5Qix5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXNCO1FBQzFDLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQTdCL0Is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UztrQkFEWixLQUFLO1lBV0YsSUFBSTtrQkFEUCxLQUFLO1lBYUcsTUFBTTtrQkFBZCxLQUFLO1lBbUJJLFVBQVU7a0JBQW5CLE1BQU07WUFDRyxvQkFBb0I7a0JBQTdCLE1BQU07WUFDRyxZQUFZO2tCQUFyQixNQUFNO1lBQ0csaUJBQWlCO2tCQUExQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgRW50aXR5U3RvcmUgfSBmcm9tICdAaWdvMi9jb21tb24nO1xyXG5pbXBvcnQgeyBTcGF0aWFsRmlsdGVyU2VydmljZSB9IGZyb20gJy4vLi4vLi4vc2hhcmVkL3NwYXRpYWwtZmlsdGVyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTcGF0aWFsRmlsdGVyUXVlcnlUeXBlLCBTcGF0aWFsRmlsdGVyVHlwZSB9IGZyb20gJy4vLi4vLi4vc2hhcmVkL3NwYXRpYWwtZmlsdGVyLmVudW0nO1xyXG5pbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBJbnB1dCxcclxuICBPbkluaXQsXHJcbiAgT25EZXN0cm95LFxyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIE91dHB1dCxcclxuICBFdmVudEVtaXR0ZXJcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFVudHlwZWRGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgRmVhdHVyZSB9IGZyb20gJy4uLy4uLy4uL2ZlYXR1cmUnO1xyXG5pbXBvcnQgeyBNZWFzdXJlTGVuZ3RoVW5pdCB9IGZyb20gJy4uLy4uLy4uL21lYXN1cmUvc2hhcmVkJztcclxuaW1wb3J0IHsgTWVzc2FnZVNlcnZpY2UgfSBmcm9tICdAaWdvMi9jb3JlJztcclxuaW1wb3J0IHsgTGF5ZXIgfSBmcm9tICcuLi8uLi8uLi9sYXllcic7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2lnby1zcGF0aWFsLWZpbHRlci1saXN0JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vc3BhdGlhbC1maWx0ZXItbGlzdC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vc3BhdGlhbC1maWx0ZXItbGlzdC5jb21wb25lbnQuc2NzcyddLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTcGF0aWFsRmlsdGVyTGlzdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuXHJcbiAgQElucHV0KClcclxuICBnZXQgc3RvcmUoKTogRW50aXR5U3RvcmU8RmVhdHVyZT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX3N0b3JlO1xyXG4gIH1cclxuICBzZXQgc3RvcmUoc3RvcmU6IEVudGl0eVN0b3JlPEZlYXR1cmU+KSB7XHJcbiAgICB0aGlzLl9zdG9yZSA9IHN0b3JlO1xyXG4gIH1cclxuICBwcml2YXRlIF9zdG9yZTogRW50aXR5U3RvcmU8RmVhdHVyZT47XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgZ2V0IHF1ZXJ5VHlwZSgpOiBTcGF0aWFsRmlsdGVyUXVlcnlUeXBlIHtcclxuICAgIHJldHVybiB0aGlzLl9xdWVyeVR5cGU7XHJcbiAgfVxyXG4gIHNldCBxdWVyeVR5cGUocXVlcnlUeXBlOiBTcGF0aWFsRmlsdGVyUXVlcnlUeXBlKSB7XHJcbiAgICB0aGlzLmZvcm1Db250cm9sLnNldFZhbHVlKCcnKTtcclxuICAgIHRoaXMuX3F1ZXJ5VHlwZSA9IHF1ZXJ5VHlwZTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfcXVlcnlUeXBlOiBTcGF0aWFsRmlsdGVyUXVlcnlUeXBlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGdldCB6b25lKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX3pvbmU7XHJcbiAgfVxyXG4gIHNldCB6b25lKHZhbHVlKSB7XHJcbiAgICB0aGlzLl96b25lID0gdmFsdWU7XHJcbiAgICBpZiAoIXZhbHVlKSB7XHJcbiAgICAgIHRoaXMuem9uZVdpdGhCdWZmZXIgPSB1bmRlZmluZWQ7XHJcbiAgICAgIHRoaXMuYnVmZmVyRm9ybUNvbnRyb2wuc2V0VmFsdWUoMCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHByaXZhdGUgX3pvbmU7XHJcblxyXG4gIEBJbnB1dCgpIGxheWVyczogTGF5ZXJbXSA9IFtdO1xyXG5cclxuICBwdWJsaWMgem9uZVdpdGhCdWZmZXI7XHJcbiAgcHVibGljIHNlbGVjdGVkWm9uZTogYW55O1xyXG5cclxuICBwdWJsaWMgbWVhc3VyZVVuaXQ6IE1lYXN1cmVMZW5ndGhVbml0ID0gTWVhc3VyZUxlbmd0aFVuaXQuTWV0ZXJzO1xyXG5cclxuICBwdWJsaWMgZm9ybUNvbnRyb2wgPSBuZXcgVW50eXBlZEZvcm1Db250cm9sKCk7XHJcblxyXG4gIHB1YmxpYyBidWZmZXJGb3JtQ29udHJvbCA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woKTtcclxuXHJcbiAgLyoqXHJcbiAgICogQXZhaWxhYmxlIG1lYXN1cmUgdW5pdHMgZm9yIHRoZSBtZWFzdXJlIHR5cGUgZ2l2ZW5cclxuICAgKiBAaW50ZXJuYWxcclxuICAgKi9cclxuICBnZXQgbWVhc3VyZVVuaXRzKCk6IHN0cmluZ1tdIHtcclxuICAgIHJldHVybiBbTWVhc3VyZUxlbmd0aFVuaXQuTWV0ZXJzLCBNZWFzdXJlTGVuZ3RoVW5pdC5LaWxvbWV0ZXJzXTtcclxuICB9XHJcblxyXG4gIEBPdXRwdXQoKSB6b25lQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxGZWF0dXJlPigpO1xyXG4gIEBPdXRwdXQoKSB6b25lV2l0aEJ1ZmZlckNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8RmVhdHVyZT4oKTtcclxuICBAT3V0cHV0KCkgYnVmZmVyQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XHJcbiAgQE91dHB1dCgpIG1lYXN1cmVVbml0Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxNZWFzdXJlTGVuZ3RoVW5pdD4oKTtcclxuXHJcbiAgZm9ybVZhbHVlQ2hhbmdlcyQkOiBTdWJzY3JpcHRpb247XHJcbiAgYnVmZmVyVmFsdWVDaGFuZ2VzJCQ6IFN1YnNjcmlwdGlvbjtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHNwYXRpYWxGaWx0ZXJTZXJ2aWNlOiBTcGF0aWFsRmlsdGVyU2VydmljZSxcclxuICAgIHByaXZhdGUgbWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlKSB7fVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuZm9ybVZhbHVlQ2hhbmdlcyQkID0gdGhpcy5mb3JtQ29udHJvbC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICBpZiAodmFsdWUubGVuZ3RoKSB7XHJcbiAgICAgICAgdGhpcy5zdG9yZS52aWV3LmZpbHRlcigoZmVhdHVyZSkgPT4ge1xyXG4gICAgICAgICAgY29uc3QgZmlsdGVyTm9ybWFsaXplZCA9IHZhbHVlLnRvTG93ZXJDYXNlKCkubm9ybWFsaXplKCdORkQnKS5yZXBsYWNlKC9bXFx1MDMwMC1cXHUwMzZmXS9nLCAnJyk7XHJcbiAgICAgICAgICBjb25zdCBmZWF0dXJlTmFtZU5vcm1hbGl6ZWQgPSBmZWF0dXJlLnByb3BlcnRpZXMubm9tLnRvTG93ZXJDYXNlKCkubm9ybWFsaXplKCdORkQnKS5yZXBsYWNlKC9bXFx1MDMwMC1cXHUwMzZmXS9nLCAnJyk7XHJcbiAgICAgICAgICByZXR1cm4gZmVhdHVyZU5hbWVOb3JtYWxpemVkLmluY2x1ZGVzKGZpbHRlck5vcm1hbGl6ZWQpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmJ1ZmZlclZhbHVlQ2hhbmdlcyQkID0gdGhpcy5idWZmZXJGb3JtQ29udHJvbC52YWx1ZUNoYW5nZXNcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgZGVib3VuY2VUaW1lKDUwMCksXHJcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKVxyXG4gICAgICApXHJcbiAgICAgIC5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgaWYgKHRoaXMubWVhc3VyZVVuaXQgPT09IE1lYXN1cmVMZW5ndGhVbml0Lk1ldGVycyAmJiB2YWx1ZSA+IDAgJiYgdmFsdWUgPD0gMTAwMDAwKSB7XHJcbiAgICAgICAgICB0aGlzLmJ1ZmZlckNoYW5nZS5lbWl0KHZhbHVlKTtcclxuICAgICAgICAgIHRoaXMuc3BhdGlhbEZpbHRlclNlcnZpY2UubG9hZEJ1ZmZlckdlb21ldHJ5KFxyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkWm9uZSxcclxuICAgICAgICAgICAgU3BhdGlhbEZpbHRlclR5cGUuUHJlZGVmaW5lZCxcclxuICAgICAgICAgICAgdmFsdWUsXHJcbiAgICAgICAgICAgIHRoaXMucXVlcnlUeXBlXHJcbiAgICAgICAgICApLnN1YnNjcmliZSgoZmVhdHVyZUdlb206IEZlYXR1cmUpID0+IHtcclxuICAgICAgICAgICAgdGhpcy56b25lV2l0aEJ1ZmZlciA9IGZlYXR1cmVHZW9tO1xyXG4gICAgICAgICAgICB0aGlzLnpvbmVXaXRoQnVmZmVyQ2hhbmdlLmVtaXQodGhpcy56b25lV2l0aEJ1ZmZlcik7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMubWVhc3VyZVVuaXQgPT09IE1lYXN1cmVMZW5ndGhVbml0LktpbG9tZXRlcnMgJiYgdmFsdWUgPiAwICYmIHZhbHVlIDw9IDEwMCkge1xyXG4gICAgICAgICAgdGhpcy5idWZmZXJDaGFuZ2UuZW1pdCh2YWx1ZSk7XHJcbiAgICAgICAgICB0aGlzLnNwYXRpYWxGaWx0ZXJTZXJ2aWNlLmxvYWRCdWZmZXJHZW9tZXRyeShcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFpvbmUsXHJcbiAgICAgICAgICAgIFNwYXRpYWxGaWx0ZXJUeXBlLlByZWRlZmluZWQsXHJcbiAgICAgICAgICAgIHZhbHVlICogMTAwMCxcclxuICAgICAgICAgICAgdGhpcy5xdWVyeVR5cGVcclxuICAgICAgICAgICkuc3Vic2NyaWJlKChmZWF0dXJlR2VvbTogRmVhdHVyZSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnpvbmVXaXRoQnVmZmVyID0gZmVhdHVyZUdlb207XHJcbiAgICAgICAgICAgIHRoaXMuem9uZVdpdGhCdWZmZXJDaGFuZ2UuZW1pdCh0aGlzLnpvbmVXaXRoQnVmZmVyKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0gZWxzZSBpZiAodmFsdWUgPT09IDAgJiYgdGhpcy5sYXllcnMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgdGhpcy5idWZmZXJDaGFuZ2UuZW1pdCh2YWx1ZSk7XHJcbiAgICAgICAgICB0aGlzLnpvbmVXaXRoQnVmZmVyQ2hhbmdlLmVtaXQodGhpcy5zZWxlY3RlZFpvbmUpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgICAgICAgIHZhbHVlIDwgMCB8fFxyXG4gICAgICAgICAgICAodGhpcy5tZWFzdXJlVW5pdCA9PT0gTWVhc3VyZUxlbmd0aFVuaXQuTWV0ZXJzICYmIHZhbHVlID4gMTAwMDAwKSB8fFxyXG4gICAgICAgICAgICAodGhpcy5tZWFzdXJlVW5pdCA9PT0gTWVhc3VyZUxlbmd0aFVuaXQuS2lsb21ldGVycyAmJiB2YWx1ZSA+IDEwMCkpIHtcclxuICAgICAgICAgICAgdGhpcy5idWZmZXJGb3JtQ29udHJvbC5zZXRWYWx1ZSgwKTtcclxuICAgICAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5hbGVydCgnaWdvLmdlby5zcGF0aWFsRmlsdGVyLmJ1ZmZlckFsZXJ0JywgJ2lnby5nZW8uc3BhdGlhbEZpbHRlci53YXJuaW5nJyk7XHJcbiAgICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIHRoaXMuZm9ybVZhbHVlQ2hhbmdlcyQkLnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICBkaXNwbGF5Rm4oZmVhdHVyZT86IEZlYXR1cmUpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xyXG4gICAgcmV0dXJuIGZlYXR1cmUgPyBmZWF0dXJlLnByb3BlcnRpZXMubm9tIDogdW5kZWZpbmVkO1xyXG4gIH1cclxuXHJcbiAgb25ab25lQ2hhbmdlKGZlYXR1cmUpIHtcclxuICAgIGlmIChmZWF0dXJlICYmIHRoaXMucXVlcnlUeXBlKSB7XHJcbiAgICAgIHRoaXMuc3BhdGlhbEZpbHRlclNlcnZpY2UubG9hZEl0ZW1CeUlkKGZlYXR1cmUsIHRoaXMucXVlcnlUeXBlKVxyXG4gICAgICAuc3Vic2NyaWJlKChmZWF0dXJlR2VvbTogRmVhdHVyZSkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRab25lID0gZmVhdHVyZUdlb207XHJcbiAgICAgICAgdGhpcy56b25lQ2hhbmdlLmVtaXQoZmVhdHVyZUdlb20pO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldCB0aGUgbWVhc3VyZSB1bml0XHJcbiAgICogQGludGVybmFsXHJcbiAgICovXHJcbiAgb25NZWFzdXJlVW5pdENoYW5nZSh1bml0OiBNZWFzdXJlTGVuZ3RoVW5pdCkge1xyXG4gICAgaWYgKHVuaXQgPT09IHRoaXMubWVhc3VyZVVuaXQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5tZWFzdXJlVW5pdCA9IHVuaXQ7XHJcbiAgICAgIHRoaXMubWVhc3VyZVVuaXRDaGFuZ2UuZW1pdCh0aGlzLm1lYXN1cmVVbml0KTtcclxuICAgICAgdGhpcy5tZWFzdXJlVW5pdCA9PT0gTWVhc3VyZUxlbmd0aFVuaXQuTWV0ZXJzID9cclxuICAgICAgICB0aGlzLmJ1ZmZlckZvcm1Db250cm9sLnNldFZhbHVlKHRoaXMuYnVmZmVyRm9ybUNvbnRyb2wudmFsdWUgKiAxMDAwKSA6XHJcbiAgICAgICAgdGhpcy5idWZmZXJGb3JtQ29udHJvbC5zZXRWYWx1ZSh0aGlzLmJ1ZmZlckZvcm1Db250cm9sLnZhbHVlIC8gMTAwMCk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIjxmb3JtIGNsYXNzPVwiZm9ybS1saXN0XCI+XHJcbiAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJ6b25lLWxpc3RcIj5cclxuICAgICAgICA8aW5wdXQgI2lucHV0IHR5cGU9XCJ0ZXh0XCIgcGxhY2Vob2xkZXI9XCJ7eydpZ28uZ2VvLnNwYXRpYWxGaWx0ZXIubGlzdExhYmVsJyB8wqB0cmFuc2xhdGV9fVwiIG1hdElucHV0XHJcbiAgICAgICAgW2Zvcm1Db250cm9sXT1cImZvcm1Db250cm9sXCIgW21hdEF1dG9jb21wbGV0ZV09XCJhdXRvXCI+XHJcbiAgICAgICAgPG1hdC1hdXRvY29tcGxldGUgI2F1dG89XCJtYXRBdXRvY29tcGxldGVcIiAob3B0aW9uU2VsZWN0ZWQpPVwib25ab25lQ2hhbmdlKCRldmVudC5vcHRpb24udmFsdWUpXCJcclxuICAgICAgICBbZGlzcGxheVdpdGhdPVwiZGlzcGxheUZuXCI+XHJcbiAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBlbnRpdGllcyBvZiB0aGlzLnN0b3JlLnZpZXcuYWxsJCgpIHwgYXN5bmNcIiBbdmFsdWVdPVwiZW50aXRpZXNcIj5cclxuICAgICAgICAgICAgICAgIHt7ZW50aXRpZXMucHJvcGVydGllcy5ub219fVxyXG4gICAgICAgICAgICA8L21hdC1vcHRpb24+XHJcbiAgICAgICAgPC9tYXQtYXV0b2NvbXBsZXRlPlxyXG4gICAgPC9tYXQtZm9ybS1maWVsZD5cclxuPGZvcm0+XHJcblxyXG48ZGl2IGNsYXNzPVwiYnVmZmVyLWRpdlwiPlxyXG4gICAgPGZvcm0gY2xhc3M9XCJidWZmZXItZm9ybVwiPlxyXG4gICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImJ1ZmZlclwiPlxyXG4gICAgICAgICAgICA8aW5wdXQgdHlwZT1cIm51bWJlclwiIG1hdElucHV0IHBsYWNlaG9sZGVyPVwie3snaWdvLmdlby5zcGF0aWFsRmlsdGVyLmJ1ZmZlcicgfCB0cmFuc2xhdGV9fVwiIFtmb3JtQ29udHJvbF09XCJidWZmZXJGb3JtQ29udHJvbFwiXHJcbiAgICAgICAgICAgIFt2YWx1ZV09XCIwXCIgW3JlYWRvbmx5XT1cIiF6b25lXCI+XHJcbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgIDwvZm9ybT5cclxuXHJcbiAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJ1bml0LWZpZWxkXCI+XHJcbiAgICAgICAgPG1hdC1zZWxlY3RcclxuICAgICAgICBbdmFsdWVdPVwibWVhc3VyZVVuaXRcIlxyXG4gICAgICAgIChzZWxlY3Rpb25DaGFuZ2UpPVwib25NZWFzdXJlVW5pdENoYW5nZSgkZXZlbnQudmFsdWUpXCI+XHJcbiAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IG1lYXN1cmVVbml0IG9mIG1lYXN1cmVVbml0c1wiIFt2YWx1ZV09XCJtZWFzdXJlVW5pdFwiPlxyXG4gICAgICAgICAgICB7eygnaWdvLmdlby5tZWFzdXJlLicgKyBtZWFzdXJlVW5pdCkgfCB0cmFuc2xhdGV9fVxyXG4gICAgICAgIDwvbWF0LW9wdGlvbj5cclxuICAgICAgICA8L21hdC1zZWxlY3Q+XHJcbiAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG48L2Rpdj5cclxuIl19
207
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BhdGlhbC1maWx0ZXItbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9maWx0ZXIvc3BhdGlhbC1maWx0ZXIvc3BhdGlhbC1maWx0ZXItbGlzdC9zcGF0aWFsLWZpbHRlci1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dlby9zcmMvbGliL2ZpbHRlci9zcGF0aWFsLWZpbHRlci9zcGF0aWFsLWZpbHRlci1saXN0L3NwYXRpYWwtZmlsdGVyLWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR3BFLE9BQU8sRUFBMEIsaUJBQWlCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUMvRixPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFHTCx1QkFBdUIsRUFDdkIsTUFBTSxFQUNOLFlBQVksRUFDYixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVwRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7Ozs7Ozs7Ozs7OztJQ1ZoRCxzQ0FBdUY7SUFDbkYsWUFDSjtJQUFBLGlCQUFhOzs7SUFGdUQsbUNBQWtCO0lBQ2xGLGVBQ0o7SUFESSwyREFDSjs7O0lBaUJKLHNDQUEyRTtJQUN2RSxZQUNKOztJQUFBLGlCQUFhOzs7SUFGd0Msc0NBQXFCO0lBQ3RFLGVBQ0o7SUFESSwwRkFDSjs7QUREUixNQUFNLE9BQU8sMEJBQTBCO0lBNkRyQyxZQUNVLG9CQUEwQyxFQUMxQyxjQUE4QjtRQUQ5Qix5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXNCO1FBQzFDLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQTdCL0Is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UztrQkFEWixLQUFLO1lBV0YsSUFBSTtrQkFEUCxLQUFLO1lBYUcsTUFBTTtrQkFBZCxLQUFLO1lBbUJJLFVBQVU7a0JBQW5CLE1BQU07WUFDRyxvQkFBb0I7a0JBQTdCLE1BQU07WUFDRyxZQUFZO2tCQUFyQixNQUFNO1lBQ0csaUJBQWlCO2tCQUExQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEVudGl0eVN0b3JlIH0gZnJvbSAnQGlnbzIvY29tbW9uJztcbmltcG9ydCB7IFNwYXRpYWxGaWx0ZXJTZXJ2aWNlIH0gZnJvbSAnLi8uLi8uLi9zaGFyZWQvc3BhdGlhbC1maWx0ZXIuc2VydmljZSc7XG5pbXBvcnQgeyBTcGF0aWFsRmlsdGVyUXVlcnlUeXBlLCBTcGF0aWFsRmlsdGVyVHlwZSB9IGZyb20gJy4vLi4vLi4vc2hhcmVkL3NwYXRpYWwtZmlsdGVyLmVudW0nO1xuaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBPbkRlc3Ryb3ksXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBPdXRwdXQsXG4gIEV2ZW50RW1pdHRlclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgVW50eXBlZEZvcm1Db250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRmVhdHVyZSB9IGZyb20gJy4uLy4uLy4uL2ZlYXR1cmUnO1xuaW1wb3J0IHsgTWVhc3VyZUxlbmd0aFVuaXQgfSBmcm9tICcuLi8uLi8uLi9tZWFzdXJlL3NoYXJlZCc7XG5pbXBvcnQgeyBNZXNzYWdlU2VydmljZSB9IGZyb20gJ0BpZ28yL2NvcmUnO1xuaW1wb3J0IHsgTGF5ZXIgfSBmcm9tICcuLi8uLi8uLi9sYXllcic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2lnby1zcGF0aWFsLWZpbHRlci1saXN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NwYXRpYWwtZmlsdGVyLWxpc3QuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zcGF0aWFsLWZpbHRlci1saXN0LmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFNwYXRpYWxGaWx0ZXJMaXN0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuXG4gIEBJbnB1dCgpXG4gIGdldCBzdG9yZSgpOiBFbnRpdHlTdG9yZTxGZWF0dXJlPiB7XG4gICAgcmV0dXJuIHRoaXMuX3N0b3JlO1xuICB9XG4gIHNldCBzdG9yZShzdG9yZTogRW50aXR5U3RvcmU8RmVhdHVyZT4pIHtcbiAgICB0aGlzLl9zdG9yZSA9IHN0b3JlO1xuICB9XG4gIHByaXZhdGUgX3N0b3JlOiBFbnRpdHlTdG9yZTxGZWF0dXJlPjtcblxuICBASW5wdXQoKVxuICBnZXQgcXVlcnlUeXBlKCk6IFNwYXRpYWxGaWx0ZXJRdWVyeVR5cGUge1xuICAgIHJldHVybiB0aGlzLl9xdWVyeVR5cGU7XG4gIH1cbiAgc2V0IHF1ZXJ5VHlwZShxdWVyeVR5cGU6IFNwYXRpYWxGaWx0ZXJRdWVyeVR5cGUpIHtcbiAgICB0aGlzLmZvcm1Db250cm9sLnNldFZhbHVlKCcnKTtcbiAgICB0aGlzLl9xdWVyeVR5cGUgPSBxdWVyeVR5cGU7XG4gIH1cbiAgcHJpdmF0ZSBfcXVlcnlUeXBlOiBTcGF0aWFsRmlsdGVyUXVlcnlUeXBlO1xuXG4gIEBJbnB1dCgpXG4gIGdldCB6b25lKCkge1xuICAgIHJldHVybiB0aGlzLl96b25lO1xuICB9XG4gIHNldCB6b25lKHZhbHVlKSB7XG4gICAgdGhpcy5fem9uZSA9IHZhbHVlO1xuICAgIGlmICghdmFsdWUpIHtcbiAgICAgIHRoaXMuem9uZVdpdGhCdWZmZXIgPSB1bmRlZmluZWQ7XG4gICAgICB0aGlzLmJ1ZmZlckZvcm1Db250cm9sLnNldFZhbHVlKDApO1xuICAgIH1cbiAgfVxuICBwcml2YXRlIF96b25lO1xuXG4gIEBJbnB1dCgpIGxheWVyczogTGF5ZXJbXSA9IFtdO1xuXG4gIHB1YmxpYyB6b25lV2l0aEJ1ZmZlcjtcbiAgcHVibGljIHNlbGVjdGVkWm9uZTogYW55O1xuXG4gIHB1YmxpYyBtZWFzdXJlVW5pdDogTWVhc3VyZUxlbmd0aFVuaXQgPSBNZWFzdXJlTGVuZ3RoVW5pdC5NZXRlcnM7XG5cbiAgcHVibGljIGZvcm1Db250cm9sID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbCgpO1xuXG4gIHB1YmxpYyBidWZmZXJGb3JtQ29udHJvbCA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woKTtcblxuICAvKipcbiAgICogQXZhaWxhYmxlIG1lYXN1cmUgdW5pdHMgZm9yIHRoZSBtZWFzdXJlIHR5cGUgZ2l2ZW5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBnZXQgbWVhc3VyZVVuaXRzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gW01lYXN1cmVMZW5ndGhVbml0Lk1ldGVycywgTWVhc3VyZUxlbmd0aFVuaXQuS2lsb21ldGVyc107XG4gIH1cblxuICBAT3V0cHV0KCkgem9uZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8RmVhdHVyZT4oKTtcbiAgQE91dHB1dCgpIHpvbmVXaXRoQnVmZmVyQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxGZWF0dXJlPigpO1xuICBAT3V0cHV0KCkgYnVmZmVyQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG4gIEBPdXRwdXQoKSBtZWFzdXJlVW5pdENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8TWVhc3VyZUxlbmd0aFVuaXQ+KCk7XG5cbiAgZm9ybVZhbHVlQ2hhbmdlcyQkOiBTdWJzY3JpcHRpb247XG4gIGJ1ZmZlclZhbHVlQ2hhbmdlcyQkOiBTdWJzY3JpcHRpb247XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBzcGF0aWFsRmlsdGVyU2VydmljZTogU3BhdGlhbEZpbHRlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBtZXNzYWdlU2VydmljZTogTWVzc2FnZVNlcnZpY2UpIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5mb3JtVmFsdWVDaGFuZ2VzJCQgPSB0aGlzLmZvcm1Db250cm9sLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG4gICAgICBpZiAodmFsdWUubGVuZ3RoKSB7XG4gICAgICAgIHRoaXMuc3RvcmUudmlldy5maWx0ZXIoKGZlYXR1cmUpID0+IHtcbiAgICAgICAgICBjb25zdCBmaWx0ZXJOb3JtYWxpemVkID0gdmFsdWUudG9Mb3dlckNhc2UoKS5ub3JtYWxpemUoJ05GRCcpLnJlcGxhY2UoL1tcXHUwMzAwLVxcdTAzNmZdL2csICcnKTtcbiAgICAgICAgICBjb25zdCBmZWF0dXJlTmFtZU5vcm1hbGl6ZWQgPSBmZWF0dXJlLnByb3BlcnRpZXMubm9tLnRvTG93ZXJDYXNlKCkubm9ybWFsaXplKCdORkQnKS5yZXBsYWNlKC9bXFx1MDMwMC1cXHUwMzZmXS9nLCAnJyk7XG4gICAgICAgICAgcmV0dXJuIGZlYXR1cmVOYW1lTm9ybWFsaXplZC5pbmNsdWRlcyhmaWx0ZXJOb3JtYWxpemVkKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLmJ1ZmZlclZhbHVlQ2hhbmdlcyQkID0gdGhpcy5idWZmZXJGb3JtQ29udHJvbC52YWx1ZUNoYW5nZXNcbiAgICAgIC5waXBlKFxuICAgICAgICBkZWJvdW5jZVRpbWUoNTAwKSxcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgodmFsdWUpID0+IHtcbiAgICAgICAgaWYgKHRoaXMubWVhc3VyZVVuaXQgPT09IE1lYXN1cmVMZW5ndGhVbml0Lk1ldGVycyAmJiB2YWx1ZSA+IDAgJiYgdmFsdWUgPD0gMTAwMDAwKSB7XG4gICAgICAgICAgdGhpcy5idWZmZXJDaGFuZ2UuZW1pdCh2YWx1ZSk7XG4gICAgICAgICAgdGhpcy5zcGF0aWFsRmlsdGVyU2VydmljZS5sb2FkQnVmZmVyR2VvbWV0cnkoXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkWm9uZSxcbiAgICAgICAgICAgIFNwYXRpYWxGaWx0ZXJUeXBlLlByZWRlZmluZWQsXG4gICAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgICAgIHRoaXMucXVlcnlUeXBlXG4gICAgICAgICAgKS5zdWJzY3JpYmUoKGZlYXR1cmVHZW9tOiBGZWF0dXJlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnpvbmVXaXRoQnVmZmVyID0gZmVhdHVyZUdlb207XG4gICAgICAgICAgICB0aGlzLnpvbmVXaXRoQnVmZmVyQ2hhbmdlLmVtaXQodGhpcy56b25lV2l0aEJ1ZmZlcik7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5tZWFzdXJlVW5pdCA9PT0gTWVhc3VyZUxlbmd0aFVuaXQuS2lsb21ldGVycyAmJiB2YWx1ZSA+IDAgJiYgdmFsdWUgPD0gMTAwKSB7XG4gICAgICAgICAgdGhpcy5idWZmZXJDaGFuZ2UuZW1pdCh2YWx1ZSk7XG4gICAgICAgICAgdGhpcy5zcGF0aWFsRmlsdGVyU2VydmljZS5sb2FkQnVmZmVyR2VvbWV0cnkoXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkWm9uZSxcbiAgICAgICAgICAgIFNwYXRpYWxGaWx0ZXJUeXBlLlByZWRlZmluZWQsXG4gICAgICAgICAgICB2YWx1ZSAqIDEwMDAsXG4gICAgICAgICAgICB0aGlzLnF1ZXJ5VHlwZVxuICAgICAgICAgICkuc3Vic2NyaWJlKChmZWF0dXJlR2VvbTogRmVhdHVyZSkgPT4ge1xuICAgICAgICAgICAgdGhpcy56b25lV2l0aEJ1ZmZlciA9IGZlYXR1cmVHZW9tO1xuICAgICAgICAgICAgdGhpcy56b25lV2l0aEJ1ZmZlckNoYW5nZS5lbWl0KHRoaXMuem9uZVdpdGhCdWZmZXIpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2UgaWYgKHZhbHVlID09PSAwICYmIHRoaXMubGF5ZXJzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICB0aGlzLmJ1ZmZlckNoYW5nZS5lbWl0KHZhbHVlKTtcbiAgICAgICAgICB0aGlzLnpvbmVXaXRoQnVmZmVyQ2hhbmdlLmVtaXQodGhpcy5zZWxlY3RlZFpvbmUpO1xuICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgdmFsdWUgPCAwIHx8XG4gICAgICAgICAgICAodGhpcy5tZWFzdXJlVW5pdCA9PT0gTWVhc3VyZUxlbmd0aFVuaXQuTWV0ZXJzICYmIHZhbHVlID4gMTAwMDAwKSB8fFxuICAgICAgICAgICAgKHRoaXMubWVhc3VyZVVuaXQgPT09IE1lYXN1cmVMZW5ndGhVbml0LktpbG9tZXRlcnMgJiYgdmFsdWUgPiAxMDApKSB7XG4gICAgICAgICAgICB0aGlzLmJ1ZmZlckZvcm1Db250cm9sLnNldFZhbHVlKDApO1xuICAgICAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5hbGVydCgnaWdvLmdlby5zcGF0aWFsRmlsdGVyLmJ1ZmZlckFsZXJ0JywgJ2lnby5nZW8uc3BhdGlhbEZpbHRlci53YXJuaW5nJyk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuZm9ybVZhbHVlQ2hhbmdlcyQkLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBkaXNwbGF5Rm4oZmVhdHVyZT86IEZlYXR1cmUpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiBmZWF0dXJlID8gZmVhdHVyZS5wcm9wZXJ0aWVzLm5vbSA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIG9uWm9uZUNoYW5nZShmZWF0dXJlKSB7XG4gICAgaWYgKGZlYXR1cmUgJiYgdGhpcy5xdWVyeVR5cGUpIHtcbiAgICAgIHRoaXMuc3BhdGlhbEZpbHRlclNlcnZpY2UubG9hZEl0ZW1CeUlkKGZlYXR1cmUsIHRoaXMucXVlcnlUeXBlKVxuICAgICAgLnN1YnNjcmliZSgoZmVhdHVyZUdlb206IEZlYXR1cmUpID0+IHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFpvbmUgPSBmZWF0dXJlR2VvbTtcbiAgICAgICAgdGhpcy56b25lQ2hhbmdlLmVtaXQoZmVhdHVyZUdlb20pO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgbWVhc3VyZSB1bml0XG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgb25NZWFzdXJlVW5pdENoYW5nZSh1bml0OiBNZWFzdXJlTGVuZ3RoVW5pdCkge1xuICAgIGlmICh1bml0ID09PSB0aGlzLm1lYXN1cmVVbml0KSB7XG4gICAgICByZXR1cm47XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubWVhc3VyZVVuaXQgPSB1bml0O1xuICAgICAgdGhpcy5tZWFzdXJlVW5pdENoYW5nZS5lbWl0KHRoaXMubWVhc3VyZVVuaXQpO1xuICAgICAgdGhpcy5tZWFzdXJlVW5pdCA9PT0gTWVhc3VyZUxlbmd0aFVuaXQuTWV0ZXJzID9cbiAgICAgICAgdGhpcy5idWZmZXJGb3JtQ29udHJvbC5zZXRWYWx1ZSh0aGlzLmJ1ZmZlckZvcm1Db250cm9sLnZhbHVlICogMTAwMCkgOlxuICAgICAgICB0aGlzLmJ1ZmZlckZvcm1Db250cm9sLnNldFZhbHVlKHRoaXMuYnVmZmVyRm9ybUNvbnRyb2wudmFsdWUgLyAxMDAwKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxmb3JtIGNsYXNzPVwiZm9ybS1saXN0XCI+XG4gICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwiem9uZS1saXN0XCI+XG4gICAgICAgIDxpbnB1dCAjaW5wdXQgdHlwZT1cInRleHRcIiBwbGFjZWhvbGRlcj1cInt7J2lnby5nZW8uc3BhdGlhbEZpbHRlci5saXN0TGFiZWwnIHzCoHRyYW5zbGF0ZX19XCIgbWF0SW5wdXRcbiAgICAgICAgW2Zvcm1Db250cm9sXT1cImZvcm1Db250cm9sXCIgW21hdEF1dG9jb21wbGV0ZV09XCJhdXRvXCI+XG4gICAgICAgIDxtYXQtYXV0b2NvbXBsZXRlICNhdXRvPVwibWF0QXV0b2NvbXBsZXRlXCIgKG9wdGlvblNlbGVjdGVkKT1cIm9uWm9uZUNoYW5nZSgkZXZlbnQub3B0aW9uLnZhbHVlKVwiXG4gICAgICAgIFtkaXNwbGF5V2l0aF09XCJkaXNwbGF5Rm5cIj5cbiAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBlbnRpdGllcyBvZiB0aGlzLnN0b3JlLnZpZXcuYWxsJCgpIHwgYXN5bmNcIiBbdmFsdWVdPVwiZW50aXRpZXNcIj5cbiAgICAgICAgICAgICAgICB7e2VudGl0aWVzLnByb3BlcnRpZXMubm9tfX1cbiAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgPC9tYXQtYXV0b2NvbXBsZXRlPlxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XG48Zm9ybT5cblxuPGRpdiBjbGFzcz1cImJ1ZmZlci1kaXZcIj5cbiAgICA8Zm9ybSBjbGFzcz1cImJ1ZmZlci1mb3JtXCI+XG4gICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImJ1ZmZlclwiPlxuICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJudW1iZXJcIiBtYXRJbnB1dCBwbGFjZWhvbGRlcj1cInt7J2lnby5nZW8uc3BhdGlhbEZpbHRlci5idWZmZXInIHwgdHJhbnNsYXRlfX1cIiBbZm9ybUNvbnRyb2xdPVwiYnVmZmVyRm9ybUNvbnRyb2xcIlxuICAgICAgICAgICAgW3ZhbHVlXT1cIjBcIiBbcmVhZG9ubHldPVwiIXpvbmVcIj5cbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICA8L2Zvcm0+XG5cbiAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJ1bml0LWZpZWxkXCI+XG4gICAgICAgIDxtYXQtc2VsZWN0XG4gICAgICAgIFt2YWx1ZV09XCJtZWFzdXJlVW5pdFwiXG4gICAgICAgIChzZWxlY3Rpb25DaGFuZ2UpPVwib25NZWFzdXJlVW5pdENoYW5nZSgkZXZlbnQudmFsdWUpXCI+XG4gICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBtZWFzdXJlVW5pdCBvZiBtZWFzdXJlVW5pdHNcIiBbdmFsdWVdPVwibWVhc3VyZVVuaXRcIj5cbiAgICAgICAgICAgIHt7KCdpZ28uZ2VvLm1lYXN1cmUuJyArIG1lYXN1cmVVbml0KSB8IHRyYW5zbGF0ZX19XG4gICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgPC9tYXQtc2VsZWN0PlxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XG48L2Rpdj5cbiJdfQ==
@@ -1,2 +1,2 @@
1
1
  export * from './spatial-filter-type.component';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9maWx0ZXIvc3BhdGlhbC1maWx0ZXIvc3BhdGlhbC1maWx0ZXItdHlwZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGlDQUFpQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9zcGF0aWFsLWZpbHRlci10eXBlLmNvbXBvbmVudCc7XHJcbiJdfQ==
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9maWx0ZXIvc3BhdGlhbC1maWx0ZXIvc3BhdGlhbC1maWx0ZXItdHlwZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGlDQUFpQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9zcGF0aWFsLWZpbHRlci10eXBlLmNvbXBvbmVudCc7XG4iXX0=