@adobe/helix-rum-enhancer 2.40.1 → 2.40.2

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.
package/CHANGELOG.md CHANGED
@@ -1,3 +1,10 @@
1
+ ## [2.40.2](https://github.com/adobe/helix-rum-enhancer/compare/v2.40.1...v2.40.2) (2025-09-01)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * update URL parameter handling in trackCheckpoint function to ensure correct formatting if no URL parameters are required ([c34dfeb](https://github.com/adobe/helix-rum-enhancer/commit/c34dfeb83891c079d2b56b58f85f2be4948eaf60))
7
+
1
8
  ## [2.40.1](https://github.com/adobe/helix-rum-enhancer/compare/v2.40.0...v2.40.1) (2025-07-29)
2
9
 
3
10
 
package/modules/index.js CHANGED
@@ -170,7 +170,7 @@ function trackCheckpoint(checkpoint, data, t) {
170
170
  // eslint-disable-next-line object-curly-newline, max-len
171
171
  const body = JSON.stringify({ weight, id, referer: urlSanitizers[window.hlx.RUM_MASK_URL || 'path'](), checkpoint, t, ...data }, KNOWN_PROPERTIES);
172
172
  const urlParams = window.RUM_PARAMS ? `?${new URLSearchParams(window.RUM_PARAMS).toString()}` : '';
173
- const { href: url, origin } = new URL(`.rum/${weight}${urlParams}`, sampleRUM.collectBaseURL);
173
+ const { href: url, origin } = new URL(`.rum/${weight}${urlParams.length > 1 ? urlParams : ''}`, sampleRUM.collectBaseURL);
174
174
  if (window.location.origin === origin) {
175
175
  const headers = { type: 'application/json' };
176
176
  navigator.sendBeacon(url, new Blob([body], headers));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@adobe/helix-rum-enhancer",
3
- "version": "2.40.1",
3
+ "version": "2.40.2",
4
4
  "description": "Helix RUM Enhancer",
5
5
  "main": "src/index.js",
6
6
  "type": "module",
@@ -33,10 +33,10 @@
33
33
  "reporter-options": "configFile=.mocha-multi.json"
34
34
  },
35
35
  "devDependencies": {
36
- "@adobe/eslint-config-helix": "3.0.8",
36
+ "@adobe/eslint-config-helix": "3.0.9",
37
37
  "@adobe/helix-rum-js": "2.12.2",
38
38
  "@adobe/rollup-plugin-checksum": "1.2.0",
39
- "@eslint/config-helpers": "0.3.0",
39
+ "@eslint/config-helpers": "0.3.1",
40
40
  "@esm-bundle/chai": "4.3.4-fix.0",
41
41
  "@rollup/plugin-babel": "6.0.4",
42
42
  "@semantic-release/changelog": "6.0.3",
@@ -57,14 +57,14 @@
57
57
  "husky": "9.1.7",
58
58
  "jsdoc-to-markdown": "9.1.2",
59
59
  "junit-report-builder": "5.1.1",
60
- "lint-staged": "16.1.2",
60
+ "lint-staged": "16.1.5",
61
61
  "mocha": "11.7.1",
62
62
  "mocha-multi-reporters": "1.5.1",
63
- "rollup": "4.46.1",
63
+ "rollup": "4.50.0",
64
64
  "rollup-plugin-eslint-bundle": "9.0.0",
65
65
  "semantic-release": "24.2.7",
66
66
  "semantic-release-slack-bot": "^4.0.2",
67
- "web-vitals": "5.0.3"
67
+ "web-vitals": "5.1.0"
68
68
  },
69
69
  "lint-staged": {
70
70
  "*.js": "eslint",
package/src/index.js CHANGED
@@ -265,7 +265,7 @@
265
265
  const {
266
266
  href: url,
267
267
  origin
268
- } = new URL(`.rum/${weight}${urlParams}`, sampleRUM.collectBaseURL);
268
+ } = new URL(`.rum/${weight}${urlParams.length > 1 ? urlParams : ''}`, sampleRUM.collectBaseURL);
269
269
  if (window.location.origin === origin) {
270
270
  const headers = {
271
271
  type: 'application/json'
package/src/index.md5 CHANGED
@@ -1 +1 @@
1
- 877c59781c2dd371ceba23ff4c75fe70
1
+ 143b050b3e47dc13100a8c7f4b515750
package/src/index.sri CHANGED
@@ -1 +1 @@
1
- sha384-1eVgclIiUMzeVr+j9ZR6jGHN0PHkdlgh7SdPOU7OuMpWovjj6zGZewBqPKA8ejnB
1
+ sha384-FqFNdqcSBruRisrm/Gv3AR5041QDSfvIl5UztBqsOUmGFceCiitKjP7sns4woGs8
@@ -1 +1 @@
1
- 411af2624f736f7385cfb1230be854c3
1
+ ca3630c51ee48da2595696b4b11cb586
@@ -18,26 +18,26 @@
18
18
  }, true);
19
19
  },
20
20
  i = (e, t, n, i) => {
21
- let o, s;
22
- return r => {
23
- t.value >= 0 && (r || i) && (s = t.value - (o ?? 0), (s || void 0 === o) && (o = t.value, t.delta = s, t.rating = ((e, t) => e > t[1] ? "poor" : e > t[0] ? "needs-improvement" : "good")(t.value, n), e(t)));
21
+ let s, r;
22
+ return o => {
23
+ t.value >= 0 && (o || i) && (r = t.value - (s ?? 0), (r || void 0 === s) && (s = t.value, t.delta = r, t.rating = ((e, t) => e > t[1] ? "poor" : e > t[0] ? "needs-improvement" : "good")(t.value, n), e(t)));
24
24
  };
25
25
  },
26
- o = e => {
26
+ s = e => {
27
27
  requestAnimationFrame(() => requestAnimationFrame(() => e()));
28
28
  },
29
- s = () => {
29
+ r = () => {
30
30
  const e = performance.getEntriesByType("navigation")[0];
31
31
  if (e && e.responseStart > 0 && e.responseStart < performance.now()) return e;
32
32
  },
33
- r = () => {
34
- const e = s();
33
+ o = () => {
34
+ const e = r();
35
35
  return e?.activationStart ?? 0;
36
36
  },
37
37
  c = (e, n = -1) => {
38
- const i = s();
39
- let o = "navigate";
40
- t >= 0 ? o = "back-forward-cache" : i && (document.prerendering || r() > 0 ? o = "prerender" : document.wasDiscarded ? o = "restore" : i.type && (o = i.type.replace(/_/g, "-")));
38
+ const i = r();
39
+ let s = "navigate";
40
+ t >= 0 ? s = "back-forward-cache" : i && (document.prerendering || o() > 0 ? s = "prerender" : document.wasDiscarded ? s = "restore" : i.type && (s = i.type.replace(/_/g, "-")));
41
41
  return {
42
42
  name: e,
43
43
  value: n,
@@ -45,7 +45,7 @@
45
45
  delta: 0,
46
46
  entries: [],
47
47
  id: `v5-${Date.now()}-${Math.floor(8999999999999 * Math.random()) + 1e12}`,
48
- navigationType: o
48
+ navigationType: s
49
49
  };
50
50
  },
51
51
  a = new WeakMap();
@@ -86,90 +86,91 @@
86
86
  };
87
87
  };
88
88
  let l = -1;
89
- const m = () => "hidden" !== document.visibilityState || document.prerendering ? 1 / 0 : 0,
90
- g = e => {
91
- "hidden" === document.visibilityState && l > -1 && (l = "visibilitychange" === e.type ? e.timeStamp : 0, p());
92
- },
93
- v = () => {
94
- addEventListener("visibilitychange", g, true), addEventListener("prerenderingchange", g, true);
95
- },
96
- p = () => {
97
- removeEventListener("visibilitychange", g, true), removeEventListener("prerenderingchange", g, true);
89
+ const m = new Set(),
90
+ v = () => "hidden" !== document.visibilityState || document.prerendering ? 1 / 0 : 0,
91
+ p = e => {
92
+ if ("hidden" === document.visibilityState) {
93
+ if ("visibilitychange" === e.type) for (const e of m) e();
94
+ isFinite(l) || (l = "visibilitychange" === e.type ? e.timeStamp : 0, removeEventListener("prerenderingchange", p, true));
95
+ }
98
96
  },
99
- y = () => {
97
+ g = () => {
100
98
  if (l < 0) {
101
- const e = r(),
99
+ const e = o(),
102
100
  t = document.prerendering ? void 0 : globalThis.performance.getEntriesByType("visibility-state").filter(t => "hidden" === t.name && t.startTime > e)[0]?.startTime;
103
- l = t ?? m(), v(), n(() => {
101
+ l = t ?? v(), addEventListener("visibilitychange", p, true), addEventListener("prerenderingchange", p, true), n(() => {
104
102
  setTimeout(() => {
105
- l = m(), v();
103
+ l = v();
106
104
  });
107
105
  });
108
106
  }
109
107
  return {
110
108
  get firstHiddenTime() {
111
109
  return l;
110
+ },
111
+ onHidden(e) {
112
+ m.add(e);
112
113
  }
113
114
  };
114
115
  },
115
- b = e => {
116
+ y = e => {
116
117
  document.prerendering ? addEventListener("prerenderingchange", () => e(), true) : e();
117
118
  },
118
- P = [1800, 3e3],
119
- T = (e, t = {}) => {
120
- b(() => {
121
- const s = y();
119
+ b = [1800, 3e3],
120
+ E = (e, t = {}) => {
121
+ y(() => {
122
+ const r = g();
122
123
  let a,
123
124
  d = c("FCP");
124
125
  const h = f("paint", e => {
125
- for (const t of e) "first-contentful-paint" === t.name && (h.disconnect(), t.startTime < s.firstHiddenTime && (d.value = Math.max(t.startTime - r(), 0), d.entries.push(t), a(true)));
126
+ for (const t of e) "first-contentful-paint" === t.name && (h.disconnect(), t.startTime < r.firstHiddenTime && (d.value = Math.max(t.startTime - o(), 0), d.entries.push(t), a(true)));
126
127
  });
127
- h && (a = i(e, d, P, t.reportAllChanges), n(n => {
128
- d = c("FCP"), a = i(e, d, P, t.reportAllChanges), o(() => {
128
+ h && (a = i(e, d, b, t.reportAllChanges), n(n => {
129
+ d = c("FCP"), a = i(e, d, b, t.reportAllChanges), s(() => {
129
130
  d.value = performance.now() - n.timeStamp, a(true);
130
131
  });
131
132
  }));
132
133
  });
133
134
  },
134
- E = [.1, .25];
135
- let _ = 0,
136
- L = 1 / 0,
137
- M = 0;
138
- const w = e => {
139
- for (const t of e) t.interactionId && (L = Math.min(L, t.interactionId), M = Math.max(M, t.interactionId), _ = M ? (M - L) / 7 + 1 : 0);
135
+ L = [.1, .25];
136
+ let P = 0,
137
+ T = 1 / 0,
138
+ _ = 0;
139
+ const M = e => {
140
+ for (const t of e) t.interactionId && (T = Math.min(T, t.interactionId), _ = Math.max(_, t.interactionId), P = _ ? (_ - T) / 7 + 1 : 0);
140
141
  };
141
- let C;
142
- const I = () => C ? _ : performance.interactionCount ?? 0,
143
- F = () => {
144
- "interactionCount" in performance || C || (C = f("event", w, {
142
+ let w;
143
+ const C = () => w ? P : performance.interactionCount ?? 0,
144
+ I = () => {
145
+ "interactionCount" in performance || w || (w = f("event", M, {
145
146
  type: "event",
146
147
  buffered: true,
147
148
  durationThreshold: 0
148
149
  }));
149
150
  };
150
- let k = 0;
151
- class A {
151
+ let F = 0;
152
+ class k {
152
153
  u = [];
153
154
  l = new Map();
154
155
  m;
155
156
  v;
156
157
  p() {
157
- k = I(), this.u.length = 0, this.l.clear();
158
+ F = C(), this.u.length = 0, this.l.clear();
158
159
  }
159
- P() {
160
- const e = Math.min(this.u.length - 1, Math.floor((I() - k) / 50));
160
+ L() {
161
+ const e = Math.min(this.u.length - 1, Math.floor((C() - F) / 50));
161
162
  return this.u[e];
162
163
  }
163
164
  h(e) {
164
165
  if (this.m?.(e), !e.interactionId && "first-input" !== e.entryType) return;
165
166
  const t = this.u.at(-1);
166
167
  let n = this.l.get(e.interactionId);
167
- if (n || this.u.length < 10 || e.duration > t.T) {
168
- if (n ? e.duration > n.T ? (n.entries = [e], n.T = e.duration) : e.duration === n.T && e.startTime === n.entries[0].startTime && n.entries.push(e) : (n = {
168
+ if (n || this.u.length < 10 || e.duration > t.P) {
169
+ if (n ? e.duration > n.P ? (n.entries = [e], n.P = e.duration) : e.duration === n.P && e.startTime === n.entries[0].startTime && n.entries.push(e) : (n = {
169
170
  id: e.interactionId,
170
171
  entries: [e],
171
- T: e.duration
172
- }, this.l.set(n.id, n), this.u.push(n)), this.u.sort((e, t) => t.T - e.T), this.u.length > 10) {
172
+ P: e.duration
173
+ }, this.l.set(n.id, n), this.u.push(n)), this.u.sort((e, t) => t.P - e.P), this.u.length > 10) {
173
174
  const e = this.u.splice(10);
174
175
  for (const t of e) this.l.delete(t.id);
175
176
  }
@@ -177,101 +178,111 @@
177
178
  }
178
179
  }
179
180
  }
180
- const B = e => {
181
+ const A = e => {
181
182
  const t = globalThis.requestIdleCallback || setTimeout;
182
- "hidden" === document.visibilityState ? e() : (e = u(e), document.addEventListener("visibilitychange", e, {
183
- once: true
183
+ "hidden" === document.visibilityState ? e() : (e = u(e), addEventListener("visibilitychange", e, {
184
+ once: true,
185
+ capture: true
184
186
  }), t(() => {
185
- e(), document.removeEventListener("visibilitychange", e);
187
+ e(), removeEventListener("visibilitychange", e, {
188
+ capture: true
189
+ });
186
190
  }));
187
191
  },
188
- N = [200, 500];
192
+ B = [200, 500];
189
193
  class S {
190
194
  m;
191
195
  h(e) {
192
196
  this.m?.(e);
193
197
  }
194
198
  }
195
- const q = [2500, 4e3],
196
- O = [800, 1800],
197
- V = e => {
198
- document.prerendering ? b(() => V(e)) : "complete" !== document.readyState ? addEventListener("load", () => V(e), true) : setTimeout(e);
199
+ const N = [2500, 4e3],
200
+ q = [800, 1800],
201
+ H = e => {
202
+ document.prerendering ? y(() => H(e)) : "complete" !== document.readyState ? addEventListener("load", () => H(e), true) : setTimeout(e);
199
203
  };
200
- return e.CLSThresholds = E, e.FCPThresholds = P, e.INPThresholds = N, e.LCPThresholds = q, e.TTFBThresholds = O, e.onCLS = (e, t = {}) => {
201
- T(u(() => {
202
- let s,
203
- r = c("CLS", 0);
204
- const a = d(t, h),
205
- u = e => {
206
- for (const t of e) a.h(t);
207
- a.i > r.value && (r.value = a.i, r.entries = a.o, s());
204
+ return e.CLSThresholds = L, e.FCPThresholds = b, e.INPThresholds = B, e.LCPThresholds = N, e.TTFBThresholds = q, e.onCLS = (e, t = {}) => {
205
+ const r = g();
206
+ E(u(() => {
207
+ let o,
208
+ a = c("CLS", 0);
209
+ const u = d(t, h),
210
+ l = e => {
211
+ for (const t of e) u.h(t);
212
+ u.i > a.value && (a.value = u.i, a.entries = u.o, o());
208
213
  },
209
- l = f("layout-shift", u);
210
- l && (s = i(e, r, E, t.reportAllChanges), document.addEventListener("visibilitychange", () => {
211
- "hidden" === document.visibilityState && (u(l.takeRecords()), s(true));
214
+ m = f("layout-shift", l);
215
+ m && (o = i(e, a, L, t.reportAllChanges), r.onHidden(() => {
216
+ l(m.takeRecords()), o(true);
212
217
  }), n(() => {
213
- a.i = 0, r = c("CLS", 0), s = i(e, r, E, t.reportAllChanges), o(() => s());
214
- }), setTimeout(s));
218
+ u.i = 0, a = c("CLS", 0), o = i(e, a, L, t.reportAllChanges), s(() => o());
219
+ }), setTimeout(o));
215
220
  }));
216
- }, e.onFCP = T, e.onINP = (e, t = {}) => {
217
- globalThis.PerformanceEventTiming && "interactionId" in PerformanceEventTiming.prototype && b(() => {
218
- F();
219
- let o,
220
- s = c("INP");
221
- const r = d(t, A),
222
- a = e => {
223
- B(() => {
224
- for (const t of e) r.h(t);
225
- const t = r.P();
226
- t && t.T !== s.value && (s.value = t.T, s.entries = t.entries, o());
221
+ }, e.onFCP = E, e.onINP = (e, t = {}) => {
222
+ if (!globalThis.PerformanceEventTiming || !("interactionId" in PerformanceEventTiming.prototype)) return;
223
+ const s = g();
224
+ y(() => {
225
+ I();
226
+ let r,
227
+ o = c("INP");
228
+ const a = d(t, k),
229
+ h = e => {
230
+ A(() => {
231
+ for (const t of e) a.h(t);
232
+ const t = a.L();
233
+ t && t.P !== o.value && (o.value = t.P, o.entries = t.entries, r());
227
234
  });
228
235
  },
229
- h = f("event", a, {
236
+ u = f("event", h, {
230
237
  durationThreshold: t.durationThreshold ?? 40
231
238
  });
232
- o = i(e, s, N, t.reportAllChanges), h && (h.observe({
239
+ r = i(e, o, B, t.reportAllChanges), u && (u.observe({
233
240
  type: "first-input",
234
241
  buffered: true
235
- }), document.addEventListener("visibilitychange", () => {
236
- "hidden" === document.visibilityState && (a(h.takeRecords()), o(true));
242
+ }), s.onHidden(() => {
243
+ h(u.takeRecords()), r(true);
237
244
  }), n(() => {
238
- r.p(), s = c("INP"), o = i(e, s, N, t.reportAllChanges);
245
+ a.p(), o = c("INP"), r = i(e, o, B, t.reportAllChanges);
239
246
  }));
240
247
  });
241
248
  }, e.onLCP = (e, t = {}) => {
242
- b(() => {
243
- const s = y();
249
+ y(() => {
250
+ const r = g();
244
251
  let a,
245
252
  h = c("LCP");
246
253
  const l = d(t, S),
247
254
  m = e => {
248
255
  t.reportAllChanges || (e = e.slice(-1));
249
- for (const t of e) l.h(t), t.startTime < s.firstHiddenTime && (h.value = Math.max(t.startTime - r(), 0), h.entries = [t], a());
256
+ for (const t of e) l.h(t), t.startTime < r.firstHiddenTime && (h.value = Math.max(t.startTime - o(), 0), h.entries = [t], a());
250
257
  },
251
- g = f("largest-contentful-paint", m);
252
- if (g) {
253
- a = i(e, h, q, t.reportAllChanges);
254
- const s = u(() => {
255
- m(g.takeRecords()), g.disconnect(), a(true);
256
- });
257
- for (const e of ["keydown", "click", "visibilitychange"]) addEventListener(e, () => B(s), {
258
- capture: true,
259
- once: true
258
+ v = f("largest-contentful-paint", m);
259
+ if (v) {
260
+ a = i(e, h, N, t.reportAllChanges);
261
+ const r = u(() => {
262
+ m(v.takeRecords()), v.disconnect(), a(true);
263
+ }),
264
+ o = e => {
265
+ e.isTrusted && (A(r), removeEventListener(e.type, o, {
266
+ capture: true
267
+ }));
268
+ };
269
+ for (const e of ["keydown", "click", "visibilitychange"]) addEventListener(e, o, {
270
+ capture: true
260
271
  });
261
272
  n(n => {
262
- h = c("LCP"), a = i(e, h, q, t.reportAllChanges), o(() => {
273
+ h = c("LCP"), a = i(e, h, N, t.reportAllChanges), s(() => {
263
274
  h.value = performance.now() - n.timeStamp, a(true);
264
275
  });
265
276
  });
266
277
  }
267
278
  });
268
279
  }, e.onTTFB = (e, t = {}) => {
269
- let o = c("TTFB"),
270
- a = i(e, o, O, t.reportAllChanges);
271
- V(() => {
272
- const d = s();
273
- d && (o.value = Math.max(d.responseStart - r(), 0), o.entries = [d], a(true), n(() => {
274
- o = c("TTFB", 0), a = i(e, o, O, t.reportAllChanges), a(true);
280
+ let s = c("TTFB"),
281
+ a = i(e, s, q, t.reportAllChanges);
282
+ H(() => {
283
+ const d = r();
284
+ d && (s.value = Math.max(d.responseStart - o(), 0), s.entries = [d], a(true), n(() => {
285
+ s = c("TTFB", 0), a = i(e, s, q, t.reportAllChanges), a(true);
275
286
  }));
276
287
  });
277
288
  }, e;
@@ -18,26 +18,26 @@
18
18
  }, true);
19
19
  },
20
20
  i = (e, t, n, i) => {
21
- let o, s;
22
- return r => {
23
- t.value >= 0 && (r || i) && (s = t.value - (o ?? 0), (s || void 0 === o) && (o = t.value, t.delta = s, t.rating = ((e, t) => e > t[1] ? "poor" : e > t[0] ? "needs-improvement" : "good")(t.value, n), e(t)));
21
+ let s, r;
22
+ return o => {
23
+ t.value >= 0 && (o || i) && (r = t.value - (s ?? 0), (r || void 0 === s) && (s = t.value, t.delta = r, t.rating = ((e, t) => e > t[1] ? "poor" : e > t[0] ? "needs-improvement" : "good")(t.value, n), e(t)));
24
24
  };
25
25
  },
26
- o = e => {
26
+ s = e => {
27
27
  requestAnimationFrame(() => requestAnimationFrame(() => e()));
28
28
  },
29
- s = () => {
29
+ r = () => {
30
30
  const e = performance.getEntriesByType("navigation")[0];
31
31
  if (e && e.responseStart > 0 && e.responseStart < performance.now()) return e;
32
32
  },
33
- r = () => {
34
- const e = s();
33
+ o = () => {
34
+ const e = r();
35
35
  return e?.activationStart ?? 0;
36
36
  },
37
37
  c = (e, n = -1) => {
38
- const i = s();
39
- let o = "navigate";
40
- t >= 0 ? o = "back-forward-cache" : i && (document.prerendering || r() > 0 ? o = "prerender" : document.wasDiscarded ? o = "restore" : i.type && (o = i.type.replace(/_/g, "-")));
38
+ const i = r();
39
+ let s = "navigate";
40
+ t >= 0 ? s = "back-forward-cache" : i && (document.prerendering || o() > 0 ? s = "prerender" : document.wasDiscarded ? s = "restore" : i.type && (s = i.type.replace(/_/g, "-")));
41
41
  return {
42
42
  name: e,
43
43
  value: n,
@@ -45,7 +45,7 @@
45
45
  delta: 0,
46
46
  entries: [],
47
47
  id: `v5-${Date.now()}-${Math.floor(8999999999999 * Math.random()) + 1e12}`,
48
- navigationType: o
48
+ navigationType: s
49
49
  };
50
50
  },
51
51
  a = new WeakMap();
@@ -86,90 +86,91 @@
86
86
  };
87
87
  };
88
88
  let l = -1;
89
- const m = () => "hidden" !== document.visibilityState || document.prerendering ? 1 / 0 : 0,
90
- g = e => {
91
- "hidden" === document.visibilityState && l > -1 && (l = "visibilitychange" === e.type ? e.timeStamp : 0, p());
92
- },
93
- v = () => {
94
- addEventListener("visibilitychange", g, true), addEventListener("prerenderingchange", g, true);
95
- },
96
- p = () => {
97
- removeEventListener("visibilitychange", g, true), removeEventListener("prerenderingchange", g, true);
89
+ const m = new Set(),
90
+ v = () => "hidden" !== document.visibilityState || document.prerendering ? 1 / 0 : 0,
91
+ p = e => {
92
+ if ("hidden" === document.visibilityState) {
93
+ if ("visibilitychange" === e.type) for (const e of m) e();
94
+ isFinite(l) || (l = "visibilitychange" === e.type ? e.timeStamp : 0, removeEventListener("prerenderingchange", p, true));
95
+ }
98
96
  },
99
- y = () => {
97
+ g = () => {
100
98
  if (l < 0) {
101
- const e = r(),
99
+ const e = o(),
102
100
  t = document.prerendering ? void 0 : globalThis.performance.getEntriesByType("visibility-state").filter(t => "hidden" === t.name && t.startTime > e)[0]?.startTime;
103
- l = t ?? m(), v(), n(() => {
101
+ l = t ?? v(), addEventListener("visibilitychange", p, true), addEventListener("prerenderingchange", p, true), n(() => {
104
102
  setTimeout(() => {
105
- l = m(), v();
103
+ l = v();
106
104
  });
107
105
  });
108
106
  }
109
107
  return {
110
108
  get firstHiddenTime() {
111
109
  return l;
110
+ },
111
+ onHidden(e) {
112
+ m.add(e);
112
113
  }
113
114
  };
114
115
  },
115
- b = e => {
116
+ y = e => {
116
117
  document.prerendering ? addEventListener("prerenderingchange", () => e(), true) : e();
117
118
  },
118
- P = [1800, 3e3],
119
- T = (e, t = {}) => {
120
- b(() => {
121
- const s = y();
119
+ b = [1800, 3e3],
120
+ E = (e, t = {}) => {
121
+ y(() => {
122
+ const r = g();
122
123
  let a,
123
124
  d = c("FCP");
124
125
  const h = f("paint", e => {
125
- for (const t of e) "first-contentful-paint" === t.name && (h.disconnect(), t.startTime < s.firstHiddenTime && (d.value = Math.max(t.startTime - r(), 0), d.entries.push(t), a(true)));
126
+ for (const t of e) "first-contentful-paint" === t.name && (h.disconnect(), t.startTime < r.firstHiddenTime && (d.value = Math.max(t.startTime - o(), 0), d.entries.push(t), a(true)));
126
127
  });
127
- h && (a = i(e, d, P, t.reportAllChanges), n(n => {
128
- d = c("FCP"), a = i(e, d, P, t.reportAllChanges), o(() => {
128
+ h && (a = i(e, d, b, t.reportAllChanges), n(n => {
129
+ d = c("FCP"), a = i(e, d, b, t.reportAllChanges), s(() => {
129
130
  d.value = performance.now() - n.timeStamp, a(true);
130
131
  });
131
132
  }));
132
133
  });
133
134
  },
134
- E = [.1, .25];
135
- let _ = 0,
136
- L = 1 / 0,
137
- M = 0;
138
- const w = e => {
139
- for (const t of e) t.interactionId && (L = Math.min(L, t.interactionId), M = Math.max(M, t.interactionId), _ = M ? (M - L) / 7 + 1 : 0);
135
+ L = [.1, .25];
136
+ let P = 0,
137
+ T = 1 / 0,
138
+ _ = 0;
139
+ const M = e => {
140
+ for (const t of e) t.interactionId && (T = Math.min(T, t.interactionId), _ = Math.max(_, t.interactionId), P = _ ? (_ - T) / 7 + 1 : 0);
140
141
  };
141
- let C;
142
- const I = () => C ? _ : performance.interactionCount ?? 0,
143
- F = () => {
144
- "interactionCount" in performance || C || (C = f("event", w, {
142
+ let w;
143
+ const C = () => w ? P : performance.interactionCount ?? 0,
144
+ I = () => {
145
+ "interactionCount" in performance || w || (w = f("event", M, {
145
146
  type: "event",
146
147
  buffered: true,
147
148
  durationThreshold: 0
148
149
  }));
149
150
  };
150
- let k = 0;
151
- class A {
151
+ let F = 0;
152
+ class k {
152
153
  u = [];
153
154
  l = new Map();
154
155
  m;
155
156
  v;
156
157
  p() {
157
- k = I(), this.u.length = 0, this.l.clear();
158
+ F = C(), this.u.length = 0, this.l.clear();
158
159
  }
159
- P() {
160
- const e = Math.min(this.u.length - 1, Math.floor((I() - k) / 50));
160
+ L() {
161
+ const e = Math.min(this.u.length - 1, Math.floor((C() - F) / 50));
161
162
  return this.u[e];
162
163
  }
163
164
  h(e) {
164
165
  if (this.m?.(e), !e.interactionId && "first-input" !== e.entryType) return;
165
166
  const t = this.u.at(-1);
166
167
  let n = this.l.get(e.interactionId);
167
- if (n || this.u.length < 10 || e.duration > t.T) {
168
- if (n ? e.duration > n.T ? (n.entries = [e], n.T = e.duration) : e.duration === n.T && e.startTime === n.entries[0].startTime && n.entries.push(e) : (n = {
168
+ if (n || this.u.length < 10 || e.duration > t.P) {
169
+ if (n ? e.duration > n.P ? (n.entries = [e], n.P = e.duration) : e.duration === n.P && e.startTime === n.entries[0].startTime && n.entries.push(e) : (n = {
169
170
  id: e.interactionId,
170
171
  entries: [e],
171
- T: e.duration
172
- }, this.l.set(n.id, n), this.u.push(n)), this.u.sort((e, t) => t.T - e.T), this.u.length > 10) {
172
+ P: e.duration
173
+ }, this.l.set(n.id, n), this.u.push(n)), this.u.sort((e, t) => t.P - e.P), this.u.length > 10) {
173
174
  const e = this.u.splice(10);
174
175
  for (const t of e) this.l.delete(t.id);
175
176
  }
@@ -177,101 +178,111 @@
177
178
  }
178
179
  }
179
180
  }
180
- const B = e => {
181
+ const A = e => {
181
182
  const t = globalThis.requestIdleCallback || setTimeout;
182
- "hidden" === document.visibilityState ? e() : (e = u(e), document.addEventListener("visibilitychange", e, {
183
- once: true
183
+ "hidden" === document.visibilityState ? e() : (e = u(e), addEventListener("visibilitychange", e, {
184
+ once: true,
185
+ capture: true
184
186
  }), t(() => {
185
- e(), document.removeEventListener("visibilitychange", e);
187
+ e(), removeEventListener("visibilitychange", e, {
188
+ capture: true
189
+ });
186
190
  }));
187
191
  },
188
- N = [200, 500];
192
+ B = [200, 500];
189
193
  class S {
190
194
  m;
191
195
  h(e) {
192
196
  this.m?.(e);
193
197
  }
194
198
  }
195
- const q = [2500, 4e3],
196
- O = [800, 1800],
197
- V = e => {
198
- document.prerendering ? b(() => V(e)) : "complete" !== document.readyState ? addEventListener("load", () => V(e), true) : setTimeout(e);
199
+ const N = [2500, 4e3],
200
+ q = [800, 1800],
201
+ H = e => {
202
+ document.prerendering ? y(() => H(e)) : "complete" !== document.readyState ? addEventListener("load", () => H(e), true) : setTimeout(e);
199
203
  };
200
- return e.CLSThresholds = E, e.FCPThresholds = P, e.INPThresholds = N, e.LCPThresholds = q, e.TTFBThresholds = O, e.onCLS = (e, t = {}) => {
201
- T(u(() => {
202
- let s,
203
- r = c("CLS", 0);
204
- const a = d(t, h),
205
- u = e => {
206
- for (const t of e) a.h(t);
207
- a.i > r.value && (r.value = a.i, r.entries = a.o, s());
204
+ return e.CLSThresholds = L, e.FCPThresholds = b, e.INPThresholds = B, e.LCPThresholds = N, e.TTFBThresholds = q, e.onCLS = (e, t = {}) => {
205
+ const r = g();
206
+ E(u(() => {
207
+ let o,
208
+ a = c("CLS", 0);
209
+ const u = d(t, h),
210
+ l = e => {
211
+ for (const t of e) u.h(t);
212
+ u.i > a.value && (a.value = u.i, a.entries = u.o, o());
208
213
  },
209
- l = f("layout-shift", u);
210
- l && (s = i(e, r, E, t.reportAllChanges), document.addEventListener("visibilitychange", () => {
211
- "hidden" === document.visibilityState && (u(l.takeRecords()), s(true));
214
+ m = f("layout-shift", l);
215
+ m && (o = i(e, a, L, t.reportAllChanges), r.onHidden(() => {
216
+ l(m.takeRecords()), o(true);
212
217
  }), n(() => {
213
- a.i = 0, r = c("CLS", 0), s = i(e, r, E, t.reportAllChanges), o(() => s());
214
- }), setTimeout(s));
218
+ u.i = 0, a = c("CLS", 0), o = i(e, a, L, t.reportAllChanges), s(() => o());
219
+ }), setTimeout(o));
215
220
  }));
216
- }, e.onFCP = T, e.onINP = (e, t = {}) => {
217
- globalThis.PerformanceEventTiming && "interactionId" in PerformanceEventTiming.prototype && b(() => {
218
- F();
219
- let o,
220
- s = c("INP");
221
- const r = d(t, A),
222
- a = e => {
223
- B(() => {
224
- for (const t of e) r.h(t);
225
- const t = r.P();
226
- t && t.T !== s.value && (s.value = t.T, s.entries = t.entries, o());
221
+ }, e.onFCP = E, e.onINP = (e, t = {}) => {
222
+ if (!globalThis.PerformanceEventTiming || !("interactionId" in PerformanceEventTiming.prototype)) return;
223
+ const s = g();
224
+ y(() => {
225
+ I();
226
+ let r,
227
+ o = c("INP");
228
+ const a = d(t, k),
229
+ h = e => {
230
+ A(() => {
231
+ for (const t of e) a.h(t);
232
+ const t = a.L();
233
+ t && t.P !== o.value && (o.value = t.P, o.entries = t.entries, r());
227
234
  });
228
235
  },
229
- h = f("event", a, {
236
+ u = f("event", h, {
230
237
  durationThreshold: t.durationThreshold ?? 40
231
238
  });
232
- o = i(e, s, N, t.reportAllChanges), h && (h.observe({
239
+ r = i(e, o, B, t.reportAllChanges), u && (u.observe({
233
240
  type: "first-input",
234
241
  buffered: true
235
- }), document.addEventListener("visibilitychange", () => {
236
- "hidden" === document.visibilityState && (a(h.takeRecords()), o(true));
242
+ }), s.onHidden(() => {
243
+ h(u.takeRecords()), r(true);
237
244
  }), n(() => {
238
- r.p(), s = c("INP"), o = i(e, s, N, t.reportAllChanges);
245
+ a.p(), o = c("INP"), r = i(e, o, B, t.reportAllChanges);
239
246
  }));
240
247
  });
241
248
  }, e.onLCP = (e, t = {}) => {
242
- b(() => {
243
- const s = y();
249
+ y(() => {
250
+ const r = g();
244
251
  let a,
245
252
  h = c("LCP");
246
253
  const l = d(t, S),
247
254
  m = e => {
248
255
  t.reportAllChanges || (e = e.slice(-1));
249
- for (const t of e) l.h(t), t.startTime < s.firstHiddenTime && (h.value = Math.max(t.startTime - r(), 0), h.entries = [t], a());
256
+ for (const t of e) l.h(t), t.startTime < r.firstHiddenTime && (h.value = Math.max(t.startTime - o(), 0), h.entries = [t], a());
250
257
  },
251
- g = f("largest-contentful-paint", m);
252
- if (g) {
253
- a = i(e, h, q, t.reportAllChanges);
254
- const s = u(() => {
255
- m(g.takeRecords()), g.disconnect(), a(true);
256
- });
257
- for (const e of ["keydown", "click", "visibilitychange"]) addEventListener(e, () => B(s), {
258
- capture: true,
259
- once: true
258
+ v = f("largest-contentful-paint", m);
259
+ if (v) {
260
+ a = i(e, h, N, t.reportAllChanges);
261
+ const r = u(() => {
262
+ m(v.takeRecords()), v.disconnect(), a(true);
263
+ }),
264
+ o = e => {
265
+ e.isTrusted && (A(r), removeEventListener(e.type, o, {
266
+ capture: true
267
+ }));
268
+ };
269
+ for (const e of ["keydown", "click", "visibilitychange"]) addEventListener(e, o, {
270
+ capture: true
260
271
  });
261
272
  n(n => {
262
- h = c("LCP"), a = i(e, h, q, t.reportAllChanges), o(() => {
273
+ h = c("LCP"), a = i(e, h, N, t.reportAllChanges), s(() => {
263
274
  h.value = performance.now() - n.timeStamp, a(true);
264
275
  });
265
276
  });
266
277
  }
267
278
  });
268
279
  }, e.onTTFB = (e, t = {}) => {
269
- let o = c("TTFB"),
270
- a = i(e, o, O, t.reportAllChanges);
271
- V(() => {
272
- const d = s();
273
- d && (o.value = Math.max(d.responseStart - r(), 0), o.entries = [d], a(true), n(() => {
274
- o = c("TTFB", 0), a = i(e, o, O, t.reportAllChanges), a(true);
280
+ let s = c("TTFB"),
281
+ a = i(e, s, q, t.reportAllChanges);
282
+ H(() => {
283
+ const d = r();
284
+ d && (s.value = Math.max(d.responseStart - o(), 0), s.entries = [d], a(true), n(() => {
285
+ s = c("TTFB", 0), a = i(e, s, q, t.reportAllChanges), a(true);
275
286
  }));
276
287
  });
277
288
  }, e;
@@ -326,4 +337,4 @@ function addCWVTracking({
326
337
  }
327
338
 
328
339
  export { addCWVTracking as default };
329
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3d2Lm1hcC5qcyIsInNvdXJjZXMiOlsiLi4vLi4vbm9kZV9tb2R1bGVzL3dlYi12aXRhbHMvZGlzdC93ZWItdml0YWxzLmlpZmUuanMiLCIuLi8uLi9wbHVnaW5zL2N3di5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgd2ViVml0YWxzPWZ1bmN0aW9uKGUpe1widXNlIHN0cmljdFwiO2xldCB0PS0xO2NvbnN0IG49ZT0+e2FkZEV2ZW50TGlzdGVuZXIoXCJwYWdlc2hvd1wiLChuPT57bi5wZXJzaXN0ZWQmJih0PW4udGltZVN0YW1wLGUobikpfSksITApfSxpPShlLHQsbixpKT0+e2xldCBvLHM7cmV0dXJuIHI9Pnt0LnZhbHVlPj0wJiYocnx8aSkmJihzPXQudmFsdWUtKG8/PzApLChzfHx2b2lkIDA9PT1vKSYmKG89dC52YWx1ZSx0LmRlbHRhPXMsdC5yYXRpbmc9KChlLHQpPT5lPnRbMV0/XCJwb29yXCI6ZT50WzBdP1wibmVlZHMtaW1wcm92ZW1lbnRcIjpcImdvb2RcIikodC52YWx1ZSxuKSxlKHQpKSl9fSxvPWU9PntyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCgpPT5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCgpPT5lKCkpKSkpfSxzPSgpPT57Y29uc3QgZT1wZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlUeXBlKFwibmF2aWdhdGlvblwiKVswXTtpZihlJiZlLnJlc3BvbnNlU3RhcnQ+MCYmZS5yZXNwb25zZVN0YXJ0PHBlcmZvcm1hbmNlLm5vdygpKXJldHVybiBlfSxyPSgpPT57Y29uc3QgZT1zKCk7cmV0dXJuIGU/LmFjdGl2YXRpb25TdGFydD8/MH0sYz0oZSxuPS0xKT0+e2NvbnN0IGk9cygpO2xldCBvPVwibmF2aWdhdGVcIjt0Pj0wP289XCJiYWNrLWZvcndhcmQtY2FjaGVcIjppJiYoZG9jdW1lbnQucHJlcmVuZGVyaW5nfHxyKCk+MD9vPVwicHJlcmVuZGVyXCI6ZG9jdW1lbnQud2FzRGlzY2FyZGVkP289XCJyZXN0b3JlXCI6aS50eXBlJiYobz1pLnR5cGUucmVwbGFjZSgvXy9nLFwiLVwiKSkpO3JldHVybntuYW1lOmUsdmFsdWU6bixyYXRpbmc6XCJnb29kXCIsZGVsdGE6MCxlbnRyaWVzOltdLGlkOmB2NS0ke0RhdGUubm93KCl9LSR7TWF0aC5mbG9vcig4OTk5OTk5OTk5OTk5Kk1hdGgucmFuZG9tKCkpKzFlMTJ9YCxuYXZpZ2F0aW9uVHlwZTpvfX0sYT1uZXcgV2Vha01hcDtmdW5jdGlvbiBkKGUsdCl7cmV0dXJuIGEuZ2V0KGUpfHxhLnNldChlLG5ldyB0KSxhLmdldChlKX1jbGFzcyBoe3Q7aT0wO289W107aChlKXtpZihlLmhhZFJlY2VudElucHV0KXJldHVybjtjb25zdCB0PXRoaXMub1swXSxuPXRoaXMuby5hdCgtMSk7dGhpcy5pJiZ0JiZuJiZlLnN0YXJ0VGltZS1uLnN0YXJ0VGltZTwxZTMmJmUuc3RhcnRUaW1lLXQuc3RhcnRUaW1lPDVlMz8odGhpcy5pKz1lLnZhbHVlLHRoaXMuby5wdXNoKGUpKToodGhpcy5pPWUudmFsdWUsdGhpcy5vPVtlXSksdGhpcy50Py4oZSl9fWNvbnN0IGY9KGUsdCxuPXt9KT0+e3RyeXtpZihQZXJmb3JtYW5jZU9ic2VydmVyLnN1cHBvcnRlZEVudHJ5VHlwZXMuaW5jbHVkZXMoZSkpe2NvbnN0IGk9bmV3IFBlcmZvcm1hbmNlT2JzZXJ2ZXIoKGU9PntQcm9taXNlLnJlc29sdmUoKS50aGVuKCgoKT0+e3QoZS5nZXRFbnRyaWVzKCkpfSkpfSkpO3JldHVybiBpLm9ic2VydmUoe3R5cGU6ZSxidWZmZXJlZDohMCwuLi5ufSksaX19Y2F0Y2h7fX0sdT1lPT57bGV0IHQ9ITE7cmV0dXJuKCk9Pnt0fHwoZSgpLHQ9ITApfX07bGV0IGw9LTE7Y29uc3QgbT0oKT0+XCJoaWRkZW5cIiE9PWRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZXx8ZG9jdW1lbnQucHJlcmVuZGVyaW5nPzEvMDowLGc9ZT0+e1wiaGlkZGVuXCI9PT1kb2N1bWVudC52aXNpYmlsaXR5U3RhdGUmJmw+LTEmJihsPVwidmlzaWJpbGl0eWNoYW5nZVwiPT09ZS50eXBlP2UudGltZVN0YW1wOjAscCgpKX0sdj0oKT0+e2FkZEV2ZW50TGlzdGVuZXIoXCJ2aXNpYmlsaXR5Y2hhbmdlXCIsZywhMCksYWRkRXZlbnRMaXN0ZW5lcihcInByZXJlbmRlcmluZ2NoYW5nZVwiLGcsITApfSxwPSgpPT57cmVtb3ZlRXZlbnRMaXN0ZW5lcihcInZpc2liaWxpdHljaGFuZ2VcIixnLCEwKSxyZW1vdmVFdmVudExpc3RlbmVyKFwicHJlcmVuZGVyaW5nY2hhbmdlXCIsZywhMCl9LHk9KCk9PntpZihsPDApe2NvbnN0IGU9cigpLHQ9ZG9jdW1lbnQucHJlcmVuZGVyaW5nP3ZvaWQgMDpnbG9iYWxUaGlzLnBlcmZvcm1hbmNlLmdldEVudHJpZXNCeVR5cGUoXCJ2aXNpYmlsaXR5LXN0YXRlXCIpLmZpbHRlcigodD0+XCJoaWRkZW5cIj09PXQubmFtZSYmdC5zdGFydFRpbWU+ZSkpWzBdPy5zdGFydFRpbWU7bD10Pz9tKCksdigpLG4oKCgpPT57c2V0VGltZW91dCgoKCk9PntsPW0oKSx2KCl9KSl9KSl9cmV0dXJue2dldCBmaXJzdEhpZGRlblRpbWUoKXtyZXR1cm4gbH19fSxiPWU9Pntkb2N1bWVudC5wcmVyZW5kZXJpbmc/YWRkRXZlbnRMaXN0ZW5lcihcInByZXJlbmRlcmluZ2NoYW5nZVwiLCgoKT0+ZSgpKSwhMCk6ZSgpfSxQPVsxODAwLDNlM10sVD0oZSx0PXt9KT0+e2IoKCgpPT57Y29uc3Qgcz15KCk7bGV0IGEsZD1jKFwiRkNQXCIpO2NvbnN0IGg9ZihcInBhaW50XCIsKGU9Pntmb3IoY29uc3QgdCBvZiBlKVwiZmlyc3QtY29udGVudGZ1bC1wYWludFwiPT09dC5uYW1lJiYoaC5kaXNjb25uZWN0KCksdC5zdGFydFRpbWU8cy5maXJzdEhpZGRlblRpbWUmJihkLnZhbHVlPU1hdGgubWF4KHQuc3RhcnRUaW1lLXIoKSwwKSxkLmVudHJpZXMucHVzaCh0KSxhKCEwKSkpfSkpO2gmJihhPWkoZSxkLFAsdC5yZXBvcnRBbGxDaGFuZ2VzKSxuKChuPT57ZD1jKFwiRkNQXCIpLGE9aShlLGQsUCx0LnJlcG9ydEFsbENoYW5nZXMpLG8oKCgpPT57ZC52YWx1ZT1wZXJmb3JtYW5jZS5ub3coKS1uLnRpbWVTdGFtcCxhKCEwKX0pKX0pKSl9KSl9LEU9Wy4xLC4yNV07bGV0IF89MCxMPTEvMCxNPTA7Y29uc3Qgdz1lPT57Zm9yKGNvbnN0IHQgb2YgZSl0LmludGVyYWN0aW9uSWQmJihMPU1hdGgubWluKEwsdC5pbnRlcmFjdGlvbklkKSxNPU1hdGgubWF4KE0sdC5pbnRlcmFjdGlvbklkKSxfPU0/KE0tTCkvNysxOjApfTtsZXQgQztjb25zdCBJPSgpPT5DP186cGVyZm9ybWFuY2UuaW50ZXJhY3Rpb25Db3VudD8/MCxGPSgpPT57XCJpbnRlcmFjdGlvbkNvdW50XCJpbiBwZXJmb3JtYW5jZXx8Q3x8KEM9ZihcImV2ZW50XCIsdyx7dHlwZTpcImV2ZW50XCIsYnVmZmVyZWQ6ITAsZHVyYXRpb25UaHJlc2hvbGQ6MH0pKX07bGV0IGs9MDtjbGFzcyBBe3U9W107bD1uZXcgTWFwO207djtwKCl7az1JKCksdGhpcy51Lmxlbmd0aD0wLHRoaXMubC5jbGVhcigpfVAoKXtjb25zdCBlPU1hdGgubWluKHRoaXMudS5sZW5ndGgtMSxNYXRoLmZsb29yKChJKCktaykvNTApKTtyZXR1cm4gdGhpcy51W2VdfWgoZSl7aWYodGhpcy5tPy4oZSksIWUuaW50ZXJhY3Rpb25JZCYmXCJmaXJzdC1pbnB1dFwiIT09ZS5lbnRyeVR5cGUpcmV0dXJuO2NvbnN0IHQ9dGhpcy51LmF0KC0xKTtsZXQgbj10aGlzLmwuZ2V0KGUuaW50ZXJhY3Rpb25JZCk7aWYobnx8dGhpcy51Lmxlbmd0aDwxMHx8ZS5kdXJhdGlvbj50LlQpe2lmKG4/ZS5kdXJhdGlvbj5uLlQ/KG4uZW50cmllcz1bZV0sbi5UPWUuZHVyYXRpb24pOmUuZHVyYXRpb249PT1uLlQmJmUuc3RhcnRUaW1lPT09bi5lbnRyaWVzWzBdLnN0YXJ0VGltZSYmbi5lbnRyaWVzLnB1c2goZSk6KG49e2lkOmUuaW50ZXJhY3Rpb25JZCxlbnRyaWVzOltlXSxUOmUuZHVyYXRpb259LHRoaXMubC5zZXQobi5pZCxuKSx0aGlzLnUucHVzaChuKSksdGhpcy51LnNvcnQoKChlLHQpPT50LlQtZS5UKSksdGhpcy51Lmxlbmd0aD4xMCl7Y29uc3QgZT10aGlzLnUuc3BsaWNlKDEwKTtmb3IoY29uc3QgdCBvZiBlKXRoaXMubC5kZWxldGUodC5pZCl9dGhpcy52Py4obil9fX1jb25zdCBCPWU9Pntjb25zdCB0PWdsb2JhbFRoaXMucmVxdWVzdElkbGVDYWxsYmFja3x8c2V0VGltZW91dDtcImhpZGRlblwiPT09ZG9jdW1lbnQudmlzaWJpbGl0eVN0YXRlP2UoKTooZT11KGUpLGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJ2aXNpYmlsaXR5Y2hhbmdlXCIsZSx7b25jZTohMH0pLHQoKCgpPT57ZSgpLGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJ2aXNpYmlsaXR5Y2hhbmdlXCIsZSl9KSkpfSxOPVsyMDAsNTAwXTtjbGFzcyBTe207aChlKXt0aGlzLm0/LihlKX19Y29uc3QgcT1bMjUwMCw0ZTNdLE89WzgwMCwxODAwXSxWPWU9Pntkb2N1bWVudC5wcmVyZW5kZXJpbmc/YigoKCk9PlYoZSkpKTpcImNvbXBsZXRlXCIhPT1kb2N1bWVudC5yZWFkeVN0YXRlP2FkZEV2ZW50TGlzdGVuZXIoXCJsb2FkXCIsKCgpPT5WKGUpKSwhMCk6c2V0VGltZW91dChlKX07cmV0dXJuIGUuQ0xTVGhyZXNob2xkcz1FLGUuRkNQVGhyZXNob2xkcz1QLGUuSU5QVGhyZXNob2xkcz1OLGUuTENQVGhyZXNob2xkcz1xLGUuVFRGQlRocmVzaG9sZHM9TyxlLm9uQ0xTPShlLHQ9e30pPT57VCh1KCgoKT0+e2xldCBzLHI9YyhcIkNMU1wiLDApO2NvbnN0IGE9ZCh0LGgpLHU9ZT0+e2Zvcihjb25zdCB0IG9mIGUpYS5oKHQpO2EuaT5yLnZhbHVlJiYoci52YWx1ZT1hLmksci5lbnRyaWVzPWEubyxzKCkpfSxsPWYoXCJsYXlvdXQtc2hpZnRcIix1KTtsJiYocz1pKGUscixFLHQucmVwb3J0QWxsQ2hhbmdlcyksZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcInZpc2liaWxpdHljaGFuZ2VcIiwoKCk9PntcImhpZGRlblwiPT09ZG9jdW1lbnQudmlzaWJpbGl0eVN0YXRlJiYodShsLnRha2VSZWNvcmRzKCkpLHMoITApKX0pKSxuKCgoKT0+e2EuaT0wLHI9YyhcIkNMU1wiLDApLHM9aShlLHIsRSx0LnJlcG9ydEFsbENoYW5nZXMpLG8oKCgpPT5zKCkpKX0pKSxzZXRUaW1lb3V0KHMpKX0pKSl9LGUub25GQ1A9VCxlLm9uSU5QPShlLHQ9e30pPT57Z2xvYmFsVGhpcy5QZXJmb3JtYW5jZUV2ZW50VGltaW5nJiZcImludGVyYWN0aW9uSWRcImluIFBlcmZvcm1hbmNlRXZlbnRUaW1pbmcucHJvdG90eXBlJiZiKCgoKT0+e0YoKTtsZXQgbyxzPWMoXCJJTlBcIik7Y29uc3Qgcj1kKHQsQSksYT1lPT57QigoKCk9Pntmb3IoY29uc3QgdCBvZiBlKXIuaCh0KTtjb25zdCB0PXIuUCgpO3QmJnQuVCE9PXMudmFsdWUmJihzLnZhbHVlPXQuVCxzLmVudHJpZXM9dC5lbnRyaWVzLG8oKSl9KSl9LGg9ZihcImV2ZW50XCIsYSx7ZHVyYXRpb25UaHJlc2hvbGQ6dC5kdXJhdGlvblRocmVzaG9sZD8/NDB9KTtvPWkoZSxzLE4sdC5yZXBvcnRBbGxDaGFuZ2VzKSxoJiYoaC5vYnNlcnZlKHt0eXBlOlwiZmlyc3QtaW5wdXRcIixidWZmZXJlZDohMH0pLGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJ2aXNpYmlsaXR5Y2hhbmdlXCIsKCgpPT57XCJoaWRkZW5cIj09PWRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZSYmKGEoaC50YWtlUmVjb3JkcygpKSxvKCEwKSl9KSksbigoKCk9PntyLnAoKSxzPWMoXCJJTlBcIiksbz1pKGUscyxOLHQucmVwb3J0QWxsQ2hhbmdlcyl9KSkpfSkpfSxlLm9uTENQPShlLHQ9e30pPT57YigoKCk9Pntjb25zdCBzPXkoKTtsZXQgYSxoPWMoXCJMQ1BcIik7Y29uc3QgbD1kKHQsUyksbT1lPT57dC5yZXBvcnRBbGxDaGFuZ2VzfHwoZT1lLnNsaWNlKC0xKSk7Zm9yKGNvbnN0IHQgb2YgZSlsLmgodCksdC5zdGFydFRpbWU8cy5maXJzdEhpZGRlblRpbWUmJihoLnZhbHVlPU1hdGgubWF4KHQuc3RhcnRUaW1lLXIoKSwwKSxoLmVudHJpZXM9W3RdLGEoKSl9LGc9ZihcImxhcmdlc3QtY29udGVudGZ1bC1wYWludFwiLG0pO2lmKGcpe2E9aShlLGgscSx0LnJlcG9ydEFsbENoYW5nZXMpO2NvbnN0IHM9dSgoKCk9PnttKGcudGFrZVJlY29yZHMoKSksZy5kaXNjb25uZWN0KCksYSghMCl9KSk7Zm9yKGNvbnN0IGUgb2ZbXCJrZXlkb3duXCIsXCJjbGlja1wiLFwidmlzaWJpbGl0eWNoYW5nZVwiXSlhZGRFdmVudExpc3RlbmVyKGUsKCgpPT5CKHMpKSx7Y2FwdHVyZTohMCxvbmNlOiEwfSk7bigobj0+e2g9YyhcIkxDUFwiKSxhPWkoZSxoLHEsdC5yZXBvcnRBbGxDaGFuZ2VzKSxvKCgoKT0+e2gudmFsdWU9cGVyZm9ybWFuY2Uubm93KCktbi50aW1lU3RhbXAsYSghMCl9KSl9KSl9fSkpfSxlLm9uVFRGQj0oZSx0PXt9KT0+e2xldCBvPWMoXCJUVEZCXCIpLGE9aShlLG8sTyx0LnJlcG9ydEFsbENoYW5nZXMpO1YoKCgpPT57Y29uc3QgZD1zKCk7ZCYmKG8udmFsdWU9TWF0aC5tYXgoZC5yZXNwb25zZVN0YXJ0LXIoKSwwKSxvLmVudHJpZXM9W2RdLGEoITApLG4oKCgpPT57bz1jKFwiVFRGQlwiLDApLGE9aShlLG8sTyx0LnJlcG9ydEFsbENoYW5nZXMpLGEoITApfSkpKX0pKX0sZX0oe30pO1xuIiwiLypcbiAqIENvcHlyaWdodCAyMDI0IEFkb2JlLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICogVGhpcyBmaWxlIGlzIGxpY2Vuc2VkIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHlcbiAqIG9mIHRoZSBMaWNlbnNlIGF0IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXJcbiAqIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VOVEFUSU9OU1xuICogT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlXG4gKiBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbWF4LWxlblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby1leHRyYW5lb3VzLWRlcGVuZGVuY2llcywgaW1wb3J0L25vLXJlbGF0aXZlLXBhY2thZ2VzLCBuby11bnVzZWQtdmFyc1xuaW1wb3J0ICogYXMgd2ViVml0YWxzIGZyb20gJy4uL25vZGVfbW9kdWxlcy93ZWItdml0YWxzL2Rpc3Qvd2ViLXZpdGFscy5paWZlLmpzJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gYWRkQ1dWVHJhY2tpbmcoe1xuICBzYW1wbGVSVU0sIHNvdXJjZVNlbGVjdG9yLCB0YXJnZXRTZWxlY3RvciwgZmZsYWdzLFxufSkge1xuICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgY3d2U2NyaXB0ID0gbmV3IFVSTCgnLnJ1bS93ZWItdml0YWxzL2Rpc3Qvd2ViLXZpdGFscy5paWZlLmpzJywgc2FtcGxlUlVNLmJhc2VVUkwpLmhyZWY7XG4gICAgICAvKiBjOCBpZ25vcmUgbmV4dCAzICovXG4gICAgICBpZiAoZG9jdW1lbnQucXVlcnlTZWxlY3Rvcihgc2NyaXB0W3NyYz1cIiR7Y3d2U2NyaXB0fVwiXWApKSB7XG4gICAgICAgIC8vIHdlYiB2aXRhbHMgc2NyaXB0IGhhcyBiZWVuIGxvYWRlZCBhbHJlYWR5XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHNjcmlwdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpO1xuICAgICAgc2NyaXB0LnNyYyA9IGN3dlNjcmlwdDtcbiAgICAgIHNjcmlwdC5vbmxvYWQgPSAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHN0b3JlQ1dWID0gKG1lYXN1cmVtZW50KSA9PiB7XG4gICAgICAgICAgY29uc3QgZGF0YSA9IHsgY3d2OiB7fSB9O1xuICAgICAgICAgIGRhdGEuY3d2W21lYXN1cmVtZW50Lm5hbWVdID0gbWVhc3VyZW1lbnQudmFsdWU7XG4gICAgICAgICAgaWYgKG1lYXN1cmVtZW50Lm5hbWUgPT09ICdMQ1AnICYmIG1lYXN1cmVtZW50LmVudHJpZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgY29uc3QgeyBlbGVtZW50IH0gPSBtZWFzdXJlbWVudC5lbnRyaWVzLnBvcCgpO1xuICAgICAgICAgICAgZGF0YS50YXJnZXQgPSB0YXJnZXRTZWxlY3RvcihlbGVtZW50KTtcbiAgICAgICAgICAgIGRhdGEuc291cmNlID0gc291cmNlU2VsZWN0b3IoZWxlbWVudCkgfHwgKGVsZW1lbnQgJiYgZWxlbWVudC5vdXRlckhUTUwuc2xpY2UoMCwgMzApKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgc2FtcGxlUlVNKCdjd3YnLCBkYXRhKTtcbiAgICAgICAgfTtcblxuICAgICAgICBjb25zdCBpc0VhZ2VyID0gKG1ldHJpYykgPT4gWydDTFMnLCAnTENQJ10uaW5jbHVkZXMobWV0cmljKTtcblxuICAgICAgICAvLyBXaGVuIGxvYWRpbmcgYHdlYi12aXRhbHNgIHVzaW5nIGEgY2xhc3NpYyBzY3JpcHQsIGFsbCB0aGUgcHVibGljXG4gICAgICAgIC8vIG1ldGhvZHMgY2FuIGJlIGZvdW5kIG9uIHRoZSBgd2ViVml0YWxzYCBnbG9iYWwgbmFtZXNwYWNlLlxuICAgICAgICBbJ0lOUCcsICdUVEZCJywgJ0NMUycsICdMQ1AnXS5mb3JFYWNoKChtZXRyaWMpID0+IHtcbiAgICAgICAgICBjb25zdCBtZXRyaWNGbiA9IHdpbmRvdy53ZWJWaXRhbHNbYG9uJHttZXRyaWN9YF07XG4gICAgICAgICAgaWYgKHR5cGVvZiBtZXRyaWNGbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgbGV0IG9wdHMgPSB7fTtcbiAgICAgICAgICAgIGZmbGFncy5lbmFibGVkKCdlYWdlcmN3dicsICgpID0+IHtcbiAgICAgICAgICAgICAgb3B0cyA9IHsgcmVwb3J0QWxsQ2hhbmdlczogaXNFYWdlcihtZXRyaWMpIH07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIG1ldHJpY0ZuKHN0b3JlQ1dWLCBvcHRzKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfTtcbiAgICAgIGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoc2NyaXB0KTtcbiAgICAgIC8qIGM4IGlnbm9yZSBuZXh0IDMgKi9cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgLy8gc29tZXRoaW5nIHdlbnQgd3JvbmdcbiAgICB9XG4gIH0sIDIwMDApOyAvLyB3YWl0IGZvciBkZWxheWVkXG59XG4iXSwibmFtZXMiOlsiZSIsInQiLCJuIiwiYWRkRXZlbnRMaXN0ZW5lciIsInBlcnNpc3RlZCIsInRpbWVTdGFtcCIsImkiLCJvIiwicyIsInIiLCJ2YWx1ZSIsImRlbHRhIiwicmF0aW5nIiwicmVxdWVzdEFuaW1hdGlvbkZyYW1lIiwicGVyZm9ybWFuY2UiLCJnZXRFbnRyaWVzQnlUeXBlIiwicmVzcG9uc2VTdGFydCIsIm5vdyIsImFjdGl2YXRpb25TdGFydCIsImMiLCJkb2N1bWVudCIsInByZXJlbmRlcmluZyIsIndhc0Rpc2NhcmRlZCIsInR5cGUiLCJyZXBsYWNlIiwibmFtZSIsImVudHJpZXMiLCJpZCIsIkRhdGUiLCJNYXRoIiwiZmxvb3IiLCJyYW5kb20iLCJuYXZpZ2F0aW9uVHlwZSIsImEiLCJXZWFrTWFwIiwiZCIsImdldCIsInNldCIsImgiLCJoYWRSZWNlbnRJbnB1dCIsImF0Iiwic3RhcnRUaW1lIiwicHVzaCIsImYiLCJQZXJmb3JtYW5jZU9ic2VydmVyIiwic3VwcG9ydGVkRW50cnlUeXBlcyIsImluY2x1ZGVzIiwiUHJvbWlzZSIsInJlc29sdmUiLCJ0aGVuIiwiZ2V0RW50cmllcyIsIm9ic2VydmUiLCJidWZmZXJlZCIsInUiLCJsIiwibSIsInZpc2liaWxpdHlTdGF0ZSIsImciLCJwIiwidiIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJ5IiwiZ2xvYmFsVGhpcyIsImZpbHRlciIsInNldFRpbWVvdXQiLCJmaXJzdEhpZGRlblRpbWUiLCJiIiwiUCIsIlQiLCJkaXNjb25uZWN0IiwibWF4IiwicmVwb3J0QWxsQ2hhbmdlcyIsIkUiLCJfIiwiTCIsIk0iLCJ3IiwiaW50ZXJhY3Rpb25JZCIsIm1pbiIsIkMiLCJJIiwiaW50ZXJhY3Rpb25Db3VudCIsIkYiLCJkdXJhdGlvblRocmVzaG9sZCIsImsiLCJBIiwiTWFwIiwibGVuZ3RoIiwiY2xlYXIiLCJlbnRyeVR5cGUiLCJkdXJhdGlvbiIsInNvcnQiLCJzcGxpY2UiLCJkZWxldGUiLCJCIiwicmVxdWVzdElkbGVDYWxsYmFjayIsIm9uY2UiLCJOIiwiUyIsInEiLCJPIiwiViIsInJlYWR5U3RhdGUiLCJDTFNUaHJlc2hvbGRzIiwiRkNQVGhyZXNob2xkcyIsIklOUFRocmVzaG9sZHMiLCJMQ1BUaHJlc2hvbGRzIiwiVFRGQlRocmVzaG9sZHMiLCJvbkNMUyIsInRha2VSZWNvcmRzIiwib25GQ1AiLCJvbklOUCIsIlBlcmZvcm1hbmNlRXZlbnRUaW1pbmciLCJwcm90b3R5cGUiLCJvbkxDUCIsInNsaWNlIiwiY2FwdHVyZSIsIm9uVFRGQiIsImFkZENXVlRyYWNraW5nIiwic2FtcGxlUlVNIiwic291cmNlU2VsZWN0b3IiLCJ0YXJnZXRTZWxlY3RvciIsImZmbGFncyIsImN3dlNjcmlwdCIsIlVSTCIsImJhc2VVUkwiLCJocmVmIiwicXVlcnlTZWxlY3RvciIsInNjcmlwdCIsImNyZWF0ZUVsZW1lbnQiLCJzcmMiLCJvbmxvYWQiLCJzdG9yZUNXViIsIm1lYXN1cmVtZW50IiwiZGF0YSIsImN3diIsImVsZW1lbnQiLCJwb3AiLCJ0YXJnZXQiLCJzb3VyY2UiLCJvdXRlckhUTUwiLCJpc0VhZ2VyIiwibWV0cmljIiwiZm9yRWFjaCIsIm1ldHJpY0ZuIiwid2luZG93Iiwid2ViVml0YWxzIiwib3B0cyIsImVuYWJsZWQiLCJoZWFkIiwiYXBwZW5kQ2hpbGQiLCJlcnJvciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Q0FBYyxVQUFTQSxDQUFDLEVBQUM7O0VBQWMsSUFBSUMsQ0FBQyxHQUFDLEVBQUU7RUFBQyxNQUFNQyxDQUFDLEdBQUNGLENBQUMsSUFBRTtBQUFDRyxNQUFBQSxnQkFBZ0IsQ0FBQyxVQUFVLEVBQUVELENBQUMsSUFBRTtBQUFDQSxRQUFBQSxDQUFDLENBQUNFLFNBQVMsS0FBR0gsQ0FBQyxHQUFDQyxDQUFDLENBQUNHLFNBQVMsRUFBQ0wsQ0FBQyxDQUFDRSxDQUFDLENBQUMsQ0FBQztNQUFBLENBQUMsRUFBRSxJQUFFLENBQUM7SUFBQSxDQUFDO0lBQUNJLENBQUMsR0FBQ0EsQ0FBQ04sQ0FBQyxFQUFDQyxDQUFDLEVBQUNDLENBQUMsRUFBQ0ksQ0FBQyxLQUFHO01BQUMsSUFBSUMsQ0FBQyxFQUFDQyxDQUFDO0FBQUMsTUFBQSxPQUFPQyxDQUFDLElBQUU7QUFBQ1IsUUFBQUEsQ0FBQyxDQUFDUyxLQUFLLElBQUUsQ0FBQyxLQUFHRCxDQUFDLElBQUVILENBQUMsQ0FBQyxLQUFH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
340
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3d2Lm1hcC5qcyIsInNvdXJjZXMiOlsiLi4vLi4vbm9kZV9tb2R1bGVzL3dlYi12aXRhbHMvZGlzdC93ZWItdml0YWxzLmlpZmUuanMiLCIuLi8uLi9wbHVnaW5zL2N3di5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgd2ViVml0YWxzPWZ1bmN0aW9uKGUpe1widXNlIHN0cmljdFwiO2xldCB0PS0xO2NvbnN0IG49ZT0+e2FkZEV2ZW50TGlzdGVuZXIoXCJwYWdlc2hvd1wiLChuPT57bi5wZXJzaXN0ZWQmJih0PW4udGltZVN0YW1wLGUobikpfSksITApfSxpPShlLHQsbixpKT0+e2xldCBzLHI7cmV0dXJuIG89Pnt0LnZhbHVlPj0wJiYob3x8aSkmJihyPXQudmFsdWUtKHM/PzApLChyfHx2b2lkIDA9PT1zKSYmKHM9dC52YWx1ZSx0LmRlbHRhPXIsdC5yYXRpbmc9KChlLHQpPT5lPnRbMV0/XCJwb29yXCI6ZT50WzBdP1wibmVlZHMtaW1wcm92ZW1lbnRcIjpcImdvb2RcIikodC52YWx1ZSxuKSxlKHQpKSl9fSxzPWU9PntyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCgpPT5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCgpPT5lKCkpKSkpfSxyPSgpPT57Y29uc3QgZT1wZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlUeXBlKFwibmF2aWdhdGlvblwiKVswXTtpZihlJiZlLnJlc3BvbnNlU3RhcnQ+MCYmZS5yZXNwb25zZVN0YXJ0PHBlcmZvcm1hbmNlLm5vdygpKXJldHVybiBlfSxvPSgpPT57Y29uc3QgZT1yKCk7cmV0dXJuIGU/LmFjdGl2YXRpb25TdGFydD8/MH0sYz0oZSxuPS0xKT0+e2NvbnN0IGk9cigpO2xldCBzPVwibmF2aWdhdGVcIjt0Pj0wP3M9XCJiYWNrLWZvcndhcmQtY2FjaGVcIjppJiYoZG9jdW1lbnQucHJlcmVuZGVyaW5nfHxvKCk+MD9zPVwicHJlcmVuZGVyXCI6ZG9jdW1lbnQud2FzRGlzY2FyZGVkP3M9XCJyZXN0b3JlXCI6aS50eXBlJiYocz1pLnR5cGUucmVwbGFjZSgvXy9nLFwiLVwiKSkpO3JldHVybntuYW1lOmUsdmFsdWU6bixyYXRpbmc6XCJnb29kXCIsZGVsdGE6MCxlbnRyaWVzOltdLGlkOmB2NS0ke0RhdGUubm93KCl9LSR7TWF0aC5mbG9vcig4OTk5OTk5OTk5OTk5Kk1hdGgucmFuZG9tKCkpKzFlMTJ9YCxuYXZpZ2F0aW9uVHlwZTpzfX0sYT1uZXcgV2Vha01hcDtmdW5jdGlvbiBkKGUsdCl7cmV0dXJuIGEuZ2V0KGUpfHxhLnNldChlLG5ldyB0KSxhLmdldChlKX1jbGFzcyBoe3Q7aT0wO289W107aChlKXtpZihlLmhhZFJlY2VudElucHV0KXJldHVybjtjb25zdCB0PXRoaXMub1swXSxuPXRoaXMuby5hdCgtMSk7dGhpcy5pJiZ0JiZuJiZlLnN0YXJ0VGltZS1uLnN0YXJ0VGltZTwxZTMmJmUuc3RhcnRUaW1lLXQuc3RhcnRUaW1lPDVlMz8odGhpcy5pKz1lLnZhbHVlLHRoaXMuby5wdXNoKGUpKToodGhpcy5pPWUudmFsdWUsdGhpcy5vPVtlXSksdGhpcy50Py4oZSl9fWNvbnN0IGY9KGUsdCxuPXt9KT0+e3RyeXtpZihQZXJmb3JtYW5jZU9ic2VydmVyLnN1cHBvcnRlZEVudHJ5VHlwZXMuaW5jbHVkZXMoZSkpe2NvbnN0IGk9bmV3IFBlcmZvcm1hbmNlT2JzZXJ2ZXIoKGU9PntQcm9taXNlLnJlc29sdmUoKS50aGVuKCgoKT0+e3QoZS5nZXRFbnRyaWVzKCkpfSkpfSkpO3JldHVybiBpLm9ic2VydmUoe3R5cGU6ZSxidWZmZXJlZDohMCwuLi5ufSksaX19Y2F0Y2h7fX0sdT1lPT57bGV0IHQ9ITE7cmV0dXJuKCk9Pnt0fHwoZSgpLHQ9ITApfX07bGV0IGw9LTE7Y29uc3QgbT1uZXcgU2V0LHY9KCk9PlwiaGlkZGVuXCIhPT1kb2N1bWVudC52aXNpYmlsaXR5U3RhdGV8fGRvY3VtZW50LnByZXJlbmRlcmluZz8xLzA6MCxwPWU9PntpZihcImhpZGRlblwiPT09ZG9jdW1lbnQudmlzaWJpbGl0eVN0YXRlKXtpZihcInZpc2liaWxpdHljaGFuZ2VcIj09PWUudHlwZSlmb3IoY29uc3QgZSBvZiBtKWUoKTtpc0Zpbml0ZShsKXx8KGw9XCJ2aXNpYmlsaXR5Y2hhbmdlXCI9PT1lLnR5cGU/ZS50aW1lU3RhbXA6MCxyZW1vdmVFdmVudExpc3RlbmVyKFwicHJlcmVuZGVyaW5nY2hhbmdlXCIscCwhMCkpfX0sZz0oKT0+e2lmKGw8MCl7Y29uc3QgZT1vKCksdD1kb2N1bWVudC5wcmVyZW5kZXJpbmc/dm9pZCAwOmdsb2JhbFRoaXMucGVyZm9ybWFuY2UuZ2V0RW50cmllc0J5VHlwZShcInZpc2liaWxpdHktc3RhdGVcIikuZmlsdGVyKCh0PT5cImhpZGRlblwiPT09dC5uYW1lJiZ0LnN0YXJ0VGltZT5lKSlbMF0/LnN0YXJ0VGltZTtsPXQ/P3YoKSxhZGRFdmVudExpc3RlbmVyKFwidmlzaWJpbGl0eWNoYW5nZVwiLHAsITApLGFkZEV2ZW50TGlzdGVuZXIoXCJwcmVyZW5kZXJpbmdjaGFuZ2VcIixwLCEwKSxuKCgoKT0+e3NldFRpbWVvdXQoKCgpPT57bD12KCl9KSl9KSl9cmV0dXJue2dldCBmaXJzdEhpZGRlblRpbWUoKXtyZXR1cm4gbH0sb25IaWRkZW4oZSl7bS5hZGQoZSl9fX0seT1lPT57ZG9jdW1lbnQucHJlcmVuZGVyaW5nP2FkZEV2ZW50TGlzdGVuZXIoXCJwcmVyZW5kZXJpbmdjaGFuZ2VcIiwoKCk9PmUoKSksITApOmUoKX0sYj1bMTgwMCwzZTNdLEU9KGUsdD17fSk9Pnt5KCgoKT0+e2NvbnN0IHI9ZygpO2xldCBhLGQ9YyhcIkZDUFwiKTtjb25zdCBoPWYoXCJwYWludFwiLChlPT57Zm9yKGNvbnN0IHQgb2YgZSlcImZpcnN0LWNvbnRlbnRmdWwtcGFpbnRcIj09PXQubmFtZSYmKGguZGlzY29ubmVjdCgpLHQuc3RhcnRUaW1lPHIuZmlyc3RIaWRkZW5UaW1lJiYoZC52YWx1ZT1NYXRoLm1heCh0LnN0YXJ0VGltZS1vKCksMCksZC5lbnRyaWVzLnB1c2godCksYSghMCkpKX0pKTtoJiYoYT1pKGUsZCxiLHQucmVwb3J0QWxsQ2hhbmdlcyksbigobj0+e2Q9YyhcIkZDUFwiKSxhPWkoZSxkLGIsdC5yZXBvcnRBbGxDaGFuZ2VzKSxzKCgoKT0+e2QudmFsdWU9cGVyZm9ybWFuY2Uubm93KCktbi50aW1lU3RhbXAsYSghMCl9KSl9KSkpfSkpfSxMPVsuMSwuMjVdO2xldCBQPTAsVD0xLzAsXz0wO2NvbnN0IE09ZT0+e2Zvcihjb25zdCB0IG9mIGUpdC5pbnRlcmFjdGlvbklkJiYoVD1NYXRoLm1pbihULHQuaW50ZXJhY3Rpb25JZCksXz1NYXRoLm1heChfLHQuaW50ZXJhY3Rpb25JZCksUD1fPyhfLVQpLzcrMTowKX07bGV0IHc7Y29uc3QgQz0oKT0+dz9QOnBlcmZvcm1hbmNlLmludGVyYWN0aW9uQ291bnQ/PzAsST0oKT0+e1wiaW50ZXJhY3Rpb25Db3VudFwiaW4gcGVyZm9ybWFuY2V8fHd8fCh3PWYoXCJldmVudFwiLE0se3R5cGU6XCJldmVudFwiLGJ1ZmZlcmVkOiEwLGR1cmF0aW9uVGhyZXNob2xkOjB9KSl9O2xldCBGPTA7Y2xhc3Mga3t1PVtdO2w9bmV3IE1hcDttO3Y7cCgpe0Y9QygpLHRoaXMudS5sZW5ndGg9MCx0aGlzLmwuY2xlYXIoKX1MKCl7Y29uc3QgZT1NYXRoLm1pbih0aGlzLnUubGVuZ3RoLTEsTWF0aC5mbG9vcigoQygpLUYpLzUwKSk7cmV0dXJuIHRoaXMudVtlXX1oKGUpe2lmKHRoaXMubT8uKGUpLCFlLmludGVyYWN0aW9uSWQmJlwiZmlyc3QtaW5wdXRcIiE9PWUuZW50cnlUeXBlKXJldHVybjtjb25zdCB0PXRoaXMudS5hdCgtMSk7bGV0IG49dGhpcy5sLmdldChlLmludGVyYWN0aW9uSWQpO2lmKG58fHRoaXMudS5sZW5ndGg8MTB8fGUuZHVyYXRpb24+dC5QKXtpZihuP2UuZHVyYXRpb24+bi5QPyhuLmVudHJpZXM9W2VdLG4uUD1lLmR1cmF0aW9uKTplLmR1cmF0aW9uPT09bi5QJiZlLnN0YXJ0VGltZT09PW4uZW50cmllc1swXS5zdGFydFRpbWUmJm4uZW50cmllcy5wdXNoKGUpOihuPXtpZDplLmludGVyYWN0aW9uSWQsZW50cmllczpbZV0sUDplLmR1cmF0aW9ufSx0aGlzLmwuc2V0KG4uaWQsbiksdGhpcy51LnB1c2gobikpLHRoaXMudS5zb3J0KCgoZSx0KT0+dC5QLWUuUCkpLHRoaXMudS5sZW5ndGg+MTApe2NvbnN0IGU9dGhpcy51LnNwbGljZSgxMCk7Zm9yKGNvbnN0IHQgb2YgZSl0aGlzLmwuZGVsZXRlKHQuaWQpfXRoaXMudj8uKG4pfX19Y29uc3QgQT1lPT57Y29uc3QgdD1nbG9iYWxUaGlzLnJlcXVlc3RJZGxlQ2FsbGJhY2t8fHNldFRpbWVvdXQ7XCJoaWRkZW5cIj09PWRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZT9lKCk6KGU9dShlKSxhZGRFdmVudExpc3RlbmVyKFwidmlzaWJpbGl0eWNoYW5nZVwiLGUse29uY2U6ITAsY2FwdHVyZTohMH0pLHQoKCgpPT57ZSgpLHJlbW92ZUV2ZW50TGlzdGVuZXIoXCJ2aXNpYmlsaXR5Y2hhbmdlXCIsZSx7Y2FwdHVyZTohMH0pfSkpKX0sQj1bMjAwLDUwMF07Y2xhc3MgU3ttO2goZSl7dGhpcy5tPy4oZSl9fWNvbnN0IE49WzI1MDAsNGUzXSxxPVs4MDAsMTgwMF0sSD1lPT57ZG9jdW1lbnQucHJlcmVuZGVyaW5nP3koKCgpPT5IKGUpKSk6XCJjb21wbGV0ZVwiIT09ZG9jdW1lbnQucmVhZHlTdGF0ZT9hZGRFdmVudExpc3RlbmVyKFwibG9hZFwiLCgoKT0+SChlKSksITApOnNldFRpbWVvdXQoZSl9O3JldHVybiBlLkNMU1RocmVzaG9sZHM9TCxlLkZDUFRocmVzaG9sZHM9YixlLklOUFRocmVzaG9sZHM9QixlLkxDUFRocmVzaG9sZHM9TixlLlRURkJUaHJlc2hvbGRzPXEsZS5vbkNMUz0oZSx0PXt9KT0+e2NvbnN0IHI9ZygpO0UodSgoKCk9PntsZXQgbyxhPWMoXCJDTFNcIiwwKTtjb25zdCB1PWQodCxoKSxsPWU9Pntmb3IoY29uc3QgdCBvZiBlKXUuaCh0KTt1Lmk+YS52YWx1ZSYmKGEudmFsdWU9dS5pLGEuZW50cmllcz11Lm8sbygpKX0sbT1mKFwibGF5b3V0LXNoaWZ0XCIsbCk7bSYmKG89aShlLGEsTCx0LnJlcG9ydEFsbENoYW5nZXMpLHIub25IaWRkZW4oKCgpPT57bChtLnRha2VSZWNvcmRzKCkpLG8oITApfSkpLG4oKCgpPT57dS5pPTAsYT1jKFwiQ0xTXCIsMCksbz1pKGUsYSxMLHQucmVwb3J0QWxsQ2hhbmdlcykscygoKCk9Pm8oKSkpfSkpLHNldFRpbWVvdXQobykpfSkpKX0sZS5vbkZDUD1FLGUub25JTlA9KGUsdD17fSk9PntpZighZ2xvYmFsVGhpcy5QZXJmb3JtYW5jZUV2ZW50VGltaW5nfHwhKFwiaW50ZXJhY3Rpb25JZFwiaW4gUGVyZm9ybWFuY2VFdmVudFRpbWluZy5wcm90b3R5cGUpKXJldHVybjtjb25zdCBzPWcoKTt5KCgoKT0+e0koKTtsZXQgcixvPWMoXCJJTlBcIik7Y29uc3QgYT1kKHQsayksaD1lPT57QSgoKCk9Pntmb3IoY29uc3QgdCBvZiBlKWEuaCh0KTtjb25zdCB0PWEuTCgpO3QmJnQuUCE9PW8udmFsdWUmJihvLnZhbHVlPXQuUCxvLmVudHJpZXM9dC5lbnRyaWVzLHIoKSl9KSl9LHU9ZihcImV2ZW50XCIsaCx7ZHVyYXRpb25UaHJlc2hvbGQ6dC5kdXJhdGlvblRocmVzaG9sZD8/NDB9KTtyPWkoZSxvLEIsdC5yZXBvcnRBbGxDaGFuZ2VzKSx1JiYodS5vYnNlcnZlKHt0eXBlOlwiZmlyc3QtaW5wdXRcIixidWZmZXJlZDohMH0pLHMub25IaWRkZW4oKCgpPT57aCh1LnRha2VSZWNvcmRzKCkpLHIoITApfSkpLG4oKCgpPT57YS5wKCksbz1jKFwiSU5QXCIpLHI9aShlLG8sQix0LnJlcG9ydEFsbENoYW5nZXMpfSkpKX0pKX0sZS5vbkxDUD0oZSx0PXt9KT0+e3koKCgpPT57Y29uc3Qgcj1nKCk7bGV0IGEsaD1jKFwiTENQXCIpO2NvbnN0IGw9ZCh0LFMpLG09ZT0+e3QucmVwb3J0QWxsQ2hhbmdlc3x8KGU9ZS5zbGljZSgtMSkpO2Zvcihjb25zdCB0IG9mIGUpbC5oKHQpLHQuc3RhcnRUaW1lPHIuZmlyc3RIaWRkZW5UaW1lJiYoaC52YWx1ZT1NYXRoLm1heCh0LnN0YXJ0VGltZS1vKCksMCksaC5lbnRyaWVzPVt0XSxhKCkpfSx2PWYoXCJsYXJnZXN0LWNvbnRlbnRmdWwtcGFpbnRcIixtKTtpZih2KXthPWkoZSxoLE4sdC5yZXBvcnRBbGxDaGFuZ2VzKTtjb25zdCByPXUoKCgpPT57bSh2LnRha2VSZWNvcmRzKCkpLHYuZGlzY29ubmVjdCgpLGEoITApfSkpLG89ZT0+e2UuaXNUcnVzdGVkJiYoQShyKSxyZW1vdmVFdmVudExpc3RlbmVyKGUudHlwZSxvLHtjYXB0dXJlOiEwfSkpfTtmb3IoY29uc3QgZSBvZltcImtleWRvd25cIixcImNsaWNrXCIsXCJ2aXNpYmlsaXR5Y2hhbmdlXCJdKWFkZEV2ZW50TGlzdGVuZXIoZSxvLHtjYXB0dXJlOiEwfSk7bigobj0+e2g9YyhcIkxDUFwiKSxhPWkoZSxoLE4sdC5yZXBvcnRBbGxDaGFuZ2VzKSxzKCgoKT0+e2gudmFsdWU9cGVyZm9ybWFuY2Uubm93KCktbi50aW1lU3RhbXAsYSghMCl9KSl9KSl9fSkpfSxlLm9uVFRGQj0oZSx0PXt9KT0+e2xldCBzPWMoXCJUVEZCXCIpLGE9aShlLHMscSx0LnJlcG9ydEFsbENoYW5nZXMpO0goKCgpPT57Y29uc3QgZD1yKCk7ZCYmKHMudmFsdWU9TWF0aC5tYXgoZC5yZXNwb25zZVN0YXJ0LW8oKSwwKSxzLmVudHJpZXM9W2RdLGEoITApLG4oKCgpPT57cz1jKFwiVFRGQlwiLDApLGE9aShlLHMscSx0LnJlcG9ydEFsbENoYW5nZXMpLGEoITApfSkpKX0pKX0sZX0oe30pO1xuIiwiLypcbiAqIENvcHlyaWdodCAyMDI0IEFkb2JlLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICogVGhpcyBmaWxlIGlzIGxpY2Vuc2VkIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHlcbiAqIG9mIHRoZSBMaWNlbnNlIGF0IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXJcbiAqIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VOVEFUSU9OU1xuICogT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlXG4gKiBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbWF4LWxlblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby1leHRyYW5lb3VzLWRlcGVuZGVuY2llcywgaW1wb3J0L25vLXJlbGF0aXZlLXBhY2thZ2VzLCBuby11bnVzZWQtdmFyc1xuaW1wb3J0ICogYXMgd2ViVml0YWxzIGZyb20gJy4uL25vZGVfbW9kdWxlcy93ZWItdml0YWxzL2Rpc3Qvd2ViLXZpdGFscy5paWZlLmpzJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gYWRkQ1dWVHJhY2tpbmcoe1xuICBzYW1wbGVSVU0sIHNvdXJjZVNlbGVjdG9yLCB0YXJnZXRTZWxlY3RvciwgZmZsYWdzLFxufSkge1xuICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgY3d2U2NyaXB0ID0gbmV3IFVSTCgnLnJ1bS93ZWItdml0YWxzL2Rpc3Qvd2ViLXZpdGFscy5paWZlLmpzJywgc2FtcGxlUlVNLmJhc2VVUkwpLmhyZWY7XG4gICAgICAvKiBjOCBpZ25vcmUgbmV4dCAzICovXG4gICAgICBpZiAoZG9jdW1lbnQucXVlcnlTZWxlY3Rvcihgc2NyaXB0W3NyYz1cIiR7Y3d2U2NyaXB0fVwiXWApKSB7XG4gICAgICAgIC8vIHdlYiB2aXRhbHMgc2NyaXB0IGhhcyBiZWVuIGxvYWRlZCBhbHJlYWR5XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHNjcmlwdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpO1xuICAgICAgc2NyaXB0LnNyYyA9IGN3dlNjcmlwdDtcbiAgICAgIHNjcmlwdC5vbmxvYWQgPSAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHN0b3JlQ1dWID0gKG1lYXN1cmVtZW50KSA9PiB7XG4gICAgICAgICAgY29uc3QgZGF0YSA9IHsgY3d2OiB7fSB9O1xuICAgICAgICAgIGRhdGEuY3d2W21lYXN1cmVtZW50Lm5hbWVdID0gbWVhc3VyZW1lbnQudmFsdWU7XG4gICAgICAgICAgaWYgKG1lYXN1cmVtZW50Lm5hbWUgPT09ICdMQ1AnICYmIG1lYXN1cmVtZW50LmVudHJpZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgY29uc3QgeyBlbGVtZW50IH0gPSBtZWFzdXJlbWVudC5lbnRyaWVzLnBvcCgpO1xuICAgICAgICAgICAgZGF0YS50YXJnZXQgPSB0YXJnZXRTZWxlY3RvcihlbGVtZW50KTtcbiAgICAgICAgICAgIGRhdGEuc291cmNlID0gc291cmNlU2VsZWN0b3IoZWxlbWVudCkgfHwgKGVsZW1lbnQgJiYgZWxlbWVudC5vdXRlckhUTUwuc2xpY2UoMCwgMzApKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgc2FtcGxlUlVNKCdjd3YnLCBkYXRhKTtcbiAgICAgICAgfTtcblxuICAgICAgICBjb25zdCBpc0VhZ2VyID0gKG1ldHJpYykgPT4gWydDTFMnLCAnTENQJ10uaW5jbHVkZXMobWV0cmljKTtcblxuICAgICAgICAvLyBXaGVuIGxvYWRpbmcgYHdlYi12aXRhbHNgIHVzaW5nIGEgY2xhc3NpYyBzY3JpcHQsIGFsbCB0aGUgcHVibGljXG4gICAgICAgIC8vIG1ldGhvZHMgY2FuIGJlIGZvdW5kIG9uIHRoZSBgd2ViVml0YWxzYCBnbG9iYWwgbmFtZXNwYWNlLlxuICAgICAgICBbJ0lOUCcsICdUVEZCJywgJ0NMUycsICdMQ1AnXS5mb3JFYWNoKChtZXRyaWMpID0+IHtcbiAgICAgICAgICBjb25zdCBtZXRyaWNGbiA9IHdpbmRvdy53ZWJWaXRhbHNbYG9uJHttZXRyaWN9YF07XG4gICAgICAgICAgaWYgKHR5cGVvZiBtZXRyaWNGbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgbGV0IG9wdHMgPSB7fTtcbiAgICAgICAgICAgIGZmbGFncy5lbmFibGVkKCdlYWdlcmN3dicsICgpID0+IHtcbiAgICAgICAgICAgICAgb3B0cyA9IHsgcmVwb3J0QWxsQ2hhbmdlczogaXNFYWdlcihtZXRyaWMpIH07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIG1ldHJpY0ZuKHN0b3JlQ1dWLCBvcHRzKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfTtcbiAgICAgIGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoc2NyaXB0KTtcbiAgICAgIC8qIGM4IGlnbm9yZSBuZXh0IDMgKi9cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgLy8gc29tZXRoaW5nIHdlbnQgd3JvbmdcbiAgICB9XG4gIH0sIDIwMDApOyAvLyB3YWl0IGZvciBkZWxheWVkXG59XG4iXSwibmFtZXMiOlsiZSIsInQiLCJuIiwiYWRkRXZlbnRMaXN0ZW5lciIsInBlcnNpc3RlZCIsInRpbWVTdGFtcCIsImkiLCJzIiwiciIsIm8iLCJ2YWx1ZSIsImRlbHRhIiwicmF0aW5nIiwicmVxdWVzdEFuaW1hdGlvbkZyYW1lIiwicGVyZm9ybWFuY2UiLCJnZXRFbnRyaWVzQnlUeXBlIiwicmVzcG9uc2VTdGFydCIsIm5vdyIsImFjdGl2YXRpb25TdGFydCIsImMiLCJkb2N1bWVudCIsInByZXJlbmRlcmluZyIsIndhc0Rpc2NhcmRlZCIsInR5cGUiLCJyZXBsYWNlIiwibmFtZSIsImVudHJpZXMiLCJpZCIsIkRhdGUiLCJNYXRoIiwiZmxvb3IiLCJyYW5kb20iLCJuYXZpZ2F0aW9uVHlwZSIsImEiLCJXZWFrTWFwIiwiZCIsImdldCIsInNldCIsImgiLCJoYWRSZWNlbnRJbnB1dCIsImF0Iiwic3RhcnRUaW1lIiwicHVzaCIsImYiLCJQZXJmb3JtYW5jZU9ic2VydmVyIiwic3VwcG9ydGVkRW50cnlUeXBlcyIsImluY2x1ZGVzIiwiUHJvbWlzZSIsInJlc29sdmUiLCJ0aGVuIiwiZ2V0RW50cmllcyIsIm9ic2VydmUiLCJidWZmZXJlZCIsInUiLCJsIiwibSIsIlNldCIsInYiLCJ2aXNpYmlsaXR5U3RhdGUiLCJwIiwiaXNGaW5pdGUiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiZyIsImdsb2JhbFRoaXMiLCJmaWx0ZXIiLCJzZXRUaW1lb3V0IiwiZmlyc3RIaWRkZW5UaW1lIiwib25IaWRkZW4iLCJhZGQiLCJ5IiwiYiIsIkUiLCJkaXNjb25uZWN0IiwibWF4IiwicmVwb3J0QWxsQ2hhbmdlcyIsIkwiLCJQIiwiVCIsIl8iLCJNIiwiaW50ZXJhY3Rpb25JZCIsIm1pbiIsInciLCJDIiwiaW50ZXJhY3Rpb25Db3VudCIsIkkiLCJkdXJhdGlvblRocmVzaG9sZCIsIkYiLCJrIiwiTWFwIiwibGVuZ3RoIiwiY2xlYXIiLCJlbnRyeVR5cGUiLCJkdXJhdGlvbiIsInNvcnQiLCJzcGxpY2UiLCJkZWxldGUiLCJBIiwicmVxdWVzdElkbGVDYWxsYmFjayIsIm9uY2UiLCJjYXB0dXJlIiwiQiIsIlMiLCJOIiwicSIsIkgiLCJyZWFkeVN0YXRlIiwiQ0xTVGhyZXNob2xkcyIsIkZDUFRocmVzaG9sZHMiLCJJTlBUaHJlc2hvbGRzIiwiTENQVGhyZXNob2xkcyIsIlRURkJUaHJlc2hvbGRzIiwib25DTFMiLCJ0YWtlUmVjb3JkcyIsIm9uRkNQIiwib25JTlAiLCJQZXJmb3JtYW5jZUV2ZW50VGltaW5nIiwicHJvdG90eXBlIiwib25MQ1AiLCJzbGljZSIsImlzVHJ1c3RlZCIsIm9uVFRGQiIsImFkZENXVlRyYWNraW5nIiwic2FtcGxlUlVNIiwic291cmNlU2VsZWN0b3IiLCJ0YXJnZXRTZWxlY3RvciIsImZmbGFncyIsImN3dlNjcmlwdCIsIlVSTCIsImJhc2VVUkwiLCJocmVmIiwicXVlcnlTZWxlY3RvciIsInNjcmlwdCIsImNyZWF0ZUVsZW1lbnQiLCJzcmMiLCJvbmxvYWQiLCJzdG9yZUNXViIsIm1lYXN1cmVtZW50IiwiZGF0YSIsImN3diIsImVsZW1lbnQiLCJwb3AiLCJ0YXJnZXQiLCJzb3VyY2UiLCJvdXRlckhUTUwiLCJpc0VhZ2VyIiwibWV0cmljIiwiZm9yRWFjaCIsIm1ldHJpY0ZuIiwid2luZG93Iiwid2ViVml0YWxzIiwib3B0cyIsImVuYWJsZWQiLCJoZWFkIiwiYXBwZW5kQ2hpbGQiLCJlcnJvciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Q0FBYyxVQUFTQSxDQUFDLEVBQUM7O0VBQWMsSUFBSUMsQ0FBQyxHQUFDLEVBQUU7RUFBQyxNQUFNQyxDQUFDLEdBQUNGLENBQUMsSUFBRTtBQUFDRyxNQUFBQSxnQkFBZ0IsQ0FBQyxVQUFVLEVBQUVELENBQUMsSUFBRTtBQUFDQSxRQUFBQSxDQUFDLENBQUNFLFNBQVMsS0FBR0gsQ0FBQyxHQUFDQyxDQUFDLENBQUNHLFNBQVMsRUFBQ0wsQ0FBQyxDQUFDRSxDQUFDLENBQUMsQ0FBQztNQUFBLENBQUMsRUFBRSxJQUFFLENBQUM7SUFBQSxDQUFDO0lBQUNJLENBQUMsR0FBQ0EsQ0FBQ04sQ0FBQyxFQUFDQyxDQUFDLEVBQUNDLENBQUMsRUFBQ0ksQ0FBQyxLQUFHO01BQUMsSUFBSUMsQ0FBQyxFQUFDQyxDQUFDO0FBQUMsTUFBQSxPQUFPQyxDQUFDLElBQUU7QUFBQ1IsUUFBQUEsQ0FBQyxDQUFDUyxLQUFLLElBQUUsQ0FBQyxLQUFHRCxDQUFDLElBQUVILENBQUMsQ0FB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V0FBVyxDQUFDL0gsS0FBSztBQUM5QyxVQUFBLElBQUkrSCxXQUFXLENBQUNoSCxJQUFJLEtBQUssS0FBSyxJQUFJZ0gsV0FBVyxDQUFDL0csT0FBTyxDQUFDZ0UsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUNoRSxNQUFNO0FBQUVrRCxjQUFBQTtBQUFRLGFBQUMsR0FBR0gsV0FBVyxDQUFDL0csT0FBTyxDQUFDbUgsR0FBRyxFQUFFO0FBQzdDSCxZQUFBQSxJQUFJLENBQUNJLE1BQU0sR0FBR2pCLGNBQWMsQ0FBQ2UsT0FBTyxDQUFDO0FBQ3JDRixZQUFBQSxJQUFJLENBQUNLLE1BQU0sR0FBR25CLGNBQWMsQ0FBQ2dCLE9BQU8sQ0FBQyxJQUFLQSxPQUFPLElBQUlBLE9BQU8sQ0FBQ0ksU0FBUyxDQUFDekIsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUU7QUFDdEYsVUFBQTtBQUNBSSxVQUFBQSxTQUFTLENBQUMsS0FBSyxFQUFFZSxJQUFJLENBQUM7UUFDeEIsQ0FBQztBQUVELFFBQUEsTUFBTU8sT0FBTyxHQUFJQyxNQUFNLElBQUssQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUNwRyxRQUFRLENBQUNvRyxNQUFNLENBQUM7QUFJM0QsUUFBQSxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDQyxPQUFPLENBQUVELE1BQU0sSUFBSztVQUNoRCxNQUFNRSxRQUFRLEdBQUdDLE1BQU0sQ0FBQ0MsU0FBUyxDQUFDLENBQUEsRUFBQSxFQUFLSixNQUFNLENBQUEsQ0FBRSxDQUFDO0FBQ2hELFVBQUEsSUFBSSxPQUFPRSxRQUFRLEtBQUssVUFBVSxFQUFFO1lBQ2xDLElBQUlHLElBQUksR0FBRyxFQUFFO0FBQ2J6QixZQUFBQSxNQUFNLENBQUMwQixPQUFPLENBQUMsVUFBVSxFQUFFLE1BQU07QUFDL0JELGNBQUFBLElBQUksR0FBRztnQkFBRTdFLGdCQUFnQixFQUFFdUUsT0FBTyxDQUFDQyxNQUFNO2VBQUc7QUFDOUMsWUFBQSxDQUFDLENBQUM7QUFDRkUsWUFBQUEsUUFBUSxDQUFDWixRQUFRLEVBQUVlLElBQUksQ0FBQztBQUMxQixVQUFBO0FBQ0YsUUFBQSxDQUFDLENBQUM7TUFDSixDQUFDO0FBQ0RuSSxNQUFBQSxRQUFRLENBQUNxSSxJQUFJLENBQUNDLFdBQVcsQ0FBQ3RCLE1BQU0sQ0FBQztBQUVuQyxJQUFBLENBQUMsQ0FBQyxPQUFPdUIsS0FBSyxFQUFFLENBRWhCO0VBQ0YsQ0FBQyxFQUFFLElBQUksQ0FBQztBQUNWOzs7OyIsInhfZ29vZ2xlX2lnbm9yZUxpc3QiOlswXX0=
@@ -1 +1 @@
1
- 44a60e36c92e7b70b0dd230d2f1d1e7b
1
+ 214afb5bc6408240a88bae4d20224cf3
@@ -1 +1 @@
1
- 5617845e9f7ebe824f07b3f042193b12
1
+ 6267791fa138d96308480bc66b8fb805
@@ -1 +1 @@
1
- ebe320b3bc258db22786d472559793c1
1
+ d241929d3af96465ac32a4158c0e0fe8
@@ -1 +1 @@
1
- 3476ee246a6b4c1599651d8a7580e2c7
1
+ 69d98a5cc1e1f11f6bedc2dbe91d8f8f