novo-elements 8.3.0 → 8.4.0-next.1

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 (205) hide show
  1. package/addons/ace-editor/AceEditor.d.ts +4 -2
  2. package/addons/code-editor/CodeEditor.d.ts +31 -0
  3. package/addons/code-editor/CodeEditor.module.d.ts +9 -0
  4. package/addons/code-editor/CodeEditor.scss +5 -0
  5. package/addons/code-editor/index.d.ts +2 -0
  6. package/addons/code-editor/novo-elements-addons-code-editor.d.ts +5 -0
  7. package/addons/code-editor/package.json +10 -0
  8. package/addons/index.d.ts +1 -0
  9. package/elements/aside/aside.component.scss +1 -1
  10. package/elements/calendar/Calendar.module.d.ts +2 -3
  11. package/elements/checkbox/CheckList.scss +1 -1
  12. package/elements/checkbox/Checkbox.scss +1 -1
  13. package/elements/common/overlay/Overlay.d.ts +1 -0
  14. package/elements/date-picker/DatePicker.module.d.ts +2 -2
  15. package/elements/date-picker/DatePickerInput.d.ts +8 -5
  16. package/elements/date-picker/MultiDateInput.d.ts +0 -1
  17. package/elements/date-time-picker/DateTimePicker.module.d.ts +2 -3
  18. package/elements/drag-drop/drag-drop-box.d.ts +45 -0
  19. package/elements/drag-drop/drag-drop.module.d.ts +7 -0
  20. package/elements/drag-drop/index.d.ts +2 -0
  21. package/elements/drag-drop/novo-elements-elements-drag-drop.d.ts +5 -0
  22. package/elements/drag-drop/package.json +10 -0
  23. package/elements/dropdown/Dropdown.d.ts +7 -1
  24. package/elements/field/formats/date-time-format.d.ts +2 -2
  25. package/elements/form/Control.d.ts +9 -6
  26. package/elements/form/ControlTemplates.d.ts +1 -1
  27. package/elements/form/Form.module.d.ts +6 -6
  28. package/elements/form/controls/code-editor/CodeEditorControl.d.ts +5 -0
  29. package/elements/form/controls/code-editor/index.d.ts +1 -0
  30. package/elements/form/controls/index.d.ts +2 -1
  31. package/elements/form/extras/FormExtras.module.d.ts +4 -4
  32. package/elements/form/extras/file/FileInput.d.ts +15 -16
  33. package/elements/form/extras/file/FileInput.scss +58 -30
  34. package/elements/index.d.ts +1 -0
  35. package/elements/query-builder/condition-builder/condition-builder.component.scss +1 -1
  36. package/elements/query-builder/condition-definitions/address-condition.definition.d.ts +1 -1
  37. package/elements/select-search/select-search.component.scss +1 -1
  38. package/elements/table/Table.module.d.ts +5 -6
  39. package/elements/time-picker/TimePicker.d.ts +2 -3
  40. package/elements/time-picker/TimePicker.module.d.ts +3 -4
  41. package/elements/time-picker/TimePickerInput.d.ts +0 -1
  42. package/esm2020/addons/ace-editor/AceEditor.mjs +8 -4
  43. package/esm2020/addons/ckeditor/CKEditor.mjs +8 -1
  44. package/esm2020/addons/code-editor/CodeEditor.mjs +129 -0
  45. package/esm2020/addons/code-editor/CodeEditor.module.mjs +19 -0
  46. package/esm2020/addons/code-editor/index.mjs +3 -0
  47. package/esm2020/addons/code-editor/novo-elements-addons-code-editor.mjs +5 -0
  48. package/esm2020/addons/index.mjs +2 -1
  49. package/esm2020/elements/breadcrumbs/breadcrumb-item/BreadcrumbItem.mjs +1 -1
  50. package/esm2020/elements/calendar/Calendar.module.mjs +5 -7
  51. package/esm2020/elements/calendar/calendar.component.mjs +3 -3
  52. package/esm2020/elements/calendar/month-select/month-select.component.mjs +3 -3
  53. package/esm2020/elements/calendar/month-view/month-view.component.mjs +3 -3
  54. package/esm2020/elements/calendar/year-select/year-select.component.mjs +3 -3
  55. package/esm2020/elements/common/overlay/Overlay.mjs +11 -5
  56. package/esm2020/elements/data-table/cell-headers/data-table-header-cell.component.mjs +1 -1
  57. package/esm2020/elements/data-table/data-table-clear-button.component.mjs +1 -1
  58. package/esm2020/elements/data-table/data-table.component.mjs +2 -2
  59. package/esm2020/elements/date-picker/DatePicker.module.mjs +6 -6
  60. package/esm2020/elements/date-picker/DatePickerInput.mjs +50 -29
  61. package/esm2020/elements/date-picker/DateRangeInput.mjs +10 -16
  62. package/esm2020/elements/date-picker/MultiDateInput.mjs +1 -17
  63. package/esm2020/elements/date-time-picker/DateTimePicker.module.mjs +4 -5
  64. package/esm2020/elements/drag-drop/drag-drop-box.mjs +224 -0
  65. package/esm2020/elements/drag-drop/drag-drop.module.mjs +16 -0
  66. package/esm2020/elements/drag-drop/index.mjs +3 -0
  67. package/esm2020/elements/drag-drop/novo-elements-elements-drag-drop.mjs +5 -0
  68. package/esm2020/elements/dropdown/Dropdown.mjs +29 -4
  69. package/esm2020/elements/field/formats/date-format.mjs +5 -5
  70. package/esm2020/elements/field/formats/date-range-format.mjs +5 -5
  71. package/esm2020/elements/field/formats/date-time-format.mjs +12 -12
  72. package/esm2020/elements/field/formats/time-format.mjs +6 -6
  73. package/esm2020/elements/form/Control.mjs +20 -8
  74. package/esm2020/elements/form/ControlTemplates.mjs +54 -27
  75. package/esm2020/elements/form/Form.module.mjs +12 -13
  76. package/esm2020/elements/form/NovoFormControl.mjs +1 -2
  77. package/esm2020/elements/form/controls/code-editor/CodeEditorControl.mjs +9 -0
  78. package/esm2020/elements/form/controls/code-editor/index.mjs +2 -0
  79. package/esm2020/elements/form/controls/index.mjs +3 -2
  80. package/esm2020/elements/form/controls/timezone/TimezoneControl.mjs +2 -2
  81. package/esm2020/elements/form/extras/FormExtras.module.mjs +8 -9
  82. package/esm2020/elements/form/extras/file/FileInput.mjs +38 -261
  83. package/esm2020/elements/index.mjs +2 -1
  84. package/esm2020/elements/query-builder/condition-definitions/address-condition.definition.mjs +2 -2
  85. package/esm2020/elements/query-builder/condition-group/condition-group.component.mjs +1 -1
  86. package/esm2020/elements/simple-table/cell-header.mjs +2 -2
  87. package/esm2020/elements/simple-table/cell.mjs +1 -1
  88. package/esm2020/elements/tabbed-group-picker/TabbedGroupPicker.mjs +1 -1
  89. package/esm2020/elements/table/Table.mjs +1 -1
  90. package/esm2020/elements/table/Table.module.mjs +1 -6
  91. package/esm2020/elements/table/extras/dropdown-cell/DropdownCell.mjs +1 -1
  92. package/esm2020/elements/time-picker/TimePicker.mjs +5 -6
  93. package/esm2020/elements/time-picker/TimePicker.module.mjs +4 -5
  94. package/esm2020/elements/time-picker/TimePickerInput.mjs +3 -65
  95. package/esm2020/index.mjs +1 -1
  96. package/esm2020/novo-elements.module.mjs +9 -3
  97. package/esm2020/novo-elements.providers.mjs +2 -2
  98. package/esm2020/services/date-format/DateFormat.mjs +153 -47
  99. package/esm2020/services/global/global.service.mjs +7 -1
  100. package/esm2020/utils/date/Date.mjs +1 -1
  101. package/esm2020/utils/date/index.mjs +3 -2
  102. package/esm2020/utils/date/timezone-support.mjs +87 -0
  103. package/fesm2015/novo-elements-addons-ace-editor.mjs +7 -3
  104. package/fesm2015/novo-elements-addons-ace-editor.mjs.map +1 -1
  105. package/fesm2015/novo-elements-addons-ckeditor.mjs +7 -0
  106. package/fesm2015/novo-elements-addons-ckeditor.mjs.map +1 -1
  107. package/fesm2015/novo-elements-addons-code-editor.mjs +150 -0
  108. package/fesm2015/novo-elements-addons-code-editor.mjs.map +1 -0
  109. package/fesm2015/novo-elements-addons.mjs +155 -5
  110. package/fesm2015/novo-elements-addons.mjs.map +1 -1
  111. package/fesm2015/novo-elements-elements-breadcrumbs.mjs +1 -1
  112. package/fesm2015/novo-elements-elements-breadcrumbs.mjs.map +1 -1
  113. package/fesm2015/novo-elements-elements-calendar.mjs +12 -13
  114. package/fesm2015/novo-elements-elements-calendar.mjs.map +1 -1
  115. package/fesm2015/novo-elements-elements-common.mjs +10 -2
  116. package/fesm2015/novo-elements-elements-common.mjs.map +1 -1
  117. package/fesm2015/novo-elements-elements-data-table.mjs +3 -3
  118. package/fesm2015/novo-elements-elements-data-table.mjs.map +1 -1
  119. package/fesm2015/novo-elements-elements-date-picker.mjs +64 -62
  120. package/fesm2015/novo-elements-elements-date-picker.mjs.map +1 -1
  121. package/fesm2015/novo-elements-elements-date-time-picker.mjs +3 -4
  122. package/fesm2015/novo-elements-elements-date-time-picker.mjs.map +1 -1
  123. package/fesm2015/novo-elements-elements-drag-drop.mjs +245 -0
  124. package/fesm2015/novo-elements-elements-drag-drop.mjs.map +1 -0
  125. package/fesm2015/novo-elements-elements-dropdown.mjs +28 -3
  126. package/fesm2015/novo-elements-elements-dropdown.mjs.map +1 -1
  127. package/fesm2015/novo-elements-elements-field.mjs +19 -19
  128. package/fesm2015/novo-elements-elements-field.mjs.map +1 -1
  129. package/fesm2015/novo-elements-elements-form.mjs +124 -300
  130. package/fesm2015/novo-elements-elements-form.mjs.map +1 -1
  131. package/fesm2015/novo-elements-elements-query-builder.mjs +1 -1
  132. package/fesm2015/novo-elements-elements-query-builder.mjs.map +1 -1
  133. package/fesm2015/novo-elements-elements-simple-table.mjs +2 -2
  134. package/fesm2015/novo-elements-elements-simple-table.mjs.map +1 -1
  135. package/fesm2015/novo-elements-elements-tabbed-group-picker.mjs +1 -1
  136. package/fesm2015/novo-elements-elements-tabbed-group-picker.mjs.map +1 -1
  137. package/fesm2015/novo-elements-elements-table.mjs +2 -6
  138. package/fesm2015/novo-elements-elements-table.mjs.map +1 -1
  139. package/fesm2015/novo-elements-elements-time-picker.mjs +7 -71
  140. package/fesm2015/novo-elements-elements-time-picker.mjs.map +1 -1
  141. package/fesm2015/novo-elements-elements.mjs +1 -0
  142. package/fesm2015/novo-elements-elements.mjs.map +1 -1
  143. package/fesm2015/novo-elements-services.mjs +158 -46
  144. package/fesm2015/novo-elements-services.mjs.map +1 -1
  145. package/fesm2015/novo-elements-utils.mjs +88 -1
  146. package/fesm2015/novo-elements-utils.mjs.map +1 -1
  147. package/fesm2015/novo-elements.mjs +8 -2
  148. package/fesm2015/novo-elements.mjs.map +1 -1
  149. package/fesm2020/novo-elements-addons-ace-editor.mjs +7 -3
  150. package/fesm2020/novo-elements-addons-ace-editor.mjs.map +1 -1
  151. package/fesm2020/novo-elements-addons-ckeditor.mjs +7 -0
  152. package/fesm2020/novo-elements-addons-ckeditor.mjs.map +1 -1
  153. package/fesm2020/novo-elements-addons-code-editor.mjs +150 -0
  154. package/fesm2020/novo-elements-addons-code-editor.mjs.map +1 -0
  155. package/fesm2020/novo-elements-addons.mjs +155 -5
  156. package/fesm2020/novo-elements-addons.mjs.map +1 -1
  157. package/fesm2020/novo-elements-elements-breadcrumbs.mjs +1 -1
  158. package/fesm2020/novo-elements-elements-breadcrumbs.mjs.map +1 -1
  159. package/fesm2020/novo-elements-elements-calendar.mjs +12 -13
  160. package/fesm2020/novo-elements-elements-calendar.mjs.map +1 -1
  161. package/fesm2020/novo-elements-elements-common.mjs +8 -2
  162. package/fesm2020/novo-elements-elements-common.mjs.map +1 -1
  163. package/fesm2020/novo-elements-elements-data-table.mjs +3 -3
  164. package/fesm2020/novo-elements-elements-data-table.mjs.map +1 -1
  165. package/fesm2020/novo-elements-elements-date-picker.mjs +62 -62
  166. package/fesm2020/novo-elements-elements-date-picker.mjs.map +1 -1
  167. package/fesm2020/novo-elements-elements-date-time-picker.mjs +3 -4
  168. package/fesm2020/novo-elements-elements-date-time-picker.mjs.map +1 -1
  169. package/fesm2020/novo-elements-elements-drag-drop.mjs +244 -0
  170. package/fesm2020/novo-elements-elements-drag-drop.mjs.map +1 -0
  171. package/fesm2020/novo-elements-elements-dropdown.mjs +28 -3
  172. package/fesm2020/novo-elements-elements-dropdown.mjs.map +1 -1
  173. package/fesm2020/novo-elements-elements-field.mjs +19 -19
  174. package/fesm2020/novo-elements-elements-field.mjs.map +1 -1
  175. package/fesm2020/novo-elements-elements-form.mjs +125 -302
  176. package/fesm2020/novo-elements-elements-form.mjs.map +1 -1
  177. package/fesm2020/novo-elements-elements-query-builder.mjs +1 -1
  178. package/fesm2020/novo-elements-elements-query-builder.mjs.map +1 -1
  179. package/fesm2020/novo-elements-elements-simple-table.mjs +2 -2
  180. package/fesm2020/novo-elements-elements-simple-table.mjs.map +1 -1
  181. package/fesm2020/novo-elements-elements-tabbed-group-picker.mjs +1 -1
  182. package/fesm2020/novo-elements-elements-tabbed-group-picker.mjs.map +1 -1
  183. package/fesm2020/novo-elements-elements-table.mjs +2 -6
  184. package/fesm2020/novo-elements-elements-table.mjs.map +1 -1
  185. package/fesm2020/novo-elements-elements-time-picker.mjs +7 -71
  186. package/fesm2020/novo-elements-elements-time-picker.mjs.map +1 -1
  187. package/fesm2020/novo-elements-elements.mjs +1 -0
  188. package/fesm2020/novo-elements-elements.mjs.map +1 -1
  189. package/fesm2020/novo-elements-services.mjs +158 -46
  190. package/fesm2020/novo-elements-services.mjs.map +1 -1
  191. package/fesm2020/novo-elements-utils.mjs +88 -1
  192. package/fesm2020/novo-elements-utils.mjs.map +1 -1
  193. package/fesm2020/novo-elements.mjs +8 -2
  194. package/fesm2020/novo-elements.mjs.map +1 -1
  195. package/novo-elements.module.d.ts +1 -1
  196. package/novo-elements.scss +1 -1
  197. package/package.json +23 -4
  198. package/services/date-format/DateFormat.d.ts +62 -3
  199. package/services/global/global.service.d.ts +3 -0
  200. package/styles/content/root.scss +1 -1
  201. package/styles/themes/light-test.scss +1 -1
  202. package/styles/themes/light.scss +1 -1
  203. package/styles/variables.scss +1 -1
  204. package/utils/date/index.d.ts +2 -1
  205. package/utils/date/timezone-support.d.ts +5 -0
@@ -2,7 +2,9 @@
2
2
  import { Injectable } from '@angular/core';
3
3
  import { NovoLabelService } from '../novo-label-service';
4
4
  // APP
5
- import { Helpers } from 'novo-elements/utils';
5
+ import { format, parse } from 'date-fns';
6
+ import { MaskedEnum, MaskedRange } from 'imask';
7
+ import { DateUtil, Helpers, convertTokens } from 'novo-elements/utils';
6
8
  import * as i0 from "@angular/core";
7
9
  import * as i1 from "../novo-label-service";
8
10
  export class DateFormatService {
@@ -10,35 +12,79 @@ export class DateFormatService {
10
12
  this.labels = labels;
11
13
  }
12
14
  getTimeMask(militaryTime) {
13
- let mask = [/\d/, /\d/, /:/, /\d/, /\d/];
14
- let timeFormatArray = [];
15
- const timeFormat = this.labels.timeFormatPlaceholderAM.toLowerCase();
16
- if (militaryTime) {
17
- return mask;
18
- }
19
- else {
20
- timeFormatArray = timeFormat.split('hh:mm');
21
- if (timeFormatArray && timeFormatArray.length) {
22
- mask = [];
23
- for (const timeFormatPart of timeFormatArray) {
24
- if (timeFormatPart === '') {
25
- mask = mask.concat([/\d/, /\d|:/, /:|\d/, /\d|\w|\s/, /\d|\s|\w/]);
26
- }
27
- else if (timeFormatPart.length) {
28
- for (let i = 0; i < timeFormatPart.length; i++) {
29
- mask.push(/\s|\w|\d|\./);
30
- }
31
- }
32
- }
33
- }
34
- }
15
+ const amFormat = this.labels.timeFormatAM.toUpperCase();
16
+ const pmFormat = this.labels.timeFormatPM.toUpperCase();
17
+ const mask = {
18
+ mask: Date,
19
+ pattern: militaryTime ? 'HH:mm' : 'hh:mm aa',
20
+ overwrite: true,
21
+ autofix: true,
22
+ lazy: false,
23
+ min: new Date(1970, 0, 1),
24
+ max: new Date(2030, 0, 1),
25
+ prepare(str) {
26
+ return str.toUpperCase();
27
+ },
28
+ format(date) {
29
+ return DateUtil.format(date, militaryTime ? 'HH:mm' : 'hh:mm A');
30
+ },
31
+ parse: (str) => {
32
+ const time = militaryTime ? str : this.convertTime12to24(str);
33
+ return DateUtil.parse(`${DateUtil.format(Date.now(), 'YYYY-MM-DD')}T${time}`);
34
+ },
35
+ blocks: {
36
+ HH: {
37
+ mask: MaskedRange,
38
+ placeholderChar: 'H',
39
+ maxLength: 2,
40
+ from: 0,
41
+ to: 23,
42
+ },
43
+ hh: {
44
+ mask: MaskedRange,
45
+ placeholderChar: 'h',
46
+ maxLength: 2,
47
+ from: 1,
48
+ to: 12,
49
+ },
50
+ mm: {
51
+ mask: MaskedRange,
52
+ placeholderChar: 'm',
53
+ maxLength: 2,
54
+ from: 0,
55
+ to: 59,
56
+ },
57
+ aa: {
58
+ mask: MaskedEnum,
59
+ placeholderChar: 'x',
60
+ enum: ['AM', 'PM', 'am', 'pm', amFormat, pmFormat],
61
+ },
62
+ },
63
+ };
35
64
  return mask;
36
65
  }
37
- getDateMask() {
38
- return [/\d/, /\d|\/|\.|\-/, /\/|\.|\-|\d/, /\d|\/|\.|\-/, /\d|\/|\.|\-/, /\d|\/|\.|\-/, /\d|\/|\.|\-/, /\d|\/|\.|\-/, /\d/, /\d/];
66
+ getDateMask(format) {
67
+ const mask = {
68
+ mask: Date,
69
+ pattern: 'm/`d/`Y',
70
+ overwrite: true,
71
+ autofix: 'pad',
72
+ min: new Date(1970, 0, 1),
73
+ max: new Date(2030, 0, 1),
74
+ prepare(str) {
75
+ return str.toUpperCase();
76
+ },
77
+ format(date) {
78
+ return DateUtil.format(date, format || 'MM/DD/YYYY');
79
+ },
80
+ parse: (str) => {
81
+ return DateUtil.parse(str);
82
+ },
83
+ };
84
+ return mask;
39
85
  }
40
86
  getDateTimeMask(militaryTime = false) {
41
- return [...this.getDateMask(), /\,?/, /\s/, ...this.getTimeMask(militaryTime)];
87
+ return [this.getDateMask(), /\,?/, /\s/, this.getTimeMask(militaryTime)];
42
88
  }
43
89
  getTimePlaceHolder(militaryTime) {
44
90
  if (militaryTime) {
@@ -46,6 +92,60 @@ export class DateFormatService {
46
92
  }
47
93
  return this.labels.timeFormatPlaceholderAM;
48
94
  }
95
+ parseCustomDateString(dateString, customFormat) {
96
+ let isInvalidDate = true;
97
+ let date = null;
98
+ if (!customFormat) {
99
+ customFormat = this.labels.dateFormatString();
100
+ }
101
+ customFormat = convertTokens(customFormat);
102
+ const [cleanDateString, cleanFormat] = this.removeNonstandardFormatCharacters(dateString, customFormat);
103
+ try {
104
+ date = parse(cleanDateString, cleanFormat, new Date(), {
105
+ useAdditionalWeekYearTokens: false
106
+ });
107
+ if (isNaN(date.getTime())) {
108
+ date = null;
109
+ }
110
+ else if (cleanDateString !== dateString) {
111
+ // Verify that this parse matches the original dateString through this format. If not, then something may have mismatched -
112
+ // in which case we consider the date to be invalid.
113
+ // For instance, if we parsed "Fri Oct 18, 2023" as " Oct 18 2023" (removing the duplicative day-of-week) then it
114
+ // would re-format as "Wed Oct 18 2023" and is an invalid date.
115
+ const reformattedDate = format(date, customFormat);
116
+ if (reformattedDate !== dateString) {
117
+ date = null;
118
+ }
119
+ else {
120
+ isInvalidDate = false;
121
+ }
122
+ }
123
+ else {
124
+ isInvalidDate = false;
125
+ }
126
+ }
127
+ catch (err) {
128
+ // ignore error - keep isInvalidDate true and date null
129
+ }
130
+ return [date, dateString, isInvalidDate];
131
+ }
132
+ /**
133
+ * Certain date format characters are considered nonstandard. We can still use them, but remove them for date parsing to avoid errors
134
+ * @param dateString
135
+ * @param format
136
+ * @returns date string and format in array, both having had their
137
+ */
138
+ removeNonstandardFormatCharacters(dateString, format) {
139
+ const bannedChars = /[iIRoPp]+/;
140
+ // remove quotes
141
+ format = format.replace(/['"]/g, '');
142
+ let match = null;
143
+ while ((match = bannedChars.exec(format)) != null) {
144
+ format = format.substring(0, match.index) + format.substring(match.index + match[0].length);
145
+ dateString = dateString.substring(0, match.index) + dateString.substring(match.index + match[0].length);
146
+ }
147
+ return [dateString, format];
148
+ }
49
149
  parseDateString(dateString) {
50
150
  let dateFormat = this.labels.dateFormatString();
51
151
  const dateFormatRegex = /(\w+)[\/|\.|\-](\w+)[\/|\.|\-](\w+)/gi;
@@ -55,7 +155,7 @@ export class DateFormatService {
55
155
  let year;
56
156
  let month;
57
157
  let day;
58
- let date = new Date();
158
+ let date = null;
59
159
  let isInvalidDate = true;
60
160
  if (Helpers.isEmpty(dateFormat)) {
61
161
  // Default to MM/dd/yyyy
@@ -88,10 +188,8 @@ export class DateFormatService {
88
188
  const oneToken = /^(\d{1,4})$/.exec(dateString);
89
189
  const delimiter = /\w+(\/|\.|\-)\w+[\/|\.|\-]\w+/gi.exec(dateFormat);
90
190
  const dateStringWithDelimiter = dateString[dateString.length - 1].match(/\/|\.|\-/);
91
- if (twoTokens && twoTokens.length === 3 && this.isValidDatePart(twoTokens[2], dateFormatTokens[2]) && !dateStringWithDelimiter) {
92
- dateString = `${dateString}${delimiter[1]}`;
93
- }
94
- else if (oneToken && oneToken.length === 2 && this.isValidDatePart(oneToken[1], dateFormatTokens[1]) && !dateStringWithDelimiter) {
191
+ if ((twoTokens && twoTokens.length === 3 && this.isValidDatePart(twoTokens[2], dateFormatTokens[2]) && !dateStringWithDelimiter) ||
192
+ (oneToken && oneToken.length === 2 && this.isValidDatePart(oneToken[1], dateFormatTokens[1]) && !dateStringWithDelimiter)) {
95
193
  dateString = `${dateString}${delimiter[1]}`;
96
194
  }
97
195
  }
@@ -102,7 +200,7 @@ export class DateFormatService {
102
200
  let timeStringParts;
103
201
  let amFormat = this.labels.timeFormatAM;
104
202
  let pmFormat = this.labels.timeFormatPM;
105
- if (!(timeString && timeString.includes(':'))) {
203
+ if (!(timeString?.includes(':'))) {
106
204
  return [value, timeString];
107
205
  }
108
206
  if (!militaryTime && amFormat && pmFormat) {
@@ -118,14 +216,14 @@ export class DateFormatService {
118
216
  splits = timeString.split(pmFormat);
119
217
  pm = true;
120
218
  }
121
- if (splits && splits.length) {
219
+ if (splits?.length) {
122
220
  for (const item of splits) {
123
- if (item && item.trim().includes(':')) {
221
+ if (item?.trim().includes(':')) {
124
222
  timeStringParts = item.trim().split(':');
125
223
  }
126
224
  }
127
225
  }
128
- if (timeStringParts && timeStringParts.length && timeStringParts.length === 2) {
226
+ if (timeStringParts?.length && timeStringParts.length === 2) {
129
227
  let hours = parseInt(timeStringParts[0], 10);
130
228
  if (hours === 12 && pm) {
131
229
  hours = 12;
@@ -143,7 +241,7 @@ export class DateFormatService {
143
241
  }
144
242
  else {
145
243
  timeStringParts = /(\d{1,2}):(\d{2})/.exec(timeString);
146
- if (timeStringParts && timeStringParts.length && timeStringParts.length === 3) {
244
+ if (timeStringParts?.length && timeStringParts.length === 3) {
147
245
  value.setHours(parseInt(timeStringParts[1], 10));
148
246
  value.setMinutes(parseInt(timeStringParts[2], 10));
149
247
  value.setSeconds(0);
@@ -152,6 +250,9 @@ export class DateFormatService {
152
250
  return [value, timeString];
153
251
  }
154
252
  parseString(dateTimeString, militaryTime, type) {
253
+ if (!(dateTimeString?.length)) {
254
+ return null;
255
+ }
155
256
  switch (type) {
156
257
  case 'datetime':
157
258
  const str = dateTimeString.replace(/-/g, '/');
@@ -170,18 +271,23 @@ export class DateFormatService {
170
271
  return;
171
272
  }
172
273
  }
173
- isValidDatePart(value, format) {
174
- const datePart = parseInt(value, 10);
175
- if (format.includes('m') && (datePart >= 2 || value.length === 2)) {
176
- return true;
274
+ convertTime12to24(time12h) {
275
+ const pmFormat = this.labels.timeFormatPM.toUpperCase();
276
+ const [time, modifier] = time12h.split(' ');
277
+ let [hours, minutes] = time.split(':');
278
+ if (hours === '12') {
279
+ hours = '00';
177
280
  }
178
- else if (format.includes('d') && (datePart >= 4 || value.length === 2)) {
179
- return true;
281
+ if (['PM', pmFormat].includes(modifier)) {
282
+ hours = `${parseInt(hours, 10) + 12}`.padStart(2, '0');
180
283
  }
181
- else if (format.includes('y') && datePart >= 1000) {
182
- return true;
183
- }
184
- return false;
284
+ return `${hours}:${minutes}`;
285
+ }
286
+ isValidDatePart(value, format) {
287
+ const datePart = parseInt(value, 10);
288
+ return ((format.includes('m') && (datePart >= 2 || value.length === 2)) ||
289
+ (format.includes('d') && (datePart >= 4 || value.length === 2)) ||
290
+ (format.includes('y') && datePart >= 1000));
185
291
  }
186
292
  }
187
293
  DateFormatService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: DateFormatService, deps: [{ token: i1.NovoLabelService }], target: i0.ɵɵFactoryTarget.Injectable });
@@ -189,4 +295,4 @@ DateFormatService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", ve
189
295
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: DateFormatService, decorators: [{
190
296
  type: Injectable
191
297
  }], ctorParameters: function () { return [{ type: i1.NovoLabelService }]; } });
192
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGF0ZUZvcm1hdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25vdm8tZWxlbWVudHMvc3JjL3NlcnZpY2VzL2RhdGUtZm9ybWF0L0RhdGVGb3JtYXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTTtBQUNOLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDekQsTUFBTTtBQUNOLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7O0FBRzlDLE1BQU0sT0FBTyxpQkFBaUI7SUFDNUIsWUFBb0IsTUFBd0I7UUFBeEIsV0FBTSxHQUFOLE1BQU0sQ0FBa0I7SUFBRyxDQUFDO0lBRWhELFdBQVcsQ0FBQyxZQUFxQjtRQUMvQixJQUFJLElBQUksR0FBa0IsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDeEQsSUFBSSxlQUFlLEdBQWtCLEVBQUUsQ0FBQztRQUN4QyxNQUFNLFVBQVUsR0FBVyxJQUFJLENBQUMsTUFBTSxDQUFDLHVCQUF1QixDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQzdFLElBQUksWUFBWSxFQUFFO1lBQ2hCLE9BQU8sSUFBSSxDQUFDO1NBQ2I7YUFBTTtZQUNMLGVBQWUsR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzVDLElBQUksZUFBZSxJQUFJLGVBQWUsQ0FBQyxNQUFNLEVBQUU7Z0JBQzdDLElBQUksR0FBRyxFQUFFLENBQUM7Z0JBQ1YsS0FBSyxNQUFNLGNBQWMsSUFBSSxlQUFlLEVBQUU7b0JBQzVDLElBQUksY0FBYyxLQUFLLEVBQUUsRUFBRTt3QkFDekIsSUFBSSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLE1B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Q0FBQyxDQUFDO2lCQUNqRjtnQkFDRCxPQUFPLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQ25CLEtBQUssTUFBTTtnQkFDVCxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsY0FBYyxDQUFDLENBQUM7WUFDOUMsS0FBSyxNQUFNO2dCQUNULE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxjQUFjLEVBQUUsWUFBWSxDQUFDLENBQUM7WUFDNUQ7Z0JBQ0UsT0FBTztTQUNWO0lBQ0gsQ0FBQztJQUVELGVBQWUsQ0FBQyxLQUFhLEVBQUUsTUFBYztRQUMzQyxNQUFNLFFBQVEsR0FBRyxRQUFRLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3JDLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsRUFBRTtZQUNqRSxPQUFPLElBQUksQ0FBQztTQUNiO2FBQU0sSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxFQUFFO1lBQ3hFLE9BQU8sSUFBSSxDQUFDO1NBQ2I7YUFBTSxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksUUFBUSxJQUFJLElBQUksRUFBRTtZQUNuRCxPQUFPLElBQUksQ0FBQztTQUNiO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDOzsrR0ExS1UsaUJBQWlCO21IQUFqQixpQkFBaUI7NEZBQWpCLGlCQUFpQjtrQkFEN0IsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbIi8vIE5HMlxuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTm92b0xhYmVsU2VydmljZSB9IGZyb20gJy4uL25vdm8tbGFiZWwtc2VydmljZSc7XG4vLyBBUFBcbmltcG9ydCB7IEhlbHBlcnMgfSBmcm9tICdub3ZvLWVsZW1lbnRzL3V0aWxzJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIERhdGVGb3JtYXRTZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBsYWJlbHM6IE5vdm9MYWJlbFNlcnZpY2UpIHt9XG5cbiAgZ2V0VGltZU1hc2sobWlsaXRhcnlUaW1lOiBib29sZWFuKTogQXJyYXk8UmVnRXhwPiB7XG4gICAgbGV0IG1hc2s6IEFycmF5PFJlZ0V4cD4gPSBbL1xcZC8sIC9cXGQvLCAvOi8sIC9cXGQvLCAvXFxkL107XG4gICAgbGV0IHRpbWVGb3JtYXRBcnJheTogQXJyYXk8c3RyaW5nPiA9IFtdO1xuICAgIGNvbnN0IHRpbWVGb3JtYXQ6IHN0cmluZyA9IHRoaXMubGFiZWxzLnRpbWVGb3JtYXRQbGFjZWhvbGRlckFNLnRvTG93ZXJDYXNlKCk7XG4gICAgaWYgKG1pbGl0YXJ5VGltZSkge1xuICAgICAgcmV0dXJuIG1hc2s7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRpbWVGb3JtYXRBcnJheSA9IHRpbWVGb3JtYXQuc3BsaXQoJ2hoOm1tJyk7XG4gICAgICBpZiAodGltZUZvcm1hdEFycmF5ICYmIHRpbWVGb3JtYXRBcnJheS5sZW5ndGgpIHtcbiAgICAgICAgbWFzayA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IHRpbWVGb3JtYXRQYXJ0IG9mIHRpbWVGb3JtYXRBcnJheSkge1xuICAgICAgICAgIGlmICh0aW1lRm9ybWF0UGFydCA9PT0gJycpIHtcbiAgICAgICAgICAgIG1hc2sgPSBtYXNrLmNvbmNhdChbL1xcZC8sIC9cXGR8Oi8sIC86fFxcZC8sIC9cXGR8XFx3fFxccy8sIC9cXGR8XFxzfFxcdy9dKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHRpbWVGb3JtYXRQYXJ0Lmxlbmd0aCkge1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aW1lRm9ybWF0UGFydC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICBtYXNrLnB1c2goL1xcc3xcXHd8XFxkfFxcLi8pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbWFzaztcbiAgfVxuXG4gIGdldERhdGVNYXNrKCk6IEFycmF5PFJlZ0V4cD4ge1xuICAgIHJldHVybiBbL1xcZC8sIC9cXGR8XFwvfFxcLnxcXC0vLCAvXFwvfFxcLnxcXC18XFxkLywgL1xcZHxcXC98XFwufFxcLS8sIC9cXGR8XFwvfFxcLnxcXC0vLCAvXFxkfFxcL3xcXC58XFwtLywgL1xcZHxcXC98XFwufFxcLS8sIC9cXGR8XFwvfFxcLnxcXC0vLCAvXFxkLywgL1xcZC9dO1xuICB9XG5cbiAgZ2V0RGF0ZVRpbWVNYXNrKG1pbGl0YXJ5VGltZTogYm9vbGVhbiA9IGZhbHNlKTogQXJyYXk8UmVnRXhwPiB7XG4gICAgcmV0dXJuIFsuLi50aGlzLmdldERhdGVNYXNrKCksIC9cXCw/LywgL1xccy8sIC4uLnRoaXMuZ2V0VGltZU1hc2sobWlsaXRhcnlUaW1lKV07XG4gIH1cblxuICBnZXRUaW1lUGxhY2VIb2xkZXIobWlsaXRhcnlUaW1lOiBib29sZWFuKTogc3RyaW5nIHtcbiAgICBpZiAobWlsaXRhcnlUaW1lKSB7XG4gICAgICByZXR1cm4gdGhpcy5sYWJlbHMudGltZUZvcm1hdFBsYWNlaG9sZGVyMjRIb3VyO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5sYWJlbHMudGltZUZvcm1hdFBsYWNlaG9sZGVyQU07XG4gIH1cblxuICBwYXJzZURhdGVTdHJpbmcoZGF0ZVN0cmluZzogc3RyaW5nKTogW0RhdGUsIHN0cmluZywgYm9vbGVhbl0ge1xuICAgIGxldCBkYXRlRm9ybWF0OiBzdHJpbmcgPSB0aGlzLmxhYmVscy5kYXRlRm9ybWF0U3RyaW5nKCk7XG4gICAgY29uc3QgZGF0ZUZvcm1hdFJlZ2V4ID0gLyhcXHcrKVtcXC98XFwufFxcLV0oXFx3KylbXFwvfFxcLnxcXC1dKFxcdyspL2dpO1xuICAgIGNvbnN0IGRhdGVWYWx1ZVJlZ2V4ID0gLyhcXGQrKVtcXC98XFwufFxcLV0oXFxkKylbXFwvfFxcLnxcXC1dKFxcZCspL2dpO1xuICAgIGxldCBkYXRlRm9ybWF0VG9rZW5zOiBBcnJheTxzdHJpbmc+O1xuICAgIGxldCBkYXRlVmFsdWVUb2tlbnM6IEFycmF5PHN0cmluZz47XG4gICAgbGV0IHllYXI6IG51bWJlcjtcbiAgICBsZXQgbW9udGg6IG51bWJlcjtcbiAgICBsZXQgZGF5OiBudW1iZXI7XG4gICAgbGV0IGRhdGU6IERhdGUgPSBuZXcgRGF0ZSgpO1xuICAgIGxldCBpc0ludmFsaWREYXRlID0gdHJ1ZTtcbiAgICBpZiAoSGVscGVycy5pc0VtcHR5KGRhdGVGb3JtYXQpKSB7XG4gICAgICAvLyBEZWZhdWx0IHRvIE1NL2RkL3l5eXlcbiAgICAgIGRhdGVGb3JtYXQgPSAnbW0vZGQveXl5eSc7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRhdGVGb3JtYXQgPSBkYXRlRm9ybWF0LnRvTG93ZXJDYXNlKCk7XG4gICAgfVxuICAgIGRhdGVGb3JtYXRUb2tlbnMgPSBkYXRlRm9ybWF0UmVnZXguZXhlYyhkYXRlRm9ybWF0KTtcbiAgICBkYXRlVmFsdWVUb2tlbnMgPSBkYXRlVmFsdWVSZWdleC5leGVjKGRhdGVTdHJpbmcpO1xuICAgIGlmIChkYXRlRm9ybWF0VG9rZW5zICYmIGRhdGVGb3JtYXRUb2tlbnMubGVuZ3RoID09PSA0ICYmIGRhdGVWYWx1ZVRva2VucyAmJiBkYXRlVmFsdWVUb2tlbnMubGVuZ3RoID09PSA0KSB7XG4gICAgICBmb3IgKGxldCBpID0gMTsgaSA8IDQ7IGkrKykge1xuICAgICAgICBpZiAoZGF0ZUZvcm1hdFRva2Vuc1tpXS5pbmNsdWRlcygnbScpKSB7XG4gICAgICAgICAgbW9udGggPSBwYXJzZUludChkYXRlVmFsdWVUb2tlbnNbaV0sIDEwKSAtIDE7XG4gICAgICAgIH0gZWxzZSBpZiAoZGF0ZUZvcm1hdFRva2Vuc1tpXS5pbmNsdWRlcygnZCcpKSB7XG4gICAgICAgICAgZGF5ID0gcGFyc2VJbnQoZGF0ZVZhbHVlVG9rZW5zW2ldLCAxMCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgeWVhciA9IHBhcnNlSW50KGRhdGVWYWx1ZVRva2Vuc1tpXSwgMTApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAobW9udGggPj0gMCAmJiBtb250aCA8PSAxMSAmJiB5ZWFyID4gMTkwMCAmJiBkYXkgPiAwICYmIGRheSA8PSAzMSkge1xuICAgICAgICBkYXRlID0gbmV3IERhdGUoeWVhciwgbW9udGgsIGRheSk7XG4gICAgICAgIGlzSW52YWxpZERhdGUgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGRhdGVGb3JtYXRUb2tlbnMgJiYgZGF0ZUZvcm1hdFRva2Vucy5sZW5ndGggPT09IDQgJiYgZGF0ZVN0cmluZy5sZW5ndGggPj0gMSkge1xuICAgICAgY29uc3QgdHdvVG9rZW5zID0gL1xcZHsxLDR9KFxcL3xcXC58XFwtKShcXGR7MSwyfSkvLmV4ZWMoZGF0ZVN0cmluZyk7XG4gICAgICBjb25zdCBvbmVUb2tlbiA9IC9eKFxcZHsxLDR9KSQvLmV4ZWMoZGF0ZVN0cmluZyk7XG4gICAgICBjb25zdCBkZWxpbWl0ZXIgPSAvXFx3KyhcXC98XFwufFxcLSlcXHcrW1xcL3xcXC58XFwtXVxcdysvZ2kuZXhlYyhkYXRlRm9ybWF0KTtcbiAgICAgIGNvbnN0IGRhdGVTdHJpbmdXaXRoRGVsaW1pdGVyID0gZGF0ZVN0cmluZ1tkYXRlU3RyaW5nLmxlbmd0aCAtIDFdLm1hdGNoKC9cXC98XFwufFxcLS8pO1xuICAgICAgaWYgKHR3b1Rva2VucyAmJiB0d29Ub2tlbnMubGVuZ3RoID09PSAzICYmIHRoaXMuaXNWYWxpZERhdGVQYXJ0KHR3b1Rva2Vuc1syXSwgZGF0ZUZvcm1hdFRva2Vuc1syXSkgJiYgIWRhdGVTdHJpbmdXaXRoRGVsaW1pdGVyKSB7XG4gICAgICAgIGRhdGVTdHJpbmcgPSBgJHtkYXRlU3RyaW5nfSR7ZGVsaW1pdGVyWzFdfWA7XG4gICAgICB9IGVsc2UgaWYgKG9uZVRva2VuICYmIG9uZVRva2VuLmxlbmd0aCA9PT0gMiAmJiB0aGlzLmlzVmFsaWREYXRlUGFydChvbmVUb2tlblsxXSwgZGF0ZUZvcm1hdFRva2Vuc1sxXSkgJiYgIWRhdGVTdHJpbmdXaXRoRGVsaW1pdGVyKSB7XG4gICAgICAgIGRhdGVTdHJpbmcgPSBgJHtkYXRlU3RyaW5nfSR7ZGVsaW1pdGVyWzFdfWA7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBbZGF0ZSwgZGF0ZVN0cmluZywgaXNJbnZhbGlkRGF0ZV07XG4gIH1cblxuICBwYXJzZVRpbWVTdHJpbmcodGltZVN0cmluZzogc3RyaW5nLCBtaWxpdGFyeVRpbWU6IGJvb2xlYW4pOiBbRGF0ZSwgc3RyaW5nXSB7XG4gICAgY29uc3QgdmFsdWU6IERhdGUgPSBuZXcgRGF0ZSgpO1xuICAgIGxldCB0aW1lU3RyaW5nUGFydHM6IEFycmF5PHN0cmluZz47XG4gICAgbGV0IGFtRm9ybWF0ID0gdGhpcy5sYWJlbHMudGltZUZvcm1hdEFNO1xuICAgIGxldCBwbUZvcm1hdCA9IHRoaXMubGFiZWxzLnRpbWVGb3JtYXRQTTtcbiAgICBpZiAoISh0aW1lU3RyaW5nICYmIHRpbWVTdHJpbmcuaW5jbHVkZXMoJzonKSkpIHtcbiAgICAgIHJldHVybiBbdmFsdWUsIHRpbWVTdHJpbmddO1xuICAgIH1cbiAgICBpZiAoIW1pbGl0YXJ5VGltZSAmJiBhbUZvcm1hdCAmJiBwbUZvcm1hdCkge1xuICAgICAgbGV0IHNwbGl0czogQXJyYXk8c3RyaW5nPiA9IFtdO1xuICAgICAgbGV0IHBtOiBib29sZWFuID0gZmFsc2U7XG4gICAgICBhbUZvcm1hdCA9IHRoaXMubGFiZWxzLnRpbWVGb3JtYXRBTS50b0xvd2VyQ2FzZSgpO1xuICAgICAgcG1Gb3JtYXQgPSB0aGlzLmxhYmVscy50aW1lRm9ybWF0UE0udG9Mb3dlckNhc2UoKTtcbiAgICAgIHRpbWVTdHJpbmcgPSB0aW1lU3RyaW5nLnRvTG93ZXJDYXNlKCk7XG4gICAgICBpZiAodGltZVN0cmluZy5pbmNsdWRlcyhhbUZvcm1hdCkpIHtcbiAgICAgICAgc3BsaXRzID0gdGltZVN0cmluZy5zcGxpdChhbUZvcm1hdCk7XG4gICAgICB9IGVsc2UgaWYgKHRpbWVTdHJpbmcuaW5jbHVkZXMocG1Gb3JtYXQpKSB7XG4gICAgICAgIHNwbGl0cyA9IHRpbWVTdHJpbmcuc3BsaXQocG1Gb3JtYXQpO1xuICAgICAgICBwbSA9IHRydWU7XG4gICAgICB9XG4gICAgICBpZiAoc3BsaXRzICYmIHNwbGl0cy5sZW5ndGgpIHtcbiAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIHNwbGl0cykge1xuICAgICAgICAgIGlmIChpdGVtICYmIGl0ZW0udHJpbSgpLmluY2x1ZGVzKCc6JykpIHtcbiAgICAgICAgICAgIHRpbWVTdHJpbmdQYXJ0cyA9IGl0ZW0udHJpbSgpLnNwbGl0KCc6Jyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAodGltZVN0cmluZ1BhcnRzICYmIHRpbWVTdHJpbmdQYXJ0cy5sZW5ndGggJiYgdGltZVN0cmluZ1BhcnRzLmxlbmd0aCA9PT0gMikge1xuICAgICAgICBsZXQgaG91cnM6IG51bWJlciA9IHBhcnNlSW50KHRpbWVTdHJpbmdQYXJ0c1swXSwgMTApO1xuICAgICAgICBpZiAoaG91cnMgPT09IDEyICYmIHBtKSB7XG4gICAgICAgICAgaG91cnMgPSAxMjtcbiAgICAgICAgfSBlbHNlIGlmIChwbSkge1xuICAgICAgICAgIGhvdXJzID0gaG91cnMgKyAxMjtcbiAgICAgICAgfSBlbHNlIGlmIChob3VycyA9PT0gMTIpIHtcbiAgICAgICAgICBob3VycyA9IDA7XG4gICAgICAgIH1cbiAgICAgICAgdmFsdWUuc2V0SG91cnMoaG91cnMpO1xuICAgICAgICB2YWx1ZS5zZXRNaW51dGVzKHBhcnNlSW50KHRpbWVTdHJpbmdQYXJ0c1sxXSwgMTApKTtcbiAgICAgICAgdmFsdWUuc2V0U2Vjb25kcygwKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGltZVN0cmluZ1BhcnRzID0gLyhcXGR7MSwyfSk6KFxcZHsyfSkvLmV4ZWModGltZVN0cmluZyk7XG4gICAgICBpZiAodGltZVN0cmluZ1BhcnRzICYmIHRpbWVTdHJpbmdQYXJ0cy5sZW5ndGggJiYgdGltZVN0cmluZ1BhcnRzLmxlbmd0aCA9PT0gMykge1xuICAgICAgICB2YWx1ZS5zZXRIb3VycyhwYXJzZUludCh0aW1lU3RyaW5nUGFydHNbMV0sIDEwKSk7XG4gICAgICAgIHZhbHVlLnNldE1pbnV0ZXMocGFyc2VJbnQodGltZVN0cmluZ1BhcnRzWzJdLCAxMCkpO1xuICAgICAgICB2YWx1ZS5zZXRTZWNvbmRzKDApO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gW3ZhbHVlLCB0aW1lU3RyaW5nXTtcbiAgfVxuXG4gIHBhcnNlU3RyaW5nKGRhdGVUaW1lU3RyaW5nOiBzdHJpbmcsIG1pbGl0YXJ5VGltZTogYm9vbGVhbiwgdHlwZTogc3RyaW5nKTogW0RhdGUsIHN0cmluZywgYm9vbGVhbj9dIHtcbiAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgIGNhc2UgJ2RhdGV0aW1lJzpcbiAgICAgICAgY29uc3Qgc3RyID0gZGF0ZVRpbWVTdHJpbmcucmVwbGFjZSgvLS9nLCAnLycpO1xuICAgICAgICBjb25zdCBwYXJ0cyA9IHN0ci5zcGxpdCgnICcpO1xuICAgICAgICBjb25zdCBbZHQsIGR0c10gPSB0aGlzLnBhcnNlRGF0ZVN0cmluZyhwYXJ0c1swXSk7XG4gICAgICAgIGlmIChwYXJ0cy5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgY29uc3QgW3RtLCB0bXNdID0gdGhpcy5wYXJzZVRpbWVTdHJpbmcocGFydHNbMV0sIG1pbGl0YXJ5VGltZSk7XG4gICAgICAgICAgcmV0dXJuIFtuZXcgRGF0ZShkdC5zZXRIb3Vycyh0bS5nZXRIb3VycygpLCB0bS5nZXRNaW51dGVzKCkpKSwgYCR7ZHRzfSAke3Rtc31gXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gW2R0LCBkdHNdO1xuICAgICAgY2FzZSAnZGF0ZSc6XG4gICAgICAgIHJldHVybiB0aGlzLnBhcnNlRGF0ZVN0cmluZyhkYXRlVGltZVN0cmluZyk7XG4gICAgICBjYXNlICd0aW1lJzpcbiAgICAgICAgcmV0dXJuIHRoaXMucGFyc2VUaW1lU3RyaW5nKGRhdGVUaW1lU3RyaW5nLCBtaWxpdGFyeVRpbWUpO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxuXG4gIGlzVmFsaWREYXRlUGFydCh2YWx1ZTogc3RyaW5nLCBmb3JtYXQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGRhdGVQYXJ0ID0gcGFyc2VJbnQodmFsdWUsIDEwKTtcbiAgICBpZiAoZm9ybWF0LmluY2x1ZGVzKCdtJykgJiYgKGRhdGVQYXJ0ID49IDIgfHwgdmFsdWUubGVuZ3RoID09PSAyKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBlbHNlIGlmIChmb3JtYXQuaW5jbHVkZXMoJ2QnKSAmJiAoZGF0ZVBhcnQgPj0gNCB8fCB2YWx1ZS5sZW5ndGggPT09IDIpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2UgaWYgKGZvcm1hdC5pbmNsdWRlcygneScpICYmIGRhdGVQYXJ0ID49IDEwMDApIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cbiJdfQ==
298
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGF0ZUZvcm1hdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25vdm8tZWxlbWVudHMvc3JjL3NlcnZpY2VzL2RhdGUtZm9ybWF0L0RhdGVGb3JtYXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTTtBQUNOLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDekQsTUFBTTtBQUNOLE9BQU8sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQ2hELE9BQU8sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7QUFHdkUsTUFBTSxPQUFPLGlCQUFpQjtJQUM1QixZQUFvQixNQUF3QjtRQUF4QixXQUFNLEdBQU4sTUFBTSxDQUFrQjtJQUFHLENBQUM7SUFFaEQsV0FBVyxDQUFDLFlBQXFCO1FBQy9CLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3hELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3hELE1BQU0sSUFBSSxHQUFHO1lBQ1gsSUFBSSxFQUFFLElBQUk7WUFDVixPQUFPLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFVBQVU7WUFDNUMsU0FBUyxFQUFFLElBQUk7WUFDZixPQUFPLEVBQUUsSUFBSTtZQUNiLElBQUksRUFBRSxLQUFLO1lBQ1gsR0FBRyxFQUFFLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3pCLEdB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SUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsQ0FBQztZQUNyRSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDL0QsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLFFBQVEsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ2hELENBQUM7OytHQXZSVSxpQkFBaUI7bUhBQWpCLGlCQUFpQjs0RkFBakIsaUJBQWlCO2tCQUQ3QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiLy8gTkcyXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOb3ZvTGFiZWxTZXJ2aWNlIH0gZnJvbSAnLi4vbm92by1sYWJlbC1zZXJ2aWNlJztcbi8vIEFQUFxuaW1wb3J0IHsgZm9ybWF0LCBwYXJzZSB9IGZyb20gJ2RhdGUtZm5zJztcbmltcG9ydCB7IE1hc2tlZEVudW0sIE1hc2tlZFJhbmdlIH0gZnJvbSAnaW1hc2snO1xuaW1wb3J0IHsgRGF0ZVV0aWwsIEhlbHBlcnMsIGNvbnZlcnRUb2tlbnMgfSBmcm9tICdub3ZvLWVsZW1lbnRzL3V0aWxzJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIERhdGVGb3JtYXRTZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBsYWJlbHM6IE5vdm9MYWJlbFNlcnZpY2UpIHt9XG5cbiAgZ2V0VGltZU1hc2sobWlsaXRhcnlUaW1lOiBib29sZWFuKSB7XG4gICAgY29uc3QgYW1Gb3JtYXQgPSB0aGlzLmxhYmVscy50aW1lRm9ybWF0QU0udG9VcHBlckNhc2UoKTtcbiAgICBjb25zdCBwbUZvcm1hdCA9IHRoaXMubGFiZWxzLnRpbWVGb3JtYXRQTS50b1VwcGVyQ2FzZSgpO1xuICAgIGNvbnN0IG1hc2sgPSB7XG4gICAgICBtYXNrOiBEYXRlLFxuICAgICAgcGF0dGVybjogbWlsaXRhcnlUaW1lID8gJ0hIOm1tJyA6ICdoaDptbSBhYScsXG4gICAgICBvdmVyd3JpdGU6IHRydWUsXG4gICAgICBhdXRvZml4OiB0cnVlLFxuICAgICAgbGF6eTogZmFsc2UsXG4gICAgICBtaW46IG5ldyBEYXRlKDE5NzAsIDAsIDEpLFxuICAgICAgbWF4OiBuZXcgRGF0ZSgyMDMwLCAwLCAxKSxcbiAgICAgIHByZXBhcmUoc3RyKSB7XG4gICAgICAgIHJldHVybiBzdHIudG9VcHBlckNhc2UoKTtcbiAgICAgIH0sXG4gICAgICBmb3JtYXQoZGF0ZSkge1xuICAgICAgICByZXR1cm4gRGF0ZVV0aWwuZm9ybWF0KGRhdGUsIG1pbGl0YXJ5VGltZSA/ICdISDptbScgOiAnaGg6bW0gQScpO1xuICAgICAgfSxcbiAgICAgIHBhcnNlOiAoc3RyKSA9PiB7XG4gICAgICAgIGNvbnN0IHRpbWUgPSBtaWxpdGFyeVRpbWUgPyBzdHIgOiB0aGlzLmNvbnZlcnRUaW1lMTJ0bzI0KHN0cik7XG4gICAgICAgIHJldHVybiBEYXRlVXRpbC5wYXJzZShgJHtEYXRlVXRpbC5mb3JtYXQoRGF0ZS5ub3coKSwgJ1lZWVktTU0tREQnKX1UJHt0aW1lfWApO1xuICAgICAgfSxcbiAgICAgIGJsb2Nrczoge1xuICAgICAgICBISDoge1xuICAgICAgICAgIG1hc2s6IE1hc2tlZFJhbmdlLFxuICAgICAgICAgIHBsYWNlaG9sZGVyQ2hhcjogJ0gnLFxuICAgICAgICAgIG1heExlbmd0aDogMixcbiAgICAgICAgICBmcm9tOiAwLFxuICAgICAgICAgIHRvOiAyMyxcbiAgICAgICAgfSxcbiAgICAgICAgaGg6IHtcbiAgICAgICAgICBtYXNrOiBNYXNrZWRSYW5nZSxcbiAgICAgICAgICBwbGFjZWhvbGRlckNoYXI6ICdoJyxcbiAgICAgICAgICBtYXhMZW5ndGg6IDIsXG4gICAgICAgICAgZnJvbTogMSxcbiAgICAgICAgICB0bzogMTIsXG4gICAgICAgIH0sXG4gICAgICAgIG1tOiB7XG4gICAgICAgICAgbWFzazogTWFza2VkUmFuZ2UsXG4gICAgICAgICAgcGxhY2Vob2xkZXJDaGFyOiAnbScsXG4gICAgICAgICAgbWF4TGVuZ3RoOiAyLFxuICAgICAgICAgIGZyb206IDAsXG4gICAgICAgICAgdG86IDU5LFxuICAgICAgICB9LFxuICAgICAgICBhYToge1xuICAgICAgICAgIG1hc2s6IE1hc2tlZEVudW0sXG4gICAgICAgICAgcGxhY2Vob2xkZXJDaGFyOiAneCcsXG4gICAgICAgICAgZW51bTogWydBTScsICdQTScsICdhbScsICdwbScsIGFtRm9ybWF0LCBwbUZvcm1hdF0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH07XG4gICAgcmV0dXJuIG1hc2s7XG4gIH1cblxuICBnZXREYXRlTWFzayhmb3JtYXQ/OiBzdHJpbmcpIHtcbiAgICBjb25zdCBtYXNrID0ge1xuICAgICAgbWFzazogRGF0ZSxcbiAgICAgIHBhdHRlcm46ICdtL2BkL2BZJyxcbiAgICAgIG92ZXJ3cml0ZTogdHJ1ZSxcbiAgICAgIGF1dG9maXg6ICdwYWQnLFxuICAgICAgbWluOiBuZXcgRGF0ZSgxOTcwLCAwLCAxKSxcbiAgICAgIG1heDogbmV3IERhdGUoMjAzMCwgMCwgMSksXG4gICAgICBwcmVwYXJlKHN0cikge1xuICAgICAgICByZXR1cm4gc3RyLnRvVXBwZXJDYXNlKCk7XG4gICAgICB9LFxuICAgICAgZm9ybWF0KGRhdGUpIHtcbiAgICAgICAgcmV0dXJuIERhdGVVdGlsLmZvcm1hdChkYXRlLCBmb3JtYXQgfHwgJ01NL0REL1lZWVknKTtcbiAgICAgIH0sXG4gICAgICBwYXJzZTogKHN0cikgPT4ge1xuICAgICAgICByZXR1cm4gRGF0ZVV0aWwucGFyc2Uoc3RyKTtcbiAgICAgIH0sXG4gICAgfVxuICAgIHJldHVybiBtYXNrO1xuICB9XG5cbiAgZ2V0RGF0ZVRpbWVNYXNrKG1pbGl0YXJ5VGltZTogYm9vbGVhbiA9IGZhbHNlKTogQXJyYXk8YW55PiB7XG4gICAgcmV0dXJuIFt0aGlzLmdldERhdGVNYXNrKCksIC9cXCw/LywgL1xccy8sIHRoaXMuZ2V0VGltZU1hc2sobWlsaXRhcnlUaW1lKV07XG4gIH1cblxuICBnZXRUaW1lUGxhY2VIb2xkZXIobWlsaXRhcnlUaW1lOiBib29sZWFuKTogc3RyaW5nIHtcbiAgICBpZiAobWlsaXRhcnlUaW1lKSB7XG4gICAgICByZXR1cm4gdGhpcy5sYWJlbHMudGltZUZvcm1hdFBsYWNlaG9sZGVyMjRIb3VyO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5sYWJlbHMudGltZUZvcm1hdFBsYWNlaG9sZGVyQU07XG4gIH1cblxuICBwYXJzZUN1c3RvbURhdGVTdHJpbmcoZGF0ZVN0cmluZzogc3RyaW5nLCBjdXN0b21Gb3JtYXQ/OiBzdHJpbmcpOiBbRGF0ZSwgc3RyaW5nLCBib29sZWFuXSB7XG4gICAgbGV0IGlzSW52YWxpZERhdGUgPSB0cnVlO1xuICAgIGxldCBkYXRlOiBEYXRlID0gbnVsbDtcbiAgICBpZiAoIWN1c3RvbUZvcm1hdCkge1xuICAgICAgY3VzdG9tRm9ybWF0ID0gdGhpcy5sYWJlbHMuZGF0ZUZvcm1hdFN0cmluZygpO1xuICAgIH1cbiAgICBjdXN0b21Gb3JtYXQgPSBjb252ZXJ0VG9rZW5zKGN1c3RvbUZvcm1hdCk7XG4gICAgY29uc3QgW2NsZWFuRGF0ZVN0cmluZywgY2xlYW5Gb3JtYXRdID0gdGhpcy5yZW1vdmVOb25zdGFuZGFyZEZvcm1hdENoYXJhY3RlcnMoZGF0ZVN0cmluZywgY3VzdG9tRm9ybWF0KTtcbiAgICB0cnkge1xuICAgICAgZGF0ZSA9IHBhcnNlKGNsZWFuRGF0ZVN0cmluZywgY2xlYW5Gb3JtYXQsIG5ldyBEYXRlKCksIHtcbiAgICAgICAgdXNlQWRkaXRpb25hbFdlZWtZZWFyVG9rZW5zOiBmYWxzZVxuICAgICAgfSk7XG4gICAgICBpZiAoaXNOYU4oZGF0ZS5nZXRUaW1lKCkpKSB7XG4gICAgICAgIGRhdGUgPSBudWxsO1xuICAgICAgfSBlbHNlIGlmIChjbGVhbkRhdGVTdHJpbmcgIT09IGRhdGVTdHJpbmcpIHtcbiAgICAgICAgLy8gVmVyaWZ5IHRoYXQgdGhpcyBwYXJzZSBtYXRjaGVzIHRoZSBvcmlnaW5hbCBkYXRlU3RyaW5nIHRocm91Z2ggdGhpcyBmb3JtYXQuIElmIG5vdCwgdGhlbiBzb21ldGhpbmcgbWF5IGhhdmUgbWlzbWF0Y2hlZCAtXG4gICAgICAgIC8vIGluIHdoaWNoIGNhc2Ugd2UgY29uc2lkZXIgdGhlIGRhdGUgdG8gYmUgaW52YWxpZC5cbiAgICAgICAgLy8gRm9yIGluc3RhbmNlLCBpZiB3ZSBwYXJzZWQgXCJGcmkgT2N0IDE4LCAyMDIzXCIgYXMgXCIgT2N0IDE4IDIwMjNcIiAocmVtb3ZpbmcgdGhlIGR1cGxpY2F0aXZlIGRheS1vZi13ZWVrKSB0aGVuIGl0XG4gICAgICAgIC8vIHdvdWxkIHJlLWZvcm1hdCBhcyBcIldlZCBPY3QgMTggMjAyM1wiIGFuZCBpcyBhbiBpbnZhbGlkIGRhdGUuXG4gICAgICAgIGNvbnN0IHJlZm9ybWF0dGVkRGF0ZSA9IGZvcm1hdChkYXRlLCBjdXN0b21Gb3JtYXQpO1xuICAgICAgICBpZiAocmVmb3JtYXR0ZWREYXRlICE9PSBkYXRlU3RyaW5nKSB7XG4gICAgICAgICAgZGF0ZSA9IG51bGw7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaXNJbnZhbGlkRGF0ZSA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpc0ludmFsaWREYXRlID0gZmFsc2U7XG4gICAgICB9XG4gICAgfSBjYXRjaChlcnIpIHtcbiAgICAgIC8vIGlnbm9yZSBlcnJvciAtIGtlZXAgaXNJbnZhbGlkRGF0ZSB0cnVlIGFuZCBkYXRlIG51bGxcbiAgICB9XG4gICAgcmV0dXJuIFtkYXRlLCBkYXRlU3RyaW5nLCBpc0ludmFsaWREYXRlXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDZXJ0YWluIGRhdGUgZm9ybWF0IGNoYXJhY3RlcnMgYXJlIGNvbnNpZGVyZWQgbm9uc3RhbmRhcmQuIFdlIGNhbiBzdGlsbCB1c2UgdGhlbSwgYnV0IHJlbW92ZSB0aGVtIGZvciBkYXRlIHBhcnNpbmcgdG8gYXZvaWQgZXJyb3JzXG4gICAqIEBwYXJhbSBkYXRlU3RyaW5nIFxuICAgKiBAcGFyYW0gZm9ybWF0IFxuICAgKiBAcmV0dXJucyBkYXRlIHN0cmluZyBhbmQgZm9ybWF0IGluIGFycmF5LCBib3RoIGhhdmluZyBoYWQgdGhlaXIgXG4gICAqL1xuICBwcml2YXRlIHJlbW92ZU5vbnN0YW5kYXJkRm9ybWF0Q2hhcmFjdGVycyhkYXRlU3RyaW5nOiBzdHJpbmcsIGZvcm1hdDogc3RyaW5nKTogW3N0cmluZywgc3RyaW5nXSB7XG4gICAgY29uc3QgYmFubmVkQ2hhcnMgPSAvW2lJUm9QcF0rLztcbiAgICAvLyByZW1vdmUgcXVvdGVzXG4gICAgZm9ybWF0ID0gZm9ybWF0LnJlcGxhY2UoL1snXCJdL2csICcnKTtcbiAgICBsZXQgbWF0Y2g6IFJlZ0V4cEV4ZWNBcnJheSA9IG51bGw7XG4gICAgd2hpbGUgKChtYXRjaCA9IGJhbm5lZENoYXJzLmV4ZWMoZm9ybWF0KSkgIT0gbnVsbCkge1xuICAgICAgZm9ybWF0ID0gZm9ybWF0LnN1YnN0cmluZygwLCBtYXRjaC5pbmRleCkgKyBmb3JtYXQuc3Vic3RyaW5nKG1hdGNoLmluZGV4ICsgbWF0Y2hbMF0ubGVuZ3RoKTtcbiAgICAgIGRhdGVTdHJpbmcgPSBkYXRlU3RyaW5nLnN1YnN0cmluZygwLCBtYXRjaC5pbmRleCkgKyBkYXRlU3RyaW5nLnN1YnN0cmluZyhtYXRjaC5pbmRleCArIG1hdGNoWzBdLmxlbmd0aCk7XG4gICAgfVxuICAgIHJldHVybiBbZGF0ZVN0cmluZywgZm9ybWF0XTtcbiAgfVxuXG4gIHBhcnNlRGF0ZVN0cmluZyhkYXRlU3RyaW5nOiBzdHJpbmcpOiBbRGF0ZSwgc3RyaW5nLCBib29sZWFuXSB7XG4gICAgbGV0IGRhdGVGb3JtYXQ6IHN0cmluZyA9IHRoaXMubGFiZWxzLmRhdGVGb3JtYXRTdHJpbmcoKTtcbiAgICBjb25zdCBkYXRlRm9ybWF0UmVnZXggPSAvKFxcdyspW1xcL3xcXC58XFwtXShcXHcrKVtcXC98XFwufFxcLV0oXFx3KykvZ2k7XG4gICAgY29uc3QgZGF0ZVZhbHVlUmVnZXggPSAvKFxcZCspW1xcL3xcXC58XFwtXShcXGQrKVtcXC98XFwufFxcLV0oXFxkKykvZ2k7XG4gICAgbGV0IGRhdGVGb3JtYXRUb2tlbnM6IEFycmF5PHN0cmluZz47XG4gICAgbGV0IGRhdGVWYWx1ZVRva2VuczogQXJyYXk8c3RyaW5nPjtcbiAgICBsZXQgeWVhcjogbnVtYmVyO1xuICAgIGxldCBtb250aDogbnVtYmVyO1xuICAgIGxldCBkYXk6IG51bWJlcjtcbiAgICBsZXQgZGF0ZTogRGF0ZSA9IG51bGw7XG4gICAgbGV0IGlzSW52YWxpZERhdGUgPSB0cnVlO1xuICAgIGlmIChIZWxwZXJzLmlzRW1wdHkoZGF0ZUZvcm1hdCkpIHtcbiAgICAgIC8vIERlZmF1bHQgdG8gTU0vZGQveXl5eVxuICAgICAgZGF0ZUZvcm1hdCA9ICdtbS9kZC95eXl5JztcbiAgICB9IGVsc2Uge1xuICAgICAgZGF0ZUZvcm1hdCA9IGRhdGVGb3JtYXQudG9Mb3dlckNhc2UoKTtcbiAgICB9XG4gICAgZGF0ZUZvcm1hdFRva2VucyA9IGRhdGVGb3JtYXRSZWdleC5leGVjKGRhdGVGb3JtYXQpO1xuICAgIGRhdGVWYWx1ZVRva2VucyA9IGRhdGVWYWx1ZVJlZ2V4LmV4ZWMoZGF0ZVN0cmluZyk7XG4gICAgaWYgKGRhdGVGb3JtYXRUb2tlbnMgJiYgZGF0ZUZvcm1hdFRva2Vucy5sZW5ndGggPT09IDQgJiYgZGF0ZVZhbHVlVG9rZW5zICYmIGRhdGVWYWx1ZVRva2Vucy5sZW5ndGggPT09IDQpIHtcbiAgICAgIGZvciAobGV0IGkgPSAxOyBpIDwgNDsgaSsrKSB7XG4gICAgICAgIGlmIChkYXRlRm9ybWF0VG9rZW5zW2ldLmluY2x1ZGVzKCdtJykpIHtcbiAgICAgICAgICBtb250aCA9IHBhcnNlSW50KGRhdGVWYWx1ZVRva2Vuc1tpXSwgMTApIC0gMTtcbiAgICAgICAgfSBlbHNlIGlmIChkYXRlRm9ybWF0VG9rZW5zW2ldLmluY2x1ZGVzKCdkJykpIHtcbiAgICAgICAgICBkYXkgPSBwYXJzZUludChkYXRlVmFsdWVUb2tlbnNbaV0sIDEwKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB5ZWFyID0gcGFyc2VJbnQoZGF0ZVZhbHVlVG9rZW5zW2ldLCAxMCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChtb250aCA+PSAwICYmIG1vbnRoIDw9IDExICYmIHllYXIgPiAxOTAwICYmIGRheSA+IDAgJiYgZGF5IDw9IDMxKSB7XG4gICAgICAgIGRhdGUgPSBuZXcgRGF0ZSh5ZWFyLCBtb250aCwgZGF5KTtcbiAgICAgICAgaXNJbnZhbGlkRGF0ZSA9IGZhbHNlO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoZGF0ZUZvcm1hdFRva2VucyAmJiBkYXRlRm9ybWF0VG9rZW5zLmxlbmd0aCA9PT0gNCAmJiBkYXRlU3RyaW5nLmxlbmd0aCA+PSAxKSB7XG4gICAgICBjb25zdCB0d29Ub2tlbnMgPSAvXFxkezEsNH0oXFwvfFxcLnxcXC0pKFxcZHsxLDJ9KS8uZXhlYyhkYXRlU3RyaW5nKTtcbiAgICAgIGNvbnN0IG9uZVRva2VuID0gL14oXFxkezEsNH0pJC8uZXhlYyhkYXRlU3RyaW5nKTtcbiAgICAgIGNvbnN0IGRlbGltaXRlciA9IC9cXHcrKFxcL3xcXC58XFwtKVxcdytbXFwvfFxcLnxcXC1dXFx3Ky9naS5leGVjKGRhdGVGb3JtYXQpO1xuICAgICAgY29uc3QgZGF0ZVN0cmluZ1dpdGhEZWxpbWl0ZXIgPSBkYXRlU3RyaW5nW2RhdGVTdHJpbmcubGVuZ3RoIC0gMV0ubWF0Y2goL1xcL3xcXC58XFwtLyk7XG4gICAgICBpZiAoKHR3b1Rva2VucyAmJiB0d29Ub2tlbnMubGVuZ3RoID09PSAzICYmIHRoaXMuaXNWYWxpZERhdGVQYXJ0KHR3b1Rva2Vuc1syXSwgZGF0ZUZvcm1hdFRva2Vuc1syXSkgJiYgIWRhdGVTdHJpbmdXaXRoRGVsaW1pdGVyKSB8fFxuICAgICAgICAob25lVG9rZW4gJiYgb25lVG9rZW4ubGVuZ3RoID09PSAyICYmIHRoaXMuaXNWYWxpZERhdGVQYXJ0KG9uZVRva2VuWzFdLCBkYXRlRm9ybWF0VG9rZW5zWzFdKSAmJiAhZGF0ZVN0cmluZ1dpdGhEZWxpbWl0ZXIpKSB7XG4gICAgICAgIGRhdGVTdHJpbmcgPSBgJHtkYXRlU3RyaW5nfSR7ZGVsaW1pdGVyWzFdfWA7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBbZGF0ZSwgZGF0ZVN0cmluZywgaXNJbnZhbGlkRGF0ZV07XG4gIH1cblxuICBwYXJzZVRpbWVTdHJpbmcodGltZVN0cmluZzogc3RyaW5nLCBtaWxpdGFyeVRpbWU6IGJvb2xlYW4pOiBbRGF0ZSwgc3RyaW5nXSB7XG4gICAgY29uc3QgdmFsdWU6IERhdGUgPSBuZXcgRGF0ZSgpO1xuICAgIGxldCB0aW1lU3RyaW5nUGFydHM6IEFycmF5PHN0cmluZz47XG4gICAgbGV0IGFtRm9ybWF0ID0gdGhpcy5sYWJlbHMudGltZUZvcm1hdEFNO1xuICAgIGxldCBwbUZvcm1hdCA9IHRoaXMubGFiZWxzLnRpbWVGb3JtYXRQTTtcbiAgICBpZiAoISh0aW1lU3RyaW5nPy5pbmNsdWRlcygnOicpKSkge1xuICAgICAgcmV0dXJuIFt2YWx1ZSwgdGltZVN0cmluZ107XG4gICAgfVxuICAgIGlmICghbWlsaXRhcnlUaW1lICYmIGFtRm9ybWF0ICYmIHBtRm9ybWF0KSB7XG4gICAgICBsZXQgc3BsaXRzOiBBcnJheTxzdHJpbmc+ID0gW107XG4gICAgICBsZXQgcG06IGJvb2xlYW4gPSBmYWxzZTtcbiAgICAgIGFtRm9ybWF0ID0gdGhpcy5sYWJlbHMudGltZUZvcm1hdEFNLnRvTG93ZXJDYXNlKCk7XG4gICAgICBwbUZvcm1hdCA9IHRoaXMubGFiZWxzLnRpbWVGb3JtYXRQTS50b0xvd2VyQ2FzZSgpO1xuICAgICAgdGltZVN0cmluZyA9IHRpbWVTdHJpbmcudG9Mb3dlckNhc2UoKTtcbiAgICAgIGlmICh0aW1lU3RyaW5nLmluY2x1ZGVzKGFtRm9ybWF0KSkge1xuICAgICAgICBzcGxpdHMgPSB0aW1lU3RyaW5nLnNwbGl0KGFtRm9ybWF0KTtcbiAgICAgIH0gZWxzZSBpZiAodGltZVN0cmluZy5pbmNsdWRlcyhwbUZvcm1hdCkpIHtcbiAgICAgICAgc3BsaXRzID0gdGltZVN0cmluZy5zcGxpdChwbUZvcm1hdCk7XG4gICAgICAgIHBtID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGlmIChzcGxpdHM/Lmxlbmd0aCkge1xuICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2Ygc3BsaXRzKSB7XG4gICAgICAgICAgaWYgKGl0ZW0/LnRyaW0oKS5pbmNsdWRlcygnOicpKSB7XG4gICAgICAgICAgICB0aW1lU3RyaW5nUGFydHMgPSBpdGVtLnRyaW0oKS5zcGxpdCgnOicpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHRpbWVTdHJpbmdQYXJ0cz8ubGVuZ3RoICYmIHRpbWVTdHJpbmdQYXJ0cy5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgbGV0IGhvdXJzOiBudW1iZXIgPSBwYXJzZUludCh0aW1lU3RyaW5nUGFydHNbMF0sIDEwKTtcbiAgICAgICAgaWYgKGhvdXJzID09PSAxMiAmJiBwbSkge1xuICAgICAgICAgIGhvdXJzID0gMTI7XG4gICAgICAgIH0gZWxzZSBpZiAocG0pIHtcbiAgICAgICAgICBob3VycyA9IGhvdXJzICsgMTI7XG4gICAgICAgIH0gZWxzZSBpZiAoaG91cnMgPT09IDEyKSB7XG4gICAgICAgICAgaG91cnMgPSAwO1xuICAgICAgICB9XG4gICAgICAgIHZhbHVlLnNldEhvdXJzKGhvdXJzKTtcbiAgICAgICAgdmFsdWUuc2V0TWludXRlcyhwYXJzZUludCh0aW1lU3RyaW5nUGFydHNbMV0sIDEwKSk7XG4gICAgICAgIHZhbHVlLnNldFNlY29uZHMoMCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRpbWVTdHJpbmdQYXJ0cyA9IC8oXFxkezEsMn0pOihcXGR7Mn0pLy5leGVjKHRpbWVTdHJpbmcpO1xuICAgICAgaWYgKHRpbWVTdHJpbmdQYXJ0cz8ubGVuZ3RoICYmIHRpbWVTdHJpbmdQYXJ0cy5sZW5ndGggPT09IDMpIHtcbiAgICAgICAgdmFsdWUuc2V0SG91cnMocGFyc2VJbnQodGltZVN0cmluZ1BhcnRzWzFdLCAxMCkpO1xuICAgICAgICB2YWx1ZS5zZXRNaW51dGVzKHBhcnNlSW50KHRpbWVTdHJpbmdQYXJ0c1syXSwgMTApKTtcbiAgICAgICAgdmFsdWUuc2V0U2Vjb25kcygwKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIFt2YWx1ZSwgdGltZVN0cmluZ107XG4gIH1cblxuICBwYXJzZVN0cmluZyhkYXRlVGltZVN0cmluZzogc3RyaW5nLCBtaWxpdGFyeVRpbWU6IGJvb2xlYW4sIHR5cGU6IHN0cmluZyk6IFtEYXRlLCBzdHJpbmcsIGJvb2xlYW4/XSB7XG4gICAgaWYgKCEoZGF0ZVRpbWVTdHJpbmc/Lmxlbmd0aCkpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgIGNhc2UgJ2RhdGV0aW1lJzpcbiAgICAgICAgY29uc3Qgc3RyID0gZGF0ZVRpbWVTdHJpbmcucmVwbGFjZSgvLS9nLCAnLycpO1xuICAgICAgICBjb25zdCBwYXJ0cyA9IHN0ci5zcGxpdCgnICcpO1xuICAgICAgICBjb25zdCBbZHQsIGR0c10gPSB0aGlzLnBhcnNlRGF0ZVN0cmluZyhwYXJ0c1swXSk7XG4gICAgICAgIGlmIChwYXJ0cy5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgY29uc3QgW3RtLCB0bXNdID0gdGhpcy5wYXJzZVRpbWVTdHJpbmcocGFydHNbMV0sIG1pbGl0YXJ5VGltZSk7XG4gICAgICAgICAgcmV0dXJuIFtuZXcgRGF0ZShkdC5zZXRIb3Vycyh0bS5nZXRIb3VycygpLCB0bS5nZXRNaW51dGVzKCkpKSwgYCR7ZHRzfSAke3Rtc31gXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gW2R0LCBkdHNdO1xuICAgICAgY2FzZSAnZGF0ZSc6XG4gICAgICAgIHJldHVybiB0aGlzLnBhcnNlRGF0ZVN0cmluZyhkYXRlVGltZVN0cmluZyk7XG4gICAgICBjYXNlICd0aW1lJzpcbiAgICAgICAgcmV0dXJuIHRoaXMucGFyc2VUaW1lU3RyaW5nKGRhdGVUaW1lU3RyaW5nLCBtaWxpdGFyeVRpbWUpO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxuXG4gIGNvbnZlcnRUaW1lMTJ0bzI0KHRpbWUxMmg6IHN0cmluZykge1xuICAgIGNvbnN0IHBtRm9ybWF0ID0gdGhpcy5sYWJlbHMudGltZUZvcm1hdFBNLnRvVXBwZXJDYXNlKCk7XG5cbiAgICBjb25zdCBbdGltZSwgbW9kaWZpZXJdID0gdGltZTEyaC5zcGxpdCgnICcpO1xuICAgIGxldCBbaG91cnMsIG1pbnV0ZXNdID0gdGltZS5zcGxpdCgnOicpO1xuICAgIGlmIChob3VycyA9PT0gJzEyJykge1xuICAgICAgaG91cnMgPSAnMDAnO1xuICAgIH1cbiAgICBpZiAoWydQTScsIHBtRm9ybWF0XS5pbmNsdWRlcyhtb2RpZmllcikpIHtcbiAgICAgIGhvdXJzID0gYCR7cGFyc2VJbnQoaG91cnMsIDEwKSArIDEyfWAucGFkU3RhcnQoMiwgJzAnKTtcbiAgICB9XG4gICAgcmV0dXJuIGAke2hvdXJzfToke21pbnV0ZXN9YDtcbiAgfVxuXG4gIGlzVmFsaWREYXRlUGFydCh2YWx1ZTogc3RyaW5nLCBmb3JtYXQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGRhdGVQYXJ0ID0gcGFyc2VJbnQodmFsdWUsIDEwKTtcbiAgICByZXR1cm4gKChmb3JtYXQuaW5jbHVkZXMoJ20nKSAmJiAoZGF0ZVBhcnQgPj0gMiB8fCB2YWx1ZS5sZW5ndGggPT09IDIpKSB8fFxuICAgICAgKGZvcm1hdC5pbmNsdWRlcygnZCcpICYmIChkYXRlUGFydCA+PSA0IHx8IHZhbHVlLmxlbmd0aCA9PT0gMikpIHx8XG4gICAgICAoZm9ybWF0LmluY2x1ZGVzKCd5JykgJiYgZGF0ZVBhcnQgPj0gMTAwMCkpO1xuICB9XG59XG4iXX0=
@@ -6,6 +6,9 @@ export class BrowserGlobalRef extends GlobalRef {
6
6
  get nativeGlobal() {
7
7
  return window;
8
8
  }
9
+ get nativeWindow() {
10
+ return window;
11
+ }
9
12
  }
10
13
  BrowserGlobalRef.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: BrowserGlobalRef, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
11
14
  BrowserGlobalRef.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: BrowserGlobalRef });
@@ -17,5 +20,8 @@ export class NodeGlobalRef extends GlobalRef {
17
20
  throw new Error(`global doesn't compile for some reason`);
18
21
  // return global as Global;
19
22
  }
23
+ get nativeWindow() {
24
+ throw new Error('Node does not have a window object');
25
+ }
20
26
  }
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2xvYmFsLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ub3ZvLWVsZW1lbnRzL3NyYy9zZXJ2aWNlcy9nbG9iYWwvZ2xvYmFsLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFJM0MsTUFBTSxPQUFnQixTQUFTO0NBRTlCO0FBR0QsTUFBTSxPQUFPLGdCQUFpQixTQUFRLFNBQVM7SUFDN0MsSUFBSSxZQUFZO1FBQ2QsT0FBTyxNQUFnQixDQUFDO0lBQzFCLENBQUM7OzhHQUhVLGdCQUFnQjtrSEFBaEIsZ0JBQWdCOzRGQUFoQixnQkFBZ0I7a0JBRDVCLFVBQVU7O0FBTVgsTUFBTSxPQUFPLGFBQWMsU0FBUSxTQUFTO0lBQzFDLElBQUksWUFBWTtRQUNkLE1BQU0sSUFBSSxLQUFLLENBQUMsd0NBQXdDLENBQUMsQ0FBQztRQUMxRCwyQkFBMkI7SUFDN0IsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEdsb2JhbCB7fVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgR2xvYmFsUmVmIHtcbiAgYWJzdHJhY3QgZ2V0IG5hdGl2ZUdsb2JhbCgpOiBHbG9iYWw7XG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBCcm93c2VyR2xvYmFsUmVmIGV4dGVuZHMgR2xvYmFsUmVmIHtcbiAgZ2V0IG5hdGl2ZUdsb2JhbCgpOiBHbG9iYWwge1xuICAgIHJldHVybiB3aW5kb3cgYXMgR2xvYmFsO1xuICB9XG59XG5leHBvcnQgY2xhc3MgTm9kZUdsb2JhbFJlZiBleHRlbmRzIEdsb2JhbFJlZiB7XG4gIGdldCBuYXRpdmVHbG9iYWwoKTogR2xvYmFsIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYGdsb2JhbCBkb2Vzbid0IGNvbXBpbGUgZm9yIHNvbWUgcmVhc29uYCk7XG4gICAgLy8gcmV0dXJuIGdsb2JhbCBhcyBHbG9iYWw7XG4gIH1cbn1cbiJdfQ==
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2xvYmFsLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ub3ZvLWVsZW1lbnRzL3NyYy9zZXJ2aWNlcy9nbG9iYWwvZ2xvYmFsLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFJM0MsTUFBTSxPQUFnQixTQUFTO0NBRzlCO0FBR0QsTUFBTSxPQUFPLGdCQUFpQixTQUFRLFNBQVM7SUFDN0MsSUFBSSxZQUFZO1FBQ2QsT0FBTyxNQUFnQixDQUFDO0lBQzFCLENBQUM7SUFDRCxJQUFJLFlBQVk7UUFDZCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDOzs4R0FOVSxnQkFBZ0I7a0hBQWhCLGdCQUFnQjs0RkFBaEIsZ0JBQWdCO2tCQUQ1QixVQUFVOztBQVNYLE1BQU0sT0FBTyxhQUFjLFNBQVEsU0FBUztJQUMxQyxJQUFJLFlBQVk7UUFDZCxNQUFNLElBQUksS0FBSyxDQUFDLHdDQUF3QyxDQUFDLENBQUM7UUFDMUQsMkJBQTJCO0lBQzdCLENBQUM7SUFDRCxJQUFJLFlBQVk7UUFDZCxNQUFNLElBQUksS0FBSyxDQUFDLG9DQUFvQyxDQUFDLENBQUM7SUFDeEQsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEdsb2JhbCB7fVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgR2xvYmFsUmVmIHtcbiAgYWJzdHJhY3QgZ2V0IG5hdGl2ZUdsb2JhbCgpOiBHbG9iYWw7XG4gIGFic3RyYWN0IGdldCBuYXRpdmVXaW5kb3coKTogV2luZG93O1xufVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQnJvd3Nlckdsb2JhbFJlZiBleHRlbmRzIEdsb2JhbFJlZiB7XG4gIGdldCBuYXRpdmVHbG9iYWwoKTogR2xvYmFsIHtcbiAgICByZXR1cm4gd2luZG93IGFzIEdsb2JhbDtcbiAgfVxuICBnZXQgbmF0aXZlV2luZG93KCk6IFdpbmRvdyB7XG4gICAgcmV0dXJuIHdpbmRvdztcbiAgfVxufVxuZXhwb3J0IGNsYXNzIE5vZGVHbG9iYWxSZWYgZXh0ZW5kcyBHbG9iYWxSZWYge1xuICBnZXQgbmF0aXZlR2xvYmFsKCk6IEdsb2JhbCB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBnbG9iYWwgZG9lc24ndCBjb21waWxlIGZvciBzb21lIHJlYXNvbmApO1xuICAgIC8vIHJldHVybiBnbG9iYWwgYXMgR2xvYmFsO1xuICB9XG4gIGdldCBuYXRpdmVXaW5kb3coKTogV2luZG93IHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ05vZGUgZG9lcyBub3QgaGF2ZSBhIHdpbmRvdyBvYmplY3QnKTtcbiAgfVxufVxuIl19
@@ -158,4 +158,4 @@ export class DateUtil {
158
158
  return isAfter(date, maxDate);
159
159
  }
160
160
  }
161
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25vdm8tZWxlbWVudHMvc3JjL3V0aWxzL2RhdGUvRGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQU8sd0JBQXdCLEVBQUUsZ0JBQWdCLEVBQ2xGLG1CQUFtQixFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUMvRSxPQUFPLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLGdCQUFnQixFQUN6RSxRQUFRLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUVqRyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDakQsT0FBTyxFQUFFLFdBQVcsRUFBc0IsTUFBTSxnQkFBZ0IsQ0FBQztBQUlqRTs7Ozs7Ozs7Ozs7O0lBWUk7QUFDSixNQUFNLE9BQU8sUUFBUTtJQUNqQixNQUFNLENBQUMsa0JBQWtCLENBQUMsSUFBYztRQUNwQyxPQUFPLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQsTUFBTSxDQUFDLG9CQUFvQixDQUFDLE9BQXFCO1FBQzdDLElBQUksQ0FBQyxJQUFJLE9BQU8sSUFBSSxPQUFPLElBQUksQ0FBQyxFQUFFO1lBQzlCLE9BQU8sT0FBYyxDQUFDO1NBQ3pCO2FBQU07WUFDSCxPQUFPLENBQUMsSUFBSSxDQUFDLHdCQUF3QixFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQ2hELE9BQU8sQ0FBQyxDQUFDO1NBQ1o7SUFDTCxDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFTLEVBQUUsT0FBNEI7UUFDaEQsT0FBTyxXQUFXLENBQUMs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Q0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNyQyxPQUFPLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBRUQsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFjO1FBQ3pCLElBQUksR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDckMsT0FBTyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDekIsQ0FBQztJQUVELE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBYyxFQUFFLE9BQWU7UUFDN0MsSUFBSSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNyQyxPQUFPLFVBQVUsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVELE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBYyxFQUFFLEtBQWE7UUFDekMsSUFBSSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNyQyxPQUFPLFFBQVEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVELE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBYyxFQUFFLE9BQXNCO1FBQ2xELElBQUksR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDckMsT0FBTyxRQUFRLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRCxNQUFNLENBQUMsT0FBTyxDQUFDLElBQWMsRUFBRSxPQUFzQjtRQUNqRCxJQUFJLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3JDLE9BQU8sT0FBTyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNsQyxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhZGREYXlzLCBhZGRNb250aHMsIGFkZFdlZWtzLCBEYXksIGRpZmZlcmVuY2VJbkNhbGVuZGFyRGF5cywgZGlmZmVyZW5jZUluRGF5cyxcbiAgICBkaWZmZXJlbmNlSW5TZWNvbmRzLCBlbmRPZkRheSwgZW5kT2ZNb250aCwgZW5kT2ZXZWVrLCBmb3JtYXQsIGdldE1vbnRoLCBnZXRZZWFyLFxuICAgIGlzQWZ0ZXIsIGlzQmVmb3JlLCBpc1NhbWVEYXksIGlzU2FtZU1vbnRoLCBpc1NhbWVTZWNvbmQsIGlzV2l0aGluSW50ZXJ2YWwsIHBhcnNlLFxuICAgIHNldEhvdXJzLCBzZXRNaW51dGVzLCBzdGFydE9mRGF5LCBzdGFydE9mTWludXRlLCBzdGFydE9mTW9udGgsIHN0YXJ0T2ZXZWVrIH0gZnJvbSAnZGF0ZS1mbnMnO1xuaW1wb3J0IHsgSGVscGVycyB9IGZyb20gJy4uL0hlbHBlcnMnO1xuaW1wb3J0IHsgY29udmVydFRva2VucyB9IGZyb20gJy4vY29udmVydC10b2tlbnMnO1xuaW1wb3J0IHsgbGVnYWN5UGFyc2UsIExlZ2FjeVBhcnNlT3B0aW9ucyB9IGZyb20gJy4vbGVnYWN5LXBhcnNlJztcblxudHlwZSBEYXRlTGlrZSA9IERhdGUgfCBzdHJpbmcgfCBudW1iZXI7XG5cbi8qKlxuICogVGhpcyBEYXRlVXRpbCBpcyBhIHdyYXBwZXIgZm9yIGNhbGxpbmcgbmV3IGRhdGUtZm5zIHYyIGZ1bmN0aW9ucyB3aXRoIGV4aXN0aW5nIGxlZ2FjeVxuICogdjEgZnVuY3Rpb24gY2FsbHMgd2l0aG91dCBoYXZpbmcgdG8gcmVmYWN0b3IgdG9vIG11Y2ggY29kZSBhbmQgcG90ZW50aWFsbHkgaW50cm9kdWNlXG4gKiBicmVha2luZyBjaGFuZ2VzLlxuICpcbiAqIFRoZSBvbGQgY2FsbHMgZ2VuZXJhbGx5IGNhbGxlZCBkYXRlLWZucyBmdW5jdGlvbnMgd2l0aCBsb29zZWx5LXR5cGVkIGRhdGUgdmFsdWVzLCBvZnRlblxuICogb2YgdHlwZSBEYXRlTGlrZSAoRGF0ZSB8IHN0cmluZyB8IG51bWJlcikuIFRoaXMgd2FzIGEgcHJvYmxlbSB3aGVuIHVwZ3JhZGluZyB0byBkYXRlLWZuc1xuICogdjIgc2luY2UgZnVuY3Rpb25zIGFyZSBub3cgdHlwZWQgbW9yZSBzdHJvbmdseSBhbmQgbm8gbG9uZ2VyIGFjY2VwdCBzdHJpbmdzLlxuICpcbiAqIElmIHlvdSBhcmUgYWRkaW5nIGEgbmV3IGNvbXBvbmVudC9mZWF0dXJlIGFuZCBsb29raW5nIGhlcmUgdG8gYWRkIGEgbmV3IGRhdGUtZm5zIHdyYXBwZXJcbiAqIGZ1bmN0aW9uLCBzdHJvbmdseSBjb25zaWRlciBub3QgZG9pbmcgdGhhdCBhbmQgaW5zdGVhZCByZWZhY3RvcmluZyB5b3VyIGNvZGUgdG8gbm90IHVzZVxuICogRGF0ZUxpa2UsIGFuZCBjYWxsaW5nIHRoZSBkYXRlLWZucyBmdW5jdGlvbihzKSBkaXJlY3RseS5cbiAqKi9cbmV4cG9ydCBjbGFzcyBEYXRlVXRpbCB7XG4gICAgc3RhdGljIGdldERhdGVGcm9tQW55VHlwZShkYXRlOiBEYXRlTGlrZSk6IERhdGUgfCBudW1iZXIge1xuICAgICAgICByZXR1cm4gbGVnYWN5UGFyc2UoZGF0ZSk7XG4gICAgfVxuXG4gICAgc3RhdGljIGdldFdlZWtEYXlGcm9tTnVtYmVyKHdlZWtEYXk6IG51bWJlciB8IERheSk6IERheSB7XG4gICAgICAgIGlmICgwIDw9IHdlZWtEYXkgJiYgd2Vla0RheSA8PSA2KSB7XG4gICAgICAgICAgICByZXR1cm4gd2Vla0RheSBhcyBEYXk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oJ0ludmFsaWQgd2Vla0RheSB2YWx1ZTonLCB3ZWVrRGF5KTtcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc3RhdGljIHBhcnNlKGRhdGU6IGFueSwgb3B0aW9ucz86IExlZ2FjeVBhcnNlT3B0aW9ucyk6IERhdGUge1xuICAgICAgICByZXR1cm4gbGVnYWN5UGFyc2UoZGF0ZSwgb3B0aW9ucyk7XG4gICAgfVxuXG4gICAgc3RhdGljIGZvcm1hdChkYXRlLCBmb3JtYXRTdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICBpZiAoIWRhdGUpIHtcbiAgICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgfVxuICAgICAgICBkYXRlID0gdGhpcy5nZXREYXRlRnJvbUFueVR5cGUoZGF0ZSk7XG4gICAgICAgIGZvcm1hdFN0cmluZyA9IGNvbnZlcnRUb2tlbnMoZm9ybWF0U3RyaW5nKTtcbiAgICAgICAgcmV0dXJuIGZvcm1hdChkYXRlLCBmb3JtYXRTdHJpbmcpO1xuICAgIH1cblxuICAgIHN0YXRpYyBhZGREYXlzKGRhdGUsIGRheXM6IG51bWJlcik6IERhdGUge1xuICAgICAgICBkYXRlID0gdGhpcy5nZXREYXRlRnJvbUFueVR5cGUoZGF0ZSk7XG4gICAgICAgIHJldHVybiBhZGREYXlzKGRhdGUsIGRheXMpO1xuICAgIH1cblxuICAgIHN0YXRpYyBhZGRXZWVrcyhkYXRlLCB3ZWVrczogbnVtYmVyKTogRGF0ZSB7XG4gICAgICAgIGRhdGUgPSB0aGlzLmdldERhdGVGcm9tQW55VHlwZShkYXRlKTtcbiAgICAgICAgcmV0dXJuIGFkZFdlZWtzKGRhdGUsIHdlZWtzKTtcbiAgICB9XG5cbiAgICBzdGF0aWMgYWRkTW9udGhzKGRhdGUsIG1vbnRoczogbnVtYmVyKTogRGF0ZSB7XG4gICAgICAgIGRhdGUgPSB0aGlzLmdldERhdGVGcm9tQW55VHlwZShkYXRlKTtcbiAgICAgICAgcmV0dXJuIGFkZE1vbnRocyhkYXRlLCBtb250aHMpO1xuICAgIH1cblxuICAgIHN0YXRpYyBzdGFydE9mTWludXRlKGRhdGU6IERhdGVMaWtlKTogRGF0ZSB7XG4gICAgICAgIGRhdGUgPSB0aGlzLmdldERhdGVGcm9tQW55VHlwZShkYXRlKTtcbiAgICAgICAgcmV0dXJuIHN0YXJ0T2ZNaW51dGUoZGF0ZSk7XG4gICAgfVxuXG4gICAgc3RhdGljIHN0YXJ0T2ZEYXkoZGF0ZTogRGF0ZUxpa2UpOiBEYXRlIHtcbiAgICAgICAgZGF0ZSA9IHRoaXMuZ2V0RGF0ZUZyb21BbnlUeXBlKGRhdGUpO1xuICAgICAgICByZXR1cm4gc3RhcnRPZkRheShkYXRlKTtcbiAgICB9XG5cbiAgICBzdGF0aWMgc3RhcnRPZldlZWsoZGF0ZTogRGF0ZUxpa2UsIG9wdGlvbnM/KTogRGF0ZSB7XG4gICAgICAgIGRhdGUgPSB0aGlzLmdldERhdGVGcm9tQW55VHlwZShkYXRlKTtcbiAgICAgICAgaWYgKG9wdGlvbnM/LndlZWtTdGFydHNPbikge1xuICAgICAgICAgICAgb3B0aW9ucy53ZWVrU3RhcnRzT24gPSB0aGlzLmdldFdlZWtEYXlGcm9tTnVtYmVyKG9wdGlvbnMud2Vla1N0YXJ0c09uKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc3RhcnRPZldlZWsoZGF0ZSwgb3B0aW9ucyk7XG4gICAgfVxuXG4gICAgc3RhdGljIHN0YXJ0T2ZNb250aChkYXRlOiBEYXRlTGlrZSk6IERhdGUge1xuICAgICAgICBkYXRlID0gdGhpcy5nZXREYXRlRnJvbUFueVR5cGUoZGF0ZSk7XG4gICAgICAgIHJldHVybiBzdGFydE9mTW9udGgoZGF0ZSk7XG4gICAgfVxuXG4gICAgc3RhdGljIGVuZE9mRGF5KGRhdGU6IERhdGVMaWtlKTogRGF0ZSB7XG4gICAgICAgIGRhdGUgPSB0aGlzLmdldERhdGVGcm9tQW55VHlwZShkYXRlKTtcbiAgICAgICAgcmV0dXJuIGVuZE9mRGF5KGRhdGUpO1xuICAgIH1cblxuICAgIHN0YXRpYyBlbmRPZldlZWsoZGF0ZTogRGF0ZUxpa2UsIG9wdGlvbnM/KTogRGF0ZSB7XG4gICAgICAgIGRhdGUgPSB0aGlzLmdldERhdGVGcm9tQW55VHlwZShkYXRlKTtcbiAgICAgICAgaWYgKG9wdGlvbnM/LndlZWtTdGFydHNPbikge1xuICAgICAgICAgICAgb3B0aW9ucy53ZWVrU3RhcnRzT24gPSB0aGlzLmdldFdlZWtEYXlGcm9tTnVtYmVyKG9wdGlvbnMud2Vla1N0YXJ0c09uKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZW5kT2ZXZWVrKGRhdGUsIG9wdGlvbnMpO1xuICAgIH1cblxuICAgIHN0YXRpYyBlbmRPZk1vbnRoKGRhdGU6IERhdGVMaWtlKTogRGF0ZSB7XG4gICAgICAgIGRhdGUgPSB0aGlzLmdldERhdGVGcm9tQW55VHlwZShkYXRlKTtcbiAgICAgICAgcmV0dXJuIGVuZE9mTW9udGgoZGF0ZSk7XG4gICAgfVxuXG4gICAgc3RhdGljIGlzU2FtZURheShkYXRlTGVmdDogRGF0ZUxpa2UsIGRhdGVSaWdodDogRGF0ZUxpa2UpOiBib29sZWFuIHtcbiAgICAgICAgZGF0ZUxlZnQgPSB0aGlzLmdldERhdGVGcm9tQW55VHlwZShkYXRlTGVmdCk7XG4gICAgICAgIGRhdGVSaWdodCA9IHRoaXMuZ2V0RGF0ZUZyb21BbnlUeXBlKGRhdGVSaWdodCk7XG4gICAgICAgIHJldHVybiBpc1NhbWVEYXkoZGF0ZUxlZnQsIGRhdGVSaWdodCk7XG4gICAgfVxuXG4gICAgc3RhdGljIGlzU2FtZU1vbnRoKGRhdGVMZWZ0OiBEYXRlTGlrZSwgZGF0ZVJpZ2h0OiBEYXRlTGlrZSk6IGJvb2xlYW4ge1xuICAgICAgICBkYXRlTGVmdCA9IHRoaXMuZ2V0RGF0ZUZyb21BbnlUeXBlKGRhdGVMZWZ0KTtcbiAgICAgICAgZGF0ZVJpZ2h0ID0gdGhpcy5nZXREYXRlRnJvbUFueVR5cGUoZGF0ZVJpZ2h0KTtcbiAgICAgICAgcmV0dXJuIGlzU2FtZU1vbnRoKGRhdGVMZWZ0LCBkYXRlUmlnaHQpO1xuICAgIH1cblxuICAgIHN0YXRpYyBpc1NhbWVTZWNvbmQoZGF0ZUxlZnQ6IERhdGVMaWtlLCBkYXRlUmlnaHQ6IERhdGVMaWtlKTogYm9vbGVhbiB7XG4gICAgICAgIGRhdGVMZWZ0ID0gdGhpcy5nZXREYXRlRnJvbUFueVR5cGUoZGF0ZUxlZnQpO1xuICAgICAgICBkYXRlUmlnaHQgPSB0aGlzLmdldERhdGVGcm9tQW55VHlwZShkYXRlUmlnaHQpO1xuICAgICAgICByZXR1cm4gaXNTYW1lU2Vjb25kKGRhdGVMZWZ0LCBkYXRlUmlnaHQpO1xuICAgIH1cblxuICAgIHN0YXRpYyBkaWZmZXJlbmNlSW5TZWNvbmRzKGRhdGU6IERhdGVMaWtlLCBzdGFydDogRGF0ZUxpa2UpOiBudW1iZXIge1xuICAgICAgICBkYXRlID0gdGhpcy5nZXREYXRlRnJvbUFueVR5cGUoZGF0ZSk7XG4gICAgICAgIHN0YXJ0ID0gdGhpcy5nZXREYXRlRnJvbUFueVR5cGUoc3RhcnQpO1xuICAgICAgICByZXR1cm4gZGlmZmVyZW5jZUluU2Vjb25kcyhkYXRlLCBzdGFydCk7XG4gICAgfVxuXG4gICAgc3RhdGljIGRpZmZlcmVuY2VJbkNhbGVuZGFyRGF5cyhkYXRlOiBEYXRlTGlrZSwgc3RhcnQ6IERhdGVMaWtlKTogbnVtYmVyIHtcbiAgICAgICAgZGF0ZSA9IHRoaXMuZ2V0RGF0ZUZyb21BbnlUeXBlKGRhdGUpO1xuICAgICAgICBzdGFydCA9IHRoaXMuZ2V0RGF0ZUZyb21BbnlUeXBlKHN0YXJ0KTtcbiAgICAgICAgcmV0dXJuIGRpZmZlcmVuY2VJbkNhbGVuZGFyRGF5cyhkYXRlLCBzdGFydCk7XG4gICAgfVxuXG4gICAgc3RhdGljIGRpZmZlcmVuY2VJbkRheXMoZGF0ZTogRGF0ZUxpa2UsIHN0YXJ0OiBEYXRlTGlrZSk6IG51bWJlciB7XG4gICAgICAgIGRhdGUgPSB0aGlzLmdldERhdGVGcm9tQW55VHlwZShkYXRlKTtcbiAgICAgICAgc3RhcnQgPSB0aGlzLmdldERhdGVGcm9tQW55VHlwZShzdGFydCk7XG4gICAgICAgIHJldHVybiBkaWZmZXJlbmNlSW5EYXlzKGRhdGUsIHN0YXJ0KTtcbiAgICB9XG5cbiAgICBzdGF0aWMgaXNXaXRoaW5SYW5nZShkYXRlOiBEYXRlTGlrZSB8IG51bGwsIHN0YXJ0OiBEYXRlTGlrZSwgZW5kOiBEYXRlTGlrZSk6IGJvb2xlYW4ge1xuICAgICAgICBkYXRlID0gdGhpcy5nZXREYXRlRnJvbUFueVR5cGUoZGF0ZSk7XG4gICAgICAgIGNvbnN0IGludGVydmFsID0ge1xuICAgICAgICAgICAgc3RhcnQ6IHRoaXMuZ2V0RGF0ZUZyb21BbnlUeXBlKHN0YXJ0KSxcbiAgICAgICAgICAgIGVuZDogdGhpcy5nZXREYXRlRnJvbUFueVR5cGUoZW5kKSxcbiAgICAgICAgfTtcblxuICAgICAgICAvKipcbiAgICAgICAgICogTmVlZCBleHRyYSBlcnJvciBoYW5kbGluZyBoZXJlIHRvIHJldGFpbiBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSBiZWNhdXNlIHRoZSBuZXdcbiAgICAgICAgICogaXNXaXRoaW5JbnRlcnZhbCByZXBsYWNlbWVudCBmdW5jdGlvbiB0aHJvd3MgYW4gZXJyb3IgZm9yIEludmFsaWQgRGF0ZXMgYW5kIEludmFsaWRcbiAgICAgICAgICogSW50ZXJ2YWxzIGluc3RlYWQgb2YgcmV0dXJuaW5nIHRydWUgb3IgZmFsc2UuXG4gICAgICAgICAqKi9cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICByZXR1cm4gaXNXaXRoaW5JbnRlcnZhbChkYXRlLCBpbnRlcnZhbCk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICBjb25zb2xlLndhcm4oZS50b1N0cmluZygpKTtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzdGF0aWMgZ2V0TW9udGgoZGF0ZTogRGF0ZUxpa2UpOiBudW1iZXIge1xuICAgICAgICBkYXRlID0gdGhpcy5nZXREYXRlRnJvbUFueVR5cGUoZGF0ZSk7XG4gICAgICAgIHJldHVybiBnZXRNb250aChkYXRlKTtcbiAgICB9XG5cbiAgICBzdGF0aWMgZ2V0WWVhcihkYXRlOiBEYXRlTGlrZSk6IG51bWJlciB7XG4gICAgICAgIGRhdGUgPSB0aGlzLmdldERhdGVGcm9tQW55VHlwZShkYXRlKTtcbiAgICAgICAgcmV0dXJuIGdldFllYXIoZGF0ZSk7XG4gICAgfVxuXG4gICAgc3RhdGljIHNldE1pbnV0ZXMoZGF0ZTogRGF0ZUxpa2UsIG1pbnV0ZXM6IG51bWJlcikge1xuICAgICAgICBkYXRlID0gdGhpcy5nZXREYXRlRnJvbUFueVR5cGUoZGF0ZSk7XG4gICAgICAgIHJldHVybiBzZXRNaW51dGVzKGRhdGUsIG1pbnV0ZXMpO1xuICAgIH1cblxuICAgIHN0YXRpYyBzZXRIb3VycyhkYXRlOiBEYXRlTGlrZSwgaG91cnM6IG51bWJlcikge1xuICAgICAgICBkYXRlID0gdGhpcy5nZXREYXRlRnJvbUFueVR5cGUoZGF0ZSk7XG4gICAgICAgIHJldHVybiBzZXRIb3VycyhkYXRlLCBob3Vycyk7XG4gICAgfVxuXG4gICAgc3RhdGljIGlzQmVmb3JlKGRhdGU6IERhdGVMaWtlLCBtaW5EYXRlOiBEYXRlIHwgbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgICAgIGRhdGUgPSB0aGlzLmdldERhdGVGcm9tQW55VHlwZShkYXRlKTtcbiAgICAgICAgcmV0dXJuIGlzQmVmb3JlKGRhdGUsIG1pbkRhdGUpO1xuICAgIH1cblxuICAgIHN0YXRpYyBpc0FmdGVyKGRhdGU6IERhdGVMaWtlLCBtYXhEYXRlOiBEYXRlIHwgbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgICAgIGRhdGUgPSB0aGlzLmdldERhdGVGcm9tQW55VHlwZShkYXRlKTtcbiAgICAgICAgcmV0dXJuIGlzQWZ0ZXIoZGF0ZSwgbWF4RGF0ZSk7XG4gICAgfVxufVxuIl19
161
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25vdm8tZWxlbWVudHMvc3JjL3V0aWxzL2RhdGUvRGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUgsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQzVCLHdCQUF3QixFQUFFLGdCQUFnQixFQUMxQyxtQkFBbUIsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFDL0UsT0FBTyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxnQkFBZ0IsRUFDekUsUUFBUSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQzdFLE1BQU0sVUFBVSxDQUFDO0FBQ2xCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNqRCxPQUFPLEVBQXNCLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBSWpFOzs7Ozs7Ozs7Ozs7SUFZSTtBQUNKLE1BQU0sT0FBTyxRQUFRO0lBQ2pCLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxJQUFjO1FBQ3BDLE9BQU8sV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFRCxNQUFNLENBQUMsb0JBQW9CLENBQUMsT0FBcUI7UUFDN0MsSUFBSSxDQUFDLElBQUksT0FBTyxJQUFJLE9BQU8sSUFBSSxDQUFDLEVBQUU7WUFDOUIsT0FBTyxPQUFjLENBQUM7U0FDekI7YUFBTTtZQUNILE9BQU8sQ0FBQyxJQUFJLENBQUMsd0JBQXdCLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDaEQsT0FBTyxDQUFDLENBQUM7U0FDWjtJQUNMLENBQUM7SUFFRCxNQUFNLENBQUMsS0FBSyxDQUFDLElBQVMsRUFBRSxPQUE0QjtRQUNoRCxPQUFPLFdBQVcsQ0FB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SSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3JDLE9BQU8sUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFFRCxNQUFNLENBQUMsT0FBTyxDQUFDLElBQWM7UUFDekIsSUFBSSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNyQyxPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN6QixDQUFDO0lBRUQsTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFjLEVBQUUsT0FBZTtRQUM3QyxJQUFJLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3JDLE9BQU8sVUFBVSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFjLEVBQUUsS0FBYTtRQUN6QyxJQUFJLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3JDLE9BQU8sUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFjLEVBQUUsT0FBc0I7UUFDbEQsSUFBSSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNyQyxPQUFPLFFBQVEsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVELE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBYyxFQUFFLE9BQXNCO1FBQ2pELElBQUksR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDckMsT0FBTyxPQUFPLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ2xDLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgRGF5LFxuICAgIGFkZERheXMsIGFkZE1vbnRocywgYWRkV2Vla3MsXG4gICAgZGlmZmVyZW5jZUluQ2FsZW5kYXJEYXlzLCBkaWZmZXJlbmNlSW5EYXlzLFxuICAgIGRpZmZlcmVuY2VJblNlY29uZHMsIGVuZE9mRGF5LCBlbmRPZk1vbnRoLCBlbmRPZldlZWssIGZvcm1hdCwgZ2V0TW9udGgsIGdldFllYXIsXG4gICAgaXNBZnRlciwgaXNCZWZvcmUsIGlzU2FtZURheSwgaXNTYW1lTW9udGgsIGlzU2FtZVNlY29uZCwgaXNXaXRoaW5JbnRlcnZhbCxcbiAgICBzZXRIb3Vycywgc2V0TWludXRlcywgc3RhcnRPZkRheSwgc3RhcnRPZk1pbnV0ZSwgc3RhcnRPZk1vbnRoLCBzdGFydE9mV2Vla1xufSBmcm9tICdkYXRlLWZucyc7XG5pbXBvcnQgeyBjb252ZXJ0VG9rZW5zIH0gZnJvbSAnLi9jb252ZXJ0LXRva2Vucyc7XG5pbXBvcnQgeyBMZWdhY3lQYXJzZU9wdGlvbnMsIGxlZ2FjeVBhcnNlIH0gZnJvbSAnLi9sZWdhY3ktcGFyc2UnO1xuXG50eXBlIERhdGVMaWtlID0gRGF0ZSB8IHN0cmluZyB8IG51bWJlcjtcblxuLyoqXG4gKiBUaGlzIERhdGVVdGlsIGlzIGEgd3JhcHBlciBmb3IgY2FsbGluZyBuZXcgZGF0ZS1mbnMgdjIgZnVuY3Rpb25zIHdpdGggZXhpc3RpbmcgbGVnYWN5XG4gKiB2MSBmdW5jdGlvbiBjYWxscyB3aXRob3V0IGhhdmluZyB0byByZWZhY3RvciB0b28gbXVjaCBjb2RlIGFuZCBwb3RlbnRpYWxseSBpbnRyb2R1Y2VcbiAqIGJyZWFraW5nIGNoYW5nZXMuXG4gKlxuICogVGhlIG9sZCBjYWxscyBnZW5lcmFsbHkgY2FsbGVkIGRhdGUtZm5zIGZ1bmN0aW9ucyB3aXRoIGxvb3NlbHktdHlwZWQgZGF0ZSB2YWx1ZXMsIG9mdGVuXG4gKiBvZiB0eXBlIERhdGVMaWtlIChEYXRlIHwgc3RyaW5nIHwgbnVtYmVyKS4gVGhpcyB3YXMgYSBwcm9ibGVtIHdoZW4gdXBncmFkaW5nIHRvIGRhdGUtZm5zXG4gKiB2MiBzaW5jZSBmdW5jdGlvbnMgYXJlIG5vdyB0eXBlZCBtb3JlIHN0cm9uZ2x5IGFuZCBubyBsb25nZXIgYWNjZXB0IHN0cmluZ3MuXG4gKlxuICogSWYgeW91IGFyZSBhZGRpbmcgYSBuZXcgY29tcG9uZW50L2ZlYXR1cmUgYW5kIGxvb2tpbmcgaGVyZSB0byBhZGQgYSBuZXcgZGF0ZS1mbnMgd3JhcHBlclxuICogZnVuY3Rpb24sIHN0cm9uZ2x5IGNvbnNpZGVyIG5vdCBkb2luZyB0aGF0IGFuZCBpbnN0ZWFkIHJlZmFjdG9yaW5nIHlvdXIgY29kZSB0byBub3QgdXNlXG4gKiBEYXRlTGlrZSwgYW5kIGNhbGxpbmcgdGhlIGRhdGUtZm5zIGZ1bmN0aW9uKHMpIGRpcmVjdGx5LlxuICoqL1xuZXhwb3J0IGNsYXNzIERhdGVVdGlsIHtcbiAgICBzdGF0aWMgZ2V0RGF0ZUZyb21BbnlUeXBlKGRhdGU6IERhdGVMaWtlKTogRGF0ZSB8IG51bWJlciB7XG4gICAgICAgIHJldHVybiBsZWdhY3lQYXJzZShkYXRlKTtcbiAgICB9XG5cbiAgICBzdGF0aWMgZ2V0V2Vla0RheUZyb21OdW1iZXIod2Vla0RheTogbnVtYmVyIHwgRGF5KTogRGF5IHtcbiAgICAgICAgaWYgKDAgPD0gd2Vla0RheSAmJiB3ZWVrRGF5IDw9IDYpIHtcbiAgICAgICAgICAgIHJldHVybiB3ZWVrRGF5IGFzIERheTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybignSW52YWxpZCB3ZWVrRGF5IHZhbHVlOicsIHdlZWtEYXkpO1xuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzdGF0aWMgcGFyc2UoZGF0ZTogYW55LCBvcHRpb25zPzogTGVnYWN5UGFyc2VPcHRpb25zKTogRGF0ZSB7XG4gICAgICAgIHJldHVybiBsZWdhY3lQYXJzZShkYXRlLCBvcHRpb25zKTtcbiAgICB9XG5cbiAgICBzdGF0aWMgZm9ybWF0KGRhdGUsIGZvcm1hdFN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIGlmICghZGF0ZSkge1xuICAgICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICB9XG4gICAgICAgIGRhdGUgPSB0aGlzLmdldERhdGVGcm9tQW55VHlwZShkYXRlKTtcbiAgICAgICAgZm9ybWF0U3RyaW5nID0gY29udmVydFRva2Vucyhmb3JtYXRTdHJpbmcpO1xuICAgICAgICByZXR1cm4gZm9ybWF0KGRhdGUsIGZvcm1hdFN0cmluZyk7XG4gICAgfVxuXG4gICAgc3RhdGljIGFkZERheXMoZGF0ZSwgZGF5czogbnVtYmVyKTogRGF0ZSB7XG4gICAgICAgIGRhdGUgPSB0aGlzLmdldERhdGVGcm9tQW55VHlwZShkYXRlKTtcbiAgICAgICAgcmV0dXJuIGFkZERheXMoZGF0ZSwgZGF5cyk7XG4gICAgfVxuXG4gICAgc3RhdGljIGFkZFdlZWtzKGRhdGUsIHdlZWtzOiBudW1iZXIpOiBEYXRlIHtcbiAgICAgICAgZGF0ZSA9IHRoaXMuZ2V0RGF0ZUZyb21BbnlUeXBlKGRhdGUpO1xuICAgICAgICByZXR1cm4gYWRkV2Vla3MoZGF0ZSwgd2Vla3MpO1xuICAgIH1cblxuICAgIHN0YXRpYyBhZGRNb250aHMoZGF0ZSwgbW9udGhzOiBudW1iZXIpOiBEYXRlIHtcbiAgICAgICAgZGF0ZSA9IHRoaXMuZ2V0RGF0ZUZyb21BbnlUeXBlKGRhdGUpO1xuICAgICAgICByZXR1cm4gYWRkTW9udGhzKGRhdGUsIG1vbnRocyk7XG4gICAgfVxuXG4gICAgc3RhdGljIHN0YXJ0T2ZNaW51dGUoZGF0ZTogRGF0ZUxpa2UpOiBEYXRlIHtcbiAgICAgICAgZGF0ZSA9IHRoaXMuZ2V0RGF0ZUZyb21BbnlUeXBlKGRhdGUpO1xuICAgICAgICByZXR1cm4gc3RhcnRPZk1pbnV0ZShkYXRlKTtcbiAgICB9XG5cbiAgICBzdGF0aWMgc3RhcnRPZkRheShkYXRlOiBEYXRlTGlrZSk6IERhdGUge1xuICAgICAgICBkYXRlID0gdGhpcy5nZXREYXRlRnJvbUFueVR5cGUoZGF0ZSk7XG4gICAgICAgIHJldHVybiBzdGFydE9mRGF5KGRhdGUpO1xuICAgIH1cblxuICAgIHN0YXRpYyBzdGFydE9mV2VlayhkYXRlOiBEYXRlTGlrZSwgb3B0aW9ucz8pOiBEYXRlIHtcbiAgICAgICAgZGF0ZSA9IHRoaXMuZ2V0RGF0ZUZyb21BbnlUeXBlKGRhdGUpO1xuICAgICAgICBpZiAob3B0aW9ucz8ud2Vla1N0YXJ0c09uKSB7XG4gICAgICAgICAgICBvcHRpb25zLndlZWtTdGFydHNPbiA9IHRoaXMuZ2V0V2Vla0RheUZyb21OdW1iZXIob3B0aW9ucy53ZWVrU3RhcnRzT24pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzdGFydE9mV2VlayhkYXRlLCBvcHRpb25zKTtcbiAgICB9XG5cbiAgICBzdGF0aWMgc3RhcnRPZk1vbnRoKGRhdGU6IERhdGVMaWtlKTogRGF0ZSB7XG4gICAgICAgIGRhdGUgPSB0aGlzLmdldERhdGVGcm9tQW55VHlwZShkYXRlKTtcbiAgICAgICAgcmV0dXJuIHN0YXJ0T2ZNb250aChkYXRlKTtcbiAgICB9XG5cbiAgICBzdGF0aWMgZW5kT2ZEYXkoZGF0ZTogRGF0ZUxpa2UpOiBEYXRlIHtcbiAgICAgICAgZGF0ZSA9IHRoaXMuZ2V0RGF0ZUZyb21BbnlUeXBlKGRhdGUpO1xuICAgICAgICByZXR1cm4gZW5kT2ZEYXkoZGF0ZSk7XG4gICAgfVxuXG4gICAgc3RhdGljIGVuZE9mV2VlayhkYXRlOiBEYXRlTGlrZSwgb3B0aW9ucz8pOiBEYXRlIHtcbiAgICAgICAgZGF0ZSA9IHRoaXMuZ2V0RGF0ZUZyb21BbnlUeXBlKGRhdGUpO1xuICAgICAgICBpZiAob3B0aW9ucz8ud2Vla1N0YXJ0c09uKSB7XG4gICAgICAgICAgICBvcHRpb25zLndlZWtTdGFydHNPbiA9IHRoaXMuZ2V0V2Vla0RheUZyb21OdW1iZXIob3B0aW9ucy53ZWVrU3RhcnRzT24pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBlbmRPZldlZWsoZGF0ZSwgb3B0aW9ucyk7XG4gICAgfVxuXG4gICAgc3RhdGljIGVuZE9mTW9udGgoZGF0ZTogRGF0ZUxpa2UpOiBEYXRlIHtcbiAgICAgICAgZGF0ZSA9IHRoaXMuZ2V0RGF0ZUZyb21BbnlUeXBlKGRhdGUpO1xuICAgICAgICByZXR1cm4gZW5kT2ZNb250aChkYXRlKTtcbiAgICB9XG5cbiAgICBzdGF0aWMgaXNTYW1lRGF5KGRhdGVMZWZ0OiBEYXRlTGlrZSwgZGF0ZVJpZ2h0OiBEYXRlTGlrZSk6IGJvb2xlYW4ge1xuICAgICAgICBkYXRlTGVmdCA9IHRoaXMuZ2V0RGF0ZUZyb21BbnlUeXBlKGRhdGVMZWZ0KTtcbiAgICAgICAgZGF0ZVJpZ2h0ID0gdGhpcy5nZXREYXRlRnJvbUFueVR5cGUoZGF0ZVJpZ2h0KTtcbiAgICAgICAgcmV0dXJuIGlzU2FtZURheShkYXRlTGVmdCwgZGF0ZVJpZ2h0KTtcbiAgICB9XG5cbiAgICBzdGF0aWMgaXNTYW1lTW9udGgoZGF0ZUxlZnQ6IERhdGVMaWtlLCBkYXRlUmlnaHQ6IERhdGVMaWtlKTogYm9vbGVhbiB7XG4gICAgICAgIGRhdGVMZWZ0ID0gdGhpcy5nZXREYXRlRnJvbUFueVR5cGUoZGF0ZUxlZnQpO1xuICAgICAgICBkYXRlUmlnaHQgPSB0aGlzLmdldERhdGVGcm9tQW55VHlwZShkYXRlUmlnaHQpO1xuICAgICAgICByZXR1cm4gaXNTYW1lTW9udGgoZGF0ZUxlZnQsIGRhdGVSaWdodCk7XG4gICAgfVxuXG4gICAgc3RhdGljIGlzU2FtZVNlY29uZChkYXRlTGVmdDogRGF0ZUxpa2UsIGRhdGVSaWdodDogRGF0ZUxpa2UpOiBib29sZWFuIHtcbiAgICAgICAgZGF0ZUxlZnQgPSB0aGlzLmdldERhdGVGcm9tQW55VHlwZShkYXRlTGVmdCk7XG4gICAgICAgIGRhdGVSaWdodCA9IHRoaXMuZ2V0RGF0ZUZyb21BbnlUeXBlKGRhdGVSaWdodCk7XG4gICAgICAgIHJldHVybiBpc1NhbWVTZWNvbmQoZGF0ZUxlZnQsIGRhdGVSaWdodCk7XG4gICAgfVxuXG4gICAgc3RhdGljIGRpZmZlcmVuY2VJblNlY29uZHMoZGF0ZTogRGF0ZUxpa2UsIHN0YXJ0OiBEYXRlTGlrZSk6IG51bWJlciB7XG4gICAgICAgIGRhdGUgPSB0aGlzLmdldERhdGVGcm9tQW55VHlwZShkYXRlKTtcbiAgICAgICAgc3RhcnQgPSB0aGlzLmdldERhdGVGcm9tQW55VHlwZShzdGFydCk7XG4gICAgICAgIHJldHVybiBkaWZmZXJlbmNlSW5TZWNvbmRzKGRhdGUsIHN0YXJ0KTtcbiAgICB9XG5cbiAgICBzdGF0aWMgZGlmZmVyZW5jZUluQ2FsZW5kYXJEYXlzKGRhdGU6IERhdGVMaWtlLCBzdGFydDogRGF0ZUxpa2UpOiBudW1iZXIge1xuICAgICAgICBkYXRlID0gdGhpcy5nZXREYXRlRnJvbUFueVR5cGUoZGF0ZSk7XG4gICAgICAgIHN0YXJ0ID0gdGhpcy5nZXREYXRlRnJvbUFueVR5cGUoc3RhcnQpO1xuICAgICAgICByZXR1cm4gZGlmZmVyZW5jZUluQ2FsZW5kYXJEYXlzKGRhdGUsIHN0YXJ0KTtcbiAgICB9XG5cbiAgICBzdGF0aWMgZGlmZmVyZW5jZUluRGF5cyhkYXRlOiBEYXRlTGlrZSwgc3RhcnQ6IERhdGVMaWtlKTogbnVtYmVyIHtcbiAgICAgICAgZGF0ZSA9IHRoaXMuZ2V0RGF0ZUZyb21BbnlUeXBlKGRhdGUpO1xuICAgICAgICBzdGFydCA9IHRoaXMuZ2V0RGF0ZUZyb21BbnlUeXBlKHN0YXJ0KTtcbiAgICAgICAgcmV0dXJuIGRpZmZlcmVuY2VJbkRheXMoZGF0ZSwgc3RhcnQpO1xuICAgIH1cblxuICAgIHN0YXRpYyBpc1dpdGhpblJhbmdlKGRhdGU6IERhdGVMaWtlIHwgbnVsbCwgc3RhcnQ6IERhdGVMaWtlLCBlbmQ6IERhdGVMaWtlKTogYm9vbGVhbiB7XG4gICAgICAgIGRhdGUgPSB0aGlzLmdldERhdGVGcm9tQW55VHlwZShkYXRlKTtcbiAgICAgICAgY29uc3QgaW50ZXJ2YWwgPSB7XG4gICAgICAgICAgICBzdGFydDogdGhpcy5nZXREYXRlRnJvbUFueVR5cGUoc3RhcnQpLFxuICAgICAgICAgICAgZW5kOiB0aGlzLmdldERhdGVGcm9tQW55VHlwZShlbmQpLFxuICAgICAgICB9O1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBOZWVkIGV4dHJhIGVycm9yIGhhbmRsaW5nIGhlcmUgdG8gcmV0YWluIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IGJlY2F1c2UgdGhlIG5ld1xuICAgICAgICAgKiBpc1dpdGhpbkludGVydmFsIHJlcGxhY2VtZW50IGZ1bmN0aW9uIHRocm93cyBhbiBlcnJvciBmb3IgSW52YWxpZCBEYXRlcyBhbmQgSW52YWxpZFxuICAgICAgICAgKiBJbnRlcnZhbHMgaW5zdGVhZCBvZiByZXR1cm5pbmcgdHJ1ZSBvciBmYWxzZS5cbiAgICAgICAgICoqL1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHJldHVybiBpc1dpdGhpbkludGVydmFsKGRhdGUsIGludGVydmFsKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIGNvbnNvbGUud2FybihlLnRvU3RyaW5nKCkpO1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHN0YXRpYyBnZXRNb250aChkYXRlOiBEYXRlTGlrZSk6IG51bWJlciB7XG4gICAgICAgIGRhdGUgPSB0aGlzLmdldERhdGVGcm9tQW55VHlwZShkYXRlKTtcbiAgICAgICAgcmV0dXJuIGdldE1vbnRoKGRhdGUpO1xuICAgIH1cblxuICAgIHN0YXRpYyBnZXRZZWFyKGRhdGU6IERhdGVMaWtlKTogbnVtYmVyIHtcbiAgICAgICAgZGF0ZSA9IHRoaXMuZ2V0RGF0ZUZyb21BbnlUeXBlKGRhdGUpO1xuICAgICAgICByZXR1cm4gZ2V0WWVhcihkYXRlKTtcbiAgICB9XG5cbiAgICBzdGF0aWMgc2V0TWludXRlcyhkYXRlOiBEYXRlTGlrZSwgbWludXRlczogbnVtYmVyKSB7XG4gICAgICAgIGRhdGUgPSB0aGlzLmdldERhdGVGcm9tQW55VHlwZShkYXRlKTtcbiAgICAgICAgcmV0dXJuIHNldE1pbnV0ZXMoZGF0ZSwgbWludXRlcyk7XG4gICAgfVxuXG4gICAgc3RhdGljIHNldEhvdXJzKGRhdGU6IERhdGVMaWtlLCBob3VyczogbnVtYmVyKSB7XG4gICAgICAgIGRhdGUgPSB0aGlzLmdldERhdGVGcm9tQW55VHlwZShkYXRlKTtcbiAgICAgICAgcmV0dXJuIHNldEhvdXJzKGRhdGUsIGhvdXJzKTtcbiAgICB9XG5cbiAgICBzdGF0aWMgaXNCZWZvcmUoZGF0ZTogRGF0ZUxpa2UsIG1pbkRhdGU6IERhdGUgfCBudW1iZXIpOiBib29sZWFuIHtcbiAgICAgICAgZGF0ZSA9IHRoaXMuZ2V0RGF0ZUZyb21BbnlUeXBlKGRhdGUpO1xuICAgICAgICByZXR1cm4gaXNCZWZvcmUoZGF0ZSwgbWluRGF0ZSk7XG4gICAgfVxuXG4gICAgc3RhdGljIGlzQWZ0ZXIoZGF0ZTogRGF0ZUxpa2UsIG1heERhdGU6IERhdGUgfCBudW1iZXIpOiBib29sZWFuIHtcbiAgICAgICAgZGF0ZSA9IHRoaXMuZ2V0RGF0ZUZyb21BbnlUeXBlKGRhdGUpO1xuICAgICAgICByZXR1cm4gaXNBZnRlcihkYXRlLCBtYXhEYXRlKTtcbiAgICB9XG59XG4iXX0=
@@ -1,5 +1,6 @@
1
- export * from './convert-tokens';
2
1
  export * from './Date';
3
2
  export * from './Date.types';
3
+ export * from './convert-tokens';
4
4
  export * from './legacy-parse';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ub3ZvLWVsZW1lbnRzL3NyYy91dGlscy9kYXRlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxRQUFRLENBQUM7QUFDdkIsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxnQkFBZ0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vY29udmVydC10b2tlbnMnO1xuZXhwb3J0ICogZnJvbSAnLi9EYXRlJztcbmV4cG9ydCAqIGZyb20gJy4vRGF0ZS50eXBlcyc7XG5leHBvcnQgKiBmcm9tICcuL2xlZ2FjeS1wYXJzZSc7XG4iXX0=
5
+ export * from './timezone-support';
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ub3ZvLWVsZW1lbnRzL3NyYy91dGlscy9kYXRlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsUUFBUSxDQUFDO0FBQ3ZCLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLG9CQUFvQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9EYXRlJztcbmV4cG9ydCAqIGZyb20gJy4vRGF0ZS50eXBlcyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnZlcnQtdG9rZW5zJztcbmV4cG9ydCAqIGZyb20gJy4vbGVnYWN5LXBhcnNlJztcbmV4cG9ydCAqIGZyb20gJy4vdGltZXpvbmUtc3VwcG9ydCc7XG5cbiJdfQ==
@@ -0,0 +1,87 @@
1
+ /**
2
+ * Copyright © 2018-2022 Ferdinand Prantl
3
+ * https://www.npmjs.com/package/timezone-support
4
+ **/
5
+ const formattingToken = /(\[[^[]*\])|([-:/.()\s]+)|(A|a|YYYY|YY?|MM?|DD?|d|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g;
6
+ const formatTokenFunctions = {};
7
+ const formatters = {};
8
+ export function formatZonedTime(time, format) {
9
+ let formatter = formatters[format];
10
+ if (!formatter) {
11
+ formatter = formatters[format] = makeFormatter(format);
12
+ }
13
+ return formatter(time);
14
+ }
15
+ function makeFormatter(format) {
16
+ const array = format.match(formattingToken);
17
+ const { length } = array;
18
+ for (let i = 0; i < length; ++i) {
19
+ const token = array[i];
20
+ const formatter = formatTokenFunctions[token];
21
+ if (formatter) {
22
+ array[i] = formatter;
23
+ }
24
+ else {
25
+ array[i] = token.replace(/^\[|\]$/g, '');
26
+ }
27
+ }
28
+ return function (time) {
29
+ let output = '';
30
+ for (const token of array) {
31
+ output += typeof token === 'function' ? token.call(time) : token;
32
+ }
33
+ return output;
34
+ };
35
+ }
36
+ const addFormatToken = function (token, padded, property) {
37
+ const callback = typeof property === 'string' ? function () {
38
+ return this[property];
39
+ } : property;
40
+ if (token) {
41
+ formatTokenFunctions[token] = callback;
42
+ }
43
+ if (padded) {
44
+ formatTokenFunctions[padded[0]] = function () {
45
+ return padWithZeros(callback.call(this), padded[1]);
46
+ };
47
+ }
48
+ };
49
+ addFormatToken('A', 0, function () { return this.hours < 12 ? 'AM' : 'PM'; });
50
+ addFormatToken('a', 0, function () { return this.hours < 12 ? 'am' : 'pm'; });
51
+ addFormatToken('S', 0, function () { return Math.floor(this.milliseconds / 100); });
52
+ addFormatToken(0, ['SS', 2], function () { return Math.floor(this.milliseconds / 10); });
53
+ addFormatToken(0, ['SSS', 3], 'milliseconds');
54
+ addFormatToken('s', ['ss', 2], 'seconds');
55
+ addFormatToken('m', ['mm', 2], 'minutes');
56
+ addFormatToken('h', ['hh', 2], function () { return (this.hours % 12) || 12; });
57
+ addFormatToken('H', ['HH', 2], 'hours');
58
+ addFormatToken('d', 0, 'dayOfWeek');
59
+ addFormatToken('D', ['DD', 2], 'day');
60
+ addFormatToken('M', ['MM', 2], 'month');
61
+ addFormatToken(0, ['YY', 2], function () { return this.year % 100; });
62
+ addFormatToken('Y', ['YYYY', 4], 'year');
63
+ addFormatToken('z', 0, function () { return this.zone.abbreviation; });
64
+ function addTimeZoneFormatToken(token, separator) {
65
+ addFormatToken(token, 0, function () {
66
+ let offset = -this.zone.offset;
67
+ const sign = offset < 0 ? '-' : '+';
68
+ offset = Math.abs(offset);
69
+ return sign + padWithZeros(Math.floor(offset / 60), 2) + separator + padWithZeros(offset % 60, 2);
70
+ });
71
+ }
72
+ addTimeZoneFormatToken('Z', ':');
73
+ addTimeZoneFormatToken('ZZ', '');
74
+ const padToN = [undefined, undefined, padToTwo, padToThree, padToFour];
75
+ function padWithZeros(number, length) {
76
+ return padToN[length](number);
77
+ }
78
+ function padToTwo(number) {
79
+ return number > 9 ? number : '0' + number;
80
+ }
81
+ function padToThree(number) {
82
+ return number > 99 ? number : number > 9 ? '0' + number : '00' + number;
83
+ }
84
+ function padToFour(number) {
85
+ return number > 999 ? number : number > 99 ? '0' + number : number > 9 ? '00' + number : '000' + number;
86
+ }
87
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZXpvbmUtc3VwcG9ydC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25vdm8tZWxlbWVudHMvc3JjL3V0aWxzL2RhdGUvdGltZXpvbmUtc3VwcG9ydC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0lBR0k7QUFFSixNQUFNLGVBQWUsR0FBRyxrRkFBa0YsQ0FBQztBQUMzRyxNQUFNLG9CQUFvQixHQUFHLEVBQUUsQ0FBQztBQUNoQyxNQUFNLFVBQVUsR0FBRyxFQUFFLENBQUM7QUFFdEIsTUFBTSxVQUFVLGVBQWUsQ0FBQyxJQUFJLEVBQUUsTUFBTTtJQUMxQyxJQUFJLFNBQVMsR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbkMsSUFBSSxDQUFDLFNBQVMsRUFBRTtRQUNkLFNBQVMsR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLEdBQUcsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0tBQ3hEO0lBQ0QsT0FBTyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDekIsQ0FBQztBQUVELFNBQVMsYUFBYSxDQUFFLE1BQU07SUFDNUIsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUM1QyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsS0FBSyxDQUFDO0lBQ3pCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxNQUFNLEVBQUUsRUFBRSxDQUFDLEVBQUU7UUFDL0IsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3ZCLE1BQU0sU0FBUyxHQUFHLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzlDLElBQUksU0FBUyxFQUFFO1lBQ2IsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQztTQUN0QjthQUFNO1lBQ0wsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1NBQzFDO0tBQ0Y7SUFDRCxPQUFPLFVBQVUsSUFBSTtRQUNuQixJQUFJLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFDaEIsS0FBSyxNQUFNLEtBQUssSUFBSSxLQUFLLEVBQUU7WUFDekIsTUFBTSxJQUFJLE9BQU8sS0FBSyxLQUFLLFVBQVUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1NBQ2xFO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQyxDQUFBO0FBQ0gsQ0FBQztBQUVELE1BQU0sY0FBYyxHQUFHLFVBQVUsS0FBSyxFQUFFLE1BQU0sRUFBRSxRQUFRO0lBQ3RELE1BQU0sUUFBUSxHQUFHLE9BQU8sUUFBUSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFDOUMsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDeEIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUM7SUFDYixJQUFJLEtBQUssRUFBRTtRQUNULG9CQUFvQixDQUFDLEtBQUssQ0FBQyxHQUFHLFFBQVEsQ0FBQztLQUN4QztJQUNELElBQUksTUFBTSxFQUFFO1FBQ1Ysb0JBQW9CLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUc7WUFDaEMsT0FBTyxZQUFZLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN0RCxDQUFDLENBQUE7S0FDRjtBQUNILENBQUMsQ0FBQTtBQUVELGNBQWMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLGNBQWMsT0FBTyxJQUFJLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUEsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM3RSxjQUFjLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxjQUFjLE9BQU8sSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFBLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDN0UsY0FBYyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsY0FBYyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFlBQVksR0FBRyxHQUFHLENBQUMsQ0FBQSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ25GLGNBQWMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsY0FBYyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFlBQVksR0FBRyxFQUFFLENBQUMsQ0FBQSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3hGLGNBQWMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLEVBQUUsY0FBYyxDQUFDLENBQUM7QUFDOUMsY0FBYyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQztBQUMxQyxjQUFjLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBQzFDLGNBQWMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsY0FBYyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUEsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMvRSxjQUFjLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ3hDLGNBQWMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0FBQ3BDLGNBQWMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDdEMsY0FBYyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQztBQUN4QyxjQUFjLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLGNBQWMsT0FBTyxJQUFJLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3JFLGNBQWMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDekMsY0FBYyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsY0FBYyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFBLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFFdEUsU0FBUyxzQkFBc0IsQ0FBRSxLQUFLLEVBQUUsU0FBUztJQUMvQyxjQUFjLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRTtRQUN2QixJQUFJLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQy9CLE1BQU0sSUFBSSxHQUFHLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO1FBQ3BDLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzFCLE9BQU8sSUFBSSxHQUFHLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxTQUFTLEdBQUcsWUFBWSxDQUFDLE1BQU0sR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDcEcsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQsc0JBQXNCLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQ2pDLHNCQUFzQixDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztBQUVqQyxNQUFNLE1BQU0sR0FBRyxDQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxTQUFTLENBQUUsQ0FBQztBQUV6RSxTQUFTLFlBQVksQ0FBRSxNQUFNLEVBQUUsTUFBTTtJQUNuQyxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNoQyxDQUFDO0FBRUQsU0FBUyxRQUFRLENBQUUsTUFBTTtJQUN2QixPQUFPLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLE1BQU0sQ0FBQztBQUM1QyxDQUFDO0FBRUQsU0FBUyxVQUFVLENBQUUsTUFBTTtJQUN6QixPQUFPLE1BQU0sR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQztBQUMxRSxDQUFDO0FBRUQsU0FBUyxTQUFTLENBQUUsTUFBTTtJQUN4QixPQUFPLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQztBQUMxRyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqIFxuICogQ29weXJpZ2h0IMKpIDIwMTgtMjAyMiBGZXJkaW5hbmQgUHJhbnRsXG4gKiBodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS90aW1lem9uZS1zdXBwb3J0XG4gKiovXG5cbmNvbnN0IGZvcm1hdHRpbmdUb2tlbiA9IC8oXFxbW15bXSpcXF0pfChbLTovLigpXFxzXSspfChBfGF8WVlZWXxZWT98TU0/fEREP3xkfGhoP3xISD98bW0/fHNzP3xTezEsM318enxaWj8pL2c7XG5jb25zdCBmb3JtYXRUb2tlbkZ1bmN0aW9ucyA9IHt9O1xuY29uc3QgZm9ybWF0dGVycyA9IHt9O1xuXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0Wm9uZWRUaW1lKHRpbWUsIGZvcm1hdCkge1xuICBsZXQgZm9ybWF0dGVyID0gZm9ybWF0dGVyc1tmb3JtYXRdO1xuICBpZiAoIWZvcm1hdHRlcikge1xuICAgIGZvcm1hdHRlciA9IGZvcm1hdHRlcnNbZm9ybWF0XSA9IG1ha2VGb3JtYXR0ZXIoZm9ybWF0KTtcbiAgfVxuICByZXR1cm4gZm9ybWF0dGVyKHRpbWUpO1xufVxuXG5mdW5jdGlvbiBtYWtlRm9ybWF0dGVyIChmb3JtYXQpIHtcbiAgY29uc3QgYXJyYXkgPSBmb3JtYXQubWF0Y2goZm9ybWF0dGluZ1Rva2VuKTtcbiAgY29uc3QgeyBsZW5ndGggfSA9IGFycmF5O1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7XG4gICAgY29uc3QgdG9rZW4gPSBhcnJheVtpXTtcbiAgICBjb25zdCBmb3JtYXR0ZXIgPSBmb3JtYXRUb2tlbkZ1bmN0aW9uc1t0b2tlbl07XG4gICAgaWYgKGZvcm1hdHRlcikge1xuICAgICAgYXJyYXlbaV0gPSBmb3JtYXR0ZXI7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFycmF5W2ldID0gdG9rZW4ucmVwbGFjZSgvXlxcW3xcXF0kL2csICcnKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGZ1bmN0aW9uICh0aW1lKSB7XG4gICAgbGV0IG91dHB1dCA9ICcnO1xuICAgIGZvciAoY29uc3QgdG9rZW4gb2YgYXJyYXkpIHtcbiAgICAgIG91dHB1dCArPSB0eXBlb2YgdG9rZW4gPT09ICdmdW5jdGlvbicgPyB0b2tlbi5jYWxsKHRpbWUpIDogdG9rZW47XG4gICAgfVxuICAgIHJldHVybiBvdXRwdXQ7XG4gIH1cbn1cblxuY29uc3QgYWRkRm9ybWF0VG9rZW4gPSBmdW5jdGlvbiAodG9rZW4sIHBhZGRlZCwgcHJvcGVydHkpIHtcbiAgY29uc3QgY2FsbGJhY2sgPSB0eXBlb2YgcHJvcGVydHkgPT09ICdzdHJpbmcnID8gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzW3Byb3BlcnR5XTtcbiAgfSA6IHByb3BlcnR5O1xuICBpZiAodG9rZW4pIHtcbiAgICBmb3JtYXRUb2tlbkZ1bmN0aW9uc1t0b2tlbl0gPSBjYWxsYmFjaztcbiAgfVxuICBpZiAocGFkZGVkKSB7XG4gICAgZm9ybWF0VG9rZW5GdW5jdGlvbnNbcGFkZGVkWzBdXSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBwYWRXaXRoWmVyb3MoY2FsbGJhY2suY2FsbCh0aGlzKSwgcGFkZGVkWzFdKTtcbiAgICB9XG4gIH1cbn1cblxuYWRkRm9ybWF0VG9rZW4oJ0EnLCAwLCBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzLmhvdXJzIDwgMTIgPyAnQU0nIDogJ1BNJyB9KTtcbmFkZEZvcm1hdFRva2VuKCdhJywgMCwgZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcy5ob3VycyA8IDEyID8gJ2FtJyA6ICdwbScgfSk7XG5hZGRGb3JtYXRUb2tlbignUycsIDAsIGZ1bmN0aW9uICgpIHsgcmV0dXJuIE1hdGguZmxvb3IodGhpcy5taWxsaXNlY29uZHMgLyAxMDApIH0pO1xuYWRkRm9ybWF0VG9rZW4oMCwgWydTUycsIDJdLCBmdW5jdGlvbiAoKSB7IHJldHVybiBNYXRoLmZsb29yKHRoaXMubWlsbGlzZWNvbmRzIC8gMTApIH0pO1xuYWRkRm9ybWF0VG9rZW4oMCwgWydTU1MnLCAzXSwgJ21pbGxpc2Vjb25kcycpO1xuYWRkRm9ybWF0VG9rZW4oJ3MnLCBbJ3NzJywgMl0sICdzZWNvbmRzJyk7XG5hZGRGb3JtYXRUb2tlbignbScsIFsnbW0nLCAyXSwgJ21pbnV0ZXMnKTtcbmFkZEZvcm1hdFRva2VuKCdoJywgWydoaCcsIDJdLCBmdW5jdGlvbiAoKSB7IHJldHVybiAodGhpcy5ob3VycyAlIDEyKSB8fCAxMiB9KTtcbmFkZEZvcm1hdFRva2VuKCdIJywgWydISCcsIDJdLCAnaG91cnMnKTtcbmFkZEZvcm1hdFRva2VuKCdkJywgMCwgJ2RheU9mV2VlaycpO1xuYWRkRm9ybWF0VG9rZW4oJ0QnLCBbJ0REJywgMl0sICdkYXknKTtcbmFkZEZvcm1hdFRva2VuKCdNJywgWydNTScsIDJdLCAnbW9udGgnKTtcbmFkZEZvcm1hdFRva2VuKDAsIFsnWVknLCAyXSwgZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcy55ZWFyICUgMTAwIH0pO1xuYWRkRm9ybWF0VG9rZW4oJ1knLCBbJ1lZWVknLCA0XSwgJ3llYXInKTtcbmFkZEZvcm1hdFRva2VuKCd6JywgMCwgZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcy56b25lLmFiYnJldmlhdGlvbiB9KTtcblxuZnVuY3Rpb24gYWRkVGltZVpvbmVGb3JtYXRUb2tlbiAodG9rZW4sIHNlcGFyYXRvcikge1xuICBhZGRGb3JtYXRUb2tlbih0b2tlbiwgMCwgZnVuY3Rpb24gKCkge1xuICAgIGxldCBvZmZzZXQgPSAtdGhpcy56b25lLm9mZnNldDtcbiAgICBjb25zdCBzaWduID0gb2Zmc2V0IDwgMCA/ICctJyA6ICcrJztcbiAgICBvZmZzZXQgPSBNYXRoLmFicyhvZmZzZXQpO1xuICAgIHJldHVybiBzaWduICsgcGFkV2l0aFplcm9zKE1hdGguZmxvb3Iob2Zmc2V0IC8gNjApLCAyKSArIHNlcGFyYXRvciArIHBhZFdpdGhaZXJvcyhvZmZzZXQgJSA2MCwgMik7XG4gIH0pO1xufVxuXG5hZGRUaW1lWm9uZUZvcm1hdFRva2VuKCdaJywgJzonKTtcbmFkZFRpbWVab25lRm9ybWF0VG9rZW4oJ1paJywgJycpO1xuXG5jb25zdCBwYWRUb04gPSBbIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBwYWRUb1R3bywgcGFkVG9UaHJlZSwgcGFkVG9Gb3VyIF07XG5cbmZ1bmN0aW9uIHBhZFdpdGhaZXJvcyAobnVtYmVyLCBsZW5ndGgpIHtcbiAgcmV0dXJuIHBhZFRvTltsZW5ndGhdKG51bWJlcik7XG59XG5cbmZ1bmN0aW9uIHBhZFRvVHdvIChudW1iZXIpIHtcbiAgcmV0dXJuIG51bWJlciA+IDkgPyBudW1iZXIgOiAnMCcgKyBudW1iZXI7XG59XG5cbmZ1bmN0aW9uIHBhZFRvVGhyZWUgKG51bWJlcikge1xuICByZXR1cm4gbnVtYmVyID4gOTkgPyBudW1iZXIgOiBudW1iZXIgPiA5ID8gJzAnICsgbnVtYmVyIDogJzAwJyArIG51bWJlcjtcbn1cblxuZnVuY3Rpb24gcGFkVG9Gb3VyIChudW1iZXIpIHtcbiAgcmV0dXJuIG51bWJlciA+IDk5OSA/IG51bWJlciA6IG51bWJlciA+IDk5ID8gJzAnICsgbnVtYmVyIDogbnVtYmVyID4gOSA/ICcwMCcgKyBudW1iZXIgOiAnMDAwJyArIG51bWJlcjtcbn1cbiJdfQ==