@simpleangularcontrols/sac-common 16.0.0-rc.2 → 16.0.0-rc.20

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 (296) hide show
  1. package/README.md +15 -15
  2. package/common/basedatetimecontrol.d.ts +116 -30
  3. package/common/basedatetimecontrol.d.ts.map +1 -1
  4. package/common/baseinputcontrol.d.ts +9 -13
  5. package/common/baseinputcontrol.d.ts.map +1 -1
  6. package/common/basemodelcontrol.d.ts +168 -85
  7. package/common/basemodelcontrol.d.ts.map +1 -1
  8. package/common/baseuploadcontrol.d.ts +160 -144
  9. package/common/baseuploadcontrol.d.ts.map +1 -1
  10. package/components/browser/browser.d.ts +11 -6
  11. package/components/browser/browser.d.ts.map +1 -1
  12. package/controls/buttons/button.d.ts +23 -22
  13. package/controls/buttons/button.d.ts.map +1 -1
  14. package/controls/checkbox/checkbox.d.ts +18 -5
  15. package/controls/checkbox/checkbox.d.ts.map +1 -1
  16. package/controls/checkbox/radiobutton.d.ts +68 -24
  17. package/controls/checkbox/radiobutton.d.ts.map +1 -1
  18. package/controls/checkbox/radiobuttons.d.ts +23 -22
  19. package/controls/checkbox/radiobuttons.d.ts.map +1 -1
  20. package/controls/confirm/confirm.button.d.ts +14 -8
  21. package/controls/confirm/confirm.button.d.ts.map +1 -1
  22. package/controls/confirm/confirm.service.d.ts +24 -19
  23. package/controls/confirm/confirm.service.d.ts.map +1 -1
  24. package/controls/contextmenu/contextmenu.d.ts +51 -44
  25. package/controls/contextmenu/contextmenu.d.ts.map +1 -1
  26. package/controls/contextmenu/contextmenu.interface.d.ts +4 -0
  27. package/controls/contextmenu/contextmenu.interface.d.ts.map +1 -0
  28. package/controls/contextmenu/contextmenuanchor.d.ts +2 -2
  29. package/controls/contextmenu/contextmenuanchor.d.ts.map +1 -1
  30. package/controls/contextmenu/contextmenucontainer.d.ts +2 -2
  31. package/controls/contextmenu/contextmenucontainer.d.ts.map +1 -1
  32. package/controls/contextmenu/contextmenuitem.d.ts +6 -1
  33. package/controls/contextmenu/contextmenuitem.d.ts.map +1 -1
  34. package/controls/contextmenu/contextmenuitembutton.d.ts +22 -21
  35. package/controls/contextmenu/contextmenuitembutton.d.ts.map +1 -1
  36. package/controls/datetime/date.d.ts +33 -36
  37. package/controls/datetime/date.d.ts.map +1 -1
  38. package/controls/datetime/datetime.d.ts +33 -40
  39. package/controls/datetime/datetime.d.ts.map +1 -1
  40. package/controls/datetime/time.d.ts +32 -36
  41. package/controls/datetime/time.d.ts.map +1 -1
  42. package/controls/dialog/dialog.d.ts +32 -44
  43. package/controls/dialog/dialog.d.ts.map +1 -1
  44. package/controls/form/form.d.ts +7 -43
  45. package/controls/form/form.d.ts.map +1 -1
  46. package/controls/grid/grid.d.ts +67 -62
  47. package/controls/grid/grid.d.ts.map +1 -1
  48. package/controls/grid/gridbutton.d.ts +14 -14
  49. package/controls/grid/gridbutton.d.ts.map +1 -1
  50. package/controls/grid/gridcolumn.d.ts +8 -8
  51. package/controls/grid/gridcolumn.d.ts.map +1 -1
  52. package/controls/grid/gridcolumnaction.d.ts +3 -3
  53. package/controls/grid/gridcolumnaction.d.ts.map +1 -1
  54. package/controls/grid/gridcolumnbase.d.ts +46 -38
  55. package/controls/grid/gridcolumnbase.d.ts.map +1 -1
  56. package/controls/grid/gridimage.d.ts +2 -2
  57. package/controls/grid/gridimage.d.ts.map +1 -1
  58. package/controls/grid/model.d.ts +51 -42
  59. package/controls/grid/model.d.ts.map +1 -1
  60. package/controls/grid/paging.d.ts +77 -76
  61. package/controls/grid/paging.d.ts.map +1 -1
  62. package/controls/input/input.d.ts +12 -12
  63. package/controls/input/input.d.ts.map +1 -1
  64. package/controls/input/inputarea.d.ts +6 -6
  65. package/controls/input/inputarea.d.ts.map +1 -1
  66. package/controls/input/inputcurrency.d.ts +6 -1
  67. package/controls/input/inputcurrency.d.ts.map +1 -1
  68. package/controls/input/inputdecimal.d.ts +21 -21
  69. package/controls/input/inputdecimal.d.ts.map +1 -1
  70. package/controls/input/inputemail.d.ts.map +1 -1
  71. package/controls/input/inputinteger.d.ts +21 -21
  72. package/controls/input/inputinteger.d.ts.map +1 -1
  73. package/controls/input/inputpassword.d.ts +28 -8
  74. package/controls/input/inputpassword.d.ts.map +1 -1
  75. package/controls/input/inputsearch.d.ts +14 -5
  76. package/controls/input/inputsearch.d.ts.map +1 -1
  77. package/controls/layout/formlayout.d.ts +66 -0
  78. package/controls/layout/formlayout.d.ts.map +1 -0
  79. package/controls/list/buildvaluestring.d.ts +7 -0
  80. package/controls/list/buildvaluestring.d.ts.map +1 -0
  81. package/controls/list/dropdown.d.ts +36 -80
  82. package/controls/list/dropdown.d.ts.map +1 -1
  83. package/controls/list/dropdownoptions.d.ts +42 -0
  84. package/controls/list/dropdownoptions.d.ts.map +1 -0
  85. package/controls/list/listbox.d.ts +20 -20
  86. package/controls/list/listbox.d.ts.map +1 -1
  87. package/controls/multilanguage/multilanguageinput.d.ts +36 -35
  88. package/controls/multilanguage/multilanguageinput.d.ts.map +1 -1
  89. package/controls/multilanguage/multilanguageinputarea.d.ts +41 -40
  90. package/controls/multilanguage/multilanguageinputarea.d.ts.map +1 -1
  91. package/controls/static/formcontainer.d.ts +8 -4
  92. package/controls/static/formcontainer.d.ts.map +1 -1
  93. package/controls/tinymce/tinymce.d.ts +63 -63
  94. package/controls/tinymce/tinymce.d.ts.map +1 -1
  95. package/controls/tooltip/tooltip.d.ts +76 -69
  96. package/controls/tooltip/tooltip.d.ts.map +1 -1
  97. package/controls/treeview/treeview.d.ts +109 -109
  98. package/controls/treeview/treeview.d.ts.map +1 -1
  99. package/controls/upload/dropzonemultiple.d.ts +21 -21
  100. package/controls/upload/dropzonemultiple.d.ts.map +1 -1
  101. package/controls/upload/dropzonesingle.d.ts +18 -18
  102. package/controls/upload/dropzonesingle.d.ts.map +1 -1
  103. package/controls/upload/uploadmultiple.d.ts +10 -10
  104. package/controls/upload/uploadmultiple.d.ts.map +1 -1
  105. package/controls/upload/uploadsingle.d.ts +1 -1
  106. package/controls/upload/uploadsingle.d.ts.map +1 -1
  107. package/controls/validation/validationsummary.d.ts +18 -13
  108. package/controls/validation/validationsummary.d.ts.map +1 -1
  109. package/enums/ButtonRoleType.d.ts +2 -0
  110. package/enums/ButtonRoleType.d.ts.map +1 -0
  111. package/enums/ControlHeight.d.ts +18 -0
  112. package/enums/ControlHeight.d.ts.map +1 -0
  113. package/esm2022/common/basedatetimecontrol.mjs +83 -164
  114. package/esm2022/common/baseinputcontrol.mjs +21 -80
  115. package/esm2022/common/baselistcontrol.mjs +11 -56
  116. package/esm2022/common/basemodelcontrol.mjs +134 -353
  117. package/esm2022/common/baseselectcontrol.mjs +6 -27
  118. package/esm2022/common/baseuploadcontrol.mjs +120 -435
  119. package/esm2022/components/browser/browser.mjs +66 -474
  120. package/esm2022/components/browser/models/browserfile.mjs +3 -2
  121. package/esm2022/components/browser/models/browserfiledeleterequest.mjs +5 -10
  122. package/esm2022/components/browser/models/browserfilerenamerequest.mjs +5 -10
  123. package/esm2022/components/browser/models/browserfileresponse.mjs +3 -2
  124. package/esm2022/components/browser/models/browserfilesaverequest.mjs +5 -10
  125. package/esm2022/components/browser/models/browsernode.mjs +3 -2
  126. package/esm2022/components/browser/models/browsernodedeleterequest.mjs +5 -10
  127. package/esm2022/components/browser/models/browsernodenewrequest.mjs +5 -10
  128. package/esm2022/components/browser/models/browsernoderenamerequest.mjs +5 -10
  129. package/esm2022/components/browser/models/browsernoderequest.mjs +5 -10
  130. package/esm2022/components/browser/models/browsernoderesponse.mjs +3 -2
  131. package/esm2022/controls/buttons/button.mjs +32 -131
  132. package/esm2022/controls/checkbox/checkbox.mjs +15 -30
  133. package/esm2022/controls/checkbox/radiobutton.mjs +45 -102
  134. package/esm2022/controls/checkbox/radiobuttons.mjs +29 -106
  135. package/esm2022/controls/confirm/confirm.button.mjs +17 -21
  136. package/esm2022/controls/confirm/confirm.mjs +19 -69
  137. package/esm2022/controls/confirm/confirm.service.mjs +29 -74
  138. package/esm2022/controls/contextmenu/contextmenu.interface.mjs +3 -0
  139. package/esm2022/controls/contextmenu/contextmenu.mjs +43 -171
  140. package/esm2022/controls/contextmenu/contextmenuanchor.mjs +8 -19
  141. package/esm2022/controls/contextmenu/contextmenucontainer.mjs +8 -19
  142. package/esm2022/controls/contextmenu/contextmenuitem.mjs +7 -13
  143. package/esm2022/controls/contextmenu/contextmenuitembutton.mjs +25 -93
  144. package/esm2022/controls/datetime/date.mjs +42 -206
  145. package/esm2022/controls/datetime/dateselector.mjs +65 -409
  146. package/esm2022/controls/datetime/datetime.mjs +42 -224
  147. package/esm2022/controls/datetime/time.mjs +40 -204
  148. package/esm2022/controls/dialog/dialog.mjs +35 -209
  149. package/esm2022/controls/form/form.mjs +27 -153
  150. package/esm2022/controls/grid/grid.mjs +48 -155
  151. package/esm2022/controls/grid/gridbutton.mjs +21 -59
  152. package/esm2022/controls/grid/gridcolumn.mjs +21 -46
  153. package/esm2022/controls/grid/gridcolumnaction.mjs +8 -22
  154. package/esm2022/controls/grid/gridcolumnbase.mjs +35 -124
  155. package/esm2022/controls/grid/gridimage.mjs +5 -16
  156. package/esm2022/controls/grid/model.mjs +49 -74
  157. package/esm2022/controls/grid/paging.mjs +82 -251
  158. package/esm2022/controls/input/input.mjs +17 -65
  159. package/esm2022/controls/input/inputarea.mjs +18 -56
  160. package/esm2022/controls/input/inputcurrency.mjs +9 -14
  161. package/esm2022/controls/input/inputdecimal.mjs +33 -143
  162. package/esm2022/controls/input/inputemail.mjs +10 -37
  163. package/esm2022/controls/input/inputinteger.mjs +32 -127
  164. package/esm2022/controls/input/inputpassword.mjs +26 -45
  165. package/esm2022/controls/input/inputsearch.mjs +16 -38
  166. package/esm2022/controls/layout/formlayout.mjs +31 -0
  167. package/esm2022/controls/list/buildvaluestring.mjs +10 -0
  168. package/esm2022/controls/list/dropdown.mjs +45 -236
  169. package/esm2022/controls/list/dropdownoptions.mjs +22 -0
  170. package/esm2022/controls/list/listbox.mjs +40 -159
  171. package/esm2022/controls/multilanguage/multilanguageinput.mjs +48 -215
  172. package/esm2022/controls/multilanguage/multilanguageinputarea.mjs +51 -217
  173. package/esm2022/controls/static/formcontainer.mjs +18 -45
  174. package/esm2022/controls/static/staticlabel.mjs +7 -28
  175. package/esm2022/controls/tabs/tab.mjs +14 -68
  176. package/esm2022/controls/tabs/tabitem.mjs +7 -37
  177. package/esm2022/controls/tinymce/tinymce.mjs +62 -232
  178. package/esm2022/controls/tinymce/tinymcedialogsettings.mjs +5 -10
  179. package/esm2022/controls/tinymce/tinymcedialogsettingsmeta.mjs +4 -4
  180. package/esm2022/controls/tinymce/tinymceinstance.mjs +3 -2
  181. package/esm2022/controls/tooltip/tooltip.mjs +74 -358
  182. package/esm2022/controls/treeview/treeview.mjs +103 -343
  183. package/esm2022/controls/upload/dropzonemultiple.mjs +31 -151
  184. package/esm2022/controls/upload/dropzonesingle.mjs +23 -99
  185. package/esm2022/controls/upload/uploadmultiple.mjs +21 -111
  186. package/esm2022/controls/upload/uploadsingle.mjs +11 -50
  187. package/esm2022/controls/validation/validationsummary.mjs +23 -120
  188. package/esm2022/controls/wizard/wizard.mjs +20 -128
  189. package/esm2022/controls/wizard/wizarditem.mjs +6 -31
  190. package/esm2022/enums/ButtonRoleType.mjs +3 -0
  191. package/esm2022/enums/ControlHeight.mjs +11 -0
  192. package/esm2022/enums/IconType.mjs +4 -8
  193. package/esm2022/interfaces/ISacConfigurationService.mjs +3 -0
  194. package/esm2022/interfaces/ISacFileBrowserService.mjs +3 -2
  195. package/esm2022/interfaces/ISacIconService.mjs +3 -2
  196. package/esm2022/interfaces/ISacLabelSizes.mjs +3 -0
  197. package/esm2022/interfaces/ISacLanguageService.mjs +3 -2
  198. package/esm2022/interfaces/ISacLocalisationService.mjs +3 -2
  199. package/esm2022/interfaces/ISacUploadEventCompleteState.mjs +3 -0
  200. package/esm2022/interfaces/ISacValidationKeyService.mjs +3 -0
  201. package/esm2022/interfaces/iabstractcontrollabel.mjs +3 -2
  202. package/esm2022/interfaces/iconfirmcomponent.mjs +3 -2
  203. package/esm2022/interfaces/idatetimecontrol.mjs +3 -2
  204. package/esm2022/interfaces/iuploadcontrol.mjs +3 -2
  205. package/esm2022/interfaces/treeviewaction.interface.mjs +3 -0
  206. package/esm2022/models/languagemodel.mjs +5 -11
  207. package/esm2022/public_api.mjs +25 -94
  208. package/esm2022/services/index.mjs +3 -5
  209. package/esm2022/services/sac-configuration.service.mjs +35 -0
  210. package/esm2022/services/sac-filebrowser.service.mjs +15 -167
  211. package/esm2022/services/sac-icon.service.mjs +67 -157
  212. package/esm2022/services/sac-language.service.mjs +7 -45
  213. package/esm2022/services/sac-localisation.service.mjs +32 -426
  214. package/esm2022/services/sac-validationkey.service.mjs +7 -0
  215. package/esm2022/simpleangularcontrols-sac-common.mjs +4 -4
  216. package/esm2022/utilities/convertion.mjs +6 -26
  217. package/esm2022/utilities/datatypes.mjs +4 -6
  218. package/esm2022/utilities/enums.mjs +10 -15
  219. package/esm2022/utilities/guid.mjs +8 -0
  220. package/esm2022/utilities/interpolation.mjs +7 -42
  221. package/esm2022/utilities/popuphelper.mjs +80 -0
  222. package/esm2022/utilities/positioning.mjs +23 -266
  223. package/esm2022/validation/email.validator.mjs +3 -13
  224. package/esm2022/validation/equals.validator.mjs +3 -0
  225. package/esm2022/validation/index.mjs +3 -3
  226. package/esm2022/validation/invaliddate.validator.mjs +3 -14
  227. package/esm2022/validation/isDateValid.mjs +9 -13
  228. package/esm2022/validation/maxdate.validator.mjs +4 -21
  229. package/esm2022/validation/maxtime.validator.mjs +4 -21
  230. package/esm2022/validation/maxvalue.validator.mjs +3 -16
  231. package/esm2022/validation/mindate.validator.mjs +4 -21
  232. package/esm2022/validation/minfiles.validator.mjs +4 -19
  233. package/esm2022/validation/mintextlength.validator.mjs +5 -0
  234. package/esm2022/validation/mintime.validator.mjs +4 -21
  235. package/esm2022/validation/minvalue.validator.mjs +3 -16
  236. package/esm2022/validation/multilanguagerequired.validator.mjs +3 -22
  237. package/esm2022/validation/multilanguagerequiredany.validator.mjs +3 -22
  238. package/esm2022/validation/notequals.validator.mjs +3 -0
  239. package/esm2022/validation/pattern.validator.mjs +3 -16
  240. package/esm2022/validation/required.validator.mjs +3 -13
  241. package/esm2022/validation/validation.mjs +74 -134
  242. package/esm2022/validation/validationerrorcreator.mjs +3 -11
  243. package/esm2022/validation/validationerroritem.mjs +7 -19
  244. package/fesm2022/simpleangularcontrols-sac-common.mjs +2367 -9261
  245. package/fesm2022/simpleangularcontrols-sac-common.mjs.map +1 -1
  246. package/interfaces/ISacConfigurationService.d.ts +59 -0
  247. package/interfaces/ISacConfigurationService.d.ts.map +1 -0
  248. package/interfaces/ISacIconService.d.ts +34 -2
  249. package/interfaces/ISacIconService.d.ts.map +1 -1
  250. package/interfaces/ISacLabelSizes.d.ts +27 -0
  251. package/interfaces/ISacLabelSizes.d.ts.map +1 -0
  252. package/interfaces/ISacUploadEventCompleteState.d.ts +6 -0
  253. package/interfaces/ISacUploadEventCompleteState.d.ts.map +1 -0
  254. package/interfaces/ISacValidationKeyService.d.ts +53 -0
  255. package/interfaces/ISacValidationKeyService.d.ts.map +1 -0
  256. package/interfaces/treeviewaction.interface.d.ts +5 -0
  257. package/interfaces/treeviewaction.interface.d.ts.map +1 -0
  258. package/package.json +2 -2
  259. package/public_api.d.ts +33 -21
  260. package/public_api.d.ts.map +1 -1
  261. package/services/index.d.ts +6 -4
  262. package/services/index.d.ts.map +1 -1
  263. package/services/sac-configuration.service.d.ts +127 -0
  264. package/services/sac-configuration.service.d.ts.map +1 -0
  265. package/services/sac-icon.service.d.ts +69 -5
  266. package/services/sac-icon.service.d.ts.map +1 -1
  267. package/services/sac-localisation.service.d.ts +100 -94
  268. package/services/sac-localisation.service.d.ts.map +1 -1
  269. package/services/sac-validationkey.service.d.ts +59 -0
  270. package/services/sac-validationkey.service.d.ts.map +1 -0
  271. package/simpleangularcontrols-sac-common-16.0.0-rc.20.tgz +0 -0
  272. package/utilities/enums.d.ts +3 -1
  273. package/utilities/enums.d.ts.map +1 -1
  274. package/utilities/guid.d.ts +5 -0
  275. package/utilities/guid.d.ts.map +1 -0
  276. package/utilities/popuphelper.d.ts +84 -0
  277. package/utilities/popuphelper.d.ts.map +1 -0
  278. package/validation/equals.validator.d.ts +3 -0
  279. package/validation/equals.validator.d.ts.map +1 -0
  280. package/validation/isDateValid.d.ts.map +1 -1
  281. package/validation/mintextlength.validator.d.ts +3 -0
  282. package/validation/mintextlength.validator.d.ts.map +1 -0
  283. package/validation/notequals.validator.d.ts +3 -0
  284. package/validation/notequals.validator.d.ts.map +1 -0
  285. package/validation/validation.d.ts +70 -52
  286. package/validation/validation.d.ts.map +1 -1
  287. package/controls/treeview/ngtreeitemaction.d.ts +0 -44
  288. package/controls/treeview/ngtreeitemaction.d.ts.map +0 -1
  289. package/controls/treeview/treeviewchild.d.ts +0 -16
  290. package/controls/treeview/treeviewchild.d.ts.map +0 -1
  291. package/esm2022/controls/treeview/ngtreeitemaction.mjs +0 -63
  292. package/esm2022/controls/treeview/treeviewchild.mjs +0 -22
  293. package/esm2022/validation/minlength.validator.mjs +0 -21
  294. package/simpleangularcontrols-sac-common-16.0.0-rc.2.tgz +0 -0
  295. package/validation/minlength.validator.d.ts +0 -3
  296. package/validation/minlength.validator.d.ts.map +0 -1
@@ -1,174 +1,93 @@
1
- import { Directive, Input } from '@angular/core';
2
- import * as moment_ from 'moment';
3
- import { Validation } from '../validation';
4
- import { SacBaseModelControl } from './basemodelcontrol';
5
- import * as i0 from "@angular/core";
6
- import * as i1 from "../controls/form/form";
1
+ function cov_193zbqns7k(){var path="/home/runner/work/simpleangularcontrols/simpleangularcontrols/ch.jnetwork.sac-controls/dist/sac-common/esm2022/common/basedatetimecontrol.mjs";var hash="fa047461804f02fe7cc1250ae554744fcf45eed4";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:23,column:8},end:{line:23,column:36}},"1":{start:{line:24,column:8},end:{line:24,column:37}},"2":{start:{line:25,column:8},end:{line:25,column:27}},"3":{start:{line:30,column:8},end:{line:30,column:45}},"4":{start:{line:34,column:8},end:{line:34,column:33}},"5":{start:{line:38,column:8},end:{line:38,column:47}},"6":{start:{line:42,column:8},end:{line:42,column:35}},"7":{start:{line:46,column:8},end:{line:46,column:32}},"8":{start:{line:50,column:8},end:{line:50,column:41}},"9":{start:{line:54,column:8},end:{line:54,column:46}},"10":{start:{line:58,column:8},end:{line:58,column:32}},"11":{start:{line:62,column:8},end:{line:62,column:33}},"12":{start:{line:66,column:8},end:{line:66,column:32}},"13":{start:{line:70,column:8},end:{line:70,column:30}},"14":{start:{line:74,column:8},end:{line:74,column:29}},"15":{start:{line:80,column:8},end:{line:80,column:43}},"16":{start:{line:84,column:8},end:{line:84,column:103}},"17":{start:{line:88,column:8},end:{line:88,column:117}},"18":{start:{line:92,column:8},end:{line:92,column:91}},"19":{start:{line:96,column:8},end:{line:96,column:105}},"20":{start:{line:102,column:8},end:{line:111,column:10}},"21":{start:{line:104,column:12},end:{line:106,column:13}},"22":{start:{line:105,column:16},end:{line:105,column:23}},"23":{start:{line:107,column:12},end:{line:110,column:15}},"24":{start:{line:108,column:16},end:{line:108,column:39}},"25":{start:{line:109,column:16},end:{line:109,column:38}},"26":{start:{line:119,column:8},end:{line:121,column:9}},"27":{start:{line:120,column:12},end:{line:120,column:60}},"28":{start:{line:122,column:8},end:{line:122,column:38}},"29":{start:{line:123,column:8},end:{line:123,column:31}},"30":{start:{line:124,column:8},end:{line:124,column:35}},"31":{start:{line:127,column:8},end:{line:127,column:36}},"32":{start:{line:133,column:8},end:{line:139,column:9}},"33":{start:{line:134,column:12},end:{line:134,column:39}},"34":{start:{line:137,column:25},end:{line:137,column:52}},"35":{start:{line:138,column:12},end:{line:138,column:71}},"36":{start:{line:145,column:8},end:{line:145,column:32}},"37":{start:{line:146,column:19},end:{line:146,column:73}},"38":{start:{line:147,column:8},end:{line:147,column:58}},"39":{start:{line:148,column:8},end:{line:153,column:9}},"40":{start:{line:149,column:12},end:{line:149,column:39}},"41":{start:{line:152,column:12},end:{line:152,column:30}},"42":{start:{line:159,column:8},end:{line:159,column:159}},"43":{start:{line:165,column:21},end:{line:165,column:40}},"44":{start:{line:166,column:21},end:{line:166,column:42}},"45":{start:{line:167,column:22},end:{line:167,column:40}},"46":{start:{line:168,column:20},end:{line:168,column:37}},"47":{start:{line:169,column:22},end:{line:169,column:40}},"48":{start:{line:170,column:24},end:{line:170,column:44}},"49":{start:{line:171,column:24},end:{line:171,column:44}},"50":{start:{line:172,column:8},end:{line:172,column:80}},"51":{start:{line:178,column:8},end:{line:178,column:69}},"52":{start:{line:184,column:8},end:{line:184,column:68}},"53":{start:{line:191,column:8},end:{line:193,column:9}},"54":{start:{line:192,column:12},end:{line:192,column:74}},"55":{start:{line:195,column:8},end:{line:195,column:73}},"56":{start:{line:196,column:8},end:{line:196,column:73}},"57":{start:{line:202,column:8},end:{line:202,column:25}},"58":{start:{line:203,column:8},end:{line:203,column:33}},"59":{start:{line:205,column:8},end:{line:205,column:70}},"60":{start:{line:206,column:8},end:{line:206,column:70}},"61":{start:{line:212,column:8},end:{line:212,column:29}},"62":{start:{line:218,column:20},end:{line:218,column:24}},"63":{start:{line:219,column:8},end:{line:224,column:9}},"64":{start:{line:220,column:12},end:{line:220,column:140}},"65":{start:{line:221,column:12},end:{line:223,column:13}},"66":{start:{line:222,column:16},end:{line:222,column:29}},"67":{start:{line:225,column:8},end:{line:225,column:125}},"68":{start:{line:226,column:8},end:{line:228,column:9}},"69":{start:{line:227,column:12},end:{line:227,column:114}},"70":{start:{line:229,column:8},end:{line:229,column:21}},"71":{start:{line:235,column:8},end:{line:243,column:9}},"72":{start:{line:237,column:12},end:{line:237,column:37}},"73":{start:{line:239,column:12},end:{line:239,column:31}},"74":{start:{line:242,column:12},end:{line:242,column:55}},"75":{start:{line:244,column:8},end:{line:244,column:38}},"76":{start:{line:249,column:8},end:{line:249,column:82}},"77":{start:{line:252,column:8},end:{line:252,column:81}},"78":{start:{line:258,column:22},end:{line:258,column:179}},"79":{start:{line:260,column:8},end:{line:265,column:9}},"80":{start:{line:261,column:12},end:{line:261,column:34}},"81":{start:{line:264,column:12},end:{line:264,column:38}},"82":{start:{line:266,column:8},end:{line:285,column:9}},"83":{start:{line:269,column:16},end:{line:269,column:86}},"84":{start:{line:270,column:16},end:{line:270,column:22}},"85":{start:{line:273,column:16},end:{line:276,column:89}},"86":{start:{line:278,column:16},end:{line:280,column:17}},"87":{start:{line:279,column:20},end:{line:279,column:56}},"88":{start:{line:281,column:16},end:{line:281,column:22}},"89":{start:{line:283,column:16},end:{line:283,column:41}},"90":{start:{line:284,column:16},end:{line:284,column:22}},"91":{start:{line:286,column:8},end:{line:286,column:21}},"92":{start:{line:292,column:22},end:{line:292,column:178}},"93":{start:{line:293,column:8},end:{line:293,column:33}},"94":{start:{line:294,column:8},end:{line:302,column:9}},"95":{start:{line:297,column:16},end:{line:297,column:68}},"96":{start:{line:298,column:16},end:{line:298,column:22}},"97":{start:{line:300,column:16},end:{line:300,column:40}},"98":{start:{line:301,column:16},end:{line:301,column:22}},"99":{start:{line:303,column:8},end:{line:303,column:21}},"100":{start:{line:307,column:8},end:{line:309,column:9}},"101":{start:{line:308,column:12},end:{line:308,column:81}},"102":{start:{line:311,column:13},end:{line:311,column:301}},"103":{start:{line:312,column:13},end:{line:312,column:854}},"104":{start:{line:315,column:0},end:{line:342,column:20}},"105":{start:{line:317,column:42},end:{line:317,column:164}}},fnMap:{"0":{name:"(anonymous_0)",decl:{start:{line:22,column:4},end:{line:22,column:5}},loc:{start:{line:22,column:57},end:{line:112,column:5}},line:22},"1":{name:"(anonymous_1)",decl:{start:{line:102,column:31},end:{line:102,column:32}},loc:{start:{line:102,column:37},end:{line:111,column:9}},line:102},"2":{name:"(anonymous_2)",decl:{start:{line:107,column:23},end:{line:107,column:24}},loc:{start:{line:107,column:29},end:{line:110,column:13}},line:107},"3":{name:"(anonymous_3)",decl:{start:{line:118,column:4},end:{line:118,column:5}},loc:{start:{line:118,column:23},end:{line:125,column:5}},line:118},"4":{name:"(anonymous_4)",decl:{start:{line:126,column:4},end:{line:126,column:5}},loc:{start:{line:126,column:18},end:{line:128,column:5}},line:126},"5":{name:"(anonymous_5)",decl:{start:{line:132,column:4},end:{line:132,column:5}},loc:{start:{line:132,column:22},end:{line:140,column:5}},line:132},"6":{name:"(anonymous_6)",decl:{start:{line:144,column:4},end:{line:144,column:5}},loc:{start:{line:144,column:23},end:{line:154,column:5}},line:144},"7":{name:"(anonymous_7)",decl:{start:{line:158,column:4},end:{line:158,column:5}},loc:{start:{line:158,column:24},end:{line:160,column:5}},line:158},"8":{name:"(anonymous_8)",decl:{start:{line:164,column:4},end:{line:164,column:5}},loc:{start:{line:164,column:23},end:{line:173,column:5}},line:164},"9":{name:"(anonymous_9)",decl:{start:{line:177,column:4},end:{line:177,column:5}},loc:{start:{line:177,column:22},end:{line:179,column:5}},line:177},"10":{name:"(anonymous_10)",decl:{start:{line:183,column:4},end:{line:183,column:5}},loc:{start:{line:183,column:21},end:{line:185,column:5}},line:183},"11":{name:"(anonymous_11)",decl:{start:{line:186,column:4},end:{line:186,column:5}},loc:{start:{line:186,column:16},end:{line:188,column:5}},line:186},"12":{name:"(anonymous_12)",decl:{start:{line:189,column:4},end:{line:189,column:5}},loc:{start:{line:189,column:18},end:{line:197,column:5}},line:189},"13":{name:"(anonymous_13)",decl:{start:{line:201,column:4},end:{line:201,column:5}},loc:{start:{line:201,column:15},end:{line:207,column:5}},line:201},"14":{name:"(anonymous_14)",decl:{start:{line:211,column:4},end:{line:211,column:5}},loc:{start:{line:211,column:22},end:{line:213,column:5}},line:211},"15":{name:"(anonymous_15)",decl:{start:{line:217,column:4},end:{line:217,column:5}},loc:{start:{line:217,column:20},end:{line:230,column:5}},line:217},"16":{name:"(anonymous_16)",decl:{start:{line:234,column:4},end:{line:234,column:5}},loc:{start:{line:234,column:22},end:{line:245,column:5}},line:234},"17":{name:"(anonymous_17)",decl:{start:{line:248,column:4},end:{line:248,column:5}},loc:{start:{line:248,column:21},end:{line:250,column:5}},line:248},"18":{name:"(anonymous_18)",decl:{start:{line:251,column:4},end:{line:251,column:5}},loc:{start:{line:251,column:20},end:{line:253,column:5}},line:251},"19":{name:"(anonymous_19)",decl:{start:{line:257,column:4},end:{line:257,column:5}},loc:{start:{line:257,column:22},end:{line:287,column:5}},line:257},"20":{name:"(anonymous_20)",decl:{start:{line:291,column:4},end:{line:291,column:5}},loc:{start:{line:291,column:21},end:{line:304,column:5}},line:291},"21":{name:"(anonymous_21)",decl:{start:{line:305,column:4},end:{line:305,column:5}},loc:{start:{line:305,column:24},end:{line:310,column:5}},line:305},"22":{name:"(anonymous_22)",decl:{start:{line:317,column:28},end:{line:317,column:29}},loc:{start:{line:317,column:40},end:{line:317,column:166}},line:317}},branchMap:{"0":{loc:{start:{line:104,column:12},end:{line:106,column:13}},type:"if",locations:[{start:{line:104,column:12},end:{line:106,column:13}},{start:{line:104,column:12},end:{line:106,column:13}}],line:104},"1":{loc:{start:{line:119,column:8},end:{line:121,column:9}},type:"if",locations:[{start:{line:119,column:8},end:{line:121,column:9}},{start:{line:119,column:8},end:{line:121,column:9}}],line:119},"2":{loc:{start:{line:133,column:8},end:{line:139,column:9}},type:"if",locations:[{start:{line:133,column:8},end:{line:139,column:9}},{start:{line:133,column:8},end:{line:139,column:9}}],line:133},"3":{loc:{start:{line:148,column:8},end:{line:153,column:9}},type:"if",locations:[{start:{line:148,column:8},end:{line:153,column:9}},{start:{line:148,column:8},end:{line:153,column:9}}],line:148},"4":{loc:{start:{line:191,column:8},end:{line:193,column:9}},type:"if",locations:[{start:{line:191,column:8},end:{line:193,column:9}},{start:{line:191,column:8},end:{line:193,column:9}}],line:191},"5":{loc:{start:{line:191,column:12},end:{line:191,column:69}},type:"binary-expr",locations:[{start:{line:191,column:12},end:{line:191,column:30}},{start:{line:191,column:34},end:{line:191,column:69}}],line:191},"6":{loc:{start:{line:219,column:8},end:{line:224,column:9}},type:"if",locations:[{start:{line:219,column:8},end:{line:224,column:9}},{start:{line:219,column:8},end:{line:224,column:9}}],line:219},"7":{loc:{start:{line:219,column:12},end:{line:219,column:75}},type:"binary-expr",locations:[{start:{line:219,column:12},end:{line:219,column:37}},{start:{line:219,column:41},end:{line:219,column:75}}],line:219},"8":{loc:{start:{line:221,column:12},end:{line:223,column:13}},type:"if",locations:[{start:{line:221,column:12},end:{line:223,column:13}},{start:{line:221,column:12},end:{line:223,column:13}}],line:221},"9":{loc:{start:{line:226,column:8},end:{line:228,column:9}},type:"if",locations:[{start:{line:226,column:8},end:{line:228,column:9}},{start:{line:226,column:8},end:{line:228,column:9}}],line:226},"10":{loc:{start:{line:235,column:8},end:{line:243,column:9}},type:"if",locations:[{start:{line:235,column:8},end:{line:243,column:9}},{start:{line:235,column:8},end:{line:243,column:9}}],line:235},"11":{loc:{start:{line:235,column:12},end:{line:235,column:65}},type:"binary-expr",locations:[{start:{line:235,column:12},end:{line:235,column:24}},{start:{line:235,column:28},end:{line:235,column:42}},{start:{line:235,column:46},end:{line:235,column:65}}],line:235},"12":{loc:{start:{line:249,column:15},end:{line:249,column:81}},type:"cond-expr",locations:[{start:{line:249,column:34},end:{line:249,column:77}},{start:{line:249,column:80},end:{line:249,column:81}}],line:249},"13":{loc:{start:{line:252,column:15},end:{line:252,column:80}},type:"cond-expr",locations:[{start:{line:252,column:34},end:{line:252,column:76}},{start:{line:252,column:79},end:{line:252,column:80}}],line:252},"14":{loc:{start:{line:260,column:8},end:{line:265,column:9}},type:"if",locations:[{start:{line:260,column:8},end:{line:265,column:9}},{start:{line:260,column:8},end:{line:265,column:9}}],line:260},"15":{loc:{start:{line:266,column:8},end:{line:285,column:9}},type:"switch",locations:[{start:{line:267,column:12},end:{line:267,column:37}},{start:{line:268,column:12},end:{line:270,column:22}},{start:{line:271,column:12},end:{line:271,column:40}},{start:{line:272,column:12},end:{line:281,column:22}},{start:{line:282,column:12},end:{line:284,column:22}}],line:266},"16":{loc:{start:{line:278,column:16},end:{line:280,column:17}},type:"if",locations:[{start:{line:278,column:16},end:{line:280,column:17}},{start:{line:278,column:16},end:{line:280,column:17}}],line:278},"17":{loc:{start:{line:294,column:8},end:{line:302,column:9}},type:"switch",locations:[{start:{line:295,column:12},end:{line:295,column:38}},{start:{line:296,column:12},end:{line:298,column:22}},{start:{line:299,column:12},end:{line:301,column:22}}],line:294},"18":{loc:{start:{line:307,column:8},end:{line:309,column:9}},type:"if",locations:[{start:{line:307,column:8},end:{line:309,column:9}},{start:{line:307,column:8},end:{line:309,column:9}}],line:307}},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},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,"22":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 {\n ChangeDetectorRef,\n Directive,\n DoCheck,\n ElementRef,\n Injector,\n Input,\n OnDestroy,\n OnInit,\n ViewChild,\n} from '@angular/core';\nimport { AbstractControl, ValidationErrors } from '@angular/forms';\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, DoCheck {\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 * 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\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 ngDoCheck(): void {\n // this.onContentChange();\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:"fa047461804f02fe7cc1250ae554744fcf45eed4"};var coverage=global[gcv]||(global[gcv]={});if(!coverage[path]||coverage[path].hash!==hash){coverage[path]=coverageData;}var actualCoverage=coverage[path];{// @ts-ignore
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*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
5
+ // #region Constructors
7
6
  /**
8
- * Moment
9
- */
10
- const moment = moment_['default'];
7
+ * Constructor
8
+ * @param formlayout SacFormLayoutCommon to define scoped layout settings
9
+ * @param injector Injector for injecting services
10
+ * @param elementRef reference to html element
11
+ */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
11
12
  /**
12
- * Base Klasse für Date/Time Controls
13
- */
14
- class SacBaseDateTimeControl extends SacBaseModelControl {
15
- // #region Constructor
16
- /**
17
- * Konstruktor
18
- * @param parent typ SacFormCommon
19
- * @param injector typ Injector
20
- * @param _elementRef typ ElementRef
21
- */
22
- constructor(parent, injector, _elementRef) {
23
- super(parent, injector);
24
- this._elementRef = _elementRef;
25
- //#region Abstract Methods
26
- /**
13
+ * Helper class to display tooltip on correct position
14
+ */cov_193zbqns7k().s[3]++;this.popupHelper=new PopUpHelper();/**
27
15
  * das property enthielt das Value als string. Default ist ''
28
- */
29
- this._valueAsString = '';
30
- /**
16
+ */cov_193zbqns7k().s[4]++;this._valueAsString='';/**
17
+ * Property for enum in Angular HTML template
18
+ */cov_193zbqns7k().s[5]++;this.TooltipPosition=TooltipPosition;/**
19
+ * Definiert ob der Date Selector angezeigt wird
20
+ */cov_193zbqns7k().s[6]++;this._showselector=false;/**
31
21
  * Definiert das Control als Required
32
- */
33
- this.isrequired = false;
34
- /**
22
+ */cov_193zbqns7k().s[7]++;this.isrequired=false;/**
23
+ * Moment JS Instance
24
+ */cov_193zbqns7k().s[8]++;this.moment=moment_['default'];/**
25
+ * Arrow Item of Picker Element. Required to set the position of arrow correctly
26
+ */cov_193zbqns7k().s[9]++;this.pickerPosition=TooltipPosition;/**
35
27
  * TextBox Placeholder
36
- */
37
- this.placeholder = null;
38
- /**
39
- * Resource Key für Validation Message Required bei Control
40
- */
41
- this.validationmessagerequired = 'VALIDATION_ERROR_REQUIRED';
42
- /**
43
- * Resource Key für Validation Message Required in Validation Summary
44
- */
45
- this.validationmessagerequiredsummary = 'VALIDATION_ERROR_SUMMARY_REQUIRED';
46
- /**
28
+ */cov_193zbqns7k().s[10]++;this.placeholder=null;/**
29
+ * Position of the picker arrow at the left
30
+ */cov_193zbqns7k().s[11]++;this.posArrowLeft=null;/**
31
+ * Position of the picker arrow at the top
32
+ */cov_193zbqns7k().s[12]++;this.posArrowTop=null;/**
33
+ * Position of the picker at the left
34
+ */cov_193zbqns7k().s[13]++;this.posPopupLeft=0;/**
35
+ * Position of the picker at the top
36
+ */cov_193zbqns7k().s[14]++;this.posPopupTop=0;/**
37
+ * Position of the datetime picker. Values: left|top|right|bottom|auto
38
+ *
39
+ * Value 'auto' can be combined with another value.
40
+ */cov_193zbqns7k().s[15]++;this.position='bottomend|topend';/**
47
41
  * Resource Key für Validation Message DateTimeFormat bei Control
48
- */
49
- this.validationmessagedatetimeformat = 'VALIDATION_ERROR_DATETIMEFORMAT';
50
- /**
42
+ */cov_193zbqns7k().s[16]++;this.validationmessagedatetimeformat=this.validationKeyService.ValidationErrorDatetimeFormat;/**
51
43
  * Resource Key für Validation Message DateTimeFormat in Validation Summary
52
- */
53
- this.validationmessagedatetimeformatsummary = 'VALIDATION_ERROR_SUMMARY_DATETIMEFORMAT';
54
- }
55
- // #endregion
56
- /**
57
- * Init Event
58
- */
59
- ngOnInit() {
60
- super.ngOnInit();
61
- this.SetDateTimeFormat();
62
- }
63
- //#endregion
64
- //#region Variablen
65
- //#endregion
66
- // #region Properties
67
- //#endregion
68
- //#region ValueControlAccess
69
- /**
70
- * Overwrite WriteValue to Set correct Date Object
71
- */
72
- writeValue(value) {
73
- if (value === '' || value === null || value === undefined) {
74
- // Reset Value String, damit beim Update des Models auch das Input Feld geleert wird.
75
- this._valueAsString = '';
76
- // Set Internal Property
77
- this._value = null;
78
- }
79
- else {
80
- this._value = this.getDate(value).toDate();
81
- }
82
- super.writeValue(this._value);
83
- }
84
- /**
85
- * JSON Date String in ein UTC DateTime Object konvertieren, welches vom Control verwendete werden kann
86
- */
87
- getDate(timestamp) {
88
- const date = new Date(timestamp);
89
- const year = date.getUTCFullYear();
90
- const month = date.getUTCMonth();
91
- const day = date.getUTCDate();
92
- const hours = date.getUTCHours();
93
- const minutes = date.getUTCMinutes();
94
- const seconds = date.getUTCSeconds();
95
- return moment(Date.UTC(year, month, day, hours, minutes, seconds));
96
- }
97
- //#endregion
98
- // #region Value as String
99
- /**
100
- * Das Input bekommt das value von typ string
101
- */
102
- set valuestring(v) {
103
- this._valueAsString = v;
104
- let date = moment(v, [this.GetDateTimeFormatString()], true);
105
- date = this.ModifyParsedDateTimeValue(date).utc();
106
- if (date.isValid()) {
107
- this.value = date.toDate();
108
- }
109
- else {
110
- this.value = null;
111
- }
112
- }
113
- /**
44
+ */cov_193zbqns7k().s[17]++;this.validationmessagedatetimeformatsummary=this.validationKeyService.ValidationErrorSummaryDatetimeFormat;/**
45
+ * Resource Key für Validation Message Required bei Control
46
+ */cov_193zbqns7k().s[18]++;this.validationmessagerequired=this.validationKeyService.ValidationErrorRequired;/**
47
+ * Resource Key für Validation Message Required in Validation Summary
48
+ */cov_193zbqns7k().s[19]++;this.validationmessagerequiredsummary=this.validationKeyService.ValidationErrorSummaryRequired;// #endregion Protected Methods
49
+ // #region Private Methods
50
+ /**
51
+ * method if content has changed and proportions need to be reset in the UI.
52
+ */cov_193zbqns7k().s[20]++;this.onContentChange=()=>{cov_193zbqns7k().f[1]++;cov_193zbqns7k().s[21]++;// Do nothing if is not visible
53
+ 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
+ // #region Public Getters And Setters
55
+ /**
56
+ * Setter for the name of the container for the tooltip. Is required as the tooltip can be hidden via ngIf.
57
+ */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;}/**
114
58
  * getter für valuestring
115
- */
116
- get valuestring() {
117
- if (this.value === null) {
118
- return this._valueAsString;
119
- }
120
- else {
121
- const date = moment.utc(this.value);
122
- return date.local().format(this.GetDateTimeFormatString());
123
- }
124
- }
125
- /**
59
+ */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
+ */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;}}/**
62
+ * Returns the position of the tooltip
63
+ */GetPickerPosition(){cov_193zbqns7k().f[7]++;cov_193zbqns7k().s[42]++;return this.popupHelper.getDisplayPosition(this.pickerbutton,this.pickercontainer,this.getArrowWidth(),this.getArrowHeight(),this.position,false);}/**
64
+ * JSON Date String in ein UTC DateTime Object konvertieren, welches vom Control verwendete werden kann
65
+ */getDate(timestamp){cov_193zbqns7k().f[8]++;const date=(cov_193zbqns7k().s[43]++,new Date(timestamp));const year=(cov_193zbqns7k().s[44]++,date.getUTCFullYear());const month=(cov_193zbqns7k().s[45]++,date.getUTCMonth());const day=(cov_193zbqns7k().s[46]++,date.getUTCDate());const hours=(cov_193zbqns7k().s[47]++,date.getUTCHours());const minutes=(cov_193zbqns7k().s[48]++,date.getUTCMinutes());const seconds=(cov_193zbqns7k().s[49]++,date.getUTCSeconds());cov_193zbqns7k().s[50]++;return this.moment(Date.UTC(year,month,day,hours,minutes,seconds));}/**
66
+ * Calculates the height of the tooltip
67
+ */getPickerHeight(){cov_193zbqns7k().f[9]++;cov_193zbqns7k().s[51]++;return this.popupHelper.getPopupHeight(this.pickercontainer);}/**
68
+ * Calculates the width of the picker
69
+ */getPickerWidth(){cov_193zbqns7k().f[10]++;cov_193zbqns7k().s[52]++;return this.popupHelper.getPopupWidth(this.pickercontainer);}ngDoCheck(){cov_193zbqns7k().f[11]++;}// this.onContentChange();
70
+ ngOnDestroy(){cov_193zbqns7k().f[12]++;cov_193zbqns7k().s[53]++;// 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[54]++;document.body.removeChild(this.pickercontainer.nativeElement);}else{cov_193zbqns7k().b[4][1]++;}// Unregister Event Listener
72
+ cov_193zbqns7k().s[55]++;window.removeEventListener('scroll',this.onContentChange,true);cov_193zbqns7k().s[56]++;window.removeEventListener('resize',this.onContentChange,true);}/**
73
+ * Init Event
74
+ */ngOnInit(){cov_193zbqns7k().f[13]++;cov_193zbqns7k().s[57]++;super.ngOnInit();cov_193zbqns7k().s[58]++;this.setDateTimeFormat();// Register Event Listener
75
+ cov_193zbqns7k().s[59]++;window.addEventListener('scroll',this.onContentChange,true);cov_193zbqns7k().s[60]++;window.addEventListener('resize',this.onContentChange,true);}/**
126
76
  * setzt das value von typ string zu property valuestring
127
- */
128
- setValueString(v) {
129
- this.valuestring = v;
130
- }
131
- // #endregion
132
- // #region Private Methods
133
- SetDateTimeFormat() {
134
- // HACK: Add addition property to FormControl. Can be fixed if solution for ticket: https://github.com/angular/angular/issues/19686
135
- if (this.ngControl) {
136
- this.ngControl.datetimeformatstring =
137
- this.GetDateTimeFormatString();
138
- }
139
- }
140
- // #endregion
141
- //#region Validation
142
- /**
77
+ */setValueString(v){cov_193zbqns7k().f[14]++;cov_193zbqns7k().s[61]++;this.valuestring=v;}/**
143
78
  * Validator
144
- */
145
- validateData(c) {
146
- let error = null;
147
- error = Validation.isValidDate(this.validationmessagedatetimeformat, this.validationmessagedatetimeformatsummary)(c);
148
- if (this.isrequired) {
149
- error = Validation.required(this.validationmessagerequired, this.validationmessagerequiredsummary)(c);
150
- }
151
- return error;
152
- }
153
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacBaseDateTimeControl, deps: [{ token: i1.SacFormCommon }, { token: i0.Injector }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
154
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: SacBaseDateTimeControl, inputs: { isrequired: "isrequired", placeholder: "placeholder", validationmessagerequired: "validationmessagerequired", validationmessagerequiredsummary: "validationmessagerequiredsummary", validationmessagedatetimeformat: "validationmessagedatetimeformat", validationmessagedatetimeformatsummary: "validationmessagedatetimeformatsummary", valuestring: "valuestring" }, usesInheritance: true, ngImport: i0 }); }
155
- }
156
- export { SacBaseDateTimeControl };
157
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SacBaseDateTimeControl, decorators: [{
158
- type: Directive
159
- }], ctorParameters: function () { return [{ type: i1.SacFormCommon }, { type: i0.Injector }, { type: i0.ElementRef }]; }, propDecorators: { isrequired: [{
160
- type: Input
161
- }], placeholder: [{
162
- type: Input
163
- }], validationmessagerequired: [{
164
- type: Input
165
- }], validationmessagerequiredsummary: [{
166
- type: Input
167
- }], validationmessagedatetimeformat: [{
168
- type: Input
169
- }], validationmessagedatetimeformatsummary: [{
170
- type: Input
171
- }], valuestring: [{
172
- type: Input
173
- }] } });
174
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZWRhdGV0aW1lY29udHJvbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3NhYy1jb21tb24vc3JjL2NvbW1vbi9iYXNlZGF0ZXRpbWVjb250cm9sLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXdCLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUUvRSxPQUFPLEtBQUssT0FBTyxNQUFNLFFBQVEsQ0FBQztBQUdsQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDOzs7QUFFekQ7O0dBRUc7QUFDSCxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDbEM7O0dBRUc7QUFDSCxNQUNzQixzQkFDcEIsU0FBUSxtQkFBeUI7SUFHakMsc0JBQXNCO0lBRXRCOzs7OztPQUtHO0lBQ0gsWUFDRSxNQUFxQixFQUNyQixRQUFrQixFQUNSLFdBQXVCO1FBRWpDLEtBQUssQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFGZCxnQkFBVyxHQUFYLFdBQVcsQ0FBWTtRQWVuQywwQkFBMEI7UUFFMUI7O1dBRUc7UUFDTyxtQkFBYyxHQUFHLEVBQUUsQ0FBQztRQUU5Qjs7V0FFRztRQUNNLGVBQVUsR0FBWSxLQUFLLENBQUM7UUFFckM7O1dBRUc7UUFDTSxnQkFBVyxHQUFXLElBQUksQ0FBQztRQUVwQzs7V0FFRztRQUNNLDhCQUF5QixHQUFXLDJCQUEyQixDQUFDO1FBQ3pFOztXQUVHO1FBQ00scUNBQWdDLEdBQ3ZDLG1DQUFtQyxDQUFDO1FBRXRDOztXQUVHO1FBQ00sb0NBQStCLEdBQ3RDLGlDQUFpQyxDQUFDO1FBQ3BDOztXQUVHO1FBQ00sMkNBQXNDLEdBQzdDLHlDQUF5QyxDQUFDO0lBaEQ1QyxDQUFDO0lBRUQsYUFBYTtJQUViOztPQUVHO0lB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QUFDLFNBQVMsRUFBRTtZQUNqQixJQUFJLENBQUMsU0FBeUMsQ0FBQyxvQkFBb0I7Z0JBQ2xFLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO1NBQ2xDO0lBQ0gsQ0FBQztJQUVELGFBQWE7SUFFYixvQkFBb0I7SUFFcEI7O09BRUc7SUFDSCxZQUFZLENBQUMsQ0FBa0I7UUFDN0IsSUFBSSxLQUFLLEdBQTRCLElBQUksQ0FBQztRQUUxQyxLQUFLLEdBQUcsVUFBVSxDQUFDLFdBQVcsQ0FDNUIsSUFBSSxDQUFDLCtCQUErQixFQUNwQyxJQUFJLENBQUMsc0NBQXNDLENBQzVDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFTCxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDbkIsS0FBSyxHQUFHLFVBQVUsQ0FBQyxRQUFRLENBQ3pCLElBQUksQ0FBQyx5QkFBeUIsRUFDOUIsSUFBSSxDQUFDLGdDQUFnQyxDQUN0QyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ047UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7K0dBcE1tQixzQkFBc0I7bUdBQXRCLHNCQUFzQjs7U0FBdEIsc0JBQXNCOzRGQUF0QixzQkFBc0I7a0JBRDNDLFNBQVM7b0pBeUNDLFVBQVU7c0JBQWxCLEtBQUs7Z0JBS0csV0FBVztzQkFBbkIsS0FBSztnQkFLRyx5QkFBeUI7c0JBQWpDLEtBQUs7Z0JBSUcsZ0NBQWdDO3NCQUF4QyxLQUFLO2dCQU1HLCtCQUErQjtzQkFBdkMsS0FBSztnQkFLRyxzQ0FBc0M7c0JBQTlDLEtBQUs7Z0JBZ0VGLFdBQVc7c0JBRGQsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgSW5qZWN0b3IsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBWYWxpZGF0aW9uRXJyb3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgKiBhcyBtb21lbnRfIGZyb20gJ21vbWVudCc7XHJcbmltcG9ydCB7IE1vbWVudCB9IGZyb20gJ21vbWVudCc7XHJcbmltcG9ydCB7IFNhY0Zvcm1Db21tb24gfSBmcm9tICcuLi9jb250cm9scy9mb3JtL2Zvcm0nO1xyXG5pbXBvcnQgeyBWYWxpZGF0aW9uIH0gZnJvbSAnLi4vdmFsaWRhdGlvbic7XHJcbmltcG9ydCB7IFNhY0Jhc2VNb2RlbENvbnRyb2wgfSBmcm9tICcuL2Jhc2Vtb2RlbGNvbnRyb2wnO1xyXG5pbXBvcnQgeyBJRGF0ZVRpbWVDb250cm9sIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9pZGF0ZXRpbWVjb250cm9sJztcclxuLyoqXHJcbiAqIE1vbWVudFxyXG4gKi9cclxuY29uc3QgbW9tZW50ID0gbW9tZW50X1snZGVmYXVsdCddO1xyXG4vKipcclxuICogQmFzZSBLbGFzc2UgZsO8ciBEYXRlL1RpbWUgQ29udHJvbHNcclxuICovXHJcbkBEaXJlY3RpdmUoKVxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgU2FjQmFzZURhdGVUaW1lQ29udHJvbFxyXG4gIGV4dGVuZHMgU2FjQmFzZU1vZGVsQ29udHJvbDxEYXRlPlxyXG4gIGltcGxlbWVudHMgT25Jbml0XHJcbntcclxuICAvLyAjcmVnaW9uIENvbnN0cnVjdG9yXHJcblxyXG4gIC8qKlxyXG4gICAqIEtvbnN0cnVrdG9yXHJcbiAgICogQHBhcmFtIHBhcmVudCB0eXAgU2FjRm9ybUNvbW1vblxyXG4gICAqIEBwYXJhbSBpbmplY3RvciB0eXAgSW5qZWN0b3JcclxuICAgKiBAcGFyYW0gX2VsZW1lbnRSZWYgdHlwIEVsZW1lbnRSZWZcclxuICAgKi9cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHBhcmVudDogU2FjRm9ybUNvbW1vbixcclxuICAgIGluamVjdG9yOiBJbmplY3RvcixcclxuICAgIHByb3RlY3RlZCBfZWxlbWVudFJlZjogRWxlbWVudFJlZlxyXG4gICkge1xyXG4gICAgc3VwZXIocGFyZW50LCBpbmplY3Rvcik7XHJcbiAgfVxyXG5cclxuICAvLyAjZW5kcmVnaW9uXHJcblxyXG4gIC8qKlxyXG4gICAqIEluaXQgRXZlbnRcclxuICAgKi9cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHN1cGVyLm5nT25Jbml0KCk7XHJcbiAgICB0aGlzLlNldERhdGVUaW1lRm9ybWF0KCk7XHJcbiAgfVxyXG5cclxuICAvLyNyZWdpb24gQWJzdHJhY3QgTWV0aG9kc1xyXG5cclxuICAvKipcclxuICAgKiBkYXMgcHJvcGVydHkgZW50aGllbHQgZGFzIFZhbHVlIGFscyBzdHJpbmcuIERlZmF1bHQgaXN0ICcnXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIF92YWx1ZUFzU3RyaW5nID0gJyc7XHJcblxyXG4gIC8qKlxyXG4gICAqIERlZmluaWVydCBkYXMgQ29udHJvbCBhbHMgUmVxdWlyZWRcclxuICAgKi9cclxuICBASW5wdXQoKSBpc3JlcXVpcmVkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8qKlxyXG4gICAqIFRleHRCb3ggUGxhY2Vob2xkZXJcclxuICAgKi9cclxuICBASW5wdXQoKSBwbGFjZWhvbGRlcjogc3RyaW5nID0gbnVsbDtcclxuXHJcbiAgLyoqXHJcbiAgICogUmVzb3VyY2UgS2V5IGbDvHIgVmFsaWRhdGlvbiBNZXNzYWdlIFJlcXVpcmVkIGJlaSBDb250cm9sXHJcbiAgICovXHJcbiAgQElucHV0KCkgdmFsaWRhdGlvbm1lc3NhZ2VyZXF1aXJlZDogc3RyaW5nID0gJ1ZBTElEQVRJT05fRVJST1JfUkVRVUlSRUQnO1xyXG4gIC8qKlxyXG4gICAqIFJlc291cmNlIEtleSBmw7xyIFZhbGlkYXRpb24gTWVzc2FnZSBSZXF1aXJlZCBpbiBWYWxpZGF0aW9uIFN1bW1hcnlcclxuICAgKi9cclxuICBASW5wdXQoKSB2YWxpZGF0aW9ubWVzc2FnZXJlcXVpcmVkc3VtbWFyeTogc3RyaW5nID1cclxuICAgICdWQUxJREFUSU9OX0VSUk9SX1NVTU1BUllfUkVRVUlSRUQnO1xyXG5cclxuICAvKipcclxuICAgKiBSZXNvdXJjZSBLZXkgZsO8ciBWYWxpZGF0aW9uIE1lc3NhZ2UgRGF0ZVRpbWVGb3JtYXQgYmVpIENvbnRyb2xcclxuICAgKi9cclxuICBASW5wdXQoKSB2YWxpZGF0aW9ubWVzc2FnZWRhdGV0aW1lZm9ybWF0OiBzdHJpbmcgPVxyXG4gICAgJ1ZBTElEQVRJT05fRVJST1JfREFURVRJTUVGT1JNQVQnO1xyXG4gIC8qKlxyXG4gICAqIFJlc291cmNlIEtleSBmw7xyIFZhbGlkYXRpb24gTWVzc2FnZSBEYXRlVGltZUZvcm1hdCBpbiBWYWxpZGF0aW9uIFN1bW1hcnlcclxuICAgKi9cclxuICBASW5wdXQoKSB2YWxpZGF0aW9ubWVzc2FnZWRhdGV0aW1lZm9ybWF0c3VtbWFyeTogc3RyaW5nID1cclxuICAgICdWQUxJREFUSU9OX0VSUk9SX1NVTU1BUllfREFURVRJTUVGT1JNQVQnO1xyXG5cclxuICAvKipcclxuICAgKiBEaWUgbWV0aG9kZSByZXR1cm5zIGRhdGVUaW1lIGluIHN0cmluZ1xyXG4gICAqL1xyXG4gIGFic3RyYWN0IEdldERhdGVUaW1lRm9ybWF0U3RyaW5nKCk6IHN0cmluZztcclxuXHJcbiAgLyoqXHJcbiAgICogRGllIG1ldGhvZGUgbW9kaWZpemllcnQgZGFzIGVpbmdlZ2ViZW5lIFZhbHVlIHZvbiB0eXAgTW9tZW50XHJcbiAgICovXHJcbiAgYWJzdHJhY3QgTW9kaWZ5UGFyc2VkRGF0ZVRpbWVWYWx1ZSh2OiBNb21lbnQpOiBNb21lbnQ7XHJcblxyXG4gIC8vI2VuZHJlZ2lvblxyXG5cclxuICAvLyNyZWdpb24gVmFyaWFibGVuXHJcblxyXG4gIC8vI2VuZHJlZ2lvblxyXG5cclxuICAvLyAjcmVnaW9uIFByb3BlcnRpZXNcclxuXHJcbiAgLy8jZW5kcmVnaW9uXHJcblxyXG4gIC8vI3JlZ2lvbiBWYWx1ZUNvbnRyb2xBY2Nlc3NcclxuXHJcbiAgLyoqXHJcbiAgICogT3ZlcndyaXRlIFdyaXRlVmFsdWUgdG8gU2V0IGNvcnJlY3QgRGF0ZSBPYmplY3RcclxuICAgKi9cclxuICB3cml0ZVZhbHVlKHZhbHVlOiBEYXRlIHwgc3RyaW5nKSB7XHJcbiAgICBpZiAodmFsdWUgPT09ICcnIHx8IHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgLy8gUmVzZXQgVmFsdWUgU3RyaW5nLCBkYW1pdCBiZWltIFVwZGF0ZSBkZXMgTW9kZWxzIGF1Y2ggZGFzIElucHV0IEZlbGQgZ2VsZWVydCB3aXJkLlxyXG4gICAgICB0aGlzLl92YWx1ZUFzU3RyaW5nID0gJyc7XHJcbiAgICAgIC8vIFNldCBJbnRlcm5hbCBQcm9wZXJ0eVxyXG4gICAgICB0aGlzLl92YWx1ZSA9IG51bGw7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLl92YWx1ZSA9IHRoaXMuZ2V0RGF0ZSh2YWx1ZSkudG9EYXRlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgc3VwZXIud3JpdGVWYWx1ZSh0aGlzLl92YWx1ZSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBKU09OIERhdGUgU3RyaW5nIGluIGVpbiBVVEMgRGF0ZVRpbWUgT2JqZWN0IGtvbnZlcnRpZXJlbiwgd2VsY2hlcyB2b20gQ29udHJvbCB2ZXJ3ZW5kZXRlIHdlcmRlbiBrYW5uXHJcbiAgICovXHJcbiAgZ2V0RGF0ZSh0aW1lc3RhbXApIHtcclxuICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSh0aW1lc3RhbXApO1xyXG4gICAgY29uc3QgeWVhciA9IGRhdGUuZ2V0VVRDRnVsbFllYXIoKTtcclxuICAgIGNvbnN0IG1vbnRoID0gZGF0ZS5nZXRVVENNb250aCgpO1xyXG4gICAgY29uc3QgZGF5ID0gZGF0ZS5nZXRVVENEYXRlKCk7XHJcbiAgICBjb25zdCBob3VycyA9IGRhdGUuZ2V0VVRDSG91cnMoKTtcclxuICAgIGNvbnN0IG1pbnV0ZXMgPSBkYXRlLmdldFVUQ01pbnV0ZXMoKTtcclxuICAgIGNvbnN0IHNlY29uZHMgPSBkYXRlLmdldFVUQ1NlY29uZHMoKTtcclxuXHJcbiAgICByZXR1cm4gbW9tZW50KERhdGUuVVRDKHllYXIsIG1vbnRoLCBkYXksIGhvdXJzLCBtaW51dGVzLCBzZWNvbmRzKSk7XHJcbiAgfVxyXG5cclxuICAvLyNlbmRyZWdpb25cclxuXHJcbiAgLy8gI3JlZ2lvbiBWYWx1ZSBhcyBTdHJpbmdcclxuXHJcbiAgLyoqXHJcbiAgICogRGFzIElucHV0IGJla29tbXQgZGFzIHZhbHVlIHZvbiB0eXAgc3RyaW5nXHJcbiAgICovXHJcbiAgQElucHV0KClcclxuICBzZXQgdmFsdWVzdHJpbmcodjogc3RyaW5nKSB7XHJcbiAgICB0aGlzLl92YWx1ZUFzU3RyaW5nID0gdjtcclxuICAgIGxldCBkYXRlOiBNb21lbnQgPSBtb21lbnQodiwgW3RoaXMuR2V0RGF0ZVRpbWVGb3JtYXRTdHJpbmcoKV0sIHRydWUpO1xyXG5cclxuICAgIGRhdGUgPSB0aGlzLk1vZGlmeVBhcnNlZERhdGVUaW1lVmFsdWUoZGF0ZSkudXRjKCk7XHJcblxyXG4gICAgaWYgKGRhdGUuaXNWYWxpZCgpKSB7XHJcbiAgICAgIHRoaXMudmFsdWUgPSBkYXRlLnRvRGF0ZSgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy52YWx1ZSA9IG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBnZXR0ZXIgZsO8ciB2YWx1ZXN0cmluZ1xyXG4gICAqL1xyXG4gIGdldCB2YWx1ZXN0cmluZygpOiBzdHJpbmcge1xyXG4gICAgaWYgKHRoaXMudmFsdWUgPT09IG51bGwpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuX3ZhbHVlQXNTdHJpbmc7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zdCBkYXRlID0gbW9tZW50LnV0Yyh0aGlzLnZhbHVlKTtcclxuICAgICAgcmV0dXJuIGRhdGUubG9jYWwoKS5mb3JtYXQodGhpcy5HZXREYXRlVGltZUZvcm1hdFN0cmluZygpKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIHNldHp0IGRhcyB2YWx1ZSB2b24gdHlwIHN0cmluZyB6dSBwcm9wZXJ0eSB2YWx1ZXN0cmluZ1xyXG4gICAqL1xyXG4gIHNldFZhbHVlU3RyaW5nKHY6IHN0cmluZykge1xyXG4gICAgdGhpcy52YWx1ZXN0cmluZyA9IHY7XHJcbiAgfVxyXG5cclxuICAvLyAjZW5kcmVnaW9uXHJcblxyXG4gIC8vICNyZWdpb24gUHJpdmF0ZSBNZXRob2RzXHJcblxyXG4gIHByaXZhdGUgU2V0RGF0ZVRpbWVGb3JtYXQoKTogdm9pZCB7XHJcbiAgICAvLyBIQUNLOiBBZGQgYWRkaXRpb24gcHJvcGVydHkgdG8gRm9ybUNvbnRyb2wuIENhbiBiZSBmaXhlZCBpZiBzb2x1dGlvbiBmb3IgdGlja2V0OiBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyL2lzc3Vlcy8xOTY4NlxyXG4gICAgaWYgKHRoaXMubmdDb250cm9sKSB7XHJcbiAgICAgICh0aGlzLm5nQ29udHJvbCBhcyB1bmtub3duIGFzIElEYXRlVGltZUNvbnRyb2wpLmRhdGV0aW1lZm9ybWF0c3RyaW5nID1cclxuICAgICAgICB0aGlzLkdldERhdGVUaW1lRm9ybWF0U3RyaW5nKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyAjZW5kcmVnaW9uXHJcblxyXG4gIC8vI3JlZ2lvbiBWYWxpZGF0aW9uXHJcblxyXG4gIC8qKlxyXG4gICAqIFZhbGlkYXRvclxyXG4gICAqL1xyXG4gIHZhbGlkYXRlRGF0YShjOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XHJcbiAgICBsZXQgZXJyb3I6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgICBlcnJvciA9IFZhbGlkYXRpb24uaXNWYWxpZERhdGUoXHJcbiAgICAgIHRoaXMudmFsaWRhdGlvbm1lc3NhZ2VkYXRldGltZWZvcm1hdCxcclxuICAgICAgdGhpcy52YWxpZGF0aW9ubWVzc2FnZWRhdGV0aW1lZm9ybWF0c3VtbWFyeVxyXG4gICAgKShjKTtcclxuXHJcbiAgICBpZiAodGhpcy5pc3JlcXVpcmVkKSB7XHJcbiAgICAgIGVycm9yID0gVmFsaWRhdGlvbi5yZXF1aXJlZChcclxuICAgICAgICB0aGlzLnZhbGlkYXRpb25tZXNzYWdlcmVxdWlyZWQsXHJcbiAgICAgICAgdGhpcy52YWxpZGF0aW9ubWVzc2FnZXJlcXVpcmVkc3VtbWFyeVxyXG4gICAgICApKGMpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBlcnJvcjtcclxuICB9XHJcblxyXG4gIC8vI2VuZHJlZ2lvblxyXG59XHJcbiJdfQ==
79
+ */validateData(c){cov_193zbqns7k().f[15]++;let error=(cov_193zbqns7k().s[62]++,null);cov_193zbqns7k().s[63]++;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[64]++;error=CreateValidationError('invalidtype',this.validationmessagedatetimeformat,this.validationmessagedatetimeformatsummary);cov_193zbqns7k().s[65]++;if(error){cov_193zbqns7k().b[8][0]++;cov_193zbqns7k().s[66]++;return error;}else{cov_193zbqns7k().b[8][1]++;}}else{cov_193zbqns7k().b[6][1]++;}cov_193zbqns7k().s[67]++;error=Validation.isValidDate(this.validationmessagedatetimeformat,this.validationmessagedatetimeformatsummary)(c);cov_193zbqns7k().s[68]++;if(this.isrequired){cov_193zbqns7k().b[9][0]++;cov_193zbqns7k().s[69]++;error=Validation.required(this.validationmessagerequired,this.validationmessagerequiredsummary)(c);}else{cov_193zbqns7k().b[9][1]++;}cov_193zbqns7k().s[70]++;return error;}/**
80
+ * Overwrite WriteValue to Set correct Date Object
81
+ */writeValue(value){cov_193zbqns7k().f[16]++;cov_193zbqns7k().s[71]++;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[72]++;// Reset Value String, damit beim Update des Models auch das Input Feld geleert wird.
82
+ this._valueAsString='';// Set Internal Property
83
+ cov_193zbqns7k().s[73]++;this._value=null;}else{cov_193zbqns7k().b[10][1]++;cov_193zbqns7k().s[74]++;this._value=this.getDate(value).toDate();}cov_193zbqns7k().s[75]++;super.writeValue(this._value);}// #endregion Public Methods
84
+ // #region Protected Methods
85
+ getArrowHeight(){cov_193zbqns7k().f[17]++;cov_193zbqns7k().s[76]++;return this.pickerarrow?(cov_193zbqns7k().b[12][0]++,this.pickerarrow.nativeElement.offsetHeight):(cov_193zbqns7k().b[12][1]++,0);}getArrowWidth(){cov_193zbqns7k().f[18]++;cov_193zbqns7k().s[77]++;return this.pickerarrow?(cov_193zbqns7k().b[13][0]++,this.pickerarrow.nativeElement.offsetWidth):(cov_193zbqns7k().b[13][1]++,0);}/**
86
+ * Calculates the position of the tooltip from links
87
+ */getPositionLeft(){cov_193zbqns7k().f[19]++;const value=(cov_193zbqns7k().s[78]++,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[79]++;if(value<0){cov_193zbqns7k().b[14][0]++;cov_193zbqns7k().s[80]++;this.posPopupLeft=5;}else{cov_193zbqns7k().b[14][1]++;cov_193zbqns7k().s[81]++;this.posPopupLeft=value;}cov_193zbqns7k().s[82]++;switch(this.GetPickerPosition()){case TooltipPosition.top:cov_193zbqns7k().b[15][0]++;case TooltipPosition.bottom:cov_193zbqns7k().b[15][1]++;cov_193zbqns7k().s[83]++;this.posArrowLeft=this.getPickerWidth()/2- -this.getArrowWidth();cov_193zbqns7k().s[84]++;break;case TooltipPosition.topend:cov_193zbqns7k().b[15][2]++;case TooltipPosition.bottomend:cov_193zbqns7k().b[15][3]++;cov_193zbqns7k().s[85]++;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[86]++;if(value<0){cov_193zbqns7k().b[16][0]++;cov_193zbqns7k().s[87]++;this.posArrowLeft-=value*-1+5;}else{cov_193zbqns7k().b[16][1]++;}cov_193zbqns7k().s[88]++;break;default:cov_193zbqns7k().b[15][4]++;cov_193zbqns7k().s[89]++;this.posArrowLeft=null;cov_193zbqns7k().s[90]++;break;}cov_193zbqns7k().s[91]++;return value;}/**
90
+ * Calculates the position of the tooltip from the top
91
+ */getPositionTop(){cov_193zbqns7k().f[20]++;const value=(cov_193zbqns7k().s[92]++,this.popupHelper.getPositionTop(this.pickerbutton,this.pickercontainer,this.elementRef,this.getArrowWidth(),this.getArrowHeight(),this.position,false));cov_193zbqns7k().s[93]++;this.posPopupTop=value;cov_193zbqns7k().s[94]++;switch(this.GetPickerPosition()){case TooltipPosition.left:cov_193zbqns7k().b[17][0]++;case TooltipPosition.right:cov_193zbqns7k().b[17][1]++;cov_193zbqns7k().s[95]++;this.posArrowTop=this.getPickerHeight()/2-6.5;cov_193zbqns7k().s[96]++;break;default:cov_193zbqns7k().b[17][2]++;cov_193zbqns7k().s[97]++;this.posArrowTop=null;cov_193zbqns7k().s[98]++;break;}cov_193zbqns7k().s[99]++;return value;}setDateTimeFormat(){cov_193zbqns7k().f[21]++;cov_193zbqns7k().s[100]++;// 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[101]++;this.ngControl.datetimeformatstring=this.GetDateTimeFormatString();}else{cov_193zbqns7k().b[18][1]++;}}static{cov_193zbqns7k().s[102]++;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[103]++;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:"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[104]++;i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"16.2.12",ngImport:i0,type:SacBaseDateTimeControl,decorators:[{type:Directive}],ctorParameters:function(){cov_193zbqns7k().f[22]++;cov_193zbqns7k().s[105]++;return[{type:i1.SacFormLayoutCommon},{type:i0.Injector},{type:i0.ElementRef},{type:i0.ChangeDetectorRef}];},propDecorators:{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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZWRhdGV0aW1lY29udHJvbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3NhYy1jb21tb24vc3JjL2NvbW1vbi9iYXNlZGF0ZXRpbWVjb250cm9sLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUM3RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN6RCxPQUFPLEVBRUgsU0FBUyxFQUlULEtBQUssRUFHTCxTQUFTLEdBQ1osTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxLQUFLLE9BQU8sTUFBTSxRQUFRLENBQUM7OztBQUVsQzs7R0FFRztBQUNILE1BQ3NCLHNCQUF1QixTQUFRLG1CQUF5QjtJQXlHMUUsd0JBQXdCO0lBRXhCLHVCQUF1QjtJQUV2Qjs7Ozs7T0FLRztJQUNILFlBQ0ksVUFBK0IsRUFDL0IsUUFBa0IsRUFDUixVQUFzQixFQUNmLEtBQXdCO1FBRXpDLEtBQUssQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFIbEIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUNmLFVBQUssR0FBTCxLQUFLLENBQW1CO1FBdEg3QyxxQkFBcUI7UUFFckI7O1dBRUc7UUFDYyxnQkFBVyxHQUFnQixJQUFJLFdBQVcsRUFBRSxDQUFDO1FBRTlEOztXQUVHO1FBQ08sbUJBQWMsR0FBRyxFQUFFLENBQUM7UUFPOUI7O1dBRUc7UUFDSSxvQkFBZSxHQUFHLGVBQWUsQ0FBQztRQUV6Qzs7V0FFRztRQUNJLGtCQUFhLEdBQVksS0FBSyxDQUFDO1FBRXRDOztXQUVHO1FBQ2Es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OytHQXRhaUIsc0JBQXNCO21HQUF0QixzQkFBc0I7O1NBQXRCLHNCQUFzQjs0RkFBdEIsc0JBQXNCO2tCQUQzQyxTQUFTOzBMQWdDVSxVQUFVO3NCQUF6QixLQUFLO2dCQVlDLFdBQVc7c0JBRGpCLFNBQVM7dUJBQUMsYUFBYSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFPcEMsWUFBWTtzQkFEbEIsU0FBUzt1QkFBQyxjQUFjLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQU0zQixXQUFXO3NCQUExQixLQUFLO2dCQTRCQyxRQUFRO3NCQURkLEtBQUs7Z0JBTVUsK0JBQStCO3NCQUE5QyxLQUFLO2dCQUtVLHNDQUFzQztzQkFBckQsS0FBSztnQkFNVSx5QkFBeUI7c0JBQXhDLEtBQUs7Z0JBS1UsZ0NBQWdDO3NCQUEvQyxLQUFLO2dCQTZCSyxNQUFNO3NCQURoQixTQUFTO3VCQUFDLFFBQVEsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBK0IzQixXQUFXO3NCQURyQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2FjRm9ybUxheW91dENvbW1vbiB9IGZyb20gJy4uL2NvbnRyb2xzL2xheW91dC9mb3JtbGF5b3V0JztcbmltcG9ydCB7IElEYXRlVGltZUNvbnRyb2wgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2lkYXRldGltZWNvbnRyb2wnO1xuaW1wb3J0IHsgVG9vbHRpcFBvc2l0aW9uIH0gZnJvbSAnLi4vdXRpbGl0aWVzL2VudW1zJztcbmltcG9ydCB7IFBvcFVwSGVscGVyIH0gZnJvbSAnLi4vdXRpbGl0aWVzL3BvcHVwaGVscGVyJztcbmltcG9ydCB7IFZhbGlkYXRpb24gfSBmcm9tICcuLi92YWxpZGF0aW9uJztcbmltcG9ydCB7IENyZWF0ZVZhbGlkYXRpb25FcnJvciB9IGZyb20gJy4uL3ZhbGlkYXRpb24vdmFsaWRhdGlvbmVycm9yY3JlYXRvcic7XG5pbXBvcnQgeyBTYWNCYXNlTW9kZWxDb250cm9sIH0gZnJvbSAnLi9iYXNlbW9kZWxjb250cm9sJztcbmltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgRGlyZWN0aXZlLFxuICAgIERvQ2hlY2ssXG4gICAgRWxlbWVudFJlZixcbiAgICBJbmplY3RvcixcbiAgICBJbnB1dCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIFZhbGlkYXRpb25FcnJvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgKiBhcyBtb21lbnRfIGZyb20gJ21vbWVudCc7XG5cbi8qKlxuICogQmFzZSBLbGFzc2UgZsO8ciBEYXRlL1RpbWUgQ29udHJvbHNcbiAqL1xuQERpcmVjdGl2ZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgU2FjQmFzZURhdGVUaW1lQ29udHJvbCBleHRlbmRzIFNhY0Jhc2VNb2RlbENvbnRyb2w8RGF0ZT4gaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgRG9DaGVjayB7XG4gICAgLy8gI3JlZ2lvbiBQcm9wZXJ0aWVzXG5cbiAgICAvKipcbiAgICAgKiBIZWxwZXIgY2xhc3MgdG8gZGlzcGxheSB0b29sdGlwIG9uIGNvcnJlY3QgcG9zaXRpb25cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IHBvcHVwSGVscGVyOiBQb3BVcEhlbHBlciA9IG5ldyBQb3BVcEhlbHBlcigpO1xuXG4gICAgLyoqXG4gICAgICogZGFzIHByb3BlcnR5IGVudGhpZWx0IGRhcyBWYWx1ZSBhbHMgc3RyaW5nLiBEZWZhdWx0IGlzdCAnJ1xuICAgICAqL1xuICAgIHByb3RlY3RlZCBfdmFsdWVBc1N0cmluZyA9ICcnO1xuXG4gICAgLyoqXG4gICAgICogQ29udGFpbmVycyBmb3IgdGhlIGRhdGV0aW1lIHBpY2tlclxuICAgICAqL1xuICAgIHByb3RlY3RlZCBwaWNrZXJjb250YWluZXI6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gICAgLyoqXG4gICAgICogUHJvcGVydHkgZm9yIGVudW0gaW4gQW5ndWxhciBIVE1MIHRlbXBsYXRlXG4gICAgICovXG4gICAgcHVibGljIFRvb2x0aXBQb3NpdGlvbiA9IFRvb2x0aXBQb3NpdGlvbjtcblxuICAgIC8qKlxuICAgICAqIERlZmluaWVydCBvYiBkZXIgRGF0ZSBTZWxlY3RvciBhbmdlemVpZ3Qgd2lyZFxuICAgICAqL1xuICAgIHB1YmxpYyBfc2hvd3NlbGVjdG9yOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBEZWZpbmllcnQgZGFzIENvbnRyb2wgYWxzIFJlcXVpcmVkXG4gICAgICovXG4gICAgQElucHV0KCkgcHVibGljIGlzcmVxdWlyZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIE1vbWVudCBKUyBJbnN0YW5jZVxuICAgICAqL1xuICAgIHB1YmxpYyBtb21lbnQgPSBtb21lbnRfWydkZWZhdWx0J107XG5cbiAgICAvKipcbiAgICAgKiBBcnJvdyBJdGVtIG9mIFBpY2tlciBFbGVtZW50LiBSZXF1aXJlZCB0byBzZXQgdGhlIHBvc2l0aW9uIG9mIGFycm93IGNvcnJlY3RseVxuICAgICAqL1xuICAgIHB1YmxpYyBwaWNrZXJQb3NpdGlvbiA9IFRvb2x0aXBQb3NpdGlvbjtcbiAgICBAVmlld0NoaWxkKCdwaWNrZXJhcnJvdycsIHsgc3RhdGljOiBmYWxzZSB9KVxuICAgIHB1YmxpYyBwaWNrZXJhcnJvdzogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4gfCBudWxsO1xuXG4gICAgLyoqXG4gICAgICogTmFtZSBvZiB0aGUgY29udGFpbmVyIGZvciBjb250ZW50IChlLmcuIGljb24pIG9uIHdoaWNoIHRoZSB0b29sdGlwIGlzIGRpc3BsYXllZC5cbiAgICAgKi9cbiAgICBAVmlld0NoaWxkKCdwaWNrZXJidXR0b24nLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICAgIHB1YmxpYyBwaWNrZXJidXR0b246IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gICAgLyoqXG4gICAgICogVGV4dEJveCBQbGFjZWhvbGRlclxuICAgICAqL1xuICAgIEBJbnB1dCgpIHB1YmxpYyBwbGFjZWhvbGRlcjogc3RyaW5nID0gbnVsbDtcblxuICAgIC8qKlxuICAgICAqIFBvc2l0aW9uIG9mIHRoZSBwaWNrZXIgYXJyb3cgYXQgdGhlIGxlZnRcbiAgICAgKi9cbiAgICBwdWJsaWMgcG9zQXJyb3dMZWZ0OiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICAgIC8qKlxuICAgICAqIFBvc2l0aW9uIG9mIHRoZSBwaWNrZXIgYXJyb3cgYXQgdGhlIHRvcFxuICAgICAqL1xuICAgIHB1YmxpYyBwb3NBcnJvd1RvcDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG5cbiAgICAvKipcbiAgICAgKiBQb3NpdGlvbiBvZiB0aGUgcGlja2VyIGF0IHRoZSBsZWZ0XG4gICAgICovXG4gICAgcHVibGljIHBvc1BvcHVwTGVmdDogbnVtYmVyID0gMDtcblxuICAgIC8qKlxuICAgICAqIFBvc2l0aW9uIG9mIHRoZSBwaWNrZXIgYXQgdGhlIHRvcFxuICAgICAqL1xuICAgIHB1YmxpYyBwb3NQb3B1cFRvcDogbnVtYmVyID0gMDtcblxuICAgIC8qKlxuICAgICAqIFBvc2l0aW9uIG9mIHRoZSBkYXRldGltZSBwaWNrZXIuIFZhbHVlczogbGVmdHx0b3B8cmlnaHR8Ym90dG9tfGF1dG9cbiAgICAgKlxuICAgICAqIFZhbHVlICdhdXRvJyBjYW4gYmUgY29tYmluZWQgd2l0aCBhbm90aGVyIHZhbHVlLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHBvc2l0aW9uOiBzdHJpbmcgPSAnYm90dG9tZW5kfHRvcGVuZCc7XG5cbiAgICAvKipcbiAgICAgKiBSZXNvdXJjZSBLZXkgZsO8ciBWYWxpZGF0aW9uIE1lc3NhZ2UgRGF0ZVRpbWVGb3JtYXQgYmVpIENvbnRyb2xcbiAgICAgKi9cbiAgICBASW5wdXQoKSBwdWJsaWMgdmFsaWRhdGlvbm1lc3NhZ2VkYXRldGltZWZvcm1hdDogc3RyaW5nID0gdGhpcy52YWxpZGF0aW9uS2V5U2VydmljZS5WYWxpZGF0aW9uRXJyb3JEYXRldGltZUZvcm1hdDtcblxuICAgIC8qKlxuICAgICAqIFJlc291cmNlIEtleSBmw7xyIFZhbGlkYXRpb24gTWVzc2FnZSBEYXRlVGltZUZvcm1hdCBpbiBWYWxpZGF0aW9uIFN1bW1hcnlcbiAgICAgKi9cbiAgICBASW5wdXQoKSBwdWJsaWMgdmFsaWRhdGlvbm1lc3NhZ2VkYXRldGltZWZvcm1hdHN1bW1hcnk6IHN0cmluZyA9XG4gICAgICAgIHRoaXMudmFsaWRhdGlvbktleVNlcnZpY2UuVmFsaWRhdGlvbkVycm9yU3VtbWFyeURhdGV0aW1lRm9ybWF0O1xuXG4gICAgLyoqXG4gICAgICogUmVzb3VyY2UgS2V5IGbDvHIgVmFsaWRhdGlvbiBNZXNzYWdlIFJlcXVpcmVkIGJlaSBDb250cm9sXG4gICAgICovXG4gICAgQElucHV0KCkgcHVibGljIHZhbGlkYXRpb25tZXNzYWdlcmVxdWlyZWQ6IHN0cmluZyA9IHRoaXMudmFsaWRhdGlvbktleVNlcnZpY2UuVmFsaWRhdGlvbkVycm9yUmVxdWlyZWQ7XG5cbiAgICAvKipcbiAgICAgKiBSZXNvdXJjZSBLZXkgZsO8ciBWYWxpZGF0aW9uIE1lc3NhZ2UgUmVxdWlyZWQgaW4gVmFsaWRhdGlvbiBTdW1tYXJ5XG4gICAgICovXG4gICAgQElucHV0KCkgcHVibGljIHZhbGlkYXRpb25tZXNzYWdlcmVxdWlyZWRzdW1tYXJ5OiBzdHJpbmcgPSB0aGlzLnZhbGlkYXRpb25LZXlTZXJ2aWNlLlZhbGlkYXRpb25FcnJvclN1bW1hcnlSZXF1aXJlZDtcblxuICAgIC8vICNlbmRyZWdpb24gUHJvcGVydGllc1xuXG4gICAgLy8gI3JlZ2lvbiBDb25zdHJ1Y3RvcnNcblxuICAgIC8qKlxuICAgICAqIENvbnN0cnVjdG9yXG4gICAgICogQHBhcmFtIGZvcm1sYXlvdXQgU2FjRm9ybUxheW91dENvbW1vbiB0byBkZWZpbmUgc2NvcGVkIGxheW91dCBzZXR0aW5nc1xuICAgICAqIEBwYXJhbSBpbmplY3RvciBJbmplY3RvciBmb3IgaW5qZWN0aW5nIHNlcnZpY2VzXG4gICAgICogQHBhcmFtIGVsZW1lbnRSZWYgcmVmZXJlbmNlIHRvIGh0bWwgZWxlbWVudFxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBmb3JtbGF5b3V0OiBTYWNGb3JtTGF5b3V0Q29tbW9uLFxuICAgICAgICBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgICAgIHByb3RlY3RlZCBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGNkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZlxuICAgICkge1xuICAgICAgICBzdXBlcihmb3JtbGF5b3V0LCBpbmplY3Rvcik7XG4gICAgfVxuXG4gICAgLy8gI2VuZHJlZ2lvbiBDb25zdHJ1Y3RvcnNcblxuICAgIC8vICNyZWdpb24gUHVibGljIEdldHRlcnMgQW5kIFNldHRlcnNcblxuICAgIC8qKlxuICAgICAqIFNldHRlciBmb3IgdGhlIG5hbWUgb2YgdGhlIGNvbnRhaW5lciBmb3IgdGhlIHRvb2x0aXAuIElzIHJlcXVpcmVkIGFzIHRoZSB0b29sdGlwIGNhbiBiZSBoaWRkZW4gdmlhIG5nSWYuXG4gICAgICovXG4gICAgQFZpZXdDaGlsZCgncGlja2VyJywgeyBzdGF0aWM6IGZhbHNlIH0pXG4gICAgcHVibGljIHNldCBwaWNrZXIocGlja2VyOiBFbGVtZW50UmVmKSB7XG4gICAgICAgIGlmIChwaWNrZXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChwaWNrZXIubmF0aXZlRWxlbWVudCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnBpY2tlcmNvbnRhaW5lciA9IHBpY2tlcjtcbiAgICAgICAgdGhpcy5vbkNvbnRlbnRDaGFuZ2UoKTtcbiAgICAgICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCB0b29sdG9wKCk6IEVsZW1lbnRSZWYge1xuICAgICAgICByZXR1cm4gdGhpcy5waWNrZXJjb250YWluZXI7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogZ2V0dGVyIGbDvHIgdmFsdWVzdHJpbmdcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IHZhbHVlc3RyaW5nKCk6IHN0cmluZyB7XG4gICAgICAgIGlmICh0aGlzLnZhbHVlID09PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fdmFsdWVBc1N0cmluZztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGRhdGUgPSB0aGlzLm1vbWVudC51dGModGhpcy52YWx1ZSk7XG4gICAgICAgICAgICByZXR1cm4gZGF0ZS5sb2NhbCgpLmZvcm1hdCh0aGlzLkdldERhdGVUaW1lRm9ybWF0U3RyaW5nKCkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGFzIElucHV0IGJla29tbXQgZGFzIHZhbHVlIHZvbiB0eXAgc3RyaW5nXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2V0IHZhbHVlc3RyaW5nKHY6IHN0cmluZykge1xuICAgICAgICB0aGlzLl92YWx1ZUFzU3RyaW5nID0gdjtcbiAgICAgICAgbGV0IGRhdGU6IG1vbWVudF8uTW9tZW50ID0gdGhpcy5tb21lbnQodiwgW3RoaXMuR2V0RGF0ZVRpbWVGb3JtYXRTdHJpbmcoKV0sIHRydWUpO1xuXG4gICAgICAgIGRhdGUgPSB0aGlzLk1vZGlmeVBhcnNlZERhdGVUaW1lVmFsdWUoZGF0ZSkudXRjKCk7XG5cbiAgICAgICAgaWYgKGRhdGUuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlID0gZGF0ZS50b0RhdGUoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gI2VuZHJlZ2lvbiBQdWJsaWMgR2V0dGVycyBBbmQgU2V0dGVyc1xuXG4gICAgLy8gI3JlZ2lvbiBQdWJsaWMgTWV0aG9kc1xuXG4gICAgLyoqXG4gICAgICogRGllIG1ldGhvZGUgcmV0dXJucyBkYXRlVGltZSBpbiBzdHJpbmdcbiAgICAgKi9cbiAgICBwdWJsaWMgYWJzdHJhY3QgR2V0RGF0ZVRpbWVGb3JtYXRTdHJpbmcoKTogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgcG9zaXRpb24gb2YgdGhlIHRvb2x0aXBcbiAgICAgKi9cbiAgICBwdWJsaWMgR2V0UGlja2VyUG9zaXRpb24oKTogVG9vbHRpcFBvc2l0aW9uIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucG9wdXBIZWxwZXIuZ2V0RGlzcGxheVBvc2l0aW9uKFxuICAgICAgICAgICAgdGhpcy5waWNrZXJidXR0b24sXG4gICAgICAgICAgICB0aGlzLnBpY2tlcmNvbnRhaW5lcixcbiAgICAgICAgICAgIHRoaXMuZ2V0QXJyb3dXaWR0aCgpLFxuICAgICAgICAgICAgdGhpcy5nZXRBcnJvd0hlaWdodCgpLFxuICAgICAgICAgICAgdGhpcy5wb3NpdGlvbixcbiAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGllIG1ldGhvZGUgbW9kaWZpemllcnQgZGFzIGVpbmdlZ2ViZW5lIFZhbHVlIHZvbiB0eXAgTW9tZW50XG4gICAgICovXG4gICAgcHVibGljIGFic3RyYWN0IE1vZGlmeVBhcnNlZERhdGVUaW1lVmFsdWUodjogbW9tZW50Xy5Nb21lbnQpOiBtb21lbnRfLk1vbWVudDtcblxuICAgIC8qKlxuICAgICAqIEpTT04gRGF0ZSBTdHJpbmcgaW4gZWluIFVUQyBEYXRlVGltZSBPYmplY3Qga29udmVydGllcmVuLCB3ZWxjaGVzIHZvbSBDb250cm9sIHZlcndlbmRldGUgd2VyZGVuIGthbm5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0RGF0ZSh0aW1lc3RhbXApOiBtb21lbnQuTW9tZW50IHtcbiAgICAgICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKHRpbWVzdGFtcCk7XG4gICAgICAgIGNvbnN0IHllYXIgPSBkYXRlLmdldFVUQ0Z1bGxZZWFyKCk7XG4gICAgICAgIGNvbnN0IG1vbnRoID0gZGF0ZS5nZXRVVENNb250aCgpO1xuICAgICAgICBjb25zdCBkYXkgPSBkYXRlLmdldFVUQ0RhdGUoKTtcbiAgICAgICAgY29uc3QgaG91cnMgPSBkYXRlLmdldFVUQ0hvdXJzKCk7XG4gICAgICAgIGNvbnN0IG1pbnV0ZXMgPSBkYXRlLmdldFVUQ01pbnV0ZXMoKTtcbiAgICAgICAgY29uc3Qgc2Vjb25kcyA9IGRhdGUuZ2V0VVRDU2Vjb25kcygpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLm1vbWVudChEYXRlLlVUQyh5ZWFyLCBtb250aCwgZGF5LCBob3VycywgbWludXRlcywgc2Vjb25kcykpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENhbGN1bGF0ZXMgdGhlIGhlaWdodCBvZiB0aGUgdG9vbHRpcFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRQaWNrZXJIZWlnaHQoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucG9wdXBIZWxwZXIuZ2V0UG9wdXBIZWlnaHQodGhpcy5waWNrZXJjb250YWluZXIpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENhbGN1bGF0ZXMgdGhlIHdpZHRoIG9mIHRoZSBwaWNrZXJcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0UGlja2VyV2lkdGgoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucG9wdXBIZWxwZXIuZ2V0UG9wdXBXaWR0aCh0aGlzLnBpY2tlcmNvbnRhaW5lcik7XG4gICAgfVxuXG4gICAgcHVibGljIG5nRG9DaGVjaygpOiB2b2lkIHtcbiAgICAgICAgLy8gdGhpcy5vbkNvbnRlbnRDaGFuZ2UoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIC8vIFJlbW92ZSBQaWNrZXIgaWYgaXMgdmlzaWJsZVxuICAgICAgICBpZiAodGhpcy5fc2hvd3NlbGVjdG9yICYmIHRoaXMucGlja2VyY29udGFpbmVyPy5uYXRpdmVFbGVtZW50KSB7XG4gICAgICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKHRoaXMucGlja2VyY29udGFpbmVyLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gVW5yZWdpc3RlciBFdmVudCBMaXN0ZW5lclxuICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdGhpcy5vbkNvbnRlbnRDaGFuZ2UsIHRydWUpO1xuICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdGhpcy5vbkNvbnRlbnRDaGFuZ2UsIHRydWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEluaXQgRXZlbnRcbiAgICAgKi9cbiAgICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgICAgIHRoaXMuc2V0RGF0ZVRpbWVGb3JtYXQoKTtcblxuICAgICAgICAvLyBSZWdpc3RlciBFdmVudCBMaXN0ZW5lclxuICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdGhpcy5vbkNvbnRlbnRDaGFuZ2UsIHRydWUpO1xuICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdGhpcy5vbkNvbnRlbnRDaGFuZ2UsIHRydWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIHNldHp0IGRhcyB2YWx1ZSB2b24gdHlwIHN0cmluZyB6dSBwcm9wZXJ0eSB2YWx1ZXN0cmluZ1xuICAgICAqL1xuICAgIHB1YmxpYyBzZXRWYWx1ZVN0cmluZyh2OiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy52YWx1ZXN0cmluZyA9IHY7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVmFsaWRhdG9yXG4gICAgICovXG4gICAgcHVibGljIHZhbGlkYXRlRGF0YShjOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gICAgICAgIGxldCBlcnJvcjogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPSBudWxsO1xuXG4gICAgICAgIGlmICh0aGlzLnZhbHVlc3RyaW5nICE9PSBudWxsICYmIHRoaXMudmFsdWVzdHJpbmcuaW5kZXhPZignXycpID49IDApIHtcbiAgICAgICAgICAgIGVycm9yID0gQ3JlYXRlVmFsaWRhdGlvbkVycm9yKFxuICAgICAgICAgICAgICAgICdpbnZhbGlkdHlwZScsXG4gICAgICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9ubWVzc2FnZWRhdGV0aW1lZm9ybWF0LFxuICAgICAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvbm1lc3NhZ2VkYXRldGltZWZvcm1hdHN1bW1hcnlcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGVycm9yID0gVmFsaWRhdGlvbi5pc1ZhbGlkRGF0ZShcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvbm1lc3NhZ2VkYXRldGltZWZvcm1hdCxcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvbm1lc3NhZ2VkYXRldGltZWZvcm1hdHN1bW1hcnlcbiAgICAgICAgKShjKTtcblxuICAgICAgICBpZiAodGhpcy5pc3JlcXVpcmVkKSB7XG4gICAgICAgICAgICBlcnJvciA9IFZhbGlkYXRpb24ucmVxdWlyZWQodGhpcy52YWxpZGF0aW9ubWVzc2FnZXJlcXVpcmVkLCB0aGlzLnZhbGlkYXRpb25tZXNzYWdlcmVxdWlyZWRzdW1tYXJ5KShjKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBlcnJvcjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBPdmVyd3JpdGUgV3JpdGVWYWx1ZSB0byBTZXQgY29ycmVjdCBEYXRlIE9iamVjdFxuICAgICAqL1xuICAgIHB1YmxpYyB3cml0ZVZhbHVlKHZhbHVlOiBEYXRlIHwgc3RyaW5nKSB7XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gJycgfHwgdmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgLy8gUmVzZXQgVmFsdWUgU3RyaW5nLCBkYW1pdCBiZWltIFVwZGF0ZSBkZXMgTW9kZWxzIGF1Y2ggZGFzIElucHV0IEZlbGQgZ2VsZWVydCB3aXJkLlxuICAgICAgICAgICAgdGhpcy5fdmFsdWVBc1N0cmluZyA9ICcnO1xuICAgICAgICAgICAgLy8gU2V0IEludGVybmFsIFByb3BlcnR5XG4gICAgICAgICAgICB0aGlzLl92YWx1ZSA9IG51bGw7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl92YWx1ZSA9IHRoaXMuZ2V0RGF0ZSh2YWx1ZSkudG9EYXRlKCk7XG4gICAgICAgIH1cblxuICAgICAgICBzdXBlci53cml0ZVZhbHVlKHRoaXMuX3ZhbHVlKTtcbiAgICB9XG5cbiAgICAvLyAjZW5kcmVnaW9uIFB1YmxpYyBNZXRob2RzXG5cbiAgICAvLyAjcmVnaW9uIFByb3RlY3RlZCBNZXRob2RzXG5cbiAgICBwcm90ZWN0ZWQgZ2V0QXJyb3dIZWlnaHQoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGlja2VyYXJyb3cgPyB0aGlzLnBpY2tlcmFycm93Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0SGVpZ2h0IDogMDtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0QXJyb3dXaWR0aCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5waWNrZXJhcnJvdyA/IHRoaXMucGlja2VyYXJyb3cubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aCA6IDA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2FsY3VsYXRlcyB0aGUgcG9zaXRpb24gb2YgdGhlIHRvb2x0aXAgZnJvbSBsaW5rc1xuICAgICAqL1xuICAgIHByb3RlY3RlZCBnZXRQb3NpdGlvbkxlZnQoKTogbnVtYmVyIHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLnBvcHVwSGVscGVyLmdldFBvc2l0aW9uTGVmdChcbiAgICAgICAgICAgIHRoaXMucGlja2VyYnV0dG9uLFxuICAgICAgICAgICAgdGhpcy5waWNrZXJjb250YWluZXIsXG4gICAgICAgICAgICB0aGlzLmVsZW1lbnRSZWYsXG4gICAgICAgICAgICB0aGlzLmdldEFycm93V2lkdGgoKSxcbiAgICAgICAgICAgIHRoaXMuZ2V0QXJyb3dIZWlnaHQoKSxcbiAgICAgICAgICAgIHRoaXMucG9zaXRpb24sXG4gICAgICAgICAgICBmYWxzZVxuICAgICAgICApO1xuXG4gICAgICAgIC8vIEVuc3VyZSB0aGF0IHBvcC11cHMgbmV2ZXIgYXBwZWFyIG91dHNpZGUgdGhlIHZpc2libGUgYXJlYSBvbiB0aGUgbGVmdFxuICAgICAgICBpZiAodmFsdWUgPCAwKSB7XG4gICAgICAgICAgICB0aGlzLnBvc1BvcHVwTGVmdCA9IDU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnBvc1BvcHVwTGVmdCA9IHZhbHVlO1xuICAgICAgICB9XG5cbiAgICAgICAgc3dpdGNoICh0aGlzLkdldFBpY2tlclBvc2l0aW9uKCkpIHtcbiAgICAgICAgICAgIGNhc2UgVG9vbHRpcFBvc2l0aW9uLnRvcDpcbiAgICAgICAgICAgIGNhc2UgVG9vbHRpcFBvc2l0aW9uLmJvdHRvbTpcbiAgICAgICAgICAgICAgICB0aGlzLnBvc0Fycm93TGVmdCA9IHRoaXMuZ2V0UGlja2VyV2lkdGgoKSAvIDIgLSAtdGhpcy5nZXRBcnJvd1dpZHRoKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFRvb2x0aXBQb3NpdGlvbi50b3BlbmQ6XG4gICAgICAgICAgICBjYXNlIFRvb2x0aXBQb3NpdGlvbi5ib3R0b21lbmQ6XG4gICAgICAgICAgICAgICAgdGhpcy5wb3NBcnJvd0xlZnQgPVxuICAgICAgICAgICAgICAgICAgICB0aGlzLmdldFBpY2tlcldpZHRoKCkgLVxuICAgICAgICAgICAgICAgICAgICB0aGlzLmdldEFycm93V2lkdGgoKSAvIDIgLVxuICAgICAgICAgICAgICAgICAgICB0aGlzLnBvcHVwSGVscGVyLmdldENvbnRhaW5lcldpZHRoKHRoaXMucGlja2VyYnV0dG9uLCBmYWxzZSkgLyAyO1xuXG4gICAgICAgICAgICAgICAgLy8gQ29ycmVjdGlvbiBieSBBcnJvdyBpZiBwb3B1cCBpcyBvdXRzaWRlIHRoZSBsZWZ0IG1hcmdpblxuICAgICAgICAgICAgICAgIGlmICh2YWx1ZSA8IDApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wb3NBcnJvd0xlZnQgLT0gdmFsdWUgKiAtMSArIDU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICB0aGlzLnBvc0Fycm93TGVmdCA9IG51bGw7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2FsY3VsYXRlcyB0aGUgcG9zaXRpb24gb2YgdGhlIHRvb2x0aXAgZnJvbSB0aGUgdG9wXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGdldFBvc2l0aW9uVG9wKCk6IG51bWJlciB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5wb3B1cEhlbHBlci5nZXRQb3NpdGlvblRvcChcbiAgICAgICAgICAgIHRoaXMucGlja2VyYnV0dG9uLFxuICAgICAgICAgICAgdGhpcy5waWNrZXJjb250YWluZXIsXG4gICAgICAgICAgICB0aGlzLmVsZW1lbnRSZWYsXG4gICAgICAgICAgICB0aGlzLmdldEFycm93V2lkdGgoKSxcbiAgICAgICAgICAgIHRoaXMuZ2V0QXJyb3dIZWlnaHQoKSxcbiAgICAgICAgICAgIHRoaXMucG9zaXRpb24sXG4gICAgICAgICAgICBmYWxzZVxuICAgICAgICApO1xuICAgICAgICB0aGlzLnBvc1BvcHVwVG9wID0gdmFsdWU7XG5cbiAgICAgICAgc3dpdGNoICh0aGlzLkdldFBpY2tlclBvc2l0aW9uKCkpIHtcbiAgICAgICAgICAgIGNhc2UgVG9vbHRpcFBvc2l0aW9uLmxlZnQ6XG4gICAgICAgICAgICBjYXNlIFRvb2x0aXBQb3NpdGlvbi5yaWdodDpcbiAgICAgICAgICAgICAgICB0aGlzLnBvc0Fycm93VG9wID0gdGhpcy5nZXRQaWNrZXJIZWlnaHQoKSAvIDIgLSA2LjU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHRoaXMucG9zQXJyb3dUb3AgPSBudWxsO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIC8vICNlbmRyZWdpb24gUHJvdGVjdGVkIE1ldGhvZHNcblxuICAgIC8vICNyZWdpb24gUHJpdmF0ZSBNZXRob2RzXG5cbiAgICAvKipcbiAgICAgKiBtZXRob2QgaWYgY29udGVudCBoYXMgY2hhbmdlZCBhbmQgcHJvcG9ydGlvbnMgbmVlZCB0byBiZSByZXNldCBpbiB0aGUgVUkuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBvbkNvbnRlbnRDaGFuZ2UgPSAoKTogdm9pZCA9PiB7XG4gICAgICAgIC8vIERvIG5vdGhpbmcgaWYgaXMgbm90IHZpc2libGVcbiAgICAgICAgaWYgKCF0aGlzLl9zaG93c2VsZWN0b3IpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5nZXRQb3NpdGlvbkxlZnQoKTtcbiAgICAgICAgICAgIHRoaXMuZ2V0UG9zaXRpb25Ub3AoKTtcbiAgICAgICAgfSk7XG4gICAgfTtcblxuICAgIHByaXZhdGUgc2V0RGF0ZVRpbWVGb3JtYXQoKTogdm9pZCB7XG4gICAgICAgIC8vIEhBQ0s6IEFkZCBhZGRpdGlvbiBwcm9wZXJ0eSB0byBGb3JtQ29udHJvbC4gQ2FuIGJlIGZpeGVkIGlmIHNvbHV0aW9uIGZvciB0aWNrZXQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvaXNzdWVzLzE5Njg2XG4gICAgICAgIGlmICh0aGlzLm5nQ29udHJvbCkge1xuICAgICAgICAgICAgKHRoaXMubmdDb250cm9sIGFzIHVua25vd24gYXMgSURhdGVUaW1lQ29udHJvbCkuZGF0ZXRpbWVmb3JtYXRzdHJpbmcgPSB0aGlzLkdldERhdGVUaW1lRm9ybWF0U3RyaW5nKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyAjZW5kcmVnaW9uIFByaXZhdGUgTWV0aG9kc1xufVxuIl19
93
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb3ZfMTkzemJxbnM3ayIsImFjdHVhbENvdmVyYWdlIiwiVG9vbHRpcFBvc2l0aW9uIiwiUG9wVXBIZWxwZXIiLCJWYWxpZGF0aW9uIiwiQ3JlYXRlVmFsaWRhdGlvbkVycm9yIiwiU2FjQmFzZU1vZGVsQ29udHJvbCIsIkRpcmVjdGl2ZSIsIklucHV0IiwiVmlld0NoaWxkIiwibW9tZW50XyIsIlNhY0Jhc2VEYXRlVGltZUNvbnRyb2wiLCJjb25zdHJ1Y3RvciIsImZvcm1sYXlvdXQiLCJpbmplY3RvciIsImVsZW1lbnRSZWYiLCJjZFJlZiIsImYiLCJzIiwicG9wdXBIZWxwZXIiLCJfdmFsdWVBc1N0cmluZyIsIl9zaG93c2VsZWN0b3IiLCJpc3JlcXVpcmVkIiwibW9tZW50IiwicGlja2VyUG9zaXRpb24iLCJwbGFjZWhvbGRlciIsInBvc0Fycm93TGVmdCIsInBvc0Fycm93VG9wIiwicG9zUG9wdXBMZWZ0IiwicG9zUG9wdXBUb3AiLCJwb3NpdGlvbiIsInZhbGlkYXRpb25tZXNzYWdlZGF0ZXRpbWVmb3JtYXQiLCJ2YWxpZGF0aW9uS2V5U2VydmljZSIsIlZhbGlkYXRpb25FcnJvckRhdGV0aW1lRm9ybWF0IiwidmFsaWRhdGlvbm1lc3NhZ2VkYXRldGltZWZvcm1hdHN1bW1hcnkiLCJWYWxpZGF0aW9uRXJyb3JTdW1tYXJ5RGF0ZXRpbWVGb3JtYXQiLCJ2YWxpZGF0aW9ubWVzc2FnZXJlcXVpcmVkIiwiVmFsaWRhdGlvbkVycm9yUmVxdWlyZWQiLCJ2YWxpZGF0aW9ubWVzc2FnZXJlcXVpcmVkc3VtbWFyeSIsIlZhbGlkYXRpb25FcnJvclN1bW1hcnlSZXF1aXJlZCIsIm9uQ29udGVudENoYW5nZSIsImIiLCJzZXRUaW1lb3V0IiwiZ2V0UG9zaXRpb25MZWZ0IiwiZ2V0UG9zaXRpb25Ub3AiLCJwaWNrZXIiLCJ1bmRlZmluZWQiLCJkb2N1bWVudCIsImJvZHkiLCJhcHBlbmRDaGlsZCIsIm5hdGl2ZUVsZW1lbnQiLCJwaWNrZXJjb250YWluZXIiLCJkZXRlY3RDaGFuZ2VzIiwidG9vbHRvcCIsInZhbHVlc3RyaW5nIiwidmFsdWUiLCJkYXRlIiwidXRjIiwibG9jYWwiLCJmb3JtYXQiLCJHZXREYXRlVGltZUZvcm1hdFN0cmluZyIsInYiLCJNb2RpZnlQYXJzZWREYXRlVGltZVZhbHVlIiwiaXNWYWxpZCIsInRvRGF0ZSIsIkdldFBpY2tlclBvc2l0aW9uIiwiZ2V0RGlzcGxheVBvc2l0aW9uIiwicGlja2VyYnV0dG9uIiwiZ2V0QXJyb3dXaWR0aCIsImdldEFycm93SGVpZ2h0IiwiZ2V0RGF0ZSIsInRpbWVzdGFtcCIsIkRhdGUiLCJ5ZWFyIiwiZ2V0VVRDRnVsbFllYXIiLCJtb250aCIsImdldFVUQ01vbnRoIiwiZGF5IiwiZ2V0VVRDRGF0ZSIsImhvdXJzIiwiZ2V0VVRDSG91cnMiLCJtaW51dGVzIiwiZ2V0VVRDTWludXRlcyIsInNlY29uZHMiLCJnZXRVVENTZWNvbmRzIiwiVVRDIiwiZ2V0UGlja2VySGVpZ2h0IiwiZ2V0UG9wdXBIZWlnaHQiLCJnZXRQaWNrZXJXaWR0aCIsImdldFBvcHVwV2lkdGgiLCJuZ0RvQ2hlY2siLCJuZ09uRGVzdHJveSIsInJlbW92ZUNoaWxkIiwid2luZG93IiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsIm5nT25Jbml0Iiwic2V0RGF0ZVRpbWVGb3JtYXQiLCJhZGRFdmVudExpc3RlbmVyIiwic2V0VmFsdWVTdHJpbmciLCJ2YWxpZGF0ZURhdGEiLCJjIiwiZXJyb3IiLCJpbmRleE9mIiwiaXNWYWxpZERhdGUiLCJyZXF1aXJlZCIsIndyaXRlVmFsdWUiLCJfdmFsdWUiLCJwaWNrZXJhcnJvdyIsIm9mZnNldEhlaWdodCIsIm9mZnNldFdpZHRoIiwidG9wIiwiYm90dG9tIiwidG9wZW5kIiwiYm90dG9tZW5kIiwiZ2V0Q29udGFpbmVyV2lkdGgiLCJsZWZ0IiwicmlnaHQiLCJuZ0NvbnRyb2wiLCJkYXRldGltZWZvcm1hdHN0cmluZyIsImRlcHMiLCJ0b2tlbiIsImkxIiwiU2FjRm9ybUxheW91dENvbW1vbiIsImkwIiwiSW5qZWN0b3IiLCJFbGVtZW50UmVmIiwiQ2hhbmdlRGV0ZWN0b3JSZWYiLCJ0YXJnZXQiLCLJtcm1RmFjdG9yeVRhcmdldCIsImlucHV0cyIsInZpZXdRdWVyaWVzIiwicHJvcGVydHlOYW1lIiwiZmlyc3QiLCJwcmVkaWNhdGUiLCJkZXNjZW5kYW50cyIsInN0YXRpYyIsInVzZXNJbmhlcml0YW5jZSIsIm5nSW1wb3J0IiwiZGVjb3JhdG9ycyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3NhYy1jb21tb24vc3JjL2NvbW1vbi9iYXNlZGF0ZXRpbWVjb250cm9sLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNhY0Zvcm1MYXlvdXRDb21tb24gfSBmcm9tICcuLi9jb250cm9scy9sYXlvdXQvZm9ybWxheW91dCc7XG5pbXBvcnQgeyBJRGF0ZVRpbWVDb250cm9sIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9pZGF0ZXRpbWVjb250cm9sJztcbmltcG9ydCB7IFRvb2x0aXBQb3NpdGlvbiB9IGZyb20gJy4uL3V0aWxpdGllcy9lbnVtcyc7XG5pbXBvcnQgeyBQb3BVcEhlbHBlciB9IGZyb20gJy4uL3V0aWxpdGllcy9wb3B1cGhlbHBlcic7XG5pbXBvcnQgeyBWYWxpZGF0aW9uIH0gZnJvbSAnLi4vdmFsaWRhdGlvbic7XG5pbXBvcnQgeyBDcmVhdGVWYWxpZGF0aW9uRXJyb3IgfSBmcm9tICcuLi92YWxpZGF0aW9uL3ZhbGlkYXRpb25lcnJvcmNyZWF0b3InO1xuaW1wb3J0IHsgU2FjQmFzZU1vZGVsQ29udHJvbCB9IGZyb20gJy4vYmFzZW1vZGVsY29udHJvbCc7XG5pbXBvcnQge1xuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIERpcmVjdGl2ZSxcbiAgICBEb0NoZWNrLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgSW5qZWN0b3IsXG4gICAgSW5wdXQsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBWYWxpZGF0aW9uRXJyb3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0ICogYXMgbW9tZW50XyBmcm9tICdtb21lbnQnO1xuXG4vKipcbiAqIEJhc2UgS2xhc3NlIGbDvHIgRGF0ZS9UaW1lIENvbnRyb2xzXG4gKi9cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFNhY0Jhc2VEYXRlVGltZUNvbnRyb2wgZXh0ZW5kcyBTYWNCYXNlTW9kZWxDb250cm9sPERhdGU+IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIERvQ2hlY2sge1xuICAgIC8vICNyZWdpb24gUHJvcGVydGllc1xuXG4gICAgLyoqXG4gICAgICogSGVscGVyIGNsYXNzIHRvIGRpc3BsYXkgdG9vbHRpcCBvbiBjb3JyZWN0IHBvc2l0aW9uXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBwb3B1cEhlbHBlcjogUG9wVXBIZWxwZXIgPSBuZXcgUG9wVXBIZWxwZXIoKTtcblxuICAgIC8qKlxuICAgICAqIGRhcyBwcm9wZXJ0eSBlbnRoaWVsdCBkYXMgVmFsdWUgYWxzIHN0cmluZy4gRGVmYXVsdCBpc3QgJydcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgX3ZhbHVlQXNTdHJpbmcgPSAnJztcblxuICAgIC8qKlxuICAgICAqIENvbnRhaW5lcnMgZm9yIHRoZSBkYXRldGltZSBwaWNrZXJcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcGlja2VyY29udGFpbmVyOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcblxuICAgIC8qKlxuICAgICAqIFByb3BlcnR5IGZvciBlbnVtIGluIEFuZ3VsYXIgSFRNTCB0ZW1wbGF0ZVxuICAgICAqL1xuICAgIHB1YmxpYyBUb29sdGlwUG9zaXRpb24gPSBUb29sdGlwUG9zaXRpb247XG5cbiAgICAvKipcbiAgICAgKiBEZWZpbmllcnQgb2IgZGVyIERhdGUgU2VsZWN0b3IgYW5nZXplaWd0IHdpcmRcbiAgICAgKi9cbiAgICBwdWJsaWMgX3Nob3dzZWxlY3RvcjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogRGVmaW5pZXJ0IGRhcyBDb250cm9sIGFscyBSZXF1aXJlZFxuICAgICAqL1xuICAgIEBJbnB1dCgpIHB1YmxpYyBpc3JlcXVpcmVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBNb21lbnQgSlMgSW5zdGFuY2VcbiAgICAgKi9cbiAgICBwdWJsaWMgbW9tZW50ID0gbW9tZW50X1snZGVmYXVsdCddO1xuXG4gICAgLyoqXG4gICAgICogQXJyb3cgSXRlbSBvZiBQaWNrZXIgRWxlbWVudC4gUmVxdWlyZWQgdG8gc2V0IHRoZSBwb3NpdGlvbiBvZiBhcnJvdyBjb3JyZWN0bHlcbiAgICAgKi9cbiAgICBwdWJsaWMgcGlja2VyUG9zaXRpb24gPSBUb29sdGlwUG9zaXRpb247XG4gICAgQFZpZXdDaGlsZCgncGlja2VyYXJyb3cnLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgICBwdWJsaWMgcGlja2VyYXJyb3c6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+IHwgbnVsbDtcblxuICAgIC8qKlxuICAgICAqIE5hbWUgb2YgdGhlIGNvbnRhaW5lciBmb3IgY29udGVudCAoZS5nLiBpY29uKSBvbiB3aGljaCB0aGUgdG9vbHRpcCBpcyBkaXNwbGF5ZWQuXG4gICAgICovXG4gICAgQFZpZXdDaGlsZCgncGlja2VyYnV0dG9uJywgeyBzdGF0aWM6IHRydWUgfSlcbiAgICBwdWJsaWMgcGlja2VyYnV0dG9uOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcblxuICAgIC8qKlxuICAgICAqIFRleHRCb3ggUGxhY2Vob2xkZXJcbiAgICAgKi9cbiAgICBASW5wdXQoKSBwdWJsaWMgcGxhY2Vob2xkZXI6IHN0cmluZyA9IG51bGw7XG5cbiAgICAvKipcbiAgICAgKiBQb3NpdGlvbiBvZiB0aGUgcGlja2VyIGFycm93IGF0IHRoZSBsZWZ0XG4gICAgICovXG4gICAgcHVibGljIHBvc0Fycm93TGVmdDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG5cbiAgICAvKipcbiAgICAgKiBQb3NpdGlvbiBvZiB0aGUgcGlja2VyIGFycm93IGF0IHRoZSB0b3BcbiAgICAgKi9cbiAgICBwdWJsaWMgcG9zQXJyb3dUb3A6IG51bWJlciB8IG51bGwgPSBudWxsO1xuXG4gICAgLyoqXG4gICAgICogUG9zaXRpb24gb2YgdGhlIHBpY2tlciBhdCB0aGUgbGVmdFxuICAgICAqL1xuICAgIHB1YmxpYyBwb3NQb3B1cExlZnQ6IG51bWJlciA9IDA7XG5cbiAgICAvKipcbiAgICAgKiBQb3NpdGlvbiBvZiB0aGUgcGlja2VyIGF0IHRoZSB0b3BcbiAgICAgKi9cbiAgICBwdWJsaWMgcG9zUG9wdXBUb3A6IG51bWJlciA9IDA7XG5cbiAgICAvKipcbiAgICAgKiBQb3NpdGlvbiBvZiB0aGUgZGF0ZXRpbWUgcGlja2VyLiBWYWx1ZXM6IGxlZnR8dG9wfHJpZ2h0fGJvdHRvbXxhdXRvXG4gICAgICpcbiAgICAgKiBWYWx1ZSAnYXV0bycgY2FuIGJlIGNvbWJpbmVkIHdpdGggYW5vdGhlciB2YWx1ZS5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBwb3NpdGlvbjogc3RyaW5nID0gJ2JvdHRvbWVuZHx0b3BlbmQnO1xuXG4gICAgLyoqXG4gICAgICogUmVzb3VyY2UgS2V5IGbDvHIgVmFsaWRhdGlvbiBNZXNzYWdlIERhdGVUaW1lRm9ybWF0IGJlaSBDb250cm9sXG4gICAgICovXG4gICAgQElucHV0KCkgcHVibGljIHZhbGlkYXRpb25tZXNzYWdlZGF0ZXRpbWVmb3JtYXQ6IHN0cmluZyA9IHRoaXMudmFsaWRhdGlvbktleVNlcnZpY2UuVmFsaWRhdGlvbkVycm9yRGF0ZXRpbWVGb3JtYXQ7XG5cbiAgICAvKipcbiAgICAgKiBSZXNvdXJjZSBLZXkgZsO8ciBWYWxpZGF0aW9uIE1lc3NhZ2UgRGF0ZVRpbWVGb3JtYXQgaW4gVmFsaWRhdGlvbiBTdW1tYXJ5XG4gICAgICovXG4gICAgQElucHV0KCkgcHVibGljIHZhbGlkYXRpb25tZXNzYWdlZGF0ZXRpbWVmb3JtYXRzdW1tYXJ5OiBzdHJpbmcgPVxuICAgICAgICB0aGlzLnZhbGlkYXRpb25LZXlTZXJ2aWNlLlZhbGlkYXRpb25FcnJvclN1bW1hcnlEYXRldGltZUZvcm1hdDtcblxuICAgIC8qKlxuICAgICAqIFJlc291cmNlIEtleSBmw7xyIFZhbGlkYXRpb24gTWVzc2FnZSBSZXF1aXJlZCBiZWkgQ29udHJvbFxuICAgICAqL1xuICAgIEBJbnB1dCgpIHB1YmxpYyB2YWxpZGF0aW9ubWVzc2FnZXJlcXVpcmVkOiBzdHJpbmcgPSB0aGlzLnZhbGlkYXRpb25LZXlTZXJ2aWNlLlZhbGlkYXRpb25FcnJvclJlcXVpcmVkO1xuXG4gICAgLyoqXG4gICAgICogUmVzb3VyY2UgS2V5IGbDvHIgVmFsaWRhdGlvbiBNZXNzYWdlIFJlcXVpcmVkIGluIFZhbGlkYXRpb24gU3VtbWFyeVxuICAgICAqL1xuICAgIEBJbnB1dCgpIHB1YmxpYyB2YWxpZGF0aW9ubWVzc2FnZXJlcXVpcmVkc3VtbWFyeTogc3RyaW5nID0gdGhpcy52YWxpZGF0aW9uS2V5U2VydmljZS5WYWxpZGF0aW9uRXJyb3JTdW1tYXJ5UmVxdWlyZWQ7XG5cbiAgICAvLyAjZW5kcmVnaW9uIFByb3BlcnRpZXNcblxuICAgIC8vICNyZWdpb24gQ29uc3RydWN0b3JzXG5cbiAgICAvKipcbiAgICAgKiBDb25zdHJ1Y3RvclxuICAgICAqIEBwYXJhbSBmb3JtbGF5b3V0IFNhY0Zvcm1MYXlvdXRDb21tb24gdG8gZGVmaW5lIHNjb3BlZCBsYXlvdXQgc2V0dGluZ3NcbiAgICAgKiBAcGFyYW0gaW5qZWN0b3IgSW5qZWN0b3IgZm9yIGluamVjdGluZyBzZXJ2aWNlc1xuICAgICAqIEBwYXJhbSBlbGVtZW50UmVmIHJlZmVyZW5jZSB0byBodG1sIGVsZW1lbnRcbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgZm9ybWxheW91dDogU2FjRm9ybUxheW91dENvbW1vbixcbiAgICAgICAgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgICAgICBwcm90ZWN0ZWQgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgICApIHtcbiAgICAgICAgc3VwZXIoZm9ybWxheW91dCwgaW5qZWN0b3IpO1xuICAgIH1cblxuICAgIC8vICNlbmRyZWdpb24gQ29uc3RydWN0b3JzXG5cbiAgICAvLyAjcmVnaW9uIFB1YmxpYyBHZXR0ZXJzIEFuZCBTZXR0ZXJzXG5cbiAgICAvKipcbiAgICAgKiBTZXR0ZXIgZm9yIHRoZSBuYW1lIG9mIHRoZSBjb250YWluZXIgZm9yIHRoZSB0b29sdGlwLiBJcyByZXF1aXJlZCBhcyB0aGUgdG9vbHRpcCBjYW4gYmUgaGlkZGVuIHZpYSBuZ0lmLlxuICAgICAqL1xuICAgIEBWaWV3Q2hpbGQoJ3BpY2tlcicsIHsgc3RhdGljOiBmYWxzZSB9KVxuICAgIHB1YmxpYyBzZXQgcGlja2VyKHBpY2tlcjogRWxlbWVudFJlZikge1xuICAgICAgICBpZiAocGlja2VyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQocGlja2VyLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5waWNrZXJjb250YWluZXIgPSBwaWNrZXI7XG4gICAgICAgIHRoaXMub25Db250ZW50Q2hhbmdlKCk7XG4gICAgICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgdG9vbHRvcCgpOiBFbGVtZW50UmVmIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGlja2VyY29udGFpbmVyO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGdldHRlciBmw7xyIHZhbHVlc3RyaW5nXG4gICAgICovXG4gICAgcHVibGljIGdldCB2YWx1ZXN0cmluZygpOiBzdHJpbmcge1xuICAgICAgICBpZiAodGhpcy52YWx1ZSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3ZhbHVlQXNTdHJpbmc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBkYXRlID0gdGhpcy5tb21lbnQudXRjKHRoaXMudmFsdWUpO1xuICAgICAgICAgICAgcmV0dXJuIGRhdGUubG9jYWwoKS5mb3JtYXQodGhpcy5HZXREYXRlVGltZUZvcm1hdFN0cmluZygpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERhcyBJbnB1dCBiZWtvbW10IGRhcyB2YWx1ZSB2b24gdHlwIHN0cmluZ1xuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNldCB2YWx1ZXN0cmluZyh2OiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5fdmFsdWVBc1N0cmluZyA9IHY7XG4gICAgICAgIGxldCBkYXRlOiBtb21lbnRfLk1vbWVudCA9IHRoaXMubW9tZW50KHYsIFt0aGlzLkdldERhdGVUaW1lRm9ybWF0U3RyaW5nKCldLCB0cnVlKTtcblxuICAgICAgICBkYXRlID0gdGhpcy5Nb2RpZnlQYXJzZWREYXRlVGltZVZhbHVlKGRhdGUpLnV0YygpO1xuXG4gICAgICAgIGlmIChkYXRlLmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IGRhdGUudG9EYXRlKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vICNlbmRyZWdpb24gUHVibGljIEdldHRlcnMgQW5kIFNldHRlcnNcblxuICAgIC8vICNyZWdpb24gUHVibGljIE1ldGhvZHNcblxuICAgIC8qKlxuICAgICAqIERpZSBtZXRob2RlIHJldHVybnMgZGF0ZVRpbWUgaW4gc3RyaW5nXG4gICAgICovXG4gICAgcHVibGljIGFic3RyYWN0IEdldERhdGVUaW1lRm9ybWF0U3RyaW5nKCk6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIHBvc2l0aW9uIG9mIHRoZSB0b29sdGlwXG4gICAgICovXG4gICAgcHVibGljIEdldFBpY2tlclBvc2l0aW9uKCk6IFRvb2x0aXBQb3NpdGlvbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnBvcHVwSGVscGVyLmdldERpc3BsYXlQb3NpdGlvbihcbiAgICAgICAgICAgIHRoaXMucGlja2VyYnV0dG9uLFxuICAgICAgICAgICAgdGhpcy5waWNrZXJjb250YWluZXIsXG4gICAgICAgICAgICB0aGlzLmdldEFycm93V2lkdGgoKSxcbiAgICAgICAgICAgIHRoaXMuZ2V0QXJyb3dIZWlnaHQoKSxcbiAgICAgICAgICAgIHRoaXMucG9zaXRpb24sXG4gICAgICAgICAgICBmYWxzZVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERpZSBtZXRob2RlIG1vZGlmaXppZXJ0IGRhcyBlaW5nZWdlYmVuZSBWYWx1ZSB2b24gdHlwIE1vbWVudFxuICAgICAqL1xuICAgIHB1YmxpYyBhYnN0cmFjdCBNb2RpZnlQYXJzZWREYXRlVGltZVZhbHVlKHY6IG1vbWVudF8uTW9tZW50KTogbW9tZW50Xy5Nb21lbnQ7XG5cbiAgICAvKipcbiAgICAgKiBKU09OIERhdGUgU3RyaW5nIGluIGVpbiBVVEMgRGF0ZVRpbWUgT2JqZWN0IGtvbnZlcnRpZXJlbiwgd2VsY2hlcyB2b20gQ29udHJvbCB2ZXJ3ZW5kZXRlIHdlcmRlbiBrYW5uXG4gICAgICovXG4gICAgcHVibGljIGdldERhdGUodGltZXN0YW1wKTogbW9tZW50Lk1vbWVudCB7XG4gICAgICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSh0aW1lc3RhbXApO1xuICAgICAgICBjb25zdCB5ZWFyID0gZGF0ZS5nZXRVVENGdWxsWWVhcigpO1xuICAgICAgICBjb25zdCBtb250aCA9IGRhdGUuZ2V0VVRDTW9udGgoKTtcbiAgICAgICAgY29uc3QgZGF5ID0gZGF0ZS5nZXRVVENEYXRlKCk7XG4gICAgICAgIGNvbnN0IGhvdXJzID0gZGF0ZS5nZXRVVENIb3VycygpO1xuICAgICAgICBjb25zdCBtaW51dGVzID0gZGF0ZS5nZXRVVENNaW51dGVzKCk7XG4gICAgICAgIGNvbnN0IHNlY29uZHMgPSBkYXRlLmdldFVUQ1NlY29uZHMoKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5tb21lbnQoRGF0ZS5VVEMoeWVhciwgbW9udGgsIGRheSwgaG91cnMsIG1pbnV0ZXMsIHNlY29uZHMpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDYWxjdWxhdGVzIHRoZSBoZWlnaHQgb2YgdGhlIHRvb2x0aXBcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0UGlja2VySGVpZ2h0KCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLnBvcHVwSGVscGVyLmdldFBvcHVwSGVpZ2h0KHRoaXMucGlja2VyY29udGFpbmVyKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDYWxjdWxhdGVzIHRoZSB3aWR0aCBvZiB0aGUgcGlja2VyXG4gICAgICovXG4gICAgcHVibGljIGdldFBpY2tlcldpZHRoKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLnBvcHVwSGVscGVyLmdldFBvcHVwV2lkdGgodGhpcy5waWNrZXJjb250YWluZXIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ0RvQ2hlY2soKTogdm9pZCB7XG4gICAgICAgIC8vIHRoaXMub25Db250ZW50Q2hhbmdlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICAvLyBSZW1vdmUgUGlja2VyIGlmIGlzIHZpc2libGVcbiAgICAgICAgaWYgKHRoaXMuX3Nob3dzZWxlY3RvciAmJiB0aGlzLnBpY2tlcmNvbnRhaW5lcj8ubmF0aXZlRWxlbWVudCkge1xuICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZCh0aGlzLnBpY2tlcmNvbnRhaW5lci5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFVucmVnaXN0ZXIgRXZlbnQgTGlzdGVuZXJcbiAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHRoaXMub25Db250ZW50Q2hhbmdlLCB0cnVlKTtcbiAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHRoaXMub25Db250ZW50Q2hhbmdlLCB0cnVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJbml0IEV2ZW50XG4gICAgICovXG4gICAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgICAgICB0aGlzLnNldERhdGVUaW1lRm9ybWF0KCk7XG5cbiAgICAgICAgLy8gUmVnaXN0ZXIgRXZlbnQgTGlzdGVuZXJcbiAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHRoaXMub25Db250ZW50Q2hhbmdlLCB0cnVlKTtcbiAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHRoaXMub25Db250ZW50Q2hhbmdlLCB0cnVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBzZXR6dCBkYXMgdmFsdWUgdm9uIHR5cCBzdHJpbmcgenUgcHJvcGVydHkgdmFsdWVzdHJpbmdcbiAgICAgKi9cbiAgICBwdWJsaWMgc2V0VmFsdWVTdHJpbmcodjogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMudmFsdWVzdHJpbmcgPSB2O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFZhbGlkYXRvclxuICAgICAqL1xuICAgIHB1YmxpYyB2YWxpZGF0ZURhdGEoYzogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICAgICAgICBsZXQgZXJyb3I6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0gbnVsbDtcblxuICAgICAgICBpZiAodGhpcy52YWx1ZXN0cmluZyAhPT0gbnVsbCAmJiB0aGlzLnZhbHVlc3RyaW5nLmluZGV4T2YoJ18nKSA+PSAwKSB7XG4gICAgICAgICAgICBlcnJvciA9IENyZWF0ZVZhbGlkYXRpb25FcnJvcihcbiAgICAgICAgICAgICAgICAnaW52YWxpZHR5cGUnLFxuICAgICAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvbm1lc3NhZ2VkYXRldGltZWZvcm1hdCxcbiAgICAgICAgICAgICAgICB0aGlzLnZhbGlkYXRpb25tZXNzYWdlZGF0ZXRpbWVmb3JtYXRzdW1tYXJ5XG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3I7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBlcnJvciA9IFZhbGlkYXRpb24uaXNWYWxpZERhdGUoXG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRpb25tZXNzYWdlZGF0ZXRpbWVmb3JtYXQsXG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRpb25tZXNzYWdlZGF0ZXRpbWVmb3JtYXRzdW1tYXJ5XG4gICAgICAgICkoYyk7XG5cbiAgICAgICAgaWYgKHRoaXMuaXNyZXF1aXJlZCkge1xuICAgICAgICAgICAgZXJyb3IgPSBWYWxpZGF0aW9uLnJlcXVpcmVkKHRoaXMudmFsaWRhdGlvbm1lc3NhZ2VyZXF1aXJlZCwgdGhpcy52YWxpZGF0aW9ubWVzc2FnZXJlcXVpcmVkc3VtbWFyeSkoYyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZXJyb3I7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogT3ZlcndyaXRlIFdyaXRlVmFsdWUgdG8gU2V0IGNvcnJlY3QgRGF0ZSBPYmplY3RcbiAgICAgKi9cbiAgICBwdWJsaWMgd3JpdGVWYWx1ZSh2YWx1ZTogRGF0ZSB8IHN0cmluZykge1xuICAgICAgICBpZiAodmFsdWUgPT09ICcnIHx8IHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIC8vIFJlc2V0IFZhbHVlIFN0cmluZywgZGFtaXQgYmVpbSBVcGRhdGUgZGVzIE1vZGVscyBhdWNoIGRhcyBJbnB1dCBGZWxkIGdlbGVlcnQgd2lyZC5cbiAgICAgICAgICAgIHRoaXMuX3ZhbHVlQXNTdHJpbmcgPSAnJztcbiAgICAgICAgICAgIC8vIFNldCBJbnRlcm5hbCBQcm9wZXJ0eVxuICAgICAgICAgICAgdGhpcy5fdmFsdWUgPSBudWxsO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fdmFsdWUgPSB0aGlzLmdldERhdGUodmFsdWUpLnRvRGF0ZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgc3VwZXIud3JpdGVWYWx1ZSh0aGlzLl92YWx1ZSk7XG4gICAgfVxuXG4gICAgLy8gI2VuZHJlZ2lvbiBQdWJsaWMgTWV0aG9kc1xuXG4gICAgLy8gI3JlZ2lvbiBQcm90ZWN0ZWQgTWV0aG9kc1xuXG4gICAgcHJvdGVjdGVkIGdldEFycm93SGVpZ2h0KCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLnBpY2tlcmFycm93ID8gdGhpcy5waWNrZXJhcnJvdy5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodCA6IDA7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldEFycm93V2lkdGgoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGlja2VyYXJyb3cgPyB0aGlzLnBpY2tlcmFycm93Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGggOiAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENhbGN1bGF0ZXMgdGhlIHBvc2l0aW9uIG9mIHRoZSB0b29sdGlwIGZyb20gbGlua3NcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgZ2V0UG9zaXRpb25MZWZ0KCk6IG51bWJlciB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5wb3B1cEhlbHBlci5nZXRQb3NpdGlvbkxlZnQoXG4gICAgICAgICAgICB0aGlzLnBpY2tlcmJ1dHRvbixcbiAgICAgICAgICAgIHRoaXMucGlja2VyY29udGFpbmVyLFxuICAgICAgICAgICAgdGhpcy5lbGVtZW50UmVmLFxuICAgICAgICAgICAgdGhpcy5nZXRBcnJvd1dpZHRoKCksXG4gICAgICAgICAgICB0aGlzLmdldEFycm93SGVpZ2h0KCksXG4gICAgICAgICAgICB0aGlzLnBvc2l0aW9uLFxuICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgKTtcblxuICAgICAgICAvLyBFbnN1cmUgdGhhdCBwb3AtdXBzIG5ldmVyIGFwcGVhciBvdXRzaWRlIHRoZSB2aXNpYmxlIGFyZWEgb24gdGhlIGxlZnRcbiAgICAgICAgaWYgKHZhbHVlIDwgMCkge1xuICAgICAgICAgICAgdGhpcy5wb3NQb3B1cExlZnQgPSA1O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5wb3NQb3B1cExlZnQgPSB2YWx1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHN3aXRjaCAodGhpcy5HZXRQaWNrZXJQb3NpdGlvbigpKSB7XG4gICAgICAgICAgICBjYXNlIFRvb2x0aXBQb3NpdGlvbi50b3A6XG4gICAgICAgICAgICBjYXNlIFRvb2x0aXBQb3NpdGlvbi5ib3R0b206XG4gICAgICAgICAgICAgICAgdGhpcy5wb3NBcnJvd0xlZnQgPSB0aGlzLmdldFBpY2tlcldpZHRoKCkgLyAyIC0gLXRoaXMuZ2V0QXJyb3dXaWR0aCgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBUb29sdGlwUG9zaXRpb24udG9wZW5kOlxuICAgICAgICAgICAgY2FzZSBUb29sdGlwUG9zaXRpb24uYm90dG9tZW5kOlxuICAgICAgICAgICAgICAgIHRoaXMucG9zQXJyb3dMZWZ0ID1cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRQaWNrZXJXaWR0aCgpIC1cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRBcnJvd1dpZHRoKCkgLyAyIC1cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wb3B1cEhlbHBlci5nZXRDb250YWluZXJXaWR0aCh0aGlzLnBpY2tlcmJ1dHRvbiwgZmFsc2UpIC8gMjtcblxuICAgICAgICAgICAgICAgIC8vIENvcnJlY3Rpb24gYnkgQXJyb3cgaWYgcG9wdXAgaXMgb3V0c2lkZSB0aGUgbGVmdCBtYXJnaW5cbiAgICAgICAgICAgICAgICBpZiAodmFsdWUgPCAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucG9zQXJyb3dMZWZ0IC09IHZhbHVlICogLTEgKyA1O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgdGhpcy5wb3NBcnJvd0xlZnQgPSBudWxsO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENhbGN1bGF0ZXMgdGhlIHBvc2l0aW9uIG9mIHRoZSB0b29sdGlwIGZyb20gdGhlIHRvcFxuICAgICAqL1xuICAgIHByb3RlY3RlZCBnZXRQb3NpdGlvblRvcCgpOiBudW1iZXIge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMucG9wdXBIZWxwZXIuZ2V0UG9zaXRpb25Ub3AoXG4gICAgICAgICAgICB0aGlzLnBpY2tlcmJ1dHRvbixcbiAgICAgICAgICAgIHRoaXMucGlja2VyY29udGFpbmVyLFxuICAgICAgICAgICAgdGhpcy5lbGVtZW50UmVmLFxuICAgICAgICAgICAgdGhpcy5nZXRBcnJvd1dpZHRoKCksXG4gICAgICAgICAgICB0aGlzLmdldEFycm93SGVpZ2h0KCksXG4gICAgICAgICAgICB0aGlzLnBvc2l0aW9uLFxuICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5wb3NQb3B1cFRvcCA9IHZhbHVlO1xuXG4gICAgICAgIHN3aXRjaCAodGhpcy5HZXRQaWNrZXJQb3NpdGlvbigpKSB7XG4gICAgICAgICAgICBjYXNlIFRvb2x0aXBQb3NpdGlvbi5sZWZ0OlxuICAgICAgICAgICAgY2FzZSBUb29sdGlwUG9zaXRpb24ucmlnaHQ6XG4gICAgICAgICAgICAgICAgdGhpcy5wb3NBcnJvd1RvcCA9IHRoaXMuZ2V0UGlja2VySGVpZ2h0KCkgLyAyIC0gNi41O1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICB0aGlzLnBvc0Fycm93VG9wID0gbnVsbDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICAvLyAjZW5kcmVnaW9uIFByb3RlY3RlZCBNZXRob2RzXG5cbiAgICAvLyAjcmVnaW9uIFByaXZhdGUgTWV0aG9kc1xuXG4gICAgLyoqXG4gICAgICogbWV0aG9kIGlmIGNvbnRlbnQgaGFzIGNoYW5nZWQgYW5kIHByb3BvcnRpb25zIG5lZWQgdG8gYmUgcmVzZXQgaW4gdGhlIFVJLlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgb25Db250ZW50Q2hhbmdlID0gKCk6IHZvaWQgPT4ge1xuICAgICAgICAvLyBEbyBub3RoaW5nIGlmIGlzIG5vdCB2aXNpYmxlXG4gICAgICAgIGlmICghdGhpcy5fc2hvd3NlbGVjdG9yKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZ2V0UG9zaXRpb25MZWZ0KCk7XG4gICAgICAgICAgICB0aGlzLmdldFBvc2l0aW9uVG9wKCk7XG4gICAgICAgIH0pO1xuICAgIH07XG5cbiAgICBwcml2YXRlIHNldERhdGVUaW1lRm9ybWF0KCk6IHZvaWQge1xuICAgICAgICAvLyBIQUNLOiBBZGQgYWRkaXRpb24gcHJvcGVydHkgdG8gRm9ybUNvbnRyb2wuIENhbiBiZSBmaXhlZCBpZiBzb2x1dGlvbiBmb3IgdGlja2V0OiBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyL2lzc3Vlcy8xOTY4NlxuICAgICAgICBpZiAodGhpcy5uZ0NvbnRyb2wpIHtcbiAgICAgICAgICAgICh0aGlzLm5nQ29udHJvbCBhcyB1bmtub3duIGFzIElEYXRlVGltZUNvbnRyb2wpLmRhdGV0aW1lZm9ybWF0c3RyaW5nID0gdGhpcy5HZXREYXRlVGltZUZvcm1hdFN0cmluZygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gI2VuZHJlZ2lvbiBQcml2YXRlIE1ldGhvZHNcbn1cbiJdLCJtYXBwaW5ncyI6IjYybkNBc0lJO0FBQUFBLGNBQUEsU0FBQUEsQ0FBQSxTQUFBQyxjQUFBLFdBQUFBLGNBQUEsRUFBQUQsY0FBQSxHQXBJSixPQUFTRSxlQUFlLEtBQVEsb0JBQW9CLENBQ3BELE9BQVNDLFdBQVcsS0FBUSwwQkFBMEIsQ0FDdEQsT0FBU0MsVUFBVSxLQUFRLGVBQWUsQ0FDMUMsT0FBU0MscUJBQXFCLEtBQVEsc0NBQXNDLENBQzVFLE9BQVNDLG1CQUFtQixLQUFRLG9CQUFvQixDQUN4RCxPQUVJQyxTQUFTLENBSVRDLEtBQUssQ0FHTEMsU0FBUyxLQUNOLGVBQWUsQ0FFdEIsTUFBTyxHQUFLLENBQUFDLE9BQU8sS0FBTSxRQUFRLEMsa0ZBRWpDOztHQUdBLEtBQ3NCLENBQUFDLHNCQUF1QixRQUFRLENBQUFMLG1CQUF5QixDQXlHMUU7QUFFQTtBQUVBOzs7OztPQU1BTSxZQUNJQyxVQUErQixDQUMvQkMsUUFBa0IsQ0FDUkMsVUFBc0IsQ0FDZkMsS0FBd0IsRUFBQWhCLGNBQUEsR0FBQWlCLENBQUEsTUFBQWpCLGNBQUEsR0FBQWtCLENBQUEsTUFFekMsS0FBSyxDQUFDTCxVQUFVLENBQUVDLFFBQVEsQ0FBQyxDQUFDZCxjQUFBLEdBQUFrQixDQUFBLE1BSGxCLEtBQUFILFVBQVUsQ0FBVkEsVUFBVSxDQUFZZixjQUFBLEdBQUFrQixDQUFBLE1BQ2YsS0FBQUYsS0FBSyxDQUFMQSxLQUFLLENBdEgxQjtBQUVBOztXQUFBaEIsY0FBQSxHQUFBa0IsQ0FBQSxNQUdpQixLQUFBQyxXQUFXLENBQWdCLEdBQUksQ0FBQWhCLFdBQVcsRUFBRSxDQUU3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