@igo2/geo 1.13.1 → 1.13.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (448) hide show
  1. package/assets/icons/cross_black_18px.svg +88 -88
  2. package/assets/icons/place_blue_36px.svg +55 -55
  3. package/assets/icons/place_green_36px.svg +55 -55
  4. package/assets/icons/place_red_36px.svg +55 -55
  5. package/assets/icons/place_yellow_36px.svg +55 -55
  6. package/esm2020/lib/catalog/catalog-browser/catalog-browser-group.component.mjs +2 -2
  7. package/esm2020/lib/catalog/catalog-browser/catalog-browser-layer.component.mjs +2 -2
  8. package/esm2020/lib/catalog/catalog-browser/catalog-browser.component.mjs +2 -2
  9. package/esm2020/lib/catalog/catalog-browser/catalog-browser.module.mjs +1 -1
  10. package/esm2020/lib/catalog/catalog-library/add-catalog-dialog.component.mjs +2 -2
  11. package/esm2020/lib/catalog/catalog-library/catalog-library-item.component.mjs +2 -2
  12. package/esm2020/lib/catalog/catalog-library/catalog-library.component.mjs +2 -2
  13. package/esm2020/lib/catalog/catalog-library/catalog-library.module.mjs +1 -1
  14. package/esm2020/lib/catalog/catalog.module.mjs +1 -1
  15. package/esm2020/lib/catalog/index.mjs +1 -1
  16. package/esm2020/lib/catalog/shared/catalog.abstract.mjs +1 -1
  17. package/esm2020/lib/catalog/shared/catalog.enum.mjs +1 -1
  18. package/esm2020/lib/catalog/shared/catalog.interface.mjs +1 -1
  19. package/esm2020/lib/catalog/shared/catalog.service.mjs +1 -1
  20. package/esm2020/lib/catalog/shared/index.mjs +1 -1
  21. package/esm2020/lib/datasource/datasource.module.mjs +1 -1
  22. package/esm2020/lib/datasource/index.mjs +1 -1
  23. package/esm2020/lib/datasource/shared/capabilities.service.mjs +1 -1
  24. package/esm2020/lib/datasource/shared/datasource.service.mjs +1 -1
  25. package/esm2020/lib/datasource/shared/datasources/any-datasource.interface.mjs +1 -1
  26. package/esm2020/lib/datasource/shared/datasources/any-datasource.mjs +1 -1
  27. package/esm2020/lib/datasource/shared/datasources/arcgisrest-datasource.interface.mjs +1 -1
  28. package/esm2020/lib/datasource/shared/datasources/arcgisrest-datasource.mjs +1 -1
  29. package/esm2020/lib/datasource/shared/datasources/carto-datasource.interface.mjs +1 -1
  30. package/esm2020/lib/datasource/shared/datasources/carto-datasource.mjs +1 -1
  31. package/esm2020/lib/datasource/shared/datasources/cluster-datasource.interface.mjs +1 -1
  32. package/esm2020/lib/datasource/shared/datasources/cluster-datasource.mjs +1 -1
  33. package/esm2020/lib/datasource/shared/datasources/data.service.mjs +1 -1
  34. package/esm2020/lib/datasource/shared/datasources/datasource.interface.mjs +1 -1
  35. package/esm2020/lib/datasource/shared/datasources/datasource.mjs +1 -1
  36. package/esm2020/lib/datasource/shared/datasources/feature-datasource.interface.mjs +1 -1
  37. package/esm2020/lib/datasource/shared/datasources/feature-datasource.mjs +1 -1
  38. package/esm2020/lib/datasource/shared/datasources/imagearcgisrest-datasource.interface.mjs +1 -1
  39. package/esm2020/lib/datasource/shared/datasources/imagearcgisrest-datasource.mjs +1 -1
  40. package/esm2020/lib/datasource/shared/datasources/index.mjs +1 -1
  41. package/esm2020/lib/datasource/shared/datasources/mvt-datasource.interface.mjs +1 -1
  42. package/esm2020/lib/datasource/shared/datasources/mvt-datasource.mjs +1 -1
  43. package/esm2020/lib/datasource/shared/datasources/osm-datasource.interface.mjs +1 -1
  44. package/esm2020/lib/datasource/shared/datasources/osm-datasource.mjs +1 -1
  45. package/esm2020/lib/datasource/shared/datasources/tilearcgisrest-datasource.interface.mjs +1 -1
  46. package/esm2020/lib/datasource/shared/datasources/tilearcgisrest-datasource.mjs +1 -1
  47. package/esm2020/lib/datasource/shared/datasources/tiledebug-datasource.interface.mjs +1 -1
  48. package/esm2020/lib/datasource/shared/datasources/tiledebug-datasource.mjs +1 -1
  49. package/esm2020/lib/datasource/shared/datasources/websocket-datasource.interface.mjs +1 -1
  50. package/esm2020/lib/datasource/shared/datasources/websocket-datasource.mjs +1 -1
  51. package/esm2020/lib/datasource/shared/datasources/wfs-datasource.interface.mjs +1 -1
  52. package/esm2020/lib/datasource/shared/datasources/wfs-datasource.mjs +1 -1
  53. package/esm2020/lib/datasource/shared/datasources/wfs.service.mjs +1 -1
  54. package/esm2020/lib/datasource/shared/datasources/wms-datasource.interface.mjs +1 -1
  55. package/esm2020/lib/datasource/shared/datasources/wms-datasource.mjs +1 -1
  56. package/esm2020/lib/datasource/shared/datasources/wms-wfs.utils.mjs +1 -1
  57. package/esm2020/lib/datasource/shared/datasources/wmts-datasource.interface.mjs +1 -1
  58. package/esm2020/lib/datasource/shared/datasources/wmts-datasource.mjs +1 -1
  59. package/esm2020/lib/datasource/shared/datasources/xyz-datasource.interface.mjs +1 -1
  60. package/esm2020/lib/datasource/shared/datasources/xyz-datasource.mjs +1 -1
  61. package/esm2020/lib/datasource/shared/index.mjs +1 -1
  62. package/esm2020/lib/datasource/shared/options/index.mjs +1 -1
  63. package/esm2020/lib/datasource/shared/options/options-api.interface.mjs +1 -1
  64. package/esm2020/lib/datasource/shared/options/options-api.providers.mjs +1 -1
  65. package/esm2020/lib/datasource/shared/options/options-api.service.mjs +1 -1
  66. package/esm2020/lib/datasource/shared/options/options.service.mjs +1 -1
  67. package/esm2020/lib/datasource/utils/esri-style-generator.mjs +1 -1
  68. package/esm2020/lib/datasource/utils/index.mjs +1 -1
  69. package/esm2020/lib/datasource/utils/tilegrid.mjs +1 -1
  70. package/esm2020/lib/directions/directions-buttons/directions-buttons.component.mjs +2 -2
  71. package/esm2020/lib/directions/directions-buttons/index.mjs +1 -1
  72. package/esm2020/lib/directions/directions-inputs/directions-inputs.component.mjs +2 -2
  73. package/esm2020/lib/directions/directions-inputs/index.mjs +1 -1
  74. package/esm2020/lib/directions/directions-results/directions-results.component.mjs +2 -2
  75. package/esm2020/lib/directions/directions-results/index.mjs +1 -1
  76. package/esm2020/lib/directions/directions-sources/directions-source.interface.mjs +1 -1
  77. package/esm2020/lib/directions/directions-sources/directions-source.mjs +1 -1
  78. package/esm2020/lib/directions/directions-sources/directions-source.provider.mjs +1 -1
  79. package/esm2020/lib/directions/directions-sources/index.mjs +1 -1
  80. package/esm2020/lib/directions/directions-sources/osrm-directions-source.mjs +1 -1
  81. package/esm2020/lib/directions/directions.component.mjs +2 -2
  82. package/esm2020/lib/directions/directions.module.mjs +1 -1
  83. package/esm2020/lib/directions/index.mjs +1 -1
  84. package/esm2020/lib/directions/shared/directions-source.service.mjs +1 -1
  85. package/esm2020/lib/directions/shared/directions.enum.mjs +1 -1
  86. package/esm2020/lib/directions/shared/directions.interface.mjs +1 -1
  87. package/esm2020/lib/directions/shared/directions.service.mjs +1 -1
  88. package/esm2020/lib/directions/shared/directions.utils.mjs +1 -1
  89. package/esm2020/lib/directions/shared/index.mjs +1 -1
  90. package/esm2020/lib/directions/shared/store.mjs +1 -1
  91. package/esm2020/lib/download/download-button/download-button.component.mjs +2 -2
  92. package/esm2020/lib/download/download-button/index.mjs +1 -1
  93. package/esm2020/lib/download/download.module.mjs +1 -1
  94. package/esm2020/lib/download/index.mjs +1 -1
  95. package/esm2020/lib/download/shared/download.interface.mjs +1 -1
  96. package/esm2020/lib/download/shared/download.service.mjs +1 -1
  97. package/esm2020/lib/download/shared/index.mjs +1 -1
  98. package/esm2020/lib/draw/draw/draw-popup.component.mjs +2 -2
  99. package/esm2020/lib/draw/draw/draw-shorcuts.component.mjs +2 -2
  100. package/esm2020/lib/draw/draw/draw.component.mjs +2 -2
  101. package/esm2020/lib/draw/draw/draw.module.mjs +1 -1
  102. package/esm2020/lib/draw/drawingTool.module.mjs +1 -1
  103. package/esm2020/lib/draw/index.mjs +1 -1
  104. package/esm2020/lib/draw/shared/draw-icon.service.mjs +1 -1
  105. package/esm2020/lib/draw/shared/draw-style.service.mjs +1 -1
  106. package/esm2020/lib/draw/shared/draw.enum.mjs +1 -1
  107. package/esm2020/lib/draw/shared/draw.interface.mjs +1 -1
  108. package/esm2020/lib/draw/shared/draw.utils.mjs +1 -1
  109. package/esm2020/lib/draw/shared/index.mjs +1 -1
  110. package/esm2020/lib/feature/feature-details/feature-details.component.mjs +3 -5
  111. package/esm2020/lib/feature/feature-details/feature-details.directive.mjs +1 -1
  112. package/esm2020/lib/feature/feature-details/feature-details.module.mjs +1 -1
  113. package/esm2020/lib/feature/feature-form/feature-form.component.mjs +2 -2
  114. package/esm2020/lib/feature/feature-form/feature-form.module.mjs +1 -1
  115. package/esm2020/lib/feature/feature.module.mjs +1 -1
  116. package/esm2020/lib/feature/index.mjs +1 -1
  117. package/esm2020/lib/feature/shared/feature.enums.mjs +1 -1
  118. package/esm2020/lib/feature/shared/feature.interfaces.mjs +1 -1
  119. package/esm2020/lib/feature/shared/feature.utils.mjs +1 -1
  120. package/esm2020/lib/feature/shared/index.mjs +1 -1
  121. package/esm2020/lib/feature/shared/store.mjs +1 -1
  122. package/esm2020/lib/feature/shared/strategies/in-map-extent.mjs +1 -1
  123. package/esm2020/lib/feature/shared/strategies/in-map-resolution.mjs +1 -1
  124. package/esm2020/lib/feature/shared/strategies/index.mjs +1 -1
  125. package/esm2020/lib/feature/shared/strategies/loading-layer.mjs +1 -1
  126. package/esm2020/lib/feature/shared/strategies/loading.mjs +1 -1
  127. package/esm2020/lib/feature/shared/strategies/selection.mjs +1 -1
  128. package/esm2020/lib/feature/shared/strategies.utils.mjs +1 -1
  129. package/esm2020/lib/filter/filter.module.mjs +1 -1
  130. package/esm2020/lib/filter/index.mjs +1 -1
  131. package/esm2020/lib/filter/ogc-filter-button/index.mjs +1 -1
  132. package/esm2020/lib/filter/ogc-filter-button/ogc-filter-button.component.mjs +2 -2
  133. package/esm2020/lib/filter/ogc-filter-form/index.mjs +1 -1
  134. package/esm2020/lib/filter/ogc-filter-form/ogc-filter-form.component.mjs +2 -2
  135. package/esm2020/lib/filter/ogc-filter-selection/index.mjs +1 -1
  136. package/esm2020/lib/filter/ogc-filter-selection/ogc-filter-selection.component.mjs +2 -2
  137. package/esm2020/lib/filter/ogc-filter-time/index.mjs +1 -1
  138. package/esm2020/lib/filter/ogc-filter-time/ogc-filter-time-slider.component.mjs +2 -2
  139. package/esm2020/lib/filter/ogc-filter-time/ogc-filter-time.component.mjs +2 -2
  140. package/esm2020/lib/filter/ogc-filterable-form/index.mjs +1 -1
  141. package/esm2020/lib/filter/ogc-filterable-form/ogc-filterable-form.component.mjs +2 -2
  142. package/esm2020/lib/filter/ogc-filterable-item/index.mjs +1 -1
  143. package/esm2020/lib/filter/ogc-filterable-item/ogc-filterable-item.component.mjs +2 -2
  144. package/esm2020/lib/filter/ogc-filterable-list/index.mjs +1 -1
  145. package/esm2020/lib/filter/ogc-filterable-list/ogc-filterable-list-binding.directive.mjs +1 -1
  146. package/esm2020/lib/filter/ogc-filterable-list/ogc-filterable-list.component.mjs +2 -2
  147. package/esm2020/lib/filter/shared/filterable-datasource.pipe.mjs +1 -1
  148. package/esm2020/lib/filter/shared/index.mjs +1 -1
  149. package/esm2020/lib/filter/shared/ogc-filter-time.service.mjs +1 -1
  150. package/esm2020/lib/filter/shared/ogc-filter.enum.mjs +1 -1
  151. package/esm2020/lib/filter/shared/ogc-filter.interface.mjs +1 -1
  152. package/esm2020/lib/filter/shared/ogc-filter.mjs +1 -1
  153. package/esm2020/lib/filter/shared/ogc-filter.service.mjs +1 -1
  154. package/esm2020/lib/filter/shared/spatial-filter.enum.mjs +1 -1
  155. package/esm2020/lib/filter/shared/spatial-filter.interface.mjs +1 -1
  156. package/esm2020/lib/filter/shared/spatial-filter.service.mjs +1 -1
  157. package/esm2020/lib/filter/shared/time-filter.enum.mjs +1 -1
  158. package/esm2020/lib/filter/shared/time-filter.interface.mjs +1 -1
  159. package/esm2020/lib/filter/shared/time-filter.service.mjs +1 -1
  160. package/esm2020/lib/filter/spatial-filter/spatial-filter-item/index.mjs +1 -1
  161. package/esm2020/lib/filter/spatial-filter/spatial-filter-item/spatial-filter-item.component.mjs +2 -2
  162. package/esm2020/lib/filter/spatial-filter/spatial-filter-list/index.mjs +1 -1
  163. package/esm2020/lib/filter/spatial-filter/spatial-filter-list/spatial-filter-list.component.mjs +2 -2
  164. package/esm2020/lib/filter/spatial-filter/spatial-filter-type/index.mjs +1 -1
  165. package/esm2020/lib/filter/spatial-filter/spatial-filter-type/spatial-filter-type.component.mjs +2 -2
  166. package/esm2020/lib/filter/time-filter-button/index.mjs +1 -1
  167. package/esm2020/lib/filter/time-filter-button/time-filter-button.component.mjs +2 -2
  168. package/esm2020/lib/filter/time-filter-form/index.mjs +1 -1
  169. package/esm2020/lib/filter/time-filter-form/time-filter-form.component.mjs +2 -2
  170. package/esm2020/lib/filter/time-filter-item/index.mjs +1 -1
  171. package/esm2020/lib/filter/time-filter-item/time-filter-item.component.mjs +2 -2
  172. package/esm2020/lib/filter/time-filter-list/index.mjs +1 -1
  173. package/esm2020/lib/filter/time-filter-list/time-filter-list-binding.directive.mjs +1 -1
  174. package/esm2020/lib/filter/time-filter-list/time-filter-list.component.mjs +2 -2
  175. package/esm2020/lib/geo.module.mjs +1 -1
  176. package/esm2020/lib/geometry/geometry-form-field/geometry-form-field-input.component.mjs +1 -1
  177. package/esm2020/lib/geometry/geometry-form-field/geometry-form-field.component.mjs +2 -2
  178. package/esm2020/lib/geometry/geometry-form-field/geometry-form-field.module.mjs +1 -1
  179. package/esm2020/lib/geometry/geometry.module.mjs +1 -1
  180. package/esm2020/lib/geometry/index.mjs +1 -1
  181. package/esm2020/lib/geometry/shared/controls/draw.mjs +1 -1
  182. package/esm2020/lib/geometry/shared/controls/index.mjs +1 -1
  183. package/esm2020/lib/geometry/shared/controls/modify.mjs +1 -1
  184. package/esm2020/lib/geometry/shared/controls/slice.mjs +1 -1
  185. package/esm2020/lib/geometry/shared/geometry.errors.mjs +1 -1
  186. package/esm2020/lib/geometry/shared/geometry.interfaces.mjs +1 -1
  187. package/esm2020/lib/geometry/shared/geometry.utils.mjs +1 -1
  188. package/esm2020/lib/geometry/shared/index.mjs +1 -1
  189. package/esm2020/lib/import-export/export-button/export-button.component.mjs +2 -2
  190. package/esm2020/lib/import-export/export-button/index.mjs +1 -1
  191. package/esm2020/lib/import-export/import-export/import-export.component.mjs +2 -2
  192. package/esm2020/lib/import-export/import-export/index.mjs +1 -1
  193. package/esm2020/lib/import-export/import-export.module.mjs +1 -1
  194. package/esm2020/lib/import-export/index.mjs +1 -1
  195. package/esm2020/lib/import-export/shared/drop-geo-file.directive.mjs +1 -1
  196. package/esm2020/lib/import-export/shared/export.errors.mjs +1 -1
  197. package/esm2020/lib/import-export/shared/export.interface.mjs +1 -1
  198. package/esm2020/lib/import-export/shared/export.service.mjs +1 -1
  199. package/esm2020/lib/import-export/shared/export.type.mjs +1 -1
  200. package/esm2020/lib/import-export/shared/export.utils.mjs +1 -1
  201. package/esm2020/lib/import-export/shared/import.errors.mjs +1 -1
  202. package/esm2020/lib/import-export/shared/import.interface.mjs +1 -1
  203. package/esm2020/lib/import-export/shared/import.service.mjs +1 -1
  204. package/esm2020/lib/import-export/shared/import.utils.mjs +1 -1
  205. package/esm2020/lib/import-export/shared/index.mjs +1 -1
  206. package/esm2020/lib/import-export/style-list/index.mjs +1 -1
  207. package/esm2020/lib/import-export/style-list/style-list.interface.mjs +1 -1
  208. package/esm2020/lib/import-export/style-list/style-list.module.mjs +1 -1
  209. package/esm2020/lib/import-export/style-list/style-list.provider.mjs +1 -1
  210. package/esm2020/lib/import-export/style-list/style-list.service.mjs +1 -1
  211. package/esm2020/lib/layer/index.mjs +1 -1
  212. package/esm2020/lib/layer/layer-item/index.mjs +1 -1
  213. package/esm2020/lib/layer/layer-item/layer-item.component.mjs +2 -2
  214. package/esm2020/lib/layer/layer-legend/index.mjs +1 -1
  215. package/esm2020/lib/layer/layer-legend/layer-legend.component.mjs +2 -2
  216. package/esm2020/lib/layer/layer-legend-item/index.mjs +1 -1
  217. package/esm2020/lib/layer/layer-legend-item/layer-legend-item.component.mjs +2 -2
  218. package/esm2020/lib/layer/layer-legend-list/index.mjs +1 -1
  219. package/esm2020/lib/layer/layer-legend-list/layer-legend-list-binding.directive.mjs +1 -1
  220. package/esm2020/lib/layer/layer-legend-list/layer-legend-list.component.mjs +2 -2
  221. package/esm2020/lib/layer/layer-list/index.mjs +1 -1
  222. package/esm2020/lib/layer/layer-list/layer-list-binding.directive.mjs +1 -1
  223. package/esm2020/lib/layer/layer-list/layer-list.component.mjs +2 -2
  224. package/esm2020/lib/layer/layer-list/layer-list.enum.mjs +1 -1
  225. package/esm2020/lib/layer/layer-list-tool/index.mjs +1 -1
  226. package/esm2020/lib/layer/layer-list-tool/layer-list-tool.component.mjs +2 -2
  227. package/esm2020/lib/layer/layer-list-tool/layer-list-tool.enum.mjs +1 -1
  228. package/esm2020/lib/layer/layer-list-tool/layer-list-tool.interface.mjs +1 -1
  229. package/esm2020/lib/layer/layer-list-tool/layer-list-tool.service.mjs +1 -1
  230. package/esm2020/lib/layer/layer.module.mjs +1 -1
  231. package/esm2020/lib/layer/shared/clusterParam.mjs +1 -1
  232. package/esm2020/lib/layer/shared/index.mjs +1 -1
  233. package/esm2020/lib/layer/shared/layer.enums.mjs +1 -1
  234. package/esm2020/lib/layer/shared/layer.service.mjs +1 -1
  235. package/esm2020/lib/layer/shared/layers/any-layer.interface.mjs +1 -1
  236. package/esm2020/lib/layer/shared/layers/any-layer.mjs +1 -1
  237. package/esm2020/lib/layer/shared/layers/image-layer.interface.mjs +1 -1
  238. package/esm2020/lib/layer/shared/layers/image-layer.mjs +1 -1
  239. package/esm2020/lib/layer/shared/layers/index.mjs +1 -1
  240. package/esm2020/lib/layer/shared/layers/layer.interface.mjs +1 -1
  241. package/esm2020/lib/layer/shared/layers/layer.mjs +1 -1
  242. package/esm2020/lib/layer/shared/layers/tile-layer.interface.mjs +1 -1
  243. package/esm2020/lib/layer/shared/layers/tile-layer.mjs +1 -1
  244. package/esm2020/lib/layer/shared/layers/vector-layer.interface.mjs +1 -1
  245. package/esm2020/lib/layer/shared/layers/vector-layer.mjs +1 -1
  246. package/esm2020/lib/layer/shared/layers/vectortile-layer.interface.mjs +1 -1
  247. package/esm2020/lib/layer/shared/layers/vectortile-layer.mjs +1 -1
  248. package/esm2020/lib/layer/shared/style.service.mjs +1 -1
  249. package/esm2020/lib/layer/shared/vector-style.interface.mjs +1 -1
  250. package/esm2020/lib/layer/style-modal/index.mjs +1 -1
  251. package/esm2020/lib/layer/style-modal/style-modal.component.mjs +2 -2
  252. package/esm2020/lib/layer/track-feature-button/index.mjs +1 -1
  253. package/esm2020/lib/layer/track-feature-button/track-feature-button.component.mjs +2 -2
  254. package/esm2020/lib/layer/utils/image-watcher.mjs +1 -1
  255. package/esm2020/lib/layer/utils/index.mjs +1 -1
  256. package/esm2020/lib/layer/utils/layer.utils.mjs +1 -1
  257. package/esm2020/lib/layer/utils/outputLegend.mjs +1 -1
  258. package/esm2020/lib/layer/utils/tile-watcher.mjs +1 -1
  259. package/esm2020/lib/layer/utils/vector-watcher.mjs +1 -1
  260. package/esm2020/lib/map/baselayers-switcher/baselayers-switcher.animation.mjs +1 -1
  261. package/esm2020/lib/map/baselayers-switcher/baselayers-switcher.component.mjs +2 -2
  262. package/esm2020/lib/map/baselayers-switcher/index.mjs +1 -1
  263. package/esm2020/lib/map/baselayers-switcher/mini-basemap.component.mjs +2 -2
  264. package/esm2020/lib/map/geolocate-button/geolocate-button.component.mjs +2 -2
  265. package/esm2020/lib/map/geolocate-button/index.mjs +1 -1
  266. package/esm2020/lib/map/index.mjs +1 -1
  267. package/esm2020/lib/map/info-section/index.mjs +1 -1
  268. package/esm2020/lib/map/info-section/info-section.component.mjs +2 -2
  269. package/esm2020/lib/map/map-browser/index.mjs +1 -1
  270. package/esm2020/lib/map/map-browser/map-browser.component.mjs +2 -2
  271. package/esm2020/lib/map/map-center/index.mjs +1 -1
  272. package/esm2020/lib/map/map-center/map-center.component.mjs +2 -2
  273. package/esm2020/lib/map/map.module.mjs +1 -1
  274. package/esm2020/lib/map/menu-button/index.mjs +1 -1
  275. package/esm2020/lib/map/menu-button/menu-button.component.mjs +2 -2
  276. package/esm2020/lib/map/offline-button/index.mjs +1 -1
  277. package/esm2020/lib/map/offline-button/offline-button.component.mjs +2 -2
  278. package/esm2020/lib/map/rotation-button/index.mjs +1 -1
  279. package/esm2020/lib/map/rotation-button/rotation-button.component.mjs +41 -62
  280. package/esm2020/lib/map/shared/controllers/controller.mjs +1 -1
  281. package/esm2020/lib/map/shared/controllers/geolocation.mjs +1 -1
  282. package/esm2020/lib/map/shared/controllers/index.mjs +1 -1
  283. package/esm2020/lib/map/shared/controllers/view.mjs +11 -2
  284. package/esm2020/lib/map/shared/hover-feature.directive.mjs +10 -13
  285. package/esm2020/lib/map/shared/index.mjs +1 -1
  286. package/esm2020/lib/map/shared/linkedLayers.utils.mjs +3 -3
  287. package/esm2020/lib/map/shared/map-pointer-position.directive.mjs +1 -1
  288. package/esm2020/lib/map/shared/map.enums.mjs +1 -1
  289. package/esm2020/lib/map/shared/map.interface.mjs +1 -1
  290. package/esm2020/lib/map/shared/map.mjs +2 -1
  291. package/esm2020/lib/map/shared/map.service.mjs +1 -1
  292. package/esm2020/lib/map/shared/map.utils.mjs +1 -1
  293. package/esm2020/lib/map/shared/mapOffline.directive.mjs +1 -1
  294. package/esm2020/lib/map/shared/projection.interfaces.mjs +1 -1
  295. package/esm2020/lib/map/shared/projection.service.mjs +1 -1
  296. package/esm2020/lib/map/shared/projection.utils.mjs +1 -1
  297. package/esm2020/lib/map/swipe-control/index.mjs +1 -1
  298. package/esm2020/lib/map/swipe-control/swipe-control.component.mjs +2 -2
  299. package/esm2020/lib/map/utils/layer-watcher.mjs +1 -1
  300. package/esm2020/lib/map/wake-lock-button/index.mjs +1 -1
  301. package/esm2020/lib/map/wake-lock-button/wake-lock-button.component.mjs +2 -2
  302. package/esm2020/lib/map/zoom-button/index.mjs +1 -1
  303. package/esm2020/lib/map/zoom-button/zoom-button.component.mjs +2 -2
  304. package/esm2020/lib/measure/index.mjs +1 -1
  305. package/esm2020/lib/measure/measure.module.mjs +1 -1
  306. package/esm2020/lib/measure/measurer/measure-format.pipe.mjs +1 -1
  307. package/esm2020/lib/measure/measurer/measurer-dialog.component.mjs +2 -2
  308. package/esm2020/lib/measure/measurer/measurer-item.component.mjs +2 -2
  309. package/esm2020/lib/measure/measurer/measurer.component.mjs +2 -2
  310. package/esm2020/lib/measure/measurer/measurer.module.mjs +1 -1
  311. package/esm2020/lib/measure/shared/index.mjs +1 -1
  312. package/esm2020/lib/measure/shared/measure.enum.mjs +1 -1
  313. package/esm2020/lib/measure/shared/measure.interfaces.mjs +1 -1
  314. package/esm2020/lib/measure/shared/measure.utils.mjs +1 -1
  315. package/esm2020/lib/metadata/index.mjs +1 -1
  316. package/esm2020/lib/metadata/metadata-button/index.mjs +1 -1
  317. package/esm2020/lib/metadata/metadata-button/metadata-button.component.mjs +3 -3
  318. package/esm2020/lib/metadata/metadata.module.mjs +1 -1
  319. package/esm2020/lib/metadata/shared/index.mjs +1 -1
  320. package/esm2020/lib/metadata/shared/metadata.interface.mjs +1 -1
  321. package/esm2020/lib/metadata/shared/metadata.service.mjs +1 -1
  322. package/esm2020/lib/offline/geoDB/configFileToGeoDB.service.mjs +76 -0
  323. package/esm2020/lib/offline/geoDB/geoDB.enums.mjs +1 -1
  324. package/esm2020/lib/offline/geoDB/geoDB.interface.mjs +1 -1
  325. package/esm2020/lib/offline/geoDB/geoDB.service.mjs +7 -1
  326. package/esm2020/lib/offline/geoDB/index.mjs +2 -1
  327. package/esm2020/lib/offline/index.mjs +1 -1
  328. package/esm2020/lib/offline/shared/geo-network.service.mjs +1 -1
  329. package/esm2020/lib/offline/shared/index.mjs +1 -1
  330. package/esm2020/lib/overlay/index.mjs +1 -1
  331. package/esm2020/lib/overlay/overlay.module.mjs +1 -1
  332. package/esm2020/lib/overlay/shared/index.mjs +1 -1
  333. package/esm2020/lib/overlay/shared/overlay-marker-style.utils.mjs +1 -1
  334. package/esm2020/lib/overlay/shared/overlay.directive.mjs +1 -1
  335. package/esm2020/lib/overlay/shared/overlay.enum.mjs +1 -1
  336. package/esm2020/lib/overlay/shared/overlay.mjs +1 -1
  337. package/esm2020/lib/overlay/shared/overlay.service.mjs +1 -1
  338. package/esm2020/lib/overlay/shared/overlay.utils.mjs +1 -1
  339. package/esm2020/lib/print/index.mjs +1 -1
  340. package/esm2020/lib/print/print/print.component.mjs +2 -2
  341. package/esm2020/lib/print/print-form/index.mjs +1 -1
  342. package/esm2020/lib/print/print-form/print-form.component.mjs +2 -2
  343. package/esm2020/lib/print/print.module.mjs +1 -1
  344. package/esm2020/lib/print/shared/index.mjs +1 -1
  345. package/esm2020/lib/print/shared/print.interface.mjs +1 -1
  346. package/esm2020/lib/print/shared/print.service.mjs +1 -1
  347. package/esm2020/lib/print/shared/print.type.mjs +1 -1
  348. package/esm2020/lib/query/index.mjs +1 -1
  349. package/esm2020/lib/query/query.module.mjs +1 -1
  350. package/esm2020/lib/query/shared/index.mjs +1 -1
  351. package/esm2020/lib/query/shared/query-search-source.mjs +1 -1
  352. package/esm2020/lib/query/shared/query-search-source.providers.mjs +1 -1
  353. package/esm2020/lib/query/shared/query.directive.mjs +1 -1
  354. package/esm2020/lib/query/shared/query.enums.mjs +1 -1
  355. package/esm2020/lib/query/shared/query.interfaces.mjs +1 -1
  356. package/esm2020/lib/query/shared/query.service.mjs +1 -1
  357. package/esm2020/lib/query/shared/query.utils.mjs +1 -1
  358. package/esm2020/lib/search/index.mjs +1 -1
  359. package/esm2020/lib/search/search-bar/search-bar.component.mjs +2 -2
  360. package/esm2020/lib/search/search-bar/search-bar.module.mjs +1 -1
  361. package/esm2020/lib/search/search-bar/search-url-param.directive.mjs +1 -1
  362. package/esm2020/lib/search/search-results/search-results-add-button.component.mjs +2 -2
  363. package/esm2020/lib/search/search-results/search-results-item.component.mjs +2 -2
  364. package/esm2020/lib/search/search-results/search-results.component.mjs +2 -2
  365. package/esm2020/lib/search/search-results/search-results.module.mjs +1 -1
  366. package/esm2020/lib/search/search-selector/search-selector.component.mjs +2 -2
  367. package/esm2020/lib/search/search-selector/search-selector.module.mjs +1 -1
  368. package/esm2020/lib/search/search-settings/search-settings.component.mjs +2 -2
  369. package/esm2020/lib/search/search-settings/search-settings.module.mjs +1 -1
  370. package/esm2020/lib/search/search.module.mjs +1 -1
  371. package/esm2020/lib/search/shared/index.mjs +1 -1
  372. package/esm2020/lib/search/shared/search-pointer-summary.directive.mjs +1 -1
  373. package/esm2020/lib/search/shared/search-source-service.providers.mjs +1 -1
  374. package/esm2020/lib/search/shared/search-source.service.mjs +1 -1
  375. package/esm2020/lib/search/shared/search.enums.mjs +1 -1
  376. package/esm2020/lib/search/shared/search.interfaces.mjs +1 -1
  377. package/esm2020/lib/search/shared/search.service.mjs +1 -1
  378. package/esm2020/lib/search/shared/search.utils.mjs +1 -1
  379. package/esm2020/lib/search/shared/sources/cadastre.mjs +1 -1
  380. package/esm2020/lib/search/shared/sources/cadastre.providers.mjs +1 -1
  381. package/esm2020/lib/search/shared/sources/coordinates.interfaces.mjs +1 -1
  382. package/esm2020/lib/search/shared/sources/coordinates.mjs +1 -1
  383. package/esm2020/lib/search/shared/sources/coordinates.providers.mjs +1 -1
  384. package/esm2020/lib/search/shared/sources/icherche.interfaces.mjs +1 -1
  385. package/esm2020/lib/search/shared/sources/icherche.mjs +1 -1
  386. package/esm2020/lib/search/shared/sources/icherche.providers.mjs +1 -1
  387. package/esm2020/lib/search/shared/sources/ilayer.interfaces.mjs +1 -1
  388. package/esm2020/lib/search/shared/sources/ilayer.mjs +1 -1
  389. package/esm2020/lib/search/shared/sources/ilayer.providers.mjs +1 -1
  390. package/esm2020/lib/search/shared/sources/index.mjs +1 -1
  391. package/esm2020/lib/search/shared/sources/nominatim.interfaces.mjs +1 -1
  392. package/esm2020/lib/search/shared/sources/nominatim.mjs +2 -2
  393. package/esm2020/lib/search/shared/sources/nominatim.providers.mjs +1 -1
  394. package/esm2020/lib/search/shared/sources/source.interfaces.mjs +1 -1
  395. package/esm2020/lib/search/shared/sources/source.mjs +1 -1
  396. package/esm2020/lib/search/shared/sources/storedqueries.interfaces.mjs +1 -1
  397. package/esm2020/lib/search/shared/sources/storedqueries.mjs +1 -1
  398. package/esm2020/lib/search/shared/sources/storedqueries.providers.mjs +1 -1
  399. package/esm2020/lib/toast/index.mjs +1 -1
  400. package/esm2020/lib/toast/toast.component.mjs +2 -2
  401. package/esm2020/lib/toast/toast.module.mjs +1 -1
  402. package/esm2020/lib/utils/commonVectorStyle.interface.mjs +1 -1
  403. package/esm2020/lib/utils/commonVectorStyle.mjs +1 -1
  404. package/esm2020/lib/utils/googleLinks.mjs +1 -1
  405. package/esm2020/lib/utils/id-generator.mjs +1 -1
  406. package/esm2020/lib/utils/index.mjs +1 -1
  407. package/esm2020/lib/utils/osmLinks.mjs +1 -1
  408. package/esm2020/lib/wkt/index.mjs +1 -1
  409. package/esm2020/lib/wkt/shared/index.mjs +1 -1
  410. package/esm2020/lib/wkt/shared/wkt.service.mjs +15 -15
  411. package/esm2020/lib/wkt/wkt.module.mjs +1 -1
  412. package/esm2020/lib/workspace/confirmation-popup/confirmation-popup.component.mjs +2 -2
  413. package/esm2020/lib/workspace/confirmation-popup/confirmation-popup.module.mjs +1 -1
  414. package/esm2020/lib/workspace/confirmation-popup/index.mjs +1 -1
  415. package/esm2020/lib/workspace/index.mjs +1 -1
  416. package/esm2020/lib/workspace/shared/edition-workspace.mjs +1 -1
  417. package/esm2020/lib/workspace/shared/edition-workspace.service.mjs +1 -1
  418. package/esm2020/lib/workspace/shared/feature-workspace.mjs +1 -1
  419. package/esm2020/lib/workspace/shared/feature-workspace.service.mjs +1 -1
  420. package/esm2020/lib/workspace/shared/index.mjs +1 -1
  421. package/esm2020/lib/workspace/shared/wfs-workspace.mjs +1 -1
  422. package/esm2020/lib/workspace/shared/wfs-workspace.service.mjs +1 -1
  423. package/esm2020/lib/workspace/shared/wms-workspace.service.mjs +1 -1
  424. package/esm2020/lib/workspace/shared/workspace.utils.mjs +1 -1
  425. package/esm2020/lib/workspace/widgets/index.mjs +1 -1
  426. package/esm2020/lib/workspace/widgets/ogc-filter/ogc-filter.component.mjs +2 -2
  427. package/esm2020/lib/workspace/widgets/ogc-filter/ogc-filter.module.mjs +1 -1
  428. package/esm2020/lib/workspace/widgets/widgets.mjs +1 -1
  429. package/esm2020/lib/workspace/workspace-selector/workspace-selector.directive.mjs +1 -1
  430. package/esm2020/lib/workspace/workspace-selector/workspace-selector.module.mjs +1 -1
  431. package/esm2020/lib/workspace/workspace-updator/workspace-updator.directive.mjs +1 -1
  432. package/esm2020/lib/workspace/workspace-updator/workspace-updator.module.mjs +1 -1
  433. package/esm2020/lib/workspace/workspace.module.mjs +1 -1
  434. package/esm2020/public_api.mjs +1 -1
  435. package/fesm2015/igo2-geo.mjs +236 -180
  436. package/fesm2015/igo2-geo.mjs.map +1 -1
  437. package/fesm2020/igo2-geo.mjs +231 -174
  438. package/fesm2020/igo2-geo.mjs.map +1 -1
  439. package/lib/map/rotation-button/rotation-button.component.d.ts +11 -12
  440. package/lib/map/shared/controllers/view.d.ts +6 -1
  441. package/lib/map/shared/hover-feature.directive.d.ts +0 -5
  442. package/lib/offline/geoDB/configFileToGeoDB.service.d.ts +13 -0
  443. package/lib/offline/geoDB/geoDB.interface.d.ts +10 -1
  444. package/lib/offline/geoDB/geoDB.service.d.ts +3 -1
  445. package/lib/offline/geoDB/index.d.ts +1 -0
  446. package/ngcc.config.js +3 -3
  447. package/package.json +4 -4
  448. package/style/geo.theming.scss +12 -12
@@ -1026,7 +1026,7 @@ MeasurerComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MeasurerC
1026
1026
  } }, styles: [".measure-type-toggle[_ngcontent-%COMP%]{padding:10px;text-align:center}.measure-type-toggle[_ngcontent-%COMP%] mat-button-toggle-group[_ngcontent-%COMP%]{width:100%}.measure-type-toggle[_ngcontent-%COMP%] mat-button-toggle-group[_ngcontent-%COMP%] mat-button-toggle[_ngcontent-%COMP%]{width:50%}.measure-options[_ngcontent-%COMP%]{overflow-x:hidden}.measure-options[_ngcontent-%COMP%] mat-slide-toggle[_ngcontent-%COMP%]{width:100%;margin:10px}.measure-options[_ngcontent-%COMP%] mat-slide-toggle[_ngcontent-%COMP%] .mat-slide-toggle-content{width:calc(100% - 60px)}.measure-store-buttons[_ngcontent-%COMP%]{margin-left:-2px}.measure-store-buttons[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:first-of-type{margin-left:14px}.table-compact[_ngcontent-%COMP%] .mat-header-cell.mat-column-selectionCheckbox{width:52px}"], changeDetection: 0 });
1027
1027
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MeasurerComponent, [{
1028
1028
  type: Component,
1029
- args: [{ selector: 'igo-measurer', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div>\n <div class=\"measure-type-toggle mat-typography\">\n <mat-button-toggle-group\n [value]=\"activeMeasureType\"\n (change)=\"onMeasureTypeChange($event.value)\">\n <mat-button-toggle [value]=\"measureType.Length\">\n {{('igo.geo.measure.' + measureType.Length) | translate}}\n </mat-button-toggle>\n <mat-button-toggle [value]=\"measureType.Area\">\n {{('igo.geo.measure.' + measureType.Area) | translate}}\n </mat-button-toggle>\n </mat-button-toggle-group>\n </div>\n\n <div class=\"measure-options mat-typography\">\n <mat-slide-toggle\n [disabled]=\"drawControlIsDisabled\"\n [checked]=\"drawControlIsActive\"\n [labelPosition]=\"'before'\"\n (change)=\"onToggleDrawControl($event.checked)\">\n {{'igo.geo.measure.toggleActive' | translate}}\n </mat-slide-toggle>\n\n <mat-divider *ngIf=\"(hasLine$ | async)\"></mat-divider>\n\n <mat-slide-toggle *ngIf=\"(hasLine$ | async)\"\n [checked]=\"displayLines\"\n [labelPosition]=\"'before'\"\n (change)=\"onToggleDisplayLines($event.checked)\">\n {{'igo.geo.measure.toggleDisplayLines' | translate}}\n </mat-slide-toggle>\n\n <mat-divider *ngIf=\"(hasLine$ | async) || (hasArea$ | async)\"></mat-divider>\n\n <mat-slide-toggle *ngIf=\"(hasArea$ | async)\"\n [checked]=\"displayDistance\"\n [labelPosition]=\"'before'\"\n (change)=\"onToggleDisplayDistance($event.checked)\">\n {{'igo.geo.measure.toggleDisplayDistance' | translate}}\n </mat-slide-toggle>\n\n <mat-slide-toggle *ngIf=\"(hasArea$ | async)\"\n [checked]=\"displayAreas\"\n [labelPosition]=\"'before'\"\n (change)=\"onToggleDisplayAreas($event.checked)\">\n {{'igo.geo.measure.toggleDisplayAreas' | translate}}\n </mat-slide-toggle>\n\n <mat-divider *ngIf=\"(hasArea$ | async)\"></mat-divider>\n\n <mat-slide-toggle\n [checked]=\"measureUnitsAuto\"\n [labelPosition]=\"'before'\"\n (change)=\"onToggleMeasureUnitsAuto($event.checked)\">\n {{'igo.geo.measure.toggleAutoUnits' | translate}}\n </mat-slide-toggle>\n </div>\n\n <ng-container *ngIf=\"measure$ | async as measure\">\n <igo-measurer-item *ngIf=\"activeMeasureType === measureType.Length || activeMeasureType === measureType.Area\"\n [measureType]=\"measureType.Length\"\n [measureUnit]=\"measureLengthUnit.Meters\"\n [measure]=\"measure.length\"\n [auto]=\"measureUnitsAuto\"\n [placeholder]=\"(activeMeasureType === measureType.Area ? 'igo.geo.measure.perimeter' : 'igo.geo.measure.length') | translate\"\n (measureUnitChange)=\"onLengthUnitChange($event)\">\n </igo-measurer-item>\n\n <igo-measurer-item *ngIf=\"activeMeasureType === measureType.Area\"\n [measureType]=\"measureType.Area\"\n [measureUnit]=\"measureAreaUnit.SquareMeters\"\n [measure]=\"measure.area\"\n [auto]=\"measureUnitsAuto\"\n [placeholder]=\"'igo.geo.measure.area' | translate\"\n (measureUnitChange)=\"onAreaUnitChange($event)\">\n </igo-measurer-item>\n </ng-container>\n\n <mat-divider *ngIf=\"(hasLine$ | async) || (hasArea$ | async)\"></mat-divider>\n\n <div class=\"measure-store-buttons\">\n <button *ngIf=\"(hasLine$ | async) || (hasArea$ | async)\"\n mat-icon-button\n [matTooltip]=\"'igo.geo.measure.actionbar.calculate.tooltip' | translate\"\n [disabled]=\"(selectedFeatures$ | async).length === 0\"\n color=\"accent\"\n (click)=\"onCalculateClick()\">\n <mat-icon svgIcon=\"calculator\"></mat-icon>\n </button>\n\n <button *ngIf=\"(hasLine$ | async) || (hasArea$ | async)\"\n mat-icon-button\n [matTooltip]=\"'igo.geo.measure.actionbar.delete.tooltip' | translate\"\n [disabled]=\"(selectedFeatures$ | async).length === 0\"\n color=\"warn\"\n (click)=\"onDeleteClick()\">\n <mat-icon svgIcon=\"delete\"></mat-icon>\n </button>\n\n <!--button\n mat-icon-button\n [matTooltip]=\"'igo.geo.measure.actionbar.modify.tooltip' | translate\"\n [disabled]=\"(selectedFeatures$ | async).length !== 1\"\n (click)=\"onModifyClick()\">\n <mat-icon svgIcon=\"edit\"></mat-icon>\n </button-->\n </div>\n\n <igo-entity-table\n #table\n class=\"table-compact\"\n [store]=\"store\"\n [template]=\"tableTemplate\">\n </igo-entity-table>\n</div>\n", styles: [".measure-type-toggle{padding:10px;text-align:center}.measure-type-toggle mat-button-toggle-group{width:100%}.measure-type-toggle mat-button-toggle-group mat-button-toggle{width:50%}.measure-options{overflow-x:hidden}.measure-options mat-slide-toggle{width:100%;margin:10px}.measure-options mat-slide-toggle ::ng-deep .mat-slide-toggle-content{width:calc(100% - 60px)}.measure-store-buttons{margin-left:-2px}.measure-store-buttons button:first-of-type{margin-left:14px}.table-compact ::ng-deep .mat-header-cell.mat-column-selectionCheckbox{width:52px}\n"] }]
1029
+ args: [{ selector: 'igo-measurer', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div>\r\n <div class=\"measure-type-toggle mat-typography\">\r\n <mat-button-toggle-group\r\n [value]=\"activeMeasureType\"\r\n (change)=\"onMeasureTypeChange($event.value)\">\r\n <mat-button-toggle [value]=\"measureType.Length\">\r\n {{('igo.geo.measure.' + measureType.Length) | translate}}\r\n </mat-button-toggle>\r\n <mat-button-toggle [value]=\"measureType.Area\">\r\n {{('igo.geo.measure.' + measureType.Area) | translate}}\r\n </mat-button-toggle>\r\n </mat-button-toggle-group>\r\n </div>\r\n\r\n <div class=\"measure-options mat-typography\">\r\n <mat-slide-toggle\r\n [disabled]=\"drawControlIsDisabled\"\r\n [checked]=\"drawControlIsActive\"\r\n [labelPosition]=\"'before'\"\r\n (change)=\"onToggleDrawControl($event.checked)\">\r\n {{'igo.geo.measure.toggleActive' | translate}}\r\n </mat-slide-toggle>\r\n\r\n <mat-divider *ngIf=\"(hasLine$ | async)\"></mat-divider>\r\n\r\n <mat-slide-toggle *ngIf=\"(hasLine$ | async)\"\r\n [checked]=\"displayLines\"\r\n [labelPosition]=\"'before'\"\r\n (change)=\"onToggleDisplayLines($event.checked)\">\r\n {{'igo.geo.measure.toggleDisplayLines' | translate}}\r\n </mat-slide-toggle>\r\n\r\n <mat-divider *ngIf=\"(hasLine$ | async) || (hasArea$ | async)\"></mat-divider>\r\n\r\n <mat-slide-toggle *ngIf=\"(hasArea$ | async)\"\r\n [checked]=\"displayDistance\"\r\n [labelPosition]=\"'before'\"\r\n (change)=\"onToggleDisplayDistance($event.checked)\">\r\n {{'igo.geo.measure.toggleDisplayDistance' | translate}}\r\n </mat-slide-toggle>\r\n\r\n <mat-slide-toggle *ngIf=\"(hasArea$ | async)\"\r\n [checked]=\"displayAreas\"\r\n [labelPosition]=\"'before'\"\r\n (change)=\"onToggleDisplayAreas($event.checked)\">\r\n {{'igo.geo.measure.toggleDisplayAreas' | translate}}\r\n </mat-slide-toggle>\r\n\r\n <mat-divider *ngIf=\"(hasArea$ | async)\"></mat-divider>\r\n\r\n <mat-slide-toggle\r\n [checked]=\"measureUnitsAuto\"\r\n [labelPosition]=\"'before'\"\r\n (change)=\"onToggleMeasureUnitsAuto($event.checked)\">\r\n {{'igo.geo.measure.toggleAutoUnits' | translate}}\r\n </mat-slide-toggle>\r\n </div>\r\n\r\n <ng-container *ngIf=\"measure$ | async as measure\">\r\n <igo-measurer-item *ngIf=\"activeMeasureType === measureType.Length || activeMeasureType === measureType.Area\"\r\n [measureType]=\"measureType.Length\"\r\n [measureUnit]=\"measureLengthUnit.Meters\"\r\n [measure]=\"measure.length\"\r\n [auto]=\"measureUnitsAuto\"\r\n [placeholder]=\"(activeMeasureType === measureType.Area ? 'igo.geo.measure.perimeter' : 'igo.geo.measure.length') | translate\"\r\n (measureUnitChange)=\"onLengthUnitChange($event)\">\r\n </igo-measurer-item>\r\n\r\n <igo-measurer-item *ngIf=\"activeMeasureType === measureType.Area\"\r\n [measureType]=\"measureType.Area\"\r\n [measureUnit]=\"measureAreaUnit.SquareMeters\"\r\n [measure]=\"measure.area\"\r\n [auto]=\"measureUnitsAuto\"\r\n [placeholder]=\"'igo.geo.measure.area' | translate\"\r\n (measureUnitChange)=\"onAreaUnitChange($event)\">\r\n </igo-measurer-item>\r\n </ng-container>\r\n\r\n <mat-divider *ngIf=\"(hasLine$ | async) || (hasArea$ | async)\"></mat-divider>\r\n\r\n <div class=\"measure-store-buttons\">\r\n <button *ngIf=\"(hasLine$ | async) || (hasArea$ | async)\"\r\n mat-icon-button\r\n [matTooltip]=\"'igo.geo.measure.actionbar.calculate.tooltip' | translate\"\r\n [disabled]=\"(selectedFeatures$ | async).length === 0\"\r\n color=\"accent\"\r\n (click)=\"onCalculateClick()\">\r\n <mat-icon svgIcon=\"calculator\"></mat-icon>\r\n </button>\r\n\r\n <button *ngIf=\"(hasLine$ | async) || (hasArea$ | async)\"\r\n mat-icon-button\r\n [matTooltip]=\"'igo.geo.measure.actionbar.delete.tooltip' | translate\"\r\n [disabled]=\"(selectedFeatures$ | async).length === 0\"\r\n color=\"warn\"\r\n (click)=\"onDeleteClick()\">\r\n <mat-icon svgIcon=\"delete\"></mat-icon>\r\n </button>\r\n\r\n <!--button\r\n mat-icon-button\r\n [matTooltip]=\"'igo.geo.measure.actionbar.modify.tooltip' | translate\"\r\n [disabled]=\"(selectedFeatures$ | async).length !== 1\"\r\n (click)=\"onModifyClick()\">\r\n <mat-icon svgIcon=\"edit\"></mat-icon>\r\n </button-->\r\n </div>\r\n\r\n <igo-entity-table\r\n #table\r\n class=\"table-compact\"\r\n [store]=\"store\"\r\n [template]=\"tableTemplate\">\r\n </igo-entity-table>\r\n</div>\r\n", styles: [".measure-type-toggle{padding:10px;text-align:center}.measure-type-toggle mat-button-toggle-group{width:100%}.measure-type-toggle mat-button-toggle-group mat-button-toggle{width:50%}.measure-options{overflow-x:hidden}.measure-options mat-slide-toggle{width:100%;margin:10px}.measure-options mat-slide-toggle ::ng-deep .mat-slide-toggle-content{width:calc(100% - 60px)}.measure-store-buttons{margin-left:-2px}.measure-store-buttons button:first-of-type{margin-left:14px}.table-compact ::ng-deep .mat-header-cell.mat-column-selectionCheckbox{width:52px}\n"] }]
1030
1030
  }], function () { return [{ type: i1.LanguageService }, { type: i2.MatDialog }, { type: i1.StorageService }]; }, { map: [{
1031
1031
  type: Input
1032
1032
  }], store: [{
@@ -1039,4 +1039,4 @@ MeasurerComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MeasurerC
1039
1039
  type: ViewChild,
1040
1040
  args: ['table', { static: true }]
1041
1041
  }] }); })();
1042
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVhc3VyZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvbWVhc3VyZS9tZWFzdXJlci9tZWFzdXJlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9tZWFzdXJlL21lYXN1cmVyL21lYXN1cmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUdMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUFFLGVBQWUsRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDckQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXRDLE9BQU8sT0FBTyxNQUFNLGdCQUFnQixDQUFDO0FBQ3JDLE9BQU8sU0FBUyxNQUFNLG1CQUFtQixDQUFDO0FBQzFDLE9BQU8sY0FBYyxNQUFNLGtCQUFrQixDQUFDO0FBTzlDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFeEMsT0FBTyxFQUFtQixZQUFZLEVBQWtCLE1BQU0sWUFBWSxDQUFDO0FBRzNFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFbkMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDckQsT0FBTyxFQUNMLE9BQU8sRUFFUCwyQkFBMkIsRUFDM0IsNkJBQTZCLEVBQzdCLGlCQUFpQixFQUNqQixxQkFBcUIsRUFDckIsdUJBQXVCLEVBQ3hCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDbkUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUkxQyxPQUFPLEVBQ0ws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QjtRQU83QixlQUF3QjtRQUF4QiwyREFBd0I7UUFHcEMsZUFBNEI7UUFBNUIsOENBQTRCLDJCQUFBO1FBRzVCLGVBQ0Y7UUFERSwwRkFDRjtRQUdhLGVBQXVCO1FBQXZCLDJEQUF1QjtRQW9CeEIsZUFBOEM7UUFBOUMsbUdBQThDO1FBR2pELGVBQThDO1FBQTlDLG1HQUE4QztRQVM5QyxlQUE4QztRQUE5QyxtR0FBOEM7UUFxQnZELGVBQWU7UUFBZixpQ0FBZSwrQkFBQTs7dUZEeENOLGlCQUFpQjtjQU43QixTQUFTOzJCQUNFLGNBQWMsbUJBR1AsdUJBQXVCLENBQUMsTUFBTTt1SEFzTnRDLEdBQUc7a0JBQVgsS0FBSztZQUtHLEtBQUs7a0JBQWIsS0FBSztZQU9GLGlCQUFpQjtrQkFEcEIsS0FBSztZQVNHLGdCQUFnQjtrQkFBeEIsS0FBSztZQUVnQyxLQUFLO2tCQUExQyxTQUFTO21CQUFDLE9BQU8sRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIE9uRGVzdHJveSxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5cbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBza2lwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgT2xTdHlsZSBmcm9tICdvbC9zdHlsZS9TdHlsZSc7XG5pbXBvcnQgT2xHZW9KU09OIGZyb20gJ29sL2Zvcm1hdC9HZW9KU09OJztcbmltcG9ydCBPbFZlY3RvclNvdXJjZSBmcm9tICdvbC9zb3VyY2UvVmVjdG9yJztcbmltcG9ydCB7IFZlY3RvclNvdXJjZUV2ZW50IGFzIE9sVmVjdG9yU291cmNlRXZlbnQgfSBmcm9tICdvbC9zb3VyY2UvVmVjdG9yJztcbmltcG9ydCBPbExpbmVTdHJpbmcgZnJvbSAnb2wvZ2VvbS9MaW5lU3RyaW5nJztcbmltcG9ydCBPbFBvbHlnb24gZnJvbSAnb2wvZ2VvbS9Qb2x5Z29uJztcbmltcG9ydCBPbEZlYXR1cmUgZnJvbSAnb2wvRmVhdHVyZSc7XG5pbXBvcnQgdHlwZSB7IGRlZmF1bHQgYXMgT2xHZW9tZXRyeSB9IGZyb20gJ29sL2dlb20vR2VvbWV0cnknO1xuaW1wb3J0IE9sT3ZlcmxheSBmcm9tICdvbC9PdmVybGF5JztcbmltcG9ydCB7IHVuQnlLZXkgfSBmcm9tICdvbC9PYnNlcnZhYmxlJztcblxuaW1wb3J0IHsgTGFuZ3VhZ2VTZXJ2aWNlLCBTdG9yYWdlU2NvcGUsIFN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnQGlnbzIvY29yZSc7XG5pbXBvcnQgeyBFbnRpdHlSZWNvcmQsIEVudGl0eVRhYmxlVGVtcGxhdGUgfSBmcm9tICdAaWdvMi9jb21tb24nO1xuaW1wb3J0IHR5cGUgeyBFbnRpdHlUYWJsZUNvbXBvbmVudCB9IGZyb20gJ0BpZ28yL2NvbW1vbic7XG5pbXBvcnQgeyB1dWlkIH0gZnJvbSAnQGlnbzIvdXRpbHMnO1xuXG5pbXBvcnQgeyBGZWF0dXJlRGF0YVNvdXJjZSB9IGZyb20gJy4uLy4uL2RhdGFzb3VyY2UnO1xuaW1wb3J0IHtcbiAgRkVBVFVSRSxcbiAgRmVhdHVyZVN0b3JlLFxuICBGZWF0dXJlU3RvcmVMb2FkaW5nU3RyYXRlZ3ksXG4gIEZlYXR1cmVTdG9yZVNlbGVjdGlvblN0cmF0ZWd5LFxuICB0cnlCaW5kU3RvcmVMYXllcixcbiAgdHJ5QWRkTG9hZGluZ1N0cmF0ZWd5LFxuICB0cnlBZGRTZWxlY3Rpb25TdHJhdGVneVxufSBmcm9tICcuLi8uLi9mZWF0dXJlJztcbmltcG9ydCB7IERyYXdDb250cm9sLCBNb2RpZnlDb250cm9sIH0gZnJvbSAnLi4vLi4vZ2VvbWV0cnkvc2hhcmVkJztcbmltcG9ydCB7IFZlY3RvckxheWVyIH0gZnJvbSAnLi4vLi4vbGF5ZXInO1xuaW1wb3J0IHsgSWdvTWFwIH0gZnJvbSAnLi4vLi4vbWFwJztcblxuaW1wb3J0IHsgTWVhc3VyZSwgTWVhc3VyZXJEaWFsb2dEYXRhLCBGZWF0dXJlV2l0aE1lYXN1cmUgfSBmcm9tICcuLi9zaGFyZWQvbWVhc3VyZS5pbnRlcmZhY2VzJztcbmltcG9ydCB7XG4gIE1lYXN1cmVUeXBlLFxuICBNZWFzdXJlQXJlYVVuaXQsXG4gIE1lYXN1cmVMZW5ndGhVbml0LFxufSBmcm9tICcuLi9zaGFyZWQvbWVhc3VyZS5lbnVtJztcbmltcG9ydCB7XG4gIG1lYXN1cmVPbEdlb21ldHJ5LFxuICBjcmVhdGVNZWFzdXJlSW50ZXJhY3Rpb25TdHlsZSxcbiAgY3JlYXRlTWVhc3VyZUxheWVyU3R5bGUsXG4gIHVwZGF0ZU9sVG9vbHRpcHNBdE1pZHBvaW50cyxcbiAgdXBkYXRlT2xUb29sdGlwQXRDZW50ZXIsXG4gIGdldFRvb2x0aXBzT2ZPbEdlb21ldHJ5LFxuICBzcXVhcmVNZXRlcnNUb1VuaXQsXG4gIG1ldGVyc1RvVW5pdCxcbiAgZm9ybWF0TWVhc3VyZVxufSBmcm9tICcuLi9zaGFyZWQvbWVhc3VyZS51dGlscyc7XG5pbXBvcnQgeyBNZWFzdXJlckRpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4vbWVhc3VyZXItZGlhbG9nLmNvbXBvbmVudCc7XG5cbi8qKlxuICogVG9vbCB0byBtZWFzdXJlIGxlbmd0aHMgYW5kIGFyZWFzXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2lnby1tZWFzdXJlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9tZWFzdXJlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL21lYXN1cmVyLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIE1lYXN1cmVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuXG4gIC8qKlxuICAgKiBUYWJsZSB0ZW1wbGF0ZVxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyB0YWJsZVRlbXBsYXRlOiBFbnRpdHlUYWJsZVRlbXBsYXRlID0ge1xuICAgIHNlbGVjdGlvbjogdHJ1ZSxcbiAgICBzZWxlY3RNYW55OiB0cnVlLFxuICAgIHNlbGVjdGlvbkNoZWNrYm94OiB0cnVlLFxuICAgIHNvcnQ6IHRydWUsXG4gICAgY29sdW1uczogW1xuICAgICAge1xuICAgICAgICBuYW1lOiAnbGVuZ3RoJyxcbiAgICAgICAgdGl0bGU6IHRoaXMubGFuZ3VhZ2VTZXJ2aWNlLnRyYW5zbGF0ZS5pbnN0YW50KCdpZ28uZ2VvLm1lYXN1cmUubGVuZ3RoSGVhZGVyJyksXG4gICAgICAgIHZhbHVlQWNjZXNzb3I6IChsb2NhbEZlYXR1cmU6IEZlYXR1cmVXaXRoTWVhc3VyZSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHVuaXQgPSB0aGlzLmFjdGl2ZUxlbmd0aFVuaXQ7XG4gICAgICAgICAgY29uc3QgbWVhc3VyZSA9IG1ldGVyc1RvVW5pdChsb2NhbEZlYXR1cmUucHJvcGVydGllcy5tZWFzdXJlLmxlbmd0aCwgdW5pdCk7XG4gICAgICAgICAgcmV0dXJuIGZvcm1hdE1lYXN1cmUobWVhc3VyZSwge1xuICAgICAgICAgICAgZGVjaW1hbDogMSxcbiAgICAgICAgICAgIHVuaXQsXG4gICAgICAgICAgICB1bml0QWJicjogZmFsc2UsXG4gICAgICAgICAgICBsb2NhbGU6ICdmcidcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ2FyZWEnLFxuICAgICAgICB0aXRsZTogdGhpcy5sYW5ndWFnZVNlcnZpY2UudHJhbnNsYXRlLmluc3RhbnQoJ2lnby5nZW8ubWVhc3VyZS5hcmVhSGVhZGVyJyksXG4gICAgICAgIHZhbHVlQWNjZXNzb3I6IChsb2NhbEZlYXR1cmU6IEZlYXR1cmVXaXRoTWVhc3VyZSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHVuaXQgPSB0aGlzLmFjdGl2ZUFyZWFVbml0O1xuICAgICAgICAgIGNvbnN0IG1lYXN1cmUgPSBzcXVhcmVNZXRlcnNUb1VuaXQobG9jYWxGZWF0dXJlLnByb3BlcnRpZXMubWVhc3VyZS5hcmVhLCB1bml0KTtcbiAgICAgICAgICByZXR1cm4gbWVhc3VyZSA/IGZvcm1hdE1lYXN1cmUobWVhc3VyZSwge1xuICAgICAgICAgICAgZGVjaW1hbDogMSxcbiAgICAgICAgICAgIHVuaXQsXG4gICAgICAgICAgICB1bml0QWJicjogZmFsc2UsXG4gICAgICAgICAgICBsb2NhbGU6ICdmcidcbiAgICAgICAgICB9KSA6ICcnO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgXVxuICB9O1xuXG4gIHByaXZhdGUgc3Vic2NyaXB0aW9ucyQkOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xuXG4gIC8qKlxuICAgKiBSZWZlcmVuY2UgdG8gdGhlIE1lYXN1cmVUeXBlIGVudW1cbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgbWVhc3VyZVR5cGUgPSBNZWFzdXJlVHlwZTtcblxuICAvKipcbiAgICogUmVmZXJlbmNlIHRvIHRoZSBBcmVhTWVhc3VyZVVuaXQgZW51bVxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBtZWFzdXJlQXJlYVVuaXQgPSBNZWFzdXJlQXJlYVVuaXQ7XG5cbiAgLyoqXG4gICAqIFJlZmVyZW5jZSB0byB0aGUgTGVuZ3RoTWVhc3VyZVVuaXQgZW51bVxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBtZWFzdXJlTGVuZ3RoVW5pdCA9IE1lYXN1cmVMZW5ndGhVbml0O1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIG1lYXN1cmUgdW5pdHMgc2hvdWxkIGJlIGF1dG9tYXRpY2FsbHkgZGV0ZXJtaW5lZFxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBtZWFzdXJlVW5pdHNBdXRvOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgZGlzcGxheSBvZiBkaXN0YW5jZXMgb2YgYXJlYXNcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgZGlzcGxheURpc3RhbmNlOiBib29sZWFuID0gdHJ1ZTtcblxuICAvKipcbiAgICogV2hldGhlciBkaXNwbGF5IG9mIGRpc3RhbmNlcyBvZiBsaW5lc1xuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBkaXNwbGF5TGluZXM6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIGRpc3BsYXkgb2YgYXJlYXNcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgZGlzcGxheUFyZWFzOiBib29sZWFuID0gdHJ1ZTtcblxuICAvKipcbiAgICogT2JzZXJ2YWJsZSBvZiBsaW5lIGJvb2xlYW5cbiAgICogQGludGVybmFsXG4gICAqL1xuICAgcHVibGljIGhhc0xpbmUkOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcblxuICAvKipcbiAgICogT2JzZXJ2YWJsZSBvZiBhcmVhIGJvb2xlYW5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgaGFzQXJlYSQ6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPiA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuXG4gIC8qKlxuICAgKiBPYnNlcnZhYmxlIG9mIGFyZWFcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgbWVhc3VyZSQ6IEJlaGF2aW9yU3ViamVjdDxNZWFzdXJlPiA9IG5ldyBCZWhhdmlvclN1YmplY3Qoe30pO1xuXG4gIC8qKlxuICAgKiBPYnNlcnZhYmxlIG9mIHNlbGVjdGVkIGZlYXR1cmVzXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHVibGljIHNlbGVjdGVkRmVhdHVyZXMkOiBCZWhhdmlvclN1YmplY3Q8RmVhdHVyZVdpdGhNZWFzdXJlW10+ID0gbmV3IEJlaGF2aW9yU3ViamVjdChbXSk7XG5cbiAgLyoqXG4gICAqIE9MIGRyYXcgc291cmNlXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHVibGljIHNob3dUb29sdGlwczogYm9vbGVhbiA9IHRydWU7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgZHJhdyBjb250cm9sIHRvZ2dsZSBpcyBkaXNhYmxlZCBvciBub3RcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgZHJhd0NvbnRyb2xJc0Rpc2FibGVkOiBib29sZWFuID0gdHJ1ZTtcblxuICAvKipcbiAgICogRHJhdyBsaW5lIGNvbnRyb2xcbiAgICovXG4gIHByaXZhdGUgZHJhd0xpbmVDb250cm9sOiBEcmF3Q29udHJvbDtcblxuICAvKipcbiAgICogRHJhdyBwb2x5Z29uIGNvbnRyb2xcbiAgICovXG4gIHByaXZhdGUgZHJhd1BvbHlnb25Db250cm9sOiBEcmF3Q29udHJvbDtcblxuICAvKipcbiAgICogTW9kaWZ5IGNvbnRyb2xcbiAgICovXG4gIHByaXZhdGUgbW9kaWZ5Q29udHJvbDogTW9kaWZ5Q29udHJvbDtcblxuICAvKipcbiAgICogQWN0aXZlIE9MIGdlb21ldHJ5XG4gICAqL1xuICBwcml2YXRlIGFjdGl2ZU9sR2VvbWV0cnk6IE9sTGluZVN0cmluZyB8IE9sUG9seWdvbjtcblxuICAvKipcbiAgICogQWN0aXZlIG1sZW5ndGggdW5pdFxuICAgKi9cbiAgcHJpdmF0ZSBhY3RpdmVMZW5ndGhVbml0OiBNZWFzdXJlTGVuZ3RoVW5pdCA9IE1lYXN1cmVMZW5ndGhVbml0Lk1ldGVycztcblxuICAvKipcbiAgICogQWN0aXZlIGFyZWEgdW5pdFxuICAgKi9cbiAgcHJpdmF0ZSBhY3RpdmVBcmVhVW5pdDogTWVhc3VyZUFyZWFVbml0ID0gTWVhc3VyZUFyZWFVbml0LlNxdWFyZU1ldGVycztcblxuICAvKipcbiAgICogRmVhdHVyZSBhZGRlZCBsaXN0ZW5lciBrZXlcbiAgICovXG4gIHByaXZhdGUgb25GZWF0dXJlQWRkZWRLZXk7XG5cbiAgLyoqXG4gICAqIEZlYXR1cmUgcmVtb3ZlZCBsaXN0ZW5lciBrZXlcbiAgICovXG4gIHByaXZhdGUgb25GZWF0dXJlUmVtb3ZlZEtleTtcblxuICAvKipcbiAgICogQWN0aXZlIGRyYXcgY29udHJvbFxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHByaXZhdGUgYWN0aXZlRHJhd0NvbnRyb2w6IERyYXdDb250cm9sO1xuXG4gIC8qKlxuICAgKiBTdWJzY3JpcHRpb24gdG8gZHJhdyBzdGFydFxuICAgKi9cbiAgcHJpdmF0ZSBkcmF3U3RhcnQkJDogU3Vic2NyaXB0aW9uO1xuXG4gIC8qKlxuICAgKiBTdWJzY3JpcHRpb24gdG8gZHJhdyBlbmRcbiAgICovXG4gIHByaXZhdGUgZHJhd0VuZCQkOiBTdWJzY3JpcHRpb247XG5cbiAgLyoqXG4gICAqIFN1YnNjcmlwdGlvbiB0byBjb250cm9scyBjaGFuZ2VzXG4gICAqL1xuICBwcml2YXRlIGRyYXdDaGFuZ2VzJCQ6IFN1YnNjcmlwdGlvbjtcblxuICAvKipcbiAgICogU3Vic2NyaXB0aW9uIHRvIG1vZGlmeSBzdGFydFxuICAgKi9cbiAgcHJpdmF0ZSBtb2RpZnlTdGFydCQkOiBTdWJzY3JpcHRpb247XG5cbiAgLyoqXG4gICAqIFN1YnNjcmlwdGlvbiB0byBtb2RpZnkgZW5kXG4gICAqL1xuICBwcml2YXRlIG1vZGlmeUVuZCQkOiBTdWJzY3JpcHRpb247XG5cbiAgLyoqXG4gICAqIFN1YnNjcmlwdGlvbiB0byBjb250cm9scyBjaGFuZ2VzXG4gICAqL1xuICBwcml2YXRlIG1vZGlmeUNoYW5nZXMkJDogU3Vic2NyaXB0aW9uO1xuXG4gIC8qKlxuICAgKiBTdWJzY3JpcHRpb24gdG8gbWVhc3VyZXMgc2VsZWN0aW9uXG4gICAqL1xuICBwcml2YXRlIHNlbGVjdGVkRmVhdHVyZXMkJDogU3Vic2NyaXB0aW9uO1xuXG4gIC8qKlxuICAgKiBPTCBkcmF3IHNvdXJjZVxuICAgKi9cbiAgcHJpdmF0ZSBvbERyYXdTb3VyY2UgPSBuZXcgT2xWZWN0b3JTb3VyY2UoKTtcblxuICAvKipcbiAgICogVGhlIG1hcCB0byBtZWFzdXJlIG9uXG4gICAqL1xuICBASW5wdXQoKSBtYXA6IElnb01hcDtcblxuICAvKipcbiAgICogVGhlIG1lYXN1cmVzIHN0b3JlXG4gICAqL1xuICBASW5wdXQoKSBzdG9yZTogRmVhdHVyZVN0b3JlPEZlYXR1cmVXaXRoTWVhc3VyZT47XG5cbiAgLyoqXG4gICAqIE1lYXN1cmUgdHlwZVxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIEBJbnB1dCgpXG4gIHNldCBhY3RpdmVNZWFzdXJlVHlwZSh2YWx1ZTogTWVhc3VyZVR5cGUpIHsgdGhpcy5zZXRBY3RpdmVNZWFzdXJlVHlwZSh2YWx1ZSk7IH1cbiAgZ2V0IGFjdGl2ZU1lYXN1cmVUeXBlKCk6IE1lYXN1cmVUeXBlIHsgcmV0dXJuIHRoaXMuX2FjdGl2ZU1lYXN1cmVUeXBlOyB9XG4gIHByaXZhdGUgX2FjdGl2ZU1lYXN1cmVUeXBlOiBNZWFzdXJlVHlwZTtcblxuICAvKipcbiAgICogVGhlIG1pbmltdW0gbGVuZ3RoIGEgc2VnbWVudCBtdXN0IGhhdmUgdG8gZGlzcGxheSBhIHRvb2x0aXAuXG4gICAqIEl0IGFsc28gYXBwbGllcyB0byBhcmVhIHRvb2x0aXBzLlxuICAgKi9cbiAgQElucHV0KCkgbWluU2VnbWVudExlbmd0aDogbnVtYmVyID0gMTA7XG5cbiAgQFZpZXdDaGlsZCgndGFibGUnLCB7IHN0YXRpYzogdHJ1ZSB9KSB0YWJsZTogRW50aXR5VGFibGVDb21wb25lbnQ7XG5cbiAgLyoqXG4gICAqIFdoZXRlciBvbmUgb2YgdGhlIGRyYXcgY29udHJvbCBpcyBhY3RpdmVcbiAgICogQGludGVybmFsXG4gICAqL1xuICBnZXQgZHJhd0NvbnRyb2xJc0FjdGl2ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5hY3RpdmVEcmF3Q29udHJvbCAhPT0gdW5kZWZpbmVkO1xuICB9XG5cbiAgZ2V0IHByb2plY3Rpb24oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5tYXAub2wuZ2V0VmlldygpLmdldFByb2plY3Rpb24oKS5nZXRDb2RlKCk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGxhbmd1YWdlU2VydmljZTogTGFuZ3VhZ2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgZGlhbG9nOiBNYXREaWFsb2csXG4gICAgcHJpdmF0ZSBzdG9yYWdlU2VydmljZTogU3RvcmFnZVNlcnZpY2VcbiAgKSB7fVxuXG4gIC8qKlxuICAgKiBBZGQgZHJhdyBjb250cm9scyBhbmQgYWN0aXZhdGUgb25lXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5pbml0U3RvcmUoKTtcbiAgICB0aGlzLmNyZWF0ZURyYXdMaW5lQ29udHJvbCgpO1xuICAgIHRoaXMuY3JlYXRlRHJhd1BvbHlnb25Db250cm9sKCk7XG4gICAgdGhpcy5jcmVhdGVNb2RpZnlDb250cm9sKCk7XG4gICAgdGhpcy50b2dnbGVEcmF3Q29udHJvbCgpO1xuICAgIHRoaXMudXBkYXRlVG9vbHRpcHNPZk9sU291cmNlKHRoaXMuc3RvcmUuc291cmNlLm9sKTtcbiAgICB0aGlzLmNoZWNrRGlzdGFuY2VBcmVhVG9nZ2xlKCk7XG4gICAgdGhpcy5zZXRBY3RpdmVNZWFzdXJlVHlwZShNZWFzdXJlVHlwZS5MZW5ndGgpO1xuICB9XG5cbiAgLyoqXG4gICAqIENsZWFyIHRoZSBvdmVybGF5IGxheWVyIGFuZCBhbnkgaW50ZXJhY3Rpb24gYWRkZWQgYnkgdGhpcyBjb21wb25lbnQuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5zZXRBY3RpdmVNZWFzdXJlVHlwZSh1bmRlZmluZWQpO1xuICAgIHRoaXMuZGVhY3RpdmF0ZU1vZGlmeUNvbnRyb2woKTtcbiAgICB0aGlzLmZyZWV6ZVN0b3JlKCk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zJCQubWFwKHMgPT4gcy51bnN1YnNjcmliZSgpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIG1lYXN1cmUgdHlwZVxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIG9uTWVhc3VyZVR5cGVDaGFuZ2UobWVhc3VyZVR5cGU6IE1lYXN1cmVUeXBlKSB7XG4gICAgdGhpcy5hY3RpdmVNZWFzdXJlVHlwZSA9IG1lYXN1cmVUeXBlO1xuICB9XG5cbiAgLyoqXG4gICAqIEFjdGl2YXRlIG9yIGRlYWN0aXZhdGUgdGhlIGN1cnJlbnQgZHJhdyBjb250cm9sXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgb25Ub2dnbGVEcmF3Q29udHJvbCh0b2dnbGU6IGJvb2xlYW4pIHtcbiAgICBpZiAodG9nZ2xlID09PSB0cnVlKSB7XG4gICAgICB0aGlzLnRvZ2dsZURyYXdDb250cm9sKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZGVhY3RpdmF0ZURyYXdDb250cm9sKCk7XG4gICAgfVxuICB9XG5cblxuICAvKipcbiAgICogQWN0aXZhdGUgb3IgZGVhY3RpdmF0ZSB0aGUgY3VycmVudCBkcmF3IGNvbnRyb2xcbiAgICogQGludGVybmFsXG4gICAqL1xuICAgb25Ub2dnbGVNZWFzdXJlVW5pdHNBdXRvKHRvZ2dsZTogYm9vbGVhbikge1xuICAgIHRoaXMubWVhc3VyZVVuaXRzQXV0byA9IHRvZ2dsZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBY3RpdmF0ZSBvciBkZWFjdGl2YXRlIHRoZSBjdXJyZW50IGRpc3BsYXkgb2YgZGlzdGFuY2VzIG9mIHRoZSBhcmVhc1xuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIG9uVG9nZ2xlRGlzcGxheURpc3RhbmNlKHRvZ2dsZTogYm9vbGVhbikge1xuICAgIHRoaXMuZGlzcGxheURpc3RhbmNlID0gdG9nZ2xlO1xuICAgIHRoaXMub25EaXNwbGF5RGlzdGFuY2UoKTtcbiAgICB0b2dnbGUgPyAodGhpcy5zdG9yYWdlU2VydmljZS5zZXQoJ2Rpc3RhbmNlVG9nZ2xlJywgdHJ1ZSwgU3RvcmFnZVNjb3BlLlNFU1NJT04pKSA6XG4gICAgICh0aGlzLnN0b3JhZ2VTZXJ2aWNlLnNldCgnZGlzdGFuY2VUb2dnbGUnLCBmYWxzZSwgU3RvcmFnZVNjb3BlLlNFU1NJT04pKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBY3RpdmF0ZSBvciBkZWFjdGl2YXRlIHRoZSBjdXJyZW50IGRpc3BsYXkgb2YgZGlzdGFuY2VzIG9mIHRoZSBsaW5lc1xuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIG9uVG9nZ2xlRGlzcGxheUxpbmVzKHRvZ2dsZTogYm9vbGVhbikge1xuICAgIHRoaXMuZGlzcGxheUxpbmVzID0gdG9nZ2xlO1xuICAgIHRoaXMub25EaXNwbGF5TGluZXMoKTtcbiAgICB0b2dnbGUgPyAodGhpcy5zdG9yYWdlU2VydmljZS5zZXQoJ2xpbmVzVG9nZ2xlJywgdHJ1ZSwgU3RvcmFnZVNjb3BlLlNFU1NJT04pKSA6XG4gICAgICh0aGlzLnN0b3JhZ2VTZXJ2aWNlLnNldCgnbGluZXNUb2dnbGUnLCBmYWxzZSwgU3RvcmFnZVNjb3BlLlNFU1NJT04pKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBY3RpdmF0ZSBvciBkZWFjdGl2YXRlIHRoZSBjdXJyZW50IGRpc3BsYXkgb2YgYXJlYXNcbiAgICogQGludGVybmFsXG4gICAqL1xuICBvblRvZ2dsZURpc3BsYXlBcmVhcyh0b2dnbGU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmRpc3BsYXlBcmVhcyA9IHRvZ2dsZTtcbiAgICB0aGlzLm9uRGlzcGxheUFyZWFzKCk7XG4gICAgdG9nZ2xlID8gKHRoaXMuc3RvcmFnZVNlcnZpY2Uuc2V0KCdhcmVhc1RvZ2dsZScsIHRydWUsIFN0b3JhZ2VTY29wZS5TRVNTSU9OKSkgOlxuICAgICAodGhpcy5zdG9yYWdlU2VydmljZS5zZXQoJ2FyZWFzVG9nZ2xlJywgZmFsc2UsIFN0b3JhZ2VTY29wZS5TRVNTSU9OKSk7XG4gIH1cblxuICAvKipcbiAgICogU2V0IGRpc3BsYXkgcGFyYW1ldHJlcyBpbiBjdXJyZW50IHZhbHVlc1xuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGNoZWNrRGlzdGFuY2VBcmVhVG9nZ2xlKCl7XG4gICAgaWYgKHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0KCdkaXN0YW5jZVRvZ2dsZScpID09PSBmYWxzZSl7XG4gICAgICB0aGlzLmRpc3BsYXlEaXN0YW5jZSA9IGZhbHNlO1xuICAgIH1cbiAgICBpZiAodGhpcy5zdG9yYWdlU2VydmljZS5nZXQoJ2xpbmVzVG9nZ2xlJykgPT09IGZhbHNlKXtcbiAgICAgIHRoaXMuZGlzcGxheUxpbmVzID0gZmFsc2U7XG4gICAgfVxuICAgIGlmICh0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldCgnYXJlYXNUb2dnbGUnKSA9PT0gZmFsc2Upe1xuICAgICAgdGhpcy5kaXNwbGF5QXJlYXMgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQWN0aXZhdGUgb3IgZGVhY3RpdmF0ZSB0aGUgY3VycmVudCBkaXNwbGF5IG9mIGRpc3RhbmNlcyBvZiBhcmVhc1xuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIG9uRGlzcGxheURpc3RhbmNlKCkge1xuICAgIGlmICh0aGlzLmRpc3BsYXlEaXN0YW5jZSkge1xuICAgICAgQXJyYXkuZnJvbShkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdpZ28tbWFwLXRvb2x0aXAtbWVhc3VyZS1wb2x5Z29uZS1zZWdtZW50cycpKS5tYXAoKHZhbHVlOiBFbGVtZW50KSA9PlxuICAgICAgICB2YWx1ZS5jbGFzc0xpc3QucmVtb3ZlKCdpZ28tbWFwLXRvb2x0aXAtaGlkZGVuJykpO1xuICAgIH0gZWxzZSB7XG4gICAgICBBcnJheS5mcm9tKGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2lnby1tYXAtdG9vbHRpcC1tZWFzdXJlLXBvbHlnb25lLXNlZ21lbnRzJykpLm1hcCgodmFsdWU6IEVsZW1lbnQpID0+XG4gICAgICAgIHZhbHVlLmNsYXNzTGlzdC5hZGQoJ2lnby1tYXAtdG9vbHRpcC1oaWRkZW4nKSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEFjdGl2YXRlIG9yIGRlYWN0aXZhdGUgdGhlIGN1cnJlbnQgZGlzcGxheSBvZiBkaXN0YW5jZXMgb2YgbGluZXNcbiAgICogQGludGVybmFsXG4gICAqL1xuICBvbkRpc3BsYXlMaW5lcygpIHtcbiAgICBpZiAodGhpcy5kaXNwbGF5TGluZXMpIHtcbiAgICAgIEFycmF5LmZyb20oZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnaWdvLW1hcC10b29sdGlwLW1lYXN1cmUtbGluZS1zZWdtZW50cycpKS5tYXAoKHZhbHVlOiBFbGVtZW50KSA9PlxuICAgICAgICB2YWx1ZS5jbGFzc0xpc3QucmVtb3ZlKCdpZ28tbWFwLXRvb2x0aXAtaGlkZGVuJykpO1xuICAgIH0gZWxzZSB7XG4gICAgICBBcnJheS5mcm9tKGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2lnby1tYXAtdG9vbHRpcC1tZWFzdXJlLWxpbmUtc2VnbWVudHMnKSkubWFwKCh2YWx1ZTogRWxlbWVudCkgPT5cbiAgICAgICAgdmFsdWUuY2xhc3NMaXN0LmFkZCgnaWdvLW1hcC10b29sdGlwLWhpZGRlbicpKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQWN0aXZhdGUgb3IgZGVhY3RpdmF0ZSB0aGUgY3VycmVudCBkaXNwbGF5IG9mIGFyZWFzXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgb25EaXNwbGF5QXJlYXMoKSB7XG4gICAgaWYgKHRoaXMuZGlzcGxheUFyZWFzKSB7XG4gICAgICBBcnJheS5mcm9tKGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2lnby1tYXAtdG9vbHRpcC1tZWFzdXJlLWFyZWEnKSkubWFwKCh2YWx1ZTogRWxlbWVudCkgPT5cbiAgICAgICAgdmFsdWUuY2xhc3NMaXN0LnJlbW92ZSgnaWdvLW1hcC10b29sdGlwLWhpZGRlbicpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgQXJyYXkuZnJvbShkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdpZ28tbWFwLXRvb2x0aXAtbWVhc3VyZS1hcmVhJykpLm1hcCgodmFsdWU6IEVsZW1lbnQpID0+XG4gICAgICAgIHZhbHVlLmNsYXNzTGlzdC5hZGQoJ2lnby1tYXAtdG9vbHRpcC1oaWRkZW4nKSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgbWVhc3VyZSB0eXBlXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgb25MZW5ndGhVbml0Q2hhbmdlKHVuaXQ6IE1lYXN1cmVMZW5ndGhVbml0KSB7XG4gICAgdGhpcy5hY3RpdmVMZW5ndGhVbml0ID0gdW5pdDtcbiAgICB0aGlzLnRhYmxlLnJlZnJlc2goKTtcbiAgICB0aGlzLnVwZGF0ZVRvb2x0aXBzT2ZPbFNvdXJjZSh0aGlzLnN0b3JlLnNvdXJjZS5vbCk7XG4gICAgaWYgKHRoaXMuYWN0aXZlT2xHZW9tZXRyeSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLnVwZGF0ZVRvb2x0aXBzT2ZPbEdlb21ldHJ5KHRoaXMuYWN0aXZlT2xHZW9tZXRyeSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgbWVhc3VyZSB0eXBlXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgb25BcmVhVW5pdENoYW5nZSh1bml0OiBNZWFzdXJlQXJlYVVuaXQpIHtcbiAgICB0aGlzLmFjdGl2ZUFyZWFVbml0ID0gdW5pdDtcbiAgICB0aGlzLnRhYmxlLnJlZnJlc2goKTtcbiAgICB0aGlzLnVwZGF0ZVRvb2x0aXBzT2ZPbFNvdXJjZSh0aGlzLnN0b3JlLnNvdXJjZS5vbCk7XG4gICAgaWYgKHRoaXMuYWN0aXZlT2xHZW9tZXRyeSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLnVwZGF0ZVRvb2x0aXBzT2ZPbEdlb21ldHJ5KHRoaXMuYWN0aXZlT2xHZW9tZXRyeSk7XG4gICAgfVxuICB9XG5cbiAgb25DYWxjdWxhdGVDbGljaygpIHtcbiAgICBjb25zdCBmZWF0dXJlcyA9IHRoaXMuc2VsZWN0ZWRGZWF0dXJlcyQudmFsdWU7XG4gICAgY29uc3QgYXJlYSA9IGZlYXR1cmVzLnJlZHVjZSgoc3VtOiBudW1iZXIsIGxvY2FsRmVhdHVyZTogRmVhdHVyZVdpdGhNZWFzdXJlKSA9PiB7XG4gICAgICByZXR1cm4gc3VtICsgbG9jYWxGZWF0dXJlLnByb3BlcnRpZXMubWVhc3VyZS5hcmVhIHx8IDA7XG4gICAgfSwgMCk7XG4gICAgY29uc3QgbGVuZ3RoID0gZmVhdHVyZXMucmVkdWNlKChzdW06IG51bWJlciwgbG9jYWxGZWF0dXJlOiBGZWF0dXJlV2l0aE1lYXN1cmUpID0+IHtcbiAgICAgIGlmIChsb2NhbEZlYXR1cmUuZ2VvbWV0cnkudHlwZSA9PT0gJ1BvbHlnb24nKSB7XG4gICAgICAgIHJldHVybiBzdW07XG4gICAgICB9XG4gICAgICByZXR1cm4gc3VtICsgbG9jYWxGZWF0dXJlLnByb3BlcnRpZXMubWVhc3VyZS5sZW5ndGggfHwgMDtcbiAgICB9LCAwKTtcbiAgICBjb25zdCBwZXJpbWV0ZXIgPSBmZWF0dXJlcy5yZWR1Y2UoKHN1bTogbnVtYmVyLCBsb2NhbEZlYXR1cmU6IEZlYXR1cmVXaXRoTWVhc3VyZSkgPT4ge1xuICAgICAgaWYgKGxvY2FsRmVhdHVyZS5nZW9tZXRyeS50eXBlID09PSAnTGluZVN0cmluZycpIHtcbiAgICAgICAgcmV0dXJuIHN1bTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBzdW0gKyBsb2NhbEZlYXR1cmUucHJvcGVydGllcy5tZWFzdXJlLmxlbmd0aCB8fCAwO1xuICAgIH0sIDApO1xuXG4gICAgdGhpcy5vcGVuRGlhbG9nKHtcbiAgICAgIGFyZWEsXG4gICAgICBsZW5ndGgsXG4gICAgICBwZXJpbWV0ZXJcbiAgICB9KTtcbiAgfVxuXG4gIG9uRGVsZXRlQ2xpY2soKSB7XG4gICAgdGhpcy5zdG9yZS5kZWxldGVNYW55KHRoaXMuc2VsZWN0ZWRGZWF0dXJlcyQudmFsdWUpO1xuICAgIHRoaXMuc2VsZWN0ZWRGZWF0dXJlcyQudmFsdWUuZm9yRWFjaChzZWxlY3RlZEZlYXR1cmUgPT4ge1xuICAgICAgdGhpcy5vbERyYXdTb3VyY2UuZ2V0RmVhdHVyZXMoKS5mb3JFYWNoKGRyYXdpbmdMYXllckZlYXR1cmUgPT4ge1xuICAgICAgICBjb25zdCBnZW9tZXRyeSA9IGRyYXdpbmdMYXllckZlYXR1cmUuZ2V0R2VvbWV0cnkoKSBhcyBhbnk7XG4gICAgICAgIGlmIChzZWxlY3RlZEZlYXR1cmUucHJvcGVydGllcy5pZCA9PT0gZ2VvbWV0cnkub2xfdWlkKSB7XG4gICAgICAgICAgdGhpcy5vbERyYXdTb3VyY2UucmVtb3ZlRmVhdHVyZShkcmF3aW5nTGF5ZXJGZWF0dXJlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBvbk1vZGlmeUNsaWNrKCkge1xuICAgIGlmICh0aGlzLnNlbGVjdGVkRmVhdHVyZXMkLnZhbHVlLmxlbmd0aCAhPT0gMSkgeyByZXR1cm47IH1cblxuICAgIGlmICh0aGlzLm1vZGlmeUNvbnRyb2wuYWN0aXZlID09PSB0cnVlKSB7XG4gICAgICB0aGlzLmRlYWN0aXZhdGVNb2RpZnlDb250cm9sKCk7XG4gICAgICB0aGlzLnRvZ2dsZURyYXdDb250cm9sKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGxvY2FsRmVhdHVyZSA9IHRoaXMuc2VsZWN0ZWRGZWF0dXJlcyQudmFsdWVbMF07XG4gICAgICBjb25zdCBvbEZlYXR1cmVzID0gdGhpcy5zdG9yZS5sYXllci5vbC5nZXRTb3VyY2UoKS5nZXRGZWF0dXJlcygpO1xuICAgICAgY29uc3Qgb2xGZWF0dXJlID0gb2xGZWF0dXJlcy5maW5kKChfb2xGZWF0dXJlOiBPbEZlYXR1cmU8T2xHZW9tZXRyeT4pID0+IHtcbiAgICAgICAgcmV0dXJuIF9vbEZlYXR1cmUuZ2V0KCdpZCcpID09PSBsb2NhbEZlYXR1cmUucHJvcGVydGllcy5pZDtcbiAgICAgIH0pO1xuXG4gICAgICBpZiAob2xGZWF0dXJlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhpcy5kZWFjdGl2YXRlRHJhd0NvbnRyb2woKTtcbiAgICAgICAgdGhpcy5hY3RpdmF0ZU1vZGlmeUNvbnRyb2woKTtcblxuICAgICAgICBjb25zdCBvbEdlb21ldHJ5ID0gb2xGZWF0dXJlLmdldEdlb21ldHJ5KCk7XG4gICAgICAgIHRoaXMuY2xlYXJUb29sdGlwc09mT2xHZW9tZXRyeShvbEdlb21ldHJ5IGFzIChPbExpbmVTdHJpbmcgfCBPbFBvbHlnb24pKTtcbiAgICAgICAgdGhpcy5tb2RpZnlDb250cm9sLnNldE9sR2VvbWV0cnkob2xHZW9tZXRyeSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBvcGVuRGlhbG9nKGRhdGE6IE1lYXN1cmVyRGlhbG9nRGF0YSk6IHZvaWQge1xuICAgIHRoaXMuZGlhbG9nLm9wZW4oTWVhc3VyZXJEaWFsb2dDb21wb25lbnQsIHtkYXRhfSk7XG4gIH1cblxuICAvKipcbiAgICogSW5pdGlhbGl6ZSB0aGUgbWVhc3VyZSBzdG9yZSBhbmQgc2V0IHVwIHNvbWUgbGlzdGVuZXJzXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHJpdmF0ZSBpbml0U3RvcmUoKSB7XG4gICAgY29uc3Qgc3RvcmUgPSB0aGlzLnN0b3JlO1xuXG4gICAgY29uc3QgbGF5ZXIgPSBuZXcgVmVjdG9yTGF5ZXIoe1xuICAgICAgdGl0bGU6IHRoaXMubGFuZ3VhZ2VTZXJ2aWNlLnRyYW5zbGF0ZS5pbnN0YW50KCdpZ28uZ2VvLm1lYXN1cmUubGF5ZXJUaXRsZScpLFxuICAgICAgaXNJZ29JbnRlcm5hbExheWVyOiB0cnVlLFxuICAgICAgaWQ6IGBpZ28tbWVhc3VyZXMtJHt1dWlkKCl9YCxcbiAgICAgIHpJbmRleDogMjAwLFxuICAgICAgc291cmNlOiBuZXcgRmVhdHVyZURhdGFTb3VyY2UoKSxcbiAgICAgIHN0eWxlOiBjcmVhdGVNZWFzdXJlTGF5ZXJTdHlsZSgpLFxuICAgICAgc2hvd0luTGF5ZXJMaXN0OiB0cnVlLFxuICAgICAgZXhwb3J0YWJsZTogdHJ1ZSxcbiAgICAgIGJyb3dzYWJsZTogZmFsc2UsXG4gICAgICB3b3Jrc3BhY2U6IHsgZW5hYmxlZDogZmFsc2UgfVxuICAgIH0pO1xuICAgIHRyeUJpbmRTdG9yZUxheWVyKHN0b3JlLCBsYXllcik7XG4gICAgc3RvcmUubGF5ZXIudmlzaWJsZSA9IHRydWU7XG4gICAgbGF5ZXIudmlzaWJsZSQuc3Vic2NyaWJlKHZpc2libGUgPT4ge1xuICAgICAgaWYgKHZpc2libGUpIHtcbiAgICAgICAgQXJyYXkuZnJvbShkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdpZ28tbWFwLXRvb2x0aXAtbWVhc3VyZScpKS5tYXAoKHZhbHVlOiBFbGVtZW50KSA9PlxuICAgICAgICB2YWx1ZS5jbGFzc0xpc3QucmVtb3ZlKCdpZ28tbWFwLXRvb2x0aXAtbWVhc3VyZS1ieS1kaXNwbGF5JykpO1xuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIEFycmF5LmZyb20oZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnaWdvLW1hcC10b29sdGlwLW1lYXN1cmUnKSkubWFwKCh2YWx1ZTogRWxlbWVudCkgPT5cbiAgICAgICAgdmFsdWUuY2xhc3NMaXN0LmFkZCgnaWdvLW1hcC10b29sdGlwLW1lYXN1cmUtYnktZGlzcGxheScpKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRyeUFkZExvYWRpbmdTdHJhdGVneShzdG9yZSk7XG5cbiAgICB0cnlBZGRTZWxlY3Rpb25TdHJhdGVneShzdG9yZSwgbmV3IEZlYXR1cmVTdG9yZVNlbGVjdGlvblN0cmF0ZWd5KHtcbiAgICAgIG1hcDogdGhpcy5tYXAsXG4gICAgICBtYW55OiB0cnVlXG4gICAgfSkpO1xuXG4gICAgdGhpcy5vbkZlYXR1cmVBZGRlZEtleSA9IHN0b3JlLnNvdXJjZS5vbC5vbignYWRkZmVhdHVyZScsIChldmVudDogT2xWZWN0b3JTb3VyY2VFdmVudDxPbEdlb21ldHJ5PikgPT4ge1xuICAgICAgY29uc3QgbG9jYWxGZWF0dXJlID0gZXZlbnQuZmVhdHVyZTtcbiAgICAgIGNvbnN0IG9sR2VvbWV0cnkgPSBsb2NhbEZlYXR1cmUuZ2V0R2VvbWV0cnkoKSBhcyBhbnk7XG4gICAgICB0aGlzLnVwZGF0ZU1lYXN1cmVPZk9sR2VvbWV0cnkob2xHZW9tZXRyeSwgbG9jYWxGZWF0dXJlLmdldCgnbWVhc3VyZScpKTtcbiAgICAgIHRoaXMub25EaXNwbGF5RGlzdGFuY2UoKTtcbiAgICB9KTtcblxuICAgIHRoaXMub25GZWF0dXJlUmVtb3ZlZEtleSA9IHN0b3JlLnNvdXJjZS5vbC5vbigncmVtb3ZlZmVhdHVyZScsIChldmVudDogT2xWZWN0b3JTb3VyY2VFdmVudDxPbEdlb21ldHJ5PikgPT4ge1xuICAgICAgY29uc3Qgb2xHZW9tZXRyeSA9IGV2ZW50LmZlYXR1cmUuZ2V0R2VvbWV0cnkoKSBhcyBhbnk7XG4gICAgICB0aGlzLmNsZWFyVG9vbHRpcHNPZk9sR2VvbWV0cnkob2xHZW9tZXRyeSk7XG4gICAgfSk7XG5cbiAgICB0aGlzLnNlbGVjdGVkRmVhdHVyZXMkJCA9IHN0b3JlLnN0YXRlVmlldy5tYW55QnkkKChyZWNvcmQ6IEVudGl0eVJlY29yZDxGZWF0dXJlV2l0aE1lYXN1cmU+KSA9PiB7XG4gICAgICByZXR1cm4gcmVjb3JkLnN0YXRlLnNlbGVjdGVkID09PSB0cnVlO1xuICAgIH0pLnBpcGUoXG4gICAgICBza2lwKDEpIC8vIFNraXAgaW5pdGlhbCBlbWlzc2lvblxuICAgIClcbiAgICAuc3Vic2NyaWJlKChyZWNvcmRzOiBFbnRpdHlSZWNvcmQ8RmVhdHVyZVdpdGhNZWFzdXJlPltdKSA9PiB7XG4gICAgICBpZiAodGhpcy5tb2RpZnlDb250cm9sLmFjdGl2ZSA9PT0gdHJ1ZSkge1xuICAgICAgICB0aGlzLmRlYWN0aXZhdGVNb2RpZnlDb250cm9sKCk7XG4gICAgICB9XG4gICAgICB0aGlzLnNlbGVjdGVkRmVhdHVyZXMkLm5leHQocmVjb3Jkcy5tYXAocmVjb3JkID0+IHJlY29yZC5lbnRpdHkpKTtcbiAgICB9KTtcblxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucyQkLnB1c2godGhpcy5zdG9yZS5lbnRpdGllcyQuc3Vic2NyaWJlKG9iamVjdHNFeGlzdHMgPT4ge1xuICAgICAgaWYgKG9iamVjdHNFeGlzdHMuZmluZChvYmplY3RFeGlzdCA9PiBvYmplY3RFeGlzdC5nZW9tZXRyeS50eXBlID09PSAnUG9seWdvbicpKXtcbiAgICAgICAgdGhpcy5oYXNBcmVhJC5uZXh0KHRydWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5oYXNBcmVhJC5uZXh0KGZhbHNlKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG9iamVjdHNFeGlzdHMuZmluZChvYmplY3RFeGlzdCA9PiBvYmplY3RFeGlzdC5nZW9tZXRyeS50eXBlID09PSAnTGluZVN0cmluZycpKXtcbiAgICAgICAgdGhpcy5oYXNMaW5lJC5uZXh0KHRydWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5oYXNMaW5lJC5uZXh0KGZhbHNlKTtcbiAgICAgIH1cbiAgICB9KSk7XG5cbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMkJC5wdXNoKHRoaXMuc3RvcmUuY291bnQkLnN1YnNjcmliZShjbnQgPT4ge1xuICAgICAgY250ID49IDEgP1xuICAgICAgICB0aGlzLnN0b3JlLmxheWVyLm9wdGlvbnMuc2hvd0luTGF5ZXJMaXN0ID0gdHJ1ZSA6XG4gICAgICAgIHRoaXMuc3RvcmUubGF5ZXIub3B0aW9ucy5zaG93SW5MYXllckxpc3QgPSBmYWxzZTtcbiAgICB9KSk7XG4gIH1cblxuICAvKipcbiAgICogRnJlZXplIGFueSBzdG9yZSwgbWVhbmluZyB0aGUgbGF5ZXIgaXMgcmVtb3ZlZCwgc3RyYXRlZ2llcyBhcmUgZGVhY3RpdmF0ZWRcbiAgICogYW5kIHNvbWUgbGlzdGVuZXIgcmVtb3ZlZFxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHByaXZhdGUgZnJlZXplU3RvcmUoKSB7XG4gICAgY29uc3Qgc3RvcmUgPSB0aGlzLnN0b3JlO1xuICAgIHRoaXMuc2VsZWN0ZWRGZWF0dXJlcyQkLnVuc3Vic2NyaWJlKCk7XG4gICAgdW5CeUtleSh0aGlzLm9uRmVhdHVyZUFkZGVkS2V5KTtcbiAgICB1bkJ5S2V5KHRoaXMub25GZWF0dXJlUmVtb3ZlZEtleSk7XG4gICAgc3RvcmUuZGVhY3RpdmF0ZVN0cmF0ZWd5T2ZUeXBlKEZlYXR1cmVTdG9yZUxvYWRpbmdTdHJhdGVneSk7XG4gICAgc3RvcmUuZGVhY3RpdmF0ZVN0cmF0ZWd5T2ZUeXBlKEZlYXR1cmVTdG9yZVNlbGVjdGlvblN0cmF0ZWd5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBkcmF3IGxpbmUgY29udHJvbFxuICAgKi9cbiAgcHJpdmF0ZSBjcmVhdGVEcmF3TGluZUNvbnRyb2woKSB7XG4gICAgdGhpcy5kcmF3TGluZUNvbnRyb2wgPSBuZXcgRHJhd0NvbnRyb2woe1xuICAgICAgZ2VvbWV0cnlUeXBlOiAnTGluZVN0cmluZycsXG4gICAgICBkcmF3aW5nTGF5ZXJTb3VyY2U6IHRoaXMub2xEcmF3U291cmNlLFxuICAgICAgaW50ZXJhY3Rpb25TdHlsZTogY3JlYXRlTWVhc3VyZUludGVyYWN0aW9uU3R5bGUoKSxcbiAgICAgIGRyYXdpbmdMYXllclN0eWxlOiBuZXcgT2xTdHlsZSh7fSlcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBkcmF3IHBvbHlnb24gY29udHJvbFxuICAgKi9cbiAgcHJpdmF0ZSBjcmVhdGVEcmF3UG9seWdvbkNvbnRyb2woKSB7XG4gICAgdGhpcy5kcmF3UG9seWdvbkNvbnRyb2wgPSBuZXcgRHJhd0NvbnRyb2woe1xuICAgICAgZ2VvbWV0cnlUeXBlOiAnUG9seWdvbicsXG4gICAgICBkcmF3aW5nTGF5ZXJTb3VyY2U6IHRoaXMub2xEcmF3U291cmNlLFxuICAgICAgaW50ZXJhY3Rpb25TdHlsZTogY3JlYXRlTWVhc3VyZUludGVyYWN0aW9uU3R5bGUoKSxcbiAgICAgIGRyYXdpbmdMYXllclN0eWxlOiBuZXcgT2xTdHlsZSh7fSlcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBkcmF3IHBvbHlnb24gY29udHJvbFxuICAgKi9cbiAgcHJpdmF0ZSBjcmVhdGVNb2RpZnlDb250cm9sKCkge1xuICAgIHRoaXMubW9kaWZ5Q29udHJvbCA9IG5ldyBNb2RpZnlDb250cm9sKHtcbiAgICAgIHNvdXJjZTogdGhpcy5vbERyYXdTb3VyY2UsXG4gICAgICBkcmF3U3R5bGU6IGNyZWF0ZU1lYXN1cmVJbnRlcmFjdGlvblN0eWxlKCksXG4gICAgICBsYXllclN0eWxlOiBuZXcgT2xTdHlsZSh7fSlcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBY3RpdmF0ZSB0aGUgcmlnaHQgY29udHJvbFxuICAgKi9cbiAgcHJpdmF0ZSB0b2dnbGVEcmF3Q29udHJvbCgpIHtcbiAgICB0aGlzLmRlYWN0aXZhdGVEcmF3Q29udHJvbCgpO1xuICAgIC8vIHRoaXMuZGVhY3RpdmF0ZU1vZGlmeUNvbnRyb2woKTtcbiAgICBpZiAodGhpcy5hY3RpdmVNZWFzdXJlVHlwZSA9PT0gTWVhc3VyZVR5cGUuTGVuZ3RoKSB7XG4gICAgICB0aGlzLmFjdGl2YXRlRHJhd0NvbnRyb2wodGhpcy5kcmF3TGluZUNvbnRyb2wpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5hY3RpdmVNZWFzdXJlVHlwZSA9PT0gTWVhc3VyZVR5cGUuQXJlYSkge1xuICAgICAgdGhpcy5hY3RpdmF0ZURyYXdDb250cm9sKHRoaXMuZHJhd1BvbHlnb25Db250cm9sKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQWN0aXZhdGUgYSBnaXZlbiBjb250cm9sXG4gICAqIEBwYXJhbSBkcmF3Q29udHJvbCBEcmF3IGNvbnRyb2xcbiAgICovXG4gIHByaXZhdGUgYWN0aXZhdGVEcmF3Q29udHJvbChkcmF3Q29udHJvbDogRHJhd0NvbnRyb2wpIHtcbiAgICB0aGlzLmRyYXdDb250cm9sSXNEaXNhYmxlZCA9IGZhbHNlO1xuICAgIHRoaXMuYWN0aXZlRHJhd0NvbnRyb2wgPSBkcmF3Q29udHJvbDtcbiAgICB0aGlzLmRyYXdTdGFydCQkID0gZHJhd0NvbnRyb2wuc3RhcnQkXG4gICAgICAuc3Vic2NyaWJlKChvbEdlb21ldHJ5OiBPbExpbmVTdHJpbmcgfCBPbFBvbHlnb24pID0+IHRoaXMub25EcmF3U3RhcnQob2xHZW9tZXRyeSkpO1xuICAgIHRoaXMuZHJhd0VuZCQkID0gZHJhd0NvbnRyb2wuZW5kJFxuICAgICAgLnN1YnNjcmliZSgob2xHZW9tZXRyeTogT2xMaW5lU3RyaW5nIHwgT2xQb2x5Z29uKSA9PiB0aGlzLm9uRHJhd0VuZChvbEdlb21ldHJ5KSk7XG4gICAgdGhpcy5kcmF3Q2hhbmdlcyQkID0gZHJhd0NvbnRyb2wuY2hhbmdlcyRcbiAgICAgIC5zdWJzY3JpYmUoKG9sR2VvbWV0cnk6IE9sTGluZVN0cmluZyB8IE9sUG9seWdvbikgPT4gdGhpcy5vbkRyYXdDaGFuZ2VzKG9sR2VvbWV0cnkpKTtcbiAgICB0aGlzLmRyYXdDaGFuZ2VzJCQgPSBkcmF3Q29udHJvbC5hYm9ydCRcbiAgICAgIC5zdWJzY3JpYmUoKG9sR2VvbWV0cnk6IE9sTGluZVN0cmluZyB8IE9sUG9seWdvbikgPT4ge1xuICAgICAgICB0aGlzLmNsZWFyVG9vbHRpcHNPZk9sR2VvbWV0cnkob2xHZW9tZXRyeSk7XG4gICAgICAgIHRoaXMuY2xlYXJNZWFzdXJlcygpO1xuICAgICAgfSk7XG4gICAgZHJhd0NvbnRyb2wuc2V0T2xNYXAodGhpcy5tYXAub2wsIGZhbHNlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWFjdGl2YXRlIHRoZSBhY3RpdmUgZHJhdyBjb250cm9sXG4gICAqL1xuICBwcml2YXRlIGRlYWN0aXZhdGVEcmF3Q29udHJvbCgpIHtcbiAgICBpZiAodGhpcy5hY3RpdmVEcmF3Q29udHJvbCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5vbERyYXdTb3VyY2UuY2xlYXIoKTtcbiAgICBpZiAodGhpcy5kcmF3U3RhcnQkJCAhPT0gdW5kZWZpbmVkICkgeyB0aGlzLmRyYXdTdGFydCQkLnVuc3Vic2NyaWJlKCk7IH1cbiAgICBpZiAodGhpcy5kcmF3RW5kJCQgIT09IHVuZGVmaW5lZCApIHsgdGhpcy5kcmF3RW5kJCQudW5zdWJzY3JpYmUoKTsgfVxuICAgIGlmICh0aGlzLmRyYXdDaGFuZ2VzJCQgIT09IHVuZGVmaW5lZCApIHsgdGhpcy5kcmF3Q2hhbmdlcyQkLnVuc3Vic2NyaWJlKCk7IH1cblxuICAgIHRoaXMuY2xlYXJUb29sdGlwc09mT2xTb3VyY2UodGhpcy5vbERyYXdTb3VyY2UpO1xuICAgIGlmICh0aGlzLmFjdGl2ZU9sR2VvbWV0cnkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5jbGVhclRvb2x0aXBzT2ZPbEdlb21ldHJ5KHRoaXMuYWN0aXZlT2xHZW9tZXRyeSk7XG4gICAgfVxuICAgIHRoaXMuYWN0aXZlRHJhd0NvbnRyb2wuc2V0T2xNYXAodW5kZWZpbmVkKTtcbiAgICB0aGlzLmFjdGl2ZURyYXdDb250cm9sID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuYWN0aXZlT2xHZW9tZXRyeSA9IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHByaXZhdGUgc2V0QWN0aXZlTWVhc3VyZVR5cGUobWVhc3VyZVR5cGU6IE1lYXN1cmVUeXBlKSB7XG4gICAgdGhpcy5fYWN0aXZlTWVhc3VyZVR5cGUgPSBtZWFzdXJlVHlwZTtcbiAgICB0aGlzLmNsZWFyTWVhc3VyZXMoKTtcbiAgICB0aGlzLnRvZ2dsZURyYXdDb250cm9sKCk7XG4gIH1cblxuICAvKipcbiAgICogQ2xlYXIgdGhlIGRyYXcgc291cmNlIGFuZCB0cmFjayB0aGUgZ2VvbWV0cnkgYmVpbmcgZHJhd25cbiAgICogQHBhcmFtIG9sR2VvbWV0cnkgT2wgbGluZXN0cmluZyBvciBwb2x5Z29uXG4gICAqL1xuICBwcml2YXRlIG9uRHJhd1N0YXJ0KG9sR2VvbWV0cnk6IE9sTGluZVN0cmluZyB8IE9sUG9seWdvbikge1xuICAgIHRoaXMuYWN0aXZlT2xHZW9tZXRyeSA9IG9sR2VvbWV0cnk7XG4gIH1cblxuICAvKipcbiAgICogQ2xlYXIgdGhlIGRyYXcgc291cmNlIGFuZCB0cmFjayB0aGUgZ2VvbWV0cnkgYmVpbmcgZHJhd1xuICAgKiBAcGFyYW0gb2xHZW9tZXRyeSBPbCBsaW5lc3RyaW5nIG9yIHBvbHlnb25cbiAgICovXG4gIHByaXZhdGUgb25EcmF3RW5kKG9sR2VvbWV0cnk6IE9sTGluZVN0cmluZyB8IE9sUG9seWdvbikge1xuICAgIHRoaXMuYWN0aXZlT2xHZW9tZXRyeSA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLmZpbmFsaXplTWVhc3VyZU9mT2xHZW9tZXRyeShvbEdlb21ldHJ5KTtcbiAgICB0aGlzLmFkZEZlYXR1cmVUb1N0b3JlKG9sR2VvbWV0cnkpO1xuICAgIHRoaXMuY2xlYXJUb29sdGlwc09mT2xHZW9tZXRyeShvbEdlb21ldHJ5KTtcbiAgICB0aGlzLm9sRHJhd1NvdXJjZS5jbGVhcih0cnVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGUgbWVhc3VyZXMgb2JzZXJ2YWJsZXMgYW5kIG1hcCB0b29sdGlwc1xuICAgKiBAcGFyYW0gb2xHZW9tZXRyeSBPbCBsaW5lc3RyaW5nIG9yIHBvbHlnb25cbiAgICovXG4gIHByaXZhdGUgb25EcmF3Q2hhbmdlcyhvbEdlb21ldHJ5OiBPbExpbmVTdHJpbmcgfCBPbFBvbHlnb24pIHtcbiAgICBjb25zdCBtZWFzdXJlID0gbWVhc3VyZU9sR2VvbWV0cnkob2xHZW9tZXRyeSwgdGhpcy5wcm9qZWN0aW9uKTtcbiAgICB0aGlzLnVwZGF0ZU1lYXN1cmVPZk9sR2VvbWV0cnkob2xHZW9tZXRyeSwgT2JqZWN0LmFzc2lnbih7fSwgbWVhc3VyZSwge1xuICAgICAgYXJlYTogdW5kZWZpbmVkIC8vIFdlIGRvbid0IHdhbnQgdG8gZGlzcGxheSBhbiBhcmVhIHRvb2x0aXAgd2hpbGUgZHJhd2luZy5cbiAgICB9KSk7XG4gICAgdGhpcy5tZWFzdXJlJC5uZXh0KG1lYXN1cmUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFjdGl2YXRlIGEgZ2l2ZW4gY29udHJvbFxuICAgKiBAcGFyYW0gbW9kaWZ5Q29udHJvbCBNb2RpZnkgY29udHJvbFxuICAgKi9cbiAgcHJpdmF0ZSBhY3RpdmF0ZU1vZGlmeUNvbnRyb2woKSB7XG4gICAgY29uc3Qgc2VsZWN0aW9uID0gdGhpcy5zdG9yZS5nZXRTdHJhdGVneU9mVHlwZShGZWF0dXJlU3RvcmVTZWxlY3Rpb25TdHJhdGVneSkgYXMgRmVhdHVyZVN0b3JlU2VsZWN0aW9uU3RyYXRlZ3k7XG4gICAgc2VsZWN0aW9uLmRlYWN0aXZhdGUoKTtcbiAgICBzZWxlY3Rpb24uY2xlYXIoKTtcblxuICAgIHRoaXMubW9kaWZ5U3RhcnQkJCA9IHRoaXMubW9kaWZ5Q29udHJvbC5zdGFydCRcbiAgICAgIC5zdWJzY3JpYmUoKG9sR2VvbWV0cnk6IE9sTGluZVN0cmluZyB8IE9sUG9seWdvbikgPT4gdGhpcy5vbk1vZGlmeVN0YXJ0KG9sR2VvbWV0cnkpKTtcbiAgICB0aGlzLm1vZGlmeUVuZCQkID0gdGhpcy5tb2RpZnlDb250cm9sLmVuZCRcbiAgICAgIC5zdWJzY3JpYmUoKG9sR2VvbWV0cnk6IE9sTGluZVN0cmluZyB8IE9sUG9seWdvbikgPT4gdGhpcy5vbk1vZGlmeUVuZChvbEdlb21ldHJ5KSk7XG4gICAgdGhpcy5tb2RpZnlDaGFuZ2VzJCQgPSB0aGlzLm1vZGlmeUNvbnRyb2wuY2hhbmdlcyRcbiAgICAgIC5zdWJzY3JpYmUoKG9sR2VvbWV0cnk6IE9sTGluZVN0cmluZyB8IE9sUG9seWdvbikgPT4gdGhpcy5vbk1vZGlmeUNoYW5nZXMob2xHZW9tZXRyeSkpO1xuICAgIHRoaXMubW9kaWZ5Q29udHJvbC5zZXRPbE1hcCh0aGlzLm1hcC5vbCk7XG4gIH1cblxuICAvKipcbiAgICogRGVhY3RpdmF0ZSB0aGUgYWN0aXZlIG1vZGlmeSBjb250cm9sXG4gICAqL1xuICBwcml2YXRlIGRlYWN0aXZhdGVNb2RpZnlDb250cm9sKCkge1xuICAgIGlmICh0aGlzLm1vZGlmeVN0YXJ0JCQgIT09IHVuZGVmaW5lZCApIHsgdGhpcy5tb2RpZnlTdGFydCQkLnVuc3Vic2NyaWJlKCk7IH1cbiAgICBpZiAodGhpcy5tb2RpZnlFbmQkJCAhPT0gdW5kZWZpbmVkICkgeyB0aGlzLm1vZGlmeUVuZCQkLnVuc3Vic2NyaWJlKCk7IH1cbiAgICBpZiAodGhpcy5tb2RpZnlDaGFuZ2VzJCQgIT09IHVuZGVmaW5lZCApIHsgdGhpcy5tb2RpZnlDaGFuZ2VzJCQudW5zdWJzY3JpYmUoKTsgfVxuXG4gICAgaWYgKHRoaXMuYWN0aXZlT2xHZW9tZXRyeSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBpZiAodGhpcy5zZWxlY3RlZEZlYXR1cmVzJC52YWx1ZS5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgY29uc3QgbG9jYWxGZWF0dXJlID0gdGhpcy5zZWxlY3RlZEZlYXR1cmVzJC52YWx1ZVswXTtcbiAgICAgICAgdGhpcy5hZGRGZWF0dXJlVG9TdG9yZSh0aGlzLmFjdGl2ZU9sR2VvbWV0cnksIGxvY2FsRmVhdHVyZSk7XG4gICAgICB9XG4gICAgICB0aGlzLmZpbmFsaXplTWVhc3VyZU9mT2xHZW9tZXRyeSh0aGlzLmFjdGl2ZU9sR2VvbWV0cnkpO1xuICAgIH1cblxuICAgIHRoaXMub2xEcmF3U291cmNlLmNsZWFyKCk7XG5cbiAgICB0aGlzLnN0b3JlLmFjdGl2YXRlU3RyYXRlZ3lPZlR5cGUoRmVhdHVyZVN0b3JlU2VsZWN0aW9uU3RyYXRlZ3kpO1xuXG4gICAgdGhpcy5hY3RpdmVPbEdlb21ldHJ5ID0gdW5kZWZpbmVkO1xuICAgIHRoaXMubW9kaWZ5Q29udHJvbC5zZXRPbE1hcCh1bmRlZmluZWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIENsZWFyIHRoZSBkcmF3IHNvdXJjZSBhbmQgdHJhY2sgdGhlIGdlb21ldHJ5IGJlaW5nIGRyYXduXG4gICAqIEBwYXJhbSBvbEdlb21ldHJ5IE9sIGxpbmVzdHJpbmcgb3IgcG9seWdvblxuICAgKi9cbiAgcHJpdmF0ZSBvbk1vZGlmeVN0YXJ0KG9sR2VvbWV0cnk6IE9sTGluZVN0cmluZyB8IE9sUG9seWdvbikge1xuICAgIHRoaXMub25EcmF3U3RhcnQob2xHZW9tZXRyeSk7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIG1lYXN1cmVzIG9ic2VydmFibGVzIGFuZCBtYXAgdG9vbHRpcHNcbiAgICogQHBhcmFtIG9sR2VvbWV0cnkgT2wgbGluZXN0cmluZyBvciBwb2x5Z29uXG4gICAqL1xuICBwcml2YXRlIG9uTW9kaWZ5Q2hhbmdlcyhvbEdlb21ldHJ5OiBPbExpbmVTdHJpbmcgfCBPbFBvbHlnb24pIHtcbiAgICB0aGlzLm9uRHJhd0NoYW5nZXMob2xHZW9tZXRyeSk7XG4gIH1cblxuICAvKipcbiAgICogQ2xlYXIgdGhlIGRyYXcgc291cmNlIGFuZCB0cmFjayB0aGUgZ2VvbWV0cnkgYmVpbmcgZHJhd1xuICAgKiBAcGFyYW0gb2xHZW9tZXRyeSBPbCBsaW5lc3RyaW5nIG9yIHBvbHlnb25cbiAgICovXG4gIHByaXZhdGUgb25Nb2RpZnlFbmQob2xHZW9tZXRyeTogT2xMaW5lU3RyaW5nIHwgT2xQb2x5Z29uKSB7XG4gICAgdGhpcy5maW5hbGl6ZU1lYXN1cmVPZk9sR2VvbWV0cnkob2xHZW9tZXRyeSk7XG4gIH1cblxuICBwcml2YXRlIGZpbmFsaXplTWVhc3VyZU9mT2xHZW9tZXRyeShvbEdlb21ldHJ5OiBPbExpbmVTdHJpbmcgfCBPbFBvbHlnb24pIHtcbiAgICBjb25zdCBtZWFzdXJlID0gbWVhc3VyZU9sR2VvbWV0cnkob2xHZW9tZXRyeSwgdGhpcy5wcm9qZWN0aW9uKTtcbiAgICB0aGlzLnVwZGF0ZU1lYXN1cmVPZk9sR2VvbWV0cnkob2xHZW9tZXRyeSwgbWVhc3VyZSk7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIG1lYXN1cmVzIG9ic2VydmFibGVzXG4gICAqIEBwYXJhbSBvbEdlb21ldHJ5IE9sIGxpbmVzdHJpbmcgb3IgcG9seWdvblxuICAgKiBAcGFyYW0gbWVhc3VyZSBNZWFzdXJlXG4gICAqL1xuICBwcml2YXRlIHVwZGF0ZU1lYXN1cmVPZk9sR2VvbWV0cnkob2xHZW9tZXRyeTogT2xMaW5lU3RyaW5nIHwgT2xQb2x5Z29uLCBtZWFzdXJlOiBNZWFzdXJlKSB7XG4gICAgb2xHZW9tZXRyeS5zZXRQcm9wZXJ0aWVzKHtfbWVhc3VyZTogbWVhc3VyZX0sIHRydWUpO1xuICAgIHRoaXMudXBkYXRlVG9vbHRpcHNPZk9sR2VvbWV0cnkob2xHZW9tZXRyeSk7XG4gIH1cblxuICAvKipcbiAgICogQ2xlYXIgdGhlIG1lYXN1cmVzIG9ic2VydmFibGVzXG4gICAqL1xuICBwcml2YXRlIGNsZWFyTWVhc3VyZXMoKSB7XG4gICAgdGhpcy5tZWFzdXJlJC5uZXh0KHt9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYSBmZWF0dXJlIHdpdGggbWVhc3VyZXMgdG8gdGhlIHN0b3JlLiBUaGUgbG9hZGluZyBzdHJhZ2VneSBvZiB0aGUgc3RvcmVcbiAgICogd2lsbCB0cmlnZ2VyIGFuZCBhZGQgdGhlIGZlYXR1cmUgdG8gdGhlIG1hcC5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBwcml2YXRlIGFkZEZlYXR1cmVUb1N0b3JlKG9sR2VvbWV0cnksIGxvY2FsRmVhdHVyZT86IEZlYXR1cmVXaXRoTWVhc3VyZSkge1xuICAgIGNvbnN0IGZlYXR1cmVJZCA9IGxvY2FsRmVhdHVyZSA/IGxvY2FsRmVhdHVyZS5wcm9wZXJ0aWVzLmlkIDogb2xHZW9tZXRyeS5vbF91aWQ7XG4gICAgY29uc3QgcHJvamVjdGlvbiA9IHRoaXMubWFwLm9sLmdldFZpZXcoKS5nZXRQcm9qZWN0aW9uKCk7XG4gICAgY29uc3QgZ2VvbWV0cnkgPSBuZXcgT2xHZW9KU09OKCkud3JpdGVHZW9tZXRyeU9iamVjdChvbEdlb21ldHJ5LCB7XG4gICAgICBmZWF0dXJlUHJvamVjdGlvbjogcHJvamVjdGlvbixcbiAgICAgIGRhdGFQcm9qZWN0aW9uOiBwcm9qZWN0aW9uXG4gICAgfSkgYXMgYW55O1xuICAgIHRoaXMuc3RvcmUudXBkYXRlKHtcbiAgICAgIHR5cGU6IEZFQVRVUkUsXG4gICAgICBnZW9tZXRyeSxcbiAgICAgIHByb2plY3Rpb246IHByb2plY3Rpb24uZ2V0Q29kZSgpLFxuICAgICAgcHJvcGVydGllczoge1xuICAgICAgICBpZDogZmVhdHVyZUlkLFxuICAgICAgICBtZWFzdXJlOiBvbEdlb21ldHJ5LmdldCgnX21lYXN1cmUnKVxuICAgICAgfSxcbiAgICAgIG1ldGE6IHtcbiAgICAgICAgaWQ6IGZlYXR1cmVJZFxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSBhbGwgdGhlIHRvb2x0aXBzIG9mIGFuIE9MIGdlb21ldHJ5XG4gICAqIEBwYXJhbSBvbEdlb21ldHJ5IE9MIEdlb21ldHJ5XG4gICAqIEBwYXJhbSBsZW5ndGhzIExlbmd0aHMgb2YgdGhlIE9MIGdlb21ldHJ5J3Mgc2VnbWVudHNcbiAgICogQHBhcmFtIG1lYXN1cmVVbml0IERpc3BsYXkgdG9vbHRpcCBtZWFzdXJlIGluIHRob3NlIHVuaXRzXG4gICAqL1xuICBwcml2YXRlIHVwZGF0ZVRvb2x0aXBzT2ZPbEdlb21ldHJ5KG9sR2VvbWV0cnk6IE9sTGluZVN0cmluZyB8IE9sUG9seWdvbikge1xuICAgIGNvbnN0IG1lYXN1cmUgPSBvbEdlb21ldHJ5LmdldCgnX21lYXN1cmUnKTtcbiAgICBjb25zdCBsZW5ndGhzID0gbWVhc3VyZS5sZW5ndGhzO1xuICAgIGNvbnN0IGFyZWEgPSBtZWFzdXJlLmFyZWE7XG5cbiAgICBjb25zdCBvbE1pZHBvaW50c1Rvb2x0aXBzID0gdXBkYXRlT2xUb29sdGlwc0F0TWlkcG9pbnRzKG9sR2VvbWV0cnkpO1xuICAgIGlmIChsZW5ndGhzLmxlbmd0aCA9PT0gb2xNaWRwb2ludHNUb29sdGlwcy5sZW5ndGgpIHtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgb2xNaWRwb2ludHNUb29sdGlwcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBjb25zdCBsZW5ndGggPSBsZW5ndGhzW2ldO1xuICAgICAgICBpZiAobGVuZ3RoICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICB0aGlzLnVwZGF0ZU9sVG9vbHRpcChcbiAgICAgICAgICAgIG9sTWlkcG9pbnRzVG9vbHRpcHNbaV0sXG4gICAgICAgICAgICBtZXRlcnNUb1VuaXQobGVuZ3RoLCB0aGlzLmFjdGl2ZUxlbmd0aFVuaXQpLFxuICAgICAgICAgICAgdGhpcy5hY3RpdmVMZW5ndGhVbml0LFxuICAgICAgICAgICAgTWVhc3VyZVR5cGUuTGVuZ3RoXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChhcmVhICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMudXBkYXRlT2xUb29sdGlwKFxuICAgICAgICB1cGRhdGVPbFRvb2x0aXBBdENlbnRlcihvbEdlb21ldHJ5KSxcbiAgICAgICAgc3F1YXJlTWV0ZXJzVG9Vbml0KGFyZWEsIHRoaXMuYWN0aXZlQXJlYVVuaXQpLFxuICAgICAgICB0aGlzLmFjdGl2ZUFyZWFVbml0LFxuICAgICAgICBNZWFzdXJlVHlwZS5BcmVhXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTaG93IHRoZSBtYXAgdG9vbHRpcHMgb2YgYSBnZW9lbXRyeVxuICAgKi9cbiAgcHJpdmF0ZSBzaG93VG9vbHRpcHNPZk9sR2VvbWV0cnkob2xHZW9tZXRyeTogT2xMaW5lU3RyaW5nIHwgT2xQb2x5Z29uKSB7XG4gICAgZ2V0VG9vbHRpcHNPZk9sR2VvbWV0cnkob2xHZW9tZXRyeSkuZm9yRWFjaCgob2xUb29sdGlwOiBPbE92ZXJsYXkgfCB1bmRlZmluZWQpID0+IHtcbiAgICAgIGlmICh0aGlzLnNob3VsZFNob3dUb29sdGlwKG9sVG9vbHRpcCkpIHtcbiAgICAgICAgdGhpcy5tYXAub2wuYWRkT3ZlcmxheShvbFRvb2x0aXApO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENsZWFyIHRoZSB0b29sdGlwcyBvZiBhbiBPTCBnZW9tZXRyeXNcbiAgICogQHBhcmFtIG9sR2VvbWV0cnkgT0wgZ2VvbWV0cnkgd2l0aCB0b29sdGlwc1xuICAgKi9cbiAgcHJpdmF0ZSBjbGVhclRvb2x0aXBzT2ZPbEdlb21ldHJ5KG9sR2VvbWV0cnk6IE9sTGluZVN0cmluZyB8IE9sUG9seWdvbikge1xuICAgIGdldFRvb2x0aXBzT2ZPbEdlb21ldHJ5KG9sR2VvbWV0cnkpLmZvckVhY2goKG9sVG9vbHRpcDogT2xPdmVybGF5IHwgdW5kZWZpbmVkKSA9PiB7XG4gICAgICBpZiAob2xUb29sdGlwICE9PSB1bmRlZmluZWQgJiYgb2xUb29sdGlwLmdldE1hcCgpICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhpcy5tYXAub2wucmVtb3ZlT3ZlcmxheShvbFRvb2x0aXApO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFNob3cgdGhlIG1hcCB0b29sdGlwcyBvZiBhbGwgdGhlIGdlb21ldHJpZXMgb2YgYSBzb3VyY2VcbiAgICovXG4gIHByaXZhdGUgdXBkYXRlVG9vbHRpcHNPZk9sU291cmNlKG9sU291cmNlOiBPbFZlY3RvclNvdXJjZTxPbEdlb21ldHJ5Pikge1xuICAgIG9sU291cmNlLmZvckVhY2hGZWF0dXJlKChvbEZlYXR1cmU6IE9sRmVhdHVyZTxPbEdlb21ldHJ5PikgPT4ge1xuICAgICAgdGhpcy51cGRhdGVUb29sdGlwc09mT2xHZW9tZXRyeShvbEZlYXR1cmUuZ2V0R2VvbWV0cnkoKSBhcyBhbnkpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFNob3cgdGhlIG1hcCB0b29sdGlwcyBvZiBhbGwgdGhlIGdlb21ldHJpZXMgb2YgYSBzb3VyY2VcbiAgICovXG4gIHByaXZhdGUgc2hvd1Rvb2x0aXBzT2ZPbFNvdXJjZShvbFNvdXJjZTogT2xWZWN0b3JTb3VyY2U8T2xHZW9tZXRyeT4pIHtcbiAgICBvbFNvdXJjZS5mb3JFYWNoRmVhdHVyZSgob2xGZWF0dXJlOiBPbEZlYXR1cmU8T2xHZW9tZXRyeT4pID0+IHtcbiAgICAgIHRoaXMuc2hvd1Rvb2x0aXBzT2ZPbEdlb21ldHJ5KG9sRmVhdHVyZS5nZXRHZW9tZXRyeSgpIGFzIGFueSk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ2xlYXIgdGhlIG1hcCB0b29sdGlwc1xuICAgKiBAcGFyYW0gb2xEcmF3U291cmNlIE9MIHZlY3RvciBzb3VyY2VcbiAgICovXG4gIHByaXZhdGUgY2xlYXJUb29sdGlwc09mT2xTb3VyY2Uob2xTb3VyY2U6IE9sVmVjdG9yU291cmNlPE9sR2VvbWV0cnk+KSB7XG4gICAgb2xTb3VyY2UuZm9yRWFjaEZlYXR1cmUoKG9sRmVhdHVyZTogT2xGZWF0dXJlPE9sR2VvbWV0cnk+KSA9PiB7XG4gICAgICBjb25zdCBvbEdlb21ldHJ5ID0gb2xGZWF0dXJlLmdldEdlb21ldHJ5KCk7XG4gICAgICBpZiAob2xHZW9tZXRyeSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMuY2xlYXJUb29sdGlwc09mT2xHZW9tZXRyeShvbEZlYXR1cmUuZ2V0R2VvbWV0cnkoKSBhcyBhbnkpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSBhbiBPTCB0b29sdGlwIHByb3BlcnRpZXMgYW5kIGlubmVyIEhUTUwgYW5kIGFkZCBpdCB0byB0aGUgbWFwIGlmIHBvc3NpYmxlXG4gICAqIEBwYXJhbSBvbFRvb2x0aXAgT0wgdG9vbHRpcFxuICAgKiBAcGFyYW0gbWVhc3VyZSBUaGUgbWVhc3VyZSB2YWxldSB0aSBkaXNwbGF5XG4gICAqIEBwYXJhbSBtZWFzdXJlVW5pdCBEaXNwbGF5IHRvb2x0aXAgbWVhc3VyZSBpbiB0aG9zZSB1bml0c1xuICAgKi9cbiAgcHJpdmF0ZSB1cGRhdGVPbFRvb2x0aXAoXG4gICAgb2xUb29sdGlwOiBPbE92ZXJsYXksXG4gICAgbWVhc3VyZTogbnVtYmVyLFxuICAgIHVuaXQ6IE1lYXN1cmVBcmVhVW5pdCB8IE1lYXN1cmVMZW5ndGhVbml0LFxuICAgIHR5cGU6IE1lYXN1cmVUeXBlXG4gICkge1xuICAgIG9sVG9vbHRpcC5zZXRQcm9wZXJ0aWVzKHtfbWVhc3VyZTogbWVhc3VyZSwgX3VuaXQ6IHVuaXQsIF90eXBlOiB0eXBlfSwgdHJ1ZSk7XG4gICAgb2xUb29sdGlwLmdldEVsZW1lbnQoKS5pbm5lckhUTUwgPSB0aGlzLmNvbXB1dGVUb29sdGlwSW5uZXJIVE1MKG9sVG9vbHRpcCk7XG4gICAgaWYgKHRoaXMuc2hvdWxkU2hvd1Rvb2x0aXAob2xUb29sdGlwKSkge1xuICAgICAgdGhpcy5tYXAub2wuYWRkT3ZlcmxheShvbFRvb2x0aXApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDb21wdXRlIGEgdG9vbHRpcCdzIGNvbnRlbnRcbiAgICogQHBhcmFtIG9sVG9vbHRpcCBPTCBvdmVybGF5XG4gICAqIEByZXR1cm5zIElubmVyIEhUTUxcbiAgICovXG4gIHByaXZhdGUgY29tcHV0ZVRvb2x0aXBJbm5lckhUTUwob2xUb29sdGlwOiBPbE92ZXJsYXkpOiBzdHJpbmcge1xuICAgIGNvbnN0IHByb3BlcnRpZXMgPSBvbFRvb2x0aXAuZ2V0UHJvcGVydGllcygpIGFzIGFueTtcbiAgICByZXR1cm4gZm9ybWF0TWVhc3VyZShwcm9wZXJ0aWVzLl9tZWFzdXJlLCB7XG4gICAgICBkZWNpbWFsOiAxLFxuICAgICAgdW5pdDogcHJvcGVydGllcy5fdW5pdCxcbiAgICAgIHVuaXRBYmJyOiB0cnVlLFxuICAgICAgbG9jYWxlOiAnZnInXG4gICAgfSwgdGhpcy5sYW5ndWFnZVNlcnZpY2UpO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgYSB0b29sdGlwIHNob3VsZCBiZSBzaG93bmVkIGJhc2VkIG9uIHRoZSBsZW5ndGhcbiAgICogb2YgdGhlIHNlZ21lbnQgaXQgaXMgYm91bmQgdG8uXG4gICAqIEBwYXJhbSBvbFRvb2x0aXAgT0wgb3ZlcmxheVxuICAgKiBAcmV0dXJucyBUcnVlIGlmIHRoZSB0b29sdGlwIHNob3VsZCBiZSBzaG93blxuICAgKi9cbiAgcHJpdmF0ZSBzaG91bGRTaG93VG9vbHRpcChvbFRvb2x0aXA6IE9sT3ZlcmxheSk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLnNob3dUb29sdGlwcyA9PT0gZmFsc2UpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCBwcm9wZXJ0aWVzID0gb2xUb29sdGlwLmdldFByb3BlcnRpZXMoKSBhcyBhbnk7XG4gICAgY29uc3QgbWVhc3VyZSA9IHByb3BlcnRpZXMuX21lYXN1cmU7XG4gICAgaWYgKG1lYXN1cmUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmIChwcm9wZXJ0aWVzLl91bml0ID09PSBNZWFzdXJlVHlwZS5MZW5ndGgpIHtcbiAgICAgIGNvbnN0IG1pblNlZ21lbnRMZW5ndGggPSBtZXRlcnNUb1VuaXQodGhpcy5taW5TZWdtZW50TGVuZ3RoLCBwcm9wZXJ0aWVzLl91bml0KSB8fCAwO1xuICAgICAgcmV0dXJuIG1lYXN1cmUgPiBNYXRoLm1heChtaW5TZWdtZW50TGVuZ3RoLCAwKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufVxuIiwiPGRpdj5cbiAgPGRpdiBjbGFzcz1cIm1lYXN1cmUtdHlwZS10b2dnbGUgbWF0LXR5cG9ncmFwaHlcIj5cbiAgICA8bWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXBcbiAgICAgIFt2YWx1ZV09XCJhY3RpdmVNZWFzdXJlVHlwZVwiXG4gICAgICAoY2hhbmdlKT1cIm9uTWVhc3VyZVR5cGVDaGFuZ2UoJGV2ZW50LnZhbHVlKVwiPlxuICAgICAgPG1hdC1idXR0b24tdG9nZ2xlIFt2YWx1ZV09XCJtZWFzdXJlVHlwZS5MZW5ndGhcIj5cbiAgICAgICAge3soJ2lnby5nZW8ubWVhc3VyZS4nICsgbWVhc3VyZVR5cGUuTGVuZ3RoKSB8IHRyYW5zbGF0ZX19XG4gICAgICA8L21hdC1idXR0b24tdG9nZ2xlPlxuICAgICAgPG1hdC1idXR0b24tdG9nZ2xlIFt2YWx1ZV09XCJtZWFzdXJlVHlwZS5BcmVhXCI+XG4gICAgICAgIHt7KCdpZ28uZ2VvLm1lYXN1cmUuJyArIG1lYXN1cmVUeXBlLkFyZWEpIHwgdHJhbnNsYXRlfX1cbiAgICAgIDwvbWF0LWJ1dHRvbi10b2dnbGU+XG4gICAgPC9tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cD5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cIm1lYXN1cmUtb3B0aW9ucyBtYXQtdHlwb2dyYXBoeVwiPlxuICAgIDxtYXQtc2xpZGUtdG9nZ2xlXG4gICAgICBbZGlzYWJsZWRdPVwiZHJhd0NvbnRyb2xJc0Rpc2FibGVkXCJcbiAgICAgIFtjaGVja2VkXT1cImRyYXdDb250cm9sSXNBY3RpdmVcIlxuICAgICAgW2xhYmVsUG9zaXRpb25dPVwiJ2JlZm9yZSdcIlxuICAgICAgKGNoYW5nZSk9XCJvblRvZ2dsZURyYXdDb250cm9sKCRldmVudC5jaGVja2VkKVwiPlxuICAgICAge3snaWdvLmdlby5tZWFzdXJlLnRvZ2dsZUFjdGl2ZScgfCB0cmFuc2xhdGV9fVxuICAgIDwvbWF0LXNsaWRlLXRvZ2dsZT5cblxuICAgIDxtYXQtZGl2aWRlciAqbmdJZj1cIihoYXNMaW5lJCB8IGFzeW5jKVwiPjwvbWF0LWRpdmlkZXI+XG5cbiAgICA8bWF0LXNsaWRlLXRvZ2dsZSAqbmdJZj1cIihoYXNMaW5lJCB8IGFzeW5jKVwiXG4gICAgICBbY2hlY2tlZF09XCJkaXNwbGF5TGluZXNcIlxuICAgICAgW2xhYmVsUG9zaXRpb25dPVwiJ2JlZm9yZSdcIlxuICAgICAgKGNoYW5nZSk9XCJvblRvZ2dsZURpc3BsYXlMaW5lcygkZXZlbnQuY2hlY2tlZClcIj5cbiAgICAgIHt7J2lnby5nZW8ubWVhc3VyZS50b2dnbGVEaXNwbGF5TGluZXMnIHwgdHJhbnNsYXRlfX1cbiAgICA8L21hdC1zbGlkZS10b2dnbGU+XG5cbiAgICA8bWF0LWRpdmlkZXIgKm5nSWY9XCIoaGFzTGluZSQgfCBhc3luYykgfHwgKGhhc0FyZWEkIHwgYXN5bmMpXCI+PC9tYXQtZGl2aWRlcj5cblxuICAgIDxtYXQtc2xpZGUtdG9nZ2xlICpuZ0lmPVwiKGhhc0FyZWEkIHwgYXN5bmMpXCJcbiAgICAgIFtjaGVja2VkXT1cImRpc3BsYXlEaXN0YW5jZVwiXG4gICAgICBbbGFiZWxQb3NpdGlvbl09XCInYmVmb3JlJ1wiXG4gICAgICAoY2hhbmdlKT1cIm9uVG9nZ2xlRGlzcGxheURpc3RhbmNlKCRldmVudC5jaGVja2VkKVwiPlxuICAgICAge3snaWdvLmdlby5tZWFzdXJlLnRvZ2dsZURpc3BsYXlEaXN0YW5jZScgfCB0cmFuc2xhdGV9fVxuICAgIDwvbWF0LXNsaWRlLXRvZ2dsZT5cblxuICAgIDxtYXQtc2xpZGUtdG9nZ2xlICpuZ0lmPVwiKGhhc0FyZWEkIHwgYXN5bmMpXCJcbiAgICAgIFtjaGVja2VkXT1cImRpc3BsYXlBcmVhc1wiXG4gICAgICBbbGFiZWxQb3NpdGlvbl09XCInYmVmb3JlJ1wiXG4gICAgICAoY2hhbmdlKT1cIm9uVG9nZ2xlRGlzcGxheUFyZWFzKCRldmVudC5jaGVja2VkKVwiPlxuICAgICAge3snaWdvLmdlby5tZWFzdXJlLnRvZ2dsZURpc3BsYXlBcmVhcycgfCB0cmFuc2xhdGV9fVxuICAgIDwvbWF0LXNsaWRlLXRvZ2dsZT5cblxuICAgIDxtYXQtZGl2aWRlciAqbmdJZj1cIihoYXNBcmVhJCB8IGFzeW5jKVwiPjwvbWF0LWRpdmlkZXI+XG5cbiAgICA8bWF0LXNsaWRlLXRvZ2dsZVxuICAgICAgW2NoZWNrZWRdPVwibWVhc3VyZVVuaXRzQXV0b1wiXG4gICAgICBbbGFiZWxQb3NpdGlvbl09XCInYmVmb3JlJ1wiXG4gICAgICAoY2hhbmdlKT1cIm9uVG9nZ2xlTWVhc3VyZVVuaXRzQXV0bygkZXZlbnQuY2hlY2tlZClcIj5cbiAgICAgIHt7J2lnby5nZW8ubWVhc3VyZS50b2dnbGVBdXRvVW5pdHMnIHwgdHJhbnNsYXRlfX1cbiAgICA8L21hdC1zbGlkZS10b2dnbGU+XG4gIDwvZGl2PlxuXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJtZWFzdXJlJCB8IGFzeW5jIGFzIG1lYXN1cmVcIj5cbiAgICA8aWdvLW1lYXN1cmVyLWl0ZW0gKm5nSWY9XCJhY3RpdmVNZWFzdXJlVHlwZSA9PT0gbWVhc3VyZVR5cGUuTGVuZ3RoIHx8IGFjdGl2ZU1lYXN1cmVUeXBlID09PSBtZWFzdXJlVHlwZS5BcmVhXCJcbiAgICAgIFttZWFzdXJlVHlwZV09XCJtZWFzdXJlVHlwZS5MZW5ndGhcIlxuICAgICAgW21lYXN1cmVVbml0XT1cIm1lYXN1cmVMZW5ndGhVbml0Lk1ldGVyc1wiXG4gICAgICBbbWVhc3VyZV09XCJtZWFzdXJlLmxlbmd0aFwiXG4gICAgICBbYXV0b109XCJtZWFzdXJlVW5pdHNBdXRvXCJcbiAgICAgIFtwbGFjZWhvbGRlcl09XCIoYWN0aXZlTWVhc3VyZVR5cGUgPT09IG1lYXN1cmVUeXBlLkFyZWEgPyAnaWdvLmdlby5tZWFzdXJlLnBlcmltZXRlcicgOiAnaWdvLmdlby5tZWFzdXJlLmxlbmd0aCcpIHwgdHJhbnNsYXRlXCJcbiAgICAgIChtZWFzdXJlVW5pdENoYW5nZSk9XCJvbkxlbmd0aFVuaXRDaGFuZ2UoJGV2ZW50KVwiPlxuICAgIDwvaWdvLW1lYXN1cmVyLWl0ZW0+XG5cbiAgICA8aWdvLW1lYXN1cmVyLWl0ZW0gKm5nSWY9XCJhY3RpdmVNZWFzdXJlVHlwZSA9PT0gbWVhc3VyZVR5cGUuQXJlYVwiXG4gICAgICBbbWVhc3VyZVR5cGVdPVwibWVhc3VyZVR5cGUuQXJlYVwiXG4gICAgICBbbWVhc3VyZVVuaXRdPVwibWVhc3VyZUFyZWFVbml0LlNxdWFyZU1ldGVyc1wiXG4gICAgICBbbWVhc3VyZV09XCJtZWFzdXJlLmFyZWFcIlxuICAgICAgW2F1dG9dPVwibWVhc3VyZVVuaXRzQXV0b1wiXG4gICAgICBbcGxhY2Vob2xkZXJdPVwiJ2lnby5nZW8ubWVhc3VyZS5hcmVhJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAobWVhc3VyZVVuaXRDaGFuZ2UpPVwib25BcmVhVW5pdENoYW5nZSgkZXZlbnQpXCI+XG4gICAgPC9pZ28tbWVhc3VyZXItaXRlbT5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPG1hdC1kaXZpZGVyICpuZ0lmPVwiKGhhc0xpbmUkIHwgYXN5bmMpIHx8IChoYXNBcmVhJCB8IGFzeW5jKVwiPjwvbWF0LWRpdmlkZXI+XG5cbiAgPGRpdiBjbGFzcz1cIm1lYXN1cmUtc3RvcmUtYnV0dG9uc1wiPlxuICAgIDxidXR0b24gKm5nSWY9XCIoaGFzTGluZSQgfCBhc3luYykgfHwgKGhhc0FyZWEkIHwgYXN5bmMpXCJcbiAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgW21hdFRvb2x0aXBdPVwiJ2lnby5nZW8ubWVhc3VyZS5hY3Rpb25iYXIuY2FsY3VsYXRlLnRvb2x0aXAnIHwgdHJhbnNsYXRlXCJcbiAgICAgIFtkaXNhYmxlZF09XCIoc2VsZWN0ZWRGZWF0dXJlcyQgfCBhc3luYykubGVuZ3RoID09PSAwXCJcbiAgICAgIGNvbG9yPVwiYWNjZW50XCJcbiAgICAgIChjbGljayk9XCJvbkNhbGN1bGF0ZUNsaWNrKClcIj5cbiAgICAgIDxtYXQtaWNvbiBzdmdJY29uPVwiY2FsY3VsYXRvclwiPjwvbWF0LWljb24+XG4gICAgPC9idXR0b24+XG5cbiAgICA8YnV0dG9uICpuZ0lmPVwiKGhhc0xpbmUkIHwgYXN5bmMpIHx8IChoYXNBcmVhJCB8IGFzeW5jKVwiXG4gICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgIFttYXRUb29sdGlwXT1cIidpZ28uZ2VvLm1lYXN1cmUuYWN0aW9uYmFyLmRlbGV0ZS50b29sdGlwJyB8IHRyYW5zbGF0ZVwiXG4gICAgICBbZGlzYWJsZWRdPVwiKHNlbGVjdGVkRmVhdHVyZXMkIHwgYXN5bmMpLmxlbmd0aCA9PT0gMFwiXG4gICAgICBjb2xvcj1cIndhcm5cIlxuICAgICAgKGNsaWNrKT1cIm9uRGVsZXRlQ2xpY2soKVwiPlxuICAgICAgPG1hdC1pY29uIHN2Z0ljb249XCJkZWxldGVcIj48L21hdC1pY29uPlxuICAgIDwvYnV0dG9uPlxuXG4gICAgPCEtLWJ1dHRvblxuICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICBbbWF0VG9vbHRpcF09XCInaWdvLmdlby5tZWFzdXJlLmFjdGlvbmJhci5tb2RpZnkudG9vbHRpcCcgfCB0cmFuc2xhdGVcIlxuICAgICAgW2Rpc2FibGVkXT1cIihzZWxlY3RlZEZlYXR1cmVzJCB8IGFzeW5jKS5sZW5ndGggIT09IDFcIlxuICAgICAgKGNsaWNrKT1cIm9uTW9kaWZ5Q2xpY2soKVwiPlxuICAgICAgPG1hdC1pY29uIHN2Z0ljb249XCJlZGl0XCI+PC9tYXQtaWNvbj5cbiAgICA8L2J1dHRvbi0tPlxuICA8L2Rpdj5cblxuICA8aWdvLWVudGl0eS10YWJsZVxuICAgICN0YWJsZVxuICAgIGNsYXNzPVwidGFibGUtY29tcGFjdFwiXG4gICAgW3N0b3JlXT1cInN0b3JlXCJcbiAgICBbdGVtcGxhdGVdPVwidGFibGVUZW1wbGF0ZVwiPlxuICA8L2lnby1lbnRpdHktdGFibGU+XG48L2Rpdj5cbiJdfQ==
1042
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVhc3VyZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvbWVhc3VyZS9tZWFzdXJlci9tZWFzdXJlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9tZWFzdXJlL21lYXN1cmVyL21lYXN1cmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUdMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUFFLGVBQWUsRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDckQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXRDLE9BQU8sT0FBTyxNQUFNLGdCQUFnQixDQUFDO0FBQ3JDLE9BQU8sU0FBUyxNQUFNLG1CQUFtQixDQUFDO0FBQzFDLE9BQU8sY0FBYyxNQUFNLGtCQUFrQixDQUFDO0FBTzlDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFeEMsT0FBTyxFQUFtQixZQUFZLEVBQWtCLE1BQU0sWUFBWSxDQUFDO0FBRzNFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFbkMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDckQsT0FBTyxFQUNMLE9BQU8sRUFFUCwyQkFBMkIsRUFDM0IsNkJBQTZCLEVBQzdCLGlCQUFpQixFQUNqQixxQkFBcUIsRUFDckIsdUJBQXVCLEVBQ3hCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDbkUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUkxQyxPQUFPLEVBQ0ws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QjtRQU83QixlQUF3QjtRQUF4QiwyREFBd0I7UUFHcEMsZUFBNEI7UUFBNUIsOENBQTRCLDJCQUFBO1FBRzVCLGVBQ0Y7UUFERSwwRkFDRjtRQUdhLGVBQXVCO1FBQXZCLDJEQUF1QjtRQW9CeEIsZUFBOEM7UUFBOUMsbUdBQThDO1FBR2pELGVBQThDO1FBQTlDLG1HQUE4QztRQVM5QyxlQUE4QztRQUE5QyxtR0FBOEM7UUFxQnZELGVBQWU7UUFBZixpQ0FBZSwrQkFBQTs7dUZEeENOLGlCQUFpQjtjQU43QixTQUFTOzJCQUNFLGNBQWMsbUJBR1AsdUJBQXVCLENBQUMsTUFBTTt1SEFzTnRDLEdBQUc7a0JBQVgsS0FBSztZQUtHLEtBQUs7a0JBQWIsS0FBSztZQU9GLGlCQUFpQjtrQkFEcEIsS0FBSztZQVNHLGdCQUFnQjtrQkFBeEIsS0FBSztZQUVnQyxLQUFLO2tCQUExQyxTQUFTO21CQUFDLE9BQU8sRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBJbnB1dCxcclxuICBPbkluaXQsXHJcbiAgT25EZXN0cm95LFxyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIFZpZXdDaGlsZFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5cclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgc2tpcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuXHJcbmltcG9ydCBPbFN0eWxlIGZyb20gJ29sL3N0eWxlL1N0eWxlJztcclxuaW1wb3J0IE9sR2VvSlNPTiBmcm9tICdvbC9mb3JtYXQvR2VvSlNPTic7XHJcbmltcG9ydCBPbFZlY3RvclNvdXJjZSBmcm9tICdvbC9zb3VyY2UvVmVjdG9yJztcclxuaW1wb3J0IHsgVmVjdG9yU291cmNlRXZlbnQgYXMgT2xWZWN0b3JTb3VyY2VFdmVudCB9IGZyb20gJ29sL3NvdXJjZS9WZWN0b3InO1xyXG5pbXBvcnQgT2xMaW5lU3RyaW5nIGZyb20gJ29sL2dlb20vTGluZVN0cmluZyc7XHJcbmltcG9ydCBPbFBvbHlnb24gZnJvbSAnb2wvZ2VvbS9Qb2x5Z29uJztcclxuaW1wb3J0IE9sRmVhdHVyZSBmcm9tICdvbC9GZWF0dXJlJztcclxuaW1wb3J0IHR5cGUgeyBkZWZhdWx0IGFzIE9sR2VvbWV0cnkgfSBmcm9tICdvbC9nZW9tL0dlb21ldHJ5JztcclxuaW1wb3J0IE9sT3ZlcmxheSBmcm9tICdvbC9PdmVybGF5JztcclxuaW1wb3J0IHsgdW5CeUtleSB9IGZyb20gJ29sL09ic2VydmFibGUnO1xyXG5cclxuaW1wb3J0IHsgTGFuZ3VhZ2VTZXJ2aWNlLCBTdG9yYWdlU2NvcGUsIFN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnQGlnbzIvY29yZSc7XHJcbmltcG9ydCB7IEVudGl0eVJlY29yZCwgRW50aXR5VGFibGVUZW1wbGF0ZSB9IGZyb20gJ0BpZ28yL2NvbW1vbic7XHJcbmltcG9ydCB0eXBlIHsgRW50aXR5VGFibGVDb21wb25lbnQgfSBmcm9tICdAaWdvMi9jb21tb24nO1xyXG5pbXBvcnQgeyB1dWlkIH0gZnJvbSAnQGlnbzIvdXRpbHMnO1xyXG5cclxuaW1wb3J0IHsgRmVhdHVyZURhdGFTb3VyY2UgfSBmcm9tICcuLi8uLi9kYXRhc291cmNlJztcclxuaW1wb3J0IHtcclxuICBGRUFUVVJFLFxyXG4gIEZlYXR1cmVTdG9yZSxcclxuICBGZWF0dXJlU3RvcmVMb2FkaW5nU3RyYXRlZ3ksXHJcbiAgRmVhdHVyZVN0b3JlU2VsZWN0aW9uU3RyYXRlZ3ksXHJcbiAgdHJ5QmluZFN0b3JlTGF5ZXIsXHJcbiAgdHJ5QWRkTG9hZGluZ1N0cmF0ZWd5LFxyXG4gIHRyeUFkZFNlbGVjdGlvblN0cmF0ZWd5XHJcbn0gZnJvbSAnLi4vLi4vZmVhdHVyZSc7XHJcbmltcG9ydCB7IERyYXdDb250cm9sLCBNb2RpZnlDb250cm9sIH0gZnJvbSAnLi4vLi4vZ2VvbWV0cnkvc2hhcmVkJztcclxuaW1wb3J0IHsgVmVjdG9yTGF5ZXIgfSBmcm9tICcuLi8uLi9sYXllcic7XHJcbmltcG9ydCB7IElnb01hcCB9IGZyb20gJy4uLy4uL21hcCc7XHJcblxyXG5pbXBvcnQgeyBNZWFzdXJlLCBNZWFzdXJlckRpYWxvZ0RhdGEsIEZlYXR1cmVXaXRoTWVhc3VyZSB9IGZyb20gJy4uL3NoYXJlZC9tZWFzdXJlLmludGVyZmFjZXMnO1xyXG5pbXBvcnQge1xyXG4gIE1lYXN1cmVUeXBlLFxyXG4gIE1lYXN1cmVBcmVhVW5pdCxcclxuICBNZWFzdXJlTGVuZ3RoVW5pdCxcclxufSBmcm9tICcuLi9zaGFyZWQvbWVhc3VyZS5lbnVtJztcclxuaW1wb3J0IHtcclxuICBtZWFzdXJlT2xHZW9tZXRyeSxcclxuICBjcmVhdGVNZWFzdXJlSW50ZXJhY3Rpb25TdHlsZSxcclxuICBjcmVhdGVNZWFzdXJlTGF5ZXJTdHlsZSxcclxuICB1cGRhdGVPbFRvb2x0aXBzQXRNaWRwb2ludHMsXHJcbiAgdXBkYXRlT2xUb29sdGlwQXRDZW50ZXIsXHJcbiAgZ2V0VG9vbHRpcHNPZk9sR2VvbWV0cnksXHJcbiAgc3F1YXJlTWV0ZXJzVG9Vbml0LFxyXG4gIG1ldGVyc1RvVW5pdCxcclxuICBmb3JtYXRNZWFzdXJlXHJcbn0gZnJvbSAnLi4vc2hhcmVkL21lYXN1cmUudXRpbHMnO1xyXG5pbXBvcnQgeyBNZWFzdXJlckRpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4vbWVhc3VyZXItZGlhbG9nLmNvbXBvbmVudCc7XHJcblxyXG4vKipcclxuICogVG9vbCB0byBtZWFzdXJlIGxlbmd0aHMgYW5kIGFyZWFzXHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2lnby1tZWFzdXJlcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL21lYXN1cmVyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9tZWFzdXJlci5jb21wb25lbnQuc2NzcyddLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBNZWFzdXJlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuXHJcbiAgLyoqXHJcbiAgICogVGFibGUgdGVtcGxhdGVcclxuICAgKiBAaW50ZXJuYWxcclxuICAgKi9cclxuICBwdWJsaWMgdGFibGVUZW1wbGF0ZTogRW50aXR5VGFibGVUZW1wbGF0ZSA9IHtcclxuICAgIHNlbGVjdGlvbjogdHJ1ZSxcclxuICAgIHNlbGVjdE1hbnk6IHRydWUsXHJcbiAgICBzZWxlY3Rpb25DaGVja2JveDogdHJ1ZSxcclxuICAgIHNvcnQ6IHRydWUsXHJcbiAgICBjb2x1bW5zOiBbXHJcbiAgICAgIHtcclxuICAgICAgICBuYW1lOiAnbGVuZ3RoJyxcclxuICAgICAgICB0aXRsZTogdGhpcy5sYW5ndWFnZVNlcnZpY2UudHJhbnNsYXRlLmluc3RhbnQoJ2lnby5nZW8ubWVhc3VyZS5sZW5ndGhIZWFkZXInKSxcclxuICAgICAgICB2YWx1ZUFjY2Vzc29yOiAobG9jYWxGZWF0dXJlOiBGZWF0dXJlV2l0aE1lYXN1cmUpID0+IHtcclxuICAgICAgICAgIGNvbnN0IHVuaXQgPSB0aGlzLmFjdGl2ZUxlbmd0aFVuaXQ7XHJcbiAgICAgICAgICBjb25zdCBtZWFzdXJlID0gbWV0ZXJzVG9Vbml0KGxvY2FsRmVhdHVyZS5wcm9wZXJ0aWVzLm1lYXN1cmUubGVuZ3RoLCB1bml0KTtcclxuICAgICAgICAgIHJldHVybiBmb3JtYXRNZWFzdXJlKG1lYXN1cmUsIHtcclxuICAgICAgICAgICAgZGVjaW1hbDogMSxcclxuICAgICAgICAgICAgdW5pdCxcclxuICAgICAgICAgICAgdW5pdEFiYnI6IGZhbHNlLFxyXG4gICAgICAgICAgICBsb2NhbGU6ICdmcidcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIG5hbWU6ICdhcmVhJyxcclxuICAgICAgICB0aXRsZTogdGhpcy5sYW5ndWFnZVNlcnZpY2UudHJhbnNsYXRlLmluc3RhbnQoJ2lnby5nZW8ubWVhc3VyZS5hcmVhSGVhZGVyJyksXHJcbiAgICAgICAgdmFsdWVBY2Nlc3NvcjogKGxvY2FsRmVhdHVyZTogRmVhdHVyZVdpdGhNZWFzdXJlKSA9PiB7XHJcbiAgICAgICAgICBjb25zdCB1bml0ID0gdGhpcy5hY3RpdmVBcmVhVW5pdDtcclxuICAgICAgICAgIGNvbnN0IG1lYXN1cmUgPSBzcXVhcmVNZXRlcnNUb1VuaXQobG9jYWxGZWF0dXJlLnByb3BlcnRpZXMubWVhc3VyZS5hcmVhLCB1bml0KTtcclxuICAgICAgICAgIHJldHVybiBtZWFzdXJlID8gZm9ybWF0TWVhc3VyZShtZWFzdXJlLCB7XHJcbiAgICAgICAgICAgIGRlY2ltYWw6IDEsXHJcbiAgICAgICAgICAgIHVuaXQsXHJcbiAgICAgICAgICAgIHVuaXRBYmJyOiBmYWxzZSxcclxuICAgICAgICAgICAgbG9jYWxlOiAnZnInXHJcbiAgICAgICAgICB9KSA6ICcnO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgXVxyXG4gIH07XHJcblxyXG4gIHByaXZhdGUgc3Vic2NyaXB0aW9ucyQkOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xyXG5cclxuICAvKipcclxuICAgKiBSZWZlcmVuY2UgdG8gdGhlIE1lYXN1cmVUeXBlIGVudW1cclxuICAgKiBAaW50ZXJuYWxcclxuICAgKi9cclxuICBwdWJsaWMgbWVhc3VyZVR5cGUgPSBNZWFzdXJlVHlwZTtcclxuXHJcbiAgLyoqXHJcbiAgICogUmVmZXJlbmNlIHRvIHRoZSBBcmVhTWVhc3VyZVVuaXQgZW51bVxyXG4gICAqIEBpbnRlcm5hbFxyXG4gICAqL1xyXG4gIHB1YmxpYyBtZWFzdXJlQXJlYVVuaXQgPSBNZWFzdXJlQXJlYVVuaXQ7XHJcblxyXG4gIC8qKlxyXG4gICAqIFJlZmVyZW5jZSB0byB0aGUgTGVuZ3RoTWVhc3VyZVVuaXQgZW51bVxyXG4gICAqIEBpbnRlcm5hbFxyXG4gICAqL1xyXG4gIHB1YmxpYyBtZWFzdXJlTGVuZ3RoVW5pdCA9IE1lYXN1cmVMZW5ndGhVbml0O1xyXG5cclxuICAvKipcclxuICAgKiBXaGV0aGVyIG1lYXN1cmUgdW5pdHMgc2hvdWxkIGJlIGF1dG9tYXRpY2FsbHkgZGV0ZXJtaW5lZFxyXG4gICAqIEBpbnRlcm5hbFxyXG4gICAqL1xyXG4gIHB1YmxpYyBtZWFzdXJlVW5pdHNBdXRvOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8qKlxyXG4gICAqIFdoZXRoZXIgZGlzcGxheSBvZiBkaXN0YW5jZXMgb2YgYXJlYXNcclxuICAgKiBAaW50ZXJuYWxcclxuICAgKi9cclxuICBwdWJsaWMgZGlzcGxheURpc3RhbmNlOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgLyoqXHJcbiAgICogV2hldGhlciBkaXNwbGF5IG9mIGRpc3RhbmNlcyBvZiBsaW5lc1xyXG4gICAqIEBpbnRlcm5hbFxyXG4gICAqL1xyXG4gIHB1YmxpYyBkaXNwbGF5TGluZXM6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICAvKipcclxuICAgKiBXaGV0aGVyIGRpc3BsYXkgb2YgYXJlYXNcclxuICAgKiBAaW50ZXJuYWxcclxuICAgKi9cclxuICBwdWJsaWMgZGlzcGxheUFyZWFzOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgLyoqXHJcbiAgICogT2JzZXJ2YWJsZSBvZiBsaW5lIGJvb2xlYW5cclxuICAgKiBAaW50ZXJuYWxcclxuICAgKi9cclxuICAgcHVibGljIGhhc0xpbmUkOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcclxuXHJcbiAgLyoqXHJcbiAgICogT2JzZXJ2YWJsZSBvZiBhcmVhIGJvb2xlYW5cclxuICAgKiBAaW50ZXJuYWxcclxuICAgKi9cclxuICBwdWJsaWMgaGFzQXJlYSQ6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPiA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xyXG5cclxuICAvKipcclxuICAgKiBPYnNlcnZhYmxlIG9mIGFyZWFcclxuICAgKiBAaW50ZXJuYWxcclxuICAgKi9cclxuICBwdWJsaWMgbWVhc3VyZSQ6IEJlaGF2aW9yU3ViamVjdDxNZWFzdXJlPiA9IG5ldyBCZWhhdmlvclN1YmplY3Qoe30pO1xyXG5cclxuICAvKipcclxuICAgKiBPYnNlcnZhYmxlIG9mIHNlbGVjdGVkIGZlYXR1cmVzXHJcbiAgICogQGludGVybmFsXHJcbiAgICovXHJcbiAgcHVibGljIHNlbGVjdGVkRmVhdHVyZXMkOiBCZWhhdmlvclN1YmplY3Q8RmVhdHVyZVdpdGhNZWFzdXJlW10+ID0gbmV3IEJlaGF2aW9yU3ViamVjdChbXSk7XHJcblxyXG4gIC8qKlxyXG4gICAqIE9MIGRyYXcgc291cmNlXHJcbiAgICogQGludGVybmFsXHJcbiAgICovXHJcbiAgcHVibGljIHNob3dUb29sdGlwczogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIC8qKlxyXG4gICAqIFdoZXRoZXIgZHJhdyBjb250cm9sIHRvZ2dsZSBpcyBkaXNhYmxlZCBvciBub3RcclxuICAgKiBAaW50ZXJuYWxcclxuICAgKi9cclxuICBwdWJsaWMgZHJhd0NvbnRyb2xJc0Rpc2FibGVkOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgLyoqXHJcbiAgICogRHJhdyBsaW5lIGNvbnRyb2xcclxuICAgKi9cclxuICBwcml2YXRlIGRyYXdMaW5lQ29udHJvbDogRHJhd0NvbnRyb2w7XHJcblxyXG4gIC8qKlxyXG4gICAqIERyYXcgcG9seWdvbiBjb250cm9sXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBkcmF3UG9seWdvbkNvbnRyb2w6IERyYXdDb250cm9sO1xyXG5cclxuICAvKipcclxuICAgKiBNb2RpZnkgY29udHJvbFxyXG4gICAqL1xyXG4gIHByaXZhdGUgbW9kaWZ5Q29udHJvbDogTW9kaWZ5Q29udHJvbDtcclxuXHJcbiAgLyoqXHJcbiAgICogQWN0aXZlIE9MIGdlb21ldHJ5XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBhY3RpdmVPbEdlb21ldHJ5OiBPbExpbmVTdHJpbmcgfCBPbFBvbHlnb247XHJcblxyXG4gIC8qKlxyXG4gICAqIEFjdGl2ZSBtbGVuZ3RoIHVuaXRcclxuICAgKi9cclxuICBwcml2YXRlIGFjdGl2ZUxlbmd0aFVuaXQ6IE1lYXN1cmVMZW5ndGhVbml0ID0gTWVhc3VyZUxlbmd0aFVuaXQuTWV0ZXJzO1xyXG5cclxuICAvKipcclxuICAgKiBBY3RpdmUgYXJlYSB1bml0XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBhY3RpdmVBcmVhVW5pdDogTWVhc3VyZUFyZWFVbml0ID0gTWVhc3VyZUFyZWFVbml0LlNxdWFyZU1ldGVycztcclxuXHJcbiAgLyoqXHJcbiAgICogRmVhdHVyZSBhZGRlZCBsaXN0ZW5lciBrZXlcclxuICAgKi9cclxuICBwcml2YXRlIG9uRmVhdHVyZUFkZGVkS2V5O1xyXG5cclxuICAvKipcclxuICAgKiBGZWF0dXJlIHJlbW92ZWQgbGlzdGVuZXIga2V5XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBvbkZlYXR1cmVSZW1vdmVkS2V5O1xyXG5cclxuICAvKipcclxuICAgKiBBY3RpdmUgZHJhdyBjb250cm9sXHJcbiAgICogQGludGVybmFsXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBhY3RpdmVEcmF3Q29udHJvbDogRHJhd0NvbnRyb2w7XHJcblxyXG4gIC8qKlxyXG4gICAqIFN1YnNjcmlwdGlvbiB0byBkcmF3IHN0YXJ0XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBkcmF3U3RhcnQkJDogU3Vic2NyaXB0aW9uO1xyXG5cclxuICAvKipcclxuICAgKiBTdWJzY3JpcHRpb24gdG8gZHJhdyBlbmRcclxuICAgKi9cclxuICBwcml2YXRlIGRyYXdFbmQkJDogU3Vic2NyaXB0aW9uO1xyXG5cclxuICAvKipcclxuICAgKiBTdWJzY3JpcHRpb24gdG8gY29udHJvbHMgY2hhbmdlc1xyXG4gICAqL1xyXG4gIHByaXZhdGUgZHJhd0NoYW5nZXMkJDogU3Vic2NyaXB0aW9uO1xyXG5cclxuICAvKipcclxuICAgKiBTdWJzY3JpcHRpb24gdG8gbW9kaWZ5IHN0YXJ0XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBtb2RpZnlTdGFydCQkOiBTdWJzY3JpcHRpb247XHJcblxyXG4gIC8qKlxyXG4gICAqIFN1YnNjcmlwdGlvbiB0byBtb2RpZnkgZW5kXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBtb2RpZnlFbmQkJDogU3Vic2NyaXB0aW9uO1xyXG5cclxuICAvKipcclxuICAgKiBTdWJzY3JpcHRpb24gdG8gY29udHJvbHMgY2hhbmdlc1xyXG4gICAqL1xyXG4gIHByaXZhdGUgbW9kaWZ5Q2hhbmdlcyQkOiBTdWJzY3JpcHRpb247XHJcblxyXG4gIC8qKlxyXG4gICAqIFN1YnNjcmlwdGlvbiB0byBtZWFzdXJlcyBzZWxlY3Rpb25cclxuICAgKi9cclxuICBwcml2YXRlIHNlbGVjdGVkRmVhdHVyZXMkJDogU3Vic2NyaXB0aW9uO1xyXG5cclxuICAvKipcclxuICAgKiBPTCBkcmF3IHNvdXJjZVxyXG4gICAqL1xyXG4gIHByaXZhdGUgb2xEcmF3U291cmNlID0gbmV3IE9sVmVjdG9yU291cmNlKCk7XHJcblxyXG4gIC8qKlxyXG4gICAqIFRoZSBtYXAgdG8gbWVhc3VyZSBvblxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIG1hcDogSWdvTWFwO1xyXG5cclxuICAvKipcclxuICAgKiBUaGUgbWVhc3VyZXMgc3RvcmVcclxuICAgKi9cclxuICBASW5wdXQoKSBzdG9yZTogRmVhdHVyZVN0b3JlPEZlYXR1cmVXaXRoTWVhc3VyZT47XHJcblxyXG4gIC8qKlxyXG4gICAqIE1lYXN1cmUgdHlwZVxyXG4gICAqIEBpbnRlcm5hbFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IGFjdGl2ZU1lYXN1cmVUeXBlKHZhbHVlOiBNZWFzdXJlVHlwZSkgeyB0aGlzLnNldEFjdGl2ZU1lYXN1cmVUeXBlKHZhbHVlKTsgfVxyXG4gIGdldCBhY3RpdmVNZWFzdXJlVHlwZSgpOiBNZWFzdXJlVHlwZSB7IHJldHVybiB0aGlzLl9hY3RpdmVNZWFzdXJlVHlwZTsgfVxyXG4gIHByaXZhdGUgX2FjdGl2ZU1lYXN1cmVUeXBlOiBNZWFzdXJlVHlwZTtcclxuXHJcbiAgLyoqXHJcbiAgICogVGhlIG1pbmltdW0gbGVuZ3RoIGEgc2VnbWVudCBtdXN0IGhhdmUgdG8gZGlzcGxheSBhIHRvb2x0aXAuXHJcbiAgICogSXQgYWxzbyBhcHBsaWVzIHRvIGFyZWEgdG9vbHRpcHMuXHJcbiAgICovXHJcbiAgQElucHV0KCkgbWluU2VnbWVudExlbmd0aDogbnVtYmVyID0gMTA7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ3RhYmxlJywgeyBzdGF0aWM6IHRydWUgfSkgdGFibGU6IEVudGl0eVRhYmxlQ29tcG9uZW50O1xyXG5cclxuICAvKipcclxuICAgKiBXaGV0ZXIgb25lIG9mIHRoZSBkcmF3IGNvbnRyb2wgaXMgYWN0aXZlXHJcbiAgICogQGludGVybmFsXHJcbiAgICovXHJcbiAgZ2V0IGRyYXdDb250cm9sSXNBY3RpdmUoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5hY3RpdmVEcmF3Q29udHJvbCAhPT0gdW5kZWZpbmVkO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHByb2plY3Rpb24oKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLm1hcC5vbC5nZXRWaWV3KCkuZ2V0UHJvamVjdGlvbigpLmdldENvZGUoKTtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBsYW5ndWFnZVNlcnZpY2U6IExhbmd1YWdlU2VydmljZSxcclxuICAgIHByaXZhdGUgZGlhbG9nOiBNYXREaWFsb2csXHJcbiAgICBwcml2YXRlIHN0b3JhZ2VTZXJ2aWNlOiBTdG9yYWdlU2VydmljZVxyXG4gICkge31cclxuXHJcbiAgLyoqXHJcbiAgICogQWRkIGRyYXcgY29udHJvbHMgYW5kIGFjdGl2YXRlIG9uZVxyXG4gICAqIEBpbnRlcm5hbFxyXG4gICAqL1xyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5pbml0U3RvcmUoKTtcclxuICAgIHRoaXMuY3JlYXRlRHJhd0xpbmVDb250cm9sKCk7XHJcbiAgICB0aGlzLmNyZWF0ZURyYXdQb2x5Z29uQ29udHJvbCgpO1xyXG4gICAgdGhpcy5jcmVhdGVNb2RpZnlDb250cm9sKCk7XHJcbiAgICB0aGlzLnRvZ2dsZURyYXdDb250cm9sKCk7XHJcbiAgICB0aGlzLnVwZGF0ZVRvb2x0aXBzT2ZPbFNvdXJjZSh0aGlzLnN0b3JlLnNvdXJjZS5vbCk7XHJcbiAgICB0aGlzLmNoZWNrRGlzdGFuY2VBcmVhVG9nZ2xlKCk7XHJcbiAgICB0aGlzLnNldEFjdGl2ZU1lYXN1cmVUeXBlKE1lYXN1cmVUeXBlLkxlbmd0aCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDbGVhciB0aGUgb3ZlcmxheSBsYXllciBhbmQgYW55IGludGVyYWN0aW9uIGFkZGVkIGJ5IHRoaXMgY29tcG9uZW50LlxyXG4gICAqIEBpbnRlcm5hbFxyXG4gICAqL1xyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy5zZXRBY3RpdmVNZWFzdXJlVHlwZSh1bmRlZmluZWQpO1xyXG4gICAgdGhpcy5kZWFjdGl2YXRlTW9kaWZ5Q29udHJvbCgpO1xyXG4gICAgdGhpcy5mcmVlemVTdG9yZSgpO1xyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zJCQubWFwKHMgPT4gcy51bnN1YnNjcmliZSgpKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldCB0aGUgbWVhc3VyZSB0eXBlXHJcbiAgICogQGludGVybmFsXHJcbiAgICovXHJcbiAgb25NZWFzdXJlVHlwZUNoYW5nZShtZWFzdXJlVHlwZTogTWVhc3VyZVR5cGUpIHtcclxuICAgIHRoaXMuYWN0aXZlTWVhc3VyZVR5cGUgPSBtZWFzdXJlVHlwZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEFjdGl2YXRlIG9yIGRlYWN0aXZhdGUgdGhlIGN1cnJlbnQgZHJhdyBjb250cm9sXHJcbiAgICogQGludGVybmFsXHJcbiAgICovXHJcbiAgb25Ub2dnbGVEcmF3Q29udHJvbCh0b2dnbGU6IGJvb2xlYW4pIHtcclxuICAgIGlmICh0b2dnbGUgPT09IHRydWUpIHtcclxuICAgICAgdGhpcy50b2dnbGVEcmF3Q29udHJvbCgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5kZWFjdGl2YXRlRHJhd0NvbnRyb2woKTtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICAvKipcclxuICAgKiBBY3RpdmF0ZSBvciBkZWFjdGl2YXRlIHRoZSBjdXJyZW50IGRyYXcgY29udHJvbFxyXG4gICAqIEBpbnRlcm5hbFxyXG4gICAqL1xyXG4gICBvblRvZ2dsZU1lYXN1cmVVbml0c0F1dG8odG9nZ2xlOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLm1lYXN1cmVVbml0c0F1dG8gPSB0b2dnbGU7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBY3RpdmF0ZSBvciBkZWFjdGl2YXRlIHRoZSBjdXJyZW50IGRpc3BsYXkgb2YgZGlzdGFuY2VzIG9mIHRoZSBhcmVhc1xyXG4gICAqIEBpbnRlcm5hbFxyXG4gICAqL1xyXG4gIG9uVG9nZ2xlRGlzcGxheURpc3RhbmNlKHRvZ2dsZTogYm9vbGVhbikge1xyXG4gICAgdGhpcy5kaXNwbGF5RGlzdGFuY2UgPSB0b2dnbGU7XHJcbiAgICB0aGlzLm9uRGlzcGxheURpc3RhbmNlKCk7XHJcbiAgICB0b2dnbGUgPyAodGhpcy5zdG9yYWdlU2VydmljZS5zZXQoJ2Rpc3RhbmNlVG9nZ2xlJywgdHJ1ZSwgU3RvcmFnZVNjb3BlLlNFU1NJT04pKSA6XHJcbiAgICAgKHRoaXMuc3RvcmFnZVNlcnZpY2Uuc2V0KCdkaXN0YW5jZVRvZ2dsZScsIGZhbHNlLCBTdG9yYWdlU2NvcGUuU0VTU0lPTikpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQWN0aXZhdGUgb3IgZGVhY3RpdmF0ZSB0aGUgY3VycmVudCBkaXNwbGF5IG9mIGRpc3RhbmNlcyBvZiB0aGUgbGluZXNcclxuICAgKiBAaW50ZXJuYWxcclxuICAgKi9cclxuICBvblRvZ2dsZURpc3BsYXlMaW5lcyh0b2dnbGU6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuZGlzcGxheUxpbmVzID0gdG9nZ2xlO1xyXG4gICAgdGhpcy5vbkRpc3BsYXlMaW5lcygpO1xyXG4gICAgdG9nZ2xlID8gKHRoaXMuc3RvcmFnZVNlcnZpY2Uuc2V0KCdsaW5lc1RvZ2dsZScsIHRydWUsIFN0b3JhZ2VTY29wZS5TRVNTSU9OKSkgOlxyXG4gICAgICh0aGlzLnN0b3JhZ2VTZXJ2aWNlLnNldCgnbGluZXNUb2dnbGUnLCBmYWxzZSwgU3RvcmFnZVNjb3BlLlNFU1NJT04pKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEFjdGl2YXRlIG9yIGRlYWN0aXZhdGUgdGhlIGN1cnJlbnQgZGlzcGxheSBvZiBhcmVhc1xyXG4gICAqIEBpbnRlcm5hbFxyXG4gICAqL1xyXG4gIG9uVG9nZ2xlRGlzcGxheUFyZWFzKHRvZ2dsZTogYm9vbGVhbikge1xyXG4gICAgdGhpcy5kaXNwbGF5QXJlYXMgPSB0b2dnbGU7XHJcbiAgICB0aGlzLm9uRGlzcGxheUFyZWFzKCk7XHJcbiAgICB0b2dnbGUgPyAodGhpcy5zdG9yYWdlU2VydmljZS5zZXQoJ2FyZWFzVG9nZ2xlJywgdHJ1ZSwgU3RvcmFnZVNjb3BlLlNFU1NJT04pKSA6XHJcbiAgICAgKHRoaXMuc3RvcmFnZVNlcnZpY2Uuc2V0KCdhcmVhc1RvZ2dsZScsIGZhbHNlLCBTdG9yYWdlU2NvcGUuU0VTU0lPTikpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2V0IGRpc3BsYXkgcGFyYW1ldHJlcyBpbiBjdXJyZW50IHZhbHVlc1xyXG4gICAqIEBpbnRlcm5hbFxyXG4gICAqL1xyXG4gIGNoZWNrRGlzdGFuY2VBcmVhVG9nZ2xlKCl7XHJcbiAgICBpZiAodGhpcy5zdG9yYWdlU2VydmljZS5nZXQoJ2Rpc3RhbmNlVG9nZ2xlJykgPT09IGZhbHNlKXtcclxuICAgICAgdGhpcy5kaXNwbGF5RGlzdGFuY2UgPSBmYWxzZTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldCgnbGluZXNUb2dnbGUnKSA9PT0gZmFsc2Upe1xyXG4gICAgICB0aGlzLmRpc3BsYXlMaW5lcyA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0KCdhcmVhc1RvZ2dsZScpID09PSBmYWxzZSl7XHJcbiAgICAgIHRoaXMuZGlzcGxheUFyZWFzID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBY3RpdmF0ZSBvciBkZWFjdGl2YXRlIHRoZSBjdXJyZW50IGRpc3BsYXkgb2YgZGlzdGFuY2VzIG9mIGFyZWFzXHJcbiAgICogQGludGVybmFsXHJcbiAgICovXHJcbiAgb25EaXNwbGF5RGlzdGFuY2UoKSB7XHJcbiAgICBpZiAodGhpcy5kaXNwbGF5RGlzdGFuY2UpIHtcclxuICAgICAgQXJyYXkuZnJvbShkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdpZ28tbWFwLXRvb2x0aXAtbWVhc3VyZS1wb2x5Z29uZS1zZWdtZW50cycpKS5tYXAoKHZhbHVlOiBFbGVtZW50KSA9PlxyXG4gICAgICAgIHZhbHVlLmNsYXNzTGlzdC5yZW1vdmUoJ2lnby1tYXAtdG9vbHRpcC1oaWRkZW4nKSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBBcnJheS5mcm9tKGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2lnby1tYXAtdG9vbHRpcC1tZWFzdXJlLXBvbHlnb25lLXNlZ21lbnRzJykpLm1hcCgodmFsdWU6IEVsZW1lbnQpID0+XHJcbiAgICAgICAgdmFsdWUuY2xhc3NMaXN0LmFkZCgnaWdvLW1hcC10b29sdGlwLWhpZGRlbicpKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEFjdGl2YXRlIG9yIGRlYWN0aXZhdGUgdGhlIGN1cnJlbnQgZGlzcGxheSBvZiBkaXN0YW5jZXMgb2YgbGluZXNcclxuICAgKiBAaW50ZXJuYWxcclxuICAgKi9cclxuICBvbkRpc3BsYXlMaW5lcygpIHtcclxuICAgIGlmICh0aGlzLmRpc3BsYXlMaW5lcykge1xyXG4gICAgICBBcnJheS5mcm9tKGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2lnby1tYXAtdG9vbHRpcC1tZWFzdXJlLWxpbmUtc2VnbWVudHMnKSkubWFwKCh2YWx1ZTogRWxlbWVudCkgPT5cclxuICAgICAgICB2YWx1ZS5jbGFzc0xpc3QucmVtb3ZlKCdpZ28tbWFwLXRvb2x0aXAtaGlkZGVuJykpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgQXJyYXkuZnJvbShkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdpZ28tbWFwLXRvb2x0aXAtbWVhc3VyZS1saW5lLXNlZ21lbnRzJykpLm1hcCgodmFsdWU6IEVsZW1lbnQpID0+XHJcbiAgICAgICAgdmFsdWUuY2xhc3NMaXN0LmFkZCgnaWdvLW1hcC10b29sdGlwLWhpZGRlbicpKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEFjdGl2YXRlIG9yIGRlYWN0aXZhdGUgdGhlIGN1cnJlbnQgZGlzcGxheSBvZiBhcmVhc1xyXG4gICAqIEBpbnRlcm5hbFxyXG4gICAqL1xyXG4gIG9uRGlzcGxheUFyZWFzKCkge1xyXG4gICAgaWYgKHRoaXMuZGlzcGxheUFyZWFzKSB7XHJcbiAgICAgIEFycmF5LmZyb20oZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnaWdvLW1hcC10b29sdGlwLW1lYXN1cmUtYXJlYScpKS5tYXAoKHZhbHVlOiBFbGVtZW50KSA9PlxyXG4gICAgICAgIHZhbHVlLmNsYXNzTGlzdC5yZW1vdmUoJ2lnby1tYXAtdG9vbHRpcC1oaWRkZW4nKSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBBcnJheS5mcm9tKGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2lnby1tYXAtdG9vbHRpcC1tZWFzdXJlLWFyZWEnKSkubWFwKCh2YWx1ZTogRWxlbWVudCkgPT5cclxuICAgICAgICB2YWx1ZS5jbGFzc0xpc3QuYWRkKCdpZ28tbWFwLXRvb2x0aXAtaGlkZGVuJykpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2V0IHRoZSBtZWFzdXJlIHR5cGVcclxuICAgKiBAaW50ZXJuYWxcclxuICAgKi9cclxuICBvbkxlbmd0aFVuaXRDaGFuZ2UodW5pdDogTWVhc3VyZUxlbmd0aFVuaXQpIHtcclxuICAgIHRoaXMuYWN0aXZlTGVuZ3RoVW5pdCA9IHVuaXQ7XHJcbiAgICB0aGlzLnRhYmxlLnJlZnJlc2goKTtcclxuICAgIHRoaXMudXBkYXRlVG9vbHRpcHNPZk9sU291cmNlKHRoaXMuc3RvcmUuc291cmNlLm9sKTtcclxuICAgIGlmICh0aGlzLmFjdGl2ZU9sR2VvbWV0cnkgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICB0aGlzLnVwZGF0ZVRvb2x0aXBzT2ZPbEdlb21ldHJ5KHRoaXMuYWN0aXZlT2xHZW9tZXRyeSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZXQgdGhlIG1lYXN1cmUgdHlwZVxyXG4gICAqIEBpbnRlcm5hbFxyXG4gICAqL1xyXG4gIG9uQXJlYVVuaXRDaGFuZ2UodW5pdDogTWVhc3VyZUFyZWFVbml0KSB7XHJcbiAgICB0aGlzLmFjdGl2ZUFyZWFVbml0ID0gdW5pdDtcclxuICAgIHRoaXMudGFibGUucmVmcmVzaCgpO1xyXG4gICAgdGhpcy51cGRhdGVUb29sdGlwc09mT2xTb3VyY2UodGhpcy5zdG9yZS5zb3VyY2Uub2wpO1xyXG4gICAgaWYgKHRoaXMuYWN0aXZlT2xHZW9tZXRyeSAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHRoaXMudXBkYXRlVG9vbHRpcHNPZk9sR2VvbWV0cnkodGhpcy5hY3RpdmVPbEdlb21ldHJ5KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uQ2FsY3VsYXRlQ2xpY2soKSB7XHJcbiAgICBjb25zdCBmZWF0dXJlcyA9IHRoaXMuc2VsZWN0ZWRGZWF0dXJlcyQudmFsdWU7XHJcbiAgICBjb25zdCBhcmVhID0gZmVhdHVyZXMucmVkdWNlKChzdW06IG51bWJlciwgbG9jYWxGZWF0dXJlOiBGZWF0dXJlV2l0aE1lYXN1cmUpID0+IHtcclxuICAgICAgcmV0dXJuIHN1bSArIGxvY2FsRmVhdHVyZS5wcm9wZXJ0aWVzLm1lYXN1cmUuYXJlYSB8fCAwO1xyXG4gICAgfSwgMCk7XHJcbiAgICBjb25zdCBsZW5ndGggPSBmZWF0dXJlcy5yZWR1Y2UoKHN1bTogbnVtYmVyLCBsb2NhbEZlYXR1cmU6IEZlYXR1cmVXaXRoTWVhc3VyZSkgPT4ge1xyXG4gICAgICBpZiAobG9jYWxGZWF0dXJlLmdlb21ldHJ5LnR5cGUgPT09ICdQb2x5Z29uJykge1xyXG4gICAgICAgIHJldHVybiBzdW07XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHN1bSArIGxvY2FsRmVhdHVyZS5wcm9wZXJ0aWVzLm1lYXN1cmUubGVuZ3RoIHx8IDA7XHJcbiAgICB9LCAwKTtcclxuICAgIGNvbnN0IHBlcmltZXRlciA9IGZlYXR1cmVzLnJlZHVjZSgoc3VtOiBudW1iZXIsIGxvY2FsRmVhdHVyZTogRmVhdHVyZVdpdGhNZWFzdXJlKSA9PiB7XHJcbiAgICAgIGlmIChsb2NhbEZlYXR1cmUuZ2VvbWV0cnkudHlwZSA9PT0gJ0xpbmVTdHJpbmcnKSB7XHJcbiAgICAgICAgcmV0dXJuIHN1bTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gc3VtICsgbG9jYWxGZWF0dXJlLnByb3BlcnRpZXMubWVhc3VyZS5sZW5ndGggfHwgMDtcclxuICAgIH0sIDApO1xyXG5cclxuICAgIHRoaXMub3BlbkRpYWxvZyh7XHJcbiAgICAgIGFyZWEsXHJcbiAgICAgIGxlbmd0aCxcclxuICAgICAgcGVyaW1ldGVyXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG9uRGVsZXRlQ2xpY2soKSB7XHJcbiAgICB0aGlzLnN0b3JlLmRlbGV0ZU1hbnkodGhpcy5zZWxlY3RlZEZlYXR1cmVzJC52YWx1ZSk7XHJcbiAgICB0aGlzLnNlbGVjdGVkRmVhdHVyZXMkLnZhbHVlLmZvckVhY2goc2VsZWN0ZWRGZWF0dXJlID0+IHtcclxuICAgICAgdGhpcy5vbERyYXdTb3VyY2UuZ2V0RmVhdHVyZXMoKS5mb3JFYWNoKGRyYXdpbmdMYXllckZlYXR1cmUgPT4ge1xyXG4gICAgICAgIGNvbnN0IGdlb21ldHJ5ID0gZHJhd2luZ0xheWVyRmVhdHVyZS5nZXRHZW9tZXRyeSgpIGFzIGFueTtcclxuICAgICAgICBpZiAoc2VsZWN0ZWRGZWF0dXJlLnByb3BlcnRpZXMuaWQgPT09IGdlb21ldHJ5Lm9sX3VpZCkge1xyXG4gICAgICAgICAgdGhpcy5vbERyYXdTb3VyY2UucmVtb3ZlRmVhdHVyZShkcmF3aW5nTGF5ZXJGZWF0dXJlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBvbk1vZGlmeUNsaWNrKCkge1xyXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRGZWF0dXJlcyQudmFsdWUubGVuZ3RoICE9PSAxKSB7IHJldHVybjsgfVxyXG5cclxuICAgIGlmICh0aGlzLm1vZGlmeUNvbnRyb2wuYWN0aXZlID09PSB0cnVlKSB7XHJcbiAgICAgIHRoaXMuZGVhY3RpdmF0ZU1vZGlmeUNvbnRyb2woKTtcclxuICAgICAgdGhpcy50b2dnbGVEcmF3Q29udHJvbCgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc3QgbG9jYWxGZWF0dXJlID0gdGhpcy5zZWxlY3RlZEZlYXR1cmVzJC52YWx1ZVswXTtcclxuICAgICAgY29uc3Qgb2xGZWF0dXJlcyA9IHRoaXMuc3RvcmUubGF5ZXIub2wuZ2V0U291cmNlKCkuZ2V0RmVhdHVyZXMoKTtcclxuICAgICAgY29uc3Qgb2xGZWF0dXJlID0gb2xGZWF0dXJlcy5maW5kKChfb2xGZWF0dXJlOiBPbEZlYXR1cmU8T2xHZW9tZXRyeT4pID0+IHtcclxuICAgICAgICByZXR1cm4gX29sRmVhdHVyZS5nZXQoJ2lkJykgPT09IGxvY2FsRmVhdHVyZS5wcm9wZXJ0aWVzLmlkO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIGlmIChvbEZlYXR1cmUgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIHRoaXMuZGVhY3RpdmF0ZURyYXdDb250cm9sKCk7XHJcbiAgICAgICAgdGhpcy5hY3RpdmF0ZU1vZGlmeUNvbnRyb2woKTtcclxuXHJcbiAgICAgICAgY29uc3Qgb2xHZW9tZXRyeSA9IG9sRmVhdHVyZS5nZXRHZW9tZXRyeSgpO1xyXG4gICAgICAgIHRoaXMuY2xlYXJUb29sdGlwc09mT2xHZW9tZXRyeShvbEdlb21ldHJ5IGFzIChPbExpbmVTdHJpbmcgfCBPbFBvbHlnb24pKTtcclxuICAgICAgICB0aGlzLm1vZGlmeUNvbnRyb2wuc2V0T2xHZW9tZXRyeShvbEdlb21ldHJ5KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBvcGVuRGlhbG9nKGRhdGE6IE1lYXN1cmVyRGlhbG9nRGF0YSk6IHZvaWQge1xyXG4gICAgdGhpcy5kaWFsb2cub3BlbihNZWFzdXJlckRpYWxvZ0NvbXBvbmVudCwge2RhdGF9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEluaXRpYWxpemUgdGhlIG1lYXN1cmUgc3RvcmUgYW5kIHNldCB1cCBzb21lIGxpc3RlbmVyc1xyXG4gICAqIEBpbnRlcm5hbFxyXG4gICAqL1xyXG4gIHByaXZhdGUgaW5pdFN0b3JlKCkge1xyXG4gICAgY29uc3Qgc3RvcmUgPSB0aGlzLnN0b3JlO1xyXG5cclxuICAgIGNvbnN0IGxheWVyID0gbmV3IFZlY3RvckxheWVyKHtcclxuICAgICAgdGl0bGU6IHRoaXMubGFuZ3VhZ2VTZXJ2aWNlLnRyYW5zbGF0ZS5pbnN0YW50KCdpZ28uZ2VvLm1lYXN1cmUubGF5ZXJUaXRsZScpLFxyXG4gICAgICBpc0lnb0ludGVybmFsTGF5ZXI6IHRydWUsXHJcbiAgICAgIGlkOiBgaWdvLW1lYXN1cmVzLSR7dXVpZCgpfWAsXHJcbiAgICAgIHpJbmRleDogMjAwLFxyXG4gICAgICBzb3VyY2U6IG5ldyBGZWF0dXJlRGF0YVNvdXJjZSgpLFxyXG4gICAgICBzdHlsZTogY3JlYXRlTWVhc3VyZUxheWVyU3R5bGUoKSxcclxuICAgICAgc2hvd0luTGF5ZXJMaXN0OiB0cnVlLFxyXG4gICAgICBleHBvcnRhYmxlOiB0cnVlLFxyXG4gICAgICBicm93c2FibGU6IGZhbHNlLFxyXG4gICAgICB3b3Jrc3BhY2U6IHsgZW5hYmxlZDogZmFsc2UgfVxyXG4gICAgfSk7XHJcbiAgICB0cnlCaW5kU3RvcmVMYXllcihzdG9yZSwgbGF5ZXIpO1xyXG4gICAgc3RvcmUubGF5ZXIudmlzaWJsZSA9IHRydWU7XHJcbiAgICBsYXllci52aXNpYmxlJC5zdWJzY3JpYmUodmlzaWJsZSA9PiB7XHJcbiAgICAgIGlmICh2aXNpYmxlKSB7XHJcbiAgICAgICAgQXJyYXkuZnJvbShkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdpZ28tbWFwLXRvb2x0aXAtbWVhc3VyZScpKS5tYXAoKHZhbHVlOiBFbGVtZW50KSA9PlxyXG4gICAgICAgIHZhbHVlLmNsYXNzTGlzdC5yZW1vdmUoJ2lnby1tYXAtdG9vbHRpcC1tZWFzdXJlLWJ5LWRpc3BsYXknKSk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgQXJyYXkuZnJvbShkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdpZ28tbWFwLXRvb2x0aXAtbWVhc3VyZScpKS5tYXAoKHZhbHVlOiBFbGVtZW50KSA9PlxyXG4gICAgICAgIHZhbHVlLmNsYXNzTGlzdC5hZGQoJ2lnby1tYXAtdG9vbHRpcC1tZWFzdXJlLWJ5LWRpc3BsYXknKSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRyeUFkZExvYWRpbmdTdHJhdGVneShzdG9yZSk7XHJcblxyXG4gICAgdHJ5QWRkU2VsZWN0aW9uU3RyYXRlZ3koc3RvcmUsIG5ldyBGZWF0dXJlU3RvcmVTZWxlY3Rpb25TdHJhdGVneSh7XHJcbiAgICAgIG1hcDogdGhpcy5tYXAsXHJcbiAgICAgIG1hbnk6IHRydWVcclxuICAgIH0pKTtcclxuXHJcbiAgICB0aGlzLm9uRmVhdHVyZUFkZGVkS2V5ID0gc3RvcmUuc291cmNlLm9sLm9uKCdhZGRmZWF0dXJlJywgKGV2ZW50OiBPbFZlY3RvclNvdXJjZUV2ZW50PE9sR2VvbWV0cnk+KSA9PiB7XHJcbiAgICAgIGNvbnN0IGxvY2FsRmVhdHVyZSA9IGV2ZW50LmZlYXR1cmU7XHJcbiAgICAgIGNvbnN0IG9sR2VvbWV0cnkgPSBsb2NhbEZlYXR1cmUuZ2V0R2VvbWV0cnkoKSBhcyBhbnk7XHJcbiAgICAgIHRoaXMudXBkYXRlTWVhc3VyZU9mT2xHZW9tZXRyeShvbEdlb21ldHJ5LCBsb2NhbEZlYXR1cmUuZ2V0KCdtZWFzdXJlJykpO1xyXG4gICAgICB0aGlzLm9uRGlzcGxheURpc3RhbmNlKCk7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLm9uRmVhdHVyZVJlbW92ZWRLZXkgPSBzdG9yZS5zb3VyY2Uub2wub24oJ3JlbW92ZWZlYXR1cmUnLCAoZXZlbnQ6IE9sVmVjdG9yU291cmNlRXZlbnQ8T2xHZW9tZXRyeT4pID0+IHtcclxuICAgICAgY29uc3Qgb2xHZW9tZXRyeSA9IGV2ZW50LmZlYXR1cmUuZ2V0R2VvbWV0cnkoKSBhcyBhbnk7XHJcbiAgICAgIHRoaXMuY2xlYXJUb29sdGlwc09mT2xHZW9tZXRyeShvbEdlb21ldHJ5KTtcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuc2VsZWN0ZWRGZWF0dXJlcyQkID0gc3RvcmUuc3RhdGVWaWV3Lm1hbnlCeSQoKHJlY29yZDogRW50aXR5UmVjb3JkPEZlYXR1cmVXaXRoTWVhc3VyZT4pID0+IHtcclxuICAgICAgcmV0dXJuIHJlY29yZC5zdGF0ZS5zZWxlY3RlZCA9PT0gdHJ1ZTtcclxuICAgIH0pLnBpcGUoXHJcbiAgICAgIHNraXAoMSkgLy8gU2tpcCBpbml0aWFsIGVtaXNzaW9uXHJcbiAgICApXHJcbiAgICAuc3Vic2NyaWJlKChyZWNvcmRzOiBFbnRpdHlSZWNvcmQ8RmVhdHVyZVdpdGhNZWFzdXJlPltdKSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLm1vZGlmeUNvbnRyb2wuYWN0aXZlID09PSB0cnVlKSB7XHJcbiAgICAgICAgdGhpcy5kZWFjdGl2YXRlTW9kaWZ5Q29udHJvbCgpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRGZWF0dXJlcyQubmV4dChyZWNvcmRzLm1hcChyZWNvcmQgPT4gcmVjb3JkLmVudGl0eSkpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zJCQucHVzaCh0aGlzLnN0b3JlLmVudGl0aWVzJC5zdWJzY3JpYmUob2JqZWN0c0V4aXN0cyA9PiB7XHJcbiAgICAgIGlmIChvYmplY3RzRXhpc3RzLmZpbmQob2JqZWN0RXhpc3QgPT4gb2JqZWN0RXhpc3QuZ2VvbWV0cnkudHlwZSA9PT0gJ1BvbHlnb24nKSl7XHJcbiAgICAgICAgdGhpcy5oYXNBcmVhJC5uZXh0KHRydWUpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuaGFzQXJlYSQubmV4dChmYWxzZSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChvYmplY3RzRXhpc3RzLmZpbmQob2JqZWN0RXhpc3QgPT4gb2JqZWN0RXhpc3QuZ2VvbWV0cnkudHlwZSA9PT0gJ0xpbmVTdHJpbmcnKSl7XHJcbiAgICAgICAgdGhpcy5oYXNMaW5lJC5uZXh0KHRydWUpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuaGFzTGluZSQubmV4dChmYWxzZSk7XHJcbiAgICAgIH1cclxuICAgIH0pKTtcclxuXHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMkJC5wdXNoKHRoaXMuc3RvcmUuY291bnQkLnN1YnNjcmliZShjbnQgPT4ge1xyXG4gICAgICBjbnQgPj0gMSA/XHJcbiAgICAgICAgdGhpcy5zdG9yZS5sYXllci5vcHRpb25zLnNob3dJbkxheWVyTGlzdCA9IHRydWUgOlxyXG4gICAgICAgIHRoaXMuc3RvcmUubGF5ZXIub3B0aW9ucy5zaG93SW5MYXllckxpc3QgPSBmYWxzZTtcclxuICAgIH0pKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZyZWV6ZSBhbnkgc3RvcmUsIG1lYW5pbmcgdGhlIGxheWVyIGlzIHJlbW92ZWQsIHN0cmF0ZWdpZXMgYXJlIGRlYWN0aXZhdGVkXHJcbiAgICogYW5kIHNvbWUgbGlzdGVuZXIgcmVtb3ZlZFxyXG4gICAqIEBpbnRlcm5hbFxyXG4gICAqL1xyXG4gIHByaXZhdGUgZnJlZXplU3RvcmUoKSB7XHJcbiAgICBjb25zdCBzdG9yZSA9IHRoaXMuc3RvcmU7XHJcbiAgICB0aGlzLnNlbGVjdGVkRmVhdHVyZXMkJC51bnN1YnNjcmliZSgpO1xyXG4gICAgdW5CeUtleSh0aGlzLm9uRmVhdHVyZUFkZGVkS2V5KTtcclxuICAgIHVuQnlLZXkodGhpcy5vbkZlYXR1cmVSZW1vdmVkS2V5KTtcclxuICAgIHN0b3JlLmRlYWN0aXZhdGVTdHJhdGVneU9mVHlwZShGZWF0dXJlU3RvcmVMb2FkaW5nU3RyYXRlZ3kpO1xyXG4gICAgc3RvcmUuZGVhY3RpdmF0ZVN0cmF0ZWd5T2ZUeXBlKEZlYXR1cmVTdG9yZVNlbGVjdGlvblN0cmF0ZWd5KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENyZWF0ZSBhIGRyYXcgbGluZSBjb250cm9sXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBjcmVhdGVEcmF3TGluZUNvbnRyb2woKSB7XHJcbiAgICB0aGlzLmRyYXdMaW5lQ29udHJvbCA9IG5ldyBEcmF3Q29udHJvbCh7XHJcbiAgICAgIGdlb21ldHJ5VHlwZTogJ0xpbmVTdHJpbmcnLFxyXG4gICAgICBkcmF3aW5nTGF5ZXJTb3VyY2U6IHRoaXMub2xEcmF3U291cmNlLFxyXG4gICAgICBpbnRlcmFjdGlvblN0eWxlOiBjcmVhdGVNZWFzdXJlSW50ZXJhY3Rpb25TdHlsZSgpLFxyXG4gICAgICBkcmF3aW5nTGF5ZXJTdHlsZTogbmV3IE9sU3R5bGUoe30pXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENyZWF0ZSBhIGRyYXcgcG9seWdvbiBjb250cm9sXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBjcmVhdGVEcmF3UG9seWdvbkNvbnRyb2woKSB7XHJcbiAgICB0aGlzLmRyYXdQb2x5Z29uQ29udHJvbCA9IG5ldyBEcmF3Q29udHJvbCh7XHJcbiAgICAgIGdlb21ldHJ5VHlwZTogJ1BvbHlnb24nLFxyXG4gICAgICBkcmF3aW5nTGF5ZXJTb3VyY2U6IHRoaXMub2xEcmF3U291cmNlLFxyXG4gICAgICBpbnRlcmFjdGlvblN0eWxlOiBjcmVhdGVNZWFzdXJlSW50ZXJhY3Rpb25TdHlsZSgpLFxyXG4gICAgICBkcmF3aW5nTGF5ZXJTdHlsZTogbmV3IE9sU3R5bGUoe30pXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENyZWF0ZSBhIGRyYXcgcG9seWdvbiBjb250cm9sXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBjcmVhdGVNb2RpZnlDb250cm9sKCkge1xyXG4gICAgdGhpcy5tb2RpZnlDb250cm9sID0gbmV3IE1vZGlmeUNvbnRyb2woe1xyXG4gICAgICBzb3VyY2U6IHRoaXMub2xEcmF3U291cmNlLFxyXG4gICAgICBkcmF3U3R5bGU6IGNyZWF0ZU1lYXN1cmVJbnRlcmFjdGlvblN0eWxlKCksXHJcbiAgICAgIGxheWVyU3R5bGU6IG5ldyBPbFN0eWxlKHt9KVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBY3RpdmF0ZSB0aGUgcmlnaHQgY29udHJvbFxyXG4gICAqL1xyXG4gIHByaXZhdGUgdG9nZ2xlRHJhd0NvbnRyb2woKSB7XHJcbiAgICB0aGlzLmRlYWN0aXZhdGVEcmF3Q29udHJvbCgpO1xyXG4gICAgLy8gdGhpcy5kZWFjdGl2YXRlTW9kaWZ5Q29udHJvbCgpO1xyXG4gICAgaWYgKHRoaXMuYWN0aXZlTWVhc3VyZVR5cGUgPT09IE1lYXN1cmVUeXBlLkxlbmd0aCkge1xyXG4gICAgICB0aGlzLmFjdGl2YXRlRHJhd0NvbnRyb2wodGhpcy5kcmF3TGluZUNvbnRyb2wpO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLmFjdGl2ZU1lYXN1cmVUeXBlID09PSBNZWFzdXJlVHlwZS5BcmVhKSB7XHJcbiAgICAgIHRoaXMuYWN0aXZhdGVEcmF3Q29udHJvbCh0aGlzLmRyYXdQb2x5Z29uQ29udHJvbCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBY3RpdmF0ZSBhIGdpdmVuIGNvbnRyb2xcclxuICAgKiBAcGFyYW0gZHJhd0NvbnRyb2wgRHJhdyBjb250cm9sXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBhY3RpdmF0ZURyYXdDb250cm9sKGRyYXdDb250cm9sOiBEcmF3Q29udHJvbCkge1xyXG4gICAgdGhpcy5kcmF3Q29udHJvbElzRGlzYWJsZWQgPSBmYWxzZTtcclxuICAgIHRoaXMuYWN0aXZlRHJhd0NvbnRyb2wgPSBkcmF3Q29udHJvbDtcclxuICAgIHRoaXMuZHJhd1N0YXJ0JCQgPSBkcmF3Q29udHJvbC5zdGFydCRcclxuICAgICAgLnN1YnNjcmliZSgob2xHZW9tZXRyeTogT2xMaW5lU3RyaW5nIHwgT2xQb2x5Z29uKSA9PiB0aGlzLm9uRHJhd1N0YXJ0KG9sR2VvbWV0cnkpKTtcclxuICAgIHRoaXMuZHJhd0VuZCQkID0gZHJhd0NvbnRyb2wuZW5kJFxyXG4gICAgICAuc3Vic2NyaWJlKChvbEdlb21ldHJ5OiBPbExpbmVTdHJpbmcgfCBPbFBvbHlnb24pID0+IHRoaXMub25EcmF3RW5kKG9sR2VvbWV0cnkpKTtcclxuICAgIHRoaXMuZHJhd0NoYW5nZXMkJCA9IGRyYXdDb250cm9sLmNoYW5nZXMkXHJcbiAgICAgIC5zdWJzY3JpYmUoKG9sR2VvbWV0cnk6IE9sTGluZVN0cmluZyB8IE9sUG9seWdvbikgPT4gdGhpcy5vbkRyYXdDaGFuZ2VzKG9sR2VvbWV0cnkpKTtcclxuICAgIHRoaXMuZHJhd0NoYW5nZXMkJCA9IGRyYXdDb250cm9sLmFib3J0JFxyXG4gICAgICAuc3Vic2NyaWJlKChvbEdlb21ldHJ5OiBPbExpbmVTdHJpbmcgfCBPbFBvbHlnb24pID0+IHtcclxuICAgICAgICB0aGlzLmNsZWFyVG9vbHRpcHNPZk9sR2VvbWV0cnkob2xHZW9tZXRyeSk7XHJcbiAgICAgICAgdGhpcy5jbGVhck1lYXN1cmVzKCk7XHJcbiAgICAgIH0pO1xyXG4gICAgZHJhd0NvbnRyb2wuc2V0T2xNYXAodGhpcy5tYXAub2wsIGZhbHNlKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERlYWN0aXZhdGUgdGhlIGFjdGl2ZSBkcmF3IGNvbnRyb2xcclxuICAgKi9cclxuICBwcml2YXRlIGRlYWN0aXZhdGVEcmF3Q29udHJvbCgpIHtcclxuICAgIGlmICh0aGlzLmFjdGl2ZURyYXdDb250cm9sID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMub2xEcmF3U291cmNlLmNsZWFyKCk7XHJcbiAgICBpZiAodGhpcy5kcmF3U3RhcnQkJCAhPT0gdW5kZWZpbmVkICkgeyB0aGlzLmRyYXdTdGFydCQkLnVuc3Vic2NyaWJlKCk7IH1cclxuICAgIGlmICh0aGlzLmRyYXdFbmQkJCAhPT0gdW5kZWZpbmVkICkgeyB0aGlzLmRyYXdFbmQkJC51bnN1YnNjcmliZSgpOyB9XHJcbiAgICBpZiAodGhpcy5kcmF3Q2hhbmdlcyQkICE9PSB1bmRlZmluZWQgKSB7IHRoaXMuZHJhd0NoYW5nZXMkJC51bnN1YnNjcmliZSgpOyB9XHJcblxyXG4gICAgdGhpcy5jbGVhclRvb2x0aXBzT2ZPbFNvdXJjZSh0aGlzLm9sRHJhd1NvdXJjZSk7XHJcbiAgICBpZiAodGhpcy5hY3RpdmVPbEdlb21ldHJ5ICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgdGhpcy5jbGVhclRvb2x0aXBzT2ZPbEdlb21ldHJ5KHRoaXMuYWN0aXZlT2xHZW9tZXRyeSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmFjdGl2ZURyYXdDb250cm9sLnNldE9sTWFwKHVuZGVmaW5lZCk7XHJcbiAgICB0aGlzLmFjdGl2ZURyYXdDb250cm9sID0gdW5kZWZpbmVkO1xyXG4gICAgdGhpcy5hY3RpdmVPbEdlb21ldHJ5ID0gdW5kZWZpbmVkO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRBY3RpdmVNZWFzdXJlVHlwZShtZWFzdXJlVHlwZTogTWVhc3VyZVR5cGUpIHtcclxuICAgIHRoaXMuX2FjdGl2ZU1lYXN1cmVUeXBlID0gbWVhc3VyZVR5cGU7XHJcbiAgICB0aGlzLmNsZWFyTWVhc3VyZXMoKTtcclxuICAgIHRoaXMudG9nZ2xlRHJhd0NvbnRyb2woKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENsZWFyIHRoZSBkcmF3IHNvdXJjZSBhbmQgdHJhY2sgdGhlIGdlb21ldHJ5IGJlaW5nIGRyYXduXHJcbiAgICogQHBhcmFtIG9sR2VvbWV0cnkgT2wgbGluZXN0cmluZyBvciBwb2x5Z29uXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBvbkRyYXdTdGFydChvbEdlb21ldHJ5OiBPbExpbmVTdHJpbmcgfCBPbFBvbHlnb24pIHtcclxuICAgIHRoaXMuYWN0aXZlT2xHZW9tZXRyeSA9IG9sR2VvbWV0cnk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDbGVhciB0aGUgZHJhdyBzb3VyY2UgYW5kIHRyYWNrIHRoZSBnZW9tZXRyeSBiZWluZyBkcmF3XHJcbiAgICogQHBhcmFtIG9sR2VvbWV0cnkgT2wgbGluZXN0cmluZyBvciBwb2x5Z29uXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBvbkRyYXdFbmQob2xHZW9tZXRyeTogT2xMaW5lU3RyaW5nIHwgT2xQb2x5Z29uKSB7XHJcbiAgICB0aGlzLmFjdGl2ZU9sR2VvbWV0cnkgPSB1bmRlZmluZWQ7XHJcbiAgICB0aGlzLmZpbmFsaXplTWVhc3VyZU9mT2xHZW9tZXRyeShvbEdlb21ldHJ5KTtcclxuICAgIHRoaXMuYWRkRmVhdHVyZVRvU3RvcmUob2xHZW9tZXRyeSk7XHJcbiAgICB0aGlzLmNsZWFyVG9vbHRpcHNPZk9sR2VvbWV0cnkob2xHZW9tZXRyeSk7XHJcbiAgICB0aGlzLm9sRHJhd1NvdXJjZS5jbGVhcih0cnVlKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFVwZGF0ZSBtZWFzdXJlcyBvYnNlcnZhYmxlcyBhbmQgbWFwIHRvb2x0aXBzXHJcbiAgICogQHBhcmFtIG9sR2VvbWV0cnkgT2wgbGluZXN0cmluZyBvciBwb2x5Z29uXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBvbkRyYXdDaGFuZ2VzKG9sR2VvbWV0cnk6IE9sTGluZVN0cmluZyB8IE9sUG9seWdvbikge1xyXG4gICAgY29uc3QgbWVhc3VyZSA9IG1lYXN1cmVPbEdlb21ldHJ5KG9sR2VvbWV0cnksIHRoaXMucHJvamVjdGlvbik7XHJcbiAgICB0aGlzLnVwZGF0ZU1lYXN1cmVPZk9sR2VvbWV0cnkob2xHZW9tZXRyeSwgT2JqZWN0LmFzc2lnbih7fSwgbWVhc3VyZSwge1xyXG4gICAgICBhcmVhOiB1bmRlZmluZWQgLy8gV2UgZG9uJ3Qgd2FudCB0byBkaXNwbGF5IGFuIGFyZWEgdG9vbHRpcCB3aGlsZSBkcmF3aW5nLlxyXG4gICAgfSkpO1xyXG4gICAgdGhpcy5tZWFzdXJlJC5uZXh0KG1lYXN1cmUpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQWN0aXZhdGUgYSBnaXZlbiBjb250cm9sXHJcbiAgICogQHBhcmFtIG1vZGlmeUNvbnRyb2wgTW9kaWZ5IGNvbnRyb2xcclxuICAgKi9cclxuICBwcml2YXRlIGFjdGl2YXRlTW9kaWZ5Q29udHJvbCgpIHtcclxuICAgIGNvbnN0IHNlbGVjdGlvbiA9IHRoaXMuc3RvcmUuZ2V0U3RyYXRlZ3lPZlR5cGUoRmVhdHVyZVN0b3JlU2VsZWN0aW9uU3RyYXRlZ3kpIGFzIEZlYXR1cmVTdG9yZVNlbGVjdGlvblN0cmF0ZWd5O1xyXG4gICAgc2VsZWN0aW9uLmRlYWN0aXZhdGUoKTtcclxuICAgIHNlbGVjdGlvbi5jbGVhcigpO1xyXG5cclxuICAgIHRoaXMubW9kaWZ5U3RhcnQkJCA9IHRoaXMubW9kaWZ5Q29udHJvbC5zdGFydCRcclxuICAgICAgLnN1YnNjcmliZSgob2xHZW9tZXRyeTogT2xMaW5lU3RyaW5nIHwgT2xQb2x5Z29uKSA9PiB0aGlzLm9uTW9kaWZ5U3RhcnQob2xHZW9tZXRyeSkpO1xyXG4gICAgdGhpcy5tb2RpZnlFbmQkJCA9IHRoaXMubW9kaWZ5Q29udHJvbC5lbmQkXHJcbiAgICAgIC5zdWJzY3JpYmUoKG9sR2VvbWV0cnk6IE9sTGluZVN0cmluZyB8IE9sUG9seWdvbikgPT4gdGhpcy5vbk1vZGlmeUVuZChvbEdlb21ldHJ5KSk7XHJcbiAgICB0aGlzLm1vZGlmeUNoYW5nZXMkJCA9IHRoaXMubW9kaWZ5Q29udHJvbC5jaGFuZ2VzJFxyXG4gICAgICAuc3Vic2NyaWJlKChvbEdlb21ldHJ5OiBPbExpbmVTdHJpbmcgfCBPbFBvbHlnb24pID0+IHRoaXMub25Nb2RpZnlDaGFuZ2VzKG9sR2VvbWV0cnkpKTtcclxuICAgIHRoaXMubW9kaWZ5Q29udHJvbC5zZXRPbE1hcCh0aGlzLm1hcC5vbCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBEZWFjdGl2YXRlIHRoZSBhY3RpdmUgbW9kaWZ5IGNvbnRyb2xcclxuICAgKi9cclxuICBwcml2YXRlIGRlYWN0aXZhdGVNb2RpZnlDb250cm9sKCkge1xyXG4gICAgaWYgKHRoaXMubW9kaWZ5U3RhcnQkJCAhPT0gdW5kZWZpbmVkICkgeyB0aGlzLm1vZGlmeVN0YXJ0JCQudW5zdWJzY3JpYmUoKTsgfVxyXG4gICAgaWYgKHRoaXMubW9kaWZ5RW5kJCQgIT09IHVuZGVmaW5lZCApIHsgdGhpcy5tb2RpZnlFbmQkJC51bnN1YnNjcmliZSgpOyB9XHJcbiAgICBpZiAodGhpcy5tb2RpZnlDaGFuZ2VzJCQgIT09IHVuZGVmaW5lZCApIHsgdGhpcy5tb2RpZnlDaGFuZ2VzJCQudW5zdWJzY3JpYmUoKTsgfVxyXG5cclxuICAgIGlmICh0aGlzLmFjdGl2ZU9sR2VvbWV0cnkgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICBpZiAodGhpcy5zZWxlY3RlZEZlYXR1cmVzJC52YWx1ZS5sZW5ndGggPT09IDEpIHtcclxuICAgICAgICBjb25zdCBsb2NhbEZlYXR1cmUgPSB0aGlzLnNlbGVjdGVkRmVhdHVyZXMkLnZhbHVlWzBdO1xyXG4gICAgICAgIHRoaXMuYWRkRmVhdHVyZVRvU3RvcmUodGhpcy5hY3RpdmVPbEdlb21ldHJ5LCBsb2NhbEZlYXR1cmUpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuZmluYWxpemVNZWFzdXJlT2ZPbEdlb21ldHJ5KHRoaXMuYWN0aXZlT2xHZW9tZXRyeSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5vbERyYXdTb3VyY2UuY2xlYXIoKTtcclxuXHJcbiAgICB0aGlzLnN0b3JlLmFjdGl2YXRlU3RyYXRlZ3lPZlR5cGUoRmVhdHVyZVN0b3JlU2VsZWN0aW9uU3RyYXRlZ3kpO1xyXG5cclxuICAgIHRoaXMuYWN0aXZlT2xHZW9tZXRyeSA9IHVuZGVmaW5lZDtcclxuICAgIHRoaXMubW9kaWZ5Q29udHJvbC5zZXRPbE1hcCh1bmRlZmluZWQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2xlYXIgdGhlIGRyYXcgc291cmNlIGFuZCB0cmFjayB0aGUgZ2VvbWV0cnkgYmVpbmcgZHJhd25cclxuICAgKiBAcGFyYW0gb2xHZW9tZXRyeSBPbCBsaW5lc3RyaW5nIG9yIHBvbHlnb25cclxuICAgKi9cclxuICBwcml2YXRlIG9uTW9kaWZ5U3RhcnQob2xHZW9tZXRyeTogT2xMaW5lU3RyaW5nIHwgT2xQb2x5Z29uKSB7XHJcbiAgICB0aGlzLm9uRHJhd1N0YXJ0KG9sR2VvbWV0cnkpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVXBkYXRlIG1lYXN1cmVzIG9ic2VydmFibGVzIGFuZCBtYXAgdG9vbHRpcHNcclxuICAgKiBAcGFyYW0gb2xHZW9tZXRyeSBPbCBsaW5lc3RyaW5nIG9yIHBvbHlnb25cclxuICAgKi9cclxuICBwcml2YXRlIG9uTW9kaWZ5Q2hhbmdlcyhvbEdlb21ldHJ5OiBPbExpbmVTdHJpbmcgfCBPbFBvbHlnb24pIHtcclxuICAgIHRoaXMub25EcmF3Q2hhbmdlcyhvbEdlb21ldHJ5KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENsZWFyIHRoZSBkcmF3IHNvdXJjZSBhbmQgdHJhY2sgdGhlIGdlb21ldHJ5IGJlaW5nIGRyYXdcclxuICAgKiBAcGFyYW0gb2xHZW9tZXRyeSBPbCBsaW5lc3RyaW5nIG9yIHBvbHlnb25cclxuICAgKi9cclxuICBwcml2YXRlIG9uTW9kaWZ5RW5kKG9sR2VvbWV0cnk6IE9sTGluZVN0cmluZyB8IE9sUG9seWdvbikge1xyXG4gICAgdGhpcy5maW5hbGl6ZU1lYXN1cmVPZk9sR2VvbWV0cnkob2xHZW9tZXRyeSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZpbmFsaXplTWVhc3VyZU9mT2xHZW9tZXRyeShvbEdlb21ldHJ5OiBPbExpbmVTdHJpbmcgfCBPbFBvbHlnb24pIHtcclxuICAgIGNvbnN0IG1lYXN1cmUgPSBtZWFzdXJlT2xHZW9tZXRyeShvbEdlb21ldHJ5LCB0aGlzLnByb2plY3Rpb24pO1xyXG4gICAgdGhpcy51cGRhdGVNZWFzdXJlT2ZPbEdlb21ldHJ5KG9sR2VvbWV0cnksIG1lYXN1cmUpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVXBkYXRlIG1lYXN1cmVzIG9ic2VydmFibGVzXHJcbiAgICogQHBhcmFtIG9sR2VvbWV0cnkgT2wgbGluZXN0cmluZyBvciBwb2x5Z29uXHJcbiAgICogQHBhcmFtIG1lYXN1cmUgTWVhc3VyZVxyXG4gICAqL1xyXG4gIHByaXZhdGUgdXBkYXRlTWVhc3VyZU9mT2xHZW9tZXRyeShvbEdlb21ldHJ5OiBPbExpbmVTdHJpbmcgfCBPbFBvbHlnb24sIG1lYXN1cmU6IE1lYXN1cmUpIHtcclxuICAgIG9sR2VvbWV0cnkuc2V0UHJvcGVydGllcyh7X21lYXN1cmU6IG1lYXN1cmV9LCB0cnVlKTtcclxuICAgIHRoaXMudXBkYXRlVG9vbHRpcHNPZk9sR2VvbWV0cnkob2xHZW9tZXRyeSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDbGVhciB0aGUgbWVhc3VyZXMgb2JzZXJ2YWJsZXNcclxuICAgKi9cclxuICBwcml2YXRlIGNsZWFyTWVhc3VyZXMoKSB7XHJcbiAgICB0aGlzLm1lYXN1cmUkLm5leHQoe30pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQWRkIGEgZmVhdHVyZSB3aXRoIG1lYXN1cmVzIHRvIHRoZSBzdG9yZS4gVGhlIGxvYWRpbmcgc3RyYWdlZ3kgb2YgdGhlIHN0b3JlXHJcbiAgICogd2lsbCB0cmlnZ2VyIGFuZCBhZGQgdGhlIGZlYXR1cmUgdG8gdGhlIG1hcC5cclxuICAgKiBAaW50ZXJuYWxcclxuICAgKi9cclxuICBwcml2YXRlIGFkZEZlYXR1cmVUb1N0b3JlKG9sR2VvbWV0cnksIGxvY2FsRmVhdHVyZT86IEZlYXR1cmVXaXRoTWVhc3VyZSkge1xyXG4gICAgY29uc3QgZmVhdHVyZUlkID0gbG9jYWxGZWF0dXJlID8gbG9jYWxGZWF0dXJlLnByb3BlcnRpZXMuaWQgOiBvbEdlb21ldHJ5Lm9sX3VpZDtcclxuICAgIGNvbnN0IHByb2plY3Rpb24gPSB0aGlzLm1hcC5vbC5nZXRWaWV3KCkuZ2V0UHJvamVjdGlvbigpO1xyXG4gICAgY29uc3QgZ2VvbWV0cnkgPSBuZXcgT2xHZW9KU09OKCkud3JpdGVHZW9tZXRyeU9iamVjdChvbEdlb21ldHJ5LCB7XHJcbiAgICAgIGZlYXR1cmVQcm9qZWN0aW9uOiBwcm9qZWN0aW9uLFxyXG4gICAgICBkYXRhUHJvamVjdGlvbjogcHJvamVjdGlvblxyXG4gICAgfSkgYXMgYW55O1xyXG4gICAgdGhpcy5zdG9yZS51cGRhdGUoe1xyXG4gICAgICB0eXBlOiBGRUFUVVJFLFxyXG4gICAgICBnZW9tZXRyeSxcclxuICAgICAgcHJvamVjdGlvbjogcHJvamVjdGlvbi5nZXRDb2RlKCksXHJcbiAgICAgIHByb3BlcnRpZXM6IHtcclxuICAgICAgICBpZDogZmVhdHVyZUlkLFxyXG4gICAgICAgIG1lYXN1cmU6IG9sR2VvbWV0cnkuZ2V0KCdfbWVhc3VyZScpXHJcbiAgICAgIH0sXHJcbiAgICAgIG1ldGE6IHtcclxuICAgICAgICBpZDogZmVhdHVyZUlkXHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVXBkYXRlIGFsbCB0aGUgdG9vbHRpcHMgb2YgYW4gT0wgZ2VvbWV0cnlcclxuICAgKiBAcGFyYW0gb2xHZW9tZXRyeSBPTCBHZW9tZXRyeVxyXG4gICAqIEBwYXJhbSBsZW5ndGhzIExlbmd0aHMgb2YgdGhlIE9MIGdlb21ldHJ5J3Mgc2VnbWVudHNcclxuICAgKiBAcGFyYW0gbWVhc3VyZVVuaXQgRGlzcGxheSB0b29sdGlwIG1lYXN1cmUgaW4gdGhvc2UgdW5pdHNcclxuICAgKi9cclxuICBwcml2YXRlIHVwZGF0ZVRvb2x0aXBzT2ZPbEdlb21ldHJ5KG9sR2VvbWV0cnk6IE9sTGluZVN0cmluZyB8IE9sUG9seWdvbikge1xyXG4gICAgY29uc3QgbWVhc3VyZSA9IG9sR2VvbWV0cnkuZ2V0KCdfbWVhc3VyZScpO1xyXG4gICAgY29uc3QgbGVuZ3RocyA9IG1lYXN1cmUubGVuZ3RocztcclxuICAgIGNvbnN0IGFyZWEgPSBtZWFzdXJlLmFyZWE7XHJcblxyXG4gICAgY29uc3Qgb2xNaWRwb2ludHNUb29sdGlwcyA9IHVwZGF0ZU9sVG9vbHRpcHNBdE1pZHBvaW50cyhvbEdlb21ldHJ5KTtcclxuICAgIGlmIChsZW5ndGhzLmxlbmd0aCA9PT0gb2xNaWRwb2ludHNUb29sdGlwcy5sZW5ndGgpIHtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBvbE1pZHBvaW50c1Rvb2x0aXBzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgY29uc3QgbGVuZ3RoID0gbGVuZ3Roc1tpXTtcclxuICAgICAgICBpZiAobGVuZ3RoICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgIHRoaXMudXBkYXRlT2xUb29sdGlwKFxyXG4gICAgICAgICAgICBvbE1pZHBvaW50c1Rvb2x0aXBzW2ldLFxyXG4gICAgICAgICAgICBtZXRlcnNUb1VuaXQobGVuZ3RoLCB0aGlzLmFjdGl2ZUxlbmd0aFVuaXQpLFxyXG4gICAgICAgICAgICB0aGlzLmFjdGl2ZUxlbmd0aFVuaXQsXHJcbiAgICAgICAgICAgIE1lYXN1cmVUeXBlLkxlbmd0aFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAoYXJlYSAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHRoaXMudXBkYXRlT2xUb29sdGlwKFxyXG4gICAgICAgIHVwZGF0ZU9sVG9vbHRpcEF0Q2VudGVyKG9sR2VvbWV0cnkpLFxyXG4gICAgICAgIHNxdWFyZU1ldGVyc1RvVW5pdChhcmVhLCB0aGlzLmFjdGl2ZUFyZWFVbml0KSxcclxuICAgICAgICB0aGlzLmFjdGl2ZUFyZWFVbml0LFxyXG4gICAgICAgIE1lYXN1cmVUeXBlLkFyZWFcclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNob3cgdGhlIG1hcCB0b29sdGlwcyBvZiBhIGdlb2VtdHJ5XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBzaG93VG9vbHRpcHNPZk9sR2VvbWV0cnkob2xHZW9tZXRyeTogT2xMaW5lU3RyaW5nIHwgT2xQb2x5Z29uKSB7XHJcbiAgICBnZXRUb29sdGlwc09mT2xHZW9tZXRyeShvbEdlb21ldHJ5KS5mb3JFYWNoKChvbFRvb2x0aXA6IE9sT3ZlcmxheSB8IHVuZGVmaW5lZCkgPT4ge1xyXG4gICAgICBpZiAodGhpcy5zaG91bGRTaG93VG9vbHRpcChvbFRvb2x0aXApKSB7XHJcbiAgICAgICAgdGhpcy5tYXAub2wuYWRkT3ZlcmxheShvbFRvb2x0aXApO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENsZWFyIHRoZSB0b29sdGlwcyBvZiBhbiBPTCBnZW9tZXRyeXNcclxuICAgKiBAcGFyYW0gb2xHZW9tZXRyeSBPTCBnZW9tZXRyeSB3aXRoIHRvb2x0aXBzXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBjbGVhclRvb2x0aXBzT2ZPbEdlb21ldHJ5KG9sR2VvbWV0cnk6IE9sTGluZVN0cmluZyB8IE9sUG9seWdvbikge1xyXG4gICAgZ2V0VG9vbHRpcHNPZk9sR2VvbWV0cnkob2xHZW9tZXRyeSkuZm9yRWFjaCgob2xUb29sdGlwOiBPbE92ZXJsYXkgfCB1bmRlZmluZWQpID0+IHtcclxuICAgICAgaWYgKG9sVG9vbHRpcCAhPT0gdW5kZWZpbmVkICYmIG9sVG9vbHRpcC5nZXRNYXAoKSAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgdGhpcy5tYXAub2wucmVtb3ZlT3ZlcmxheShvbFRvb2x0aXApO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNob3cgdGhlIG1hcCB0b29sdGlwcyBvZiBhbGwgdGhlIGdlb21ldHJpZXMgb2YgYSBzb3VyY2VcclxuICAgKi9cclxuICBwcml2YXRlIHVwZGF0ZVRvb2x0aXBzT2ZPbFNvdXJjZShvbFNvdXJjZTogT2xWZWN0b3JTb3VyY2U8T2xHZW9tZXRyeT4pIHtcclxuICAgIG9sU291cmNlLmZvckVhY2hGZWF0dXJlKChvbEZlYXR1cmU6IE9sRmVhdHVyZTxPbEdlb21ldHJ5PikgPT4ge1xyXG4gICAgICB0aGlzLnVwZGF0ZVRvb2x0aXBzT2ZPbEdlb21ldHJ5KG9sRmVhdHVyZS5nZXRHZW9tZXRyeSgpIGFzIGFueSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNob3cgdGhlIG1hcCB0b29sdGlwcyBvZiBhbGwgdGhlIGdlb21ldHJpZXMgb2YgYSBzb3VyY2VcclxuICAgKi9cclxuICBwcml2YXRlIHNob3dUb29sdGlwc09mT2xTb3VyY2Uob2xTb3VyY2U6IE9sVmVjdG9yU291cmNlPE9sR2VvbWV0cnk+KSB7XHJcbiAgICBvbFNvdXJjZS5mb3JFYWNoRmVhdHVyZSgob2xGZWF0dXJlOiBPbEZlYXR1cmU8T2xHZW9tZXRyeT4pID0+IHtcclxuICAgICAgdGhpcy5zaG93VG9vbHRpcHNPZk9sR2VvbWV0cnkob2xGZWF0dXJlLmdldEdlb21ldHJ5KCkgYXMgYW55KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2xlYXIgdGhlIG1hcCB0b29sdGlwc1xyXG4gICAqIEBwYXJhbSBvbERyYXdTb3VyY2UgT0wgdmVjdG9yIHNvdXJjZVxyXG4gICAqL1xyXG4gIHByaXZhdGUgY2xlYXJUb29sdGlwc09mT2xTb3VyY2Uob2xTb3VyY2U6IE9sVmVjdG9yU291cmNlPE9sR2VvbWV0cnk+KSB7XHJcbiAgICBvbFNvdXJjZS5mb3JFYWNoRmVhdHVyZSgob2xGZWF0dXJlOiBPbEZlYXR1cmU8T2xHZW9tZXRyeT4pID0+IHtcclxuICAgICAgY29uc3Qgb2xHZW9tZXRyeSA9IG9sRmVhdHVyZS5nZXRHZW9tZXRyeSgpO1xyXG4gICAgICBpZiAob2xHZW9tZXRyeSAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgdGhpcy5jbGVhclRvb2x0aXBzT2ZPbEdlb21ldHJ5KG9sRmVhdHVyZS5nZXRHZW9tZXRyeSgpIGFzIGFueSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVXBkYXRlIGFuIE9MIHRvb2x0aXAgcHJvcGVydGllcyBhbmQgaW5uZXIgSFRNTCBhbmQgYWRkIGl0IHRvIHRoZSBtYXAgaWYgcG9zc2libGVcclxuICAgKiBAcGFyYW0gb2xUb29sdGlwIE9MIHRvb2x0aXBcclxuICAgKiBAcGFyYW0gbWVhc3VyZSBUaGUgbWVhc3VyZSB2YWxldSB0aSBkaXNwbGF5XHJcbiAgICogQHBhcmFtIG1lYXN1cmVVbml0IERpc3BsYXkgdG9vbHRpcCBtZWFzdXJlIGluIHRob3NlIHVuaXRzXHJcbiAgICovXHJcbiAgcHJpdmF0ZSB1cGRhdGVPbFRvb2x0aXAoXHJcbiAgICBvbFRvb2x0aXA6IE9sT3ZlcmxheSxcclxuICAgIG1lYXN1cmU6IG51bWJlcixcclxuICAgIHVuaXQ6IE1lYXN1cmVBcmVhVW5pdCB8IE1lYXN1cmVMZW5ndGhVbml0LFxyXG4gICAgdHlwZTogTWVhc3VyZVR5cGVcclxuICApIHtcclxuICAgIG9sVG9vbHRpcC5zZXRQcm9wZXJ0aWVzKHtfbWVhc3VyZTogbWVhc3VyZSwgX3VuaXQ6IHVuaXQsIF90eXBlOiB0eXBlfSwgdHJ1ZSk7XHJcbiAgICBvbFRvb2x0aXAuZ2V0RWxlbWVudCgpLmlubmVySFRNTCA9IHRoaXMuY29tcHV0ZVRvb2x0aXBJbm5lckhUTUwob2xUb29sdGlwKTtcclxuICAgIGlmICh0aGlzLnNob3VsZFNob3dUb29sdGlwKG9sVG9vbHRpcCkpIHtcclxuICAgICAgdGhpcy5tYXAub2wuYWRkT3ZlcmxheShvbFRvb2x0aXApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ29tcHV0ZSBhIHRvb2x0aXAncyBjb250ZW50XHJcbiAgICogQHBhcmFtIG9sVG9vbHRpcCBPTCBvdmVybGF5XHJcbiAgICogQHJldHVybnMgSW5uZXIgSFRNTFxyXG4gICAqL1xyXG4gIHByaXZhdGUgY29tcHV0ZVRvb2x0aXBJbm5lckhUTUwob2xUb29sdGlwOiBPbE92ZXJsYXkpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgcHJvcGVydGllcyA9IG9sVG9vbHRpcC5nZXRQcm9wZXJ0aWVzKCkgYXMgYW55O1xyXG4gICAgcmV0dXJuIGZvcm1hdE1lYXN1cmUocHJvcGVydGllcy5fbWVhc3VyZSwge1xyXG4gICAgICBkZWNpbWFsOiAxLFxyXG4gICAgICB1bml0OiBwcm9wZXJ0aWVzLl91bml0LFxyXG4gICAgICB1bml0QWJicjogdHJ1ZSxcclxuICAgICAgbG9jYWxlOiAnZnInXHJcbiAgICB9LCB0aGlzLmxhbmd1YWdlU2VydmljZSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBXaGV0aGVyIGEgdG9vbHRpcCBzaG91bGQgYmUgc2hvd25lZCBiYXNlZCBvbiB0aGUgbGVuZ3RoXHJcbiAgICogb2YgdGhlIHNlZ21lbnQgaXQgaXMgYm91bmQgdG8uXHJcbiAgICogQHBhcmFtIG9sVG9vbHRpcCBPTCBvdmVybGF5XHJcbiAgICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgdG9vbHRpcCBzaG91bGQgYmUgc2hvd25cclxuICAgKi9cclxuICBwcml2YXRlIHNob3VsZFNob3dUb29sdGlwKG9sVG9vbHRpcDogT2xPdmVybGF5KTogYm9vbGVhbiB7XHJcbiAgICBpZiAodGhpcy5zaG93VG9vbHRpcHMgPT09IGZhbHNlKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBwcm9wZXJ0aWVzID0gb2xUb29sdGlwLmdldFByb3BlcnRpZXMoKSBhcyBhbnk7XHJcbiAgICBjb25zdCBtZWFzdXJlID0gcHJvcGVydGllcy5fbWVhc3VyZTtcclxuICAgIGlmIChtZWFzdXJlID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChwcm9wZXJ0aWVzLl91bml0ID09PSBNZWFzdXJlVHlwZS5MZW5ndGgpIHtcclxuICAgICAgY29uc3QgbWluU2VnbWVudExlbmd0aCA9IG1ldGVyc1RvVW5pdCh0aGlzLm1pblNlZ21lbnRMZW5ndGgsIHByb3BlcnRpZXMuX3VuaXQpIHx8IDA7XHJcbiAgICAgIHJldHVybiBtZWFzdXJlID4gTWF0aC5tYXgobWluU2VnbWVudExlbmd0aCwgMCk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXY+XHJcbiAgPGRpdiBjbGFzcz1cIm1lYXN1cmUtdHlwZS10b2dnbGUgbWF0LXR5cG9ncmFwaHlcIj5cclxuICAgIDxtYXQtYnV0dG9uLXRvZ2dsZS1ncm91cFxyXG4gICAgICBbdmFsdWVdPVwiYWN0aXZlTWVhc3VyZVR5cGVcIlxyXG4gICAgICAoY2hhbmdlKT1cIm9uTWVhc3VyZVR5cGVDaGFuZ2UoJGV2ZW50LnZhbHVlKVwiPlxyXG4gICAgICA8bWF0LWJ1dHRvbi10b2dnbGUgW3ZhbHVlXT1cIm1lYXN1cmVUeXBlLkxlbmd0aFwiPlxyXG4gICAgICAgIHt7KCdpZ28uZ2VvLm1lYXN1cmUuJyArIG1lYXN1cmVUeXBlLkxlbmd0aCkgfCB0cmFuc2xhdGV9fVxyXG4gICAgICA8L21hdC1idXR0b24tdG9nZ2xlPlxyXG4gICAgICA8bWF0LWJ1dHRvbi10b2dnbGUgW3ZhbHVlXT1cIm1lYXN1cmVUeXBlLkFyZWFcIj5cclxuICAgICAgICB7eygnaWdvLmdlby5tZWFzdXJlLicgKyBtZWFzdXJlVHlwZS5BcmVhKSB8IHRyYW5zbGF0ZX19XHJcbiAgICAgIDwvbWF0LWJ1dHRvbi10b2dnbGU+XHJcbiAgICA8L21hdC1idXR0b24tdG9nZ2xlLWdyb3VwPlxyXG4gIDwvZGl2PlxyXG5cclxuICA8ZGl2IGNsYXNzPVwibWVhc3VyZS1vcHRpb25zIG1hdC10eXBvZ3JhcGh5XCI+XHJcbiAgICA8bWF0LXNsaWRlLXRvZ2dsZVxyXG4gICAgICBbZGlzYWJsZWRdPVwiZHJhd0NvbnRyb2xJc0Rpc2FibGVkXCJcclxuICAgICAgW2NoZWNrZWRdPVwiZHJhd0NvbnRyb2xJc0FjdGl2ZVwiXHJcbiAgICAgIFtsYWJlbFBvc2l0aW9uXT1cIidiZWZvcmUnXCJcclxuICAgICAgKGNoYW5nZSk9XCJvblRvZ2dsZURyYXdDb250cm9sKCRldmVudC5jaGVja2VkKVwiPlxyXG4gICAgICB7eydpZ28uZ2VvLm1lYXN1cmUudG9nZ2xlQWN0aXZlJyB8IHRyYW5zbGF0ZX19XHJcbiAgICA8L21hdC1zbGlkZS10b2dnbGU+XHJcblxyXG4gICAgPG1hdC1kaXZpZGVyICpuZ0lmPVwiKGhhc0xpbmUkIHwgYXN5bmMpXCI+PC9tYXQtZGl2aWRlcj5cclxuXHJcbiAgICA8bWF0LXNsaWRlLXRvZ2dsZSAqbmdJZj1cIihoYXNMaW5lJCB8IGFzeW5jKVwiXHJcbiAgICAgIFtjaGVja2VkXT1cImRpc3BsYXlMaW5lc1wiXHJcbiAgICAgIFtsYWJlbFBvc2l0aW9uXT1cIidiZWZvcmUnXCJcclxuICAgICAgKGNoYW5nZSk9XCJvblRvZ2dsZURpc3BsYXlMaW5lcygkZXZlbnQuY2hlY2tlZClcIj5cclxuICAgICAge3snaWdvLmdlby5tZWFzdXJlLnRvZ2dsZURpc3BsYXlMaW5lcycgfCB0cmFuc2xhdGV9fVxyXG4gICAgPC9tYXQtc2xpZGUtdG9nZ2xlPlxyXG5cclxuICAgIDxtYXQtZGl2aWRlciAqbmdJZj1cIihoYXNMaW5lJCB8IGFzeW5jKSB8fCAoaGFzQXJlYSQgfCBhc3luYylcIj48L21hdC1kaXZpZGVyPlxyXG5cclxuICAgIDxtYXQtc2xpZGUtdG9nZ2xlICpuZ0lmPVwiKGhhc0FyZWEkIHwgYXN5bmMpXCJcclxuICAgICAgW2NoZWNrZWRdPVwiZGlzcGxheURpc3RhbmNlXCJcclxuICAgICAgW2xhYmVsUG9zaXRpb25dPVwiJ2JlZm9yZSdcIlxyXG4gICAgICAoY2hhbmdlKT1cIm9uVG9nZ2xlRGlzcGxheURpc3RhbmNlKCRldmVudC5jaGVja2VkKVwiPlxyXG4gICAgICB7eydpZ28uZ2VvLm1lYXN1cmUudG9nZ2xlRGlzcGxheURpc3RhbmNlJyB8IHRyYW5zbGF0ZX19XHJcbiAgICA8L21hdC1zbGlkZS10b2dnbGU+XHJcblxyXG4gICAgPG1hdC1zbGlkZS10b2dnbGUgKm5nSWY9XCIoaGFzQXJlYSQgfCBhc3luYylcIlxyXG4gICAgICBbY2hlY2tlZF09XCJkaXNwbGF5QXJlYXNcIlxyXG4gICAgICBbbGFiZWxQb3NpdGlvbl09XCInYmVmb3JlJ1wiXHJcbiAgICAgIChjaGFuZ2UpPVwib25Ub2dnbGVEaXNwbGF5QXJlYXMoJGV2ZW50LmNoZWNrZWQpXCI+XHJcbiAgICAgIHt7J2lnby5nZW8ubWVhc3VyZS50b2dnbGVEaXNwbGF5QXJlYXMnIHwgdHJhbnNsYXRlfX1cclxuICAgIDwvbWF0LXNsaWRlLXRvZ2dsZT5cclxuXHJcbiAgICA8bWF0LWRpdmlkZXIgKm5nSWY9XCIoaGFzQXJlYSQgfCBhc3luYylcIj48L21hdC1kaXZpZGVyPlxyXG5cclxuICAgIDxtYXQtc2xpZGUtdG9nZ2xlXHJcbiAgICAgIFtjaGVja2VkXT1cIm1lYXN1cmVVbml0c0F1dG9cIlxyXG4gICAgICBbbGFiZWxQb3NpdGlvbl09XCInYmVmb3JlJ1wiXHJcbiAgICAgIChjaGFuZ2UpPVwib25Ub2dnbGVNZWFzdXJlVW5pdHNBdXRvKCRldmVudC5jaGVja2VkKVwiPlxyXG4gICAgICB7eydpZ28uZ2VvLm1lYXN1cmUudG9nZ2xlQXV0b1VuaXRzJyB8IHRyYW5zbGF0ZX19XHJcbiAgICA8L21hdC1zbGlkZS10b2dnbGU+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJtZWFzdXJlJCB8IGFzeW5jIGFzIG1lYXN1cmVcIj5cclxuICAgIDxpZ28tbWVhc3VyZXItaXRlbSAqbmdJZj1cImFjdGl2ZU1lYXN1cmVUeXBlID09PSBtZWFzdXJlVHlwZS5MZW5ndGggfHwgYWN0aXZlTWVhc3VyZVR5cGUgPT09IG1lYXN1cmVUeXBlLkFyZWFcIlxyXG4gICAgICBbbWVhc3VyZVR5cGVdPVwibWVhc3VyZVR5cGUuTGVuZ3RoXCJcclxuICAgICAgW21lYXN1cmVVbml0XT1cIm1lYXN1cmVMZW5ndGhVbml0Lk1ldGVyc1wiXHJcbiAgICAgIFttZWFzdXJlXT1cIm1lYXN1cmUubGVuZ3RoXCJcclxuICAgICAgW2F1dG9dPVwibWVhc3VyZVVuaXRzQXV0b1wiXHJcbiAgICAgIFtwbGFjZWhvbGRlcl09XCIoYWN0aXZlTWVhc3VyZVR5cGUgPT09IG1lYXN1cmVUeXBlLkFyZWEgPyAnaWdvLmdlby5tZWFzdXJlLnBlcmltZXRlcicgOiAnaWdvLmdlby5tZWFzdXJlLmxlbmd0aCcpIHwgdHJhbnNsYXRlXCJcclxuICAgICAgKG1lYXN1cmVVbml0Q2hhbmdlKT1cIm9uTGVuZ3RoVW5pdENoYW5nZSgkZXZlbnQpXCI+XHJcbiAgICA8L2lnby1tZWFzdXJlci1pdGVtPlxyXG5cclxuICAgIDxpZ28tbWVhc3VyZXItaXRlbSAqbmdJZj1cImFjdGl2ZU1lYXN1cmVUeXBlID09PSBtZWFzdXJlVHlwZS5BcmVhXCJcclxuICAgICAgW21lYXN1cmVUeXBlXT1cIm1lYXN1cmVUeXBlLkFyZWFcIlxyXG4gICAgICBbbWVhc3VyZVVuaXRdPVwibWVhc3VyZUFyZWFVbml0LlNxdWFyZU1ldGVyc1wiXHJcbiAgICAgIFttZWFzdXJlXT1cIm1lYXN1cmUuYXJlYVwiXHJcbiAgICAgIFthdXRvXT1cIm1lYXN1cmVVbml0c0F1dG9cIlxyXG4gICAgICBbcGxhY2Vob2xkZXJdPVwiJ2lnby5nZW8ubWVhc3VyZS5hcmVhJyB8IHRyYW5zbGF0ZVwiXHJcbiAgICAgIChtZWFzdXJlVW5pdENoYW5nZSk9XCJvbkFyZWFVbml0Q2hhbmdlKCRldmVudClcIj5cclxuICAgIDwvaWdvLW1lYXN1cmVyLWl0ZW0+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gIDxtYXQtZGl2aWRlciAqbmdJZj1cIihoYXNMaW5lJCB8IGFzeW5jKSB8fCAoaGFzQXJlYSQgfCBhc3luYylcIj48L21hdC1kaXZpZGVyPlxyXG5cclxuICA8ZGl2IGNsYXNzPVwibWVhc3VyZS1zdG9yZS1idXR0b25zXCI+XHJcbiAgICA8YnV0dG9uICpuZ0lmPVwiKGhhc0xpbmUkIHwgYXN5bmMpIHx8IChoYXNBcmVhJCB8IGFzeW5jKVwiXHJcbiAgICAgIG1hdC1pY29uLWJ1dHRvblxyXG4gICAgICBbbWF0VG9vbHRpcF09XCInaWdvLmdlby5tZWFzdXJlLmFjdGlvbmJhci5jYWxjdWxhdGUudG9vbHRpcCcgfCB0cmFuc2xhdGVcIlxyXG4gICAgICBbZGlzYWJsZWRdPVwiKHNlbGVjdGVkRmVhdHVyZXMkIHwgYXN5bmMpLmxlbmd0aCA9PT0gMFwiXHJcbiAgICAgIGNvbG9yPVwiYWNjZW50XCJcclxuICAgICAgKGNsaWNrKT1cIm9uQ2FsY3VsYXRlQ2xpY2soKVwiPlxyXG4gICAgICA8bWF0LWljb24gc3ZnSWNvbj1cImNhbGN1bGF0b3JcIj48L21hdC1pY29uPlxyXG4gICAgPC9idXR0b24+XHJcblxyXG4gICAgPGJ1dHRvbiAqbmdJZj1cIihoYXNMaW5lJCB8IGFzeW5jKSB8fCAoaGFzQXJlYSQgfCBhc3luYylcIlxyXG4gICAgICBtYXQtaWNvbi1idXR0b25cclxuICAgICAgW21hdFRvb2x0aXBdPVwiJ2lnby5nZW8ubWVhc3VyZS5hY3Rpb25iYXIuZGVsZXRlLnRvb2x0aXAnIHwgdHJhbnNsYXRlXCJcclxuICAgICAgW2Rpc2FibGVkXT1cIihzZWxlY3RlZEZlYXR1cmVzJCB8IGFzeW5jKS5sZW5ndGggPT09IDBcIlxyXG4gICAgICBjb2xvcj1cIndhcm5cIlxyXG4gICAgICAoY2xpY2spPVwib25EZWxldGVDbGljaygpXCI+XHJcbiAgICAgIDxtYXQtaWNvbiBzdmdJY29uPVwiZGVsZXRlXCI+PC9tYXQtaWNvbj5cclxuICAgIDwvYnV0dG9uPlxyXG5cclxuICAgIDwhLS1idXR0b25cclxuICAgICAgbWF0LWljb24tYnV0dG9uXHJcbiAgICAgIFttYXRUb29sdGlwXT1cIidpZ28uZ2VvLm1lYXN1cmUuYWN0aW9uYmFyLm1vZGlmeS50b29sdGlwJyB8IHRyYW5zbGF0ZVwiXHJcbiAgICAgIFtkaXNhYmxlZF09XCIoc2VsZWN0ZWRGZWF0dXJlcyQgfCBhc3luYykubGVuZ3RoICE9PSAxXCJcclxuICAgICAgKGNsaWNrKT1cIm9uTW9kaWZ5Q2xpY2soKVwiPlxyXG4gICAgICA8bWF0LWljb24gc3ZnSWNvbj1cImVkaXRcIj48L21hdC1pY29uPlxyXG4gICAgPC9idXR0b24tLT5cclxuICA8L2Rpdj5cclxuXHJcbiAgPGlnby1lbnRpdHktdGFibGVcclxuICAgICN0YWJsZVxyXG4gICAgY2xhc3M9XCJ0YWJsZS1jb21wYWN0XCJcclxuICAgIFtzdG9yZV09XCJzdG9yZVwiXHJcbiAgICBbdGVtcGxhdGVdPVwidGFibGVUZW1wbGF0ZVwiPlxyXG4gIDwvaWdvLWVudGl0eS10YWJsZT5cclxuPC9kaXY+XHJcbiJdfQ==
@@ -91,4 +91,4 @@ IgoMeasurerModule.ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ imports: [Common
91
91
  MeasurerComponent] }); })();
92
92
  i0.ɵɵsetComponentScope(MeasurerComponent, [i1.NgIf, i2.MatButton, i3.MatButtonToggleGroup, i3.MatButtonToggle, i4.MatIcon, i5.MatTooltip, i6.MatSlideToggle, i7.MatDivider, i8.EntityTableComponent, MeasurerItemComponent], [i1.AsyncPipe, i9.TranslatePipe]);
93
93
  i0.ɵɵsetComponentScope(MeasurerDialogComponent, [i1.NgIf], [i9.TranslatePipe, MeasureFormatPipe]);
94
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVhc3VyZXIubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvbWVhc3VyZS9tZWFzdXJlci9tZWFzdXJlci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFL0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzdELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRTdELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUMvQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFcEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDekQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7Ozs7Ozs7Ozs7O0FBRXRFOztHQUVHO0FBMkJILE1BQU0sT0FBTyxpQkFBaUI7O2tGQUFqQixpQkFBaUI7bUVBQWpCLGlCQUFpQjt1RUF4QjFCLFlBQVk7UUFDWixlQUFlO1FBQ2YscUJBQXFCO1FBQ3JCLGFBQWE7UUFDYixnQkFBZ0I7UUFDaEIsa0JBQWtCO1FBQ2xCLGNBQWM7UUFDZCxlQUFlO1FBQ2Ysb0JBQW9CO1FBQ3BCLGdCQUFnQjtRQUNoQixpQkFBaUI7UUFDakIsb0JBQW9CO3VGQWFYLGlCQUFpQjtjQTFCN0IsUUFBUTtlQUFDO2dCQUNSLE9BQU8sRUFBRTtvQkFDUCxZQUFZO29CQUNaLGVBQWU7b0JBQ2YscUJBQXFCO29CQUNyQixhQUFhO29CQUNiLGdCQUFnQjtvQkFDaEIsa0JBQWtCO29CQUNsQixjQUFjO29CQUNkLGVBQWU7b0JBQ2Ysb0JBQW9CO29CQUNwQixnQkFBZ0I7b0JBQ2hCLGlCQUFpQjtvQkFDakIsb0JBQW9CO2lCQUNyQjtnQkFDRCxZQUFZLEVBQUU7b0JBQ1osaUJBQWlCO29CQUNqQixxQkFBcUI7b0JBQ3JCLGlCQUFpQjtvQkFDakIsdUJBQXVCO2lCQUN4QjtnQkFDRCxPQUFPLEVBQUU7b0JBQ1AsaUJBQWlCO29CQUNqQixpQkFBaUI7aUJBQ2xCO2FBQ0Y7O3dGQUNZLGlCQUFpQixtQkFWMUIsaUJBQWlCO1FBQ2pCLHFCQUFxQjtRQUNyQixpQkFBaUI7UUFDakIsdUJBQXVCLGFBakJ2QixZQUFZO1FBQ1osZUFBZTtRQUNmLHFCQUFxQjtRQUNyQixhQUFhO1FBQ2IsZ0JBQWdCO1FBQ2hCLGtCQUFrQjtRQUNsQixjQUFjO1FBQ2QsZUFBZTtRQUNmLG9CQUFvQjtRQUNwQixnQkFBZ0I7UUFDaEIsaUJBQWlCO1FBQ2pCLG9CQUFvQixhQVNwQixpQkFBaUI7UUFDakIsaUJBQWlCO3VCQUxqQixpQkFBaUIsNkpBRGpCLHFCQUFxQjt1QkFFckIsdUJBQXVCLGdDQUh2QixpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7IE1hdEJ1dHRvblRvZ2dsZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbi10b2dnbGUnO1xuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBNYXRJbnB1dE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcbmltcG9ydCB7IE1hdFNlbGVjdE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NlbGVjdCc7XG5pbXBvcnQgeyBNYXRTbGlkZVRvZ2dsZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NsaWRlLXRvZ2dsZSc7XG5pbXBvcnQgeyBNYXRUb29sdGlwTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcCc7XG5pbXBvcnQgeyBNYXREaXZpZGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGl2aWRlcic7XG5cbmltcG9ydCB7IElnb0xhbmd1YWdlTW9kdWxlIH0gZnJvbSAnQGlnbzIvY29yZSc7XG5pbXBvcnQgeyBJZ29FbnRpdHlUYWJsZU1vZHVsZSB9IGZyb20gJ0BpZ28yL2NvbW1vbic7XG5cbmltcG9ydCB7IE1lYXN1cmVGb3JtYXRQaXBlIH0gZnJvbSAnLi9tZWFzdXJlLWZvcm1hdC5waXBlJztcbmltcG9ydCB7IE1lYXN1cmVySXRlbUNvbXBvbmVudCB9IGZyb20gJy4vbWVhc3VyZXItaXRlbS5jb21wb25lbnQnO1xuaW1wb3J0IHsgTWVhc3VyZXJDb21wb25lbnQgfSBmcm9tICcuL21lYXN1cmVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBNZWFzdXJlckRpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4vbWVhc3VyZXItZGlhbG9nLmNvbXBvbmVudCc7XG5cbi8qKlxuICogQGlnbm9yZVxuICovXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIE1hdEJ1dHRvbk1vZHVsZSxcbiAgICBNYXRCdXR0b25Ub2dnbGVNb2R1bGUsXG4gICAgTWF0SWNvbk1vZHVsZSxcbiAgICBNYXRUb29sdGlwTW9kdWxlLFxuICAgIE1hdEZvcm1GaWVsZE1vZHVsZSxcbiAgICBNYXRJbnB1dE1vZHVsZSxcbiAgICBNYXRTZWxlY3RNb2R1bGUsXG4gICAgTWF0U2xpZGVUb2dnbGVNb2R1bGUsXG4gICAgTWF0RGl2aWRlck1vZHVsZSxcbiAgICBJZ29MYW5ndWFnZU1vZHVsZSxcbiAgICBJZ29FbnRpdHlUYWJsZU1vZHVsZVxuICBdLFxuICBkZWNsYXJhdGlvbnM6IFtcbiAgICBNZWFzdXJlRm9ybWF0UGlwZSxcbiAgICBNZWFzdXJlckl0ZW1Db21wb25lbnQsXG4gICAgTWVhc3VyZXJDb21wb25lbnQsXG4gICAgTWVhc3VyZXJEaWFsb2dDb21wb25lbnRcbiAgXSxcbiAgZXhwb3J0czogW1xuICAgIE1lYXN1cmVGb3JtYXRQaXBlLFxuICAgIE1lYXN1cmVyQ29tcG9uZW50XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgSWdvTWVhc3VyZXJNb2R1bGUge31cbiJdfQ==
94
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVhc3VyZXIubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvbWVhc3VyZS9tZWFzdXJlci9tZWFzdXJlci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFL0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzdELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRTdELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUMvQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFcEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDekQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7Ozs7Ozs7Ozs7O0FBRXRFOztHQUVHO0FBMkJILE1BQU0sT0FBTyxpQkFBaUI7O2tGQUFqQixpQkFBaUI7bUVBQWpCLGlCQUFpQjt1RUF4QjFCLFlBQVk7UUFDWixlQUFlO1FBQ2YscUJBQXFCO1FBQ3JCLGFBQWE7UUFDYixnQkFBZ0I7UUFDaEIsa0JBQWtCO1FBQ2xCLGNBQWM7UUFDZCxlQUFlO1FBQ2Ysb0JBQW9CO1FBQ3BCLGdCQUFnQjtRQUNoQixpQkFBaUI7UUFDakIsb0JBQW9CO3VGQWFYLGlCQUFpQjtjQTFCN0IsUUFBUTtlQUFDO2dCQUNSLE9BQU8sRUFBRTtvQkFDUCxZQUFZO29CQUNaLGVBQWU7b0JBQ2YscUJBQXFCO29CQUNyQixhQUFhO29CQUNiLGdCQUFnQjtvQkFDaEIsa0JBQWtCO29CQUNsQixjQUFjO29CQUNkLGVBQWU7b0JBQ2Ysb0JBQW9CO29CQUNwQixnQkFBZ0I7b0JBQ2hCLGlCQUFpQjtvQkFDakIsb0JBQW9CO2lCQUNyQjtnQkFDRCxZQUFZLEVBQUU7b0JBQ1osaUJBQWlCO29CQUNqQixxQkFBcUI7b0JBQ3JCLGlCQUFpQjtvQkFDakIsdUJBQXVCO2lCQUN4QjtnQkFDRCxPQUFPLEVBQUU7b0JBQ1AsaUJBQWlCO29CQUNqQixpQkFBaUI7aUJBQ2xCO2FBQ0Y7O3dGQUNZLGlCQUFpQixtQkFWMUIsaUJBQWlCO1FBQ2pCLHFCQUFxQjtRQUNyQixpQkFBaUI7UUFDakIsdUJBQXVCLGFBakJ2QixZQUFZO1FBQ1osZUFBZTtRQUNmLHFCQUFxQjtRQUNyQixhQUFhO1FBQ2IsZ0JBQWdCO1FBQ2hCLGtCQUFrQjtRQUNsQixjQUFjO1FBQ2QsZUFBZTtRQUNmLG9CQUFvQjtRQUNwQixnQkFBZ0I7UUFDaEIsaUJBQWlCO1FBQ2pCLG9CQUFvQixhQVNwQixpQkFBaUI7UUFDakIsaUJBQWlCO3VCQUxqQixpQkFBaUIsNkpBRGpCLHFCQUFxQjt1QkFFckIsdUJBQXVCLGdDQUh2QixpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5cclxuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcclxuaW1wb3J0IHsgTWF0QnV0dG9uVG9nZ2xlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uLXRvZ2dsZSc7XHJcbmltcG9ydCB7IE1hdEZvcm1GaWVsZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xyXG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XHJcbmltcG9ydCB7IE1hdElucHV0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xyXG5pbXBvcnQgeyBNYXRTZWxlY3RNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zZWxlY3QnO1xyXG5pbXBvcnQgeyBNYXRTbGlkZVRvZ2dsZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NsaWRlLXRvZ2dsZSc7XHJcbmltcG9ydCB7IE1hdFRvb2x0aXBNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwJztcclxuaW1wb3J0IHsgTWF0RGl2aWRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpdmlkZXInO1xyXG5cclxuaW1wb3J0IHsgSWdvTGFuZ3VhZ2VNb2R1bGUgfSBmcm9tICdAaWdvMi9jb3JlJztcclxuaW1wb3J0IHsgSWdvRW50aXR5VGFibGVNb2R1bGUgfSBmcm9tICdAaWdvMi9jb21tb24nO1xyXG5cclxuaW1wb3J0IHsgTWVhc3VyZUZvcm1hdFBpcGUgfSBmcm9tICcuL21lYXN1cmUtZm9ybWF0LnBpcGUnO1xyXG5pbXBvcnQgeyBNZWFzdXJlckl0ZW1Db21wb25lbnQgfSBmcm9tICcuL21lYXN1cmVyLWl0ZW0uY29tcG9uZW50JztcclxuaW1wb3J0IHsgTWVhc3VyZXJDb21wb25lbnQgfSBmcm9tICcuL21lYXN1cmVyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE1lYXN1cmVyRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi9tZWFzdXJlci1kaWFsb2cuY29tcG9uZW50JztcclxuXHJcbi8qKlxyXG4gKiBAaWdub3JlXHJcbiAqL1xyXG5ATmdNb2R1bGUoe1xyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIE1hdEJ1dHRvbk1vZHVsZSxcclxuICAgIE1hdEJ1dHRvblRvZ2dsZU1vZHVsZSxcclxuICAgIE1hdEljb25Nb2R1bGUsXHJcbiAgICBNYXRUb29sdGlwTW9kdWxlLFxyXG4gICAgTWF0Rm9ybUZpZWxkTW9kdWxlLFxyXG4gICAgTWF0SW5wdXRNb2R1bGUsXHJcbiAgICBNYXRTZWxlY3RNb2R1bGUsXHJcbiAgICBNYXRTbGlkZVRvZ2dsZU1vZHVsZSxcclxuICAgIE1hdERpdmlkZXJNb2R1bGUsXHJcbiAgICBJZ29MYW5ndWFnZU1vZHVsZSxcclxuICAgIElnb0VudGl0eVRhYmxlTW9kdWxlXHJcbiAgXSxcclxuICBkZWNsYXJhdGlvbnM6IFtcclxuICAgIE1lYXN1cmVGb3JtYXRQaXBlLFxyXG4gICAgTWVhc3VyZXJJdGVtQ29tcG9uZW50LFxyXG4gICAgTWVhc3VyZXJDb21wb25lbnQsXHJcbiAgICBNZWFzdXJlckRpYWxvZ0NvbXBvbmVudFxyXG4gIF0sXHJcbiAgZXhwb3J0czogW1xyXG4gICAgTWVhc3VyZUZvcm1hdFBpcGUsXHJcbiAgICBNZWFzdXJlckNvbXBvbmVudFxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIElnb01lYXN1cmVyTW9kdWxlIHt9XHJcbiJdfQ==
@@ -1,4 +1,4 @@
1
1
  export * from './measure.enum';
2
2
  export * from './measure.interfaces';
3
3
  export * from './measure.utils';
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9tZWFzdXJlL3NoYXJlZC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyxpQkFBaUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbWVhc3VyZS5lbnVtJztcbmV4cG9ydCAqIGZyb20gJy4vbWVhc3VyZS5pbnRlcmZhY2VzJztcbmV4cG9ydCAqIGZyb20gJy4vbWVhc3VyZS51dGlscyc7XG4iXX0=
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9tZWFzdXJlL3NoYXJlZC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyxpQkFBaUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbWVhc3VyZS5lbnVtJztcclxuZXhwb3J0ICogZnJvbSAnLi9tZWFzdXJlLmludGVyZmFjZXMnO1xyXG5leHBvcnQgKiBmcm9tICcuL21lYXN1cmUudXRpbHMnO1xyXG4iXX0=
@@ -34,4 +34,4 @@ export const MeasureAreaUnitAbbreviation = {
34
34
  [MeasureAreaUnit.Hectares]: 'ha',
35
35
  [MeasureAreaUnit.Acres]: 'ac'
36
36
  };
37
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVhc3VyZS5lbnVtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvbWVhc3VyZS9zaGFyZWQvbWVhc3VyZS5lbnVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLE1BQU0sQ0FBQztBQUV4QyxNQUFNLENBQU4sSUFBWSxXQUdYO0FBSEQsV0FBWSxXQUFXO0lBQ3JCLGdDQUFpQixDQUFBO0lBQ2pCLDRCQUFhLENBQUE7QUFDZixDQUFDLEVBSFcsV0FBVyxLQUFYLFdBQVcsUUFHdEI7QUFFRCxNQUFNLENBQU4sSUFBWSxpQkFLWDtBQUxELFdBQVksaUJBQWlCO0lBQzNCLHNDQUFpQixDQUFBO0lBQ2pCLDhDQUF5QixDQUFBO0lBQ3pCLG9DQUFlLENBQUE7SUFDZixrQ0FBYSxDQUFBO0FBQ2YsQ0FBQyxFQUxXLGlCQUFpQixLQUFqQixpQkFBaUIsUUFLNUI7QUFFRCxNQUFNLENBQUMsTUFBTSw2QkFBNkIsR0FBRztJQUMzQyxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxFQUFFLEdBQUc7SUFDL0IsQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsRUFBRSxJQUFJO0lBQ3BDLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLEVBQUUsSUFBSTtJQUMvQixDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxFQUFFLElBQUk7Q0FDL0IsQ0FBQztBQUVGLE1BQU0sQ0FBTixJQUFZLGVBT1g7QUFQRCxXQUFZLGVBQWU7SUFDekIsZ0RBQTZCLENBQUE7SUFDN0Isd0RBQXFDLENBQUE7SUFDckMsOENBQTJCLENBQUE7SUFDM0IsNENBQXlCLENBQUE7SUFDekIsd0NBQXFCLENBQUE7SUFDckIsa0NBQWUsQ0FBQTtBQUNqQixDQUFDLEVBUFcsZUFBZSxLQUFmLGVBQWUsUUFPMUI7QUFFRCxNQUFNLENBQUMsTUFBTSwyQkFBMkIsR0FBRztJQUN6QyxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUMsRUFBRSxJQUFJO0lBQ3BDLENBQUMsZUFBZSxDQUFDLGdCQUFnQixDQUFDLEVBQUUsS0FBSztJQUN6QyxDQUFDLGVBQWUsQ0FBQyxXQUFXLENBQUMsRUFBRSxLQUFLO0lBQ3BDLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEtBQUs7SUFDbkMsQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLEVBQUUsSUFBSTtJQUNoQyxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsRUFBRSxJQUFJO0NBQzlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJcbmV4cG9ydCBjb25zdCBNRUFTVVJFX1VOSVRfQVVUTyA9ICdhdXRvJztcblxuZXhwb3J0IGVudW0gTWVhc3VyZVR5cGUge1xuICBMZW5ndGggPSAnbGVuZ3RoJyxcbiAgQXJlYSA9ICdhcmVhJ1xufVxuXG5leHBvcnQgZW51bSBNZWFzdXJlTGVuZ3RoVW5pdCB7XG4gIE1ldGVycyA9ICdtZXRlcnMnLFxuICBLaWxvbWV0ZXJzID0gJ2tpbG9tZXRlcnMnLFxuICBNaWxlcyA9ICdtaWxlcycsXG4gIEZlZXQgPSAnZmVldCdcbn1cblxuZXhwb3J0IGNvbnN0IE1lYXN1cmVMZW5ndGhVbml0QWJicmV2aWF0aW9uID0ge1xuICBbTWVhc3VyZUxlbmd0aFVuaXQuTWV0ZXJzXTogJ20nLFxuICBbTWVhc3VyZUxlbmd0aFVuaXQuS2lsb21ldGVyc106ICdrbScsXG4gIFtNZWFzdXJlTGVuZ3RoVW5pdC5NaWxlc106ICdtaScsXG4gIFtNZWFzdXJlTGVuZ3RoVW5pdC5GZWV0XTogJ2Z0J1xufTtcblxuZXhwb3J0IGVudW0gTWVhc3VyZUFyZWFVbml0IHtcbiAgU3F1YXJlTWV0ZXJzID0gJ3NxdWFyZU1ldGVycycsXG4gIFNxdWFyZUtpbG9tZXRlcnMgPSAnc3F1YXJlS2lsb21ldGVycycsXG4gIFNxdWFyZU1pbGVzID0gJ3NxdWFyZU1pbGVzJyxcbiAgU3F1YXJlRmVldCA9ICdzcXVhcmVGZWV0JyxcbiAgSGVjdGFyZXMgPSAnaGVjdGFyZXMnLFxuICBBY3JlcyA9ICdhY3Jlcydcbn1cblxuZXhwb3J0IGNvbnN0IE1lYXN1cmVBcmVhVW5pdEFiYnJldmlhdGlvbiA9IHtcbiAgW01lYXN1cmVBcmVhVW5pdC5TcXVhcmVNZXRlcnNdOiAnbcKyJyxcbiAgW01lYXN1cmVBcmVhVW5pdC5TcXVhcmVLaWxvbWV0ZXJzXTogJ2ttwrInLFxuICBbTWVhc3VyZUFyZWFVbml0LlNxdWFyZU1pbGVzXTogJ21pwrInLFxuICBbTWVhc3VyZUFyZWFVbml0LlNxdWFyZUZlZXRdOiAnZnTCsicsXG4gIFtNZWFzdXJlQXJlYVVuaXQuSGVjdGFyZXNdOiAnaGEnLFxuICBbTWVhc3VyZUFyZWFVbml0LkFjcmVzXTogJ2FjJ1xufTtcbiJdfQ==
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVhc3VyZS5lbnVtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvbWVhc3VyZS9zaGFyZWQvbWVhc3VyZS5lbnVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLE1BQU0sQ0FBQztBQUV4QyxNQUFNLENBQU4sSUFBWSxXQUdYO0FBSEQsV0FBWSxXQUFXO0lBQ3JCLGdDQUFpQixDQUFBO0lBQ2pCLDRCQUFhLENBQUE7QUFDZixDQUFDLEVBSFcsV0FBVyxLQUFYLFdBQVcsUUFHdEI7QUFFRCxNQUFNLENBQU4sSUFBWSxpQkFLWDtBQUxELFdBQVksaUJBQWlCO0lBQzNCLHNDQUFpQixDQUFBO0lBQ2pCLDhDQUF5QixDQUFBO0lBQ3pCLG9DQUFlLENBQUE7SUFDZixrQ0FBYSxDQUFBO0FBQ2YsQ0FBQyxFQUxXLGlCQUFpQixLQUFqQixpQkFBaUIsUUFLNUI7QUFFRCxNQUFNLENBQUMsTUFBTSw2QkFBNkIsR0FBRztJQUMzQyxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxFQUFFLEdBQUc7SUFDL0IsQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsRUFBRSxJQUFJO0lBQ3BDLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLEVBQUUsSUFBSTtJQUMvQixDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxFQUFFLElBQUk7Q0FDL0IsQ0FBQztBQUVGLE1BQU0sQ0FBTixJQUFZLGVBT1g7QUFQRCxXQUFZLGVBQWU7SUFDekIsZ0RBQTZCLENBQUE7SUFDN0Isd0RBQXFDLENBQUE7SUFDckMsOENBQTJCLENBQUE7SUFDM0IsNENBQXlCLENBQUE7SUFDekIsd0NBQXFCLENBQUE7SUFDckIsa0NBQWUsQ0FBQTtBQUNqQixDQUFDLEVBUFcsZUFBZSxLQUFmLGVBQWUsUUFPMUI7QUFFRCxNQUFNLENBQUMsTUFBTSwyQkFBMkIsR0FBRztJQUN6QyxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUMsRUFBRSxJQUFJO0lBQ3BDLENBQUMsZUFBZSxDQUFDLGdCQUFnQixDQUFDLEVBQUUsS0FBSztJQUN6QyxDQUFDLGVBQWUsQ0FBQyxXQUFXLENBQUMsRUFBRSxLQUFLO0lBQ3BDLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEtBQUs7SUFDbkMsQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLEVBQUUsSUFBSTtJQUNoQyxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsRUFBRSxJQUFJO0NBQzlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJcclxuZXhwb3J0IGNvbnN0IE1FQVNVUkVfVU5JVF9BVVRPID0gJ2F1dG8nO1xyXG5cclxuZXhwb3J0IGVudW0gTWVhc3VyZVR5cGUge1xyXG4gIExlbmd0aCA9ICdsZW5ndGgnLFxyXG4gIEFyZWEgPSAnYXJlYSdcclxufVxyXG5cclxuZXhwb3J0IGVudW0gTWVhc3VyZUxlbmd0aFVuaXQge1xyXG4gIE1ldGVycyA9ICdtZXRlcnMnLFxyXG4gIEtpbG9tZXRlcnMgPSAna2lsb21ldGVycycsXHJcbiAgTWlsZXMgPSAnbWlsZXMnLFxyXG4gIEZlZXQgPSAnZmVldCdcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IE1lYXN1cmVMZW5ndGhVbml0QWJicmV2aWF0aW9uID0ge1xyXG4gIFtNZWFzdXJlTGVuZ3RoVW5pdC5NZXRlcnNdOiAnbScsXHJcbiAgW01lYXN1cmVMZW5ndGhVbml0LktpbG9tZXRlcnNdOiAna20nLFxyXG4gIFtNZWFzdXJlTGVuZ3RoVW5pdC5NaWxlc106ICdtaScsXHJcbiAgW01lYXN1cmVMZW5ndGhVbml0LkZlZXRdOiAnZnQnXHJcbn07XHJcblxyXG5leHBvcnQgZW51bSBNZWFzdXJlQXJlYVVuaXQge1xyXG4gIFNxdWFyZU1ldGVycyA9ICdzcXVhcmVNZXRlcnMnLFxyXG4gIFNxdWFyZUtpbG9tZXRlcnMgPSAnc3F1YXJlS2lsb21ldGVycycsXHJcbiAgU3F1YXJlTWlsZXMgPSAnc3F1YXJlTWlsZXMnLFxyXG4gIFNxdWFyZUZlZXQgPSAnc3F1YXJlRmVldCcsXHJcbiAgSGVjdGFyZXMgPSAnaGVjdGFyZXMnLFxyXG4gIEFjcmVzID0gJ2FjcmVzJ1xyXG59XHJcblxyXG5leHBvcnQgY29uc3QgTWVhc3VyZUFyZWFVbml0QWJicmV2aWF0aW9uID0ge1xyXG4gIFtNZWFzdXJlQXJlYVVuaXQuU3F1YXJlTWV0ZXJzXTogJ23CsicsXHJcbiAgW01lYXN1cmVBcmVhVW5pdC5TcXVhcmVLaWxvbWV0ZXJzXTogJ2ttwrInLFxyXG4gIFtNZWFzdXJlQXJlYVVuaXQuU3F1YXJlTWlsZXNdOiAnbWnCsicsXHJcbiAgW01lYXN1cmVBcmVhVW5pdC5TcXVhcmVGZWV0XTogJ2Z0wrInLFxyXG4gIFtNZWFzdXJlQXJlYVVuaXQuSGVjdGFyZXNdOiAnaGEnLFxyXG4gIFtNZWFzdXJlQXJlYVVuaXQuQWNyZXNdOiAnYWMnXHJcbn07XHJcbiJdfQ==
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVhc3VyZS5pbnRlcmZhY2VzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvbWVhc3VyZS9zaGFyZWQvbWVhc3VyZS5pbnRlcmZhY2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGZWF0dXJlIH0gZnJvbSAnLi4vLi4vZmVhdHVyZSc7XG5pbXBvcnQgeyBJZ29NYXAgfSBmcm9tICcuLi8uLi9tYXAnO1xuXG5leHBvcnQgaW50ZXJmYWNlIE1lYXN1cmUge1xuICBhcmVhPzogbnVtYmVyO1xuICBsZW5ndGg/OiBudW1iZXI7XG4gIGxlbmd0aHM/OiBudW1iZXJbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNZWFzdXJlckRpYWxvZ0RhdGEge1xuICBhcmVhOiBudW1iZXI7XG4gIGxlbmd0aDogbnVtYmVyO1xuICBwZXJpbWV0ZXI6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGZWF0dXJlV2l0aE1lYXN1cmUgZXh0ZW5kcyBGZWF0dXJlPEZlYXR1cmVXaXRoTWVhc3VyZVByb3BlcnRpZXM+IHt9XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmVhdHVyZVdpdGhNZWFzdXJlUHJvcGVydGllcyB7XG4gIGlkOiBzdHJpbmc7XG4gIG1lYXN1cmU6IE1lYXN1cmU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmVhdHVyZVN0b3JlTWVhc3VyZVN0cmF0ZWd5T3B0aW9ucyB7XG4gIG1hcDogSWdvTWFwO1xufVxuIl19
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVhc3VyZS5pbnRlcmZhY2VzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvbWVhc3VyZS9zaGFyZWQvbWVhc3VyZS5pbnRlcmZhY2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGZWF0dXJlIH0gZnJvbSAnLi4vLi4vZmVhdHVyZSc7XHJcbmltcG9ydCB7IElnb01hcCB9IGZyb20gJy4uLy4uL21hcCc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIE1lYXN1cmUge1xyXG4gIGFyZWE/OiBudW1iZXI7XHJcbiAgbGVuZ3RoPzogbnVtYmVyO1xyXG4gIGxlbmd0aHM/OiBudW1iZXJbXTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBNZWFzdXJlckRpYWxvZ0RhdGEge1xyXG4gIGFyZWE6IG51bWJlcjtcclxuICBsZW5ndGg6IG51bWJlcjtcclxuICBwZXJpbWV0ZXI6IG51bWJlcjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBGZWF0dXJlV2l0aE1lYXN1cmUgZXh0ZW5kcyBGZWF0dXJlPEZlYXR1cmVXaXRoTWVhc3VyZVByb3BlcnRpZXM+IHt9XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEZlYXR1cmVXaXRoTWVhc3VyZVByb3BlcnRpZXMge1xyXG4gIGlkOiBzdHJpbmc7XHJcbiAgbWVhc3VyZTogTWVhc3VyZTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBGZWF0dXJlU3RvcmVNZWFzdXJlU3RyYXRlZ3lPcHRpb25zIHtcclxuICBtYXA6IElnb01hcDtcclxufVxyXG4iXX0=