cmat 0.0.15 → 0.0.17

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 (272) hide show
  1. package/README.md +2 -2
  2. package/components/custom-formly/public-api.d.ts +1 -0
  3. package/components/custom-formly/types/button/button.component.d.ts +19 -3
  4. package/components/custom-formly/types/cascade/cascade.component.d.ts +3 -2
  5. package/components/custom-formly/types/checklist/checklist.component.d.ts +3 -2
  6. package/components/custom-formly/types/chips/chips.component.d.ts +3 -2
  7. package/components/custom-formly/types/date-range/date-range.component.d.ts +3 -2
  8. package/components/custom-formly/types/datepicker/datepicker.component.d.ts +3 -2
  9. package/components/custom-formly/types/multicheckbox/multicheckbox.component.d.ts +3 -2
  10. package/components/custom-formly/types/number/number.component.d.ts +3 -2
  11. package/components/custom-formly/types/quill/quill.component.d.ts +3 -2
  12. package/components/custom-formly/types/radio/radio.component.d.ts +3 -2
  13. package/components/custom-formly/types/rating/rating.component.d.ts +3 -2
  14. package/components/custom-formly/types/repeat/repeat.component.d.ts +3 -2
  15. package/components/custom-formly/types/select/select.component.d.ts +3 -2
  16. package/components/custom-formly/types/select-tree/select-tree.component.d.ts +2 -2
  17. package/components/custom-formly/types/stepper/stepper.type.d.ts +2 -2
  18. package/components/custom-formly/types/table/table.component.d.ts +11 -5
  19. package/components/custom-formly/types/tags/tags.component.d.ts +3 -2
  20. package/components/custom-formly/types/upload/upload.component.d.ts +3 -2
  21. package/components/custom-formly/wrappers/form-field/form-field.component.d.ts +25 -0
  22. package/components/material-datetimepicker/datetimepicker.d.ts +4 -3
  23. package/components/select-search/select-search.component.d.ts +2 -1
  24. package/components/upload/upload-queue/upload-queue.component.d.ts +3 -2
  25. package/esm2022/animations/dropdown.mjs +1 -1
  26. package/esm2022/components/adapter/dayjs-date-adapter.mjs +4 -4
  27. package/esm2022/components/adapter/dayjs-datetime-adapter.mjs +4 -4
  28. package/esm2022/components/adapter/native-datetime-adapter.mjs +4 -4
  29. package/esm2022/components/breadcrumb/breadcrumb-item.directive.mjs +4 -4
  30. package/esm2022/components/breadcrumb/breadcrumb.component.mjs +4 -4
  31. package/esm2022/components/breadcrumb/breadcrumb.service.mjs +5 -5
  32. package/esm2022/components/card/card.component.mjs +5 -5
  33. package/esm2022/components/cascade/cascade-bottom-sheet/cascade-bottom-sheet.component.mjs +5 -5
  34. package/esm2022/components/cascade/cascade-list/cascade-list.component.mjs +6 -6
  35. package/esm2022/components/cascade/cascade-menu/cascade-menu.component.mjs +5 -5
  36. package/esm2022/components/cascade/options.interface.mjs +1 -1
  37. package/esm2022/components/chip-input/chip-input.component.mjs +6 -7
  38. package/esm2022/components/custom-formly/extension/addons.extension.mjs +2 -2
  39. package/esm2022/components/custom-formly/public-api.mjs +2 -1
  40. package/esm2022/components/custom-formly/types/button/button.component.mjs +57 -15
  41. package/esm2022/components/custom-formly/types/cascade/cascade.component.mjs +4 -4
  42. package/esm2022/components/custom-formly/types/checklist/checklist.component.mjs +4 -4
  43. package/esm2022/components/custom-formly/types/chips/chips.component.mjs +4 -4
  44. package/esm2022/components/custom-formly/types/color-picker/color-picker.component.mjs +4 -4
  45. package/esm2022/components/custom-formly/types/date-range/date-range.component.mjs +4 -4
  46. package/esm2022/components/custom-formly/types/datepicker/datepicker.component.mjs +5 -5
  47. package/esm2022/components/custom-formly/types/multicheckbox/multicheckbox.component.mjs +4 -4
  48. package/esm2022/components/custom-formly/types/number/number.component.mjs +4 -4
  49. package/esm2022/components/custom-formly/types/quill/quill.component.mjs +6 -6
  50. package/esm2022/components/custom-formly/types/radio/radio.component.mjs +4 -4
  51. package/esm2022/components/custom-formly/types/rating/rating.component.mjs +4 -4
  52. package/esm2022/components/custom-formly/types/repeat/repeat.component.mjs +4 -4
  53. package/esm2022/components/custom-formly/types/select/select.component.mjs +16 -15
  54. package/esm2022/components/custom-formly/types/select-tree/select-tree.component.mjs +4 -4
  55. package/esm2022/components/custom-formly/types/stepper/horizontal/stepper.component.mjs +4 -4
  56. package/esm2022/components/custom-formly/types/stepper/stepper.type.mjs +1 -1
  57. package/esm2022/components/custom-formly/types/stepper/vertical/stepper.component.mjs +4 -4
  58. package/esm2022/components/custom-formly/types/table/table.component.mjs +28 -14
  59. package/esm2022/components/custom-formly/types/tabs/tab.component.mjs +4 -4
  60. package/esm2022/components/custom-formly/types/tags/tags.component.mjs +4 -4
  61. package/esm2022/components/custom-formly/types/textarea/textarea.component.mjs +4 -4
  62. package/esm2022/components/custom-formly/types/upload/upload.component.mjs +4 -4
  63. package/esm2022/components/custom-formly/wrappers/addons/addons.component.mjs +4 -4
  64. package/esm2022/components/custom-formly/wrappers/card/card.component.mjs +4 -4
  65. package/esm2022/components/custom-formly/wrappers/expansion/expansion.component.mjs +4 -4
  66. package/esm2022/components/custom-formly/wrappers/form-field/form-field.component.mjs +47 -0
  67. package/esm2022/components/custom-formly/wrappers/panel/panel.component.mjs +4 -4
  68. package/esm2022/components/date-range/date-range.component.mjs +6 -6
  69. package/esm2022/components/drawer/drawer.component.mjs +4 -4
  70. package/esm2022/components/drawer/drawer.service.mjs +4 -4
  71. package/esm2022/components/fullscreen/fullscreen.component.mjs +4 -4
  72. package/esm2022/components/highlight/highlight.component.mjs +4 -4
  73. package/esm2022/components/highlight/highlight.service.mjs +4 -4
  74. package/esm2022/components/json-editor/json-editor.component.mjs +6 -6
  75. package/esm2022/components/masonry/masonry.component.mjs +4 -4
  76. package/esm2022/components/material-color-picker/material-color-picker.component.mjs +5 -5
  77. package/esm2022/components/material-datetimepicker/calendar-body.mjs +5 -5
  78. package/esm2022/components/material-datetimepicker/calendar.mjs +5 -5
  79. package/esm2022/components/material-datetimepicker/clock.mjs +5 -5
  80. package/esm2022/components/material-datetimepicker/datetimepicker-input.mjs +4 -4
  81. package/esm2022/components/material-datetimepicker/datetimepicker-intl.mjs +4 -4
  82. package/esm2022/components/material-datetimepicker/datetimepicker-toggle.mjs +8 -8
  83. package/esm2022/components/material-datetimepicker/datetimepicker.mjs +14 -11
  84. package/esm2022/components/material-datetimepicker/month-view.mjs +5 -5
  85. package/esm2022/components/material-datetimepicker/multi-year-view.mjs +4 -4
  86. package/esm2022/components/material-datetimepicker/time.mjs +8 -8
  87. package/esm2022/components/material-datetimepicker/year-view.mjs +4 -4
  88. package/esm2022/components/navigation/horizontal/components/basic/basic.component.mjs +5 -5
  89. package/esm2022/components/navigation/horizontal/components/branch/branch.component.mjs +4 -4
  90. package/esm2022/components/navigation/horizontal/components/divider/divider.component.mjs +4 -4
  91. package/esm2022/components/navigation/horizontal/components/spacer/spacer.component.mjs +4 -4
  92. package/esm2022/components/navigation/horizontal/horizontal.component.mjs +4 -4
  93. package/esm2022/components/navigation/navigation.service.mjs +4 -4
  94. package/esm2022/components/navigation/vertical/components/aside/aside.component.mjs +4 -4
  95. package/esm2022/components/navigation/vertical/components/basic/basic.component.mjs +5 -5
  96. package/esm2022/components/navigation/vertical/components/collapsable/collapsable.component.mjs +5 -5
  97. package/esm2022/components/navigation/vertical/components/divider/divider.component.mjs +4 -4
  98. package/esm2022/components/navigation/vertical/components/group/group.component.mjs +4 -4
  99. package/esm2022/components/navigation/vertical/components/spacer/spacer.component.mjs +4 -4
  100. package/esm2022/components/navigation/vertical/vertical.component.mjs +4 -4
  101. package/esm2022/components/pagination/pagination.component.mjs +5 -5
  102. package/esm2022/components/pagination/pagination.directive.mjs +4 -4
  103. package/esm2022/components/pagination/pagination.pipe.mjs +4 -4
  104. package/esm2022/components/pagination/pagination.service.mjs +4 -4
  105. package/esm2022/components/password-strength/mat-pass-toggle-visibility/mat-pass-toggle-visibility.component.mjs +5 -5
  106. package/esm2022/components/password-strength/mat-password-strength/mat-password-strength.component.mjs +4 -4
  107. package/esm2022/components/password-strength/mat-password-strength-info/mat-password-strength-info.component.mjs +5 -5
  108. package/esm2022/components/popover/popover-trigger.mjs +4 -4
  109. package/esm2022/components/popover/popover.component.mjs +4 -4
  110. package/esm2022/components/popover/popover.target.mjs +4 -4
  111. package/esm2022/components/progress-bar/progress-bar.component.mjs +5 -5
  112. package/esm2022/components/rating/rating.component.mjs +5 -5
  113. package/esm2022/components/select-search/select-no-entries-found.directive.mjs +4 -4
  114. package/esm2022/components/select-search/select-search-clear.directive.mjs +4 -4
  115. package/esm2022/components/select-search/select-search.component.mjs +6 -6
  116. package/esm2022/components/select-tree/select-tree.component.mjs +6 -6
  117. package/esm2022/components/timeline/timeline-item/timeline-item.component.mjs +11 -11
  118. package/esm2022/components/timeline/timeline.component.mjs +4 -4
  119. package/esm2022/components/toast/toast-modal.component.mjs +5 -5
  120. package/esm2022/components/toast/toast.component.mjs +4 -4
  121. package/esm2022/components/toast/toast.service.mjs +4 -4
  122. package/esm2022/components/transfer-picker/filter/filter.component.mjs +5 -5
  123. package/esm2022/components/transfer-picker/search/search.component.mjs +5 -5
  124. package/esm2022/components/transfer-picker/transfer-picker-source/transfer-picker-source.component.mjs +5 -5
  125. package/esm2022/components/transfer-picker/transfer-picker-target/transfer-picker-target.component.mjs +5 -5
  126. package/esm2022/components/transfer-picker/transfer-picker.component.mjs +5 -5
  127. package/esm2022/components/transfer-picker/transfer-picker.service.mjs +4 -4
  128. package/esm2022/components/upload/files.util.service.mjs +4 -4
  129. package/esm2022/components/upload/upload-queue/upload-queue.component.mjs +13 -12
  130. package/esm2022/components/upload/upload.component.mjs +4 -4
  131. package/esm2022/directives/animate-on-scroll/animate-on-scroll.directive.mjs +4 -4
  132. package/esm2022/directives/animate-on-scroll/scroll.service.mjs +4 -4
  133. package/esm2022/directives/autofocus/autofocus.directive.mjs +4 -4
  134. package/esm2022/directives/debounce/abstract-debounce.directive.mjs +4 -4
  135. package/esm2022/directives/debounce/debounce-click.directive.mjs +4 -4
  136. package/esm2022/directives/debounce/debounce-keyup.directive.mjs +4 -4
  137. package/esm2022/directives/digit-only/digit-only.directive.mjs +10 -10
  138. package/esm2022/directives/digit-only/mask.directive.mjs +5 -5
  139. package/esm2022/directives/equal-validator/equal-validator.directive.mjs +4 -4
  140. package/esm2022/lib/mock-api/mock-api.interceptor.mjs +4 -4
  141. package/esm2022/lib/mock-api/mock-api.service.mjs +4 -4
  142. package/esm2022/pipes/bytes/bytes.pipe.mjs +4 -4
  143. package/esm2022/pipes/date-format/date-format.pipe.mjs +7 -5
  144. package/esm2022/pipes/find-by-key/find-by-key.pipe.mjs +4 -4
  145. package/esm2022/pipes/group-by/group-by.pipe.mjs +4 -4
  146. package/esm2022/pipes/keys/keys.pipe.mjs +4 -4
  147. package/esm2022/pipes/secure/secure-pipe.mjs +4 -4
  148. package/esm2022/pipes/uppercase/uppercase.pipe.mjs +4 -4
  149. package/esm2022/services/alert/alert.service.mjs +4 -4
  150. package/esm2022/services/config/config.service.mjs +4 -4
  151. package/esm2022/services/config/urlStateConfig.service.mjs +4 -4
  152. package/esm2022/services/confirmation/confirmation.service.mjs +4 -4
  153. package/esm2022/services/confirmation/dialog/dialog.component.mjs +5 -5
  154. package/esm2022/services/data/data.service.mjs +6 -6
  155. package/esm2022/services/loading/loading.interceptor.mjs +5 -5
  156. package/esm2022/services/loading/loading.service.mjs +4 -4
  157. package/esm2022/services/local-storage/local-storage.service.mjs +4 -4
  158. package/esm2022/services/media-watcher/media-watcher.service.mjs +4 -4
  159. package/esm2022/services/platform/platform.service.mjs +4 -4
  160. package/esm2022/services/splash-screen/splash-screen.service.mjs +4 -4
  161. package/esm2022/services/title/title.service.mjs +4 -4
  162. package/esm2022/services/translation/translation.service.mjs +5 -5
  163. package/esm2022/services/utils/utils.service.mjs +40 -7
  164. package/fesm2022/cmat-animations.mjs.map +1 -1
  165. package/fesm2022/cmat-components-adapter.mjs +9 -9
  166. package/fesm2022/cmat-components-adapter.mjs.map +1 -1
  167. package/fesm2022/cmat-components-breadcrumb.mjs +10 -10
  168. package/fesm2022/cmat-components-breadcrumb.mjs.map +1 -1
  169. package/fesm2022/cmat-components-card.mjs +4 -4
  170. package/fesm2022/cmat-components-card.mjs.map +1 -1
  171. package/fesm2022/cmat-components-cascade.mjs +13 -13
  172. package/fesm2022/cmat-components-cascade.mjs.map +1 -1
  173. package/fesm2022/cmat-components-chip-input.mjs +5 -6
  174. package/fesm2022/cmat-components-chip-input.mjs.map +1 -1
  175. package/fesm2022/cmat-components-custom-formly.mjs +235 -142
  176. package/fesm2022/cmat-components-custom-formly.mjs.map +1 -1
  177. package/fesm2022/cmat-components-date-range.mjs +5 -5
  178. package/fesm2022/cmat-components-date-range.mjs.map +1 -1
  179. package/fesm2022/cmat-components-drawer.mjs +6 -6
  180. package/fesm2022/cmat-components-drawer.mjs.map +1 -1
  181. package/fesm2022/cmat-components-fullscreen.mjs +3 -3
  182. package/fesm2022/cmat-components-fullscreen.mjs.map +1 -1
  183. package/fesm2022/cmat-components-highlight.mjs +6 -6
  184. package/fesm2022/cmat-components-highlight.mjs.map +1 -1
  185. package/fesm2022/cmat-components-json-editor.mjs +5 -5
  186. package/fesm2022/cmat-components-json-editor.mjs.map +1 -1
  187. package/fesm2022/cmat-components-masonry.mjs +3 -3
  188. package/fesm2022/cmat-components-masonry.mjs.map +1 -1
  189. package/fesm2022/cmat-components-material-color-picker.mjs +4 -4
  190. package/fesm2022/cmat-components-material-color-picker.mjs.map +1 -1
  191. package/fesm2022/cmat-components-material-datetimepicker.mjs +55 -52
  192. package/fesm2022/cmat-components-material-datetimepicker.mjs.map +1 -1
  193. package/fesm2022/cmat-components-navigation.mjs +42 -42
  194. package/fesm2022/cmat-components-navigation.mjs.map +1 -1
  195. package/fesm2022/cmat-components-pagination.mjs +13 -13
  196. package/fesm2022/cmat-components-pagination.mjs.map +1 -1
  197. package/fesm2022/cmat-components-password-strength.mjs +11 -11
  198. package/fesm2022/cmat-components-password-strength.mjs.map +1 -1
  199. package/fesm2022/cmat-components-popover.mjs +9 -9
  200. package/fesm2022/cmat-components-popover.mjs.map +1 -1
  201. package/fesm2022/cmat-components-progress-bar.mjs +4 -4
  202. package/fesm2022/cmat-components-progress-bar.mjs.map +1 -1
  203. package/fesm2022/cmat-components-rating.mjs +4 -4
  204. package/fesm2022/cmat-components-rating.mjs.map +1 -1
  205. package/fesm2022/cmat-components-select-search.mjs +11 -11
  206. package/fesm2022/cmat-components-select-search.mjs.map +1 -1
  207. package/fesm2022/cmat-components-select-tree.mjs +5 -5
  208. package/fesm2022/cmat-components-select-tree.mjs.map +1 -1
  209. package/fesm2022/cmat-components-timeline.mjs +13 -13
  210. package/fesm2022/cmat-components-timeline.mjs.map +1 -1
  211. package/fesm2022/cmat-components-toast.mjs +10 -10
  212. package/fesm2022/cmat-components-toast.mjs.map +1 -1
  213. package/fesm2022/cmat-components-transfer-picker.mjs +23 -23
  214. package/fesm2022/cmat-components-transfer-picker.mjs.map +1 -1
  215. package/fesm2022/cmat-components-upload.mjs +18 -17
  216. package/fesm2022/cmat-components-upload.mjs.map +1 -1
  217. package/fesm2022/cmat-directives-animate-on-scroll.mjs +6 -6
  218. package/fesm2022/cmat-directives-animate-on-scroll.mjs.map +1 -1
  219. package/fesm2022/cmat-directives-autofocus.mjs +3 -3
  220. package/fesm2022/cmat-directives-autofocus.mjs.map +1 -1
  221. package/fesm2022/cmat-directives-debounce.mjs +9 -9
  222. package/fesm2022/cmat-directives-debounce.mjs.map +1 -1
  223. package/fesm2022/cmat-directives-digit-only.mjs +13 -13
  224. package/fesm2022/cmat-directives-digit-only.mjs.map +1 -1
  225. package/fesm2022/cmat-directives-equal-validator.mjs +3 -3
  226. package/fesm2022/cmat-directives-equal-validator.mjs.map +1 -1
  227. package/fesm2022/cmat-lib-mock-api.mjs +6 -6
  228. package/fesm2022/cmat-lib-mock-api.mjs.map +1 -1
  229. package/fesm2022/cmat-pipes-bytes.mjs +3 -3
  230. package/fesm2022/cmat-pipes-bytes.mjs.map +1 -1
  231. package/fesm2022/cmat-pipes-date-format.mjs +6 -4
  232. package/fesm2022/cmat-pipes-date-format.mjs.map +1 -1
  233. package/fesm2022/cmat-pipes-find-by-key.mjs +3 -3
  234. package/fesm2022/cmat-pipes-find-by-key.mjs.map +1 -1
  235. package/fesm2022/cmat-pipes-group-by.mjs +3 -3
  236. package/fesm2022/cmat-pipes-group-by.mjs.map +1 -1
  237. package/fesm2022/cmat-pipes-keys.mjs +3 -3
  238. package/fesm2022/cmat-pipes-keys.mjs.map +1 -1
  239. package/fesm2022/cmat-pipes-secure.mjs +3 -3
  240. package/fesm2022/cmat-pipes-secure.mjs.map +1 -1
  241. package/fesm2022/cmat-pipes-uppercase.mjs +3 -3
  242. package/fesm2022/cmat-pipes-uppercase.mjs.map +1 -1
  243. package/fesm2022/cmat-services-alert.mjs +3 -3
  244. package/fesm2022/cmat-services-alert.mjs.map +1 -1
  245. package/fesm2022/cmat-services-config.mjs +6 -6
  246. package/fesm2022/cmat-services-config.mjs.map +1 -1
  247. package/fesm2022/cmat-services-confirmation.mjs +7 -7
  248. package/fesm2022/cmat-services-confirmation.mjs.map +1 -1
  249. package/fesm2022/cmat-services-data.mjs +5 -5
  250. package/fesm2022/cmat-services-data.mjs.map +1 -1
  251. package/fesm2022/cmat-services-loading.mjs +7 -7
  252. package/fesm2022/cmat-services-loading.mjs.map +1 -1
  253. package/fesm2022/cmat-services-local-storage.mjs +3 -3
  254. package/fesm2022/cmat-services-local-storage.mjs.map +1 -1
  255. package/fesm2022/cmat-services-media-watcher.mjs +3 -3
  256. package/fesm2022/cmat-services-media-watcher.mjs.map +1 -1
  257. package/fesm2022/cmat-services-platform.mjs +3 -3
  258. package/fesm2022/cmat-services-platform.mjs.map +1 -1
  259. package/fesm2022/cmat-services-splash-screen.mjs +3 -3
  260. package/fesm2022/cmat-services-splash-screen.mjs.map +1 -1
  261. package/fesm2022/cmat-services-title.mjs +3 -3
  262. package/fesm2022/cmat-services-title.mjs.map +1 -1
  263. package/fesm2022/cmat-services-translation.mjs +4 -4
  264. package/fesm2022/cmat-services-translation.mjs.map +1 -1
  265. package/fesm2022/cmat-services-utils.mjs +39 -6
  266. package/fesm2022/cmat-services-utils.mjs.map +1 -1
  267. package/icons/material-icons/material-solid.svg +3585 -3585
  268. package/package.json +67 -67
  269. package/pipes/date-format/date-format.pipe.d.ts +1 -1
  270. package/services/data/data.service.d.ts +1 -1
  271. package/services/utils/utils.service.d.ts +4 -0
  272. package/styles/overrides/angular-material.scss +6 -0
@@ -20,8 +20,8 @@ export class CmatPasswordStrengthInfoComponent {
20
20
  this.minCharsCriteriaMsg = `包含至少 ${this.passwordComponent.min} 个字符`;
21
21
  }
22
22
  }
23
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: CmatPasswordStrengthInfoComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
24
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.1", type: CmatPasswordStrengthInfoComponent, isStandalone: true, selector: "cmat-password-strength-info", inputs: { passwordComponent: "passwordComponent", enableScoreInfo: "enableScoreInfo", lowerCaseCriteriaMsg: "lowerCaseCriteriaMsg", upperCaseCriteriaMsg: "upperCaseCriteriaMsg", digitsCriteriaMsg: "digitsCriteriaMsg", specialCharsCriteriaMsg: "specialCharsCriteriaMsg", customCharsCriteriaMsg: "customCharsCriteriaMsg", minCharsCriteriaMsg: "minCharsCriteriaMsg" }, exportAs: ["cmatPasswordStrengthInfo"], ngImport: i0, template: "<mat-card class=\"info-card\" @list>\n <mat-card-content>\n @if (passwordComponent.enableLowerCaseLetterRule) {\n <div class=\"info-row\" @items>\n @if (passwordComponent.containAtLeastOneLowerCaseLetter) {\n <mat-icon color=\"primary\" svgIcon=\"mat_outline:done\" @positiveState></mat-icon>\n } @else {\n <mat-icon color=\"warn\" svgIcon=\"mat_outline:error\" @negativeState></mat-icon>\n }\n <span>{{lowerCaseCriteriaMsg}}</span>\n </div>\n }\n\n @if (passwordComponent.enableUpperCaseLetterRule) {\n <div class=\"info-row\" @items>\n @if (passwordComponent.containAtLeastOneUpperCaseLetter) {\n <mat-icon color=\"primary\" svgIcon=\"mat_outline:done\" @positiveState></mat-icon>\n } @else {\n <mat-icon color=\"warn\" svgIcon=\"mat_outline:error\" @negativeState></mat-icon>\n }\n <span>{{upperCaseCriteriaMsg}}</span>\n </div>\n }\n\n @if (passwordComponent.enableDigitRule) {\n <div class=\"info-row\" @items>\n @if (passwordComponent.containAtLeastOneDigit) {\n <mat-icon color=\"primary\" svgIcon=\"mat_outline:done\" @positiveState></mat-icon>\n } @else {\n <mat-icon color=\"warn\" svgIcon=\"mat_outline:error\" @negativeState></mat-icon>\n }\n <span>{{digitsCriteriaMsg}}</span>\n </div>\n }\n\n @if (passwordComponent.enableSpecialCharRule) {\n <div class=\"info-row\" @items>\n @if (passwordComponent.containAtLeastOneSpecialChar) {\n <mat-icon color=\"primary\" svgIcon=\"mat_outline:done\" @positiveState></mat-icon>\n } @else {\n <mat-icon color=\"warn\" svgIcon=\"mat_outline:error\" @negativeState></mat-icon>\n }\n <span>{{specialCharsCriteriaMsg}}</span>\n </div>\n }\n\n @if (passwordComponent.enableLengthRule) {\n <div class=\"info-row\" @items>\n @if (passwordComponent.containAtLeastMinChars) {\n <mat-icon color=\"primary\" svgIcon=\"mat_outline:done\" @positiveState></mat-icon>\n } @else {\n <mat-icon color=\"warn\" svgIcon=\"mat_outline:error\" @negativeState></mat-icon>\n }\n <span>{{minCharsCriteriaMsg}}</span>\n </div>\n }\n\n @if (passwordComponent.customValidator) {\n <div class=\"info-row\" @items>\n @if (passwordComponent.containAtCustomChars) {\n <mat-icon color=\"primary\" svgIcon=\"mat_outline:done\" @positiveState></mat-icon>\n } @else {\n <mat-icon color=\"warn\" svgIcon=\"mat_outline:error\" @negativeState></mat-icon>\n }\n <span>{{customCharsCriteriaMsg}}</span>\n </div>\n }\n\n @if (enableScoreInfo) {\n <div class=\"info-row\" @items>\n @if (passwordComponent.strength === 100) {\n <mat-icon color=\"primary\" svgIcon=\"mat_outline:done\" @positiveState></mat-icon>\n } @else {\n <mat-icon color=\"warn\" svgIcon=\"mat_outline:error\" @negativeState></mat-icon>\n }\n <span>\u5BC6\u7801\u5F3A\u5EA6= {{passwordComponent.strength}} %100</span>\n </div>\n }\n\n </mat-card-content>\n</mat-card>", styles: ["cmat-password-strength-info{margin-top:20px}cmat-password-strength-info .mat-mdc-card{display:flex;flex-direction:row;flex:1 1 0%;margin:.5rem;box-sizing:border-box;place-content:stretch;align-items:stretch}cmat-password-strength-info .mat-mdc-card .mat-mdc-card-content{display:flex;flex-direction:column;box-sizing:border-box;max-width:100%;place-content:stretch;align-items:stretch}cmat-password-strength-info .mat-mdc-card .mat-mdc-card-content .mat-icon{margin-right:1rem}cmat-password-strength-info .mat-mdc-card .mat-mdc-card-content .info-row{display:flex;flex-direction:row;box-sizing:border-box;align-items:center}\n"], dependencies: [{ kind: "ngmodule", type: MatCardModule }, { kind: "component", type: i1.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i1.MatCardContent, selector: "mat-card-content" }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], animations: [
23
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.10", ngImport: i0, type: CmatPasswordStrengthInfoComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
24
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.10", type: CmatPasswordStrengthInfoComponent, isStandalone: true, selector: "cmat-password-strength-info", inputs: { passwordComponent: "passwordComponent", enableScoreInfo: "enableScoreInfo", lowerCaseCriteriaMsg: "lowerCaseCriteriaMsg", upperCaseCriteriaMsg: "upperCaseCriteriaMsg", digitsCriteriaMsg: "digitsCriteriaMsg", specialCharsCriteriaMsg: "specialCharsCriteriaMsg", customCharsCriteriaMsg: "customCharsCriteriaMsg", minCharsCriteriaMsg: "minCharsCriteriaMsg" }, exportAs: ["cmatPasswordStrengthInfo"], ngImport: i0, template: "<mat-card class=\"info-card\" @list>\r\n <mat-card-content>\r\n @if (passwordComponent.enableLowerCaseLetterRule) {\r\n <div class=\"info-row\" @items>\r\n @if (passwordComponent.containAtLeastOneLowerCaseLetter) {\r\n <mat-icon color=\"primary\" svgIcon=\"mat_outline:done\" @positiveState></mat-icon>\r\n } @else {\r\n <mat-icon color=\"warn\" svgIcon=\"mat_outline:error\" @negativeState></mat-icon>\r\n }\r\n <span>{{lowerCaseCriteriaMsg}}</span>\r\n </div>\r\n }\r\n\r\n @if (passwordComponent.enableUpperCaseLetterRule) {\r\n <div class=\"info-row\" @items>\r\n @if (passwordComponent.containAtLeastOneUpperCaseLetter) {\r\n <mat-icon color=\"primary\" svgIcon=\"mat_outline:done\" @positiveState></mat-icon>\r\n } @else {\r\n <mat-icon color=\"warn\" svgIcon=\"mat_outline:error\" @negativeState></mat-icon>\r\n }\r\n <span>{{upperCaseCriteriaMsg}}</span>\r\n </div>\r\n }\r\n\r\n @if (passwordComponent.enableDigitRule) {\r\n <div class=\"info-row\" @items>\r\n @if (passwordComponent.containAtLeastOneDigit) {\r\n <mat-icon color=\"primary\" svgIcon=\"mat_outline:done\" @positiveState></mat-icon>\r\n } @else {\r\n <mat-icon color=\"warn\" svgIcon=\"mat_outline:error\" @negativeState></mat-icon>\r\n }\r\n <span>{{digitsCriteriaMsg}}</span>\r\n </div>\r\n }\r\n\r\n @if (passwordComponent.enableSpecialCharRule) {\r\n <div class=\"info-row\" @items>\r\n @if (passwordComponent.containAtLeastOneSpecialChar) {\r\n <mat-icon color=\"primary\" svgIcon=\"mat_outline:done\" @positiveState></mat-icon>\r\n } @else {\r\n <mat-icon color=\"warn\" svgIcon=\"mat_outline:error\" @negativeState></mat-icon>\r\n }\r\n <span>{{specialCharsCriteriaMsg}}</span>\r\n </div>\r\n }\r\n\r\n @if (passwordComponent.enableLengthRule) {\r\n <div class=\"info-row\" @items>\r\n @if (passwordComponent.containAtLeastMinChars) {\r\n <mat-icon color=\"primary\" svgIcon=\"mat_outline:done\" @positiveState></mat-icon>\r\n } @else {\r\n <mat-icon color=\"warn\" svgIcon=\"mat_outline:error\" @negativeState></mat-icon>\r\n }\r\n <span>{{minCharsCriteriaMsg}}</span>\r\n </div>\r\n }\r\n\r\n @if (passwordComponent.customValidator) {\r\n <div class=\"info-row\" @items>\r\n @if (passwordComponent.containAtCustomChars) {\r\n <mat-icon color=\"primary\" svgIcon=\"mat_outline:done\" @positiveState></mat-icon>\r\n } @else {\r\n <mat-icon color=\"warn\" svgIcon=\"mat_outline:error\" @negativeState></mat-icon>\r\n }\r\n <span>{{customCharsCriteriaMsg}}</span>\r\n </div>\r\n }\r\n\r\n @if (enableScoreInfo) {\r\n <div class=\"info-row\" @items>\r\n @if (passwordComponent.strength === 100) {\r\n <mat-icon color=\"primary\" svgIcon=\"mat_outline:done\" @positiveState></mat-icon>\r\n } @else {\r\n <mat-icon color=\"warn\" svgIcon=\"mat_outline:error\" @negativeState></mat-icon>\r\n }\r\n <span>\u5BC6\u7801\u5F3A\u5EA6= {{passwordComponent.strength}} %100</span>\r\n </div>\r\n }\r\n\r\n </mat-card-content>\r\n</mat-card>", styles: ["cmat-password-strength-info{margin-top:20px}cmat-password-strength-info .mat-mdc-card{display:flex;flex-direction:row;flex:1 1 0%;margin:.5rem;box-sizing:border-box;place-content:stretch;align-items:stretch}cmat-password-strength-info .mat-mdc-card .mat-mdc-card-content{display:flex;flex-direction:column;box-sizing:border-box;max-width:100%;place-content:stretch;align-items:stretch}cmat-password-strength-info .mat-mdc-card .mat-mdc-card-content .mat-icon{margin-right:1rem}cmat-password-strength-info .mat-mdc-card .mat-mdc-card-content .info-row{display:flex;flex-direction:row;box-sizing:border-box;align-items:center}\n"], dependencies: [{ kind: "ngmodule", type: MatCardModule }, { kind: "component", type: i1.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i1.MatCardContent, selector: "mat-card-content" }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], animations: [
25
25
  // nice stagger effect when showing existing elements
26
26
  trigger('list', [
27
27
  transition(':enter', [
@@ -75,7 +75,7 @@ export class CmatPasswordStrengthInfoComponent {
75
75
  ]),
76
76
  ], encapsulation: i0.ViewEncapsulation.None }); }
77
77
  }
78
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: CmatPasswordStrengthInfoComponent, decorators: [{
78
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.10", ngImport: i0, type: CmatPasswordStrengthInfoComponent, decorators: [{
79
79
  type: Component,
80
80
  args: [{ selector: 'cmat-password-strength-info', exportAs: 'cmatPasswordStrengthInfo', encapsulation: ViewEncapsulation.None, animations: [
81
81
  // nice stagger effect when showing existing elements
@@ -129,7 +129,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImpor
129
129
  trigger('negativeState', [
130
130
  transition(':enter', useAnimation(shake)),
131
131
  ]),
132
- ], standalone: true, imports: [MatCardModule, MatIconModule], template: "<mat-card class=\"info-card\" @list>\n <mat-card-content>\n @if (passwordComponent.enableLowerCaseLetterRule) {\n <div class=\"info-row\" @items>\n @if (passwordComponent.containAtLeastOneLowerCaseLetter) {\n <mat-icon color=\"primary\" svgIcon=\"mat_outline:done\" @positiveState></mat-icon>\n } @else {\n <mat-icon color=\"warn\" svgIcon=\"mat_outline:error\" @negativeState></mat-icon>\n }\n <span>{{lowerCaseCriteriaMsg}}</span>\n </div>\n }\n\n @if (passwordComponent.enableUpperCaseLetterRule) {\n <div class=\"info-row\" @items>\n @if (passwordComponent.containAtLeastOneUpperCaseLetter) {\n <mat-icon color=\"primary\" svgIcon=\"mat_outline:done\" @positiveState></mat-icon>\n } @else {\n <mat-icon color=\"warn\" svgIcon=\"mat_outline:error\" @negativeState></mat-icon>\n }\n <span>{{upperCaseCriteriaMsg}}</span>\n </div>\n }\n\n @if (passwordComponent.enableDigitRule) {\n <div class=\"info-row\" @items>\n @if (passwordComponent.containAtLeastOneDigit) {\n <mat-icon color=\"primary\" svgIcon=\"mat_outline:done\" @positiveState></mat-icon>\n } @else {\n <mat-icon color=\"warn\" svgIcon=\"mat_outline:error\" @negativeState></mat-icon>\n }\n <span>{{digitsCriteriaMsg}}</span>\n </div>\n }\n\n @if (passwordComponent.enableSpecialCharRule) {\n <div class=\"info-row\" @items>\n @if (passwordComponent.containAtLeastOneSpecialChar) {\n <mat-icon color=\"primary\" svgIcon=\"mat_outline:done\" @positiveState></mat-icon>\n } @else {\n <mat-icon color=\"warn\" svgIcon=\"mat_outline:error\" @negativeState></mat-icon>\n }\n <span>{{specialCharsCriteriaMsg}}</span>\n </div>\n }\n\n @if (passwordComponent.enableLengthRule) {\n <div class=\"info-row\" @items>\n @if (passwordComponent.containAtLeastMinChars) {\n <mat-icon color=\"primary\" svgIcon=\"mat_outline:done\" @positiveState></mat-icon>\n } @else {\n <mat-icon color=\"warn\" svgIcon=\"mat_outline:error\" @negativeState></mat-icon>\n }\n <span>{{minCharsCriteriaMsg}}</span>\n </div>\n }\n\n @if (passwordComponent.customValidator) {\n <div class=\"info-row\" @items>\n @if (passwordComponent.containAtCustomChars) {\n <mat-icon color=\"primary\" svgIcon=\"mat_outline:done\" @positiveState></mat-icon>\n } @else {\n <mat-icon color=\"warn\" svgIcon=\"mat_outline:error\" @negativeState></mat-icon>\n }\n <span>{{customCharsCriteriaMsg}}</span>\n </div>\n }\n\n @if (enableScoreInfo) {\n <div class=\"info-row\" @items>\n @if (passwordComponent.strength === 100) {\n <mat-icon color=\"primary\" svgIcon=\"mat_outline:done\" @positiveState></mat-icon>\n } @else {\n <mat-icon color=\"warn\" svgIcon=\"mat_outline:error\" @negativeState></mat-icon>\n }\n <span>\u5BC6\u7801\u5F3A\u5EA6= {{passwordComponent.strength}} %100</span>\n </div>\n }\n\n </mat-card-content>\n</mat-card>", styles: ["cmat-password-strength-info{margin-top:20px}cmat-password-strength-info .mat-mdc-card{display:flex;flex-direction:row;flex:1 1 0%;margin:.5rem;box-sizing:border-box;place-content:stretch;align-items:stretch}cmat-password-strength-info .mat-mdc-card .mat-mdc-card-content{display:flex;flex-direction:column;box-sizing:border-box;max-width:100%;place-content:stretch;align-items:stretch}cmat-password-strength-info .mat-mdc-card .mat-mdc-card-content .mat-icon{margin-right:1rem}cmat-password-strength-info .mat-mdc-card .mat-mdc-card-content .info-row{display:flex;flex-direction:row;box-sizing:border-box;align-items:center}\n"] }]
132
+ ], standalone: true, imports: [MatCardModule, MatIconModule], template: "<mat-card class=\"info-card\" @list>\r\n <mat-card-content>\r\n @if (passwordComponent.enableLowerCaseLetterRule) {\r\n <div class=\"info-row\" @items>\r\n @if (passwordComponent.containAtLeastOneLowerCaseLetter) {\r\n <mat-icon color=\"primary\" svgIcon=\"mat_outline:done\" @positiveState></mat-icon>\r\n } @else {\r\n <mat-icon color=\"warn\" svgIcon=\"mat_outline:error\" @negativeState></mat-icon>\r\n }\r\n <span>{{lowerCaseCriteriaMsg}}</span>\r\n </div>\r\n }\r\n\r\n @if (passwordComponent.enableUpperCaseLetterRule) {\r\n <div class=\"info-row\" @items>\r\n @if (passwordComponent.containAtLeastOneUpperCaseLetter) {\r\n <mat-icon color=\"primary\" svgIcon=\"mat_outline:done\" @positiveState></mat-icon>\r\n } @else {\r\n <mat-icon color=\"warn\" svgIcon=\"mat_outline:error\" @negativeState></mat-icon>\r\n }\r\n <span>{{upperCaseCriteriaMsg}}</span>\r\n </div>\r\n }\r\n\r\n @if (passwordComponent.enableDigitRule) {\r\n <div class=\"info-row\" @items>\r\n @if (passwordComponent.containAtLeastOneDigit) {\r\n <mat-icon color=\"primary\" svgIcon=\"mat_outline:done\" @positiveState></mat-icon>\r\n } @else {\r\n <mat-icon color=\"warn\" svgIcon=\"mat_outline:error\" @negativeState></mat-icon>\r\n }\r\n <span>{{digitsCriteriaMsg}}</span>\r\n </div>\r\n }\r\n\r\n @if (passwordComponent.enableSpecialCharRule) {\r\n <div class=\"info-row\" @items>\r\n @if (passwordComponent.containAtLeastOneSpecialChar) {\r\n <mat-icon color=\"primary\" svgIcon=\"mat_outline:done\" @positiveState></mat-icon>\r\n } @else {\r\n <mat-icon color=\"warn\" svgIcon=\"mat_outline:error\" @negativeState></mat-icon>\r\n }\r\n <span>{{specialCharsCriteriaMsg}}</span>\r\n </div>\r\n }\r\n\r\n @if (passwordComponent.enableLengthRule) {\r\n <div class=\"info-row\" @items>\r\n @if (passwordComponent.containAtLeastMinChars) {\r\n <mat-icon color=\"primary\" svgIcon=\"mat_outline:done\" @positiveState></mat-icon>\r\n } @else {\r\n <mat-icon color=\"warn\" svgIcon=\"mat_outline:error\" @negativeState></mat-icon>\r\n }\r\n <span>{{minCharsCriteriaMsg}}</span>\r\n </div>\r\n }\r\n\r\n @if (passwordComponent.customValidator) {\r\n <div class=\"info-row\" @items>\r\n @if (passwordComponent.containAtCustomChars) {\r\n <mat-icon color=\"primary\" svgIcon=\"mat_outline:done\" @positiveState></mat-icon>\r\n } @else {\r\n <mat-icon color=\"warn\" svgIcon=\"mat_outline:error\" @negativeState></mat-icon>\r\n }\r\n <span>{{customCharsCriteriaMsg}}</span>\r\n </div>\r\n }\r\n\r\n @if (enableScoreInfo) {\r\n <div class=\"info-row\" @items>\r\n @if (passwordComponent.strength === 100) {\r\n <mat-icon color=\"primary\" svgIcon=\"mat_outline:done\" @positiveState></mat-icon>\r\n } @else {\r\n <mat-icon color=\"warn\" svgIcon=\"mat_outline:error\" @negativeState></mat-icon>\r\n }\r\n <span>\u5BC6\u7801\u5F3A\u5EA6= {{passwordComponent.strength}} %100</span>\r\n </div>\r\n }\r\n\r\n </mat-card-content>\r\n</mat-card>", styles: ["cmat-password-strength-info{margin-top:20px}cmat-password-strength-info .mat-mdc-card{display:flex;flex-direction:row;flex:1 1 0%;margin:.5rem;box-sizing:border-box;place-content:stretch;align-items:stretch}cmat-password-strength-info .mat-mdc-card .mat-mdc-card-content{display:flex;flex-direction:column;box-sizing:border-box;max-width:100%;place-content:stretch;align-items:stretch}cmat-password-strength-info .mat-mdc-card .mat-mdc-card-content .mat-icon{margin-right:1rem}cmat-password-strength-info .mat-mdc-card .mat-mdc-card-content .info-row{display:flex;flex-direction:row;box-sizing:border-box;align-items:center}\n"] }]
133
133
  }], propDecorators: { passwordComponent: [{
134
134
  type: Input
135
135
  }], enableScoreInfo: [{
@@ -147,4 +147,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImpor
147
147
  }], minCharsCriteriaMsg: [{
148
148
  type: Input
149
149
  }] } });
150
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0LXBhc3N3b3JkLXN0cmVuZ3RoLWluZm8uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY21hdC9jb21wb25lbnRzL3Bhc3N3b3JkLXN0cmVuZ3RoL21hdC1wYXNzd29yZC1zdHJlbmd0aC1pbmZvL21hdC1wYXNzd29yZC1zdHJlbmd0aC1pbmZvLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NtYXQvY29tcG9uZW50cy9wYXNzd29yZC1zdHJlbmd0aC9tYXQtcGFzc3dvcmQtc3RyZW5ndGgtaW5mby9tYXQtcGFzc3dvcmQtc3RyZW5ndGgtaW5mby5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNqSSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUE7Ozs7QUFpRXJDLE1BQU0sT0FBTyxpQ0FBaUM7SUE5RDlDO1FBb0VJLG9CQUFlLEdBQUcsS0FBSyxDQUFDO1FBR3hCLHlCQUFvQixHQUFHLFlBQVksQ0FBQztRQUdwQyx5QkFBb0IsR0FBRyxZQUFZLENBQUM7UUFHcEMsc0JBQWlCLEdBQUcsVUFBVSxDQUFDO1FBRy9CLDRCQUF1QixHQUFHLFlBQVksQ0FBQztRQUd2QywyQkFBc0IsR0FBRyxZQUFZLENBQUM7S0FXekM7SUFORyxR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LEtBQUssQ0FBQzt3Q0FDRixPQUFPLEVBQUUsQ0FBQzt3Q0FDVixTQUFTLEVBQUUsc0VBQXNFO3dDQUNqRixNQUFNLEVBQUUsR0FBRztxQ0FDZCxDQUFDO29DQUNGLEtBQUssQ0FBQzt3Q0FDRixTQUFTLEVBQUUscUVBQXFFO3dDQUNoRixNQUFNLEVBQUUsR0FBRztxQ0FDZCxDQUFDO29DQUNGLEtBQUssQ0FBQzt3Q0FDRixTQUFTLEVBQUUscUVBQXFFO3dDQUNoRixNQUFNLEVBQUUsR0FBRztxQ0FDZCxDQUFDO29DQUNGLEtBQUssQ0FBQzt3Q0FDRixTQUFTLEVBQUUseUNBQXlDO3dDQUNwRCxNQUFNLEVBQUUsQ0FBQztxQ0FDWixDQUFDO2lDQUNMLENBQUMsQ0FBQzs2QkFDTixFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7eUJBQ2xFLENBQUM7d0JBQ0YsT0FBTyxDQUFDLGVBQWUsRUFBRTs0QkFDckIsVUFBVSxDQUFDLFFBQVEsRUFBRSxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7eUJBQzVDLENBQUM7cUJBQ0wsY0FDVyxJQUFJLFdBQ1AsQ0FBQyxhQUFhLEVBQUUsYUFBYSxDQUFDOzhCQUt2QyxpQkFBaUI7c0JBRGhCLEtBQUs7Z0JBSU4sZUFBZTtzQkFEZCxLQUFLO2dCQUlOLG9CQUFvQjtzQkFEbkIsS0FBSztnQkFJTixvQkFBb0I7c0JBRG5CLEtBQUs7Z0JBSU4saUJBQWlCO3NCQURoQixLQUFLO2dCQUlOLHVCQUF1QjtzQkFEdEIsS0FBSztnQkFJTixzQkFBc0I7c0JBRHJCLEtBQUs7Z0JBSU4sbUJBQW1CO3NCQURsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYW5pbWF0ZSwgYW5pbWF0ZUNoaWxkLCBrZXlmcmFtZXMsIHF1ZXJ5LCBzdGFnZ2VyLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlciwgdXNlQW5pbWF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWF0Q2FyZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NhcmQnO1xyXG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XHJcbmltcG9ydCB7IHNoYWtlIH0gZnJvbSAnLi4vYW5pbWF0aW9ucydcclxuaW1wb3J0IHsgQ21hdFBhc3N3b3JkU3RyZW5ndGhDb21wb25lbnQgfSBmcm9tICcuLi9tYXQtcGFzc3dvcmQtc3RyZW5ndGgvbWF0LXBhc3N3b3JkLXN0cmVuZ3RoLmNvbXBvbmVudCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnY21hdC1wYXNzd29yZC1zdHJlbmd0aC1pbmZvJyxcclxuICAgIGV4cG9ydEFzOiAnY21hdFBhc3N3b3JkU3RyZW5ndGhJbmZvJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9tYXQtcGFzc3dvcmQtc3RyZW5ndGgtaW5mby5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi9tYXQtcGFzc3dvcmQtc3RyZW5ndGgtaW5mby5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxuICAgIGFuaW1hdGlvbnM6IFtcclxuICAgICAgICAvLyBuaWNlIHN0YWdnZXIgZWZmZWN0IHdoZW4gc2hvd2luZyBleGlzdGluZyBlbGVtZW50c1xyXG4gICAgICAgIHRyaWdnZXIoJ2xpc3QnLCBbXHJcbiAgICAgICAgICAgIHRyYW5zaXRpb24oJzplbnRlcicsIFtcclxuICAgICAgICAgICAgICAgIC8vIGNoaWxkIGFuaW1hdGlvbiBzZWxlY3RvciArIHN0YWdnZXJcclxuICAgICAgICAgICAgICAgIHF1ZXJ5KCdAaXRlbXMnLCBzdGFnZ2VyKDMwMCwgYW5pbWF0ZUNoaWxkKCkpKVxyXG4gICAgICAgICAgICBdKSxcclxuICAgICAgICBdKSxcclxuICAgICAgICB0cmlnZ2VyKCdpdGVtcycsIFtcclxuICAgICAgICAgICAgLy8gY3ViaWMtYmV6aWVyIGZvciBhIHRpbnkgYm91bmNpbmcgZmVlbFxyXG4gICAgICAgICAgICB0cmFuc2l0aW9uKCc6ZW50ZXInLCBbXHJcbiAgICAgICAgICAgICAgICBzdHlsZSh7IHRyYW5zZm9ybTogJ3NjYWxlKDAuNSknLCBvcGFjaXR5OiAwIH0pLFxyXG4gICAgICAgICAgICAgICAgYW5pbWF0ZSgnMXMgY3ViaWMtYmV6aWVyKC44LC0wLjYsMC4yLDEuNSknLCBzdHlsZSh7IHRyYW5zZm9ybTogJ3NjYWxlKDEpJywgb3BhY2l0eTogMSB9KSlcclxuICAgICAgICAgICAgXSksXHJcbiAgICAgICAgICAgIHRyYW5zaXRpb24oJzpsZWF2ZScsIFtcclxuICAgICAgICAgICAgICAgIHN0eWxlKHsgdHJhbnNmb3JtOiAnc2NhbGUoMSknLCBvcGFjaXR5OiAxLCBoZWlnaHQ6ICcqJyB9KSxcclxuICAgICAgICAgICAgICAgIGFuaW1hdGUoJzFzIGN1YmljLWJlemllciguOCwtMC42LDAuMiwxLjUpJywgc3R5bGUoeyB0cmFuc2Zvcm06ICdzY2FsZSgwLjUpJywgb3BhY2l0eTogMCwgaGVpZ2h0OiAnMHB4JywgbWFyZ2luOiAnMHB4JyB9KSlcclxuICAgICAgICAgICAgXSksXHJcbiAgICAgICAgXSksXHJcbiAgICAgICAgdHJpZ2dlcigncG9zaXRpdmVTdGF0ZScsIFtcclxuICAgICAgICAgICAgdHJhbnNpdGlvbignOmVudGVyJywgW1xyXG4gICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxyXG4gICAgICAgICAgICAgICAgc3R5bGUoeyAnYmFja2ZhY2UtdmlzaWJpbGl0eSc6ICd2aXNpYmxlJyB9KSxcclxuICAgICAgICAgICAgICAgIGFuaW1hdGUoJ3t7IHRpbWluZyB9fXMge3sgZGVsYXkgfX1zIGVhc2UtaW4nLCBrZXlmcmFtZXMoW1xyXG4gICAgICAgICAgICAgICAgICAgIHN0eWxlKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgb3BhY2l0eTogMCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtOiAncGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZTNkKHt7IHJvdGF0ZVggfX0sIHt7IHJvdGF0ZVkgfX0sIDAsIDkwZGVnKScsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldDogMCxcclxuICAgICAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICAgICAgICBzdHlsZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wYWNpdHk6IDEsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogJ3BlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGUzZCh7eyByb3RhdGVYIH19LCB7eyByb3RhdGVZIH19LCAwLCAtMjBkZWcpJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0OiAwLjQsXHJcbiAgICAgICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICAgICAgICAgc3R5bGUoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm06ICdwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlM2Qoe3sgcm90YXRlWCB9fSwge3sgcm90YXRlWSB9fSwgMCwgMTBkZWcpJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0OiAwLjYsXHJcbiAgICAgICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICAgICAgICAgc3R5bGUoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm06ICdwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlM2Qoe3sgcm90YXRlWCB9fSwge3sgcm90YXRlWSB9fSwgMCwgLTVkZWcpJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0OiAwLjgsXHJcbiAgICAgICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICAgICAgICAgc3R5bGUoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm06ICdwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlM2QoMCwgMCwgMCwgMCknLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQ6IDEsXHJcbiAgICAgICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICAgICBdKSksXHJcbiAgICAgICAgICAgIF0sIHsgcGFyYW1zOiB7IHRpbWluZzogMSwgZGVsYXk6IDAsIHJvdGF0ZVg6IDEsIHJvdGF0ZVk6IDAgfSB9KSxcclxuICAgICAgICBdKSxcclxuICAgICAgICB0cmlnZ2VyKCduZWdhdGl2ZVN0YXRlJywgW1xyXG4gICAgICAgICAgICB0cmFuc2l0aW9uKCc6ZW50ZXInLCB1c2VBbmltYXRpb24oc2hha2UpKSxcclxuICAgICAgICBdKSxcclxuICAgIF0sXHJcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gICAgaW1wb3J0czogW01hdENhcmRNb2R1bGUsIE1hdEljb25Nb2R1bGVdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDbWF0UGFzc3dvcmRTdHJlbmd0aEluZm9Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwYXNzd29yZENvbXBvbmVudDogQ21hdFBhc3N3b3JkU3RyZW5ndGhDb21wb25lbnQ7XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIGVuYWJsZVNjb3JlSW5mbyA9IGZhbHNlO1xyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBsb3dlckNhc2VDcml0ZXJpYU1zZyA9ICfljIXlkKvoh7PlsJHkuIDkuKrlsI/lhpnlrZfmr40nO1xyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICB1cHBlckNhc2VDcml0ZXJpYU1zZyA9ICfljIXlkKvoh7PlsJHkuIDkuKrlpKflhpnlrZfmr40nO1xyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBkaWdpdHNDcml0ZXJpYU1zZyA9ICfljIXlkKvoh7PlsJHkuIDkuKrmlbDlrZcnO1xyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBzcGVjaWFsQ2hhcnNDcml0ZXJpYU1zZyA9ICfljIXlkKvoh7PlsJHkuIDkuKrnibnmrorlrZfnrKYnO1xyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBjdXN0b21DaGFyc0NyaXRlcmlhTXNnID0gJ+WMheWQq+iHs+WwkeS4gOS4quS8oOe7n+Wtl+espic7XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIG1pbkNoYXJzQ3JpdGVyaWFNc2c6IHN0cmluZztcclxuXHJcbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgICAgICBpZiAoIXRoaXMubWluQ2hhcnNDcml0ZXJpYU1zZykge1xyXG4gICAgICAgICAgICB0aGlzLm1pbkNoYXJzQ3JpdGVyaWFNc2cgPSBg5YyF5ZCr6Iez5bCRICR7dGhpcy5wYXNzd29yZENvbXBvbmVudC5taW59IOS4quWtl+espmA7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxufVxyXG4iLCI8bWF0LWNhcmQgY2xhc3M9XCJpbmZvLWNhcmRcIiBAbGlzdD5cbiAgPG1hdC1jYXJkLWNvbnRlbnQ+XG4gICAgQGlmIChwYXNzd29yZENvbXBvbmVudC5lbmFibGVMb3dlckNhc2VMZXR0ZXJSdWxlKSB7XG4gICAgICA8ZGl2IGNsYXNzPVwiaW5mby1yb3dcIiBAaXRlbXM+XG4gICAgICAgIEBpZiAocGFzc3dvcmRDb21wb25lbnQuY29udGFpbkF0TGVhc3RPbmVMb3dlckNhc2VMZXR0ZXIpIHtcbiAgICAgICAgICA8bWF0LWljb24gY29sb3I9XCJwcmltYXJ5XCIgc3ZnSWNvbj1cIm1hdF9vdXRsaW5lOmRvbmVcIiBAcG9zaXRpdmVTdGF0ZT48L21hdC1pY29uPlxuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICA8bWF0LWljb24gY29sb3I9XCJ3YXJuXCIgc3ZnSWNvbj1cIm1hdF9vdXRsaW5lOmVycm9yXCIgQG5lZ2F0aXZlU3RhdGU+PC9tYXQtaWNvbj5cbiAgICAgICAgfVxuICAgICAgICA8c3Bhbj57e2xvd2VyQ2FzZUNyaXRlcmlhTXNnfX08L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICB9XG5cbiAgICBAaWYgKHBhc3N3b3JkQ29tcG9uZW50LmVuYWJsZVVwcGVyQ2FzZUxldHRlclJ1bGUpIHtcbiAgICAgIDxkaXYgY2xhc3M9XCJpbmZvLXJvd1wiIEBpdGVtcz5cbiAgICAgICAgQGlmIChwYXNzd29yZENvbXBvbmVudC5jb250YWluQXRMZWFzdE9uZVVwcGVyQ2FzZUxldHRlcikge1xuICAgICAgICAgIDxtYXQtaWNvbiBjb2xvcj1cInByaW1hcnlcIiBzdmdJY29uPVwibWF0X291dGxpbmU6ZG9uZVwiIEBwb3NpdGl2ZVN0YXRlPjwvbWF0LWljb24+XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgIDxtYXQtaWNvbiBjb2xvcj1cIndhcm5cIiBzdmdJY29uPVwibWF0X291dGxpbmU6ZXJyb3JcIiBAbmVnYXRpdmVTdGF0ZT48L21hdC1pY29uPlxuICAgICAgICB9XG4gICAgICAgIDxzcGFuPnt7dXBwZXJDYXNlQ3JpdGVyaWFNc2d9fTwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgIH1cblxuICAgIEBpZiAocGFzc3dvcmRDb21wb25lbnQuZW5hYmxlRGlnaXRSdWxlKSB7XG4gICAgICA8ZGl2IGNsYXNzPVwiaW5mby1yb3dcIiBAaXRlbXM+XG4gICAgICAgIEBpZiAocGFzc3dvcmRDb21wb25lbnQuY29udGFpbkF0TGVhc3RPbmVEaWdpdCkge1xuICAgICAgICAgIDxtYXQtaWNvbiBjb2xvcj1cInByaW1hcnlcIiBzdmdJY29uPVwibWF0X291dGxpbmU6ZG9uZVwiIEBwb3NpdGl2ZVN0YXRlPjwvbWF0LWljb24+XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgIDxtYXQtaWNvbiBjb2xvcj1cIndhcm5cIiBzdmdJY29uPVwibWF0X291dGxpbmU6ZXJyb3JcIiBAbmVnYXRpdmVTdGF0ZT48L21hdC1pY29uPlxuICAgICAgICB9XG4gICAgICAgIDxzcGFuPnt7ZGlnaXRzQ3JpdGVyaWFNc2d9fTwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgIH1cblxuICAgIEBpZiAocGFzc3dvcmRDb21wb25lbnQuZW5hYmxlU3BlY2lhbENoYXJSdWxlKSB7XG4gICAgICA8ZGl2IGNsYXNzPVwiaW5mby1yb3dcIiBAaXRlbXM+XG4gICAgICAgIEBpZiAocGFzc3dvcmRDb21wb25lbnQuY29udGFpbkF0TGVhc3RPbmVTcGVjaWFsQ2hhcikge1xuICAgICAgICAgIDxtYXQtaWNvbiBjb2xvcj1cInByaW1hcnlcIiBzdmdJY29uPVwibWF0X291dGxpbmU6ZG9uZVwiIEBwb3NpdGl2ZVN0YXRlPjwvbWF0LWljb24+XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgIDxtYXQtaWNvbiBjb2xvcj1cIndhcm5cIiBzdmdJY29uPVwibWF0X291dGxpbmU6ZXJyb3JcIiBAbmVnYXRpdmVTdGF0ZT48L21hdC1pY29uPlxuICAgICAgICB9XG4gICAgICAgIDxzcGFuPnt7c3BlY2lhbENoYXJzQ3JpdGVyaWFNc2d9fTwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgIH1cblxuICAgIEBpZiAocGFzc3dvcmRDb21wb25lbnQuZW5hYmxlTGVuZ3RoUnVsZSkge1xuICAgICAgPGRpdiBjbGFzcz1cImluZm8tcm93XCIgQGl0ZW1zPlxuICAgICAgICBAaWYgKHBhc3N3b3JkQ29tcG9uZW50LmNvbnRhaW5BdExlYXN0TWluQ2hhcnMpIHtcbiAgICAgICAgICA8bWF0LWljb24gY29sb3I9XCJwcmltYXJ5XCIgc3ZnSWNvbj1cIm1hdF9vdXRsaW5lOmRvbmVcIiBAcG9zaXRpdmVTdGF0ZT48L21hdC1pY29uPlxuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICA8bWF0LWljb24gY29sb3I9XCJ3YXJuXCIgc3ZnSWNvbj1cIm1hdF9vdXRsaW5lOmVycm9yXCIgQG5lZ2F0aXZlU3RhdGU+PC9tYXQtaWNvbj5cbiAgICAgICAgfVxuICAgICAgICA8c3Bhbj57e21pbkNoYXJzQ3JpdGVyaWFNc2d9fTwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgIH1cblxuICAgIEBpZiAocGFzc3dvcmRDb21wb25lbnQuY3VzdG9tVmFsaWRhdG9yKSB7XG4gICAgICA8ZGl2IGNsYXNzPVwiaW5mby1yb3dcIiBAaXRlbXM+XG4gICAgICAgIEBpZiAocGFzc3dvcmRDb21wb25lbnQuY29udGFpbkF0Q3VzdG9tQ2hhcnMpIHtcbiAgICAgICAgICA8bWF0LWljb24gY29sb3I9XCJwcmltYXJ5XCIgc3ZnSWNvbj1cIm1hdF9vdXRsaW5lOmRvbmVcIiBAcG9zaXRpdmVTdGF0ZT48L21hdC1pY29uPlxuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICA8bWF0LWljb24gY29sb3I9XCJ3YXJuXCIgc3ZnSWNvbj1cIm1hdF9vdXRsaW5lOmVycm9yXCIgQG5lZ2F0aXZlU3RhdGU+PC9tYXQtaWNvbj5cbiAgICAgICAgfVxuICAgICAgICA8c3Bhbj57e2N1c3RvbUNoYXJzQ3JpdGVyaWFNc2d9fTwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgIH1cblxuICAgIEBpZiAoZW5hYmxlU2NvcmVJbmZvKSB7XG4gICAgICA8ZGl2IGNsYXNzPVwiaW5mby1yb3dcIiBAaXRlbXM+XG4gICAgICAgIEBpZiAocGFzc3dvcmRDb21wb25lbnQuc3RyZW5ndGggPT09IDEwMCkge1xuICAgICAgICAgIDxtYXQtaWNvbiBjb2xvcj1cInByaW1hcnlcIiBzdmdJY29uPVwibWF0X291dGxpbmU6ZG9uZVwiIEBwb3NpdGl2ZVN0YXRlPjwvbWF0LWljb24+XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgIDxtYXQtaWNvbiBjb2xvcj1cIndhcm5cIiBzdmdJY29uPVwibWF0X291dGxpbmU6ZXJyb3JcIiBAbmVnYXRpdmVTdGF0ZT48L21hdC1pY29uPlxuICAgICAgICB9XG4gICAgICAgIDxzcGFuPuWvhueggeW8uuW6pj0ge3twYXNzd29yZENvbXBvbmVudC5zdHJlbmd0aH19ICUxMDA8L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICB9XG5cbiAgPC9tYXQtY2FyZC1jb250ZW50PlxuPC9tYXQtY2FyZD4iXX0=
150
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0LXBhc3N3b3JkLXN0cmVuZ3RoLWluZm8uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY21hdC9jb21wb25lbnRzL3Bhc3N3b3JkLXN0cmVuZ3RoL21hdC1wYXNzd29yZC1zdHJlbmd0aC1pbmZvL21hdC1wYXNzd29yZC1zdHJlbmd0aC1pbmZvLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NtYXQvY29tcG9uZW50cy9wYXNzd29yZC1zdHJlbmd0aC9tYXQtcGFzc3dvcmQtc3RyZW5ndGgtaW5mby9tYXQtcGFzc3dvcmQtc3RyZW5ndGgtaW5mby5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNqSSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUE7Ozs7QUFpRXJDLE1BQU0sT0FBTyxpQ0FBaUM7SUE5RDlDO1FBb0VJLG9CQUFlLEdBQUcsS0FBSyxDQUFDO1FBR3hCLHlCQUFvQixHQUFHLFlBQVksQ0FBQztRQUdwQyx5QkFBb0IsR0FBRyxZQUFZLENBQUM7UUFHcEMsc0JBQWlCLEdBQUcsVUFBVSxDQUFDO1FBRy9CLDRCQUF1QixHQUFHLFlBQVksQ0FBQztRQUd2QywyQkFBc0IsR0FBRyxZQUFZLENBQUM7S0FXekM7SUFORyxR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LEtBQUssQ0FBQzt3Q0FDRixPQUFPLEVBQUUsQ0FBQzt3Q0FDVixTQUFTLEVBQUUsc0VBQXNFO3dDQUNqRixNQUFNLEVBQUUsR0FBRztxQ0FDZCxDQUFDO29DQUNGLEtBQUssQ0FBQzt3Q0FDRixTQUFTLEVBQUUscUVBQXFFO3dDQUNoRixNQUFNLEVBQUUsR0FBRztxQ0FDZCxDQUFDO29DQUNGLEtBQUssQ0FBQzt3Q0FDRixTQUFTLEVBQUUscUVBQXFFO3dDQUNoRixNQUFNLEVBQUUsR0FBRztxQ0FDZCxDQUFDO29DQUNGLEtBQUssQ0FBQzt3Q0FDRixTQUFTLEVBQUUseUNBQXlDO3dDQUNwRCxNQUFNLEVBQUUsQ0FBQztxQ0FDWixDQUFDO2lDQUNMLENBQUMsQ0FBQzs2QkFDTixFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7eUJBQ2xFLENBQUM7d0JBQ0YsT0FBTyxDQUFDLGVBQWUsRUFBRTs0QkFDckIsVUFBVSxDQUFDLFFBQVEsRUFBRSxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7eUJBQzVDLENBQUM7cUJBQ0wsY0FDVyxJQUFJLFdBQ1AsQ0FBQyxhQUFhLEVBQUUsYUFBYSxDQUFDOzhCQUt2QyxpQkFBaUI7c0JBRGhCLEtBQUs7Z0JBSU4sZUFBZTtzQkFEZCxLQUFLO2dCQUlOLG9CQUFvQjtzQkFEbkIsS0FBSztnQkFJTixvQkFBb0I7c0JBRG5CLEtBQUs7Z0JBSU4saUJBQWlCO3NCQURoQixLQUFLO2dCQUlOLHVCQUF1QjtzQkFEdEIsS0FBSztnQkFJTixzQkFBc0I7c0JBRHJCLEtBQUs7Z0JBSU4sbUJBQW1CO3NCQURsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYW5pbWF0ZSwgYW5pbWF0ZUNoaWxkLCBrZXlmcmFtZXMsIHF1ZXJ5LCBzdGFnZ2VyLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlciwgdXNlQW5pbWF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWF0Q2FyZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NhcmQnO1xyXG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XHJcbmltcG9ydCB7IHNoYWtlIH0gZnJvbSAnLi4vYW5pbWF0aW9ucydcclxuaW1wb3J0IHsgQ21hdFBhc3N3b3JkU3RyZW5ndGhDb21wb25lbnQgfSBmcm9tICcuLi9tYXQtcGFzc3dvcmQtc3RyZW5ndGgvbWF0LXBhc3N3b3JkLXN0cmVuZ3RoLmNvbXBvbmVudCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnY21hdC1wYXNzd29yZC1zdHJlbmd0aC1pbmZvJyxcclxuICAgIGV4cG9ydEFzOiAnY21hdFBhc3N3b3JkU3RyZW5ndGhJbmZvJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9tYXQtcGFzc3dvcmQtc3RyZW5ndGgtaW5mby5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi9tYXQtcGFzc3dvcmQtc3RyZW5ndGgtaW5mby5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxuICAgIGFuaW1hdGlvbnM6IFtcclxuICAgICAgICAvLyBuaWNlIHN0YWdnZXIgZWZmZWN0IHdoZW4gc2hvd2luZyBleGlzdGluZyBlbGVtZW50c1xyXG4gICAgICAgIHRyaWdnZXIoJ2xpc3QnLCBbXHJcbiAgICAgICAgICAgIHRyYW5zaXRpb24oJzplbnRlcicsIFtcclxuICAgICAgICAgICAgICAgIC8vIGNoaWxkIGFuaW1hdGlvbiBzZWxlY3RvciArIHN0YWdnZXJcclxuICAgICAgICAgICAgICAgIHF1ZXJ5KCdAaXRlbXMnLCBzdGFnZ2VyKDMwMCwgYW5pbWF0ZUNoaWxkKCkpKVxyXG4gICAgICAgICAgICBdKSxcclxuICAgICAgICBdKSxcclxuICAgICAgICB0cmlnZ2VyKCdpdGVtcycsIFtcclxuICAgICAgICAgICAgLy8gY3ViaWMtYmV6aWVyIGZvciBhIHRpbnkgYm91bmNpbmcgZmVlbFxyXG4gICAgICAgICAgICB0cmFuc2l0aW9uKCc6ZW50ZXInLCBbXHJcbiAgICAgICAgICAgICAgICBzdHlsZSh7IHRyYW5zZm9ybTogJ3NjYWxlKDAuNSknLCBvcGFjaXR5OiAwIH0pLFxyXG4gICAgICAgICAgICAgICAgYW5pbWF0ZSgnMXMgY3ViaWMtYmV6aWVyKC44LC0wLjYsMC4yLDEuNSknLCBzdHlsZSh7IHRyYW5zZm9ybTogJ3NjYWxlKDEpJywgb3BhY2l0eTogMSB9KSlcclxuICAgICAgICAgICAgXSksXHJcbiAgICAgICAgICAgIHRyYW5zaXRpb24oJzpsZWF2ZScsIFtcclxuICAgICAgICAgICAgICAgIHN0eWxlKHsgdHJhbnNmb3JtOiAnc2NhbGUoMSknLCBvcGFjaXR5OiAxLCBoZWlnaHQ6ICcqJyB9KSxcclxuICAgICAgICAgICAgICAgIGFuaW1hdGUoJzFzIGN1YmljLWJlemllciguOCwtMC42LDAuMiwxLjUpJywgc3R5bGUoeyB0cmFuc2Zvcm06ICdzY2FsZSgwLjUpJywgb3BhY2l0eTogMCwgaGVpZ2h0OiAnMHB4JywgbWFyZ2luOiAnMHB4JyB9KSlcclxuICAgICAgICAgICAgXSksXHJcbiAgICAgICAgXSksXHJcbiAgICAgICAgdHJpZ2dlcigncG9zaXRpdmVTdGF0ZScsIFtcclxuICAgICAgICAgICAgdHJhbnNpdGlvbignOmVudGVyJywgW1xyXG4gICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxyXG4gICAgICAgICAgICAgICAgc3R5bGUoeyAnYmFja2ZhY2UtdmlzaWJpbGl0eSc6ICd2aXNpYmxlJyB9KSxcclxuICAgICAgICAgICAgICAgIGFuaW1hdGUoJ3t7IHRpbWluZyB9fXMge3sgZGVsYXkgfX1zIGVhc2UtaW4nLCBrZXlmcmFtZXMoW1xyXG4gICAgICAgICAgICAgICAgICAgIHN0eWxlKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgb3BhY2l0eTogMCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtOiAncGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZTNkKHt7IHJvdGF0ZVggfX0sIHt7IHJvdGF0ZVkgfX0sIDAsIDkwZGVnKScsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldDogMCxcclxuICAgICAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICAgICAgICBzdHlsZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wYWNpdHk6IDEsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogJ3BlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGUzZCh7eyByb3RhdGVYIH19LCB7eyByb3RhdGVZIH19LCAwLCAtMjBkZWcpJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0OiAwLjQsXHJcbiAgICAgICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICAgICAgICAgc3R5bGUoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm06ICdwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlM2Qoe3sgcm90YXRlWCB9fSwge3sgcm90YXRlWSB9fSwgMCwgMTBkZWcpJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0OiAwLjYsXHJcbiAgICAgICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICAgICAgICAgc3R5bGUoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm06ICdwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlM2Qoe3sgcm90YXRlWCB9fSwge3sgcm90YXRlWSB9fSwgMCwgLTVkZWcpJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0OiAwLjgsXHJcbiAgICAgICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICAgICAgICAgc3R5bGUoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm06ICdwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlM2QoMCwgMCwgMCwgMCknLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQ6IDEsXHJcbiAgICAgICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICAgICBdKSksXHJcbiAgICAgICAgICAgIF0sIHsgcGFyYW1zOiB7IHRpbWluZzogMSwgZGVsYXk6IDAsIHJvdGF0ZVg6IDEsIHJvdGF0ZVk6IDAgfSB9KSxcclxuICAgICAgICBdKSxcclxuICAgICAgICB0cmlnZ2VyKCduZWdhdGl2ZVN0YXRlJywgW1xyXG4gICAgICAgICAgICB0cmFuc2l0aW9uKCc6ZW50ZXInLCB1c2VBbmltYXRpb24oc2hha2UpKSxcclxuICAgICAgICBdKSxcclxuICAgIF0sXHJcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gICAgaW1wb3J0czogW01hdENhcmRNb2R1bGUsIE1hdEljb25Nb2R1bGVdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDbWF0UGFzc3dvcmRTdHJlbmd0aEluZm9Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwYXNzd29yZENvbXBvbmVudDogQ21hdFBhc3N3b3JkU3RyZW5ndGhDb21wb25lbnQ7XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIGVuYWJsZVNjb3JlSW5mbyA9IGZhbHNlO1xyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBsb3dlckNhc2VDcml0ZXJpYU1zZyA9ICfljIXlkKvoh7PlsJHkuIDkuKrlsI/lhpnlrZfmr40nO1xyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICB1cHBlckNhc2VDcml0ZXJpYU1zZyA9ICfljIXlkKvoh7PlsJHkuIDkuKrlpKflhpnlrZfmr40nO1xyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBkaWdpdHNDcml0ZXJpYU1zZyA9ICfljIXlkKvoh7PlsJHkuIDkuKrmlbDlrZcnO1xyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBzcGVjaWFsQ2hhcnNDcml0ZXJpYU1zZyA9ICfljIXlkKvoh7PlsJHkuIDkuKrnibnmrorlrZfnrKYnO1xyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBjdXN0b21DaGFyc0NyaXRlcmlhTXNnID0gJ+WMheWQq+iHs+WwkeS4gOS4quS8oOe7n+Wtl+espic7XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIG1pbkNoYXJzQ3JpdGVyaWFNc2c6IHN0cmluZztcclxuXHJcbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgICAgICBpZiAoIXRoaXMubWluQ2hhcnNDcml0ZXJpYU1zZykge1xyXG4gICAgICAgICAgICB0aGlzLm1pbkNoYXJzQ3JpdGVyaWFNc2cgPSBg5YyF5ZCr6Iez5bCRICR7dGhpcy5wYXNzd29yZENvbXBvbmVudC5taW59IOS4quWtl+espmA7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxufVxyXG4iLCI8bWF0LWNhcmQgY2xhc3M9XCJpbmZvLWNhcmRcIiBAbGlzdD5cclxuICA8bWF0LWNhcmQtY29udGVudD5cclxuICAgIEBpZiAocGFzc3dvcmRDb21wb25lbnQuZW5hYmxlTG93ZXJDYXNlTGV0dGVyUnVsZSkge1xyXG4gICAgICA8ZGl2IGNsYXNzPVwiaW5mby1yb3dcIiBAaXRlbXM+XHJcbiAgICAgICAgQGlmIChwYXNzd29yZENvbXBvbmVudC5jb250YWluQXRMZWFzdE9uZUxvd2VyQ2FzZUxldHRlcikge1xyXG4gICAgICAgICAgPG1hdC1pY29uIGNvbG9yPVwicHJpbWFyeVwiIHN2Z0ljb249XCJtYXRfb3V0bGluZTpkb25lXCIgQHBvc2l0aXZlU3RhdGU+PC9tYXQtaWNvbj5cclxuICAgICAgICB9IEBlbHNlIHtcclxuICAgICAgICAgIDxtYXQtaWNvbiBjb2xvcj1cIndhcm5cIiBzdmdJY29uPVwibWF0X291dGxpbmU6ZXJyb3JcIiBAbmVnYXRpdmVTdGF0ZT48L21hdC1pY29uPlxyXG4gICAgICAgIH1cclxuICAgICAgICA8c3Bhbj57e2xvd2VyQ2FzZUNyaXRlcmlhTXNnfX08L3NwYW4+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgfVxyXG5cclxuICAgIEBpZiAocGFzc3dvcmRDb21wb25lbnQuZW5hYmxlVXBwZXJDYXNlTGV0dGVyUnVsZSkge1xyXG4gICAgICA8ZGl2IGNsYXNzPVwiaW5mby1yb3dcIiBAaXRlbXM+XHJcbiAgICAgICAgQGlmIChwYXNzd29yZENvbXBvbmVudC5jb250YWluQXRMZWFzdE9uZVVwcGVyQ2FzZUxldHRlcikge1xyXG4gICAgICAgICAgPG1hdC1pY29uIGNvbG9yPVwicHJpbWFyeVwiIHN2Z0ljb249XCJtYXRfb3V0bGluZTpkb25lXCIgQHBvc2l0aXZlU3RhdGU+PC9tYXQtaWNvbj5cclxuICAgICAgICB9IEBlbHNlIHtcclxuICAgICAgICAgIDxtYXQtaWNvbiBjb2xvcj1cIndhcm5cIiBzdmdJY29uPVwibWF0X291dGxpbmU6ZXJyb3JcIiBAbmVnYXRpdmVTdGF0ZT48L21hdC1pY29uPlxyXG4gICAgICAgIH1cclxuICAgICAgICA8c3Bhbj57e3VwcGVyQ2FzZUNyaXRlcmlhTXNnfX08L3NwYW4+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgfVxyXG5cclxuICAgIEBpZiAocGFzc3dvcmRDb21wb25lbnQuZW5hYmxlRGlnaXRSdWxlKSB7XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJpbmZvLXJvd1wiIEBpdGVtcz5cclxuICAgICAgICBAaWYgKHBhc3N3b3JkQ29tcG9uZW50LmNvbnRhaW5BdExlYXN0T25lRGlnaXQpIHtcclxuICAgICAgICAgIDxtYXQtaWNvbiBjb2xvcj1cInByaW1hcnlcIiBzdmdJY29uPVwibWF0X291dGxpbmU6ZG9uZVwiIEBwb3NpdGl2ZVN0YXRlPjwvbWF0LWljb24+XHJcbiAgICAgICAgfSBAZWxzZSB7XHJcbiAgICAgICAgICA8bWF0LWljb24gY29sb3I9XCJ3YXJuXCIgc3ZnSWNvbj1cIm1hdF9vdXRsaW5lOmVycm9yXCIgQG5lZ2F0aXZlU3RhdGU+PC9tYXQtaWNvbj5cclxuICAgICAgICB9XHJcbiAgICAgICAgPHNwYW4+e3tkaWdpdHNDcml0ZXJpYU1zZ319PC9zcGFuPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIH1cclxuXHJcbiAgICBAaWYgKHBhc3N3b3JkQ29tcG9uZW50LmVuYWJsZVNwZWNpYWxDaGFyUnVsZSkge1xyXG4gICAgICA8ZGl2IGNsYXNzPVwiaW5mby1yb3dcIiBAaXRlbXM+XHJcbiAgICAgICAgQGlmIChwYXNzd29yZENvbXBvbmVudC5jb250YWluQXRMZWFzdE9uZVNwZWNpYWxDaGFyKSB7XHJcbiAgICAgICAgICA8bWF0LWljb24gY29sb3I9XCJwcmltYXJ5XCIgc3ZnSWNvbj1cIm1hdF9vdXRsaW5lOmRvbmVcIiBAcG9zaXRpdmVTdGF0ZT48L21hdC1pY29uPlxyXG4gICAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgICAgPG1hdC1pY29uIGNvbG9yPVwid2FyblwiIHN2Z0ljb249XCJtYXRfb3V0bGluZTplcnJvclwiIEBuZWdhdGl2ZVN0YXRlPjwvbWF0LWljb24+XHJcbiAgICAgICAgfVxyXG4gICAgICAgIDxzcGFuPnt7c3BlY2lhbENoYXJzQ3JpdGVyaWFNc2d9fTwvc3Bhbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICB9XHJcblxyXG4gICAgQGlmIChwYXNzd29yZENvbXBvbmVudC5lbmFibGVMZW5ndGhSdWxlKSB7XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJpbmZvLXJvd1wiIEBpdGVtcz5cclxuICAgICAgICBAaWYgKHBhc3N3b3JkQ29tcG9uZW50LmNvbnRhaW5BdExlYXN0TWluQ2hhcnMpIHtcclxuICAgICAgICAgIDxtYXQtaWNvbiBjb2xvcj1cInByaW1hcnlcIiBzdmdJY29uPVwibWF0X291dGxpbmU6ZG9uZVwiIEBwb3NpdGl2ZVN0YXRlPjwvbWF0LWljb24+XHJcbiAgICAgICAgfSBAZWxzZSB7XHJcbiAgICAgICAgICA8bWF0LWljb24gY29sb3I9XCJ3YXJuXCIgc3ZnSWNvbj1cIm1hdF9vdXRsaW5lOmVycm9yXCIgQG5lZ2F0aXZlU3RhdGU+PC9tYXQtaWNvbj5cclxuICAgICAgICB9XHJcbiAgICAgICAgPHNwYW4+e3ttaW5DaGFyc0NyaXRlcmlhTXNnfX08L3NwYW4+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgfVxyXG5cclxuICAgIEBpZiAocGFzc3dvcmRDb21wb25lbnQuY3VzdG9tVmFsaWRhdG9yKSB7XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJpbmZvLXJvd1wiIEBpdGVtcz5cclxuICAgICAgICBAaWYgKHBhc3N3b3JkQ29tcG9uZW50LmNvbnRhaW5BdEN1c3RvbUNoYXJzKSB7XHJcbiAgICAgICAgICA8bWF0LWljb24gY29sb3I9XCJwcmltYXJ5XCIgc3ZnSWNvbj1cIm1hdF9vdXRsaW5lOmRvbmVcIiBAcG9zaXRpdmVTdGF0ZT48L21hdC1pY29uPlxyXG4gICAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgICAgPG1hdC1pY29uIGNvbG9yPVwid2FyblwiIHN2Z0ljb249XCJtYXRfb3V0bGluZTplcnJvclwiIEBuZWdhdGl2ZVN0YXRlPjwvbWF0LWljb24+XHJcbiAgICAgICAgfVxyXG4gICAgICAgIDxzcGFuPnt7Y3VzdG9tQ2hhcnNDcml0ZXJpYU1zZ319PC9zcGFuPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIH1cclxuXHJcbiAgICBAaWYgKGVuYWJsZVNjb3JlSW5mbykge1xyXG4gICAgICA8ZGl2IGNsYXNzPVwiaW5mby1yb3dcIiBAaXRlbXM+XHJcbiAgICAgICAgQGlmIChwYXNzd29yZENvbXBvbmVudC5zdHJlbmd0aCA9PT0gMTAwKSB7XHJcbiAgICAgICAgICA8bWF0LWljb24gY29sb3I9XCJwcmltYXJ5XCIgc3ZnSWNvbj1cIm1hdF9vdXRsaW5lOmRvbmVcIiBAcG9zaXRpdmVTdGF0ZT48L21hdC1pY29uPlxyXG4gICAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgICAgPG1hdC1pY29uIGNvbG9yPVwid2FyblwiIHN2Z0ljb249XCJtYXRfb3V0bGluZTplcnJvclwiIEBuZWdhdGl2ZVN0YXRlPjwvbWF0LWljb24+XHJcbiAgICAgICAgfVxyXG4gICAgICAgIDxzcGFuPuWvhueggeW8uuW6pj0ge3twYXNzd29yZENvbXBvbmVudC5zdHJlbmd0aH19ICUxMDA8L3NwYW4+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgfVxyXG5cclxuICA8L21hdC1jYXJkLWNvbnRlbnQ+XHJcbjwvbWF0LWNhcmQ+Il19
@@ -398,10 +398,10 @@ export class CmatPopoverTriggerDirective {
398
398
  }
399
399
  this.popover.setCurrentStyles();
400
400
  }
401
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: CmatPopoverTriggerDirective, deps: [{ token: i1.Overlay }, { token: i0.ElementRef }, { token: i0.ViewContainerRef }, { token: i2.Directionality, optional: true }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive }); }
402
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.1", type: CmatPopoverTriggerDirective, isStandalone: true, selector: "[cmatPopoverTriggerFor],[cmatPopoverTargetAt],[cmatPopoverTriggerOn]", inputs: { popover: ["cmatPopoverTriggerFor", "popover"], targetElement: ["cmatPopoverTargetAt", "targetElement"], triggerEvent: ["cmatPopoverTriggerOn", "triggerEvent"] }, outputs: { popoverOpened: "popoverOpened", popoverClosed: "popoverClosed" }, host: { listeners: { "click": "onClick($event)", "mouseenter": "onMouseEnter($event)", "mouseleave": "onMouseLeave($event)", "mousedown": "handleMousedown($event)" }, properties: { "attr.aria-haspopup": "this.ariaHaspopup" } }, exportAs: ["cmatPopoverTrigger"], ngImport: i0 }); }
401
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.10", ngImport: i0, type: CmatPopoverTriggerDirective, deps: [{ token: i1.Overlay }, { token: i0.ElementRef }, { token: i0.ViewContainerRef }, { token: i2.Directionality, optional: true }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive }); }
402
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.10", type: CmatPopoverTriggerDirective, isStandalone: true, selector: "[cmatPopoverTriggerFor],[cmatPopoverTargetAt],[cmatPopoverTriggerOn]", inputs: { popover: ["cmatPopoverTriggerFor", "popover"], targetElement: ["cmatPopoverTargetAt", "targetElement"], triggerEvent: ["cmatPopoverTriggerOn", "triggerEvent"] }, outputs: { popoverOpened: "popoverOpened", popoverClosed: "popoverClosed" }, host: { listeners: { "click": "onClick($event)", "mouseenter": "onMouseEnter($event)", "mouseleave": "onMouseLeave($event)", "mousedown": "handleMousedown($event)" }, properties: { "attr.aria-haspopup": "this.ariaHaspopup" } }, exportAs: ["cmatPopoverTrigger"], ngImport: i0 }); }
403
403
  }
404
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: CmatPopoverTriggerDirective, decorators: [{
404
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.10", ngImport: i0, type: CmatPopoverTriggerDirective, decorators: [{
405
405
  type: Directive,
406
406
  args: [{
407
407
  selector: '[cmatPopoverTriggerFor],[cmatPopoverTargetAt],[cmatPopoverTriggerOn]',
@@ -439,4 +439,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImpor
439
439
  type: HostListener,
440
440
  args: ['mousedown', ['$event']]
441
441
  }] } });
442
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci10cmlnZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY21hdC9jb21wb25lbnRzL3BvcG92ZXIvcG9wb3Zlci10cmlnZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRXBFLE9BQU8sRUFLSCxhQUFhLEdBSWhCLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3JELE9BQU8sRUFHSCxTQUFTLEVBRVQsWUFBWSxFQUNaLFdBQVcsRUFDWCxZQUFZLEVBQ1osS0FBSyxFQUVMLFFBQVEsRUFDUixNQUFNLEdBRVQsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLE9BQU8sRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDN0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLGtCQUFrQixDQUFDOzs7O0FBU2hFOzs7R0FHRztBQU9ILE1BQU0sT0FBTywyQkFBMkI7SUFzQ3BDLFlBQ1ksUUFBaUIsRUFDakIsV0FBdUIsRUFDdkIsaUJBQW1DLEVBQ3ZCLElBQW9CLEVBQ2hDLGtCQUFxQztRQUpyQyxhQUFRLEdBQVIsUUFBUSxDQUFTO1FBQ2pCLGdCQUFXLEdBQVgsV0FBVyxDQUFZO1FBQ3ZCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBa0I7UUFDdkIsU0FBSSxHQUFKLElBQUksQ0FBZ0I7UUFDaEMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFtQjtRQTFDZCxpQkFBWSxHQUFHLElBQUksQ0FBQztRQVV2RCwyREFBMkQ7UUFDakQsa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBRW5ELDJEQUEyRDtRQUNqRCxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7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QUVEOzs7OztPQUtHO0lBQ0ssWUFBWTtRQUNoQixNQUFNLENBQUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxVQUFVLENBQUMsR0FDbkMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssUUFBUSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLE9BQU87WUFDekUsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxLQUFLLENBQUM7WUFDNUIsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLE9BQU8sSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxRQUFRO2dCQUMzRSxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLE9BQU8sQ0FBQztnQkFDNUIsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztRQUV6QyxNQUFNLENBQUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxVQUFVLENBQUMsR0FDbkMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssT0FBTyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLE9BQU87WUFDeEUsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxRQUFRLENBQUM7WUFDN0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLE9BQU8sSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxPQUFPO2dCQUMxRSxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsUUFBUSxFQUFFLEtBQUssQ0FBQztnQkFDN0IsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQztR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QUNsRCxDQUFDO1FBRUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0lBQ3BDLENBQUM7OEdBdGRRLDJCQUEyQjtrR0FBM0IsMkJBQTJCOzsyRkFBM0IsMkJBQTJCO2tCQUx2QyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxzRUFBc0U7b0JBQ2hGLFVBQVUsRUFBQyxJQUFJO29CQUNmLFFBQVEsRUFBRSxvQkFBb0I7aUJBQ2pDOzswQkEyQ1EsUUFBUTt5RUF6Q3NCLFlBQVk7c0JBQTlDLFdBQVc7dUJBQUMsb0JBQW9CO2dCQUVELE9BQU87c0JBQXRDLEtBQUs7dUJBQUMsdUJBQXVCO2dCQUdBLGFBQWE7c0JBQTFDLEtBQUs7dUJBQUMscUJBQXFCO2dCQUdHLFlBQVk7c0JBQTFDLEtBQUs7dUJBQUMsc0JBQXNCO2dCQUduQixhQUFhO3NCQUF0QixNQUFNO2dCQUdHLGFBQWE7c0JBQXRCLE1BQU07Z0JBeUNQLE9BQU87c0JBRE4sWUFBWTt1QkFBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBUWpDLFlBQVk7c0JBRFgsWUFBWTt1QkFBQyxZQUFZLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBV3RDLFlBQVk7c0JBRFgsWUFBWTt1QkFBQyxZQUFZLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBbUJ0QyxlQUFlO3NCQURkLFlBQVk7dUJBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiXHJcbmltcG9ydCB7IGlzRmFrZU1vdXNlZG93bkZyb21TY3JlZW5SZWFkZXIgfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XHJcbmltcG9ydCB7IERpcmVjdGlvbiwgRGlyZWN0aW9uYWxpdHkgfSBmcm9tICdAYW5ndWxhci9jZGsvYmlkaSc7XHJcbmltcG9ydCB7XHJcbiAgICBDb25uZWN0ZWRQb3NpdGlvbixcclxuICAgIEZsZXhpYmxlQ29ubmVjdGVkUG9zaXRpb25TdHJhdGVneSxcclxuICAgIEhvcml6b250YWxDb25uZWN0aW9uUG9zLFxyXG4gICAgT3ZlcmxheSxcclxuICAgIE92ZXJsYXlDb25maWcsXHJcbiAgICBPdmVybGF5UmVmLFxyXG4gICAgU2Nyb2xsU3RyYXRlZ3ksXHJcbiAgICBWZXJ0aWNhbENvbm5lY3Rpb25Qb3MsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xyXG5pbXBvcnQgeyBUZW1wbGF0ZVBvcnRhbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xyXG5pbXBvcnQge1xyXG4gICAgQWZ0ZXJWaWV3SW5pdCxcclxuICAgIENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgRGlyZWN0aXZlLFxyXG4gICAgRWxlbWVudFJlZixcclxuICAgIEV2ZW50RW1pdHRlcixcclxuICAgIEhvc3RCaW5kaW5nLFxyXG4gICAgSG9zdExpc3RlbmVyLFxyXG4gICAgSW5wdXQsXHJcbiAgICBPbkRlc3Ryb3ksXHJcbiAgICBPcHRpb25hbCxcclxuICAgIE91dHB1dCxcclxuICAgIFZpZXdDb250YWluZXJSZWYsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IHRocm93Q21hdFBvcG92ZXJNaXNzaW5nRXJyb3IgfSBmcm9tICcuL3BvcG92ZXIuZXJyb3JzJztcclxuaW1wb3J0IHsgQ21hdFBvcG92ZXJQYW5lbCwgQ21hdFRhcmdldCB9IGZyb20gJy4vcG9wb3Zlci5pbnRlcmZhY2VzJztcclxuaW1wb3J0IHtcclxuICAgIENtYXRQb3BvdmVyUG9zaXRpb24sXHJcbiAgICBDbWF0UG9wb3ZlclBvc2l0aW9uU3RhcnQsXHJcbiAgICBDbWF0UG9wb3ZlclNjcm9sbFN0cmF0ZWd5LFxyXG4gICAgQ21hdFBvcG92ZXJUcmlnZ2VyRXZlbnQsXHJcbn0gZnJvbSAnLi9wb3BvdmVyLnR5cGUnO1xyXG5cclxuLyoqXHJcbiAqIFRoaXMgZGlyZWN0aXZlIGlzIGludGVuZGVkIHRvIGJlIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCBhbiBjbWF0LXBvcG92ZXIgdGFnLiBJdCBpc1xyXG4gKiByZXNwb25zaWJsZSBmb3IgdG9nZ2xpbmcgdGhlIGRpc3BsYXkgb2YgdGhlIHByb3ZpZGVkIHBvcG92ZXIgaW5zdGFuY2UuXHJcbiAqL1xyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgICBzZWxlY3RvcjogJ1tjbWF0UG9wb3ZlclRyaWdnZXJGb3JdLFtjbWF0UG9wb3ZlclRhcmdldEF0XSxbY21hdFBvcG92ZXJUcmlnZ2VyT25dJyxcclxuICAgIHN0YW5kYWxvbmU6dHJ1ZSxcclxuICAgIGV4cG9ydEFzOiAnY21hdFBvcG92ZXJUcmlnZ2VyJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQ21hdFBvcG92ZXJUcmlnZ2VyRGlyZWN0aXZlIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcclxuICAgIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLWhhc3BvcHVwJykgYXJpYUhhc3BvcHVwID0gdHJ1ZTtcclxuICAgIC8qKiBSZWZlcmVuY2VzIHRoZSBwb3BvdmVyIGluc3RhbmNlIHRoYXQgdGhlIHRyaWdnZXIgaXMgYXNzb2NpYXRlZCB3aXRoLiAqL1xyXG4gICAgQElucHV0KCdjbWF0UG9wb3ZlclRyaWdnZXJGb3InKSBwb3BvdmVyITogQ21hdFBvcG92ZXJQYW5lbDtcclxuXHJcbiAgICAvKiogUmVmZXJlbmNlcyB0aGUgcG9wb3ZlciB0YXJnZXQgaW5zdGFuY2UgdGhhdCB0aGUgdHJpZ2dlciBpcyBhc3NvY2lhdGVkIHdpdGguICovXHJcbiAgICBASW5wdXQoJ2NtYXRQb3BvdmVyVGFyZ2V0QXQnKSB0YXJnZXRFbGVtZW50ITogQ21hdFRhcmdldDtcclxuXHJcbiAgICAvKiogUG9wb3ZlciB0cmlnZ2VyIGV2ZW50ICovXHJcbiAgICBASW5wdXQoJ2NtYXRQb3BvdmVyVHJpZ2dlck9uJykgdHJpZ2dlckV2ZW50ITogQ21hdFBvcG92ZXJUcmlnZ2VyRXZlbnQ7XHJcblxyXG4gICAgLyoqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgYXNzb2NpYXRlZCBwb3BvdmVyIGlzIG9wZW5lZC4gKi9cclxuICAgIEBPdXRwdXQoKSBwb3BvdmVyT3BlbmVkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG5cclxuICAgIC8qKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIGFzc29jaWF0ZWQgcG9wb3ZlciBpcyBjbG9zZWQuICovXHJcbiAgICBAT3V0cHV0KCkgcG9wb3ZlckNsb3NlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuXHJcbiAgICBwb3BvdmVyT3BlbmVkJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgICBwb3BvdmVyQ2xvc2VkJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcblxyXG4gICAgcHJpdmF0ZSBfcG9ydGFsITogVGVtcGxhdGVQb3J0YWw7XHJcbiAgICBwcml2YXRlIF9vdmVybGF5UmVmOiBPdmVybGF5UmVmIHwgbnVsbCA9IG51bGw7XHJcbiAgICBwcml2YXRlIF9wb3BvdmVyT3BlbiA9IGZhbHNlO1xyXG4gICAgcHJpdmF0ZSBfaGFsdCA9IGZhbHNlO1xyXG4gICAgcHJpdmF0ZSBfYmFja2Ryb3BTdWJzY3JpcHRpb24hOiBTdWJzY3JpcHRpb247XHJcbiAgICBwcml2YXRlIF9wb3NpdGlvblN1YnNjcmlwdGlvbiE6IFN1YnNjcmlwdGlvbjtcclxuICAgIHByaXZhdGUgX2RldGFjaG1lbnRzU3Vic2NyaXB0aW9uITogU3Vic2NyaXB0aW9uO1xyXG5cclxuICAgIHByaXZhdGUgX21vdXNlb3ZlclRpbWVyOiBhbnk7XHJcblxyXG4gICAgLy8gdHJhY2tpbmcgaW5wdXQgdHlwZSBpcyBuZWNlc3Nhcnkgc28gaXQncyBwb3NzaWJsZSB0byBvbmx5IGF1dG8tZm9jdXNcclxuICAgIC8vIHRoZSBmaXJzdCBpdGVtIG9mIHRoZSBsaXN0IHdoZW4gdGhlIHBvcG92ZXIgaXMgb3BlbmVkIHZpYSB0aGUga2V5Ym9hcmRcclxuICAgIHByaXZhdGUgX29wZW5lZEJ5TW91c2UgPSBmYWxzZTtcclxuXHJcbiAgICBwcml2YXRlIF9vbkRlc3Ryb3kgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG5cclxuXHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJpdmF0ZSBfb3ZlcmxheTogT3ZlcmxheSxcclxuICAgICAgICBwcml2YXRlIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmLFxyXG4gICAgICAgIHByaXZhdGUgX3ZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsXHJcbiAgICAgICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBfZGlyOiBEaXJlY3Rpb25hbGl0eSxcclxuICAgICAgICBwcml2YXRlIF9jaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWZcclxuICAgICkgeyB9XHJcblxyXG4gICAgLyoqIFdoZXRoZXIgdGhlIHBvcG92ZXIgaXMgb3Blbi4gKi9cclxuICAgIGdldCBwb3BvdmVyT3BlbigpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fcG9wb3Zlck9wZW47XHJcbiAgICB9XHJcbiAgICAvKiogVGhlIHRleHQgZGlyZWN0aW9uIG9mIHRoZSBjb250YWluaW5nIGFwcC4gKi9cclxuICAgIGdldCBkaXIoKTogRGlyZWN0aW9uIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fZGlyICYmIHRoaXMuX2Rpci52YWx1ZSA9PT0gJ3J0bCcgPyAncnRsJyA6ICdsdHInO1xyXG4gICAgfVxyXG5cclxuICAgIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJywgWyckZXZlbnQnXSlcclxuICAgIG9uQ2xpY2soKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMucG9wb3Zlci50cmlnZ2VyRXZlbnQgPT09ICdjbGljaycpIHtcclxuICAgICAgICAgICAgdGhpcy50b2dnbGVQb3BvdmVyKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIEBIb3N0TGlzdGVuZXIoJ21vdXNlZW50ZXInLCBbJyRldmVudCddKVxyXG4gICAgb25Nb3VzZUVudGVyKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX2hhbHQgPSBmYWxzZTtcclxuICAgICAgICBpZiAodGhpcy5wb3BvdmVyLnRyaWdnZXJFdmVudCA9PT0gJ2hvdmVyJykge1xyXG4gICAgICAgICAgICB0aGlzLl9tb3VzZW92ZXJUaW1lciA9IHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5vcGVuUG9wb3ZlcigpO1xyXG4gICAgICAgICAgICB9LCB0aGlzLnBvcG92ZXIuZW50ZXJEZWxheSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIEBIb3N0TGlzdGVuZXIoJ21vdXNlbGVhdmUnLCBbJyRldmVudCddKVxyXG4gICAgb25Nb3VzZUxlYXZlKCk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLnBvcG92ZXIudHJpZ2dlckV2ZW50ID09PSAnaG92ZXInKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLl9tb3VzZW92ZXJUaW1lcikge1xyXG4gICAgICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuX21vdXNlb3ZlclRpbWVyKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuX21vdXNlb3ZlclRpbWVyID0gbnVsbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAodGhpcy5fcG9wb3Zlck9wZW4pIHtcclxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5wb3BvdmVyLmNsb3NlRGlzYWJsZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jbG9zZVBvcG92ZXIoKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9LCB0aGlzLnBvcG92ZXIubGVhdmVEZWxheSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9oYWx0ID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIEBIb3N0TGlzdGVuZXIoJ21vdXNlZG93bicsIFsnJGV2ZW50J10pXHJcbiAgICBoYW5kbGVNb3VzZWRvd24oZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcclxuICAgICAgICBpZiAoZXZlbnQgJiYgIWlzRmFrZU1vdXNlZG93bkZyb21TY3JlZW5SZWFkZXIoZXZlbnQpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX29wZW5lZEJ5TW91c2UgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9jaGVja1BvcG92ZXIoKTtcclxuICAgICAgICB0aGlzLl9zZXRDdXJyZW50Q29uZmlnKCk7XHJcbiAgICAgICAgdGhpcy5wb3BvdmVyLmNsb3NlZC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5jbG9zZVBvcG92ZXIoKSk7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5kZXN0cm95UG9wb3ZlcigpO1xyXG4gICAgfVxyXG5cclxuXHJcblxyXG4gICAgLyoqIFRvZ2dsZXMgdGhlIHBvcG92ZXIgYmV0d2VlbiB0aGUgb3BlbiBhbmQgY2xvc2VkIHN0YXRlcy4gKi9cclxuICAgIHRvZ2dsZVBvcG92ZXIoKTogdm9pZCB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3BvcG92ZXJPcGVuID8gdGhpcy5jbG9zZVBvcG92ZXIoKSA6IHRoaXMub3BlblBvcG92ZXIoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKiogT3BlbnMgdGhlIHBvcG92ZXIuICovXHJcbiAgICBvcGVuUG9wb3ZlcigpOiB2b2lkIHtcclxuICAgICAgICBpZiAoIXRoaXMuX3BvcG92ZXJPcGVuICYmICF0aGlzLl9oYWx0KSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2NyZWF0ZU92ZXJsYXkoKS5hdHRhY2godGhpcy5fcG9ydGFsKTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuX3N1YnNjcmliZVRvQmFja2Ryb3AoKTtcclxuICAgICAgICAgICAgdGhpcy5fc3Vic2NyaWJlVG9EZXRhY2htZW50cygpO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5faW5pdFBvcG92ZXIoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIENsb3NlcyB0aGUgcG9wb3Zlci4gKi9cclxuICAgIGNsb3NlUG9wb3ZlcigpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5fb3ZlcmxheVJlZikge1xyXG4gICAgICAgICAgICB0aGlzLl9vdmVybGF5UmVmLmRldGFjaCgpO1xyXG4gICAgICAgICAgICB0aGlzLl9yZXNldFBvcG92ZXIoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuZGVzdHJveVBvcG92ZXIoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKiogUmVtb3ZlcyB0aGUgcG9wb3ZlciBmcm9tIHRoZSBET00uICovXHJcbiAgICBkZXN0cm95UG9wb3ZlcigpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5fbW91c2VvdmVyVGltZXIpIHtcclxuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuX21vdXNlb3ZlclRpbWVyKTtcclxuICAgICAgICAgICAgdGhpcy5fbW91c2VvdmVyVGltZXIgPSBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5fb3ZlcmxheVJlZikge1xyXG4gICAgICAgICAgICB0aGlzLl9vdmVybGF5UmVmLmRpc3Bvc2UoKTtcclxuICAgICAgICAgICAgdGhpcy5fb3ZlcmxheVJlZiA9IG51bGw7XHJcbiAgICAgICAgICAgIHRoaXMuX2NsZWFuVXBTdWJzY3JpcHRpb25zKCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLl9vbkRlc3Ryb3kubmV4dCgpO1xyXG4gICAgICAgIHRoaXMuX29uRGVzdHJveS5jb21wbGV0ZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBGb2N1c2VzIHRoZSBwb3BvdmVyIHRyaWdnZXIuICovXHJcbiAgICBmb2N1cygpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoaXMgbWV0aG9kIGVuc3VyZXMgdGhhdCB0aGUgcG9wb3ZlciBjbG9zZXMgd2hlbiB0aGUgb3ZlcmxheSBiYWNrZHJvcCBpcyBjbGlja2VkLlxyXG4gICAgICogV2UgZG8gbm90IHVzZSBmaXJzdCgpIGhlcmUgYmVjYXVzZSBkb2luZyBzbyB3b3VsZCBub3QgY2F0Y2ggY2xpY2tzIGZyb20gd2l0aGluXHJcbiAgICAgKiB0aGUgcG9wb3ZlciwgYW5kIGl0IHdvdWxkIGZhaWwgdG8gdW5zdWJzY3JpYmUgcHJvcGVybHkuIEluc3RlYWQsIHdlIHVuc3Vic2NyaWJlXHJcbiAgICAgKiBleHBsaWNpdGx5IHdoZW4gdGhlIHBvcG92ZXIgaXMgY2xvc2VkIG9yIGRlc3Ryb3llZC5cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBfc3Vic2NyaWJlVG9CYWNrZHJvcCgpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5fb3ZlcmxheVJlZikge1xyXG4gICAgICAgICAgICAvKiogT25seSBzdWJzY3JpYmUgdG8gYmFja2Ryb3AgaWYgdHJpZ2dlciBldmVudCBpcyBjbGljayAqL1xyXG4gICAgICAgICAgICBpZiAodGhpcy50cmlnZ2VyRXZlbnQgPT09ICdjbGljaycgJiYgdGhpcy5wb3BvdmVyLmNsb3NlT25CYWNrZHJvcENsaWNrID09PSB0cnVlKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9vdmVybGF5UmVmXHJcbiAgICAgICAgICAgICAgICAgICAgLmJhY2tkcm9wQ2xpY2soKVxyXG4gICAgICAgICAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLnBvcG92ZXJDbG9zZWQkKSwgdGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSkpXHJcbiAgICAgICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucG9wb3Zlci5lbWl0Q2xvc2VFdmVudCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgX3N1YnNjcmliZVRvRGV0YWNobWVudHMoKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMuX292ZXJsYXlSZWYpIHtcclxuICAgICAgICAgICAgdGhpcy5fb3ZlcmxheVJlZlxyXG4gICAgICAgICAgICAgICAgLmRldGFjaG1lbnRzKClcclxuICAgICAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLnBvcG92ZXJDbG9zZWQkKSwgdGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSkpXHJcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9zZXRQb3BvdmVyQ2xvc2VkKCk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGlzIG1ldGhvZCBzZXRzIHRoZSBwb3BvdmVyIHN0YXRlIHRvIG9wZW4gYW5kIGZvY3VzZXMgdGhlIGZpcnN0IGl0ZW0gaWZcclxuICAgICAqIHRoZSBwb3BvdmVyIHdhcyBvcGVuZWQgdmlhIHRoZSBrZXlib2FyZC5cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBfaW5pdFBvcG92ZXIoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fc2V0UG9wb3Zlck9wZW5lZCgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhpcyBtZXRob2QgcmVzZXRzIHRoZSBwb3BvdmVyIHdoZW4gaXQncyBjbG9zZWQsIG1vc3QgaW1wb3J0YW50bHkgcmVzdG9yaW5nXHJcbiAgICAgKiBmb2N1cyB0byB0aGUgcG9wb3ZlciB0cmlnZ2VyIGlmIHRoZSBwb3BvdmVyIHdhcyBvcGVuZWQgdmlhIHRoZSBrZXlib2FyZC5cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBfcmVzZXRQb3BvdmVyKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX3NldFBvcG92ZXJDbG9zZWQoKTtcclxuXHJcbiAgICAgICAgLy8gRm9jdXMgb25seSBuZWVkcyB0byBiZSByZXNldCB0byB0aGUgaG9zdCBlbGVtZW50IGlmIHRoZSBwb3BvdmVyIHdhcyBvcGVuZWRcclxuICAgICAgICAvLyBieSB0aGUga2V5Ym9hcmQgYW5kIG1hbnVhbGx5IHNoaWZ0ZWQgdG8gdGhlIGZpcnN0IHBvcG92ZXIgaXRlbS5cclxuICAgICAgICBpZiAoIXRoaXMuX29wZW5lZEJ5TW91c2UpIHtcclxuICAgICAgICAgICAgdGhpcy5mb2N1cygpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLl9vcGVuZWRCeU1vdXNlID0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIHNldCBzdGF0ZSByYXRoZXIgdGhhbiB0b2dnbGUgdG8gc3VwcG9ydCB0cmlnZ2VycyBzaGFyaW5nIGEgcG9wb3ZlciAqL1xyXG4gICAgcHJpdmF0ZSBfc2V0UG9wb3Zlck9wZW5lZCgpOiB2b2lkIHtcclxuICAgICAgICBpZiAoIXRoaXMuX3BvcG92ZXJPcGVuKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3BvcG92ZXJPcGVuID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMucG9wb3Zlck9wZW5lZCQubmV4dCgpO1xyXG4gICAgICAgICAgICB0aGlzLnBvcG92ZXJPcGVuZWQuZW1pdCgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKiogc2V0IHN0YXRlIHJhdGhlciB0aGFuIHRvZ2dsZSB0byBzdXBwb3J0IHRyaWdnZXJzIHNoYXJpbmcgYSBwb3BvdmVyICovXHJcbiAgICBwcml2YXRlIF9zZXRQb3BvdmVyQ2xvc2VkKCk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLl9wb3BvdmVyT3Blbikge1xyXG4gICAgICAgICAgICB0aGlzLl9wb3BvdmVyT3BlbiA9IGZhbHNlO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5wb3BvdmVyQ2xvc2VkJC5uZXh0KCk7XHJcbiAgICAgICAgICAgIHRoaXMucG9wb3ZlckNsb3NlZC5lbWl0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogIFRoaXMgbWV0aG9kIGNoZWNrcyB0aGF0IGEgdmFsaWQgaW5zdGFuY2Ugb2YgTWRQb3BvdmVyIGhhcyBiZWVuIHBhc3NlZCBpbnRvXHJcbiAgICAgKiAgbWRQb3BvdmVyVHJpZ2dlckZvci4gSWYgbm90LCBhbiBleGNlcHRpb24gaXMgdGhyb3duLlxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF9jaGVja1BvcG92ZXIoKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKCF0aGlzLnBvcG92ZXIpIHtcclxuICAgICAgICAgICAgdGhyb3dDbWF0UG9wb3Zlck1pc3NpbmdFcnJvcigpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqICBUaGlzIG1ldGhvZCBjcmVhdGVzIHRoZSBvdmVybGF5IGZyb20gdGhlIHByb3ZpZGVkIHBvcG92ZXIncyB0ZW1wbGF0ZSBhbmQgc2F2ZXMgaXRzXHJcbiAgICAgKiAgT3ZlcmxheVJlZiBzbyB0aGF0IGl0IGNhbiBiZSBhdHRhY2hlZCB0byB0aGUgRE9NIHdoZW4gb3BlblBvcG92ZXIgaXMgY2FsbGVkLlxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF9jcmVhdGVPdmVybGF5KCk6IE92ZXJsYXlSZWYge1xyXG4gICAgICAgIGlmICghdGhpcy5fb3ZlcmxheVJlZikge1xyXG4gICAgICAgICAgICB0aGlzLl9wb3J0YWwgPSBuZXcgVGVtcGxhdGVQb3J0YWwodGhpcy5wb3BvdmVyLnRlbXBsYXRlUmVmLCB0aGlzLl92aWV3Q29udGFpbmVyUmVmKTtcclxuICAgICAgICAgICAgY29uc3QgY29uZmlnID0gdGhpcy5fZ2V0T3ZlcmxheUNvbmZpZygpO1xyXG4gICAgICAgICAgICB0aGlzLl9zdWJzY3JpYmVUb1Bvc2l0aW9ucyhjb25maWcucG9zaXRpb25TdHJhdGVneSBhcyBGbGV4aWJsZUNvbm5lY3RlZFBvc2l0aW9uU3RyYXRlZ3kpO1xyXG4gICAgICAgICAgICB0aGlzLl9vdmVybGF5UmVmID0gdGhpcy5fb3ZlcmxheS5jcmVhdGUoY29uZmlnKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLl9vdmVybGF5UmVmO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhpcyBtZXRob2QgYnVpbGRzIHRoZSBjb25maWd1cmF0aW9uIG9iamVjdCBuZWVkZWQgdG8gY3JlYXRlIHRoZSBvdmVybGF5LCB0aGUgT3ZlcmxheUNvbmZpZy5cclxuICAgICAqXHJcbiAgICAgKiBAcmV0dXJucyBPdmVybGF5Q29uZmlnXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgX2dldE92ZXJsYXlDb25maWcoKTogT3ZlcmxheUNvbmZpZyB7XHJcbiAgICAgICAgY29uc3Qgb3ZlcmxheVN0YXRlID0gbmV3IE92ZXJsYXlDb25maWcoKTtcclxuICAgICAgICBvdmVybGF5U3RhdGUucG9zaXRpb25TdHJhdGVneSA9IHRoaXMuX2dldFBvc2l0aW9uKCk7XHJcblxyXG4gICAgICAgIC8qKiBEaXNwbGF5IG92ZXJsYXkgYmFja2Ryb3AgaWYgdHJpZ2dlciBldmVudCBpcyBjbGljayAqL1xyXG4gICAgICAgIGlmICh0aGlzLnRyaWdnZXJFdmVudCA9PT0gJ2NsaWNrJykge1xyXG4gICAgICAgICAgICBvdmVybGF5U3RhdGUuaGFzQmFja2Ryb3AgPSB0cnVlO1xyXG4gICAgICAgICAgICBvdmVybGF5U3RhdGUuYmFja2Ryb3BDbGFzcyA9ICdjZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcCc7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBvdmVybGF5U3RhdGUuZGlyZWN0aW9uID0gdGhpcy5fZGlyO1xyXG4gICAgICAgIG92ZXJsYXlTdGF0ZS5zY3JvbGxTdHJhdGVneSA9IHRoaXMuX2dldE92ZXJsYXlTY3JvbGxTdHJhdGVneSh0aGlzLnBvcG92ZXIuc2Nyb2xsU3RyYXRlZ3kpO1xyXG5cclxuICAgICAgICByZXR1cm4gb3ZlcmxheVN0YXRlO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhpcyBtZXRob2QgcmV0dXJucyB0aGUgc2Nyb2xsIHN0cmF0ZWd5IHVzZWQgYnkgdGhlIGNkay9vdmVybGF5LlxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF9nZXRPdmVybGF5U2Nyb2xsU3RyYXRlZ3koc3RyYXRlZ3k6IENtYXRQb3BvdmVyU2Nyb2xsU3RyYXRlZ3kpOiBTY3JvbGxTdHJhdGVneSB7XHJcbiAgICAgICAgc3dpdGNoIChzdHJhdGVneSkge1xyXG4gICAgICAgICAgICBjYXNlICdub29wJzpcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9vdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMubm9vcCgpO1xyXG4gICAgICAgICAgICBjYXNlICdjbG9zZSc6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fb3ZlcmxheS5zY3JvbGxTdHJhdGVnaWVzLmNsb3NlKCk7XHJcbiAgICAgICAgICAgIGNhc2UgJ2Jsb2NrJzpcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9vdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMuYmxvY2soKTtcclxuICAgICAgICAgICAgY2FzZSAncmVwb3NpdGlvbic6XHJcbiAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fb3ZlcmxheS5zY3JvbGxTdHJhdGVnaWVzLnJlcG9zaXRpb24oKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBMaXN0ZW5zIHRvIGNoYW5nZXMgaW4gdGhlIHBvc2l0aW9uIG9mIHRoZSBvdmVybGF5IGFuZCBzZXRzIHRoZSBjb3JyZWN0IGNsYXNzZXNcclxuICAgICAqIG9uIHRoZSBwb3BvdmVyIGJhc2VkIG9uIHRoZSBuZXcgcG9zaXRpb24uIFRoaXMgZW5zdXJlcyB0aGUgYW5pbWF0aW9uIG9yaWdpbiBpcyBhbHdheXNcclxuICAgICAqIGNvcnJlY3QsIGV2ZW4gaWYgYSBmYWxsYmFjayBwb3NpdGlvbiBpcyB1c2VkIGZvciB0aGUgb3ZlcmxheS5cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBfc3Vic2NyaWJlVG9Qb3NpdGlvbnMocG9zaXRpb246IEZsZXhpYmxlQ29ubmVjdGVkUG9zaXRpb25TdHJhdGVneSk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX3Bvc2l0aW9uU3Vic2NyaXB0aW9uID0gcG9zaXRpb24ucG9zaXRpb25DaGFuZ2VzLnN1YnNjcmliZSgoY2hhbmdlKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHBvc1ggPVxyXG4gICAgICAgICAgICAgICAgY2hhbmdlLmNvbm5lY3Rpb25QYWlyLm92ZXJsYXlYID09PSAnc3RhcnQnXHJcbiAgICAgICAgICAgICAgICAgICAgPyAnYWZ0ZXInXHJcbiAgICAgICAgICAgICAgICAgICAgOiBjaGFuZ2UuY29ubmVjdGlvblBhaXIub3ZlcmxheVggPT09ICdlbmQnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID8gJ2JlZm9yZSdcclxuICAgICAgICAgICAgICAgICAgICAgICAgOiAnY2VudGVyJztcclxuICAgICAgICAgICAgY29uc3QgcG9zWSA9XHJcbiAgICAgICAgICAgICAgICBjaGFuZ2UuY29ubmVjdGlvblBhaXIub3ZlcmxheVkgPT09ICd0b3AnXHJcbiAgICAgICAgICAgICAgICAgICAgPyAnYmVsb3cnXHJcbiAgICAgICAgICAgICAgICAgICAgOiBjaGFuZ2UuY29ubmVjdGlvblBhaXIub3ZlcmxheVkgPT09ICdib3R0b20nXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID8gJ2Fib3ZlJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICA6ICdjZW50ZXInO1xyXG5cclxuICAgICAgICAgICAgY29uc3QgcG9zOiBDbWF0UG9wb3ZlclBvc2l0aW9uID1cclxuICAgICAgICAgICAgICAgIHRoaXMucG9wb3Zlci5wb3NpdGlvblswXSA9PT0gJ2Fib3ZlJyB8fCB0aGlzLnBvcG92ZXIucG9zaXRpb25bMF0gPT09ICdiZWxvdydcclxuICAgICAgICAgICAgICAgICAgICA/IFtwb3NZIGFzIENtYXRQb3BvdmVyUG9zaXRpb25TdGFydCwgcG9zWF1cclxuICAgICAgICAgICAgICAgICAgICA6IFtwb3NYIGFzIENtYXRQb3BvdmVyUG9zaXRpb25TdGFydCwgcG9zWV07XHJcblxyXG4gICAgICAgICAgICAvLyByZXF1aXJlZCBmb3IgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXHJcbiAgICAgICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5wb3BvdmVyLnNldEN1cnJlbnRTdHlsZXMocG9zKTtcclxuICAgICAgICAgICAgdGhpcy5wb3BvdmVyLnNldFBvc2l0aW9uQ2xhc3Nlcyhwb3MpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhpcyBtZXRob2QgYnVpbGRzIHRoZSBwb3NpdGlvbiBzdHJhdGVneSBmb3IgdGhlIG92ZXJsYXksIHNvIHRoZSBwb3BvdmVyIGlzIHByb3Blcmx5IGNvbm5lY3RlZFxyXG4gICAgICogdG8gdGhlIHRyaWdnZXIuXHJcbiAgICAgKlxyXG4gICAgICogQHJldHVybnMgQ29ubmVjdGVkUG9zaXRpb25TdHJhdGVneVxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF9nZXRQb3NpdGlvbigpOiBGbGV4aWJsZUNvbm5lY3RlZFBvc2l0aW9uU3RyYXRlZ3kge1xyXG4gICAgICAgIGNvbnN0IFtvcmlnaW5YLCBvcmlnaW4ybmRYLCBvcmlnaW4zcmRYXTogSG9yaXpvbnRhbENvbm5lY3Rpb25Qb3NbXSA9XHJcbiAgICAgICAgICAgIHRoaXMucG9wb3Zlci5wb3NpdGlvblswXSA9PT0gJ2JlZm9yZScgfHwgdGhpcy5wb3BvdmVyLnBvc2l0aW9uWzFdID09PSAnYWZ0ZXInXHJcbiAgICAgICAgICAgICAgICA/IFsnc3RhcnQnLCAnY2VudGVyJywgJ2VuZCddXHJcbiAgICAgICAgICAgICAgICA6IHRoaXMucG9wb3Zlci5wb3NpdGlvblswXSA9PT0gJ2FmdGVyJyB8fCB0aGlzLnBvcG92ZXIucG9zaXRpb25bMV0gPT09ICdiZWZvcmUnXHJcbiAgICAgICAgICAgICAgICAgICAgPyBbJ2VuZCcsICdjZW50ZXInLCAnc3RhcnQnXVxyXG4gICAgICAgICAgICAgICAgICAgIDogWydjZW50ZXInLCAnc3RhcnQnLCAnZW5kJ107XHJcblxyXG4gICAgICAgIGNvbnN0IFtvcmlnaW5ZLCBvcmlnaW4ybmRZLCBvcmlnaW4zcmRZXTogVmVydGljYWxDb25uZWN0aW9uUG9zW10gPVxyXG4gICAgICAgICAgICB0aGlzLnBvcG92ZXIucG9zaXRpb25bMF0gPT09ICdhYm92ZScgfHwgdGhpcy5wb3BvdmVyLnBvc2l0aW9uWzFdID09PSAnYmVsb3cnXHJcbiAgICAgICAgICAgICAgICA/IFsndG9wJywgJ2NlbnRlcicsICdib3R0b20nXVxyXG4gICAgICAgICAgICAgICAgOiB0aGlzLnBvcG92ZXIucG9zaXRpb25bMF0gPT09ICdiZWxvdycgfHwgdGhpcy5wb3BvdmVyLnBvc2l0aW9uWzFdID09PSAnYWJvdmUnXHJcbiAgICAgICAgICAgICAgICAgICAgPyBbJ2JvdHRvbScsICdjZW50ZXInLCAndG9wJ11cclxuICAgICAgICAgICAgICAgICAgICA6IFsnY2VudGVyJywgJ3RvcCcsICdib3R0b20nXTtcclxuXHJcbiAgICAgICAgY29uc3QgW292ZXJsYXlYLCBvdmVybGF5RmFsbGJhY2tYXTogSG9yaXpvbnRhbENvbm5lY3Rpb25Qb3NbXSA9XHJcbiAgICAgICAgICAgIHRoaXMucG9wb3Zlci5wb3NpdGlvblswXSA9PT0gJ2JlbG93JyB8fCB0aGlzLnBvcG92ZXIucG9zaXRpb25bMF0gPT09ICdhYm92ZSdcclxuICAgICAgICAgICAgICAgID8gW29yaWdpblgsIG9yaWdpblhdXHJcbiAgICAgICAgICAgICAgICA6IHRoaXMucG9wb3Zlci5wb3NpdGlvblswXSA9PT0gJ2JlZm9yZSdcclxuICAgICAgICAgICAgICAgICAgICA/IFsnZW5kJywgJ3N0YXJ0J11cclxuICAgICAgICAgICAgICAgICAgICA6IFsnc3RhcnQnLCAnZW5kJ107XHJcblxyXG4gICAgICAgIGNvbnN0IFtvdmVybGF5WSwgb3ZlcmxheUZhbGxiYWNrWV06IFZlcnRpY2FsQ29ubmVjdGlvblBvc1tdID1cclxuICAgICAgICAgICAgdGhpcy5wb3BvdmVyLnBvc2l0aW9uWzBdID09PSAnYmVmb3JlJyB8fCB0aGlzLnBvcG92ZXIucG9zaXRpb25bMF0gPT09ICdhZnRlcidcclxuICAgICAgICAgICAgICAgID8gW29yaWdpblksIG9yaWdpblldXHJcbiAgICAgICAgICAgICAgICA6IHRoaXMucG9wb3Zlci5wb3NpdGlvblswXSA9PT0gJ2JlbG93J1xyXG4gICAgICAgICAgICAgICAgICAgID8gWyd0b3AnLCAnYm90dG9tJ11cclxuICAgICAgICAgICAgICAgICAgICA6IFsnYm90dG9tJywgJ3RvcCddO1xyXG5cclxuICAgICAgICBjb25zdCBvcmlnaW5GYWxsYmFja1ggPSBvdmVybGF5WDtcclxuICAgICAgICBjb25zdCBvcmlnaW5GYWxsYmFja1kgPSBvdmVybGF5WTtcclxuXHJcbiAgICAgICAgY29uc3Qgb2Zmc2V0WCA9XHJcbiAgICAgICAgICAgIHRoaXMucG9wb3Zlci54T2Zmc2V0ICYmICFpc05hTihOdW1iZXIodGhpcy5wb3BvdmVyLnhPZmZzZXQpKVxyXG4gICAgICAgICAgICAgICAgPyBOdW1iZXIodGhpcy5kaXIgPT09ICdsdHInID8gdGhpcy5wb3BvdmVyLnhPZmZzZXQgOiAtdGhpcy5wb3BvdmVyLnhPZmZzZXQpXHJcbiAgICAgICAgICAgICAgICA6IDA7XHJcbiAgICAgICAgY29uc3Qgb2Zmc2V0WSA9XHJcbiAgICAgICAgICAgIHRoaXMucG9wb3Zlci55T2Zmc2V0ICYmICFpc05hTihOdW1iZXIodGhpcy5wb3BvdmVyLnlPZmZzZXQpKVxyXG4gICAgICAgICAgICAgICAgPyBOdW1iZXIodGhpcy5wb3BvdmVyLnlPZmZzZXQpXHJcbiAgICAgICAgICAgICAgICA6IDA7XHJcblxyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIEZvciBvdmVycmlkaW5nIHBvc2l0aW9uIGVsZW1lbnQsIHdoZW4gYGNtYXRQb3BvdmVyVGFyZ2V0QXRgIGhhcyBhIHZhbGlkIGVsZW1lbnQgcmVmZXJlbmNlLlxyXG4gICAgICAgICAqIFVzZWZ1bCBmb3Igc3RpY2tpbmcgcG9wb3ZlciB0byBwYXJlbnQgZWxlbWVudCBhbmQgb2Zmc2V0dGluZyBhcnJvdyB0byB0cmlnZ2VyIGVsZW1lbnQuXHJcbiAgICAgICAgICogSWYgdW5kZWZpbmVkIGRlZmF1bHRzIHRvIHRoZSB0cmlnZ2VyIGVsZW1lbnQgcmVmZXJlbmNlLlxyXG4gICAgICAgICAqL1xyXG4gICAgICAgIGxldCBlbGVtZW50ID0gdGhpcy5fZWxlbWVudFJlZjtcclxuICAgICAgICBpZiAodHlwZW9mIHRoaXMudGFyZ2V0RWxlbWVudCAhPT0gJ3VuZGVmaW5lZCcpIHtcclxuICAgICAgICAgICAgdGhpcy5wb3BvdmVyLmNvbnRhaW5lclBvc2l0aW9uaW5nID0gdHJ1ZTtcclxuICAgICAgICAgICAgZWxlbWVudCA9IHRoaXMudGFyZ2V0RWxlbWVudC5fZWxlbWVudFJlZjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCBwb3NpdGlvbnM6IENvbm5lY3RlZFBvc2l0aW9uW10gPSBbeyBvcmlnaW5YLCBvcmlnaW5ZLCBvdmVybGF5WCwgb3ZlcmxheVkgfV07XHJcblxyXG4gICAgICAgIGlmICh0aGlzLnBvcG92ZXIucG9zaXRpb25bMF0gPT09ICdhYm92ZScgfHwgdGhpcy5wb3BvdmVyLnBvc2l0aW9uWzBdID09PSAnYmVsb3cnKSB7XHJcbiAgICAgICAgICAgIHBvc2l0aW9ucyA9IFtcclxuICAgICAgICAgICAgICAgIHsgb3JpZ2luWCwgb3JpZ2luWSwgb3ZlcmxheVgsIG92ZXJsYXlZLCBvZmZzZXRZIH0sXHJcbiAgICAgICAgICAgICAgICB7IG9yaWdpblg6IG9yaWdpbjJuZFgsIG9yaWdpblksIG92ZXJsYXlYOiBvcmlnaW4ybmRYLCBvdmVybGF5WSwgb2Zmc2V0WSB9LFxyXG4gICAgICAgICAgICAgICAgeyBvcmlnaW5YOiBvcmlnaW4zcmRYLCBvcmlnaW5ZLCBvdmVybGF5WDogb3JpZ2luM3JkWCwgb3ZlcmxheVksIG9mZnNldFkgfSxcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBvcmlnaW5YLFxyXG4gICAgICAgICAgICAgICAgICAgIG9yaWdpblk6IG9yaWdpbkZhbGxiYWNrWSxcclxuICAgICAgICAgICAgICAgICAgICBvdmVybGF5WCxcclxuICAgICAgICAgICAgICAgICAgICBvdmVybGF5WTogb3ZlcmxheUZhbGxiYWNrWSxcclxuICAgICAgICAgICAgICAgICAgICBvZmZzZXRZOiAtb2Zmc2V0WSxcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgb3JpZ2luWDogb3JpZ2luMm5kWCxcclxuICAgICAgICAgICAgICAgICAgICBvcmlnaW5ZOiBvcmlnaW5GYWxsYmFja1ksXHJcbiAgICAgICAgICAgICAgICAgICAgb3ZlcmxheVg6IG9yaWdpbjJuZFgsXHJcbiAgICAgICAgICAgICAgICAgICAgb3ZlcmxheVk6IG92ZXJsYXlGYWxsYmFja1ksXHJcbiAgICAgICAgICAgICAgICAgICAgb2Zmc2V0WTogLW9mZnNldFksXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIG9yaWdpblg6IG9yaWdpbjNyZFgsXHJcbiAgICAgICAgICAgICAgICAgICAgb3JpZ2luWTogb3JpZ2luRmFsbGJhY2tZLFxyXG4gICAgICAgICAgICAgICAgICAgIG92ZXJsYXlYOiBvcmlnaW4zcmRYLFxyXG4gICAgICAgICAgICAgICAgICAgIG92ZXJsYXlZOiBvdmVybGF5RmFsbGJhY2tZLFxyXG4gICAgICAgICAgICAgICAgICAgIG9mZnNldFk6IC1vZmZzZXRZLFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgXTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLnBvcG92ZXIucG9zaXRpb25bMF0gPT09ICdiZWZvcmUnIHx8IHRoaXMucG9wb3Zlci5wb3NpdGlvblswXSA9PT0gJ2FmdGVyJykge1xyXG4gICAgICAgICAgICBwb3NpdGlvbnMgPSBbXHJcbiAgICAgICAgICAgICAgICB7IG9yaWdpblgsIG9yaWdpblksIG92ZXJsYXlYLCBvdmVybGF5WSwgb2Zmc2V0WCB9LFxyXG4gICAgICAgICAgICAgICAgeyBvcmlnaW5YLCBvcmlnaW5ZOiBvcmlnaW4ybmRZLCBvdmVybGF5WCwgb3ZlcmxheVk6IG9yaWdpbjJuZFksIG9mZnNldFggfSxcclxuICAgICAgICAgICAgICAgIHsgb3JpZ2luWCwgb3JpZ2luWTogb3JpZ2luM3JkWSwgb3ZlcmxheVgsIG92ZXJsYXlZOiBvcmlnaW4zcmRZLCBvZmZzZXRYIH0sXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgb3JpZ2luWDogb3JpZ2luRmFsbGJhY2tYLFxyXG4gICAgICAgICAgICAgICAgICAgIG9yaWdpblksXHJcbiAgICAgICAgICAgICAgICAgICAgb3ZlcmxheVg6IG92ZXJsYXlGYWxsYmFja1gsXHJcbiAgICAgICAgICAgICAgICAgICAgb3ZlcmxheVksXHJcbiAgICAgICAgICAgICAgICAgICAgb2Zmc2V0WDogLW9mZnNldFgsXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIG9yaWdpblg6IG9yaWdpbkZhbGxiYWNrWCxcclxuICAgICAgICAgICAgICAgICAgICBvcmlnaW5ZOiBvcmlnaW4ybmRZLFxyXG4gICAgICAgICAgICAgICAgICAgIG92ZXJsYXlYOiBvdmVybGF5RmFsbGJhY2tYLFxyXG4gICAgICAgICAgICAgICAgICAgIG92ZXJsYXlZOiBvcmlnaW4ybmRZLFxyXG4gICAgICAgICAgICAgICAgICAgIG9mZnNldFg6IC1vZmZzZXRYLFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBvcmlnaW5YOiBvcmlnaW5GYWxsYmFja1gsXHJcbiAgICAgICAgICAgICAgICAgICAgb3JpZ2luWTogb3JpZ2luM3JkWSxcclxuICAgICAgICAgICAgICAgICAgICBvdmVybGF5WDogb3ZlcmxheUZhbGxiYWNrWCxcclxuICAgICAgICAgICAgICAgICAgICBvdmVybGF5WTogb3JpZ2luM3JkWSxcclxuICAgICAgICAgICAgICAgICAgICBvZmZzZXRYOiAtb2Zmc2V0WCxcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIF07XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5fb3ZlcmxheVxyXG4gICAgICAgICAgICAucG9zaXRpb24oKVxyXG4gICAgICAgICAgICAuZmxleGlibGVDb25uZWN0ZWRUbyhlbGVtZW50KVxyXG4gICAgICAgICAgICAud2l0aExvY2tlZFBvc2l0aW9uKClcclxuICAgICAgICAgICAgLndpdGhQb3NpdGlvbnMocG9zaXRpb25zKVxyXG4gICAgICAgICAgICAud2l0aERlZmF1bHRPZmZzZXRYKG9mZnNldFgpXHJcbiAgICAgICAgICAgIC53aXRoRGVmYXVsdE9mZnNldFkob2Zmc2V0WSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBfY2xlYW5VcFN1YnNjcmlwdGlvbnMoKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMuX2JhY2tkcm9wU3Vic2NyaXB0aW9uKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2JhY2tkcm9wU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLl9wb3NpdGlvblN1YnNjcmlwdGlvbikge1xyXG4gICAgICAgICAgICB0aGlzLl9wb3NpdGlvblN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5fZGV0YWNobWVudHNTdWJzY3JpcHRpb24pIHtcclxuICAgICAgICAgICAgdGhpcy5fZGV0YWNobWVudHNTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBwcml2YXRlIF9zZXRDdXJyZW50Q29uZmlnKCk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLnRyaWdnZXJFdmVudCkge1xyXG4gICAgICAgICAgICB0aGlzLnBvcG92ZXIudHJpZ2dlckV2ZW50ID0gdGhpcy50cmlnZ2VyRXZlbnQ7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLnBvcG92ZXIuc2V0Q3VycmVudFN0eWxlcygpO1xyXG4gICAgfVxyXG5cclxufVxyXG4iXX0=
442
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci10cmlnZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY21hdC9jb21wb25lbnRzL3BvcG92ZXIvcG9wb3Zlci10cmlnZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRXBFLE9BQU8sRUFLSCxhQUFhLEdBSWhCLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3JELE9BQU8sRUFHSCxTQUFTLEVBRVQsWUFBWSxFQUNaLFdBQVcsRUFDWCxZQUFZLEVBQ1osS0FBSyxFQUVMLFFBQVEsRUFDUixNQUFNLEdBRVQsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLE9BQU8sRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDN0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLGtCQUFrQixDQUFDOzs7O0FBU2hFOzs7R0FHRztBQU9ILE1BQU0sT0FBTywyQkFBMkI7SUFzQ3BDLFlBQ1ksUUFBaUIsRUFDakIsV0FBdUIsRUFDdkIsaUJBQW1DLEVBQ3ZCLElBQW9CLEVBQ2hDLGtCQUFxQztRQUpyQyxhQUFRLEdBQVIsUUFBUSxDQUFTO1FBQ2pCLGdCQUFXLEdBQVgsV0FBVyxDQUFZO1FBQ3ZCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBa0I7UUFDdkIsU0FBSSxHQUFKLElBQUksQ0FBZ0I7UUFDaEMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFtQjtRQTFDZCxpQkFBWSxHQUFHLElBQUksQ0FBQztRQVV2RCwyREFBMkQ7UUFDakQsa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBRW5ELDJEQUEyRDtRQUNqRCxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7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QUVEOzs7OztPQUtHO0lBQ0ssWUFBWTtRQUNoQixNQUFNLENBQUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxVQUFVLENBQUMsR0FDbkMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssUUFBUSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLE9BQU87WUFDekUsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxLQUFLLENBQUM7WUFDNUIsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLE9BQU8sSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxRQUFRO2dCQUMzRSxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLE9BQU8sQ0FBQztnQkFDNUIsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztRQUV6QyxNQUFNLENBQUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxVQUFVLENBQUMsR0FDbkMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssT0FBTyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLE9BQU87WUFDeEUsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxRQUFRLENBQUM7WUFDN0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLE9BQU8sSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxPQUFPO2dCQUMxRSxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsUUFBUSxFQUFFLEtBQUssQ0FBQztnQkFDN0IsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQztR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QUNsRCxDQUFDO1FBRUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0lBQ3BDLENBQUM7K0dBdGRRLDJCQUEyQjttR0FBM0IsMkJBQTJCOzs0RkFBM0IsMkJBQTJCO2tCQUx2QyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxzRUFBc0U7b0JBQ2hGLFVBQVUsRUFBQyxJQUFJO29CQUNmLFFBQVEsRUFBRSxvQkFBb0I7aUJBQ2pDOzswQkEyQ1EsUUFBUTt5RUF6Q3NCLFlBQVk7c0JBQTlDLFdBQVc7dUJBQUMsb0JBQW9CO2dCQUVELE9BQU87c0JBQXRDLEtBQUs7dUJBQUMsdUJBQXVCO2dCQUdBLGFBQWE7c0JBQTFDLEtBQUs7dUJBQUMscUJBQXFCO2dCQUdHLFlBQVk7c0JBQTFDLEtBQUs7dUJBQUMsc0JBQXNCO2dCQUduQixhQUFhO3NCQUF0QixNQUFNO2dCQUdHLGFBQWE7c0JBQXRCLE1BQU07Z0JBeUNQLE9BQU87c0JBRE4sWUFBWTt1QkFBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBUWpDLFlBQVk7c0JBRFgsWUFBWTt1QkFBQyxZQUFZLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBV3RDLFlBQVk7c0JBRFgsWUFBWTt1QkFBQyxZQUFZLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBbUJ0QyxlQUFlO3NCQURkLFlBQVk7dUJBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiXHJcbmltcG9ydCB7IGlzRmFrZU1vdXNlZG93bkZyb21TY3JlZW5SZWFkZXIgfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XHJcbmltcG9ydCB7IERpcmVjdGlvbiwgRGlyZWN0aW9uYWxpdHkgfSBmcm9tICdAYW5ndWxhci9jZGsvYmlkaSc7XHJcbmltcG9ydCB7XHJcbiAgICBDb25uZWN0ZWRQb3NpdGlvbixcclxuICAgIEZsZXhpYmxlQ29ubmVjdGVkUG9zaXRpb25TdHJhdGVneSxcclxuICAgIEhvcml6b250YWxDb25uZWN0aW9uUG9zLFxyXG4gICAgT3ZlcmxheSxcclxuICAgIE92ZXJsYXlDb25maWcsXHJcbiAgICBPdmVybGF5UmVmLFxyXG4gICAgU2Nyb2xsU3RyYXRlZ3ksXHJcbiAgICBWZXJ0aWNhbENvbm5lY3Rpb25Qb3MsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xyXG5pbXBvcnQgeyBUZW1wbGF0ZVBvcnRhbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xyXG5pbXBvcnQge1xyXG4gICAgQWZ0ZXJWaWV3SW5pdCxcclxuICAgIENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgRGlyZWN0aXZlLFxyXG4gICAgRWxlbWVudFJlZixcclxuICAgIEV2ZW50RW1pdHRlcixcclxuICAgIEhvc3RCaW5kaW5nLFxyXG4gICAgSG9zdExpc3RlbmVyLFxyXG4gICAgSW5wdXQsXHJcbiAgICBPbkRlc3Ryb3ksXHJcbiAgICBPcHRpb25hbCxcclxuICAgIE91dHB1dCxcclxuICAgIFZpZXdDb250YWluZXJSZWYsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IHRocm93Q21hdFBvcG92ZXJNaXNzaW5nRXJyb3IgfSBmcm9tICcuL3BvcG92ZXIuZXJyb3JzJztcclxuaW1wb3J0IHsgQ21hdFBvcG92ZXJQYW5lbCwgQ21hdFRhcmdldCB9IGZyb20gJy4vcG9wb3Zlci5pbnRlcmZhY2VzJztcclxuaW1wb3J0IHtcclxuICAgIENtYXRQb3BvdmVyUG9zaXRpb24sXHJcbiAgICBDbWF0UG9wb3ZlclBvc2l0aW9uU3RhcnQsXHJcbiAgICBDbWF0UG9wb3ZlclNjcm9sbFN0cmF0ZWd5LFxyXG4gICAgQ21hdFBvcG92ZXJUcmlnZ2VyRXZlbnQsXHJcbn0gZnJvbSAnLi9wb3BvdmVyLnR5cGUnO1xyXG5cclxuLyoqXHJcbiAqIFRoaXMgZGlyZWN0aXZlIGlzIGludGVuZGVkIHRvIGJlIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCBhbiBjbWF0LXBvcG92ZXIgdGFnLiBJdCBpc1xyXG4gKiByZXNwb25zaWJsZSBmb3IgdG9nZ2xpbmcgdGhlIGRpc3BsYXkgb2YgdGhlIHByb3ZpZGVkIHBvcG92ZXIgaW5zdGFuY2UuXHJcbiAqL1xyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgICBzZWxlY3RvcjogJ1tjbWF0UG9wb3ZlclRyaWdnZXJGb3JdLFtjbWF0UG9wb3ZlclRhcmdldEF0XSxbY21hdFBvcG92ZXJUcmlnZ2VyT25dJyxcclxuICAgIHN0YW5kYWxvbmU6dHJ1ZSxcclxuICAgIGV4cG9ydEFzOiAnY21hdFBvcG92ZXJUcmlnZ2VyJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQ21hdFBvcG92ZXJUcmlnZ2VyRGlyZWN0aXZlIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcclxuICAgIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLWhhc3BvcHVwJykgYXJpYUhhc3BvcHVwID0gdHJ1ZTtcclxuICAgIC8qKiBSZWZlcmVuY2VzIHRoZSBwb3BvdmVyIGluc3RhbmNlIHRoYXQgdGhlIHRyaWdnZXIgaXMgYXNzb2NpYXRlZCB3aXRoLiAqL1xyXG4gICAgQElucHV0KCdjbWF0UG9wb3ZlclRyaWdnZXJGb3InKSBwb3BvdmVyITogQ21hdFBvcG92ZXJQYW5lbDtcclxuXHJcbiAgICAvKiogUmVmZXJlbmNlcyB0aGUgcG9wb3ZlciB0YXJnZXQgaW5zdGFuY2UgdGhhdCB0aGUgdHJpZ2dlciBpcyBhc3NvY2lhdGVkIHdpdGguICovXHJcbiAgICBASW5wdXQoJ2NtYXRQb3BvdmVyVGFyZ2V0QXQnKSB0YXJnZXRFbGVtZW50ITogQ21hdFRhcmdldDtcclxuXHJcbiAgICAvKiogUG9wb3ZlciB0cmlnZ2VyIGV2ZW50ICovXHJcbiAgICBASW5wdXQoJ2NtYXRQb3BvdmVyVHJpZ2dlck9uJykgdHJpZ2dlckV2ZW50ITogQ21hdFBvcG92ZXJUcmlnZ2VyRXZlbnQ7XHJcblxyXG4gICAgLyoqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgYXNzb2NpYXRlZCBwb3BvdmVyIGlzIG9wZW5lZC4gKi9cclxuICAgIEBPdXRwdXQoKSBwb3BvdmVyT3BlbmVkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG5cclxuICAgIC8qKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIGFzc29jaWF0ZWQgcG9wb3ZlciBpcyBjbG9zZWQuICovXHJcbiAgICBAT3V0cHV0KCkgcG9wb3ZlckNsb3NlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuXHJcbiAgICBwb3BvdmVyT3BlbmVkJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgICBwb3BvdmVyQ2xvc2VkJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcblxyXG4gICAgcHJpdmF0ZSBfcG9ydGFsITogVGVtcGxhdGVQb3J0YWw7XHJcbiAgICBwcml2YXRlIF9vdmVybGF5UmVmOiBPdmVybGF5UmVmIHwgbnVsbCA9IG51bGw7XHJcbiAgICBwcml2YXRlIF9wb3BvdmVyT3BlbiA9IGZhbHNlO1xyXG4gICAgcHJpdmF0ZSBfaGFsdCA9IGZhbHNlO1xyXG4gICAgcHJpdmF0ZSBfYmFja2Ryb3BTdWJzY3JpcHRpb24hOiBTdWJzY3JpcHRpb247XHJcbiAgICBwcml2YXRlIF9wb3NpdGlvblN1YnNjcmlwdGlvbiE6IFN1YnNjcmlwdGlvbjtcclxuICAgIHByaXZhdGUgX2RldGFjaG1lbnRzU3Vic2NyaXB0aW9uITogU3Vic2NyaXB0aW9uO1xyXG5cclxuICAgIHByaXZhdGUgX21vdXNlb3ZlclRpbWVyOiBhbnk7XHJcblxyXG4gICAgLy8gdHJhY2tpbmcgaW5wdXQgdHlwZSBpcyBuZWNlc3Nhcnkgc28gaXQncyBwb3NzaWJsZSB0byBvbmx5IGF1dG8tZm9jdXNcclxuICAgIC8vIHRoZSBmaXJzdCBpdGVtIG9mIHRoZSBsaXN0IHdoZW4gdGhlIHBvcG92ZXIgaXMgb3BlbmVkIHZpYSB0aGUga2V5Ym9hcmRcclxuICAgIHByaXZhdGUgX29wZW5lZEJ5TW91c2UgPSBmYWxzZTtcclxuXHJcbiAgICBwcml2YXRlIF9vbkRlc3Ryb3kgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG5cclxuXHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJpdmF0ZSBfb3ZlcmxheTogT3ZlcmxheSxcclxuICAgICAgICBwcml2YXRlIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmLFxyXG4gICAgICAgIHByaXZhdGUgX3ZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsXHJcbiAgICAgICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBfZGlyOiBEaXJlY3Rpb25hbGl0eSxcclxuICAgICAgICBwcml2YXRlIF9jaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWZcclxuICAgICkgeyB9XHJcblxyXG4gICAgLyoqIFdoZXRoZXIgdGhlIHBvcG92ZXIgaXMgb3Blbi4gKi9cclxuICAgIGdldCBwb3BvdmVyT3BlbigpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fcG9wb3Zlck9wZW47XHJcbiAgICB9XHJcbiAgICAvKiogVGhlIHRleHQgZGlyZWN0aW9uIG9mIHRoZSBjb250YWluaW5nIGFwcC4gKi9cclxuICAgIGdldCBkaXIoKTogRGlyZWN0aW9uIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fZGlyICYmIHRoaXMuX2Rpci52YWx1ZSA9PT0gJ3J0bCcgPyAncnRsJyA6ICdsdHInO1xyXG4gICAgfVxyXG5cclxuICAgIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJywgWyckZXZlbnQnXSlcclxuICAgIG9uQ2xpY2soKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMucG9wb3Zlci50cmlnZ2VyRXZlbnQgPT09ICdjbGljaycpIHtcclxuICAgICAgICAgICAgdGhpcy50b2dnbGVQb3BvdmVyKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIEBIb3N0TGlzdGVuZXIoJ21vdXNlZW50ZXInLCBbJyRldmVudCddKVxyXG4gICAgb25Nb3VzZUVudGVyKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX2hhbHQgPSBmYWxzZTtcclxuICAgICAgICBpZiAodGhpcy5wb3BvdmVyLnRyaWdnZXJFdmVudCA9PT0gJ2hvdmVyJykge1xyXG4gICAgICAgICAgICB0aGlzLl9tb3VzZW92ZXJUaW1lciA9IHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5vcGVuUG9wb3ZlcigpO1xyXG4gICAgICAgICAgICB9LCB0aGlzLnBvcG92ZXIuZW50ZXJEZWxheSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIEBIb3N0TGlzdGVuZXIoJ21vdXNlbGVhdmUnLCBbJyRldmVudCddKVxyXG4gICAgb25Nb3VzZUxlYXZlKCk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLnBvcG92ZXIudHJpZ2dlckV2ZW50ID09PSAnaG92ZXInKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLl9tb3VzZW92ZXJUaW1lcikge1xyXG4gICAgICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuX21vdXNlb3ZlclRpbWVyKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuX21vdXNlb3ZlclRpbWVyID0gbnVsbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAodGhpcy5fcG9wb3Zlck9wZW4pIHtcclxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5wb3BvdmVyLmNsb3NlRGlzYWJsZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jbG9zZVBvcG92ZXIoKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9LCB0aGlzLnBvcG92ZXIubGVhdmVEZWxheSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9oYWx0ID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIEBIb3N0TGlzdGVuZXIoJ21vdXNlZG93bicsIFsnJGV2ZW50J10pXHJcbiAgICBoYW5kbGVNb3VzZWRvd24oZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcclxuICAgICAgICBpZiAoZXZlbnQgJiYgIWlzRmFrZU1vdXNlZG93bkZyb21TY3JlZW5SZWFkZXIoZXZlbnQpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX29wZW5lZEJ5TW91c2UgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9jaGVja1BvcG92ZXIoKTtcclxuICAgICAgICB0aGlzLl9zZXRDdXJyZW50Q29uZmlnKCk7XHJcbiAgICAgICAgdGhpcy5wb3BvdmVyLmNsb3NlZC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5jbG9zZVBvcG92ZXIoKSk7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5kZXN0cm95UG9wb3ZlcigpO1xyXG4gICAgfVxyXG5cclxuXHJcblxyXG4gICAgLyoqIFRvZ2dsZXMgdGhlIHBvcG92ZXIgYmV0d2VlbiB0aGUgb3BlbiBhbmQgY2xvc2VkIHN0YXRlcy4gKi9cclxuICAgIHRvZ2dsZVBvcG92ZXIoKTogdm9pZCB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3BvcG92ZXJPcGVuID8gdGhpcy5jbG9zZVBvcG92ZXIoKSA6IHRoaXMub3BlblBvcG92ZXIoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKiogT3BlbnMgdGhlIHBvcG92ZXIuICovXHJcbiAgICBvcGVuUG9wb3ZlcigpOiB2b2lkIHtcclxuICAgICAgICBpZiAoIXRoaXMuX3BvcG92ZXJPcGVuICYmICF0aGlzLl9oYWx0KSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2NyZWF0ZU92ZXJsYXkoKS5hdHRhY2godGhpcy5fcG9ydGFsKTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuX3N1YnNjcmliZVRvQmFja2Ryb3AoKTtcclxuICAgICAgICAgICAgdGhpcy5fc3Vic2NyaWJlVG9EZXRhY2htZW50cygpO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5faW5pdFBvcG92ZXIoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIENsb3NlcyB0aGUgcG9wb3Zlci4gKi9cclxuICAgIGNsb3NlUG9wb3ZlcigpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5fb3ZlcmxheVJlZikge1xyXG4gICAgICAgICAgICB0aGlzLl9vdmVybGF5UmVmLmRldGFjaCgpO1xyXG4gICAgICAgICAgICB0aGlzLl9yZXNldFBvcG92ZXIoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuZGVzdHJveVBvcG92ZXIoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKiogUmVtb3ZlcyB0aGUgcG9wb3ZlciBmcm9tIHRoZSBET00uICovXHJcbiAgICBkZXN0cm95UG9wb3ZlcigpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5fbW91c2VvdmVyVGltZXIpIHtcclxuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuX21vdXNlb3ZlclRpbWVyKTtcclxuICAgICAgICAgICAgdGhpcy5fbW91c2VvdmVyVGltZXIgPSBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5fb3ZlcmxheVJlZikge1xyXG4gICAgICAgICAgICB0aGlzLl9vdmVybGF5UmVmLmRpc3Bvc2UoKTtcclxuICAgICAgICAgICAgdGhpcy5fb3ZlcmxheVJlZiA9IG51bGw7XHJcbiAgICAgICAgICAgIHRoaXMuX2NsZWFuVXBTdWJzY3JpcHRpb25zKCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLl9vbkRlc3Ryb3kubmV4dCgpO1xyXG4gICAgICAgIHRoaXMuX29uRGVzdHJveS5jb21wbGV0ZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBGb2N1c2VzIHRoZSBwb3BvdmVyIHRyaWdnZXIuICovXHJcbiAgICBmb2N1cygpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoaXMgbWV0aG9kIGVuc3VyZXMgdGhhdCB0aGUgcG9wb3ZlciBjbG9zZXMgd2hlbiB0aGUgb3ZlcmxheSBiYWNrZHJvcCBpcyBjbGlja2VkLlxyXG4gICAgICogV2UgZG8gbm90IHVzZSBmaXJzdCgpIGhlcmUgYmVjYXVzZSBkb2luZyBzbyB3b3VsZCBub3QgY2F0Y2ggY2xpY2tzIGZyb20gd2l0aGluXHJcbiAgICAgKiB0aGUgcG9wb3ZlciwgYW5kIGl0IHdvdWxkIGZhaWwgdG8gdW5zdWJzY3JpYmUgcHJvcGVybHkuIEluc3RlYWQsIHdlIHVuc3Vic2NyaWJlXHJcbiAgICAgKiBleHBsaWNpdGx5IHdoZW4gdGhlIHBvcG92ZXIgaXMgY2xvc2VkIG9yIGRlc3Ryb3llZC5cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBfc3Vic2NyaWJlVG9CYWNrZHJvcCgpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5fb3ZlcmxheVJlZikge1xyXG4gICAgICAgICAgICAvKiogT25seSBzdWJzY3JpYmUgdG8gYmFja2Ryb3AgaWYgdHJpZ2dlciBldmVudCBpcyBjbGljayAqL1xyXG4gICAgICAgICAgICBpZiAodGhpcy50cmlnZ2VyRXZlbnQgPT09ICdjbGljaycgJiYgdGhpcy5wb3BvdmVyLmNsb3NlT25CYWNrZHJvcENsaWNrID09PSB0cnVlKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9vdmVybGF5UmVmXHJcbiAgICAgICAgICAgICAgICAgICAgLmJhY2tkcm9wQ2xpY2soKVxyXG4gICAgICAgICAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLnBvcG92ZXJDbG9zZWQkKSwgdGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSkpXHJcbiAgICAgICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucG9wb3Zlci5lbWl0Q2xvc2VFdmVudCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgX3N1YnNjcmliZVRvRGV0YWNobWVudHMoKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMuX292ZXJsYXlSZWYpIHtcclxuICAgICAgICAgICAgdGhpcy5fb3ZlcmxheVJlZlxyXG4gICAgICAgICAgICAgICAgLmRldGFjaG1lbnRzKClcclxuICAgICAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLnBvcG92ZXJDbG9zZWQkKSwgdGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSkpXHJcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9zZXRQb3BvdmVyQ2xvc2VkKCk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGlzIG1ldGhvZCBzZXRzIHRoZSBwb3BvdmVyIHN0YXRlIHRvIG9wZW4gYW5kIGZvY3VzZXMgdGhlIGZpcnN0IGl0ZW0gaWZcclxuICAgICAqIHRoZSBwb3BvdmVyIHdhcyBvcGVuZWQgdmlhIHRoZSBrZXlib2FyZC5cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBfaW5pdFBvcG92ZXIoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fc2V0UG9wb3Zlck9wZW5lZCgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhpcyBtZXRob2QgcmVzZXRzIHRoZSBwb3BvdmVyIHdoZW4gaXQncyBjbG9zZWQsIG1vc3QgaW1wb3J0YW50bHkgcmVzdG9yaW5nXHJcbiAgICAgKiBmb2N1cyB0byB0aGUgcG9wb3ZlciB0cmlnZ2VyIGlmIHRoZSBwb3BvdmVyIHdhcyBvcGVuZWQgdmlhIHRoZSBrZXlib2FyZC5cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBfcmVzZXRQb3BvdmVyKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX3NldFBvcG92ZXJDbG9zZWQoKTtcclxuXHJcbiAgICAgICAgLy8gRm9jdXMgb25seSBuZWVkcyB0byBiZSByZXNldCB0byB0aGUgaG9zdCBlbGVtZW50IGlmIHRoZSBwb3BvdmVyIHdhcyBvcGVuZWRcclxuICAgICAgICAvLyBieSB0aGUga2V5Ym9hcmQgYW5kIG1hbnVhbGx5IHNoaWZ0ZWQgdG8gdGhlIGZpcnN0IHBvcG92ZXIgaXRlbS5cclxuICAgICAgICBpZiAoIXRoaXMuX29wZW5lZEJ5TW91c2UpIHtcclxuICAgICAgICAgICAgdGhpcy5mb2N1cygpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLl9vcGVuZWRCeU1vdXNlID0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIHNldCBzdGF0ZSByYXRoZXIgdGhhbiB0b2dnbGUgdG8gc3VwcG9ydCB0cmlnZ2VycyBzaGFyaW5nIGEgcG9wb3ZlciAqL1xyXG4gICAgcHJpdmF0ZSBfc2V0UG9wb3Zlck9wZW5lZCgpOiB2b2lkIHtcclxuICAgICAgICBpZiAoIXRoaXMuX3BvcG92ZXJPcGVuKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3BvcG92ZXJPcGVuID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMucG9wb3Zlck9wZW5lZCQubmV4dCgpO1xyXG4gICAgICAgICAgICB0aGlzLnBvcG92ZXJPcGVuZWQuZW1pdCgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKiogc2V0IHN0YXRlIHJhdGhlciB0aGFuIHRvZ2dsZSB0byBzdXBwb3J0IHRyaWdnZXJzIHNoYXJpbmcgYSBwb3BvdmVyICovXHJcbiAgICBwcml2YXRlIF9zZXRQb3BvdmVyQ2xvc2VkKCk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLl9wb3BvdmVyT3Blbikge1xyXG4gICAgICAgICAgICB0aGlzLl9wb3BvdmVyT3BlbiA9IGZhbHNlO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5wb3BvdmVyQ2xvc2VkJC5uZXh0KCk7XHJcbiAgICAgICAgICAgIHRoaXMucG9wb3ZlckNsb3NlZC5lbWl0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogIFRoaXMgbWV0aG9kIGNoZWNrcyB0aGF0IGEgdmFsaWQgaW5zdGFuY2Ugb2YgTWRQb3BvdmVyIGhhcyBiZWVuIHBhc3NlZCBpbnRvXHJcbiAgICAgKiAgbWRQb3BvdmVyVHJpZ2dlckZvci4gSWYgbm90LCBhbiBleGNlcHRpb24gaXMgdGhyb3duLlxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF9jaGVja1BvcG92ZXIoKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKCF0aGlzLnBvcG92ZXIpIHtcclxuICAgICAgICAgICAgdGhyb3dDbWF0UG9wb3Zlck1pc3NpbmdFcnJvcigpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqICBUaGlzIG1ldGhvZCBjcmVhdGVzIHRoZSBvdmVybGF5IGZyb20gdGhlIHByb3ZpZGVkIHBvcG92ZXIncyB0ZW1wbGF0ZSBhbmQgc2F2ZXMgaXRzXHJcbiAgICAgKiAgT3ZlcmxheVJlZiBzbyB0aGF0IGl0IGNhbiBiZSBhdHRhY2hlZCB0byB0aGUgRE9NIHdoZW4gb3BlblBvcG92ZXIgaXMgY2FsbGVkLlxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF9jcmVhdGVPdmVybGF5KCk6IE92ZXJsYXlSZWYge1xyXG4gICAgICAgIGlmICghdGhpcy5fb3ZlcmxheVJlZikge1xyXG4gICAgICAgICAgICB0aGlzLl9wb3J0YWwgPSBuZXcgVGVtcGxhdGVQb3J0YWwodGhpcy5wb3BvdmVyLnRlbXBsYXRlUmVmLCB0aGlzLl92aWV3Q29udGFpbmVyUmVmKTtcclxuICAgICAgICAgICAgY29uc3QgY29uZmlnID0gdGhpcy5fZ2V0T3ZlcmxheUNvbmZpZygpO1xyXG4gICAgICAgICAgICB0aGlzLl9zdWJzY3JpYmVUb1Bvc2l0aW9ucyhjb25maWcucG9zaXRpb25TdHJhdGVneSBhcyBGbGV4aWJsZUNvbm5lY3RlZFBvc2l0aW9uU3RyYXRlZ3kpO1xyXG4gICAgICAgICAgICB0aGlzLl9vdmVybGF5UmVmID0gdGhpcy5fb3ZlcmxheS5jcmVhdGUoY29uZmlnKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLl9vdmVybGF5UmVmO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhpcyBtZXRob2QgYnVpbGRzIHRoZSBjb25maWd1cmF0aW9uIG9iamVjdCBuZWVkZWQgdG8gY3JlYXRlIHRoZSBvdmVybGF5LCB0aGUgT3ZlcmxheUNvbmZpZy5cclxuICAgICAqXHJcbiAgICAgKiBAcmV0dXJucyBPdmVybGF5Q29uZmlnXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgX2dldE92ZXJsYXlDb25maWcoKTogT3ZlcmxheUNvbmZpZyB7XHJcbiAgICAgICAgY29uc3Qgb3ZlcmxheVN0YXRlID0gbmV3IE92ZXJsYXlDb25maWcoKTtcclxuICAgICAgICBvdmVybGF5U3RhdGUucG9zaXRpb25TdHJhdGVneSA9IHRoaXMuX2dldFBvc2l0aW9uKCk7XHJcblxyXG4gICAgICAgIC8qKiBEaXNwbGF5IG92ZXJsYXkgYmFja2Ryb3AgaWYgdHJpZ2dlciBldmVudCBpcyBjbGljayAqL1xyXG4gICAgICAgIGlmICh0aGlzLnRyaWdnZXJFdmVudCA9PT0gJ2NsaWNrJykge1xyXG4gICAgICAgICAgICBvdmVybGF5U3RhdGUuaGFzQmFja2Ryb3AgPSB0cnVlO1xyXG4gICAgICAgICAgICBvdmVybGF5U3RhdGUuYmFja2Ryb3BDbGFzcyA9ICdjZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcCc7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBvdmVybGF5U3RhdGUuZGlyZWN0aW9uID0gdGhpcy5fZGlyO1xyXG4gICAgICAgIG92ZXJsYXlTdGF0ZS5zY3JvbGxTdHJhdGVneSA9IHRoaXMuX2dldE92ZXJsYXlTY3JvbGxTdHJhdGVneSh0aGlzLnBvcG92ZXIuc2Nyb2xsU3RyYXRlZ3kpO1xyXG5cclxuICAgICAgICByZXR1cm4gb3ZlcmxheVN0YXRlO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhpcyBtZXRob2QgcmV0dXJucyB0aGUgc2Nyb2xsIHN0cmF0ZWd5IHVzZWQgYnkgdGhlIGNkay9vdmVybGF5LlxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF9nZXRPdmVybGF5U2Nyb2xsU3RyYXRlZ3koc3RyYXRlZ3k6IENtYXRQb3BvdmVyU2Nyb2xsU3RyYXRlZ3kpOiBTY3JvbGxTdHJhdGVneSB7XHJcbiAgICAgICAgc3dpdGNoIChzdHJhdGVneSkge1xyXG4gICAgICAgICAgICBjYXNlICdub29wJzpcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9vdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMubm9vcCgpO1xyXG4gICAgICAgICAgICBjYXNlICdjbG9zZSc6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fb3ZlcmxheS5zY3JvbGxTdHJhdGVnaWVzLmNsb3NlKCk7XHJcbiAgICAgICAgICAgIGNhc2UgJ2Jsb2NrJzpcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9vdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMuYmxvY2soKTtcclxuICAgICAgICAgICAgY2FzZSAncmVwb3NpdGlvbic6XHJcbiAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fb3ZlcmxheS5zY3JvbGxTdHJhdGVnaWVzLnJlcG9zaXRpb24oKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBMaXN0ZW5zIHRvIGNoYW5nZXMgaW4gdGhlIHBvc2l0aW9uIG9mIHRoZSBvdmVybGF5IGFuZCBzZXRzIHRoZSBjb3JyZWN0IGNsYXNzZXNcclxuICAgICAqIG9uIHRoZSBwb3BvdmVyIGJhc2VkIG9uIHRoZSBuZXcgcG9zaXRpb24uIFRoaXMgZW5zdXJlcyB0aGUgYW5pbWF0aW9uIG9yaWdpbiBpcyBhbHdheXNcclxuICAgICAqIGNvcnJlY3QsIGV2ZW4gaWYgYSBmYWxsYmFjayBwb3NpdGlvbiBpcyB1c2VkIGZvciB0aGUgb3ZlcmxheS5cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBfc3Vic2NyaWJlVG9Qb3NpdGlvbnMocG9zaXRpb246IEZsZXhpYmxlQ29ubmVjdGVkUG9zaXRpb25TdHJhdGVneSk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX3Bvc2l0aW9uU3Vic2NyaXB0aW9uID0gcG9zaXRpb24ucG9zaXRpb25DaGFuZ2VzLnN1YnNjcmliZSgoY2hhbmdlKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHBvc1ggPVxyXG4gICAgICAgICAgICAgICAgY2hhbmdlLmNvbm5lY3Rpb25QYWlyLm92ZXJsYXlYID09PSAnc3RhcnQnXHJcbiAgICAgICAgICAgICAgICAgICAgPyAnYWZ0ZXInXHJcbiAgICAgICAgICAgICAgICAgICAgOiBjaGFuZ2UuY29ubmVjdGlvblBhaXIub3ZlcmxheVggPT09ICdlbmQnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID8gJ2JlZm9yZSdcclxuICAgICAgICAgICAgICAgICAgICAgICAgOiAnY2VudGVyJztcclxuICAgICAgICAgICAgY29uc3QgcG9zWSA9XHJcbiAgICAgICAgICAgICAgICBjaGFuZ2UuY29ubmVjdGlvblBhaXIub3ZlcmxheVkgPT09ICd0b3AnXHJcbiAgICAgICAgICAgICAgICAgICAgPyAnYmVsb3cnXHJcbiAgICAgICAgICAgICAgICAgICAgOiBjaGFuZ2UuY29ubmVjdGlvblBhaXIub3ZlcmxheVkgPT09ICdib3R0b20nXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID8gJ2Fib3ZlJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICA6ICdjZW50ZXInO1xyXG5cclxuICAgICAgICAgICAgY29uc3QgcG9zOiBDbWF0UG9wb3ZlclBvc2l0aW9uID1cclxuICAgICAgICAgICAgICAgIHRoaXMucG9wb3Zlci5wb3NpdGlvblswXSA9PT0gJ2Fib3ZlJyB8fCB0aGlzLnBvcG92ZXIucG9zaXRpb25bMF0gPT09ICdiZWxvdydcclxuICAgICAgICAgICAgICAgICAgICA/IFtwb3NZIGFzIENtYXRQb3BvdmVyUG9zaXRpb25TdGFydCwgcG9zWF1cclxuICAgICAgICAgICAgICAgICAgICA6IFtwb3NYIGFzIENtYXRQb3BvdmVyUG9zaXRpb25TdGFydCwgcG9zWV07XHJcblxyXG4gICAgICAgICAgICAvLyByZXF1aXJlZCBmb3IgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXHJcbiAgICAgICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5wb3BvdmVyLnNldEN1cnJlbnRTdHlsZXMocG9zKTtcclxuICAgICAgICAgICAgdGhpcy5wb3BvdmVyLnNldFBvc2l0aW9uQ2xhc3Nlcyhwb3MpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhpcyBtZXRob2QgYnVpbGRzIHRoZSBwb3NpdGlvbiBzdHJhdGVneSBmb3IgdGhlIG92ZXJsYXksIHNvIHRoZSBwb3BvdmVyIGlzIHByb3Blcmx5IGNvbm5lY3RlZFxyXG4gICAgICogdG8gdGhlIHRyaWdnZXIuXHJcbiAgICAgKlxyXG4gICAgICogQHJldHVybnMgQ29ubmVjdGVkUG9zaXRpb25TdHJhdGVneVxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF9nZXRQb3NpdGlvbigpOiBGbGV4aWJsZUNvbm5lY3RlZFBvc2l0aW9uU3RyYXRlZ3kge1xyXG4gICAgICAgIGNvbnN0IFtvcmlnaW5YLCBvcmlnaW4ybmRYLCBvcmlnaW4zcmRYXTogSG9yaXpvbnRhbENvbm5lY3Rpb25Qb3NbXSA9XHJcbiAgICAgICAgICAgIHRoaXMucG9wb3Zlci5wb3NpdGlvblswXSA9PT0gJ2JlZm9yZScgfHwgdGhpcy5wb3BvdmVyLnBvc2l0aW9uWzFdID09PSAnYWZ0ZXInXHJcbiAgICAgICAgICAgICAgICA/IFsnc3RhcnQnLCAnY2VudGVyJywgJ2VuZCddXHJcbiAgICAgICAgICAgICAgICA6IHRoaXMucG9wb3Zlci5wb3NpdGlvblswXSA9PT0gJ2FmdGVyJyB8fCB0aGlzLnBvcG92ZXIucG9zaXRpb25bMV0gPT09ICdiZWZvcmUnXHJcbiAgICAgICAgICAgICAgICAgICAgPyBbJ2VuZCcsICdjZW50ZXInLCAnc3RhcnQnXVxyXG4gICAgICAgICAgICAgICAgICAgIDogWydjZW50ZXInLCAnc3RhcnQnLCAnZW5kJ107XHJcblxyXG4gICAgICAgIGNvbnN0IFtvcmlnaW5ZLCBvcmlnaW4ybmRZLCBvcmlnaW4zcmRZXTogVmVydGljYWxDb25uZWN0aW9uUG9zW10gPVxyXG4gICAgICAgICAgICB0aGlzLnBvcG92ZXIucG9zaXRpb25bMF0gPT09ICdhYm92ZScgfHwgdGhpcy5wb3BvdmVyLnBvc2l0aW9uWzFdID09PSAnYmVsb3cnXHJcbiAgICAgICAgICAgICAgICA/IFsndG9wJywgJ2NlbnRlcicsICdib3R0b20nXVxyXG4gICAgICAgICAgICAgICAgOiB0aGlzLnBvcG92ZXIucG9zaXRpb25bMF0gPT09ICdiZWxvdycgfHwgdGhpcy5wb3BvdmVyLnBvc2l0aW9uWzFdID09PSAnYWJvdmUnXHJcbiAgICAgICAgICAgICAgICAgICAgPyBbJ2JvdHRvbScsICdjZW50ZXInLCAndG9wJ11cclxuICAgICAgICAgICAgICAgICAgICA6IFsnY2VudGVyJywgJ3RvcCcsICdib3R0b20nXTtcclxuXHJcbiAgICAgICAgY29uc3QgW292ZXJsYXlYLCBvdmVybGF5RmFsbGJhY2tYXTogSG9yaXpvbnRhbENvbm5lY3Rpb25Qb3NbXSA9XHJcbiAgICAgICAgICAgIHRoaXMucG9wb3Zlci5wb3NpdGlvblswXSA9PT0gJ2JlbG93JyB8fCB0aGlzLnBvcG92ZXIucG9zaXRpb25bMF0gPT09ICdhYm92ZSdcclxuICAgICAgICAgICAgICAgID8gW29yaWdpblgsIG9yaWdpblhdXHJcbiAgICAgICAgICAgICAgICA6IHRoaXMucG9wb3Zlci5wb3NpdGlvblswXSA9PT0gJ2JlZm9yZSdcclxuICAgICAgICAgICAgICAgICAgICA/IFsnZW5kJywgJ3N0YXJ0J11cclxuICAgICAgICAgICAgICAgICAgICA6IFsnc3RhcnQnLCAnZW5kJ107XHJcblxyXG4gICAgICAgIGNvbnN0IFtvdmVybGF5WSwgb3ZlcmxheUZhbGxiYWNrWV06IFZlcnRpY2FsQ29ubmVjdGlvblBvc1tdID1cclxuICAgICAgICAgICAgdGhpcy5wb3BvdmVyLnBvc2l0aW9uWzBdID09PSAnYmVmb3JlJyB8fCB0aGlzLnBvcG92ZXIucG9zaXRpb25bMF0gPT09ICdhZnRlcidcclxuICAgICAgICAgICAgICAgID8gW29yaWdpblksIG9yaWdpblldXHJcbiAgICAgICAgICAgICAgICA6IHRoaXMucG9wb3Zlci5wb3NpdGlvblswXSA9PT0gJ2JlbG93J1xyXG4gICAgICAgICAgICAgICAgICAgID8gWyd0b3AnLCAnYm90dG9tJ11cclxuICAgICAgICAgICAgICAgICAgICA6IFsnYm90dG9tJywgJ3RvcCddO1xyXG5cclxuICAgICAgICBjb25zdCBvcmlnaW5GYWxsYmFja1ggPSBvdmVybGF5WDtcclxuICAgICAgICBjb25zdCBvcmlnaW5GYWxsYmFja1kgPSBvdmVybGF5WTtcclxuXHJcbiAgICAgICAgY29uc3Qgb2Zmc2V0WCA9XHJcbiAgICAgICAgICAgIHRoaXMucG9wb3Zlci54T2Zmc2V0ICYmICFpc05hTihOdW1iZXIodGhpcy5wb3BvdmVyLnhPZmZzZXQpKVxyXG4gICAgICAgICAgICAgICAgPyBOdW1iZXIodGhpcy5kaXIgPT09ICdsdHInID8gdGhpcy5wb3BvdmVyLnhPZmZzZXQgOiAtdGhpcy5wb3BvdmVyLnhPZmZzZXQpXHJcbiAgICAgICAgICAgICAgICA6IDA7XHJcbiAgICAgICAgY29uc3Qgb2Zmc2V0WSA9XHJcbiAgICAgICAgICAgIHRoaXMucG9wb3Zlci55T2Zmc2V0ICYmICFpc05hTihOdW1iZXIodGhpcy5wb3BvdmVyLnlPZmZzZXQpKVxyXG4gICAgICAgICAgICAgICAgPyBOdW1iZXIodGhpcy5wb3BvdmVyLnlPZmZzZXQpXHJcbiAgICAgICAgICAgICAgICA6IDA7XHJcblxyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIEZvciBvdmVycmlkaW5nIHBvc2l0aW9uIGVsZW1lbnQsIHdoZW4gYGNtYXRQb3BvdmVyVGFyZ2V0QXRgIGhhcyBhIHZhbGlkIGVsZW1lbnQgcmVmZXJlbmNlLlxyXG4gICAgICAgICAqIFVzZWZ1bCBmb3Igc3RpY2tpbmcgcG9wb3ZlciB0byBwYXJlbnQgZWxlbWVudCBhbmQgb2Zmc2V0dGluZyBhcnJvdyB0byB0cmlnZ2VyIGVsZW1lbnQuXHJcbiAgICAgICAgICogSWYgdW5kZWZpbmVkIGRlZmF1bHRzIHRvIHRoZSB0cmlnZ2VyIGVsZW1lbnQgcmVmZXJlbmNlLlxyXG4gICAgICAgICAqL1xyXG4gICAgICAgIGxldCBlbGVtZW50ID0gdGhpcy5fZWxlbWVudFJlZjtcclxuICAgICAgICBpZiAodHlwZW9mIHRoaXMudGFyZ2V0RWxlbWVudCAhPT0gJ3VuZGVmaW5lZCcpIHtcclxuICAgICAgICAgICAgdGhpcy5wb3BvdmVyLmNvbnRhaW5lclBvc2l0aW9uaW5nID0gdHJ1ZTtcclxuICAgICAgICAgICAgZWxlbWVudCA9IHRoaXMudGFyZ2V0RWxlbWVudC5fZWxlbWVudFJlZjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCBwb3NpdGlvbnM6IENvbm5lY3RlZFBvc2l0aW9uW10gPSBbeyBvcmlnaW5YLCBvcmlnaW5ZLCBvdmVybGF5WCwgb3ZlcmxheVkgfV07XHJcblxyXG4gICAgICAgIGlmICh0aGlzLnBvcG92ZXIucG9zaXRpb25bMF0gPT09ICdhYm92ZScgfHwgdGhpcy5wb3BvdmVyLnBvc2l0aW9uWzBdID09PSAnYmVsb3cnKSB7XHJcbiAgICAgICAgICAgIHBvc2l0aW9ucyA9IFtcclxuICAgICAgICAgICAgICAgIHsgb3JpZ2luWCwgb3JpZ2luWSwgb3ZlcmxheVgsIG92ZXJsYXlZLCBvZmZzZXRZIH0sXHJcbiAgICAgICAgICAgICAgICB7IG9yaWdpblg6IG9yaWdpbjJuZFgsIG9yaWdpblksIG92ZXJsYXlYOiBvcmlnaW4ybmRYLCBvdmVybGF5WSwgb2Zmc2V0WSB9LFxyXG4gICAgICAgICAgICAgICAgeyBvcmlnaW5YOiBvcmlnaW4zcmRYLCBvcmlnaW5ZLCBvdmVybGF5WDogb3JpZ2luM3JkWCwgb3ZlcmxheVksIG9mZnNldFkgfSxcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBvcmlnaW5YLFxyXG4gICAgICAgICAgICAgICAgICAgIG9yaWdpblk6IG9yaWdpbkZhbGxiYWNrWSxcclxuICAgICAgICAgICAgICAgICAgICBvdmVybGF5WCxcclxuICAgICAgICAgICAgICAgICAgICBvdmVybGF5WTogb3ZlcmxheUZhbGxiYWNrWSxcclxuICAgICAgICAgICAgICAgICAgICBvZmZzZXRZOiAtb2Zmc2V0WSxcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgb3JpZ2luWDogb3JpZ2luMm5kWCxcclxuICAgICAgICAgICAgICAgICAgICBvcmlnaW5ZOiBvcmlnaW5GYWxsYmFja1ksXHJcbiAgICAgICAgICAgICAgICAgICAgb3ZlcmxheVg6IG9yaWdpbjJuZFgsXHJcbiAgICAgICAgICAgICAgICAgICAgb3ZlcmxheVk6IG92ZXJsYXlGYWxsYmFja1ksXHJcbiAgICAgICAgICAgICAgICAgICAgb2Zmc2V0WTogLW9mZnNldFksXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIG9yaWdpblg6IG9yaWdpbjNyZFgsXHJcbiAgICAgICAgICAgICAgICAgICAgb3JpZ2luWTogb3JpZ2luRmFsbGJhY2tZLFxyXG4gICAgICAgICAgICAgICAgICAgIG92ZXJsYXlYOiBvcmlnaW4zcmRYLFxyXG4gICAgICAgICAgICAgICAgICAgIG92ZXJsYXlZOiBvdmVybGF5RmFsbGJhY2tZLFxyXG4gICAgICAgICAgICAgICAgICAgIG9mZnNldFk6IC1vZmZzZXRZLFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgXTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLnBvcG92ZXIucG9zaXRpb25bMF0gPT09ICdiZWZvcmUnIHx8IHRoaXMucG9wb3Zlci5wb3NpdGlvblswXSA9PT0gJ2FmdGVyJykge1xyXG4gICAgICAgICAgICBwb3NpdGlvbnMgPSBbXHJcbiAgICAgICAgICAgICAgICB7IG9yaWdpblgsIG9yaWdpblksIG92ZXJsYXlYLCBvdmVybGF5WSwgb2Zmc2V0WCB9LFxyXG4gICAgICAgICAgICAgICAgeyBvcmlnaW5YLCBvcmlnaW5ZOiBvcmlnaW4ybmRZLCBvdmVybGF5WCwgb3ZlcmxheVk6IG9yaWdpbjJuZFksIG9mZnNldFggfSxcclxuICAgICAgICAgICAgICAgIHsgb3JpZ2luWCwgb3JpZ2luWTogb3JpZ2luM3JkWSwgb3ZlcmxheVgsIG92ZXJsYXlZOiBvcmlnaW4zcmRZLCBvZmZzZXRYIH0sXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgb3JpZ2luWDogb3JpZ2luRmFsbGJhY2tYLFxyXG4gICAgICAgICAgICAgICAgICAgIG9yaWdpblksXHJcbiAgICAgICAgICAgICAgICAgICAgb3ZlcmxheVg6IG92ZXJsYXlGYWxsYmFja1gsXHJcbiAgICAgICAgICAgICAgICAgICAgb3ZlcmxheVksXHJcbiAgICAgICAgICAgICAgICAgICAgb2Zmc2V0WDogLW9mZnNldFgsXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIG9yaWdpblg6IG9yaWdpbkZhbGxiYWNrWCxcclxuICAgICAgICAgICAgICAgICAgICBvcmlnaW5ZOiBvcmlnaW4ybmRZLFxyXG4gICAgICAgICAgICAgICAgICAgIG92ZXJsYXlYOiBvdmVybGF5RmFsbGJhY2tYLFxyXG4gICAgICAgICAgICAgICAgICAgIG92ZXJsYXlZOiBvcmlnaW4ybmRZLFxyXG4gICAgICAgICAgICAgICAgICAgIG9mZnNldFg6IC1vZmZzZXRYLFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBvcmlnaW5YOiBvcmlnaW5GYWxsYmFja1gsXHJcbiAgICAgICAgICAgICAgICAgICAgb3JpZ2luWTogb3JpZ2luM3JkWSxcclxuICAgICAgICAgICAgICAgICAgICBvdmVybGF5WDogb3ZlcmxheUZhbGxiYWNrWCxcclxuICAgICAgICAgICAgICAgICAgICBvdmVybGF5WTogb3JpZ2luM3JkWSxcclxuICAgICAgICAgICAgICAgICAgICBvZmZzZXRYOiAtb2Zmc2V0WCxcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIF07XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5fb3ZlcmxheVxyXG4gICAgICAgICAgICAucG9zaXRpb24oKVxyXG4gICAgICAgICAgICAuZmxleGlibGVDb25uZWN0ZWRUbyhlbGVtZW50KVxyXG4gICAgICAgICAgICAud2l0aExvY2tlZFBvc2l0aW9uKClcclxuICAgICAgICAgICAgLndpdGhQb3NpdGlvbnMocG9zaXRpb25zKVxyXG4gICAgICAgICAgICAud2l0aERlZmF1bHRPZmZzZXRYKG9mZnNldFgpXHJcbiAgICAgICAgICAgIC53aXRoRGVmYXVsdE9mZnNldFkob2Zmc2V0WSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBfY2xlYW5VcFN1YnNjcmlwdGlvbnMoKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMuX2JhY2tkcm9wU3Vic2NyaXB0aW9uKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2JhY2tkcm9wU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLl9wb3NpdGlvblN1YnNjcmlwdGlvbikge1xyXG4gICAgICAgICAgICB0aGlzLl9wb3NpdGlvblN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5fZGV0YWNobWVudHNTdWJzY3JpcHRpb24pIHtcclxuICAgICAgICAgICAgdGhpcy5fZGV0YWNobWVudHNTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBwcml2YXRlIF9zZXRDdXJyZW50Q29uZmlnKCk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLnRyaWdnZXJFdmVudCkge1xyXG4gICAgICAgICAgICB0aGlzLnBvcG92ZXIudHJpZ2dlckV2ZW50ID0gdGhpcy50cmlnZ2VyRXZlbnQ7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLnBvcG92ZXIuc2V0Q3VycmVudFN0eWxlcygpO1xyXG4gICAgfVxyXG5cclxufVxyXG4iXX0=
@@ -288,10 +288,10 @@ export class CmatPopoverComponent {
288
288
  this.classList['cmat-popover-below-center'] = pos[0] === 'below' && pos[1] === 'center';
289
289
  this.classList['cmat-popover-below-after'] = pos[0] === 'below' && pos[1] === 'after';
290
290
  }
291
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: CmatPopoverComponent, deps: [{ token: i1.Directionality, optional: true }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
292
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.1", type: CmatPopoverComponent, isStandalone: true, selector: "cmat-popover", inputs: { popoverPanelStyles: "popoverPanelStyles", popoverArrowStyles: "popoverArrowStyles", popoverContentStyles: "popoverContentStyles", position: "position", triggerEvent: "triggerEvent", scrollStrategy: "scrollStrategy", enterDelay: "enterDelay", leaveDelay: "leaveDelay", xOffset: "xOffset", yOffset: "yOffset", arrowOffsetX: "arrowOffsetX", arrowOffsetY: "arrowOffsetY", arrowWidth: "arrowWidth", arrowHeight: "arrowHeight", closeOnPanelClick: "closeOnPanelClick", closeOnBackdropClick: "closeOnBackdropClick", disableAnimation: "disableAnimation", focusTrapEnabled: "focusTrapEnabled", focusTrapAutoCaptureEnabled: "focusTrapAutoCaptureEnabled", panelClass: "panelClass" }, outputs: { closed: "closed" }, host: { properties: { "attr.role": "this.role" } }, viewQueries: [{ propertyName: "templateRef", first: true, predicate: TemplateRef, descendants: true }], exportAs: ["cmatPopover"], ngImport: i0, template: "<ng-template>\r\n <div class=\"cmat-popover-panel shadow\" role=\"dialog\" [ngClass]=\"classList\" [ngStyle]=\"popoverPanelStyles\"\r\n [@.disabled]=\"disableAnimation\" [@transform]=\"'enter'\" (keydown)=\"handleKeydown($event)\" (click)=\"onClick()\" (focus)=\"onFocus()\"\r\n (mouseover)=\"onMouseOver()\" (mouseleave)=\"onMouseLeave()\">\r\n <div class=\"cmat-popover-direction-arrow\" [ngStyle]=\"popoverArrowStyles\"></div>\r\n <div class=\"cmat-popover-content\" [ngStyle]=\"popoverContentStyles\" [cdkTrapFocus]=\"focusTrapEnabled\"\r\n [cdkTrapFocusAutoCapture]=\"focusTrapAutoCaptureEnabled\">\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n</ng-template>", styles: [".cmat-popover-panel{max-height:calc(100vh - 48px);padding:.5rem;border-radius:.5rem;font-size:1rem}.cmat-popover-panel[class*=cmat-popover-below]{margin-top:calc(.5em + 2px)}.cmat-popover-panel[class*=cmat-popover-above]{margin-bottom:calc(.5em + 2px)}.cmat-popover-panel[class*=cmat-popover-before]{margin-right:calc(.5em + 2px)}[dir=rtl] .cmat-popover-panel[class*=cmat-popover-before]{margin-right:auto;margin-left:calc(.5em + 2px)}.cmat-popover-panel[class*=cmat-popover-after]{margin-left:calc(.5em + 2px)}[dir=rtl] .cmat-popover-panel[class*=cmat-popover-after]{margin-left:auto;margin-right:calc(.5em + 2px)}.cmat-popover-direction-arrow{position:absolute}.cmat-popover-direction-arrow:before,.cmat-popover-direction-arrow:after{position:absolute;display:inline-block;border-style:solid;content:\"\"}.cmat-popover-direction-arrow:before{border-width:.5em;border-color:var(--cmat-divider)}.cmat-popover-direction-arrow:after{border-width:calc(.5em - 1px);border-color:var(--cmat-bg-card)}[class*=cmat-popover-below] .cmat-popover-direction-arrow,[class*=cmat-popover-above] .cmat-popover-direction-arrow{width:1em}[class*=cmat-popover-below] .cmat-popover-direction-arrow:after,[class*=cmat-popover-above] .cmat-popover-direction-arrow:after{left:1px}[dir=rtl] [class*=cmat-popover-below] .cmat-popover-direction-arrow:after,[dir=rtl] [class*=cmat-popover-above] .cmat-popover-direction-arrow:after{right:1px;left:auto}[class*=cmat-popover-below] .cmat-popover-direction-arrow:before,[class*=cmat-popover-below] .cmat-popover-direction-arrow:after,[class*=cmat-popover-above] .cmat-popover-direction-arrow:before,[class*=cmat-popover-above] .cmat-popover-direction-arrow:after{border-left-color:transparent;border-right-color:transparent}[class*=cmat-popover-below] .cmat-popover-direction-arrow{top:0}[class*=cmat-popover-below] .cmat-popover-direction-arrow:before,[class*=cmat-popover-below] .cmat-popover-direction-arrow:after{bottom:0;border-top-width:0}[class*=cmat-popover-above] .cmat-popover-direction-arrow{bottom:0}[class*=cmat-popover-above] .cmat-popover-direction-arrow:before,[class*=cmat-popover-above] .cmat-popover-direction-arrow:after{top:0;border-bottom-width:0}[class*=cmat-popover-before] .cmat-popover-direction-arrow,[class*=cmat-popover-after] .cmat-popover-direction-arrow{height:1em}[class*=cmat-popover-before] .cmat-popover-direction-arrow:after,[class*=cmat-popover-after] .cmat-popover-direction-arrow:after{top:1px}[class*=cmat-popover-before] .cmat-popover-direction-arrow:before,[class*=cmat-popover-before] .cmat-popover-direction-arrow:after,[class*=cmat-popover-after] .cmat-popover-direction-arrow:before,[class*=cmat-popover-after] .cmat-popover-direction-arrow:after{border-top-color:transparent;border-bottom-color:transparent}[class*=cmat-popover-before] .cmat-popover-direction-arrow{right:0}[class*=cmat-popover-before] .cmat-popover-direction-arrow:before,[class*=cmat-popover-before] .cmat-popover-direction-arrow:after{left:0;border-right-width:0}[dir=rtl] [class*=cmat-popover-before] .cmat-popover-direction-arrow{right:auto;left:0}[dir=rtl] [class*=cmat-popover-before] .cmat-popover-direction-arrow:before,[dir=rtl] [class*=cmat-popover-before] .cmat-popover-direction-arrow:after{left:auto;right:0;border-left-width:0}[dir=rtl] [class*=cmat-popover-before] .cmat-popover-direction-arrow:before{border-right-width:.5em}[dir=rtl] [class*=cmat-popover-before] .cmat-popover-direction-arrow:after{border-right-width:calc(.5em - 1px)}[class*=cmat-popover-after] .cmat-popover-direction-arrow{left:0}[class*=cmat-popover-after] .cmat-popover-direction-arrow:before,[class*=cmat-popover-after] .cmat-popover-direction-arrow:after{right:0;border-left-width:0}[dir=rtl] [class*=cmat-popover-after] .cmat-popover-direction-arrow{left:auto;right:0}[dir=rtl] [class*=cmat-popover-after] .cmat-popover-direction-arrow:before,[dir=rtl] [class*=cmat-popover-after] .cmat-popover-direction-arrow:after{right:auto;left:0;border-right-width:0}[dir=rtl] [class*=cmat-popover-after] .cmat-popover-direction-arrow:before{border-left-width:.5em}[dir=rtl] [class*=cmat-popover-after] .cmat-popover-direction-arrow:after{border-left-width:calc(.5em - 1px)}\n"], dependencies: [{ kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: A11yModule }, { kind: "directive", type: i2.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }], animations: [cmatAnimations], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
291
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.10", ngImport: i0, type: CmatPopoverComponent, deps: [{ token: i1.Directionality, optional: true }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
292
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.10", type: CmatPopoverComponent, isStandalone: true, selector: "cmat-popover", inputs: { popoverPanelStyles: "popoverPanelStyles", popoverArrowStyles: "popoverArrowStyles", popoverContentStyles: "popoverContentStyles", position: "position", triggerEvent: "triggerEvent", scrollStrategy: "scrollStrategy", enterDelay: "enterDelay", leaveDelay: "leaveDelay", xOffset: "xOffset", yOffset: "yOffset", arrowOffsetX: "arrowOffsetX", arrowOffsetY: "arrowOffsetY", arrowWidth: "arrowWidth", arrowHeight: "arrowHeight", closeOnPanelClick: "closeOnPanelClick", closeOnBackdropClick: "closeOnBackdropClick", disableAnimation: "disableAnimation", focusTrapEnabled: "focusTrapEnabled", focusTrapAutoCaptureEnabled: "focusTrapAutoCaptureEnabled", panelClass: "panelClass" }, outputs: { closed: "closed" }, host: { properties: { "attr.role": "this.role" } }, viewQueries: [{ propertyName: "templateRef", first: true, predicate: TemplateRef, descendants: true }], exportAs: ["cmatPopover"], ngImport: i0, template: "<ng-template>\r\n <div class=\"cmat-popover-panel shadow\" role=\"dialog\" [ngClass]=\"classList\" [ngStyle]=\"popoverPanelStyles\"\r\n [@.disabled]=\"disableAnimation\" [@transform]=\"'enter'\" (keydown)=\"handleKeydown($event)\" (click)=\"onClick()\" (focus)=\"onFocus()\"\r\n (mouseover)=\"onMouseOver()\" (mouseleave)=\"onMouseLeave()\">\r\n <div class=\"cmat-popover-direction-arrow\" [ngStyle]=\"popoverArrowStyles\"></div>\r\n <div class=\"cmat-popover-content\" [ngStyle]=\"popoverContentStyles\" [cdkTrapFocus]=\"focusTrapEnabled\"\r\n [cdkTrapFocusAutoCapture]=\"focusTrapAutoCaptureEnabled\">\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n</ng-template>", styles: [".cmat-popover-panel{max-height:calc(100vh - 48px);padding:.5rem;border-radius:.5rem;font-size:1rem}.cmat-popover-panel[class*=cmat-popover-below]{margin-top:calc(.5em + 2px)}.cmat-popover-panel[class*=cmat-popover-above]{margin-bottom:calc(.5em + 2px)}.cmat-popover-panel[class*=cmat-popover-before]{margin-right:calc(.5em + 2px)}[dir=rtl] .cmat-popover-panel[class*=cmat-popover-before]{margin-right:auto;margin-left:calc(.5em + 2px)}.cmat-popover-panel[class*=cmat-popover-after]{margin-left:calc(.5em + 2px)}[dir=rtl] .cmat-popover-panel[class*=cmat-popover-after]{margin-left:auto;margin-right:calc(.5em + 2px)}.cmat-popover-direction-arrow{position:absolute}.cmat-popover-direction-arrow:before,.cmat-popover-direction-arrow:after{position:absolute;display:inline-block;border-style:solid;content:\"\"}.cmat-popover-direction-arrow:before{border-width:.5em;border-color:var(--cmat-divider)}.cmat-popover-direction-arrow:after{border-width:calc(.5em - 1px);border-color:var(--cmat-bg-card)}[class*=cmat-popover-below] .cmat-popover-direction-arrow,[class*=cmat-popover-above] .cmat-popover-direction-arrow{width:1em}[class*=cmat-popover-below] .cmat-popover-direction-arrow:after,[class*=cmat-popover-above] .cmat-popover-direction-arrow:after{left:1px}[dir=rtl] [class*=cmat-popover-below] .cmat-popover-direction-arrow:after,[dir=rtl] [class*=cmat-popover-above] .cmat-popover-direction-arrow:after{right:1px;left:auto}[class*=cmat-popover-below] .cmat-popover-direction-arrow:before,[class*=cmat-popover-below] .cmat-popover-direction-arrow:after,[class*=cmat-popover-above] .cmat-popover-direction-arrow:before,[class*=cmat-popover-above] .cmat-popover-direction-arrow:after{border-left-color:transparent;border-right-color:transparent}[class*=cmat-popover-below] .cmat-popover-direction-arrow{top:0}[class*=cmat-popover-below] .cmat-popover-direction-arrow:before,[class*=cmat-popover-below] .cmat-popover-direction-arrow:after{bottom:0;border-top-width:0}[class*=cmat-popover-above] .cmat-popover-direction-arrow{bottom:0}[class*=cmat-popover-above] .cmat-popover-direction-arrow:before,[class*=cmat-popover-above] .cmat-popover-direction-arrow:after{top:0;border-bottom-width:0}[class*=cmat-popover-before] .cmat-popover-direction-arrow,[class*=cmat-popover-after] .cmat-popover-direction-arrow{height:1em}[class*=cmat-popover-before] .cmat-popover-direction-arrow:after,[class*=cmat-popover-after] .cmat-popover-direction-arrow:after{top:1px}[class*=cmat-popover-before] .cmat-popover-direction-arrow:before,[class*=cmat-popover-before] .cmat-popover-direction-arrow:after,[class*=cmat-popover-after] .cmat-popover-direction-arrow:before,[class*=cmat-popover-after] .cmat-popover-direction-arrow:after{border-top-color:transparent;border-bottom-color:transparent}[class*=cmat-popover-before] .cmat-popover-direction-arrow{right:0}[class*=cmat-popover-before] .cmat-popover-direction-arrow:before,[class*=cmat-popover-before] .cmat-popover-direction-arrow:after{left:0;border-right-width:0}[dir=rtl] [class*=cmat-popover-before] .cmat-popover-direction-arrow{right:auto;left:0}[dir=rtl] [class*=cmat-popover-before] .cmat-popover-direction-arrow:before,[dir=rtl] [class*=cmat-popover-before] .cmat-popover-direction-arrow:after{left:auto;right:0;border-left-width:0}[dir=rtl] [class*=cmat-popover-before] .cmat-popover-direction-arrow:before{border-right-width:.5em}[dir=rtl] [class*=cmat-popover-before] .cmat-popover-direction-arrow:after{border-right-width:calc(.5em - 1px)}[class*=cmat-popover-after] .cmat-popover-direction-arrow{left:0}[class*=cmat-popover-after] .cmat-popover-direction-arrow:before,[class*=cmat-popover-after] .cmat-popover-direction-arrow:after{right:0;border-left-width:0}[dir=rtl] [class*=cmat-popover-after] .cmat-popover-direction-arrow{left:auto;right:0}[dir=rtl] [class*=cmat-popover-after] .cmat-popover-direction-arrow:before,[dir=rtl] [class*=cmat-popover-after] .cmat-popover-direction-arrow:after{right:auto;left:0;border-right-width:0}[dir=rtl] [class*=cmat-popover-after] .cmat-popover-direction-arrow:before{border-left-width:.5em}[dir=rtl] [class*=cmat-popover-after] .cmat-popover-direction-arrow:after{border-left-width:calc(.5em - 1px)}\n"], dependencies: [{ kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: A11yModule }, { kind: "directive", type: i2.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }], animations: [cmatAnimations], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
293
293
  }
294
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: CmatPopoverComponent, decorators: [{
294
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.10", ngImport: i0, type: CmatPopoverComponent, decorators: [{
295
295
  type: Component,
296
296
  args: [{ selector: 'cmat-popover', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, animations: [cmatAnimations], exportAs: 'cmatPopover', standalone: true, imports: [NgStyle, NgClass, A11yModule], template: "<ng-template>\r\n <div class=\"cmat-popover-panel shadow\" role=\"dialog\" [ngClass]=\"classList\" [ngStyle]=\"popoverPanelStyles\"\r\n [@.disabled]=\"disableAnimation\" [@transform]=\"'enter'\" (keydown)=\"handleKeydown($event)\" (click)=\"onClick()\" (focus)=\"onFocus()\"\r\n (mouseover)=\"onMouseOver()\" (mouseleave)=\"onMouseLeave()\">\r\n <div class=\"cmat-popover-direction-arrow\" [ngStyle]=\"popoverArrowStyles\"></div>\r\n <div class=\"cmat-popover-content\" [ngStyle]=\"popoverContentStyles\" [cdkTrapFocus]=\"focusTrapEnabled\"\r\n [cdkTrapFocusAutoCapture]=\"focusTrapAutoCaptureEnabled\">\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n</ng-template>", styles: [".cmat-popover-panel{max-height:calc(100vh - 48px);padding:.5rem;border-radius:.5rem;font-size:1rem}.cmat-popover-panel[class*=cmat-popover-below]{margin-top:calc(.5em + 2px)}.cmat-popover-panel[class*=cmat-popover-above]{margin-bottom:calc(.5em + 2px)}.cmat-popover-panel[class*=cmat-popover-before]{margin-right:calc(.5em + 2px)}[dir=rtl] .cmat-popover-panel[class*=cmat-popover-before]{margin-right:auto;margin-left:calc(.5em + 2px)}.cmat-popover-panel[class*=cmat-popover-after]{margin-left:calc(.5em + 2px)}[dir=rtl] .cmat-popover-panel[class*=cmat-popover-after]{margin-left:auto;margin-right:calc(.5em + 2px)}.cmat-popover-direction-arrow{position:absolute}.cmat-popover-direction-arrow:before,.cmat-popover-direction-arrow:after{position:absolute;display:inline-block;border-style:solid;content:\"\"}.cmat-popover-direction-arrow:before{border-width:.5em;border-color:var(--cmat-divider)}.cmat-popover-direction-arrow:after{border-width:calc(.5em - 1px);border-color:var(--cmat-bg-card)}[class*=cmat-popover-below] .cmat-popover-direction-arrow,[class*=cmat-popover-above] .cmat-popover-direction-arrow{width:1em}[class*=cmat-popover-below] .cmat-popover-direction-arrow:after,[class*=cmat-popover-above] .cmat-popover-direction-arrow:after{left:1px}[dir=rtl] [class*=cmat-popover-below] .cmat-popover-direction-arrow:after,[dir=rtl] [class*=cmat-popover-above] .cmat-popover-direction-arrow:after{right:1px;left:auto}[class*=cmat-popover-below] .cmat-popover-direction-arrow:before,[class*=cmat-popover-below] .cmat-popover-direction-arrow:after,[class*=cmat-popover-above] .cmat-popover-direction-arrow:before,[class*=cmat-popover-above] .cmat-popover-direction-arrow:after{border-left-color:transparent;border-right-color:transparent}[class*=cmat-popover-below] .cmat-popover-direction-arrow{top:0}[class*=cmat-popover-below] .cmat-popover-direction-arrow:before,[class*=cmat-popover-below] .cmat-popover-direction-arrow:after{bottom:0;border-top-width:0}[class*=cmat-popover-above] .cmat-popover-direction-arrow{bottom:0}[class*=cmat-popover-above] .cmat-popover-direction-arrow:before,[class*=cmat-popover-above] .cmat-popover-direction-arrow:after{top:0;border-bottom-width:0}[class*=cmat-popover-before] .cmat-popover-direction-arrow,[class*=cmat-popover-after] .cmat-popover-direction-arrow{height:1em}[class*=cmat-popover-before] .cmat-popover-direction-arrow:after,[class*=cmat-popover-after] .cmat-popover-direction-arrow:after{top:1px}[class*=cmat-popover-before] .cmat-popover-direction-arrow:before,[class*=cmat-popover-before] .cmat-popover-direction-arrow:after,[class*=cmat-popover-after] .cmat-popover-direction-arrow:before,[class*=cmat-popover-after] .cmat-popover-direction-arrow:after{border-top-color:transparent;border-bottom-color:transparent}[class*=cmat-popover-before] .cmat-popover-direction-arrow{right:0}[class*=cmat-popover-before] .cmat-popover-direction-arrow:before,[class*=cmat-popover-before] .cmat-popover-direction-arrow:after{left:0;border-right-width:0}[dir=rtl] [class*=cmat-popover-before] .cmat-popover-direction-arrow{right:auto;left:0}[dir=rtl] [class*=cmat-popover-before] .cmat-popover-direction-arrow:before,[dir=rtl] [class*=cmat-popover-before] .cmat-popover-direction-arrow:after{left:auto;right:0;border-left-width:0}[dir=rtl] [class*=cmat-popover-before] .cmat-popover-direction-arrow:before{border-right-width:.5em}[dir=rtl] [class*=cmat-popover-before] .cmat-popover-direction-arrow:after{border-right-width:calc(.5em - 1px)}[class*=cmat-popover-after] .cmat-popover-direction-arrow{left:0}[class*=cmat-popover-after] .cmat-popover-direction-arrow:before,[class*=cmat-popover-after] .cmat-popover-direction-arrow:after{right:0;border-left-width:0}[dir=rtl] [class*=cmat-popover-after] .cmat-popover-direction-arrow{left:auto;right:0}[dir=rtl] [class*=cmat-popover-after] .cmat-popover-direction-arrow:before,[dir=rtl] [class*=cmat-popover-after] .cmat-popover-direction-arrow:after{right:auto;left:0;border-right-width:0}[dir=rtl] [class*=cmat-popover-after] .cmat-popover-direction-arrow:before{border-left-width:.5em}[dir=rtl] [class*=cmat-popover-after] .cmat-popover-direction-arrow:after{border-left-width:calc(.5em - 1px)}\n"] }]
297
297
  }], ctorParameters: () => [{ type: i1.Directionality, decorators: [{
@@ -345,4 +345,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImpor
345
345
  }], panelClass: [{
346
346
  type: Input
347
347
  }] } });
348
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbWF0L2NvbXBvbmVudHMvcG9wb3Zlci9wb3BvdmVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NtYXQvY29tcG9uZW50cy9wb3BvdmVyL3BvcG92ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRS9DLE9BQU8sRUFBZ0IscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM1RSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ25ELE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsU0FBUyxFQUVULFlBQVksRUFDWixXQUFXLEVBQ1gsS0FBSyxFQUVMLFFBQVEsRUFDUixNQUFNLEVBQ04sV0FBVyxFQUNYLFNBQVMsRUFDVCxpQkFBaUIsR0FDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxrQ0FBa0MsRUFBRSxvQ0FBb0MsRUFBRSxNQUFNLGtCQUFrQixDQUFDOzs7O0FBZTVHLE1BQU0sT0FBTyxvQkFBb0I7SUFzRDdCLFlBQ3dCLElBQW9CLEVBQ2hDLFdBQXVCO1FBRFgsU0FBSSxHQUFKLElBQUksQ0FBZ0I7UUFDaEMsZ0JBQVcsR0FBWCxXQUFXLENBQVk7UUFqRG5DLGdEQUFnRDtRQUN0QyxXQUFNLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUlsQixTQUFJLEdBQUcsUUFBUSxDQUFDO1FBQzFDLGtFQUFrRTtRQUVsRSx1QkFBa0IsR0FBRyxFQUFFLENBQUM7UUFFeEIsa0VBQWtFO1FBRTNELHVCQUFrQixHQUFHLEVBQUUsQ0FBQztRQUUvQixvRUFBb0U7UUFF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VztzQkFEZCxLQUFLO2dCQVlGLGlCQUFpQjtzQkFEcEIsS0FBSztnQkFXRixvQkFBb0I7c0JBRHZCLEtBQUs7Z0JBWUYsZ0JBQWdCO3NCQURuQixLQUFLO2dCQVlGLGdCQUFnQjtzQkFEbkIsS0FBSztnQkFZRiwyQkFBMkI7c0JBRDlCLEtBQUs7Z0JBYUYsVUFBVTtzQkFEYixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uICovXHJcbmltcG9ydCB7IEFuaW1hdGlvbkV2ZW50IH0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XHJcbmltcG9ydCB7IEExMXlNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XHJcbmltcG9ydCB7IERpcmVjdGlvbmFsaXR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2JpZGknO1xyXG5pbXBvcnQgeyBCb29sZWFuSW5wdXQsIGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XHJcbmltcG9ydCB7IE5nQ2xhc3MsIE5nU3R5bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQge1xyXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgICBDb21wb25lbnQsXHJcbiAgICBFbGVtZW50UmVmLFxyXG4gICAgRXZlbnRFbWl0dGVyLFxyXG4gICAgSG9zdEJpbmRpbmcsXHJcbiAgICBJbnB1dCxcclxuICAgIE9uRGVzdHJveSxcclxuICAgIE9wdGlvbmFsLFxyXG4gICAgT3V0cHV0LFxyXG4gICAgVGVtcGxhdGVSZWYsXHJcbiAgICBWaWV3Q2hpbGQsXHJcbiAgICBWaWV3RW5jYXBzdWxhdGlvbixcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgY21hdEFuaW1hdGlvbnMgfSBmcm9tICdjbWF0L2FuaW1hdGlvbnMnO1xyXG5pbXBvcnQgeyB0aHJvd0NtYXRQb3BvdmVySW52YWxpZFBvc2l0aW9uRW5kLCB0aHJvd0NtYXRQb3BvdmVySW52YWxpZFBvc2l0aW9uU3RhcnQgfSBmcm9tICcuL3BvcG92ZXIuZXJyb3JzJztcclxuaW1wb3J0IHsgQ21hdFBvcG92ZXJQYW5lbCB9IGZyb20gJy4vcG9wb3Zlci5pbnRlcmZhY2VzJztcclxuaW1wb3J0IHsgQ21hdFBvcG92ZXJQb3NpdGlvbiwgQ21hdFBvcG92ZXJTY3JvbGxTdHJhdGVneSwgQ21hdFBvcG92ZXJUcmlnZ2VyRXZlbnQgfSBmcm9tICcuL3BvcG92ZXIudHlwZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnY21hdC1wb3BvdmVyJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9wb3BvdmVyLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL3BvcG92ZXIuY29tcG9uZW50LnNjc3MnXSxcclxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxuICAgIGFuaW1hdGlvbnM6IFtjbWF0QW5pbWF0aW9uc10sXHJcbiAgICBleHBvcnRBczogJ2NtYXRQb3BvdmVyJyxcclxuICAgIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgICBpbXBvcnRzOiBbTmdTdHlsZSwgTmdDbGFzcyxBMTF5TW9kdWxlXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ21hdFBvcG92ZXJDb21wb25lbnQgaW1wbGVtZW50cyBDbWF0UG9wb3ZlclBhbmVsLCBPbkRlc3Ryb3kge1xyXG4gICAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX2Nsb3NlT25QYW5lbENsaWNrOiBCb29sZWFuSW5wdXQ7XHJcbiAgICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfY2xvc2VPbkJhY2tkcm9wQ2xpY2s6IEJvb2xlYW5JbnB1dDtcclxuICAgIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9kaXNhYmxlQW5pbWF0aW9uOiBCb29sZWFuSW5wdXQ7XHJcbiAgICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfZm9jdXNUcmFwRW5hYmxlZDogQm9vbGVhbklucHV0O1xyXG4gICAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX2ZvY3VzVHJhcEF1dG9DYXB0dXJlRW5hYmxlZDogQm9vbGVhbklucHV0O1xyXG5cclxuICAgIC8qKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIHBvcG92ZXIgaXMgY2xvc2VkLiAqL1xyXG4gICAgQE91dHB1dCgpIGNsb3NlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuXHJcbiAgICBAVmlld0NoaWxkKFRlbXBsYXRlUmVmKSB0ZW1wbGF0ZVJlZiE6IFRlbXBsYXRlUmVmPGFueT47XHJcblxyXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLnJvbGUnKSByb2xlID0gJ2RpYWxvZyc7XHJcbiAgICAvKiogQ29uZmlnIG9iamVjdCB0byBiZSBwYXNzZWQgaW50byB0aGUgcG9wb3ZlcidzIGFycm93IG5nU3R5bGUgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwb3BvdmVyUGFuZWxTdHlsZXMgPSB7fTtcclxuXHJcbiAgICAvKiogQ29uZmlnIG9iamVjdCB0byBiZSBwYXNzZWQgaW50byB0aGUgcG9wb3ZlcidzIGFycm93IG5nU3R5bGUgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgcG9wb3ZlckFycm93U3R5bGVzID0ge307XHJcblxyXG4gICAgLyoqIENvbmZpZyBvYmplY3QgdG8gYmUgcGFzc2VkIGludG8gdGhlIHBvcG92ZXIncyBjb250ZW50IG5nU3R5bGUgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgcG9wb3ZlckNvbnRlbnRTdHlsZXMgPSB7fTtcclxuICAgIC8qKiBXaGV0aGVyIHBvcG92ZXIncyBgdGFyZ2V0RWxlbWVudGAgaXMgZGVmaW5lZCAqL1xyXG4gICAgcHVibGljIGNvbnRhaW5lclBvc2l0aW9uaW5nID0gZmFsc2U7XHJcblxyXG4gICAgLyoqIENsb3NpbmcgZGlzYWJsZWQgb24gcG9wb3ZlciAqL1xyXG4gICAgcHVibGljIGNsb3NlRGlzYWJsZWQgPSBmYWxzZTtcclxuXHJcbiAgICAvKiogQ29uZmlnIG9iamVjdCB0byBiZSBwYXNzZWQgaW50byB0aGUgcG9wb3ZlcidzIG5nQ2xhc3MgKi9cclxuICAgIGNsYXNzTGlzdDogUmVjb3JkPHN0cmluZywgYm9vbGVhbj4gPSB7fTtcclxuXHJcbiAgICAvKiogRW1pdHMgdGhlIGN1cnJlbnQgYW5pbWF0aW9uIHN0YXRlIHdoZW5ldmVyIGl0IGNoYW5nZXMuICovXHJcbiAgICBfb25BbmltYXRpb25TdGF0ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8QW5pbWF0aW9uRXZlbnQ+KCk7XHJcblxyXG4gICAgLyoqIFNldHRpbmdzIGZvciBwb3BvdmVyLCB2aWV3IHNldHRlcnMgYW5kIGdldHRlcnMgZm9yIG1vcmUgZGV0YWlsICovXHJcbiAgICBwcml2YXRlIF9wb3NpdGlvbjogQ21hdFBvcG92ZXJQb3NpdGlvbiA9IFsnYmVsb3cnLCAnYWZ0ZXInXTtcclxuICAgIHByaXZhdGUgX3RyaWdnZXJFdmVudDogQ21hdFBvcG92ZXJUcmlnZ2VyRXZlbnQgPSAnaG92ZXInO1xyXG4gICAgcHJpdmF0ZSBfc2Nyb2xsU3RyYXRlZ3k6IENtYXRQb3BvdmVyU2Nyb2xsU3RyYXRlZ3kgPSAncmVwb3NpdGlvbic7XHJcbiAgICBwcml2YXRlIF9lbnRlckRlbGF5ID0gMTAwO1xyXG4gICAgcHJpdmF0ZSBfbGVhdmVEZWxheSA9IDEwMDtcclxuICAgIHByaXZhdGUgX3BhbmVsT2Zmc2V0WCA9IDA7XHJcbiAgICBwcml2YXRlIF9wYW5lbE9mZnNldFkgPSAwO1xyXG4gICAgcHJpdmF0ZSBfY2xvc2VPblBhbmVsQ2xpY2sgPSBmYWxzZTtcclxuICAgIHByaXZhdGUgX2Nsb3NlT25CYWNrZHJvcENsaWNrID0gdHJ1ZTtcclxuICAgIHByaXZhdGUgX2Rpc2FibGVBbmltYXRpb24gPSBmYWxzZTtcclxuICAgIHByaXZhdGUgX2ZvY3VzVHJhcEVuYWJsZWQgPSB0cnVlO1xyXG4gICAgcHJpdmF0ZSBfZm9jdXNUcmFwQXV0b0NhcHR1cmVFbmFibGVkID0gdHJ1ZTtcclxuICAgIHByaXZhdGUgX2Fycm93T2Zmc2V0WCA9IDIwO1xyXG4gICAgcHJpdmF0ZSBfYXJyb3dPZmZzZXRZID0gMjA7XHJcbiAgICBwcml2YXRlIF9hcnJvd1dpZHRoID0gMTY7XHJcbiAgICBwcml2YXRlIF9hcnJvd0hlaWdodCA9IDE2O1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIEBPcHRpb25hbCgpIHByaXZhdGUgX2RpcjogRGlyZWN0aW9uYWxpdHksXHJcbiAgICAgICAgcHJpdmF0ZSBfZWxlbWVudFJlZjogRWxlbWVudFJlZlxyXG4gICAgKSB7XHJcbiAgICAgICAgdGhpcy5zZXRQb3NpdGlvbkNsYXNzZXMoKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgcG9zaXRpb24oKTogQ21hdFBvcG92ZXJQb3NpdGlvbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Bvc2l0aW9uO1xyXG4gICAgfVxyXG4gICAgLyoqIFBvc2l0aW9uIG9mIHRoZSBwb3BvdmVyLiAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHNldCBwb3NpdGlvbih2YWx1ZTogQ21hdFBvcG92ZXJQb3NpdGlvbikge1xyXG4gICAgICAgIGlmICghWydiZWZvcmUnLCAnYWZ0ZXInLCAnYWJvdmUnLCAnYmVsb3cnXS5pbmNsdWRlcyh2YWx1ZVswXSkpIHtcclxuICAgICAgICAgICAgdGhyb3dDbWF0UG9wb3ZlckludmFsaWRQb3NpdGlvblN0YXJ0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghWydiZWZvcmUnLCAnYWZ0ZXInLCAnYWJvdmUnLCAnYmVsb3cnLCAnY2VudGVyJ10uaW5jbHVkZXModmFsdWVbMV0pKSB7XHJcbiAgICAgICAgICAgIHRocm93Q21hdFBvcG92ZXJJbnZhbGlkUG9zaXRpb25FbmQoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5fcG9zaXRpb24gPSB2YWx1ZTtcclxuICAgICAgICB0aGlzLnNldFBvc2l0aW9uQ2xhc3NlcygpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBQb3BvdmVyIHRyaWdnZXIgZXZlbnQgKi9cclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbWVtYmVyLW9yZGVyaW5nXHJcbiAgICBnZXQgdHJpZ2dlckV2ZW50KCk6IENtYXRQb3BvdmVyVHJpZ2dlckV2ZW50IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fdHJpZ2dlckV2ZW50O1xyXG4gICAgfVxyXG4gICAgQElucHV0KClcclxuICAgIHNldCB0cmlnZ2VyRXZlbnQodmFsdWU6IENtYXRQb3BvdmVyVHJpZ2dlckV2ZW50KSB7XHJcbiAgICAgICAgdGhpcy5fdHJpZ2dlckV2ZW50ID0gdmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIFBvcG92ZXIgc2Nyb2xsIHN0cmF0ZWd5ICovXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L21lbWJlci1vcmRlcmluZ1xyXG4gICAgZ2V0IHNjcm9sbFN0cmF0ZWd5KCk6IENtYXRQb3BvdmVyU2Nyb2xsU3RyYXRlZ3kge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9zY3JvbGxTdHJhdGVneTtcclxuICAgIH1cclxuICAgIEBJbnB1dCgpXHJcbiAgICBzZXQgc2Nyb2xsU3RyYXRlZ3kodmFsdWU6IENtYXRQb3BvdmVyU2Nyb2xsU3RyYXRlZ3kpIHtcclxuICAgICAgICB0aGlzLl9zY3JvbGxTdHJhdGVneSA9IHZhbHVlO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBQb3BvdmVyIGVudGVyIGRlbGF5ICovXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L21lbWJlci1vcmRlcmluZ1xyXG4gICAgZ2V0IGVudGVyRGVsYXkoKTogbnVtYmVyIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fZW50ZXJEZWxheTtcclxuICAgIH1cclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgc2V0IGVudGVyRGVsYXkodmFsdWU6IG51bWJlcikge1xyXG4gICAgICAgIHRoaXMuX2VudGVyRGVsYXkgPSB2YWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICAvKiogUG9wb3ZlciBsZWF2ZSBkZWxheSAqL1xyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9tZW1iZXItb3JkZXJpbmdcclxuICAgIGdldCBsZWF2ZURlbGF5KCk6IG51bWJlciB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2xlYXZlRGVsYXk7XHJcbiAgICB9XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIHNldCBsZWF2ZURlbGF5KHZhbHVlOiBudW1iZXIpIHtcclxuICAgICAgICB0aGlzLl9sZWF2ZURlbGF5ID0gdmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIFBvcG92ZXIgdGFyZ2V0IG9mZnNldCB4ICovXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L21lbWJlci1vcmRlcmluZ1xyXG4gICAgZ2V0IHhPZmZzZXQoKTogbnVtYmVyIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fcGFuZWxPZmZzZXRYO1xyXG4gICAgfVxyXG4gICAgQElucHV0KClcclxuICAgIHNldCB4T2Zmc2V0KHZhbHVlOiBudW1iZXIpIHtcclxuICAgICAgICB0aGlzLl9wYW5lbE9mZnNldFggPSB2YWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICAvKiogUG9wb3ZlciB0YXJnZXQgb2Zmc2V0IHkgKi9cclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbWVtYmVyLW9yZGVyaW5nXHJcbiAgICBnZXQgeU9mZnNldCgpOiBudW1iZXIge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9wYW5lbE9mZnNldFk7XHJcbiAgICB9XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIHNldCB5T2Zmc2V0KHZhbHVlOiBudW1iZXIpIHtcclxuICAgICAgICB0aGlzLl9wYW5lbE9mZnNldFkgPSB2YWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICAvKiogUG9wb3ZlciBhcnJvdyBvZmZzZXQgeCAqL1xyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9tZW1iZXItb3JkZXJpbmdcclxuICAgIGdldCBhcnJvd09mZnNldFgoKTogbnVtYmVyIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fYXJyb3dPZmZzZXRYO1xyXG4gICAgfVxyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBzZXQgYXJyb3dPZmZzZXRYKHZhbHVlOiBudW1iZXIpIHtcclxuICAgICAgICB0aGlzLl9hcnJvd09mZnNldFggPSB2YWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICAvKiogUG9wb3ZlciBhcnJvdyBvZmZzZXQgeSAqL1xyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9tZW1iZXItb3JkZXJpbmdcclxuICAgIGdldCBhcnJvd09mZnNldFkoKTogbnVtYmVyIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fYXJyb3dPZmZzZXRZO1xyXG4gICAgfVxyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBzZXQgYXJyb3dPZmZzZXRZKHZhbHVlOiBudW1iZXIpIHtcclxuICAgICAgICB0aGlzLl9hcnJvd09mZnNldFkgPSB2YWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICAvKiogUG9wb3ZlciBhcnJvdyB3aWR0aCAqL1xyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9tZW1iZXItb3JkZXJpbmdcclxuICAgIGdldCBhcnJvd1dpZHRoKCk6IG51bWJlciB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Fycm93V2lkdGg7XHJcbiAgICB9XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIHNldCBhcnJvd1dpZHRoKHZhbHVlOiBudW1iZXIpIHtcclxuICAgICAgICB0aGlzLl9hcnJvd1dpZHRoID0gdmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIFBvcG92ZXIgYXJyb3cgaGVpZ2h0ICovXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L21lbWJlci1vcmRlcmluZ1xyXG4gICAgZ2V0IGFycm93SGVpZ2h0KCk6IG51bWJlciB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Fycm93SGVpZ2h0O1xyXG4gICAgfVxyXG4gICAgQElucHV0KClcclxuICAgIHNldCBhcnJvd0hlaWdodCh2YWx1ZTogbnVtYmVyKSB7XHJcbiAgICAgICAgdGhpcy5fYXJyb3dIZWlnaHQgPSB2YWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICAvKiogUG9wb3ZlciBjbG9zZSBvbiBjb250YWluZXIgY2xpY2sgKi9cclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbWVtYmVyLW9yZGVyaW5nXHJcbiAgICBnZXQgY2xvc2VPblBhbmVsQ2xpY2soKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Nsb3NlT25QYW5lbENsaWNrO1xyXG4gICAgfVxyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBzZXQgY2xvc2VPblBhbmVsQ2xpY2sodmFsdWU6IGJvb2xlYW4pIHtcclxuICAgICAgICB0aGlzLl9jbG9zZU9uUGFuZWxDbGljayA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIFBvcG92ZXIgY2xvc2Ugb24gYmFja2Ryb3AgY2xpY2sgKi9cclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbWVtYmVyLW9yZGVyaW5nXHJcbiAgICBnZXQgY2xvc2VPbkJhY2tkcm9wQ2xpY2soKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Nsb3NlT25CYWNrZHJvcENsaWNrO1xyXG4gICAgfVxyXG4gICAgQElucHV0KClcclxuICAgIHNldCBjbG9zZU9uQmFja2Ryb3BDbGljayh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgICAgIHRoaXMuX2Nsb3NlT25CYWNrZHJvcENsaWNrID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICAvKiogRGlzYWJsZSBhbmltYXRpb25zIG9mIHBvcG92ZXIgYW5kIGFsbCBjaGlsZCBlbGVtZW50cyAqL1xyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9tZW1iZXItb3JkZXJpbmdcclxuICAgIGdldCBkaXNhYmxlQW5pbWF0aW9uKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9kaXNhYmxlQW5pbWF0aW9uO1xyXG4gICAgfVxyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBzZXQgZGlzYWJsZUFuaW1hdGlvbih2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgICAgIHRoaXMuX2Rpc2FibGVBbmltYXRpb24gPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBQb3BvdmVyIGZvY3VzIHRyYXAgdXNpbmcgY2RrVHJhcEZvY3VzICovXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L21lbWJlci1vcmRlcmluZ1xyXG4gICAgZ2V0IGZvY3VzVHJhcEVuYWJsZWQoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZvY3VzVHJhcEVuYWJsZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIHNldCBmb2N1c1RyYXBFbmFibGVkKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICAgICAgdGhpcy5fZm9jdXNUcmFwRW5hYmxlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIFBvcG92ZXIgZm9jdXMgdHJhcCBhdXRvIGNhcHR1cmUgdXNpbmcgY2RrVHJhcEZvY3VzQXV0b0NhcHR1cmUgKi9cclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbWVtYmVyLW9yZGVyaW5nXHJcbiAgICBnZXQgZm9jdXNUcmFwQXV0b0NhcHR1cmVFbmFibGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9mb2N1c1RyYXBBdXRvQ2FwdHVyZUVuYWJsZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIHNldCBmb2N1c1RyYXBBdXRvQ2FwdHVyZUVuYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcclxuICAgICAgICB0aGlzLl9mb2N1c1RyYXBBdXRvQ2FwdHVyZUVuYWJsZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhpcyBtZXRob2QgdGFrZXMgY2xhc3NlcyBzZXQgb24gdGhlIGhvc3QgbWQtcG9wb3ZlciBlbGVtZW50IGFuZCBhcHBsaWVzIHRoZW0gb24gdGhlXHJcbiAgICAgKiBwb3BvdmVyIHRlbXBsYXRlIHRoYXQgZGlzcGxheXMgaW4gdGhlIG92ZXJsYXkgY29udGFpbmVyLiAgT3RoZXJ3aXNlLCBpdCdzIGRpZmZpY3VsdFxyXG4gICAgICogdG8gc3R5bGUgdGhlIGNvbnRhaW5pbmcgcG9wb3ZlciBmcm9tIG91dHNpZGUgdGhlIGNvbXBvbmVudC5cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gY2xhc3NlcyBsaXN0IG9mIGNsYXNzIG5hbWVzXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBzZXQgcGFuZWxDbGFzcyhjbGFzc2VzOiBzdHJpbmcpIHtcclxuICAgICAgICBpZiAoY2xhc3Nlcz8ubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY2xhc3NMaXN0ID0gY2xhc3Nlcy5zcGxpdCgnICcpLnJlZHVjZSgob2JqOiBhbnksIGNsYXNzTmFtZTogc3RyaW5nKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBvYmpbY2xhc3NOYW1lXSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gb2JqO1xyXG4gICAgICAgICAgICB9LCB7fSk7XHJcblxyXG4gICAgICAgICAgICB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2xhc3NOYW1lID0gJyc7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0UG9zaXRpb25DbGFzc2VzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuZW1pdENsb3NlRXZlbnQoKTtcclxuICAgICAgICB0aGlzLmNsb3NlZC5jb21wbGV0ZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBIYW5kbGUgYSBrZXlib2FyZCBldmVudCBmcm9tIHRoZSBwb3BvdmVyLCBkZWxlZ2F0aW5nIHRvIHRoZSBhcHByb3ByaWF0ZSBhY3Rpb24uICovXHJcbiAgICBoYW5kbGVLZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XHJcbiAgICAgICAgc3dpdGNoIChldmVudC5jb2RlKSB7XHJcbiAgICAgICAgICAgIGNhc2UgJ0VzY2FwZSc6XHJcbiAgICAgICAgICAgICAgICB0aGlzLmVtaXRDbG9zZUV2ZW50KCk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhpcyBlbWl0cyBhIGNsb3NlIGV2ZW50IHRvIHdoaWNoIHRoZSB0cmlnZ2VyIGlzIHN1YnNjcmliZWQuIFdoZW4gZW1pdHRlZCwgdGhlXHJcbiAgICAgKiB0cmlnZ2VyIHdpbGwgY2xvc2UgdGhlIHBvcG92ZXIuXHJcbiAgICAgKi9cclxuICAgIGVtaXRDbG9zZUV2ZW50KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuY2xvc2VkLmVtaXQoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKiogQ2xvc2UgcG9wb3ZlciBvbiBjbGljayBpZiBjbG9zZU9uUGFuZWxDbGljayBpcyB0cnVlICovXHJcbiAgICBvbkNsaWNrKCk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLmNsb3NlT25QYW5lbENsaWNrKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZW1pdENsb3NlRXZlbnQoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUT0RPOiBSZWZhY3RvciB3aGVuIEBhbmd1bGFyL2NkayBpbmNsdWRlcyBmZWF0dXJlIEkgbWVudGlvbmVkIG9uIGdpdGh1YiBzZWUgbGluayBiZWxvdy5cclxuICAgICAqIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL21hdGVyaWFsMi9wdWxsLzU0OTMjaXNzdWVjb21tZW50LTMxMzA4NTMyM1xyXG4gICAgICovXHJcbiAgICAvKiogRGlzYWJsZXMgY2xvc2Ugb2YgcG9wb3ZlciB3aGVuIGxlYXZpbmcgdHJpZ2dlciBlbGVtZW50IGFuZCBtb3VzZSBvdmVyIHRoZSBwb3BvdmVyICovXHJcbiAgICBvbk1vdXNlT3ZlcigpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy50cmlnZ2VyRXZlbnQgPT09ICdob3ZlcicpIHtcclxuICAgICAgICAgICAgdGhpcy5jbG9zZURpc2FibGVkID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgb25Gb2N1cygpOiB2b2lkIHtcclxuICAgICAgICAvL2RvIHNvbWV0aW5nXHJcbiAgICB9XHJcblxyXG4gICAgLyoqIEVuYWJsZXMgY2xvc2Ugb2YgcG9wb3ZlciB3aGVuIG1vdXNlIGxlYXZpbmcgcG9wb3ZlciBlbGVtZW50ICovXHJcbiAgICBvbk1vdXNlTGVhdmUoKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMudHJpZ2dlckV2ZW50ID09PSAnaG92ZXInKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY2xvc2VEaXNhYmxlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLmVtaXRDbG9zZUV2ZW50KCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIFRPRE86IFJlZmFjdG9yIGhvdyBzdHlsZXMgYXJlIHNldCBhbmQgdXBkYXRlZCBvbiB0aGUgY29tcG9uZW50LCB1c2UgYmVzdCBwcmFjdGljZXMuXHJcbiAgICAvLyBUT0RPOiBJZiBhcnJvdyBsZWZ0IGFuZCByaWdodCBwb3NpdGlvbmluZyBpcyByZXF1ZXN0ZWQsIHNlZSBpZiBmbGV4IGRpcmVjdGlvbiBjYW4gYmUgdXNlZCB0byB3b3JrIHdpdGggb3JkZXIuXHJcbiAgICAvKiogU2V0cyB0aGUgY3VycmVudCBzdHlsZXMgZm9yIHRoZSBwb3BvdmVyIHRvIGFsbG93IGZvciBkeW5hbWljYWxseSBjaGFuZ2luZyBzZXR0aW5ncyAqL1xyXG4gICAgc2V0Q3VycmVudFN0eWxlcyhwb3MgPSB0aGlzLnBvc2l0aW9uKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgbGVmdCA9XHJcbiAgICAgICAgICAgIHBvc1sxXSA9PT0gJ2FmdGVyJ1xyXG4gICAgICAgICAgICAgICAgPyBgJHt0aGlzLmFycm93T2Zmc2V0WCAtIHRoaXMuYXJyb3dXaWR0aCAvIDJ9cHhgXHJcbiAgICAgICAgICAgICAgICA6IHBvc1sxXSA9PT0gJ2NlbnRlcidcclxuICAgICAgICAgICAgICAgICAgICA/IGBjYWxjKDUwJSAtICR7dGhpcy5hcnJvd1dpZHRoIC8gMn1weClgXHJcbiAgICAgICAgICAgICAgICAgICAgOiAnJztcclxuICAgICAgICBjb25zdCByaWdodCA9IHBvc1sxXSA9PT0gJ2JlZm9yZScgPyBgJHt0aGlzLmFycm93T2Zmc2V0WCAtIHRoaXMuYXJyb3dXaWR0aCAvIDJ9cHhgIDogJyc7XHJcblxyXG4gICAgICAgIGNvbnN0IGJvdHRvbSA9XHJcbiAgICAgICAgICAgIHBvc1sxXSA9PT0gJ2Fib3ZlJ1xyXG4gICAgICAgICAgICAgICAgPyBgJHt0aGlzLmFycm93T2Zmc2V0WSAtIHRoaXMuYXJyb3dIZWlnaHQgLyAyfXB4YFxyXG4gICAgICAgICAgICAgICAgOiBwb3NbMV0gPT09ICdjZW50ZXInXHJcbiAgICAgICAgICAgICAgICAgICAgPyBgY2FsYyg1MCUgLSAke3RoaXMuYXJyb3dIZWlnaHQgLyAyfXB4KWBcclxuICAgICAgICAgICAgICAgICAgICA6ICcnO1xyXG4gICAgICAgIGNvbnN0IHRvcCA9IHBvc1sxXSA9PT0gJ2JlbG93JyA/IGAke3RoaXMuYXJyb3dPZmZzZXRZIC0gdGhpcy5hcnJvd0hlaWdodCAvIDJ9cHhgIDogJyc7XHJcblxyXG4gICAgICAgIHRoaXMucG9wb3ZlckFycm93U3R5bGVzID1cclxuICAgICAgICAgICAgcG9zWzBdID09PSAnYWJvdmUnIHx8IHBvc1swXSA9PT0gJ2JlbG93J1xyXG4gICAgICAgICAgICAgICAgPyB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGVmdDogdGhpcy5fZGlyLnZhbHVlID09PSAnbHRyJyA/IGxlZnQgOiByaWdodCxcclxuICAgICAgICAgICAgICAgICAgICByaWdodDogdGhpcy5fZGlyLnZhbHVlID09PSAnbHRyJyA/IHJpZ2h0IDogbGVmdCxcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIDoge1xyXG4gICAgICAgICAgICAgICAgICAgIHRvcCxcclxuICAgICAgICAgICAgICAgICAgICBib3R0b20sXHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogSXQncyBuZWNlc3NhcnkgdG8gc2V0IHBvc2l0aW9uLWJhc2VkIGNsYXNzZXMgdG8gZW5zdXJlIHRoZSBwb3BvdmVyIHBhbmVsIGFuaW1hdGlvblxyXG4gICAgICogZm9sZHMgb3V0IGZyb20gdGhlIGNvcnJlY3QgZGlyZWN0aW9uLlxyXG4gICAgICovXHJcbiAgICBzZXRQb3NpdGlvbkNsYXNzZXMocG9zID0gdGhpcy5wb3NpdGlvbik6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuY2xhc3NMaXN0WydjbWF0LXBvcG92ZXItYmVmb3JlLWFib3ZlJ10gPSBwb3NbMF0gPT09ICdiZWZvcmUnICYmIHBvc1sxXSA9PT0gJ2Fib3ZlJztcclxuICAgICAgICB0aGlzLmNsYXNzTGlzdFsnY21hdC1wb3BvdmVyLWJlZm9yZS1jZW50ZXInXSA9IHBvc1swXSA9PT0gJ2JlZm9yZScgJiYgcG9zWzFdID09PSAnY2VudGVyJztcclxuICAgICAgICB0aGlzLmNsYXNzTGlzdFsnY21hdC1wb3BvdmVyLWJlZm9yZS1iZWxvdyddID0gcG9zWzBdID09PSAnYmVmb3JlJyAmJiBwb3NbMV0gPT09ICdiZWxvdyc7XHJcbiAgICAgICAgdGhpcy5jbGFzc0xpc3RbJ2NtYXQtcG9wb3Zlci1hZnRlci1hYm92ZSddID0gcG9zWzBdID09PSAnYWZ0ZXInICYmIHBvc1sxXSA9PT0gJ2Fib3ZlJztcclxuICAgICAgICB0aGlzLmNsYXNzTGlzdFsnY21hdC1wb3BvdmVyLWFmdGVyLWNlbnRlciddID0gcG9zWzBdID09PSAnYWZ0ZXInICYmIHBvc1sxXSA9PT0gJ2NlbnRlcic7XHJcbiAgICAgICAgdGhpcy5jbGFzc0xpc3RbJ2NtYXQtcG9wb3Zlci1hZnRlci1iZWxvdyddID0gcG9zWzBdID09PSAnYWZ0ZXInICYmIHBvc1sxXSA9PT0gJ2JlbG93JztcclxuICAgICAgICB0aGlzLmNsYXNzTGlzdFsnY21hdC1wb3BvdmVyLWFib3ZlLWJlZm9yZSddID0gcG9zWzBdID09PSAnYWJvdmUnICYmIHBvc1sxXSA9PT0gJ2JlZm9yZSc7XHJcbiAgICAgICAgdGhpcy5jbGFzc0xpc3RbJ2NtYXQtcG9wb3Zlci1hYm92ZS1jZW50ZXInXSA9IHBvc1swXSA9PT0gJ2Fib3ZlJyAmJiBwb3NbMV0gPT09ICdjZW50ZXInO1xyXG4gICAgICAgIHRoaXMuY2xhc3NMaXN0WydjbWF0LXBvcG92ZXItYWJvdmUtYWZ0ZXInXSA9IHBvc1swXSA9PT0gJ2Fib3ZlJyAmJiBwb3NbMV0gPT09ICdhZnRlcic7XHJcbiAgICAgICAgdGhpcy5jbGFzc0xpc3RbJ2NtYXQtcG9wb3Zlci1iZWxvdy1iZWZvcmUnXSA9IHBvc1swXSA9PT0gJ2JlbG93JyAmJiBwb3NbMV0gPT09ICdiZWZvcmUnO1xyXG4gICAgICAgIHRoaXMuY2xhc3NMaXN0WydjbWF0LXBvcG92ZXItYmVsb3ctY2VudGVyJ10gPSBwb3NbMF0gPT09ICdiZWxvdycgJiYgcG9zWzFdID09PSAnY2VudGVyJztcclxuICAgICAgICB0aGlzLmNsYXNzTGlzdFsnY21hdC1wb3BvdmVyLWJlbG93LWFmdGVyJ10gPSBwb3NbMF0gPT09ICdiZWxvdycgJiYgcG9zWzFdID09PSAnYWZ0ZXInO1xyXG4gICAgfVxyXG59XHJcbiIsIjxuZy10ZW1wbGF0ZT5cclxuICAgIDxkaXYgIGNsYXNzPVwiY21hdC1wb3BvdmVyLXBhbmVsIHNoYWRvd1wiIHJvbGU9XCJkaWFsb2dcIiBbbmdDbGFzc109XCJjbGFzc0xpc3RcIiBbbmdTdHlsZV09XCJwb3BvdmVyUGFuZWxTdHlsZXNcIlxyXG4gICAgICAgIFtALmRpc2FibGVkXT1cImRpc2FibGVBbmltYXRpb25cIiBbQHRyYW5zZm9ybV09XCInZW50ZXInXCIgKGtleWRvd24pPVwiaGFuZGxlS2V5ZG93bigkZXZlbnQpXCIgKGNsaWNrKT1cIm9uQ2xpY2soKVwiIChmb2N1cyk9XCJvbkZvY3VzKClcIlxyXG4gICAgICAgIChtb3VzZW92ZXIpPVwib25Nb3VzZU92ZXIoKVwiIChtb3VzZWxlYXZlKT1cIm9uTW91c2VMZWF2ZSgpXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNtYXQtcG9wb3Zlci1kaXJlY3Rpb24tYXJyb3dcIiBbbmdTdHlsZV09XCJwb3BvdmVyQXJyb3dTdHlsZXNcIj48L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY21hdC1wb3BvdmVyLWNvbnRlbnRcIiBbbmdTdHlsZV09XCJwb3BvdmVyQ29udGVudFN0eWxlc1wiIFtjZGtUcmFwRm9jdXNdPVwiZm9jdXNUcmFwRW5hYmxlZFwiXHJcbiAgICAgICAgICAgIFtjZGtUcmFwRm9jdXNBdXRvQ2FwdHVyZV09XCJmb2N1c1RyYXBBdXRvQ2FwdHVyZUVuYWJsZWRcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+Il19
348
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbWF0L2NvbXBvbmVudHMvcG9wb3Zlci9wb3BvdmVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NtYXQvY29tcG9uZW50cy9wb3BvdmVyL3BvcG92ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRS9DLE9BQU8sRUFBZ0IscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM1RSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ25ELE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsU0FBUyxFQUVULFlBQVksRUFDWixXQUFXLEVBQ1gsS0FBSyxFQUVMLFFBQVEsRUFDUixNQUFNLEVBQ04sV0FBVyxFQUNYLFNBQVMsRUFDVCxpQkFBaUIsR0FDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxrQ0FBa0MsRUFBRSxvQ0FBb0MsRUFBRSxNQUFNLGtCQUFrQixDQUFDOzs7O0FBZTVHLE1BQU0sT0FBTyxvQkFBb0I7SUFzRDdCLFlBQ3dCLElBQW9CLEVBQ2hDLFdBQXVCO1FBRFgsU0FBSSxHQUFKLElBQUksQ0FBZ0I7UUFDaEMsZ0JBQVcsR0FBWCxXQUFXLENBQVk7UUFqRG5DLGdEQUFnRDtRQUN0QyxXQUFNLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUlsQixTQUFJLEdBQUcsUUFBUSxDQUFDO1FBQzFDLGtFQUFrRTtRQUVsRSx1QkFBa0IsR0FBRyxFQUFFLENBQUM7UUFFeEIsa0VBQWtFO1FBRTNELHVCQUFrQixHQUFHLEVBQUUsQ0FBQztRQUUvQixvRUFBb0U7UUFF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VztzQkFEZCxLQUFLO2dCQVlGLGlCQUFpQjtzQkFEcEIsS0FBSztnQkFXRixvQkFBb0I7c0JBRHZCLEtBQUs7Z0JBWUYsZ0JBQWdCO3NCQURuQixLQUFLO2dCQVlGLGdCQUFnQjtzQkFEbkIsS0FBSztnQkFZRiwyQkFBMkI7c0JBRDlCLEtBQUs7Z0JBYUYsVUFBVTtzQkFEYixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uICovXHJcbmltcG9ydCB7IEFuaW1hdGlvbkV2ZW50IH0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XHJcbmltcG9ydCB7IEExMXlNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XHJcbmltcG9ydCB7IERpcmVjdGlvbmFsaXR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2JpZGknO1xyXG5pbXBvcnQgeyBCb29sZWFuSW5wdXQsIGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XHJcbmltcG9ydCB7IE5nQ2xhc3MsIE5nU3R5bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQge1xyXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgICBDb21wb25lbnQsXHJcbiAgICBFbGVtZW50UmVmLFxyXG4gICAgRXZlbnRFbWl0dGVyLFxyXG4gICAgSG9zdEJpbmRpbmcsXHJcbiAgICBJbnB1dCxcclxuICAgIE9uRGVzdHJveSxcclxuICAgIE9wdGlvbmFsLFxyXG4gICAgT3V0cHV0LFxyXG4gICAgVGVtcGxhdGVSZWYsXHJcbiAgICBWaWV3Q2hpbGQsXHJcbiAgICBWaWV3RW5jYXBzdWxhdGlvbixcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgY21hdEFuaW1hdGlvbnMgfSBmcm9tICdjbWF0L2FuaW1hdGlvbnMnO1xyXG5pbXBvcnQgeyB0aHJvd0NtYXRQb3BvdmVySW52YWxpZFBvc2l0aW9uRW5kLCB0aHJvd0NtYXRQb3BvdmVySW52YWxpZFBvc2l0aW9uU3RhcnQgfSBmcm9tICcuL3BvcG92ZXIuZXJyb3JzJztcclxuaW1wb3J0IHsgQ21hdFBvcG92ZXJQYW5lbCB9IGZyb20gJy4vcG9wb3Zlci5pbnRlcmZhY2VzJztcclxuaW1wb3J0IHsgQ21hdFBvcG92ZXJQb3NpdGlvbiwgQ21hdFBvcG92ZXJTY3JvbGxTdHJhdGVneSwgQ21hdFBvcG92ZXJUcmlnZ2VyRXZlbnQgfSBmcm9tICcuL3BvcG92ZXIudHlwZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnY21hdC1wb3BvdmVyJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9wb3BvdmVyLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL3BvcG92ZXIuY29tcG9uZW50LnNjc3MnXSxcclxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxuICAgIGFuaW1hdGlvbnM6IFtjbWF0QW5pbWF0aW9uc10sXHJcbiAgICBleHBvcnRBczogJ2NtYXRQb3BvdmVyJyxcclxuICAgIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgICBpbXBvcnRzOiBbTmdTdHlsZSwgTmdDbGFzcyxBMTF5TW9kdWxlXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ21hdFBvcG92ZXJDb21wb25lbnQgaW1wbGVtZW50cyBDbWF0UG9wb3ZlclBhbmVsLCBPbkRlc3Ryb3kge1xyXG4gICAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX2Nsb3NlT25QYW5lbENsaWNrOiBCb29sZWFuSW5wdXQ7XHJcbiAgICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfY2xvc2VPbkJhY2tkcm9wQ2xpY2s6IEJvb2xlYW5JbnB1dDtcclxuICAgIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9kaXNhYmxlQW5pbWF0aW9uOiBCb29sZWFuSW5wdXQ7XHJcbiAgICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfZm9jdXNUcmFwRW5hYmxlZDogQm9vbGVhbklucHV0O1xyXG4gICAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX2ZvY3VzVHJhcEF1dG9DYXB0dXJlRW5hYmxlZDogQm9vbGVhbklucHV0O1xyXG5cclxuICAgIC8qKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIHBvcG92ZXIgaXMgY2xvc2VkLiAqL1xyXG4gICAgQE91dHB1dCgpIGNsb3NlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuXHJcbiAgICBAVmlld0NoaWxkKFRlbXBsYXRlUmVmKSB0ZW1wbGF0ZVJlZiE6IFRlbXBsYXRlUmVmPGFueT47XHJcblxyXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLnJvbGUnKSByb2xlID0gJ2RpYWxvZyc7XHJcbiAgICAvKiogQ29uZmlnIG9iamVjdCB0byBiZSBwYXNzZWQgaW50byB0aGUgcG9wb3ZlcidzIGFycm93IG5nU3R5bGUgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwb3BvdmVyUGFuZWxTdHlsZXMgPSB7fTtcclxuXHJcbiAgICAvKiogQ29uZmlnIG9iamVjdCB0byBiZSBwYXNzZWQgaW50byB0aGUgcG9wb3ZlcidzIGFycm93IG5nU3R5bGUgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgcG9wb3ZlckFycm93U3R5bGVzID0ge307XHJcblxyXG4gICAgLyoqIENvbmZpZyBvYmplY3QgdG8gYmUgcGFzc2VkIGludG8gdGhlIHBvcG92ZXIncyBjb250ZW50IG5nU3R5bGUgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgcG9wb3ZlckNvbnRlbnRTdHlsZXMgPSB7fTtcclxuICAgIC8qKiBXaGV0aGVyIHBvcG92ZXIncyBgdGFyZ2V0RWxlbWVudGAgaXMgZGVmaW5lZCAqL1xyXG4gICAgcHVibGljIGNvbnRhaW5lclBvc2l0aW9uaW5nID0gZmFsc2U7XHJcblxyXG4gICAgLyoqIENsb3NpbmcgZGlzYWJsZWQgb24gcG9wb3ZlciAqL1xyXG4gICAgcHVibGljIGNsb3NlRGlzYWJsZWQgPSBmYWxzZTtcclxuXHJcbiAgICAvKiogQ29uZmlnIG9iamVjdCB0byBiZSBwYXNzZWQgaW50byB0aGUgcG9wb3ZlcidzIG5nQ2xhc3MgKi9cclxuICAgIGNsYXNzTGlzdDogUmVjb3JkPHN0cmluZywgYm9vbGVhbj4gPSB7fTtcclxuXHJcbiAgICAvKiogRW1pdHMgdGhlIGN1cnJlbnQgYW5pbWF0aW9uIHN0YXRlIHdoZW5ldmVyIGl0IGNoYW5nZXMuICovXHJcbiAgICBfb25BbmltYXRpb25TdGF0ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8QW5pbWF0aW9uRXZlbnQ+KCk7XHJcblxyXG4gICAgLyoqIFNldHRpbmdzIGZvciBwb3BvdmVyLCB2aWV3IHNldHRlcnMgYW5kIGdldHRlcnMgZm9yIG1vcmUgZGV0YWlsICovXHJcbiAgICBwcml2YXRlIF9wb3NpdGlvbjogQ21hdFBvcG92ZXJQb3NpdGlvbiA9IFsnYmVsb3cnLCAnYWZ0ZXInXTtcclxuICAgIHByaXZhdGUgX3RyaWdnZXJFdmVudDogQ21hdFBvcG92ZXJUcmlnZ2VyRXZlbnQgPSAnaG92ZXInO1xyXG4gICAgcHJpdmF0ZSBfc2Nyb2xsU3RyYXRlZ3k6IENtYXRQb3BvdmVyU2Nyb2xsU3RyYXRlZ3kgPSAncmVwb3NpdGlvbic7XHJcbiAgICBwcml2YXRlIF9lbnRlckRlbGF5ID0gMTAwO1xyXG4gICAgcHJpdmF0ZSBfbGVhdmVEZWxheSA9IDEwMDtcclxuICAgIHByaXZhdGUgX3BhbmVsT2Zmc2V0WCA9IDA7XHJcbiAgICBwcml2YXRlIF9wYW5lbE9mZnNldFkgPSAwO1xyXG4gICAgcHJpdmF0ZSBfY2xvc2VPblBhbmVsQ2xpY2sgPSBmYWxzZTtcclxuICAgIHByaXZhdGUgX2Nsb3NlT25CYWNrZHJvcENsaWNrID0gdHJ1ZTtcclxuICAgIHByaXZhdGUgX2Rpc2FibGVBbmltYXRpb24gPSBmYWxzZTtcclxuICAgIHByaXZhdGUgX2ZvY3VzVHJhcEVuYWJsZWQgPSB0cnVlO1xyXG4gICAgcHJpdmF0ZSBfZm9jdXNUcmFwQXV0b0NhcHR1cmVFbmFibGVkID0gdHJ1ZTtcclxuICAgIHByaXZhdGUgX2Fycm93T2Zmc2V0WCA9IDIwO1xyXG4gICAgcHJpdmF0ZSBfYXJyb3dPZmZzZXRZID0gMjA7XHJcbiAgICBwcml2YXRlIF9hcnJvd1dpZHRoID0gMTY7XHJcbiAgICBwcml2YXRlIF9hcnJvd0hlaWdodCA9IDE2O1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIEBPcHRpb25hbCgpIHByaXZhdGUgX2RpcjogRGlyZWN0aW9uYWxpdHksXHJcbiAgICAgICAgcHJpdmF0ZSBfZWxlbWVudFJlZjogRWxlbWVudFJlZlxyXG4gICAgKSB7XHJcbiAgICAgICAgdGhpcy5zZXRQb3NpdGlvbkNsYXNzZXMoKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgcG9zaXRpb24oKTogQ21hdFBvcG92ZXJQb3NpdGlvbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Bvc2l0aW9uO1xyXG4gICAgfVxyXG4gICAgLyoqIFBvc2l0aW9uIG9mIHRoZSBwb3BvdmVyLiAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHNldCBwb3NpdGlvbih2YWx1ZTogQ21hdFBvcG92ZXJQb3NpdGlvbikge1xyXG4gICAgICAgIGlmICghWydiZWZvcmUnLCAnYWZ0ZXInLCAnYWJvdmUnLCAnYmVsb3cnXS5pbmNsdWRlcyh2YWx1ZVswXSkpIHtcclxuICAgICAgICAgICAgdGhyb3dDbWF0UG9wb3ZlckludmFsaWRQb3NpdGlvblN0YXJ0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghWydiZWZvcmUnLCAnYWZ0ZXInLCAnYWJvdmUnLCAnYmVsb3cnLCAnY2VudGVyJ10uaW5jbHVkZXModmFsdWVbMV0pKSB7XHJcbiAgICAgICAgICAgIHRocm93Q21hdFBvcG92ZXJJbnZhbGlkUG9zaXRpb25FbmQoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5fcG9zaXRpb24gPSB2YWx1ZTtcclxuICAgICAgICB0aGlzLnNldFBvc2l0aW9uQ2xhc3NlcygpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBQb3BvdmVyIHRyaWdnZXIgZXZlbnQgKi9cclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbWVtYmVyLW9yZGVyaW5nXHJcbiAgICBnZXQgdHJpZ2dlckV2ZW50KCk6IENtYXRQb3BvdmVyVHJpZ2dlckV2ZW50IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fdHJpZ2dlckV2ZW50O1xyXG4gICAgfVxyXG4gICAgQElucHV0KClcclxuICAgIHNldCB0cmlnZ2VyRXZlbnQodmFsdWU6IENtYXRQb3BvdmVyVHJpZ2dlckV2ZW50KSB7XHJcbiAgICAgICAgdGhpcy5fdHJpZ2dlckV2ZW50ID0gdmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIFBvcG92ZXIgc2Nyb2xsIHN0cmF0ZWd5ICovXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L21lbWJlci1vcmRlcmluZ1xyXG4gICAgZ2V0IHNjcm9sbFN0cmF0ZWd5KCk6IENtYXRQb3BvdmVyU2Nyb2xsU3RyYXRlZ3kge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9zY3JvbGxTdHJhdGVneTtcclxuICAgIH1cclxuICAgIEBJbnB1dCgpXHJcbiAgICBzZXQgc2Nyb2xsU3RyYXRlZ3kodmFsdWU6IENtYXRQb3BvdmVyU2Nyb2xsU3RyYXRlZ3kpIHtcclxuICAgICAgICB0aGlzLl9zY3JvbGxTdHJhdGVneSA9IHZhbHVlO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBQb3BvdmVyIGVudGVyIGRlbGF5ICovXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L21lbWJlci1vcmRlcmluZ1xyXG4gICAgZ2V0IGVudGVyRGVsYXkoKTogbnVtYmVyIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fZW50ZXJEZWxheTtcclxuICAgIH1cclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgc2V0IGVudGVyRGVsYXkodmFsdWU6IG51bWJlcikge1xyXG4gICAgICAgIHRoaXMuX2VudGVyRGVsYXkgPSB2YWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICAvKiogUG9wb3ZlciBsZWF2ZSBkZWxheSAqL1xyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9tZW1iZXItb3JkZXJpbmdcclxuICAgIGdldCBsZWF2ZURlbGF5KCk6IG51bWJlciB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2xlYXZlRGVsYXk7XHJcbiAgICB9XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIHNldCBsZWF2ZURlbGF5KHZhbHVlOiBudW1iZXIpIHtcclxuICAgICAgICB0aGlzLl9sZWF2ZURlbGF5ID0gdmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIFBvcG92ZXIgdGFyZ2V0IG9mZnNldCB4ICovXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L21lbWJlci1vcmRlcmluZ1xyXG4gICAgZ2V0IHhPZmZzZXQoKTogbnVtYmVyIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fcGFuZWxPZmZzZXRYO1xyXG4gICAgfVxyXG4gICAgQElucHV0KClcclxuICAgIHNldCB4T2Zmc2V0KHZhbHVlOiBudW1iZXIpIHtcclxuICAgICAgICB0aGlzLl9wYW5lbE9mZnNldFggPSB2YWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICAvKiogUG9wb3ZlciB0YXJnZXQgb2Zmc2V0IHkgKi9cclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbWVtYmVyLW9yZGVyaW5nXHJcbiAgICBnZXQgeU9mZnNldCgpOiBudW1iZXIge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9wYW5lbE9mZnNldFk7XHJcbiAgICB9XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIHNldCB5T2Zmc2V0KHZhbHVlOiBudW1iZXIpIHtcclxuICAgICAgICB0aGlzLl9wYW5lbE9mZnNldFkgPSB2YWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICAvKiogUG9wb3ZlciBhcnJvdyBvZmZzZXQgeCAqL1xyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9tZW1iZXItb3JkZXJpbmdcclxuICAgIGdldCBhcnJvd09mZnNldFgoKTogbnVtYmVyIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fYXJyb3dPZmZzZXRYO1xyXG4gICAgfVxyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBzZXQgYXJyb3dPZmZzZXRYKHZhbHVlOiBudW1iZXIpIHtcclxuICAgICAgICB0aGlzLl9hcnJvd09mZnNldFggPSB2YWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICAvKiogUG9wb3ZlciBhcnJvdyBvZmZzZXQgeSAqL1xyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9tZW1iZXItb3JkZXJpbmdcclxuICAgIGdldCBhcnJvd09mZnNldFkoKTogbnVtYmVyIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fYXJyb3dPZmZzZXRZO1xyXG4gICAgfVxyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBzZXQgYXJyb3dPZmZzZXRZKHZhbHVlOiBudW1iZXIpIHtcclxuICAgICAgICB0aGlzLl9hcnJvd09mZnNldFkgPSB2YWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICAvKiogUG9wb3ZlciBhcnJvdyB3aWR0aCAqL1xyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9tZW1iZXItb3JkZXJpbmdcclxuICAgIGdldCBhcnJvd1dpZHRoKCk6IG51bWJlciB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Fycm93V2lkdGg7XHJcbiAgICB9XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIHNldCBhcnJvd1dpZHRoKHZhbHVlOiBudW1iZXIpIHtcclxuICAgICAgICB0aGlzLl9hcnJvd1dpZHRoID0gdmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIFBvcG92ZXIgYXJyb3cgaGVpZ2h0ICovXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L21lbWJlci1vcmRlcmluZ1xyXG4gICAgZ2V0IGFycm93SGVpZ2h0KCk6IG51bWJlciB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Fycm93SGVpZ2h0O1xyXG4gICAgfVxyXG4gICAgQElucHV0KClcclxuICAgIHNldCBhcnJvd0hlaWdodCh2YWx1ZTogbnVtYmVyKSB7XHJcbiAgICAgICAgdGhpcy5fYXJyb3dIZWlnaHQgPSB2YWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICAvKiogUG9wb3ZlciBjbG9zZSBvbiBjb250YWluZXIgY2xpY2sgKi9cclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbWVtYmVyLW9yZGVyaW5nXHJcbiAgICBnZXQgY2xvc2VPblBhbmVsQ2xpY2soKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Nsb3NlT25QYW5lbENsaWNrO1xyXG4gICAgfVxyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBzZXQgY2xvc2VPblBhbmVsQ2xpY2sodmFsdWU6IGJvb2xlYW4pIHtcclxuICAgICAgICB0aGlzLl9jbG9zZU9uUGFuZWxDbGljayA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIFBvcG92ZXIgY2xvc2Ugb24gYmFja2Ryb3AgY2xpY2sgKi9cclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbWVtYmVyLW9yZGVyaW5nXHJcbiAgICBnZXQgY2xvc2VPbkJhY2tkcm9wQ2xpY2soKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Nsb3NlT25CYWNrZHJvcENsaWNrO1xyXG4gICAgfVxyXG4gICAgQElucHV0KClcclxuICAgIHNldCBjbG9zZU9uQmFja2Ryb3BDbGljayh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgICAgIHRoaXMuX2Nsb3NlT25CYWNrZHJvcENsaWNrID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICAvKiogRGlzYWJsZSBhbmltYXRpb25zIG9mIHBvcG92ZXIgYW5kIGFsbCBjaGlsZCBlbGVtZW50cyAqL1xyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9tZW1iZXItb3JkZXJpbmdcclxuICAgIGdldCBkaXNhYmxlQW5pbWF0aW9uKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9kaXNhYmxlQW5pbWF0aW9uO1xyXG4gICAgfVxyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBzZXQgZGlzYWJsZUFuaW1hdGlvbih2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgICAgIHRoaXMuX2Rpc2FibGVBbmltYXRpb24gPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBQb3BvdmVyIGZvY3VzIHRyYXAgdXNpbmcgY2RrVHJhcEZvY3VzICovXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L21lbWJlci1vcmRlcmluZ1xyXG4gICAgZ2V0IGZvY3VzVHJhcEVuYWJsZWQoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZvY3VzVHJhcEVuYWJsZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIHNldCBmb2N1c1RyYXBFbmFibGVkKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICAgICAgdGhpcy5fZm9jdXNUcmFwRW5hYmxlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIFBvcG92ZXIgZm9jdXMgdHJhcCBhdXRvIGNhcHR1cmUgdXNpbmcgY2RrVHJhcEZvY3VzQXV0b0NhcHR1cmUgKi9cclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbWVtYmVyLW9yZGVyaW5nXHJcbiAgICBnZXQgZm9jdXNUcmFwQXV0b0NhcHR1cmVFbmFibGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9mb2N1c1RyYXBBdXRvQ2FwdHVyZUVuYWJsZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIHNldCBmb2N1c1RyYXBBdXRvQ2FwdHVyZUVuYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcclxuICAgICAgICB0aGlzLl9mb2N1c1RyYXBBdXRvQ2FwdHVyZUVuYWJsZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhpcyBtZXRob2QgdGFrZXMgY2xhc3NlcyBzZXQgb24gdGhlIGhvc3QgbWQtcG9wb3ZlciBlbGVtZW50IGFuZCBhcHBsaWVzIHRoZW0gb24gdGhlXHJcbiAgICAgKiBwb3BvdmVyIHRlbXBsYXRlIHRoYXQgZGlzcGxheXMgaW4gdGhlIG92ZXJsYXkgY29udGFpbmVyLiAgT3RoZXJ3aXNlLCBpdCdzIGRpZmZpY3VsdFxyXG4gICAgICogdG8gc3R5bGUgdGhlIGNvbnRhaW5pbmcgcG9wb3ZlciBmcm9tIG91dHNpZGUgdGhlIGNvbXBvbmVudC5cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gY2xhc3NlcyBsaXN0IG9mIGNsYXNzIG5hbWVzXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBzZXQgcGFuZWxDbGFzcyhjbGFzc2VzOiBzdHJpbmcpIHtcclxuICAgICAgICBpZiAoY2xhc3Nlcz8ubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY2xhc3NMaXN0ID0gY2xhc3Nlcy5zcGxpdCgnICcpLnJlZHVjZSgob2JqOiBhbnksIGNsYXNzTmFtZTogc3RyaW5nKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBvYmpbY2xhc3NOYW1lXSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gb2JqO1xyXG4gICAgICAgICAgICB9LCB7fSk7XHJcblxyXG4gICAgICAgICAgICB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2xhc3NOYW1lID0gJyc7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0UG9zaXRpb25DbGFzc2VzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuZW1pdENsb3NlRXZlbnQoKTtcclxuICAgICAgICB0aGlzLmNsb3NlZC5jb21wbGV0ZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBIYW5kbGUgYSBrZXlib2FyZCBldmVudCBmcm9tIHRoZSBwb3BvdmVyLCBkZWxlZ2F0aW5nIHRvIHRoZSBhcHByb3ByaWF0ZSBhY3Rpb24uICovXHJcbiAgICBoYW5kbGVLZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XHJcbiAgICAgICAgc3dpdGNoIChldmVudC5jb2RlKSB7XHJcbiAgICAgICAgICAgIGNhc2UgJ0VzY2FwZSc6XHJcbiAgICAgICAgICAgICAgICB0aGlzLmVtaXRDbG9zZUV2ZW50KCk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhpcyBlbWl0cyBhIGNsb3NlIGV2ZW50IHRvIHdoaWNoIHRoZSB0cmlnZ2VyIGlzIHN1YnNjcmliZWQuIFdoZW4gZW1pdHRlZCwgdGhlXHJcbiAgICAgKiB0cmlnZ2VyIHdpbGwgY2xvc2UgdGhlIHBvcG92ZXIuXHJcbiAgICAgKi9cclxuICAgIGVtaXRDbG9zZUV2ZW50KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuY2xvc2VkLmVtaXQoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKiogQ2xvc2UgcG9wb3ZlciBvbiBjbGljayBpZiBjbG9zZU9uUGFuZWxDbGljayBpcyB0cnVlICovXHJcbiAgICBvbkNsaWNrKCk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLmNsb3NlT25QYW5lbENsaWNrKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZW1pdENsb3NlRXZlbnQoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUT0RPOiBSZWZhY3RvciB3aGVuIEBhbmd1bGFyL2NkayBpbmNsdWRlcyBmZWF0dXJlIEkgbWVudGlvbmVkIG9uIGdpdGh1YiBzZWUgbGluayBiZWxvdy5cclxuICAgICAqIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL21hdGVyaWFsMi9wdWxsLzU0OTMjaXNzdWVjb21tZW50LTMxMzA4NTMyM1xyXG4gICAgICovXHJcbiAgICAvKiogRGlzYWJsZXMgY2xvc2Ugb2YgcG9wb3ZlciB3aGVuIGxlYXZpbmcgdHJpZ2dlciBlbGVtZW50IGFuZCBtb3VzZSBvdmVyIHRoZSBwb3BvdmVyICovXHJcbiAgICBvbk1vdXNlT3ZlcigpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy50cmlnZ2VyRXZlbnQgPT09ICdob3ZlcicpIHtcclxuICAgICAgICAgICAgdGhpcy5jbG9zZURpc2FibGVkID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgb25Gb2N1cygpOiB2b2lkIHtcclxuICAgICAgICAvL2RvIHNvbWV0aW5nXHJcbiAgICB9XHJcblxyXG4gICAgLyoqIEVuYWJsZXMgY2xvc2Ugb2YgcG9wb3ZlciB3aGVuIG1vdXNlIGxlYXZpbmcgcG9wb3ZlciBlbGVtZW50ICovXHJcbiAgICBvbk1vdXNlTGVhdmUoKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMudHJpZ2dlckV2ZW50ID09PSAnaG92ZXInKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY2xvc2VEaXNhYmxlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLmVtaXRDbG9zZUV2ZW50KCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIFRPRE86IFJlZmFjdG9yIGhvdyBzdHlsZXMgYXJlIHNldCBhbmQgdXBkYXRlZCBvbiB0aGUgY29tcG9uZW50LCB1c2UgYmVzdCBwcmFjdGljZXMuXHJcbiAgICAvLyBUT0RPOiBJZiBhcnJvdyBsZWZ0IGFuZCByaWdodCBwb3NpdGlvbmluZyBpcyByZXF1ZXN0ZWQsIHNlZSBpZiBmbGV4IGRpcmVjdGlvbiBjYW4gYmUgdXNlZCB0byB3b3JrIHdpdGggb3JkZXIuXHJcbiAgICAvKiogU2V0cyB0aGUgY3VycmVudCBzdHlsZXMgZm9yIHRoZSBwb3BvdmVyIHRvIGFsbG93IGZvciBkeW5hbWljYWxseSBjaGFuZ2luZyBzZXR0aW5ncyAqL1xyXG4gICAgc2V0Q3VycmVudFN0eWxlcyhwb3MgPSB0aGlzLnBvc2l0aW9uKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgbGVmdCA9XHJcbiAgICAgICAgICAgIHBvc1sxXSA9PT0gJ2FmdGVyJ1xyXG4gICAgICAgICAgICAgICAgPyBgJHt0aGlzLmFycm93T2Zmc2V0WCAtIHRoaXMuYXJyb3dXaWR0aCAvIDJ9cHhgXHJcbiAgICAgICAgICAgICAgICA6IHBvc1sxXSA9PT0gJ2NlbnRlcidcclxuICAgICAgICAgICAgICAgICAgICA/IGBjYWxjKDUwJSAtICR7dGhpcy5hcnJvd1dpZHRoIC8gMn1weClgXHJcbiAgICAgICAgICAgICAgICAgICAgOiAnJztcclxuICAgICAgICBjb25zdCByaWdodCA9IHBvc1sxXSA9PT0gJ2JlZm9yZScgPyBgJHt0aGlzLmFycm93T2Zmc2V0WCAtIHRoaXMuYXJyb3dXaWR0aCAvIDJ9cHhgIDogJyc7XHJcblxyXG4gICAgICAgIGNvbnN0IGJvdHRvbSA9XHJcbiAgICAgICAgICAgIHBvc1sxXSA9PT0gJ2Fib3ZlJ1xyXG4gICAgICAgICAgICAgICAgPyBgJHt0aGlzLmFycm93T2Zmc2V0WSAtIHRoaXMuYXJyb3dIZWlnaHQgLyAyfXB4YFxyXG4gICAgICAgICAgICAgICAgOiBwb3NbMV0gPT09ICdjZW50ZXInXHJcbiAgICAgICAgICAgICAgICAgICAgPyBgY2FsYyg1MCUgLSAke3RoaXMuYXJyb3dIZWlnaHQgLyAyfXB4KWBcclxuICAgICAgICAgICAgICAgICAgICA6ICcnO1xyXG4gICAgICAgIGNvbnN0IHRvcCA9IHBvc1sxXSA9PT0gJ2JlbG93JyA/IGAke3RoaXMuYXJyb3dPZmZzZXRZIC0gdGhpcy5hcnJvd0hlaWdodCAvIDJ9cHhgIDogJyc7XHJcblxyXG4gICAgICAgIHRoaXMucG9wb3ZlckFycm93U3R5bGVzID1cclxuICAgICAgICAgICAgcG9zWzBdID09PSAnYWJvdmUnIHx8IHBvc1swXSA9PT0gJ2JlbG93J1xyXG4gICAgICAgICAgICAgICAgPyB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGVmdDogdGhpcy5fZGlyLnZhbHVlID09PSAnbHRyJyA/IGxlZnQgOiByaWdodCxcclxuICAgICAgICAgICAgICAgICAgICByaWdodDogdGhpcy5fZGlyLnZhbHVlID09PSAnbHRyJyA/IHJpZ2h0IDogbGVmdCxcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIDoge1xyXG4gICAgICAgICAgICAgICAgICAgIHRvcCxcclxuICAgICAgICAgICAgICAgICAgICBib3R0b20sXHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogSXQncyBuZWNlc3NhcnkgdG8gc2V0IHBvc2l0aW9uLWJhc2VkIGNsYXNzZXMgdG8gZW5zdXJlIHRoZSBwb3BvdmVyIHBhbmVsIGFuaW1hdGlvblxyXG4gICAgICogZm9sZHMgb3V0IGZyb20gdGhlIGNvcnJlY3QgZGlyZWN0aW9uLlxyXG4gICAgICovXHJcbiAgICBzZXRQb3NpdGlvbkNsYXNzZXMocG9zID0gdGhpcy5wb3NpdGlvbik6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuY2xhc3NMaXN0WydjbWF0LXBvcG92ZXItYmVmb3JlLWFib3ZlJ10gPSBwb3NbMF0gPT09ICdiZWZvcmUnICYmIHBvc1sxXSA9PT0gJ2Fib3ZlJztcclxuICAgICAgICB0aGlzLmNsYXNzTGlzdFsnY21hdC1wb3BvdmVyLWJlZm9yZS1jZW50ZXInXSA9IHBvc1swXSA9PT0gJ2JlZm9yZScgJiYgcG9zWzFdID09PSAnY2VudGVyJztcclxuICAgICAgICB0aGlzLmNsYXNzTGlzdFsnY21hdC1wb3BvdmVyLWJlZm9yZS1iZWxvdyddID0gcG9zWzBdID09PSAnYmVmb3JlJyAmJiBwb3NbMV0gPT09ICdiZWxvdyc7XHJcbiAgICAgICAgdGhpcy5jbGFzc0xpc3RbJ2NtYXQtcG9wb3Zlci1hZnRlci1hYm92ZSddID0gcG9zWzBdID09PSAnYWZ0ZXInICYmIHBvc1sxXSA9PT0gJ2Fib3ZlJztcclxuICAgICAgICB0aGlzLmNsYXNzTGlzdFsnY21hdC1wb3BvdmVyLWFmdGVyLWNlbnRlciddID0gcG9zWzBdID09PSAnYWZ0ZXInICYmIHBvc1sxXSA9PT0gJ2NlbnRlcic7XHJcbiAgICAgICAgdGhpcy5jbGFzc0xpc3RbJ2NtYXQtcG9wb3Zlci1hZnRlci1iZWxvdyddID0gcG9zWzBdID09PSAnYWZ0ZXInICYmIHBvc1sxXSA9PT0gJ2JlbG93JztcclxuICAgICAgICB0aGlzLmNsYXNzTGlzdFsnY21hdC1wb3BvdmVyLWFib3ZlLWJlZm9yZSddID0gcG9zWzBdID09PSAnYWJvdmUnICYmIHBvc1sxXSA9PT0gJ2JlZm9yZSc7XHJcbiAgICAgICAgdGhpcy5jbGFzc0xpc3RbJ2NtYXQtcG9wb3Zlci1hYm92ZS1jZW50ZXInXSA9IHBvc1swXSA9PT0gJ2Fib3ZlJyAmJiBwb3NbMV0gPT09ICdjZW50ZXInO1xyXG4gICAgICAgIHRoaXMuY2xhc3NMaXN0WydjbWF0LXBvcG92ZXItYWJvdmUtYWZ0ZXInXSA9IHBvc1swXSA9PT0gJ2Fib3ZlJyAmJiBwb3NbMV0gPT09ICdhZnRlcic7XHJcbiAgICAgICAgdGhpcy5jbGFzc0xpc3RbJ2NtYXQtcG9wb3Zlci1iZWxvdy1iZWZvcmUnXSA9IHBvc1swXSA9PT0gJ2JlbG93JyAmJiBwb3NbMV0gPT09ICdiZWZvcmUnO1xyXG4gICAgICAgIHRoaXMuY2xhc3NMaXN0WydjbWF0LXBvcG92ZXItYmVsb3ctY2VudGVyJ10gPSBwb3NbMF0gPT09ICdiZWxvdycgJiYgcG9zWzFdID09PSAnY2VudGVyJztcclxuICAgICAgICB0aGlzLmNsYXNzTGlzdFsnY21hdC1wb3BvdmVyLWJlbG93LWFmdGVyJ10gPSBwb3NbMF0gPT09ICdiZWxvdycgJiYgcG9zWzFdID09PSAnYWZ0ZXInO1xyXG4gICAgfVxyXG59XHJcbiIsIjxuZy10ZW1wbGF0ZT5cclxuICAgIDxkaXYgIGNsYXNzPVwiY21hdC1wb3BvdmVyLXBhbmVsIHNoYWRvd1wiIHJvbGU9XCJkaWFsb2dcIiBbbmdDbGFzc109XCJjbGFzc0xpc3RcIiBbbmdTdHlsZV09XCJwb3BvdmVyUGFuZWxTdHlsZXNcIlxyXG4gICAgICAgIFtALmRpc2FibGVkXT1cImRpc2FibGVBbmltYXRpb25cIiBbQHRyYW5zZm9ybV09XCInZW50ZXInXCIgKGtleWRvd24pPVwiaGFuZGxlS2V5ZG93bigkZXZlbnQpXCIgKGNsaWNrKT1cIm9uQ2xpY2soKVwiIChmb2N1cyk9XCJvbkZvY3VzKClcIlxyXG4gICAgICAgIChtb3VzZW92ZXIpPVwib25Nb3VzZU92ZXIoKVwiIChtb3VzZWxlYXZlKT1cIm9uTW91c2VMZWF2ZSgpXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNtYXQtcG9wb3Zlci1kaXJlY3Rpb24tYXJyb3dcIiBbbmdTdHlsZV09XCJwb3BvdmVyQXJyb3dTdHlsZXNcIj48L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY21hdC1wb3BvdmVyLWNvbnRlbnRcIiBbbmdTdHlsZV09XCJwb3BvdmVyQ29udGVudFN0eWxlc1wiIFtjZGtUcmFwRm9jdXNdPVwiZm9jdXNUcmFwRW5hYmxlZFwiXHJcbiAgICAgICAgICAgIFtjZGtUcmFwRm9jdXNBdXRvQ2FwdHVyZV09XCJmb2N1c1RyYXBBdXRvQ2FwdHVyZUVuYWJsZWRcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+Il19