carbon-components-angular 5.8.1 → 5.9.0

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 (301) hide show
  1. package/docs/documentation/classes/NumberChange.html +5 -0
  2. package/docs/documentation/components/Accordion.html +1 -1
  3. package/docs/documentation/components/AccordionItem.html +1 -1
  4. package/docs/documentation/components/ActionableNotification.html +1 -1
  5. package/docs/documentation/components/AlertModal.html +1 -1
  6. package/docs/documentation/components/BaseIconButton.html +1 -1
  7. package/docs/documentation/components/BaseNotification.html +1 -1
  8. package/docs/documentation/components/BaseTabHeader.html +1 -1
  9. package/docs/documentation/components/Breadcrumb.html +1 -1
  10. package/docs/documentation/components/BreadcrumbItemComponent.html +1 -1
  11. package/docs/documentation/components/ButtonSet.html +1 -1
  12. package/docs/documentation/components/Checkbox.html +1 -1
  13. package/docs/documentation/components/ClickableTile.html +1 -1
  14. package/docs/documentation/components/CodeSnippet.html +1 -1
  15. package/docs/documentation/components/ComboBox.html +22 -20
  16. package/docs/documentation/components/ContentSwitcher.html +1 -1
  17. package/docs/documentation/components/ContextMenuComponent.html +1 -1
  18. package/docs/documentation/components/ContextMenuDividerComponent.html +1 -1
  19. package/docs/documentation/components/ContextMenuGroupComponent.html +1 -1
  20. package/docs/documentation/components/ContextMenuItemComponent.html +1 -1
  21. package/docs/documentation/components/DatePicker.html +1 -1
  22. package/docs/documentation/components/DatePickerInput.html +1 -1
  23. package/docs/documentation/components/Dialog.html +1 -1
  24. package/docs/documentation/components/Documentation.html +1 -1
  25. package/docs/documentation/components/Dropdown.html +1 -1
  26. package/docs/documentation/components/DropdownList.html +85 -74
  27. package/docs/documentation/components/ExpandableTile.html +1 -1
  28. package/docs/documentation/components/FileComponent.html +1 -1
  29. package/docs/documentation/components/FileUploader.html +46 -42
  30. package/docs/documentation/components/Hamburger.html +1 -1
  31. package/docs/documentation/components/Header.html +1 -1
  32. package/docs/documentation/components/HeaderAction.html +1 -1
  33. package/docs/documentation/components/HeaderGlobal.html +1 -1
  34. package/docs/documentation/components/HeaderItem.html +1 -1
  35. package/docs/documentation/components/HeaderMenu.html +1 -1
  36. package/docs/documentation/components/HeaderNavigation.html +1 -1
  37. package/docs/documentation/components/IconButton.html +1 -1
  38. package/docs/documentation/components/InlineLoading.html +1 -1
  39. package/docs/documentation/components/Label.html +311 -252
  40. package/docs/documentation/components/ListColumn.html +1 -1
  41. package/docs/documentation/components/ListHeader.html +1 -1
  42. package/docs/documentation/components/ListRow.html +1 -1
  43. package/docs/documentation/components/Loading.html +1 -1
  44. package/docs/documentation/components/Modal.html +1 -1
  45. package/docs/documentation/components/ModalFooter.html +1 -1
  46. package/docs/documentation/components/ModalHeader.html +10 -23
  47. package/docs/documentation/components/Notification.html +1 -1
  48. package/docs/documentation/components/NumberComponent.html +105 -64
  49. package/docs/documentation/components/OverflowMenu.html +1 -1
  50. package/docs/documentation/components/OverflowMenuCustomPane.html +1 -1
  51. package/docs/documentation/components/OverflowMenuOption.html +1 -1
  52. package/docs/documentation/components/OverflowMenuPane.html +1 -1
  53. package/docs/documentation/components/Overlay.html +1 -1
  54. package/docs/documentation/components/Pagination.html +1 -1
  55. package/docs/documentation/components/PaginationNav.html +1 -1
  56. package/docs/documentation/components/PaginationNavItem.html +1 -1
  57. package/docs/documentation/components/PaginationOverflow.html +1 -1
  58. package/docs/documentation/components/Panel.html +1 -1
  59. package/docs/documentation/components/Placeholder.html +1 -1
  60. package/docs/documentation/components/PopoverContent.html +1 -1
  61. package/docs/documentation/components/ProgressBar.html +1 -1
  62. package/docs/documentation/components/ProgressIndicator.html +23 -36
  63. package/docs/documentation/components/Radio.html +1 -1
  64. package/docs/documentation/components/RadioGroup.html +1 -1
  65. package/docs/documentation/components/Search.html +1 -1
  66. package/docs/documentation/components/Select.html +1 -1
  67. package/docs/documentation/components/SelectionTile.html +46 -48
  68. package/docs/documentation/components/SideNav.html +1 -1
  69. package/docs/documentation/components/SideNavItem.html +30 -24
  70. package/docs/documentation/components/SideNavMenu.html +5 -9
  71. package/docs/documentation/components/SkeletonPlaceholder.html +1 -1
  72. package/docs/documentation/components/SkeletonText.html +1 -1
  73. package/docs/documentation/components/Slider.html +107 -90
  74. package/docs/documentation/components/StructuredList.html +1 -1
  75. package/docs/documentation/components/SwitcherList.html +1 -1
  76. package/docs/documentation/components/SwitcherListItem.html +1 -1
  77. package/docs/documentation/components/Tab.html +1 -1
  78. package/docs/documentation/components/TabHeaderGroup.html +1 -1
  79. package/docs/documentation/components/TabHeaders.html +120 -31
  80. package/docs/documentation/components/TabSkeleton.html +1 -1
  81. package/docs/documentation/components/Table.html +1 -1
  82. package/docs/documentation/components/TableBody.html +1 -1
  83. package/docs/documentation/components/TableCheckbox.html +1 -1
  84. package/docs/documentation/components/TableContainer.html +1 -1
  85. package/docs/documentation/components/TableData.html +1 -1
  86. package/docs/documentation/components/TableExpandButton.html +1 -1
  87. package/docs/documentation/components/TableExpandedRow.html +1 -1
  88. package/docs/documentation/components/TableHead.html +1 -1
  89. package/docs/documentation/components/TableHeadCell.html +1 -1
  90. package/docs/documentation/components/TableHeadCheckbox.html +1 -1
  91. package/docs/documentation/components/TableHeadExpand.html +1 -1
  92. package/docs/documentation/components/TableHeader.html +1 -1
  93. package/docs/documentation/components/TableRadio.html +1 -1
  94. package/docs/documentation/components/TableRowComponent.html +1 -1
  95. package/docs/documentation/components/TableToolbar.html +8 -8
  96. package/docs/documentation/components/TableToolbarActions.html +1 -1
  97. package/docs/documentation/components/TableToolbarContent.html +1 -1
  98. package/docs/documentation/components/TableToolbarSearch.html +1 -1
  99. package/docs/documentation/components/Tabs.html +1 -1
  100. package/docs/documentation/components/Tag.html +1 -1
  101. package/docs/documentation/components/TagFilter.html +1 -1
  102. package/docs/documentation/components/TextInputLabelComponent.html +1197 -0
  103. package/docs/documentation/components/TextareaLabelComponent.html +1243 -0
  104. package/docs/documentation/components/Tile.html +1 -1
  105. package/docs/documentation/components/TileGroup.html +142 -27
  106. package/docs/documentation/components/TimePicker.html +1 -1
  107. package/docs/documentation/components/TimePickerSelect.html +1 -1
  108. package/docs/documentation/components/Toast.html +28 -44
  109. package/docs/documentation/components/Toggle.html +1 -1
  110. package/docs/documentation/components/Toggletip.html +1 -1
  111. package/docs/documentation/components/Tooltip.html +1 -1
  112. package/docs/documentation/components/TooltipDefinition.html +1 -1
  113. package/docs/documentation/coverage.html +35 -11
  114. package/docs/documentation/directives/DialogDirective.html +9 -11
  115. package/docs/documentation/directives/OverflowMenuDirective.html +2 -2
  116. package/docs/documentation/graph/dependencies.svg +2646 -2598
  117. package/docs/documentation/images/coverage-badge-documentation.svg +1 -1
  118. package/docs/documentation/js/menu-wc.js +15 -9
  119. package/docs/documentation/js/menu-wc_es5.js +1 -1
  120. package/docs/documentation/js/search/search_index.js +2 -2
  121. package/docs/documentation/modules/DatePickerInputModule/dependencies.svg +40 -36
  122. package/docs/documentation/modules/DatePickerInputModule.html +40 -36
  123. package/docs/documentation/modules/DatePickerModule/dependencies.svg +39 -39
  124. package/docs/documentation/modules/DatePickerModule.html +39 -39
  125. package/docs/documentation/modules/FileUploaderModule/dependencies.svg +34 -34
  126. package/docs/documentation/modules/FileUploaderModule.html +34 -34
  127. package/docs/documentation/modules/GridModule/dependencies.svg +60 -60
  128. package/docs/documentation/modules/GridModule.html +60 -60
  129. package/docs/documentation/modules/InputModule/dependencies.svg +107 -59
  130. package/docs/documentation/modules/InputModule.html +126 -60
  131. package/docs/documentation/modules/LoadingModule/dependencies.svg +4 -4
  132. package/docs/documentation/modules/LoadingModule.html +4 -4
  133. package/docs/documentation/modules/NFormsModule/dependencies.svg +10 -4
  134. package/docs/documentation/modules/NFormsModule.html +15 -5
  135. package/docs/documentation/modules/NumberModule/dependencies.svg +4 -4
  136. package/docs/documentation/modules/NumberModule.html +4 -4
  137. package/docs/documentation/modules/ProgressBarModule/dependencies.svg +4 -4
  138. package/docs/documentation/modules/ProgressBarModule.html +4 -4
  139. package/docs/documentation/modules/ProgressIndicatorModule/dependencies.svg +42 -54
  140. package/docs/documentation/modules/ProgressIndicatorModule.html +43 -60
  141. package/docs/documentation/modules/RadioModule/dependencies.svg +4 -8
  142. package/docs/documentation/modules/RadioModule.html +4 -8
  143. package/docs/documentation/modules/SearchModule/dependencies.svg +4 -4
  144. package/docs/documentation/modules/SearchModule.html +4 -4
  145. package/docs/documentation/modules/SliderModule/dependencies.svg +4 -4
  146. package/docs/documentation/modules/SliderModule.html +4 -4
  147. package/docs/documentation/modules/StructuredListModule/dependencies.svg +66 -66
  148. package/docs/documentation/modules/StructuredListModule.html +66 -66
  149. package/docs/documentation/modules/TableModule/dependencies.svg +216 -216
  150. package/docs/documentation/modules/TableModule.html +216 -216
  151. package/docs/documentation/modules/TilesModule/dependencies.svg +73 -73
  152. package/docs/documentation/modules/TilesModule.html +73 -73
  153. package/docs/documentation/modules/TimePickerModule/dependencies.svg +41 -45
  154. package/docs/documentation/modules/TimePickerModule.html +41 -45
  155. package/docs/documentation/modules/TimePickerSelectModule/dependencies.svg +41 -45
  156. package/docs/documentation/modules/TimePickerSelectModule.html +41 -45
  157. package/docs/documentation/modules/ToggleModule/dependencies.svg +45 -41
  158. package/docs/documentation/modules/ToggleModule.html +45 -41
  159. package/docs/documentation/modules/ToggletipModule/dependencies.svg +37 -37
  160. package/docs/documentation/modules/ToggletipModule.html +37 -37
  161. package/docs/documentation/modules/TooltipModule/dependencies.svg +28 -28
  162. package/docs/documentation/modules/TooltipModule.html +28 -28
  163. package/docs/documentation/modules/UIShellModule/dependencies.svg +4 -4
  164. package/docs/documentation/modules/UIShellModule.html +4 -4
  165. package/docs/documentation/overview.html +2647 -2599
  166. package/docs/documentation.json +1057 -448
  167. package/docs/storybook/1741.0cb8b504.iframe.bundle.js +1 -0
  168. package/docs/storybook/1895.d4241266.iframe.bundle.js +1 -0
  169. package/docs/storybook/{3224.acb75ed6.iframe.bundle.js → 3224.8b16624b.iframe.bundle.js} +1 -1
  170. package/docs/storybook/{3348.91a6fc53.iframe.bundle.js → 3348.683a45b7.iframe.bundle.js} +1 -1
  171. package/docs/storybook/{3931.f22006ff.iframe.bundle.js → 3931.55f9fea9.iframe.bundle.js} +1 -1
  172. package/docs/storybook/5868.3e7f17a9.iframe.bundle.js +1 -0
  173. package/docs/storybook/{1235.8d840d5b.iframe.bundle.js → 7153.87910de3.iframe.bundle.js} +1 -1
  174. package/docs/storybook/7773.6c3cf943.iframe.bundle.js +1 -0
  175. package/docs/storybook/{901.aa635bd3.iframe.bundle.js → 901.3e5cc559.iframe.bundle.js} +1 -1
  176. package/docs/storybook/combobox-combobox-stories.fdeea2f7.iframe.bundle.js +1 -0
  177. package/docs/storybook/file-uploader-file-uploader-stories.fb6f46e6.iframe.bundle.js +1 -0
  178. package/docs/storybook/iframe.html +2 -2
  179. package/docs/storybook/main.bfc9d82d.iframe.bundle.js +1 -0
  180. package/docs/storybook/{progress-indicator-progress-indicator-stories.7a79da0d.iframe.bundle.js → number-input-number-stories.3ea609db.iframe.bundle.js} +1 -1
  181. package/docs/storybook/{patterns-dialogs-modal-with-table-stories.f2295407.iframe.bundle.js → patterns-dialogs-modal-with-table-stories.494ac5a3.iframe.bundle.js} +1 -1
  182. package/docs/storybook/{patterns-forms-multi-step-form-stories.0d86ee5b.iframe.bundle.js → patterns-forms-multi-step-form-stories.75d0fa39.iframe.bundle.js} +1 -1
  183. package/docs/storybook/patterns-loading-large-loading-stories.8c04d095.iframe.bundle.js +1 -0
  184. package/docs/storybook/progress-indicator-progress-indicator-stories.dcc5c5ca.iframe.bundle.js +1 -0
  185. package/docs/storybook/project.json +1 -1
  186. package/docs/storybook/{runtime~main.c5d3a693.iframe.bundle.js → runtime~main.5d2fe1c8.iframe.bundle.js} +1 -1
  187. package/docs/storybook/slider-slider-stories.feee50aa.iframe.bundle.js +1 -0
  188. package/docs/storybook/{tabs-tabs-stories.d36fc351.iframe.bundle.js → tabs-tabs-stories.675b2d72.iframe.bundle.js} +1 -1
  189. package/docs/storybook/ui-shell-ui-shell-stories.90ac54a8.iframe.bundle.js +1 -0
  190. package/esm2020/combobox/combobox.component.mjs +4 -2
  191. package/esm2020/dialog/dialog.directive.mjs +4 -6
  192. package/esm2020/dropdown/list/dropdown-list.component.mjs +39 -30
  193. package/esm2020/file-uploader/file-uploader.component.mjs +16 -13
  194. package/esm2020/forms/forms.module.mjs +7 -4
  195. package/esm2020/forms/index.mjs +2 -2
  196. package/esm2020/input/index.mjs +3 -1
  197. package/esm2020/input/input.module.mjs +13 -3
  198. package/esm2020/input/label.component.mjs +200 -124
  199. package/esm2020/input/text-input-label.component.mjs +211 -0
  200. package/esm2020/input/textarea-label.component.mjs +215 -0
  201. package/esm2020/modal/modal-header.component.mjs +7 -9
  202. package/esm2020/notification/toast.component.mjs +10 -12
  203. package/esm2020/number-input/number.component.mjs +10 -2
  204. package/esm2020/progress-indicator/progress-indicator.component.mjs +8 -10
  205. package/esm2020/progress-indicator/progress-indicator.module.mjs +1 -5
  206. package/esm2020/slider/slider.component.mjs +6 -5
  207. package/esm2020/table/toolbar/table-toolbar.component.mjs +7 -7
  208. package/esm2020/tabs/tab-headers.component.mjs +10 -2
  209. package/esm2020/tiles/selection-tile.component.mjs +21 -23
  210. package/esm2020/tiles/tile-group.component.mjs +25 -5
  211. package/esm2020/ui-shell/sidenav/sidenav-item.component.mjs +8 -2
  212. package/esm2020/ui-shell/sidenav/sidenav-menu.component.mjs +4 -9
  213. package/fesm2015/carbon-components-angular-combobox.mjs +3 -1
  214. package/fesm2015/carbon-components-angular-combobox.mjs.map +1 -1
  215. package/fesm2015/carbon-components-angular-dialog.mjs +3 -5
  216. package/fesm2015/carbon-components-angular-dialog.mjs.map +1 -1
  217. package/fesm2015/carbon-components-angular-dropdown.mjs +38 -29
  218. package/fesm2015/carbon-components-angular-dropdown.mjs.map +1 -1
  219. package/fesm2015/carbon-components-angular-file-uploader.mjs +15 -12
  220. package/fesm2015/carbon-components-angular-file-uploader.mjs.map +1 -1
  221. package/fesm2015/carbon-components-angular-forms.mjs +7 -4
  222. package/fesm2015/carbon-components-angular-forms.mjs.map +1 -1
  223. package/fesm2015/carbon-components-angular-input.mjs +572 -74
  224. package/fesm2015/carbon-components-angular-input.mjs.map +1 -1
  225. package/fesm2015/carbon-components-angular-modal.mjs +11 -13
  226. package/fesm2015/carbon-components-angular-modal.mjs.map +1 -1
  227. package/fesm2015/carbon-components-angular-notification.mjs +7 -9
  228. package/fesm2015/carbon-components-angular-notification.mjs.map +1 -1
  229. package/fesm2015/carbon-components-angular-number-input.mjs +9 -1
  230. package/fesm2015/carbon-components-angular-number-input.mjs.map +1 -1
  231. package/fesm2015/carbon-components-angular-progress-indicator.mjs +7 -13
  232. package/fesm2015/carbon-components-angular-progress-indicator.mjs.map +1 -1
  233. package/fesm2015/carbon-components-angular-slider.mjs +5 -4
  234. package/fesm2015/carbon-components-angular-slider.mjs.map +1 -1
  235. package/fesm2015/carbon-components-angular-table.mjs +6 -6
  236. package/fesm2015/carbon-components-angular-table.mjs.map +1 -1
  237. package/fesm2015/carbon-components-angular-tabs.mjs +9 -1
  238. package/fesm2015/carbon-components-angular-tabs.mjs.map +1 -1
  239. package/fesm2015/carbon-components-angular-tiles.mjs +43 -26
  240. package/fesm2015/carbon-components-angular-tiles.mjs.map +1 -1
  241. package/fesm2015/carbon-components-angular-ui-shell.mjs +10 -9
  242. package/fesm2015/carbon-components-angular-ui-shell.mjs.map +1 -1
  243. package/fesm2020/carbon-components-angular-combobox.mjs +3 -1
  244. package/fesm2020/carbon-components-angular-combobox.mjs.map +1 -1
  245. package/fesm2020/carbon-components-angular-dialog.mjs +3 -5
  246. package/fesm2020/carbon-components-angular-dialog.mjs.map +1 -1
  247. package/fesm2020/carbon-components-angular-dropdown.mjs +38 -29
  248. package/fesm2020/carbon-components-angular-dropdown.mjs.map +1 -1
  249. package/fesm2020/carbon-components-angular-file-uploader.mjs +15 -12
  250. package/fesm2020/carbon-components-angular-file-uploader.mjs.map +1 -1
  251. package/fesm2020/carbon-components-angular-forms.mjs +7 -4
  252. package/fesm2020/carbon-components-angular-forms.mjs.map +1 -1
  253. package/fesm2020/carbon-components-angular-input.mjs +572 -74
  254. package/fesm2020/carbon-components-angular-input.mjs.map +1 -1
  255. package/fesm2020/carbon-components-angular-modal.mjs +11 -13
  256. package/fesm2020/carbon-components-angular-modal.mjs.map +1 -1
  257. package/fesm2020/carbon-components-angular-notification.mjs +7 -9
  258. package/fesm2020/carbon-components-angular-notification.mjs.map +1 -1
  259. package/fesm2020/carbon-components-angular-number-input.mjs +9 -1
  260. package/fesm2020/carbon-components-angular-number-input.mjs.map +1 -1
  261. package/fesm2020/carbon-components-angular-progress-indicator.mjs +7 -13
  262. package/fesm2020/carbon-components-angular-progress-indicator.mjs.map +1 -1
  263. package/fesm2020/carbon-components-angular-slider.mjs +5 -4
  264. package/fesm2020/carbon-components-angular-slider.mjs.map +1 -1
  265. package/fesm2020/carbon-components-angular-table.mjs +6 -6
  266. package/fesm2020/carbon-components-angular-table.mjs.map +1 -1
  267. package/fesm2020/carbon-components-angular-tabs.mjs +9 -1
  268. package/fesm2020/carbon-components-angular-tabs.mjs.map +1 -1
  269. package/fesm2020/carbon-components-angular-tiles.mjs +43 -26
  270. package/fesm2020/carbon-components-angular-tiles.mjs.map +1 -1
  271. package/fesm2020/carbon-components-angular-ui-shell.mjs +10 -9
  272. package/fesm2020/carbon-components-angular-ui-shell.mjs.map +1 -1
  273. package/file-uploader/file-uploader.component.d.ts +2 -1
  274. package/forms/forms.module.d.ts +1 -1
  275. package/forms/index.d.ts +1 -1
  276. package/input/index.d.ts +2 -0
  277. package/input/input.module.d.ts +6 -4
  278. package/input/label.component.d.ts +10 -23
  279. package/input/text-input-label.component.d.ts +85 -0
  280. package/input/textarea-label.component.d.ts +87 -0
  281. package/modal/modal-header.component.d.ts +1 -3
  282. package/notification/toast.component.d.ts +1 -3
  283. package/number-input/number.component.d.ts +5 -1
  284. package/package.json +1 -1
  285. package/progress-indicator/progress-indicator.component.d.ts +1 -3
  286. package/progress-indicator/progress-indicator.module.d.ts +3 -4
  287. package/slider/slider.component.d.ts +3 -2
  288. package/tabs/tab-headers.component.d.ts +5 -3
  289. package/tiles/tile-group.component.d.ts +4 -2
  290. package/ui-shell/sidenav/sidenav-menu.component.d.ts +1 -1
  291. package/docs/storybook/1741.baa0e588.iframe.bundle.js +0 -1
  292. package/docs/storybook/1895.cdd3d03e.iframe.bundle.js +0 -1
  293. package/docs/storybook/5868.bc6e8b2d.iframe.bundle.js +0 -1
  294. package/docs/storybook/7773.ef20c61a.iframe.bundle.js +0 -1
  295. package/docs/storybook/combobox-combobox-stories.cc751a45.iframe.bundle.js +0 -1
  296. package/docs/storybook/file-uploader-file-uploader-stories.f41b9fbb.iframe.bundle.js +0 -1
  297. package/docs/storybook/main.760cce33.iframe.bundle.js +0 -1
  298. package/docs/storybook/number-input-number-stories.aadfb01f.iframe.bundle.js +0 -1
  299. package/docs/storybook/patterns-loading-large-loading-stories.95988daa.iframe.bundle.js +0 -1
  300. package/docs/storybook/slider-slider-stories.fe053915.iframe.bundle.js +0 -1
  301. package/docs/storybook/ui-shell-ui-shell-stories.9dc19b9f.iframe.bundle.js +0 -1
@@ -1,25 +1,20 @@
1
1
  import { Component, Input, HostBinding, TemplateRef, ViewChild, ContentChild } from "@angular/core";
2
2
  import { TextArea } from "./text-area.directive";
3
+ import { TextInput } from "./input.directive";
3
4
  import * as i0 from "@angular/core";
4
5
  import * as i1 from "@angular/common";
5
6
  import * as i2 from "carbon-components-angular/icon";
7
+ import * as i3 from "./textarea-label.component";
8
+ import * as i4 from "./text-input-label.component";
6
9
  /**
7
10
  * [See demo](../../?path=/story/components-input--label)
8
11
  *
9
- * ```html
10
- * <cds-label labelState="success">
11
- * <label label>Field with success</label>
12
- * <input type="text" class="input-field">
13
- * </cds-label>
12
+ * To prevent attribute drilling, use `ibm-text-label` or `ibm-textarea-label` components
14
13
  *
15
- * <cds-label labelState="warning">
16
- * <label label>Field with warning</label>
17
- * <input type="text" class="input-field">
18
- * </cds-label>
19
- *
20
- * <cds-label labelState="error">
21
- * <label label>Field with error</label>
22
- * <input type="text" class="input-field">
14
+ * ```html
15
+ * <cds-label>
16
+ * Label
17
+ * <input cdsText type="text" class="input-field">
23
18
  * </cds-label>
24
19
  * ```
25
20
  */
@@ -29,10 +24,6 @@ export class Label {
29
24
  */
30
25
  constructor(changeDetectorRef) {
31
26
  this.changeDetectorRef = changeDetectorRef;
32
- /**
33
- * The class of the wrapper
34
- */
35
- this.wrapperClass = "cds--text-input__field-wrapper";
36
27
  /**
37
28
  * The id of the input item associated with the `Label`. This value is also used to associate the `Label` with
38
29
  * its input counterpart through the 'for' attribute.
@@ -42,10 +33,6 @@ export class Label {
42
33
  * Set to `true` for disabled state.
43
34
  */
44
35
  this.disabled = false;
45
- /**
46
- * State of the `Label` will determine the styles applied.
47
- */
48
- this.labelState = "";
49
36
  /**
50
37
  * Set to `true` for a loading label.
51
38
  */
@@ -58,20 +45,26 @@ export class Label {
58
45
  * Set to `true` to show a warning (contents set by warningText)
59
46
  */
60
47
  this.warn = false;
61
- this.labelClass = true;
48
+ }
49
+ get labelClass() {
50
+ return this.type === undefined;
62
51
  }
63
52
  /**
64
53
  * Update wrapper class if a textarea is hosted.
65
54
  */
66
55
  ngAfterContentInit() {
67
56
  if (this.textArea) {
68
- this.wrapperClass = "cds--text-area__wrapper";
57
+ this.type = "TextArea";
58
+ }
59
+ else if (this.textInput) {
60
+ this.type = "TextInput";
69
61
  }
70
62
  }
71
63
  /**
72
64
  * Sets the id on the input item associated with the `Label`.
73
65
  */
74
66
  ngAfterViewInit() {
67
+ // Will only be called when `default` template is being used
75
68
  if (this.wrapper) {
76
69
  // Prioritize setting id to `input` & `textarea` over div
77
70
  const inputElement = this.wrapper.nativeElement.querySelector("input,textarea");
@@ -103,123 +96,203 @@ export class Label {
103
96
  */
104
97
  Label.labelCounter = 0;
105
98
  Label.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: Label, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
106
- Label.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: Label, selector: "cds-label, ibm-label", inputs: { labelInputID: "labelInputID", disabled: "disabled", labelState: "labelState", skeleton: "skeleton", helperText: "helperText", invalidText: "invalidText", invalid: "invalid", warn: "warn", warnText: "warnText", ariaLabel: "ariaLabel" }, host: { properties: { "class.cds--form-item": "this.labelClass" } }, queries: [{ propertyName: "textArea", first: true, predicate: TextArea, descendants: true }], viewQueries: [{ propertyName: "wrapper", first: true, predicate: ["wrapper"], descendants: true }], ngImport: i0, template: `
107
- <label
108
- [for]="labelInputID"
109
- [attr.aria-label]="ariaLabel"
110
- class="cds--label"
111
- [ngClass]="{
112
- 'cds--skeleton': skeleton,
113
- 'cds--label--disabled': disabled && !skeleton
114
- }">
99
+ Label.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: Label, selector: "cds-label, ibm-label", inputs: { labelInputID: "labelInputID", disabled: "disabled", skeleton: "skeleton", helperText: "helperText", invalidText: "invalidText", invalid: "invalid", warn: "warn", warnText: "warnText", ariaLabel: "ariaLabel" }, host: { properties: { "class.cds--form-item": "this.labelClass" } }, queries: [{ propertyName: "textArea", first: true, predicate: TextArea, descendants: true }, { propertyName: "textInput", first: true, predicate: TextInput, descendants: true }], viewQueries: [{ propertyName: "wrapper", first: true, predicate: ["wrapper"], descendants: true }], ngImport: i0, template: `
100
+ <ng-template #inputContentTemplate>
101
+ <ng-content select="input,textarea,div"></ng-content>
102
+ </ng-template>
103
+
104
+ <ng-template #labelContentTemplate>
115
105
  <ng-content></ng-content>
116
- </label>
117
- <div
118
- [class]="wrapperClass"
119
- [ngClass]="{
120
- 'cds--text-input__field-wrapper--warning': warn
121
- }"
122
- [attr.data-invalid]="(invalid ? true : null)"
123
- #wrapper>
124
- <svg
125
- *ngIf="!warn && invalid"
126
- cdsIcon="warning--filled"
127
- size="16"
106
+ </ng-template>
107
+
108
+ <ng-container [ngSwitch]="type">
109
+ <ng-container *ngSwitchCase="'TextArea'">
110
+ <cds-textarea-label
111
+ [labelInputID]="labelInputID"
112
+ [disabled]="disabled"
113
+ [skeleton]="skeleton"
114
+ [helperText]="helperText"
115
+ [invalid]="invalid"
116
+ [invalidText]="invalidText"
117
+ [warn]="warn"
118
+ [warnText]="warnText"
119
+ [ariaLabel]="ariaLabel"
120
+ [labelTemplate]="labelContentTemplate"
121
+ [textAreaTemplate]="inputContentTemplate">
122
+ </cds-textarea-label>
123
+ </ng-container>
124
+ <ng-container *ngSwitchCase="'TextInput'">
125
+ <cds-text-label
126
+ [labelInputID]="labelInputID"
127
+ [disabled]="disabled"
128
+ [skeleton]="skeleton"
129
+ [helperText]="helperText"
130
+ [invalid]="invalid"
131
+ [invalidText]="invalidText"
132
+ [warn]="warn"
133
+ [warnText]="warnText"
134
+ [ariaLabel]="ariaLabel"
135
+ [labelTemplate]="labelContentTemplate"
136
+ [textInputTemplate]="inputContentTemplate">
137
+ </cds-text-label>
138
+ </ng-container>
139
+ <ng-container *ngSwitchDefault>
140
+ <ng-template [ngTemplateOutlet]="default"></ng-template>
141
+ </ng-container>
142
+ </ng-container>
143
+
144
+ <ng-template #default>
145
+ <label
146
+ [for]="labelInputID"
147
+ [attr.aria-label]="ariaLabel"
148
+ class="cds--label"
128
149
  [ngClass]="{
129
- 'cds--text-input__invalid-icon': !textArea,
130
- 'cds--text-area__invalid-icon': textArea
150
+ 'cds--label--disabled': disabled,
151
+ 'cds--skeleton': skeleton
131
152
  }">
132
- </svg>
133
- <svg
134
- *ngIf="!invalid && warn"
135
- cdsIcon="warning--alt--filled"
136
- size="16"
137
- class="cds--text-input__invalid-icon cds--text-input__invalid-icon--warning">
138
- </svg>
139
- <ng-content select="input,textarea,div"></ng-content>
140
- </div>
141
- <div
142
- *ngIf="!skeleton && helperText && !invalid && !warn"
143
- class="cds--form__helper-text"
144
- [ngClass]="{
145
- 'cds--form__helper-text--disabled': disabled
146
- }">
147
- <ng-container *ngIf="!isTemplate(helperText)">{{helperText}}</ng-container>
148
- <ng-template *ngIf="isTemplate(helperText)" [ngTemplateOutlet]="helperText"></ng-template>
149
- </div>
150
- <div *ngIf="!warn && invalid" class="cds--form-requirement">
151
- <ng-container *ngIf="!isTemplate(invalidText)">{{invalidText}}</ng-container>
152
- <ng-template *ngIf="isTemplate(invalidText)" [ngTemplateOutlet]="invalidText"></ng-template>
153
- </div>
154
- <div *ngIf="!invalid && warn" class="cds--form-requirement">
155
- <ng-container *ngIf="!isTemplate(warnText)">{{warnText}}</ng-container>
156
- <ng-template *ngIf="isTemplate(warnText)" [ngTemplateOutlet]="warnText"></ng-template>
157
- </div>
158
- `, isInline: true, dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }] });
153
+ <ng-template [ngTemplateOutlet]="labelContentTemplate"></ng-template>
154
+ </label>
155
+ <div
156
+ class="cds--text-input__field-wrapper"
157
+ [ngClass]="{
158
+ 'cds--text-input__field-wrapper--warning': warn
159
+ }"
160
+ [attr.data-invalid]="(invalid ? true : null)"
161
+ #wrapper>
162
+ <svg
163
+ *ngIf="!warn && invalid"
164
+ ibmIcon="warning--filled"
165
+ size="16"
166
+ class="cds--text-input__invalid-icon">
167
+ </svg>
168
+ <svg
169
+ *ngIf="!invalid && warn"
170
+ ibmIcon="warning--alt--filled"
171
+ size="16"
172
+ class="cds--text-input__invalid-icon cds--text-input__invalid-icon--warning">
173
+ </svg>
174
+ <ng-template [ngTemplateOutlet]="inputContentTemplate"></ng-template>
175
+ </div>
176
+ <div
177
+ *ngIf="!skeleton && helperText && !invalid && !warn"
178
+ class="cds--form__helper-text"
179
+ [ngClass]="{'cds--form__helper-text--disabled': disabled}">
180
+ <ng-container *ngIf="!isTemplate(helperText)">{{helperText}}</ng-container>
181
+ <ng-template *ngIf="isTemplate(helperText)" [ngTemplateOutlet]="helperText"></ng-template>
182
+ </div>
183
+ <div *ngIf="!warn && invalid" class="cds--form-requirement">
184
+ <ng-container *ngIf="!isTemplate(invalidText)">{{invalidText}}</ng-container>
185
+ <ng-template *ngIf="isTemplate(invalidText)" [ngTemplateOutlet]="invalidText"></ng-template>
186
+ </div>
187
+ <div *ngIf="!invalid && warn" class="cds--form-requirement">
188
+ <ng-container *ngIf="!isTemplate(warnText)">{{warnText}}</ng-container>
189
+ <ng-template *ngIf="isTemplate(warnText)" [ngTemplateOutlet]="warnText"></ng-template>
190
+ </div>
191
+ </ng-template>
192
+ `, isInline: true, dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i1.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "directive", type: i2.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "component", type: i3.TextareaLabelComponent, selector: "cds-textarea-label, ibm-textarea-label", inputs: ["labelInputID", "disabled", "skeleton", "labelTemplate", "textAreaTemplate", "helperText", "invalidText", "invalid", "warn", "warnText", "ariaLabel"] }, { kind: "component", type: i4.TextInputLabelComponent, selector: "cds-text-label, ibm-text-label", inputs: ["labelInputID", "disabled", "skeleton", "labelTemplate", "textInputTemplate", "helperText", "invalidText", "invalid", "warn", "warnText", "ariaLabel"] }] });
159
193
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: Label, decorators: [{
160
194
  type: Component,
161
195
  args: [{
162
196
  selector: "cds-label, ibm-label",
163
197
  template: `
164
- <label
165
- [for]="labelInputID"
166
- [attr.aria-label]="ariaLabel"
167
- class="cds--label"
168
- [ngClass]="{
169
- 'cds--skeleton': skeleton,
170
- 'cds--label--disabled': disabled && !skeleton
171
- }">
198
+ <ng-template #inputContentTemplate>
199
+ <ng-content select="input,textarea,div"></ng-content>
200
+ </ng-template>
201
+
202
+ <ng-template #labelContentTemplate>
172
203
  <ng-content></ng-content>
173
- </label>
174
- <div
175
- [class]="wrapperClass"
176
- [ngClass]="{
177
- 'cds--text-input__field-wrapper--warning': warn
178
- }"
179
- [attr.data-invalid]="(invalid ? true : null)"
180
- #wrapper>
181
- <svg
182
- *ngIf="!warn && invalid"
183
- cdsIcon="warning--filled"
184
- size="16"
204
+ </ng-template>
205
+
206
+ <ng-container [ngSwitch]="type">
207
+ <ng-container *ngSwitchCase="'TextArea'">
208
+ <cds-textarea-label
209
+ [labelInputID]="labelInputID"
210
+ [disabled]="disabled"
211
+ [skeleton]="skeleton"
212
+ [helperText]="helperText"
213
+ [invalid]="invalid"
214
+ [invalidText]="invalidText"
215
+ [warn]="warn"
216
+ [warnText]="warnText"
217
+ [ariaLabel]="ariaLabel"
218
+ [labelTemplate]="labelContentTemplate"
219
+ [textAreaTemplate]="inputContentTemplate">
220
+ </cds-textarea-label>
221
+ </ng-container>
222
+ <ng-container *ngSwitchCase="'TextInput'">
223
+ <cds-text-label
224
+ [labelInputID]="labelInputID"
225
+ [disabled]="disabled"
226
+ [skeleton]="skeleton"
227
+ [helperText]="helperText"
228
+ [invalid]="invalid"
229
+ [invalidText]="invalidText"
230
+ [warn]="warn"
231
+ [warnText]="warnText"
232
+ [ariaLabel]="ariaLabel"
233
+ [labelTemplate]="labelContentTemplate"
234
+ [textInputTemplate]="inputContentTemplate">
235
+ </cds-text-label>
236
+ </ng-container>
237
+ <ng-container *ngSwitchDefault>
238
+ <ng-template [ngTemplateOutlet]="default"></ng-template>
239
+ </ng-container>
240
+ </ng-container>
241
+
242
+ <ng-template #default>
243
+ <label
244
+ [for]="labelInputID"
245
+ [attr.aria-label]="ariaLabel"
246
+ class="cds--label"
185
247
  [ngClass]="{
186
- 'cds--text-input__invalid-icon': !textArea,
187
- 'cds--text-area__invalid-icon': textArea
248
+ 'cds--label--disabled': disabled,
249
+ 'cds--skeleton': skeleton
188
250
  }">
189
- </svg>
190
- <svg
191
- *ngIf="!invalid && warn"
192
- cdsIcon="warning--alt--filled"
193
- size="16"
194
- class="cds--text-input__invalid-icon cds--text-input__invalid-icon--warning">
195
- </svg>
196
- <ng-content select="input,textarea,div"></ng-content>
197
- </div>
198
- <div
199
- *ngIf="!skeleton && helperText && !invalid && !warn"
200
- class="cds--form__helper-text"
201
- [ngClass]="{
202
- 'cds--form__helper-text--disabled': disabled
203
- }">
204
- <ng-container *ngIf="!isTemplate(helperText)">{{helperText}}</ng-container>
205
- <ng-template *ngIf="isTemplate(helperText)" [ngTemplateOutlet]="helperText"></ng-template>
206
- </div>
207
- <div *ngIf="!warn && invalid" class="cds--form-requirement">
208
- <ng-container *ngIf="!isTemplate(invalidText)">{{invalidText}}</ng-container>
209
- <ng-template *ngIf="isTemplate(invalidText)" [ngTemplateOutlet]="invalidText"></ng-template>
210
- </div>
211
- <div *ngIf="!invalid && warn" class="cds--form-requirement">
212
- <ng-container *ngIf="!isTemplate(warnText)">{{warnText}}</ng-container>
213
- <ng-template *ngIf="isTemplate(warnText)" [ngTemplateOutlet]="warnText"></ng-template>
214
- </div>
251
+ <ng-template [ngTemplateOutlet]="labelContentTemplate"></ng-template>
252
+ </label>
253
+ <div
254
+ class="cds--text-input__field-wrapper"
255
+ [ngClass]="{
256
+ 'cds--text-input__field-wrapper--warning': warn
257
+ }"
258
+ [attr.data-invalid]="(invalid ? true : null)"
259
+ #wrapper>
260
+ <svg
261
+ *ngIf="!warn && invalid"
262
+ ibmIcon="warning--filled"
263
+ size="16"
264
+ class="cds--text-input__invalid-icon">
265
+ </svg>
266
+ <svg
267
+ *ngIf="!invalid && warn"
268
+ ibmIcon="warning--alt--filled"
269
+ size="16"
270
+ class="cds--text-input__invalid-icon cds--text-input__invalid-icon--warning">
271
+ </svg>
272
+ <ng-template [ngTemplateOutlet]="inputContentTemplate"></ng-template>
273
+ </div>
274
+ <div
275
+ *ngIf="!skeleton && helperText && !invalid && !warn"
276
+ class="cds--form__helper-text"
277
+ [ngClass]="{'cds--form__helper-text--disabled': disabled}">
278
+ <ng-container *ngIf="!isTemplate(helperText)">{{helperText}}</ng-container>
279
+ <ng-template *ngIf="isTemplate(helperText)" [ngTemplateOutlet]="helperText"></ng-template>
280
+ </div>
281
+ <div *ngIf="!warn && invalid" class="cds--form-requirement">
282
+ <ng-container *ngIf="!isTemplate(invalidText)">{{invalidText}}</ng-container>
283
+ <ng-template *ngIf="isTemplate(invalidText)" [ngTemplateOutlet]="invalidText"></ng-template>
284
+ </div>
285
+ <div *ngIf="!invalid && warn" class="cds--form-requirement">
286
+ <ng-container *ngIf="!isTemplate(warnText)">{{warnText}}</ng-container>
287
+ <ng-template *ngIf="isTemplate(warnText)" [ngTemplateOutlet]="warnText"></ng-template>
288
+ </div>
289
+ </ng-template>
215
290
  `
216
291
  }]
217
292
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { labelInputID: [{
218
293
  type: Input
219
294
  }], disabled: [{
220
295
  type: Input
221
- }], labelState: [{
222
- type: Input
223
296
  }], skeleton: [{
224
297
  type: Input
225
298
  }], helperText: [{
@@ -240,8 +313,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
240
313
  }], textArea: [{
241
314
  type: ContentChild,
242
315
  args: [TextArea]
316
+ }], textInput: [{
317
+ type: ContentChild,
318
+ args: [TextInput, { static: false }]
243
319
  }], labelClass: [{
244
320
  type: HostBinding,
245
321
  args: ["class.cds--form-item"]
246
322
  }] } });
247
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFiZWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2lucHV0L2xhYmVsLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ04sU0FBUyxFQUNULEtBQUssRUFHTCxXQUFXLEVBQ1gsV0FBVyxFQUNYLFNBQVMsRUFDVCxZQUFZLEVBR1osTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7O0FBRWpEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBbUJHO0FBeURILE1BQU0sT0FBTyxLQUFLO0lBeURqQjs7T0FFRztJQUNILFlBQXNCLGlCQUFvQztRQUFwQyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBdkQxRDs7V0FFRztRQUNILGlCQUFZLEdBQUcsZ0NBQWdDLENBQUM7UUFDaEQ7OztVQUdFO1FBQ08saUJBQVksR0FBRyxhQUFhLEtBQUssQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUFDO1FBQzVEOztXQUVHO1FBQ00sYUFBUSxHQUFHLEtBQUssQ0FBQztRQUMxQjs7V0FFRztRQUNNLGVBQVUsR0FBeUMsRUFBRSxDQUFDO1FBQy9EOztXQUVHO1FBQ00sYUFBUSxHQUFHLEtBQUssQ0FBQztRQVMxQjs7V0FFRztRQUNNLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFDekI7O1lBRUk7UUFDSyxTQUFJLEdBQUcsS0FBSyxDQUFDO1FBY2UsZUFBVSxHQUFHLElBQUksQ0FBQztJQUtNLENBQUM7SUFFOUQ7O09BRUc7SUFDSCxrQkFBa0I7UUFDakIsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2xCLElBQUksQ0FBQyxZQUFZLEdBQUcseUJBQXlCLENBQUM7U0FDOUM7SUFDRixDQUFDO0lBRUQ7O09BRUc7SUFDSCxlQUFlO1FBQ2QsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2pCLHlEQUF5RDtZQUN6RCxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztZQUNoRixJQUFJLFlBQVksRUFBRTtnQkFDakIsZ0VBQWdFO2dCQUNoRSxJQUFJLFlBQVksQ0FBQyxFQUFFLEVBQUU7b0JBQ3BCLElBQUksQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDLEVBQUUsQ0FBQztvQkFDcEMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsRUFBRSxDQUFDO2lCQUN2QztnQkFDRCxZQUFZLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7Z0JBQ25ELE9BQU87YUFDUDtZQUVELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNuRSxJQUFJLFVBQVUsRUFBRTtnQkFDZixJQUFJLFVBQVUsQ0FBQyxFQUFFLEVBQUU7b0JBQ2xCLElBQUksQ0FBQyxZQUFZLEdBQUcsVUFBVSxDQUFDLEVBQUUsQ0FBQztvQkFDbEMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsRUFBRSxDQUFDO2lCQUN2QztnQkFDRCxVQUFVLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7YUFDakQ7U0FDRDtJQUNGLENBQUM7SUFFTSxVQUFVLENBQUMsS0FBSztRQUN0QixPQUFPLEtBQUssWUFBWSxXQUFXLENBQUM7SUFDckMsQ0FBQzs7QUFwR0Q7O0dBRUc7QUFDSSxrQkFBWSxHQUFHLENBQUMsQ0FBQztrR0FKWixLQUFLO3NGQUFMLEtBQUssNlpBcURILFFBQVEsb0pBM0daOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBb0RUOzJGQUVXLEtBQUs7a0JBeERqQixTQUFTO21CQUFDO29CQUNWLFFBQVEsRUFBRSxzQkFBc0I7b0JBQ2hDLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQW9EVDtpQkFDRDt3R0FjUyxZQUFZO3NCQUFwQixLQUFLO2dCQUlHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBSUcsVUFBVTtzQkFBbEIsS0FBSztnQkFJRyxRQUFRO3NCQUFoQixLQUFLO2dCQUlHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBSUcsV0FBVztzQkFBbkIsS0FBSztnQkFJRyxPQUFPO3NCQUFmLEtBQUs7Z0JBSUcsSUFBSTtzQkFBWixLQUFLO2dCQUlHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBSUcsU0FBUztzQkFBakIsS0FBSztnQkFFZ0IsT0FBTztzQkFBNUIsU0FBUzt1QkFBQyxTQUFTO2dCQUVJLFFBQVE7c0JBQS9CLFlBQVk7dUJBQUMsUUFBUTtnQkFFZSxVQUFVO3NCQUE5QyxXQUFXO3VCQUFDLHNCQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG5cdENvbXBvbmVudCxcblx0SW5wdXQsXG5cdEFmdGVyVmlld0luaXQsXG5cdEVsZW1lbnRSZWYsXG5cdEhvc3RCaW5kaW5nLFxuXHRUZW1wbGF0ZVJlZixcblx0Vmlld0NoaWxkLFxuXHRDb250ZW50Q2hpbGQsXG5cdEFmdGVyQ29udGVudEluaXQsXG5cdENoYW5nZURldGVjdG9yUmVmXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5cbmltcG9ydCB7IFRleHRBcmVhIH0gZnJvbSBcIi4vdGV4dC1hcmVhLmRpcmVjdGl2ZVwiO1xuXG4vKipcbiAqIFtTZWUgZGVtb10oLi4vLi4vP3BhdGg9L3N0b3J5L2NvbXBvbmVudHMtaW5wdXQtLWxhYmVsKVxuICpcbiAqIGBgYGh0bWxcbiAqIDxjZHMtbGFiZWwgbGFiZWxTdGF0ZT1cInN1Y2Nlc3NcIj5cbiAqIFx0PGxhYmVsIGxhYmVsPkZpZWxkIHdpdGggc3VjY2VzczwvbGFiZWw+XG4gKiBcdDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiaW5wdXQtZmllbGRcIj5cbiAqIDwvY2RzLWxhYmVsPlxuICpcbiAqIDxjZHMtbGFiZWwgbGFiZWxTdGF0ZT1cIndhcm5pbmdcIj5cbiAqIFx0PGxhYmVsIGxhYmVsPkZpZWxkIHdpdGggd2FybmluZzwvbGFiZWw+XG4gKiBcdDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiaW5wdXQtZmllbGRcIj5cbiAqIDwvY2RzLWxhYmVsPlxuICpcbiAqIDxjZHMtbGFiZWwgbGFiZWxTdGF0ZT1cImVycm9yXCI+XG4gKiBcdDxsYWJlbCBsYWJlbD5GaWVsZCB3aXRoIGVycm9yPC9sYWJlbD5cbiAqIFx0PGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJpbnB1dC1maWVsZFwiPlxuICogPC9jZHMtbGFiZWw+XG4gKiBgYGBcbiAqL1xuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiBcImNkcy1sYWJlbCwgaWJtLWxhYmVsXCIsXG5cdHRlbXBsYXRlOiBgXG5cdFx0PGxhYmVsXG5cdFx0XHRbZm9yXT1cImxhYmVsSW5wdXRJRFwiXG5cdFx0XHRbYXR0ci5hcmlhLWxhYmVsXT1cImFyaWFMYWJlbFwiXG5cdFx0XHRjbGFzcz1cImNkcy0tbGFiZWxcIlxuXHRcdFx0W25nQ2xhc3NdPVwie1xuXHRcdFx0XHQnY2RzLS1za2VsZXRvbic6IHNrZWxldG9uLFxuXHRcdFx0XHQnY2RzLS1sYWJlbC0tZGlzYWJsZWQnOiBkaXNhYmxlZCAmJiAhc2tlbGV0b25cblx0XHRcdH1cIj5cblx0XHRcdDxuZy1jb250ZW50PjwvbmctY29udGVudD5cblx0XHQ8L2xhYmVsPlxuXHRcdDxkaXZcblx0XHRcdFtjbGFzc109XCJ3cmFwcGVyQ2xhc3NcIlxuXHRcdFx0W25nQ2xhc3NdPVwie1xuXHRcdFx0XHQnY2RzLS10ZXh0LWlucHV0X19maWVsZC13cmFwcGVyLS13YXJuaW5nJzogd2FyblxuXHRcdFx0fVwiXG5cdFx0XHRbYXR0ci5kYXRhLWludmFsaWRdPVwiKGludmFsaWQgPyB0cnVlIDogbnVsbClcIlxuXHRcdFx0I3dyYXBwZXI+XG5cdFx0XHQ8c3ZnXG5cdFx0XHRcdCpuZ0lmPVwiIXdhcm4gJiYgaW52YWxpZFwiXG5cdFx0XHRcdGNkc0ljb249XCJ3YXJuaW5nLS1maWxsZWRcIlxuXHRcdFx0XHRzaXplPVwiMTZcIlxuXHRcdFx0XHRbbmdDbGFzc109XCJ7XG5cdFx0XHRcdFx0J2Nkcy0tdGV4dC1pbnB1dF9faW52YWxpZC1pY29uJzogIXRleHRBcmVhLFxuXHRcdFx0XHRcdCdjZHMtLXRleHQtYXJlYV9faW52YWxpZC1pY29uJzogdGV4dEFyZWFcblx0XHRcdFx0fVwiPlxuXHRcdFx0PC9zdmc+XG5cdFx0XHQ8c3ZnXG5cdFx0XHRcdCpuZ0lmPVwiIWludmFsaWQgJiYgd2FyblwiXG5cdFx0XHRcdGNkc0ljb249XCJ3YXJuaW5nLS1hbHQtLWZpbGxlZFwiXG5cdFx0XHRcdHNpemU9XCIxNlwiXG5cdFx0XHRcdGNsYXNzPVwiY2RzLS10ZXh0LWlucHV0X19pbnZhbGlkLWljb24gY2RzLS10ZXh0LWlucHV0X19pbnZhbGlkLWljb24tLXdhcm5pbmdcIj5cblx0XHRcdDwvc3ZnPlxuXHRcdFx0PG5nLWNvbnRlbnQgc2VsZWN0PVwiaW5wdXQsdGV4dGFyZWEsZGl2XCI+PC9uZy1jb250ZW50PlxuXHRcdDwvZGl2PlxuXHRcdDxkaXZcblx0XHRcdCpuZ0lmPVwiIXNrZWxldG9uICYmIGhlbHBlclRleHQgJiYgIWludmFsaWQgJiYgIXdhcm5cIlxuXHRcdFx0Y2xhc3M9XCJjZHMtLWZvcm1fX2hlbHBlci10ZXh0XCJcblx0XHRcdFtuZ0NsYXNzXT1cIntcblx0XHRcdFx0J2Nkcy0tZm9ybV9faGVscGVyLXRleHQtLWRpc2FibGVkJzogZGlzYWJsZWRcblx0XHRcdH1cIj5cblx0XHRcdDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNUZW1wbGF0ZShoZWxwZXJUZXh0KVwiPnt7aGVscGVyVGV4dH19PC9uZy1jb250YWluZXI+XG5cdFx0XHQ8bmctdGVtcGxhdGUgKm5nSWY9XCJpc1RlbXBsYXRlKGhlbHBlclRleHQpXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwiaGVscGVyVGV4dFwiPjwvbmctdGVtcGxhdGU+XG5cdFx0PC9kaXY+XG5cdFx0PGRpdiAqbmdJZj1cIiF3YXJuICYmIGludmFsaWRcIiBjbGFzcz1cImNkcy0tZm9ybS1yZXF1aXJlbWVudFwiPlxuXHRcdFx0PG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc1RlbXBsYXRlKGludmFsaWRUZXh0KVwiPnt7aW52YWxpZFRleHR9fTwvbmctY29udGFpbmVyPlxuXHRcdFx0PG5nLXRlbXBsYXRlICpuZ0lmPVwiaXNUZW1wbGF0ZShpbnZhbGlkVGV4dClcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJpbnZhbGlkVGV4dFwiPjwvbmctdGVtcGxhdGU+XG5cdFx0PC9kaXY+XG5cdFx0PGRpdiAqbmdJZj1cIiFpbnZhbGlkICYmIHdhcm5cIiBjbGFzcz1cImNkcy0tZm9ybS1yZXF1aXJlbWVudFwiPlxuXHRcdFx0PG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc1RlbXBsYXRlKHdhcm5UZXh0KVwiPnt7d2FyblRleHR9fTwvbmctY29udGFpbmVyPlxuXHRcdFx0PG5nLXRlbXBsYXRlICpuZ0lmPVwiaXNUZW1wbGF0ZSh3YXJuVGV4dClcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJ3YXJuVGV4dFwiPjwvbmctdGVtcGxhdGU+XG5cdFx0PC9kaXY+XG5cdGBcbn0pXG5leHBvcnQgY2xhc3MgTGFiZWwgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0LCBBZnRlclZpZXdJbml0IHtcblx0LyoqXG5cdCAqIFVzZWQgdG8gYnVpbGQgdGhlIGlkIG9mIHRoZSBpbnB1dCBpdGVtIGFzc29jaWF0ZWQgd2l0aCB0aGUgYExhYmVsYC5cblx0ICovXG5cdHN0YXRpYyBsYWJlbENvdW50ZXIgPSAwO1xuXHQvKipcblx0ICogVGhlIGNsYXNzIG9mIHRoZSB3cmFwcGVyXG5cdCAqL1xuXHR3cmFwcGVyQ2xhc3MgPSBcImNkcy0tdGV4dC1pbnB1dF9fZmllbGQtd3JhcHBlclwiO1xuXHQvKipcblx0ICogVGhlIGlkIG9mIHRoZSBpbnB1dCBpdGVtIGFzc29jaWF0ZWQgd2l0aCB0aGUgYExhYmVsYC4gVGhpcyB2YWx1ZSBpcyBhbHNvIHVzZWQgdG8gYXNzb2NpYXRlIHRoZSBgTGFiZWxgIHdpdGhcblx0ICogaXRzIGlucHV0IGNvdW50ZXJwYXJ0IHRocm91Z2ggdGhlICdmb3InIGF0dHJpYnV0ZS5cblx0Ki9cblx0QElucHV0KCkgbGFiZWxJbnB1dElEID0gYGNkcy1sYWJlbC0ke0xhYmVsLmxhYmVsQ291bnRlcisrfWA7XG5cdC8qKlxuXHQgKiBTZXQgdG8gYHRydWVgIGZvciBkaXNhYmxlZCBzdGF0ZS5cblx0ICovXG5cdEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XG5cdC8qKlxuXHQgKiBTdGF0ZSBvZiB0aGUgYExhYmVsYCB3aWxsIGRldGVybWluZSB0aGUgc3R5bGVzIGFwcGxpZWQuXG5cdCAqL1xuXHRASW5wdXQoKSBsYWJlbFN0YXRlOiBcInN1Y2Nlc3NcIiB8IFwid2FybmluZ1wiIHwgXCJlcnJvclwiIHwgXCJcIiA9IFwiXCI7XG5cdC8qKlxuXHQgKiBTZXQgdG8gYHRydWVgIGZvciBhIGxvYWRpbmcgbGFiZWwuXG5cdCAqL1xuXHRASW5wdXQoKSBza2VsZXRvbiA9IGZhbHNlO1xuXHQvKipcblx0ICogT3B0aW9uYWwgaGVscGVyIHRleHQgdGhhdCBhcHBlYXJzIHVuZGVyIHRoZSBsYWJlbC5cblx0ICovXG5cdEBJbnB1dCgpIGhlbHBlclRleHQ6IHN0cmluZyB8IFRlbXBsYXRlUmVmPGFueT47XG5cdC8qKlxuXHQgKiBTZXRzIHRoZSBpbnZhbGlkIHRleHQuXG5cdCAqL1xuXHRASW5wdXQoKSBpbnZhbGlkVGV4dDogc3RyaW5nIHwgVGVtcGxhdGVSZWY8YW55Pjtcblx0LyoqXG5cdCAqIFNldCB0byBgdHJ1ZWAgZm9yIGFuIGludmFsaWQgbGFiZWwgY29tcG9uZW50LlxuXHQgKi9cblx0QElucHV0KCkgaW52YWxpZCA9IGZhbHNlO1xuXHQvKipcblx0ICAqIFNldCB0byBgdHJ1ZWAgdG8gc2hvdyBhIHdhcm5pbmcgKGNvbnRlbnRzIHNldCBieSB3YXJuaW5nVGV4dClcblx0ICAqL1xuXHRASW5wdXQoKSB3YXJuID0gZmFsc2U7XG5cdC8qKlxuXHQgKiBTZXRzIHRoZSB3YXJuaW5nIHRleHRcblx0ICovXG5cdEBJbnB1dCgpIHdhcm5UZXh0OiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjxhbnk+O1xuXHQvKipcblx0ICogU2V0IHRoZSBhcmlhbGFiZWwgZm9yIGxhYmVsXG5cdCAqL1xuXHRASW5wdXQoKSBhcmlhTGFiZWw6IHN0cmluZztcblxuXHRAVmlld0NoaWxkKFwid3JhcHBlclwiKSB3cmFwcGVyOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcblxuXHRAQ29udGVudENoaWxkKFRleHRBcmVhKSB0ZXh0QXJlYTogVGV4dEFyZWE7XG5cblx0QEhvc3RCaW5kaW5nKFwiY2xhc3MuY2RzLS1mb3JtLWl0ZW1cIikgbGFiZWxDbGFzcyA9IHRydWU7XG5cblx0LyoqXG5cdCAqIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgTGFiZWwuXG5cdCAqL1xuXHRjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmKSB7fVxuXG5cdC8qKlxuXHQgKiBVcGRhdGUgd3JhcHBlciBjbGFzcyBpZiBhIHRleHRhcmVhIGlzIGhvc3RlZC5cblx0ICovXG5cdG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcblx0XHRpZiAodGhpcy50ZXh0QXJlYSkge1xuXHRcdFx0dGhpcy53cmFwcGVyQ2xhc3MgPSBcImNkcy0tdGV4dC1hcmVhX193cmFwcGVyXCI7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIFNldHMgdGhlIGlkIG9uIHRoZSBpbnB1dCBpdGVtIGFzc29jaWF0ZWQgd2l0aCB0aGUgYExhYmVsYC5cblx0ICovXG5cdG5nQWZ0ZXJWaWV3SW5pdCgpIHtcblx0XHRpZiAodGhpcy53cmFwcGVyKSB7XG5cdFx0XHQvLyBQcmlvcml0aXplIHNldHRpbmcgaWQgdG8gYGlucHV0YCAmIGB0ZXh0YXJlYWAgb3ZlciBkaXZcblx0XHRcdGNvbnN0IGlucHV0RWxlbWVudCA9IHRoaXMud3JhcHBlci5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXCJpbnB1dCx0ZXh0YXJlYVwiKTtcblx0XHRcdGlmIChpbnB1dEVsZW1lbnQpIHtcblx0XHRcdFx0Ly8gYXZvaWQgb3ZlcnJpZGluZyBpZHMgYWxyZWFkeSBzZXQgYnkgdGhlIHVzZXIgcmV1c2UgaXQgaW5zdGVhZFxuXHRcdFx0XHRpZiAoaW5wdXRFbGVtZW50LmlkKSB7XG5cdFx0XHRcdFx0dGhpcy5sYWJlbElucHV0SUQgPSBpbnB1dEVsZW1lbnQuaWQ7XG5cdFx0XHRcdFx0dGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0aW5wdXRFbGVtZW50LnNldEF0dHJpYnV0ZShcImlkXCIsIHRoaXMubGFiZWxJbnB1dElEKTtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXG5cdFx0XHRjb25zdCBkaXZFbGVtZW50ID0gdGhpcy53cmFwcGVyLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcihcImRpdlwiKTtcblx0XHRcdGlmIChkaXZFbGVtZW50KSB7XG5cdFx0XHRcdGlmIChkaXZFbGVtZW50LmlkKSB7XG5cdFx0XHRcdFx0dGhpcy5sYWJlbElucHV0SUQgPSBkaXZFbGVtZW50LmlkO1xuXHRcdFx0XHRcdHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGRpdkVsZW1lbnQuc2V0QXR0cmlidXRlKFwiaWRcIiwgdGhpcy5sYWJlbElucHV0SUQpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdHB1YmxpYyBpc1RlbXBsYXRlKHZhbHVlKSB7XG5cdFx0cmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgVGVtcGxhdGVSZWY7XG5cdH1cbn1cbiJdfQ==
323
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFiZWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2lucHV0L2xhYmVsLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ04sU0FBUyxFQUNULEtBQUssRUFHTCxXQUFXLEVBQ1gsV0FBVyxFQUNYLFNBQVMsRUFDVCxZQUFZLEVBR1osTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2pELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7Ozs7O0FBRTlDOzs7Ozs7Ozs7OztHQVdHO0FBa0dILE1BQU0sT0FBTyxLQUFLO0lBd0RqQjs7T0FFRztJQUNILFlBQXNCLGlCQUFvQztRQUFwQyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBdEQxRDs7O1VBR0U7UUFDTyxpQkFBWSxHQUFHLGFBQWEsS0FBSyxDQUFDLFlBQVksRUFBRSxFQUFFLENBQUM7UUFDNUQ7O1dBRUc7UUFDTSxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQzFCOztXQUVHO1FBQ00sYUFBUSxHQUFHLEtBQUssQ0FBQztRQVMxQjs7V0FFRztRQUNNLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFDekI7O1lBRUk7UUFDSyxTQUFJLEdBQUcsS0FBSyxDQUFDO0lBMEJ1QyxDQUFDO0lBVDlELElBQXlDLFVBQVU7UUFDbEQsT0FBTyxJQUFJLENBQUMsSUFBSSxLQUFLLFNBQVMsQ0FBQztJQUNoQyxDQUFDO0lBU0Q7O09BRUc7SUFDSCxrQkFBa0I7UUFDakIsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2xCLElBQUksQ0FBQyxJQUFJLEdBQUcsVUFBVSxDQUFDO1NBQ3ZCO2FBQU0sSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQzFCLElBQUksQ0FBQyxJQUFJLEdBQUcsV0FBVyxDQUFDO1NBQ3hCO0lBQ0YsQ0FBQztJQUVEOztPQUVHO0lBQ0gsZUFBZTtRQUNkLDREQUE0RDtRQUM1RCxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDakIseURBQXlEO1lBQ3pELE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1lBQ2hGLElBQUksWUFBWSxFQUFFO2dCQUNqQixnRUFBZ0U7Z0JBQ2hFLElBQUksWUFBWSxDQUFDLEVBQUUsRUFBRTtvQkFDcEIsSUFBSSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUMsRUFBRSxDQUFDO29CQUNwQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxFQUFFLENBQUM7aUJBQ3ZDO2dCQUNELFlBQVksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztnQkFDbkQsT0FBTzthQUNQO1lBRUQsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ25FLElBQUksVUFBVSxFQUFFO2dCQUNmLElBQUksVUFBVSxDQUFDLEVBQUUsRUFBRTtvQkFDbEIsSUFBSSxDQUFDLFlBQVksR0FBRyxVQUFVLENBQUMsRUFBRSxDQUFDO29CQUNsQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxFQUFFLENBQUM7aUJBQ3ZDO2dCQUNELFVBQVUsQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQzthQUNqRDtTQUNEO0lBQ0YsQ0FBQztJQUVNLFVBQVUsQ0FBQyxLQUFLO1FBQ3RCLE9BQU8sS0FBSyxZQUFZLFdBQVcsQ0FBQztJQUNyQyxDQUFDOztBQXRHRDs7R0FFRztBQUNJLGtCQUFZLEdBQUcsQ0FBQyxDQUFDO2tHQUpaLEtBQUs7c0ZBQUwsS0FBSyxtWUE2Q0gsUUFBUSw0RUFHUixTQUFTLG9KQS9JYjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBNkZUOzJGQUVXLEtBQUs7a0JBakdqQixTQUFTO21CQUFDO29CQUNWLFFBQVEsRUFBRSxzQkFBc0I7b0JBQ2hDLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBNkZUO2lCQUNEO3dHQVVTLFlBQVk7c0JBQXBCLEtBQUs7Z0JBSUcsUUFBUTtzQkFBaEIsS0FBSztnQkFJRyxRQUFRO3NCQUFoQixLQUFLO2dCQUlHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBSUcsV0FBVztzQkFBbkIsS0FBSztnQkFJRyxPQUFPO3NCQUFmLEtBQUs7Z0JBSUcsSUFBSTtzQkFBWixLQUFLO2dCQUlHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBSUcsU0FBUztzQkFBakIsS0FBSztnQkFFZ0IsT0FBTztzQkFBNUIsU0FBUzt1QkFBQyxTQUFTO2dCQUVJLFFBQVE7c0JBQS9CLFlBQVk7dUJBQUMsUUFBUTtnQkFHc0IsU0FBUztzQkFBcEQsWUFBWTt1QkFBQyxTQUFTLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUVELFVBQVU7c0JBQWxELFdBQVc7dUJBQUMsc0JBQXNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcblx0Q29tcG9uZW50LFxuXHRJbnB1dCxcblx0QWZ0ZXJWaWV3SW5pdCxcblx0RWxlbWVudFJlZixcblx0SG9zdEJpbmRpbmcsXG5cdFRlbXBsYXRlUmVmLFxuXHRWaWV3Q2hpbGQsXG5cdENvbnRlbnRDaGlsZCxcblx0QWZ0ZXJDb250ZW50SW5pdCxcblx0Q2hhbmdlRGV0ZWN0b3JSZWZcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcblxuaW1wb3J0IHsgVGV4dEFyZWEgfSBmcm9tIFwiLi90ZXh0LWFyZWEuZGlyZWN0aXZlXCI7XG5pbXBvcnQgeyBUZXh0SW5wdXQgfSBmcm9tIFwiLi9pbnB1dC5kaXJlY3RpdmVcIjtcblxuLyoqXG4gKiBbU2VlIGRlbW9dKC4uLy4uLz9wYXRoPS9zdG9yeS9jb21wb25lbnRzLWlucHV0LS1sYWJlbClcbiAqXG4gKiBUbyBwcmV2ZW50IGF0dHJpYnV0ZSBkcmlsbGluZywgdXNlIGBpYm0tdGV4dC1sYWJlbGAgb3IgYGlibS10ZXh0YXJlYS1sYWJlbGAgY29tcG9uZW50c1xuICpcbiAqIGBgYGh0bWxcbiAqIDxjZHMtbGFiZWw+XG4gKiBcdExhYmVsXG4gKiBcdDxpbnB1dCBjZHNUZXh0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJpbnB1dC1maWVsZFwiPlxuICogPC9jZHMtbGFiZWw+XG4gKiBgYGBcbiAqL1xuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiBcImNkcy1sYWJlbCwgaWJtLWxhYmVsXCIsXG5cdHRlbXBsYXRlOiBgXG5cdFx0PG5nLXRlbXBsYXRlICNpbnB1dENvbnRlbnRUZW1wbGF0ZT5cblx0XHRcdDxuZy1jb250ZW50IHNlbGVjdD1cImlucHV0LHRleHRhcmVhLGRpdlwiPjwvbmctY29udGVudD5cblx0XHQ8L25nLXRlbXBsYXRlPlxuXG5cdFx0PG5nLXRlbXBsYXRlICNsYWJlbENvbnRlbnRUZW1wbGF0ZT5cblx0XHRcdDxuZy1jb250ZW50PjwvbmctY29udGVudD5cblx0XHQ8L25nLXRlbXBsYXRlPlxuXG5cdFx0PG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwidHlwZVwiPlxuXHRcdFx0PG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ1RleHRBcmVhJ1wiPlxuXHRcdFx0XHQ8Y2RzLXRleHRhcmVhLWxhYmVsXG5cdFx0XHRcdFx0W2xhYmVsSW5wdXRJRF09XCJsYWJlbElucHV0SURcIlxuXHRcdFx0XHRcdFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG5cdFx0XHRcdFx0W3NrZWxldG9uXT1cInNrZWxldG9uXCJcblx0XHRcdFx0XHRbaGVscGVyVGV4dF09XCJoZWxwZXJUZXh0XCJcblx0XHRcdFx0XHRbaW52YWxpZF09XCJpbnZhbGlkXCJcblx0XHRcdFx0XHRbaW52YWxpZFRleHRdPVwiaW52YWxpZFRleHRcIlxuXHRcdFx0XHRcdFt3YXJuXT1cIndhcm5cIlxuXHRcdFx0XHRcdFt3YXJuVGV4dF09XCJ3YXJuVGV4dFwiXG5cdFx0XHRcdFx0W2FyaWFMYWJlbF09XCJhcmlhTGFiZWxcIlxuXHRcdFx0XHRcdFtsYWJlbFRlbXBsYXRlXT1cImxhYmVsQ29udGVudFRlbXBsYXRlXCJcblx0XHRcdFx0XHRbdGV4dEFyZWFUZW1wbGF0ZV09XCJpbnB1dENvbnRlbnRUZW1wbGF0ZVwiPlxuXHRcdFx0XHQ8L2Nkcy10ZXh0YXJlYS1sYWJlbD5cblx0XHRcdDwvbmctY29udGFpbmVyPlxuXHRcdFx0PG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ1RleHRJbnB1dCdcIj5cblx0XHRcdFx0PGNkcy10ZXh0LWxhYmVsXG5cdFx0XHRcdFx0W2xhYmVsSW5wdXRJRF09XCJsYWJlbElucHV0SURcIlxuXHRcdFx0XHRcdFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG5cdFx0XHRcdFx0W3NrZWxldG9uXT1cInNrZWxldG9uXCJcblx0XHRcdFx0XHRbaGVscGVyVGV4dF09XCJoZWxwZXJUZXh0XCJcblx0XHRcdFx0XHRbaW52YWxpZF09XCJpbnZhbGlkXCJcblx0XHRcdFx0XHRbaW52YWxpZFRleHRdPVwiaW52YWxpZFRleHRcIlxuXHRcdFx0XHRcdFt3YXJuXT1cIndhcm5cIlxuXHRcdFx0XHRcdFt3YXJuVGV4dF09XCJ3YXJuVGV4dFwiXG5cdFx0XHRcdFx0W2FyaWFMYWJlbF09XCJhcmlhTGFiZWxcIlxuXHRcdFx0XHRcdFtsYWJlbFRlbXBsYXRlXT1cImxhYmVsQ29udGVudFRlbXBsYXRlXCJcblx0XHRcdFx0XHRbdGV4dElucHV0VGVtcGxhdGVdPVwiaW5wdXRDb250ZW50VGVtcGxhdGVcIj5cblx0XHRcdFx0PC9jZHMtdGV4dC1sYWJlbD5cblx0XHRcdDwvbmctY29udGFpbmVyPlxuXHRcdFx0PG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hEZWZhdWx0PlxuXHRcdFx0XHQ8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiZGVmYXVsdFwiPjwvbmctdGVtcGxhdGU+XG5cdFx0XHQ8L25nLWNvbnRhaW5lcj5cblx0XHQ8L25nLWNvbnRhaW5lcj5cblxuXHRcdDxuZy10ZW1wbGF0ZSAjZGVmYXVsdD5cblx0XHRcdDxsYWJlbFxuXHRcdFx0XHRbZm9yXT1cImxhYmVsSW5wdXRJRFwiXG5cdFx0XHRcdFthdHRyLmFyaWEtbGFiZWxdPVwiYXJpYUxhYmVsXCJcblx0XHRcdFx0Y2xhc3M9XCJjZHMtLWxhYmVsXCJcblx0XHRcdFx0W25nQ2xhc3NdPVwie1xuXHRcdFx0XHRcdCdjZHMtLWxhYmVsLS1kaXNhYmxlZCc6IGRpc2FibGVkLFxuXHRcdFx0XHRcdCdjZHMtLXNrZWxldG9uJzogc2tlbGV0b25cblx0XHRcdFx0fVwiPlxuXHRcdFx0XHQ8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwibGFiZWxDb250ZW50VGVtcGxhdGVcIj48L25nLXRlbXBsYXRlPlxuXHRcdFx0PC9sYWJlbD5cblx0XHRcdDxkaXZcblx0XHRcdFx0Y2xhc3M9XCJjZHMtLXRleHQtaW5wdXRfX2ZpZWxkLXdyYXBwZXJcIlxuXHRcdFx0XHRbbmdDbGFzc109XCJ7XG5cdFx0XHRcdFx0J2Nkcy0tdGV4dC1pbnB1dF9fZmllbGQtd3JhcHBlci0td2FybmluZyc6IHdhcm5cblx0XHRcdFx0fVwiXG5cdFx0XHRcdFthdHRyLmRhdGEtaW52YWxpZF09XCIoaW52YWxpZCA/IHRydWUgOiBudWxsKVwiXG5cdFx0XHRcdCN3cmFwcGVyPlxuXHRcdFx0XHQ8c3ZnXG5cdFx0XHRcdFx0Km5nSWY9XCIhd2FybiAmJiBpbnZhbGlkXCJcblx0XHRcdFx0XHRpYm1JY29uPVwid2FybmluZy0tZmlsbGVkXCJcblx0XHRcdFx0XHRzaXplPVwiMTZcIlxuXHRcdFx0XHRcdGNsYXNzPVwiY2RzLS10ZXh0LWlucHV0X19pbnZhbGlkLWljb25cIj5cblx0XHRcdFx0PC9zdmc+XG5cdFx0XHRcdDxzdmdcblx0XHRcdFx0XHQqbmdJZj1cIiFpbnZhbGlkICYmIHdhcm5cIlxuXHRcdFx0XHRcdGlibUljb249XCJ3YXJuaW5nLS1hbHQtLWZpbGxlZFwiXG5cdFx0XHRcdFx0c2l6ZT1cIjE2XCJcblx0XHRcdFx0XHRjbGFzcz1cImNkcy0tdGV4dC1pbnB1dF9faW52YWxpZC1pY29uIGNkcy0tdGV4dC1pbnB1dF9faW52YWxpZC1pY29uLS13YXJuaW5nXCI+XG5cdFx0XHRcdDwvc3ZnPlxuXHRcdFx0XHQ8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiaW5wdXRDb250ZW50VGVtcGxhdGVcIj48L25nLXRlbXBsYXRlPlxuXHRcdFx0PC9kaXY+XG5cdFx0XHQ8ZGl2XG5cdFx0XHRcdCpuZ0lmPVwiIXNrZWxldG9uICYmIGhlbHBlclRleHQgJiYgIWludmFsaWQgJiYgIXdhcm5cIlxuXHRcdFx0XHRjbGFzcz1cImNkcy0tZm9ybV9faGVscGVyLXRleHRcIlxuXHRcdFx0XHRbbmdDbGFzc109XCJ7J2Nkcy0tZm9ybV9faGVscGVyLXRleHQtLWRpc2FibGVkJzogZGlzYWJsZWR9XCI+XG5cdFx0XHRcdDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNUZW1wbGF0ZShoZWxwZXJUZXh0KVwiPnt7aGVscGVyVGV4dH19PC9uZy1jb250YWluZXI+XG5cdFx0XHRcdDxuZy10ZW1wbGF0ZSAqbmdJZj1cImlzVGVtcGxhdGUoaGVscGVyVGV4dClcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJoZWxwZXJUZXh0XCI+PC9uZy10ZW1wbGF0ZT5cblx0XHRcdDwvZGl2PlxuXHRcdFx0PGRpdiAqbmdJZj1cIiF3YXJuICYmIGludmFsaWRcIiBjbGFzcz1cImNkcy0tZm9ybS1yZXF1aXJlbWVudFwiPlxuXHRcdFx0XHQ8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzVGVtcGxhdGUoaW52YWxpZFRleHQpXCI+e3tpbnZhbGlkVGV4dH19PC9uZy1jb250YWluZXI+XG5cdFx0XHRcdDxuZy10ZW1wbGF0ZSAqbmdJZj1cImlzVGVtcGxhdGUoaW52YWxpZFRleHQpXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwiaW52YWxpZFRleHRcIj48L25nLXRlbXBsYXRlPlxuXHRcdFx0PC9kaXY+XG5cdFx0XHQ8ZGl2ICpuZ0lmPVwiIWludmFsaWQgJiYgd2FyblwiIGNsYXNzPVwiY2RzLS1mb3JtLXJlcXVpcmVtZW50XCI+XG5cdFx0XHRcdDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNUZW1wbGF0ZSh3YXJuVGV4dClcIj57e3dhcm5UZXh0fX08L25nLWNvbnRhaW5lcj5cblx0XHRcdFx0PG5nLXRlbXBsYXRlICpuZ0lmPVwiaXNUZW1wbGF0ZSh3YXJuVGV4dClcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJ3YXJuVGV4dFwiPjwvbmctdGVtcGxhdGU+XG5cdFx0XHQ8L2Rpdj5cblx0XHQ8L25nLXRlbXBsYXRlPlxuXHRgXG59KVxuZXhwb3J0IGNsYXNzIExhYmVsIGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCwgQWZ0ZXJWaWV3SW5pdCB7XG5cdC8qKlxuXHQgKiBVc2VkIHRvIGJ1aWxkIHRoZSBpZCBvZiB0aGUgaW5wdXQgaXRlbSBhc3NvY2lhdGVkIHdpdGggdGhlIGBMYWJlbGAuXG5cdCAqL1xuXHRzdGF0aWMgbGFiZWxDb3VudGVyID0gMDtcblx0LyoqXG5cdCAqIFRoZSBpZCBvZiB0aGUgaW5wdXQgaXRlbSBhc3NvY2lhdGVkIHdpdGggdGhlIGBMYWJlbGAuIFRoaXMgdmFsdWUgaXMgYWxzbyB1c2VkIHRvIGFzc29jaWF0ZSB0aGUgYExhYmVsYCB3aXRoXG5cdCAqIGl0cyBpbnB1dCBjb3VudGVycGFydCB0aHJvdWdoIHRoZSAnZm9yJyBhdHRyaWJ1dGUuXG5cdCovXG5cdEBJbnB1dCgpIGxhYmVsSW5wdXRJRCA9IGBjZHMtbGFiZWwtJHtMYWJlbC5sYWJlbENvdW50ZXIrK31gO1xuXHQvKipcblx0ICogU2V0IHRvIGB0cnVlYCBmb3IgZGlzYWJsZWQgc3RhdGUuXG5cdCAqL1xuXHRASW5wdXQoKSBkaXNhYmxlZCA9IGZhbHNlO1xuXHQvKipcblx0ICogU2V0IHRvIGB0cnVlYCBmb3IgYSBsb2FkaW5nIGxhYmVsLlxuXHQgKi9cblx0QElucHV0KCkgc2tlbGV0b24gPSBmYWxzZTtcblx0LyoqXG5cdCAqIE9wdGlvbmFsIGhlbHBlciB0ZXh0IHRoYXQgYXBwZWFycyB1bmRlciB0aGUgbGFiZWwuXG5cdCAqL1xuXHRASW5wdXQoKSBoZWxwZXJUZXh0OiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjxhbnk+O1xuXHQvKipcblx0ICogU2V0cyB0aGUgaW52YWxpZCB0ZXh0LlxuXHQgKi9cblx0QElucHV0KCkgaW52YWxpZFRleHQ6IHN0cmluZyB8IFRlbXBsYXRlUmVmPGFueT47XG5cdC8qKlxuXHQgKiBTZXQgdG8gYHRydWVgIGZvciBhbiBpbnZhbGlkIGxhYmVsIGNvbXBvbmVudC5cblx0ICovXG5cdEBJbnB1dCgpIGludmFsaWQgPSBmYWxzZTtcblx0LyoqXG5cdCAgKiBTZXQgdG8gYHRydWVgIHRvIHNob3cgYSB3YXJuaW5nIChjb250ZW50cyBzZXQgYnkgd2FybmluZ1RleHQpXG5cdCAgKi9cblx0QElucHV0KCkgd2FybiA9IGZhbHNlO1xuXHQvKipcblx0ICogU2V0cyB0aGUgd2FybmluZyB0ZXh0XG5cdCAqL1xuXHRASW5wdXQoKSB3YXJuVGV4dDogc3RyaW5nIHwgVGVtcGxhdGVSZWY8YW55Pjtcblx0LyoqXG5cdCAqIFNldCB0aGUgYXJpYWxhYmVsIGZvciBsYWJlbFxuXHQgKi9cblx0QElucHV0KCkgYXJpYUxhYmVsOiBzdHJpbmc7XG5cblx0QFZpZXdDaGlsZChcIndyYXBwZXJcIikgd3JhcHBlcjogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XG5cblx0QENvbnRlbnRDaGlsZChUZXh0QXJlYSkgdGV4dEFyZWE6IFRleHRBcmVhO1xuXG5cdC8vIEB0cy1pZ25vcmVcblx0QENvbnRlbnRDaGlsZChUZXh0SW5wdXQsIHsgc3RhdGljOiBmYWxzZSB9KSB0ZXh0SW5wdXQ6IFRleHRJbnB1dDtcblxuXHRASG9zdEJpbmRpbmcoXCJjbGFzcy5jZHMtLWZvcm0taXRlbVwiKSBnZXQgbGFiZWxDbGFzcygpIHtcblx0XHRyZXR1cm4gdGhpcy50eXBlID09PSB1bmRlZmluZWQ7XG5cdH1cblxuXHR0eXBlOiBcIlRleHRBcmVhXCIgfCBcIlRleHRJbnB1dFwiO1xuXG5cdC8qKlxuXHQgKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIExhYmVsLlxuXHQgKi9cblx0Y29uc3RydWN0b3IocHJvdGVjdGVkIGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZikge31cblxuXHQvKipcblx0ICogVXBkYXRlIHdyYXBwZXIgY2xhc3MgaWYgYSB0ZXh0YXJlYSBpcyBob3N0ZWQuXG5cdCAqL1xuXHRuZ0FmdGVyQ29udGVudEluaXQoKSB7XG5cdFx0aWYgKHRoaXMudGV4dEFyZWEpIHtcblx0XHRcdHRoaXMudHlwZSA9IFwiVGV4dEFyZWFcIjtcblx0XHR9IGVsc2UgaWYgKHRoaXMudGV4dElucHV0KSB7XG5cdFx0XHR0aGlzLnR5cGUgPSBcIlRleHRJbnB1dFwiO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBTZXRzIHRoZSBpZCBvbiB0aGUgaW5wdXQgaXRlbSBhc3NvY2lhdGVkIHdpdGggdGhlIGBMYWJlbGAuXG5cdCAqL1xuXHRuZ0FmdGVyVmlld0luaXQoKSB7XG5cdFx0Ly8gV2lsbCBvbmx5IGJlIGNhbGxlZCB3aGVuIGBkZWZhdWx0YCB0ZW1wbGF0ZSBpcyBiZWluZyB1c2VkXG5cdFx0aWYgKHRoaXMud3JhcHBlcikge1xuXHRcdFx0Ly8gUHJpb3JpdGl6ZSBzZXR0aW5nIGlkIHRvIGBpbnB1dGAgJiBgdGV4dGFyZWFgIG92ZXIgZGl2XG5cdFx0XHRjb25zdCBpbnB1dEVsZW1lbnQgPSB0aGlzLndyYXBwZXIubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKFwiaW5wdXQsdGV4dGFyZWFcIik7XG5cdFx0XHRpZiAoaW5wdXRFbGVtZW50KSB7XG5cdFx0XHRcdC8vIGF2b2lkIG92ZXJyaWRpbmcgaWRzIGFscmVhZHkgc2V0IGJ5IHRoZSB1c2VyIHJldXNlIGl0IGluc3RlYWRcblx0XHRcdFx0aWYgKGlucHV0RWxlbWVudC5pZCkge1xuXHRcdFx0XHRcdHRoaXMubGFiZWxJbnB1dElEID0gaW5wdXRFbGVtZW50LmlkO1xuXHRcdFx0XHRcdHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlucHV0RWxlbWVudC5zZXRBdHRyaWJ1dGUoXCJpZFwiLCB0aGlzLmxhYmVsSW5wdXRJRCk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblxuXHRcdFx0Y29uc3QgZGl2RWxlbWVudCA9IHRoaXMud3JhcHBlci5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXCJkaXZcIik7XG5cdFx0XHRpZiAoZGl2RWxlbWVudCkge1xuXHRcdFx0XHRpZiAoZGl2RWxlbWVudC5pZCkge1xuXHRcdFx0XHRcdHRoaXMubGFiZWxJbnB1dElEID0gZGl2RWxlbWVudC5pZDtcblx0XHRcdFx0XHR0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRkaXZFbGVtZW50LnNldEF0dHJpYnV0ZShcImlkXCIsIHRoaXMubGFiZWxJbnB1dElEKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRwdWJsaWMgaXNUZW1wbGF0ZSh2YWx1ZSkge1xuXHRcdHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFRlbXBsYXRlUmVmO1xuXHR9XG59XG4iXX0=