@pepperi-addons/ngx-lib 0.4.2-storybook.1 → 0.5.0-ng15.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 (520) hide show
  1. package/address/address.component.d.ts +1 -1
  2. package/attachment/attachment.component.d.ts +2 -1
  3. package/bread-crumbs/bread-crumbs.component.d.ts +1 -1
  4. package/bread-crumbs/bread-crumbs.model.d.ts +1 -1
  5. package/button/button.component.d.ts +1 -1
  6. package/carousel/carousel-item.directive.d.ts +1 -1
  7. package/carousel/carousel.component.d.ts +1 -1
  8. package/checkbox/checkbox.component.d.ts +2 -1
  9. package/chips/chips.component.d.ts +4 -5
  10. package/chips/chips.component.theme.scss +15 -5
  11. package/chips/chips.model.d.ts +2 -2
  12. package/chips/chips.service.d.ts +0 -3
  13. package/color/color-picker.component.d.ts +1 -1
  14. package/color/color-picker.component.theme.scss +2 -1
  15. package/color/color.component.d.ts +1 -1
  16. package/color/color.model.d.ts +1 -1
  17. package/core/clipboard/clipboard.directive.d.ts +1 -1
  18. package/core/common/directives/auto-width.directive.d.ts +1 -1
  19. package/core/common/directives/base-destroyer.directive.d.ts +10 -0
  20. package/core/common/directives/button-blur.directive.d.ts +1 -1
  21. package/core/common/directives/button-loader.directive.d.ts +1 -1
  22. package/core/common/directives/data-qa.directive.d.ts +1 -1
  23. package/core/common/directives/div-loader.directive.d.ts +1 -1
  24. package/core/common/directives/menu-blur.directive.d.ts +1 -1
  25. package/core/common/directives/prevent-multi-click.directive.d.ts +1 -1
  26. package/core/common/directives/print.directive.d.ts +1 -1
  27. package/core/common/directives/public-api.d.ts +1 -0
  28. package/core/common/pipes/common-pipes.d.ts +5 -2
  29. package/core/common/services/addon.service.d.ts +6 -4
  30. package/core/common/services/file.service.d.ts +1 -1
  31. package/core/common/services/utilities.service.d.ts +4 -4
  32. package/core/customization/customization.model.d.ts +15 -12
  33. package/core/customization/customization.service.d.ts +4 -0
  34. package/core/layout/layout.service.d.ts +1 -1
  35. package/core/layout/rtl.directive.d.ts +2 -2
  36. package/core/portal/attach.directive.d.ts +1 -1
  37. package/core/portal/target.directive.d.ts +1 -1
  38. package/date/date.component.d.ts +4 -2
  39. package/dialog/default-dialog.component.d.ts +1 -1
  40. package/dialog/dialog.component.d.ts +1 -1
  41. package/dialog/dialog.model.d.ts +2 -2
  42. package/draggable-items/draggable-item/draggable-item.component.d.ts +16 -2
  43. package/draggable-items/draggable-items.component.d.ts +4 -7
  44. package/draggable-items/draggable-items.model.d.ts +2 -2
  45. package/draggable-items/draggable-items.module.d.ts +4 -3
  46. package/esm2020/address/address.component.mjs +16 -16
  47. package/esm2020/address/address.module.mjs +5 -5
  48. package/esm2020/attachment/attachment.component.mjs +58 -49
  49. package/esm2020/attachment/attachment.module.mjs +5 -5
  50. package/esm2020/bread-crumbs/bread-crumbs.component.mjs +15 -15
  51. package/esm2020/bread-crumbs/bread-crumbs.module.mjs +5 -5
  52. package/esm2020/button/button.component.mjs +23 -23
  53. package/esm2020/button/button.module.mjs +5 -5
  54. package/esm2020/carousel/carousel-item.directive.mjs +9 -9
  55. package/esm2020/carousel/carousel.component.mjs +52 -52
  56. package/esm2020/carousel/carousel.module.mjs +5 -5
  57. package/esm2020/checkbox/checkbox.component.mjs +40 -31
  58. package/esm2020/checkbox/checkbox.module.mjs +5 -5
  59. package/esm2020/chips/chips.component.mjs +26 -28
  60. package/esm2020/chips/chips.module.mjs +5 -5
  61. package/esm2020/chips/chips.service.mjs +5 -14
  62. package/esm2020/color/color-picker.component.mjs +5 -5
  63. package/esm2020/color/color.component.mjs +5 -5
  64. package/esm2020/color/color.module.mjs +5 -5
  65. package/esm2020/core/clipboard/clipboard.directive.mjs +4 -4
  66. package/esm2020/core/clipboard/clipboard.service.mjs +4 -4
  67. package/esm2020/core/common/directives/auto-width.directive.mjs +4 -4
  68. package/esm2020/core/common/directives/base-destroyer.directive.mjs +22 -0
  69. package/esm2020/core/common/directives/button-blur.directive.mjs +4 -4
  70. package/esm2020/core/common/directives/button-loader.directive.mjs +10 -10
  71. package/esm2020/core/common/directives/data-qa.directive.mjs +4 -4
  72. package/esm2020/core/common/directives/div-loader.directive.mjs +4 -4
  73. package/esm2020/core/common/directives/menu-blur.directive.mjs +4 -4
  74. package/esm2020/core/common/directives/prevent-multi-click.directive.mjs +4 -4
  75. package/esm2020/core/common/directives/print.directive.mjs +4 -4
  76. package/esm2020/core/common/directives/public-api.mjs +2 -1
  77. package/esm2020/core/common/pipes/common-pipes.mjs +47 -37
  78. package/esm2020/core/common/pipes/date-ago.pipe.mjs +4 -4
  79. package/esm2020/core/common/services/addon.service.mjs +36 -12
  80. package/esm2020/core/common/services/color.service.mjs +4 -4
  81. package/esm2020/core/common/services/cookie.service.mjs +4 -4
  82. package/esm2020/core/common/services/data-convertor.service.mjs +6 -6
  83. package/esm2020/core/common/services/file.service.mjs +4 -4
  84. package/esm2020/core/common/services/jwt-helper.service.mjs +4 -4
  85. package/esm2020/core/common/services/session.service.mjs +4 -4
  86. package/esm2020/core/common/services/translate.service.mjs +4 -4
  87. package/esm2020/core/common/services/utilities.service.mjs +10 -10
  88. package/esm2020/core/common/services/validator.service.mjs +4 -4
  89. package/esm2020/core/common/services/window-scrolling.service.mjs +4 -4
  90. package/esm2020/core/customization/customization.model.mjs +40 -5
  91. package/esm2020/core/customization/customization.service.mjs +23 -4
  92. package/esm2020/core/http/interceptors/error.interceptor.mjs +4 -4
  93. package/esm2020/core/http/interceptors/loader.interceptor.mjs +4 -4
  94. package/esm2020/core/http/interceptors/profiler.interceptor.mjs +4 -4
  95. package/esm2020/core/http/services/http.service.mjs +4 -4
  96. package/esm2020/core/http/services/loader.service.mjs +10 -10
  97. package/esm2020/core/layout/layout.service.mjs +12 -12
  98. package/esm2020/core/layout/rtl.directive.mjs +7 -7
  99. package/esm2020/core/portal/attach.directive.mjs +4 -4
  100. package/esm2020/core/portal/portal.service.mjs +4 -4
  101. package/esm2020/core/portal/target.directive.mjs +4 -4
  102. package/esm2020/core/scroll-to/scroll-to.service.mjs +4 -4
  103. package/esm2020/date/date.component.mjs +81 -59
  104. package/esm2020/date/date.model.mjs +7 -7
  105. package/esm2020/date/date.module.mjs +5 -5
  106. package/esm2020/dialog/default-dialog.component.mjs +4 -4
  107. package/esm2020/dialog/dialog.component.mjs +4 -4
  108. package/esm2020/dialog/dialog.module.mjs +5 -5
  109. package/esm2020/dialog/dialog.service.mjs +4 -4
  110. package/esm2020/draggable-items/draggable-item/draggable-item.component.mjs +46 -6
  111. package/esm2020/draggable-items/draggable-items.component.mjs +21 -29
  112. package/esm2020/draggable-items/draggable-items.module.mjs +9 -5
  113. package/esm2020/field-title/field-title.component.mjs +8 -5
  114. package/esm2020/field-title/field-title.module.mjs +5 -5
  115. package/esm2020/files-uploader/files-uploader.component.mjs +12 -12
  116. package/esm2020/files-uploader/files-uploader.module.mjs +5 -5
  117. package/esm2020/form/field-generator.component.mjs +5 -5
  118. package/esm2020/form/form.component.mjs +30 -28
  119. package/esm2020/form/form.module.mjs +5 -5
  120. package/esm2020/form/indicators.component.mjs +4 -4
  121. package/esm2020/form/internal-button.component.mjs +17 -17
  122. package/esm2020/form/internal-carusel.component.mjs +24 -20
  123. package/esm2020/form/internal-carusel.service.mjs +4 -4
  124. package/esm2020/form/internal-field-generator.component.mjs +5 -5
  125. package/esm2020/form/internal-form.component.mjs +30 -28
  126. package/esm2020/form/internal-list.component.mjs +7 -7
  127. package/esm2020/form/internal-menu.component.mjs +6 -8
  128. package/esm2020/form/internal-page.component.mjs +4 -4
  129. package/esm2020/form/internal-page.service.mjs +4 -4
  130. package/esm2020/group-buttons/group-buttons.component.mjs +5 -5
  131. package/esm2020/group-buttons/group-buttons.module.mjs +5 -5
  132. package/esm2020/icon/icon-registry.service.mjs +4 -4
  133. package/esm2020/icon/icon.component.mjs +11 -11
  134. package/esm2020/icon/icon.module.mjs +5 -5
  135. package/esm2020/icon/icon.service.mjs +4 -4
  136. package/esm2020/image/image.component.mjs +52 -43
  137. package/esm2020/image/image.module.mjs +5 -5
  138. package/esm2020/image/image.service.mjs +4 -4
  139. package/esm2020/images-filmstrip/images-filmstrip.component.mjs +26 -25
  140. package/esm2020/images-filmstrip/images-filmstrip.module.mjs +5 -5
  141. package/esm2020/link/link.component.mjs +65 -50
  142. package/esm2020/link/link.module.mjs +5 -5
  143. package/esm2020/link/link.pipes.mjs +4 -4
  144. package/esm2020/list/list-actions.component.mjs +6 -6
  145. package/esm2020/list/list-carousel.component.mjs +20 -20
  146. package/esm2020/list/list-chooser.component.mjs +6 -6
  147. package/esm2020/list/list-pager.component.mjs +12 -12
  148. package/esm2020/list/list-sorting.component.mjs +6 -6
  149. package/esm2020/list/list-total.component.mjs +9 -6
  150. package/esm2020/list/list-views.component.mjs +6 -6
  151. package/esm2020/list/list.component.mjs +151 -72
  152. package/esm2020/list/list.module.mjs +5 -5
  153. package/esm2020/list/list.pipes.mjs +7 -7
  154. package/esm2020/list/virtual-scroller.mjs +58 -58
  155. package/esm2020/menu/menu-item.component.mjs +5 -5
  156. package/esm2020/menu/menu.component.mjs +15 -12
  157. package/esm2020/menu/menu.model.mjs +2 -1
  158. package/esm2020/menu/menu.module.mjs +5 -5
  159. package/esm2020/ngx-lib.module.mjs +5 -5
  160. package/esm2020/page-layout/page-layout.component.mjs +4 -4
  161. package/esm2020/page-layout/page-layout.module.mjs +5 -5
  162. package/esm2020/profile-data-views-list/profile-data-view/profile-data-view.component.mjs +4 -4
  163. package/esm2020/profile-data-views-list/profile-data-views-card/profile-data-views-card.component.mjs +27 -11
  164. package/esm2020/profile-data-views-list/profile-data-views-list.component.mjs +70 -38
  165. package/esm2020/profile-data-views-list/profile-data-views-list.model.mjs +1 -1
  166. package/esm2020/profile-data-views-list/profile-data-views-list.module.mjs +5 -5
  167. package/esm2020/quantity-selector/quantity-selector-validation.directive.mjs +4 -4
  168. package/esm2020/quantity-selector/quantity-selector.component.mjs +102 -89
  169. package/esm2020/quantity-selector/quantity-selector.module.mjs +5 -5
  170. package/esm2020/quantity-selector/quantity-selector.pipes.mjs +4 -4
  171. package/esm2020/query-builder/common/model/legacy.mjs +1 -1
  172. package/esm2020/query-builder/common/model/operator.mjs +72 -62
  173. package/esm2020/query-builder/common/services/output-query.service.mjs +8 -6
  174. package/esm2020/query-builder/common/services/query-structure.service.mjs +37 -5
  175. package/esm2020/query-builder/common/services/type-convertor.service.mjs +10 -10
  176. package/esm2020/query-builder/query-builder-item/query-builder-item.component.mjs +25 -23
  177. package/esm2020/query-builder/query-builder-section/query-builder-section.component.mjs +5 -5
  178. package/esm2020/query-builder/query-builder.component.mjs +19 -19
  179. package/esm2020/query-builder/query-builder.module.mjs +17 -6
  180. package/esm2020/query-builder/query-builder.service.mjs +5 -5
  181. package/esm2020/remote-loader/addon-block-loader.component.mjs +45 -35
  182. package/esm2020/remote-loader/addon-block-loader.service.mjs +8 -5
  183. package/esm2020/remote-loader/remote-loader-element.component.mjs +81 -26
  184. package/esm2020/remote-loader/remote-loader.component.mjs +13 -13
  185. package/esm2020/remote-loader/remote-loader.model.mjs +1 -1
  186. package/esm2020/remote-loader/remote-loader.module.mjs +5 -5
  187. package/esm2020/remote-loader/remote-loader.service.mjs +38 -15
  188. package/esm2020/rich-html-textarea/rich-html-textarea.component.mjs +52 -36
  189. package/esm2020/rich-html-textarea/rich-html-textarea.module.mjs +5 -5
  190. package/esm2020/search/search.component.mjs +35 -35
  191. package/esm2020/search/search.module.mjs +5 -5
  192. package/esm2020/select/select.component.mjs +89 -45
  193. package/esm2020/select/select.module.mjs +5 -5
  194. package/esm2020/select-panel/select-panel.component.mjs +26 -28
  195. package/esm2020/select-panel/select-panel.module.mjs +5 -5
  196. package/esm2020/separator/separator.component.mjs +16 -16
  197. package/esm2020/separator/separator.module.mjs +5 -5
  198. package/esm2020/side-bar/side-bar.component.mjs +29 -15
  199. package/esm2020/side-bar/side-bar.module.mjs +5 -5
  200. package/esm2020/signature/signature-dialog.component.mjs +4 -4
  201. package/esm2020/signature/signature.component.mjs +41 -32
  202. package/esm2020/signature/signature.module.mjs +5 -5
  203. package/esm2020/size-detector/size-detector.component.mjs +15 -13
  204. package/esm2020/size-detector/size-detector.module.mjs +5 -5
  205. package/esm2020/skeleton-loader/public-api.mjs +2 -2
  206. package/esm2020/skeleton-loader/skeleton-loader.component.mjs +5 -5
  207. package/esm2020/skeleton-loader/skeleton-loader.module.mjs +5 -5
  208. package/esm2020/slider/slider.component.mjs +21 -21
  209. package/esm2020/slider/slider.module.mjs +5 -5
  210. package/esm2020/smart-filters/boolean-filter/boolean-filter.component.mjs +4 -4
  211. package/esm2020/smart-filters/common/filter-actions.component.mjs +4 -4
  212. package/esm2020/smart-filters/common/model/base-filter-component.mjs +28 -34
  213. package/esm2020/smart-filters/common/model/field.mjs +7 -7
  214. package/esm2020/smart-filters/common/model/operator.mjs +15 -6
  215. package/esm2020/smart-filters/common/model/type.mjs +1 -1
  216. package/esm2020/smart-filters/date-filter/date-filter.component.mjs +4 -4
  217. package/esm2020/smart-filters/multi-select-filter/multi-select-filter.component.mjs +5 -5
  218. package/esm2020/smart-filters/number-filter/number-filter.component.mjs +4 -4
  219. package/esm2020/smart-filters/smart-filters.component.mjs +19 -19
  220. package/esm2020/smart-filters/smart-filters.module.mjs +5 -5
  221. package/esm2020/smart-filters/text-filter/text-filter.component.mjs +29 -9
  222. package/esm2020/snack-bar/default-snack-bar.component.mjs +4 -4
  223. package/esm2020/snack-bar/snack-bar.component.mjs +4 -4
  224. package/esm2020/snack-bar/snack-bar.module.mjs +5 -5
  225. package/esm2020/snack-bar/snack-bar.service.mjs +4 -4
  226. package/esm2020/textarea/textarea.component.mjs +40 -31
  227. package/esm2020/textarea/textarea.module.mjs +5 -5
  228. package/esm2020/textbox/textbox-validation.directive.mjs +5 -5
  229. package/esm2020/textbox/textbox.component.mjs +171 -115
  230. package/esm2020/textbox/textbox.module.mjs +5 -5
  231. package/esm2020/textbox-icon/textbox-icon.component.mjs +4 -4
  232. package/esm2020/textbox-icon/textbox-icon.module.mjs +5 -5
  233. package/esm2020/top-bar/top-bar.component.mjs +5 -5
  234. package/esm2020/top-bar/top-bar.module.mjs +5 -5
  235. package/fesm2015/pepperi-addons-ngx-lib-address.mjs +19 -19
  236. package/fesm2015/pepperi-addons-ngx-lib-address.mjs.map +1 -1
  237. package/fesm2015/pepperi-addons-ngx-lib-attachment.mjs +61 -52
  238. package/fesm2015/pepperi-addons-ngx-lib-attachment.mjs.map +1 -1
  239. package/fesm2015/pepperi-addons-ngx-lib-bread-crumbs.mjs +18 -18
  240. package/fesm2015/pepperi-addons-ngx-lib-bread-crumbs.mjs.map +1 -1
  241. package/fesm2015/pepperi-addons-ngx-lib-button.mjs +26 -26
  242. package/fesm2015/pepperi-addons-ngx-lib-button.mjs.map +1 -1
  243. package/fesm2015/pepperi-addons-ngx-lib-carousel.mjs +63 -63
  244. package/fesm2015/pepperi-addons-ngx-lib-carousel.mjs.map +1 -1
  245. package/fesm2015/pepperi-addons-ngx-lib-checkbox.mjs +43 -34
  246. package/fesm2015/pepperi-addons-ngx-lib-checkbox.mjs.map +1 -1
  247. package/fesm2015/pepperi-addons-ngx-lib-chips.mjs +33 -44
  248. package/fesm2015/pepperi-addons-ngx-lib-chips.mjs.map +1 -1
  249. package/fesm2015/pepperi-addons-ngx-lib-color.mjs +12 -12
  250. package/fesm2015/pepperi-addons-ngx-lib-color.mjs.map +1 -1
  251. package/fesm2015/pepperi-addons-ngx-lib-date.mjs +91 -68
  252. package/fesm2015/pepperi-addons-ngx-lib-date.mjs.map +1 -1
  253. package/fesm2015/pepperi-addons-ngx-lib-dialog.mjs +13 -13
  254. package/fesm2015/pepperi-addons-ngx-lib-dialog.mjs.map +1 -1
  255. package/fesm2015/pepperi-addons-ngx-lib-draggable-items.mjs +75 -40
  256. package/fesm2015/pepperi-addons-ngx-lib-draggable-items.mjs.map +1 -1
  257. package/fesm2015/pepperi-addons-ngx-lib-field-title.mjs +11 -8
  258. package/fesm2015/pepperi-addons-ngx-lib-field-title.mjs.map +1 -1
  259. package/fesm2015/pepperi-addons-ngx-lib-files-uploader.mjs +15 -15
  260. package/fesm2015/pepperi-addons-ngx-lib-files-uploader.mjs.map +1 -1
  261. package/fesm2015/pepperi-addons-ngx-lib-form.mjs +132 -126
  262. package/fesm2015/pepperi-addons-ngx-lib-form.mjs.map +1 -1
  263. package/fesm2015/pepperi-addons-ngx-lib-group-buttons.mjs +8 -8
  264. package/fesm2015/pepperi-addons-ngx-lib-group-buttons.mjs.map +1 -1
  265. package/fesm2015/pepperi-addons-ngx-lib-icon.mjs +20 -20
  266. package/fesm2015/pepperi-addons-ngx-lib-icon.mjs.map +1 -1
  267. package/fesm2015/pepperi-addons-ngx-lib-image.mjs +58 -49
  268. package/fesm2015/pepperi-addons-ngx-lib-image.mjs.map +1 -1
  269. package/fesm2015/pepperi-addons-ngx-lib-images-filmstrip.mjs +29 -28
  270. package/fesm2015/pepperi-addons-ngx-lib-images-filmstrip.mjs.map +1 -1
  271. package/fesm2015/pepperi-addons-ngx-lib-link.mjs +71 -56
  272. package/fesm2015/pepperi-addons-ngx-lib-link.mjs.map +1 -1
  273. package/fesm2015/pepperi-addons-ngx-lib-list.mjs +276 -192
  274. package/fesm2015/pepperi-addons-ngx-lib-list.mjs.map +1 -1
  275. package/fesm2015/pepperi-addons-ngx-lib-menu.mjs +23 -19
  276. package/fesm2015/pepperi-addons-ngx-lib-menu.mjs.map +1 -1
  277. package/fesm2015/pepperi-addons-ngx-lib-page-layout.mjs +7 -7
  278. package/fesm2015/pepperi-addons-ngx-lib-page-layout.mjs.map +1 -1
  279. package/fesm2015/pepperi-addons-ngx-lib-profile-data-views-list.mjs +102 -54
  280. package/fesm2015/pepperi-addons-ngx-lib-profile-data-views-list.mjs.map +1 -1
  281. package/fesm2015/pepperi-addons-ngx-lib-quantity-selector.mjs +110 -97
  282. package/fesm2015/pepperi-addons-ngx-lib-quantity-selector.mjs.map +1 -1
  283. package/fesm2015/pepperi-addons-ngx-lib-query-builder.mjs +191 -132
  284. package/fesm2015/pepperi-addons-ngx-lib-query-builder.mjs.map +1 -1
  285. package/fesm2015/pepperi-addons-ngx-lib-remote-loader.mjs +197 -108
  286. package/fesm2015/pepperi-addons-ngx-lib-remote-loader.mjs.map +1 -1
  287. package/fesm2015/pepperi-addons-ngx-lib-rich-html-textarea.mjs +55 -39
  288. package/fesm2015/pepperi-addons-ngx-lib-rich-html-textarea.mjs.map +1 -1
  289. package/fesm2015/pepperi-addons-ngx-lib-search.mjs +38 -38
  290. package/fesm2015/pepperi-addons-ngx-lib-search.mjs.map +1 -1
  291. package/fesm2015/pepperi-addons-ngx-lib-select-panel.mjs +29 -31
  292. package/fesm2015/pepperi-addons-ngx-lib-select-panel.mjs.map +1 -1
  293. package/fesm2015/pepperi-addons-ngx-lib-select.mjs +92 -48
  294. package/fesm2015/pepperi-addons-ngx-lib-select.mjs.map +1 -1
  295. package/fesm2015/pepperi-addons-ngx-lib-separator.mjs +19 -19
  296. package/fesm2015/pepperi-addons-ngx-lib-separator.mjs.map +1 -1
  297. package/fesm2015/pepperi-addons-ngx-lib-side-bar.mjs +32 -18
  298. package/fesm2015/pepperi-addons-ngx-lib-side-bar.mjs.map +1 -1
  299. package/fesm2015/pepperi-addons-ngx-lib-signature.mjs +48 -38
  300. package/fesm2015/pepperi-addons-ngx-lib-signature.mjs.map +1 -1
  301. package/fesm2015/pepperi-addons-ngx-lib-size-detector.mjs +18 -16
  302. package/fesm2015/pepperi-addons-ngx-lib-size-detector.mjs.map +1 -1
  303. package/fesm2015/pepperi-addons-ngx-lib-skeleton-loader.mjs +9 -9
  304. package/fesm2015/pepperi-addons-ngx-lib-skeleton-loader.mjs.map +1 -1
  305. package/fesm2015/pepperi-addons-ngx-lib-slider.mjs +24 -24
  306. package/fesm2015/pepperi-addons-ngx-lib-slider.mjs.map +1 -1
  307. package/fesm2015/pepperi-addons-ngx-lib-smart-filters.mjs +114 -91
  308. package/fesm2015/pepperi-addons-ngx-lib-smart-filters.mjs.map +1 -1
  309. package/fesm2015/pepperi-addons-ngx-lib-snack-bar.mjs +13 -13
  310. package/fesm2015/pepperi-addons-ngx-lib-snack-bar.mjs.map +1 -1
  311. package/fesm2015/pepperi-addons-ngx-lib-textarea.mjs +43 -34
  312. package/fesm2015/pepperi-addons-ngx-lib-textarea.mjs.map +1 -1
  313. package/fesm2015/pepperi-addons-ngx-lib-textbox-icon.mjs +7 -7
  314. package/fesm2015/pepperi-addons-ngx-lib-textbox-icon.mjs.map +1 -1
  315. package/fesm2015/pepperi-addons-ngx-lib-textbox.mjs +181 -123
  316. package/fesm2015/pepperi-addons-ngx-lib-textbox.mjs.map +1 -1
  317. package/fesm2015/pepperi-addons-ngx-lib-top-bar.mjs +8 -8
  318. package/fesm2015/pepperi-addons-ngx-lib-top-bar.mjs.map +1 -1
  319. package/fesm2015/pepperi-addons-ngx-lib.mjs +760 -653
  320. package/fesm2015/pepperi-addons-ngx-lib.mjs.map +1 -1
  321. package/fesm2020/pepperi-addons-ngx-lib-address.mjs +19 -19
  322. package/fesm2020/pepperi-addons-ngx-lib-address.mjs.map +1 -1
  323. package/fesm2020/pepperi-addons-ngx-lib-attachment.mjs +61 -52
  324. package/fesm2020/pepperi-addons-ngx-lib-attachment.mjs.map +1 -1
  325. package/fesm2020/pepperi-addons-ngx-lib-bread-crumbs.mjs +18 -18
  326. package/fesm2020/pepperi-addons-ngx-lib-bread-crumbs.mjs.map +1 -1
  327. package/fesm2020/pepperi-addons-ngx-lib-button.mjs +26 -26
  328. package/fesm2020/pepperi-addons-ngx-lib-button.mjs.map +1 -1
  329. package/fesm2020/pepperi-addons-ngx-lib-carousel.mjs +63 -63
  330. package/fesm2020/pepperi-addons-ngx-lib-carousel.mjs.map +1 -1
  331. package/fesm2020/pepperi-addons-ngx-lib-checkbox.mjs +43 -34
  332. package/fesm2020/pepperi-addons-ngx-lib-checkbox.mjs.map +1 -1
  333. package/fesm2020/pepperi-addons-ngx-lib-chips.mjs +33 -44
  334. package/fesm2020/pepperi-addons-ngx-lib-chips.mjs.map +1 -1
  335. package/fesm2020/pepperi-addons-ngx-lib-color.mjs +12 -12
  336. package/fesm2020/pepperi-addons-ngx-lib-color.mjs.map +1 -1
  337. package/fesm2020/pepperi-addons-ngx-lib-date.mjs +90 -68
  338. package/fesm2020/pepperi-addons-ngx-lib-date.mjs.map +1 -1
  339. package/fesm2020/pepperi-addons-ngx-lib-dialog.mjs +13 -13
  340. package/fesm2020/pepperi-addons-ngx-lib-dialog.mjs.map +1 -1
  341. package/fesm2020/pepperi-addons-ngx-lib-draggable-items.mjs +74 -39
  342. package/fesm2020/pepperi-addons-ngx-lib-draggable-items.mjs.map +1 -1
  343. package/fesm2020/pepperi-addons-ngx-lib-field-title.mjs +11 -8
  344. package/fesm2020/pepperi-addons-ngx-lib-field-title.mjs.map +1 -1
  345. package/fesm2020/pepperi-addons-ngx-lib-files-uploader.mjs +15 -15
  346. package/fesm2020/pepperi-addons-ngx-lib-files-uploader.mjs.map +1 -1
  347. package/fesm2020/pepperi-addons-ngx-lib-form.mjs +132 -126
  348. package/fesm2020/pepperi-addons-ngx-lib-form.mjs.map +1 -1
  349. package/fesm2020/pepperi-addons-ngx-lib-group-buttons.mjs +8 -8
  350. package/fesm2020/pepperi-addons-ngx-lib-group-buttons.mjs.map +1 -1
  351. package/fesm2020/pepperi-addons-ngx-lib-icon.mjs +20 -20
  352. package/fesm2020/pepperi-addons-ngx-lib-icon.mjs.map +1 -1
  353. package/fesm2020/pepperi-addons-ngx-lib-image.mjs +58 -49
  354. package/fesm2020/pepperi-addons-ngx-lib-image.mjs.map +1 -1
  355. package/fesm2020/pepperi-addons-ngx-lib-images-filmstrip.mjs +29 -28
  356. package/fesm2020/pepperi-addons-ngx-lib-images-filmstrip.mjs.map +1 -1
  357. package/fesm2020/pepperi-addons-ngx-lib-link.mjs +71 -56
  358. package/fesm2020/pepperi-addons-ngx-lib-link.mjs.map +1 -1
  359. package/fesm2020/pepperi-addons-ngx-lib-list.mjs +274 -192
  360. package/fesm2020/pepperi-addons-ngx-lib-list.mjs.map +1 -1
  361. package/fesm2020/pepperi-addons-ngx-lib-menu.mjs +23 -19
  362. package/fesm2020/pepperi-addons-ngx-lib-menu.mjs.map +1 -1
  363. package/fesm2020/pepperi-addons-ngx-lib-page-layout.mjs +7 -7
  364. package/fesm2020/pepperi-addons-ngx-lib-page-layout.mjs.map +1 -1
  365. package/fesm2020/pepperi-addons-ngx-lib-profile-data-views-list.mjs +102 -54
  366. package/fesm2020/pepperi-addons-ngx-lib-profile-data-views-list.mjs.map +1 -1
  367. package/fesm2020/pepperi-addons-ngx-lib-quantity-selector.mjs +110 -97
  368. package/fesm2020/pepperi-addons-ngx-lib-quantity-selector.mjs.map +1 -1
  369. package/fesm2020/pepperi-addons-ngx-lib-query-builder.mjs +187 -131
  370. package/fesm2020/pepperi-addons-ngx-lib-query-builder.mjs.map +1 -1
  371. package/fesm2020/pepperi-addons-ngx-lib-remote-loader.mjs +184 -93
  372. package/fesm2020/pepperi-addons-ngx-lib-remote-loader.mjs.map +1 -1
  373. package/fesm2020/pepperi-addons-ngx-lib-rich-html-textarea.mjs +55 -39
  374. package/fesm2020/pepperi-addons-ngx-lib-rich-html-textarea.mjs.map +1 -1
  375. package/fesm2020/pepperi-addons-ngx-lib-search.mjs +38 -38
  376. package/fesm2020/pepperi-addons-ngx-lib-search.mjs.map +1 -1
  377. package/fesm2020/pepperi-addons-ngx-lib-select-panel.mjs +29 -31
  378. package/fesm2020/pepperi-addons-ngx-lib-select-panel.mjs.map +1 -1
  379. package/fesm2020/pepperi-addons-ngx-lib-select.mjs +92 -48
  380. package/fesm2020/pepperi-addons-ngx-lib-select.mjs.map +1 -1
  381. package/fesm2020/pepperi-addons-ngx-lib-separator.mjs +19 -19
  382. package/fesm2020/pepperi-addons-ngx-lib-separator.mjs.map +1 -1
  383. package/fesm2020/pepperi-addons-ngx-lib-side-bar.mjs +32 -18
  384. package/fesm2020/pepperi-addons-ngx-lib-side-bar.mjs.map +1 -1
  385. package/fesm2020/pepperi-addons-ngx-lib-signature.mjs +47 -38
  386. package/fesm2020/pepperi-addons-ngx-lib-signature.mjs.map +1 -1
  387. package/fesm2020/pepperi-addons-ngx-lib-size-detector.mjs +18 -16
  388. package/fesm2020/pepperi-addons-ngx-lib-size-detector.mjs.map +1 -1
  389. package/fesm2020/pepperi-addons-ngx-lib-skeleton-loader.mjs +9 -9
  390. package/fesm2020/pepperi-addons-ngx-lib-skeleton-loader.mjs.map +1 -1
  391. package/fesm2020/pepperi-addons-ngx-lib-slider.mjs +24 -24
  392. package/fesm2020/pepperi-addons-ngx-lib-slider.mjs.map +1 -1
  393. package/fesm2020/pepperi-addons-ngx-lib-smart-filters.mjs +114 -91
  394. package/fesm2020/pepperi-addons-ngx-lib-smart-filters.mjs.map +1 -1
  395. package/fesm2020/pepperi-addons-ngx-lib-snack-bar.mjs +13 -13
  396. package/fesm2020/pepperi-addons-ngx-lib-snack-bar.mjs.map +1 -1
  397. package/fesm2020/pepperi-addons-ngx-lib-textarea.mjs +43 -34
  398. package/fesm2020/pepperi-addons-ngx-lib-textarea.mjs.map +1 -1
  399. package/fesm2020/pepperi-addons-ngx-lib-textbox-icon.mjs +7 -7
  400. package/fesm2020/pepperi-addons-ngx-lib-textbox-icon.mjs.map +1 -1
  401. package/fesm2020/pepperi-addons-ngx-lib-textbox.mjs +179 -123
  402. package/fesm2020/pepperi-addons-ngx-lib-textbox.mjs.map +1 -1
  403. package/fesm2020/pepperi-addons-ngx-lib-top-bar.mjs +8 -8
  404. package/fesm2020/pepperi-addons-ngx-lib-top-bar.mjs.map +1 -1
  405. package/fesm2020/pepperi-addons-ngx-lib.mjs +780 -674
  406. package/fesm2020/pepperi-addons-ngx-lib.mjs.map +1 -1
  407. package/field-title/field-title.component.d.ts +2 -1
  408. package/files-uploader/files-uploader.component.d.ts +1 -1
  409. package/form/field-generator.component.d.ts +1 -1
  410. package/form/form.component.d.ts +1 -1
  411. package/form/indicators.component.d.ts +1 -1
  412. package/form/internal-button.component.d.ts +1 -1
  413. package/form/internal-carusel.component.d.ts +2 -1
  414. package/form/internal-field-generator.component.d.ts +1 -1
  415. package/form/internal-form.component.d.ts +1 -1
  416. package/form/internal-list.component.d.ts +2 -2
  417. package/form/internal-menu.component.d.ts +1 -2
  418. package/form/internal-page.component.d.ts +1 -1
  419. package/group-buttons/group-buttons.component.d.ts +2 -2
  420. package/icon/icon-generated.model.d.ts +2 -2
  421. package/icon/icon.component.d.ts +1 -1
  422. package/image/image.component.d.ts +2 -1
  423. package/image/image.component.theme.scss +4 -2
  424. package/images-filmstrip/images-filmstrip.component.d.ts +1 -1
  425. package/link/link.component.d.ts +4 -1
  426. package/list/list-actions.component.d.ts +1 -1
  427. package/list/list-carousel.component.d.ts +2 -2
  428. package/list/list-chooser.component.d.ts +1 -1
  429. package/list/list-pager.component.d.ts +1 -1
  430. package/list/list-sorting.component.d.ts +1 -1
  431. package/list/list-total.component.d.ts +2 -1
  432. package/list/list-views.component.d.ts +2 -2
  433. package/list/list.component.d.ts +9 -3
  434. package/list/list.model.d.ts +6 -6
  435. package/list/virtual-scroller.d.ts +2 -2
  436. package/menu/menu-item.component.d.ts +1 -1
  437. package/menu/menu.component.d.ts +2 -1
  438. package/menu/menu.model.d.ts +4 -3
  439. package/package.json +11 -11
  440. package/page-layout/page-layout.component.d.ts +1 -1
  441. package/profile-data-views-list/profile-data-view/profile-data-view.component.d.ts +4 -4
  442. package/profile-data-views-list/profile-data-views-card/profile-data-views-card.component.d.ts +5 -4
  443. package/profile-data-views-list/profile-data-views-list.component.d.ts +13 -10
  444. package/profile-data-views-list/profile-data-views-list.model.d.ts +8 -0
  445. package/quantity-selector/quantity-selector-validation.directive.d.ts +1 -1
  446. package/quantity-selector/quantity-selector.component.d.ts +8 -9
  447. package/quantity-selector/quantity-selector.component.theme.scss +12 -6
  448. package/query-builder/common/model/legacy.d.ts +2 -0
  449. package/query-builder/common/model/operator.d.ts +11 -1
  450. package/query-builder/common/services/query-structure.service.d.ts +1 -0
  451. package/query-builder/query-builder-item/query-builder-item.component.d.ts +4 -2
  452. package/query-builder/query-builder-section/query-builder-section.component.d.ts +1 -1
  453. package/query-builder/query-builder.component.d.ts +1 -1
  454. package/query-builder/query-builder.module.d.ts +7 -3
  455. package/remote-loader/addon-block-loader.component.d.ts +4 -2
  456. package/remote-loader/remote-loader-element.component.d.ts +9 -2
  457. package/remote-loader/remote-loader.component.d.ts +1 -1
  458. package/remote-loader/remote-loader.model.d.ts +3 -2
  459. package/remote-loader/remote-loader.service.d.ts +2 -0
  460. package/rich-html-textarea/rich-html-textarea.component.d.ts +4 -1
  461. package/rich-html-textarea/rich-html-textarea.component.theme.scss +8 -5
  462. package/search/search.component.d.ts +1 -1
  463. package/search/search.model.d.ts +4 -4
  464. package/select/select.component.d.ts +9 -1
  465. package/select/select.component.theme.scss +22 -11
  466. package/select-panel/select-panel.component.d.ts +1 -2
  467. package/select-panel/select-panel.component.theme.scss +0 -2
  468. package/separator/separator.component.d.ts +1 -1
  469. package/side-bar/side-bar.component.d.ts +4 -1
  470. package/side-bar/side-bar.model.d.ts +1 -1
  471. package/signature/signature-dialog.component.d.ts +2 -2
  472. package/signature/signature.component.d.ts +2 -1
  473. package/size-detector/size-detector.component.d.ts +1 -1
  474. package/skeleton-loader/skeleton-loader.component.d.ts +4 -4
  475. package/slider/slider.component.d.ts +1 -1
  476. package/slider/slider.component.theme.scss +15 -5
  477. package/smart-filters/boolean-filter/boolean-filter.component.d.ts +4 -1
  478. package/smart-filters/common/filter-actions.component.d.ts +1 -1
  479. package/smart-filters/common/model/base-filter-component.d.ts +3 -5
  480. package/smart-filters/common/model/operator.d.ts +3 -0
  481. package/smart-filters/common/model/type.d.ts +4 -4
  482. package/smart-filters/date-filter/date-filter.component.d.ts +4 -1
  483. package/smart-filters/multi-select-filter/multi-select-filter.component.d.ts +4 -1
  484. package/smart-filters/number-filter/number-filter.component.d.ts +4 -1
  485. package/smart-filters/smart-filters.component.d.ts +1 -1
  486. package/smart-filters/text-filter/text-filter.component.d.ts +5 -1
  487. package/snack-bar/default-snack-bar.component.d.ts +1 -1
  488. package/snack-bar/snack-bar.component.d.ts +1 -1
  489. package/src/assets/i18n/ar.ngx-lib.json +180 -0
  490. package/src/assets/i18n/de.ngx-lib.json +106 -4
  491. package/src/assets/i18n/en.ngx-lib.json +10 -3
  492. package/src/assets/i18n/es.ngx-lib.json +113 -11
  493. package/src/assets/i18n/fr.ngx-lib.json +105 -4
  494. package/src/assets/i18n/he.ngx-lib.json +105 -4
  495. package/src/assets/i18n/it.ngx-lib.json +114 -13
  496. package/src/assets/i18n/ja.ngx-lib.json +105 -4
  497. package/src/assets/i18n/pl.ngx-lib.json +105 -4
  498. package/src/assets/i18n/pt.ngx-lib.json +105 -4
  499. package/src/assets/i18n/sr.ngx-lib.json +180 -0
  500. package/src/assets/i18n/zh.ngx-lib.json +105 -2
  501. package/src/core/style/abstracts/mixins.scss +157 -37
  502. package/src/core/style/abstracts/variables.scss +10 -1
  503. package/src/core/style/base/Spacing.stories.mdx +22 -22
  504. package/src/core/style/base/base.scss +219 -117
  505. package/src/core/style/base/typography.scss +2 -1
  506. package/src/core/style/components/button.scss +52 -19
  507. package/src/core/style/components/checkbox.scss +132 -128
  508. package/src/core/style/components/file.scss +13 -9
  509. package/src/core/style/components/general.scss +149 -65
  510. package/src/core/style/components/radio-button.scss +50 -23
  511. package/src/core/style/components/textarea.scss +69 -30
  512. package/textarea/textarea.component.d.ts +2 -1
  513. package/textbox/textbox-validation.directive.d.ts +1 -1
  514. package/textbox/textbox.component.d.ts +4 -1
  515. package/textbox-icon/textbox-icon.component.d.ts +1 -1
  516. package/theming-offline.scss +2 -1
  517. package/theming.scss +7 -2
  518. package/top-bar/top-bar.component.d.ts +1 -1
  519. package/top-bar/top-bar.model.d.ts +1 -1
  520. package/src/assets/images/sail-away.jpg +0 -0
@@ -323,9 +323,9 @@ export class PepInternalPageComponent {
323
323
  }
324
324
  }
325
325
  PepInternalPageComponent.CURRENT_ADDITIONAL_API_NAME = 'item_details_currentAdditionalApiName';
326
- PepInternalPageComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: PepInternalPageComponent, deps: [{ token: i1.PepDialogService }, { token: i2.PepInternalPageService }, { token: i3.PepCustomizationService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
327
- PepInternalPageComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: PepInternalPageComponent, selector: "pep-internal-page", inputs: { field: "field", layoutType: "layoutType" }, outputs: { internalFormFieldChange: "internalFormFieldChange", internalFormFieldClick: "internalFormFieldClick" }, providers: [PepInternalPageService], viewQueries: [{ propertyName: "my1mm", first: true, predicate: ["my1mm"], descendants: true }, { propertyName: "mainViewCont", first: true, predicate: ["mainViewCont"], descendants: true }, { propertyName: "orgCont", first: true, predicate: ["orgCont"], descendants: true, read: ViewContainerRef }, { propertyName: "dialogCont", first: true, predicate: ["dialogCont"], descendants: true, read: ViewContainerRef }, { propertyName: "matrixTemplate", first: true, predicate: ["matrixTemplate"], descendants: true }, { propertyName: "matrixDialogTemplate", first: true, predicate: ["matrixDialogTemplate"], descendants: true, read: TemplateRef }, { propertyName: "customList", first: true, predicate: PepInternalListComponent, descendants: true }], ngImport: i0, template: "<ng-template #matrixHeaderTemplate>\n <div class=\"matrix-title-container pep-border-bottom align-{{\n field.xAlignment\n }}\" title=\"{{ field.label }}\">\n <span class=\"block-with-text body-md\">{{ field.label }}</span>\n\n <div class=\"buttons-container pep-spacing-element-negative pull-right flip\">\n <ng-container *ngIf=\"\n currentViewType?.Key == 'OrderCenterMatrix' &&\n additionalApiNames &&\n additionalApiNames.length > 0\n \">\n <button class=\"pep-spacing-element pep-button icon-button sm weak\" mat-button [matMenuTriggerFor]=\"menu\"\n menu-blur>\n <span class=\"pull-left flip\" *ngIf=\"currentAdditionalApiName\">&nbsp;{{\n currentAdditionalApiName?.Value }}&nbsp;</span>\n\n <mat-icon [ngClass]=\"{'pull-left flip': currentAdditionalApiName}\">\n <pep-icon name=\"system_info\"></pep-icon>\n </mat-icon>\n </button>\n <mat-menu #menu=\"matMenu\" xPosition=\"before\">\n <button mat-menu-item [ngClass]=\"{\n selected: currentAdditionalApiName === null\n }\" (click)=\"changeAdditionalApiName(null)\">\n <span>{{ \"LIST.NONE\" | translate }}</span>\n </button>\n <button mat-menu-item [ngClass]=\"{\n selected:\n currentAdditionalApiName?.Key ==\n additionalApiName?.Key\n }\" *ngFor=\"let additionalApiName of additionalApiNames\"\n (click)=\"changeAdditionalApiName(additionalApiName)\">\n <span>{{ additionalApiName.Value }}</span>\n </button>\n </mat-menu>\n </ng-container>\n <ng-container *ngIf=\"childViewTypes && childViewTypes.length > 1\">\n <button class=\"pep-spacing-element pep-button icon-button sm weak\" mat-button\n [matMenuTriggerFor]=\"viewsMenu\" menu-blur>\n <mat-icon>\n <pep-icon name=\"view_card_md\"></pep-icon>\n </mat-icon>\n </button>\n\n <mat-menu #viewsMenu=\"matMenu\" xPosition=\"before\">\n <button mat-menu-item [ngClass]=\"{\n selected: currentViewType?.Key == viewType?.Key\n }\" *ngFor=\"let viewType of childViewTypes\" (click)=\"changeChildrenViewType(viewType?.Key)\">\n <mat-icon [ngSwitch]=\"viewType?.Key\">\n <pep-icon *ngSwitchCase=\"'OrderCenterMatrix'\" name=\"view_matrix\"></pep-icon>\n <pep-icon *ngSwitchCase=\"'OrderCenterFlatMatrixGrid'\" name=\"view_table\"></pep-icon>\n <pep-icon *ngSwitchCase=\"'OrderCenterFlatMatrixLine'\" name=\"view_line\"></pep-icon>\n </mat-icon>\n <span>{{ viewType?.Value }}</span>\n </button>\n </mat-menu>\n </ng-container>\n </div>\n </div>\n\n</ng-template>\n\n<ng-template #matrixTemplate>\n <div #matrixContainer class=\"matrix-container\">\n <pep-internal-list (valueChange)=\"onCustomizeObjectChanged($event)\" [parentScroll]=\"matrixContainer\"\n (fieldClick)=\"onCustomizeFieldClick($event)\" [totalsRow]=\"totalsRow\"></pep-internal-list>\n </div>\n</ng-template>\n\n<div #mainViewCont id=\"mainViewCont\" [ngStyle]=\"{ 'max-width': viewWidth, 'max-height': viewHeight }\">\n <div #my1mm id=\"my1_mm\" style=\"height:1mm;width:1mm;visibility: hidden;\"></div>\n <ng-container *ngIf=\"coverChildTable && uiControl != null\">\n <div class=\"table-cover\"></div>\n <button (click)=\"showMatrixDialog()\" class=\"pep-button strong sm table-cover-button\"\n [ngClass]=\"{ 'lineview-btn': currentViewType?.Key == 'OrderCenterFlatMatrixLine'}\">\n {{ \"INTERNAL_PAGE.CLICK_TO_ORDER\" | translate }}\n </button>\n </ng-container>\n\n <ng-container *ngTemplateOutlet=\"matrixHeaderTemplate\"></ng-container>\n <ng-container #orgCont></ng-container>\n</div>\n\n<ng-template #matrixDialogTemplate>\n\n <div mat-dialog-title>\n <ng-container *ngTemplateOutlet=\"matrixHeaderTemplate\"></ng-container>\n </div>\n\n <div mat-dialog-content>\n <ng-container #dialogCont></ng-container>\n </div>\n</ng-template>\n\n<!-- <div id=\"childGridModal\" bsModal (onShown)=\"onShown()\" (onHidden)=\"onHidden()\" #childModal=\"bs-modal\" class=\"modal\"\n tabindex=\"-1\" role=\"dialog\" aria-labelledby=\"gridModalLabel\" aria-hidden=\"true\">\n <div class=\"modal-dialog\" role=\"document\">\n <div class=\"modal-content\">\n <div class=\"modal-body matrix-dialog-body\">\n <ng-container #modalCont></ng-container>\n </div>\n </div>\n </div>\n</div> -->", styles: [":host{display:grid;width:inherit;height:inherit}.matrix-title-container{padding:0;height:var(--pep-form-field-height, 2.5rem);display:flex;align-items:flex-end}.matrix-title-container .block-with-text{width:100%;max-height:inherit;font-weight:var(--pep-font-weight-bold, 600);display:block;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.matrix-title-container .buttons-container{display:flex;align-self:center}.matrix-title-container .buttons-container .pepperi-button,.matrix-title-container .buttons-container .pep-button{width:max-content}#mainViewCont{width:100%;height:inherit;overflow:hidden;padding:0 var(--pep-spacing-xs, .25rem)}#mainViewCont .table-cover{background-color:#fff;z-index:98;position:absolute;top:0;width:100%;height:inherit;opacity:.5}#mainViewCont .table-cover-button{position:absolute;left:50%;transform:translate(-50%,-50%);top:calc(50% + var(--pep-form-field-height, 2.5rem));z-index:99}#mainViewCont .table-cover-button.lineview-btn{top:calc(2 * var(--pep-form-field-height, 2.5rem));transform:translate(-50%)}#mainViewCont .underCover{max-height:inherit;overflow:hidden}#mainViewCont ::ng-deep .table-header{top:unset!important}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i4.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i4.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: i5.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i7.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i7.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i7.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "component", type: i8.PepIconComponent, selector: "pep-icon", inputs: ["spin", "name", "fill"] }, { kind: "component", type: i9.PepInternalListComponent, selector: "pep-internal-list", inputs: ["noDataFoundMsg", "hideAllSelectionInMulti", "top", "objectId", "parentId", "searchCode", "supportResizing", "parentScroll", "disabled", "disableEvents", "disableSelectionItems", "totalsRow"], outputs: ["fieldClick", "valueChange"] }, { kind: "pipe", type: i10.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
328
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: PepInternalPageComponent, decorators: [{
326
+ PepInternalPageComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PepInternalPageComponent, deps: [{ token: i1.PepDialogService }, { token: i2.PepInternalPageService }, { token: i3.PepCustomizationService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
327
+ PepInternalPageComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: PepInternalPageComponent, selector: "pep-internal-page", inputs: { field: "field", layoutType: "layoutType" }, outputs: { internalFormFieldChange: "internalFormFieldChange", internalFormFieldClick: "internalFormFieldClick" }, providers: [PepInternalPageService], viewQueries: [{ propertyName: "my1mm", first: true, predicate: ["my1mm"], descendants: true }, { propertyName: "mainViewCont", first: true, predicate: ["mainViewCont"], descendants: true }, { propertyName: "orgCont", first: true, predicate: ["orgCont"], descendants: true, read: ViewContainerRef }, { propertyName: "dialogCont", first: true, predicate: ["dialogCont"], descendants: true, read: ViewContainerRef }, { propertyName: "matrixTemplate", first: true, predicate: ["matrixTemplate"], descendants: true }, { propertyName: "matrixDialogTemplate", first: true, predicate: ["matrixDialogTemplate"], descendants: true, read: TemplateRef }, { propertyName: "customList", first: true, predicate: PepInternalListComponent, descendants: true }], ngImport: i0, template: "<ng-template #matrixHeaderTemplate>\n <div class=\"matrix-title-container pep-border-bottom align-{{\n field.xAlignment\n }}\" title=\"{{ field.label }}\">\n <span class=\"block-with-text body-md\">{{ field.label }}</span>\n\n <div class=\"buttons-container pep-spacing-element-negative pull-right flip\">\n <ng-container *ngIf=\"\n currentViewType?.Key == 'OrderCenterMatrix' &&\n additionalApiNames &&\n additionalApiNames.length > 0\n \">\n <button class=\"pep-spacing-element pep-button icon-button sm weak\" mat-button [matMenuTriggerFor]=\"menu\"\n menu-blur>\n <span class=\"pull-left flip\" *ngIf=\"currentAdditionalApiName\">&nbsp;{{\n currentAdditionalApiName?.Value }}&nbsp;</span>\n\n <mat-icon [ngClass]=\"{'pull-left flip': currentAdditionalApiName}\">\n <pep-icon name=\"system_info\"></pep-icon>\n </mat-icon>\n </button>\n <mat-menu #menu=\"matMenu\" xPosition=\"before\">\n <button mat-menu-item [ngClass]=\"{\n selected: currentAdditionalApiName === null\n }\" (click)=\"changeAdditionalApiName(null)\">\n <span>{{ \"LIST.NONE\" | translate }}</span>\n </button>\n <button mat-menu-item [ngClass]=\"{\n selected:\n currentAdditionalApiName?.Key ==\n additionalApiName?.Key\n }\" *ngFor=\"let additionalApiName of additionalApiNames\"\n (click)=\"changeAdditionalApiName(additionalApiName)\">\n <span>{{ additionalApiName.Value }}</span>\n </button>\n </mat-menu>\n </ng-container>\n <ng-container *ngIf=\"childViewTypes && childViewTypes.length > 1\">\n <button class=\"pep-spacing-element pep-button icon-button sm weak\" mat-button\n [matMenuTriggerFor]=\"viewsMenu\" menu-blur>\n <mat-icon>\n <pep-icon name=\"view_card_md\"></pep-icon>\n </mat-icon>\n </button>\n\n <mat-menu #viewsMenu=\"matMenu\" xPosition=\"before\">\n <button mat-menu-item [ngClass]=\"{\n selected: currentViewType?.Key == viewType?.Key\n }\" *ngFor=\"let viewType of childViewTypes\" (click)=\"changeChildrenViewType(viewType?.Key)\">\n <mat-icon [ngSwitch]=\"viewType?.Key\">\n <pep-icon *ngSwitchCase=\"'OrderCenterMatrix'\" name=\"view_matrix\"></pep-icon>\n <pep-icon *ngSwitchCase=\"'OrderCenterFlatMatrixGrid'\" name=\"view_table\"></pep-icon>\n <pep-icon *ngSwitchCase=\"'OrderCenterFlatMatrixLine'\" name=\"view_line\"></pep-icon>\n </mat-icon>\n <span>{{ viewType?.Value }}</span>\n </button>\n </mat-menu>\n </ng-container>\n </div>\n </div>\n\n</ng-template>\n\n<ng-template #matrixTemplate>\n <div #matrixContainer class=\"matrix-container\">\n <pep-internal-list (valueChange)=\"onCustomizeObjectChanged($event)\" [parentScroll]=\"matrixContainer\"\n (fieldClick)=\"onCustomizeFieldClick($event)\" [totalsRow]=\"totalsRow\"></pep-internal-list>\n </div>\n</ng-template>\n\n<div #mainViewCont id=\"mainViewCont\" [ngStyle]=\"{ 'max-width': viewWidth, 'max-height': viewHeight }\">\n <div #my1mm id=\"my1_mm\" style=\"height:1mm;width:1mm;visibility: hidden;\"></div>\n <ng-container *ngIf=\"coverChildTable && uiControl != null\">\n <div class=\"table-cover\"></div>\n <button (click)=\"showMatrixDialog()\" class=\"pep-button strong sm table-cover-button\"\n [ngClass]=\"{ 'lineview-btn': currentViewType?.Key == 'OrderCenterFlatMatrixLine'}\">\n {{ \"INTERNAL_PAGE.CLICK_TO_ORDER\" | translate }}\n </button>\n </ng-container>\n\n <ng-container *ngTemplateOutlet=\"matrixHeaderTemplate\"></ng-container>\n <ng-container #orgCont></ng-container>\n</div>\n\n<ng-template #matrixDialogTemplate>\n\n <div mat-dialog-title>\n <ng-container *ngTemplateOutlet=\"matrixHeaderTemplate\"></ng-container>\n </div>\n\n <div mat-dialog-content>\n <ng-container #dialogCont></ng-container>\n </div>\n</ng-template>\n\n<!-- <div id=\"childGridModal\" bsModal (onShown)=\"onShown()\" (onHidden)=\"onHidden()\" #childModal=\"bs-modal\" class=\"modal\"\n tabindex=\"-1\" role=\"dialog\" aria-labelledby=\"gridModalLabel\" aria-hidden=\"true\">\n <div class=\"modal-dialog\" role=\"document\">\n <div class=\"modal-content\">\n <div class=\"modal-body matrix-dialog-body\">\n <ng-container #modalCont></ng-container>\n </div>\n </div>\n </div>\n</div> -->", styles: [":host{display:grid;width:inherit;height:inherit}.matrix-title-container{padding:0;height:var(--pep-form-field-height, 2.5rem);display:flex;align-items:flex-end}.matrix-title-container .block-with-text{width:100%;max-height:inherit;font-weight:var(--pep-font-weight-bold, 600);display:block;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.matrix-title-container .buttons-container{display:flex;align-self:center}.matrix-title-container .buttons-container .pepperi-button,.matrix-title-container .buttons-container .pep-button{width:max-content}#mainViewCont{width:100%;height:inherit;overflow:hidden;padding:0 var(--pep-spacing-xs, .25rem)}#mainViewCont .table-cover{background-color:#fff;z-index:98;position:absolute;top:0;width:100%;height:inherit;opacity:.5}#mainViewCont .table-cover-button{position:absolute;left:50%;transform:translate(-50%,-50%);top:calc(50% + var(--pep-form-field-height, 2.5rem));z-index:99}#mainViewCont .table-cover-button.lineview-btn{top:calc(2 * var(--pep-form-field-height, 2.5rem));transform:translate(-50%)}#mainViewCont .underCover{max-height:inherit;overflow:hidden}#mainViewCont ::ng-deep .table-header{top:unset!important}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i4.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i4.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: i5.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i7.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i7.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i7.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "component", type: i8.PepIconComponent, selector: "pep-icon", inputs: ["spin", "name", "fill"] }, { kind: "component", type: i9.PepInternalListComponent, selector: "pep-internal-list", inputs: ["noDataFoundMsg", "hideAllSelectionInMulti", "top", "objectId", "parentId", "searchCode", "supportResizing", "parentScroll", "disabled", "disableEvents", "disableSelectionItems", "totalsRow"], outputs: ["fieldClick", "valueChange"] }, { kind: "pipe", type: i10.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
328
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PepInternalPageComponent, decorators: [{
329
329
  type: Component,
330
330
  args: [{ selector: 'pep-internal-page', providers: [PepInternalPageService], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-template #matrixHeaderTemplate>\n <div class=\"matrix-title-container pep-border-bottom align-{{\n field.xAlignment\n }}\" title=\"{{ field.label }}\">\n <span class=\"block-with-text body-md\">{{ field.label }}</span>\n\n <div class=\"buttons-container pep-spacing-element-negative pull-right flip\">\n <ng-container *ngIf=\"\n currentViewType?.Key == 'OrderCenterMatrix' &&\n additionalApiNames &&\n additionalApiNames.length > 0\n \">\n <button class=\"pep-spacing-element pep-button icon-button sm weak\" mat-button [matMenuTriggerFor]=\"menu\"\n menu-blur>\n <span class=\"pull-left flip\" *ngIf=\"currentAdditionalApiName\">&nbsp;{{\n currentAdditionalApiName?.Value }}&nbsp;</span>\n\n <mat-icon [ngClass]=\"{'pull-left flip': currentAdditionalApiName}\">\n <pep-icon name=\"system_info\"></pep-icon>\n </mat-icon>\n </button>\n <mat-menu #menu=\"matMenu\" xPosition=\"before\">\n <button mat-menu-item [ngClass]=\"{\n selected: currentAdditionalApiName === null\n }\" (click)=\"changeAdditionalApiName(null)\">\n <span>{{ \"LIST.NONE\" | translate }}</span>\n </button>\n <button mat-menu-item [ngClass]=\"{\n selected:\n currentAdditionalApiName?.Key ==\n additionalApiName?.Key\n }\" *ngFor=\"let additionalApiName of additionalApiNames\"\n (click)=\"changeAdditionalApiName(additionalApiName)\">\n <span>{{ additionalApiName.Value }}</span>\n </button>\n </mat-menu>\n </ng-container>\n <ng-container *ngIf=\"childViewTypes && childViewTypes.length > 1\">\n <button class=\"pep-spacing-element pep-button icon-button sm weak\" mat-button\n [matMenuTriggerFor]=\"viewsMenu\" menu-blur>\n <mat-icon>\n <pep-icon name=\"view_card_md\"></pep-icon>\n </mat-icon>\n </button>\n\n <mat-menu #viewsMenu=\"matMenu\" xPosition=\"before\">\n <button mat-menu-item [ngClass]=\"{\n selected: currentViewType?.Key == viewType?.Key\n }\" *ngFor=\"let viewType of childViewTypes\" (click)=\"changeChildrenViewType(viewType?.Key)\">\n <mat-icon [ngSwitch]=\"viewType?.Key\">\n <pep-icon *ngSwitchCase=\"'OrderCenterMatrix'\" name=\"view_matrix\"></pep-icon>\n <pep-icon *ngSwitchCase=\"'OrderCenterFlatMatrixGrid'\" name=\"view_table\"></pep-icon>\n <pep-icon *ngSwitchCase=\"'OrderCenterFlatMatrixLine'\" name=\"view_line\"></pep-icon>\n </mat-icon>\n <span>{{ viewType?.Value }}</span>\n </button>\n </mat-menu>\n </ng-container>\n </div>\n </div>\n\n</ng-template>\n\n<ng-template #matrixTemplate>\n <div #matrixContainer class=\"matrix-container\">\n <pep-internal-list (valueChange)=\"onCustomizeObjectChanged($event)\" [parentScroll]=\"matrixContainer\"\n (fieldClick)=\"onCustomizeFieldClick($event)\" [totalsRow]=\"totalsRow\"></pep-internal-list>\n </div>\n</ng-template>\n\n<div #mainViewCont id=\"mainViewCont\" [ngStyle]=\"{ 'max-width': viewWidth, 'max-height': viewHeight }\">\n <div #my1mm id=\"my1_mm\" style=\"height:1mm;width:1mm;visibility: hidden;\"></div>\n <ng-container *ngIf=\"coverChildTable && uiControl != null\">\n <div class=\"table-cover\"></div>\n <button (click)=\"showMatrixDialog()\" class=\"pep-button strong sm table-cover-button\"\n [ngClass]=\"{ 'lineview-btn': currentViewType?.Key == 'OrderCenterFlatMatrixLine'}\">\n {{ \"INTERNAL_PAGE.CLICK_TO_ORDER\" | translate }}\n </button>\n </ng-container>\n\n <ng-container *ngTemplateOutlet=\"matrixHeaderTemplate\"></ng-container>\n <ng-container #orgCont></ng-container>\n</div>\n\n<ng-template #matrixDialogTemplate>\n\n <div mat-dialog-title>\n <ng-container *ngTemplateOutlet=\"matrixHeaderTemplate\"></ng-container>\n </div>\n\n <div mat-dialog-content>\n <ng-container #dialogCont></ng-container>\n </div>\n</ng-template>\n\n<!-- <div id=\"childGridModal\" bsModal (onShown)=\"onShown()\" (onHidden)=\"onHidden()\" #childModal=\"bs-modal\" class=\"modal\"\n tabindex=\"-1\" role=\"dialog\" aria-labelledby=\"gridModalLabel\" aria-hidden=\"true\">\n <div class=\"modal-dialog\" role=\"document\">\n <div class=\"modal-content\">\n <div class=\"modal-body matrix-dialog-body\">\n <ng-container #modalCont></ng-container>\n </div>\n </div>\n </div>\n</div> -->", styles: [":host{display:grid;width:inherit;height:inherit}.matrix-title-container{padding:0;height:var(--pep-form-field-height, 2.5rem);display:flex;align-items:flex-end}.matrix-title-container .block-with-text{width:100%;max-height:inherit;font-weight:var(--pep-font-weight-bold, 600);display:block;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.matrix-title-container .buttons-container{display:flex;align-self:center}.matrix-title-container .buttons-container .pepperi-button,.matrix-title-container .buttons-container .pep-button{width:max-content}#mainViewCont{width:100%;height:inherit;overflow:hidden;padding:0 var(--pep-spacing-xs, .25rem)}#mainViewCont .table-cover{background-color:#fff;z-index:98;position:absolute;top:0;width:100%;height:inherit;opacity:.5}#mainViewCont .table-cover-button{position:absolute;left:50%;transform:translate(-50%,-50%);top:calc(50% + var(--pep-form-field-height, 2.5rem));z-index:99}#mainViewCont .table-cover-button.lineview-btn{top:calc(2 * var(--pep-form-field-height, 2.5rem));transform:translate(-50%)}#mainViewCont .underCover{max-height:inherit;overflow:hidden}#mainViewCont ::ng-deep .table-header{top:unset!important}\n"] }]
331
331
  }], ctorParameters: function () { return [{ type: i1.PepDialogService }, { type: i2.PepInternalPageService }, { type: i3.PepCustomizationService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { field: [{
@@ -358,4 +358,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImpor
358
358
  type: ViewChild,
359
359
  args: [PepInternalListComponent]
360
360
  }] } });
361
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJuYWwtcGFnZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbGliL2Zvcm0vaW50ZXJuYWwtcGFnZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbGliL2Zvcm0vaW50ZXJuYWwtcGFnZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUdULEtBQUssRUFDTCxNQUFNLEVBQ04sWUFBWSxFQUNaLFNBQVMsRUFFVCxnQkFBZ0IsRUFDaEIsV0FBVyxFQUNYLHVCQUF1QixHQUUxQixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUVqRSxPQUFPLEVBT0gsVUFBVSxHQUNiLE1BQU0seUJBQXlCLENBQUM7QUFDakMsT0FBTyxFQUNILHdCQUF3QixHQUUzQixNQUFNLDJCQUEyQixDQUFDO0FBTW5DLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDakMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlDLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDJDQUEyQyxDQUFDOzs7Ozs7Ozs7Ozs7QUFTekYsTUFBTSxPQUFPLHdCQUF3QjtJQXVEakMsWUFDWSxhQUErQixFQUMvQixtQkFBMkMsRUFDNUMsb0JBQTZDLEVBQzVDLGlCQUFvQztRQUhwQyxrQkFBYSxHQUFiLGFBQWEsQ0FBa0I7UUFDL0Isd0JBQW1CLEdBQW5CLG1CQUFtQixDQUF3QjtRQUM1Qyx5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXlCO1FBQzVDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUF2RGhELGdCQUFXLEdBQUcsY0FBYyxDQUFDO1FBR3BCLGVBQVUsR0FBa0IsTUFBTSxDQUFDO1FBRzVDLDRCQUF1QixHQUFzQixJQUFJ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QUs7c0JBQXhCLFNBQVM7dUJBQUMsT0FBTztnQkFDUyxZQUFZO3NCQUF0QyxTQUFTO3VCQUFDLGNBQWM7Z0JBRXlCLE9BQU87c0JBQXhELFNBQVM7dUJBQUMsU0FBUyxFQUFFLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFO2dCQUVoRCxVQUFVO3NCQURULFNBQVM7dUJBQUMsWUFBWSxFQUFFLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFO2dCQUV0QixjQUFjO3NCQUExQyxTQUFTO3VCQUFDLGdCQUFnQjtnQkFFM0Isb0JBQW9CO3NCQURuQixTQUFTO3VCQUFDLHNCQUFzQixFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRTtnQkFJeEQsVUFBVTtzQkFEVCxTQUFTO3VCQUFDLHdCQUF3QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIE9uSW5pdCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgSW5wdXQsXG4gICAgT3V0cHV0LFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBWaWV3Q2hpbGQsXG4gICAgRWxlbWVudFJlZixcbiAgICBWaWV3Q29udGFpbmVyUmVmLFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFBlcEludGVybmFsUGFnZVNlcnZpY2UgfSBmcm9tICcuL2ludGVybmFsLXBhZ2Uuc2VydmljZSc7XG5cbmltcG9ydCB7XG4gICAgUGVwTGF5b3V0VHlwZSxcbiAgICBVSUNvbnRyb2wsXG4gICAgS2V5VmFsdWVQYWlyLFxuICAgIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLFxuICAgIFVJQ29udHJvbEZpZWxkLFxuICAgIE9iamVjdHNEYXRhLFxuICAgIEZJRUxEX1RZUEUsXG59IGZyb20gJ0BwZXBwZXJpLWFkZG9ucy9uZ3gtbGliJztcbmltcG9ydCB7XG4gICAgUGVwSW50ZXJuYWxMaXN0Q29tcG9uZW50LFxuICAgIFBlcExpc3RWaWV3VHlwZSxcbn0gZnJvbSAnLi9pbnRlcm5hbC1saXN0LmNvbXBvbmVudCc7XG5pbXBvcnQge1xuICAgIElQZXBGb3JtRmllbGRDbGlja0V2ZW50LFxuICAgIElQZXBGb3JtRmllbGRWYWx1ZUNoYW5nZUV2ZW50LFxufSBmcm9tICcuL2Zvcm0ubW9kZWwnO1xuaW1wb3J0IHsgUGVwRGlhbG9nU2VydmljZSB9IGZyb20gJ0BwZXBwZXJpLWFkZG9ucy9uZ3gtbGliL2RpYWxvZyc7XG5pbXBvcnQgeyBmcm9tRXZlbnQgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFBlcFF1YW50aXR5U2VsZWN0b3JDb21wb25lbnQgfSBmcm9tICdAcGVwcGVyaS1hZGRvbnMvbmd4LWxpYi9xdWFudGl0eS1zZWxlY3Rvcic7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncGVwLWludGVybmFsLXBhZ2UnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9pbnRlcm5hbC1wYWdlLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9pbnRlcm5hbC1wYWdlLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgcHJvdmlkZXJzOiBbUGVwSW50ZXJuYWxQYWdlU2VydmljZV0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFBlcEludGVybmFsUGFnZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICBzdGF0aWMgQ1VSUkVOVF9BRERJVElPTkFMX0FQSV9OQU1FID1cbiAgICAgICAgJ2l0ZW1fZGV0YWlsc19jdXJyZW50QWRkaXRpb25hbEFwaU5hbWUnO1xuXG4gICAgY29udHJvbFR5cGUgPSAnaW50ZXJuYWxQYWdlJztcblxuICAgIEBJbnB1dCgpIGZpZWxkOiBhbnk7XG4gICAgQElucHV0KCkgbGF5b3V0VHlwZTogUGVwTGF5b3V0VHlwZSA9ICdmb3JtJztcblxuICAgIEBPdXRwdXQoKVxuICAgIGludGVybmFsRm9ybUZpZWxkQ2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICAgIEBPdXRwdXQoKVxuICAgIGludGVybmFsRm9ybUZpZWxkQ2xpY2s6IEV2ZW50RW1pdHRlcjxJUGVwRm9ybUZpZWxkQ2xpY2tFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPElQZXBGb3JtRmllbGRDbGlja0V2ZW50PigpO1xuXG4gICAgQFZpZXdDaGlsZCgnbXkxbW0nKSBteTFtbTogRWxlbWVudFJlZjtcbiAgICBAVmlld0NoaWxkKCdtYWluVmlld0NvbnQnKSBtYWluVmlld0NvbnQ6IEVsZW1lbnRSZWY7XG5cbiAgICBAVmlld0NoaWxkKCdvcmdDb250JywgeyByZWFkOiBWaWV3Q29udGFpbmVyUmVmIH0pIG9yZ0NvbnQ6IFZpZXdDb250YWluZXJSZWY7XG4gICAgQFZpZXdDaGlsZCgnZGlhbG9nQ29udCcsIHsgcmVhZDogVmlld0NvbnRhaW5lclJlZiB9KVxuICAgIGRpYWxvZ0NvbnQ6IFZpZXdDb250YWluZXJSZWY7XG4gICAgQFZpZXdDaGlsZCgnbWF0cml4VGVtcGxhdGUnKSBtYXRyaXhUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcbiAgICBAVmlld0NoaWxkKCdtYXRyaXhEaWFsb2dUZW1wbGF0ZScsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSlcbiAgICBtYXRyaXhEaWFsb2dUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIEBWaWV3Q2hpbGQoUGVwSW50ZXJuYWxMaXN0Q29tcG9uZW50KVxuICAgIGN1c3RvbUxpc3Q6IFBlcEludGVybmFsTGlzdENvbXBvbmVudDtcblxuICAgIHJlc2l6ZTogYW55O1xuICAgIGNoZWNrRm9yQ2hhbmdlczogYW55ID0gbnVsbDtcblxuICAgIGNoaWxkRGF0YTogYW55ID0gbnVsbDtcblxuICAgIGVtcHR5Rm9ybTogRm9ybUdyb3VwO1xuICAgIHVpQ29udHJvbDogVUlDb250cm9sO1xuICAgIHJvd3M6IGFueTtcbiAgICBsaW5lVmlld1Jvd3M6IGFueTtcbiAgICB0b3RhbHNSb3c6IGFueSA9IFtdO1xuICAgIGFkZGl0aW9uYWxBcGlOYW1lczogYW55ID0gbnVsbDtcbiAgICBjdXJyZW50QWRkaXRpb25hbEFwaU5hbWU6IGFueSA9IG51bGw7XG4gICAgZm9jdXNlZFFTID0gZmFsc2U7XG4gICAgZmllbGRJZFdpdGhGb2N1cyA9ICcnO1xuICAgIGNvbHVtbldpZHRoID0gMTAwO1xuICAgIGNvdmVyQ2hpbGRUYWJsZSA9IGZhbHNlO1xuICAgIGNoaWxkVmlld1R5cGVzOiBBcnJheTxLZXlWYWx1ZVBhaXI8c3RyaW5nPj47XG4gICAgY3VycmVudFZpZXdUeXBlOiBLZXlWYWx1ZVBhaXI8c3RyaW5nPiA9IG51bGw7XG4gICAgY3VycmVudFZpZXdUeXBlVGl0bGU6IHN0cmluZztcbiAgICBzdW1PZk1pbkNvbFdpZHRoID0gMDtcbiAgICB0b3RhbFJvd3NXaWR0aCA9IDA7XG4gICAgdmlld1dpZHRoID0gJzEwMCUnO1xuICAgIHZpZXdIZWlnaHQgPSAnYXV0byc7XG4gICAgZGlzcGxheVFTYnRucyA9IHRydWU7XG4gICAgc2VsZWN0ZWRBcGlOYW1lID0gJyc7XG4gICAgc2hvd1NvcnQgPSBmYWxzZTtcbiAgICBkZWZhdWx0Um93U3BhbiA9IC0xO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgZGlhbG9nU2VydmljZTogUGVwRGlhbG9nU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBpbnRlcm5hbFBhZ2VTZXJ2aWNlOiBQZXBJbnRlcm5hbFBhZ2VTZXJ2aWNlLFxuICAgICAgICBwdWJsaWMgY3VzdG9taXphdGlvblNlcnZpY2U6IFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZlxuICAgICkgeyB9XG5cbiAgICBwcml2YXRlIGZpbGxEYXRhKGlzSW5EaWFsb2cgPSBmYWxzZSk6IHZvaWQge1xuICAgICAgICBjb25zdCB2aWV3ID0gdGhpcy5tYXRyaXhUZW1wbGF0ZS5jcmVhdGVFbWJlZGRlZFZpZXcobnVsbCk7XG5cbiAgICAgICAgdGhpcy5jdXN0b21MaXN0Py5jbGVhcigpO1xuICAgICAgICB0aGlzLm9yZ0NvbnQ/LmNsZWFyKCk7XG5cbiAgICAgICAgaWYgKGlzSW5EaWFsb2cpIHtcbiAgICAgICAgICAgIHRoaXMuZGlhbG9nQ29udD8uY2xlYXIoKTtcbiAgICAgICAgICAgIHRoaXMuZGlhbG9nQ29udD8uaW5zZXJ0KHZpZXcpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5vcmdDb250Py5pbnNlcnQodmlldyk7XG4gICAgICAgIH1cblxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHZpZXdUeXBlOiBQZXBMaXN0Vmlld1R5cGUgPSB0aGlzLmlzVGFibGVWaWV3KClcbiAgICAgICAgICAgICAgICA/ICd0YWJsZSdcbiAgICAgICAgICAgICAgICA6ICdsaW5lcyc7XG4gICAgICAgICAgICB0aGlzLmN1c3RvbUxpc3QuaW5pdExpc3REYXRhKFxuICAgICAgICAgICAgICAgIHRoaXMudWlDb250cm9sLFxuICAgICAgICAgICAgICAgIHRoaXMuY2hpbGREYXRhLlRvdGFsUm93cyxcbiAgICAgICAgICAgICAgICB0aGlzLmNoaWxkRGF0YS5Sb3dzLFxuICAgICAgICAgICAgICAgIHZpZXdUeXBlXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy5zZXRUb3RhbHNSb3coKTtcblxuICAgICAgICAgICAgLy8gaWYgKCF0aGlzLmNoaWxkTW9kYWwuaXNTaG93bikge1xuICAgICAgICAgICAgY29uc3QgY2hpbGRyZW5Db3VudCA9IHRoaXMuY2hpbGREYXRhLlJvd3NcbiAgICAgICAgICAgICAgICA/IHRoaXMuY2hpbGREYXRhLlJvd3MubGVuZ3RoXG4gICAgICAgICAgICAgICAgOiAwO1xuICAgICAgICAgICAgY29uc3QgaXNFdmVuID0gY2hpbGRyZW5Db3VudCAlIDIgPT09IDA7XG4gICAgICAgICAgICAvLyAzIGZvciBtYXRyaXggJiBmbGF0IG1hdHJpeCBiZWNhdXNlIHRoZSBoZWFkZXIgKyB0b3RhbCBpcyAyIG1vcmUgcm93cy5cbiAgICAgICAgICAgIGNvbnN0IHJvd3NUb0FkZCA9XG4gICAgICAgICAgICAgICAgdGhpcy5pc01hdHJpeFZpZXcoKSB8fCB0aGlzLmlzRmxhdE1hdHJpeFZpZXcoKVxuICAgICAgICAgICAgICAgICAgICA/IGlzRXZlblxuICAgICAgICAgICAgICAgICAgICAgICAgPyAzXG4gICAgICAgICAgICAgICAgICAgICAgICA6IDRcbiAgICAgICAgICAgICAgICAgICAgOiAxO1xuXG4gICAgICAgICAgICBjb25zdCBmb3JtUm93SGVpZ2h0ID1cbiAgICAgICAgICAgICAgICB0aGlzLmN1c3RvbWl6YXRpb25TZXJ2aWNlLmNhbGN1bGF0ZUZvcm1GaWVsZEhlaWdodCgpICogMTY7IC8vIGNvbnZlcnQgcmVtIHRvIHBpeGVsXG5cbiAgICAgICAgICAgIC8vIFNldCB0aGUgZGVmYXVsdCBvbmx5IGlmIG5vdCBzZXQgeWV0LlxuICAgICAgICAgICAgaWYgKHRoaXMuZGVmYXVsdFJvd1NwYW4gPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5kZWZhdWx0Um93U3BhbiA9IHRoaXMuZmllbGQucm93U3BhbjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5zdW1PZk1pbkNvbFdpZHRoID0gMDtcbiAgICAgICAgICAgIHRoaXMudG90YWxSb3dzV2lkdGggPSAwO1xuXG4gICAgICAgICAgICB0aGlzLmNoaWxkRGF0YS5VSUNvbnRyb2wuQ29udHJvbEZpZWxkcy5mb3JFYWNoKFxuICAgICAgICAgICAgICAgICh1aUNvbnRyb2xGaWVsZDogVUlDb250cm9sRmllbGQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50b3RhbFJvd3NXaWR0aCArPSB1aUNvbnRyb2xGaWVsZC5Db2x1bW5XaWR0aDtcbiAgICAgICAgICAgICAgICAgICAgdWlDb250cm9sRmllbGQubWluRmllbGRXaWR0aCA9IHRoaXMubW1Ub1B4KDEyKTsgLy8gTkVFRCBUTyBHRVQgVEhJUyBQQVJBTSBGUk9NIENVU1RPTUlaQVRJT047XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3VtT2ZNaW5Db2xXaWR0aCArPSAxMjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICB0aGlzLnNldFZpZXdDb3Zlcih0aGlzLmNoaWxkRGF0YS5Sb3dzKTtcblxuICAgICAgICAgICAgaWYgKHRoaXMuY292ZXJDaGlsZFRhYmxlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5maWVsZC5yb3dTcGFuID0gdGhpcy5kZWZhdWx0Um93U3BhbjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gRm9yIGxpbmUgdmlldyBBZGQgdGhlIGhlaWdodCBvZiB0aGUgbGluZSAoZm9ybSBoZWlnaHQpLlxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmN1cnJlbnRWaWV3VHlwZS5LZXkgPT09ICdPcmRlckNlbnRlckZsYXRNYXRyaXhMaW5lJykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBtYXhSb3cgPSBNYXRoLm1heChcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMudWlDb250cm9sLkNvbnRyb2xGaWVsZHMubWFwKChmKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGYuTGF5b3V0LlkgKyBmLkxheW91dC5IZWlnaHQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgIC8vICogMTYgY29udmVydCByZW0gdG8gcGl4ZWxcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2FyZFJvd3NIZWlnaHQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jdXN0b21pemF0aW9uU2VydmljZS5jYWxjdWxhdGVDYXJkUm93c0hlaWdodChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhSb3dcbiAgICAgICAgICAgICAgICAgICAgICAgICkgKiAxNjtcblxuICAgICAgICAgICAgICAgICAgICAvLyBtYXhSb3cgKiAyNCArIDYwIC0gMjQgZm9yIGVhY2ggcm93IGluIGNhcmQgKyA2MCBmb3IgdGhlIHBhZGRpbmcgb2YgZWFjaCBjYXJkLlxuICAgICAgICAgICAgICAgICAgICAvLyBjb25zdCByb3dTcGFuVG9BZGQgPSBjaGlsZHJlbkNvdW50ICogKChjYXJkUm93c0hlaWdodCArIDI0KSAvIGZvcm1Sb3dIZWlnaHQpICsgcm93c1RvQWRkO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByb3dTcGFuVG9BZGQgPSBcbiAgICAgICAgICAgICAgICAgICAgICAgIChjaGlsZHJlbkNvdW50ICogKGNhcmRSb3dzSGVpZ2h0ICsgMjQpKSAvXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtUm93SGVpZ2h0ICtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvd3NUb0FkZDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5maWVsZC5yb3dTcGFuID0gcm93U3BhblRvQWRkO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGNvbnN0IHRhYmxlUm93c0hlaWdodCA9IHRoaXMuY3VzdG9taXphdGlvblNlcnZpY2UuY2FsY3VsYXRlVGFibGVSb3dzSGVpZ2h0KGNoaWxkcmVuQ291bnQpICogMTY7XG4gICAgICAgICAgICAgICAgICAgIC8vIHRoaXMuZmllbGQucm93U3BhbiA9IE1hdGguY2VpbCgodGFibGVSb3dzSGVpZ2h0ICsgKHJvd3NUb0FkZCAqIDQwKSkgLyBmb3JtUm93SGVpZ2h0KTtcbiAgICAgICAgICAgICAgICAgICAgLy8gKiAxNiBjb252ZXJ0IHJlbSB0byBwaXhlbFxuICAgICAgICAgICAgICAgICAgICBjb25zdCByb3dzVG9BZGRIZWlnaHQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jdXN0b21pemF0aW9uU2VydmljZS5jYWxjdWxhdGVUYWJsZVJvd3NIZWlnaHQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93c1RvQWRkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICApICogMTY7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRhYmxlUm93c0hlaWdodCA9XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmN1c3RvbWl6YXRpb25TZXJ2aWNlLmNhbGN1bGF0ZVRhYmxlUm93c0hlaWdodChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbkNvdW50XG4gICAgICAgICAgICAgICAgICAgICAgICApICogMTY7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZmllbGQucm93U3BhbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAocm93c1RvQWRkSGVpZ2h0ICsgdGFibGVSb3dzSGVpZ2h0KSAvIGZvcm1Sb3dIZWlnaHQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9LCAwKTtcblxuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZmlsbENoaWxkRGF0YShyZXM6IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLmNoaWxkRGF0YSA9IHJlcztcbiAgICAgICAgdGhpcy51aUNvbnRyb2wgPSByZXMuVUlDb250cm9sO1xuICAgICAgICB0aGlzLmFkZGl0aW9uYWxBcGlOYW1lcyA9IHJlcy5BZGRpdGlvbmFsQXBpTmFtZXM7XG5cbiAgICAgICAgdGhpcy5maWxsRGF0YSgpO1xuICAgIH1cblxuICAgIG1tVG9QeChtbSk6IG51bWJlciB7XG4gICAgICAgIGNvbnN0IGhlaWdodCA9IHRoaXMubXkxbW0ubmF0aXZlRWxlbWVudC5jbGllbnRIZWlnaHQ7XG4gICAgICAgIHJldHVybiBNYXRoLmZsb29yKG1tICogaGVpZ2h0KTsgLy8gcmV0dXJucyBzaXplcyBpbiBQWFxuICAgIH1cblxuICAgIHByaXZhdGUgaXNNYXRyaXhWaWV3KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgdGhpcy5jdXJyZW50Vmlld1R5cGUgJiZcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFZpZXdUeXBlLktleSA9PT0gJ09yZGVyQ2VudGVyTWF0cml4J1xuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNGbGF0TWF0cml4VmlldygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFZpZXdUeXBlICYmXG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRWaWV3VHlwZS5LZXkgPT09ICdPcmRlckNlbnRlckZsYXRNYXRyaXhHcmlkJ1xuICAgICAgICApO1xuICAgIH1cblxuICAgIGlzVGFibGVWaWV3KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5pc01hdHJpeFZpZXcoKSB8fCB0aGlzLmlzRmxhdE1hdHJpeFZpZXcoKTtcbiAgICB9XG5cbiAgICBjaGFuZ2VDaGlsZHJlblZpZXdUeXBlKHZpZXdUeXBlS2V5OiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5yb3dzID0gW107XG4gICAgICAgIHRoaXMudWlDb250cm9sID0gbnVsbDtcblxuICAgICAgICBmb3IgKGNvbnN0IHZ0IG9mIHRoaXMuY2hpbGRWaWV3VHlwZXMpIHtcbiAgICAgICAgICAgIGlmICh2dC5LZXkgPT09IHZpZXdUeXBlS2V5KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50Vmlld1R5cGUgPSB2dDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY3VycmVudFZpZXdUeXBlVGl0bGUgPSB0aGlzLmN1cnJlbnRWaWV3VHlwZS5WYWx1ZTtcblxuICAgICAgICB0aGlzLmludGVybmFsUGFnZVNlcnZpY2UuY2hhbmdlQ2hpbGRyZW5WaWV3VHlwZShcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFZpZXdUeXBlLktleSxcbiAgICAgICAgICAgIChyZXM6IE9iamVjdHNEYXRhKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHJlcy5Sb3dzKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZmlsbENoaWxkRGF0YShyZXMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBzZXRWaWV3Q292ZXIocm93cyk6IHZvaWQge1xuICAgICAgICBpZiAoIXJvd3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG1hdHJpeENvbnQgPSB0aGlzLm1haW5WaWV3Q29udC5uYXRpdmVFbGVtZW50O1xuICAgICAgICBjb25zdCB2aWV3V2lkdGggPSBtYXRyaXhDb250LmNsaWVudFdpZHRoO1xuXG4gICAgICAgIHRoaXMudmlld1dpZHRoID0gdmlld1dpZHRoID8gdmlld1dpZHRoLnRvU3RyaW5nKCkgOiAnMTAwJSc7XG5cbiAgICAgICAgLy8gaWYgdGhlIG1hdHJpeCBsb2NhdGVkIG9uIHRoZSBib3R0b20gLyB0aGVyZSBpcyBub3RoaW5nIHVuZGVyIHRoZSBtYXRyaXggd2UgZG9udCBuZWVkIHRvIGNoZWNrIHRoZSBoZWlnaHRcbiAgICAgICAgaWYgKHBhcnNlSW50KHZpZXdXaWR0aCwgMTApIDwgdGhpcy5tbVRvUHgodGhpcy5zdW1PZk1pbkNvbFdpZHRoKSkge1xuICAgICAgICAgICAgdGhpcy5jb3ZlckNoaWxkVGFibGUgPSB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jb3ZlckNoaWxkVGFibGUgPSBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgc2hvd01hdHJpeERpYWxvZygpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgY29uZmlnID0gdGhpcy5kaWFsb2dTZXJ2aWNlLmdldERpYWxvZ0NvbmZpZyhcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBkaXNhYmxlQ2xvc2U6IGZhbHNlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICdsYXJnZSdcbiAgICAgICAgKTtcblxuICAgICAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZ1NlcnZpY2Uub3BlbkRpYWxvZyhcbiAgICAgICAgICAgIHRoaXMubWF0cml4RGlhbG9nVGVtcGxhdGUsXG4gICAgICAgICAgICB7fSxcbiAgICAgICAgICAgIGNvbmZpZ1xuICAgICAgICApO1xuXG4gICAgICAgIGRpYWxvZ1JlZi5hZnRlck9wZW5lZCgpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmZpbGxEYXRhKHRydWUpO1xuICAgICAgICB9KTtcblxuICAgICAgICBkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmZpbGxEYXRhKGZhbHNlKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIC8vIGxldCBmaWVsZCA9IHRoaXMuZmllbGQgYXMgUGVwSW50ZXJuYWxQYWdlRmllbGQ7XG5cbiAgICAgICAgdGhpcy5pbnRlcm5hbFBhZ2VTZXJ2aWNlLmluaXREZXRhaWxzKFxuICAgICAgICAgICAgdGhpcy5maWVsZC5vYmplY3RJZCxcbiAgICAgICAgICAgIHRoaXMuZmllbGQucGFyZW50SWQsXG4gICAgICAgICAgICB0aGlzLmZpZWxkLnNlYXJjaENvZGUsXG4gICAgICAgICAgICAocmVzVmlld1R5cGVzOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAvLyBteSBjb2RlIERJLTcxMzRcbiAgICAgICAgICAgICAgICByZXNWaWV3VHlwZXMuUm93cyA9IHJlc1ZpZXdUeXBlcy5Sb3dzLmZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgKGl0ZW0pID0+IGl0ZW0uS2V5ICE9PSAnT3JkZXJDZW50ZXJWaWV3MSdcbiAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgaWYgKHJlc1ZpZXdUeXBlcy5Sb3dzICYmIHJlc1ZpZXdUeXBlcy5Sb3dzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFyZXNWaWV3VHlwZXMuRGVmYXVsdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzVmlld1R5cGVzLkRlZmF1bHQgPSByZXNWaWV3VHlwZXMuUm93c1swXS5LZXk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGlsZFZpZXdUeXBlcyA9IHJlc1ZpZXdUeXBlcy5Sb3dzO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRWaWV3VHlwZSA9IHJlc1ZpZXdUeXBlcy5Sb3dzWzBdO1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIGZvciAodmFyIGkgPSAwOyBpIDwgcmVzVmlld1R5cGVzLlJvd3MubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCB2aWV3VHlwZVJvdyBvZiByZXNWaWV3VHlwZXMuUm93cykge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZpZXdUeXBlUm93LlZhbHVlID09PSByZXNWaWV3VHlwZXMuRGVmYXVsdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudFZpZXdUeXBlID0gdmlld1R5cGVSb3c7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWRMYXN0QWRkaXRpb25hbEFwaU5hbWUoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VDaGlsZHJlblZpZXdUeXBlKHRoaXMuY3VycmVudFZpZXdUeXBlLktleSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMucmVzaXplID0gZnJvbUV2ZW50KHdpbmRvdywgJ3Jlc2l6ZScpXG4gICAgICAgICAgICAucGlwZShkZWJvdW5jZVRpbWUoMTApKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldFZpZXdDb3Zlcih0aGlzLnJvd3MpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbG9hZExhc3RBZGRpdGlvbmFsQXBpTmFtZSgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZGFhID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShcbiAgICAgICAgICAgIFBlcEludGVybmFsUGFnZUNvbXBvbmVudC5DVVJSRU5UX0FERElUSU9OQUxfQVBJX05BTUVcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKGRhYSAmJiBkYWEubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgY29uc3QgYWRkaXRpb25hbEFwaU5hbWUgPSBKU09OLnBhcnNlKGRhYSk7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRBZGRpdGlvbmFsQXBpTmFtZSA9IGFkZGl0aW9uYWxBcGlOYW1lO1xuICAgICAgICAgICAgdGhpcy5pbnRlcm5hbFBhZ2VTZXJ2aWNlLmFkZGl0aW9uYWxBcGlOYW1lID0gYWRkaXRpb25hbEFwaU5hbWU/LktleTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5yZXNpemUpIHtcbiAgICAgICAgICAgIHRoaXMucmVzaXplLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjaGFuZ2VBZGRpdGlvbmFsQXBpTmFtZShhZGRpdGlvbmFsQXBpTmFtZSk6IHZvaWQge1xuICAgICAgICB0aGlzLmludGVybmFsUGFnZVNlcnZpY2UuY2hhbmdlQWRkaXRpb25hbEFwaU5hbWUoXG4gICAgICAgICAgICBhZGRpdGlvbmFsQXBpTmFtZSA/IGFkZGl0aW9uYWxBcGlOYW1lLktleSA6ICcnLFxuICAgICAgICAgICAgKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgLy8gZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHJlcy5Sb3dzLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3Qgcm93IG9mIHJlcy5Sb3dzKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlQ2hhbmdlcyhyb3cpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG5cbiAgICAgICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbShcbiAgICAgICAgICAgIFBlcEludGVybmFsUGFnZUNvbXBvbmVudC5DVVJSRU5UX0FERElUSU9OQUxfQVBJX05BTUUsXG4gICAgICAgICAgICBKU09OLnN0cmluZ2lmeShhZGRpdGlvbmFsQXBpTmFtZSlcbiAgICAgICAgKTtcblxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudEFkZGl0aW9uYWxBcGlOYW1lID0gYWRkaXRpb25hbEFwaU5hbWU7XG4gICAgICAgIH0sIDApO1xuICAgIH1cblxuICAgIHNldFRvdGFsc1JvdygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy50b3RhbHNSb3cgPSBbXTtcblxuICAgICAgICBpZiAodGhpcy5pc01hdHJpeFZpZXcoKSB8fCB0aGlzLmlzRmxhdE1hdHJpeFZpZXcoKSkge1xuICAgICAgICAgICAgbGV0IHRvdGFsQ29sID0gMDtcblxuICAgICAgICAgICAgY29uc3QgaXRlbXMgPSB0aGlzLmN1c3RvbUxpc3QuaXRlbXM7XG4gICAgICAgICAgICBpZiAoaXRlbXMpIHtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBjb2wgPSAwOyBjb2wgPCBpdGVtc1swXS5GaWVsZHMubGVuZ3RoOyBjb2wrKykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBmaWVsZCA9IGl0ZW1zWzBdLkZpZWxkc1tjb2xdO1xuICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWVsZC5GaWVsZFR5cGUgPT09IEZJRUxEX1RZUEUuTnVtYmVySW50ZWdlckZvck1hdHJpeCB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQuRmllbGRUeXBlID09PVxuICAgICAgICAgICAgICAgICAgICAgICAgRklFTERfVFlQRS5OdW1iZXJJbnRlZ2VyUXVhbnRpdHlTZWxlY3RvciB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQuRmllbGRUeXBlID09PSBGSUVMRF9UWVBFLk51bWJlclJlYWxGb3JNYXRyaXggfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkLkZpZWxkVHlwZSA9PT1cbiAgICAgICAgICAgICAgICAgICAgICAgIEZJRUxEX1RZUEUuTnVtYmVyUmVhbFF1YW50aXR5U2VsZWN0b3IgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkLkZpZWxkVHlwZSA9PT0gRklFTERfVFlQRS5DYWxjdWxhdGVkSW50IHx8XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWVsZC5GaWVsZFR5cGUgPT09IEZJRUxEX1RZUEUuTnVtYmVySW50ZWdlciB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQuRmllbGRUeXBlID09PSBGSUVMRF9UWVBFLkNhbGN1bGF0ZWRSZWFsIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWVsZC5GaWVsZFR5cGUgPT09IEZJRUxEX1RZUEUuTnVtYmVyUmVhbFxuICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvdGFsQ29sID0gMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgbGlzdEl0ZW0gb2YgaXRlbXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RJdGVtLkZpZWxkc1tjb2xdICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RJdGVtLkZpZWxkc1tjb2xdLlZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG51bSA9IHBhcnNlRmxvYXQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0SXRlbS5GaWVsZHNbY29sXS5WYWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3RhbENvbCArPSBpc05hTihudW0pID8gMCA6IG51bTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRvdGFsc1Jvdy5wdXNoKHRvdGFsQ29sKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudG90YWxzUm93LnB1c2goJycpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgdXBkYXRlQ2hhbmdlcyhlbGVtZW50VG9VcGRhdGU6IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLmN1c3RvbUxpc3QudXBkYXRlSXRlbShlbGVtZW50VG9VcGRhdGUpO1xuXG4gICAgICAgIC8vIFVwZGF0ZSBtZW1vcnkgZGF0YVxuICAgICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgdGhpcy5jaGlsZERhdGEuUm93cy5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmNoaWxkRGF0YS5Sb3dzW2luZGV4XS5VSUQgPT09IGVsZW1lbnRUb1VwZGF0ZS5VSUQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNoaWxkRGF0YS5Sb3dzW2luZGV4XSA9IGVsZW1lbnRUb1VwZGF0ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNldFZhbHVlQ2FsbGJhY2soaWQ6IGFueSwgcmVzOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgaWYgKHJlcy5Sb3dzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgY29uc3QgZmllbGQgPSByZXMuUm93c1swXS5GaWVsZHMuZmluZCgoZikgPT4gZi5BcGlOYW1lID09PSAnT2JqZWN0TWVudScpO1xuICAgICAgICAgICAgaWYgKGZpZWxkKSB7XG4gICAgICAgICAgICAgICAgLy8gSEFDSyA6IFVudGlsIFwiRW5hYmxlZFwiIHJldHVybnMgZnJvbSB0aGUgc2VydmVyLCB3ZSBzZXQgUGVwTWVudSB0byBiZVxuICAgICAgICAgICAgICAgIC8vICAgICAgICBEaXNhYmxlZCBpbiBjYXJ0IG9uIHJlZ3VsYXIgaXRlbXMgYW5kIG5vdCBjYW1waWduIGl0ZW1zLlxuICAgICAgICAgICAgICAgIGZpZWxkLkVuYWJsZWQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUNoYW5nZXMocmVzLlJvd3NbMF0pO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zZXRUb3RhbHNSb3coKTtcbiAgICAgICAgdGhpcy5jaGVja0ZvckNoYW5nZXMgPSBuZXcgRGF0ZSgpO1xuXG4gICAgICAgIC8vIERJLTE1OTg1XG4gICAgICAgIHRoaXMuaW50ZXJuYWxGb3JtRmllbGRDaGFuZ2UuZW1pdChyZXMpO1xuXG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgb25DdXN0b21pemVPYmplY3RDaGFuZ2VkKFxuICAgICAgICBjdXN0b21pemVPYmplY3RDaGFuZ2VkRGF0YTogSVBlcEZvcm1GaWVsZFZhbHVlQ2hhbmdlRXZlbnRcbiAgICApOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pbnRlcm5hbFBhZ2VTZXJ2aWNlLmNoaWxkVmFsdWVDaGFuZ2VkKFxuICAgICAgICAgICAgY3VzdG9taXplT2JqZWN0Q2hhbmdlZERhdGEuaWQsXG4gICAgICAgICAgICBjdXN0b21pemVPYmplY3RDaGFuZ2VkRGF0YS5rZXksXG4gICAgICAgICAgICBjdXN0b21pemVPYmplY3RDaGFuZ2VkRGF0YS52YWx1ZSxcbiAgICAgICAgICAgIChyZXM6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsdWVDYWxsYmFjayhjdXN0b21pemVPYmplY3RDaGFuZ2VkRGF0YS5pZCwgcmVzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBvbkN1c3RvbWl6ZUZpZWxkQ2xpY2soZmllbGRDbGlja0V2ZW50OiBJUGVwRm9ybUZpZWxkQ2xpY2tFdmVudCk6IHZvaWQge1xuICAgICAgICBsZXQgaGFuZGxlZEV2ZW50ID0gZmFsc2U7XG5cbiAgICAgICAgLy8gRm9yIHRoZSBuZXcgY3VzdG9tIGZvcm0sIHRoZSBwbHVzIGFuZCBtaW51cyBldmVudHMgdHJhbnNmb3JtIGluIHRoZSBJUGVwRm9ybUZpZWxkVmFsdWVDaGFuZ2VFdmVudFxuICAgICAgICBpZiAoZmllbGRDbGlja0V2ZW50LmNvbnRyb2xUeXBlID09PSAncXMnKSB7XG4gICAgICAgICAgICBpZiAoZmllbGRDbGlja0V2ZW50LnZhbHVlID09PSBQZXBRdWFudGl0eVNlbGVjdG9yQ29tcG9uZW50LlBMVVMpIHtcbiAgICAgICAgICAgICAgICBoYW5kbGVkRXZlbnQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuaW50ZXJuYWxQYWdlU2VydmljZS5jaGlsZFBsdXNDbGljayhcbiAgICAgICAgICAgICAgICAgICAgZmllbGRDbGlja0V2ZW50LmlkLFxuICAgICAgICAgICAgICAgICAgICBmaWVsZENsaWNrRXZlbnQua2V5LFxuICAgICAgICAgICAgICAgICAgICAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsdWVDYWxsYmFjayhmaWVsZENsaWNrRXZlbnQuaWQsIHJlcyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgICAgICBmaWVsZENsaWNrRXZlbnQudmFsdWUgPT09IFBlcFF1YW50aXR5U2VsZWN0b3JDb21wb25lbnQuTUlOVVNcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIGhhbmRsZWRFdmVudCA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5pbnRlcm5hbFBhZ2VTZXJ2aWNlLmNoaWxkTWludXNDbGljayhcbiAgICAgICAgICAgICAgICAgICAgZmllbGRDbGlja0V2ZW50LmlkLFxuICAgICAgICAgICAgICAgICAgICBmaWVsZENsaWNrRXZlbnQua2V5LFxuICAgICAgICAgICAgICAgICAgICAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsdWVDYWxsYmFjayhmaWVsZENsaWNrRXZlbnQuaWQsIHJlcyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFoYW5kbGVkRXZlbnQpIHtcbiAgICAgICAgICAgIHRoaXMuaW50ZXJuYWxGb3JtRmllbGRDbGljay5lbWl0KGZpZWxkQ2xpY2tFdmVudCk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCI8bmctdGVtcGxhdGUgI21hdHJpeEhlYWRlclRlbXBsYXRlPlxuICAgIDxkaXYgY2xhc3M9XCJtYXRyaXgtdGl0bGUtY29udGFpbmVyIHBlcC1ib3JkZXItYm90dG9tIGFsaWduLXt7XG4gICAgICAgICAgICBmaWVsZC54QWxpZ25tZW50XG4gICAgICAgIH19XCIgdGl0bGU9XCJ7eyBmaWVsZC5sYWJlbCB9fVwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImJsb2NrLXdpdGgtdGV4dCBib2R5LW1kXCI+e3sgZmllbGQubGFiZWwgfX08L3NwYW4+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbnMtY29udGFpbmVyIHBlcC1zcGFjaW5nLWVsZW1lbnQtbmVnYXRpdmUgcHVsbC1yaWdodCBmbGlwXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRWaWV3VHlwZT8uS2V5ID09ICdPcmRlckNlbnRlck1hdHJpeCcgJiZcbiAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbEFwaU5hbWVzICYmXG4gICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWxBcGlOYW1lcy5sZW5ndGggPiAwXG4gICAgICAgICAgICAgICAgXCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInBlcC1zcGFjaW5nLWVsZW1lbnQgcGVwLWJ1dHRvbiBpY29uLWJ1dHRvbiBzbSB3ZWFrXCIgbWF0LWJ1dHRvbiBbbWF0TWVudVRyaWdnZXJGb3JdPVwibWVudVwiXG4gICAgICAgICAgICAgICAgICAgIG1lbnUtYmx1cj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwdWxsLWxlZnQgZmxpcFwiICpuZ0lmPVwiY3VycmVudEFkZGl0aW9uYWxBcGlOYW1lXCI+Jm5ic3A7e3tcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRBZGRpdGlvbmFsQXBpTmFtZT8uVmFsdWUgfX0mbmJzcDs8L3NwYW4+XG5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIFtuZ0NsYXNzXT1cInsncHVsbC1sZWZ0IGZsaXAnOiBjdXJyZW50QWRkaXRpb25hbEFwaU5hbWV9XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cGVwLWljb24gbmFtZT1cInN5c3RlbV9pbmZvXCI+PC9wZXAtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8bWF0LW1lbnUgI21lbnU9XCJtYXRNZW51XCIgeFBvc2l0aW9uPVwiYmVmb3JlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWQ6IGN1cnJlbnRBZGRpdGlvbmFsQXBpTmFtZSA9PT0gbnVsbFxuICAgICAgICAgICAgICAgICAgICAgICAgfVwiIChjbGljayk9XCJjaGFuZ2VBZGRpdGlvbmFsQXBpTmFtZShudWxsKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgXCJMSVNULk5PTkVcIiB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWQ6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRBZGRpdGlvbmFsQXBpTmFtZT8uS2V5ID09XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWxBcGlOYW1lPy5LZXlcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cIiAqbmdGb3I9XCJsZXQgYWRkaXRpb25hbEFwaU5hbWUgb2YgYWRkaXRpb25hbEFwaU5hbWVzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjaGFuZ2VBZGRpdGlvbmFsQXBpTmFtZShhZGRpdGlvbmFsQXBpTmFtZSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IGFkZGl0aW9uYWxBcGlOYW1lLlZhbHVlIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L21hdC1tZW51PlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY2hpbGRWaWV3VHlwZXMgJiYgY2hpbGRWaWV3VHlwZXMubGVuZ3RoID4gMVwiPlxuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJwZXAtc3BhY2luZy1lbGVtZW50IHBlcC1idXR0b24gaWNvbi1idXR0b24gc20gd2Vha1wiIG1hdC1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgW21hdE1lbnVUcmlnZ2VyRm9yXT1cInZpZXdzTWVudVwiIG1lbnUtYmx1cj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHBlcC1pY29uIG5hbWU9XCJ2aWV3X2NhcmRfbWRcIj48L3BlcC1pY29uPlxuICAgICAgICAgICAgICAgICAgICA8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgICAgICAgICAgPG1hdC1tZW51ICN2aWV3c01lbnU9XCJtYXRNZW51XCIgeFBvc2l0aW9uPVwiYmVmb3JlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWQ6IGN1cnJlbnRWaWV3VHlwZT8uS2V5ID09IHZpZXdUeXBlPy5LZXlcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cIiAqbmdGb3I9XCJsZXQgdmlld1R5cGUgb2YgY2hpbGRWaWV3VHlwZXNcIiAoY2xpY2spPVwiY2hhbmdlQ2hpbGRyZW5WaWV3VHlwZSh2aWV3VHlwZT8uS2V5KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIFtuZ1N3aXRjaF09XCJ2aWV3VHlwZT8uS2V5XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBlcC1pY29uICpuZ1N3aXRjaENhc2U9XCInT3JkZXJDZW50ZXJNYXRyaXgnXCIgbmFtZT1cInZpZXdfbWF0cml4XCI+PC9wZXAtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGVwLWljb24gKm5nU3dpdGNoQ2FzZT1cIidPcmRlckNlbnRlckZsYXRNYXRyaXhHcmlkJ1wiIG5hbWU9XCJ2aWV3X3RhYmxlXCI+PC9wZXAtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGVwLWljb24gKm5nU3dpdGNoQ2FzZT1cIidPcmRlckNlbnRlckZsYXRNYXRyaXhMaW5lJ1wiIG5hbWU9XCJ2aWV3X2xpbmVcIj48L3BlcC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IHZpZXdUeXBlPy5WYWx1ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9tYXQtbWVudT5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNtYXRyaXhUZW1wbGF0ZT5cbiAgICA8ZGl2ICNtYXRyaXhDb250YWluZXIgY2xhc3M9XCJtYXRyaXgtY29udGFpbmVyXCI+XG4gICAgICAgIDxwZXAtaW50ZXJuYWwtbGlzdCAodmFsdWVDaGFuZ2UpPVwib25DdXN0b21pemVPYmplY3RDaGFuZ2VkKCRldmVudClcIiBbcGFyZW50U2Nyb2xsXT1cIm1hdHJpeENvbnRhaW5lclwiXG4gICAgICAgICAgICAoZmllbGRDbGljayk9XCJvbkN1c3RvbWl6ZUZpZWxkQ2xpY2soJGV2ZW50KVwiIFt0b3RhbHNSb3ddPVwidG90YWxzUm93XCI+PC9wZXAtaW50ZXJuYWwtbGlzdD5cbiAgICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxkaXYgI21haW5WaWV3Q29udCBpZD1cIm1haW5WaWV3Q29udFwiIFtuZ1N0eWxlXT1cInsgJ21heC13aWR0aCc6IHZpZXdXaWR0aCwgJ21heC1oZWlnaHQnOiB2aWV3SGVpZ2h0IH1cIj5cbiAgICA8ZGl2ICNteTFtbSBpZD1cIm15MV9tbVwiIHN0eWxlPVwiaGVpZ2h0OjFtbTt3aWR0aDoxbW07dmlzaWJpbGl0eTogaGlkZGVuO1wiPjwvZGl2PlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb3ZlckNoaWxkVGFibGUgJiYgdWlDb250cm9sICE9IG51bGxcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLWNvdmVyXCI+PC9kaXY+XG4gICAgICAgIDxidXR0b24gKGNsaWNrKT1cInNob3dNYXRyaXhEaWFsb2coKVwiIGNsYXNzPVwicGVwLWJ1dHRvbiBzdHJvbmcgc20gdGFibGUtY292ZXItYnV0dG9uXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2xpbmV2aWV3LWJ0bic6IGN1cnJlbnRWaWV3VHlwZT8uS2V5ID09ICdPcmRlckNlbnRlckZsYXRNYXRyaXhMaW5lJ31cIj5cbiAgICAgICAgICAgIHt7IFwiSU5URVJOQUxfUEFHRS5DTElDS19UT19PUkRFUlwiIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDwvYnV0dG9uPlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIm1hdHJpeEhlYWRlclRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAjb3JnQ29udD48L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI21hdHJpeERpYWxvZ1RlbXBsYXRlPlxuXG4gICAgPGRpdiBtYXQtZGlhbG9nLXRpdGxlPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibWF0cml4SGVhZGVyVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgbWF0LWRpYWxvZy1jb250ZW50PlxuICAgICAgICA8bmctY29udGFpbmVyICNkaWFsb2dDb250PjwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPCEtLSA8ZGl2IGlkPVwiY2hpbGRHcmlkTW9kYWxcIiBic01vZGFsIChvblNob3duKT1cIm9uU2hvd24oKVwiIChvbkhpZGRlbik9XCJvbkhpZGRlbigpXCIgI2NoaWxkTW9kYWw9XCJicy1tb2RhbFwiIGNsYXNzPVwibW9kYWxcIlxuICAgIHRhYmluZGV4PVwiLTFcIiByb2xlPVwiZGlhbG9nXCIgYXJpYS1sYWJlbGxlZGJ5PVwiZ3JpZE1vZGFsTGFiZWxcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICA8ZGl2IGNsYXNzPVwibW9kYWwtZGlhbG9nXCIgcm9sZT1cImRvY3VtZW50XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1jb250ZW50XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keSBtYXRyaXgtZGlhbG9nLWJvZHlcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICNtb2RhbENvbnQ+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L2Rpdj4gLS0+Il19
361
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJuYWwtcGFnZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbGliL2Zvcm0vaW50ZXJuYWwtcGFnZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbGliL2Zvcm0vaW50ZXJuYWwtcGFnZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUdULEtBQUssRUFDTCxNQUFNLEVBQ04sWUFBWSxFQUNaLFNBQVMsRUFFVCxnQkFBZ0IsRUFDaEIsV0FBVyxFQUNYLHVCQUF1QixHQUUxQixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUVqRSxPQUFPLEVBT0gsVUFBVSxHQUNiLE1BQU0seUJBQXlCLENBQUM7QUFDakMsT0FBTyxFQUNILHdCQUF3QixHQUUzQixNQUFNLDJCQUEyQixDQUFDO0FBTW5DLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDakMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlDLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDJDQUEyQyxDQUFDOzs7Ozs7Ozs7Ozs7QUFTekYsTUFBTSxPQUFPLHdCQUF3QjtJQXVEakMsWUFDWSxhQUErQixFQUMvQixtQkFBMkMsRUFDNUMsb0JBQTZDLEVBQzVDLGlCQUFvQztRQUhwQyxrQkFBYSxHQUFiLGFBQWEsQ0FBa0I7UUFDL0Isd0JBQW1CLEdBQW5CLG1CQUFtQixDQUF3QjtRQUM1Qyx5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXlCO1FBQzVDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUF2RGhELGdCQUFXLEdBQUcsY0FBYyxDQUFDO1FBR3BCLGVBQVUsR0FBa0IsTUFBTSxDQUFDO1FBRzVDLDRCQUF1QixHQUFzQixJQUFJ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QUs7c0JBQXhCLFNBQVM7dUJBQUMsT0FBTztnQkFDUyxZQUFZO3NCQUF0QyxTQUFTO3VCQUFDLGNBQWM7Z0JBRXlCLE9BQU87c0JBQXhELFNBQVM7dUJBQUMsU0FBUyxFQUFFLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFO2dCQUVoRCxVQUFVO3NCQURULFNBQVM7dUJBQUMsWUFBWSxFQUFFLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFO2dCQUV0QixjQUFjO3NCQUExQyxTQUFTO3VCQUFDLGdCQUFnQjtnQkFFM0Isb0JBQW9CO3NCQURuQixTQUFTO3VCQUFDLHNCQUFzQixFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRTtnQkFJeEQsVUFBVTtzQkFEVCxTQUFTO3VCQUFDLHdCQUF3QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIE9uSW5pdCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgSW5wdXQsXG4gICAgT3V0cHV0LFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBWaWV3Q2hpbGQsXG4gICAgRWxlbWVudFJlZixcbiAgICBWaWV3Q29udGFpbmVyUmVmLFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFBlcEludGVybmFsUGFnZVNlcnZpY2UgfSBmcm9tICcuL2ludGVybmFsLXBhZ2Uuc2VydmljZSc7XG5cbmltcG9ydCB7XG4gICAgUGVwTGF5b3V0VHlwZSxcbiAgICBVSUNvbnRyb2wsXG4gICAgS2V5VmFsdWVQYWlyLFxuICAgIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLFxuICAgIFVJQ29udHJvbEZpZWxkLFxuICAgIE9iamVjdHNEYXRhLFxuICAgIEZJRUxEX1RZUEUsXG59IGZyb20gJ0BwZXBwZXJpLWFkZG9ucy9uZ3gtbGliJztcbmltcG9ydCB7XG4gICAgUGVwSW50ZXJuYWxMaXN0Q29tcG9uZW50LFxuICAgIFBlcExpc3RWaWV3VHlwZSxcbn0gZnJvbSAnLi9pbnRlcm5hbC1saXN0LmNvbXBvbmVudCc7XG5pbXBvcnQge1xuICAgIElQZXBGb3JtRmllbGRDbGlja0V2ZW50LFxuICAgIElQZXBGb3JtRmllbGRWYWx1ZUNoYW5nZUV2ZW50LFxufSBmcm9tICcuL2Zvcm0ubW9kZWwnO1xuaW1wb3J0IHsgUGVwRGlhbG9nU2VydmljZSB9IGZyb20gJ0BwZXBwZXJpLWFkZG9ucy9uZ3gtbGliL2RpYWxvZyc7XG5pbXBvcnQgeyBmcm9tRXZlbnQgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFBlcFF1YW50aXR5U2VsZWN0b3JDb21wb25lbnQgfSBmcm9tICdAcGVwcGVyaS1hZGRvbnMvbmd4LWxpYi9xdWFudGl0eS1zZWxlY3Rvcic7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncGVwLWludGVybmFsLXBhZ2UnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9pbnRlcm5hbC1wYWdlLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9pbnRlcm5hbC1wYWdlLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgcHJvdmlkZXJzOiBbUGVwSW50ZXJuYWxQYWdlU2VydmljZV0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFBlcEludGVybmFsUGFnZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICBzdGF0aWMgQ1VSUkVOVF9BRERJVElPTkFMX0FQSV9OQU1FID1cbiAgICAgICAgJ2l0ZW1fZGV0YWlsc19jdXJyZW50QWRkaXRpb25hbEFwaU5hbWUnO1xuXG4gICAgY29udHJvbFR5cGUgPSAnaW50ZXJuYWxQYWdlJztcblxuICAgIEBJbnB1dCgpIGZpZWxkOiBhbnk7XG4gICAgQElucHV0KCkgbGF5b3V0VHlwZTogUGVwTGF5b3V0VHlwZSA9ICdmb3JtJztcblxuICAgIEBPdXRwdXQoKVxuICAgIGludGVybmFsRm9ybUZpZWxkQ2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICAgIEBPdXRwdXQoKVxuICAgIGludGVybmFsRm9ybUZpZWxkQ2xpY2s6IEV2ZW50RW1pdHRlcjxJUGVwRm9ybUZpZWxkQ2xpY2tFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPElQZXBGb3JtRmllbGRDbGlja0V2ZW50PigpO1xuXG4gICAgQFZpZXdDaGlsZCgnbXkxbW0nKSBteTFtbTogRWxlbWVudFJlZjtcbiAgICBAVmlld0NoaWxkKCdtYWluVmlld0NvbnQnKSBtYWluVmlld0NvbnQ6IEVsZW1lbnRSZWY7XG5cbiAgICBAVmlld0NoaWxkKCdvcmdDb250JywgeyByZWFkOiBWaWV3Q29udGFpbmVyUmVmIH0pIG9yZ0NvbnQ6IFZpZXdDb250YWluZXJSZWY7XG4gICAgQFZpZXdDaGlsZCgnZGlhbG9nQ29udCcsIHsgcmVhZDogVmlld0NvbnRhaW5lclJlZiB9KVxuICAgIGRpYWxvZ0NvbnQ6IFZpZXdDb250YWluZXJSZWY7XG4gICAgQFZpZXdDaGlsZCgnbWF0cml4VGVtcGxhdGUnKSBtYXRyaXhUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcbiAgICBAVmlld0NoaWxkKCdtYXRyaXhEaWFsb2dUZW1wbGF0ZScsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSlcbiAgICBtYXRyaXhEaWFsb2dUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIEBWaWV3Q2hpbGQoUGVwSW50ZXJuYWxMaXN0Q29tcG9uZW50KVxuICAgIGN1c3RvbUxpc3Q6IFBlcEludGVybmFsTGlzdENvbXBvbmVudDtcblxuICAgIHJlc2l6ZTogYW55O1xuICAgIGNoZWNrRm9yQ2hhbmdlczogYW55ID0gbnVsbDtcblxuICAgIGNoaWxkRGF0YTogYW55ID0gbnVsbDtcblxuICAgIGVtcHR5Rm9ybTogRm9ybUdyb3VwO1xuICAgIHVpQ29udHJvbDogVUlDb250cm9sO1xuICAgIHJvd3M6IGFueTtcbiAgICBsaW5lVmlld1Jvd3M6IGFueTtcbiAgICB0b3RhbHNSb3c6IGFueSA9IFtdO1xuICAgIGFkZGl0aW9uYWxBcGlOYW1lczogYW55ID0gbnVsbDtcbiAgICBjdXJyZW50QWRkaXRpb25hbEFwaU5hbWU6IGFueSA9IG51bGw7XG4gICAgZm9jdXNlZFFTID0gZmFsc2U7XG4gICAgZmllbGRJZFdpdGhGb2N1cyA9ICcnO1xuICAgIGNvbHVtbldpZHRoID0gMTAwO1xuICAgIGNvdmVyQ2hpbGRUYWJsZSA9IGZhbHNlO1xuICAgIGNoaWxkVmlld1R5cGVzOiBBcnJheTxLZXlWYWx1ZVBhaXI8c3RyaW5nPj47XG4gICAgY3VycmVudFZpZXdUeXBlOiBLZXlWYWx1ZVBhaXI8c3RyaW5nPiA9IG51bGw7XG4gICAgY3VycmVudFZpZXdUeXBlVGl0bGU6IHN0cmluZztcbiAgICBzdW1PZk1pbkNvbFdpZHRoID0gMDtcbiAgICB0b3RhbFJvd3NXaWR0aCA9IDA7XG4gICAgdmlld1dpZHRoID0gJzEwMCUnO1xuICAgIHZpZXdIZWlnaHQgPSAnYXV0byc7XG4gICAgZGlzcGxheVFTYnRucyA9IHRydWU7XG4gICAgc2VsZWN0ZWRBcGlOYW1lID0gJyc7XG4gICAgc2hvd1NvcnQgPSBmYWxzZTtcbiAgICBkZWZhdWx0Um93U3BhbiA9IC0xO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgZGlhbG9nU2VydmljZTogUGVwRGlhbG9nU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBpbnRlcm5hbFBhZ2VTZXJ2aWNlOiBQZXBJbnRlcm5hbFBhZ2VTZXJ2aWNlLFxuICAgICAgICBwdWJsaWMgY3VzdG9taXphdGlvblNlcnZpY2U6IFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZlxuICAgICkgeyB9XG5cbiAgICBwcml2YXRlIGZpbGxEYXRhKGlzSW5EaWFsb2cgPSBmYWxzZSk6IHZvaWQge1xuICAgICAgICBjb25zdCB2aWV3ID0gdGhpcy5tYXRyaXhUZW1wbGF0ZS5jcmVhdGVFbWJlZGRlZFZpZXcobnVsbCk7XG5cbiAgICAgICAgdGhpcy5jdXN0b21MaXN0Py5jbGVhcigpO1xuICAgICAgICB0aGlzLm9yZ0NvbnQ/LmNsZWFyKCk7XG5cbiAgICAgICAgaWYgKGlzSW5EaWFsb2cpIHtcbiAgICAgICAgICAgIHRoaXMuZGlhbG9nQ29udD8uY2xlYXIoKTtcbiAgICAgICAgICAgIHRoaXMuZGlhbG9nQ29udD8uaW5zZXJ0KHZpZXcpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5vcmdDb250Py5pbnNlcnQodmlldyk7XG4gICAgICAgIH1cblxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHZpZXdUeXBlOiBQZXBMaXN0Vmlld1R5cGUgPSB0aGlzLmlzVGFibGVWaWV3KClcbiAgICAgICAgICAgICAgICA/ICd0YWJsZSdcbiAgICAgICAgICAgICAgICA6ICdsaW5lcyc7XG4gICAgICAgICAgICB0aGlzLmN1c3RvbUxpc3QuaW5pdExpc3REYXRhKFxuICAgICAgICAgICAgICAgIHRoaXMudWlDb250cm9sLFxuICAgICAgICAgICAgICAgIHRoaXMuY2hpbGREYXRhLlRvdGFsUm93cyxcbiAgICAgICAgICAgICAgICB0aGlzLmNoaWxkRGF0YS5Sb3dzLFxuICAgICAgICAgICAgICAgIHZpZXdUeXBlXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy5zZXRUb3RhbHNSb3coKTtcblxuICAgICAgICAgICAgLy8gaWYgKCF0aGlzLmNoaWxkTW9kYWwuaXNTaG93bikge1xuICAgICAgICAgICAgY29uc3QgY2hpbGRyZW5Db3VudCA9IHRoaXMuY2hpbGREYXRhLlJvd3NcbiAgICAgICAgICAgICAgICA/IHRoaXMuY2hpbGREYXRhLlJvd3MubGVuZ3RoXG4gICAgICAgICAgICAgICAgOiAwO1xuICAgICAgICAgICAgY29uc3QgaXNFdmVuID0gY2hpbGRyZW5Db3VudCAlIDIgPT09IDA7XG4gICAgICAgICAgICAvLyAzIGZvciBtYXRyaXggJiBmbGF0IG1hdHJpeCBiZWNhdXNlIHRoZSBoZWFkZXIgKyB0b3RhbCBpcyAyIG1vcmUgcm93cy5cbiAgICAgICAgICAgIGNvbnN0IHJvd3NUb0FkZCA9XG4gICAgICAgICAgICAgICAgdGhpcy5pc01hdHJpeFZpZXcoKSB8fCB0aGlzLmlzRmxhdE1hdHJpeFZpZXcoKVxuICAgICAgICAgICAgICAgICAgICA/IGlzRXZlblxuICAgICAgICAgICAgICAgICAgICAgICAgPyAzXG4gICAgICAgICAgICAgICAgICAgICAgICA6IDRcbiAgICAgICAgICAgICAgICAgICAgOiAxO1xuXG4gICAgICAgICAgICBjb25zdCBmb3JtUm93SGVpZ2h0ID1cbiAgICAgICAgICAgICAgICB0aGlzLmN1c3RvbWl6YXRpb25TZXJ2aWNlLmNhbGN1bGF0ZUZvcm1GaWVsZEhlaWdodCgpICogMTY7IC8vIGNvbnZlcnQgcmVtIHRvIHBpeGVsXG5cbiAgICAgICAgICAgIC8vIFNldCB0aGUgZGVmYXVsdCBvbmx5IGlmIG5vdCBzZXQgeWV0LlxuICAgICAgICAgICAgaWYgKHRoaXMuZGVmYXVsdFJvd1NwYW4gPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5kZWZhdWx0Um93U3BhbiA9IHRoaXMuZmllbGQucm93U3BhbjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5zdW1PZk1pbkNvbFdpZHRoID0gMDtcbiAgICAgICAgICAgIHRoaXMudG90YWxSb3dzV2lkdGggPSAwO1xuXG4gICAgICAgICAgICB0aGlzLmNoaWxkRGF0YS5VSUNvbnRyb2wuQ29udHJvbEZpZWxkcy5mb3JFYWNoKFxuICAgICAgICAgICAgICAgICh1aUNvbnRyb2xGaWVsZDogVUlDb250cm9sRmllbGQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50b3RhbFJvd3NXaWR0aCArPSB1aUNvbnRyb2xGaWVsZC5Db2x1bW5XaWR0aDtcbiAgICAgICAgICAgICAgICAgICAgdWlDb250cm9sRmllbGQubWluRmllbGRXaWR0aCA9IHRoaXMubW1Ub1B4KDEyKTsgLy8gTkVFRCBUTyBHRVQgVEhJUyBQQVJBTSBGUk9NIENVU1RPTUlaQVRJT047XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3VtT2ZNaW5Db2xXaWR0aCArPSAxMjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICB0aGlzLnNldFZpZXdDb3Zlcih0aGlzLmNoaWxkRGF0YS5Sb3dzKTtcblxuICAgICAgICAgICAgaWYgKHRoaXMuY292ZXJDaGlsZFRhYmxlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5maWVsZC5yb3dTcGFuID0gdGhpcy5kZWZhdWx0Um93U3BhbjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gRm9yIGxpbmUgdmlldyBBZGQgdGhlIGhlaWdodCBvZiB0aGUgbGluZSAoZm9ybSBoZWlnaHQpLlxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmN1cnJlbnRWaWV3VHlwZS5LZXkgPT09ICdPcmRlckNlbnRlckZsYXRNYXRyaXhMaW5lJykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBtYXhSb3cgPSBNYXRoLm1heChcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMudWlDb250cm9sLkNvbnRyb2xGaWVsZHMubWFwKChmKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGYuTGF5b3V0LlkgKyBmLkxheW91dC5IZWlnaHQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgIC8vICogMTYgY29udmVydCByZW0gdG8gcGl4ZWxcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2FyZFJvd3NIZWlnaHQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jdXN0b21pemF0aW9uU2VydmljZS5jYWxjdWxhdGVDYXJkUm93c0hlaWdodChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhSb3dcbiAgICAgICAgICAgICAgICAgICAgICAgICkgKiAxNjtcblxuICAgICAgICAgICAgICAgICAgICAvLyBtYXhSb3cgKiAyNCArIDYwIC0gMjQgZm9yIGVhY2ggcm93IGluIGNhcmQgKyA2MCBmb3IgdGhlIHBhZGRpbmcgb2YgZWFjaCBjYXJkLlxuICAgICAgICAgICAgICAgICAgICAvLyBjb25zdCByb3dTcGFuVG9BZGQgPSBjaGlsZHJlbkNvdW50ICogKChjYXJkUm93c0hlaWdodCArIDI0KSAvIGZvcm1Sb3dIZWlnaHQpICsgcm93c1RvQWRkO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByb3dTcGFuVG9BZGQgPSBcbiAgICAgICAgICAgICAgICAgICAgICAgIChjaGlsZHJlbkNvdW50ICogKGNhcmRSb3dzSGVpZ2h0ICsgMjQpKSAvXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtUm93SGVpZ2h0ICtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvd3NUb0FkZDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5maWVsZC5yb3dTcGFuID0gcm93U3BhblRvQWRkO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGNvbnN0IHRhYmxlUm93c0hlaWdodCA9IHRoaXMuY3VzdG9taXphdGlvblNlcnZpY2UuY2FsY3VsYXRlVGFibGVSb3dzSGVpZ2h0KGNoaWxkcmVuQ291bnQpICogMTY7XG4gICAgICAgICAgICAgICAgICAgIC8vIHRoaXMuZmllbGQucm93U3BhbiA9IE1hdGguY2VpbCgodGFibGVSb3dzSGVpZ2h0ICsgKHJvd3NUb0FkZCAqIDQwKSkgLyBmb3JtUm93SGVpZ2h0KTtcbiAgICAgICAgICAgICAgICAgICAgLy8gKiAxNiBjb252ZXJ0IHJlbSB0byBwaXhlbFxuICAgICAgICAgICAgICAgICAgICBjb25zdCByb3dzVG9BZGRIZWlnaHQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jdXN0b21pemF0aW9uU2VydmljZS5jYWxjdWxhdGVUYWJsZVJvd3NIZWlnaHQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93c1RvQWRkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICApICogMTY7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRhYmxlUm93c0hlaWdodCA9XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmN1c3RvbWl6YXRpb25TZXJ2aWNlLmNhbGN1bGF0ZVRhYmxlUm93c0hlaWdodChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbkNvdW50XG4gICAgICAgICAgICAgICAgICAgICAgICApICogMTY7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZmllbGQucm93U3BhbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAocm93c1RvQWRkSGVpZ2h0ICsgdGFibGVSb3dzSGVpZ2h0KSAvIGZvcm1Sb3dIZWlnaHQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9LCAwKTtcblxuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZmlsbENoaWxkRGF0YShyZXM6IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLmNoaWxkRGF0YSA9IHJlcztcbiAgICAgICAgdGhpcy51aUNvbnRyb2wgPSByZXMuVUlDb250cm9sO1xuICAgICAgICB0aGlzLmFkZGl0aW9uYWxBcGlOYW1lcyA9IHJlcy5BZGRpdGlvbmFsQXBpTmFtZXM7XG5cbiAgICAgICAgdGhpcy5maWxsRGF0YSgpO1xuICAgIH1cblxuICAgIG1tVG9QeChtbSk6IG51bWJlciB7XG4gICAgICAgIGNvbnN0IGhlaWdodCA9IHRoaXMubXkxbW0ubmF0aXZlRWxlbWVudC5jbGllbnRIZWlnaHQ7XG4gICAgICAgIHJldHVybiBNYXRoLmZsb29yKG1tICogaGVpZ2h0KTsgLy8gcmV0dXJucyBzaXplcyBpbiBQWFxuICAgIH1cblxuICAgIHByaXZhdGUgaXNNYXRyaXhWaWV3KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgdGhpcy5jdXJyZW50Vmlld1R5cGUgJiZcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFZpZXdUeXBlLktleSA9PT0gJ09yZGVyQ2VudGVyTWF0cml4J1xuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNGbGF0TWF0cml4VmlldygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFZpZXdUeXBlICYmXG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRWaWV3VHlwZS5LZXkgPT09ICdPcmRlckNlbnRlckZsYXRNYXRyaXhHcmlkJ1xuICAgICAgICApO1xuICAgIH1cblxuICAgIGlzVGFibGVWaWV3KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5pc01hdHJpeFZpZXcoKSB8fCB0aGlzLmlzRmxhdE1hdHJpeFZpZXcoKTtcbiAgICB9XG5cbiAgICBjaGFuZ2VDaGlsZHJlblZpZXdUeXBlKHZpZXdUeXBlS2V5OiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5yb3dzID0gW107XG4gICAgICAgIHRoaXMudWlDb250cm9sID0gbnVsbDtcblxuICAgICAgICBmb3IgKGNvbnN0IHZ0IG9mIHRoaXMuY2hpbGRWaWV3VHlwZXMpIHtcbiAgICAgICAgICAgIGlmICh2dC5LZXkgPT09IHZpZXdUeXBlS2V5KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50Vmlld1R5cGUgPSB2dDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY3VycmVudFZpZXdUeXBlVGl0bGUgPSB0aGlzLmN1cnJlbnRWaWV3VHlwZS5WYWx1ZTtcblxuICAgICAgICB0aGlzLmludGVybmFsUGFnZVNlcnZpY2UuY2hhbmdlQ2hpbGRyZW5WaWV3VHlwZShcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFZpZXdUeXBlLktleSxcbiAgICAgICAgICAgIChyZXM6IE9iamVjdHNEYXRhKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHJlcy5Sb3dzKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZmlsbENoaWxkRGF0YShyZXMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBzZXRWaWV3Q292ZXIocm93cyk6IHZvaWQge1xuICAgICAgICBpZiAoIXJvd3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG1hdHJpeENvbnQgPSB0aGlzLm1haW5WaWV3Q29udC5uYXRpdmVFbGVtZW50O1xuICAgICAgICBjb25zdCB2aWV3V2lkdGggPSBtYXRyaXhDb250LmNsaWVudFdpZHRoO1xuXG4gICAgICAgIHRoaXMudmlld1dpZHRoID0gdmlld1dpZHRoID8gdmlld1dpZHRoLnRvU3RyaW5nKCkgOiAnMTAwJSc7XG5cbiAgICAgICAgLy8gaWYgdGhlIG1hdHJpeCBsb2NhdGVkIG9uIHRoZSBib3R0b20gLyB0aGVyZSBpcyBub3RoaW5nIHVuZGVyIHRoZSBtYXRyaXggd2UgZG9udCBuZWVkIHRvIGNoZWNrIHRoZSBoZWlnaHRcbiAgICAgICAgaWYgKHBhcnNlSW50KHZpZXdXaWR0aCwgMTApIDwgdGhpcy5tbVRvUHgodGhpcy5zdW1PZk1pbkNvbFdpZHRoKSkge1xuICAgICAgICAgICAgdGhpcy5jb3ZlckNoaWxkVGFibGUgPSB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jb3ZlckNoaWxkVGFibGUgPSBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgc2hvd01hdHJpeERpYWxvZygpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgY29uZmlnID0gdGhpcy5kaWFsb2dTZXJ2aWNlLmdldERpYWxvZ0NvbmZpZyhcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBkaXNhYmxlQ2xvc2U6IGZhbHNlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICdsYXJnZSdcbiAgICAgICAgKTtcblxuICAgICAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZ1NlcnZpY2Uub3BlbkRpYWxvZyhcbiAgICAgICAgICAgIHRoaXMubWF0cml4RGlhbG9nVGVtcGxhdGUsXG4gICAgICAgICAgICB7fSxcbiAgICAgICAgICAgIGNvbmZpZ1xuICAgICAgICApO1xuXG4gICAgICAgIGRpYWxvZ1JlZi5hZnRlck9wZW5lZCgpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmZpbGxEYXRhKHRydWUpO1xuICAgICAgICB9KTtcblxuICAgICAgICBkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmZpbGxEYXRhKGZhbHNlKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIC8vIGxldCBmaWVsZCA9IHRoaXMuZmllbGQgYXMgUGVwSW50ZXJuYWxQYWdlRmllbGQ7XG5cbiAgICAgICAgdGhpcy5pbnRlcm5hbFBhZ2VTZXJ2aWNlLmluaXREZXRhaWxzKFxuICAgICAgICAgICAgdGhpcy5maWVsZC5vYmplY3RJZCxcbiAgICAgICAgICAgIHRoaXMuZmllbGQucGFyZW50SWQsXG4gICAgICAgICAgICB0aGlzLmZpZWxkLnNlYXJjaENvZGUsXG4gICAgICAgICAgICAocmVzVmlld1R5cGVzOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAvLyBteSBjb2RlIERJLTcxMzRcbiAgICAgICAgICAgICAgICByZXNWaWV3VHlwZXMuUm93cyA9IHJlc1ZpZXdUeXBlcy5Sb3dzLmZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgKGl0ZW0pID0+IGl0ZW0uS2V5ICE9PSAnT3JkZXJDZW50ZXJWaWV3MSdcbiAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgaWYgKHJlc1ZpZXdUeXBlcy5Sb3dzICYmIHJlc1ZpZXdUeXBlcy5Sb3dzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFyZXNWaWV3VHlwZXMuRGVmYXVsdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzVmlld1R5cGVzLkRlZmF1bHQgPSByZXNWaWV3VHlwZXMuUm93c1swXS5LZXk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGlsZFZpZXdUeXBlcyA9IHJlc1ZpZXdUeXBlcy5Sb3dzO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRWaWV3VHlwZSA9IHJlc1ZpZXdUeXBlcy5Sb3dzWzBdO1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIGZvciAodmFyIGkgPSAwOyBpIDwgcmVzVmlld1R5cGVzLlJvd3MubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCB2aWV3VHlwZVJvdyBvZiByZXNWaWV3VHlwZXMuUm93cykge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZpZXdUeXBlUm93LlZhbHVlID09PSByZXNWaWV3VHlwZXMuRGVmYXVsdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudFZpZXdUeXBlID0gdmlld1R5cGVSb3c7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWRMYXN0QWRkaXRpb25hbEFwaU5hbWUoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VDaGlsZHJlblZpZXdUeXBlKHRoaXMuY3VycmVudFZpZXdUeXBlLktleSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMucmVzaXplID0gZnJvbUV2ZW50KHdpbmRvdywgJ3Jlc2l6ZScpXG4gICAgICAgICAgICAucGlwZShkZWJvdW5jZVRpbWUoMTApKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldFZpZXdDb3Zlcih0aGlzLnJvd3MpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbG9hZExhc3RBZGRpdGlvbmFsQXBpTmFtZSgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZGFhID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShcbiAgICAgICAgICAgIFBlcEludGVybmFsUGFnZUNvbXBvbmVudC5DVVJSRU5UX0FERElUSU9OQUxfQVBJX05BTUVcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKGRhYSAmJiBkYWEubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgY29uc3QgYWRkaXRpb25hbEFwaU5hbWUgPSBKU09OLnBhcnNlKGRhYSk7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRBZGRpdGlvbmFsQXBpTmFtZSA9IGFkZGl0aW9uYWxBcGlOYW1lO1xuICAgICAgICAgICAgdGhpcy5pbnRlcm5hbFBhZ2VTZXJ2aWNlLmFkZGl0aW9uYWxBcGlOYW1lID0gYWRkaXRpb25hbEFwaU5hbWU/LktleTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5yZXNpemUpIHtcbiAgICAgICAgICAgIHRoaXMucmVzaXplLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjaGFuZ2VBZGRpdGlvbmFsQXBpTmFtZShhZGRpdGlvbmFsQXBpTmFtZSk6IHZvaWQge1xuICAgICAgICB0aGlzLmludGVybmFsUGFnZVNlcnZpY2UuY2hhbmdlQWRkaXRpb25hbEFwaU5hbWUoXG4gICAgICAgICAgICBhZGRpdGlvbmFsQXBpTmFtZSA/IGFkZGl0aW9uYWxBcGlOYW1lLktleSA6ICcnLFxuICAgICAgICAgICAgKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgLy8gZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHJlcy5Sb3dzLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3Qgcm93IG9mIHJlcy5Sb3dzKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlQ2hhbmdlcyhyb3cpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG5cbiAgICAgICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbShcbiAgICAgICAgICAgIFBlcEludGVybmFsUGFnZUNvbXBvbmVudC5DVVJSRU5UX0FERElUSU9OQUxfQVBJX05BTUUsXG4gICAgICAgICAgICBKU09OLnN0cmluZ2lmeShhZGRpdGlvbmFsQXBpTmFtZSlcbiAgICAgICAgKTtcblxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudEFkZGl0aW9uYWxBcGlOYW1lID0gYWRkaXRpb25hbEFwaU5hbWU7XG4gICAgICAgIH0sIDApO1xuICAgIH1cblxuICAgIHNldFRvdGFsc1JvdygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy50b3RhbHNSb3cgPSBbXTtcblxuICAgICAgICBpZiAodGhpcy5pc01hdHJpeFZpZXcoKSB8fCB0aGlzLmlzRmxhdE1hdHJpeFZpZXcoKSkge1xuICAgICAgICAgICAgbGV0IHRvdGFsQ29sID0gMDtcblxuICAgICAgICAgICAgY29uc3QgaXRlbXMgPSB0aGlzLmN1c3RvbUxpc3QuaXRlbXM7XG4gICAgICAgICAgICBpZiAoaXRlbXMpIHtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBjb2wgPSAwOyBjb2wgPCBpdGVtc1swXS5GaWVsZHMubGVuZ3RoOyBjb2wrKykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBmaWVsZCA9IGl0ZW1zWzBdLkZpZWxkc1tjb2xdO1xuICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWVsZC5GaWVsZFR5cGUgPT09IEZJRUxEX1RZUEUuTnVtYmVySW50ZWdlckZvck1hdHJpeCB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQuRmllbGRUeXBlID09PVxuICAgICAgICAgICAgICAgICAgICAgICAgRklFTERfVFlQRS5OdW1iZXJJbnRlZ2VyUXVhbnRpdHlTZWxlY3RvciB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQuRmllbGRUeXBlID09PSBGSUVMRF9UWVBFLk51bWJlclJlYWxGb3JNYXRyaXggfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkLkZpZWxkVHlwZSA9PT1cbiAgICAgICAgICAgICAgICAgICAgICAgIEZJRUxEX1RZUEUuTnVtYmVyUmVhbFF1YW50aXR5U2VsZWN0b3IgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkLkZpZWxkVHlwZSA9PT0gRklFTERfVFlQRS5DYWxjdWxhdGVkSW50IHx8XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWVsZC5GaWVsZFR5cGUgPT09IEZJRUxEX1RZUEUuTnVtYmVySW50ZWdlciB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQuRmllbGRUeXBlID09PSBGSUVMRF9UWVBFLkNhbGN1bGF0ZWRSZWFsIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWVsZC5GaWVsZFR5cGUgPT09IEZJRUxEX1RZUEUuTnVtYmVyUmVhbFxuICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvdGFsQ29sID0gMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgbGlzdEl0ZW0gb2YgaXRlbXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RJdGVtLkZpZWxkc1tjb2xdICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RJdGVtLkZpZWxkc1tjb2xdLlZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG51bSA9IHBhcnNlRmxvYXQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0SXRlbS5GaWVsZHNbY29sXS5WYWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3RhbENvbCArPSBpc05hTihudW0pID8gMCA6IG51bTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRvdGFsc1Jvdy5wdXNoKHRvdGFsQ29sKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudG90YWxzUm93LnB1c2goJycpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgdXBkYXRlQ2hhbmdlcyhlbGVtZW50VG9VcGRhdGU6IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLmN1c3RvbUxpc3QudXBkYXRlSXRlbShlbGVtZW50VG9VcGRhdGUpO1xuXG4gICAgICAgIC8vIFVwZGF0ZSBtZW1vcnkgZGF0YVxuICAgICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgdGhpcy5jaGlsZERhdGEuUm93cy5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmNoaWxkRGF0YS5Sb3dzW2luZGV4XS5VSUQgPT09IGVsZW1lbnRUb1VwZGF0ZS5VSUQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNoaWxkRGF0YS5Sb3dzW2luZGV4XSA9IGVsZW1lbnRUb1VwZGF0ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNldFZhbHVlQ2FsbGJhY2soaWQ6IGFueSwgcmVzOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgaWYgKHJlcy5Sb3dzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgY29uc3QgZmllbGQgPSByZXMuUm93c1swXS5GaWVsZHMuZmluZCgoZikgPT4gZi5BcGlOYW1lID09PSAnT2JqZWN0TWVudScpO1xuICAgICAgICAgICAgaWYgKGZpZWxkKSB7XG4gICAgICAgICAgICAgICAgLy8gSEFDSyA6IFVudGlsIFwiRW5hYmxlZFwiIHJldHVybnMgZnJvbSB0aGUgc2VydmVyLCB3ZSBzZXQgUGVwTWVudSB0byBiZVxuICAgICAgICAgICAgICAgIC8vICAgICAgICBEaXNhYmxlZCBpbiBjYXJ0IG9uIHJlZ3VsYXIgaXRlbXMgYW5kIG5vdCBjYW1waWduIGl0ZW1zLlxuICAgICAgICAgICAgICAgIGZpZWxkLkVuYWJsZWQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUNoYW5nZXMocmVzLlJvd3NbMF0pO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zZXRUb3RhbHNSb3coKTtcbiAgICAgICAgdGhpcy5jaGVja0ZvckNoYW5nZXMgPSBuZXcgRGF0ZSgpO1xuXG4gICAgICAgIC8vIERJLTE1OTg1XG4gICAgICAgIHRoaXMuaW50ZXJuYWxGb3JtRmllbGRDaGFuZ2UuZW1pdChyZXMpO1xuXG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgb25DdXN0b21pemVPYmplY3RDaGFuZ2VkKFxuICAgICAgICBjdXN0b21pemVPYmplY3RDaGFuZ2VkRGF0YTogSVBlcEZvcm1GaWVsZFZhbHVlQ2hhbmdlRXZlbnRcbiAgICApOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pbnRlcm5hbFBhZ2VTZXJ2aWNlLmNoaWxkVmFsdWVDaGFuZ2VkKFxuICAgICAgICAgICAgY3VzdG9taXplT2JqZWN0Q2hhbmdlZERhdGEuaWQsXG4gICAgICAgICAgICBjdXN0b21pemVPYmplY3RDaGFuZ2VkRGF0YS5rZXksXG4gICAgICAgICAgICBjdXN0b21pemVPYmplY3RDaGFuZ2VkRGF0YS52YWx1ZSxcbiAgICAgICAgICAgIChyZXM6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsdWVDYWxsYmFjayhjdXN0b21pemVPYmplY3RDaGFuZ2VkRGF0YS5pZCwgcmVzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBvbkN1c3RvbWl6ZUZpZWxkQ2xpY2soZmllbGRDbGlja0V2ZW50OiBJUGVwRm9ybUZpZWxkQ2xpY2tFdmVudCk6IHZvaWQge1xuICAgICAgICBsZXQgaGFuZGxlZEV2ZW50ID0gZmFsc2U7XG5cbiAgICAgICAgLy8gRm9yIHRoZSBuZXcgY3VzdG9tIGZvcm0sIHRoZSBwbHVzIGFuZCBtaW51cyBldmVudHMgdHJhbnNmb3JtIGluIHRoZSBJUGVwRm9ybUZpZWxkVmFsdWVDaGFuZ2VFdmVudFxuICAgICAgICBpZiAoZmllbGRDbGlja0V2ZW50LmNvbnRyb2xUeXBlID09PSAncXMnKSB7XG4gICAgICAgICAgICBpZiAoZmllbGRDbGlja0V2ZW50LnZhbHVlID09PSBQZXBRdWFudGl0eVNlbGVjdG9yQ29tcG9uZW50LlBMVVMpIHtcbiAgICAgICAgICAgICAgICBoYW5kbGVkRXZlbnQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuaW50ZXJuYWxQYWdlU2VydmljZS5jaGlsZFBsdXNDbGljayhcbiAgICAgICAgICAgICAgICAgICAgZmllbGRDbGlja0V2ZW50LmlkLFxuICAgICAgICAgICAgICAgICAgICBmaWVsZENsaWNrRXZlbnQua2V5LFxuICAgICAgICAgICAgICAgICAgICAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsdWVDYWxsYmFjayhmaWVsZENsaWNrRXZlbnQuaWQsIHJlcyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgICAgICBmaWVsZENsaWNrRXZlbnQudmFsdWUgPT09IFBlcFF1YW50aXR5U2VsZWN0b3JDb21wb25lbnQuTUlOVVNcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIGhhbmRsZWRFdmVudCA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5pbnRlcm5hbFBhZ2VTZXJ2aWNlLmNoaWxkTWludXNDbGljayhcbiAgICAgICAgICAgICAgICAgICAgZmllbGRDbGlja0V2ZW50LmlkLFxuICAgICAgICAgICAgICAgICAgICBmaWVsZENsaWNrRXZlbnQua2V5LFxuICAgICAgICAgICAgICAgICAgICAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsdWVDYWxsYmFjayhmaWVsZENsaWNrRXZlbnQuaWQsIHJlcyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFoYW5kbGVkRXZlbnQpIHtcbiAgICAgICAgICAgIHRoaXMuaW50ZXJuYWxGb3JtRmllbGRDbGljay5lbWl0KGZpZWxkQ2xpY2tFdmVudCk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCI8bmctdGVtcGxhdGUgI21hdHJpeEhlYWRlclRlbXBsYXRlPlxuICAgIDxkaXYgY2xhc3M9XCJtYXRyaXgtdGl0bGUtY29udGFpbmVyIHBlcC1ib3JkZXItYm90dG9tIGFsaWduLXt7XG4gICAgICAgICAgICBmaWVsZC54QWxpZ25tZW50XG4gICAgICAgIH19XCIgdGl0bGU9XCJ7eyBmaWVsZC5sYWJlbCB9fVwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImJsb2NrLXdpdGgtdGV4dCBib2R5LW1kXCI+e3sgZmllbGQubGFiZWwgfX08L3NwYW4+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbnMtY29udGFpbmVyIHBlcC1zcGFjaW5nLWVsZW1lbnQtbmVnYXRpdmUgcHVsbC1yaWdodCBmbGlwXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRWaWV3VHlwZT8uS2V5ID09ICdPcmRlckNlbnRlck1hdHJpeCcgJiZcbiAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbEFwaU5hbWVzICYmXG4gICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWxBcGlOYW1lcy5sZW5ndGggPiAwXG4gICAgICAgICAgICAgICAgXCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInBlcC1zcGFjaW5nLWVsZW1lbnQgcGVwLWJ1dHRvbiBpY29uLWJ1dHRvbiBzbSB3ZWFrXCIgbWF0LWJ1dHRvbiBbbWF0TWVudVRyaWdnZXJGb3JdPVwibWVudVwiXG4gICAgICAgICAgICAgICAgICAgIG1lbnUtYmx1cj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwdWxsLWxlZnQgZmxpcFwiICpuZ0lmPVwiY3VycmVudEFkZGl0aW9uYWxBcGlOYW1lXCI+Jm5ic3A7e3tcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRBZGRpdGlvbmFsQXBpTmFtZT8uVmFsdWUgfX0mbmJzcDs8L3NwYW4+XG5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIFtuZ0NsYXNzXT1cInsncHVsbC1sZWZ0IGZsaXAnOiBjdXJyZW50QWRkaXRpb25hbEFwaU5hbWV9XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cGVwLWljb24gbmFtZT1cInN5c3RlbV9pbmZvXCI+PC9wZXAtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8bWF0LW1lbnUgI21lbnU9XCJtYXRNZW51XCIgeFBvc2l0aW9uPVwiYmVmb3JlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWQ6IGN1cnJlbnRBZGRpdGlvbmFsQXBpTmFtZSA9PT0gbnVsbFxuICAgICAgICAgICAgICAgICAgICAgICAgfVwiIChjbGljayk9XCJjaGFuZ2VBZGRpdGlvbmFsQXBpTmFtZShudWxsKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgXCJMSVNULk5PTkVcIiB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWQ6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRBZGRpdGlvbmFsQXBpTmFtZT8uS2V5ID09XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWxBcGlOYW1lPy5LZXlcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cIiAqbmdGb3I9XCJsZXQgYWRkaXRpb25hbEFwaU5hbWUgb2YgYWRkaXRpb25hbEFwaU5hbWVzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjaGFuZ2VBZGRpdGlvbmFsQXBpTmFtZShhZGRpdGlvbmFsQXBpTmFtZSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IGFkZGl0aW9uYWxBcGlOYW1lLlZhbHVlIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L21hdC1tZW51PlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY2hpbGRWaWV3VHlwZXMgJiYgY2hpbGRWaWV3VHlwZXMubGVuZ3RoID4gMVwiPlxuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJwZXAtc3BhY2luZy1lbGVtZW50IHBlcC1idXR0b24gaWNvbi1idXR0b24gc20gd2Vha1wiIG1hdC1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgW21hdE1lbnVUcmlnZ2VyRm9yXT1cInZpZXdzTWVudVwiIG1lbnUtYmx1cj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHBlcC1pY29uIG5hbWU9XCJ2aWV3X2NhcmRfbWRcIj48L3BlcC1pY29uPlxuICAgICAgICAgICAgICAgICAgICA8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgICAgICAgICAgPG1hdC1tZW51ICN2aWV3c01lbnU9XCJtYXRNZW51XCIgeFBvc2l0aW9uPVwiYmVmb3JlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWQ6IGN1cnJlbnRWaWV3VHlwZT8uS2V5ID09IHZpZXdUeXBlPy5LZXlcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cIiAqbmdGb3I9XCJsZXQgdmlld1R5cGUgb2YgY2hpbGRWaWV3VHlwZXNcIiAoY2xpY2spPVwiY2hhbmdlQ2hpbGRyZW5WaWV3VHlwZSh2aWV3VHlwZT8uS2V5KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIFtuZ1N3aXRjaF09XCJ2aWV3VHlwZT8uS2V5XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBlcC1pY29uICpuZ1N3aXRjaENhc2U9XCInT3JkZXJDZW50ZXJNYXRyaXgnXCIgbmFtZT1cInZpZXdfbWF0cml4XCI+PC9wZXAtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGVwLWljb24gKm5nU3dpdGNoQ2FzZT1cIidPcmRlckNlbnRlckZsYXRNYXRyaXhHcmlkJ1wiIG5hbWU9XCJ2aWV3X3RhYmxlXCI+PC9wZXAtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGVwLWljb24gKm5nU3dpdGNoQ2FzZT1cIidPcmRlckNlbnRlckZsYXRNYXRyaXhMaW5lJ1wiIG5hbWU9XCJ2aWV3X2xpbmVcIj48L3BlcC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IHZpZXdUeXBlPy5WYWx1ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9tYXQtbWVudT5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNtYXRyaXhUZW1wbGF0ZT5cbiAgICA8ZGl2ICNtYXRyaXhDb250YWluZXIgY2xhc3M9XCJtYXRyaXgtY29udGFpbmVyXCI+XG4gICAgICAgIDxwZXAtaW50ZXJuYWwtbGlzdCAodmFsdWVDaGFuZ2UpPVwib25DdXN0b21pemVPYmplY3RDaGFuZ2VkKCRldmVudClcIiBbcGFyZW50U2Nyb2xsXT1cIm1hdHJpeENvbnRhaW5lclwiXG4gICAgICAgICAgICAoZmllbGRDbGljayk9XCJvbkN1c3RvbWl6ZUZpZWxkQ2xpY2soJGV2ZW50KVwiIFt0b3RhbHNSb3ddPVwidG90YWxzUm93XCI+PC9wZXAtaW50ZXJuYWwtbGlzdD5cbiAgICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxkaXYgI21haW5WaWV3Q29udCBpZD1cIm1haW5WaWV3Q29udFwiIFtuZ1N0eWxlXT1cInsgJ21heC13aWR0aCc6IHZpZXdXaWR0aCwgJ21heC1oZWlnaHQnOiB2aWV3SGVpZ2h0IH1cIj5cbiAgICA8ZGl2ICNteTFtbSBpZD1cIm15MV9tbVwiIHN0eWxlPVwiaGVpZ2h0OjFtbTt3aWR0aDoxbW07dmlzaWJpbGl0eTogaGlkZGVuO1wiPjwvZGl2PlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb3ZlckNoaWxkVGFibGUgJiYgdWlDb250cm9sICE9IG51bGxcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLWNvdmVyXCI+PC9kaXY+XG4gICAgICAgIDxidXR0b24gKGNsaWNrKT1cInNob3dNYXRyaXhEaWFsb2coKVwiIGNsYXNzPVwicGVwLWJ1dHRvbiBzdHJvbmcgc20gdGFibGUtY292ZXItYnV0dG9uXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2xpbmV2aWV3LWJ0bic6IGN1cnJlbnRWaWV3VHlwZT8uS2V5ID09ICdPcmRlckNlbnRlckZsYXRNYXRyaXhMaW5lJ31cIj5cbiAgICAgICAgICAgIHt7IFwiSU5URVJOQUxfUEFHRS5DTElDS19UT19PUkRFUlwiIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDwvYnV0dG9uPlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIm1hdHJpeEhlYWRlclRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAjb3JnQ29udD48L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI21hdHJpeERpYWxvZ1RlbXBsYXRlPlxuXG4gICAgPGRpdiBtYXQtZGlhbG9nLXRpdGxlPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibWF0cml4SGVhZGVyVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgbWF0LWRpYWxvZy1jb250ZW50PlxuICAgICAgICA8bmctY29udGFpbmVyICNkaWFsb2dDb250PjwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPCEtLSA8ZGl2IGlkPVwiY2hpbGRHcmlkTW9kYWxcIiBic01vZGFsIChvblNob3duKT1cIm9uU2hvd24oKVwiIChvbkhpZGRlbik9XCJvbkhpZGRlbigpXCIgI2NoaWxkTW9kYWw9XCJicy1tb2RhbFwiIGNsYXNzPVwibW9kYWxcIlxuICAgIHRhYmluZGV4PVwiLTFcIiByb2xlPVwiZGlhbG9nXCIgYXJpYS1sYWJlbGxlZGJ5PVwiZ3JpZE1vZGFsTGFiZWxcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICA8ZGl2IGNsYXNzPVwibW9kYWwtZGlhbG9nXCIgcm9sZT1cImRvY3VtZW50XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1jb250ZW50XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keSBtYXRyaXgtZGlhbG9nLWJvZHlcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICNtb2RhbENvbnQ+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L2Rpdj4gLS0+Il19
@@ -112,9 +112,9 @@ export class PepInternalPageService {
112
112
  );
113
113
  }
114
114
  }
115
- PepInternalPageService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: PepInternalPageService, deps: [{ token: i1.PepHttpService }], target: i0.ɵɵFactoryTarget.Injectable });
116
- PepInternalPageService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: PepInternalPageService });
117
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: PepInternalPageService, decorators: [{
115
+ PepInternalPageService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PepInternalPageService, deps: [{ token: i1.PepHttpService }], target: i0.ɵɵFactoryTarget.Injectable });
116
+ PepInternalPageService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PepInternalPageService });
117
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PepInternalPageService, decorators: [{
118
118
  type: Injectable
119
119
  }], ctorParameters: function () { return [{ type: i1.PepHttpService }]; } });
120
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJuYWwtcGFnZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWxpYi9mb3JtL2ludGVybmFsLXBhZ2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFJM0MsTUFBTSxPQUFPLHNCQUFzQjtJQVEvQixZQUFvQixXQUEyQjtRQUEzQixnQkFBVyxHQUFYLFdBQVcsQ0FBZ0I7UUFMdkMsYUFBUSxHQUFHLEdBQUcsQ0FBQztRQUdoQixzQkFBaUIsR0FBRyxFQUFFLENBQUM7UUFHMUIsSUFBSSxDQUFDLGNBQWMsR0FBRywwQ0FBMEMsQ0FBQztJQUNyRSxDQUFDO0lBRUQsZ0JBQWdCO1FBQ1osTUFBTSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxRQUFRLGVBQWUsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDO1FBQ2xGLE9BQU8sR0FBRyxDQUFDO0lBQ2YsQ0FBQztJQUVELFdBQVcsQ0FBQyxZQUFpQjtRQUN6QixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1lBQ3hCLGNBQWMsRUFBRSxJQUFJLENBQUMsUUFBUTtZQUM3QixVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVU7WUFDM0IsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLGlCQUFpQjtZQUN6Qyx1QkFBdUIsRUFBRSxJQUFJLENBQUMsUUFBUTtZQUN0QyxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7U0FDMUIsQ0FBQyxDQUFDO1FBRUgscURBQXFEO1FBQ3JELE1BQU0sVUFBVSxHQUNaLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxNQUFNLEdBQUcsQ0FBQztZQUM5QixDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsaUJBQWlCLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUM5QyxDQUFDLENBQUMsTUFBTSxJ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SixZQUFZLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDdEIsQ0FBQztRQUNELGlCQUFpQjtRQUNqQixXQUFXO1NBQ2QsQ0FBQztJQUNWLENBQUM7SUFFRCxpQkFBaUIsQ0FDYixNQUFjLEVBQ2QsWUFBb0IsRUFDcEIsS0FBYSxFQUNiLFlBQWlCO1FBRWpCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7WUFDeEIsY0FBYyxFQUFFLElBQUksQ0FBQyxRQUFRO1lBQzdCLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVTtZQUMzQix1QkFBdUIsRUFBRSxJQUFJLENBQUMsUUFBUTtZQUN0QyxrQkFBa0IsRUFBRSxNQUFNO1lBQzFCLFlBQVksRUFBRSxZQUFZO1lBQzFCLFVBQVUsRUFBRSxLQUFLO1lBQ2pCLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtTQUMxQixDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsV0FBVzthQUNYLGVBQWUsQ0FBQyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxlQUFlLEVBQUUsSUFBSSxDQUFDO2FBQ2hFLFNBQVMsQ0FDTixDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQ0osWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3RCLENBQUM7UUFDRCxpQkFBaUI7UUFDakIsV0FBVztTQUNkLENBQUM7SUFDVixDQUFDOzttSEE1SlEsc0JBQXNCO3VIQUF0QixzQkFBc0I7MkZBQXRCLHNCQUFzQjtrQkFEbEMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFBlcEh0dHBTZXJ2aWNlIH0gZnJvbSAnQHBlcHBlcmktYWRkb25zL25neC1saWInO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgUGVwSW50ZXJuYWxQYWdlU2VydmljZSB7XG4gICAgcHJpdmF0ZSB0cmFuc2FjdGlvblVybDogc3RyaW5nO1xuICAgIHByaXZhdGUgb2JqZWN0SWQ6IHN0cmluZztcbiAgICBwcml2YXRlIHBhcmVudElkID0gJzAnO1xuICAgIHByaXZhdGUgc2VhcmNoQ29kZTogc3RyaW5nO1xuICAgIHByaXZhdGUgdmlld1R5cGU6IHN0cmluZztcbiAgICBwdWJsaWMgYWRkaXRpb25hbEFwaU5hbWUgPSAnJztcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cFNlcnZpY2U6IFBlcEh0dHBTZXJ2aWNlKSB7XG4gICAgICAgIHRoaXMudHJhbnNhY3Rpb25VcmwgPSAnU2VydmljZTEuc3ZjL3YxL09yZGVyQ2VudGVyL1RyYW5zYWN0aW9uLyc7XG4gICAgfVxuXG4gICAgZ2V0QmFzZVBhcmVudFVybCgpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCB1cmwgPSBgJHt0aGlzLnRyYW5zYWN0aW9uVXJsfSR7dGhpcy5vYmplY3RJZH0vUGFyZW50TGluZS8ke3RoaXMucGFyZW50SWR9L2A7XG4gICAgICAgIHJldHVybiB1cmw7XG4gICAgfVxuXG4gICAgZ2V0Q2hpbGRyZW4oY2FsbGJhY2tGdW5jOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgYm9keSA9IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgIFRyYW5zYWN0aW9uVUlEOiB0aGlzLm9iamVjdElkLFxuICAgICAgICAgICAgU2VhcmNoQ29kZTogdGhpcy5zZWFyY2hDb2RlLFxuICAgICAgICAgICAgQWRkaXRpb25hbEFwaU5hbWU6IHRoaXMuYWRkaXRpb25hbEFwaU5hbWUsXG4gICAgICAgICAgICBQYXJlbnRUcmFuc2FjdGlvbkxpbmVJRDogdGhpcy5wYXJlbnRJZCxcbiAgICAgICAgICAgIFZpZXdUeXBlOiB0aGlzLnZpZXdUeXBlLFxuICAgICAgICB9KTtcblxuICAgICAgICAvLyBTZXQgdGhlIGFkZGl0aW9uYWwgYXBpIG5hbWUgd2l0aCB2aWV3IHR5cGUgc3RyaW5nLlxuICAgICAgICBjb25zdCBtb3JlUGFyYW1zID1cbiAgICAgICAgICAgIHRoaXMuYWRkaXRpb25hbEFwaU5hbWU/Lmxlbmd0aCA+IDBcbiAgICAgICAgICAgICAgICA/IGAke3RoaXMuYWRkaXRpb25hbEFwaU5hbWV9LyR7dGhpcy52aWV3VHlwZX1gXG4gICAgICAgICAgICAgICAgOiBgJycvJHt0aGlzLnZpZXdUeXBlfWA7XG5cbiAgICAgICAgY29uc3QgdXJsID0gYCR7dGhpcy5nZXRCYXNlUGFyZW50VXJsKCl9SXRlbXMvJHttb3JlUGFyYW1zfWA7XG5cbiAgICAgICAgdGhpcy5odHRwU2VydmljZS5wb3N0V2FwaUFwaUNhbGwodXJsLCBib2R5KS5zdWJzY3JpYmUoXG4gICAgICAgICAgICAocmVzKSA9PiB7XG4gICAgICAgICAgICAgICAgY2FsbGJhY2tGdW5jKHJlcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyAoZXJyb3IpID0+IHt9LFxuICAgICAgICAgICAgLy8gKCkgPT4ge31cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBpbml0RGV0YWlscyhcbiAgICAgICAgb2JqZWN0SWQ6IHN0cmluZyxcbiAgICAgICAgcGFyZW50SWQ6IHN0cmluZyxcbiAgICAgICAgc2VhcmNoQ29kZTogc3RyaW5nLFxuICAgICAgICBjYWxsYmFja0Z1bmM6IGFueVxuICAgICk6IHZvaWQge1xuICAgICAgICBpZiAoIW9iamVjdElkIHx8ICFwYXJlbnRJZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5vYmplY3RJZCA9IG9iamVjdElkO1xuICAgICAgICB0aGlzLnBhcmVudElkID0gcGFyZW50SWQ7XG4gICAgICAgIHRoaXMuc2VhcmNoQ29kZSA9IHNlYXJjaENvZGU7XG5cbiAgICAgICAgdGhpcy5odHRwU2VydmljZVxuICAgICAgICAgICAgLmdldFdhcGlBcGlDYWxsKGAke3RoaXMuZ2V0QmFzZVBhcmVudFVybCgpfVZpZXdUeXBlc2ApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKFxuICAgICAgICAgICAgICAgIChyZXMpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2tGdW5jKHJlcyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIChlcnJvcikgPT4ge30sXG4gICAgICAgICAgICAgICAgLy8gKCkgPT4ge31cbiAgICAgICAgICAgICk7XG4gICAgfVxuXG4gICAgY2hhbmdlQ2hpbGRyZW5WaWV3VHlwZSh2aWV3VHlwZTogc3RyaW5nLCBjYWxsYmFja0Z1bmM6IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLnZpZXdUeXBlID0gdmlld1R5cGU7XG4gICAgICAgIHRoaXMuZ2V0Q2hpbGRyZW4oY2FsbGJhY2tGdW5jKTtcbiAgICB9XG5cbiAgICBjaGFuZ2VBZGRpdGlvbmFsQXBpTmFtZShcbiAgICAgICAgYWRkaXRpb25hbEFwaU5hbWU6IHN0cmluZyxcbiAgICAgICAgY2FsbGJhY2tGdW5jOiBhbnlcbiAgICApOiB2b2lkIHtcbiAgICAgICAgdGhpcy5hZGRpdGlvbmFsQXBpTmFtZSA9IGFkZGl0aW9uYWxBcGlOYW1lO1xuICAgICAgICB0aGlzLmdldENoaWxkcmVuKGNhbGxiYWNrRnVuYyk7XG4gICAgfVxuXG4gICAgY2hpbGRQbHVzQ2xpY2soXG4gICAgICAgIGl0ZW1JZDogc3RyaW5nLFxuICAgICAgICBmaWVsZEFwaU5hbWU6IHN0cmluZyxcbiAgICAgICAgY2FsbGJhY2tGdW5jOiBhbnlcbiAgICApOiB2b2lkIHtcbiAgICAgICAgY29uc3QgYm9keSA9IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgIFRyYW5zYWN0aW9uVUlEOiB0aGlzLm9iamVjdElkLFxuICAgICAgICAgICAgU2VhcmNoQ29kZTogdGhpcy5zZWFyY2hDb2RlLFxuICAgICAgICAgICAgUGFyZW50VHJhbnNhY3Rpb25MaW5lSUQ6IHRoaXMucGFyZW50SWQsXG4gICAgICAgICAgICBUcmFuc2FjdGlvbkxpbmVVSUQ6IGl0ZW1JZCxcbiAgICAgICAgICAgIEZpZWxkQXBpTmFtZTogZmllbGRBcGlOYW1lLFxuICAgICAgICAgICAgVmlld1R5cGU6IHRoaXMudmlld1R5cGUsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuaHR0cFNlcnZpY2VcbiAgICAgICAgICAgIC5wb3N0V2FwaUFwaUNhbGwoYCR7dGhpcy5nZXRCYXNlUGFyZW50VXJsKCl9SW5jcmVtZW50VmFsdWVgLCBib2R5KVxuICAgICAgICAgICAgLnN1YnNjcmliZShcbiAgICAgICAgICAgICAgICAocmVzKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrRnVuYyhyZXMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyAoZXJyb3IpID0+IHt9LFxuICAgICAgICAgICAgICAgIC8vICgpID0+IHt9XG4gICAgICAgICAgICApO1xuICAgIH1cblxuICAgIGNoaWxkTWludXNDbGljayhcbiAgICAgICAgaXRlbUlkOiBzdHJpbmcsXG4gICAgICAgIGZpZWxkQXBpTmFtZTogc3RyaW5nLFxuICAgICAgICBjYWxsYmFja0Z1bmM6IGFueVxuICAgICk6IHZvaWQge1xuICAgICAgICBjb25zdCBib2R5ID0gSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgVHJhbnNhY3Rpb25VSUQ6IHRoaXMub2JqZWN0SWQsXG4gICAgICAgICAgICBTZWFyY2hDb2RlOiB0aGlzLnNlYXJjaENvZGUsXG4gICAgICAgICAgICBQYXJlbnRUcmFuc2FjdGlvbkxpbmVJRDogdGhpcy5wYXJlbnRJZCxcbiAgICAgICAgICAgIFRyYW5zYWN0aW9uTGluZVVJRDogaXRlbUlkLFxuICAgICAgICAgICAgRmllbGRBcGlOYW1lOiBmaWVsZEFwaU5hbWUsXG4gICAgICAgICAgICBWaWV3VHlwZTogdGhpcy52aWV3VHlwZSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5odHRwU2VydmljZVxuICAgICAgICAgICAgLnBvc3RXYXBpQXBpQ2FsbChgJHt0aGlzLmdldEJhc2VQYXJlbnRVcmwoKX1EZWNyZW1lbnRWYWx1ZWAsIGJvZHkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKFxuICAgICAgICAgICAgICAgIChyZXMpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2tGdW5jKHJlcyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIChlcnJvcikgPT4ge30sXG4gICAgICAgICAgICAgICAgLy8gKCkgPT4ge31cbiAgICAgICAgICAgICk7XG4gICAgfVxuXG4gICAgY2hpbGRWYWx1ZUNoYW5nZWQoXG4gICAgICAgIGl0ZW1JZDogc3RyaW5nLFxuICAgICAgICBmaWVsZEFwaU5hbWU6IHN0cmluZyxcbiAgICAgICAgdmFsdWU6IHN0cmluZyxcbiAgICAgICAgY2FsbGJhY2tGdW5jOiBhbnlcbiAgICApOiB2b2lkIHtcbiAgICAgICAgY29uc3QgYm9keSA9IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgIFRyYW5zYWN0aW9uVUlEOiB0aGlzLm9iamVjdElkLFxuICAgICAgICAgICAgU2VhcmNoQ29kZTogdGhpcy5zZWFyY2hDb2RlLFxuICAgICAgICAgICAgUGFyZW50VHJhbnNhY3Rpb25MaW5lSUQ6IHRoaXMucGFyZW50SWQsXG4gICAgICAgICAgICBUcmFuc2FjdGlvbkxpbmVVSUQ6IGl0ZW1JZCxcbiAgICAgICAgICAgIEZpZWxkQXBpTmFtZTogZmllbGRBcGlOYW1lLFxuICAgICAgICAgICAgRmllbGRWYWx1ZTogdmFsdWUsXG4gICAgICAgICAgICBWaWV3VHlwZTogdGhpcy52aWV3VHlwZSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5odHRwU2VydmljZVxuICAgICAgICAgICAgLnBvc3RXYXBpQXBpQ2FsbChgJHt0aGlzLmdldEJhc2VQYXJlbnRVcmwoKX1TZXRGaWVsZFZhbHVlYCwgYm9keSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgICAgICAgICAgKHJlcykgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjYWxsYmFja0Z1bmMocmVzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gKGVycm9yKSA9PiB7fSxcbiAgICAgICAgICAgICAgICAvLyAoKSA9PiB7fVxuICAgICAgICAgICAgKTtcbiAgICB9XG59XG4iXX0=
120
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJuYWwtcGFnZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWxpYi9mb3JtL2ludGVybmFsLXBhZ2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFJM0MsTUFBTSxPQUFPLHNCQUFzQjtJQVEvQixZQUFvQixXQUEyQjtRQUEzQixnQkFBVyxHQUFYLFdBQVcsQ0FBZ0I7UUFMdkMsYUFBUSxHQUFHLEdBQUcsQ0FBQztRQUdoQixzQkFBaUIsR0FBRyxFQUFFLENBQUM7UUFHMUIsSUFBSSxDQUFDLGNBQWMsR0FBRywwQ0FBMEMsQ0FBQztJQUNyRSxDQUFDO0lBRUQsZ0JBQWdCO1FBQ1osTUFBTSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxRQUFRLGVBQWUsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDO1FBQ2xGLE9BQU8sR0FBRyxDQUFDO0lBQ2YsQ0FBQztJQUVELFdBQVcsQ0FBQyxZQUFpQjtRQUN6QixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1lBQ3hCLGNBQWMsRUFBRSxJQUFJLENBQUMsUUFBUTtZQUM3QixVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVU7WUFDM0IsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLGlCQUFpQjtZQUN6Qyx1QkFBdUIsRUFBRSxJQUFJLENBQUMsUUFBUTtZQUN0QyxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7U0FDMUIsQ0FBQyxDQUFDO1FBRUgscURBQXFEO1FBQ3JELE1BQU0sVUFBVSxHQUNaLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxNQUFNLEdBQUcsQ0FBQztZQUM5QixDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsaUJBQWlCLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUM5QyxDQUFDLENBQUMsTUFBTSxJ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SixZQUFZLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDdEIsQ0FBQztRQUNELGlCQUFpQjtRQUNqQixXQUFXO1NBQ2QsQ0FBQztJQUNWLENBQUM7SUFFRCxpQkFBaUIsQ0FDYixNQUFjLEVBQ2QsWUFBb0IsRUFDcEIsS0FBYSxFQUNiLFlBQWlCO1FBRWpCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7WUFDeEIsY0FBYyxFQUFFLElBQUksQ0FBQyxRQUFRO1lBQzdCLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVTtZQUMzQix1QkFBdUIsRUFBRSxJQUFJLENBQUMsUUFBUTtZQUN0QyxrQkFBa0IsRUFBRSxNQUFNO1lBQzFCLFlBQVksRUFBRSxZQUFZO1lBQzFCLFVBQVUsRUFBRSxLQUFLO1lBQ2pCLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtTQUMxQixDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsV0FBVzthQUNYLGVBQWUsQ0FBQyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxlQUFlLEVBQUUsSUFBSSxDQUFDO2FBQ2hFLFNBQVMsQ0FDTixDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQ0osWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3RCLENBQUM7UUFDRCxpQkFBaUI7UUFDakIsV0FBVztTQUNkLENBQUM7SUFDVixDQUFDOztvSEE1SlEsc0JBQXNCO3dIQUF0QixzQkFBc0I7NEZBQXRCLHNCQUFzQjtrQkFEbEMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFBlcEh0dHBTZXJ2aWNlIH0gZnJvbSAnQHBlcHBlcmktYWRkb25zL25neC1saWInO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgUGVwSW50ZXJuYWxQYWdlU2VydmljZSB7XG4gICAgcHJpdmF0ZSB0cmFuc2FjdGlvblVybDogc3RyaW5nO1xuICAgIHByaXZhdGUgb2JqZWN0SWQ6IHN0cmluZztcbiAgICBwcml2YXRlIHBhcmVudElkID0gJzAnO1xuICAgIHByaXZhdGUgc2VhcmNoQ29kZTogc3RyaW5nO1xuICAgIHByaXZhdGUgdmlld1R5cGU6IHN0cmluZztcbiAgICBwdWJsaWMgYWRkaXRpb25hbEFwaU5hbWUgPSAnJztcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cFNlcnZpY2U6IFBlcEh0dHBTZXJ2aWNlKSB7XG4gICAgICAgIHRoaXMudHJhbnNhY3Rpb25VcmwgPSAnU2VydmljZTEuc3ZjL3YxL09yZGVyQ2VudGVyL1RyYW5zYWN0aW9uLyc7XG4gICAgfVxuXG4gICAgZ2V0QmFzZVBhcmVudFVybCgpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCB1cmwgPSBgJHt0aGlzLnRyYW5zYWN0aW9uVXJsfSR7dGhpcy5vYmplY3RJZH0vUGFyZW50TGluZS8ke3RoaXMucGFyZW50SWR9L2A7XG4gICAgICAgIHJldHVybiB1cmw7XG4gICAgfVxuXG4gICAgZ2V0Q2hpbGRyZW4oY2FsbGJhY2tGdW5jOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgYm9keSA9IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgIFRyYW5zYWN0aW9uVUlEOiB0aGlzLm9iamVjdElkLFxuICAgICAgICAgICAgU2VhcmNoQ29kZTogdGhpcy5zZWFyY2hDb2RlLFxuICAgICAgICAgICAgQWRkaXRpb25hbEFwaU5hbWU6IHRoaXMuYWRkaXRpb25hbEFwaU5hbWUsXG4gICAgICAgICAgICBQYXJlbnRUcmFuc2FjdGlvbkxpbmVJRDogdGhpcy5wYXJlbnRJZCxcbiAgICAgICAgICAgIFZpZXdUeXBlOiB0aGlzLnZpZXdUeXBlLFxuICAgICAgICB9KTtcblxuICAgICAgICAvLyBTZXQgdGhlIGFkZGl0aW9uYWwgYXBpIG5hbWUgd2l0aCB2aWV3IHR5cGUgc3RyaW5nLlxuICAgICAgICBjb25zdCBtb3JlUGFyYW1zID1cbiAgICAgICAgICAgIHRoaXMuYWRkaXRpb25hbEFwaU5hbWU/Lmxlbmd0aCA+IDBcbiAgICAgICAgICAgICAgICA/IGAke3RoaXMuYWRkaXRpb25hbEFwaU5hbWV9LyR7dGhpcy52aWV3VHlwZX1gXG4gICAgICAgICAgICAgICAgOiBgJycvJHt0aGlzLnZpZXdUeXBlfWA7XG5cbiAgICAgICAgY29uc3QgdXJsID0gYCR7dGhpcy5nZXRCYXNlUGFyZW50VXJsKCl9SXRlbXMvJHttb3JlUGFyYW1zfWA7XG5cbiAgICAgICAgdGhpcy5odHRwU2VydmljZS5wb3N0V2FwaUFwaUNhbGwodXJsLCBib2R5KS5zdWJzY3JpYmUoXG4gICAgICAgICAgICAocmVzKSA9PiB7XG4gICAgICAgICAgICAgICAgY2FsbGJhY2tGdW5jKHJlcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyAoZXJyb3IpID0+IHt9LFxuICAgICAgICAgICAgLy8gKCkgPT4ge31cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBpbml0RGV0YWlscyhcbiAgICAgICAgb2JqZWN0SWQ6IHN0cmluZyxcbiAgICAgICAgcGFyZW50SWQ6IHN0cmluZyxcbiAgICAgICAgc2VhcmNoQ29kZTogc3RyaW5nLFxuICAgICAgICBjYWxsYmFja0Z1bmM6IGFueVxuICAgICk6IHZvaWQge1xuICAgICAgICBpZiAoIW9iamVjdElkIHx8ICFwYXJlbnRJZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5vYmplY3RJZCA9IG9iamVjdElkO1xuICAgICAgICB0aGlzLnBhcmVudElkID0gcGFyZW50SWQ7XG4gICAgICAgIHRoaXMuc2VhcmNoQ29kZSA9IHNlYXJjaENvZGU7XG5cbiAgICAgICAgdGhpcy5odHRwU2VydmljZVxuICAgICAgICAgICAgLmdldFdhcGlBcGlDYWxsKGAke3RoaXMuZ2V0QmFzZVBhcmVudFVybCgpfVZpZXdUeXBlc2ApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKFxuICAgICAgICAgICAgICAgIChyZXMpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2tGdW5jKHJlcyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIChlcnJvcikgPT4ge30sXG4gICAgICAgICAgICAgICAgLy8gKCkgPT4ge31cbiAgICAgICAgICAgICk7XG4gICAgfVxuXG4gICAgY2hhbmdlQ2hpbGRyZW5WaWV3VHlwZSh2aWV3VHlwZTogc3RyaW5nLCBjYWxsYmFja0Z1bmM6IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLnZpZXdUeXBlID0gdmlld1R5cGU7XG4gICAgICAgIHRoaXMuZ2V0Q2hpbGRyZW4oY2FsbGJhY2tGdW5jKTtcbiAgICB9XG5cbiAgICBjaGFuZ2VBZGRpdGlvbmFsQXBpTmFtZShcbiAgICAgICAgYWRkaXRpb25hbEFwaU5hbWU6IHN0cmluZyxcbiAgICAgICAgY2FsbGJhY2tGdW5jOiBhbnlcbiAgICApOiB2b2lkIHtcbiAgICAgICAgdGhpcy5hZGRpdGlvbmFsQXBpTmFtZSA9IGFkZGl0aW9uYWxBcGlOYW1lO1xuICAgICAgICB0aGlzLmdldENoaWxkcmVuKGNhbGxiYWNrRnVuYyk7XG4gICAgfVxuXG4gICAgY2hpbGRQbHVzQ2xpY2soXG4gICAgICAgIGl0ZW1JZDogc3RyaW5nLFxuICAgICAgICBmaWVsZEFwaU5hbWU6IHN0cmluZyxcbiAgICAgICAgY2FsbGJhY2tGdW5jOiBhbnlcbiAgICApOiB2b2lkIHtcbiAgICAgICAgY29uc3QgYm9keSA9IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgIFRyYW5zYWN0aW9uVUlEOiB0aGlzLm9iamVjdElkLFxuICAgICAgICAgICAgU2VhcmNoQ29kZTogdGhpcy5zZWFyY2hDb2RlLFxuICAgICAgICAgICAgUGFyZW50VHJhbnNhY3Rpb25MaW5lSUQ6IHRoaXMucGFyZW50SWQsXG4gICAgICAgICAgICBUcmFuc2FjdGlvbkxpbmVVSUQ6IGl0ZW1JZCxcbiAgICAgICAgICAgIEZpZWxkQXBpTmFtZTogZmllbGRBcGlOYW1lLFxuICAgICAgICAgICAgVmlld1R5cGU6IHRoaXMudmlld1R5cGUsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuaHR0cFNlcnZpY2VcbiAgICAgICAgICAgIC5wb3N0V2FwaUFwaUNhbGwoYCR7dGhpcy5nZXRCYXNlUGFyZW50VXJsKCl9SW5jcmVtZW50VmFsdWVgLCBib2R5KVxuICAgICAgICAgICAgLnN1YnNjcmliZShcbiAgICAgICAgICAgICAgICAocmVzKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrRnVuYyhyZXMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyAoZXJyb3IpID0+IHt9LFxuICAgICAgICAgICAgICAgIC8vICgpID0+IHt9XG4gICAgICAgICAgICApO1xuICAgIH1cblxuICAgIGNoaWxkTWludXNDbGljayhcbiAgICAgICAgaXRlbUlkOiBzdHJpbmcsXG4gICAgICAgIGZpZWxkQXBpTmFtZTogc3RyaW5nLFxuICAgICAgICBjYWxsYmFja0Z1bmM6IGFueVxuICAgICk6IHZvaWQge1xuICAgICAgICBjb25zdCBib2R5ID0gSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgVHJhbnNhY3Rpb25VSUQ6IHRoaXMub2JqZWN0SWQsXG4gICAgICAgICAgICBTZWFyY2hDb2RlOiB0aGlzLnNlYXJjaENvZGUsXG4gICAgICAgICAgICBQYXJlbnRUcmFuc2FjdGlvbkxpbmVJRDogdGhpcy5wYXJlbnRJZCxcbiAgICAgICAgICAgIFRyYW5zYWN0aW9uTGluZVVJRDogaXRlbUlkLFxuICAgICAgICAgICAgRmllbGRBcGlOYW1lOiBmaWVsZEFwaU5hbWUsXG4gICAgICAgICAgICBWaWV3VHlwZTogdGhpcy52aWV3VHlwZSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5odHRwU2VydmljZVxuICAgICAgICAgICAgLnBvc3RXYXBpQXBpQ2FsbChgJHt0aGlzLmdldEJhc2VQYXJlbnRVcmwoKX1EZWNyZW1lbnRWYWx1ZWAsIGJvZHkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKFxuICAgICAgICAgICAgICAgIChyZXMpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2tGdW5jKHJlcyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIChlcnJvcikgPT4ge30sXG4gICAgICAgICAgICAgICAgLy8gKCkgPT4ge31cbiAgICAgICAgICAgICk7XG4gICAgfVxuXG4gICAgY2hpbGRWYWx1ZUNoYW5nZWQoXG4gICAgICAgIGl0ZW1JZDogc3RyaW5nLFxuICAgICAgICBmaWVsZEFwaU5hbWU6IHN0cmluZyxcbiAgICAgICAgdmFsdWU6IHN0cmluZyxcbiAgICAgICAgY2FsbGJhY2tGdW5jOiBhbnlcbiAgICApOiB2b2lkIHtcbiAgICAgICAgY29uc3QgYm9keSA9IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgIFRyYW5zYWN0aW9uVUlEOiB0aGlzLm9iamVjdElkLFxuICAgICAgICAgICAgU2VhcmNoQ29kZTogdGhpcy5zZWFyY2hDb2RlLFxuICAgICAgICAgICAgUGFyZW50VHJhbnNhY3Rpb25MaW5lSUQ6IHRoaXMucGFyZW50SWQsXG4gICAgICAgICAgICBUcmFuc2FjdGlvbkxpbmVVSUQ6IGl0ZW1JZCxcbiAgICAgICAgICAgIEZpZWxkQXBpTmFtZTogZmllbGRBcGlOYW1lLFxuICAgICAgICAgICAgRmllbGRWYWx1ZTogdmFsdWUsXG4gICAgICAgICAgICBWaWV3VHlwZTogdGhpcy52aWV3VHlwZSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5odHRwU2VydmljZVxuICAgICAgICAgICAgLnBvc3RXYXBpQXBpQ2FsbChgJHt0aGlzLmdldEJhc2VQYXJlbnRVcmwoKX1TZXRGaWVsZFZhbHVlYCwgYm9keSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgICAgICAgICAgKHJlcykgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjYWxsYmFja0Z1bmMocmVzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gKGVycm9yKSA9PiB7fSxcbiAgICAgICAgICAgICAgICAvLyAoKSA9PiB7fVxuICAgICAgICAgICAgKTtcbiAgICB9XG59XG4iXX0=