@simpleangularcontrols/sac-common 16.0.0-rc.21 → 16.0.0-rc.23

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 (388) hide show
  1. package/common/basedatetimecontrol.d.ts +45 -18
  2. package/common/basedatetimecontrol.d.ts.map +1 -1
  3. package/common/baseinputcontrol.d.ts +10 -8
  4. package/common/baseinputcontrol.d.ts.map +1 -1
  5. package/common/baselistcontrol.d.ts +16 -16
  6. package/common/baselistcontrol.d.ts.map +1 -1
  7. package/common/basemodelcontrol.d.ts +60 -44
  8. package/common/basemodelcontrol.d.ts.map +1 -1
  9. package/common/baseselectcontrol.d.ts +6 -6
  10. package/common/baseselectcontrol.d.ts.map +1 -1
  11. package/common/baseuploadcontrol.d.ts +78 -58
  12. package/common/baseuploadcontrol.d.ts.map +1 -1
  13. package/components/browser/browser.d.ts +86 -89
  14. package/components/browser/browser.d.ts.map +1 -1
  15. package/components/browser/models/browserfile.d.ts +6 -6
  16. package/components/browser/models/browserfile.d.ts.map +1 -1
  17. package/components/browser/models/browserfiledeleterequest.d.ts +7 -7
  18. package/components/browser/models/browserfiledeleterequest.d.ts.map +1 -1
  19. package/components/browser/models/browserfilerenamerequest.d.ts +10 -10
  20. package/components/browser/models/browserfilerenamerequest.d.ts.map +1 -1
  21. package/components/browser/models/browserfileresponse.d.ts +2 -2
  22. package/components/browser/models/browserfileresponse.d.ts.map +1 -1
  23. package/components/browser/models/browserfilesaverequest.d.ts +7 -7
  24. package/components/browser/models/browserfilesaverequest.d.ts.map +1 -1
  25. package/components/browser/models/browsernode.d.ts +13 -13
  26. package/components/browser/models/browsernode.d.ts.map +1 -1
  27. package/components/browser/models/browsernodedeleterequest.d.ts +6 -6
  28. package/components/browser/models/browsernodedeleterequest.d.ts.map +1 -1
  29. package/components/browser/models/browsernodenewrequest.d.ts +7 -7
  30. package/components/browser/models/browsernodenewrequest.d.ts.map +1 -1
  31. package/components/browser/models/browsernoderenamerequest.d.ts +7 -7
  32. package/components/browser/models/browsernoderenamerequest.d.ts.map +1 -1
  33. package/components/browser/models/browsernoderequest.d.ts +7 -7
  34. package/components/browser/models/browsernoderequest.d.ts.map +1 -1
  35. package/components/browser/models/browsernoderesponse.d.ts +1 -1
  36. package/components/browser/models/browsernoderesponse.d.ts.map +1 -1
  37. package/controls/buttons/button.d.ts +25 -19
  38. package/controls/buttons/button.d.ts.map +1 -1
  39. package/controls/checkbox/checkbox.d.ts +4 -4
  40. package/controls/checkbox/checkbox.d.ts.map +1 -1
  41. package/controls/checkbox/radiobutton.d.ts +19 -13
  42. package/controls/checkbox/radiobutton.d.ts.map +1 -1
  43. package/controls/checkbox/radiobuttons.d.ts +13 -10
  44. package/controls/checkbox/radiobuttons.d.ts.map +1 -1
  45. package/controls/confirm/confirm.button.d.ts +3 -3
  46. package/controls/confirm/confirm.button.d.ts.map +1 -1
  47. package/controls/confirm/confirm.d.ts +24 -23
  48. package/controls/confirm/confirm.d.ts.map +1 -1
  49. package/controls/confirm/confirm.service.d.ts +20 -20
  50. package/controls/confirm/confirm.service.d.ts.map +1 -1
  51. package/controls/contextmenu/contextmenu.d.ts +33 -27
  52. package/controls/contextmenu/contextmenu.d.ts.map +1 -1
  53. package/controls/contextmenu/contextmenu.interface.d.ts +6 -0
  54. package/controls/contextmenu/contextmenu.interface.d.ts.map +1 -1
  55. package/controls/contextmenu/contextmenuanchor.d.ts +4 -4
  56. package/controls/contextmenu/contextmenuanchor.d.ts.map +1 -1
  57. package/controls/contextmenu/contextmenucontainer.d.ts +4 -4
  58. package/controls/contextmenu/contextmenucontainer.d.ts.map +1 -1
  59. package/controls/contextmenu/contextmenuitembutton.d.ts +12 -12
  60. package/controls/contextmenu/contextmenuitembutton.d.ts.map +1 -1
  61. package/controls/datetime/date.d.ts +11 -11
  62. package/controls/datetime/date.d.ts.map +1 -1
  63. package/controls/datetime/dateselector.d.ts +47 -40
  64. package/controls/datetime/dateselector.d.ts.map +1 -1
  65. package/controls/datetime/datetime.d.ts +15 -14
  66. package/controls/datetime/datetime.d.ts.map +1 -1
  67. package/controls/datetime/time.d.ts +22 -12
  68. package/controls/datetime/time.d.ts.map +1 -1
  69. package/controls/dialog/dialog.d.ts +29 -23
  70. package/controls/dialog/dialog.d.ts.map +1 -1
  71. package/controls/form/form.d.ts +22 -17
  72. package/controls/form/form.d.ts.map +1 -1
  73. package/controls/grid/grid.d.ts +1 -0
  74. package/controls/grid/grid.d.ts.map +1 -1
  75. package/controls/grid/gridbutton.d.ts +1 -0
  76. package/controls/grid/gridbutton.d.ts.map +1 -1
  77. package/controls/grid/gridcolumn.d.ts +10 -6
  78. package/controls/grid/gridcolumn.d.ts.map +1 -1
  79. package/controls/grid/gridcolumnaction.d.ts +2 -2
  80. package/controls/grid/gridcolumnaction.d.ts.map +1 -1
  81. package/controls/grid/gridcolumnbase.d.ts +13 -4
  82. package/controls/grid/gridcolumnbase.d.ts.map +1 -1
  83. package/controls/grid/model.d.ts +22 -19
  84. package/controls/grid/model.d.ts.map +1 -1
  85. package/controls/grid/paging.d.ts +2 -3
  86. package/controls/grid/paging.d.ts.map +1 -1
  87. package/controls/input/input.d.ts +7 -7
  88. package/controls/input/inputarea.d.ts +8 -6
  89. package/controls/input/inputarea.d.ts.map +1 -1
  90. package/controls/input/inputcurrency.d.ts +4 -1
  91. package/controls/input/inputcurrency.d.ts.map +1 -1
  92. package/controls/input/inputdecimal.d.ts +15 -15
  93. package/controls/input/inputdecimal.d.ts.map +1 -1
  94. package/controls/input/inputemail.d.ts +5 -5
  95. package/controls/input/inputemail.d.ts.map +1 -1
  96. package/controls/input/inputinteger.d.ts +15 -15
  97. package/controls/input/inputinteger.d.ts.map +1 -1
  98. package/controls/input/inputpassword.d.ts +3 -3
  99. package/controls/input/inputpassword.d.ts.map +1 -1
  100. package/controls/input/inputsearch.d.ts +11 -8
  101. package/controls/input/inputsearch.d.ts.map +1 -1
  102. package/controls/layout/formlayout.d.ts +9 -6
  103. package/controls/layout/formlayout.d.ts.map +1 -1
  104. package/controls/list/buildvaluestring.d.ts +2 -2
  105. package/controls/list/buildvaluestring.d.ts.map +1 -1
  106. package/controls/list/dropdown.d.ts +23 -22
  107. package/controls/list/dropdown.d.ts.map +1 -1
  108. package/controls/list/dropdownoptions.d.ts +11 -11
  109. package/controls/list/dropdownoptions.d.ts.map +1 -1
  110. package/controls/list/listbox.d.ts +25 -23
  111. package/controls/list/listbox.d.ts.map +1 -1
  112. package/controls/multilanguage/multilanguageinput.d.ts +27 -27
  113. package/controls/multilanguage/multilanguageinput.d.ts.map +1 -1
  114. package/controls/multilanguage/multilanguageinputarea.d.ts +27 -27
  115. package/controls/multilanguage/multilanguageinputarea.d.ts.map +1 -1
  116. package/controls/static/formcontainer.d.ts +8 -8
  117. package/controls/static/formcontainer.d.ts.map +1 -1
  118. package/controls/static/staticlabel.d.ts +6 -6
  119. package/controls/static/staticlabel.d.ts.map +1 -1
  120. package/controls/tabs/tab.d.ts +2 -2
  121. package/controls/tabs/tabitem.d.ts +9 -9
  122. package/controls/tabs/tabitem.d.ts.map +1 -1
  123. package/controls/tinymce/tinymce.d.ts +37 -37
  124. package/controls/tinymce/tinymce.d.ts.map +1 -1
  125. package/controls/tinymce/tinymcedialogsettings.d.ts +11 -11
  126. package/controls/tinymce/tinymcedialogsettings.d.ts.map +1 -1
  127. package/controls/tinymce/tinymcedialogsettingsmeta.d.ts +2 -2
  128. package/controls/tinymce/tinymcedialogsettingsmeta.d.ts.map +1 -1
  129. package/controls/tinymce/tinymceinstance.d.ts +2 -2
  130. package/controls/tinymce/tinymceinstance.d.ts.map +1 -1
  131. package/controls/tooltip/tooltip.d.ts +10 -5
  132. package/controls/tooltip/tooltip.d.ts.map +1 -1
  133. package/controls/treeview/treeview.d.ts +52 -7
  134. package/controls/treeview/treeview.d.ts.map +1 -1
  135. package/controls/upload/dropzonemultiple.d.ts +16 -16
  136. package/controls/upload/dropzonemultiple.d.ts.map +1 -1
  137. package/controls/upload/dropzonesingle.d.ts +11 -11
  138. package/controls/upload/uploadmultiple.d.ts +12 -12
  139. package/controls/upload/uploadmultiple.d.ts.map +1 -1
  140. package/controls/upload/uploadsingle.d.ts +7 -7
  141. package/controls/upload/uploadsingle.d.ts.map +1 -1
  142. package/controls/validation/validationsummary.d.ts +12 -11
  143. package/controls/validation/validationsummary.d.ts.map +1 -1
  144. package/controls/wizard/wizard.d.ts +43 -36
  145. package/controls/wizard/wizard.d.ts.map +1 -1
  146. package/controls/wizard/wizarditem.d.ts +9 -9
  147. package/controls/wizard/wizarditem.d.ts.map +1 -1
  148. package/enums/ButtonRoleType.d.ts +26 -1
  149. package/enums/ButtonRoleType.d.ts.map +1 -1
  150. package/enums/ControlHeight.d.ts +1 -1
  151. package/enums/ControlHeight.d.ts.map +1 -1
  152. package/enums/IconType.d.ts +1 -1
  153. package/enums/IconType.d.ts.map +1 -1
  154. package/esm2022/common/basedatetimecontrol.mjs +59 -38
  155. package/esm2022/common/baseinputcontrol.mjs +16 -14
  156. package/esm2022/common/baselistcontrol.mjs +20 -18
  157. package/esm2022/common/basemodelcontrol.mjs +82 -71
  158. package/esm2022/common/baseselectcontrol.mjs +10 -9
  159. package/esm2022/common/baseuploadcontrol.mjs +74 -58
  160. package/esm2022/components/browser/browser.mjs +88 -90
  161. package/esm2022/components/browser/models/browserfile.mjs +3 -3
  162. package/esm2022/components/browser/models/browserfiledeleterequest.mjs +9 -7
  163. package/esm2022/components/browser/models/browserfilerenamerequest.mjs +9 -7
  164. package/esm2022/components/browser/models/browserfileresponse.mjs +3 -3
  165. package/esm2022/components/browser/models/browserfilesaverequest.mjs +8 -6
  166. package/esm2022/components/browser/models/browsernode.mjs +3 -3
  167. package/esm2022/components/browser/models/browsernodedeleterequest.mjs +9 -7
  168. package/esm2022/components/browser/models/browsernodenewrequest.mjs +9 -7
  169. package/esm2022/components/browser/models/browsernoderenamerequest.mjs +9 -7
  170. package/esm2022/components/browser/models/browsernoderequest.mjs +9 -7
  171. package/esm2022/components/browser/models/browsernoderesponse.mjs +3 -3
  172. package/esm2022/controls/buttons/button.mjs +29 -25
  173. package/esm2022/controls/checkbox/checkbox.mjs +7 -7
  174. package/esm2022/controls/checkbox/radiobutton.mjs +23 -18
  175. package/esm2022/controls/checkbox/radiobuttons.mjs +17 -14
  176. package/esm2022/controls/confirm/confirm.button.mjs +6 -6
  177. package/esm2022/controls/confirm/confirm.mjs +27 -28
  178. package/esm2022/controls/confirm/confirm.service.mjs +24 -24
  179. package/esm2022/controls/contextmenu/contextmenu.interface.mjs +3 -3
  180. package/esm2022/controls/contextmenu/contextmenu.mjs +32 -27
  181. package/esm2022/controls/contextmenu/contextmenuanchor.mjs +7 -7
  182. package/esm2022/controls/contextmenu/contextmenucontainer.mjs +7 -7
  183. package/esm2022/controls/contextmenu/contextmenuitem.mjs +4 -4
  184. package/esm2022/controls/contextmenu/contextmenuitembutton.mjs +13 -13
  185. package/esm2022/controls/datetime/date.mjs +16 -16
  186. package/esm2022/controls/datetime/dateselector.mjs +95 -94
  187. package/esm2022/controls/datetime/datetime.mjs +20 -19
  188. package/esm2022/controls/datetime/time.mjs +27 -17
  189. package/esm2022/controls/dialog/dialog.mjs +41 -37
  190. package/esm2022/controls/form/form.mjs +22 -19
  191. package/esm2022/controls/grid/grid.mjs +5 -4
  192. package/esm2022/controls/grid/gridbutton.mjs +5 -4
  193. package/esm2022/controls/grid/gridcolumn.mjs +13 -9
  194. package/esm2022/controls/grid/gridcolumnaction.mjs +6 -6
  195. package/esm2022/controls/grid/gridcolumnbase.mjs +25 -18
  196. package/esm2022/controls/grid/gridimage.mjs +3 -3
  197. package/esm2022/controls/grid/model.mjs +23 -21
  198. package/esm2022/controls/grid/paging.mjs +9 -10
  199. package/esm2022/controls/input/input.mjs +11 -11
  200. package/esm2022/controls/input/inputarea.mjs +12 -10
  201. package/esm2022/controls/input/inputcurrency.mjs +9 -7
  202. package/esm2022/controls/input/inputdecimal.mjs +22 -22
  203. package/esm2022/controls/input/inputemail.mjs +9 -9
  204. package/esm2022/controls/input/inputinteger.mjs +21 -21
  205. package/esm2022/controls/input/inputpassword.mjs +7 -7
  206. package/esm2022/controls/input/inputsearch.mjs +15 -13
  207. package/esm2022/controls/layout/formlayout.mjs +16 -10
  208. package/esm2022/controls/list/buildvaluestring.mjs +10 -8
  209. package/esm2022/controls/list/dropdown.mjs +31 -30
  210. package/esm2022/controls/list/dropdownoptions.mjs +26 -19
  211. package/esm2022/controls/list/listbox.mjs +32 -30
  212. package/esm2022/controls/multilanguage/multilanguageinput.mjs +33 -33
  213. package/esm2022/controls/multilanguage/multilanguageinputarea.mjs +34 -34
  214. package/esm2022/controls/static/formcontainer.mjs +13 -13
  215. package/esm2022/controls/static/staticlabel.mjs +15 -12
  216. package/esm2022/controls/tabs/tab.mjs +5 -5
  217. package/esm2022/controls/tabs/tabitem.mjs +9 -8
  218. package/esm2022/controls/tinymce/tinymce.mjs +38 -38
  219. package/esm2022/controls/tinymce/tinymcedialogsettings.mjs +9 -7
  220. package/esm2022/controls/tinymce/tinymcedialogsettingsmeta.mjs +3 -5
  221. package/esm2022/controls/tinymce/tinymceinstance.mjs +3 -3
  222. package/esm2022/controls/tooltip/tooltip.mjs +16 -11
  223. package/esm2022/controls/treeview/treeview.mjs +48 -12
  224. package/esm2022/controls/upload/dropzonemultiple.mjs +21 -21
  225. package/esm2022/controls/upload/dropzonesingle.mjs +15 -15
  226. package/esm2022/controls/upload/uploadmultiple.mjs +17 -17
  227. package/esm2022/controls/upload/uploadsingle.mjs +11 -11
  228. package/esm2022/controls/validation/validationsummary.mjs +17 -16
  229. package/esm2022/controls/wizard/wizard.mjs +43 -33
  230. package/esm2022/controls/wizard/wizarditem.mjs +8 -8
  231. package/esm2022/enums/ButtonRoleType.mjs +3 -3
  232. package/esm2022/enums/ControlHeight.mjs +4 -4
  233. package/esm2022/enums/IconType.mjs +4 -4
  234. package/esm2022/interfaces/ISacConfigurationService.mjs +3 -3
  235. package/esm2022/interfaces/ISacFileBrowserService.mjs +3 -3
  236. package/esm2022/interfaces/ISacLabelSizes.mjs +3 -3
  237. package/esm2022/interfaces/ISacLanguageService.mjs +3 -3
  238. package/esm2022/interfaces/ISacLocalisationService.mjs +3 -3
  239. package/esm2022/interfaces/ISacUploadEventCompleteState.mjs +3 -3
  240. package/esm2022/interfaces/ISacValidationKeyService.mjs +3 -3
  241. package/esm2022/interfaces/iabstractcontrollabel.mjs +3 -3
  242. package/esm2022/interfaces/iconfirmcomponent.mjs +3 -3
  243. package/esm2022/interfaces/idatetimecontrol.mjs +3 -3
  244. package/esm2022/interfaces/iuploadcontrol.mjs +3 -3
  245. package/esm2022/interfaces/treeviewaction.interface.mjs +3 -3
  246. package/esm2022/models/languagemodel.mjs +8 -6
  247. package/esm2022/public_api.mjs +4 -4
  248. package/esm2022/services/index.mjs +3 -3
  249. package/esm2022/services/sac-configuration.service.mjs +13 -11
  250. package/esm2022/services/sac-filebrowser.service.mjs +66 -52
  251. package/esm2022/services/sac-icon.service.mjs +5 -5
  252. package/esm2022/services/sac-language.service.mjs +11 -7
  253. package/esm2022/services/sac-localisation.service.mjs +15 -11
  254. package/esm2022/services/sac-validationkey.service.mjs +108 -6
  255. package/esm2022/utilities/convertion.mjs +10 -8
  256. package/esm2022/utilities/datatypes.mjs +8 -6
  257. package/esm2022/utilities/enums.mjs +4 -10
  258. package/esm2022/utilities/guid.mjs +8 -8
  259. package/esm2022/utilities/interpolation.mjs +21 -14
  260. package/esm2022/utilities/popuphelper.mjs +52 -32
  261. package/esm2022/utilities/positioncalculator.mjs +61 -0
  262. package/esm2022/utilities/positionelements.mjs +32 -0
  263. package/esm2022/utilities/testingattribute.pipe.mjs +19 -6
  264. package/esm2022/validation/email.validator.mjs +11 -3
  265. package/esm2022/validation/equals.validator.mjs +12 -3
  266. package/esm2022/validation/index.mjs +3 -3
  267. package/esm2022/validation/invaliddate.validator.mjs +11 -3
  268. package/esm2022/validation/isDateValid.mjs +12 -10
  269. package/esm2022/validation/maxdate.validator.mjs +13 -4
  270. package/esm2022/validation/maxtime.validator.mjs +13 -4
  271. package/esm2022/validation/maxvalue.validator.mjs +12 -3
  272. package/esm2022/validation/mindate.validator.mjs +13 -4
  273. package/esm2022/validation/minfiles.validator.mjs +13 -4
  274. package/esm2022/validation/mintextlength.validator.mjs +11 -4
  275. package/esm2022/validation/mintime.validator.mjs +13 -4
  276. package/esm2022/validation/minvalue.validator.mjs +12 -3
  277. package/esm2022/validation/multilanguagerequired.validator.mjs +12 -3
  278. package/esm2022/validation/multilanguagerequiredany.validator.mjs +12 -3
  279. package/esm2022/validation/notequals.validator.mjs +12 -3
  280. package/esm2022/validation/pattern.validator.mjs +12 -3
  281. package/esm2022/validation/required.validator.mjs +11 -3
  282. package/esm2022/validation/validation.mjs +86 -102
  283. package/esm2022/validation/validationerrorcreator.mjs +13 -3
  284. package/esm2022/validation/validationerroritem.mjs +14 -12
  285. package/fesm2022/simpleangularcontrols-sac-common.mjs +2694 -2163
  286. package/fesm2022/simpleangularcontrols-sac-common.mjs.map +1 -1
  287. package/interfaces/ISacConfigurationService.d.ts +9 -1
  288. package/interfaces/ISacConfigurationService.d.ts.map +1 -1
  289. package/interfaces/ISacFileBrowserService.d.ts +43 -43
  290. package/interfaces/ISacFileBrowserService.d.ts.map +1 -1
  291. package/interfaces/ISacLabelSizes.d.ts +9 -6
  292. package/interfaces/ISacLabelSizes.d.ts.map +1 -1
  293. package/interfaces/ISacLanguageService.d.ts +3 -3
  294. package/interfaces/ISacLanguageService.d.ts.map +1 -1
  295. package/interfaces/ISacLocalisationService.d.ts +2 -2
  296. package/interfaces/ISacLocalisationService.d.ts.map +1 -1
  297. package/interfaces/ISacUploadEventCompleteState.d.ts +6 -0
  298. package/interfaces/ISacUploadEventCompleteState.d.ts.map +1 -1
  299. package/interfaces/iabstractcontrollabel.d.ts +4 -1
  300. package/interfaces/iabstractcontrollabel.d.ts.map +1 -1
  301. package/interfaces/iconfirmcomponent.d.ts +6 -6
  302. package/interfaces/iconfirmcomponent.d.ts.map +1 -1
  303. package/interfaces/idatetimecontrol.d.ts +10 -1
  304. package/interfaces/idatetimecontrol.d.ts.map +1 -1
  305. package/interfaces/iuploadcontrol.d.ts.map +1 -1
  306. package/interfaces/treeviewaction.interface.d.ts +9 -0
  307. package/interfaces/treeviewaction.interface.d.ts.map +1 -1
  308. package/models/languagemodel.d.ts +9 -9
  309. package/models/languagemodel.d.ts.map +1 -1
  310. package/package.json +1 -1
  311. package/public_api.d.ts +2 -1
  312. package/public_api.d.ts.map +1 -1
  313. package/services/index.d.ts +3 -3
  314. package/services/index.d.ts.map +1 -1
  315. package/services/sac-configuration.service.d.ts +8 -0
  316. package/services/sac-configuration.service.d.ts.map +1 -1
  317. package/services/sac-filebrowser.service.d.ts +97 -89
  318. package/services/sac-filebrowser.service.d.ts.map +1 -1
  319. package/services/sac-language.service.d.ts +2 -2
  320. package/services/sac-language.service.d.ts.map +1 -1
  321. package/services/sac-localisation.service.d.ts +11 -7
  322. package/services/sac-localisation.service.d.ts.map +1 -1
  323. package/services/sac-validationkey.service.d.ts +152 -5
  324. package/services/sac-validationkey.service.d.ts.map +1 -1
  325. package/simpleangularcontrols-sac-common-16.0.0-rc.23.tgz +0 -0
  326. package/utilities/convertion.d.ts +4 -4
  327. package/utilities/convertion.d.ts.map +1 -1
  328. package/utilities/datatypes.d.ts +3 -3
  329. package/utilities/datatypes.d.ts.map +1 -1
  330. package/utilities/enums.d.ts +8 -1
  331. package/utilities/enums.d.ts.map +1 -1
  332. package/utilities/guid.d.ts +1 -1
  333. package/utilities/guid.d.ts.map +1 -1
  334. package/utilities/interpolation.d.ts +9 -8
  335. package/utilities/interpolation.d.ts.map +1 -1
  336. package/utilities/popuphelper.d.ts +47 -10
  337. package/utilities/popuphelper.d.ts.map +1 -1
  338. package/utilities/positioncalculator.d.ts +83 -0
  339. package/utilities/positioncalculator.d.ts.map +1 -0
  340. package/utilities/positionelements.d.ts +31 -0
  341. package/utilities/positionelements.d.ts.map +1 -0
  342. package/utilities/testingattribute.pipe.d.ts +16 -1
  343. package/utilities/testingattribute.pipe.d.ts.map +1 -1
  344. package/validation/email.validator.d.ts +7 -0
  345. package/validation/email.validator.d.ts.map +1 -1
  346. package/validation/equals.validator.d.ts +8 -0
  347. package/validation/equals.validator.d.ts.map +1 -1
  348. package/validation/index.d.ts.map +1 -1
  349. package/validation/invaliddate.validator.d.ts +7 -0
  350. package/validation/invaliddate.validator.d.ts.map +1 -1
  351. package/validation/isDateValid.d.ts +5 -2
  352. package/validation/isDateValid.d.ts.map +1 -1
  353. package/validation/maxdate.validator.d.ts +8 -0
  354. package/validation/maxdate.validator.d.ts.map +1 -1
  355. package/validation/maxtime.validator.d.ts +8 -0
  356. package/validation/maxtime.validator.d.ts.map +1 -1
  357. package/validation/maxvalue.validator.d.ts +8 -0
  358. package/validation/maxvalue.validator.d.ts.map +1 -1
  359. package/validation/mindate.validator.d.ts +8 -0
  360. package/validation/mindate.validator.d.ts.map +1 -1
  361. package/validation/minfiles.validator.d.ts +8 -0
  362. package/validation/minfiles.validator.d.ts.map +1 -1
  363. package/validation/mintextlength.validator.d.ts +8 -0
  364. package/validation/mintextlength.validator.d.ts.map +1 -1
  365. package/validation/mintime.validator.d.ts +8 -0
  366. package/validation/mintime.validator.d.ts.map +1 -1
  367. package/validation/minvalue.validator.d.ts +8 -0
  368. package/validation/minvalue.validator.d.ts.map +1 -1
  369. package/validation/multilanguagerequired.validator.d.ts +9 -1
  370. package/validation/multilanguagerequired.validator.d.ts.map +1 -1
  371. package/validation/multilanguagerequiredany.validator.d.ts +9 -1
  372. package/validation/multilanguagerequiredany.validator.d.ts.map +1 -1
  373. package/validation/notequals.validator.d.ts +8 -0
  374. package/validation/notequals.validator.d.ts.map +1 -1
  375. package/validation/pattern.validator.d.ts +8 -0
  376. package/validation/pattern.validator.d.ts.map +1 -1
  377. package/validation/required.validator.d.ts +7 -0
  378. package/validation/required.validator.d.ts.map +1 -1
  379. package/validation/validation.d.ts +83 -99
  380. package/validation/validation.d.ts.map +1 -1
  381. package/validation/validationerrorcreator.d.ts +9 -0
  382. package/validation/validationerrorcreator.d.ts.map +1 -1
  383. package/validation/validationerroritem.d.ts +16 -16
  384. package/validation/validationerroritem.d.ts.map +1 -1
  385. package/esm2022/utilities/positioning.mjs +0 -58
  386. package/simpleangularcontrols-sac-common-16.0.0-rc.21.tgz +0 -0
  387. package/utilities/positioning.d.ts +0 -83
  388. package/utilities/positioning.d.ts.map +0 -1
@@ -1,24 +1,25 @@
1
- function cov_193zbqns7k(){var path="/home/runner/work/simpleangularcontrols/simpleangularcontrols/ch.jnetwork.sac-controls/dist/sac-common/esm2022/common/basedatetimecontrol.mjs";var hash="96c64c5f1f7c46705eb50731a9dde043a96feba5";var global=new Function("return this")();var gcv="__coverage__";var coverageData={path:"/home/runner/work/simpleangularcontrols/simpleangularcontrols/ch.jnetwork.sac-controls/dist/sac-common/esm2022/common/basedatetimecontrol.mjs",statementMap:{"0":{start:{line:24,column:8},end:{line:24,column:36}},"1":{start:{line:25,column:8},end:{line:25,column:37}},"2":{start:{line:26,column:8},end:{line:26,column:27}},"3":{start:{line:31,column:8},end:{line:31,column:45}},"4":{start:{line:35,column:8},end:{line:35,column:33}},"5":{start:{line:39,column:8},end:{line:39,column:47}},"6":{start:{line:43,column:8},end:{line:43,column:35}},"7":{start:{line:47,column:8},end:{line:47,column:32}},"8":{start:{line:51,column:8},end:{line:51,column:41}},"9":{start:{line:55,column:8},end:{line:55,column:46}},"10":{start:{line:59,column:8},end:{line:59,column:32}},"11":{start:{line:63,column:8},end:{line:63,column:33}},"12":{start:{line:67,column:8},end:{line:67,column:32}},"13":{start:{line:71,column:8},end:{line:71,column:30}},"14":{start:{line:75,column:8},end:{line:75,column:29}},"15":{start:{line:81,column:8},end:{line:81,column:43}},"16":{start:{line:85,column:8},end:{line:85,column:103}},"17":{start:{line:89,column:8},end:{line:89,column:117}},"18":{start:{line:93,column:8},end:{line:93,column:91}},"19":{start:{line:97,column:8},end:{line:97,column:105}},"20":{start:{line:103,column:8},end:{line:112,column:10}},"21":{start:{line:105,column:12},end:{line:107,column:13}},"22":{start:{line:106,column:16},end:{line:106,column:23}},"23":{start:{line:108,column:12},end:{line:111,column:15}},"24":{start:{line:109,column:16},end:{line:109,column:39}},"25":{start:{line:110,column:16},end:{line:110,column:38}},"26":{start:{line:120,column:8},end:{line:122,column:9}},"27":{start:{line:121,column:12},end:{line:121,column:60}},"28":{start:{line:123,column:8},end:{line:123,column:38}},"29":{start:{line:124,column:8},end:{line:124,column:31}},"30":{start:{line:125,column:8},end:{line:125,column:35}},"31":{start:{line:128,column:8},end:{line:128,column:36}},"32":{start:{line:134,column:8},end:{line:140,column:9}},"33":{start:{line:135,column:12},end:{line:135,column:39}},"34":{start:{line:138,column:25},end:{line:138,column:52}},"35":{start:{line:139,column:12},end:{line:139,column:71}},"36":{start:{line:146,column:8},end:{line:146,column:32}},"37":{start:{line:147,column:19},end:{line:147,column:73}},"38":{start:{line:148,column:8},end:{line:148,column:58}},"39":{start:{line:149,column:8},end:{line:154,column:9}},"40":{start:{line:150,column:12},end:{line:150,column:39}},"41":{start:{line:153,column:12},end:{line:153,column:30}},"42":{start:{line:156,column:8},end:{line:156,column:35}},"43":{start:{line:157,column:8},end:{line:157,column:43}},"44":{start:{line:163,column:8},end:{line:163,column:159}},"45":{start:{line:169,column:21},end:{line:169,column:40}},"46":{start:{line:170,column:21},end:{line:170,column:42}},"47":{start:{line:171,column:22},end:{line:171,column:40}},"48":{start:{line:172,column:20},end:{line:172,column:37}},"49":{start:{line:173,column:22},end:{line:173,column:40}},"50":{start:{line:174,column:24},end:{line:174,column:44}},"51":{start:{line:175,column:24},end:{line:175,column:44}},"52":{start:{line:176,column:8},end:{line:176,column:80}},"53":{start:{line:182,column:8},end:{line:182,column:69}},"54":{start:{line:188,column:8},end:{line:188,column:68}},"55":{start:{line:192,column:8},end:{line:194,column:9}},"56":{start:{line:193,column:12},end:{line:193,column:74}},"57":{start:{line:196,column:8},end:{line:196,column:73}},"58":{start:{line:197,column:8},end:{line:197,column:73}},"59":{start:{line:203,column:8},end:{line:203,column:25}},"60":{start:{line:204,column:8},end:{line:204,column:33}},"61":{start:{line:206,column:8},end:{line:206,column:70}},"62":{start:{line:207,column:8},end:{line:207,column:70}},"63":{start:{line:213,column:8},end:{line:213,column:29}},"64":{start:{line:219,column:20},end:{line:219,column:24}},"65":{start:{line:220,column:8},end:{line:225,column:9}},"66":{start:{line:221,column:12},end:{line:221,column:140}},"67":{start:{line:222,column:12},end:{line:224,column:13}},"68":{start:{line:223,column:16},end:{line:223,column:29}},"69":{start:{line:226,column:8},end:{line:226,column:125}},"70":{start:{line:227,column:8},end:{line:229,column:9}},"71":{start:{line:228,column:12},end:{line:228,column:114}},"72":{start:{line:230,column:8},end:{line:230,column:21}},"73":{start:{line:236,column:8},end:{line:244,column:9}},"74":{start:{line:238,column:12},end:{line:238,column:37}},"75":{start:{line:240,column:12},end:{line:240,column:31}},"76":{start:{line:243,column:12},end:{line:243,column:55}},"77":{start:{line:245,column:8},end:{line:245,column:38}},"78":{start:{line:250,column:8},end:{line:250,column:82}},"79":{start:{line:253,column:8},end:{line:253,column:81}},"80":{start:{line:259,column:22},end:{line:259,column:179}},"81":{start:{line:261,column:8},end:{line:266,column:9}},"82":{start:{line:262,column:12},end:{line:262,column:34}},"83":{start:{line:265,column:12},end:{line:265,column:38}},"84":{start:{line:267,column:8},end:{line:286,column:9}},"85":{start:{line:270,column:16},end:{line:270,column:86}},"86":{start:{line:271,column:16},end:{line:271,column:22}},"87":{start:{line:274,column:16},end:{line:277,column:89}},"88":{start:{line:279,column:16},end:{line:281,column:17}},"89":{start:{line:280,column:20},end:{line:280,column:56}},"90":{start:{line:282,column:16},end:{line:282,column:22}},"91":{start:{line:284,column:16},end:{line:284,column:41}},"92":{start:{line:285,column:16},end:{line:285,column:22}},"93":{start:{line:287,column:8},end:{line:287,column:21}},"94":{start:{line:293,column:22},end:{line:293,column:178}},"95":{start:{line:294,column:8},end:{line:294,column:33}},"96":{start:{line:295,column:8},end:{line:303,column:9}},"97":{start:{line:298,column:16},end:{line:298,column:68}},"98":{start:{line:299,column:16},end:{line:299,column:22}},"99":{start:{line:301,column:16},end:{line:301,column:40}},"100":{start:{line:302,column:16},end:{line:302,column:22}},"101":{start:{line:304,column:8},end:{line:304,column:21}},"102":{start:{line:308,column:8},end:{line:310,column:9}},"103":{start:{line:309,column:12},end:{line:309,column:81}},"104":{start:{line:312,column:13},end:{line:312,column:301}},"105":{start:{line:313,column:13},end:{line:313,column:940}},"106":{start:{line:316,column:0},end:{line:346,column:20}},"107":{start:{line:318,column:42},end:{line:318,column:164}}},fnMap:{"0":{name:"(anonymous_0)",decl:{start:{line:23,column:4},end:{line:23,column:5}},loc:{start:{line:23,column:57},end:{line:113,column:5}},line:23},"1":{name:"(anonymous_1)",decl:{start:{line:103,column:31},end:{line:103,column:32}},loc:{start:{line:103,column:37},end:{line:112,column:9}},line:103},"2":{name:"(anonymous_2)",decl:{start:{line:108,column:23},end:{line:108,column:24}},loc:{start:{line:108,column:29},end:{line:111,column:13}},line:108},"3":{name:"(anonymous_3)",decl:{start:{line:119,column:4},end:{line:119,column:5}},loc:{start:{line:119,column:23},end:{line:126,column:5}},line:119},"4":{name:"(anonymous_4)",decl:{start:{line:127,column:4},end:{line:127,column:5}},loc:{start:{line:127,column:18},end:{line:129,column:5}},line:127},"5":{name:"(anonymous_5)",decl:{start:{line:133,column:4},end:{line:133,column:5}},loc:{start:{line:133,column:22},end:{line:141,column:5}},line:133},"6":{name:"(anonymous_6)",decl:{start:{line:145,column:4},end:{line:145,column:5}},loc:{start:{line:145,column:23},end:{line:158,column:5}},line:145},"7":{name:"(anonymous_7)",decl:{start:{line:162,column:4},end:{line:162,column:5}},loc:{start:{line:162,column:24},end:{line:164,column:5}},line:162},"8":{name:"(anonymous_8)",decl:{start:{line:168,column:4},end:{line:168,column:5}},loc:{start:{line:168,column:23},end:{line:177,column:5}},line:168},"9":{name:"(anonymous_9)",decl:{start:{line:181,column:4},end:{line:181,column:5}},loc:{start:{line:181,column:22},end:{line:183,column:5}},line:181},"10":{name:"(anonymous_10)",decl:{start:{line:187,column:4},end:{line:187,column:5}},loc:{start:{line:187,column:21},end:{line:189,column:5}},line:187},"11":{name:"(anonymous_11)",decl:{start:{line:190,column:4},end:{line:190,column:5}},loc:{start:{line:190,column:18},end:{line:198,column:5}},line:190},"12":{name:"(anonymous_12)",decl:{start:{line:202,column:4},end:{line:202,column:5}},loc:{start:{line:202,column:15},end:{line:208,column:5}},line:202},"13":{name:"(anonymous_13)",decl:{start:{line:212,column:4},end:{line:212,column:5}},loc:{start:{line:212,column:22},end:{line:214,column:5}},line:212},"14":{name:"(anonymous_14)",decl:{start:{line:218,column:4},end:{line:218,column:5}},loc:{start:{line:218,column:20},end:{line:231,column:5}},line:218},"15":{name:"(anonymous_15)",decl:{start:{line:235,column:4},end:{line:235,column:5}},loc:{start:{line:235,column:22},end:{line:246,column:5}},line:235},"16":{name:"(anonymous_16)",decl:{start:{line:249,column:4},end:{line:249,column:5}},loc:{start:{line:249,column:21},end:{line:251,column:5}},line:249},"17":{name:"(anonymous_17)",decl:{start:{line:252,column:4},end:{line:252,column:5}},loc:{start:{line:252,column:20},end:{line:254,column:5}},line:252},"18":{name:"(anonymous_18)",decl:{start:{line:258,column:4},end:{line:258,column:5}},loc:{start:{line:258,column:22},end:{line:288,column:5}},line:258},"19":{name:"(anonymous_19)",decl:{start:{line:292,column:4},end:{line:292,column:5}},loc:{start:{line:292,column:21},end:{line:305,column:5}},line:292},"20":{name:"(anonymous_20)",decl:{start:{line:306,column:4},end:{line:306,column:5}},loc:{start:{line:306,column:24},end:{line:311,column:5}},line:306},"21":{name:"(anonymous_21)",decl:{start:{line:318,column:28},end:{line:318,column:29}},loc:{start:{line:318,column:40},end:{line:318,column:166}},line:318}},branchMap:{"0":{loc:{start:{line:105,column:12},end:{line:107,column:13}},type:"if",locations:[{start:{line:105,column:12},end:{line:107,column:13}},{start:{line:105,column:12},end:{line:107,column:13}}],line:105},"1":{loc:{start:{line:120,column:8},end:{line:122,column:9}},type:"if",locations:[{start:{line:120,column:8},end:{line:122,column:9}},{start:{line:120,column:8},end:{line:122,column:9}}],line:120},"2":{loc:{start:{line:134,column:8},end:{line:140,column:9}},type:"if",locations:[{start:{line:134,column:8},end:{line:140,column:9}},{start:{line:134,column:8},end:{line:140,column:9}}],line:134},"3":{loc:{start:{line:149,column:8},end:{line:154,column:9}},type:"if",locations:[{start:{line:149,column:8},end:{line:154,column:9}},{start:{line:149,column:8},end:{line:154,column:9}}],line:149},"4":{loc:{start:{line:192,column:8},end:{line:194,column:9}},type:"if",locations:[{start:{line:192,column:8},end:{line:194,column:9}},{start:{line:192,column:8},end:{line:194,column:9}}],line:192},"5":{loc:{start:{line:192,column:12},end:{line:192,column:69}},type:"binary-expr",locations:[{start:{line:192,column:12},end:{line:192,column:30}},{start:{line:192,column:34},end:{line:192,column:69}}],line:192},"6":{loc:{start:{line:220,column:8},end:{line:225,column:9}},type:"if",locations:[{start:{line:220,column:8},end:{line:225,column:9}},{start:{line:220,column:8},end:{line:225,column:9}}],line:220},"7":{loc:{start:{line:220,column:12},end:{line:220,column:75}},type:"binary-expr",locations:[{start:{line:220,column:12},end:{line:220,column:37}},{start:{line:220,column:41},end:{line:220,column:75}}],line:220},"8":{loc:{start:{line:222,column:12},end:{line:224,column:13}},type:"if",locations:[{start:{line:222,column:12},end:{line:224,column:13}},{start:{line:222,column:12},end:{line:224,column:13}}],line:222},"9":{loc:{start:{line:227,column:8},end:{line:229,column:9}},type:"if",locations:[{start:{line:227,column:8},end:{line:229,column:9}},{start:{line:227,column:8},end:{line:229,column:9}}],line:227},"10":{loc:{start:{line:236,column:8},end:{line:244,column:9}},type:"if",locations:[{start:{line:236,column:8},end:{line:244,column:9}},{start:{line:236,column:8},end:{line:244,column:9}}],line:236},"11":{loc:{start:{line:236,column:12},end:{line:236,column:65}},type:"binary-expr",locations:[{start:{line:236,column:12},end:{line:236,column:24}},{start:{line:236,column:28},end:{line:236,column:42}},{start:{line:236,column:46},end:{line:236,column:65}}],line:236},"12":{loc:{start:{line:250,column:15},end:{line:250,column:81}},type:"cond-expr",locations:[{start:{line:250,column:34},end:{line:250,column:77}},{start:{line:250,column:80},end:{line:250,column:81}}],line:250},"13":{loc:{start:{line:253,column:15},end:{line:253,column:80}},type:"cond-expr",locations:[{start:{line:253,column:34},end:{line:253,column:76}},{start:{line:253,column:79},end:{line:253,column:80}}],line:253},"14":{loc:{start:{line:261,column:8},end:{line:266,column:9}},type:"if",locations:[{start:{line:261,column:8},end:{line:266,column:9}},{start:{line:261,column:8},end:{line:266,column:9}}],line:261},"15":{loc:{start:{line:267,column:8},end:{line:286,column:9}},type:"switch",locations:[{start:{line:268,column:12},end:{line:268,column:37}},{start:{line:269,column:12},end:{line:271,column:22}},{start:{line:272,column:12},end:{line:272,column:40}},{start:{line:273,column:12},end:{line:282,column:22}},{start:{line:283,column:12},end:{line:285,column:22}}],line:267},"16":{loc:{start:{line:279,column:16},end:{line:281,column:17}},type:"if",locations:[{start:{line:279,column:16},end:{line:281,column:17}},{start:{line:279,column:16},end:{line:281,column:17}}],line:279},"17":{loc:{start:{line:295,column:8},end:{line:303,column:9}},type:"switch",locations:[{start:{line:296,column:12},end:{line:296,column:38}},{start:{line:297,column:12},end:{line:299,column:22}},{start:{line:300,column:12},end:{line:302,column:22}}],line:295},"18":{loc:{start:{line:308,column:8},end:{line:310,column:9}},type:"if",locations:[{start:{line:308,column:8},end:{line:310,column:9}},{start:{line:308,column:8},end:{line:310,column:9}}],line:308}},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,"64":0,"65":0,"66":0,"67":0,"68":0,"69":0,"70":0,"71":0,"72":0,"73":0,"74":0,"75":0,"76":0,"77":0,"78":0,"79":0,"80":0,"81":0,"82":0,"83":0,"84":0,"85":0,"86":0,"87":0,"88":0,"89":0,"90":0,"91":0,"92":0,"93":0,"94":0,"95":0,"96":0,"97":0,"98":0,"99":0,"100":0,"101":0,"102":0,"103":0,"104":0,"105":0,"106":0,"107":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,"19":0,"20":0,"21":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,0],"12":[0,0],"13":[0,0],"14":[0,0],"15":[0,0,0,0,0],"16":[0,0],"17":[0,0,0],"18":[0,0]},inputSourceMap:{version:3,file:"basedatetimecontrol.js",sourceRoot:"",sources:["../../../../projects/sac-common/src/common/basedatetimecontrol.ts"],names:[],mappings:"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",sourcesContent:["import { SacFormLayoutCommon } from '../controls/layout/formlayout';\nimport { IDateTimeControl } from '../interfaces/idatetimecontrol';\nimport { TooltipPosition } from '../utilities/enums';\nimport { PopUpHelper } from '../utilities/popuphelper';\nimport { Validation } from '../validation';\nimport { CreateValidationError } from '../validation/validationerrorcreator';\nimport { SacBaseModelControl } from './basemodelcontrol';\nimport { ChangeDetectorRef, Directive, ElementRef, Injector, Input, OnDestroy, OnInit, ViewChild } from '@angular/core';\nimport { AbstractControl, ValidationErrors } from '@angular/forms';\nimport { IMaskDirective } from 'angular-imask';\nimport * as moment_ from 'moment';\n\n/**\n * Base Klasse f\xFCr Date/Time Controls\n */\n@Directive()\nexport abstract class SacBaseDateTimeControl extends SacBaseModelControl<Date> implements OnInit, OnDestroy {\n // #region Properties\n\n /**\n * Helper class to display tooltip on correct position\n */\n private readonly popupHelper: PopUpHelper = new PopUpHelper();\n\n /**\n * das property enthielt das Value als string. Default ist ''\n */\n protected _valueAsString = '';\n\n /**\n * Containers for the datetime picker\n */\n protected pickercontainer: ElementRef<HTMLElement>;\n\n /**\n * Property for enum in Angular HTML template\n */\n public TooltipPosition = TooltipPosition;\n\n /**\n * Definiert ob der Date Selector angezeigt wird\n */\n public _showselector: boolean = false;\n\n /**\n * Reference to imask directive in any datetime controls\n */\n @ViewChild(IMaskDirective, { static: false })\n public iMask: IMaskDirective<any>;\n\n /**\n * Definiert das Control als Required\n */\n @Input() public isrequired: boolean = false;\n\n /**\n * Moment JS Instance\n */\n public moment = moment_['default'];\n\n /**\n * Arrow Item of Picker Element. Required to set the position of arrow correctly\n */\n public pickerPosition = TooltipPosition;\n @ViewChild('pickerarrow', { static: false })\n public pickerarrow: ElementRef<HTMLElement> | null;\n\n /**\n * Name of the container for content (e.g. icon) on which the tooltip is displayed.\n */\n @ViewChild('pickerbutton', { static: true })\n public pickerbutton: ElementRef<HTMLElement>;\n\n /**\n * TextBox Placeholder\n */\n @Input() public placeholder: string = null;\n\n /**\n * Position of the picker arrow at the left\n */\n public posArrowLeft: number | null = null;\n\n /**\n * Position of the picker arrow at the top\n */\n public posArrowTop: number | null = null;\n\n /**\n * Position of the picker at the left\n */\n public posPopupLeft: number = 0;\n\n /**\n * Position of the picker at the top\n */\n public posPopupTop: number = 0;\n\n /**\n * Position of the datetime picker. Values: left|top|right|bottom|auto\n *\n * Value 'auto' can be combined with another value.\n */\n @Input()\n public position: string = 'bottomend|topend';\n\n /**\n * Resource Key f\xFCr Validation Message DateTimeFormat bei Control\n */\n @Input() public validationmessagedatetimeformat: string = this.validationKeyService.ValidationErrorDatetimeFormat;\n\n /**\n * Resource Key f\xFCr Validation Message DateTimeFormat in Validation Summary\n */\n @Input() public validationmessagedatetimeformatsummary: string =\n this.validationKeyService.ValidationErrorSummaryDatetimeFormat;\n\n /**\n * Resource Key f\xFCr Validation Message Required bei Control\n */\n @Input() public validationmessagerequired: string = this.validationKeyService.ValidationErrorRequired;\n\n /**\n * Resource Key f\xFCr Validation Message Required in Validation Summary\n */\n @Input() public validationmessagerequiredsummary: string = this.validationKeyService.ValidationErrorSummaryRequired;\n\n // #endregion Properties\n\n // #region Constructors\n\n /**\n * Constructor\n * @param formlayout SacFormLayoutCommon to define scoped layout settings\n * @param injector Injector for injecting services\n * @param elementRef reference to html element\n */\n constructor(\n formlayout: SacFormLayoutCommon,\n injector: Injector,\n protected elementRef: ElementRef,\n private readonly cdRef: ChangeDetectorRef\n ) {\n super(formlayout, injector);\n }\n\n // #endregion Constructors\n\n // #region Public Getters And Setters\n\n /**\n * Setter for the name of the container for the tooltip. Is required as the tooltip can be hidden via ngIf.\n */\n @ViewChild('picker', { static: false })\n public set picker(picker: ElementRef) {\n if (picker !== undefined) {\n document.body.appendChild(picker.nativeElement);\n }\n\n this.pickercontainer = picker;\n this.onContentChange();\n this.cdRef.detectChanges();\n }\n\n public get tooltop(): ElementRef {\n return this.pickercontainer;\n }\n\n /**\n * getter f\xFCr valuestring\n */\n public get valuestring(): string {\n if (this.value === null) {\n return this._valueAsString;\n } else {\n const date = this.moment.utc(this.value);\n return date.local().format(this.GetDateTimeFormatString());\n }\n }\n\n /**\n * Das Input bekommt das value von typ string\n */\n @Input()\n public set valuestring(v: string) {\n this._valueAsString = v;\n let date: moment_.Moment = this.moment(v, [this.GetDateTimeFormatString()], true);\n\n date = this.ModifyParsedDateTimeValue(date).utc();\n\n if (date.isValid()) {\n this.value = date.toDate();\n } else {\n this.value = null;\n }\n\n // update imaks reference\n this.cdRef.detectChanges();\n this.iMask.maskRef.updateControl();\n }\n\n // #endregion Public Getters And Setters\n\n // #region Public Methods\n\n /**\n * Die methode returns dateTime in string\n */\n public abstract GetDateTimeFormatString(): string;\n\n /**\n * Returns the position of the tooltip\n */\n public GetPickerPosition(): TooltipPosition {\n return this.popupHelper.getDisplayPosition(\n this.pickerbutton,\n this.pickercontainer,\n this.getArrowWidth(),\n this.getArrowHeight(),\n this.position,\n false\n );\n }\n\n /**\n * Die methode modifiziert das eingegebene Value von typ Moment\n */\n public abstract ModifyParsedDateTimeValue(v: moment_.Moment): moment_.Moment;\n\n /**\n * JSON Date String in ein UTC DateTime Object konvertieren, welches vom Control verwendete werden kann\n */\n public getDate(timestamp): moment.Moment {\n const date = new Date(timestamp);\n const year = date.getUTCFullYear();\n const month = date.getUTCMonth();\n const day = date.getUTCDate();\n const hours = date.getUTCHours();\n const minutes = date.getUTCMinutes();\n const seconds = date.getUTCSeconds();\n\n return this.moment(Date.UTC(year, month, day, hours, minutes, seconds));\n }\n\n /**\n * Calculates the height of the tooltip\n */\n public getPickerHeight(): number {\n return this.popupHelper.getPopupHeight(this.pickercontainer);\n }\n\n /**\n * Calculates the width of the picker\n */\n public getPickerWidth(): number {\n return this.popupHelper.getPopupWidth(this.pickercontainer);\n }\n\n public ngOnDestroy(): void {\n // Remove Picker if is visible\n if (this._showselector && this.pickercontainer?.nativeElement) {\n document.body.removeChild(this.pickercontainer.nativeElement);\n }\n\n // Unregister Event Listener\n window.removeEventListener('scroll', this.onContentChange, true);\n window.removeEventListener('resize', this.onContentChange, true);\n }\n\n /**\n * Init Event\n */\n public ngOnInit(): void {\n super.ngOnInit();\n this.setDateTimeFormat();\n\n // Register Event Listener\n window.addEventListener('scroll', this.onContentChange, true);\n window.addEventListener('resize', this.onContentChange, true);\n }\n\n /**\n * setzt das value von typ string zu property valuestring\n */\n public setValueString(v: string) {\n this.valuestring = v;\n }\n\n /**\n * Validator\n */\n public validateData(c: AbstractControl): ValidationErrors | null {\n let error: ValidationErrors | null = null;\n\n if (this.valuestring !== null && this.valuestring.indexOf('_') >= 0) {\n error = CreateValidationError(\n 'invalidtype',\n this.validationmessagedatetimeformat,\n this.validationmessagedatetimeformatsummary\n );\n\n if (error) {\n return error;\n }\n }\n\n error = Validation.isValidDate(\n this.validationmessagedatetimeformat,\n this.validationmessagedatetimeformatsummary\n )(c);\n\n if (this.isrequired) {\n error = Validation.required(this.validationmessagerequired, this.validationmessagerequiredsummary)(c);\n }\n\n return error;\n }\n\n /**\n * Overwrite WriteValue to Set correct Date Object\n */\n public writeValue(value: Date | string) {\n if (value === '' || value === null || value === undefined) {\n // Reset Value String, damit beim Update des Models auch das Input Feld geleert wird.\n this._valueAsString = '';\n // Set Internal Property\n this._value = null;\n } else {\n this._value = this.getDate(value).toDate();\n }\n\n super.writeValue(this._value);\n }\n\n // #endregion Public Methods\n\n // #region Protected Methods\n\n protected getArrowHeight(): number {\n return this.pickerarrow ? this.pickerarrow.nativeElement.offsetHeight : 0;\n }\n\n protected getArrowWidth(): number {\n return this.pickerarrow ? this.pickerarrow.nativeElement.offsetWidth : 0;\n }\n\n /**\n * Calculates the position of the tooltip from links\n */\n protected getPositionLeft(): number {\n const value = this.popupHelper.getPositionLeft(\n this.pickerbutton,\n this.pickercontainer,\n this.elementRef,\n this.getArrowWidth(),\n this.getArrowHeight(),\n this.position,\n false\n );\n\n // Ensure that pop-ups never appear outside the visible area on the left\n if (value < 0) {\n this.posPopupLeft = 5;\n } else {\n this.posPopupLeft = value;\n }\n\n switch (this.GetPickerPosition()) {\n case TooltipPosition.top:\n case TooltipPosition.bottom:\n this.posArrowLeft = this.getPickerWidth() / 2 - -this.getArrowWidth();\n break;\n case TooltipPosition.topend:\n case TooltipPosition.bottomend:\n this.posArrowLeft =\n this.getPickerWidth() -\n this.getArrowWidth() / 2 -\n this.popupHelper.getContainerWidth(this.pickerbutton, false) / 2;\n\n // Correction by Arrow if popup is outside the left margin\n if (value < 0) {\n this.posArrowLeft -= value * -1 + 5;\n }\n break;\n default:\n this.posArrowLeft = null;\n break;\n }\n\n return value;\n }\n\n /**\n * Calculates the position of the tooltip from the top\n */\n protected getPositionTop(): number {\n const value = this.popupHelper.getPositionTop(\n this.pickerbutton,\n this.pickercontainer,\n this.elementRef,\n this.getArrowWidth(),\n this.getArrowHeight(),\n this.position,\n false\n );\n this.posPopupTop = value;\n\n switch (this.GetPickerPosition()) {\n case TooltipPosition.left:\n case TooltipPosition.right:\n this.posArrowTop = this.getPickerHeight() / 2 - 6.5;\n break;\n default:\n this.posArrowTop = null;\n break;\n }\n\n return value;\n }\n\n // #endregion Protected Methods\n\n // #region Private Methods\n\n /**\n * method if content has changed and proportions need to be reset in the UI.\n */\n private readonly onContentChange = (): void => {\n // Do nothing if is not visible\n if (!this._showselector) {\n return;\n }\n\n setTimeout(() => {\n this.getPositionLeft();\n this.getPositionTop();\n });\n };\n\n private setDateTimeFormat(): void {\n // HACK: Add addition property to FormControl. Can be fixed if solution for ticket: https://github.com/angular/angular/issues/19686\n if (this.ngControl) {\n (this.ngControl as unknown as IDateTimeControl).datetimeformatstring = this.GetDateTimeFormatString();\n }\n }\n\n // #endregion Private Methods\n}\n"]},_coverageSchema:"1a1c01bbd47fc00a2c39e90264f33305004495a9",hash:"96c64c5f1f7c46705eb50731a9dde043a96feba5"};var coverage=global[gcv]||(global[gcv]={});if(!coverage[path]||coverage[path].hash!==hash){coverage[path]=coverageData;}var actualCoverage=coverage[path];{// @ts-ignore
1
+ function cov_193zbqns7k(){var path="/home/runner/work/simpleangularcontrols/simpleangularcontrols/ch.jnetwork.sac-controls/dist/sac-common/esm2022/common/basedatetimecontrol.mjs";var hash="340a2e8202811bd3912d9f03ba55e602282a6c2a";var global=new Function("return this")();var gcv="__coverage__";var coverageData={path:"/home/runner/work/simpleangularcontrols/simpleangularcontrols/ch.jnetwork.sac-controls/dist/sac-common/esm2022/common/basedatetimecontrol.mjs",statementMap:{"0":{start:{line:25,column:8},end:{line:25,column:36}},"1":{start:{line:26,column:8},end:{line:26,column:37}},"2":{start:{line:27,column:8},end:{line:27,column:27}},"3":{start:{line:32,column:8},end:{line:32,column:45}},"4":{start:{line:36,column:8},end:{line:36,column:33}},"5":{start:{line:40,column:8},end:{line:40,column:47}},"6":{start:{line:44,column:8},end:{line:44,column:35}},"7":{start:{line:48,column:8},end:{line:48,column:32}},"8":{start:{line:52,column:8},end:{line:52,column:41}},"9":{start:{line:56,column:8},end:{line:56,column:46}},"10":{start:{line:60,column:8},end:{line:60,column:32}},"11":{start:{line:64,column:8},end:{line:64,column:33}},"12":{start:{line:68,column:8},end:{line:68,column:32}},"13":{start:{line:72,column:8},end:{line:72,column:30}},"14":{start:{line:76,column:8},end:{line:76,column:29}},"15":{start:{line:82,column:8},end:{line:82,column:43}},"16":{start:{line:86,column:8},end:{line:86,column:103}},"17":{start:{line:90,column:8},end:{line:90,column:117}},"18":{start:{line:94,column:8},end:{line:94,column:91}},"19":{start:{line:98,column:8},end:{line:98,column:105}},"20":{start:{line:104,column:8},end:{line:113,column:10}},"21":{start:{line:106,column:12},end:{line:108,column:13}},"22":{start:{line:107,column:16},end:{line:107,column:23}},"23":{start:{line:109,column:12},end:{line:112,column:15}},"24":{start:{line:110,column:16},end:{line:110,column:39}},"25":{start:{line:111,column:16},end:{line:111,column:38}},"26":{start:{line:121,column:8},end:{line:123,column:9}},"27":{start:{line:122,column:12},end:{line:122,column:60}},"28":{start:{line:124,column:8},end:{line:124,column:38}},"29":{start:{line:125,column:8},end:{line:125,column:31}},"30":{start:{line:126,column:8},end:{line:126,column:35}},"31":{start:{line:129,column:8},end:{line:129,column:36}},"32":{start:{line:135,column:8},end:{line:141,column:9}},"33":{start:{line:136,column:12},end:{line:136,column:39}},"34":{start:{line:139,column:25},end:{line:139,column:52}},"35":{start:{line:140,column:12},end:{line:140,column:71}},"36":{start:{line:147,column:8},end:{line:147,column:32}},"37":{start:{line:148,column:19},end:{line:148,column:73}},"38":{start:{line:149,column:8},end:{line:149,column:58}},"39":{start:{line:150,column:8},end:{line:155,column:9}},"40":{start:{line:151,column:12},end:{line:151,column:39}},"41":{start:{line:154,column:12},end:{line:154,column:30}},"42":{start:{line:157,column:8},end:{line:157,column:35}},"43":{start:{line:158,column:8},end:{line:158,column:41}},"44":{start:{line:159,column:8},end:{line:159,column:43}},"45":{start:{line:165,column:8},end:{line:165,column:159}},"46":{start:{line:173,column:21},end:{line:173,column:40}},"47":{start:{line:174,column:21},end:{line:174,column:42}},"48":{start:{line:175,column:22},end:{line:175,column:40}},"49":{start:{line:176,column:20},end:{line:176,column:37}},"50":{start:{line:177,column:22},end:{line:177,column:40}},"51":{start:{line:178,column:24},end:{line:178,column:44}},"52":{start:{line:179,column:24},end:{line:179,column:44}},"53":{start:{line:180,column:8},end:{line:180,column:80}},"54":{start:{line:186,column:8},end:{line:186,column:69}},"55":{start:{line:192,column:8},end:{line:192,column:68}},"56":{start:{line:201,column:8},end:{line:203,column:9}},"57":{start:{line:202,column:12},end:{line:202,column:74}},"58":{start:{line:205,column:8},end:{line:205,column:73}},"59":{start:{line:206,column:8},end:{line:206,column:73}},"60":{start:{line:212,column:8},end:{line:212,column:25}},"61":{start:{line:213,column:8},end:{line:213,column:33}},"62":{start:{line:215,column:8},end:{line:215,column:70}},"63":{start:{line:216,column:8},end:{line:216,column:70}},"64":{start:{line:223,column:8},end:{line:223,column:29}},"65":{start:{line:232,column:20},end:{line:232,column:24}},"66":{start:{line:233,column:8},end:{line:238,column:9}},"67":{start:{line:234,column:12},end:{line:234,column:140}},"68":{start:{line:235,column:12},end:{line:237,column:13}},"69":{start:{line:236,column:16},end:{line:236,column:29}},"70":{start:{line:239,column:8},end:{line:239,column:125}},"71":{start:{line:240,column:8},end:{line:242,column:9}},"72":{start:{line:241,column:12},end:{line:241,column:114}},"73":{start:{line:243,column:8},end:{line:243,column:21}},"74":{start:{line:250,column:8},end:{line:258,column:9}},"75":{start:{line:252,column:12},end:{line:252,column:37}},"76":{start:{line:254,column:12},end:{line:254,column:31}},"77":{start:{line:257,column:12},end:{line:257,column:55}},"78":{start:{line:259,column:8},end:{line:259,column:38}},"79":{start:{line:261,column:8},end:{line:261,column:35}},"80":{start:{line:262,column:8},end:{line:262,column:41}},"81":{start:{line:271,column:8},end:{line:271,column:82}},"82":{start:{line:278,column:8},end:{line:278,column:81}},"83":{start:{line:284,column:22},end:{line:284,column:179}},"84":{start:{line:286,column:8},end:{line:291,column:9}},"85":{start:{line:287,column:12},end:{line:287,column:34}},"86":{start:{line:290,column:12},end:{line:290,column:38}},"87":{start:{line:292,column:8},end:{line:311,column:9}},"88":{start:{line:295,column:16},end:{line:295,column:86}},"89":{start:{line:296,column:16},end:{line:296,column:22}},"90":{start:{line:299,column:16},end:{line:302,column:89}},"91":{start:{line:304,column:16},end:{line:306,column:17}},"92":{start:{line:305,column:20},end:{line:305,column:56}},"93":{start:{line:307,column:16},end:{line:307,column:22}},"94":{start:{line:309,column:16},end:{line:309,column:41}},"95":{start:{line:310,column:16},end:{line:310,column:22}},"96":{start:{line:312,column:8},end:{line:312,column:21}},"97":{start:{line:318,column:22},end:{line:318,column:178}},"98":{start:{line:319,column:8},end:{line:319,column:33}},"99":{start:{line:320,column:8},end:{line:328,column:9}},"100":{start:{line:323,column:16},end:{line:323,column:68}},"101":{start:{line:324,column:16},end:{line:324,column:22}},"102":{start:{line:326,column:16},end:{line:326,column:40}},"103":{start:{line:327,column:16},end:{line:327,column:22}},"104":{start:{line:329,column:8},end:{line:329,column:21}},"105":{start:{line:336,column:8},end:{line:338,column:9}},"106":{start:{line:337,column:12},end:{line:337,column:81}},"107":{start:{line:340,column:13},end:{line:340,column:301}},"108":{start:{line:341,column:13},end:{line:341,column:940}},"109":{start:{line:343,column:0},end:{line:373,column:20}},"110":{start:{line:345,column:42},end:{line:345,column:164}}},fnMap:{"0":{name:"(anonymous_0)",decl:{start:{line:24,column:4},end:{line:24,column:5}},loc:{start:{line:24,column:57},end:{line:114,column:5}},line:24},"1":{name:"(anonymous_1)",decl:{start:{line:104,column:31},end:{line:104,column:32}},loc:{start:{line:104,column:37},end:{line:113,column:9}},line:104},"2":{name:"(anonymous_2)",decl:{start:{line:109,column:23},end:{line:109,column:24}},loc:{start:{line:109,column:29},end:{line:112,column:13}},line:109},"3":{name:"(anonymous_3)",decl:{start:{line:120,column:4},end:{line:120,column:5}},loc:{start:{line:120,column:23},end:{line:127,column:5}},line:120},"4":{name:"(anonymous_4)",decl:{start:{line:128,column:4},end:{line:128,column:5}},loc:{start:{line:128,column:18},end:{line:130,column:5}},line:128},"5":{name:"(anonymous_5)",decl:{start:{line:134,column:4},end:{line:134,column:5}},loc:{start:{line:134,column:22},end:{line:142,column:5}},line:134},"6":{name:"(anonymous_6)",decl:{start:{line:146,column:4},end:{line:146,column:5}},loc:{start:{line:146,column:23},end:{line:160,column:5}},line:146},"7":{name:"(anonymous_7)",decl:{start:{line:164,column:4},end:{line:164,column:5}},loc:{start:{line:164,column:24},end:{line:166,column:5}},line:164},"8":{name:"(anonymous_8)",decl:{start:{line:172,column:4},end:{line:172,column:5}},loc:{start:{line:172,column:23},end:{line:181,column:5}},line:172},"9":{name:"(anonymous_9)",decl:{start:{line:185,column:4},end:{line:185,column:5}},loc:{start:{line:185,column:22},end:{line:187,column:5}},line:185},"10":{name:"(anonymous_10)",decl:{start:{line:191,column:4},end:{line:191,column:5}},loc:{start:{line:191,column:21},end:{line:193,column:5}},line:191},"11":{name:"(anonymous_11)",decl:{start:{line:199,column:4},end:{line:199,column:5}},loc:{start:{line:199,column:18},end:{line:207,column:5}},line:199},"12":{name:"(anonymous_12)",decl:{start:{line:211,column:4},end:{line:211,column:5}},loc:{start:{line:211,column:15},end:{line:217,column:5}},line:211},"13":{name:"(anonymous_13)",decl:{start:{line:222,column:4},end:{line:222,column:5}},loc:{start:{line:222,column:22},end:{line:224,column:5}},line:222},"14":{name:"(anonymous_14)",decl:{start:{line:231,column:4},end:{line:231,column:5}},loc:{start:{line:231,column:20},end:{line:244,column:5}},line:231},"15":{name:"(anonymous_15)",decl:{start:{line:249,column:4},end:{line:249,column:5}},loc:{start:{line:249,column:22},end:{line:263,column:5}},line:249},"16":{name:"(anonymous_16)",decl:{start:{line:270,column:4},end:{line:270,column:5}},loc:{start:{line:270,column:21},end:{line:272,column:5}},line:270},"17":{name:"(anonymous_17)",decl:{start:{line:277,column:4},end:{line:277,column:5}},loc:{start:{line:277,column:20},end:{line:279,column:5}},line:277},"18":{name:"(anonymous_18)",decl:{start:{line:283,column:4},end:{line:283,column:5}},loc:{start:{line:283,column:22},end:{line:313,column:5}},line:283},"19":{name:"(anonymous_19)",decl:{start:{line:317,column:4},end:{line:317,column:5}},loc:{start:{line:317,column:21},end:{line:330,column:5}},line:317},"20":{name:"(anonymous_20)",decl:{start:{line:334,column:4},end:{line:334,column:5}},loc:{start:{line:334,column:24},end:{line:339,column:5}},line:334},"21":{name:"(anonymous_21)",decl:{start:{line:345,column:28},end:{line:345,column:29}},loc:{start:{line:345,column:40},end:{line:345,column:166}},line:345}},branchMap:{"0":{loc:{start:{line:106,column:12},end:{line:108,column:13}},type:"if",locations:[{start:{line:106,column:12},end:{line:108,column:13}},{start:{line:106,column:12},end:{line:108,column:13}}],line:106},"1":{loc:{start:{line:121,column:8},end:{line:123,column:9}},type:"if",locations:[{start:{line:121,column:8},end:{line:123,column:9}},{start:{line:121,column:8},end:{line:123,column:9}}],line:121},"2":{loc:{start:{line:135,column:8},end:{line:141,column:9}},type:"if",locations:[{start:{line:135,column:8},end:{line:141,column:9}},{start:{line:135,column:8},end:{line:141,column:9}}],line:135},"3":{loc:{start:{line:150,column:8},end:{line:155,column:9}},type:"if",locations:[{start:{line:150,column:8},end:{line:155,column:9}},{start:{line:150,column:8},end:{line:155,column:9}}],line:150},"4":{loc:{start:{line:201,column:8},end:{line:203,column:9}},type:"if",locations:[{start:{line:201,column:8},end:{line:203,column:9}},{start:{line:201,column:8},end:{line:203,column:9}}],line:201},"5":{loc:{start:{line:201,column:12},end:{line:201,column:69}},type:"binary-expr",locations:[{start:{line:201,column:12},end:{line:201,column:30}},{start:{line:201,column:34},end:{line:201,column:69}}],line:201},"6":{loc:{start:{line:233,column:8},end:{line:238,column:9}},type:"if",locations:[{start:{line:233,column:8},end:{line:238,column:9}},{start:{line:233,column:8},end:{line:238,column:9}}],line:233},"7":{loc:{start:{line:233,column:12},end:{line:233,column:75}},type:"binary-expr",locations:[{start:{line:233,column:12},end:{line:233,column:37}},{start:{line:233,column:41},end:{line:233,column:75}}],line:233},"8":{loc:{start:{line:235,column:12},end:{line:237,column:13}},type:"if",locations:[{start:{line:235,column:12},end:{line:237,column:13}},{start:{line:235,column:12},end:{line:237,column:13}}],line:235},"9":{loc:{start:{line:240,column:8},end:{line:242,column:9}},type:"if",locations:[{start:{line:240,column:8},end:{line:242,column:9}},{start:{line:240,column:8},end:{line:242,column:9}}],line:240},"10":{loc:{start:{line:250,column:8},end:{line:258,column:9}},type:"if",locations:[{start:{line:250,column:8},end:{line:258,column:9}},{start:{line:250,column:8},end:{line:258,column:9}}],line:250},"11":{loc:{start:{line:250,column:12},end:{line:250,column:65}},type:"binary-expr",locations:[{start:{line:250,column:12},end:{line:250,column:24}},{start:{line:250,column:28},end:{line:250,column:42}},{start:{line:250,column:46},end:{line:250,column:65}}],line:250},"12":{loc:{start:{line:271,column:15},end:{line:271,column:81}},type:"cond-expr",locations:[{start:{line:271,column:34},end:{line:271,column:77}},{start:{line:271,column:80},end:{line:271,column:81}}],line:271},"13":{loc:{start:{line:278,column:15},end:{line:278,column:80}},type:"cond-expr",locations:[{start:{line:278,column:34},end:{line:278,column:76}},{start:{line:278,column:79},end:{line:278,column:80}}],line:278},"14":{loc:{start:{line:286,column:8},end:{line:291,column:9}},type:"if",locations:[{start:{line:286,column:8},end:{line:291,column:9}},{start:{line:286,column:8},end:{line:291,column:9}}],line:286},"15":{loc:{start:{line:292,column:8},end:{line:311,column:9}},type:"switch",locations:[{start:{line:293,column:12},end:{line:293,column:37}},{start:{line:294,column:12},end:{line:296,column:22}},{start:{line:297,column:12},end:{line:297,column:40}},{start:{line:298,column:12},end:{line:307,column:22}},{start:{line:308,column:12},end:{line:310,column:22}}],line:292},"16":{loc:{start:{line:304,column:16},end:{line:306,column:17}},type:"if",locations:[{start:{line:304,column:16},end:{line:306,column:17}},{start:{line:304,column:16},end:{line:306,column:17}}],line:304},"17":{loc:{start:{line:320,column:8},end:{line:328,column:9}},type:"switch",locations:[{start:{line:321,column:12},end:{line:321,column:38}},{start:{line:322,column:12},end:{line:324,column:22}},{start:{line:325,column:12},end:{line:327,column:22}}],line:320},"18":{loc:{start:{line:336,column:8},end:{line:338,column:9}},type:"if",locations:[{start:{line:336,column:8},end:{line:338,column:9}},{start:{line:336,column:8},end:{line:338,column:9}}],line:336}},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,"64":0,"65":0,"66":0,"67":0,"68":0,"69":0,"70":0,"71":0,"72":0,"73":0,"74":0,"75":0,"76":0,"77":0,"78":0,"79":0,"80":0,"81":0,"82":0,"83":0,"84":0,"85":0,"86":0,"87":0,"88":0,"89":0,"90":0,"91":0,"92":0,"93":0,"94":0,"95":0,"96":0,"97":0,"98":0,"99":0,"100":0,"101":0,"102":0,"103":0,"104":0,"105":0,"106":0,"107":0,"108":0,"109":0,"110":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,"19":0,"20":0,"21":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,0],"12":[0,0],"13":[0,0],"14":[0,0],"15":[0,0,0,0,0],"16":[0,0],"17":[0,0,0],"18":[0,0]},inputSourceMap:{version:3,file:"basedatetimecontrol.js",sourceRoot:"",sources:["../../../../projects/sac-common/src/common/basedatetimecontrol.ts"],names:[],mappings:"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",sourcesContent:["import { SacFormLayoutCommon } from '../controls/layout/formlayout';\nimport { IDateTimeControl } from '../interfaces/idatetimecontrol';\nimport { TooltipPosition } from '../utilities/enums';\nimport { PopUpHelper } from '../utilities/popuphelper';\nimport { Validation } from '../validation';\nimport { CreateValidationError } from '../validation/validationerrorcreator';\nimport { SacBaseModelControl } from './basemodelcontrol';\nimport { ChangeDetectorRef, Directive, ElementRef, Injector, Input, OnDestroy, OnInit, ViewChild } from '@angular/core';\nimport { AbstractControl, ValidationErrors } from '@angular/forms';\nimport { IMaskDirective } from 'angular-imask';\nimport * as moment_ from 'moment';\n\n/**\n * Base class for Date/Time controls\n */\n@Directive()\nexport abstract class SacBaseDateTimeControl extends SacBaseModelControl<Date> implements OnInit, OnDestroy {\n // #region Properties\n\n /**\n * Helper class to display tooltips in the correct position\n */\n private readonly popupHelper: PopUpHelper = new PopUpHelper();\n\n /**\n * This property contains the value as a string. Default is ''\n */\n protected _valueAsString = '';\n\n /**\n * Containers for the datetime picker\n */\n protected pickercontainer: ElementRef<HTMLElement>;\n\n /**\n * Property for enum in Angular HTML template\n */\n public TooltipPosition = TooltipPosition;\n\n /**\n * Defines whether the date selector is displayed\n */\n public _showselector = false;\n\n /**\n * Reference to imask directive in any datetime controls\n */\n @ViewChild(IMaskDirective, { static: false })\n public iMask: IMaskDirective<any>;\n\n /**\n * Defines the control as required\n */\n @Input() public isrequired = false;\n\n /**\n * Moment JS Instance\n */\n public moment = moment_['default'];\n\n /**\n * Arrow Item of Picker Element. Required to set the position of arrow correctly\n */\n public pickerPosition = TooltipPosition;\n\n /**\n * Reference to the picker arrow element used for calculating tooltip arrow position.\n */\n @ViewChild('pickerarrow', { static: false })\n public pickerarrow: ElementRef<HTMLElement> | null;\n\n /**\n * Name of the container for content (e.g. icon) on which the tooltip is displayed.\n */\n @ViewChild('pickerbutton', { static: true })\n public pickerbutton: ElementRef<HTMLElement>;\n\n /**\n * TextBox Placeholder\n */\n @Input() public placeholder: string = null;\n\n /**\n * Position of the picker arrow at the left\n */\n public posArrowLeft: number | null = null;\n\n /**\n * Position of the picker arrow at the top\n */\n public posArrowTop: number | null = null;\n\n /**\n * Position of the picker at the left\n */\n public posPopupLeft = 0;\n\n /**\n * Position of the picker at the top\n */\n public posPopupTop = 0;\n\n /**\n * Position of the datetime picker. Values: left|top|right|bottom|auto\n *\n * Value 'auto' can be combined with another value.\n */\n @Input()\n public position = 'bottomend|topend';\n\n /**\n * Resource Key for Validation Message DateTimeFormat at Control\n */\n @Input() public validationmessagedatetimeformat: string = this.validationKeyService.ValidationErrorDatetimeFormat;\n\n /**\n * Resource Key for Validation Message DateTimeFormat in Validation Summary\n */\n @Input() public validationmessagedatetimeformatsummary: string =\n this.validationKeyService.ValidationErrorSummaryDatetimeFormat;\n\n /**\n * Resource Key for Validation Message Required at Control\n */\n @Input() public validationmessagerequired: string = this.validationKeyService.ValidationErrorRequired;\n\n /**\n * Resource Key for Validation Message Required in Validation Summary\n */\n @Input() public validationmessagerequiredsummary: string = this.validationKeyService.ValidationErrorSummaryRequired;\n\n // #endregion Properties\n\n // #region Constructors\n\n /**\n * Constructor\n * @param formlayout SacFormLayoutCommon to define scoped layout settings\n * @param injector Injector for injecting services\n * @param elementRef Reference to html element\n * @param cdRef Change detector reference for updating component view\n */\n constructor(\n formlayout: SacFormLayoutCommon,\n injector: Injector,\n protected elementRef: ElementRef,\n private readonly cdRef: ChangeDetectorRef\n ) {\n super(formlayout, injector);\n }\n\n // #endregion Constructors\n\n // #region Public Getters And Setters\n\n /**\n * Setter for the name of the container for the tooltip. Required because the tooltip can be hidden via ngIf.\n */\n @ViewChild('picker', { static: false })\n public set picker(picker: ElementRef) {\n if (picker !== undefined) {\n document.body.appendChild(picker.nativeElement);\n }\n\n this.pickercontainer = picker;\n this.onContentChange();\n this.cdRef.detectChanges();\n }\n\n public get tooltop(): ElementRef {\n return this.pickercontainer;\n }\n\n /**\n * Getter for valuestring\n */\n public get valuestring(): string {\n if (this.value === null) {\n return this._valueAsString;\n } else {\n const date = this.moment.utc(this.value);\n return date.local().format(this.GetDateTimeFormatString());\n }\n }\n\n /**\n * The input receives the value of type string\n */\n @Input()\n public set valuestring(v: string) {\n this._valueAsString = v;\n let date: moment_.Moment = this.moment(v, [this.GetDateTimeFormatString()], true);\n\n date = this.ModifyParsedDateTimeValue(date).utc();\n\n if (date.isValid()) {\n this.value = date.toDate();\n } else {\n this.value = null;\n }\n\n // update imaks reference\n this.cdRef.detectChanges();\n this.iMask.maskRef.updateValue();\n this.iMask.maskRef.updateControl();\n }\n\n // #endregion Public Getters And Setters\n\n // #region Public Methods\n\n /**\n * The method returns dateTime as a string\n */\n public abstract GetDateTimeFormatString(): string;\n\n /**\n * Returns the position of the tooltip\n */\n public GetPickerPosition(): TooltipPosition {\n return this.popupHelper.getDisplayPosition(\n this.pickerbutton,\n this.pickercontainer,\n this.getArrowWidth(),\n this.getArrowHeight(),\n this.position,\n false\n );\n }\n\n /**\n * The method modifies the entered value of type Moment\n */\n public abstract ModifyParsedDateTimeValue(v: moment_.Moment): moment_.Moment;\n\n /**\n * Converts a JSON date string into a UTC DateTime object that can be used by the control\n * @param timestamp Date timestamp to convert\n * @returns Moment object in UTC\n */\n public getDate(timestamp): moment.Moment {\n const date = new Date(timestamp);\n const year = date.getUTCFullYear();\n const month = date.getUTCMonth();\n const day = date.getUTCDate();\n const hours = date.getUTCHours();\n const minutes = date.getUTCMinutes();\n const seconds = date.getUTCSeconds();\n\n return this.moment(Date.UTC(year, month, day, hours, minutes, seconds));\n }\n\n /**\n * Calculates the height of the tooltip\n */\n public getPickerHeight(): number {\n return this.popupHelper.getPopupHeight(this.pickercontainer);\n }\n\n /**\n * Calculates the width of the picker\n */\n public getPickerWidth(): number {\n return this.popupHelper.getPopupWidth(this.pickercontainer);\n }\n\n /**\n * Clean up resources when the control is destroyed.\n *\n * Removes the picker element from the DOM if visible and unregisters global resize/scroll listeners.\n */\n public ngOnDestroy(): void {\n // Remove Picker if is visible\n if (this._showselector && this.pickercontainer?.nativeElement) {\n document.body.removeChild(this.pickercontainer.nativeElement);\n }\n\n // Unregister Event Listener\n window.removeEventListener('scroll', this.onContentChange, true);\n window.removeEventListener('resize', this.onContentChange, true);\n }\n\n /**\n * Init Event\n */\n public ngOnInit(): void {\n super.ngOnInit();\n this.setDateTimeFormat();\n\n // Register Event Listener\n window.addEventListener('scroll', this.onContentChange, true);\n window.addEventListener('resize', this.onContentChange, true);\n }\n\n /**\n * Sets the value of type string to the property valuestring\n * @param v String value to set\n */\n public setValueString(v: string) {\n this.valuestring = v;\n }\n\n /**\n * Validates the datetime control value format and required status.\n *\n * @param c AbstractControl instance to validate.\n * @returns ValidationErrors if invalid, otherwise null.\n */\n public validateData(c: AbstractControl): ValidationErrors | null {\n let error: ValidationErrors | null = null;\n\n if (this.valuestring !== null && this.valuestring.indexOf('_') >= 0) {\n error = CreateValidationError(\n 'invalidtype',\n this.validationmessagedatetimeformat,\n this.validationmessagedatetimeformatsummary\n );\n\n if (error) {\n return error;\n }\n }\n\n error = Validation.isValidDate(\n this.validationmessagedatetimeformat,\n this.validationmessagedatetimeformatsummary\n )(c);\n\n if (this.isrequired) {\n error = Validation.required(this.validationmessagerequired, this.validationmessagerequiredsummary)(c);\n }\n\n return error;\n }\n\n /**\n * Overwrite WriteValue to Set correct Date Object\n * @param value Date or string value to write to the control\n */\n public writeValue(value: Date | string) {\n if (value === '' || value === null || value === undefined) {\n // Reset value string so that when the model is updated the input field is also cleared.\n this._valueAsString = '';\n // Set Internal Property\n this._value = null;\n } else {\n this._value = this.getDate(value).toDate();\n }\n\n super.writeValue(this._value);\n\n // force detect changes and update imask directive\n this.cdRef.detectChanges();\n this.iMask.maskRef.updateValue();\n }\n\n // #endregion Public Methods\n\n // #region Protected Methods\n\n /**\n * Gets the height of the arrow element\n * @returns The height in pixels of the arrow element, or 0 if not present\n */\n protected getArrowHeight(): number {\n return this.pickerarrow ? this.pickerarrow.nativeElement.offsetHeight : 0;\n }\n\n /**\n * Gets the width of the arrow element\n * @returns The width in pixels of the arrow element, or 0 if not present\n */\n protected getArrowWidth(): number {\n return this.pickerarrow ? this.pickerarrow.nativeElement.offsetWidth : 0;\n }\n\n /**\n * Calculates the position of the tooltip from links\n */\n protected getPositionLeft(): number {\n const value = this.popupHelper.getPositionLeft(\n this.pickerbutton,\n this.pickercontainer,\n this.elementRef,\n this.getArrowWidth(),\n this.getArrowHeight(),\n this.position,\n false\n );\n\n // Ensure that pop-ups never appear outside the visible area on the left\n if (value < 0) {\n this.posPopupLeft = 5;\n } else {\n this.posPopupLeft = value;\n }\n\n switch (this.GetPickerPosition()) {\n case TooltipPosition.top:\n case TooltipPosition.bottom:\n this.posArrowLeft = this.getPickerWidth() / 2 - -this.getArrowWidth();\n break;\n case TooltipPosition.topend:\n case TooltipPosition.bottomend:\n this.posArrowLeft =\n this.getPickerWidth() -\n this.getArrowWidth() / 2 -\n this.popupHelper.getContainerWidth(this.pickerbutton, false) / 2;\n\n // Correction by Arrow if popup is outside the left margin\n if (value < 0) {\n this.posArrowLeft -= value * -1 + 5;\n }\n break;\n default:\n this.posArrowLeft = null;\n break;\n }\n\n return value;\n }\n\n /**\n * Calculates the position of the tooltip from the top\n */\n protected getPositionTop(): number {\n const value = this.popupHelper.getPositionTop(\n this.pickerbutton,\n this.pickercontainer,\n this.elementRef,\n this.getArrowWidth(),\n this.getArrowHeight(),\n this.position,\n false\n );\n this.posPopupTop = value;\n\n switch (this.GetPickerPosition()) {\n case TooltipPosition.left:\n case TooltipPosition.right:\n this.posArrowTop = this.getPickerHeight() / 2 - 6.5;\n break;\n default:\n this.posArrowTop = null;\n break;\n }\n\n return value;\n }\n\n // #endregion Protected Methods\n\n // #region Private Methods\n\n /**\n * method if content has changed and proportions need to be reset in the UI.\n */\n private readonly onContentChange = (): void => {\n // Do nothing if is not visible\n if (!this._showselector) {\n return;\n }\n\n setTimeout(() => {\n this.getPositionLeft();\n this.getPositionTop();\n });\n };\n\n /**\n * Sets the date-time format string from the configured format property\n */\n private setDateTimeFormat(): void {\n // HACK: Add addition property to FormControl. Can be fixed if solution for ticket: https://github.com/angular/angular/issues/19686\n if (this.ngControl) {\n (this.ngControl as unknown as IDateTimeControl).datetimeformatstring = this.GetDateTimeFormatString();\n }\n }\n\n // #endregion Private Methods\n}\n"]},_coverageSchema:"1a1c01bbd47fc00a2c39e90264f33305004495a9",hash:"340a2e8202811bd3912d9f03ba55e602282a6c2a"};var coverage=global[gcv]||(global[gcv]={});if(!coverage[path]||coverage[path].hash!==hash){coverage[path]=coverageData;}var actualCoverage=coverage[path];{// @ts-ignore
2
2
  cov_193zbqns7k=function(){return actualCoverage;};}return actualCoverage;}cov_193zbqns7k();import{TooltipPosition}from'../utilities/enums';import{PopUpHelper}from'../utilities/popuphelper';import{Validation}from'../validation';import{CreateValidationError}from'../validation/validationerrorcreator';import{SacBaseModelControl}from'./basemodelcontrol';import{Directive,Input,ViewChild}from'@angular/core';import{IMaskDirective}from'angular-imask';import*as moment_ from'moment';import*as i0 from"@angular/core";import*as i1 from"../controls/layout/formlayout";/**
3
- * Base Klasse für Date/Time Controls
4
- */class SacBaseDateTimeControl extends SacBaseModelControl{// #endregion Properties
3
+ * Base class for Date/Time controls
4
+ */export class SacBaseDateTimeControl extends SacBaseModelControl{// #endregion Properties
5
5
  // #region Constructors
6
6
  /**
7
7
  * Constructor
8
8
  * @param formlayout SacFormLayoutCommon to define scoped layout settings
9
9
  * @param injector Injector for injecting services
10
- * @param elementRef reference to html element
10
+ * @param elementRef Reference to html element
11
+ * @param cdRef Change detector reference for updating component view
11
12
  */constructor(formlayout,injector,elementRef,cdRef){cov_193zbqns7k().f[0]++;cov_193zbqns7k().s[0]++;super(formlayout,injector);cov_193zbqns7k().s[1]++;this.elementRef=elementRef;cov_193zbqns7k().s[2]++;this.cdRef=cdRef;// #region Properties
12
13
  /**
13
- * Helper class to display tooltip on correct position
14
+ * Helper class to display tooltips in the correct position
14
15
  */cov_193zbqns7k().s[3]++;this.popupHelper=new PopUpHelper();/**
15
- * das property enthielt das Value als string. Default ist ''
16
+ * This property contains the value as a string. Default is ''
16
17
  */cov_193zbqns7k().s[4]++;this._valueAsString='';/**
17
18
  * Property for enum in Angular HTML template
18
19
  */cov_193zbqns7k().s[5]++;this.TooltipPosition=TooltipPosition;/**
19
- * Definiert ob der Date Selector angezeigt wird
20
+ * Defines whether the date selector is displayed
20
21
  */cov_193zbqns7k().s[6]++;this._showselector=false;/**
21
- * Definiert das Control als Required
22
+ * Defines the control as required
22
23
  */cov_193zbqns7k().s[7]++;this.isrequired=false;/**
23
24
  * Moment JS Instance
24
25
  */cov_193zbqns7k().s[8]++;this.moment=moment_['default'];/**
@@ -38,13 +39,13 @@ cov_193zbqns7k=function(){return actualCoverage;};}return actualCoverage;}cov_19
38
39
  *
39
40
  * Value 'auto' can be combined with another value.
40
41
  */cov_193zbqns7k().s[15]++;this.position='bottomend|topend';/**
41
- * Resource Key für Validation Message DateTimeFormat bei Control
42
+ * Resource Key for Validation Message DateTimeFormat at Control
42
43
  */cov_193zbqns7k().s[16]++;this.validationmessagedatetimeformat=this.validationKeyService.ValidationErrorDatetimeFormat;/**
43
- * Resource Key für Validation Message DateTimeFormat in Validation Summary
44
+ * Resource Key for Validation Message DateTimeFormat in Validation Summary
44
45
  */cov_193zbqns7k().s[17]++;this.validationmessagedatetimeformatsummary=this.validationKeyService.ValidationErrorSummaryDatetimeFormat;/**
45
- * Resource Key für Validation Message Required bei Control
46
+ * Resource Key for Validation Message Required at Control
46
47
  */cov_193zbqns7k().s[18]++;this.validationmessagerequired=this.validationKeyService.ValidationErrorRequired;/**
47
- * Resource Key für Validation Message Required in Validation Summary
48
+ * Resource Key for Validation Message Required in Validation Summary
48
49
  */cov_193zbqns7k().s[19]++;this.validationmessagerequiredsummary=this.validationKeyService.ValidationErrorSummaryRequired;// #endregion Protected Methods
49
50
  // #region Private Methods
50
51
  /**
@@ -53,41 +54,61 @@ cov_193zbqns7k=function(){return actualCoverage;};}return actualCoverage;}cov_19
53
54
  if(!this._showselector){cov_193zbqns7k().b[0][0]++;cov_193zbqns7k().s[22]++;return;}else{cov_193zbqns7k().b[0][1]++;}cov_193zbqns7k().s[23]++;setTimeout(()=>{cov_193zbqns7k().f[2]++;cov_193zbqns7k().s[24]++;this.getPositionLeft();cov_193zbqns7k().s[25]++;this.getPositionTop();});};}// #endregion Constructors
54
55
  // #region Public Getters And Setters
55
56
  /**
56
- * Setter for the name of the container for the tooltip. Is required as the tooltip can be hidden via ngIf.
57
+ * Setter for the name of the container for the tooltip. Required because the tooltip can be hidden via ngIf.
57
58
  */set picker(picker){cov_193zbqns7k().f[3]++;cov_193zbqns7k().s[26]++;if(picker!==undefined){cov_193zbqns7k().b[1][0]++;cov_193zbqns7k().s[27]++;document.body.appendChild(picker.nativeElement);}else{cov_193zbqns7k().b[1][1]++;}cov_193zbqns7k().s[28]++;this.pickercontainer=picker;cov_193zbqns7k().s[29]++;this.onContentChange();cov_193zbqns7k().s[30]++;this.cdRef.detectChanges();}get tooltop(){cov_193zbqns7k().f[4]++;cov_193zbqns7k().s[31]++;return this.pickercontainer;}/**
58
- * getter für valuestring
59
+ * Getter for valuestring
59
60
  */get valuestring(){cov_193zbqns7k().f[5]++;cov_193zbqns7k().s[32]++;if(this.value===null){cov_193zbqns7k().b[2][0]++;cov_193zbqns7k().s[33]++;return this._valueAsString;}else{cov_193zbqns7k().b[2][1]++;const date=(cov_193zbqns7k().s[34]++,this.moment.utc(this.value));cov_193zbqns7k().s[35]++;return date.local().format(this.GetDateTimeFormatString());}}/**
60
- * Das Input bekommt das value von typ string
61
+ * The input receives the value of type string
61
62
  */set valuestring(v){cov_193zbqns7k().f[6]++;cov_193zbqns7k().s[36]++;this._valueAsString=v;let date=(cov_193zbqns7k().s[37]++,this.moment(v,[this.GetDateTimeFormatString()],true));cov_193zbqns7k().s[38]++;date=this.ModifyParsedDateTimeValue(date).utc();cov_193zbqns7k().s[39]++;if(date.isValid()){cov_193zbqns7k().b[3][0]++;cov_193zbqns7k().s[40]++;this.value=date.toDate();}else{cov_193zbqns7k().b[3][1]++;cov_193zbqns7k().s[41]++;this.value=null;}// update imaks reference
62
- cov_193zbqns7k().s[42]++;this.cdRef.detectChanges();cov_193zbqns7k().s[43]++;this.iMask.maskRef.updateControl();}/**
63
+ cov_193zbqns7k().s[42]++;this.cdRef.detectChanges();cov_193zbqns7k().s[43]++;this.iMask.maskRef.updateValue();cov_193zbqns7k().s[44]++;this.iMask.maskRef.updateControl();}/**
63
64
  * Returns the position of the tooltip
64
- */GetPickerPosition(){cov_193zbqns7k().f[7]++;cov_193zbqns7k().s[44]++;return this.popupHelper.getDisplayPosition(this.pickerbutton,this.pickercontainer,this.getArrowWidth(),this.getArrowHeight(),this.position,false);}/**
65
- * JSON Date String in ein UTC DateTime Object konvertieren, welches vom Control verwendete werden kann
66
- */getDate(timestamp){cov_193zbqns7k().f[8]++;const date=(cov_193zbqns7k().s[45]++,new Date(timestamp));const year=(cov_193zbqns7k().s[46]++,date.getUTCFullYear());const month=(cov_193zbqns7k().s[47]++,date.getUTCMonth());const day=(cov_193zbqns7k().s[48]++,date.getUTCDate());const hours=(cov_193zbqns7k().s[49]++,date.getUTCHours());const minutes=(cov_193zbqns7k().s[50]++,date.getUTCMinutes());const seconds=(cov_193zbqns7k().s[51]++,date.getUTCSeconds());cov_193zbqns7k().s[52]++;return this.moment(Date.UTC(year,month,day,hours,minutes,seconds));}/**
65
+ */GetPickerPosition(){cov_193zbqns7k().f[7]++;cov_193zbqns7k().s[45]++;return this.popupHelper.getDisplayPosition(this.pickerbutton,this.pickercontainer,this.getArrowWidth(),this.getArrowHeight(),this.position,false);}/**
66
+ * Converts a JSON date string into a UTC DateTime object that can be used by the control
67
+ * @param timestamp Date timestamp to convert
68
+ * @returns Moment object in UTC
69
+ */getDate(timestamp){cov_193zbqns7k().f[8]++;const date=(cov_193zbqns7k().s[46]++,new Date(timestamp));const year=(cov_193zbqns7k().s[47]++,date.getUTCFullYear());const month=(cov_193zbqns7k().s[48]++,date.getUTCMonth());const day=(cov_193zbqns7k().s[49]++,date.getUTCDate());const hours=(cov_193zbqns7k().s[50]++,date.getUTCHours());const minutes=(cov_193zbqns7k().s[51]++,date.getUTCMinutes());const seconds=(cov_193zbqns7k().s[52]++,date.getUTCSeconds());cov_193zbqns7k().s[53]++;return this.moment(Date.UTC(year,month,day,hours,minutes,seconds));}/**
67
70
  * Calculates the height of the tooltip
68
- */getPickerHeight(){cov_193zbqns7k().f[9]++;cov_193zbqns7k().s[53]++;return this.popupHelper.getPopupHeight(this.pickercontainer);}/**
71
+ */getPickerHeight(){cov_193zbqns7k().f[9]++;cov_193zbqns7k().s[54]++;return this.popupHelper.getPopupHeight(this.pickercontainer);}/**
69
72
  * Calculates the width of the picker
70
- */getPickerWidth(){cov_193zbqns7k().f[10]++;cov_193zbqns7k().s[54]++;return this.popupHelper.getPopupWidth(this.pickercontainer);}ngOnDestroy(){cov_193zbqns7k().f[11]++;cov_193zbqns7k().s[55]++;// Remove Picker if is visible
71
- if((cov_193zbqns7k().b[5][0]++,this._showselector)&&(cov_193zbqns7k().b[5][1]++,this.pickercontainer?.nativeElement)){cov_193zbqns7k().b[4][0]++;cov_193zbqns7k().s[56]++;document.body.removeChild(this.pickercontainer.nativeElement);}else{cov_193zbqns7k().b[4][1]++;}// Unregister Event Listener
72
- cov_193zbqns7k().s[57]++;window.removeEventListener('scroll',this.onContentChange,true);cov_193zbqns7k().s[58]++;window.removeEventListener('resize',this.onContentChange,true);}/**
73
+ */getPickerWidth(){cov_193zbqns7k().f[10]++;cov_193zbqns7k().s[55]++;return this.popupHelper.getPopupWidth(this.pickercontainer);}/**
74
+ * Clean up resources when the control is destroyed.
75
+ *
76
+ * Removes the picker element from the DOM if visible and unregisters global resize/scroll listeners.
77
+ */ngOnDestroy(){cov_193zbqns7k().f[11]++;cov_193zbqns7k().s[56]++;// Remove Picker if is visible
78
+ if((cov_193zbqns7k().b[5][0]++,this._showselector)&&(cov_193zbqns7k().b[5][1]++,this.pickercontainer?.nativeElement)){cov_193zbqns7k().b[4][0]++;cov_193zbqns7k().s[57]++;document.body.removeChild(this.pickercontainer.nativeElement);}else{cov_193zbqns7k().b[4][1]++;}// Unregister Event Listener
79
+ cov_193zbqns7k().s[58]++;window.removeEventListener('scroll',this.onContentChange,true);cov_193zbqns7k().s[59]++;window.removeEventListener('resize',this.onContentChange,true);}/**
73
80
  * Init Event
74
- */ngOnInit(){cov_193zbqns7k().f[12]++;cov_193zbqns7k().s[59]++;super.ngOnInit();cov_193zbqns7k().s[60]++;this.setDateTimeFormat();// Register Event Listener
75
- cov_193zbqns7k().s[61]++;window.addEventListener('scroll',this.onContentChange,true);cov_193zbqns7k().s[62]++;window.addEventListener('resize',this.onContentChange,true);}/**
76
- * setzt das value von typ string zu property valuestring
77
- */setValueString(v){cov_193zbqns7k().f[13]++;cov_193zbqns7k().s[63]++;this.valuestring=v;}/**
78
- * Validator
79
- */validateData(c){cov_193zbqns7k().f[14]++;let error=(cov_193zbqns7k().s[64]++,null);cov_193zbqns7k().s[65]++;if((cov_193zbqns7k().b[7][0]++,this.valuestring!==null)&&(cov_193zbqns7k().b[7][1]++,this.valuestring.indexOf('_')>=0)){cov_193zbqns7k().b[6][0]++;cov_193zbqns7k().s[66]++;error=CreateValidationError('invalidtype',this.validationmessagedatetimeformat,this.validationmessagedatetimeformatsummary);cov_193zbqns7k().s[67]++;if(error){cov_193zbqns7k().b[8][0]++;cov_193zbqns7k().s[68]++;return error;}else{cov_193zbqns7k().b[8][1]++;}}else{cov_193zbqns7k().b[6][1]++;}cov_193zbqns7k().s[69]++;error=Validation.isValidDate(this.validationmessagedatetimeformat,this.validationmessagedatetimeformatsummary)(c);cov_193zbqns7k().s[70]++;if(this.isrequired){cov_193zbqns7k().b[9][0]++;cov_193zbqns7k().s[71]++;error=Validation.required(this.validationmessagerequired,this.validationmessagerequiredsummary)(c);}else{cov_193zbqns7k().b[9][1]++;}cov_193zbqns7k().s[72]++;return error;}/**
81
+ */ngOnInit(){cov_193zbqns7k().f[12]++;cov_193zbqns7k().s[60]++;super.ngOnInit();cov_193zbqns7k().s[61]++;this.setDateTimeFormat();// Register Event Listener
82
+ cov_193zbqns7k().s[62]++;window.addEventListener('scroll',this.onContentChange,true);cov_193zbqns7k().s[63]++;window.addEventListener('resize',this.onContentChange,true);}/**
83
+ * Sets the value of type string to the property valuestring
84
+ * @param v String value to set
85
+ */setValueString(v){cov_193zbqns7k().f[13]++;cov_193zbqns7k().s[64]++;this.valuestring=v;}/**
86
+ * Validates the datetime control value format and required status.
87
+ *
88
+ * @param c AbstractControl instance to validate.
89
+ * @returns ValidationErrors if invalid, otherwise null.
90
+ */validateData(c){cov_193zbqns7k().f[14]++;let error=(cov_193zbqns7k().s[65]++,null);cov_193zbqns7k().s[66]++;if((cov_193zbqns7k().b[7][0]++,this.valuestring!==null)&&(cov_193zbqns7k().b[7][1]++,this.valuestring.indexOf('_')>=0)){cov_193zbqns7k().b[6][0]++;cov_193zbqns7k().s[67]++;error=CreateValidationError('invalidtype',this.validationmessagedatetimeformat,this.validationmessagedatetimeformatsummary);cov_193zbqns7k().s[68]++;if(error){cov_193zbqns7k().b[8][0]++;cov_193zbqns7k().s[69]++;return error;}else{cov_193zbqns7k().b[8][1]++;}}else{cov_193zbqns7k().b[6][1]++;}cov_193zbqns7k().s[70]++;error=Validation.isValidDate(this.validationmessagedatetimeformat,this.validationmessagedatetimeformatsummary)(c);cov_193zbqns7k().s[71]++;if(this.isrequired){cov_193zbqns7k().b[9][0]++;cov_193zbqns7k().s[72]++;error=Validation.required(this.validationmessagerequired,this.validationmessagerequiredsummary)(c);}else{cov_193zbqns7k().b[9][1]++;}cov_193zbqns7k().s[73]++;return error;}/**
80
91
  * Overwrite WriteValue to Set correct Date Object
81
- */writeValue(value){cov_193zbqns7k().f[15]++;cov_193zbqns7k().s[73]++;if((cov_193zbqns7k().b[11][0]++,value==='')||(cov_193zbqns7k().b[11][1]++,value===null)||(cov_193zbqns7k().b[11][2]++,value===undefined)){cov_193zbqns7k().b[10][0]++;cov_193zbqns7k().s[74]++;// Reset Value String, damit beim Update des Models auch das Input Feld geleert wird.
92
+ * @param value Date or string value to write to the control
93
+ */writeValue(value){cov_193zbqns7k().f[15]++;cov_193zbqns7k().s[74]++;if((cov_193zbqns7k().b[11][0]++,value==='')||(cov_193zbqns7k().b[11][1]++,value===null)||(cov_193zbqns7k().b[11][2]++,value===undefined)){cov_193zbqns7k().b[10][0]++;cov_193zbqns7k().s[75]++;// Reset value string so that when the model is updated the input field is also cleared.
82
94
  this._valueAsString='';// Set Internal Property
83
- cov_193zbqns7k().s[75]++;this._value=null;}else{cov_193zbqns7k().b[10][1]++;cov_193zbqns7k().s[76]++;this._value=this.getDate(value).toDate();}cov_193zbqns7k().s[77]++;super.writeValue(this._value);}// #endregion Public Methods
95
+ cov_193zbqns7k().s[76]++;this._value=null;}else{cov_193zbqns7k().b[10][1]++;cov_193zbqns7k().s[77]++;this._value=this.getDate(value).toDate();}cov_193zbqns7k().s[78]++;super.writeValue(this._value);// force detect changes and update imask directive
96
+ cov_193zbqns7k().s[79]++;this.cdRef.detectChanges();cov_193zbqns7k().s[80]++;this.iMask.maskRef.updateValue();}// #endregion Public Methods
84
97
  // #region Protected Methods
85
- getArrowHeight(){cov_193zbqns7k().f[16]++;cov_193zbqns7k().s[78]++;return this.pickerarrow?(cov_193zbqns7k().b[12][0]++,this.pickerarrow.nativeElement.offsetHeight):(cov_193zbqns7k().b[12][1]++,0);}getArrowWidth(){cov_193zbqns7k().f[17]++;cov_193zbqns7k().s[79]++;return this.pickerarrow?(cov_193zbqns7k().b[13][0]++,this.pickerarrow.nativeElement.offsetWidth):(cov_193zbqns7k().b[13][1]++,0);}/**
98
+ /**
99
+ * Gets the height of the arrow element
100
+ * @returns The height in pixels of the arrow element, or 0 if not present
101
+ */getArrowHeight(){cov_193zbqns7k().f[16]++;cov_193zbqns7k().s[81]++;return this.pickerarrow?(cov_193zbqns7k().b[12][0]++,this.pickerarrow.nativeElement.offsetHeight):(cov_193zbqns7k().b[12][1]++,0);}/**
102
+ * Gets the width of the arrow element
103
+ * @returns The width in pixels of the arrow element, or 0 if not present
104
+ */getArrowWidth(){cov_193zbqns7k().f[17]++;cov_193zbqns7k().s[82]++;return this.pickerarrow?(cov_193zbqns7k().b[13][0]++,this.pickerarrow.nativeElement.offsetWidth):(cov_193zbqns7k().b[13][1]++,0);}/**
86
105
  * Calculates the position of the tooltip from links
87
- */getPositionLeft(){cov_193zbqns7k().f[18]++;const value=(cov_193zbqns7k().s[80]++,this.popupHelper.getPositionLeft(this.pickerbutton,this.pickercontainer,this.elementRef,this.getArrowWidth(),this.getArrowHeight(),this.position,false));// Ensure that pop-ups never appear outside the visible area on the left
88
- cov_193zbqns7k().s[81]++;if(value<0){cov_193zbqns7k().b[14][0]++;cov_193zbqns7k().s[82]++;this.posPopupLeft=5;}else{cov_193zbqns7k().b[14][1]++;cov_193zbqns7k().s[83]++;this.posPopupLeft=value;}cov_193zbqns7k().s[84]++;switch(this.GetPickerPosition()){case TooltipPosition.top:cov_193zbqns7k().b[15][0]++;case TooltipPosition.bottom:cov_193zbqns7k().b[15][1]++;cov_193zbqns7k().s[85]++;this.posArrowLeft=this.getPickerWidth()/2- -this.getArrowWidth();cov_193zbqns7k().s[86]++;break;case TooltipPosition.topend:cov_193zbqns7k().b[15][2]++;case TooltipPosition.bottomend:cov_193zbqns7k().b[15][3]++;cov_193zbqns7k().s[87]++;this.posArrowLeft=this.getPickerWidth()-this.getArrowWidth()/2-this.popupHelper.getContainerWidth(this.pickerbutton,false)/2;// Correction by Arrow if popup is outside the left margin
89
- cov_193zbqns7k().s[88]++;if(value<0){cov_193zbqns7k().b[16][0]++;cov_193zbqns7k().s[89]++;this.posArrowLeft-=value*-1+5;}else{cov_193zbqns7k().b[16][1]++;}cov_193zbqns7k().s[90]++;break;default:cov_193zbqns7k().b[15][4]++;cov_193zbqns7k().s[91]++;this.posArrowLeft=null;cov_193zbqns7k().s[92]++;break;}cov_193zbqns7k().s[93]++;return value;}/**
106
+ */getPositionLeft(){cov_193zbqns7k().f[18]++;const value=(cov_193zbqns7k().s[83]++,this.popupHelper.getPositionLeft(this.pickerbutton,this.pickercontainer,this.elementRef,this.getArrowWidth(),this.getArrowHeight(),this.position,false));// Ensure that pop-ups never appear outside the visible area on the left
107
+ cov_193zbqns7k().s[84]++;if(value<0){cov_193zbqns7k().b[14][0]++;cov_193zbqns7k().s[85]++;this.posPopupLeft=5;}else{cov_193zbqns7k().b[14][1]++;cov_193zbqns7k().s[86]++;this.posPopupLeft=value;}cov_193zbqns7k().s[87]++;switch(this.GetPickerPosition()){case TooltipPosition.top:cov_193zbqns7k().b[15][0]++;case TooltipPosition.bottom:cov_193zbqns7k().b[15][1]++;cov_193zbqns7k().s[88]++;this.posArrowLeft=this.getPickerWidth()/2- -this.getArrowWidth();cov_193zbqns7k().s[89]++;break;case TooltipPosition.topend:cov_193zbqns7k().b[15][2]++;case TooltipPosition.bottomend:cov_193zbqns7k().b[15][3]++;cov_193zbqns7k().s[90]++;this.posArrowLeft=this.getPickerWidth()-this.getArrowWidth()/2-this.popupHelper.getContainerWidth(this.pickerbutton,false)/2;// Correction by Arrow if popup is outside the left margin
108
+ cov_193zbqns7k().s[91]++;if(value<0){cov_193zbqns7k().b[16][0]++;cov_193zbqns7k().s[92]++;this.posArrowLeft-=value*-1+5;}else{cov_193zbqns7k().b[16][1]++;}cov_193zbqns7k().s[93]++;break;default:cov_193zbqns7k().b[15][4]++;cov_193zbqns7k().s[94]++;this.posArrowLeft=null;cov_193zbqns7k().s[95]++;break;}cov_193zbqns7k().s[96]++;return value;}/**
90
109
  * Calculates the position of the tooltip from the top
91
- */getPositionTop(){cov_193zbqns7k().f[19]++;const value=(cov_193zbqns7k().s[94]++,this.popupHelper.getPositionTop(this.pickerbutton,this.pickercontainer,this.elementRef,this.getArrowWidth(),this.getArrowHeight(),this.position,false));cov_193zbqns7k().s[95]++;this.posPopupTop=value;cov_193zbqns7k().s[96]++;switch(this.GetPickerPosition()){case TooltipPosition.left:cov_193zbqns7k().b[17][0]++;case TooltipPosition.right:cov_193zbqns7k().b[17][1]++;cov_193zbqns7k().s[97]++;this.posArrowTop=this.getPickerHeight()/2-6.5;cov_193zbqns7k().s[98]++;break;default:cov_193zbqns7k().b[17][2]++;cov_193zbqns7k().s[99]++;this.posArrowTop=null;cov_193zbqns7k().s[100]++;break;}cov_193zbqns7k().s[101]++;return value;}setDateTimeFormat(){cov_193zbqns7k().f[20]++;cov_193zbqns7k().s[102]++;// HACK: Add addition property to FormControl. Can be fixed if solution for ticket: https://github.com/angular/angular/issues/19686
92
- if(this.ngControl){cov_193zbqns7k().b[18][0]++;cov_193zbqns7k().s[103]++;this.ngControl.datetimeformatstring=this.GetDateTimeFormatString();}else{cov_193zbqns7k().b[18][1]++;}}static{cov_193zbqns7k().s[104]++;this.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"16.2.12",ngImport:i0,type:SacBaseDateTimeControl,deps:[{token:i1.SacFormLayoutCommon},{token:i0.Injector},{token:i0.ElementRef},{token:i0.ChangeDetectorRef}],target:i0.ɵɵFactoryTarget.Directive});}static{cov_193zbqns7k().s[105]++;this.ɵdir=i0.ɵɵngDeclareDirective({minVersion:"14.0.0",version:"16.2.12",type:SacBaseDateTimeControl,inputs:{isrequired:"isrequired",placeholder:"placeholder",position:"position",validationmessagedatetimeformat:"validationmessagedatetimeformat",validationmessagedatetimeformatsummary:"validationmessagedatetimeformatsummary",validationmessagerequired:"validationmessagerequired",validationmessagerequiredsummary:"validationmessagerequiredsummary",valuestring:"valuestring"},viewQueries:[{propertyName:"iMask",first:true,predicate:IMaskDirective,descendants:true},{propertyName:"pickerarrow",first:true,predicate:["pickerarrow"],descendants:true},{propertyName:"pickerbutton",first:true,predicate:["pickerbutton"],descendants:true,static:true},{propertyName:"picker",first:true,predicate:["picker"],descendants:true}],usesInheritance:true,ngImport:i0});}}export{SacBaseDateTimeControl};cov_193zbqns7k().s[106]++;i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"16.2.12",ngImport:i0,type:SacBaseDateTimeControl,decorators:[{type:Directive}],ctorParameters:function(){cov_193zbqns7k().f[21]++;cov_193zbqns7k().s[107]++;return[{type:i1.SacFormLayoutCommon},{type:i0.Injector},{type:i0.ElementRef},{type:i0.ChangeDetectorRef}];},propDecorators:{iMask:[{type:ViewChild,args:[IMaskDirective,{static:false}]}],isrequired:[{type:Input}],pickerarrow:[{type:ViewChild,args:['pickerarrow',{static:false}]}],pickerbutton:[{type:ViewChild,args:['pickerbutton',{static:true}]}],placeholder:[{type:Input}],position:[{type:Input}],validationmessagedatetimeformat:[{type:Input}],validationmessagedatetimeformatsummary:[{type:Input}],validationmessagerequired:[{type:Input}],validationmessagerequiredsummary:[{type:Input}],picker:[{type:ViewChild,args:['picker',{static:false}]}],valuestring:[{type:Input}]}});//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZWRhdGV0aW1lY29udHJvbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3NhYy1jb21tb24vc3JjL2NvbW1vbi9iYXNlZGF0ZXRpbWVjb250cm9sLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUM3RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN6RCxPQUFPLEVBQXFCLFNBQVMsRUFBd0IsS0FBSyxFQUFxQixTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFeEgsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvQyxPQUFPLEtBQUssT0FBTyxNQUFNLFFBQVEsQ0FBQzs7O0FBRWxDOztHQUVHO0FBQ0gsTUFDc0Isc0JBQXVCLFNBQVEsbUJBQXlCO0lBK0cxRSx3QkFBd0I7SUFFeEIsdUJBQXVCO0lBRXZCOzs7OztPQUtHO0lBQ0gsWUFDSSxVQUErQixFQUMvQixRQUFrQixFQUNSLFVBQXNCLEVBQ2YsS0FBd0I7UUFFekMsS0FBSyxDQUFDLFVBQVUsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUhsQixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ2YsVUFBSyxHQUFMLEtBQUssQ0FBbUI7UUE1SDdDLHFCQUFxQjtRQUVyQjs7V0FFRztRQUNjLGdCQUFXLEdBQWdCLElBQUksV0FBVyxFQUFFLENBQUM7UUFFOUQ7O1dBRUc7UUFDTyxtQkFBYyxHQUFHLEVBQUUsQ0FBQztRQU85Qjs7V0FFRztRQUNJLG9CQUFlLEdBQUcsZUFBZSxDQUFDO1FBRXpDOztXQUVH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QUFtSTtRQUNuSSxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDZixJQUFJLENBQUMsU0FBeUMsQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztTQUN6RztJQUNMLENBQUM7K0dBNWFpQixzQkFBc0I7bUdBQXRCLHNCQUFzQix5Y0ErQjdCLGNBQWM7O1NBL0JQLHNCQUFzQjs0RkFBdEIsc0JBQXNCO2tCQUQzQyxTQUFTOzBMQWlDQyxLQUFLO3NCQURYLFNBQVM7dUJBQUMsY0FBYyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFNNUIsVUFBVTtzQkFBekIsS0FBSztnQkFZQyxXQUFXO3NCQURqQixTQUFTO3VCQUFDLGFBQWEsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBT3BDLFlBQVk7c0JBRGxCLFNBQVM7dUJBQUMsY0FBYyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFNM0IsV0FBVztzQkFBMUIsS0FBSztnQkE0QkMsUUFBUTtzQkFEZCxLQUFLO2dCQU1VLCtCQUErQjtzQkFBOUMsS0FBSztnQkFLVSxzQ0FBc0M7c0JBQXJELEtBQUs7Z0JBTVUseUJBQXlCO3NCQUF4QyxLQUFLO2dCQUtVLGdDQUFnQztzQkFBL0MsS0FBSztnQkE2QkssTUFBTTtzQkFEaEIsU0FBUzt1QkFBQyxRQUFRLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQStCM0IsV0FBVztzQkFEckIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNhY0Zvcm1MYXlvdXRDb21tb24gfSBmcm9tICcuLi9jb250cm9scy9sYXlvdXQvZm9ybWxheW91dCc7XG5pbXBvcnQgeyBJRGF0ZVRpbWVDb250cm9sIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9pZGF0ZXRpbWVjb250cm9sJztcbmltcG9ydCB7IFRvb2x0aXBQb3NpdGlvbiB9IGZyb20gJy4uL3V0aWxpdGllcy9lbnVtcyc7XG5pbXBvcnQgeyBQb3BVcEhlbHBlciB9IGZyb20gJy4uL3V0aWxpdGllcy9wb3B1cGhlbHBlcic7XG5pbXBvcnQgeyBWYWxpZGF0aW9uIH0gZnJvbSAnLi4vdmFsaWRhdGlvbic7XG5pbXBvcnQgeyBDcmVhdGVWYWxpZGF0aW9uRXJyb3IgfSBmcm9tICcuLi92YWxpZGF0aW9uL3ZhbGlkYXRpb25lcnJvcmNyZWF0b3InO1xuaW1wb3J0IHsgU2FjQmFzZU1vZGVsQ29udHJvbCB9IGZyb20gJy4vYmFzZW1vZGVsY29udHJvbCc7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBJbmplY3RvciwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgVmFsaWRhdGlvbkVycm9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IElNYXNrRGlyZWN0aXZlIH0gZnJvbSAnYW5ndWxhci1pbWFzayc7XG5pbXBvcnQgKiBhcyBtb21lbnRfIGZyb20gJ21vbWVudCc7XG5cbi8qKlxuICogQmFzZSBLbGFzc2UgZsO8ciBEYXRlL1RpbWUgQ29udHJvbHNcbiAqL1xuQERpcmVjdGl2ZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgU2FjQmFzZURhdGVUaW1lQ29udHJvbCBleHRlbmRzIFNhY0Jhc2VNb2RlbENvbnRyb2w8RGF0ZT4gaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gICAgLy8gI3JlZ2lvbiBQcm9wZXJ0aWVzXG5cbiAgICAvKipcbiAgICAgKiBIZWxwZXIgY2xhc3MgdG8gZGlzcGxheSB0b29sdGlwIG9uIGNvcnJlY3QgcG9zaXRpb25cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IHBvcHVwSGVscGVyOiBQb3BVcEhlbHBlciA9IG5ldyBQb3BVcEhlbHBlcigpO1xuXG4gICAgLyoqXG4gICAgICogZGFzIHByb3BlcnR5IGVudGhpZWx0IGRhcyBWYWx1ZSBhbHMgc3RyaW5nLiBEZWZhdWx0IGlzdCAnJ1xuICAgICAqL1xuICAgIHByb3RlY3RlZCBfdmFsdWVBc1N0cmluZyA9ICcnO1xuXG4gICAgLyoqXG4gICAgICogQ29udGFpbmVycyBmb3IgdGhlIGRhdGV0aW1lIHBpY2tlclxuICAgICAqL1xuICAgIHByb3RlY3RlZCBwaWNrZXJjb250YWluZXI6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gICAgLyoqXG4gICAgICogUHJvcGVydHkgZm9yIGVudW0gaW4gQW5ndWxhciBIVE1MIHRlbXBsYXRlXG4gICAgICovXG4gICAgcHVibGljIFRvb2x0aXBQb3NpdGlvbiA9IFRvb2x0aXBQb3NpdGlvbjtcblxuICAgIC8qKlxuICAgICAqIERlZmluaWVydCBvYiBkZXIgRGF0ZSBTZWxlY3RvciBhbmdlemVpZ3Qgd2lyZFxuICAgICAqL1xuICAgIHB1YmxpYyBfc2hvd3NlbGVjdG9yOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBSZWZlcmVuY2UgdG8gaW1hc2sgZGlyZWN0aXZlIGluIGFueSBkYXRldGltZSBjb250cm9sc1xuICAgICAqL1xuICAgIEBWaWV3Q2hpbGQoSU1hc2tEaXJlY3RpdmUsIHsgc3RhdGljOiBmYWxzZSB9KVxuICAgIHB1YmxpYyBpTWFzazogSU1hc2tEaXJlY3RpdmU8YW55PjtcblxuICAgIC8qKlxuICAgICAqIERlZmluaWVydCBkYXMgQ29udHJvbCBhbHMgUmVxdWlyZWRcbiAgICAgKi9cbiAgICBASW5wdXQoKSBwdWJsaWMgaXNyZXF1aXJlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogTW9tZW50IEpTIEluc3RhbmNlXG4gICAgICovXG4gICAgcHVibGljIG1vbWVudCA9IG1vbWVudF9bJ2RlZmF1bHQnXTtcblxuICAgIC8qKlxuICAgICAqIEFycm93IEl0ZW0gb2YgUGlja2VyIEVsZW1lbnQuIFJlcXVpcmVkIHRvIHNldCB0aGUgcG9zaXRpb24gb2YgYXJyb3cgY29ycmVjdGx5XG4gICAgICovXG4gICAgcHVibGljIHBpY2tlclBvc2l0aW9uID0gVG9vbHRpcFBvc2l0aW9uO1xuICAgIEBWaWV3Q2hpbGQoJ3BpY2tlcmFycm93JywgeyBzdGF0aWM6IGZhbHNlIH0pXG4gICAgcHVibGljIHBpY2tlcmFycm93OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PiB8IG51bGw7XG5cbiAgICAvKipcbiAgICAgKiBOYW1lIG9mIHRoZSBjb250YWluZXIgZm9yIGNvbnRlbnQgKGUuZy4gaWNvbikgb24gd2hpY2ggdGhlIHRvb2x0aXAgaXMgZGlzcGxheWVkLlxuICAgICAqL1xuICAgIEBWaWV3Q2hpbGQoJ3BpY2tlcmJ1dHRvbicsIHsgc3RhdGljOiB0cnVlIH0pXG4gICAgcHVibGljIHBpY2tlcmJ1dHRvbjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG5cbiAgICAvKipcbiAgICAgKiBUZXh0Qm94IFBsYWNlaG9sZGVyXG4gICAgICovXG4gICAgQElucHV0KCkgcHVibGljIHBsYWNlaG9sZGVyOiBzdHJpbmcgPSBudWxsO1xuXG4gICAgLyoqXG4gICAgICogUG9zaXRpb24gb2YgdGhlIHBpY2tlciBhcnJvdyBhdCB0aGUgbGVmdFxuICAgICAqL1xuICAgIHB1YmxpYyBwb3NBcnJvd0xlZnQ6IG51bWJlciB8IG51bGwgPSBudWxsO1xuXG4gICAgLyoqXG4gICAgICogUG9zaXRpb24gb2YgdGhlIHBpY2tlciBhcnJvdyBhdCB0aGUgdG9wXG4gICAgICovXG4gICAgcHVibGljIHBvc0Fycm93VG9wOiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICAgIC8qKlxuICAgICAqIFBvc2l0aW9uIG9mIHRoZSBwaWNrZXIgYXQgdGhlIGxlZnRcbiAgICAgKi9cbiAgICBwdWJsaWMgcG9zUG9wdXBMZWZ0OiBudW1iZXIgPSAwO1xuXG4gICAgLyoqXG4gICAgICogUG9zaXRpb24gb2YgdGhlIHBpY2tlciBhdCB0aGUgdG9wXG4gICAgICovXG4gICAgcHVibGljIHBvc1BvcHVwVG9wOiBudW1iZXIgPSAwO1xuXG4gICAgLyoqXG4gICAgICogUG9zaXRpb24gb2YgdGhlIGRhdGV0aW1lIHBpY2tlci4gVmFsdWVzOiBsZWZ0fHRvcHxyaWdodHxib3R0b218YXV0b1xuICAgICAqXG4gICAgICogVmFsdWUgJ2F1dG8nIGNhbiBiZSBjb21iaW5lZCB3aXRoIGFub3RoZXIgdmFsdWUuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgcG9zaXRpb246IHN0cmluZyA9ICdib3R0b21lbmR8dG9wZW5kJztcblxuICAgIC8qKlxuICAgICAqIFJlc291cmNlIEtleSBmw7xyIFZhbGlkYXRpb24gTWVzc2FnZSBEYXRlVGltZUZvcm1hdCBiZWkgQ29udHJvbFxuICAgICAqL1xuICAgIEBJbnB1dCgpIHB1YmxpYyB2YWxpZGF0aW9ubWVzc2FnZWRhdGV0aW1lZm9ybWF0OiBzdHJpbmcgPSB0aGlzLnZhbGlkYXRpb25LZXlTZXJ2aWNlLlZhbGlkYXRpb25FcnJvckRhdGV0aW1lRm9ybWF0O1xuXG4gICAgLyoqXG4gICAgICogUmVzb3VyY2UgS2V5IGbDvHIgVmFsaWRhdGlvbiBNZXNzYWdlIERhdGVUaW1lRm9ybWF0IGluIFZhbGlkYXRpb24gU3VtbWFyeVxuICAgICAqL1xuICAgIEBJbnB1dCgpIHB1YmxpYyB2YWxpZGF0aW9ubWVzc2FnZWRhdGV0aW1lZm9ybWF0c3VtbWFyeTogc3RyaW5nID1cbiAgICAgICAgdGhpcy52YWxpZGF0aW9uS2V5U2VydmljZS5WYWxpZGF0aW9uRXJyb3JTdW1tYXJ5RGF0ZXRpbWVGb3JtYXQ7XG5cbiAgICAvKipcbiAgICAgKiBSZXNvdXJjZSBLZXkgZsO8ciBWYWxpZGF0aW9uIE1lc3NhZ2UgUmVxdWlyZWQgYmVpIENvbnRyb2xcbiAgICAgKi9cbiAgICBASW5wdXQoKSBwdWJsaWMgdmFsaWRhdGlvbm1lc3NhZ2VyZXF1aXJlZDogc3RyaW5nID0gdGhpcy52YWxpZGF0aW9uS2V5U2VydmljZS5WYWxpZGF0aW9uRXJyb3JSZXF1aXJlZDtcblxuICAgIC8qKlxuICAgICAqIFJlc291cmNlIEtleSBmw7xyIFZhbGlkYXRpb24gTWVzc2FnZSBSZXF1aXJlZCBpbiBWYWxpZGF0aW9uIFN1bW1hcnlcbiAgICAgKi9cbiAgICBASW5wdXQoKSBwdWJsaWMgdmFsaWRhdGlvbm1lc3NhZ2VyZXF1aXJlZHN1bW1hcnk6IHN0cmluZyA9IHRoaXMudmFsaWRhdGlvbktleVNlcnZpY2UuVmFsaWRhdGlvbkVycm9yU3VtbWFyeVJlcXVpcmVkO1xuXG4gICAgLy8gI2VuZHJlZ2lvbiBQcm9wZXJ0aWVzXG5cbiAgICAvLyAjcmVnaW9uIENvbnN0cnVjdG9yc1xuXG4gICAgLyoqXG4gICAgICogQ29uc3RydWN0b3JcbiAgICAgKiBAcGFyYW0gZm9ybWxheW91dCBTYWNGb3JtTGF5b3V0Q29tbW9uIHRvIGRlZmluZSBzY29wZWQgbGF5b3V0IHNldHRpbmdzXG4gICAgICogQHBhcmFtIGluamVjdG9yIEluamVjdG9yIGZvciBpbmplY3Rpbmcgc2VydmljZXNcbiAgICAgKiBAcGFyYW0gZWxlbWVudFJlZiByZWZlcmVuY2UgdG8gaHRtbCBlbGVtZW50XG4gICAgICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIGZvcm1sYXlvdXQ6IFNhY0Zvcm1MYXlvdXRDb21tb24sXG4gICAgICAgIGluamVjdG9yOiBJbmplY3RvcixcbiAgICAgICAgcHJvdGVjdGVkIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgY2RSZWY6IENoYW5nZURldGVjdG9yUmVmXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKGZvcm1sYXlvdXQsIGluamVjdG9yKTtcbiAgICB9XG5cbiAgICAvLyAjZW5kcmVnaW9uIENvbnN0cnVjdG9yc1xuXG4gICAgLy8gI3JlZ2lvbiBQdWJsaWMgR2V0dGVycyBBbmQgU2V0dGVyc1xuXG4gICAgLyoqXG4gICAgICogU2V0dGVyIGZvciB0aGUgbmFtZSBvZiB0aGUgY29udGFpbmVyIGZvciB0aGUgdG9vbHRpcC4gSXMgcmVxdWlyZWQgYXMgdGhlIHRvb2x0aXAgY2FuIGJlIGhpZGRlbiB2aWEgbmdJZi5cbiAgICAgKi9cbiAgICBAVmlld0NoaWxkKCdwaWNrZXInLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgICBwdWJsaWMgc2V0IHBpY2tlcihwaWNrZXI6IEVsZW1lbnRSZWYpIHtcbiAgICAgICAgaWYgKHBpY2tlciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHBpY2tlci5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucGlja2VyY29udGFpbmVyID0gcGlja2VyO1xuICAgICAgICB0aGlzLm9uQ29udGVudENoYW5nZSgpO1xuICAgICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHRvb2x0b3AoKTogRWxlbWVudFJlZiB7XG4gICAgICAgIHJldHVybiB0aGlzLnBpY2tlcmNvbnRhaW5lcjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBnZXR0ZXIgZsO8ciB2YWx1ZXN0cmluZ1xuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgdmFsdWVzdHJpbmcoKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKHRoaXMudmFsdWUgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl92YWx1ZUFzU3RyaW5nO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgZGF0ZSA9IHRoaXMubW9tZW50LnV0Yyh0aGlzLnZhbHVlKTtcbiAgICAgICAgICAgIHJldHVybiBkYXRlLmxvY2FsKCkuZm9ybWF0KHRoaXMuR2V0RGF0ZVRpbWVGb3JtYXRTdHJpbmcoKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEYXMgSW5wdXQgYmVrb21tdCBkYXMgdmFsdWUgdm9uIHR5cCBzdHJpbmdcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzZXQgdmFsdWVzdHJpbmcodjogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuX3ZhbHVlQXNTdHJpbmcgPSB2O1xuICAgICAgICBsZXQgZGF0ZTogbW9tZW50Xy5Nb21lbnQgPSB0aGlzLm1vbWVudCh2LCBbdGhpcy5HZXREYXRlVGltZUZvcm1hdFN0cmluZygpXSwgdHJ1ZSk7XG5cbiAgICAgICAgZGF0ZSA9IHRoaXMuTW9kaWZ5UGFyc2VkRGF0ZVRpbWVWYWx1ZShkYXRlKS51dGMoKTtcblxuICAgICAgICBpZiAoZGF0ZS5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSBkYXRlLnRvRGF0ZSgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICAvLyB1cGRhdGUgaW1ha3MgcmVmZXJlbmNlXG4gICAgICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB0aGlzLmlNYXNrLm1hc2tSZWYudXBkYXRlQ29udHJvbCgpO1xuICAgIH1cblxuICAgIC8vICNlbmRyZWdpb24gUHVibGljIEdldHRlcnMgQW5kIFNldHRlcnNcblxuICAgIC8vICNyZWdpb24gUHVibGljIE1ldGhvZHNcblxuICAgIC8qKlxuICAgICAqIERpZSBtZXRob2RlIHJldHVybnMgZGF0ZVRpbWUgaW4gc3RyaW5nXG4gICAgICovXG4gICAgcHVibGljIGFic3RyYWN0IEdldERhdGVUaW1lRm9ybWF0U3RyaW5nKCk6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIHBvc2l0aW9uIG9mIHRoZSB0b29sdGlwXG4gICAgICovXG4gICAgcHVibGljIEdldFBpY2tlclBvc2l0aW9uKCk6IFRvb2x0aXBQb3NpdGlvbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnBvcHVwSGVscGVyLmdldERpc3BsYXlQb3NpdGlvbihcbiAgICAgICAgICAgIHRoaXMucGlja2VyYnV0dG9uLFxuICAgICAgICAgICAgdGhpcy5waWNrZXJjb250YWluZXIsXG4gICAgICAgICAgICB0aGlzLmdldEFycm93V2lkdGgoKSxcbiAgICAgICAgICAgIHRoaXMuZ2V0QXJyb3dIZWlnaHQoKSxcbiAgICAgICAgICAgIHRoaXMucG9zaXRpb24sXG4gICAgICAgICAgICBmYWxzZVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERpZSBtZXRob2RlIG1vZGlmaXppZXJ0IGRhcyBlaW5nZWdlYmVuZSBWYWx1ZSB2b24gdHlwIE1vbWVudFxuICAgICAqL1xuICAgIHB1YmxpYyBhYnN0cmFjdCBNb2RpZnlQYXJzZWREYXRlVGltZVZhbHVlKHY6IG1vbWVudF8uTW9tZW50KTogbW9tZW50Xy5Nb21lbnQ7XG5cbiAgICAvKipcbiAgICAgKiBKU09OIERhdGUgU3RyaW5nIGluIGVpbiBVVEMgRGF0ZVRpbWUgT2JqZWN0IGtvbnZlcnRpZXJlbiwgd2VsY2hlcyB2b20gQ29udHJvbCB2ZXJ3ZW5kZXRlIHdlcmRlbiBrYW5uXG4gICAgICovXG4gICAgcHVibGljIGdldERhdGUodGltZXN0YW1wKTogbW9tZW50Lk1vbWVudCB7XG4gICAgICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSh0aW1lc3RhbXApO1xuICAgICAgICBjb25zdCB5ZWFyID0gZGF0ZS5nZXRVVENGdWxsWWVhcigpO1xuICAgICAgICBjb25zdCBtb250aCA9IGRhdGUuZ2V0VVRDTW9udGgoKTtcbiAgICAgICAgY29uc3QgZGF5ID0gZGF0ZS5nZXRVVENEYXRlKCk7XG4gICAgICAgIGNvbnN0IGhvdXJzID0gZGF0ZS5nZXRVVENIb3VycygpO1xuICAgICAgICBjb25zdCBtaW51dGVzID0gZGF0ZS5nZXRVVENNaW51dGVzKCk7XG4gICAgICAgIGNvbnN0IHNlY29uZHMgPSBkYXRlLmdldFVUQ1NlY29uZHMoKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5tb21lbnQoRGF0ZS5VVEMoeWVhciwgbW9udGgsIGRheSwgaG91cnMsIG1pbnV0ZXMsIHNlY29uZHMpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDYWxjdWxhdGVzIHRoZSBoZWlnaHQgb2YgdGhlIHRvb2x0aXBcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0UGlja2VySGVpZ2h0KCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLnBvcHVwSGVscGVyLmdldFBvcHVwSGVpZ2h0KHRoaXMucGlja2VyY29udGFpbmVyKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDYWxjdWxhdGVzIHRoZSB3aWR0aCBvZiB0aGUgcGlja2VyXG4gICAgICovXG4gICAgcHVibGljIGdldFBpY2tlcldpZHRoKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLnBvcHVwSGVscGVyLmdldFBvcHVwV2lkdGgodGhpcy5waWNrZXJjb250YWluZXIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgLy8gUmVtb3ZlIFBpY2tlciBpZiBpcyB2aXNpYmxlXG4gICAgICAgIGlmICh0aGlzLl9zaG93c2VsZWN0b3IgJiYgdGhpcy5waWNrZXJjb250YWluZXI/Lm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQodGhpcy5waWNrZXJjb250YWluZXIubmF0aXZlRWxlbWVudCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBVbnJlZ2lzdGVyIEV2ZW50IExpc3RlbmVyXG4gICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB0aGlzLm9uQ29udGVudENoYW5nZSwgdHJ1ZSk7XG4gICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLm9uQ29udGVudENoYW5nZSwgdHJ1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSW5pdCBFdmVudFxuICAgICAqL1xuICAgIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICAgICAgdGhpcy5zZXREYXRlVGltZUZvcm1hdCgpO1xuXG4gICAgICAgIC8vIFJlZ2lzdGVyIEV2ZW50IExpc3RlbmVyXG4gICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB0aGlzLm9uQ29udGVudENoYW5nZSwgdHJ1ZSk7XG4gICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLm9uQ29udGVudENoYW5nZSwgdHJ1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogc2V0enQgZGFzIHZhbHVlIHZvbiB0eXAgc3RyaW5nIHp1IHByb3BlcnR5IHZhbHVlc3RyaW5nXG4gICAgICovXG4gICAgcHVibGljIHNldFZhbHVlU3RyaW5nKHY6IHN0cmluZykge1xuICAgICAgICB0aGlzLnZhbHVlc3RyaW5nID0gdjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBWYWxpZGF0b3JcbiAgICAgKi9cbiAgICBwdWJsaWMgdmFsaWRhdGVEYXRhKGM6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgICAgICAgbGV0IGVycm9yOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9IG51bGw7XG5cbiAgICAgICAgaWYgKHRoaXMudmFsdWVzdHJpbmcgIT09IG51bGwgJiYgdGhpcy52YWx1ZXN0cmluZy5pbmRleE9mKCdfJykgPj0gMCkge1xuICAgICAgICAgICAgZXJyb3IgPSBDcmVhdGVWYWxpZGF0aW9uRXJyb3IoXG4gICAgICAgICAgICAgICAgJ2ludmFsaWR0eXBlJyxcbiAgICAgICAgICAgICAgICB0aGlzLnZhbGlkYXRpb25tZXNzYWdlZGF0ZXRpbWVmb3JtYXQsXG4gICAgICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9ubWVzc2FnZWRhdGV0aW1lZm9ybWF0c3VtbWFyeVxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgZXJyb3IgPSBWYWxpZGF0aW9uLmlzVmFsaWREYXRlKFxuICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9ubWVzc2FnZWRhdGV0aW1lZm9ybWF0LFxuICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9ubWVzc2FnZWRhdGV0aW1lZm9ybWF0c3VtbWFyeVxuICAgICAgICApKGMpO1xuXG4gICAgICAgIGlmICh0aGlzLmlzcmVxdWlyZWQpIHtcbiAgICAgICAgICAgIGVycm9yID0gVmFsaWRhdGlvbi5yZXF1aXJlZCh0aGlzLnZhbGlkYXRpb25tZXNzYWdlcmVxdWlyZWQsIHRoaXMudmFsaWRhdGlvbm1lc3NhZ2VyZXF1aXJlZHN1bW1hcnkpKGMpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGVycm9yO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE92ZXJ3cml0ZSBXcml0ZVZhbHVlIHRvIFNldCBjb3JyZWN0IERhdGUgT2JqZWN0XG4gICAgICovXG4gICAgcHVibGljIHdyaXRlVmFsdWUodmFsdWU6IERhdGUgfCBzdHJpbmcpIHtcbiAgICAgICAgaWYgKHZhbHVlID09PSAnJyB8fCB2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAvLyBSZXNldCBWYWx1ZSBTdHJpbmcsIGRhbWl0IGJlaW0gVXBkYXRlIGRlcyBNb2RlbHMgYXVjaCBkYXMgSW5wdXQgRmVsZCBnZWxlZXJ0IHdpcmQuXG4gICAgICAgICAgICB0aGlzLl92YWx1ZUFzU3RyaW5nID0gJyc7XG4gICAgICAgICAgICAvLyBTZXQgSW50ZXJuYWwgUHJvcGVydHlcbiAgICAgICAgICAgIHRoaXMuX3ZhbHVlID0gbnVsbDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX3ZhbHVlID0gdGhpcy5nZXREYXRlKHZhbHVlKS50b0RhdGUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHN1cGVyLndyaXRlVmFsdWUodGhpcy5fdmFsdWUpO1xuICAgIH1cblxuICAgIC8vICNlbmRyZWdpb24gUHVibGljIE1ldGhvZHNcblxuICAgIC8vICNyZWdpb24gUHJvdGVjdGVkIE1ldGhvZHNcblxuICAgIHByb3RlY3RlZCBnZXRBcnJvd0hlaWdodCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5waWNrZXJhcnJvdyA/IHRoaXMucGlja2VyYXJyb3cubmF0aXZlRWxlbWVudC5vZmZzZXRIZWlnaHQgOiAwO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXRBcnJvd1dpZHRoKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLnBpY2tlcmFycm93ID8gdGhpcy5waWNrZXJhcnJvdy5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoIDogMDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDYWxjdWxhdGVzIHRoZSBwb3NpdGlvbiBvZiB0aGUgdG9vbHRpcCBmcm9tIGxpbmtzXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGdldFBvc2l0aW9uTGVmdCgpOiBudW1iZXIge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMucG9wdXBIZWxwZXIuZ2V0UG9zaXRpb25MZWZ0KFxuICAgICAgICAgICAgdGhpcy5waWNrZXJidXR0b24sXG4gICAgICAgICAgICB0aGlzLnBpY2tlcmNvbnRhaW5lcixcbiAgICAgICAgICAgIHRoaXMuZWxlbWVudFJlZixcbiAgICAgICAgICAgIHRoaXMuZ2V0QXJyb3dXaWR0aCgpLFxuICAgICAgICAgICAgdGhpcy5nZXRBcnJvd0hlaWdodCgpLFxuICAgICAgICAgICAgdGhpcy5wb3NpdGlvbixcbiAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICk7XG5cbiAgICAgICAgLy8gRW5zdXJlIHRoYXQgcG9wLXVwcyBuZXZlciBhcHBlYXIgb3V0c2lkZSB0aGUgdmlzaWJsZSBhcmVhIG9uIHRoZSBsZWZ0XG4gICAgICAgIGlmICh2YWx1ZSA8IDApIHtcbiAgICAgICAgICAgIHRoaXMucG9zUG9wdXBMZWZ0ID0gNTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucG9zUG9wdXBMZWZ0ID0gdmFsdWU7XG4gICAgICAgIH1cblxuICAgICAgICBzd2l0Y2ggKHRoaXMuR2V0UGlja2VyUG9zaXRpb24oKSkge1xuICAgICAgICAgICAgY2FzZSBUb29sdGlwUG9zaXRpb24udG9wOlxuICAgICAgICAgICAgY2FzZSBUb29sdGlwUG9zaXRpb24uYm90dG9tOlxuICAgICAgICAgICAgICAgIHRoaXMucG9zQXJyb3dMZWZ0ID0gdGhpcy5nZXRQaWNrZXJXaWR0aCgpIC8gMiAtIC10aGlzLmdldEFycm93V2lkdGgoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgVG9vbHRpcFBvc2l0aW9uLnRvcGVuZDpcbiAgICAgICAgICAgIGNhc2UgVG9vbHRpcFBvc2l0aW9uLmJvdHRvbWVuZDpcbiAgICAgICAgICAgICAgICB0aGlzLnBvc0Fycm93TGVmdCA9XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0UGlja2VyV2lkdGgoKSAtXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0QXJyb3dXaWR0aCgpIC8gMiAtXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucG9wdXBIZWxwZXIuZ2V0Q29udGFpbmVyV2lkdGgodGhpcy5waWNrZXJidXR0b24sIGZhbHNlKSAvIDI7XG5cbiAgICAgICAgICAgICAgICAvLyBDb3JyZWN0aW9uIGJ5IEFycm93IGlmIHBvcHVwIGlzIG91dHNpZGUgdGhlIGxlZnQgbWFyZ2luXG4gICAgICAgICAgICAgICAgaWYgKHZhbHVlIDwgMCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnBvc0Fycm93TGVmdCAtPSB2YWx1ZSAqIC0xICsgNTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHRoaXMucG9zQXJyb3dMZWZ0ID0gbnVsbDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDYWxjdWxhdGVzIHRoZSBwb3NpdGlvbiBvZiB0aGUgdG9vbHRpcCBmcm9tIHRoZSB0b3BcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgZ2V0UG9zaXRpb25Ub3AoKTogbnVtYmVyIHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLnBvcHVwSGVscGVyLmdldFBvc2l0aW9uVG9wKFxuICAgICAgICAgICAgdGhpcy5waWNrZXJidXR0b24sXG4gICAgICAgICAgICB0aGlzLnBpY2tlcmNvbnRhaW5lcixcbiAgICAgICAgICAgIHRoaXMuZWxlbWVudFJlZixcbiAgICAgICAgICAgIHRoaXMuZ2V0QXJyb3dXaWR0aCgpLFxuICAgICAgICAgICAgdGhpcy5nZXRBcnJvd0hlaWdodCgpLFxuICAgICAgICAgICAgdGhpcy5wb3NpdGlvbixcbiAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMucG9zUG9wdXBUb3AgPSB2YWx1ZTtcblxuICAgICAgICBzd2l0Y2ggKHRoaXMuR2V0UGlja2VyUG9zaXRpb24oKSkge1xuICAgICAgICAgICAgY2FzZSBUb29sdGlwUG9zaXRpb24ubGVmdDpcbiAgICAgICAgICAgIGNhc2UgVG9vbHRpcFBvc2l0aW9uLnJpZ2h0OlxuICAgICAgICAgICAgICAgIHRoaXMucG9zQXJyb3dUb3AgPSB0aGlzLmdldFBpY2tlckhlaWdodCgpIC8gMiAtIDYuNTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgdGhpcy5wb3NBcnJvd1RvcCA9IG51bGw7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgLy8gI2VuZHJlZ2lvbiBQcm90ZWN0ZWQgTWV0aG9kc1xuXG4gICAgLy8gI3JlZ2lvbiBQcml2YXRlIE1ldGhvZHNcblxuICAgIC8qKlxuICAgICAqIG1ldGhvZCBpZiBjb250ZW50IGhhcyBjaGFuZ2VkIGFuZCBwcm9wb3J0aW9ucyBuZWVkIHRvIGJlIHJlc2V0IGluIHRoZSBVSS5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IG9uQ29udGVudENoYW5nZSA9ICgpOiB2b2lkID0+IHtcbiAgICAgICAgLy8gRG8gbm90aGluZyBpZiBpcyBub3QgdmlzaWJsZVxuICAgICAgICBpZiAoIXRoaXMuX3Nob3dzZWxlY3Rvcikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmdldFBvc2l0aW9uTGVmdCgpO1xuICAgICAgICAgICAgdGhpcy5nZXRQb3NpdGlvblRvcCgpO1xuICAgICAgICB9KTtcbiAgICB9O1xuXG4gICAgcHJpdmF0ZSBzZXREYXRlVGltZUZvcm1hdCgpOiB2b2lkIHtcbiAgICAgICAgLy8gSEFDSzogQWRkIGFkZGl0aW9uIHByb3BlcnR5IHRvIEZvcm1Db250cm9sLiBDYW4gYmUgZml4ZWQgaWYgc29sdXRpb24gZm9yIHRpY2tldDogaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9pc3N1ZXMvMTk2ODZcbiAgICAgICAgaWYgKHRoaXMubmdDb250cm9sKSB7XG4gICAgICAgICAgICAodGhpcy5uZ0NvbnRyb2wgYXMgdW5rbm93biBhcyBJRGF0ZVRpbWVDb250cm9sKS5kYXRldGltZWZvcm1hdHN0cmluZyA9IHRoaXMuR2V0RGF0ZVRpbWVGb3JtYXRTdHJpbmcoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vICNlbmRyZWdpb24gUHJpdmF0ZSBNZXRob2RzXG59XG4iXX0=
93
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb3ZfMTkzemJxbnM3ayIsImFjdHVhbENvdmVyYWdlIiwiVG9vbHRpcFBvc2l0aW9uIiwiUG9wVXBIZWxwZXIiLCJWYWxpZGF0aW9uIiwiQ3JlYXRlVmFsaWRhdGlvbkVycm9yIiwiU2FjQmFzZU1vZGVsQ29udHJvbCIsIkRpcmVjdGl2ZSIsIklucHV0IiwiVmlld0NoaWxkIiwiSU1hc2tEaXJlY3RpdmUiLCJtb21lbnRfIiwiU2FjQmFzZURhdGVUaW1lQ29udHJvbCIsImNvbnN0cnVjdG9yIiwiZm9ybWxheW91dCIsImluamVjdG9yIiwiZWxlbWVudFJlZiIsImNkUmVmIiwiZiIsInMiLCJwb3B1cEhlbHBlciIsIl92YWx1ZUFzU3RyaW5nIiwiX3Nob3dzZWxlY3RvciIsImlzcmVxdWlyZWQiLCJtb21lbnQiLCJwaWNrZXJQb3NpdGlvbiIsInBsYWNlaG9sZGVyIiwicG9zQXJyb3dMZWZ0IiwicG9zQXJyb3dUb3AiLCJwb3NQb3B1cExlZnQiLCJwb3NQb3B1cFRvcCIsInBvc2l0aW9uIiwidmFsaWRhdGlvbm1lc3NhZ2VkYXRldGltZWZvcm1hdCIsInZhbGlkYXRpb25LZXlTZXJ2aWNlIiwiVmFsaWRhdGlvbkVycm9yRGF0ZXRpbWVGb3JtYXQiLCJ2YWxpZGF0aW9ubWVzc2FnZWRhdGV0aW1lZm9ybWF0c3VtbWFyeSIsIlZhbGlkYXRpb25FcnJvclN1bW1hcnlEYXRldGltZUZvcm1hdCIsInZhbGlkYXRpb25tZXNzYWdlcmVxdWlyZWQiLCJWYWxpZGF0aW9uRXJyb3JSZXF1aXJlZCIsInZhbGlkYXRpb25tZXNzYWdlcmVxdWlyZWRzdW1tYXJ5IiwiVmFsaWRhdGlvbkVycm9yU3VtbWFyeVJlcXVpcmVkIiwib25Db250ZW50Q2hhbmdlIiwiYiIsInNldFRpbWVvdXQiLCJnZXRQb3NpdGlvbkxlZnQiLCJnZXRQb3NpdGlvblRvcCIsInBpY2tlciIsInVuZGVmaW5lZCIsImRvY3VtZW50IiwiYm9keSIsImFwcGVuZENoaWxkIiwibmF0aXZlRWxlbWVudCIsInBpY2tlcmNvbnRhaW5lciIsImRldGVjdENoYW5nZXMiLCJ0b29sdG9wIiwidmFsdWVzdHJpbmciLCJ2YWx1ZSIsImRhdGUiLCJ1dGMiLCJsb2NhbCIsImZvcm1hdCIsIkdldERhdGVUaW1lRm9ybWF0U3RyaW5nIiwidiIsIk1vZGlmeVBhcnNlZERhdGVUaW1lVmFsdWUiLCJpc1ZhbGlkIiwidG9EYXRlIiwiaU1hc2siLCJtYXNrUmVmIiwidXBkYXRlQ29udHJvbCIsIkdldFBpY2tlclBvc2l0aW9uIiwiZ2V0RGlzcGxheVBvc2l0aW9uIiwicGlja2VyYnV0dG9uIiwiZ2V0QXJyb3dXaWR0aCIsImdldEFycm93SGVpZ2h0IiwiZ2V0RGF0ZSIsInRpbWVzdGFtcCIsIkRhdGUiLCJ5ZWFyIiwiZ2V0VVRDRnVsbFllYXIiLCJtb250aCIsImdldFVUQ01vbnRoIiwiZGF5IiwiZ2V0VVRDRGF0ZSIsImhvdXJzIiwiZ2V0VVRDSG91cnMiLCJtaW51dGVzIiwiZ2V0VVRDTWludXRlcyIsInNlY29uZHMiLCJnZXRVVENTZWNvbmRzIiwiVVRDIiwiZ2V0UGlja2VySGVpZ2h0IiwiZ2V0UG9wdXBIZWlnaHQiLCJnZXRQaWNrZXJXaWR0aCIsImdldFBvcHVwV2lkdGgiLCJuZ09uRGVzdHJveSIsInJlbW92ZUNoaWxkIiwid2luZG93IiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsIm5nT25Jbml0Iiwic2V0RGF0ZVRpbWVGb3JtYXQiLCJhZGRFdmVudExpc3RlbmVyIiwic2V0VmFsdWVTdHJpbmciLCJ2YWxpZGF0ZURhdGEiLCJjIiwiZXJyb3IiLCJpbmRleE9mIiwiaXNWYWxpZERhdGUiLCJyZXF1aXJlZCIsIndyaXRlVmFsdWUiLCJfdmFsdWUiLCJwaWNrZXJhcnJvdyIsIm9mZnNldEhlaWdodCIsIm9mZnNldFdpZHRoIiwidG9wIiwiYm90dG9tIiwidG9wZW5kIiwiYm90dG9tZW5kIiwiZ2V0Q29udGFpbmVyV2lkdGgiLCJsZWZ0IiwicmlnaHQiLCJuZ0NvbnRyb2wiLCJkYXRldGltZWZvcm1hdHN0cmluZyIsImRlcHMiLCJ0b2tlbiIsImkxIiwiU2FjRm9ybUxheW91dENvbW1vbiIsImkwIiwiSW5qZWN0b3IiLCJFbGVtZW50UmVmIiwiQ2hhbmdlRGV0ZWN0b3JSZWYiLCJ0YXJnZXQiLCLJtcm1RmFjdG9yeVRhcmdldCIsImlucHV0cyIsInZpZXdRdWVyaWVzIiwicHJvcGVydHlOYW1lIiwiZmlyc3QiLCJwcmVkaWNhdGUiLCJkZXNjZW5kYW50cyIsInN0YXRpYyIsInVzZXNJbmhlcml0YW5jZSIsIm5nSW1wb3J0IiwiZGVjb3JhdG9ycyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3NhYy1jb21tb24vc3JjL2NvbW1vbi9iYXNlZGF0ZXRpbWVjb250cm9sLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNhY0Zvcm1MYXlvdXRDb21tb24gfSBmcm9tICcuLi9jb250cm9scy9sYXlvdXQvZm9ybWxheW91dCc7XG5pbXBvcnQgeyBJRGF0ZVRpbWVDb250cm9sIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9pZGF0ZXRpbWVjb250cm9sJztcbmltcG9ydCB7IFRvb2x0aXBQb3NpdGlvbiB9IGZyb20gJy4uL3V0aWxpdGllcy9lbnVtcyc7XG5pbXBvcnQgeyBQb3BVcEhlbHBlciB9IGZyb20gJy4uL3V0aWxpdGllcy9wb3B1cGhlbHBlcic7XG5pbXBvcnQgeyBWYWxpZGF0aW9uIH0gZnJvbSAnLi4vdmFsaWRhdGlvbic7XG5pbXBvcnQgeyBDcmVhdGVWYWxpZGF0aW9uRXJyb3IgfSBmcm9tICcuLi92YWxpZGF0aW9uL3ZhbGlkYXRpb25lcnJvcmNyZWF0b3InO1xuaW1wb3J0IHsgU2FjQmFzZU1vZGVsQ29udHJvbCB9IGZyb20gJy4vYmFzZW1vZGVsY29udHJvbCc7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBJbmplY3RvciwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgVmFsaWRhdGlvbkVycm9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IElNYXNrRGlyZWN0aXZlIH0gZnJvbSAnYW5ndWxhci1pbWFzayc7XG5pbXBvcnQgKiBhcyBtb21lbnRfIGZyb20gJ21vbWVudCc7XG5cbi8qKlxuICogQmFzZSBLbGFzc2UgZsO8ciBEYXRlL1RpbWUgQ29udHJvbHNcbiAqL1xuQERpcmVjdGl2ZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgU2FjQmFzZURhdGVUaW1lQ29udHJvbCBleHRlbmRzIFNhY0Jhc2VNb2RlbENvbnRyb2w8RGF0ZT4gaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gICAgLy8gI3JlZ2lvbiBQcm9wZXJ0aWVzXG5cbiAgICAvKipcbiAgICAgKiBIZWxwZXIgY2xhc3MgdG8gZGlzcGxheSB0b29sdGlwIG9uIGNvcnJlY3QgcG9zaXRpb25cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IHBvcHVwSGVscGVyOiBQb3BVcEhlbHBlciA9IG5ldyBQb3BVcEhlbHBlcigpO1xuXG4gICAgLyoqXG4gICAgICogZGFzIHByb3BlcnR5IGVudGhpZWx0IGRhcyBWYWx1ZSBhbHMgc3RyaW5nLiBEZWZhdWx0IGlzdCAnJ1xuICAgICAqL1xuICAgIHByb3RlY3RlZCBfdmFsdWVBc1N0cmluZyA9ICcnO1xuXG4gICAgLyoqXG4gICAgICogQ29udGFpbmVycyBmb3IgdGhlIGRhdGV0aW1lIHBpY2tlclxuICAgICAqL1xuICAgIHByb3RlY3RlZCBwaWNrZXJjb250YWluZXI6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gICAgLyoqXG4gICAgICogUHJvcGVydHkgZm9yIGVudW0gaW4gQW5ndWxhciBIVE1MIHRlbXBsYXRlXG4gICAgICovXG4gICAgcHVibGljIFRvb2x0aXBQb3NpdGlvbiA9IFRvb2x0aXBQb3NpdGlvbjtcblxuICAgIC8qKlxuICAgICAqIERlZmluaWVydCBvYiBkZXIgRGF0ZSBTZWxlY3RvciBhbmdlemVpZ3Qgd2lyZFxuICAgICAqL1xuICAgIHB1YmxpYyBfc2hvd3NlbGVjdG9yOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBSZWZlcmVuY2UgdG8gaW1hc2sgZGlyZWN0aXZlIGluIGFueSBkYXRldGltZSBjb250cm9sc1xuICAgICAqL1xuICAgIEBWaWV3Q2hpbGQoSU1hc2tEaXJlY3RpdmUsIHsgc3RhdGljOiBmYWxzZSB9KVxuICAgIHB1YmxpYyBpTWFzazogSU1hc2tEaXJlY3RpdmU8YW55PjtcblxuICAgIC8qKlxuICAgICAqIERlZmluaWVydCBkYXMgQ29udHJvbCBhbHMgUmVxdWlyZWRcbiAgICAgKi9cbiAgICBASW5wdXQoKSBwdWJsaWMgaXNyZXF1aXJlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogTW9tZW50IEpTIEluc3RhbmNlXG4gICAgICovXG4gICAgcHVibGljIG1vbWVudCA9IG1vbWVudF9bJ2RlZmF1bHQnXTtcblxuICAgIC8qKlxuICAgICAqIEFycm93IEl0ZW0gb2YgUGlja2VyIEVsZW1lbnQuIFJlcXVpcmVkIHRvIHNldCB0aGUgcG9zaXRpb24gb2YgYXJyb3cgY29ycmVjdGx5XG4gICAgICovXG4gICAgcHVibGljIHBpY2tlclBvc2l0aW9uID0gVG9vbHRpcFBvc2l0aW9uO1xuICAgIEBWaWV3Q2hpbGQoJ3BpY2tlcmFycm93JywgeyBzdGF0aWM6IGZhbHNlIH0pXG4gICAgcHVibGljIHBpY2tlcmFycm93OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PiB8IG51bGw7XG5cbiAgICAvKipcbiAgICAgKiBOYW1lIG9mIHRoZSBjb250YWluZXIgZm9yIGNvbnRlbnQgKGUuZy4gaWNvbikgb24gd2hpY2ggdGhlIHRvb2x0aXAgaXMgZGlzcGxheWVkLlxuICAgICAqL1xuICAgIEBWaWV3Q2hpbGQoJ3BpY2tlcmJ1dHRvbicsIHsgc3RhdGljOiB0cnVlIH0pXG4gICAgcHVibGljIHBpY2tlcmJ1dHRvbjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG5cbiAgICAvKipcbiAgICAgKiBUZXh0Qm94IFBsYWNlaG9sZGVyXG4gICAgICovXG4gICAgQElucHV0KCkgcHVibGljIHBsYWNlaG9sZGVyOiBzdHJpbmcgPSBudWxsO1xuXG4gICAgLyoqXG4gICAgICogUG9zaXRpb24gb2YgdGhlIHBpY2tlciBhcnJvdyBhdCB0aGUgbGVmdFxuICAgICAqL1xuICAgIHB1YmxpYyBwb3NBcnJvd0xlZnQ6IG51bWJlciB8IG51bGwgPSBudWxsO1xuXG4gICAgLyoqXG4gICAgICogUG9zaXRpb24gb2YgdGhlIHBpY2tlciBhcnJvdyBhdCB0aGUgdG9wXG4gICAgICovXG4gICAgcHVibGljIHBvc0Fycm93VG9wOiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICAgIC8qKlxuICAgICAqIFBvc2l0aW9uIG9mIHRoZSBwaWNrZXIgYXQgdGhlIGxlZnRcbiAgICAgKi9cbiAgICBwdWJsaWMgcG9zUG9wdXBMZWZ0OiBudW1iZXIgPSAwO1xuXG4gICAgLyoqXG4gICAgICogUG9zaXRpb24gb2YgdGhlIHBpY2tlciBhdCB0aGUgdG9wXG4gICAgICovXG4gICAgcHVibGljIHBvc1BvcHVwVG9wOiBudW1iZXIgPSAwO1xuXG4gICAgLyoqXG4gICAgICogUG9zaXRpb24gb2YgdGhlIGRhdGV0aW1lIHBpY2tlci4gVmFsdWVzOiBsZWZ0fHRvcHxyaWdodHxib3R0b218YXV0b1xuICAgICAqXG4gICAgICogVmFsdWUgJ2F1dG8nIGNhbiBiZSBjb21iaW5lZCB3aXRoIGFub3RoZXIgdmFsdWUuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgcG9zaXRpb246IHN0cmluZyA9ICdib3R0b21lbmR8dG9wZW5kJztcblxuICAgIC8qKlxuICAgICAqIFJlc291cmNlIEtleSBmw7xyIFZhbGlkYXRpb24gTWVzc2FnZSBEYXRlVGltZUZvcm1hdCBiZWkgQ29udHJvbFxuICAgICAqL1xuICAgIEBJbnB1dCgpIHB1YmxpYyB2YWxpZGF0aW9ubWVzc2FnZWRhdGV0aW1lZm9ybWF0OiBzdHJpbmcgPSB0aGlzLnZhbGlkYXRpb25LZXlTZXJ2aWNlLlZhbGlkYXRpb25FcnJvckRhdGV0aW1lRm9ybWF0O1xuXG4gICAgLyoqXG4gICAgICogUmVzb3VyY2UgS2V5IGbDvHIgVmFsaWRhdGlvbiBNZXNzYWdlIERhdGVUaW1lRm9ybWF0IGluIFZhbGlkYXRpb24gU3VtbWFyeVxuICAgICAqL1xuICAgIEBJbnB1dCgpIHB1YmxpYyB2YWxpZGF0aW9ubWVzc2FnZWRhdGV0aW1lZm9ybWF0c3VtbWFyeTogc3RyaW5nID1cbiAgICAgICAgdGhpcy52YWxpZGF0aW9uS2V5U2VydmljZS5WYWxpZGF0aW9uRXJyb3JTdW1tYXJ5RGF0ZXRpbWVGb3JtYXQ7XG5cbiAgICAvKipcbiAgICAgKiBSZXNvdXJjZSBLZXkgZsO8ciBWYWxpZGF0aW9uIE1lc3NhZ2UgUmVxdWlyZWQgYmVpIENvbnRyb2xcbiAgICAgKi9cbiAgICBASW5wdXQoKSBwdWJsaWMgdmFsaWRhdGlvbm1lc3NhZ2VyZXF1aXJlZDogc3RyaW5nID0gdGhpcy52YWxpZGF0aW9uS2V5U2VydmljZS5WYWxpZGF0aW9uRXJyb3JSZXF1aXJlZDtcblxuICAgIC8qKlxuICAgICAqIFJlc291cmNlIEtleSBmw7xyIFZhbGlkYXRpb24gTWVzc2FnZSBSZXF1aXJlZCBpbiBWYWxpZGF0aW9uIFN1bW1hcnlcbiAgICAgKi9cbiAgICBASW5wdXQoKSBwdWJsaWMgdmFsaWRhdGlvbm1lc3NhZ2VyZXF1aXJlZHN1bW1hcnk6IHN0cmluZyA9IHRoaXMudmFsaWRhdGlvbktleVNlcnZpY2UuVmFsaWRhdGlvbkVycm9yU3VtbWFyeVJlcXVpcmVkO1xuXG4gICAgLy8gI2VuZHJlZ2lvbiBQcm9wZXJ0aWVzXG5cbiAgICAvLyAjcmVnaW9uIENvbnN0cnVjdG9yc1xuXG4gICAgLyoqXG4gICAgICogQ29uc3RydWN0b3JcbiAgICAgKiBAcGFyYW0gZm9ybWxheW91dCBTYWNGb3JtTGF5b3V0Q29tbW9uIHRvIGRlZmluZSBzY29wZWQgbGF5b3V0IHNldHRpbmdzXG4gICAgICogQHBhcmFtIGluamVjdG9yIEluamVjdG9yIGZvciBpbmplY3Rpbmcgc2VydmljZXNcbiAgICAgKiBAcGFyYW0gZWxlbWVudFJlZiByZWZlcmVuY2UgdG8gaHRtbCBlbGVtZW50XG4gICAgICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIGZvcm1sYXlvdXQ6IFNhY0Zvcm1MYXlvdXRDb21tb24sXG4gICAgICAgIGluamVjdG9yOiBJbmplY3RvcixcbiAgICAgICAgcHJvdGVjdGVkIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgY2RSZWY6IENoYW5nZURldGVjdG9yUmVmXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKGZvcm1sYXlvdXQsIGluamVjdG9yKTtcbiAgICB9XG5cbiAgICAvLyAjZW5kcmVnaW9uIENvbnN0cnVjdG9yc1xuXG4gICAgLy8gI3JlZ2lvbiBQdWJsaWMgR2V0dGVycyBBbmQgU2V0dGVyc1xuXG4gICAgLyoqXG4gICAgICogU2V0dGVyIGZvciB0aGUgbmFtZSBvZiB0aGUgY29udGFpbmVyIGZvciB0aGUgdG9vbHRpcC4gSXMgcmVxdWlyZWQgYXMgdGhlIHRvb2x0aXAgY2FuIGJlIGhpZGRlbiB2aWEgbmdJZi5cbiAgICAgKi9cbiAgICBAVmlld0NoaWxkKCdwaWNrZXInLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgICBwdWJsaWMgc2V0IHBpY2tlcihwaWNrZXI6IEVsZW1lbnRSZWYpIHtcbiAgICAgICAgaWYgKHBpY2tlciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHBpY2tlci5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucGlja2VyY29udGFpbmVyID0gcGlja2VyO1xuICAgICAgICB0aGlzLm9uQ29udGVudENoYW5nZSgpO1xuICAgICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHRvb2x0b3AoKTogRWxlbWVudFJlZiB7XG4gICAgICAgIHJldHVybiB0aGlzLnBpY2tlcmNvbnRhaW5lcjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBnZXR0ZXIgZsO8ciB2YWx1ZXN0cmluZ1xuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgdmFsdWVzdHJpbmcoKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKHRoaXMudmFsdWUgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl92YWx1ZUFzU3RyaW5nO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgZGF0ZSA9IHRoaXMubW9tZW50LnV0Yyh0aGlzLnZhbHVlKTtcbiAgICAgICAgICAgIHJldHVybiBkYXRlLmxvY2FsKCkuZm9ybWF0KHRoaXMuR2V0RGF0ZVRpbWVGb3JtYXRTdHJpbmcoKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEYXMgSW5wdXQgYmVrb21tdCBkYXMgdmFsdWUgdm9uIHR5cCBzdHJpbmdcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzZXQgdmFsdWVzdHJpbmcodjogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuX3ZhbHVlQXNTdHJpbmcgPSB2O1xuICAgICAgICBsZXQgZGF0ZTogbW9tZW50Xy5Nb21lbnQgPSB0aGlzLm1vbWVudCh2LCBbdGhpcy5HZXREYXRlVGltZUZvcm1hdFN0cmluZygpXSwgdHJ1ZSk7XG5cbiAgICAgICAgZGF0ZSA9IHRoaXMuTW9kaWZ5UGFyc2VkRGF0ZVRpbWVWYWx1ZShkYXRlKS51dGMoKTtcblxuICAgICAgICBpZiAoZGF0ZS5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSBkYXRlLnRvRGF0ZSgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICAvLyB1cGRhdGUgaW1ha3MgcmVmZXJlbmNlXG4gICAgICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB0aGlzLmlNYXNrLm1hc2tSZWYudXBkYXRlQ29udHJvbCgpO1xuICAgIH1cblxuICAgIC8vICNlbmRyZWdpb24gUHVibGljIEdldHRlcnMgQW5kIFNldHRlcnNcblxuICAgIC8vICNyZWdpb24gUHVibGljIE1ldGhvZHNcblxuICAgIC8qKlxuICAgICAqIERpZSBtZXRob2RlIHJldHVybnMgZGF0ZVRpbWUgaW4gc3RyaW5nXG4gICAgICovXG4gICAgcHVibGljIGFic3RyYWN0IEdldERhdGVUaW1lRm9ybWF0U3RyaW5nKCk6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIHBvc2l0aW9uIG9mIHRoZSB0b29sdGlwXG4gICAgICovXG4gICAgcHVibGljIEdldFBpY2tlclBvc2l0aW9uKCk6IFRvb2x0aXBQb3NpdGlvbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnBvcHVwSGVscGVyLmdldERpc3BsYXlQb3NpdGlvbihcbiAgICAgICAgICAgIHRoaXMucGlja2VyYnV0dG9uLFxuICAgICAgICAgICAgdGhpcy5waWNrZXJjb250YWluZXIsXG4gICAgICAgICAgICB0aGlzLmdldEFycm93V2lkdGgoKSxcbiAgICAgICAgICAgIHRoaXMuZ2V0QXJyb3dIZWlnaHQoKSxcbiAgICAgICAgICAgIHRoaXMucG9zaXRpb24sXG4gICAgICAgICAgICBmYWxzZVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERpZSBtZXRob2RlIG1vZGlmaXppZXJ0IGRhcyBlaW5nZWdlYmVuZSBWYWx1ZSB2b24gdHlwIE1vbWVudFxuICAgICAqL1xuICAgIHB1YmxpYyBhYnN0cmFjdCBNb2RpZnlQYXJzZWREYXRlVGltZVZhbHVlKHY6IG1vbWVudF8uTW9tZW50KTogbW9tZW50Xy5Nb21lbnQ7XG5cbiAgICAvKipcbiAgICAgKiBKU09OIERhdGUgU3RyaW5nIGluIGVpbiBVVEMgRGF0ZVRpbWUgT2JqZWN0IGtvbnZlcnRpZXJlbiwgd2VsY2hlcyB2b20gQ29udHJvbCB2ZXJ3ZW5kZXRlIHdlcmRlbiBrYW5uXG4gICAgICovXG4gICAgcHVibGljIGdldERhdGUodGltZXN0YW1wKTogbW9tZW50Lk1vbWVudCB7XG4gICAgICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSh0aW1lc3RhbXApO1xuICAgICAgICBjb25zdCB5ZWFyID0gZGF0ZS5nZXRVVENGdWxsWWVhcigpO1xuICAgICAgICBjb25zdCBtb250aCA9IGRhdGUuZ2V0VVRDTW9udGgoKTtcbiAgICAgICAgY29uc3QgZGF5ID0gZGF0ZS5nZXRVVENEYXRlKCk7XG4gICAgICAgIGNvbnN0IGhvdXJzID0gZGF0ZS5nZXRVVENIb3VycygpO1xuICAgICAgICBjb25zdCBtaW51dGVzID0gZGF0ZS5nZXRVVENNaW51dGVzKCk7XG4gICAgICAgIGNvbnN0IHNlY29uZHMgPSBkYXRlLmdldFVUQ1NlY29uZHMoKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5tb21lbnQoRGF0ZS5VVEMoeWVhciwgbW9udGgsIGRheSwgaG91cnMsIG1pbnV0ZXMsIHNlY29uZHMpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDYWxjdWxhdGVzIHRoZSBoZWlnaHQgb2YgdGhlIHRvb2x0aXBcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0UGlja2VySGVpZ2h0KCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLnBvcHVwSGVscGVyLmdldFBvcHVwSGVpZ2h0KHRoaXMucGlja2VyY29udGFpbmVyKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDYWxjdWxhdGVzIHRoZSB3aWR0aCBvZiB0aGUgcGlja2VyXG4gICAgICovXG4gICAgcHVibGljIGdldFBpY2tlcldpZHRoKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLnBvcHVwSGVscGVyLmdldFBvcHVwV2lkdGgodGhpcy5waWNrZXJjb250YWluZXIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgLy8gUmVtb3ZlIFBpY2tlciBpZiBpcyB2aXNpYmxlXG4gICAgICAgIGlmICh0aGlzLl9zaG93c2VsZWN0b3IgJiYgdGhpcy5waWNrZXJjb250YWluZXI/Lm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQodGhpcy5waWNrZXJjb250YWluZXIubmF0aXZlRWxlbWVudCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBVbnJlZ2lzdGVyIEV2ZW50IExpc3RlbmVyXG4gICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB0aGlzLm9uQ29udGVudENoYW5nZSwgdHJ1ZSk7XG4gICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLm9uQ29udGVudENoYW5nZSwgdHJ1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSW5pdCBFdmVudFxuICAgICAqL1xuICAgIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICAgICAgdGhpcy5zZXREYXRlVGltZUZvcm1hdCgpO1xuXG4gICAgICAgIC8vIFJlZ2lzdGVyIEV2ZW50IExpc3RlbmVyXG4gICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB0aGlzLm9uQ29udGVudENoYW5nZSwgdHJ1ZSk7XG4gICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLm9uQ29udGVudENoYW5nZSwgdHJ1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogc2V0enQgZGFzIHZhbHVlIHZvbiB0eXAgc3RyaW5nIHp1IHByb3BlcnR5IHZhbHVlc3RyaW5nXG4gICAgICovXG4gICAgcHVibGljIHNldFZhbHVlU3RyaW5nKHY6IHN0cmluZykge1xuICAgICAgICB0aGlzLnZhbHVlc3RyaW5nID0gdjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBWYWxpZGF0b3JcbiAgICAgKi9cbiAgICBwdWJsaWMgdmFsaWRhdGVEYXRhKGM6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgICAgICAgbGV0IGVycm9yOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9IG51bGw7XG5cbiAgICAgICAgaWYgKHRoaXMudmFsdWVzdHJpbmcgIT09IG51bGwgJiYgdGhpcy52YWx1ZXN0cmluZy5pbmRleE9mKCdfJykgPj0gMCkge1xuICAgICAgICAgICAgZXJyb3IgPSBDcmVhdGVWYWxpZGF0aW9uRXJyb3IoXG4gICAgICAgICAgICAgICAgJ2ludmFsaWR0eXBlJyxcbiAgICAgICAgICAgICAgICB0aGlzLnZhbGlkYXRpb25tZXNzYWdlZGF0ZXRpbWVmb3JtYXQsXG4gICAgICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9ubWVzc2FnZWRhdGV0aW1lZm9ybWF0c3VtbWFyeVxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgZXJyb3IgPSBWYWxpZGF0aW9uLmlzVmFsaWREYXRlKFxuICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9ubWVzc2FnZWRhdGV0aW1lZm9ybWF0LFxuICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9ubWVzc2FnZWRhdGV0aW1lZm9ybWF0c3VtbWFyeVxuICAgICAgICApKGMpO1xuXG4gICAgICAgIGlmICh0aGlzLmlzcmVxdWlyZWQpIHtcbiAgICAgICAgICAgIGVycm9yID0gVmFsaWRhdGlvbi5yZXF1aXJlZCh0aGlzLnZhbGlkYXRpb25tZXNzYWdlcmVxdWlyZWQsIHRoaXMudmFsaWRhdGlvbm1lc3NhZ2VyZXF1aXJlZHN1bW1hcnkpKGMpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGVycm9yO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE92ZXJ3cml0ZSBXcml0ZVZhbHVlIHRvIFNldCBjb3JyZWN0IERhdGUgT2JqZWN0XG4gICAgICovXG4gICAgcHVibGljIHdyaXRlVmFsdWUodmFsdWU6IERhdGUgfCBzdHJpbmcpIHtcbiAgICAgICAgaWYgKHZhbHVlID09PSAnJyB8fCB2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAvLyBSZXNldCBWYWx1ZSBTdHJpbmcsIGRhbWl0IGJlaW0gVXBkYXRlIGRlcyBNb2RlbHMgYXVjaCBkYXMgSW5wdXQgRmVsZCBnZWxlZXJ0IHdpcmQuXG4gICAgICAgICAgICB0aGlzLl92YWx1ZUFzU3RyaW5nID0gJyc7XG4gICAgICAgICAgICAvLyBTZXQgSW50ZXJuYWwgUHJvcGVydHlcbiAgICAgICAgICAgIHRoaXMuX3ZhbHVlID0gbnVsbDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX3ZhbHVlID0gdGhpcy5nZXREYXRlKHZhbHVlKS50b0RhdGUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHN1cGVyLndyaXRlVmFsdWUodGhpcy5fdmFsdWUpO1xuICAgIH1cblxuICAgIC8vICNlbmRyZWdpb24gUHVibGljIE1ldGhvZHNcblxuICAgIC8vICNyZWdpb24gUHJvdGVjdGVkIE1ldGhvZHNcblxuICAgIHByb3RlY3RlZCBnZXRBcnJvd0hlaWdodCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5waWNrZXJhcnJvdyA/IHRoaXMucGlja2VyYXJyb3cubmF0aXZlRWxlbWVudC5vZmZzZXRIZWlnaHQgOiAwO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXRBcnJvd1dpZHRoKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLnBpY2tlcmFycm93ID8gdGhpcy5waWNrZXJhcnJvdy5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoIDogMDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDYWxjdWxhdGVzIHRoZSBwb3NpdGlvbiBvZiB0aGUgdG9vbHRpcCBmcm9tIGxpbmtzXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGdldFBvc2l0aW9uTGVmdCgpOiBudW1iZXIge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMucG9wdXBIZWxwZXIuZ2V0UG9zaXRpb25MZWZ0KFxuICAgICAgICAgICAgdGhpcy5waWNrZXJidXR0b24sXG4gICAgICAgICAgICB0aGlzLnBpY2tlcmNvbnRhaW5lcixcbiAgICAgICAgICAgIHRoaXMuZWxlbWVudFJlZixcbiAgICAgICAgICAgIHRoaXMuZ2V0QXJyb3dXaWR0aCgpLFxuICAgICAgICAgICAgdGhpcy5nZXRBcnJvd0hlaWdodCgpLFxuICAgICAgICAgICAgdGhpcy5wb3NpdGlvbixcbiAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICk7XG5cbiAgICAgICAgLy8gRW5zdXJlIHRoYXQgcG9wLXVwcyBuZXZlciBhcHBlYXIgb3V0c2lkZSB0aGUgdmlzaWJsZSBhcmVhIG9uIHRoZSBsZWZ0XG4gICAgICAgIGlmICh2YWx1ZSA8IDApIHtcbiAgICAgICAgICAgIHRoaXMucG9zUG9wdXBMZWZ0ID0gNTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucG9zUG9wdXBMZWZ0ID0gdmFsdWU7XG4gICAgICAgIH1cblxuICAgICAgICBzd2l0Y2ggKHRoaXMuR2V0UGlja2VyUG9zaXRpb24oKSkge1xuICAgICAgICAgICAgY2FzZSBUb29sdGlwUG9zaXRpb24udG9wOlxuICAgICAgICAgICAgY2FzZSBUb29sdGlwUG9zaXRpb24uYm90dG9tOlxuICAgICAgICAgICAgICAgIHRoaXMucG9zQXJyb3dMZWZ0ID0gdGhpcy5nZXRQaWNrZXJXaWR0aCgpIC8gMiAtIC10aGlzLmdldEFycm93V2lkdGgoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgVG9vbHRpcFBvc2l0aW9uLnRvcGVuZDpcbiAgICAgICAgICAgIGNhc2UgVG9vbHRpcFBvc2l0aW9uLmJvdHRvbWVuZDpcbiAgICAgICAgICAgICAgICB0aGlzLnBvc0Fycm93TGVmdCA9XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0UGlja2VyV2lkdGgoKSAtXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0QXJyb3dXaWR0aCgpIC8gMiAtXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucG9wdXBIZWxwZXIuZ2V0Q29udGFpbmVyV2lkdGgodGhpcy5waWNrZXJidXR0b24sIGZhbHNlKSAvIDI7XG5cbiAgICAgICAgICAgICAgICAvLyBDb3JyZWN0aW9uIGJ5IEFycm93IGlmIHBvcHVwIGlzIG91dHNpZGUgdGhlIGxlZnQgbWFyZ2luXG4gICAgICAgICAgICAgICAgaWYgKHZhbHVlIDwgMCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnBvc0Fycm93TGVmdCAtPSB2YWx1ZSAqIC0xICsgNTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHRoaXMucG9zQXJyb3dMZWZ0ID0gbnVsbDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDYWxjdWxhdGVzIHRoZSBwb3NpdGlvbiBvZiB0aGUgdG9vbHRpcCBmcm9tIHRoZSB0b3BcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgZ2V0UG9zaXRpb25Ub3AoKTogbnVtYmVyIHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLnBvcHVwSGVscGVyLmdldFBvc2l0aW9uVG9wKFxuICAgICAgICAgICAgdGhpcy5waWNrZXJidXR0b24sXG4gICAgICAgICAgICB0aGlzLnBpY2tlcmNvbnRhaW5lcixcbiAgICAgICAgICAgIHRoaXMuZWxlbWVudFJlZixcbiAgICAgICAgICAgIHRoaXMuZ2V0QXJyb3dXaWR0aCgpLFxuICAgICAgICAgICAgdGhpcy5nZXRBcnJvd0hlaWdodCgpLFxuICAgICAgICAgICAgdGhpcy5wb3NpdGlvbixcbiAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMucG9zUG9wdXBUb3AgPSB2YWx1ZTtcblxuICAgICAgICBzd2l0Y2ggKHRoaXMuR2V0UGlja2VyUG9zaXRpb24oKSkge1xuICAgICAgICAgICAgY2FzZSBUb29sdGlwUG9zaXRpb24ubGVmdDpcbiAgICAgICAgICAgIGNhc2UgVG9vbHRpcFBvc2l0aW9uLnJpZ2h0OlxuICAgICAgICAgICAgICAgIHRoaXMucG9zQXJyb3dUb3AgPSB0aGlzLmdldFBpY2tlckhlaWdodCgpIC8gMiAtIDYuNTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgdGhpcy5wb3NBcnJvd1RvcCA9IG51bGw7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgLy8gI2VuZHJlZ2lvbiBQcm90ZWN0ZWQgTWV0aG9kc1xuXG4gICAgLy8gI3JlZ2lvbiBQcml2YXRlIE1ldGhvZHNcblxuICAgIC8qKlxuICAgICAqIG1ldGhvZCBpZiBjb250ZW50IGhhcyBjaGFuZ2VkIGFuZCBwcm9wb3J0aW9ucyBuZWVkIHRvIGJlIHJlc2V0IGluIHRoZSBVSS5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IG9uQ29udGVudENoYW5nZSA9ICgpOiB2b2lkID0+IHtcbiAgICAgICAgLy8gRG8gbm90aGluZyBpZiBpcyBub3QgdmlzaWJsZVxuICAgICAgICBpZiAoIXRoaXMuX3Nob3dzZWxlY3Rvcikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmdldFBvc2l0aW9uTGVmdCgpO1xuICAgICAgICAgICAgdGhpcy5nZXRQb3NpdGlvblRvcCgpO1xuICAgICAgICB9KTtcbiAgICB9O1xuXG4gICAgcHJpdmF0ZSBzZXREYXRlVGltZUZvcm1hdCgpOiB2b2lkIHtcbiAgICAgICAgLy8gSEFDSzogQWRkIGFkZGl0aW9uIHByb3BlcnR5IHRvIEZvcm1Db250cm9sLiBDYW4gYmUgZml4ZWQgaWYgc29sdXRpb24gZm9yIHRpY2tldDogaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9pc3N1ZXMvMTk2ODZcbiAgICAgICAgaWYgKHRoaXMubmdDb250cm9sKSB7XG4gICAgICAgICAgICAodGhpcy5uZ0NvbnRyb2wgYXMgdW5rbm93biBhcyBJRGF0ZVRpbWVDb250cm9sKS5kYXRldGltZWZvcm1hdHN0cmluZyA9IHRoaXMuR2V0RGF0ZVRpbWVGb3JtYXRTdHJpbmcoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vICNlbmRyZWdpb24gUHJpdmF0ZSBNZXRob2RzXG59XG4iXSwibWFwcGluZ3MiOiI0dG9DQWlJSTtBQUFBQSxjQUFBLFNBQUFBLENBQUEsU0FBQUMsY0FBQSxXQUFBQSxjQUFBLEVBQUFELGNBQUEsR0EvSEosT0FBU0UsZUFBZSxLQUFRLG9CQUFvQixDQUNwRCxPQUFTQyxXQUFXLEtBQVEsMEJBQTBCLENBQ3RELE9BQVNDLFVBQVUsS0FBUSxlQUFlLENBQzFDLE9BQVNDLHFCQUFxQixLQUFRLHNDQUFzQyxDQUM1RSxPQUFTQyxtQkFBbUIsS0FBUSxvQkFBb0IsQ0FDeEQsT0FBNEJDLFNBQVMsQ0FBd0JDLEtBQUssQ0FBcUJDLFNBQVMsS0FBUSxlQUFlLENBRXZILE9BQVNDLGNBQWMsS0FBUSxlQUFlLENBQzlDLE1BQU8sR0FBSyxDQUFBQyxPQUFPLEtBQU0sUUFBUSxDLGtGQUVqQzs7R0FHQSxLQUNzQixDQUFBQyxzQkFBdUIsUUFBUSxDQUFBTixtQkFBeUIsQ0ErRzFFO0FBRUE7QUFFQTs7Ozs7T0FNQU8sWUFDSUMsVUFBK0IsQ0FDL0JDLFFBQWtCLENBQ1JDLFVBQXNCLENBQ2ZDLEtBQXdCLEVBQUFq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
110
+ */getPositionTop(){cov_193zbqns7k().f[19]++;const value=(cov_193zbqns7k().s[97]++,this.popupHelper.getPositionTop(this.pickerbutton,this.pickercontainer,this.elementRef,this.getArrowWidth(),this.getArrowHeight(),this.position,false));cov_193zbqns7k().s[98]++;this.posPopupTop=value;cov_193zbqns7k().s[99]++;switch(this.GetPickerPosition()){case TooltipPosition.left:cov_193zbqns7k().b[17][0]++;case TooltipPosition.right:cov_193zbqns7k().b[17][1]++;cov_193zbqns7k().s[100]++;this.posArrowTop=this.getPickerHeight()/2-6.5;cov_193zbqns7k().s[101]++;break;default:cov_193zbqns7k().b[17][2]++;cov_193zbqns7k().s[102]++;this.posArrowTop=null;cov_193zbqns7k().s[103]++;break;}cov_193zbqns7k().s[104]++;return value;}/**
111
+ * Sets the date-time format string from the configured format property
112
+ */setDateTimeFormat(){cov_193zbqns7k().f[20]++;cov_193zbqns7k().s[105]++;// HACK: Add addition property to FormControl. Can be fixed if solution for ticket: https://github.com/angular/angular/issues/19686
113
+ if(this.ngControl){cov_193zbqns7k().b[18][0]++;cov_193zbqns7k().s[106]++;this.ngControl.datetimeformatstring=this.GetDateTimeFormatString();}else{cov_193zbqns7k().b[18][1]++;}}static{cov_193zbqns7k().s[107]++;this.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"16.2.12",ngImport:i0,type:SacBaseDateTimeControl,deps:[{token:i1.SacFormLayoutCommon},{token:i0.Injector},{token:i0.ElementRef},{token:i0.ChangeDetectorRef}],target:i0.ɵɵFactoryTarget.Directive});}static{cov_193zbqns7k().s[108]++;this.ɵdir=i0.ɵɵngDeclareDirective({minVersion:"14.0.0",version:"16.2.12",type:SacBaseDateTimeControl,inputs:{isrequired:"isrequired",placeholder:"placeholder",position:"position",validationmessagedatetimeformat:"validationmessagedatetimeformat",validationmessagedatetimeformatsummary:"validationmessagedatetimeformatsummary",validationmessagerequired:"validationmessagerequired",validationmessagerequiredsummary:"validationmessagerequiredsummary",valuestring:"valuestring"},viewQueries:[{propertyName:"iMask",first:true,predicate:IMaskDirective,descendants:true},{propertyName:"pickerarrow",first:true,predicate:["pickerarrow"],descendants:true},{propertyName:"pickerbutton",first:true,predicate:["pickerbutton"],descendants:true,static:true},{propertyName:"picker",first:true,predicate:["picker"],descendants:true}],usesInheritance:true,ngImport:i0});}}cov_193zbqns7k().s[109]++;i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"16.2.12",ngImport:i0,type:SacBaseDateTimeControl,decorators:[{type:Directive}],ctorParameters:function(){cov_193zbqns7k().f[21]++;cov_193zbqns7k().s[110]++;return[{type:i1.SacFormLayoutCommon},{type:i0.Injector},{type:i0.ElementRef},{type:i0.ChangeDetectorRef}];},propDecorators:{iMask:[{type:ViewChild,args:[IMaskDirective,{static:false}]}],isrequired:[{type:Input}],pickerarrow:[{type:ViewChild,args:['pickerarrow',{static:false}]}],pickerbutton:[{type:ViewChild,args:['pickerbutton',{static:true}]}],placeholder:[{type:Input}],position:[{type:Input}],validationmessagedatetimeformat:[{type:Input}],validationmessagedatetimeformatsummary:[{type:Input}],validationmessagerequired:[{type:Input}],validationmessagerequiredsummary:[{type:Input}],picker:[{type:ViewChild,args:['picker',{static:false}]}],valuestring:[{type:Input}]}});//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZWRhdGV0aW1lY29udHJvbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3NhYy1jb21tb24vc3JjL2NvbW1vbi9iYXNlZGF0ZXRpbWVjb250cm9sLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUM3RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN6RCxPQUFPLEVBQXFCLFNBQVMsRUFBd0IsS0FBSyxFQUFxQixTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFeEgsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvQyxPQUFPLEtBQUssT0FBTyxNQUFNLFFBQVEsQ0FBQzs7O0FBRWxDOztHQUVHO0FBRUgsTUFBTSxPQUFnQixzQkFBdUIsU0FBUSxtQkFBeUI7SUFtSDFFLHdCQUF3QjtJQUV4Qix1QkFBdUI7SUFFdkI7Ozs7OztPQU1HO0lBQ0gsWUFDSSxVQUErQixFQUMvQixRQUFrQixFQUNSLFVBQXNCLEVBQ2YsS0FBd0I7UUFFekMsS0FBSyxDQUFDLFVBQVUsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUhsQixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ2YsVUFBSyxHQUFMLEtBQUssQ0FBbUI7UUFqSTdDLHFCQUFxQjtRQUVyQjs7V0FFRztRQUNjLGdCQUFXLEdBQWdCLElBQUksV0FBVyxFQUFFLENBQUM7UUFFOUQ7O1dBRUc7UUFDTyxtQkFBYyxHQUFHLEVBQUUsQ0FBQztRQU85Qjs7V0FFRztRQUNJLG9CQUFlLEdBQUcsZUFBZSxDQUFDO1FBRXpD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Q29tbW9uIH0gZnJvbSAnLi4vY29udHJvbHMvbGF5b3V0L2Zvcm1sYXlvdXQnO1xuaW1wb3J0IHsgSURhdGVUaW1lQ29udHJvbCB9IGZyb20gJy4uL2ludGVyZmFjZXMvaWRhdGV0aW1lY29udHJvbCc7XG5pbXBvcnQgeyBUb29sdGlwUG9zaXRpb24gfSBmcm9tICcuLi91dGlsaXRpZXMvZW51bXMnO1xuaW1wb3J0IHsgUG9wVXBIZWxwZXIgfSBmcm9tICcuLi91dGlsaXRpZXMvcG9wdXBoZWxwZXInO1xuaW1wb3J0IHsgVmFsaWRhdGlvbiB9IGZyb20gJy4uL3ZhbGlkYXRpb24nO1xuaW1wb3J0IHsgQ3JlYXRlVmFsaWRhdGlvbkVycm9yIH0gZnJvbSAnLi4vdmFsaWRhdGlvbi92YWxpZGF0aW9uZXJyb3JjcmVhdG9yJztcbmltcG9ydCB7IFNhY0Jhc2VNb2RlbENvbnRyb2wgfSBmcm9tICcuL2Jhc2Vtb2RlbGNvbnRyb2wnO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgSW5qZWN0b3IsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIFZhbGlkYXRpb25FcnJvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBJTWFza0RpcmVjdGl2ZSB9IGZyb20gJ2FuZ3VsYXItaW1hc2snO1xuaW1wb3J0ICogYXMgbW9tZW50XyBmcm9tICdtb21lbnQnO1xuXG4vKipcbiAqIEJhc2UgY2xhc3MgZm9yIERhdGUvVGltZSBjb250cm9sc1xuICovXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBTYWNCYXNlRGF0ZVRpbWVDb250cm9sIGV4dGVuZHMgU2FjQmFzZU1vZGVsQ29udHJvbDxEYXRlPiBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICAvLyAjcmVnaW9uIFByb3BlcnRpZXNcblxuICAgIC8qKlxuICAgICAqIEhlbHBlciBjbGFzcyB0byBkaXNwbGF5IHRvb2x0aXBzIGluIHRoZSBjb3JyZWN0IHBvc2l0aW9uXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBwb3B1cEhlbHBlcjogUG9wVXBIZWxwZXIgPSBuZXcgUG9wVXBIZWxwZXIoKTtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgcHJvcGVydHkgY29udGFpbnMgdGhlIHZhbHVlIGFzIGEgc3RyaW5nLiBEZWZhdWx0IGlzICcnXG4gICAgICovXG4gICAgcHJvdGVjdGVkIF92YWx1ZUFzU3RyaW5nID0gJyc7XG5cbiAgICAvKipcbiAgICAgKiBDb250YWluZXJzIGZvciB0aGUgZGF0ZXRpbWUgcGlja2VyXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHBpY2tlcmNvbnRhaW5lcjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG5cbiAgICAvKipcbiAgICAgKiBQcm9wZXJ0eSBmb3IgZW51bSBpbiBBbmd1bGFyIEhUTUwgdGVtcGxhdGVcbiAgICAgKi9cbiAgICBwdWJsaWMgVG9vbHRpcFBvc2l0aW9uID0gVG9vbHRpcFBvc2l0aW9uO1xuXG4gICAgLyoqXG4gICAgICogRGVmaW5lcyB3aGV0aGVyIHRoZSBkYXRlIHNlbGVjdG9yIGlzIGRpc3BsYXllZFxuICAgICAqL1xuICAgIHB1YmxpYyBfc2hvd3NlbGVjdG9yID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBSZWZlcmVuY2UgdG8gaW1hc2sgZGlyZWN0aXZlIGluIGFueSBkYXRldGltZSBjb250cm9sc1xuICAgICAqL1xuICAgIEBWaWV3Q2hpbGQoSU1hc2tEaXJlY3RpdmUsIHsgc3RhdGljOiBmYWxzZSB9KVxuICAgIHB1YmxpYyBpTWFzazogSU1hc2tEaXJlY3RpdmU8YW55PjtcblxuICAgIC8qKlxuICAgICAqIERlZmluZXMgdGhlIGNvbnRyb2wgYXMgcmVxdWlyZWRcbiAgICAgKi9cbiAgICBASW5wdXQoKSBwdWJsaWMgaXNyZXF1aXJlZCA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogTW9tZW50IEpTIEluc3RhbmNlXG4gICAgICovXG4gICAgcHVibGljIG1vbWVudCA9IG1vbWVudF9bJ2RlZmF1bHQnXTtcblxuICAgIC8qKlxuICAgICAqIEFycm93IEl0ZW0gb2YgUGlja2VyIEVsZW1lbnQuIFJlcXVpcmVkIHRvIHNldCB0aGUgcG9zaXRpb24gb2YgYXJyb3cgY29ycmVjdGx5XG4gICAgICovXG4gICAgcHVibGljIHBpY2tlclBvc2l0aW9uID0gVG9vbHRpcFBvc2l0aW9uO1xuXG4gICAgLyoqXG4gICAgICogUmVmZXJlbmNlIHRvIHRoZSBwaWNrZXIgYXJyb3cgZWxlbWVudCB1c2VkIGZvciBjYWxjdWxhdGluZyB0b29sdGlwIGFycm93IHBvc2l0aW9uLlxuICAgICAqL1xuICAgIEBWaWV3Q2hpbGQoJ3BpY2tlcmFycm93JywgeyBzdGF0aWM6IGZhbHNlIH0pXG4gICAgcHVibGljIHBpY2tlcmFycm93OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PiB8IG51bGw7XG5cbiAgICAvKipcbiAgICAgKiBOYW1lIG9mIHRoZSBjb250YWluZXIgZm9yIGNvbnRlbnQgKGUuZy4gaWNvbikgb24gd2hpY2ggdGhlIHRvb2x0aXAgaXMgZGlzcGxheWVkLlxuICAgICAqL1xuICAgIEBWaWV3Q2hpbGQoJ3BpY2tlcmJ1dHRvbicsIHsgc3RhdGljOiB0cnVlIH0pXG4gICAgcHVibGljIHBpY2tlcmJ1dHRvbjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG5cbiAgICAvKipcbiAgICAgKiBUZXh0Qm94IFBsYWNlaG9sZGVyXG4gICAgICovXG4gICAgQElucHV0KCkgcHVibGljIHBsYWNlaG9sZGVyOiBzdHJpbmcgPSBudWxsO1xuXG4gICAgLyoqXG4gICAgICogUG9zaXRpb24gb2YgdGhlIHBpY2tlciBhcnJvdyBhdCB0aGUgbGVmdFxuICAgICAqL1xuICAgIHB1YmxpYyBwb3NBcnJvd0xlZnQ6IG51bWJlciB8IG51bGwgPSBudWxsO1xuXG4gICAgLyoqXG4gICAgICogUG9zaXRpb24gb2YgdGhlIHBpY2tlciBhcnJvdyBhdCB0aGUgdG9wXG4gICAgICovXG4gICAgcHVibGljIHBvc0Fycm93VG9wOiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICAgIC8qKlxuICAgICAqIFBvc2l0aW9uIG9mIHRoZSBwaWNrZXIgYXQgdGhlIGxlZnRcbiAgICAgKi9cbiAgICBwdWJsaWMgcG9zUG9wdXBMZWZ0ID0gMDtcblxuICAgIC8qKlxuICAgICAqIFBvc2l0aW9uIG9mIHRoZSBwaWNrZXIgYXQgdGhlIHRvcFxuICAgICAqL1xuICAgIHB1YmxpYyBwb3NQb3B1cFRvcCA9IDA7XG5cbiAgICAvKipcbiAgICAgKiBQb3NpdGlvbiBvZiB0aGUgZGF0ZXRpbWUgcGlja2VyLiBWYWx1ZXM6IGxlZnR8dG9wfHJpZ2h0fGJvdHRvbXxhdXRvXG4gICAgICpcbiAgICAgKiBWYWx1ZSAnYXV0bycgY2FuIGJlIGNvbWJpbmVkIHdpdGggYW5vdGhlciB2YWx1ZS5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBwb3NpdGlvbiA9ICdib3R0b21lbmR8dG9wZW5kJztcblxuICAgIC8qKlxuICAgICAqIFJlc291cmNlIEtleSBmb3IgVmFsaWRhdGlvbiBNZXNzYWdlIERhdGVUaW1lRm9ybWF0IGF0IENvbnRyb2xcbiAgICAgKi9cbiAgICBASW5wdXQoKSBwdWJsaWMgdmFsaWRhdGlvbm1lc3NhZ2VkYXRldGltZWZvcm1hdDogc3RyaW5nID0gdGhpcy52YWxpZGF0aW9uS2V5U2VydmljZS5WYWxpZGF0aW9uRXJyb3JEYXRldGltZUZvcm1hdDtcblxuICAgIC8qKlxuICAgICAqIFJlc291cmNlIEtleSBmb3IgVmFsaWRhdGlvbiBNZXNzYWdlIERhdGVUaW1lRm9ybWF0IGluIFZhbGlkYXRpb24gU3VtbWFyeVxuICAgICAqL1xuICAgIEBJbnB1dCgpIHB1YmxpYyB2YWxpZGF0aW9ubWVzc2FnZWRhdGV0aW1lZm9ybWF0c3VtbWFyeTogc3RyaW5nID1cbiAgICAgICAgdGhpcy52YWxpZGF0aW9uS2V5U2VydmljZS5WYWxpZGF0aW9uRXJyb3JTdW1tYXJ5RGF0ZXRpbWVGb3JtYXQ7XG5cbiAgICAvKipcbiAgICAgKiBSZXNvdXJjZSBLZXkgZm9yIFZhbGlkYXRpb24gTWVzc2FnZSBSZXF1aXJlZCBhdCBDb250cm9sXG4gICAgICovXG4gICAgQElucHV0KCkgcHVibGljIHZhbGlkYXRpb25tZXNzYWdlcmVxdWlyZWQ6IHN0cmluZyA9IHRoaXMudmFsaWRhdGlvbktleVNlcnZpY2UuVmFsaWRhdGlvbkVycm9yUmVxdWlyZWQ7XG5cbiAgICAvKipcbiAgICAgKiBSZXNvdXJjZSBLZXkgZm9yIFZhbGlkYXRpb24gTWVzc2FnZSBSZXF1aXJlZCBpbiBWYWxpZGF0aW9uIFN1bW1hcnlcbiAgICAgKi9cbiAgICBASW5wdXQoKSBwdWJsaWMgdmFsaWRhdGlvbm1lc3NhZ2VyZXF1aXJlZHN1bW1hcnk6IHN0cmluZyA9IHRoaXMudmFsaWRhdGlvbktleVNlcnZpY2UuVmFsaWRhdGlvbkVycm9yU3VtbWFyeVJlcXVpcmVkO1xuXG4gICAgLy8gI2VuZHJlZ2lvbiBQcm9wZXJ0aWVzXG5cbiAgICAvLyAjcmVnaW9uIENvbnN0cnVjdG9yc1xuXG4gICAgLyoqXG4gICAgICogQ29uc3RydWN0b3JcbiAgICAgKiBAcGFyYW0gZm9ybWxheW91dCBTYWNGb3JtTGF5b3V0Q29tbW9uIHRvIGRlZmluZSBzY29wZWQgbGF5b3V0IHNldHRpbmdzXG4gICAgICogQHBhcmFtIGluamVjdG9yIEluamVjdG9yIGZvciBpbmplY3Rpbmcgc2VydmljZXNcbiAgICAgKiBAcGFyYW0gZWxlbWVudFJlZiBSZWZlcmVuY2UgdG8gaHRtbCBlbGVtZW50XG4gICAgICogQHBhcmFtIGNkUmVmIENoYW5nZSBkZXRlY3RvciByZWZlcmVuY2UgZm9yIHVwZGF0aW5nIGNvbXBvbmVudCB2aWV3XG4gICAgICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIGZvcm1sYXlvdXQ6IFNhY0Zvcm1MYXlvdXRDb21tb24sXG4gICAgICAgIGluamVjdG9yOiBJbmplY3RvcixcbiAgICAgICAgcHJvdGVjdGVkIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgY2RSZWY6IENoYW5nZURldGVjdG9yUmVmXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKGZvcm1sYXlvdXQsIGluamVjdG9yKTtcbiAgICB9XG5cbiAgICAvLyAjZW5kcmVnaW9uIENvbnN0cnVjdG9yc1xuXG4gICAgLy8gI3JlZ2lvbiBQdWJsaWMgR2V0dGVycyBBbmQgU2V0dGVyc1xuXG4gICAgLyoqXG4gICAgICogU2V0dGVyIGZvciB0aGUgbmFtZSBvZiB0aGUgY29udGFpbmVyIGZvciB0aGUgdG9vbHRpcC4gUmVxdWlyZWQgYmVjYXVzZSB0aGUgdG9vbHRpcCBjYW4gYmUgaGlkZGVuIHZpYSBuZ0lmLlxuICAgICAqL1xuICAgIEBWaWV3Q2hpbGQoJ3BpY2tlcicsIHsgc3RhdGljOiBmYWxzZSB9KVxuICAgIHB1YmxpYyBzZXQgcGlja2VyKHBpY2tlcjogRWxlbWVudFJlZikge1xuICAgICAgICBpZiAocGlja2VyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQocGlja2VyLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5waWNrZXJjb250YWluZXIgPSBwaWNrZXI7XG4gICAgICAgIHRoaXMub25Db250ZW50Q2hhbmdlKCk7XG4gICAgICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgdG9vbHRvcCgpOiBFbGVtZW50UmVmIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGlja2VyY29udGFpbmVyO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHRlciBmb3IgdmFsdWVzdHJpbmdcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IHZhbHVlc3RyaW5nKCk6IHN0cmluZyB7XG4gICAgICAgIGlmICh0aGlzLnZhbHVlID09PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fdmFsdWVBc1N0cmluZztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGRhdGUgPSB0aGlzLm1vbWVudC51dGModGhpcy52YWx1ZSk7XG4gICAgICAgICAgICByZXR1cm4gZGF0ZS5sb2NhbCgpLmZvcm1hdCh0aGlzLkdldERhdGVUaW1lRm9ybWF0U3RyaW5nKCkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGlucHV0IHJlY2VpdmVzIHRoZSB2YWx1ZSBvZiB0eXBlIHN0cmluZ1xuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNldCB2YWx1ZXN0cmluZyh2OiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5fdmFsdWVBc1N0cmluZyA9IHY7XG4gICAgICAgIGxldCBkYXRlOiBtb21lbnRfLk1vbWVudCA9IHRoaXMubW9tZW50KHYsIFt0aGlzLkdldERhdGVUaW1lRm9ybWF0U3RyaW5nKCldLCB0cnVlKTtcblxuICAgICAgICBkYXRlID0gdGhpcy5Nb2RpZnlQYXJzZWREYXRlVGltZVZhbHVlKGRhdGUpLnV0YygpO1xuXG4gICAgICAgIGlmIChkYXRlLmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IGRhdGUudG9EYXRlKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlID0gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHVwZGF0ZSBpbWFrcyByZWZlcmVuY2VcbiAgICAgICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIHRoaXMuaU1hc2subWFza1JlZi51cGRhdGVWYWx1ZSgpO1xuICAgICAgICB0aGlzLmlNYXNrLm1hc2tSZWYudXBkYXRlQ29udHJvbCgpO1xuICAgIH1cblxuICAgIC8vICNlbmRyZWdpb24gUHVibGljIEdldHRlcnMgQW5kIFNldHRlcnNcblxuICAgIC8vICNyZWdpb24gUHVibGljIE1ldGhvZHNcblxuICAgIC8qKlxuICAgICAqIFRoZSBtZXRob2QgcmV0dXJucyBkYXRlVGltZSBhcyBhIHN0cmluZ1xuICAgICAqL1xuICAgIHB1YmxpYyBhYnN0cmFjdCBHZXREYXRlVGltZUZvcm1hdFN0cmluZygpOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBwb3NpdGlvbiBvZiB0aGUgdG9vbHRpcFxuICAgICAqL1xuICAgIHB1YmxpYyBHZXRQaWNrZXJQb3NpdGlvbigpOiBUb29sdGlwUG9zaXRpb24ge1xuICAgICAgICByZXR1cm4gdGhpcy5wb3B1cEhlbHBlci5nZXREaXNwbGF5UG9zaXRpb24oXG4gICAgICAgICAgICB0aGlzLnBpY2tlcmJ1dHRvbixcbiAgICAgICAgICAgIHRoaXMucGlja2VyY29udGFpbmVyLFxuICAgICAgICAgICAgdGhpcy5nZXRBcnJvd1dpZHRoKCksXG4gICAgICAgICAgICB0aGlzLmdldEFycm93SGVpZ2h0KCksXG4gICAgICAgICAgICB0aGlzLnBvc2l0aW9uLFxuICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgbWV0aG9kIG1vZGlmaWVzIHRoZSBlbnRlcmVkIHZhbHVlIG9mIHR5cGUgTW9tZW50XG4gICAgICovXG4gICAgcHVibGljIGFic3RyYWN0IE1vZGlmeVBhcnNlZERhdGVUaW1lVmFsdWUodjogbW9tZW50Xy5Nb21lbnQpOiBtb21lbnRfLk1vbWVudDtcblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIGEgSlNPTiBkYXRlIHN0cmluZyBpbnRvIGEgVVRDIERhdGVUaW1lIG9iamVjdCB0aGF0IGNhbiBiZSB1c2VkIGJ5IHRoZSBjb250cm9sXG4gICAgICogQHBhcmFtIHRpbWVzdGFtcCBEYXRlIHRpbWVzdGFtcCB0byBjb252ZXJ0XG4gICAgICogQHJldHVybnMgTW9tZW50IG9iamVjdCBpbiBVVENcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0RGF0ZSh0aW1lc3RhbXApOiBtb21lbnQuTW9tZW50IHtcbiAgICAgICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKHRpbWVzdGFtcCk7XG4gICAgICAgIGNvbnN0IHllYXIgPSBkYXRlLmdldFVUQ0Z1bGxZZWFyKCk7XG4gICAgICAgIGNvbnN0IG1vbnRoID0gZGF0ZS5nZXRVVENNb250aCgpO1xuICAgICAgICBjb25zdCBkYXkgPSBkYXRlLmdldFVUQ0RhdGUoKTtcbiAgICAgICAgY29uc3QgaG91cnMgPSBkYXRlLmdldFVUQ0hvdXJzKCk7XG4gICAgICAgIGNvbnN0IG1pbnV0ZXMgPSBkYXRlLmdldFVUQ01pbnV0ZXMoKTtcbiAgICAgICAgY29uc3Qgc2Vjb25kcyA9IGRhdGUuZ2V0VVRDU2Vjb25kcygpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLm1vbWVudChEYXRlLlVUQyh5ZWFyLCBtb250aCwgZGF5LCBob3VycywgbWludXRlcywgc2Vjb25kcykpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENhbGN1bGF0ZXMgdGhlIGhlaWdodCBvZiB0aGUgdG9vbHRpcFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRQaWNrZXJIZWlnaHQoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucG9wdXBIZWxwZXIuZ2V0UG9wdXBIZWlnaHQodGhpcy5waWNrZXJjb250YWluZXIpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENhbGN1bGF0ZXMgdGhlIHdpZHRoIG9mIHRoZSBwaWNrZXJcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0UGlja2VyV2lkdGgoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucG9wdXBIZWxwZXIuZ2V0UG9wdXBXaWR0aCh0aGlzLnBpY2tlcmNvbnRhaW5lcik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2xlYW4gdXAgcmVzb3VyY2VzIHdoZW4gdGhlIGNvbnRyb2wgaXMgZGVzdHJveWVkLlxuICAgICAqXG4gICAgICogUmVtb3ZlcyB0aGUgcGlja2VyIGVsZW1lbnQgZnJvbSB0aGUgRE9NIGlmIHZpc2libGUgYW5kIHVucmVnaXN0ZXJzIGdsb2JhbCByZXNpemUvc2Nyb2xsIGxpc3RlbmVycy5cbiAgICAgKi9cbiAgICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIC8vIFJlbW92ZSBQaWNrZXIgaWYgaXMgdmlzaWJsZVxuICAgICAgICBpZiAodGhpcy5fc2hvd3NlbGVjdG9yICYmIHRoaXMucGlja2VyY29udGFpbmVyPy5uYXRpdmVFbGVtZW50KSB7XG4gICAgICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKHRoaXMucGlja2VyY29udGFpbmVyLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gVW5yZWdpc3RlciBFdmVudCBMaXN0ZW5lclxuICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdGhpcy5vbkNvbnRlbnRDaGFuZ2UsIHRydWUpO1xuICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdGhpcy5vbkNvbnRlbnRDaGFuZ2UsIHRydWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEluaXQgRXZlbnRcbiAgICAgKi9cbiAgICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgICAgIHRoaXMuc2V0RGF0ZVRpbWVGb3JtYXQoKTtcblxuICAgICAgICAvLyBSZWdpc3RlciBFdmVudCBMaXN0ZW5lclxuICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdGhpcy5vbkNvbnRlbnRDaGFuZ2UsIHRydWUpO1xuICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdGhpcy5vbkNvbnRlbnRDaGFuZ2UsIHRydWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIHZhbHVlIG9mIHR5cGUgc3RyaW5nIHRvIHRoZSBwcm9wZXJ0eSB2YWx1ZXN0cmluZ1xuICAgICAqIEBwYXJhbSB2IFN0cmluZyB2YWx1ZSB0byBzZXRcbiAgICAgKi9cbiAgICBwdWJsaWMgc2V0VmFsdWVTdHJpbmcodjogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMudmFsdWVzdHJpbmcgPSB2O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFZhbGlkYXRlcyB0aGUgZGF0ZXRpbWUgY29udHJvbCB2YWx1ZSBmb3JtYXQgYW5kIHJlcXVpcmVkIHN0YXR1cy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBjIEFic3RyYWN0Q29udHJvbCBpbnN0YW5jZSB0byB2YWxpZGF0ZS5cbiAgICAgKiBAcmV0dXJucyBWYWxpZGF0aW9uRXJyb3JzIGlmIGludmFsaWQsIG90aGVyd2lzZSBudWxsLlxuICAgICAqL1xuICAgIHB1YmxpYyB2YWxpZGF0ZURhdGEoYzogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICAgICAgICBsZXQgZXJyb3I6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0gbnVsbDtcblxuICAgICAgICBpZiAodGhpcy52YWx1ZXN0cmluZyAhPT0gbnVsbCAmJiB0aGlzLnZhbHVlc3RyaW5nLmluZGV4T2YoJ18nKSA+PSAwKSB7XG4gICAgICAgICAgICBlcnJvciA9IENyZWF0ZVZhbGlkYXRpb25FcnJvcihcbiAgICAgICAgICAgICAgICAnaW52YWxpZHR5cGUnLFxuICAgICAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvbm1lc3NhZ2VkYXRldGltZWZvcm1hdCxcbiAgICAgICAgICAgICAgICB0aGlzLnZhbGlkYXRpb25tZXNzYWdlZGF0ZXRpbWVmb3JtYXRzdW1tYXJ5XG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3I7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBlcnJvciA9IFZhbGlkYXRpb24uaXNWYWxpZERhdGUoXG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRpb25tZXNzYWdlZGF0ZXRpbWVmb3JtYXQsXG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRpb25tZXNzYWdlZGF0ZXRpbWVmb3JtYXRzdW1tYXJ5XG4gICAgICAgICkoYyk7XG5cbiAgICAgICAgaWYgKHRoaXMuaXNyZXF1aXJlZCkge1xuICAgICAgICAgICAgZXJyb3IgPSBWYWxpZGF0aW9uLnJlcXVpcmVkKHRoaXMudmFsaWRhdGlvbm1lc3NhZ2VyZXF1aXJlZCwgdGhpcy52YWxpZGF0aW9ubWVzc2FnZXJlcXVpcmVkc3VtbWFyeSkoYyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZXJyb3I7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogT3ZlcndyaXRlIFdyaXRlVmFsdWUgdG8gU2V0IGNvcnJlY3QgRGF0ZSBPYmplY3RcbiAgICAgKiBAcGFyYW0gdmFsdWUgRGF0ZSBvciBzdHJpbmcgdmFsdWUgdG8gd3JpdGUgdG8gdGhlIGNvbnRyb2xcbiAgICAgKi9cbiAgICBwdWJsaWMgd3JpdGVWYWx1ZSh2YWx1ZTogRGF0ZSB8IHN0cmluZykge1xuICAgICAgICBpZiAodmFsdWUgPT09ICcnIHx8IHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIC8vIFJlc2V0IHZhbHVlIHN0cmluZyBzbyB0aGF0IHdoZW4gdGhlIG1vZGVsIGlzIHVwZGF0ZWQgdGhlIGlucHV0IGZpZWxkIGlzIGFsc28gY2xlYXJlZC5cbiAgICAgICAgICAgIHRoaXMuX3ZhbHVlQXNTdHJpbmcgPSAnJztcbiAgICAgICAgICAgIC8vIFNldCBJbnRlcm5hbCBQcm9wZXJ0eVxuICAgICAgICAgICAgdGhpcy5fdmFsdWUgPSBudWxsO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fdmFsdWUgPSB0aGlzLmdldERhdGUodmFsdWUpLnRvRGF0ZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgc3VwZXIud3JpdGVWYWx1ZSh0aGlzLl92YWx1ZSk7XG5cbiAgICAgICAgLy8gZm9yY2UgZGV0ZWN0IGNoYW5nZXMgYW5kIHVwZGF0ZSBpbWFzayBkaXJlY3RpdmVcbiAgICAgICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIHRoaXMuaU1hc2subWFza1JlZi51cGRhdGVWYWx1ZSgpO1xuICAgIH1cblxuICAgIC8vICNlbmRyZWdpb24gUHVibGljIE1ldGhvZHNcblxuICAgIC8vICNyZWdpb24gUHJvdGVjdGVkIE1ldGhvZHNcblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIGhlaWdodCBvZiB0aGUgYXJyb3cgZWxlbWVudFxuICAgICAqIEByZXR1cm5zIFRoZSBoZWlnaHQgaW4gcGl4ZWxzIG9mIHRoZSBhcnJvdyBlbGVtZW50LCBvciAwIGlmIG5vdCBwcmVzZW50XG4gICAgICovXG4gICAgcHJvdGVjdGVkIGdldEFycm93SGVpZ2h0KCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLnBpY2tlcmFycm93ID8gdGhpcy5waWNrZXJhcnJvdy5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodCA6IDA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgd2lkdGggb2YgdGhlIGFycm93IGVsZW1lbnRcbiAgICAgKiBAcmV0dXJucyBUaGUgd2lkdGggaW4gcGl4ZWxzIG9mIHRoZSBhcnJvdyBlbGVtZW50LCBvciAwIGlmIG5vdCBwcmVzZW50XG4gICAgICovXG4gICAgcHJvdGVjdGVkIGdldEFycm93V2lkdGgoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGlja2VyYXJyb3cgPyB0aGlzLnBpY2tlcmFycm93Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGggOiAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENhbGN1bGF0ZXMgdGhlIHBvc2l0aW9uIG9mIHRoZSB0b29sdGlwIGZyb20gbGlua3NcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgZ2V0UG9zaXRpb25MZWZ0KCk6IG51bWJlciB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5wb3B1cEhlbHBlci5nZXRQb3NpdGlvbkxlZnQoXG4gICAgICAgICAgICB0aGlzLnBpY2tlcmJ1dHRvbixcbiAgICAgICAgICAgIHRoaXMucGlja2VyY29udGFpbmVyLFxuICAgICAgICAgICAgdGhpcy5lbGVtZW50UmVmLFxuICAgICAgICAgICAgdGhpcy5nZXRBcnJvd1dpZHRoKCksXG4gICAgICAgICAgICB0aGlzLmdldEFycm93SGVpZ2h0KCksXG4gICAgICAgICAgICB0aGlzLnBvc2l0aW9uLFxuICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgKTtcblxuICAgICAgICAvLyBFbnN1cmUgdGhhdCBwb3AtdXBzIG5ldmVyIGFwcGVhciBvdXRzaWRlIHRoZSB2aXNpYmxlIGFyZWEgb24gdGhlIGxlZnRcbiAgICAgICAgaWYgKHZhbHVlIDwgMCkge1xuICAgICAgICAgICAgdGhpcy5wb3NQb3B1cExlZnQgPSA1O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5wb3NQb3B1cExlZnQgPSB2YWx1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHN3aXRjaCAodGhpcy5HZXRQaWNrZXJQb3NpdGlvbigpKSB7XG4gICAgICAgICAgICBjYXNlIFRvb2x0aXBQb3NpdGlvbi50b3A6XG4gICAgICAgICAgICBjYXNlIFRvb2x0aXBQb3NpdGlvbi5ib3R0b206XG4gICAgICAgICAgICAgICAgdGhpcy5wb3NBcnJvd0xlZnQgPSB0aGlzLmdldFBpY2tlcldpZHRoKCkgLyAyIC0gLXRoaXMuZ2V0QXJyb3dXaWR0aCgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBUb29sdGlwUG9zaXRpb24udG9wZW5kOlxuICAgICAgICAgICAgY2FzZSBUb29sdGlwUG9zaXRpb24uYm90dG9tZW5kOlxuICAgICAgICAgICAgICAgIHRoaXMucG9zQXJyb3dMZWZ0ID1cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRQaWNrZXJXaWR0aCgpIC1cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRBcnJvd1dpZHRoKCkgLyAyIC1cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wb3B1cEhlbHBlci5nZXRDb250YWluZXJXaWR0aCh0aGlzLnBpY2tlcmJ1dHRvbiwgZmFsc2UpIC8gMjtcblxuICAgICAgICAgICAgICAgIC8vIENvcnJlY3Rpb24gYnkgQXJyb3cgaWYgcG9wdXAgaXMgb3V0c2lkZSB0aGUgbGVmdCBtYXJnaW5cbiAgICAgICAgICAgICAgICBpZiAodmFsdWUgPCAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucG9zQXJyb3dMZWZ0IC09IHZhbHVlICogLTEgKyA1O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgdGhpcy5wb3NBcnJvd0xlZnQgPSBudWxsO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENhbGN1bGF0ZXMgdGhlIHBvc2l0aW9uIG9mIHRoZSB0b29sdGlwIGZyb20gdGhlIHRvcFxuICAgICAqL1xuICAgIHByb3RlY3RlZCBnZXRQb3NpdGlvblRvcCgpOiBudW1iZXIge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMucG9wdXBIZWxwZXIuZ2V0UG9zaXRpb25Ub3AoXG4gICAgICAgICAgICB0aGlzLnBpY2tlcmJ1dHRvbixcbiAgICAgICAgICAgIHRoaXMucGlja2VyY29udGFpbmVyLFxuICAgICAgICAgICAgdGhpcy5lbGVtZW50UmVmLFxuICAgICAgICAgICAgdGhpcy5nZXRBcnJvd1dpZHRoKCksXG4gICAgICAgICAgICB0aGlzLmdldEFycm93SGVpZ2h0KCksXG4gICAgICAgICAgICB0aGlzLnBvc2l0aW9uLFxuICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5wb3NQb3B1cFRvcCA9IHZhbHVlO1xuXG4gICAgICAgIHN3aXRjaCAodGhpcy5HZXRQaWNrZXJQb3NpdGlvbigpKSB7XG4gICAgICAgICAgICBjYXNlIFRvb2x0aXBQb3NpdGlvbi5sZWZ0OlxuICAgICAgICAgICAgY2FzZSBUb29sdGlwUG9zaXRpb24ucmlnaHQ6XG4gICAgICAgICAgICAgICAgdGhpcy5wb3NBcnJvd1RvcCA9IHRoaXMuZ2V0UGlja2VySGVpZ2h0KCkgLyAyIC0gNi41O1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICB0aGlzLnBvc0Fycm93VG9wID0gbnVsbDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICAvLyAjZW5kcmVnaW9uIFByb3RlY3RlZCBNZXRob2RzXG5cbiAgICAvLyAjcmVnaW9uIFByaXZhdGUgTWV0aG9kc1xuXG4gICAgLyoqXG4gICAgICogbWV0aG9kIGlmIGNvbnRlbnQgaGFzIGNoYW5nZWQgYW5kIHByb3BvcnRpb25zIG5lZWQgdG8gYmUgcmVzZXQgaW4gdGhlIFVJLlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgb25Db250ZW50Q2hhbmdlID0gKCk6IHZvaWQgPT4ge1xuICAgICAgICAvLyBEbyBub3RoaW5nIGlmIGlzIG5vdCB2aXNpYmxlXG4gICAgICAgIGlmICghdGhpcy5fc2hvd3NlbGVjdG9yKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZ2V0UG9zaXRpb25MZWZ0KCk7XG4gICAgICAgICAgICB0aGlzLmdldFBvc2l0aW9uVG9wKCk7XG4gICAgICAgIH0pO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBkYXRlLXRpbWUgZm9ybWF0IHN0cmluZyBmcm9tIHRoZSBjb25maWd1cmVkIGZvcm1hdCBwcm9wZXJ0eVxuICAgICAqL1xuICAgIHByaXZhdGUgc2V0RGF0ZVRpbWVGb3JtYXQoKTogdm9pZCB7XG4gICAgICAgIC8vIEhBQ0s6IEFkZCBhZGRpdGlvbiBwcm9wZXJ0eSB0byBGb3JtQ29udHJvbC4gQ2FuIGJlIGZpeGVkIGlmIHNvbHV0aW9uIGZvciB0aWNrZXQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvaXNzdWVzLzE5Njg2XG4gICAgICAgIGlmICh0aGlzLm5nQ29udHJvbCkge1xuICAgICAgICAgICAgKHRoaXMubmdDb250cm9sIGFzIHVua25vd24gYXMgSURhdGVUaW1lQ29udHJvbCkuZGF0ZXRpbWVmb3JtYXRzdHJpbmcgPSB0aGlzLkdldERhdGVUaW1lRm9ybWF0U3RyaW5nKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyAjZW5kcmVnaW9uIFByaXZhdGUgTWV0aG9kc1xufVxuIl19
114
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb3ZfMTkzemJxbnM3ayIsImFjdHVhbENvdmVyYWdlIiwiVG9vbHRpcFBvc2l0aW9uIiwiUG9wVXBIZWxwZXIiLCJWYWxpZGF0aW9uIiwiQ3JlYXRlVmFsaWRhdGlvbkVycm9yIiwiU2FjQmFzZU1vZGVsQ29udHJvbCIsIkRpcmVjdGl2ZSIsIklucHV0IiwiVmlld0NoaWxkIiwiSU1hc2tEaXJlY3RpdmUiLCJtb21lbnRfIiwiU2FjQmFzZURhdGVUaW1lQ29udHJvbCIsImNvbnN0cnVjdG9yIiwiZm9ybWxheW91dCIsImluamVjdG9yIiwiZWxlbWVudFJlZiIsImNkUmVmIiwiZiIsInMiLCJwb3B1cEhlbHBlciIsIl92YWx1ZUFzU3RyaW5nIiwiX3Nob3dzZWxlY3RvciIsImlzcmVxdWlyZWQiLCJtb21lbnQiLCJwaWNrZXJQb3NpdGlvbiIsInBsYWNlaG9sZGVyIiwicG9zQXJyb3dMZWZ0IiwicG9zQXJyb3dUb3AiLCJwb3NQb3B1cExlZnQiLCJwb3NQb3B1cFRvcCIsInBvc2l0aW9uIiwidmFsaWRhdGlvbm1lc3NhZ2VkYXRldGltZWZvcm1hdCIsInZhbGlkYXRpb25LZXlTZXJ2aWNlIiwiVmFsaWRhdGlvbkVycm9yRGF0ZXRpbWVGb3JtYXQiLCJ2YWxpZGF0aW9ubWVzc2FnZWRhdGV0aW1lZm9ybWF0c3VtbWFyeSIsIlZhbGlkYXRpb25FcnJvclN1bW1hcnlEYXRldGltZUZvcm1hdCIsInZhbGlkYXRpb25tZXNzYWdlcmVxdWlyZWQiLCJWYWxpZGF0aW9uRXJyb3JSZXF1aXJlZCIsInZhbGlkYXRpb25tZXNzYWdlcmVxdWlyZWRzdW1tYXJ5IiwiVmFsaWRhdGlvbkVycm9yU3VtbWFyeVJlcXVpcmVkIiwib25Db250ZW50Q2hhbmdlIiwiYiIsInNldFRpbWVvdXQiLCJnZXRQb3NpdGlvbkxlZnQiLCJnZXRQb3NpdGlvblRvcCIsInBpY2tlciIsInVuZGVmaW5lZCIsImRvY3VtZW50IiwiYm9keSIsImFwcGVuZENoaWxkIiwibmF0aXZlRWxlbWVudCIsInBpY2tlcmNvbnRhaW5lciIsImRldGVjdENoYW5nZXMiLCJ0b29sdG9wIiwidmFsdWVzdHJpbmciLCJ2YWx1ZSIsImRhdGUiLCJ1dGMiLCJsb2NhbCIsImZvcm1hdCIsIkdldERhdGVUaW1lRm9ybWF0U3RyaW5nIiwidiIsIk1vZGlmeVBhcnNlZERhdGVUaW1lVmFsdWUiLCJpc1ZhbGlkIiwidG9EYXRlIiwiaU1hc2siLCJtYXNrUmVmIiwidXBkYXRlVmFsdWUiLCJ1cGRhdGVDb250cm9sIiwiR2V0UGlja2VyUG9zaXRpb24iLCJnZXREaXNwbGF5UG9zaXRpb24iLCJwaWNrZXJidXR0b24iLCJnZXRBcnJvd1dpZHRoIiwiZ2V0QXJyb3dIZWlnaHQiLCJnZXREYXRlIiwidGltZXN0YW1wIiwiRGF0ZSIsInllYXIiLCJnZXRVVENGdWxsWWVhciIsIm1vbnRoIiwiZ2V0VVRDTW9udGgiLCJkYXkiLCJnZXRVVENEYXRlIiwiaG91cnMiLCJnZXRVVENIb3VycyIsIm1pbnV0ZXMiLCJnZXRVVENNaW51dGVzIiwic2Vjb25kcyIsImdldFVUQ1NlY29uZHMiLCJVVEMiLCJnZXRQaWNrZXJIZWlnaHQiLCJnZXRQb3B1cEhlaWdodCIsImdldFBpY2tlcldpZHRoIiwiZ2V0UG9wdXBXaWR0aCIsIm5nT25EZXN0cm95IiwicmVtb3ZlQ2hpbGQiLCJ3aW5kb3ciLCJyZW1vdmVFdmVudExpc3RlbmVyIiwibmdPbkluaXQiLCJzZXREYXRlVGltZUZvcm1hdCIsImFkZEV2ZW50TGlzdGVuZXIiLCJzZXRWYWx1ZVN0cmluZyIsInZhbGlkYXRlRGF0YSIsImMiLCJlcnJvciIsImluZGV4T2YiLCJpc1ZhbGlkRGF0ZSIsInJlcXVpcmVkIiwid3JpdGVWYWx1ZSIsIl92YWx1ZSIsInBpY2tlcmFycm93Iiwib2Zmc2V0SGVpZ2h0Iiwib2Zmc2V0V2lkdGgiLCJ0b3AiLCJib3R0b20iLCJ0b3BlbmQiLCJib3R0b21lbmQiLCJnZXRDb250YWluZXJXaWR0aCIsImxlZnQiLCJyaWdodCIsIm5nQ29udHJvbCIsImRhdGV0aW1lZm9ybWF0c3RyaW5nIiwiZGVwcyIsInRva2VuIiwiaTEiLCJTYWNGb3JtTGF5b3V0Q29tbW9uIiwiaTAiLCJJbmplY3RvciIsIkVsZW1lbnRSZWYiLCJDaGFuZ2VEZXRlY3RvclJlZiIsInRhcmdldCIsIsm1ybVGYWN0b3J5VGFyZ2V0IiwiaW5wdXRzIiwidmlld1F1ZXJpZXMiLCJwcm9wZXJ0eU5hbWUiLCJmaXJzdCIsInByZWRpY2F0ZSIsImRlc2NlbmRhbnRzIiwic3RhdGljIiwidXNlc0luaGVyaXRhbmNlIiwibmdJbXBvcnQiLCJkZWNvcmF0b3JzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvc2FjLWNvbW1vbi9zcmMvY29tbW9uL2Jhc2VkYXRldGltZWNvbnRyb2wudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2FjRm9ybUxheW91dENvbW1vbiB9IGZyb20gJy4uL2NvbnRyb2xzL2xheW91dC9mb3JtbGF5b3V0JztcbmltcG9ydCB7IElEYXRlVGltZUNvbnRyb2wgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2lkYXRldGltZWNvbnRyb2wnO1xuaW1wb3J0IHsgVG9vbHRpcFBvc2l0aW9uIH0gZnJvbSAnLi4vdXRpbGl0aWVzL2VudW1zJztcbmltcG9ydCB7IFBvcFVwSGVscGVyIH0gZnJvbSAnLi4vdXRpbGl0aWVzL3BvcHVwaGVscGVyJztcbmltcG9ydCB7IFZhbGlkYXRpb24gfSBmcm9tICcuLi92YWxpZGF0aW9uJztcbmltcG9ydCB7IENyZWF0ZVZhbGlkYXRpb25FcnJvciB9IGZyb20gJy4uL3ZhbGlkYXRpb24vdmFsaWRhdGlvbmVycm9yY3JlYXRvcic7XG5pbXBvcnQgeyBTYWNCYXNlTW9kZWxDb250cm9sIH0gZnJvbSAnLi9iYXNlbW9kZWxjb250cm9sJztcbmltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEluamVjdG9yLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBWYWxpZGF0aW9uRXJyb3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgSU1hc2tEaXJlY3RpdmUgfSBmcm9tICdhbmd1bGFyLWltYXNrJztcbmltcG9ydCAqIGFzIG1vbWVudF8gZnJvbSAnbW9tZW50JztcblxuLyoqXG4gKiBCYXNlIGNsYXNzIGZvciBEYXRlL1RpbWUgY29udHJvbHNcbiAqL1xuQERpcmVjdGl2ZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgU2FjQmFzZURhdGVUaW1lQ29udHJvbCBleHRlbmRzIFNhY0Jhc2VNb2RlbENvbnRyb2w8RGF0ZT4gaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gICAgLy8gI3JlZ2lvbiBQcm9wZXJ0aWVzXG5cbiAgICAvKipcbiAgICAgKiBIZWxwZXIgY2xhc3MgdG8gZGlzcGxheSB0b29sdGlwcyBpbiB0aGUgY29ycmVjdCBwb3NpdGlvblxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcG9wdXBIZWxwZXI6IFBvcFVwSGVscGVyID0gbmV3IFBvcFVwSGVscGVyKCk7XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIHByb3BlcnR5IGNvbnRhaW5zIHRoZSB2YWx1ZSBhcyBhIHN0cmluZy4gRGVmYXVsdCBpcyAnJ1xuICAgICAqL1xuICAgIHByb3RlY3RlZCBfdmFsdWVBc1N0cmluZyA9ICcnO1xuXG4gICAgLyoqXG4gICAgICogQ29udGFpbmVycyBmb3IgdGhlIGRhdGV0aW1lIHBpY2tlclxuICAgICAqL1xuICAgIHByb3RlY3RlZCBwaWNrZXJjb250YWluZXI6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gICAgLyoqXG4gICAgICogUHJvcGVydHkgZm9yIGVudW0gaW4gQW5ndWxhciBIVE1MIHRlbXBsYXRlXG4gICAgICovXG4gICAgcHVibGljIFRvb2x0aXBQb3NpdGlvbiA9IFRvb2x0aXBQb3NpdGlvbjtcblxuICAgIC8qKlxuICAgICAqIERlZmluZXMgd2hldGhlciB0aGUgZGF0ZSBzZWxlY3RvciBpcyBkaXNwbGF5ZWRcbiAgICAgKi9cbiAgICBwdWJsaWMgX3Nob3dzZWxlY3RvciA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogUmVmZXJlbmNlIHRvIGltYXNrIGRpcmVjdGl2ZSBpbiBhbnkgZGF0ZXRpbWUgY29udHJvbHNcbiAgICAgKi9cbiAgICBAVmlld0NoaWxkKElNYXNrRGlyZWN0aXZlLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgICBwdWJsaWMgaU1hc2s6IElNYXNrRGlyZWN0aXZlPGFueT47XG5cbiAgICAvKipcbiAgICAgKiBEZWZpbmVzIHRoZSBjb250cm9sIGFzIHJlcXVpcmVkXG4gICAgICovXG4gICAgQElucHV0KCkgcHVibGljIGlzcmVxdWlyZWQgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIE1vbWVudCBKUyBJbnN0YW5jZVxuICAgICAqL1xuICAgIHB1YmxpYyBtb21lbnQgPSBtb21lbnRfWydkZWZhdWx0J107XG5cbiAgICAvKipcbiAgICAgKiBBcnJvdyBJdGVtIG9mIFBpY2tlciBFbGVtZW50LiBSZXF1aXJlZCB0byBzZXQgdGhlIHBvc2l0aW9uIG9mIGFycm93IGNvcnJlY3RseVxuICAgICAqL1xuICAgIHB1YmxpYyBwaWNrZXJQb3NpdGlvbiA9IFRvb2x0aXBQb3NpdGlvbjtcblxuICAgIC8qKlxuICAgICAqIFJlZmVyZW5jZSB0byB0aGUgcGlja2VyIGFycm93IGVsZW1lbnQgdXNlZCBmb3IgY2FsY3VsYXRpbmcgdG9vbHRpcCBhcnJvdyBwb3NpdGlvbi5cbiAgICAgKi9cbiAgICBAVmlld0NoaWxkKCdwaWNrZXJhcnJvdycsIHsgc3RhdGljOiBmYWxzZSB9KVxuICAgIHB1YmxpYyBwaWNrZXJhcnJvdzogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4gfCBudWxsO1xuXG4gICAgLyoqXG4gICAgICogTmFtZSBvZiB0aGUgY29udGFpbmVyIGZvciBjb250ZW50IChlLmcuIGljb24pIG9uIHdoaWNoIHRoZSB0b29sdGlwIGlzIGRpc3BsYXllZC5cbiAgICAgKi9cbiAgICBAVmlld0NoaWxkKCdwaWNrZXJidXR0b24nLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICAgIHB1YmxpYyBwaWNrZXJidXR0b246IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gICAgLyoqXG4gICAgICogVGV4dEJveCBQbGFjZWhvbGRlclxuICAgICAqL1xuICAgIEBJbnB1dCgpIHB1YmxpYyBwbGFjZWhvbGRlcjogc3RyaW5nID0gbnVsbDtcblxuICAgIC8qKlxuICAgICAqIFBvc2l0aW9uIG9mIHRoZSBwaWNrZXIgYXJyb3cgYXQgdGhlIGxlZnRcbiAgICAgKi9cbiAgICBwdWJsaWMgcG9zQXJyb3dMZWZ0OiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICAgIC8qKlxuICAgICAqIFBvc2l0aW9uIG9mIHRoZSBwaWNrZXIgYXJyb3cgYXQgdGhlIHRvcFxuICAgICAqL1xuICAgIHB1YmxpYyBwb3NBcnJvd1RvcDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG5cbiAgICAvKipcbiAgICAgKiBQb3NpdGlvbiBvZiB0aGUgcGlja2VyIGF0IHRoZSBsZWZ0XG4gICAgICovXG4gICAgcHVibGljIHBvc1BvcHVwTGVmdCA9IDA7XG5cbiAgICAvKipcbiAgICAgKiBQb3NpdGlvbiBvZiB0aGUgcGlja2VyIGF0IHRoZSB0b3BcbiAgICAgKi9cbiAgICBwdWJsaWMgcG9zUG9wdXBUb3AgPSAwO1xuXG4gICAgLyoqXG4gICAgICogUG9zaXRpb24gb2YgdGhlIGRhdGV0aW1lIHBpY2tlci4gVmFsdWVzOiBsZWZ0fHRvcHxyaWdodHxib3R0b218YXV0b1xuICAgICAqXG4gICAgICogVmFsdWUgJ2F1dG8nIGNhbiBiZSBjb21iaW5lZCB3aXRoIGFub3RoZXIgdmFsdWUuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgcG9zaXRpb24gPSAnYm90dG9tZW5kfHRvcGVuZCc7XG5cbiAgICAvKipcbiAgICAgKiBSZXNvdXJjZSBLZXkgZm9yIFZhbGlkYXRpb24gTWVzc2FnZSBEYXRlVGltZUZvcm1hdCBhdCBDb250cm9sXG4gICAgICovXG4gICAgQElucHV0KCkgcHVibGljIHZhbGlkYXRpb25tZXNzYWdlZGF0ZXRpbWVmb3JtYXQ6IHN0cmluZyA9IHRoaXMudmFsaWRhdGlvbktleVNlcnZpY2UuVmFsaWRhdGlvbkVycm9yRGF0ZXRpbWVGb3JtYXQ7XG5cbiAgICAvKipcbiAgICAgKiBSZXNvdXJjZSBLZXkgZm9yIFZhbGlkYXRpb24gTWVzc2FnZSBEYXRlVGltZUZvcm1hdCBpbiBWYWxpZGF0aW9uIFN1bW1hcnlcbiAgICAgKi9cbiAgICBASW5wdXQoKSBwdWJsaWMgdmFsaWRhdGlvbm1lc3NhZ2VkYXRldGltZWZvcm1hdHN1bW1hcnk6IHN0cmluZyA9XG4gICAgICAgIHRoaXMudmFsaWRhdGlvbktleVNlcnZpY2UuVmFsaWRhdGlvbkVycm9yU3VtbWFyeURhdGV0aW1lRm9ybWF0O1xuXG4gICAgLyoqXG4gICAgICogUmVzb3VyY2UgS2V5IGZvciBWYWxpZGF0aW9uIE1lc3NhZ2UgUmVxdWlyZWQgYXQgQ29udHJvbFxuICAgICAqL1xuICAgIEBJbnB1dCgpIHB1YmxpYyB2YWxpZGF0aW9ubWVzc2FnZXJlcXVpcmVkOiBzdHJpbmcgPSB0aGlzLnZhbGlkYXRpb25LZXlTZXJ2aWNlLlZhbGlkYXRpb25FcnJvclJlcXVpcmVkO1xuXG4gICAgLyoqXG4gICAgICogUmVzb3VyY2UgS2V5IGZvciBWYWxpZGF0aW9uIE1lc3NhZ2UgUmVxdWlyZWQgaW4gVmFsaWRhdGlvbiBTdW1tYXJ5XG4gICAgICovXG4gICAgQElucHV0KCkgcHVibGljIHZhbGlkYXRpb25tZXNzYWdlcmVxdWlyZWRzdW1tYXJ5OiBzdHJpbmcgPSB0aGlzLnZhbGlkYXRpb25LZXlTZXJ2aWNlLlZhbGlkYXRpb25FcnJvclN1bW1hcnlSZXF1aXJlZDtcblxuICAgIC8vICNlbmRyZWdpb24gUHJvcGVydGllc1xuXG4gICAgLy8gI3JlZ2lvbiBDb25zdHJ1Y3RvcnNcblxuICAgIC8qKlxuICAgICAqIENvbnN0cnVjdG9yXG4gICAgICogQHBhcmFtIGZvcm1sYXlvdXQgU2FjRm9ybUxheW91dENvbW1vbiB0byBkZWZpbmUgc2NvcGVkIGxheW91dCBzZXR0aW5nc1xuICAgICAqIEBwYXJhbSBpbmplY3RvciBJbmplY3RvciBmb3IgaW5qZWN0aW5nIHNlcnZpY2VzXG4gICAgICogQHBhcmFtIGVsZW1lbnRSZWYgUmVmZXJlbmNlIHRvIGh0bWwgZWxlbWVudFxuICAgICAqIEBwYXJhbSBjZFJlZiBDaGFuZ2UgZGV0ZWN0b3IgcmVmZXJlbmNlIGZvciB1cGRhdGluZyBjb21wb25lbnQgdmlld1xuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBmb3JtbGF5b3V0OiBTYWNGb3JtTGF5b3V0Q29tbW9uLFxuICAgICAgICBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgICAgIHByb3RlY3RlZCBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGNkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZlxuICAgICkge1xuICAgICAgICBzdXBlcihmb3JtbGF5b3V0LCBpbmplY3Rvcik7XG4gICAgfVxuXG4gICAgLy8gI2VuZHJlZ2lvbiBDb25zdHJ1Y3RvcnNcblxuICAgIC8vICNyZWdpb24gUHVibGljIEdldHRlcnMgQW5kIFNldHRlcnNcblxuICAgIC8qKlxuICAgICAqIFNldHRlciBmb3IgdGhlIG5hbWUgb2YgdGhlIGNvbnRhaW5lciBmb3IgdGhlIHRvb2x0aXAuIFJlcXVpcmVkIGJlY2F1c2UgdGhlIHRvb2x0aXAgY2FuIGJlIGhpZGRlbiB2aWEgbmdJZi5cbiAgICAgKi9cbiAgICBAVmlld0NoaWxkKCdwaWNrZXInLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgICBwdWJsaWMgc2V0IHBpY2tlcihwaWNrZXI6IEVsZW1lbnRSZWYpIHtcbiAgICAgICAgaWYgKHBpY2tlciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHBpY2tlci5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucGlja2VyY29udGFpbmVyID0gcGlja2VyO1xuICAgICAgICB0aGlzLm9uQ29udGVudENoYW5nZSgpO1xuICAgICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHRvb2x0b3AoKTogRWxlbWVudFJlZiB7XG4gICAgICAgIHJldHVybiB0aGlzLnBpY2tlcmNvbnRhaW5lcjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXR0ZXIgZm9yIHZhbHVlc3RyaW5nXG4gICAgICovXG4gICAgcHVibGljIGdldCB2YWx1ZXN0cmluZygpOiBzdHJpbmcge1xuICAgICAgICBpZiAodGhpcy52YWx1ZSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3ZhbHVlQXNTdHJpbmc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBkYXRlID0gdGhpcy5tb21lbnQudXRjKHRoaXMudmFsdWUpO1xuICAgICAgICAgICAgcmV0dXJuIGRhdGUubG9jYWwoKS5mb3JtYXQodGhpcy5HZXREYXRlVGltZUZvcm1hdFN0cmluZygpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBpbnB1dCByZWNlaXZlcyB0aGUgdmFsdWUgb2YgdHlwZSBzdHJpbmdcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzZXQgdmFsdWVzdHJpbmcodjogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuX3ZhbHVlQXNTdHJpbmcgPSB2O1xuICAgICAgICBsZXQgZGF0ZTogbW9tZW50Xy5Nb21lbnQgPSB0aGlzLm1vbWVudCh2LCBbdGhpcy5HZXREYXRlVGltZUZvcm1hdFN0cmluZygpXSwgdHJ1ZSk7XG5cbiAgICAgICAgZGF0ZSA9IHRoaXMuTW9kaWZ5UGFyc2VkRGF0ZVRpbWVWYWx1ZShkYXRlKS51dGMoKTtcblxuICAgICAgICBpZiAoZGF0ZS5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSBkYXRlLnRvRGF0ZSgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICAvLyB1cGRhdGUgaW1ha3MgcmVmZXJlbmNlXG4gICAgICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB0aGlzLmlNYXNrLm1hc2tSZWYudXBkYXRlVmFsdWUoKTtcbiAgICAgICAgdGhpcy5pTWFzay5tYXNrUmVmLnVwZGF0ZUNvbnRyb2woKTtcbiAgICB9XG5cbiAgICAvLyAjZW5kcmVnaW9uIFB1YmxpYyBHZXR0ZXJzIEFuZCBTZXR0ZXJzXG5cbiAgICAvLyAjcmVnaW9uIFB1YmxpYyBNZXRob2RzXG5cbiAgICAvKipcbiAgICAgKiBUaGUgbWV0aG9kIHJldHVybnMgZGF0ZVRpbWUgYXMgYSBzdHJpbmdcbiAgICAgKi9cbiAgICBwdWJsaWMgYWJzdHJhY3QgR2V0RGF0ZVRpbWVGb3JtYXRTdHJpbmcoKTogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgcG9zaXRpb24gb2YgdGhlIHRvb2x0aXBcbiAgICAgKi9cbiAgICBwdWJsaWMgR2V0UGlja2VyUG9zaXRpb24oKTogVG9vbHRpcFBvc2l0aW9uIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucG9wdXBIZWxwZXIuZ2V0RGlzcGxheVBvc2l0aW9uKFxuICAgICAgICAgICAgdGhpcy5waWNrZXJidXR0b24sXG4gICAgICAgICAgICB0aGlzLnBpY2tlcmNvbnRhaW5lcixcbiAgICAgICAgICAgIHRoaXMuZ2V0QXJyb3dXaWR0aCgpLFxuICAgICAgICAgICAgdGhpcy5nZXRBcnJvd0hlaWdodCgpLFxuICAgICAgICAgICAgdGhpcy5wb3NpdGlvbixcbiAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIG1ldGhvZCBtb2RpZmllcyB0aGUgZW50ZXJlZCB2YWx1ZSBvZiB0eXBlIE1vbWVudFxuICAgICAqL1xuICAgIHB1YmxpYyBhYnN0cmFjdCBNb2RpZnlQYXJzZWREYXRlVGltZVZhbHVlKHY6IG1vbWVudF8uTW9tZW50KTogbW9tZW50Xy5Nb21lbnQ7XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyBhIEpTT04gZGF0ZSBzdHJpbmcgaW50byBhIFVUQyBEYXRlVGltZSBvYmplY3QgdGhhdCBjYW4gYmUgdXNlZCBieSB0aGUgY29udHJvbFxuICAgICAqIEBwYXJhbSB0aW1lc3RhbXAgRGF0ZSB0aW1lc3RhbXAgdG8gY29udmVydFxuICAgICAqIEByZXR1cm5zIE1vbWVudCBvYmplY3QgaW4gVVRDXG4gICAgICovXG4gICAgcHVibGljIGdldERhdGUodGltZXN0YW1wKTogbW9tZW50Lk1vbWVudCB7XG4gICAgICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSh0aW1lc3RhbXApO1xuICAgICAgICBjb25zdCB5ZWFyID0gZGF0ZS5nZXRVVENGdWxsWWVhcigpO1xuICAgICAgICBjb25zdCBtb250aCA9IGRhdGUuZ2V0VVRDTW9udGgoKTtcbiAgICAgICAgY29uc3QgZGF5ID0gZGF0ZS5nZXRVVENEYXRlKCk7XG4gICAgICAgIGNvbnN0IGhvdXJzID0gZGF0ZS5nZXRVVENIb3VycygpO1xuICAgICAgICBjb25zdCBtaW51dGVzID0gZGF0ZS5nZXRVVENNaW51dGVzKCk7XG4gICAgICAgIGNvbnN0IHNlY29uZHMgPSBkYXRlLmdldFVUQ1NlY29uZHMoKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5tb21lbnQoRGF0ZS5VVEMoeWVhciwgbW9udGgsIGRheSwgaG91cnMsIG1pbnV0ZXMsIHNlY29uZHMpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDYWxjdWxhdGVzIHRoZSBoZWlnaHQgb2YgdGhlIHRvb2x0aXBcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0UGlja2VySGVpZ2h0KCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLnBvcHVwSGVscGVyLmdldFBvcHVwSGVpZ2h0KHRoaXMucGlja2VyY29udGFpbmVyKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDYWxjdWxhdGVzIHRoZSB3aWR0aCBvZiB0aGUgcGlja2VyXG4gICAgICovXG4gICAgcHVibGljIGdldFBpY2tlcldpZHRoKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLnBvcHVwSGVscGVyLmdldFBvcHVwV2lkdGgodGhpcy5waWNrZXJjb250YWluZXIpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENsZWFuIHVwIHJlc291cmNlcyB3aGVuIHRoZSBjb250cm9sIGlzIGRlc3Ryb3llZC5cbiAgICAgKlxuICAgICAqIFJlbW92ZXMgdGhlIHBpY2tlciBlbGVtZW50IGZyb20gdGhlIERPTSBpZiB2aXNpYmxlIGFuZCB1bnJlZ2lzdGVycyBnbG9iYWwgcmVzaXplL3Njcm9sbCBsaXN0ZW5lcnMuXG4gICAgICovXG4gICAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICAvLyBSZW1vdmUgUGlja2VyIGlmIGlzIHZpc2libGVcbiAgICAgICAgaWYgKHRoaXMuX3Nob3dzZWxlY3RvciAmJiB0aGlzLnBpY2tlcmNvbnRhaW5lcj8ubmF0aXZlRWxlbWVudCkge1xuICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZCh0aGlzLnBpY2tlcmNvbnRhaW5lci5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFVucmVnaXN0ZXIgRXZlbnQgTGlzdGVuZXJcbiAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHRoaXMub25Db250ZW50Q2hhbmdlLCB0cnVlKTtcbiAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHRoaXMub25Db250ZW50Q2hhbmdlLCB0cnVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJbml0IEV2ZW50XG4gICAgICovXG4gICAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgICAgICB0aGlzLnNldERhdGVUaW1lRm9ybWF0KCk7XG5cbiAgICAgICAgLy8gUmVnaXN0ZXIgRXZlbnQgTGlzdGVuZXJcbiAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHRoaXMub25Db250ZW50Q2hhbmdlLCB0cnVlKTtcbiAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHRoaXMub25Db250ZW50Q2hhbmdlLCB0cnVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSB2YWx1ZSBvZiB0eXBlIHN0cmluZyB0byB0aGUgcHJvcGVydHkgdmFsdWVzdHJpbmdcbiAgICAgKiBAcGFyYW0gdiBTdHJpbmcgdmFsdWUgdG8gc2V0XG4gICAgICovXG4gICAgcHVibGljIHNldFZhbHVlU3RyaW5nKHY6IHN0cmluZykge1xuICAgICAgICB0aGlzLnZhbHVlc3RyaW5nID0gdjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBWYWxpZGF0ZXMgdGhlIGRhdGV0aW1lIGNvbnRyb2wgdmFsdWUgZm9ybWF0IGFuZCByZXF1aXJlZCBzdGF0dXMuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gYyBBYnN0cmFjdENvbnRyb2wgaW5zdGFuY2UgdG8gdmFsaWRhdGUuXG4gICAgICogQHJldHVybnMgVmFsaWRhdGlvbkVycm9ycyBpZiBpbnZhbGlkLCBvdGhlcndpc2UgbnVsbC5cbiAgICAgKi9cbiAgICBwdWJsaWMgdmFsaWRhdGVEYXRhKGM6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgICAgICAgbGV0IGVycm9yOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9IG51bGw7XG5cbiAgICAgICAgaWYgKHRoaXMudmFsdWVzdHJpbmcgIT09IG51bGwgJiYgdGhpcy52YWx1ZXN0cmluZy5pbmRleE9mKCdfJykgPj0gMCkge1xuICAgICAgICAgICAgZXJyb3IgPSBDcmVhdGVWYWxpZGF0aW9uRXJyb3IoXG4gICAgICAgICAgICAgICAgJ2ludmFsaWR0eXBlJyxcbiAgICAgICAgICAgICAgICB0aGlzLnZhbGlkYXRpb25tZXNzYWdlZGF0ZXRpbWVmb3JtYXQsXG4gICAgICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9ubWVzc2FnZWRhdGV0aW1lZm9ybWF0c3VtbWFyeVxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgZXJyb3IgPSBWYWxpZGF0aW9uLmlzVmFsaWREYXRlKFxuICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9ubWVzc2FnZWRhdGV0aW1lZm9ybWF0LFxuICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9ubWVzc2FnZWRhdGV0aW1lZm9ybWF0c3VtbWFyeVxuICAgICAgICApKGMpO1xuXG4gICAgICAgIGlmICh0aGlzLmlzcmVxdWlyZWQpIHtcbiAgICAgICAgICAgIGVycm9yID0gVmFsaWRhdGlvbi5yZXF1aXJlZCh0aGlzLnZhbGlkYXRpb25tZXNzYWdlcmVxdWlyZWQsIHRoaXMudmFsaWRhdGlvbm1lc3NhZ2VyZXF1aXJlZHN1bW1hcnkpKGMpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGVycm9yO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE92ZXJ3cml0ZSBXcml0ZVZhbHVlIHRvIFNldCBjb3JyZWN0IERhdGUgT2JqZWN0XG4gICAgICogQHBhcmFtIHZhbHVlIERhdGUgb3Igc3RyaW5nIHZhbHVlIHRvIHdyaXRlIHRvIHRoZSBjb250cm9sXG4gICAgICovXG4gICAgcHVibGljIHdyaXRlVmFsdWUodmFsdWU6IERhdGUgfCBzdHJpbmcpIHtcbiAgICAgICAgaWYgKHZhbHVlID09PSAnJyB8fCB2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAvLyBSZXNldCB2YWx1ZSBzdHJpbmcgc28gdGhhdCB3aGVuIHRoZSBtb2RlbCBpcyB1cGRhdGVkIHRoZSBpbnB1dCBmaWVsZCBpcyBhbHNvIGNsZWFyZWQuXG4gICAgICAgICAgICB0aGlzLl92YWx1ZUFzU3RyaW5nID0gJyc7XG4gICAgICAgICAgICAvLyBTZXQgSW50ZXJuYWwgUHJvcGVydHlcbiAgICAgICAgICAgIHRoaXMuX3ZhbHVlID0gbnVsbDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX3ZhbHVlID0gdGhpcy5nZXREYXRlKHZhbHVlKS50b0RhdGUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHN1cGVyLndyaXRlVmFsdWUodGhpcy5fdmFsdWUpO1xuXG4gICAgICAgIC8vIGZvcmNlIGRldGVjdCBjaGFuZ2VzIGFuZCB1cGRhdGUgaW1hc2sgZGlyZWN0aXZlXG4gICAgICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB0aGlzLmlNYXNrLm1hc2tSZWYudXBkYXRlVmFsdWUoKTtcbiAgICB9XG5cbiAgICAvLyAjZW5kcmVnaW9uIFB1YmxpYyBNZXRob2RzXG5cbiAgICAvLyAjcmVnaW9uIFByb3RlY3RlZCBNZXRob2RzXG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBoZWlnaHQgb2YgdGhlIGFycm93IGVsZW1lbnRcbiAgICAgKiBAcmV0dXJucyBUaGUgaGVpZ2h0IGluIHBpeGVscyBvZiB0aGUgYXJyb3cgZWxlbWVudCwgb3IgMCBpZiBub3QgcHJlc2VudFxuICAgICAqL1xuICAgIHByb3RlY3RlZCBnZXRBcnJvd0hlaWdodCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5waWNrZXJhcnJvdyA/IHRoaXMucGlja2VyYXJyb3cubmF0aXZlRWxlbWVudC5vZmZzZXRIZWlnaHQgOiAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIHdpZHRoIG9mIHRoZSBhcnJvdyBlbGVtZW50XG4gICAgICogQHJldHVybnMgVGhlIHdpZHRoIGluIHBpeGVscyBvZiB0aGUgYXJyb3cgZWxlbWVudCwgb3IgMCBpZiBub3QgcHJlc2VudFxuICAgICAqL1xuICAgIHByb3RlY3RlZCBnZXRBcnJvd1dpZHRoKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLnBpY2tlcmFycm93ID8gdGhpcy5waWNrZXJhcnJvdy5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoIDogMDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDYWxjdWxhdGVzIHRoZSBwb3NpdGlvbiBvZiB0aGUgdG9vbHRpcCBmcm9tIGxpbmtzXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGdldFBvc2l0aW9uTGVmdCgpOiBudW1iZXIge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMucG9wdXBIZWxwZXIuZ2V0UG9zaXRpb25MZWZ0KFxuICAgICAgICAgICAgdGhpcy5waWNrZXJidXR0b24sXG4gICAgICAgICAgICB0aGlzLnBpY2tlcmNvbnRhaW5lcixcbiAgICAgICAgICAgIHRoaXMuZWxlbWVudFJlZixcbiAgICAgICAgICAgIHRoaXMuZ2V0QXJyb3dXaWR0aCgpLFxuICAgICAgICAgICAgdGhpcy5nZXRBcnJvd0hlaWdodCgpLFxuICAgICAgICAgICAgdGhpcy5wb3NpdGlvbixcbiAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICk7XG5cbiAgICAgICAgLy8gRW5zdXJlIHRoYXQgcG9wLXVwcyBuZXZlciBhcHBlYXIgb3V0c2lkZSB0aGUgdmlzaWJsZSBhcmVhIG9uIHRoZSBsZWZ0XG4gICAgICAgIGlmICh2YWx1ZSA8IDApIHtcbiAgICAgICAgICAgIHRoaXMucG9zUG9wdXBMZWZ0ID0gNTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucG9zUG9wdXBMZWZ0ID0gdmFsdWU7XG4gICAgICAgIH1cblxuICAgICAgICBzd2l0Y2ggKHRoaXMuR2V0UGlja2VyUG9zaXRpb24oKSkge1xuICAgICAgICAgICAgY2FzZSBUb29sdGlwUG9zaXRpb24udG9wOlxuICAgICAgICAgICAgY2FzZSBUb29sdGlwUG9zaXRpb24uYm90dG9tOlxuICAgICAgICAgICAgICAgIHRoaXMucG9zQXJyb3dMZWZ0ID0gdGhpcy5nZXRQaWNrZXJXaWR0aCgpIC8gMiAtIC10aGlzLmdldEFycm93V2lkdGgoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgVG9vbHRpcFBvc2l0aW9uLnRvcGVuZDpcbiAgICAgICAgICAgIGNhc2UgVG9vbHRpcFBvc2l0aW9uLmJvdHRvbWVuZDpcbiAgICAgICAgICAgICAgICB0aGlzLnBvc0Fycm93TGVmdCA9XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0UGlja2VyV2lkdGgoKSAtXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0QXJyb3dXaWR0aCgpIC8gMiAtXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucG9wdXBIZWxwZXIuZ2V0Q29udGFpbmVyV2lkdGgodGhpcy5waWNrZXJidXR0b24sIGZhbHNlKSAvIDI7XG5cbiAgICAgICAgICAgICAgICAvLyBDb3JyZWN0aW9uIGJ5IEFycm93IGlmIHBvcHVwIGlzIG91dHNpZGUgdGhlIGxlZnQgbWFyZ2luXG4gICAgICAgICAgICAgICAgaWYgKHZhbHVlIDwgMCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnBvc0Fycm93TGVmdCAtPSB2YWx1ZSAqIC0xICsgNTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHRoaXMucG9zQXJyb3dMZWZ0ID0gbnVsbDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDYWxjdWxhdGVzIHRoZSBwb3NpdGlvbiBvZiB0aGUgdG9vbHRpcCBmcm9tIHRoZSB0b3BcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgZ2V0UG9zaXRpb25Ub3AoKTogbnVtYmVyIHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLnBvcHVwSGVscGVyLmdldFBvc2l0aW9uVG9wKFxuICAgICAgICAgICAgdGhpcy5waWNrZXJidXR0b24sXG4gICAgICAgICAgICB0aGlzLnBpY2tlcmNvbnRhaW5lcixcbiAgICAgICAgICAgIHRoaXMuZWxlbWVudFJlZixcbiAgICAgICAgICAgIHRoaXMuZ2V0QXJyb3dXaWR0aCgpLFxuICAgICAgICAgICAgdGhpcy5nZXRBcnJvd0hlaWdodCgpLFxuICAgICAgICAgICAgdGhpcy5wb3NpdGlvbixcbiAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMucG9zUG9wdXBUb3AgPSB2YWx1ZTtcblxuICAgICAgICBzd2l0Y2ggKHRoaXMuR2V0UGlja2VyUG9zaXRpb24oKSkge1xuICAgICAgICAgICAgY2FzZSBUb29sdGlwUG9zaXRpb24ubGVmdDpcbiAgICAgICAgICAgIGNhc2UgVG9vbHRpcFBvc2l0aW9uLnJpZ2h0OlxuICAgICAgICAgICAgICAgIHRoaXMucG9zQXJyb3dUb3AgPSB0aGlzLmdldFBpY2tlckhlaWdodCgpIC8gMiAtIDYuNTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgdGhpcy5wb3NBcnJvd1RvcCA9IG51bGw7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgLy8gI2VuZHJlZ2lvbiBQcm90ZWN0ZWQgTWV0aG9kc1xuXG4gICAgLy8gI3JlZ2lvbiBQcml2YXRlIE1ldGhvZHNcblxuICAgIC8qKlxuICAgICAqIG1ldGhvZCBpZiBjb250ZW50IGhhcyBjaGFuZ2VkIGFuZCBwcm9wb3J0aW9ucyBuZWVkIHRvIGJlIHJlc2V0IGluIHRoZSBVSS5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IG9uQ29udGVudENoYW5nZSA9ICgpOiB2b2lkID0+IHtcbiAgICAgICAgLy8gRG8gbm90aGluZyBpZiBpcyBub3QgdmlzaWJsZVxuICAgICAgICBpZiAoIXRoaXMuX3Nob3dzZWxlY3Rvcikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmdldFBvc2l0aW9uTGVmdCgpO1xuICAgICAgICAgICAgdGhpcy5nZXRQb3NpdGlvblRvcCgpO1xuICAgICAgICB9KTtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgZGF0ZS10aW1lIGZvcm1hdCBzdHJpbmcgZnJvbSB0aGUgY29uZmlndXJlZCBmb3JtYXQgcHJvcGVydHlcbiAgICAgKi9cbiAgICBwcml2YXRlIHNldERhdGVUaW1lRm9ybWF0KCk6IHZvaWQge1xuICAgICAgICAvLyBIQUNLOiBBZGQgYWRkaXRpb24gcHJvcGVydHkgdG8gRm9ybUNvbnRyb2wuIENhbiBiZSBmaXhlZCBpZiBzb2x1dGlvbiBmb3IgdGlja2V0OiBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyL2lzc3Vlcy8xOTY4NlxuICAgICAgICBpZiAodGhpcy5uZ0NvbnRyb2wpIHtcbiAgICAgICAgICAgICh0aGlzLm5nQ29udHJvbCBhcyB1bmtub3duIGFzIElEYXRlVGltZUNvbnRyb2wpLmRhdGV0aW1lZm9ybWF0c3RyaW5nID0gdGhpcy5HZXREYXRlVGltZUZvcm1hdFN0cmluZygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gI2VuZHJlZ2lvbiBQcml2YXRlIE1ldGhvZHNcbn1cbiJdLCJtYXBwaW5ncyI6IjQwckNBcUlJO0FBQUFBLGNBQUEsU0FBQUEsQ0FBQSxTQUFBQyxjQUFBLFdBQUFBLGNBQUEsRUFBQUQsY0FBQSxHQW5JSixPQUFTRSxlQUFlLEtBQVEsb0JBQW9C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