@sbb-esta/lyne-elements-experimental 1.0.0 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/{constants-ClrwyPF-.js → constants-DSR8hPvP.js} +10 -6
  2. package/core/datetime.js +65 -72
  3. package/core/timetable/timetable-helper.d.ts +7 -3
  4. package/core/timetable/timetable-helper.d.ts.map +1 -1
  5. package/custom-elements.json +8 -26
  6. package/development/{constants-D72r1E-c.js → constants-BMGwMkN3.js} +10 -2
  7. package/development/core/datetime.js +4 -11
  8. package/development/core/timetable/timetable-helper.d.ts +7 -3
  9. package/development/core/timetable/timetable-helper.d.ts.map +1 -1
  10. package/development/differenceInMinutes-DHtPDiUE.js +30 -0
  11. package/development/{format-BOXfsJCN.js → format-DkbylFCM.js} +3 -3
  12. package/development/{isValid-YTpbhEHG.js → isValid-BVccOlli.js} +2 -10
  13. package/development/journey-summary.js +9 -3
  14. package/development/pearl-chain/pearl-chain.d.ts.map +1 -1
  15. package/development/pearl-chain/pearl-chain.sample-data.d.ts +21 -3
  16. package/development/pearl-chain/pearl-chain.sample-data.d.ts.map +1 -1
  17. package/development/pearl-chain-time.js +8 -2
  18. package/development/pearl-chain-vertical-item.js +7 -1
  19. package/development/pearl-chain-vertical.js +7 -1
  20. package/development/pearl-chain.js +42 -20
  21. package/development/teaser-hero.js +7 -1
  22. package/development/teaser-paid.js +7 -1
  23. package/development/timetable-duration.js +7 -1
  24. package/development/timetable-row/timetable-row.d.ts +0 -1
  25. package/development/timetable-row/timetable-row.d.ts.map +1 -1
  26. package/development/timetable-row/timetable-row.sample-data.d.ts.map +1 -1
  27. package/development/timetable-row.js +16 -22
  28. package/differenceInMinutes-BhHyuJc4.js +28 -0
  29. package/{format-qHhIvnY8.js → format-fWxoS2xH.js} +2 -2
  30. package/{isValid-Df_caLp4.js → isValid-DSjxf8eh.js} +9 -13
  31. package/journey-summary.js +2 -2
  32. package/package.json +2 -2
  33. package/pearl-chain/pearl-chain.d.ts.map +1 -1
  34. package/pearl-chain/pearl-chain.sample-data.d.ts +21 -3
  35. package/pearl-chain/pearl-chain.sample-data.d.ts.map +1 -1
  36. package/pearl-chain-time.js +1 -1
  37. package/pearl-chain.js +106 -99
  38. package/timetable-row/timetable-row.d.ts +0 -1
  39. package/timetable-row/timetable-row.d.ts.map +1 -1
  40. package/timetable-row/timetable-row.sample-data.d.ts.map +1 -1
  41. package/timetable-row.js +124 -138
  42. package/development/differenceInMinutes-D47vcSvy.js +0 -21
  43. package/differenceInMinutes-CDpgJIgL.js +0 -19
@@ -1,12 +1,16 @@
1
- function o(t) {
1
+ function n(t) {
2
2
  const e = Object.prototype.toString.call(t);
3
3
  return t instanceof Date || typeof t == "object" && e === "[object Date]" ? new t.constructor(+t) : typeof t == "number" || e === "[object Number]" || typeof t == "string" || e === "[object String]" ? new Date(t) : /* @__PURE__ */ new Date(NaN);
4
4
  }
5
- const s = 6048e5, n = 864e5, c = 6e4, i = 36e5;
5
+ function o(t, e) {
6
+ return t instanceof Date ? new t.constructor(e) : new Date(e);
7
+ }
8
+ const s = 6048e5, c = 864e5, i = 6e4, r = 36e5;
6
9
  export {
7
- i as a,
8
- c as b,
9
- n as c,
10
+ r as a,
11
+ i as b,
12
+ o as c,
13
+ c as d,
10
14
  s as m,
11
- o as t
15
+ n as t
12
16
  };
package/core/datetime.js CHANGED
@@ -1,53 +1,46 @@
1
- import { i18nDurationDay as g, i18nDurationHour as N, i18nDurationMinute as T } from "@sbb-esta/lyne-elements/core/i18n.js";
2
- import { t as d, a as D, b as p } from "../constants-ClrwyPF-.js";
3
- import { c as w, d as $, i as y } from "../isValid-Df_caLp4.js";
4
- import { a as U, g as C, d as Y } from "../differenceInMinutes-CDpgJIgL.js";
5
- function F(t, e) {
6
- const n = d(t);
7
- return isNaN(e) ? w(t, NaN) : (e && n.setDate(n.getDate() + e), n);
8
- }
9
- function M(t, e) {
10
- const n = +d(t);
11
- return w(t, n + e);
12
- }
1
+ import { i18nDurationDay as p, i18nDurationHour as g, i18nDurationMinute as N } from "@sbb-esta/lyne-elements/core/i18n.js";
2
+ import { t as m, c as M, a as d, b as h } from "../constants-DSR8hPvP.js";
3
+ import { d as I, i as $ } from "../isValid-DSjxf8eh.js";
4
+ import { b as y, c as U, g as C, a as Y, d as F } from "../differenceInMinutes-BhHyuJc4.js";
13
5
  function x(t, e) {
14
- return M(t, e * D);
6
+ const n = m(t);
7
+ return isNaN(e) ? M(t, NaN) : (e && n.setDate(n.getDate() + e), n);
15
8
  }
16
9
  function H(t, e) {
17
- return M(t, e * p);
10
+ return y(t, e * d);
18
11
  }
19
12
  function S(t, e) {
20
- const n = d(t), r = d(e), s = h(n, r), i = Math.abs($(n, r));
21
- n.setDate(n.getDate() - s * i);
22
- const a = +(h(n, r) === -s), u = s * (i - a);
13
+ const n = m(t), s = m(e), r = T(n, s), i = Math.abs(I(n, s));
14
+ n.setDate(n.getDate() - r * i);
15
+ const a = +(T(n, s) === -r), u = r * (i - a);
23
16
  return u === 0 ? 0 : u;
24
17
  }
25
- function h(t, e) {
18
+ function T(t, e) {
26
19
  const n = t.getFullYear() - e.getFullYear() || t.getMonth() - e.getMonth() || t.getDate() - e.getDate() || t.getHours() - e.getHours() || t.getMinutes() - e.getMinutes() || t.getSeconds() - e.getSeconds() || t.getMilliseconds() - e.getMilliseconds();
27
20
  return n < 0 ? -1 : n > 0 ? 1 : n;
28
21
  }
29
22
  function z(t, e, n) {
30
- const r = U(t, e) / D;
31
- return C(n == null ? void 0 : n.roundingMethod)(r);
23
+ const s = U(t, e) / d;
24
+ return C(n == null ? void 0 : n.roundingMethod)(s);
32
25
  }
33
26
  function Z(t, e) {
34
- return F(t, -e);
27
+ return x(t, -e);
35
28
  }
36
- function O(t, e) {
37
- const r = W(t);
38
- let s;
39
- if (r.date) {
40
- const o = _(r.date, 2);
41
- s = j(o.restDateString, o.year);
29
+ function b(t, e) {
30
+ const s = W(t);
31
+ let r;
32
+ if (s.date) {
33
+ const o = _(s.date, 2);
34
+ r = j(o.restDateString, o.year);
42
35
  }
43
- if (!s || isNaN(s.getTime()))
36
+ if (!r || isNaN(r.getTime()))
44
37
  return /* @__PURE__ */ new Date(NaN);
45
- const i = s.getTime();
38
+ const i = r.getTime();
46
39
  let a = 0, u;
47
- if (r.time && (a = A(r.time), isNaN(a)))
40
+ if (s.time && (a = A(s.time), isNaN(a)))
48
41
  return /* @__PURE__ */ new Date(NaN);
49
- if (r.timezone) {
50
- if (u = E(r.timezone), isNaN(u))
42
+ if (s.timezone) {
43
+ if (u = E(s.timezone), isNaN(u))
51
44
  return /* @__PURE__ */ new Date(NaN);
52
45
  } else {
53
46
  const o = new Date(i + a), c = /* @__PURE__ */ new Date(0);
@@ -68,42 +61,42 @@ const f = {
68
61
  dateTimeDelimiter: /[T ]/,
69
62
  timeZoneDelimiter: /[Z ]/i,
70
63
  timezone: /([Z+-].*)$/
71
- }, b = /^-?(?:(\d{3})|(\d{2})(?:-?(\d{2}))?|W(\d{2})(?:-?(\d{1}))?|)$/, v = /^(\d{2}(?:[.,]\d*)?)(?::?(\d{2}(?:[.,]\d*)?))?(?::?(\d{2}(?:[.,]\d*)?))?$/, k = /^([+-])(\d{2})(?::?(\d{2}))?$/;
64
+ }, O = /^-?(?:(\d{3})|(\d{2})(?:-?(\d{2}))?|W(\d{2})(?:-?(\d{1}))?|)$/, v = /^(\d{2}(?:[.,]\d*)?)(?::?(\d{2}(?:[.,]\d*)?))?(?::?(\d{2}(?:[.,]\d*)?))?$/, k = /^([+-])(\d{2})(?::?(\d{2}))?$/;
72
65
  function W(t) {
73
66
  const e = {}, n = t.split(f.dateTimeDelimiter);
74
- let r;
67
+ let s;
75
68
  if (n.length > 2)
76
69
  return e;
77
- if (/:/.test(n[0]) ? r = n[0] : (e.date = n[0], r = n[1], f.timeZoneDelimiter.test(e.date) && (e.date = t.split(f.timeZoneDelimiter)[0], r = t.substr(
70
+ if (/:/.test(n[0]) ? s = n[0] : (e.date = n[0], s = n[1], f.timeZoneDelimiter.test(e.date) && (e.date = t.split(f.timeZoneDelimiter)[0], s = t.substr(
78
71
  e.date.length,
79
72
  t.length
80
- ))), r) {
81
- const s = f.timezone.exec(r);
82
- s ? (e.time = r.replace(s[1], ""), e.timezone = s[1]) : e.time = r;
73
+ ))), s) {
74
+ const r = f.timezone.exec(s);
75
+ r ? (e.time = s.replace(r[1], ""), e.timezone = r[1]) : e.time = s;
83
76
  }
84
77
  return e;
85
78
  }
86
79
  function _(t, e) {
87
80
  const n = new RegExp(
88
81
  "^(?:(\\d{4}|[+-]\\d{" + (4 + e) + "})|(\\d{2}|[+-]\\d{" + (2 + e) + "})$)"
89
- ), r = t.match(n);
90
- if (!r) return { year: NaN, restDateString: "" };
91
- const s = r[1] ? parseInt(r[1]) : null, i = r[2] ? parseInt(r[2]) : null;
82
+ ), s = t.match(n);
83
+ if (!s) return { year: NaN, restDateString: "" };
84
+ const r = s[1] ? parseInt(s[1]) : null, i = s[2] ? parseInt(s[2]) : null;
92
85
  return {
93
- year: i === null ? s : i * 100,
94
- restDateString: t.slice((r[1] || r[2]).length)
86
+ year: i === null ? r : i * 100,
87
+ restDateString: t.slice((s[1] || s[2]).length)
95
88
  };
96
89
  }
97
90
  function j(t, e) {
98
91
  if (e === null) return /* @__PURE__ */ new Date(NaN);
99
- const n = t.match(b);
92
+ const n = t.match(O);
100
93
  if (!n) return /* @__PURE__ */ new Date(NaN);
101
- const r = !!n[4], s = l(n[1]), i = l(n[2]) - 1, a = l(n[3]), u = l(n[4]), o = l(n[5]) - 1;
102
- if (r)
94
+ const s = !!n[4], r = l(n[1]), i = l(n[2]) - 1, a = l(n[3]), u = l(n[4]), o = l(n[5]) - 1;
95
+ if (s)
103
96
  return B(e, u, o) ? J(e, u, o) : /* @__PURE__ */ new Date(NaN);
104
97
  {
105
98
  const c = /* @__PURE__ */ new Date(0);
106
- return !V(e, i, a) || !q(e, s) ? /* @__PURE__ */ new Date(NaN) : (c.setUTCFullYear(e, i, Math.max(s, a)), c);
99
+ return !V(e, i, a) || !q(e, r) ? /* @__PURE__ */ new Date(NaN) : (c.setUTCFullYear(e, i, Math.max(r, a)), c);
107
100
  }
108
101
  }
109
102
  function l(t) {
@@ -112,34 +105,34 @@ function l(t) {
112
105
  function A(t) {
113
106
  const e = t.match(v);
114
107
  if (!e) return NaN;
115
- const n = m(e[1]), r = m(e[2]), s = m(e[3]);
116
- return G(n, r, s) ? n * D + r * p + s * 1e3 : NaN;
108
+ const n = D(e[1]), s = D(e[2]), r = D(e[3]);
109
+ return G(n, s, r) ? n * d + s * h + r * 1e3 : NaN;
117
110
  }
118
- function m(t) {
111
+ function D(t) {
119
112
  return t && parseFloat(t.replace(",", ".")) || 0;
120
113
  }
121
114
  function E(t) {
122
115
  if (t === "Z") return 0;
123
116
  const e = t.match(k);
124
117
  if (!e) return 0;
125
- const n = e[1] === "+" ? -1 : 1, r = parseInt(e[2]), s = e[3] && parseInt(e[3]) || 0;
126
- return K(r, s) ? n * (r * D + s * p) : NaN;
118
+ const n = e[1] === "+" ? -1 : 1, s = parseInt(e[2]), r = e[3] && parseInt(e[3]) || 0;
119
+ return K(s, r) ? n * (s * d + r * h) : NaN;
127
120
  }
128
121
  function J(t, e, n) {
129
- const r = /* @__PURE__ */ new Date(0);
130
- r.setUTCFullYear(t, 0, 4);
131
- const s = r.getUTCDay() || 7, i = (e - 1) * 7 + n + 1 - s;
132
- return r.setUTCDate(r.getUTCDate() + i), r;
122
+ const s = /* @__PURE__ */ new Date(0);
123
+ s.setUTCFullYear(t, 0, 4);
124
+ const r = s.getUTCDay() || 7, i = (e - 1) * 7 + n + 1 - r;
125
+ return s.setUTCDate(s.getUTCDate() + i), s;
133
126
  }
134
127
  const R = [31, null, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
135
- function I(t) {
128
+ function w(t) {
136
129
  return t % 400 === 0 || t % 4 === 0 && t % 100 !== 0;
137
130
  }
138
131
  function V(t, e, n) {
139
- return e >= 0 && e <= 11 && n >= 1 && n <= (R[e] || (I(t) ? 29 : 28));
132
+ return e >= 0 && e <= 11 && n >= 1 && n <= (R[e] || (w(t) ? 29 : 28));
140
133
  }
141
134
  function q(t, e) {
142
- return e >= 1 && e <= (I(t) ? 366 : 365);
135
+ return e >= 1 && e <= (w(t) ? 366 : 365);
143
136
  }
144
137
  function B(t, e, n) {
145
138
  return e >= 1 && e <= 53 && n >= 0 && n <= 6;
@@ -151,13 +144,13 @@ function K(t, e) {
151
144
  return e >= 0 && e <= 59;
152
145
  }
153
146
  function P(t, e) {
154
- return x(t, -e);
147
+ return H(t, -e);
155
148
  }
156
149
  function te(t) {
157
150
  if (!t)
158
151
  return;
159
- const e = O(t);
160
- if (y(e)) {
152
+ const e = b(t);
153
+ if ($(e)) {
161
154
  if (t.includes("Z"))
162
155
  return new Date(t.replace("Z", ""));
163
156
  if (t.includes("T")) {
@@ -169,22 +162,22 @@ function te(t) {
169
162
  }
170
163
  }
171
164
  const ne = (t, e) => {
172
- const n = [], r = [];
173
- let i = H(0, t);
165
+ const n = [], s = [];
166
+ let i = Y(0, t);
174
167
  const a = S(i, 0);
175
- a > 0 && (n.push(`${a} d`), e && r.push(
176
- `${a} ${a > 1 ? g.multiple.long[e] : g.single.long[e]}`
168
+ a > 0 && (n.push(`${a} d`), e && s.push(
169
+ `${a} ${a > 1 ? p.multiple.long[e] : p.single.long[e]}`
177
170
  ), i = Z(i, a));
178
171
  const u = z(i, 0);
179
- u > 0 && (n.push(`${u} h`), e && r.push(
180
- `${u} ${u > 1 ? N.multiple.long[e] : N.single.long[e]}`
172
+ u > 0 && (n.push(`${u} h`), e && s.push(
173
+ `${u} ${u > 1 ? g.multiple.long[e] : g.single.long[e]}`
181
174
  ), i = P(i, u));
182
- const o = Y(i, 0);
183
- return o > 0 && (n.push(`${o} min`), e && r.push(
184
- `${o} ${o > 1 ? T.multiple.long[e] : T.single.long[e]}`
175
+ const o = F(i, 0);
176
+ return o > 0 && (n.push(`${o} min`), e && s.push(
177
+ `${o} ${o > 1 ? N.multiple.long[e] : N.single.long[e]}`
185
178
  )), {
186
179
  short: n.join(" "),
187
- long: r.join(" ")
180
+ long: s.join(" ")
188
181
  };
189
182
  };
190
183
  export {
@@ -1,7 +1,11 @@
1
- import { Notice } from './timetable-properties.js';
1
+ import { Leg, Notice } from './timetable-properties.js';
2
2
 
3
- export declare const isRideLeg: (leg: any) => leg is never;
4
- export declare const isConnectionLeg: (leg: any) => leg is never;
3
+ export declare const isRideLeg: (leg: any) => leg is Extract<Leg, {
4
+ __typename: "PTRideLeg";
5
+ }>;
6
+ export declare const isConnectionLeg: (leg: any) => leg is Extract<Leg, {
7
+ __typename: "PTConnectionLeg";
8
+ }>;
5
9
  export declare const extractTimeAndStringFromNoticeText: (notice?: Notice) => {
6
10
  duration: number;
7
11
  text: string;
@@ -1 +1 @@
1
- {"version":3,"file":"timetable-helper.d.ts","sourceRoot":"","sources":["../../../../src/elements-experimental/core/timetable/timetable-helper.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAO,MAAM,EAAE,MAAM,2BAA2B,CAAC;AAE7D,eAAO,MAAM,SAAS,QAAS,GAAG,iBAEjC,CAAC;AAEF,eAAO,MAAM,eAAe,QACrB,GAAG,iBAGT,CAAC;AAEF,eAAO,MAAM,kCAAkC,YACpC,MAAM,KACd;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAWlC,CAAC"}
1
+ {"version":3,"file":"timetable-helper.d.ts","sourceRoot":"","sources":["../../../../src/elements-experimental/core/timetable/timetable-helper.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AAE7D,eAAO,MAAM,SAAS,QAAS,GAAG,KAAG,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE;IAAE,UAAU,EAAE,WAAW,CAAA;CAAE,CAEnF,CAAC;AAEF,eAAO,MAAM,eAAe,QACrB,GAAG,KACP,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE;IAAE,UAAU,EAAE,iBAAiB,CAAA;CAAE,CAEvD,CAAC;AAEF,eAAO,MAAM,kCAAkC,YACpC,MAAM,KACd;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAWlC,CAAC"}
@@ -681,14 +681,14 @@
681
681
  "name": "start",
682
682
  "optional": true,
683
683
  "type": {
684
- "text": "Date"
684
+ "text": "Time"
685
685
  }
686
686
  },
687
687
  {
688
688
  "name": "end",
689
689
  "optional": true,
690
690
  "type": {
691
- "text": "Date"
691
+ "text": "Time"
692
692
  }
693
693
  }
694
694
  ]
@@ -710,17 +710,17 @@
710
710
  }
711
711
  },
712
712
  {
713
- "name": "end",
713
+ "name": "start",
714
714
  "optional": true,
715
715
  "type": {
716
- "text": "Date"
716
+ "text": "Time"
717
717
  }
718
718
  },
719
719
  {
720
- "name": "start",
720
+ "name": "end",
721
721
  "optional": true,
722
722
  "type": {
723
- "text": "Date"
723
+ "text": "Time"
724
724
  }
725
725
  }
726
726
  ]
@@ -745,14 +745,14 @@
745
745
  "name": "start",
746
746
  "optional": true,
747
747
  "type": {
748
- "text": "Date"
748
+ "text": "Time"
749
749
  }
750
750
  },
751
751
  {
752
752
  "name": "end",
753
753
  "optional": true,
754
754
  "type": {
755
- "text": "Date"
755
+ "text": "Time"
756
756
  }
757
757
  }
758
758
  ]
@@ -1335,24 +1335,6 @@
1335
1335
  },
1336
1336
  "description": "The skeleton render function for the loading state"
1337
1337
  },
1338
- {
1339
- "kind": "method",
1340
- "name": "_getQuayType",
1341
- "privacy": "private",
1342
- "return": {
1343
- "type": {
1344
- "text": "any"
1345
- }
1346
- },
1347
- "parameters": [
1348
- {
1349
- "name": "vehicleMode",
1350
- "type": {
1351
- "text": "string"
1352
- }
1353
- }
1354
- ]
1355
- },
1356
1338
  {
1357
1339
  "kind": "method",
1358
1340
  "name": "_getQuayTypeStrings",
@@ -8,6 +8,13 @@ function toDate(argument) {
8
8
  return /* @__PURE__ */ new Date(NaN);
9
9
  }
10
10
  }
11
+ function constructFrom(date, value) {
12
+ if (date instanceof Date) {
13
+ return new date.constructor(value);
14
+ } else {
15
+ return new Date(value);
16
+ }
17
+ }
11
18
  const millisecondsInWeek = 6048e5;
12
19
  const millisecondsInDay = 864e5;
13
20
  const millisecondsInMinute = 6e4;
@@ -15,8 +22,9 @@ const millisecondsInHour = 36e5;
15
22
  export {
16
23
  millisecondsInHour as a,
17
24
  millisecondsInMinute as b,
18
- millisecondsInDay as c,
25
+ constructFrom as c,
26
+ millisecondsInDay as d,
19
27
  millisecondsInWeek as m,
20
28
  toDate as t
21
29
  };
22
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLUQ3MnIxRS1jLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvdG9EYXRlLm1qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9jb25zdGFudHMubWpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQG5hbWUgdG9EYXRlXG4gKiBAY2F0ZWdvcnkgQ29tbW9uIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IENvbnZlcnQgdGhlIGdpdmVuIGFyZ3VtZW50IHRvIGFuIGluc3RhbmNlIG9mIERhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBDb252ZXJ0IHRoZSBnaXZlbiBhcmd1bWVudCB0byBhbiBpbnN0YW5jZSBvZiBEYXRlLlxuICpcbiAqIElmIHRoZSBhcmd1bWVudCBpcyBhbiBpbnN0YW5jZSBvZiBEYXRlLCB0aGUgZnVuY3Rpb24gcmV0dXJucyBpdHMgY2xvbmUuXG4gKlxuICogSWYgdGhlIGFyZ3VtZW50IGlzIGEgbnVtYmVyLCBpdCBpcyB0cmVhdGVkIGFzIGEgdGltZXN0YW1wLlxuICpcbiAqIElmIHRoZSBhcmd1bWVudCBpcyBub25lIG9mIHRoZSBhYm92ZSwgdGhlIGZ1bmN0aW9uIHJldHVybnMgSW52YWxpZCBEYXRlLlxuICpcbiAqICoqTm90ZSoqOiAqYWxsKiBEYXRlIGFyZ3VtZW50cyBwYXNzZWQgdG8gYW55ICpkYXRlLWZucyogZnVuY3Rpb24gaXMgcHJvY2Vzc2VkIGJ5IGB0b0RhdGVgLlxuICpcbiAqIEB0eXBlUGFyYW0gRGF0ZVR5cGUgLSBUaGUgYERhdGVgIHR5cGUsIHRoZSBmdW5jdGlvbiBvcGVyYXRlcyBvbi4gR2V0cyBpbmZlcnJlZCBmcm9tIHBhc3NlZCBhcmd1bWVudHMuIEFsbG93cyB0byB1c2UgZXh0ZW5zaW9ucyBsaWtlIFtgVVRDRGF0ZWBdKGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy91dGMpLlxuICpcbiAqIEBwYXJhbSBhcmd1bWVudCAtIFRoZSB2YWx1ZSB0byBjb252ZXJ0XG4gKlxuICogQHJldHVybnMgVGhlIHBhcnNlZCBkYXRlIGluIHRoZSBsb2NhbCB0aW1lIHpvbmVcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQ2xvbmUgdGhlIGRhdGU6XG4gKiBjb25zdCByZXN1bHQgPSB0b0RhdGUobmV3IERhdGUoMjAxNCwgMSwgMTEsIDExLCAzMCwgMzApKVxuICogLy89PiBUdWUgRmViIDExIDIwMTQgMTE6MzA6MzBcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQ29udmVydCB0aGUgdGltZXN0YW1wIHRvIGRhdGU6XG4gKiBjb25zdCByZXN1bHQgPSB0b0RhdGUoMTM5MjA5ODQzMDAwMClcbiAqIC8vPT4gVHVlIEZlYiAxMSAyMDE0IDExOjMwOjMwXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0RhdGUoYXJndW1lbnQpIHtcbiAgY29uc3QgYXJnU3RyID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGFyZ3VtZW50KTtcblxuICAvLyBDbG9uZSB0aGUgZGF0ZVxuICBpZiAoXG4gICAgYXJndW1lbnQgaW5zdGFuY2VvZiBEYXRlIHx8XG4gICAgKHR5cGVvZiBhcmd1bWVudCA9PT0gXCJvYmplY3RcIiAmJiBhcmdTdHIgPT09IFwiW29iamVjdCBEYXRlXVwiKVxuICApIHtcbiAgICAvLyBQcmV2ZW50IHRoZSBkYXRlIHRvIGxvc2UgdGhlIG1pbGxpc2Vjb25kcyB3aGVuIHBhc3NlZCB0byBuZXcgRGF0ZSgpIGluIElFMTBcbiAgICByZXR1cm4gbmV3IGFyZ3VtZW50LmNvbnN0cnVjdG9yKCthcmd1bWVudCk7XG4gIH0gZWxzZSBpZiAoXG4gICAgdHlwZW9mIGFyZ3VtZW50ID09PSBcIm51bWJlclwiIHx8XG4gICAgYXJnU3RyID09PSBcIltvYmplY3QgTnVtYmVyXVwiIHx8XG4gICAgdHlwZW9mIGFyZ3VtZW50ID09PSBcInN0cmluZ1wiIHx8XG4gICAgYXJnU3RyID09PSBcIltvYmplY3QgU3RyaW5nXVwiXG4gICkge1xuICAgIC8vIFRPRE86IENhbiB3ZSBnZXQgcmlkIG9mIGFzP1xuICAgIHJldHVybiBuZXcgRGF0ZShhcmd1bWVudCk7XG4gIH0gZWxzZSB7XG4gICAgLy8gVE9ETzogQ2FuIHdlIGdldCByaWQgb2YgYXM/XG4gICAgcmV0dXJuIG5ldyBEYXRlKE5hTik7XG4gIH1cbn1cblxuLy8gRmFsbGJhY2sgZm9yIG1vZHVsYXJpemVkIGltcG9ydHM6XG5leHBvcnQgZGVmYXVsdCB0b0RhdGU7XG4iLCIvKipcbiAqIEBtb2R1bGUgY29uc3RhbnRzXG4gKiBAc3VtbWFyeSBVc2VmdWwgY29uc3RhbnRzXG4gKiBAZGVzY3JpcHRpb25cbiAqIENvbGxlY3Rpb24gb2YgdXNlZnVsIGRhdGUgY29uc3RhbnRzLlxuICpcbiAqIFRoZSBjb25zdGFudHMgY291bGQgYmUgaW1wb3J0ZWQgZnJvbSBgZGF0ZS1mbnMvY29uc3RhbnRzYDpcbiAqXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgbWF4VGltZSwgbWluVGltZSB9IGZyb20gXCIuL2NvbnN0YW50cy9kYXRlLWZucy9jb25zdGFudHNcIjtcbiAqXG4gKiBmdW5jdGlvbiBpc0FsbG93ZWRUaW1lKHRpbWUpIHtcbiAqICAgcmV0dXJuIHRpbWUgPD0gbWF4VGltZSAmJiB0aW1lID49IG1pblRpbWU7XG4gKiB9XG4gKiBgYGBcbiAqL1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgZGF5c0luV2Vla1xuICogQHN1bW1hcnkgRGF5cyBpbiAxIHdlZWsuXG4gKi9cbmV4cG9ydCBjb25zdCBkYXlzSW5XZWVrID0gNztcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIGRheXNJblllYXJcbiAqIEBzdW1tYXJ5IERheXMgaW4gMSB5ZWFyLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogSG93IG1hbnkgZGF5cyBpbiBhIHllYXIuXG4gKlxuICogT25lIHllYXJzIGVxdWFscyAzNjUuMjQyNSBkYXlzIGFjY29yZGluZyB0byB0aGUgZm9ybXVsYTpcbiAqXG4gKiA+IExlYXAgeWVhciBvY2N1cmVzIGV2ZXJ5IDQgeWVhcnMsIGV4Y2VwdCBmb3IgeWVhcnMgdGhhdCBhcmUgZGl2aXNhYmxlIGJ5IDEwMCBhbmQgbm90IGRpdmlzYWJsZSBieSA0MDAuXG4gKiA+IDEgbWVhbiB5ZWFyID0gKDM2NSsxLzQtMS8xMDArMS80MDApIGRheXMgPSAzNjUuMjQyNSBkYXlzXG4gKi9cbmV4cG9ydCBjb25zdCBkYXlzSW5ZZWFyID0gMzY1LjI0MjU7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBtYXhUaW1lXG4gKiBAc3VtbWFyeSBNYXhpbXVtIGFsbG93ZWQgdGltZS5cbiAqXG4gKiBAZXhhbXBsZVxuICogaW1wb3J0IHsgbWF4VGltZSB9IGZyb20gXCIuL2NvbnN0YW50cy9kYXRlLWZucy9jb25zdGFudHNcIjtcbiAqXG4gKiBjb25zdCBpc1ZhbGlkID0gODY0MDAwMDAwMDAwMDAwMSA8PSBtYXhUaW1lO1xuICogLy89PiBmYWxzZVxuICpcbiAqIG5ldyBEYXRlKDg2NDAwMDAwMDAwMDAwMDEpO1xuICogLy89PiBJbnZhbGlkIERhdGVcbiAqL1xuZXhwb3J0IGNvbnN0IG1heFRpbWUgPSBNYXRoLnBvdygxMCwgOCkgKiAyNCAqIDYwICogNjAgKiAxMDAwO1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgbWluVGltZVxuICogQHN1bW1hcnkgTWluaW11bSBhbGxvd2VkIHRpbWUuXG4gKlxuICogQGV4YW1wbGVcbiAqIGltcG9ydCB7IG1pblRpbWUgfSBmcm9tIFwiLi9jb25zdGFudHMvZGF0ZS1mbnMvY29uc3RhbnRzXCI7XG4gKlxuICogY29uc3QgaXNWYWxpZCA9IC04NjQwMDAwMDAwMDAwMDAxID49IG1pblRpbWU7XG4gKiAvLz0+IGZhbHNlXG4gKlxuICogbmV3IERhdGUoLTg2NDAwMDAwMDAwMDAwMDEpXG4gKiAvLz0+IEludmFsaWQgRGF0ZVxuICovXG5leHBvcnQgY29uc3QgbWluVGltZSA9IC1tYXhUaW1lO1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgbWlsbGlzZWNvbmRzSW5XZWVrXG4gKiBAc3VtbWFyeSBNaWxsaXNlY29uZHMgaW4gMSB3ZWVrLlxuICovXG5leHBvcnQgY29uc3QgbWlsbGlzZWNvbmRzSW5XZWVrID0gNjA0ODAwMDAwO1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgbWlsbGlzZWNvbmRzSW5EYXlcbiAqIEBzdW1tYXJ5IE1pbGxpc2Vjb25kcyBpbiAxIGRheS5cbiAqL1xuZXhwb3J0IGNvbnN0IG1pbGxpc2Vjb25kc0luRGF5ID0gODY0MDAwMDA7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBtaWxsaXNlY29uZHNJbk1pbnV0ZVxuICogQHN1bW1hcnkgTWlsbGlzZWNvbmRzIGluIDEgbWludXRlXG4gKi9cbmV4cG9ydCBjb25zdCBtaWxsaXNlY29uZHNJbk1pbnV0ZSA9IDYwMDAwO1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgbWlsbGlzZWNvbmRzSW5Ib3VyXG4gKiBAc3VtbWFyeSBNaWxsaXNlY29uZHMgaW4gMSBob3VyXG4gKi9cbmV4cG9ydCBjb25zdCBtaWxsaXNlY29uZHNJbkhvdXIgPSAzNjAwMDAwO1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgbWlsbGlzZWNvbmRzSW5TZWNvbmRcbiAqIEBzdW1tYXJ5IE1pbGxpc2Vjb25kcyBpbiAxIHNlY29uZFxuICovXG5leHBvcnQgY29uc3QgbWlsbGlzZWNvbmRzSW5TZWNvbmQgPSAxMDAwO1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgbWludXRlc0luWWVhclxuICogQHN1bW1hcnkgTWludXRlcyBpbiAxIHllYXIuXG4gKi9cbmV4cG9ydCBjb25zdCBtaW51dGVzSW5ZZWFyID0gNTI1NjAwO1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgbWludXRlc0luTW9udGhcbiAqIEBzdW1tYXJ5IE1pbnV0ZXMgaW4gMSBtb250aC5cbiAqL1xuZXhwb3J0IGNvbnN0IG1pbnV0ZXNJbk1vbnRoID0gNDMyMDA7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBtaW51dGVzSW5EYXlcbiAqIEBzdW1tYXJ5IE1pbnV0ZXMgaW4gMSBkYXkuXG4gKi9cbmV4cG9ydCBjb25zdCBtaW51dGVzSW5EYXkgPSAxNDQwO1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgbWludXRlc0luSG91clxuICogQHN1bW1hcnkgTWludXRlcyBpbiAxIGhvdXIuXG4gKi9cbmV4cG9ydCBjb25zdCBtaW51dGVzSW5Ib3VyID0gNjA7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBtb250aHNJblF1YXJ0ZXJcbiAqIEBzdW1tYXJ5IE1vbnRocyBpbiAxIHF1YXJ0ZXIuXG4gKi9cbmV4cG9ydCBjb25zdCBtb250aHNJblF1YXJ0ZXIgPSAzO1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgbW9udGhzSW5ZZWFyXG4gKiBAc3VtbWFyeSBNb250aHMgaW4gMSB5ZWFyLlxuICovXG5leHBvcnQgY29uc3QgbW9udGhzSW5ZZWFyID0gMTI7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBxdWFydGVyc0luWWVhclxuICogQHN1bW1hcnkgUXVhcnRlcnMgaW4gMSB5ZWFyXG4gKi9cbmV4cG9ydCBjb25zdCBxdWFydGVyc0luWWVhciA9IDQ7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBzZWNvbmRzSW5Ib3VyXG4gKiBAc3VtbWFyeSBTZWNvbmRzIGluIDEgaG91ci5cbiAqL1xuZXhwb3J0IGNvbnN0IHNlY29uZHNJbkhvdXIgPSAzNjAwO1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgc2Vjb25kc0luTWludXRlXG4gKiBAc3VtbWFyeSBTZWNvbmRzIGluIDEgbWludXRlLlxuICovXG5leHBvcnQgY29uc3Qgc2Vjb25kc0luTWludXRlID0gNjA7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBzZWNvbmRzSW5EYXlcbiAqIEBzdW1tYXJ5IFNlY29uZHMgaW4gMSBkYXkuXG4gKi9cbmV4cG9ydCBjb25zdCBzZWNvbmRzSW5EYXkgPSBzZWNvbmRzSW5Ib3VyICogMjQ7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBzZWNvbmRzSW5XZWVrXG4gKiBAc3VtbWFyeSBTZWNvbmRzIGluIDEgd2Vlay5cbiAqL1xuZXhwb3J0IGNvbnN0IHNlY29uZHNJbldlZWsgPSBzZWNvbmRzSW5EYXkgKiA3O1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgc2Vjb25kc0luWWVhclxuICogQHN1bW1hcnkgU2Vjb25kcyBpbiAxIHllYXIuXG4gKi9cbmV4cG9ydCBjb25zdCBzZWNvbmRzSW5ZZWFyID0gc2Vjb25kc0luRGF5ICogZGF5c0luWWVhcjtcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIHNlY29uZHNJbk1vbnRoXG4gKiBAc3VtbWFyeSBTZWNvbmRzIGluIDEgbW9udGhcbiAqL1xuZXhwb3J0IGNvbnN0IHNlY29uZHNJbk1vbnRoID0gc2Vjb25kc0luWWVhciAvIDEyO1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgc2Vjb25kc0luUXVhcnRlclxuICogQHN1bW1hcnkgU2Vjb25kcyBpbiAxIHF1YXJ0ZXIuXG4gKi9cbmV4cG9ydCBjb25zdCBzZWNvbmRzSW5RdWFydGVyID0gc2Vjb25kc0luTW9udGggKiAzO1xuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWdDTyxTQUFTLE9BQU8sVUFBVTtBQUMvQixRQUFNLFNBQVMsT0FBTyxVQUFVLFNBQVMsS0FBSyxRQUFRO0FBR3RELE1BQ0Usb0JBQW9CLFFBQ25CLE9BQU8sYUFBYSxZQUFZLFdBQVcsaUJBQzVDO0FBRUEsV0FBTyxJQUFJLFNBQVMsWUFBWSxDQUFDLFFBQVE7QUFBQSxFQUM3QyxXQUNJLE9BQU8sYUFBYSxZQUNwQixXQUFXLHFCQUNYLE9BQU8sYUFBYSxZQUNwQixXQUFXLG1CQUNYO0FBRUEsV0FBTyxJQUFJLEtBQUssUUFBUTtBQUFBLEVBQzVCLE9BQVM7QUFFTCxXQUFPLG9CQUFJLEtBQUssR0FBRztBQUFBLEVBQ3BCO0FBQ0g7QUNzQlksTUFBQyxxQkFBcUI7QUFPdEIsTUFBQyxvQkFBb0I7QUFPckIsTUFBQyx1QkFBdUI7QUFPeEIsTUFBQyxxQkFBcUI7IiwieF9nb29nbGVfaWdub3JlTGlzdCI6WzAsMV19
30
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLUJNR3dNa04zLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi9ub2RlX21vZHVsZXMvZGF0ZS1mbnMvdG9EYXRlLm1qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9jb25zdHJ1Y3RGcm9tLm1qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9kYXRlLWZucy9jb25zdGFudHMubWpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQG5hbWUgdG9EYXRlXG4gKiBAY2F0ZWdvcnkgQ29tbW9uIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IENvbnZlcnQgdGhlIGdpdmVuIGFyZ3VtZW50IHRvIGFuIGluc3RhbmNlIG9mIERhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBDb252ZXJ0IHRoZSBnaXZlbiBhcmd1bWVudCB0byBhbiBpbnN0YW5jZSBvZiBEYXRlLlxuICpcbiAqIElmIHRoZSBhcmd1bWVudCBpcyBhbiBpbnN0YW5jZSBvZiBEYXRlLCB0aGUgZnVuY3Rpb24gcmV0dXJucyBpdHMgY2xvbmUuXG4gKlxuICogSWYgdGhlIGFyZ3VtZW50IGlzIGEgbnVtYmVyLCBpdCBpcyB0cmVhdGVkIGFzIGEgdGltZXN0YW1wLlxuICpcbiAqIElmIHRoZSBhcmd1bWVudCBpcyBub25lIG9mIHRoZSBhYm92ZSwgdGhlIGZ1bmN0aW9uIHJldHVybnMgSW52YWxpZCBEYXRlLlxuICpcbiAqICoqTm90ZSoqOiAqYWxsKiBEYXRlIGFyZ3VtZW50cyBwYXNzZWQgdG8gYW55ICpkYXRlLWZucyogZnVuY3Rpb24gaXMgcHJvY2Vzc2VkIGJ5IGB0b0RhdGVgLlxuICpcbiAqIEB0eXBlUGFyYW0gRGF0ZVR5cGUgLSBUaGUgYERhdGVgIHR5cGUsIHRoZSBmdW5jdGlvbiBvcGVyYXRlcyBvbi4gR2V0cyBpbmZlcnJlZCBmcm9tIHBhc3NlZCBhcmd1bWVudHMuIEFsbG93cyB0byB1c2UgZXh0ZW5zaW9ucyBsaWtlIFtgVVRDRGF0ZWBdKGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy91dGMpLlxuICpcbiAqIEBwYXJhbSBhcmd1bWVudCAtIFRoZSB2YWx1ZSB0byBjb252ZXJ0XG4gKlxuICogQHJldHVybnMgVGhlIHBhcnNlZCBkYXRlIGluIHRoZSBsb2NhbCB0aW1lIHpvbmVcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQ2xvbmUgdGhlIGRhdGU6XG4gKiBjb25zdCByZXN1bHQgPSB0b0RhdGUobmV3IERhdGUoMjAxNCwgMSwgMTEsIDExLCAzMCwgMzApKVxuICogLy89PiBUdWUgRmViIDExIDIwMTQgMTE6MzA6MzBcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQ29udmVydCB0aGUgdGltZXN0YW1wIHRvIGRhdGU6XG4gKiBjb25zdCByZXN1bHQgPSB0b0RhdGUoMTM5MjA5ODQzMDAwMClcbiAqIC8vPT4gVHVlIEZlYiAxMSAyMDE0IDExOjMwOjMwXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0RhdGUoYXJndW1lbnQpIHtcbiAgY29uc3QgYXJnU3RyID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGFyZ3VtZW50KTtcblxuICAvLyBDbG9uZSB0aGUgZGF0ZVxuICBpZiAoXG4gICAgYXJndW1lbnQgaW5zdGFuY2VvZiBEYXRlIHx8XG4gICAgKHR5cGVvZiBhcmd1bWVudCA9PT0gXCJvYmplY3RcIiAmJiBhcmdTdHIgPT09IFwiW29iamVjdCBEYXRlXVwiKVxuICApIHtcbiAgICAvLyBQcmV2ZW50IHRoZSBkYXRlIHRvIGxvc2UgdGhlIG1pbGxpc2Vjb25kcyB3aGVuIHBhc3NlZCB0byBuZXcgRGF0ZSgpIGluIElFMTBcbiAgICByZXR1cm4gbmV3IGFyZ3VtZW50LmNvbnN0cnVjdG9yKCthcmd1bWVudCk7XG4gIH0gZWxzZSBpZiAoXG4gICAgdHlwZW9mIGFyZ3VtZW50ID09PSBcIm51bWJlclwiIHx8XG4gICAgYXJnU3RyID09PSBcIltvYmplY3QgTnVtYmVyXVwiIHx8XG4gICAgdHlwZW9mIGFyZ3VtZW50ID09PSBcInN0cmluZ1wiIHx8XG4gICAgYXJnU3RyID09PSBcIltvYmplY3QgU3RyaW5nXVwiXG4gICkge1xuICAgIC8vIFRPRE86IENhbiB3ZSBnZXQgcmlkIG9mIGFzP1xuICAgIHJldHVybiBuZXcgRGF0ZShhcmd1bWVudCk7XG4gIH0gZWxzZSB7XG4gICAgLy8gVE9ETzogQ2FuIHdlIGdldCByaWQgb2YgYXM/XG4gICAgcmV0dXJuIG5ldyBEYXRlKE5hTik7XG4gIH1cbn1cblxuLy8gRmFsbGJhY2sgZm9yIG1vZHVsYXJpemVkIGltcG9ydHM6XG5leHBvcnQgZGVmYXVsdCB0b0RhdGU7XG4iLCIvKipcbiAqIEBuYW1lIGNvbnN0cnVjdEZyb21cbiAqIEBjYXRlZ29yeSBHZW5lcmljIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IENvbnN0cnVjdHMgYSBkYXRlIHVzaW5nIHRoZSByZWZlcmVuY2UgZGF0ZSBhbmQgdGhlIHZhbHVlXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBUaGUgZnVuY3Rpb24gY29uc3RydWN0cyBhIG5ldyBkYXRlIHVzaW5nIHRoZSBjb25zdHJ1Y3RvciBmcm9tIHRoZSByZWZlcmVuY2VcbiAqIGRhdGUgYW5kIHRoZSBnaXZlbiB2YWx1ZS4gSXQgaGVscHMgdG8gYnVpbGQgZ2VuZXJpYyBmdW5jdGlvbnMgdGhhdCBhY2NlcHRcbiAqIGRhdGUgZXh0ZW5zaW9ucy5cbiAqXG4gKiBJdCBkZWZhdWx0cyB0byBgRGF0ZWAgaWYgdGhlIHBhc3NlZCByZWZlcmVuY2UgZGF0ZSBpcyBhIG51bWJlciBvciBhIHN0cmluZy5cbiAqXG4gKiBAdHlwZVBhcmFtIERhdGVUeXBlIC0gVGhlIGBEYXRlYCB0eXBlLCB0aGUgZnVuY3Rpb24gb3BlcmF0ZXMgb24uIEdldHMgaW5mZXJyZWQgZnJvbSBwYXNzZWQgYXJndW1lbnRzLiBBbGxvd3MgdG8gdXNlIGV4dGVuc2lvbnMgbGlrZSBbYFVUQ0RhdGVgXShodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvdXRjKS5cbiAqXG4gKiBAcGFyYW0gZGF0ZSAtIFRoZSByZWZlcmVuY2UgZGF0ZSB0byB0YWtlIGNvbnN0cnVjdG9yIGZyb21cbiAqIEBwYXJhbSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byBjcmVhdGUgdGhlIGRhdGVcbiAqXG4gKiBAcmV0dXJucyBEYXRlIGluaXRpYWxpemVkIHVzaW5nIHRoZSBnaXZlbiBkYXRlIGFuZCB2YWx1ZVxuICpcbiAqIEBleGFtcGxlXG4gKiBpbXBvcnQgeyBjb25zdHJ1Y3RGcm9tIH0gZnJvbSAnZGF0ZS1mbnMnXG4gKlxuICogLy8gQSBmdW5jdGlvbiB0aGF0IGNsb25lcyBhIGRhdGUgcHJlc2VydmluZyB0aGUgb3JpZ2luYWwgdHlwZVxuICogZnVuY3Rpb24gY2xvbmVEYXRlPERhdGVUeXBlIGV4dGVuZHMgRGF0ZShkYXRlOiBEYXRlVHlwZSk6IERhdGVUeXBlIHtcbiAqICAgcmV0dXJuIGNvbnN0cnVjdEZyb20oXG4gKiAgICAgZGF0ZSwgLy8gVXNlIGNvbnRydXN0b3IgZnJvbSB0aGUgZ2l2ZW4gZGF0ZVxuICogICAgIGRhdGUuZ2V0VGltZSgpIC8vIFVzZSB0aGUgZGF0ZSB2YWx1ZSB0byBjcmVhdGUgYSBuZXcgZGF0ZVxuICogICApXG4gKiB9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb25zdHJ1Y3RGcm9tKGRhdGUsIHZhbHVlKSB7XG4gIGlmIChkYXRlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgIHJldHVybiBuZXcgZGF0ZS5jb25zdHJ1Y3Rvcih2YWx1ZSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG5ldyBEYXRlKHZhbHVlKTtcbiAgfVxufVxuXG4vLyBGYWxsYmFjayBmb3IgbW9kdWxhcml6ZWQgaW1wb3J0czpcbmV4cG9ydCBkZWZhdWx0IGNvbnN0cnVjdEZyb207XG4iLCIvKipcbiAqIEBtb2R1bGUgY29uc3RhbnRzXG4gKiBAc3VtbWFyeSBVc2VmdWwgY29uc3RhbnRzXG4gKiBAZGVzY3JpcHRpb25cbiAqIENvbGxlY3Rpb24gb2YgdXNlZnVsIGRhdGUgY29uc3RhbnRzLlxuICpcbiAqIFRoZSBjb25zdGFudHMgY291bGQgYmUgaW1wb3J0ZWQgZnJvbSBgZGF0ZS1mbnMvY29uc3RhbnRzYDpcbiAqXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgbWF4VGltZSwgbWluVGltZSB9IGZyb20gXCIuL2NvbnN0YW50cy9kYXRlLWZucy9jb25zdGFudHNcIjtcbiAqXG4gKiBmdW5jdGlvbiBpc0FsbG93ZWRUaW1lKHRpbWUpIHtcbiAqICAgcmV0dXJuIHRpbWUgPD0gbWF4VGltZSAmJiB0aW1lID49IG1pblRpbWU7XG4gKiB9XG4gKiBgYGBcbiAqL1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgZGF5c0luV2Vla1xuICogQHN1bW1hcnkgRGF5cyBpbiAxIHdlZWsuXG4gKi9cbmV4cG9ydCBjb25zdCBkYXlzSW5XZWVrID0gNztcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIGRheXNJblllYXJcbiAqIEBzdW1tYXJ5IERheXMgaW4gMSB5ZWFyLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogSG93IG1hbnkgZGF5cyBpbiBhIHllYXIuXG4gKlxuICogT25lIHllYXJzIGVxdWFscyAzNjUuMjQyNSBkYXlzIGFjY29yZGluZyB0byB0aGUgZm9ybXVsYTpcbiAqXG4gKiA+IExlYXAgeWVhciBvY2N1cmVzIGV2ZXJ5IDQgeWVhcnMsIGV4Y2VwdCBmb3IgeWVhcnMgdGhhdCBhcmUgZGl2aXNhYmxlIGJ5IDEwMCBhbmQgbm90IGRpdmlzYWJsZSBieSA0MDAuXG4gKiA+IDEgbWVhbiB5ZWFyID0gKDM2NSsxLzQtMS8xMDArMS80MDApIGRheXMgPSAzNjUuMjQyNSBkYXlzXG4gKi9cbmV4cG9ydCBjb25zdCBkYXlzSW5ZZWFyID0gMzY1LjI0MjU7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBtYXhUaW1lXG4gKiBAc3VtbWFyeSBNYXhpbXVtIGFsbG93ZWQgdGltZS5cbiAqXG4gKiBAZXhhbXBsZVxuICogaW1wb3J0IHsgbWF4VGltZSB9IGZyb20gXCIuL2NvbnN0YW50cy9kYXRlLWZucy9jb25zdGFudHNcIjtcbiAqXG4gKiBjb25zdCBpc1ZhbGlkID0gODY0MDAwMDAwMDAwMDAwMSA8PSBtYXhUaW1lO1xuICogLy89PiBmYWxzZVxuICpcbiAqIG5ldyBEYXRlKDg2NDAwMDAwMDAwMDAwMDEpO1xuICogLy89PiBJbnZhbGlkIERhdGVcbiAqL1xuZXhwb3J0IGNvbnN0IG1heFRpbWUgPSBNYXRoLnBvdygxMCwgOCkgKiAyNCAqIDYwICogNjAgKiAxMDAwO1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgbWluVGltZVxuICogQHN1bW1hcnkgTWluaW11bSBhbGxvd2VkIHRpbWUuXG4gKlxuICogQGV4YW1wbGVcbiAqIGltcG9ydCB7IG1pblRpbWUgfSBmcm9tIFwiLi9jb25zdGFudHMvZGF0ZS1mbnMvY29uc3RhbnRzXCI7XG4gKlxuICogY29uc3QgaXNWYWxpZCA9IC04NjQwMDAwMDAwMDAwMDAxID49IG1pblRpbWU7XG4gKiAvLz0+IGZhbHNlXG4gKlxuICogbmV3IERhdGUoLTg2NDAwMDAwMDAwMDAwMDEpXG4gKiAvLz0+IEludmFsaWQgRGF0ZVxuICovXG5leHBvcnQgY29uc3QgbWluVGltZSA9IC1tYXhUaW1lO1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgbWlsbGlzZWNvbmRzSW5XZWVrXG4gKiBAc3VtbWFyeSBNaWxsaXNlY29uZHMgaW4gMSB3ZWVrLlxuICovXG5leHBvcnQgY29uc3QgbWlsbGlzZWNvbmRzSW5XZWVrID0gNjA0ODAwMDAwO1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgbWlsbGlzZWNvbmRzSW5EYXlcbiAqIEBzdW1tYXJ5IE1pbGxpc2Vjb25kcyBpbiAxIGRheS5cbiAqL1xuZXhwb3J0IGNvbnN0IG1pbGxpc2Vjb25kc0luRGF5ID0gODY0MDAwMDA7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBtaWxsaXNlY29uZHNJbk1pbnV0ZVxuICogQHN1bW1hcnkgTWlsbGlzZWNvbmRzIGluIDEgbWludXRlXG4gKi9cbmV4cG9ydCBjb25zdCBtaWxsaXNlY29uZHNJbk1pbnV0ZSA9IDYwMDAwO1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgbWlsbGlzZWNvbmRzSW5Ib3VyXG4gKiBAc3VtbWFyeSBNaWxsaXNlY29uZHMgaW4gMSBob3VyXG4gKi9cbmV4cG9ydCBjb25zdCBtaWxsaXNlY29uZHNJbkhvdXIgPSAzNjAwMDAwO1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgbWlsbGlzZWNvbmRzSW5TZWNvbmRcbiAqIEBzdW1tYXJ5IE1pbGxpc2Vjb25kcyBpbiAxIHNlY29uZFxuICovXG5leHBvcnQgY29uc3QgbWlsbGlzZWNvbmRzSW5TZWNvbmQgPSAxMDAwO1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgbWludXRlc0luWWVhclxuICogQHN1bW1hcnkgTWludXRlcyBpbiAxIHllYXIuXG4gKi9cbmV4cG9ydCBjb25zdCBtaW51dGVzSW5ZZWFyID0gNTI1NjAwO1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgbWludXRlc0luTW9udGhcbiAqIEBzdW1tYXJ5IE1pbnV0ZXMgaW4gMSBtb250aC5cbiAqL1xuZXhwb3J0IGNvbnN0IG1pbnV0ZXNJbk1vbnRoID0gNDMyMDA7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBtaW51dGVzSW5EYXlcbiAqIEBzdW1tYXJ5IE1pbnV0ZXMgaW4gMSBkYXkuXG4gKi9cbmV4cG9ydCBjb25zdCBtaW51dGVzSW5EYXkgPSAxNDQwO1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgbWludXRlc0luSG91clxuICogQHN1bW1hcnkgTWludXRlcyBpbiAxIGhvdXIuXG4gKi9cbmV4cG9ydCBjb25zdCBtaW51dGVzSW5Ib3VyID0gNjA7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBtb250aHNJblF1YXJ0ZXJcbiAqIEBzdW1tYXJ5IE1vbnRocyBpbiAxIHF1YXJ0ZXIuXG4gKi9cbmV4cG9ydCBjb25zdCBtb250aHNJblF1YXJ0ZXIgPSAzO1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgbW9udGhzSW5ZZWFyXG4gKiBAc3VtbWFyeSBNb250aHMgaW4gMSB5ZWFyLlxuICovXG5leHBvcnQgY29uc3QgbW9udGhzSW5ZZWFyID0gMTI7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBxdWFydGVyc0luWWVhclxuICogQHN1bW1hcnkgUXVhcnRlcnMgaW4gMSB5ZWFyXG4gKi9cbmV4cG9ydCBjb25zdCBxdWFydGVyc0luWWVhciA9IDQ7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBzZWNvbmRzSW5Ib3VyXG4gKiBAc3VtbWFyeSBTZWNvbmRzIGluIDEgaG91ci5cbiAqL1xuZXhwb3J0IGNvbnN0IHNlY29uZHNJbkhvdXIgPSAzNjAwO1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgc2Vjb25kc0luTWludXRlXG4gKiBAc3VtbWFyeSBTZWNvbmRzIGluIDEgbWludXRlLlxuICovXG5leHBvcnQgY29uc3Qgc2Vjb25kc0luTWludXRlID0gNjA7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBzZWNvbmRzSW5EYXlcbiAqIEBzdW1tYXJ5IFNlY29uZHMgaW4gMSBkYXkuXG4gKi9cbmV4cG9ydCBjb25zdCBzZWNvbmRzSW5EYXkgPSBzZWNvbmRzSW5Ib3VyICogMjQ7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBzZWNvbmRzSW5XZWVrXG4gKiBAc3VtbWFyeSBTZWNvbmRzIGluIDEgd2Vlay5cbiAqL1xuZXhwb3J0IGNvbnN0IHNlY29uZHNJbldlZWsgPSBzZWNvbmRzSW5EYXkgKiA3O1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgc2Vjb25kc0luWWVhclxuICogQHN1bW1hcnkgU2Vjb25kcyBpbiAxIHllYXIuXG4gKi9cbmV4cG9ydCBjb25zdCBzZWNvbmRzSW5ZZWFyID0gc2Vjb25kc0luRGF5ICogZGF5c0luWWVhcjtcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIHNlY29uZHNJbk1vbnRoXG4gKiBAc3VtbWFyeSBTZWNvbmRzIGluIDEgbW9udGhcbiAqL1xuZXhwb3J0IGNvbnN0IHNlY29uZHNJbk1vbnRoID0gc2Vjb25kc0luWWVhciAvIDEyO1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgc2Vjb25kc0luUXVhcnRlclxuICogQHN1bW1hcnkgU2Vjb25kcyBpbiAxIHF1YXJ0ZXIuXG4gKi9cbmV4cG9ydCBjb25zdCBzZWNvbmRzSW5RdWFydGVyID0gc2Vjb25kc0luTW9udGggKiAzO1xuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWdDTyxTQUFTLE9BQU8sVUFBVTtBQUMvQixRQUFNLFNBQVMsT0FBTyxVQUFVLFNBQVMsS0FBSyxRQUFRO0FBR3RELE1BQ0Usb0JBQW9CLFFBQ25CLE9BQU8sYUFBYSxZQUFZLFdBQVcsaUJBQzVDO0FBRUEsV0FBTyxJQUFJLFNBQVMsWUFBWSxDQUFDLFFBQVE7QUFBQSxFQUM3QyxXQUNJLE9BQU8sYUFBYSxZQUNwQixXQUFXLHFCQUNYLE9BQU8sYUFBYSxZQUNwQixXQUFXLG1CQUNYO0FBRUEsV0FBTyxJQUFJLEtBQUssUUFBUTtBQUFBLEVBQzVCLE9BQVM7QUFFTCxXQUFPLG9CQUFJLEtBQUssR0FBRztBQUFBLEVBQ3BCO0FBQ0g7QUN4Qk8sU0FBUyxjQUFjLE1BQU0sT0FBTztBQUN6QyxNQUFJLGdCQUFnQixNQUFNO0FBQ3hCLFdBQU8sSUFBSSxLQUFLLFlBQVksS0FBSztBQUFBLEVBQ3JDLE9BQVM7QUFDTCxXQUFPLElBQUksS0FBSyxLQUFLO0FBQUEsRUFDdEI7QUFDSDtBQ3dDWSxNQUFDLHFCQUFxQjtBQU90QixNQUFDLG9CQUFvQjtBQU9yQixNQUFDLHVCQUF1QjtBQU94QixNQUFDLHFCQUFxQjsiLCJ4X2dvb2dsZV9pZ25vcmVMaXN0IjpbMCwxLDJdfQ==