@simpleangularcontrols/sac-common 16.0.0-rc.1 → 16.0.0-rc.10

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 (246) hide show
  1. package/README.md +8 -16
  2. package/common/basedatetimecontrol.d.ts +33 -33
  3. package/common/basedatetimecontrol.d.ts.map +1 -1
  4. package/common/baseinputcontrol.d.ts +9 -13
  5. package/common/baseinputcontrol.d.ts.map +1 -1
  6. package/common/basemodelcontrol.d.ts +161 -86
  7. package/common/basemodelcontrol.d.ts.map +1 -1
  8. package/common/baseuploadcontrol.d.ts +136 -141
  9. package/common/baseuploadcontrol.d.ts.map +1 -1
  10. package/components/browser/browser.d.ts +11 -6
  11. package/components/browser/browser.d.ts.map +1 -1
  12. package/controls/buttons/button.d.ts +23 -22
  13. package/controls/buttons/button.d.ts.map +1 -1
  14. package/controls/checkbox/checkbox.d.ts +18 -5
  15. package/controls/checkbox/checkbox.d.ts.map +1 -1
  16. package/controls/checkbox/radiobutton.d.ts +9 -0
  17. package/controls/checkbox/radiobutton.d.ts.map +1 -1
  18. package/controls/checkbox/radiobuttons.d.ts +21 -20
  19. package/controls/checkbox/radiobuttons.d.ts.map +1 -1
  20. package/controls/confirm/confirm.button.d.ts +14 -8
  21. package/controls/confirm/confirm.button.d.ts.map +1 -1
  22. package/controls/confirm/confirm.service.d.ts +24 -19
  23. package/controls/confirm/confirm.service.d.ts.map +1 -1
  24. package/controls/contextmenu/contextmenu.d.ts +42 -42
  25. package/controls/contextmenu/contextmenu.d.ts.map +1 -1
  26. package/controls/contextmenu/contextmenuanchor.d.ts +2 -2
  27. package/controls/contextmenu/contextmenuanchor.d.ts.map +1 -1
  28. package/controls/contextmenu/contextmenucontainer.d.ts +2 -2
  29. package/controls/contextmenu/contextmenucontainer.d.ts.map +1 -1
  30. package/controls/datetime/date.d.ts +32 -36
  31. package/controls/datetime/date.d.ts.map +1 -1
  32. package/controls/datetime/datetime.d.ts +34 -38
  33. package/controls/datetime/datetime.d.ts.map +1 -1
  34. package/controls/datetime/time.d.ts +28 -32
  35. package/controls/datetime/time.d.ts.map +1 -1
  36. package/controls/form/form.d.ts +7 -43
  37. package/controls/form/form.d.ts.map +1 -1
  38. package/controls/grid/grid.d.ts +67 -62
  39. package/controls/grid/grid.d.ts.map +1 -1
  40. package/controls/grid/gridbutton.d.ts +14 -14
  41. package/controls/grid/gridbutton.d.ts.map +1 -1
  42. package/controls/grid/gridcolumn.d.ts +8 -8
  43. package/controls/grid/gridcolumn.d.ts.map +1 -1
  44. package/controls/grid/gridcolumnaction.d.ts +3 -3
  45. package/controls/grid/gridcolumnaction.d.ts.map +1 -1
  46. package/controls/grid/gridcolumnbase.d.ts +46 -38
  47. package/controls/grid/gridcolumnbase.d.ts.map +1 -1
  48. package/controls/grid/gridimage.d.ts +2 -2
  49. package/controls/grid/gridimage.d.ts.map +1 -1
  50. package/controls/grid/model.d.ts +51 -42
  51. package/controls/grid/model.d.ts.map +1 -1
  52. package/controls/grid/paging.d.ts +77 -76
  53. package/controls/grid/paging.d.ts.map +1 -1
  54. package/controls/input/input.d.ts +11 -11
  55. package/controls/input/input.d.ts.map +1 -1
  56. package/controls/input/inputcurrency.d.ts +6 -1
  57. package/controls/input/inputcurrency.d.ts.map +1 -1
  58. package/controls/input/inputdecimal.d.ts +21 -21
  59. package/controls/input/inputdecimal.d.ts.map +1 -1
  60. package/controls/input/inputemail.d.ts.map +1 -1
  61. package/controls/input/inputinteger.d.ts +21 -21
  62. package/controls/input/inputinteger.d.ts.map +1 -1
  63. package/controls/input/inputpassword.d.ts +5 -5
  64. package/controls/input/inputpassword.d.ts.map +1 -1
  65. package/controls/input/inputsearch.d.ts +14 -5
  66. package/controls/input/inputsearch.d.ts.map +1 -1
  67. package/controls/layout/formlayout.d.ts +62 -0
  68. package/controls/layout/formlayout.d.ts.map +1 -0
  69. package/controls/list/dropdown.d.ts +45 -45
  70. package/controls/list/dropdown.d.ts.map +1 -1
  71. package/controls/list/listbox.d.ts +20 -20
  72. package/controls/list/listbox.d.ts.map +1 -1
  73. package/controls/multilanguage/multilanguageinput.d.ts +36 -35
  74. package/controls/multilanguage/multilanguageinput.d.ts.map +1 -1
  75. package/controls/multilanguage/multilanguageinputarea.d.ts +39 -38
  76. package/controls/multilanguage/multilanguageinputarea.d.ts.map +1 -1
  77. package/controls/static/formcontainer.d.ts +3 -7
  78. package/controls/static/formcontainer.d.ts.map +1 -1
  79. package/controls/tinymce/tinymce.d.ts +63 -63
  80. package/controls/tinymce/tinymce.d.ts.map +1 -1
  81. package/controls/tooltip/tooltip.d.ts +88 -63
  82. package/controls/tooltip/tooltip.d.ts.map +1 -1
  83. package/controls/upload/dropzonemultiple.d.ts +24 -24
  84. package/controls/upload/dropzonemultiple.d.ts.map +1 -1
  85. package/controls/upload/uploadmultiple.d.ts +9 -9
  86. package/controls/upload/uploadmultiple.d.ts.map +1 -1
  87. package/controls/validation/validationsummary.d.ts +18 -13
  88. package/controls/validation/validationsummary.d.ts.map +1 -1
  89. package/enums/ButtonRoleType.d.ts +2 -0
  90. package/enums/ButtonRoleType.d.ts.map +1 -0
  91. package/enums/ControlHeight.d.ts +18 -0
  92. package/enums/ControlHeight.d.ts.map +1 -0
  93. package/esm2022/common/basedatetimecontrol.mjs +41 -163
  94. package/esm2022/common/baseinputcontrol.mjs +21 -80
  95. package/esm2022/common/baselistcontrol.mjs +11 -56
  96. package/esm2022/common/basemodelcontrol.mjs +129 -354
  97. package/esm2022/common/baseselectcontrol.mjs +6 -27
  98. package/esm2022/common/baseuploadcontrol.mjs +109 -433
  99. package/esm2022/components/browser/browser.mjs +66 -474
  100. package/esm2022/components/browser/models/browserfile.mjs +3 -2
  101. package/esm2022/components/browser/models/browserfiledeleterequest.mjs +5 -10
  102. package/esm2022/components/browser/models/browserfilerenamerequest.mjs +5 -10
  103. package/esm2022/components/browser/models/browserfileresponse.mjs +3 -2
  104. package/esm2022/components/browser/models/browserfilesaverequest.mjs +5 -10
  105. package/esm2022/components/browser/models/browsernode.mjs +3 -2
  106. package/esm2022/components/browser/models/browsernodedeleterequest.mjs +5 -10
  107. package/esm2022/components/browser/models/browsernodenewrequest.mjs +5 -10
  108. package/esm2022/components/browser/models/browsernoderenamerequest.mjs +5 -10
  109. package/esm2022/components/browser/models/browsernoderequest.mjs +5 -10
  110. package/esm2022/components/browser/models/browsernoderesponse.mjs +3 -2
  111. package/esm2022/controls/buttons/button.mjs +32 -131
  112. package/esm2022/controls/checkbox/checkbox.mjs +15 -30
  113. package/esm2022/controls/checkbox/radiobutton.mjs +24 -98
  114. package/esm2022/controls/checkbox/radiobuttons.mjs +29 -106
  115. package/esm2022/controls/confirm/confirm.button.mjs +17 -21
  116. package/esm2022/controls/confirm/confirm.mjs +19 -69
  117. package/esm2022/controls/confirm/confirm.service.mjs +29 -74
  118. package/esm2022/controls/contextmenu/contextmenu.mjs +43 -171
  119. package/esm2022/controls/contextmenu/contextmenuanchor.mjs +8 -19
  120. package/esm2022/controls/contextmenu/contextmenucontainer.mjs +8 -19
  121. package/esm2022/controls/contextmenu/contextmenuitem.mjs +4 -13
  122. package/esm2022/controls/contextmenu/contextmenuitembutton.mjs +15 -91
  123. package/esm2022/controls/datetime/date.mjs +44 -207
  124. package/esm2022/controls/datetime/dateselector.mjs +65 -409
  125. package/esm2022/controls/datetime/datetime.mjs +46 -224
  126. package/esm2022/controls/datetime/time.mjs +43 -205
  127. package/esm2022/controls/dialog/dialog.mjs +33 -194
  128. package/esm2022/controls/form/form.mjs +27 -153
  129. package/esm2022/controls/grid/grid.mjs +48 -155
  130. package/esm2022/controls/grid/gridbutton.mjs +21 -59
  131. package/esm2022/controls/grid/gridcolumn.mjs +21 -46
  132. package/esm2022/controls/grid/gridcolumnaction.mjs +8 -22
  133. package/esm2022/controls/grid/gridcolumnbase.mjs +35 -124
  134. package/esm2022/controls/grid/gridimage.mjs +5 -16
  135. package/esm2022/controls/grid/model.mjs +49 -74
  136. package/esm2022/controls/grid/paging.mjs +82 -251
  137. package/esm2022/controls/input/input.mjs +17 -65
  138. package/esm2022/controls/input/inputarea.mjs +10 -53
  139. package/esm2022/controls/input/inputcurrency.mjs +9 -14
  140. package/esm2022/controls/input/inputdecimal.mjs +33 -143
  141. package/esm2022/controls/input/inputemail.mjs +10 -37
  142. package/esm2022/controls/input/inputinteger.mjs +32 -127
  143. package/esm2022/controls/input/inputpassword.mjs +12 -43
  144. package/esm2022/controls/input/inputsearch.mjs +16 -38
  145. package/esm2022/controls/layout/formlayout.mjs +32 -0
  146. package/esm2022/controls/list/dropdown.mjs +79 -225
  147. package/esm2022/controls/list/listbox.mjs +40 -159
  148. package/esm2022/controls/multilanguage/multilanguageinput.mjs +48 -215
  149. package/esm2022/controls/multilanguage/multilanguageinputarea.mjs +51 -217
  150. package/esm2022/controls/static/formcontainer.mjs +14 -45
  151. package/esm2022/controls/static/staticlabel.mjs +7 -28
  152. package/esm2022/controls/tabs/tab.mjs +14 -68
  153. package/esm2022/controls/tabs/tabitem.mjs +7 -37
  154. package/esm2022/controls/tinymce/tinymce.mjs +62 -232
  155. package/esm2022/controls/tinymce/tinymcedialogsettings.mjs +5 -10
  156. package/esm2022/controls/tinymce/tinymcedialogsettingsmeta.mjs +4 -4
  157. package/esm2022/controls/tinymce/tinymceinstance.mjs +3 -2
  158. package/esm2022/controls/tooltip/tooltip.mjs +102 -358
  159. package/esm2022/controls/treeview/ngtreeitemaction.mjs +9 -56
  160. package/esm2022/controls/treeview/treeview.mjs +53 -299
  161. package/esm2022/controls/treeview/treeviewchild.mjs +5 -19
  162. package/esm2022/controls/upload/dropzonemultiple.mjs +32 -152
  163. package/esm2022/controls/upload/dropzonesingle.mjs +12 -91
  164. package/esm2022/controls/upload/uploadmultiple.mjs +21 -111
  165. package/esm2022/controls/upload/uploadsingle.mjs +8 -50
  166. package/esm2022/controls/validation/validationsummary.mjs +23 -120
  167. package/esm2022/controls/wizard/wizard.mjs +20 -128
  168. package/esm2022/controls/wizard/wizarditem.mjs +6 -31
  169. package/esm2022/enums/ButtonRoleType.mjs +3 -0
  170. package/esm2022/enums/ControlHeight.mjs +11 -0
  171. package/esm2022/enums/IconType.mjs +4 -8
  172. package/esm2022/interfaces/ISacConfigurationService.mjs +3 -0
  173. package/esm2022/interfaces/ISacFileBrowserService.mjs +3 -2
  174. package/esm2022/interfaces/ISacIconService.mjs +3 -2
  175. package/esm2022/interfaces/ISacLabelSizes.mjs +3 -0
  176. package/esm2022/interfaces/ISacLanguageService.mjs +3 -2
  177. package/esm2022/interfaces/ISacLocalisationService.mjs +3 -2
  178. package/esm2022/interfaces/ISacValidationKeyService.mjs +3 -0
  179. package/esm2022/interfaces/iabstractcontrollabel.mjs +3 -2
  180. package/esm2022/interfaces/iconfirmcomponent.mjs +3 -2
  181. package/esm2022/interfaces/idatetimecontrol.mjs +3 -2
  182. package/esm2022/interfaces/iuploadcontrol.mjs +3 -2
  183. package/esm2022/models/languagemodel.mjs +5 -11
  184. package/esm2022/public_api.mjs +25 -94
  185. package/esm2022/services/index.mjs +3 -5
  186. package/esm2022/services/sac-configuration.service.mjs +37 -0
  187. package/esm2022/services/sac-filebrowser.service.mjs +15 -167
  188. package/esm2022/services/sac-icon.service.mjs +53 -155
  189. package/esm2022/services/sac-language.service.mjs +7 -45
  190. package/esm2022/services/sac-localisation.service.mjs +33 -428
  191. package/esm2022/services/sac-validationkey.service.mjs +7 -0
  192. package/esm2022/simpleangularcontrols-sac-common.mjs +4 -4
  193. package/esm2022/utilities/convertion.mjs +6 -26
  194. package/esm2022/utilities/datatypes.mjs +4 -6
  195. package/esm2022/utilities/enums.mjs +8 -15
  196. package/esm2022/utilities/guid.mjs +8 -0
  197. package/esm2022/utilities/interpolation.mjs +7 -42
  198. package/esm2022/utilities/positioning.mjs +23 -266
  199. package/esm2022/validation/email.validator.mjs +3 -13
  200. package/esm2022/validation/index.mjs +3 -3
  201. package/esm2022/validation/invaliddate.validator.mjs +3 -14
  202. package/esm2022/validation/isDateValid.mjs +9 -13
  203. package/esm2022/validation/maxdate.validator.mjs +4 -21
  204. package/esm2022/validation/maxtime.validator.mjs +4 -21
  205. package/esm2022/validation/maxvalue.validator.mjs +3 -16
  206. package/esm2022/validation/mindate.validator.mjs +4 -21
  207. package/esm2022/validation/minfiles.validator.mjs +4 -19
  208. package/esm2022/validation/minlength.validator.mjs +3 -21
  209. package/esm2022/validation/mintime.validator.mjs +4 -21
  210. package/esm2022/validation/minvalue.validator.mjs +3 -16
  211. package/esm2022/validation/multilanguagerequired.validator.mjs +3 -22
  212. package/esm2022/validation/multilanguagerequiredany.validator.mjs +3 -22
  213. package/esm2022/validation/pattern.validator.mjs +3 -16
  214. package/esm2022/validation/required.validator.mjs +3 -13
  215. package/esm2022/validation/validation.mjs +20 -99
  216. package/esm2022/validation/validationerrorcreator.mjs +3 -11
  217. package/esm2022/validation/validationerroritem.mjs +7 -19
  218. package/fesm2022/simpleangularcontrols-sac-common.mjs +2145 -9181
  219. package/fesm2022/simpleangularcontrols-sac-common.mjs.map +1 -1
  220. package/interfaces/ISacConfigurationService.d.ts +55 -0
  221. package/interfaces/ISacConfigurationService.d.ts.map +1 -0
  222. package/interfaces/ISacIconService.d.ts +10 -2
  223. package/interfaces/ISacIconService.d.ts.map +1 -1
  224. package/interfaces/ISacLabelSizes.d.ts +27 -0
  225. package/interfaces/ISacLabelSizes.d.ts.map +1 -0
  226. package/interfaces/ISacValidationKeyService.d.ts +53 -0
  227. package/interfaces/ISacValidationKeyService.d.ts.map +1 -0
  228. package/package.json +2 -2
  229. package/public_api.d.ts +28 -17
  230. package/public_api.d.ts.map +1 -1
  231. package/services/index.d.ts +6 -4
  232. package/services/index.d.ts.map +1 -1
  233. package/services/sac-configuration.service.d.ts +119 -0
  234. package/services/sac-configuration.service.d.ts.map +1 -0
  235. package/services/sac-icon.service.d.ts +16 -0
  236. package/services/sac-icon.service.d.ts.map +1 -1
  237. package/services/sac-localisation.service.d.ts +103 -97
  238. package/services/sac-localisation.service.d.ts.map +1 -1
  239. package/services/sac-validationkey.service.d.ts +59 -0
  240. package/services/sac-validationkey.service.d.ts.map +1 -0
  241. package/simpleangularcontrols-sac-common-16.0.0-rc.10.tgz +0 -0
  242. package/utilities/guid.d.ts +5 -0
  243. package/utilities/guid.d.ts.map +1 -0
  244. package/validation/isDateValid.d.ts.map +1 -1
  245. package/simpleangularcontrols-sac-common-13.0.0-rc.1.tgz +0 -0
  246. package/simpleangularcontrols-sac-common-16.0.0-rc.1.tgz +0 -0
@@ -1,251 +1,105 @@
1
- import { Directive, Host, Input, } from '@angular/core';
2
- import { SacBaseSelectControl } from '../../common/baseselectcontrol';
3
- import { Validation } from '../../validation';
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "../form/form";
6
- /**
7
- * Function um ein Key Value Pair für das Dropdown zu erzeugen
8
- * @param id ID
9
- * @param value Wert der an das Element gebunden werden soll
10
- */
11
- export function _buildValueString(id, value) {
12
- // Wenn ID null ist Object zurückgeben
13
- if (id == null) {
14
- return `${value}`;
15
- }
16
- // Mapping Objekt zu String
17
- if (value && typeof value === 'object') {
18
- value = 'Object';
19
- }
20
- // String als ID
21
- return `${id}: ${value}`.slice(0, 50);
22
- }
1
+ function cov_10j6wgixd7(){var path="C:\\Projekte\\simpleangularcontrols-ng16\\ch.jnetwork.sac-controls\\dist\\sac-common\\esm2022\\controls\\list\\dropdown.mjs";var hash="b20bb1d6e2ae738b48e7db469241fb5dbcd89937";var global=new Function("return this")();var gcv="__coverage__";var coverageData={path:"C:\\Projekte\\simpleangularcontrols-ng16\\ch.jnetwork.sac-controls\\dist\\sac-common\\esm2022\\controls\\list\\dropdown.mjs",statementMap:{"0":{start:{line:21,column:8},end:{line:21,column:36}},"1":{start:{line:22,column:8},end:{line:22,column:33}},"2":{start:{line:23,column:8},end:{line:23,column:37}},"3":{start:{line:28,column:8},end:{line:28,column:38}},"4":{start:{line:32,column:8},end:{line:32,column:29}},"5":{start:{line:36,column:8},end:{line:36,column:31}},"6":{start:{line:40,column:8},end:{line:40,column:91}},"7":{start:{line:44,column:8},end:{line:44,column:105}},"8":{start:{line:48,column:8},end:{line:48,column:34}},"9":{start:{line:52,column:8},end:{line:52,column:36}},"10":{start:{line:60,column:8},end:{line:62,column:9}},"11":{start:{line:61,column:12},end:{line:61,column:98}},"12":{start:{line:63,column:8},end:{line:63,column:31}},"13":{start:{line:71,column:8},end:{line:71,column:52}},"14":{start:{line:79,column:8},end:{line:79,column:39}},"15":{start:{line:81,column:8},end:{line:83,column:9}},"16":{start:{line:82,column:12},end:{line:82,column:41}},"17":{start:{line:90,column:8},end:{line:90,column:51}},"18":{start:{line:97,column:20},end:{line:97,column:24}},"19":{start:{line:98,column:8},end:{line:100,column:9}},"20":{start:{line:99,column:12},end:{line:99,column:114}},"21":{start:{line:101,column:8},end:{line:101,column:21}},"22":{start:{line:108,column:8},end:{line:108,column:37}},"23":{start:{line:109,column:8},end:{line:109,column:32}},"24":{start:{line:118,column:8},end:{line:118,column:41}},"25":{start:{line:125,column:8},end:{line:129,column:9}},"26":{start:{line:126,column:12},end:{line:128,column:13}},"27":{start:{line:127,column:16},end:{line:127,column:26}},"28":{start:{line:130,column:8},end:{line:130,column:20}},"29":{start:{line:137,column:19},end:{line:137,column:46}},"30":{start:{line:138,column:8},end:{line:138,column:79}},"31":{start:{line:146,column:27},end:{line:146,column:90}},"32":{start:{line:150,column:19},end:{line:150,column:42}},"33":{start:{line:154,column:28},end:{line:154,column:56}},"34":{start:{line:155,column:8},end:{line:157,column:9}},"35":{start:{line:156,column:12},end:{line:156,column:72}},"36":{start:{line:159,column:13},end:{line:159,column:300}},"37":{start:{line:160,column:13},end:{line:160,column:375}},"38":{start:{line:163,column:0},end:{line:177,column:20}},"39":{start:{line:165,column:42},end:{line:167,column:94}},"40":{start:{line:191,column:8},end:{line:191,column:33}},"41":{start:{line:192,column:8},end:{line:192,column:35}},"42":{start:{line:193,column:8},end:{line:193,column:35}},"43":{start:{line:198,column:8},end:{line:198,column:23}},"44":{start:{line:199,column:8},end:{line:201,column:9}},"45":{start:{line:200,column:12},end:{line:200,column:54}},"46":{start:{line:210,column:8},end:{line:212,column:9}},"47":{start:{line:211,column:12},end:{line:211,column:19}},"48":{start:{line:213,column:8},end:{line:213,column:52}},"49":{start:{line:214,column:8},end:{line:214,column:65}},"50":{start:{line:215,column:8},end:{line:215,column:56}},"51":{start:{line:221,column:8},end:{line:221,column:37}},"52":{start:{line:230,column:8},end:{line:230,column:80}},"53":{start:{line:236,column:8},end:{line:238,column:9}},"54":{start:{line:237,column:12},end:{line:237,column:54}},"55":{start:{line:240,column:13},end:{line:240,column:265}},"56":{start:{line:241,column:13},end:{line:241,column:188}},"57":{start:{line:244,column:0},end:{line:250,column:20}},"58":{start:{line:246,column:42},end:{line:246,column:128}},"59":{start:{line:260,column:4},end:{line:262,column:5}},"60":{start:{line:261,column:8},end:{line:261,column:26}},"61":{start:{line:264,column:4},end:{line:266,column:5}},"62":{start:{line:265,column:8},end:{line:265,column:25}},"63":{start:{line:268,column:4},end:{line:268,column:42}}},fnMap:{"0":{name:"(anonymous_0)",decl:{start:{line:20,column:4},end:{line:20,column:5}},loc:{start:{line:20,column:60},end:{line:53,column:5}},line:20},"1":{name:"(anonymous_1)",decl:{start:{line:59,column:4},end:{line:59,column:5}},loc:{start:{line:59,column:24},end:{line:64,column:5}},line:59},"2":{name:"(anonymous_2)",decl:{start:{line:70,column:4},end:{line:70,column:5}},loc:{start:{line:70,column:21},end:{line:72,column:5}},line:70},"3":{name:"(anonymous_3)",decl:{start:{line:78,column:4},end:{line:78,column:5}},loc:{start:{line:78,column:28},end:{line:84,column:5}},line:78},"4":{name:"(anonymous_4)",decl:{start:{line:89,column:4},end:{line:89,column:5}},loc:{start:{line:89,column:20},end:{line:91,column:5}},line:89},"5":{name:"(anonymous_5)",decl:{start:{line:96,column:4},end:{line:96,column:5}},loc:{start:{line:96,column:20},end:{line:102,column:5}},line:96},"6":{name:"(anonymous_6)",decl:{start:{line:107,column:4},end:{line:107,column:5}},loc:{start:{line:107,column:22},end:{line:110,column:5}},line:107},"7":{name:"(anonymous_7)",decl:{start:{line:117,column:4},end:{line:117,column:5}},loc:{start:{line:117,column:27},end:{line:119,column:5}},line:117},"8":{name:"(anonymous_8)",decl:{start:{line:124,column:4},end:{line:124,column:5}},loc:{start:{line:124,column:23},end:{line:131,column:5}},line:124},"9":{name:"(anonymous_9)",decl:{start:{line:136,column:4},end:{line:136,column:5}},loc:{start:{line:136,column:32},end:{line:139,column:5}},line:136},"10":{name:"(anonymous_10)",decl:{start:{line:144,column:4},end:{line:144,column:5}},loc:{start:{line:144,column:28},end:{line:158,column:5}},line:144},"11":{name:"(anonymous_11)",decl:{start:{line:165,column:28},end:{line:165,column:29}},loc:{start:{line:165,column:40},end:{line:167,column:96}},line:165},"12":{name:"(anonymous_12)",decl:{start:{line:190,column:4},end:{line:190,column:5}},loc:{start:{line:190,column:48},end:{line:202,column:5}},line:190},"13":{name:"(anonymous_13)",decl:{start:{line:208,column:4},end:{line:208,column:5}},loc:{start:{line:208,column:23},end:{line:216,column:5}},line:208},"14":{name:"(anonymous_14)",decl:{start:{line:220,column:4},end:{line:220,column:5}},loc:{start:{line:220,column:21},end:{line:222,column:5}},line:220},"15":{name:"(anonymous_15)",decl:{start:{line:229,column:4},end:{line:229,column:5}},loc:{start:{line:229,column:28},end:{line:231,column:5}},line:229},"16":{name:"(anonymous_16)",decl:{start:{line:235,column:4},end:{line:235,column:5}},loc:{start:{line:235,column:18},end:{line:239,column:5}},line:235},"17":{name:"(anonymous_17)",decl:{start:{line:246,column:28},end:{line:246,column:29}},loc:{start:{line:246,column:40},end:{line:246,column:130}},line:246},"18":{name:"_buildValueString",decl:{start:{line:258,column:16},end:{line:258,column:33}},loc:{start:{line:258,column:45},end:{line:269,column:1}},line:258}},branchMap:{"0":{loc:{start:{line:60,column:8},end:{line:62,column:9}},type:"if",locations:[{start:{line:60,column:8},end:{line:62,column:9}},{start:{line:60,column:8},end:{line:62,column:9}}],line:60},"1":{loc:{start:{line:81,column:8},end:{line:83,column:9}},type:"if",locations:[{start:{line:81,column:8},end:{line:83,column:9}},{start:{line:81,column:8},end:{line:83,column:9}}],line:81},"2":{loc:{start:{line:98,column:8},end:{line:100,column:9}},type:"if",locations:[{start:{line:98,column:8},end:{line:100,column:9}},{start:{line:98,column:8},end:{line:100,column:9}}],line:98},"3":{loc:{start:{line:126,column:12},end:{line:128,column:13}},type:"if",locations:[{start:{line:126,column:12},end:{line:128,column:13}},{start:{line:126,column:12},end:{line:128,column:13}}],line:126},"4":{loc:{start:{line:138,column:15},end:{line:138,column:78}},type:"cond-expr",locations:[{start:{line:138,column:41},end:{line:138,column:64}},{start:{line:138,column:67},end:{line:138,column:78}}],line:138},"5":{loc:{start:{line:155,column:8},end:{line:157,column:9}},type:"if",locations:[{start:{line:155,column:8},end:{line:157,column:9}},{start:{line:155,column:8},end:{line:157,column:9}}],line:155},"6":{loc:{start:{line:199,column:8},end:{line:201,column:9}},type:"if",locations:[{start:{line:199,column:8},end:{line:201,column:9}},{start:{line:199,column:8},end:{line:201,column:9}}],line:199},"7":{loc:{start:{line:210,column:8},end:{line:212,column:9}},type:"if",locations:[{start:{line:210,column:8},end:{line:212,column:9}},{start:{line:210,column:8},end:{line:212,column:9}}],line:210},"8":{loc:{start:{line:236,column:8},end:{line:238,column:9}},type:"if",locations:[{start:{line:236,column:8},end:{line:238,column:9}},{start:{line:236,column:8},end:{line:238,column:9}}],line:236},"9":{loc:{start:{line:260,column:4},end:{line:262,column:5}},type:"if",locations:[{start:{line:260,column:4},end:{line:262,column:5}},{start:{line:260,column:4},end:{line:262,column:5}}],line:260},"10":{loc:{start:{line:264,column:4},end:{line:266,column:5}},type:"if",locations:[{start:{line:264,column:4},end:{line:266,column:5}},{start:{line:264,column:4},end:{line:266,column:5}}],line:264},"11":{loc:{start:{line:264,column:8},end:{line:264,column:42}},type:"binary-expr",locations:[{start:{line:264,column:8},end:{line:264,column:13}},{start:{line:264,column:17},end:{line:264,column:42}}],line:264}},s:{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0},f:{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0},b:{"0":[0,0],"1":[0,0],"2":[0,0],"3":[0,0],"4":[0,0],"5":[0,0],"6":[0,0],"7":[0,0],"8":[0,0],"9":[0,0],"10":[0,0],"11":[0,0]},inputSourceMap:{version:3,file:"dropdown.js",sourceRoot:"",sources:["../../../../../projects/sac-common/src/controls/list/dropdown.ts"],names:[],mappings:"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",sourcesContent:["import {\r\n Directive,\r\n ElementRef,\r\n Host,\r\n Injector,\r\n Input,\r\n OnDestroy,\r\n Renderer2,\r\n} from '@angular/core';\r\nimport { AbstractControl, ValidationErrors } from '@angular/forms';\r\nimport { SacBaseSelectControl } from '../../common/baseselectcontrol';\r\nimport { Validation } from '../../validation';\r\nimport { SacFormLayoutCommon } from '../layout/formlayout';\r\n\r\n// #region Classes\r\n\r\n/**\r\n * Base Dropdown Komponente\r\n */\r\n@Directive()\r\nexport class SacDropdownCommon extends SacBaseSelectControl<any> {\r\n // #region Properties\r\n\r\n /**\r\n * compareWith-Funktion\r\n */\r\n private _compareWith: (o1: any, o2: any) => boolean = Object.is;\r\n\r\n /**\r\n * Label Text f\xFCr Empty Item\r\n */\r\n @Input() public emptylabel: string = '';\r\n /**\r\n * Option Value f\xFCr Empty Item\r\n */\r\n @Input() public emptyvalue: string = null;\r\n /**\r\n * Resource Key f\xFCr Validation Message Required bei Control\r\n */\r\n @Input() public validationmessagerequired: string =\r\n this.validationKeyService.ValidationErrorRequired;\r\n /**\r\n * Resource Key f\xFCr Validation Message Required in Validation Summary\r\n */\r\n @Input()\r\n public validationmessagesummaryrequired: string =\r\n this.validationKeyService.ValidationErrorSummaryRequired;\r\n\r\n /**\r\n * Counter vom OptionID; default Wert = 0\r\n */\r\n public _optionIdCounter: number = 0;\r\n /**\r\n * OptionMap\r\n */\r\n public _optionMap: Map<string, any> = new Map<string, any>();\r\n\r\n // #endregion Properties\r\n\r\n // #region Constructors\r\n\r\n /**\r\n * Constructor\r\n * @param formlayout SacFormLayoutCommon to define scoped layout settings\r\n * @param injector Injector for injecting services\r\n * @param renderer html rendering engine\r\n * @param elementRef reference to html element\r\n */\r\n constructor(\r\n @Host() formlayout: SacFormLayoutCommon,\r\n injector: Injector,\r\n private renderer: Renderer2,\r\n private elementRef: ElementRef\r\n ) {\r\n super(formlayout, injector);\r\n }\r\n\r\n // #endregion Constructors\r\n\r\n // #region Public Getters And Setters\r\n\r\n /**\r\n * compareWith-Funktion\r\n */\r\n @Input()\r\n public set comparewith(fn: (o1: any, o2: any) => boolean) {\r\n if (typeof fn !== 'function') {\r\n throw new Error(\r\n `compareWith must be a function, but received ${JSON.stringify(fn)}`\r\n );\r\n }\r\n this._compareWith = fn;\r\n }\r\n\r\n // #endregion Public Getters And Setters\r\n\r\n // #region Public Methods\r\n\r\n /**\r\n * Registriert das OptionID-Counter als String\r\n */\r\n public registerOption(): string {\r\n return (this._optionIdCounter++).toString();\r\n }\r\n\r\n /**\r\n * Methode die von Options aufgerufen wird, um das Mapping zwischen Dropdown Value und Value herzustellen.\r\n * @param id: Id aus Options\r\n * @param value: Value\r\n */\r\n public setOptionMap(id: string, value: any): void {\r\n this._optionMap.set(id, value);\r\n\r\n // Selected Value auf Control aktualisieren, wenn Value dem SelectedValue entspricht\r\n if (this.value === value) {\r\n this.setSelectedValue(value);\r\n }\r\n }\r\n\r\n /**\r\n * Wert einstellen\r\n * @param value - Wert\r\n */\r\n public setValue(value: string) {\r\n super.setValue(this.getOptionValue(value));\r\n }\r\n\r\n /**\r\n * Validator\r\n * @param c Control Instanz\r\n */\r\n public validateData(c: AbstractControl): ValidationErrors | null {\r\n let error: ValidationErrors | null = null;\r\n\r\n if (this.isrequired) {\r\n error = Validation.required(\r\n this.validationmessagerequired,\r\n this.validationmessagesummaryrequired\r\n )(c);\r\n }\r\n return error;\r\n }\r\n\r\n /**\r\n * Wert schreiben\r\n * @param value - Wert\r\n */\r\n public writeValue(value: any) {\r\n this.setSelectedValue(value);\r\n super.writeValue(value);\r\n }\r\n\r\n // #endregion Public Methods\r\n\r\n // #region Private Methods\r\n\r\n /**\r\n * ID extrahieren\r\n * @param valueString String bei welchem die ID Extrahiert werden soll\r\n */\r\n private extractId(valueString: string): string {\r\n return valueString.split(':')[0];\r\n }\r\n\r\n /**\r\n * Nimmt das ID vom Option\r\n * @param value\r\n */\r\n private getOptionId(value: any): string | null {\r\n for (const id of Array.from(this._optionMap.keys())) {\r\n if (this._compareWith(this._optionMap.get(id), value)) {\r\n return id;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * Nimmt den String-Wert vom Option\r\n * @param valueString\r\n */\r\n private getOptionValue(valueString: string): any {\r\n const id: string = this.extractId(valueString);\r\n return this._optionMap.has(id) ? this._optionMap.get(id) : valueString;\r\n }\r\n\r\n /**\r\n * Setzt den Selected Value auf dem Control\r\n * @param value Value\r\n */\r\n private setSelectedValue(value: any): void {\r\n // Select Item aus Control lesen\r\n const selectItem: any =\r\n this.elementRef.nativeElement.getElementsByTagName('select')[0];\r\n /**\r\n * Id vom Select Item\r\n */\r\n const id: string | null = this.getOptionId(value);\r\n /**\r\n * Value String\r\n */\r\n const valueString = _buildValueString(id, value);\r\n\r\n if (selectItem !== undefined) {\r\n this.renderer.setProperty(selectItem, 'value', valueString);\r\n }\r\n }\r\n\r\n // #endregion Private Methods\r\n}\r\n\r\n/**\r\n * SacDropdownOption-Klasse\r\n */\r\n@Directive()\r\nexport class SacDropdownOptionCommon implements OnDestroy {\r\n // #region Properties\r\n\r\n /**\r\n * ID-String\r\n */\r\n private id: string = null;\r\n\r\n // #endregion Properties\r\n\r\n // #region Constructors\r\n\r\n /**\r\n * Konstruktor\r\n * @param _element Referenz auf HTML Element\r\n * @param _renderer Render Engine\r\n * @param _dropdown Dropdown Instanz\r\n */\r\n constructor(\r\n private _element: ElementRef,\r\n private _renderer: Renderer2,\r\n private _dropdown: SacDropdownCommon\r\n ) {\r\n if (this._dropdown) {\r\n this.id = this._dropdown.registerOption();\r\n }\r\n }\r\n\r\n // #endregion Constructors\r\n\r\n // #region Public Getters And Setters\r\n\r\n /**\r\n * Option ngValue\r\n */\r\n @Input()\r\n public set ngValue(value: any) {\r\n // Cancel wenn kein Parent Dropdown vorhanden\r\n if (this._dropdown == null) {\r\n return;\r\n }\r\n\r\n this._dropdown.setOptionMap(this.id, value);\r\n this._setElementValue(_buildValueString(this.id, value));\r\n\r\n this._dropdown.writeValue(this._dropdown.value);\r\n }\r\n\r\n /**\r\n * Wert-Setter\r\n */\r\n @Input()\r\n public set value(value: any) {\r\n this._setElementValue(value);\r\n }\r\n\r\n // #endregion Public Getters And Setters\r\n\r\n // #region Public Methods\r\n\r\n /**\r\n * Den Wert vom Option-Element einstellen\r\n * @param value Wert\r\n */\r\n public _setElementValue(value: string): void {\r\n this._renderer.setProperty(this._element.nativeElement, 'value', value);\r\n }\r\n\r\n /**\r\n * OnDestroy Event\r\n */\r\n public ngOnDestroy(): void {\r\n if (this._dropdown) {\r\n this._dropdown._optionMap.delete(this.id);\r\n }\r\n }\r\n\r\n // #endregion Public Methods\r\n}\r\n\r\n// #endregion Classes\r\n\r\n// #region Functions\r\n\r\n/**\r\n * Function um ein Key Value Pair f\xFCr das Dropdown zu erzeugen\r\n * @param id ID\r\n * @param value Wert der an das Element gebunden werden soll\r\n */\r\nexport function _buildValueString(id: string | null, value: any): string {\r\n // Wenn ID null ist Object zur\xFCckgeben\r\n if (id == null) {\r\n return `${value}`;\r\n }\r\n\r\n // Mapping Objekt zu String\r\n if (value && typeof value === 'object') {\r\n value = 'Object';\r\n }\r\n\r\n // String als ID\r\n return `${id}: ${value}`.slice(0, 50);\r\n}\r\n\r\n// #endregion Functions\r\n"]},_coverageSchema:"1a1c01bbd47fc00a2c39e90264f33305004495a9",hash:"b20bb1d6e2ae738b48e7db469241fb5dbcd89937"};var coverage=global[gcv]||(global[gcv]={});if(!coverage[path]||coverage[path].hash!==hash){coverage[path]=coverageData;}var actualCoverage=coverage[path];{// @ts-ignore
2
+ cov_10j6wgixd7=function(){return actualCoverage;};}return actualCoverage;}cov_10j6wgixd7();import{Directive,Host,Input}from'@angular/core';import{SacBaseSelectControl}from'../../common/baseselectcontrol';import{Validation}from'../../validation';import*as i0 from"@angular/core";import*as i1 from"../layout/formlayout";// #region Classes
23
3
  /**
24
4
  * Base Dropdown Komponente
25
- */
26
- class SacDropdownCommon extends SacBaseSelectControl {
27
- /**
28
- * compareWith-Funktion
29
- */
30
- set comparewith(fn) {
31
- if (typeof fn !== 'function') {
32
- throw new Error(`compareWith must be a function, but received ${JSON.stringify(fn)}`);
33
- }
34
- this._compareWith = fn;
35
- }
36
- /**
37
- * Konstruktor
38
- * @param parent Übergeordnetes HTML Element
39
- * @param injector Injector für Services
40
- * @param _renderer Render Engine
41
- * @param _elementRef Referenz von HTML Element
42
- */
43
- constructor(parent, injector, _renderer, _elementRef) {
44
- super(parent, injector);
45
- this._renderer = _renderer;
46
- this._elementRef = _elementRef;
47
- /**
48
- * Counter vom OptionID; default Wert = 0
49
- */
50
- this._optionIdCounter = 0;
51
- /**
52
- * OptionMap
53
- */
54
- this._optionMap = new Map();
55
- /**
5
+ */class SacDropdownCommon extends SacBaseSelectControl{// #endregion Properties
6
+ // #region Constructors
7
+ /**
8
+ * Constructor
9
+ * @param formlayout SacFormLayoutCommon to define scoped layout settings
10
+ * @param injector Injector for injecting services
11
+ * @param renderer html rendering engine
12
+ * @param elementRef reference to html element
13
+ */constructor(formlayout,injector,renderer,elementRef){cov_10j6wgixd7().f[0]++;cov_10j6wgixd7().s[0]++;super(formlayout,injector);cov_10j6wgixd7().s[1]++;this.renderer=renderer;cov_10j6wgixd7().s[2]++;this.elementRef=elementRef;// #region Properties
14
+ /**
56
15
  * compareWith-Funktion
57
- */
58
- this._compareWith = Object.is;
59
- /**
16
+ */cov_10j6wgixd7().s[3]++;this._compareWith=Object.is;/**
60
17
  * Label Text für Empty Item
61
- */
62
- this.emptylabel = '';
63
- /**
18
+ */cov_10j6wgixd7().s[4]++;this.emptylabel='';/**
64
19
  * Option Value für Empty Item
65
- */
66
- this.emptyvalue = null;
67
- /**
20
+ */cov_10j6wgixd7().s[5]++;this.emptyvalue=null;/**
68
21
  * Resource Key für Validation Message Required bei Control
69
- */
70
- this.validationmessagerequired = 'VALIDATION_ERROR_REQUIRED';
71
- /**
22
+ */cov_10j6wgixd7().s[6]++;this.validationmessagerequired=this.validationKeyService.ValidationErrorRequired;/**
72
23
  * Resource Key für Validation Message Required in Validation Summary
73
- */
74
- this.validationmessagesummaryrequired = 'VALIDATION_ERROR_SUMMARY_REQUIRED';
75
- }
76
- /**
77
- * Wert einstellen
78
- * @param value - Wert
79
- */
80
- setValue(value) {
81
- super.setValue(this.getOptionValue(value));
82
- }
83
- /**
84
- * Wert schreiben
85
- * @param value - Wert
86
- */
87
- writeValue(value) {
88
- this.setSelectedValue(value);
89
- super.writeValue(value);
90
- }
91
- /**
24
+ */cov_10j6wgixd7().s[7]++;this.validationmessagesummaryrequired=this.validationKeyService.ValidationErrorSummaryRequired;/**
25
+ * Counter vom OptionID; default Wert = 0
26
+ */cov_10j6wgixd7().s[8]++;this._optionIdCounter=0;/**
27
+ * OptionMap
28
+ */cov_10j6wgixd7().s[9]++;this._optionMap=new Map();}// #endregion Constructors
29
+ // #region Public Getters And Setters
30
+ /**
31
+ * compareWith-Funktion
32
+ */set comparewith(fn){cov_10j6wgixd7().f[1]++;cov_10j6wgixd7().s[10]++;if(typeof fn!=='function'){cov_10j6wgixd7().b[0][0]++;cov_10j6wgixd7().s[11]++;throw new Error(`compareWith must be a function, but received ${JSON.stringify(fn)}`);}else{cov_10j6wgixd7().b[0][1]++;}cov_10j6wgixd7().s[12]++;this._compareWith=fn;}// #endregion Public Getters And Setters
33
+ // #region Public Methods
34
+ /**
92
35
  * Registriert das OptionID-Counter als String
93
- */
94
- registerOption() {
95
- return (this._optionIdCounter++).toString();
96
- }
97
- /**
36
+ */registerOption(){cov_10j6wgixd7().f[2]++;cov_10j6wgixd7().s[13]++;return(this._optionIdCounter++).toString();}/**
98
37
  * Methode die von Options aufgerufen wird, um das Mapping zwischen Dropdown Value und Value herzustellen.
99
38
  * @param id: Id aus Options
100
39
  * @param value: Value
101
- */
102
- setOptionMap(id, value) {
103
- this._optionMap.set(id, value);
104
- // Selected Value auf Control aktualisieren, wenn Value dem SelectedValue entspricht
105
- if (this.value === value) {
106
- this.setSelectedValue(value);
107
- }
108
- }
109
- /**
110
- * Setzt den Selected Value auf dem Control
111
- * @param value Value
112
- */
113
- setSelectedValue(value) {
114
- // Select Item aus Control lesen
115
- const selectItem = this._elementRef.nativeElement.getElementsByTagName('select')[0];
116
- /**
117
- * Id vom Select Item
118
- */
119
- const id = this.getOptionId(value);
120
- /**
121
- * Value String
122
- */
123
- const valueString = _buildValueString(id, value);
124
- if (selectItem !== undefined) {
125
- this._renderer.setProperty(selectItem, 'value', valueString);
126
- }
127
- }
128
- /**
40
+ */setOptionMap(id,value){cov_10j6wgixd7().f[3]++;cov_10j6wgixd7().s[14]++;this._optionMap.set(id,value);// Selected Value auf Control aktualisieren, wenn Value dem SelectedValue entspricht
41
+ cov_10j6wgixd7().s[15]++;if(this.value===value){cov_10j6wgixd7().b[1][0]++;cov_10j6wgixd7().s[16]++;this.setSelectedValue(value);}else{cov_10j6wgixd7().b[1][1]++;}}/**
42
+ * Wert einstellen
43
+ * @param value - Wert
44
+ */setValue(value){cov_10j6wgixd7().f[4]++;cov_10j6wgixd7().s[17]++;super.setValue(this.getOptionValue(value));}/**
45
+ * Validator
46
+ * @param c Control Instanz
47
+ */validateData(c){cov_10j6wgixd7().f[5]++;let error=(cov_10j6wgixd7().s[18]++,null);cov_10j6wgixd7().s[19]++;if(this.isrequired){cov_10j6wgixd7().b[2][0]++;cov_10j6wgixd7().s[20]++;error=Validation.required(this.validationmessagerequired,this.validationmessagesummaryrequired)(c);}else{cov_10j6wgixd7().b[2][1]++;}cov_10j6wgixd7().s[21]++;return error;}/**
48
+ * Wert schreiben
49
+ * @param value - Wert
50
+ */writeValue(value){cov_10j6wgixd7().f[6]++;cov_10j6wgixd7().s[22]++;this.setSelectedValue(value);cov_10j6wgixd7().s[23]++;super.writeValue(value);}// #endregion Public Methods
51
+ // #region Private Methods
52
+ /**
53
+ * ID extrahieren
54
+ * @param valueString String bei welchem die ID Extrahiert werden soll
55
+ */extractId(valueString){cov_10j6wgixd7().f[7]++;cov_10j6wgixd7().s[24]++;return valueString.split(':')[0];}/**
129
56
  * Nimmt das ID vom Option
130
57
  * @param value
131
- */
132
- getOptionId(value) {
133
- for (const id of Array.from(this._optionMap.keys())) {
134
- if (this._compareWith(this._optionMap.get(id), value)) {
135
- return id;
136
- }
137
- }
138
- return null;
139
- }
140
- /**
58
+ */getOptionId(value){cov_10j6wgixd7().f[8]++;cov_10j6wgixd7().s[25]++;for(const id of Array.from(this._optionMap.keys())){cov_10j6wgixd7().s[26]++;if(this._compareWith(this._optionMap.get(id),value)){cov_10j6wgixd7().b[3][0]++;cov_10j6wgixd7().s[27]++;return id;}else{cov_10j6wgixd7().b[3][1]++;}}cov_10j6wgixd7().s[28]++;return null;}/**
141
59
  * Nimmt den String-Wert vom Option
142
60
  * @param valueString
143
- */
144
- getOptionValue(valueString) {
145
- const id = this.extractId(valueString);
146
- return this._optionMap.has(id) ? this._optionMap.get(id) : valueString;
147
- }
148
- /**
149
- * ID extrahieren
150
- * @param valueString String bei welchem die ID Extrahiert werden soll
151
- */
152
- extractId(valueString) {
153
- return valueString.split(':')[0];
154
- }
155
- /**
156
- * Validator
157
- * @param c Control Instanz
158
- */
159
- validateData(c) {
160
- let error = null;
161
- if (this.isrequired) {
162
- error = Validation.required(this.validationmessagerequired, this.validationmessagesummaryrequired)(c);
163
- }
164
- return error;
165
- }
166
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacDropdownCommon, deps: [{ token: i1.SacFormCommon, host: true }, { token: i0.Injector }, { token: i0.Renderer2 }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
167
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: SacDropdownCommon, inputs: { emptylabel: "emptylabel", emptyvalue: "emptyvalue", comparewith: "comparewith", validationmessagerequired: "validationmessagerequired", validationmessagesummaryrequired: "validationmessagesummaryrequired" }, usesInheritance: true, ngImport: i0 }); }
168
- }
169
- export { SacDropdownCommon };
170
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacDropdownCommon, decorators: [{
171
- type: Directive
172
- }], ctorParameters: function () { return [{ type: i1.SacFormCommon, decorators: [{
173
- type: Host
174
- }] }, { type: i0.Injector }, { type: i0.Renderer2 }, { type: i0.ElementRef }]; }, propDecorators: { emptylabel: [{
175
- type: Input
176
- }], emptyvalue: [{
177
- type: Input
178
- }], comparewith: [{
179
- type: Input
180
- }], validationmessagerequired: [{
181
- type: Input
182
- }], validationmessagesummaryrequired: [{
183
- type: Input
184
- }] } });
185
- /**
61
+ */getOptionValue(valueString){cov_10j6wgixd7().f[9]++;const id=(cov_10j6wgixd7().s[29]++,this.extractId(valueString));cov_10j6wgixd7().s[30]++;return this._optionMap.has(id)?(cov_10j6wgixd7().b[4][0]++,this._optionMap.get(id)):(cov_10j6wgixd7().b[4][1]++,valueString);}/**
62
+ * Setzt den Selected Value auf dem Control
63
+ * @param value Value
64
+ */setSelectedValue(value){cov_10j6wgixd7().f[10]++;// Select Item aus Control lesen
65
+ const selectItem=(cov_10j6wgixd7().s[31]++,this.elementRef.nativeElement.getElementsByTagName('select')[0]);/**
66
+ * Id vom Select Item
67
+ */const id=(cov_10j6wgixd7().s[32]++,this.getOptionId(value));/**
68
+ * Value String
69
+ */const valueString=(cov_10j6wgixd7().s[33]++,_buildValueString(id,value));cov_10j6wgixd7().s[34]++;if(selectItem!==undefined){cov_10j6wgixd7().b[5][0]++;cov_10j6wgixd7().s[35]++;this.renderer.setProperty(selectItem,'value',valueString);}else{cov_10j6wgixd7().b[5][1]++;}}static{cov_10j6wgixd7().s[36]++;this.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"16.2.12",ngImport:i0,type:SacDropdownCommon,deps:[{token:i1.SacFormLayoutCommon,host:true},{token:i0.Injector},{token:i0.Renderer2},{token:i0.ElementRef}],target:i0.ɵɵFactoryTarget.Directive});}static{cov_10j6wgixd7().s[37]++;this.ɵdir=i0.ɵɵngDeclareDirective({minVersion:"14.0.0",version:"16.2.12",type:SacDropdownCommon,inputs:{emptylabel:"emptylabel",emptyvalue:"emptyvalue",validationmessagerequired:"validationmessagerequired",validationmessagesummaryrequired:"validationmessagesummaryrequired",comparewith:"comparewith"},usesInheritance:true,ngImport:i0});}}export{SacDropdownCommon};cov_10j6wgixd7().s[38]++;i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"16.2.12",ngImport:i0,type:SacDropdownCommon,decorators:[{type:Directive}],ctorParameters:function(){cov_10j6wgixd7().f[11]++;cov_10j6wgixd7().s[39]++;return[{type:i1.SacFormLayoutCommon,decorators:[{type:Host}]},{type:i0.Injector},{type:i0.Renderer2},{type:i0.ElementRef}];},propDecorators:{emptylabel:[{type:Input}],emptyvalue:[{type:Input}],validationmessagerequired:[{type:Input}],validationmessagesummaryrequired:[{type:Input}],comparewith:[{type:Input}]}});/**
186
70
  * SacDropdownOption-Klasse
187
- */
188
- class SacDropdownOptionCommon {
189
- /**
71
+ */class SacDropdownOptionCommon{// #endregion Properties
72
+ // #region Constructors
73
+ /**
190
74
  * Konstruktor
191
75
  * @param _element Referenz auf HTML Element
192
76
  * @param _renderer Render Engine
193
77
  * @param _dropdown Dropdown Instanz
194
- */
195
- constructor(_element, _renderer, _dropdown) {
196
- this._element = _element;
197
- this._renderer = _renderer;
198
- this._dropdown = _dropdown;
199
- /**
78
+ */constructor(_element,_renderer,_dropdown){cov_10j6wgixd7().f[12]++;cov_10j6wgixd7().s[40]++;this._element=_element;cov_10j6wgixd7().s[41]++;this._renderer=_renderer;cov_10j6wgixd7().s[42]++;this._dropdown=_dropdown;// #region Properties
79
+ /**
200
80
  * ID-String
201
- */
202
- this.id = null;
203
- if (this._dropdown) {
204
- this.id = this._dropdown.registerOption();
205
- }
206
- }
207
- /**
81
+ */cov_10j6wgixd7().s[43]++;this.id=null;cov_10j6wgixd7().s[44]++;if(this._dropdown){cov_10j6wgixd7().b[6][0]++;cov_10j6wgixd7().s[45]++;this.id=this._dropdown.registerOption();}else{cov_10j6wgixd7().b[6][1]++;}}// #endregion Constructors
82
+ // #region Public Getters And Setters
83
+ /**
208
84
  * Option ngValue
209
- */
210
- set ngValue(value) {
211
- // Cancel wenn kein Parent Dropdown vorhanden
212
- if (this._dropdown == null) {
213
- return;
214
- }
215
- this._dropdown.setOptionMap(this.id, value);
216
- this._setElementValue(_buildValueString(this.id, value));
217
- this._dropdown.writeValue(this._dropdown.value);
218
- }
219
- /**
85
+ */set ngValue(value){cov_10j6wgixd7().f[13]++;cov_10j6wgixd7().s[46]++;// Cancel wenn kein Parent Dropdown vorhanden
86
+ if(this._dropdown==null){cov_10j6wgixd7().b[7][0]++;cov_10j6wgixd7().s[47]++;return;}else{cov_10j6wgixd7().b[7][1]++;}cov_10j6wgixd7().s[48]++;this._dropdown.setOptionMap(this.id,value);cov_10j6wgixd7().s[49]++;this._setElementValue(_buildValueString(this.id,value));cov_10j6wgixd7().s[50]++;this._dropdown.writeValue(this._dropdown.value);}/**
220
87
  * Wert-Setter
221
- */
222
- set value(value) {
223
- this._setElementValue(value);
224
- }
225
- /**
88
+ */set value(value){cov_10j6wgixd7().f[14]++;cov_10j6wgixd7().s[51]++;this._setElementValue(value);}// #endregion Public Getters And Setters
89
+ // #region Public Methods
90
+ /**
226
91
  * Den Wert vom Option-Element einstellen
227
92
  * @param value Wert
228
- */
229
- _setElementValue(value) {
230
- this._renderer.setProperty(this._element.nativeElement, 'value', value);
231
- }
232
- /**
93
+ */_setElementValue(value){cov_10j6wgixd7().f[15]++;cov_10j6wgixd7().s[52]++;this._renderer.setProperty(this._element.nativeElement,'value',value);}/**
233
94
  * OnDestroy Event
234
- */
235
- ngOnDestroy() {
236
- if (this._dropdown) {
237
- this._dropdown._optionMap.delete(this.id);
238
- }
239
- }
240
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacDropdownOptionCommon, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: SacDropdownCommon }], target: i0.ɵɵFactoryTarget.Directive }); }
241
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: SacDropdownOptionCommon, inputs: { ngValue: "ngValue", value: "value" }, ngImport: i0 }); }
242
- }
243
- export { SacDropdownOptionCommon };
244
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacDropdownOptionCommon, decorators: [{
245
- type: Directive
246
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: SacDropdownCommon }]; }, propDecorators: { ngValue: [{
247
- type: Input
248
- }], value: [{
249
- type: Input
250
- }] } });
251
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zYWMtY29tbW9uL3NyYy9jb250cm9scy9saXN0L2Ryb3Bkb3duLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBRVQsSUFBSSxFQUVKLEtBQUssR0FHTixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN0RSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7OztBQUc5Qzs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLGlCQUFpQixDQUFDLEVBQWlCLEVBQUUsS0FBVTtJQUM3RCxzQ0FBc0M7SUFDdEMsSUFBSSxFQUFFLElBQUksSUFBSSxFQUFFO1FBQ2QsT0FBTyxHQUFHLEtBQUssRUFBRSxDQUFDO0tBQ25CO0lBRUQsMkJBQTJCO0lBQzNCLElBQUksS0FBSyxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRTtRQUN0QyxLQUFLLEdBQUcsUUFBUSxDQUFDO0tBQ2xCO0lBRUQsZ0JBQWdCO0lBQ2hCLE9BQU8sR0FBRyxFQUFFLEtBQUssS0FBSyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUN4QyxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUNhLGlCQUFrQixTQUFRLG9CQUF5QjtJQXNCOUQ7O09BRUc7SUFDSCxJQUNJLFdBQVcsQ0FBQyxFQUFpQztRQUMvQyxJQUFJLE9BQU8sRUFBRSxLQUFLLFVBQVUsRUFBRTtZQUM1QixNQUFNLElBQUksS0FBSyxDQUNiLGdEQUFnRCxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQ3JFLENBQUM7U0FDSDtRQUNELElBQUksQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFhRDs7Ozs7O09BTUc7SUFDSCxZQUNVLE1B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bWVudFJlZixcclxuICBIb3N0LFxyXG4gIEluamVjdG9yLFxyXG4gIElucHV0LFxyXG4gIE9uRGVzdHJveSxcclxuICBSZW5kZXJlcjIsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgVmFsaWRhdGlvbkVycm9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgU2FjQmFzZVNlbGVjdENvbnRyb2wgfSBmcm9tICcuLi8uLi9jb21tb24vYmFzZXNlbGVjdGNvbnRyb2wnO1xyXG5pbXBvcnQgeyBWYWxpZGF0aW9uIH0gZnJvbSAnLi4vLi4vdmFsaWRhdGlvbic7XHJcbmltcG9ydCB7IFNhY0Zvcm1Db21tb24gfSBmcm9tICcuLi9mb3JtL2Zvcm0nO1xyXG5cclxuLyoqXHJcbiAqIEZ1bmN0aW9uIHVtIGVpbiBLZXkgVmFsdWUgUGFpciBmw7xyIGRhcyBEcm9wZG93biB6dSBlcnpldWdlblxyXG4gKiBAcGFyYW0gaWQgSURcclxuICogQHBhcmFtIHZhbHVlIFdlcnQgZGVyIGFuIGRhcyBFbGVtZW50IGdlYnVuZGVuIHdlcmRlbiBzb2xsXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gX2J1aWxkVmFsdWVTdHJpbmcoaWQ6IHN0cmluZyB8IG51bGwsIHZhbHVlOiBhbnkpOiBzdHJpbmcge1xyXG4gIC8vIFdlbm4gSUQgbnVsbCBpc3QgT2JqZWN0IHp1csO8Y2tnZWJlblxyXG4gIGlmIChpZCA9PSBudWxsKSB7XHJcbiAgICByZXR1cm4gYCR7dmFsdWV9YDtcclxuICB9XHJcblxyXG4gIC8vIE1hcHBpbmcgT2JqZWt0IHp1IFN0cmluZ1xyXG4gIGlmICh2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnKSB7XHJcbiAgICB2YWx1ZSA9ICdPYmplY3QnO1xyXG4gIH1cclxuXHJcbiAgLy8gU3RyaW5nIGFscyBJRFxyXG4gIHJldHVybiBgJHtpZH06ICR7dmFsdWV9YC5zbGljZSgwLCA1MCk7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBCYXNlIERyb3Bkb3duIEtvbXBvbmVudGVcclxuICovXHJcbkBEaXJlY3RpdmUoKVxyXG5leHBvcnQgY2xhc3MgU2FjRHJvcGRvd25Db21tb24gZXh0ZW5kcyBTYWNCYXNlU2VsZWN0Q29udHJvbDxhbnk+IHtcclxuICAvKipcclxuICAgKiBDb3VudGVyIHZvbSBPcHRpb25JRDsgZGVmYXVsdCBXZXJ0ID0gMFxyXG4gICAqL1xyXG4gIF9vcHRpb25JZENvdW50ZXI6IG51bWJlciA9IDA7XHJcbiAgLyoqXHJcbiAgICogT3B0aW9uTWFwXHJcbiAgICovXHJcbiAgX29wdGlvbk1hcDogTWFwPHN0cmluZywgYW55PiA9IG5ldyBNYXA8c3RyaW5nLCBhbnk+KCk7XHJcbiAgLyoqXHJcbiAgICogY29tcGFyZVdpdGgtRnVua3Rpb25cclxuICAgKi9cclxuICBwcml2YXRlIF9jb21wYXJlV2l0aDogKG8xOiBhbnksIG8yOiBhbnkpID0+IGJvb2xlYW4gPSBPYmplY3QuaXM7XHJcblxyXG4gIC8qKlxyXG4gICAqIExhYmVsIFRleHQgZsO8ciBFbXB0eSBJdGVtXHJcbiAgICovXHJcbiAgQElucHV0KCkgZW1wdHlsYWJlbDogc3RyaW5nID0gJyc7XHJcbiAgLyoqXHJcbiAgICogT3B0aW9uIFZhbHVlIGbDvHIgRW1wdHkgSXRlbVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGVtcHR5dmFsdWU6IHN0cmluZyA9IG51bGw7XHJcbiAgLyoqXHJcbiAgICogY29tcGFyZVdpdGgtRnVua3Rpb25cclxuICAgKi9cclxuICBASW5wdXQoKVxyXG4gIHNldCBjb21wYXJld2l0aChmbjogKG8xOiBhbnksIG8yOiBhbnkpID0+IGJvb2xlYW4pIHtcclxuICAgIGlmICh0eXBlb2YgZm4gIT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKFxyXG4gICAgICAgIGBjb21wYXJlV2l0aCBtdXN0IGJlIGEgZnVuY3Rpb24sIGJ1dCByZWNlaXZlZCAke0pTT04uc3RyaW5naWZ5KGZuKX1gXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICB0aGlzLl9jb21wYXJlV2l0aCA9IGZuO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVzb3VyY2UgS2V5IGbDvHIgVmFsaWRhdGlvbiBNZXNzYWdlIFJlcXVpcmVkIGJlaSBDb250cm9sXHJcbiAgICovXHJcbiAgQElucHV0KCkgdmFsaWRhdGlvbm1lc3NhZ2VyZXF1aXJlZDogc3RyaW5nID0gJ1ZBTElEQVRJT05fRVJST1JfUkVRVUlSRUQnO1xyXG4gIC8qKlxyXG4gICAqIFJlc291cmNlIEtleSBmw7xyIFZhbGlkYXRpb24gTWVzc2FnZSBSZXF1aXJlZCBpbiBWYWxpZGF0aW9uIFN1bW1hcnlcclxuICAgKi9cclxuICBASW5wdXQoKVxyXG4gIHZhbGlkYXRpb25tZXNzYWdlc3VtbWFyeXJlcXVpcmVkOiBzdHJpbmcgPVxyXG4gICAgJ1ZBTElEQVRJT05fRVJST1JfU1VNTUFSWV9SRVFVSVJFRCc7XHJcblxyXG4gIC8qKlxyXG4gICAqIEtvbnN0cnVrdG9yXHJcbiAgICogQHBhcmFtIHBhcmVudCDDnGJlcmdlb3JkbmV0ZXMgSFRNTCBFbGVtZW50XHJcbiAgICogQHBhcmFtIGluamVjdG9yIEluamVjdG9yIGbDvHIgU2VydmljZXNcclxuICAgKiBAcGFyYW0gX3JlbmRlcmVyIFJlbmRlciBFbmdpbmVcclxuICAgKiBAcGFyYW0gX2VsZW1lbnRSZWYgUmVmZXJlbnogdm9uIEhUTUwgRWxlbWVudFxyXG4gICAqL1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgQEhvc3QoKSBwYXJlbnQ6IFNhY0Zvcm1Db21tb24sXHJcbiAgICBpbmplY3RvcjogSW5qZWN0b3IsXHJcbiAgICBwcml2YXRlIF9yZW5kZXJlcjogUmVuZGVyZXIyLFxyXG4gICAgcHJpdmF0ZSBfZWxlbWVudFJlZjogRWxlbWVudFJlZlxyXG4gICkge1xyXG4gICAgc3VwZXIocGFyZW50LCBpbmplY3Rvcik7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBXZXJ0IGVpbnN0ZWxsZW5cclxuICAgKiBAcGFyYW0gdmFsdWUgLSBXZXJ0XHJcbiAgICovXHJcbiAgc2V0VmFsdWUodmFsdWU6IHN0cmluZykge1xyXG4gICAgc3VwZXIuc2V0VmFsdWUodGhpcy5nZXRPcHRpb25WYWx1ZSh2YWx1ZSkpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogV2VydCBzY2hyZWliZW5cclxuICAgKiBAcGFyYW0gdmFsdWUgLSBXZXJ0XHJcbiAgICovXHJcbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KSB7XHJcbiAgICB0aGlzLnNldFNlbGVjdGVkVmFsdWUodmFsdWUpO1xyXG4gICAgc3VwZXIud3JpdGVWYWx1ZSh2YWx1ZSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFJlZ2lzdHJpZXJ0IGRhcyBPcHRpb25JRC1Db3VudGVyIGFscyBTdHJpbmdcclxuICAgKi9cclxuICByZWdpc3Rlck9wdGlvbigpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuICh0aGlzLl9vcHRpb25JZENvdW50ZXIrKykudG9TdHJpbmcoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1ldGhvZGUgZGllIHZvbiBPcHRpb25zIGF1ZmdlcnVmZW4gd2lyZCwgdW0gZGFzIE1hcHBpbmcgendpc2NoZW4gRHJvcGRvd24gVmFsdWUgdW5kIFZhbHVlIGhlcnp1c3RlbGxlbi5cclxuICAgKiBAcGFyYW0gaWQ6IElkIGF1cyBPcHRpb25zXHJcbiAgICogQHBhcmFtIHZhbHVlOiBWYWx1ZVxyXG4gICAqL1xyXG4gIHB1YmxpYyBzZXRPcHRpb25NYXAoaWQ6IHN0cmluZywgdmFsdWU6IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5fb3B0aW9uTWFwLnNldChpZCwgdmFsdWUpO1xyXG5cclxuICAgIC8vIFNlbGVjdGVkIFZhbHVlIGF1ZiBDb250cm9sIGFrdHVhbGlzaWVyZW4sIHdlbm4gVmFsdWUgZGVtIFNlbGVjdGVkVmFsdWUgZW50c3ByaWNodFxyXG4gICAgaWYgKHRoaXMudmFsdWUgPT09IHZhbHVlKSB7XHJcbiAgICAgIHRoaXMuc2V0U2VsZWN0ZWRWYWx1ZSh2YWx1ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZXR6dCBkZW4gU2VsZWN0ZWQgVmFsdWUgYXVmIGRlbSBDb250cm9sXHJcbiAgICogQHBhcmFtIHZhbHVlIFZhbHVlXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBzZXRTZWxlY3RlZFZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcclxuICAgIC8vIFNlbGVjdCBJdGVtIGF1cyBDb250cm9sIGxlc2VuXHJcbiAgICBjb25zdCBzZWxlY3RJdGVtOiBhbnkgPVxyXG4gICAgICB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3NlbGVjdCcpWzBdO1xyXG4gICAgLyoqXHJcbiAgICAgKiBJZCB2b20gU2VsZWN0IEl0ZW1cclxuICAgICAqL1xyXG4gICAgY29uc3QgaWQ6IHN0cmluZyB8IG51bGwgPSB0aGlzLmdldE9wdGlvbklkKHZhbHVlKTtcclxuICAgIC8qKlxyXG4gICAgICogVmFsdWUgU3RyaW5nXHJcbiAgICAgKi9cclxuICAgIGNvbnN0IHZhbHVlU3RyaW5nID0gX2J1aWxkVmFsdWVTdHJpbmcoaWQsIHZhbHVlKTtcclxuXHJcbiAgICBpZiAoc2VsZWN0SXRlbSAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHRoaXMuX3JlbmRlcmVyLnNldFByb3BlcnR5KHNlbGVjdEl0ZW0sICd2YWx1ZScsIHZhbHVlU3RyaW5nKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE5pbW10IGRhcyBJRCB2b20gT3B0aW9uXHJcbiAgICogQHBhcmFtIHZhbHVlXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBnZXRPcHRpb25JZCh2YWx1ZTogYW55KTogc3RyaW5nIHwgbnVsbCB7XHJcbiAgICBmb3IgKGNvbnN0IGlkIG9mIEFycmF5LmZyb20odGhpcy5fb3B0aW9uTWFwLmtleXMoKSkpIHtcclxuICAgICAgaWYgKHRoaXMuX2NvbXBhcmVXaXRoKHRoaXMuX29wdGlvbk1hcC5nZXQoaWQpLCB2YWx1ZSkpIHtcclxuICAgICAgICByZXR1cm4gaWQ7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBOaW1tdCBkZW4gU3RyaW5nLVdlcnQgdm9tIE9wdGlvblxyXG4gICAqIEBwYXJhbSB2YWx1ZVN0cmluZ1xyXG4gICAqL1xyXG4gIHByaXZhdGUgZ2V0T3B0aW9uVmFsdWUodmFsdWVTdHJpbmc6IHN0cmluZyk6IGFueSB7XHJcbiAgICBjb25zdCBpZDogc3RyaW5nID0gdGhpcy5leHRyYWN0SWQodmFsdWVTdHJpbmcpO1xyXG4gICAgcmV0dXJuIHRoaXMuX29wdGlvbk1hcC5oYXMoaWQpID8gdGhpcy5fb3B0aW9uTWFwLmdldChpZCkgOiB2YWx1ZVN0cmluZztcclxuICB9XHJcbiAgLyoqXHJcbiAgICogSUQgZXh0cmFoaWVyZW5cclxuICAgKiBAcGFyYW0gdmFsdWVTdHJpbmcgU3RyaW5nIGJlaSB3ZWxjaGVtIGRpZSBJRCBFeHRyYWhpZXJ0IHdlcmRlbiBzb2xsXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBleHRyYWN0SWQodmFsdWVTdHJpbmc6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdmFsdWVTdHJpbmcuc3BsaXQoJzonKVswXTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogVmFsaWRhdG9yXHJcbiAgICogQHBhcmFtIGMgQ29udHJvbCBJbnN0YW56XHJcbiAgICovXHJcbiAgdmFsaWRhdGVEYXRhKGM6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcclxuICAgIGxldCBlcnJvcjogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPSBudWxsO1xyXG5cclxuICAgIGlmICh0aGlzLmlzcmVxdWlyZWQpIHtcclxuICAgICAgZXJyb3IgPSBWYWxpZGF0aW9uLnJlcXVpcmVkKFxyXG4gICAgICAgIHRoaXMudmFsaWRhdGlvbm1lc3NhZ2VyZXF1aXJlZCxcclxuICAgICAgICB0aGlzLnZhbGlkYXRpb25tZXNzYWdlc3VtbWFyeXJlcXVpcmVkXHJcbiAgICAgICkoYyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZXJyb3I7XHJcbiAgfVxyXG59XHJcblxyXG4vKipcclxuICogU2FjRHJvcGRvd25PcHRpb24tS2xhc3NlXHJcbiAqL1xyXG5ARGlyZWN0aXZlKClcclxuZXhwb3J0IGNsYXNzIFNhY0Ryb3Bkb3duT3B0aW9uQ29tbW9uIGltcGxlbWVudHMgT25EZXN0cm95IHtcclxuICAvKipcclxuICAgKiBJRC1TdHJpbmdcclxuICAgKi9cclxuICBwcml2YXRlIGlkOiBzdHJpbmcgPSBudWxsO1xyXG4gIC8qKlxyXG4gICAqIEtvbnN0cnVrdG9yXHJcbiAgICogQHBhcmFtIF9lbGVtZW50IFJlZmVyZW56IGF1ZiBIVE1MIEVsZW1lbnRcclxuICAgKiBAcGFyYW0gX3JlbmRlcmVyIFJlbmRlciBFbmdpbmVcclxuICAgKiBAcGFyYW0gX2Ryb3Bkb3duIERyb3Bkb3duIEluc3RhbnpcclxuICAgKi9cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgX2VsZW1lbnQ6IEVsZW1lbnRSZWYsXHJcbiAgICBwcml2YXRlIF9yZW5kZXJlcjogUmVuZGVyZXIyLFxyXG4gICAgcHJpdmF0ZSBfZHJvcGRvd246IFNhY0Ryb3Bkb3duQ29tbW9uXHJcbiAgKSB7XHJcbiAgICBpZiAodGhpcy5fZHJvcGRvd24pIHtcclxuICAgICAgdGhpcy5pZCA9IHRoaXMuX2Ryb3Bkb3duLnJlZ2lzdGVyT3B0aW9uKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBPcHRpb24gbmdWYWx1ZVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IG5nVmFsdWUodmFsdWU6IGFueSkge1xyXG4gICAgLy8gQ2FuY2VsIHdlbm4ga2VpbiBQYXJlbnQgRHJvcGRvd24gdm9yaGFuZGVuXHJcbiAgICBpZiAodGhpcy5fZHJvcGRvd24gPT0gbnVsbCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5fZHJvcGRvd24uc2V0T3B0aW9uTWFwKHRoaXMuaWQsIHZhbHVlKTtcclxuICAgIHRoaXMuX3NldEVsZW1lbnRWYWx1ZShfYnVpbGRWYWx1ZVN0cmluZyh0aGlzLmlkLCB2YWx1ZSkpO1xyXG5cclxuICAgIHRoaXMuX2Ryb3Bkb3duLndyaXRlVmFsdWUodGhpcy5fZHJvcGRvd24udmFsdWUpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBXZXJ0LVNldHRlclxyXG4gICAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IHZhbHVlKHZhbHVlOiBhbnkpIHtcclxuICAgIHRoaXMuX3NldEVsZW1lbnRWYWx1ZSh2YWx1ZSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIERlbiBXZXJ0IHZvbSBPcHRpb24tRWxlbWVudCBlaW5zdGVsbGVuXHJcbiAgICogQHBhcmFtIHZhbHVlIFdlcnRcclxuICAgKi9cclxuICBfc2V0RWxlbWVudFZhbHVlKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuX3JlbmRlcmVyLnNldFByb3BlcnR5KHRoaXMuX2VsZW1lbnQubmF0aXZlRWxlbWVudCwgJ3ZhbHVlJywgdmFsdWUpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBPbkRlc3Ryb3kgRXZlbnRcclxuICAgKi9cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLl9kcm9wZG93bikge1xyXG4gICAgICB0aGlzLl9kcm9wZG93bi5fb3B0aW9uTWFwLmRlbGV0ZSh0aGlzLmlkKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
95
+ */ngOnDestroy(){cov_10j6wgixd7().f[16]++;cov_10j6wgixd7().s[53]++;if(this._dropdown){cov_10j6wgixd7().b[8][0]++;cov_10j6wgixd7().s[54]++;this._dropdown._optionMap.delete(this.id);}else{cov_10j6wgixd7().b[8][1]++;}}static{cov_10j6wgixd7().s[55]++;this.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"16.2.12",ngImport:i0,type:SacDropdownOptionCommon,deps:[{token:i0.ElementRef},{token:i0.Renderer2},{token:SacDropdownCommon}],target:i0.ɵɵFactoryTarget.Directive});}static{cov_10j6wgixd7().s[56]++;this.ɵdir=i0.ɵɵngDeclareDirective({minVersion:"14.0.0",version:"16.2.12",type:SacDropdownOptionCommon,inputs:{ngValue:"ngValue",value:"value"},ngImport:i0});}}export{SacDropdownOptionCommon};cov_10j6wgixd7().s[57]++;i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"16.2.12",ngImport:i0,type:SacDropdownOptionCommon,decorators:[{type:Directive}],ctorParameters:function(){cov_10j6wgixd7().f[17]++;cov_10j6wgixd7().s[58]++;return[{type:i0.ElementRef},{type:i0.Renderer2},{type:SacDropdownCommon}];},propDecorators:{ngValue:[{type:Input}],value:[{type:Input}]}});// #endregion Classes
96
+ // #region Functions
97
+ /**
98
+ * Function um ein Key Value Pair für das Dropdown zu erzeugen
99
+ * @param id ID
100
+ * @param value Wert der an das Element gebunden werden soll
101
+ */export function _buildValueString(id,value){cov_10j6wgixd7().f[18]++;cov_10j6wgixd7().s[59]++;// Wenn ID null ist Object zurückgeben
102
+ if(id==null){cov_10j6wgixd7().b[9][0]++;cov_10j6wgixd7().s[60]++;return`${value}`;}else{cov_10j6wgixd7().b[9][1]++;}// Mapping Objekt zu String
103
+ cov_10j6wgixd7().s[61]++;if((cov_10j6wgixd7().b[11][0]++,value)&&(cov_10j6wgixd7().b[11][1]++,typeof value==='object')){cov_10j6wgixd7().b[10][0]++;cov_10j6wgixd7().s[62]++;value='Object';}else{cov_10j6wgixd7().b[10][1]++;}// String als ID
104
+ cov_10j6wgixd7().s[63]++;return`${id}: ${value}`.slice(0,50);}//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zYWMtY29tbW9uL3NyYy9jb250cm9scy9saXN0L2Ryb3Bkb3duLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBRVQsSUFBSSxFQUVKLEtBQUssR0FHTixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN0RSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7OztBQUc5QyxrQkFBa0I7QUFFbEI7O0dBRUc7QUFDSCxNQUNhLGlCQUFrQixTQUFRLG9CQUF5QjtJQXFDOUQsd0JBQXdCO0lBRXhCLHVCQUF1QjtJQUV2Qjs7Ozs7O09BTUc7SUFDSCxZQUNVLFVBQStCLEVBQ3ZDLFFBQWtCLEVBQ1YsUUFBbUIsRUFDbkIsVUFBc0I7UUFFOUIsS0FBSyxDQUFDLFVBQVUsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUhwQixhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQ25CLGVBQVUsR0FBVixVQUFVLENBQVk7UUFuRGhDLHFCQUFxQjtRQUVyQjs7V0FFRztRQUNLLGlCQUFZLEdBQWtDLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFFaEU7O1dBRUc7UUFDYSxlQUFVLEdBQVcsRUFBRSxDQUFDO1FBQ3hDOztXQUVHO1FBQ2EsZUFBVSxHQUFXLElBQUksQ0FBQztRQUMxQzs7V0FFRztRQUNhLDhCQUF5QixHQUN2QyxJQUFJLENBQUMsb0JBQW9CLENBQUMsdUJBQXVCLENBQUM7UUFDcEQ7O1dBRUc7UUFFSSxxQ0FBZ0MsR0FDckMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLDhCQUE4QixDQUFDO1FBRTNEOztXQUVHO1FBQ0kscUJBQWdCLEdBQVcsQ0FBQyxDQUFDO1FBQ3BDOztXQUVHO1FBQ0ksZUFBVSxHQUFxQixJQUFJLEdBQUcsRUFBZSxDQUFDO0lBb0I3RCxDQUFDO0lBRUQsMEJBQTBCO0lBRTFCLHFDQUFxQztJQUVyQzs7T0FFRztJQUNILElBQ1csV0FBVyxDQUFDLEVBQWlDO1FBQ3RELElBQUksT0FBTyxFQUFFLEtBQUssVUFBVSxFQUFFO1lBQzVCLE1BQU0sSUFBSSxLQUFLLENBQ2IsZ0RBQWdELElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FDckUsQ0FBQztTQUNIO1FBQ0QsSUFBSSxDQUFDLFlBQVksR0FBRyxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVELHdDQUF3QztJQUV4Qyx5QkFBeUI7SUFFekI7O09BRUc7SUFDSSxjQUFjO1FBQ25CLE9BQU8sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzlDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksWUFBWSxDQUFDLEVBQVUsRUFBRSxLQUFVO1FBQ3hDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUUvQixvRkFBb0Y7UUFDcEYsSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLEtBQUssRUFBRTtZQUN4QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDOUI7SUFDSCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksUUFBUSxDQUFDLEtBQWE7UUFDM0IsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVEOzs7T0FHRztJQUNJLFlBQVksQ0FBQyxDQUFrQjtRQUNwQyxJQUFJLEtBQUssR0FBNEIsSUFBSSxDQUFDO1FBRTFDLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNuQixLQUFLLEdBQUcsVUFBVSxDQUFDLFFBQVEsQ0FDekIsSUFBSSxDQUFDLHlCQUF5QixFQUM5QixJQUFJLENBQUMsZ0NBQWdDLENBQ3RDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDTjtRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVEOzs7T0FHRztJQUNJLFVBQVUsQ0FBQyxLQUFVO1FBQzFCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM3QixLQUFLLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFFRCw0QkFBNEI7SUFFNUIsMEJBQTBCO0lBRTFCOzs7T0FHRztJQUNLLFNBQVMsQ0FBQyxXQUFtQjtRQUNuQyxPQUFPLFdBQVcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVEOzs7T0FHRztJQUNLLFdBQVcsQ0FBQyxLQUFVO1FBQzVCLEtBQUssTUFBTSxFQUFFLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUU7WUFDbkQsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFO2dCQUNyRCxPQUFPLEVBQUUsQ0FBQzthQUNYO1NBQ0Y7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7O09BR0c7SUFDSyxjQUFjLENBQUMsV0FBbUI7UUFDeEMsTUFBTSxFQUFFLEdBQVcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUMvQyxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDO0lBQ3pFLENBQUM7SUFFRDs7O09BR0c7SUFDSyxnQkFBZ0IsQ0FBQyxLQUFVO1FBQ2pDLGdDQUFnQztRQUNoQyxNQUFNLFVBQVUsR0FDZCxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxvQkFBb0IsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNsRTs7V0FFRztRQUNILE1BQU0sRUFBRSxHQUFrQixJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2xEOztXQUVHO1FBQ0gsTUFBTSxXQUFXLEdBQUcsaUJBQWlCLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRWpELElBQUksVUFBVSxLQUFLLFNBQVMsRUFBRTtZQUM1QixJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxVQUFVLEVBQUUsT0FBTyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1NBQzdEO0lBQ0gsQ0FBQzsrR0ExTFUsaUJBQWlCO21HQUFqQixpQkFBaUI7O1NBQWpCLGlCQUFpQjs0RkFBakIsaUJBQWlCO2tCQUQ3QixTQUFTOzswQkFrREwsSUFBSTtvSEF0Q1MsVUFBVTtzQkFBekIsS0FBSztnQkFJVSxVQUFVO3NCQUF6QixLQUFLO2dCQUlVLHlCQUF5QjtzQkFBeEMsS0FBSztnQkFNQyxnQ0FBZ0M7c0JBRHRDLEtBQUs7Z0JBeUNLLFdBQVc7c0JBRHJCLEtBQUs7O0FBK0hSOztHQUVHO0FBQ0gsTUFDYSx1QkFBdUI7SUFRbEMsd0JBQXdCO0lBRXhCLHVCQUF1QjtJQUV2Qjs7Ozs7T0FLRztJQUNILFlBQ1UsUUFBb0IsRUFDcEIsU0FBb0IsRUFDcEIsU0FBNEI7UUFGNUIsYUFBUSxHQUFSLFFBQVEsQ0FBWTtRQUNwQixjQUFTLEdBQVQsU0FBUyxDQUFXO1FBQ3BCLGNBQVMsR0FBVCxTQUFTLENBQW1CO1FBcEJ0QyxxQkFBcUI7UUFFckI7O1dBRUc7UUFDSyxPQUFFLEdBQVcsSUFBSSxDQUFDO1FBaUJ4QixJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDbEIsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLGNBQWMsRUFBRSxDQUFDO1NBQzNDO0lBQ0gsQ0FBQztJQUVELDBCQUEwQjtJQUUxQixxQ0FBcUM7SUFFckM7O09BRUc7SUFDSCxJQUNXLE9BQU8sQ0FBQyxLQUFVO1FBQzNCLDZDQUE2QztRQUM3QyxJQUFJLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxFQUFFO1lBQzFCLE9BQU87U0FDUjtRQUVELElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDNUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUV6RCxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFRDs7T0FFRztJQUNILElBQ1csS0FBSyxDQUFDLEtBQVU7UUFDekIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRCx3Q0FBd0M7SUFFeEMseUJBQXlCO0lBRXpCOzs7T0FHRztJQUNJLGdCQUFnQixDQUFDLEtBQWE7UUFDbkMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLEVBQUUsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzFFLENBQUM7SUFFRDs7T0FFRztJQUNJLFdBQVc7UUFDaEIsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ2xCLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7U0FDM0M7SUFDSCxDQUFDOytHQTNFVSx1QkFBdUI7bUdBQXZCLHVCQUF1Qjs7U0FBdkIsdUJBQXVCOzRGQUF2Qix1QkFBdUI7a0JBRG5DLFNBQVM7c0pBcUNHLE9BQU87c0JBRGpCLEtBQUs7Z0JBaUJLLEtBQUs7c0JBRGYsS0FBSzs7QUE2QlIscUJBQXFCO0FBRXJCLG9CQUFvQjtBQUVwQjs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLGlCQUFpQixDQUFDLEVBQWlCLEVBQUUsS0FBVTtJQUM3RCxzQ0FBc0M7SUFDdEMsSUFBSSxFQUFFLElBQUksSUFBSSxFQUFFO1FBQ2QsT0FBTyxHQUFHLEtBQUssRUFBRSxDQUFDO0tBQ25CO0lBRUQsMkJBQTJCO0lBQzNCLElBQUksS0FBSyxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRTtRQUN0QyxLQUFLLEdBQUcsUUFBUSxDQUFDO0tBQ2xCO0lBRUQsZ0JBQWdCO0lBQ2hCLE9BQU8sR0FBRyxFQUFFLEtBQUssS0FBSyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUN4QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBEaXJlY3RpdmUsXHJcbiAgRWxlbWVudFJlZixcclxuICBIb3N0LFxyXG4gIEluamVjdG9yLFxyXG4gIElucHV0LFxyXG4gIE9uRGVzdHJveSxcclxuICBSZW5kZXJlcjIsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgVmFsaWRhdGlvbkVycm9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgU2FjQmFzZVNlbGVjdENvbnRyb2wgfSBmcm9tICcuLi8uLi9jb21tb24vYmFzZXNlbGVjdGNvbnRyb2wnO1xyXG5pbXBvcnQgeyBWYWxpZGF0aW9uIH0gZnJvbSAnLi4vLi4vdmFsaWRhdGlvbic7XHJcbmltcG9ydCB7IFNhY0Zvcm1MYXlvdXRDb21tb24gfSBmcm9tICcuLi9sYXlvdXQvZm9ybWxheW91dCc7XHJcblxyXG4vLyAjcmVnaW9uIENsYXNzZXNcclxuXHJcbi8qKlxyXG4gKiBCYXNlIERyb3Bkb3duIEtvbXBvbmVudGVcclxuICovXHJcbkBEaXJlY3RpdmUoKVxyXG5leHBvcnQgY2xhc3MgU2FjRHJvcGRvd25Db21tb24gZXh0ZW5kcyBTYWNCYXNlU2VsZWN0Q29udHJvbDxhbnk+IHtcclxuICAvLyAjcmVnaW9uIFByb3BlcnRpZXNcclxuXHJcbiAgLyoqXHJcbiAgICogY29tcGFyZVdpdGgtRnVua3Rpb25cclxuICAgKi9cclxuICBwcml2YXRlIF9jb21wYXJlV2l0aDogKG8xOiBhbnksIG8yOiBhbnkpID0+IGJvb2xlYW4gPSBPYmplY3QuaXM7XHJcblxyXG4gIC8qKlxyXG4gICAqIExhYmVsIFRleHQgZsO8ciBFbXB0eSBJdGVtXHJcbiAgICovXHJcbiAgQElucHV0KCkgcHVibGljIGVtcHR5bGFiZWw6IHN0cmluZyA9ICcnO1xyXG4gIC8qKlxyXG4gICAqIE9wdGlvbiBWYWx1ZSBmw7xyIEVtcHR5IEl0ZW1cclxuICAgKi9cclxuICBASW5wdXQoKSBwdWJsaWMgZW1wdHl2YWx1ZTogc3RyaW5nID0gbnVsbDtcclxuICAvKipcclxuICAgKiBSZXNvdXJjZSBLZXkgZsO8ciBWYWxpZGF0aW9uIE1lc3NhZ2UgUmVxdWlyZWQgYmVpIENvbnRyb2xcclxuICAgKi9cclxuICBASW5wdXQoKSBwdWJsaWMgdmFsaWRhdGlvbm1lc3NhZ2VyZXF1aXJlZDogc3RyaW5nID1cclxuICAgIHRoaXMudmFsaWRhdGlvbktleVNlcnZpY2UuVmFsaWRhdGlvbkVycm9yUmVxdWlyZWQ7XHJcbiAgLyoqXHJcbiAgICogUmVzb3VyY2UgS2V5IGbDvHIgVmFsaWRhdGlvbiBNZXNzYWdlIFJlcXVpcmVkIGluIFZhbGlkYXRpb24gU3VtbWFyeVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHZhbGlkYXRpb25tZXNzYWdlc3VtbWFyeXJlcXVpcmVkOiBzdHJpbmcgPVxyXG4gICAgdGhpcy52YWxpZGF0aW9uS2V5U2VydmljZS5WYWxpZGF0aW9uRXJyb3JTdW1tYXJ5UmVxdWlyZWQ7XHJcblxyXG4gIC8qKlxyXG4gICAqIENvdW50ZXIgdm9tIE9wdGlvbklEOyBkZWZhdWx0IFdlcnQgPSAwXHJcbiAgICovXHJcbiAgcHVibGljIF9vcHRpb25JZENvdW50ZXI6IG51bWJlciA9IDA7XHJcbiAgLyoqXHJcbiAgICogT3B0aW9uTWFwXHJcbiAgICovXHJcbiAgcHVibGljIF9vcHRpb25NYXA6IE1hcDxzdHJpbmcsIGFueT4gPSBuZXcgTWFwPHN0cmluZywgYW55PigpO1xyXG5cclxuICAvLyAjZW5kcmVnaW9uIFByb3BlcnRpZXNcclxuXHJcbiAgLy8gI3JlZ2lvbiBDb25zdHJ1Y3RvcnNcclxuXHJcbiAgLyoqXHJcbiAgICogQ29uc3RydWN0b3JcclxuICAgKiBAcGFyYW0gZm9ybWxheW91dCBTYWNGb3JtTGF5b3V0Q29tbW9uIHRvIGRlZmluZSBzY29wZWQgbGF5b3V0IHNldHRpbmdzXHJcbiAgICogQHBhcmFtIGluamVjdG9yIEluamVjdG9yIGZvciBpbmplY3Rpbmcgc2VydmljZXNcclxuICAgKiBAcGFyYW0gcmVuZGVyZXIgaHRtbCByZW5kZXJpbmcgZW5naW5lXHJcbiAgICogQHBhcmFtIGVsZW1lbnRSZWYgcmVmZXJlbmNlIHRvIGh0bWwgZWxlbWVudFxyXG4gICAqL1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgQEhvc3QoKSBmb3JtbGF5b3V0OiBTYWNGb3JtTGF5b3V0Q29tbW9uLFxyXG4gICAgaW5qZWN0b3I6IEluamVjdG9yLFxyXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxyXG4gICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmXHJcbiAgKSB7XHJcbiAgICBzdXBlcihmb3JtbGF5b3V0LCBpbmplY3Rvcik7XHJcbiAgfVxyXG5cclxuICAvLyAjZW5kcmVnaW9uIENvbnN0cnVjdG9yc1xyXG5cclxuICAvLyAjcmVnaW9uIFB1YmxpYyBHZXR0ZXJzIEFuZCBTZXR0ZXJzXHJcblxyXG4gIC8qKlxyXG4gICAqIGNvbXBhcmVXaXRoLUZ1bmt0aW9uXHJcbiAgICovXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2V0IGNvbXBhcmV3aXRoKGZuOiAobzE6IGFueSwgbzI6IGFueSkgPT4gYm9vbGVhbikge1xyXG4gICAgaWYgKHR5cGVvZiBmbiAhPT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXHJcbiAgICAgICAgYGNvbXBhcmVXaXRoIG11c3QgYmUgYSBmdW5jdGlvbiwgYnV0IHJlY2VpdmVkICR7SlNPTi5zdHJpbmdpZnkoZm4pfWBcclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIHRoaXMuX2NvbXBhcmVXaXRoID0gZm47XHJcbiAgfVxyXG5cclxuICAvLyAjZW5kcmVnaW9uIFB1YmxpYyBHZXR0ZXJzIEFuZCBTZXR0ZXJzXHJcblxyXG4gIC8vICNyZWdpb24gUHVibGljIE1ldGhvZHNcclxuXHJcbiAgLyoqXHJcbiAgICogUmVnaXN0cmllcnQgZGFzIE9wdGlvbklELUNvdW50ZXIgYWxzIFN0cmluZ1xyXG4gICAqL1xyXG4gIHB1YmxpYyByZWdpc3Rlck9wdGlvbigpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuICh0aGlzLl9vcHRpb25JZENvdW50ZXIrKykudG9TdHJpbmcoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1ldGhvZGUgZGllIHZvbiBPcHRpb25zIGF1ZmdlcnVmZW4gd2lyZCwgdW0gZGFzIE1hcHBpbmcgendpc2NoZW4gRHJvcGRvd24gVmFsdWUgdW5kIFZhbHVlIGhlcnp1c3RlbGxlbi5cclxuICAgKiBAcGFyYW0gaWQ6IElkIGF1cyBPcHRpb25zXHJcbiAgICogQHBhcmFtIHZhbHVlOiBWYWx1ZVxyXG4gICAqL1xyXG4gIHB1YmxpYyBzZXRPcHRpb25NYXAoaWQ6IHN0cmluZywgdmFsdWU6IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5fb3B0aW9uTWFwLnNldChpZCwgdmFsdWUpO1xyXG5cclxuICAgIC8vIFNlbGVjdGVkIFZhbHVlIGF1ZiBDb250cm9sIGFrdHVhbGlzaWVyZW4sIHdlbm4gVmFsdWUgZGVtIFNlbGVjdGVkVmFsdWUgZW50c3ByaWNodFxyXG4gICAgaWYgKHRoaXMudmFsdWUgPT09IHZhbHVlKSB7XHJcbiAgICAgIHRoaXMuc2V0U2VsZWN0ZWRWYWx1ZSh2YWx1ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBXZXJ0IGVpbnN0ZWxsZW5cclxuICAgKiBAcGFyYW0gdmFsdWUgLSBXZXJ0XHJcbiAgICovXHJcbiAgcHVibGljIHNldFZhbHVlKHZhbHVlOiBzdHJpbmcpIHtcclxuICAgIHN1cGVyLnNldFZhbHVlKHRoaXMuZ2V0T3B0aW9uVmFsdWUodmFsdWUpKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFZhbGlkYXRvclxyXG4gICAqIEBwYXJhbSBjIENvbnRyb2wgSW5zdGFuelxyXG4gICAqL1xyXG4gIHB1YmxpYyB2YWxpZGF0ZURhdGEoYzogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xyXG4gICAgbGV0IGVycm9yOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gICAgaWYgKHRoaXMuaXNyZXF1aXJlZCkge1xyXG4gICAgICBlcnJvciA9IFZhbGlkYXRpb24ucmVxdWlyZWQoXHJcbiAgICAgICAgdGhpcy52YWxpZGF0aW9ubWVzc2FnZXJlcXVpcmVkLFxyXG4gICAgICAgIHRoaXMudmFsaWRhdGlvbm1lc3NhZ2VzdW1tYXJ5cmVxdWlyZWRcclxuICAgICAgKShjKTtcclxuICAgIH1cclxuICAgIHJldHVybiBlcnJvcjtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFdlcnQgc2NocmVpYmVuXHJcbiAgICogQHBhcmFtIHZhbHVlIC0gV2VydFxyXG4gICAqL1xyXG4gIHB1YmxpYyB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpIHtcclxuICAgIHRoaXMuc2V0U2VsZWN0ZWRWYWx1ZSh2YWx1ZSk7XHJcbiAgICBzdXBlci53cml0ZVZhbHVlKHZhbHVlKTtcclxuICB9XHJcblxyXG4gIC8vICNlbmRyZWdpb24gUHVibGljIE1ldGhvZHNcclxuXHJcbiAgLy8gI3JlZ2lvbiBQcml2YXRlIE1ldGhvZHNcclxuXHJcbiAgLyoqXHJcbiAgICogSUQgZXh0cmFoaWVyZW5cclxuICAgKiBAcGFyYW0gdmFsdWVTdHJpbmcgU3RyaW5nIGJlaSB3ZWxjaGVtIGRpZSBJRCBFeHRyYWhpZXJ0IHdlcmRlbiBzb2xsXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBleHRyYWN0SWQodmFsdWVTdHJpbmc6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdmFsdWVTdHJpbmcuc3BsaXQoJzonKVswXTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE5pbW10IGRhcyBJRCB2b20gT3B0aW9uXHJcbiAgICogQHBhcmFtIHZhbHVlXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBnZXRPcHRpb25JZCh2YWx1ZTogYW55KTogc3RyaW5nIHwgbnVsbCB7XHJcbiAgICBmb3IgKGNvbnN0IGlkIG9mIEFycmF5LmZyb20odGhpcy5fb3B0aW9uTWFwLmtleXMoKSkpIHtcclxuICAgICAgaWYgKHRoaXMuX2NvbXBhcmVXaXRoKHRoaXMuX29wdGlvbk1hcC5nZXQoaWQpLCB2YWx1ZSkpIHtcclxuICAgICAgICByZXR1cm4gaWQ7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTmltbXQgZGVuIFN0cmluZy1XZXJ0IHZvbSBPcHRpb25cclxuICAgKiBAcGFyYW0gdmFsdWVTdHJpbmdcclxuICAgKi9cclxuICBwcml2YXRlIGdldE9wdGlvblZhbHVlKHZhbHVlU3RyaW5nOiBzdHJpbmcpOiBhbnkge1xyXG4gICAgY29uc3QgaWQ6IHN0cmluZyA9IHRoaXMuZXh0cmFjdElkKHZhbHVlU3RyaW5nKTtcclxuICAgIHJldHVybiB0aGlzLl9vcHRpb25NYXAuaGFzKGlkKSA/IHRoaXMuX29wdGlvbk1hcC5nZXQoaWQpIDogdmFsdWVTdHJpbmc7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZXR6dCBkZW4gU2VsZWN0ZWQgVmFsdWUgYXVmIGRlbSBDb250cm9sXHJcbiAgICogQHBhcmFtIHZhbHVlIFZhbHVlXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBzZXRTZWxlY3RlZFZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcclxuICAgIC8vIFNlbGVjdCBJdGVtIGF1cyBDb250cm9sIGxlc2VuXHJcbiAgICBjb25zdCBzZWxlY3RJdGVtOiBhbnkgPVxyXG4gICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnc2VsZWN0JylbMF07XHJcbiAgICAvKipcclxuICAgICAqIElkIHZvbSBTZWxlY3QgSXRlbVxyXG4gICAgICovXHJcbiAgICBjb25zdCBpZDogc3RyaW5nIHwgbnVsbCA9IHRoaXMuZ2V0T3B0aW9uSWQodmFsdWUpO1xyXG4gICAgLyoqXHJcbiAgICAgKiBWYWx1ZSBTdHJpbmdcclxuICAgICAqL1xyXG4gICAgY29uc3QgdmFsdWVTdHJpbmcgPSBfYnVpbGRWYWx1ZVN0cmluZyhpZCwgdmFsdWUpO1xyXG5cclxuICAgIGlmIChzZWxlY3RJdGVtICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgdGhpcy5yZW5kZXJlci5zZXRQcm9wZXJ0eShzZWxlY3RJdGVtLCAndmFsdWUnLCB2YWx1ZVN0cmluZyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyAjZW5kcmVnaW9uIFByaXZhdGUgTWV0aG9kc1xyXG59XHJcblxyXG4vKipcclxuICogU2FjRHJvcGRvd25PcHRpb24tS2xhc3NlXHJcbiAqL1xyXG5ARGlyZWN0aXZlKClcclxuZXhwb3J0IGNsYXNzIFNhY0Ryb3Bkb3duT3B0aW9uQ29tbW9uIGltcGxlbWVudHMgT25EZXN0cm95IHtcclxuICAvLyAjcmVnaW9uIFByb3BlcnRpZXNcclxuXHJcbiAgLyoqXHJcbiAgICogSUQtU3RyaW5nXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBpZDogc3RyaW5nID0gbnVsbDtcclxuXHJcbiAgLy8gI2VuZHJlZ2lvbiBQcm9wZXJ0aWVzXHJcblxyXG4gIC8vICNyZWdpb24gQ29uc3RydWN0b3JzXHJcblxyXG4gIC8qKlxyXG4gICAqIEtvbnN0cnVrdG9yXHJcbiAgICogQHBhcmFtIF9lbGVtZW50IFJlZmVyZW56IGF1ZiBIVE1MIEVsZW1lbnRcclxuICAgKiBAcGFyYW0gX3JlbmRlcmVyIFJlbmRlciBFbmdpbmVcclxuICAgKiBAcGFyYW0gX2Ryb3Bkb3duIERyb3Bkb3duIEluc3RhbnpcclxuICAgKi9cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgX2VsZW1lbnQ6IEVsZW1lbnRSZWYsXHJcbiAgICBwcml2YXRlIF9yZW5kZXJlcjogUmVuZGVyZXIyLFxyXG4gICAgcHJpdmF0ZSBfZHJvcGRvd246IFNhY0Ryb3Bkb3duQ29tbW9uXHJcbiAgKSB7XHJcbiAgICBpZiAodGhpcy5fZHJvcGRvd24pIHtcclxuICAgICAgdGhpcy5pZCA9IHRoaXMuX2Ryb3Bkb3duLnJlZ2lzdGVyT3B0aW9uKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyAjZW5kcmVnaW9uIENvbnN0cnVjdG9yc1xyXG5cclxuICAvLyAjcmVnaW9uIFB1YmxpYyBHZXR0ZXJzIEFuZCBTZXR0ZXJzXHJcblxyXG4gIC8qKlxyXG4gICAqIE9wdGlvbiBuZ1ZhbHVlXHJcbiAgICovXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2V0IG5nVmFsdWUodmFsdWU6IGFueSkge1xyXG4gICAgLy8gQ2FuY2VsIHdlbm4ga2VpbiBQYXJlbnQgRHJvcGRvd24gdm9yaGFuZGVuXHJcbiAgICBpZiAodGhpcy5fZHJvcGRvd24gPT0gbnVsbCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5fZHJvcGRvd24uc2V0T3B0aW9uTWFwKHRoaXMuaWQsIHZhbHVlKTtcclxuICAgIHRoaXMuX3NldEVsZW1lbnRWYWx1ZShfYnVpbGRWYWx1ZVN0cmluZyh0aGlzLmlkLCB2YWx1ZSkpO1xyXG5cclxuICAgIHRoaXMuX2Ryb3Bkb3duLndyaXRlVmFsdWUodGhpcy5fZHJvcGRvd24udmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogV2VydC1TZXR0ZXJcclxuICAgKi9cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzZXQgdmFsdWUodmFsdWU6IGFueSkge1xyXG4gICAgdGhpcy5fc2V0RWxlbWVudFZhbHVlKHZhbHVlKTtcclxuICB9XHJcblxyXG4gIC8vICNlbmRyZWdpb24gUHVibGljIEdldHRlcnMgQW5kIFNldHRlcnNcclxuXHJcbiAgLy8gI3JlZ2lvbiBQdWJsaWMgTWV0aG9kc1xyXG5cclxuICAvKipcclxuICAgKiBEZW4gV2VydCB2b20gT3B0aW9uLUVsZW1lbnQgZWluc3RlbGxlblxyXG4gICAqIEBwYXJhbSB2YWx1ZSBXZXJ0XHJcbiAgICovXHJcbiAgcHVibGljIF9zZXRFbGVtZW50VmFsdWUodmFsdWU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5fcmVuZGVyZXIuc2V0UHJvcGVydHkodGhpcy5fZWxlbWVudC5uYXRpdmVFbGVtZW50LCAndmFsdWUnLCB2YWx1ZSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBPbkRlc3Ryb3kgRXZlbnRcclxuICAgKi9cclxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5fZHJvcGRvd24pIHtcclxuICAgICAgdGhpcy5fZHJvcGRvd24uX29wdGlvbk1hcC5kZWxldGUodGhpcy5pZCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyAjZW5kcmVnaW9uIFB1YmxpYyBNZXRob2RzXHJcbn1cclxuXHJcbi8vICNlbmRyZWdpb24gQ2xhc3Nlc1xyXG5cclxuLy8gI3JlZ2lvbiBGdW5jdGlvbnNcclxuXHJcbi8qKlxyXG4gKiBGdW5jdGlvbiB1bSBlaW4gS2V5IFZhbHVlIFBhaXIgZsO8ciBkYXMgRHJvcGRvd24genUgZXJ6ZXVnZW5cclxuICogQHBhcmFtIGlkIElEXHJcbiAqIEBwYXJhbSB2YWx1ZSBXZXJ0IGRlciBhbiBkYXMgRWxlbWVudCBnZWJ1bmRlbiB3ZXJkZW4gc29sbFxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIF9idWlsZFZhbHVlU3RyaW5nKGlkOiBzdHJpbmcgfCBudWxsLCB2YWx1ZTogYW55KTogc3RyaW5nIHtcclxuICAvLyBXZW5uIElEIG51bGwgaXN0IE9iamVjdCB6dXLDvGNrZ2ViZW5cclxuICBpZiAoaWQgPT0gbnVsbCkge1xyXG4gICAgcmV0dXJuIGAke3ZhbHVlfWA7XHJcbiAgfVxyXG5cclxuICAvLyBNYXBwaW5nIE9iamVrdCB6dSBTdHJpbmdcclxuICBpZiAodmFsdWUgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0Jykge1xyXG4gICAgdmFsdWUgPSAnT2JqZWN0JztcclxuICB9XHJcblxyXG4gIC8vIFN0cmluZyBhbHMgSURcclxuICByZXR1cm4gYCR7aWR9OiAke3ZhbHVlfWAuc2xpY2UoMCwgNTApO1xyXG59XHJcblxyXG4vLyAjZW5kcmVnaW9uIEZ1bmN0aW9uc1xyXG4iXX0=
105
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJEaXJlY3RpdmUiLCJIb3N0IiwiSW5wdXQiLCJTYWNCYXNlU2VsZWN0Q29udHJvbCIsIlZhbGlkYXRpb24iLCJTYWNEcm9wZG93bkNvbW1vbiIsImNvbnN0cnVjdG9yIiwiZm9ybWxheW91dCIsImluamVjdG9yIiwicmVuZGVyZXIiLCJlbGVtZW50UmVmIiwiY292XzEwajZ3Z2l4ZDciLCJmIiwicyIsIl9jb21wYXJlV2l0aCIsIk9iamVjdCIsImlzIiwiZW1wdHlsYWJlbCIsImVtcHR5dmFsdWUiLCJ2YWxpZGF0aW9ubWVzc2FnZXJlcXVpcmVkIiwidmFsaWRhdGlvbktleVNlcnZpY2UiLCJWYWxpZGF0aW9uRXJyb3JSZXF1aXJlZCIsInZhbGlkYXRpb25tZXNzYWdlc3VtbWFyeXJlcXVpcmVkIiwiVmFsaWRhdGlvbkVycm9yU3VtbWFyeVJlcXVpcmVkIiwiX29wdGlvbklkQ291bnRlciIsIl9vcHRpb25NYXAiLCJNYXAiLCJjb21wYXJld2l0aCIsImZuIiwiYiIsIkVycm9yIiwiSlNPTiIsInN0cmluZ2lmeSIsInJlZ2lzdGVyT3B0aW9uIiwidG9TdHJpbmciLCJzZXRPcHRpb25NYXAiLCJpZCIsInZhbHVlIiwic2V0Iiwic2V0U2VsZWN0ZWRWYWx1ZSIsInNldFZhbHVlIiwiZ2V0T3B0aW9uVmFsdWUiLCJ2YWxpZGF0ZURhdGEiLCJjIiwiZXJyb3IiLCJpc3JlcXVpcmVkIiwicmVxdWlyZWQiLCJ3cml0ZVZhbHVlIiwiZXh0cmFjdElkIiwidmFsdWVTdHJpbmciLCJzcGxpdCIsImdldE9wdGlvbklkIiwiQXJyYXkiLCJmcm9tIiwia2V5cyIsImdldCIsImhhcyIsInNlbGVjdEl0ZW0iLCJuYXRpdmVFbGVtZW50IiwiZ2V0RWxlbWVudHNCeVRhZ05hbWUiLCJfYnVpbGRWYWx1ZVN0cmluZyIsInVuZGVmaW5lZCIsInNldFByb3BlcnR5IiwiZGVwcyIsInRva2VuIiwiaTEiLCJTYWNGb3JtTGF5b3V0Q29tbW9uIiwiaG9zdCIsImkwIiwiSW5qZWN0b3IiLCJSZW5kZXJlcjIiLCJFbGVtZW50UmVmIiwidGFyZ2V0IiwiybXJtUZhY3RvcnlUYXJnZXQiLCJpbnB1dHMiLCJ1c2VzSW5oZXJpdGFuY2UiLCJuZ0ltcG9ydCIsImRlY29yYXRvcnMiLCJTYWNEcm9wZG93bk9wdGlvbkNvbW1vbiIsIl9lbGVtZW50IiwiX3JlbmRlcmVyIiwiX2Ryb3Bkb3duIiwibmdWYWx1ZSIsIl9zZXRFbGVtZW50VmFsdWUiLCJuZ09uRGVzdHJveSIsImRlbGV0ZSIsInNsaWNlIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2FjLWNvbW1vbi9zcmMvY29udHJvbHMvbGlzdC9kcm9wZG93bi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIERpcmVjdGl2ZSxcclxuICBFbGVtZW50UmVmLFxyXG4gIEhvc3QsXHJcbiAgSW5qZWN0b3IsXHJcbiAgSW5wdXQsXHJcbiAgT25EZXN0cm95LFxyXG4gIFJlbmRlcmVyMixcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBWYWxpZGF0aW9uRXJyb3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBTYWNCYXNlU2VsZWN0Q29udHJvbCB9IGZyb20gJy4uLy4uL2NvbW1vbi9iYXNlc2VsZWN0Y29udHJvbCc7XHJcbmltcG9ydCB7IFZhbGlkYXRpb24gfSBmcm9tICcuLi8uLi92YWxpZGF0aW9uJztcclxuaW1wb3J0IHsgU2FjRm9ybUxheW91dENvbW1vbiB9IGZyb20gJy4uL2xheW91dC9mb3JtbGF5b3V0JztcclxuXHJcbi8vICNyZWdpb24gQ2xhc3Nlc1xyXG5cclxuLyoqXHJcbiAqIEJhc2UgRHJvcGRvd24gS29tcG9uZW50ZVxyXG4gKi9cclxuQERpcmVjdGl2ZSgpXHJcbmV4cG9ydCBjbGFzcyBTYWNEcm9wZG93bkNvbW1vbiBleHRlbmRzIFNhY0Jhc2VTZWxlY3RDb250cm9sPGFueT4ge1xyXG4gIC8vICNyZWdpb24gUHJvcGVydGllc1xyXG5cclxuICAvKipcclxuICAgKiBjb21wYXJlV2l0aC1GdW5rdGlvblxyXG4gICAqL1xyXG4gIHByaXZhdGUgX2NvbXBhcmVXaXRoOiAobzE6IGFueSwgbzI6IGFueSkgPT4gYm9vbGVhbiA9IE9iamVjdC5pcztcclxuXHJcbiAgLyoqXHJcbiAgICogTGFiZWwgVGV4dCBmw7xyIEVtcHR5IEl0ZW1cclxuICAgKi9cclxuICBASW5wdXQoKSBwdWJsaWMgZW1wdHlsYWJlbDogc3RyaW5nID0gJyc7XHJcbiAgLyoqXHJcbiAgICogT3B0aW9uIFZhbHVlIGbDvHIgRW1wdHkgSXRlbVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBlbXB0eXZhbHVlOiBzdHJpbmcgPSBudWxsO1xyXG4gIC8qKlxyXG4gICAqIFJlc291cmNlIEtleSBmw7xyIFZhbGlkYXRpb24gTWVzc2FnZSBSZXF1aXJlZCBiZWkgQ29udHJvbFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHB1YmxpYyB2YWxpZGF0aW9ubWVzc2FnZXJlcXVpcmVkOiBzdHJpbmcgPVxyXG4gICAgdGhpcy52YWxpZGF0aW9uS2V5U2VydmljZS5WYWxpZGF0aW9uRXJyb3JSZXF1aXJlZDtcclxuICAvKipcclxuICAgKiBSZXNvdXJjZSBLZXkgZsO8ciBWYWxpZGF0aW9uIE1lc3NhZ2UgUmVxdWlyZWQgaW4gVmFsaWRhdGlvbiBTdW1tYXJ5XHJcbiAgICovXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgdmFsaWRhdGlvbm1lc3NhZ2VzdW1tYXJ5cmVxdWlyZWQ6IHN0cmluZyA9XHJcbiAgICB0aGlzLnZhbGlkYXRpb25LZXlTZXJ2aWNlLlZhbGlkYXRpb25FcnJvclN1bW1hcnlSZXF1aXJlZDtcclxuXHJcbiAgLyoqXHJcbiAgICogQ291bnRlciB2b20gT3B0aW9uSUQ7IGRlZmF1bHQgV2VydCA9IDBcclxuICAgKi9cclxuICBwdWJsaWMgX29wdGlvbklkQ291bnRlcjogbnVtYmVyID0gMDtcclxuICAvKipcclxuICAgKiBPcHRpb25NYXBcclxuICAgKi9cclxuICBwdWJsaWMgX29wdGlvbk1hcDogTWFwPHN0cmluZywgYW55PiA9IG5ldyBNYXA8c3RyaW5nLCBhbnk+KCk7XHJcblxyXG4gIC8vICNlbmRyZWdpb24gUHJvcGVydGllc1xyXG5cclxuICAvLyAjcmVnaW9uIENvbnN0cnVjdG9yc1xyXG5cclxuICAvKipcclxuICAgKiBDb25zdHJ1Y3RvclxyXG4gICAqIEBwYXJhbSBmb3JtbGF5b3V0IFNhY0Zvcm1MYXlvdXRDb21tb24gdG8gZGVmaW5lIHNjb3BlZCBsYXlvdXQgc2V0dGluZ3NcclxuICAgKiBAcGFyYW0gaW5qZWN0b3IgSW5qZWN0b3IgZm9yIGluamVjdGluZyBzZXJ2aWNlc1xyXG4gICAqIEBwYXJhbSByZW5kZXJlciBodG1sIHJlbmRlcmluZyBlbmdpbmVcclxuICAgKiBAcGFyYW0gZWxlbWVudFJlZiByZWZlcmVuY2UgdG8gaHRtbCBlbGVtZW50XHJcbiAgICovXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBASG9zdCgpIGZvcm1sYXlvdXQ6IFNhY0Zvcm1MYXlvdXRDb21tb24sXHJcbiAgICBpbmplY3RvcjogSW5qZWN0b3IsXHJcbiAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXHJcbiAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWZcclxuICApIHtcclxuICAgIHN1cGVyKGZvcm1sYXlvdXQsIGluamVjdG9yKTtcclxuICB9XHJcblxyXG4gIC8vICNlbmRyZWdpb24gQ29uc3RydWN0b3JzXHJcblxyXG4gIC8vICNyZWdpb24gUHVibGljIEdldHRlcnMgQW5kIFNldHRlcnNcclxuXHJcbiAgLyoqXHJcbiAgICogY29tcGFyZVdpdGgtRnVua3Rpb25cclxuICAgKi9cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzZXQgY29tcGFyZXdpdGgoZm46IChvMTogYW55LCBvMjogYW55KSA9PiBib29sZWFuKSB7XHJcbiAgICBpZiAodHlwZW9mIGZuICE9PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihcclxuICAgICAgICBgY29tcGFyZVdpdGggbXVzdCBiZSBhIGZ1bmN0aW9uLCBidXQgcmVjZWl2ZWQgJHtKU09OLnN0cmluZ2lmeShmbil9YFxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fY29tcGFyZVdpdGggPSBmbjtcclxuICB9XHJcblxyXG4gIC8vICNlbmRyZWdpb24gUHVibGljIEdldHRlcnMgQW5kIFNldHRlcnNcclxuXHJcbiAgLy8gI3JlZ2lvbiBQdWJsaWMgTWV0aG9kc1xyXG5cclxuICAvKipcclxuICAgKiBSZWdpc3RyaWVydCBkYXMgT3B0aW9uSUQtQ291bnRlciBhbHMgU3RyaW5nXHJcbiAgICovXHJcbiAgcHVibGljIHJlZ2lzdGVyT3B0aW9uKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gKHRoaXMuX29wdGlvbklkQ291bnRlcisrKS50b1N0cmluZygpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWV0aG9kZSBkaWUgdm9uIE9wdGlvbnMgYXVmZ2VydWZlbiB3aXJkLCB1bSBkYXMgTWFwcGluZyB6d2lzY2hlbiBEcm9wZG93biBWYWx1ZSB1bmQgVmFsdWUgaGVyenVzdGVsbGVuLlxyXG4gICAqIEBwYXJhbSBpZDogSWQgYXVzIE9wdGlvbnNcclxuICAgKiBAcGFyYW0gdmFsdWU6IFZhbHVlXHJcbiAgICovXHJcbiAgcHVibGljIHNldE9wdGlvbk1hcChpZDogc3RyaW5nLCB2YWx1ZTogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLl9vcHRpb25NYXAuc2V0KGlkLCB2YWx1ZSk7XHJcblxyXG4gICAgLy8gU2VsZWN0ZWQgVmFsdWUgYXVmIENvbnRyb2wgYWt0dWFsaXNpZXJlbiwgd2VubiBWYWx1ZSBkZW0gU2VsZWN0ZWRWYWx1ZSBlbnRzcHJpY2h0XHJcbiAgICBpZiAodGhpcy52YWx1ZSA9PT0gdmFsdWUpIHtcclxuICAgICAgdGhpcy5zZXRTZWxlY3RlZFZhbHVlKHZhbHVlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFdlcnQgZWluc3RlbGxlblxyXG4gICAqIEBwYXJhbSB2YWx1ZSAtIFdlcnRcclxuICAgKi9cclxuICBwdWJsaWMgc2V0VmFsdWUodmFsdWU6IHN0cmluZykge1xyXG4gICAgc3VwZXIuc2V0VmFsdWUodGhpcy5nZXRPcHRpb25WYWx1ZSh2YWx1ZSkpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVmFsaWRhdG9yXHJcbiAgICogQHBhcmFtIGMgQ29udHJvbCBJbnN0YW56XHJcbiAgICovXHJcbiAgcHVibGljIHZhbGlkYXRlRGF0YShjOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XHJcbiAgICBsZXQgZXJyb3I6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgICBpZiAodGhpcy5pc3JlcXVpcmVkKSB7XHJcbiAgICAgIGVycm9yID0gVmFsaWRhdGlvbi5yZXF1aXJlZChcclxuICAgICAgICB0aGlzLnZhbGlkYXRpb25tZXNzYWdlcmVxdWlyZWQsXHJcbiAgICAgICAgdGhpcy52YWxpZGF0aW9ubWVzc2FnZXN1bW1hcnlyZXF1aXJlZFxyXG4gICAgICApKGMpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGVycm9yO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogV2VydCBzY2hyZWliZW5cclxuICAgKiBAcGFyYW0gdmFsdWUgLSBXZXJ0XHJcbiAgICovXHJcbiAgcHVibGljIHdyaXRlVmFsdWUodmFsdWU6IGFueSkge1xyXG4gICAgdGhpcy5zZXRTZWxlY3RlZFZhbHVlKHZhbHVlKTtcclxuICAgIHN1cGVyLndyaXRlVmFsdWUodmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgLy8gI2VuZHJlZ2lvbiBQdWJsaWMgTWV0aG9kc1xyXG5cclxuICAvLyAjcmVnaW9uIFByaXZhdGUgTWV0aG9kc1xyXG5cclxuICAvKipcclxuICAgKiBJRCBleHRyYWhpZXJlblxyXG4gICAqIEBwYXJhbSB2YWx1ZVN0cmluZyBTdHJpbmcgYmVpIHdlbGNoZW0gZGllIElEIEV4dHJhaGllcnQgd2VyZGVuIHNvbGxcclxuICAgKi9cclxuICBwcml2YXRlIGV4dHJhY3RJZCh2YWx1ZVN0cmluZzogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB2YWx1ZVN0cmluZy5zcGxpdCgnOicpWzBdO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTmltbXQgZGFzIElEIHZvbSBPcHRpb25cclxuICAgKiBAcGFyYW0gdmFsdWVcclxuICAgKi9cclxuICBwcml2YXRlIGdldE9wdGlvbklkKHZhbHVlOiBhbnkpOiBzdHJpbmcgfCBudWxsIHtcclxuICAgIGZvciAoY29uc3QgaWQgb2YgQXJyYXkuZnJvbSh0aGlzLl9vcHRpb25NYXAua2V5cygpKSkge1xyXG4gICAgICBpZiAodGhpcy5fY29tcGFyZVdpdGgodGhpcy5fb3B0aW9uTWFwLmdldChpZCksIHZhbHVlKSkge1xyXG4gICAgICAgIHJldHVybiBpZDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBOaW1tdCBkZW4gU3RyaW5nLVdlcnQgdm9tIE9wdGlvblxyXG4gICAqIEBwYXJhbSB2YWx1ZVN0cmluZ1xyXG4gICAqL1xyXG4gIHByaXZhdGUgZ2V0T3B0aW9uVmFsdWUodmFsdWVTdHJpbmc6IHN0cmluZyk6IGFueSB7XHJcbiAgICBjb25zdCBpZDogc3RyaW5nID0gdGhpcy5leHRyYWN0SWQodmFsdWVTdHJpbmcpO1xyXG4gICAgcmV0dXJuIHRoaXMuX29wdGlvbk1hcC5oYXMoaWQpID8gdGhpcy5fb3B0aW9uTWFwLmdldChpZCkgOiB2YWx1ZVN0cmluZztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldHp0IGRlbiBTZWxlY3RlZCBWYWx1ZSBhdWYgZGVtIENvbnRyb2xcclxuICAgKiBAcGFyYW0gdmFsdWUgVmFsdWVcclxuICAgKi9cclxuICBwcml2YXRlIHNldFNlbGVjdGVkVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xyXG4gICAgLy8gU2VsZWN0IEl0ZW0gYXVzIENvbnRyb2wgbGVzZW5cclxuICAgIGNvbnN0IHNlbGVjdEl0ZW06IGFueSA9XHJcbiAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdzZWxlY3QnKVswXTtcclxuICAgIC8qKlxyXG4gICAgICogSWQgdm9tIFNlbGVjdCBJdGVtXHJcbiAgICAgKi9cclxuICAgIGNvbnN0IGlkOiBzdHJpbmcgfCBudWxsID0gdGhpcy5nZXRPcHRpb25JZCh2YWx1ZSk7XHJcbiAgICAvKipcclxuICAgICAqIFZhbHVlIFN0cmluZ1xyXG4gICAgICovXHJcbiAgICBjb25zdCB2YWx1ZVN0cmluZyA9IF9idWlsZFZhbHVlU3RyaW5nKGlkLCB2YWx1ZSk7XHJcblxyXG4gICAgaWYgKHNlbGVjdEl0ZW0gIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFByb3BlcnR5KHNlbGVjdEl0ZW0sICd2YWx1ZScsIHZhbHVlU3RyaW5nKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vICNlbmRyZWdpb24gUHJpdmF0ZSBNZXRob2RzXHJcbn1cclxuXHJcbi8qKlxyXG4gKiBTYWNEcm9wZG93bk9wdGlvbi1LbGFzc2VcclxuICovXHJcbkBEaXJlY3RpdmUoKVxyXG5leHBvcnQgY2xhc3MgU2FjRHJvcGRvd25PcHRpb25Db21tb24gaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xyXG4gIC8vICNyZWdpb24gUHJvcGVydGllc1xyXG5cclxuICAvKipcclxuICAgKiBJRC1TdHJpbmdcclxuICAgKi9cclxuICBwcml2YXRlIGlkOiBzdHJpbmcgPSBudWxsO1xyXG5cclxuICAvLyAjZW5kcmVnaW9uIFByb3BlcnRpZXNcclxuXHJcbiAgLy8gI3JlZ2lvbiBDb25zdHJ1Y3RvcnNcclxuXHJcbiAgLyoqXHJcbiAgICogS29uc3RydWt0b3JcclxuICAgKiBAcGFyYW0gX2VsZW1lbnQgUmVmZXJlbnogYXVmIEhUTUwgRWxlbWVudFxyXG4gICAqIEBwYXJhbSBfcmVuZGVyZXIgUmVuZGVyIEVuZ2luZVxyXG4gICAqIEBwYXJhbSBfZHJvcGRvd24gRHJvcGRvd24gSW5zdGFuelxyXG4gICAqL1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBfZWxlbWVudDogRWxlbWVudFJlZixcclxuICAgIHByaXZhdGUgX3JlbmRlcmVyOiBSZW5kZXJlcjIsXHJcbiAgICBwcml2YXRlIF9kcm9wZG93bjogU2FjRHJvcGRvd25Db21tb25cclxuICApIHtcclxuICAgIGlmICh0aGlzLl9kcm9wZG93bikge1xyXG4gICAgICB0aGlzLmlkID0gdGhpcy5fZHJvcGRvd24ucmVnaXN0ZXJPcHRpb24oKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vICNlbmRyZWdpb24gQ29uc3RydWN0b3JzXHJcblxyXG4gIC8vICNyZWdpb24gUHVibGljIEdldHRlcnMgQW5kIFNldHRlcnNcclxuXHJcbiAgLyoqXHJcbiAgICogT3B0aW9uIG5nVmFsdWVcclxuICAgKi9cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzZXQgbmdWYWx1ZSh2YWx1ZTogYW55KSB7XHJcbiAgICAvLyBDYW5jZWwgd2VubiBrZWluIFBhcmVudCBEcm9wZG93biB2b3JoYW5kZW5cclxuICAgIGlmICh0aGlzLl9kcm9wZG93biA9PSBudWxsKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLl9kcm9wZG93bi5zZXRPcHRpb25NYXAodGhpcy5pZCwgdmFsdWUpO1xyXG4gICAgdGhpcy5fc2V0RWxlbWVudFZhbHVlKF9idWlsZFZhbHVlU3RyaW5nKHRoaXMuaWQsIHZhbHVlKSk7XHJcblxyXG4gICAgdGhpcy5fZHJvcGRvd24ud3JpdGVWYWx1ZSh0aGlzLl9kcm9wZG93bi52YWx1ZSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBXZXJ0LVNldHRlclxyXG4gICAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNldCB2YWx1ZSh2YWx1ZTogYW55KSB7XHJcbiAgICB0aGlzLl9zZXRFbGVtZW50VmFsdWUodmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgLy8gI2VuZHJlZ2lvbiBQdWJsaWMgR2V0dGVycyBBbmQgU2V0dGVyc1xyXG5cclxuICAvLyAjcmVnaW9uIFB1YmxpYyBNZXRob2RzXHJcblxyXG4gIC8qKlxyXG4gICAqIERlbiBXZXJ0IHZvbSBPcHRpb24tRWxlbWVudCBlaW5zdGVsbGVuXHJcbiAgICogQHBhcmFtIHZhbHVlIFdlcnRcclxuICAgKi9cclxuICBwdWJsaWMgX3NldEVsZW1lbnRWYWx1ZSh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLl9yZW5kZXJlci5zZXRQcm9wZXJ0eSh0aGlzLl9lbGVtZW50Lm5hdGl2ZUVsZW1lbnQsICd2YWx1ZScsIHZhbHVlKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE9uRGVzdHJveSBFdmVudFxyXG4gICAqL1xyXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLl9kcm9wZG93bikge1xyXG4gICAgICB0aGlzLl9kcm9wZG93bi5fb3B0aW9uTWFwLmRlbGV0ZSh0aGlzLmlkKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vICNlbmRyZWdpb24gUHVibGljIE1ldGhvZHNcclxufVxyXG5cclxuLy8gI2VuZHJlZ2lvbiBDbGFzc2VzXHJcblxyXG4vLyAjcmVnaW9uIEZ1bmN0aW9uc1xyXG5cclxuLyoqXHJcbiAqIEZ1bmN0aW9uIHVtIGVpbiBLZXkgVmFsdWUgUGFpciBmw7xyIGRhcyBEcm9wZG93biB6dSBlcnpldWdlblxyXG4gKiBAcGFyYW0gaWQgSURcclxuICogQHBhcmFtIHZhbHVlIFdlcnQgZGVyIGFuIGRhcyBFbGVtZW50IGdlYnVuZGVuIHdlcmRlbiBzb2xsXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gX2J1aWxkVmFsdWVTdHJpbmcoaWQ6IHN0cmluZyB8IG51bGwsIHZhbHVlOiBhbnkpOiBzdHJpbmcge1xyXG4gIC8vIFdlbm4gSUQgbnVsbCBpc3QgT2JqZWN0IHp1csO8Y2tnZWJlblxyXG4gIGlmIChpZCA9PSBudWxsKSB7XHJcbiAgICByZXR1cm4gYCR7dmFsdWV9YDtcclxuICB9XHJcblxyXG4gIC8vIE1hcHBpbmcgT2JqZWt0IHp1IFN0cmluZ1xyXG4gIGlmICh2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnKSB7XHJcbiAgICB2YWx1ZSA9ICdPYmplY3QnO1xyXG4gIH1cclxuXHJcbiAgLy8gU3RyaW5nIGFscyBJRFxyXG4gIHJldHVybiBgJHtpZH06ICR7dmFsdWV9YC5zbGljZSgwLCA1MCk7XHJcbn1cclxuXHJcbi8vICNlbmRyZWdpb24gRnVuY3Rpb25zXHJcbiJdLCJtYXBwaW5ncyI6IjsyRkFBQSxPQUNFQSxTQUFTLENBRVRDLElBQUksQ0FFSkMsS0FBSyxLQUdBLGVBQWUsQ0FFdEIsT0FBU0Msb0JBQW9CLEtBQVEsZ0NBQWdDLENBQ3JFLE9BQVNDLFVBQVUsS0FBUSxrQkFBa0IsQyx5RUFHN0M7QUFFQTs7R0FHQSxLQUNhLENBQUFDLGlCQUFrQixRQUFRLENBQUFGLG9CQUF5QixDQXFDOUQ7QUFFQTtBQUVBOzs7Ozs7T0FPQUcsWUFDVUMsVUFBK0IsQ0FDdkNDLFFBQWtCLENBQ1ZDLFFBQW1CLENBQ25CQyxVQUFzQixFQUFBQyxjQUFBLEdBQUFDLENBQUEsTUFBQUQsY0FBQSxHQUFBRSxDQUFBLE1BRTlCLEtBQUssQ0FBQ04sVUFBVSxDQUFFQyxRQUFRLENBQUMsQ0FBQ0csY0FBQSxHQUFBRSxDQUFBLE1BSHBCLEtBQUFKLFFBQVEsQ0FBUkEsUUFBUSxDQUFXRSxjQUFBLEdBQUFFLENBQUEsTUFDbkIsS0FBQUgsVUFBVSxDQUFWQSxVQUFVLENBbkRwQjtBQUVBOztXQUFBQyxjQUFBLEdBQUFFLENBQUEsTUFHUSxLQUFBQyxZQUFZLENBQWtDQyxNQUFNLENBQUNDLEVBQUUsQ0FFL0Q7O1dBQUFMLGNBQUEsR0FBQUUsQ0FBQSxNQUdnQixLQUFBSSxVQUFV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