valtech-components 4.0.153 → 4.0.155

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.
@@ -145,11 +145,11 @@ export function parseMarkdownArticle(markdown, options) {
145
145
  const unord = cur.match(UNORDERED_RE);
146
146
  const ord = cur.match(ORDERED_RE);
147
147
  if (check)
148
- items.push({ text: processInlineBold(check[2].trim()) });
148
+ items.push({ text: processInline(check[2].trim()) });
149
149
  else if (ord && listType === 'ordered')
150
- items.push({ text: processInlineBold(ord[1].trim()) });
150
+ items.push({ text: processInline(ord[1].trim()) });
151
151
  else if (unord && listType !== 'ordered')
152
- items.push({ text: processInlineBold(unord[1].trim()) });
152
+ items.push({ text: processInline(unord[1].trim()) });
153
153
  else
154
154
  break;
155
155
  i++;
@@ -162,7 +162,7 @@ export function parseMarkdownArticle(markdown, options) {
162
162
  paragraph.push(lines[i]);
163
163
  i++;
164
164
  }
165
- const text = processInlineBold(paragraph.join(' ').trim());
165
+ const text = processInline(paragraph.join(' ').trim());
166
166
  if (text) {
167
167
  elements.push({
168
168
  type: 'paragraph',
@@ -201,8 +201,15 @@ function startsNewBlock(line) {
201
201
  line.startsWith('>') ||
202
202
  BOX_DRAWING.test(line));
203
203
  }
204
- function processInlineBold(text) {
205
- return text.replace(/\*\*(.+?)\*\*/g, '<strong>$1</strong>');
204
+ // Procesa marcado inline a HTML (renderizado vía innerHTML por val-text/val-article).
205
+ // Los enlaces [texto](url) NO se tocan acá: los resuelve el ProcessLinksPipe en
206
+ // runtime (gateado por processLinks). Orden: código primero (para no interpretar
207
+ // su interior), luego negrita, luego itálica (los `**` ya consumidos no colisionan).
208
+ function processInline(text) {
209
+ return text
210
+ .replace(/`([^`]+)`/g, '<code>$1</code>')
211
+ .replace(/\*\*(.+?)\*\*/g, '<strong>$1</strong>')
212
+ .replace(/\*([^*\n]+?)\*/g, '<em>$1</em>');
206
213
  }
207
214
  function makeHeading(level, content) {
208
215
  if (level === 1) {
@@ -228,10 +235,10 @@ function makeQuoteOrCallout(block, labels) {
228
235
  .slice(1)
229
236
  .filter(l => l.trim() !== '')
230
237
  .join('\n');
231
- const text = processInlineBold([firstLineRest, rest].filter(Boolean).join('\n').trim());
238
+ const text = processInline([firstLineRest, rest].filter(Boolean).join('\n').trim());
232
239
  return makeNote(type, text, labels);
233
240
  }
234
- const text = processInlineBold(lines.join(' ').trim());
241
+ const text = processInline(lines.join(' ').trim());
235
242
  return {
236
243
  type: 'quote',
237
244
  props: {
@@ -282,7 +289,7 @@ function makeTable(rows) {
282
289
  {
283
290
  type: 'paragraph',
284
291
  props: {
285
- content: header.join(' · '),
292
+ content: header.map(processInline).join(' · '),
286
293
  size: 'medium',
287
294
  color: 'dark',
288
295
  bold: false,
@@ -295,7 +302,9 @@ function makeTable(rows) {
295
302
  return dataRows.map(row => {
296
303
  const pairs = row.map((cell, idx) => {
297
304
  const key = header[idx] ?? '';
298
- return key ? `<strong>${key}:</strong> ${cell}` : cell;
305
+ return key
306
+ ? `<strong>${processInline(key)}:</strong> ${processInline(cell)}`
307
+ : processInline(cell);
299
308
  });
300
309
  return {
301
310
  type: 'paragraph',
@@ -310,4 +319,4 @@ function makeTable(rows) {
310
319
  };
311
320
  });
312
321
  }
313
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFya2Rvd24tYXJ0aWNsZS1wYXJzZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL21hcmtkb3duLWFydGljbGUvbWFya2Rvd24tYXJ0aWNsZS1wYXJzZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBb0JBLDBEQUEwRDtBQUMxRCxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQThDO0lBQ3ZFLEVBQUUsRUFBRTtRQUNGLElBQUksRUFBRSxNQUFNO1FBQ1osR0FBRyxFQUFFLEtBQUs7UUFDVixJQUFJLEVBQUUsTUFBTTtRQUNaLFNBQVMsRUFBRSxZQUFZO1FBQ3ZCLE9BQU8sRUFBRSxVQUFVO1FBQ25CLE9BQU8sRUFBRSxZQUFZO0tBQ3RCO0lBQ0QsRUFBRSxFQUFFO1FBQ0YsSUFBSSxFQUFFLE1BQU07UUFDWixHQUFHLEVBQUUsS0FBSztRQUNWLElBQUksRUFBRSxNQUFNO1FBQ1osU0FBUyxFQUFFLFdBQVc7UUFDdEIsT0FBTyxFQUFFLFNBQVM7UUFDbEIsT0FBTyxFQUFFLFNBQVM7S0FDbkI7SUFDRCxFQUFFLEVBQUU7UUFDRixJQUFJLEVBQUUsTUFBTTtRQUNaLEdBQUcsRUFBRSxNQUFNO1FBQ1gsSUFBSSxFQUFFLE1BQU07UUFDWixTQUFTLEVBQUUsWUFBWTtRQUN2QixPQUFPLEVBQUUsU0FBUztRQUNsQixPQUFPLEVBQUUsU0FBUztLQUNuQjtDQUNGLENBQUM7QUFFRjs7O0dBR0c7QUFDSCxNQUFNLGNBQWMsR0FBOEQ7SUFDaEYsSUFBSSxFQUFFLFNBQVM7SUFDZixHQUFHLEVBQUUsU0FBUztJQUNkLElBQUksRUFBRSxVQUFVO0lBQ2hCLFNBQVMsRUFBRSxTQUFTO0lBQ3BCLE9BQU8sRUFBRSxTQUFTO0lBQ2xCLE9BQU8sRUFBRSxRQUFRO0NBQ2xCLENBQUM7QUFjRixNQUFNLFdBQVcsR0FBRyxxQkFBcUIsQ0FBQztBQUMxQyxNQUFNLFVBQVUsR0FBRyw4REFBOEQsQ0FBQztBQUNsRixNQUFNLFFBQVEsR0FBRyxrQkFBa0IsQ0FBQztBQUNwQyxNQUFNLFVBQVUsR0FBRyxtQkFBbUIsQ0FBQztBQUN2QyxNQUFNLFlBQVksR0FBRyxnQ0FBZ0MsQ0FBQztBQUN0RCxNQUFNLFlBQVksR0FBRyxtQkFBbUIsQ0FBQztBQUN6QyxNQUFNLFlBQVksR0FBRyxpQ0FBaUMsQ0FBQztBQUN2RCxNQUFNLFVBQVUsR0FBRyxtQkFBbUIsQ0FBQztBQUN2QyxNQUFNLGdCQUFnQixHQUFHLHdCQUF3QixDQUFDO0FBQ2xELE1BQU0sWUFBWSxHQUFHLGtCQUFrQixDQUFDO0FBRXhDOzs7Ozs7Ozs7Ozs7O0dBYUc7QUFDSCxNQUFNLFVBQVUsb0JBQW9CLENBQ2xDLFFBQWdCLEVBQ2hCLE9BQXFDO0lBRXJDLE1BQU0sS0FBSyxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDOUMsTUFBTSxRQUFRLEdBQXFCLEVBQUUsQ0FBQztJQUN0QyxNQUFNLE1BQU0sR0FDVixPQUFPLEVBQUUsYUFBYTtRQUN0QixDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUV6RSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDVixPQUFPLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDeEIsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRXRCLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDO1lBQ3ZCLENBQUMsRUFBRSxDQUFDO1lBQ0osU0FBUztRQUNYLENBQUM7UUFFRCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ25DLElBQUksS0FBSyxFQUFFLENBQUM7WUFDVixNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksU0FBUyxDQUFDO1lBQ25DLE1BQU0sSUFBSSxHQUFhLEVBQUUsQ0FBQztZQUMxQixDQUFDLEVBQUUsQ0FBQztZQUNKLE9BQU8sQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQ3BELElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3BCLENBQUMsRUFBRSxDQUFDO1lBQ04sQ0FBQztZQUNELENBQUMsRUFBRSxDQUFDO1lBQ0osUUFBUSxDQUFDLElBQUksQ0FBQztnQkFDWixJQUFJLEVBQUUsTUFBTTtnQkFDWixLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUU7YUFDaEUsQ0FBQyxDQUFDO1lBQ0gsU0FBUztRQUNYLENBQUM7UUFFRCxJQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUMzQixNQUFNLElBQUksR0FBYSxFQUFFLENBQUM7WUFDMUIsT0FBTyxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQ2xGLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3BCLENBQUMsRUFBRSxDQUFDO1lBQ04sQ0FBQztZQUNELE9BQU8sSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFO2dCQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUN0RSxRQUFRLENBQUMsSUFBSSxDQUFDO2dCQUNaLElBQUksRUFBRSxNQUFNO2dCQUNaLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRTthQUNsRSxDQUFDLENBQUM7WUFDSCxTQUFTO1FBQ1gsQ0FBQztRQUVELElBQUksWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQzVCLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDL0QsQ0FBQyxFQUFFLENBQUM7WUFDSixTQUFTO1FBQ1gsQ0FBQztRQUVELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDdkMsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUNaLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNqRSxDQUFDLEVBQUUsQ0FBQztZQUNKLFNBQVM7UUFDWCxDQUFDO1FBRUQsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDekIsTUFBTSxLQUFLLEdBQWEsRUFBRSxDQUFDO1lBQzNCLE9BQU8sQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUNwRCxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNyQixDQUFDLEVBQUUsQ0FBQztZQUNOLENBQUM7WUFDRCxRQUFRLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO1lBQ2pELFNBQVM7UUFDWCxDQUFDO1FBRUQsSUFBSSxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDNUIsTUFBTSxJQUFJLEdBQWEsRUFBRSxDQUFDO1lBQzFCLE9BQU8sQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLElBQUksWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUN2RCxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNwQixDQUFDLEVBQUUsQ0FBQztZQUNOLENBQUM7WUFDRCxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDbEMsU0FBUztRQUNYLENBQUM7UUFFRCxJQUFJLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDaEYsTUFBTSxRQUFRLEdBQTBDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO2dCQUM3RSxDQUFDLENBQUMsV0FBVztnQkFDYixDQUFDLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7b0JBQ3JCLENBQUMsQ0FBQyxTQUFTO29CQUNYLENBQUMsQ0FBQyxXQUFXLENBQUM7WUFFbEIsTUFBTSxLQUFLLEdBQXlDLEVBQUUsQ0FBQztZQUN2RCxPQUFPLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQztnQkFDbEQsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNyQixNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDO2dCQUN0QyxNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDO2dCQUN0QyxNQUFNLEdBQUcsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO2dCQUNsQyxJQUFJLEtBQUs7b0JBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7cUJBQy9ELElBQUksR0FBRyxJQUFJLFFBQVEsS0FBSyxTQUFTO29CQUNwQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztxQkFDcEQsSUFBSSxLQUFLLElBQUksUUFBUSxLQUFLLFNBQVM7b0JBQ3RDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDOztvQkFDdEQsTUFBTTtnQkFDWCxDQUFDLEVBQUUsQ0FBQztZQUNOLENBQUM7WUFDRCxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQzVELFNBQVM7UUFDWCxDQUFDO1FBRUQsTUFBTSxTQUFTLEdBQWEsRUFBRSxDQUFDO1FBQy9CLE9BQU8sQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQy9FLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDekIsQ0FBQyxFQUFFLENBQUM7UUFDTixDQUFDO1FBQ0QsTUFBTSxJQUFJLEdBQUcsaUJBQWlCLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQzNELElBQUksSUFBSSxFQUFFLENBQUM7WUFDVCxRQUFRLENBQUMsSUFBSSxDQUFDO2dCQUNaLElBQUksRUFBRSxXQUFXO2dCQUNqQixLQUFLLEVBQUU7b0JBQ0wsT0FBTyxFQUFFLElBQUk7b0JBQ2IsSUFBSSxFQUFFLFFBQVE7b0JBQ2QsS0FBSyxFQUFFLE1BQU07b0JBQ2IsSUFBSSxFQUFFLEtBQUs7b0JBQ1gsWUFBWSxFQUFFLElBQUk7b0JBQ2xCLGdCQUFnQixFQUFFLElBQUk7aUJBQ3ZCO2FBQ0YsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUM7SUFFRCxnRUFBZ0U7SUFDaEUsTUFBTSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsYUFBYSxFQUFFLEVBQUUsRUFBRSxHQUFHLGlCQUFpQixFQUFFLEdBQUcsT0FBTyxJQUFJLEVBQUUsQ0FBQztJQUU5RSxPQUFPO1FBQ0wsUUFBUTtRQUNSLFFBQVEsRUFBRSxPQUFPO1FBQ2pCLFFBQVEsRUFBRSxJQUFJO1FBQ2QsS0FBSyxFQUFFLE1BQU07UUFDYixHQUFHLGlCQUFpQjtLQUNyQixDQUFDO0FBQ0osQ0FBQztBQUVELFNBQVMsU0FBUyxDQUFDLEVBQVU7SUFDM0IsT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ3hELENBQUM7QUFFRCxTQUFTLGNBQWMsQ0FBQyxJQUFZO0lBQ2xDLE9BQU8sQ0FDTCxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztRQUNyQixRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztRQUNuQixZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztRQUN2QixZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztRQUN2QixZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztRQUN2QixVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztRQUNyQixZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztRQUN2QixJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQztRQUNwQixXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUN2QixDQUFDO0FBQ0osQ0FBQztBQUVELFNBQVMsaUJBQWlCLENBQUMsSUFBWTtJQUNyQyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLEVBQUUscUJBQXFCLENBQUMsQ0FBQztBQUMvRCxDQUFDO0FBRUQsU0FBUyxXQUFXLENBQUMsS0FBYSxFQUFFLE9BQWU7SUFDakQsSUFBSSxLQUFLLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDaEIsT0FBTztZQUNMLElBQUksRUFBRSxPQUFPO1lBQ2IsS0FBSyxFQUFFLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFO1NBQzlELENBQUM7SUFDSixDQUFDO0lBQ0QsTUFBTSxJQUFJLEdBQ1IsS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQztJQUMzRCxPQUFPO1FBQ0wsSUFBSSxFQUFFLFVBQVU7UUFDaEIsS0FBSyxFQUFFLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUU7S0FDcEQsQ0FBQztBQUNKLENBQUM7QUFFRCxTQUFTLGtCQUFrQixDQUFDLEtBQWUsRUFBRSxNQUFxQjtJQUNoRSxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkIsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN4QyxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUVyRCxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBQ1osTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBaUIsQ0FBQztRQUNyRCxNQUFNLGFBQWEsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3ZDLE1BQU0sSUFBSSxHQUFHLEtBQUs7YUFDZixLQUFLLENBQUMsQ0FBQyxDQUFDO2FBQ1IsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQzthQUM1QixJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDZCxNQUFNLElBQUksR0FBRyxpQkFBaUIsQ0FBQyxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7UUFDeEYsT0FBTyxRQUFRLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQsTUFBTSxJQUFJLEdBQUcsaUJBQWlCLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZELE9BQU87UUFDTCxJQUFJLEVBQUUsT0FBTztRQUNiLEtBQUssRUFBRTtZQUNMLE9BQU8sRUFBRSxJQUFJO1lBQ2IsSUFBSSxFQUFFLFFBQVE7WUFDZCxLQUFLLEVBQUUsUUFBUTtZQUNmLElBQUksRUFBRSxLQUFLO1lBQ1gsYUFBYSxFQUFFLElBQUk7WUFDbkIsU0FBUyxFQUFFLE1BQU07U0FDbEI7S0FDRixDQUFDO0FBQ0osQ0FBQztBQUVELFNBQVMsUUFBUSxDQUFDLElBQWlCLEVBQUUsSUFBWSxFQUFFLE1BQXFCO0lBQ3RFLDhFQUE4RTtJQUM5RSw4RUFBOEU7SUFDOUUsNEVBQTRFO0lBQzVFLGtFQUFrRTtJQUNsRSxNQUFNLE1BQU0sR0FBRyxJQUFJLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7SUFDekQsT0FBTztRQUNMLElBQUksRUFBRSxNQUFNO1FBQ1osS0FBSyxFQUFFO1lBQ0wsSUFBSTtZQUNKLE1BQU07WUFDTixLQUFLLEVBQUUsY0FBYyxDQUFDLElBQUksQ0FBQztZQUMzQixTQUFTLEVBQUUsTUFBTTtZQUNqQixJQUFJLEVBQUUsUUFBUTtZQUNkLE9BQU8sRUFBRSxJQUFJO1lBQ2IsZ0JBQWdCLEVBQUUsSUFBSTtZQUN0QixZQUFZLEVBQUUsSUFBSTtTQUNuQjtLQUNGLENBQUM7QUFDSixDQUFDO0FBRUQsU0FBUyxTQUFTLENBQUMsSUFBYztJQUMvQixNQUFNLE1BQU0sR0FBRyxJQUFJO1NBQ2hCLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3RDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUNQLENBQUM7U0FDRSxJQUFJLEVBQUU7U0FDTixPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQztTQUNsQixPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQztTQUNsQixLQUFLLENBQUMsR0FBRyxDQUFDO1NBQ1YsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQ3RCLENBQUM7SUFDSixJQUFJLE1BQU0sQ0FBQyxNQUFNLEtBQUssQ0FBQztRQUFFLE9BQU8sRUFBRSxDQUFDO0lBRW5DLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN6QixNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pDLElBQUksUUFBUSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUMxQixPQUFPO1lBQ0w7Z0JBQ0UsSUFBSSxFQUFFLFdBQVc7Z0JBQ2pCLEtBQUssRUFBRTtvQkFDTCxPQUFPLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7b0JBQzNCLElBQUksRUFBRSxRQUFRO29CQUNkLEtBQUssRUFBRSxNQUFNO29CQUNiLElBQUksRUFBRSxLQUFLO29CQUNYLFlBQVksRUFBRSxJQUFJO29CQUNsQixnQkFBZ0IsRUFBRSxJQUFJO2lCQUN2QjthQUNGO1NBQ0YsQ0FBQztJQUNKLENBQUM7SUFFRCxPQUFPLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUU7UUFDeEIsTUFBTSxLQUFLLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsRUFBRTtZQUNsQyxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQzlCLE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQyxXQUFXLEdBQUcsY0FBYyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ3pELENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTztZQUNMLElBQUksRUFBRSxXQUFXO1lBQ2pCLEtBQUssRUFBRTtnQkFDTCxPQUFPLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7Z0JBQzFCLElBQUksRUFBRSxRQUFRO2dCQUNkLEtBQUssRUFBRSxNQUFNO2dCQUNiLElBQUksRUFBRSxLQUFLO2dCQUNYLFlBQVksRUFBRSxJQUFJO2dCQUNsQixnQkFBZ0IsRUFBRSxJQUFJO2FBQ3ZCO1NBQ2dCLENBQUM7SUFDdEIsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQXJ0aWNsZUVsZW1lbnQsXG4gIEFydGljbGVMaXN0RWxlbWVudCxcbiAgQXJ0aWNsZU1ldGFkYXRhLFxuICBBcnRpY2xlTm90ZUVsZW1lbnQsXG4gIEFydGljbGVTdWJ0aXRsZUVsZW1lbnQsXG4gIEFydGljbGVUaXRsZUVsZW1lbnQsXG59IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvb3JnYW5pc21zL2FydGljbGUvdHlwZXMnO1xuXG5leHBvcnQgdHlwZSBDYWxsb3V0VHlwZSA9ICdOT1RFJyB8ICdUSVAnIHwgJ0lORk8nIHwgJ1dBUk5JTkcnIHwgJ0NBVVRJT04nIHwgJ0lNUE9SVEFOVCc7XG5cbi8qKlxuICogTG9jYWxpemVkIGxhYmVsIHBlciBjYWxsb3V0IGtpbmQuIFVzZWQgYXMgdGhlIHByZWZpeCBzaG93biBpbnNpZGUgdGhlXG4gKiByZXN1bHRpbmcgbm90ZSBlbGVtZW50IChlLmcuIGA+IFshTk9URV0g4oCmYCDihpIgYDx2YWwtbm90ZXMtYm94IHByZWZpeD1cIk5vdGFcIj5gKS5cbiAqXG4gKiBEZWZhdWx0cyB0byBTcGFuaXNoIGZvciBiYWNrLWNvbXBhdC4gUGFzcyBhIGRpZmZlcmVudCBtYXAgcGVyIGxvY2FsZSB3aGVuXG4gKiBwYXJzaW5nIHRyYW5zbGF0ZWQgZG9jdW1lbnRzIHNvIHRoZSBwcmVmaXggbWF0Y2hlcyB0aGUgYm9keSBsYW5ndWFnZS5cbiAqL1xuZXhwb3J0IHR5cGUgQ2FsbG91dExhYmVscyA9IFJlY29yZDxDYWxsb3V0VHlwZSwgc3RyaW5nPjtcblxuLyoqIEJ1aWx0LWluIGxhYmVsIHNldHMgZm9yIHRoZSB0aHJlZSBwbGF0Zm9ybSBsb2NhbGVzLiAqL1xuZXhwb3J0IGNvbnN0IENBTExPVVRfTEFCRUxTOiBSZWNvcmQ8J2VzJyB8ICdlbicgfCAncHQnLCBDYWxsb3V0TGFiZWxzPiA9IHtcbiAgZXM6IHtcbiAgICBOT1RFOiAnTm90YScsXG4gICAgVElQOiAnVGlwJyxcbiAgICBJTkZPOiAnSW5mbycsXG4gICAgSU1QT1JUQU5UOiAnSW1wb3J0YW50ZScsXG4gICAgV0FSTklORzogJ0F0ZW5jacOzbicsXG4gICAgQ0FVVElPTjogJ1ByZWNhdWNpw7NuJyxcbiAgfSxcbiAgZW46IHtcbiAgICBOT1RFOiAnTm90ZScsXG4gICAgVElQOiAnVGlwJyxcbiAgICBJTkZPOiAnSW5mbycsXG4gICAgSU1QT1JUQU5UOiAnSW1wb3J0YW50JyxcbiAgICBXQVJOSU5HOiAnV2FybmluZycsXG4gICAgQ0FVVElPTjogJ0NhdXRpb24nLFxuICB9LFxuICBwdDoge1xuICAgIE5PVEU6ICdOb3RhJyxcbiAgICBUSVA6ICdEaWNhJyxcbiAgICBJTkZPOiAnSW5mbycsXG4gICAgSU1QT1JUQU5UOiAnSW1wb3J0YW50ZScsXG4gICAgV0FSTklORzogJ0F0ZW7Dp8OjbycsXG4gICAgQ0FVVElPTjogJ0N1aWRhZG8nLFxuICB9LFxufTtcblxuLyoqXG4gKiBQZXItY2FsbG91dC1raW5kIGNvbG9yIChJb25pYyBzZW1hbnRpYyBjb2xvcikuIEZpeGVkIGFjcm9zcyBsb2NhbGVzIHNpbmNlXG4gKiByZWQgPSBkYW5nZXIgbm8gbWF0dGVyIHdoYXQgbGFuZ3VhZ2UgeW91IHNwZWFrLlxuICovXG5jb25zdCBDQUxMT1VUX0NPTE9SUzogUmVjb3JkPENhbGxvdXRUeXBlLCBBcnRpY2xlTm90ZUVsZW1lbnRbJ3Byb3BzJ11bJ2NvbG9yJ10+ID0ge1xuICBOT1RFOiAncHJpbWFyeScsXG4gIFRJUDogJ3N1Y2Nlc3MnLFxuICBJTkZPOiAndGVydGlhcnknLFxuICBJTVBPUlRBTlQ6ICd3YXJuaW5nJyxcbiAgV0FSTklORzogJ3dhcm5pbmcnLFxuICBDQVVUSU9OOiAnZGFuZ2VyJyxcbn07XG5cbi8qKiBPcHRpb25hbCBjb25maWd1cmF0aW9uIGZvciB0aGUgcGFyc2VyLiAqL1xuZXhwb3J0IGludGVyZmFjZSBQYXJzZU1hcmtkb3duQXJ0aWNsZU9wdGlvbnMgZXh0ZW5kcyBQYXJ0aWFsPEFydGljbGVNZXRhZGF0YT4ge1xuICAvKipcbiAgICogTG9jYWxlIHVzZWQgdG8gcGljayBidWlsdC1pbiBjYWxsb3V0IGxhYmVscy4gQ29udmVuaWVuY2Ugc2hvcnRjdXQgc29cbiAgICogY2FsbGVycyBkb24ndCBoYXZlIHRvIHNwcmVhZCBgQ0FMTE9VVF9MQUJFTFMuZW5gIHRoZW1zZWx2ZXMuIElnbm9yZWRcbiAgICogd2hlbiBgY2FsbG91dExhYmVsc2AgaXMgcHJvdmlkZWQgZXhwbGljaXRseS5cbiAgICovXG4gIGxvY2FsZT86ICdlcycgfCAnZW4nIHwgJ3B0JztcbiAgLyoqIE92ZXJyaWRlIGV2ZXJ5IGNhbGxvdXQgbGFiZWwgaW5kaXZpZHVhbGx5LiBUYWtlcyBwcmVjZWRlbmNlIG92ZXIgYGxvY2FsZWAuICovXG4gIGNhbGxvdXRMYWJlbHM/OiBDYWxsb3V0TGFiZWxzO1xufVxuXG5jb25zdCBCT1hfRFJBV0lORyA9IC9b4pSM4pSQ4pSU4pSY4pSc4pSk4pSs4pS04pS84pSA4pSC4pWU4pWX4pWa4pWd4pWQ4pWRXS87XG5jb25zdCBDQUxMT1VUX1JFID0gL14+XFxzKlxcWyEoTk9URXxUSVB8SU5GT3xXQVJOSU5HfENBVVRJT058SU1QT1JUQU5UKVxcXVxccyooLiopJC9pO1xuY29uc3QgRkVOQ0VfUkUgPSAvXmBgYChbXFx3LV0qKVxccyokLztcbmNvbnN0IEhFQURJTkdfUkUgPSAvXigjezEsNn0pXFxzKyguKykkLztcbmNvbnN0IFNFUEFSQVRPUl9SRSA9IC9eXFxzKig/Oi17Myx9fFxcKnszLH18X3szLH0pXFxzKiQvO1xuY29uc3QgVU5PUkRFUkVEX1JFID0gL15cXHMqWy0qK11cXHMrKC4rKSQvO1xuY29uc3QgQ0hFQ0tMSVNUX1JFID0gL15cXHMqWy0qK11cXHMrXFxbKFsgeFhdKVxcXVxccysoLispJC87XG5jb25zdCBPUkRFUkVEX1JFID0gL15cXHMqXFxkK1xcLlxccysoLispJC87XG5jb25zdCBUQUJMRV9ESVZJREVSX1JFID0gL15cXHMqXFx8P1tcXHM6fC1dK1xcfD9cXHMqJC87XG5jb25zdCBUQUJMRV9ST1dfUkUgPSAvXlxccypcXHwoLispXFx8XFxzKiQvO1xuXG4vKipcbiAqIFB1cmUgTWFya2Rvd24g4oaSIEFydGljbGVNZXRhZGF0YSBwYXJzZXIuIE5vIEFuZ3VsYXIgZGVwcyDigJQgdXNhYmxlIGZyb20gTm9kZSBzY3JpcHRzXG4gKiAoYnVpbGQtdGltZSBnZW5lcmF0aW9uKSBhbmQgZnJvbSB0aGUgQW5ndWxhciBgTWFya2Rvd25BcnRpY2xlUGFyc2VyU2VydmljZWAgd3JhcHBlci5cbiAqXG4gKiBTdXBwb3J0ZWQgc3ludGF4OlxuICogLSBIZWFkaW5ncyAoIywgIyMsICMjIyDigKYpIOKGkiB0aXRsZSAvIHN1YnRpdGxlXG4gKiAtIFBhcmFncmFwaHMg4oaSIHBhcmFncmFwaCAod2l0aCBgcHJvY2Vzc0xpbmtzYCArIGBhbGxvd1BhcnRpYWxCb2xkYClcbiAqIC0gTGlzdHMgKC0sICosIDEuKSDihpIgdW5vcmRlcmVkIC8gb3JkZXJlZCBsaXN0ICgtIFsgXSAvIC0gW3hdIGZvciBjaGVja2xpc3QpXG4gKiAtIEJsb2NrcXVvdGVzICg+KSDihpIgcXVvdGUsIHdpdGggR2l0SHViIGNhbGxvdXRzIGA+IFshTk9URXxUSVB8SU5GT3xXQVJOSU5HfENBVVRJT058SU1QT1JUQU5UXWAgbWFwcGVkIHRvIG5vdGVzXG4gKiAtIENvZGUgZmVuY2VzIChgYGBsYW5nKSDihpIgY29kZVxuICogLSBCb3gtZHJhd2luZyBBU0NJSSBhcnQgKOKUjOKUkOKUlOKUmOKUguKUgCkgYXV0by13cmFwcGVkIGFzIGNvZGVcbiAqIC0gVGFibGVzIOKGkiBmbGF0dGVuZWQgaW50byBwYXJhZ3JhcGhzIHdpdGggYm9sZCBrZXlzXG4gKiAtIEhvcml6b250YWwgcnVsZXMgKC0tLSwgKioqLCBfX18pIOKGkiBzZXBhcmF0b3JcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlTWFya2Rvd25BcnRpY2xlKFxuICBtYXJrZG93bjogc3RyaW5nLFxuICBvcHRpb25zPzogUGFyc2VNYXJrZG93bkFydGljbGVPcHRpb25zXG4pOiBBcnRpY2xlTWV0YWRhdGEge1xuICBjb25zdCBsaW5lcyA9IG5vcm1hbGl6ZShtYXJrZG93bikuc3BsaXQoJ1xcbicpO1xuICBjb25zdCBlbGVtZW50czogQXJ0aWNsZUVsZW1lbnRbXSA9IFtdO1xuICBjb25zdCBsYWJlbHM6IENhbGxvdXRMYWJlbHMgPVxuICAgIG9wdGlvbnM/LmNhbGxvdXRMYWJlbHMgPz9cbiAgICAob3B0aW9ucz8ubG9jYWxlID8gQ0FMTE9VVF9MQUJFTFNbb3B0aW9ucy5sb2NhbGVdIDogQ0FMTE9VVF9MQUJFTFMuZXMpO1xuXG4gIGxldCBpID0gMDtcbiAgd2hpbGUgKGkgPCBsaW5lcy5sZW5ndGgpIHtcbiAgICBjb25zdCBsaW5lID0gbGluZXNbaV07XG5cbiAgICBpZiAobGluZS50cmltKCkgPT09ICcnKSB7XG4gICAgICBpKys7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBjb25zdCBmZW5jZSA9IGxpbmUubWF0Y2goRkVOQ0VfUkUpO1xuICAgIGlmIChmZW5jZSkge1xuICAgICAgY29uc3QgbGFuZyA9IGZlbmNlWzFdIHx8IHVuZGVmaW5lZDtcbiAgICAgIGNvbnN0IGJvZHk6IHN0cmluZ1tdID0gW107XG4gICAgICBpKys7XG4gICAgICB3aGlsZSAoaSA8IGxpbmVzLmxlbmd0aCAmJiAhRkVOQ0VfUkUudGVzdChsaW5lc1tpXSkpIHtcbiAgICAgICAgYm9keS5wdXNoKGxpbmVzW2ldKTtcbiAgICAgICAgaSsrO1xuICAgICAgfVxuICAgICAgaSsrO1xuICAgICAgZWxlbWVudHMucHVzaCh7XG4gICAgICAgIHR5cGU6ICdjb2RlJyxcbiAgICAgICAgcHJvcHM6IHsgY29kZTogYm9keS5qb2luKCdcXG4nKSwgbGFuZ3VhZ2U6IGxhbmcsIHRoZW1lOiAnZGFyaycgfSxcbiAgICAgIH0pO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgaWYgKEJPWF9EUkFXSU5HLnRlc3QobGluZSkpIHtcbiAgICAgIGNvbnN0IGJvZHk6IHN0cmluZ1tdID0gW107XG4gICAgICB3aGlsZSAoaSA8IGxpbmVzLmxlbmd0aCAmJiAobGluZXNbaV0udHJpbSgpID09PSAnJyB8fCBCT1hfRFJBV0lORy50ZXN0KGxpbmVzW2ldKSkpIHtcbiAgICAgICAgYm9keS5wdXNoKGxpbmVzW2ldKTtcbiAgICAgICAgaSsrO1xuICAgICAgfVxuICAgICAgd2hpbGUgKGJvZHkubGVuZ3RoICYmIGJvZHlbYm9keS5sZW5ndGggLSAxXS50cmltKCkgPT09ICcnKSBib2R5LnBvcCgpO1xuICAgICAgZWxlbWVudHMucHVzaCh7XG4gICAgICAgIHR5cGU6ICdjb2RlJyxcbiAgICAgICAgcHJvcHM6IHsgY29kZTogYm9keS5qb2luKCdcXG4nKSwgbGFuZ3VhZ2U6ICd0ZXh0JywgdGhlbWU6ICdkYXJrJyB9LFxuICAgICAgfSk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAoU0VQQVJBVE9SX1JFLnRlc3QobGluZSkpIHtcbiAgICAgIGVsZW1lbnRzLnB1c2goeyB0eXBlOiAnc2VwYXJhdG9yJywgcHJvcHM6IHsgc3R5bGU6ICdsaW5lJyB9IH0pO1xuICAgICAgaSsrO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgY29uc3QgaGVhZGluZyA9IGxpbmUubWF0Y2goSEVBRElOR19SRSk7XG4gICAgaWYgKGhlYWRpbmcpIHtcbiAgICAgIGVsZW1lbnRzLnB1c2gobWFrZUhlYWRpbmcoaGVhZGluZ1sxXS5sZW5ndGgsIGhlYWRpbmdbMl0udHJpbSgpKSk7XG4gICAgICBpKys7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAobGluZS5zdGFydHNXaXRoKCc+JykpIHtcbiAgICAgIGNvbnN0IGJsb2NrOiBzdHJpbmdbXSA9IFtdO1xuICAgICAgd2hpbGUgKGkgPCBsaW5lcy5sZW5ndGggJiYgbGluZXNbaV0uc3RhcnRzV2l0aCgnPicpKSB7XG4gICAgICAgIGJsb2NrLnB1c2gobGluZXNbaV0pO1xuICAgICAgICBpKys7XG4gICAgICB9XG4gICAgICBlbGVtZW50cy5wdXNoKG1ha2VRdW90ZU9yQ2FsbG91dChibG9jaywgbGFiZWxzKSk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAoVEFCTEVfUk9XX1JFLnRlc3QobGluZSkpIHtcbiAgICAgIGNvbnN0IHJvd3M6IHN0cmluZ1tdID0gW107XG4gICAgICB3aGlsZSAoaSA8IGxpbmVzLmxlbmd0aCAmJiBUQUJMRV9ST1dfUkUudGVzdChsaW5lc1tpXSkpIHtcbiAgICAgICAgcm93cy5wdXNoKGxpbmVzW2ldKTtcbiAgICAgICAgaSsrO1xuICAgICAgfVxuICAgICAgZWxlbWVudHMucHVzaCguLi5tYWtlVGFibGUocm93cykpO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgaWYgKENIRUNLTElTVF9SRS50ZXN0KGxpbmUpIHx8IFVOT1JERVJFRF9SRS50ZXN0KGxpbmUpIHx8IE9SREVSRURfUkUudGVzdChsaW5lKSkge1xuICAgICAgY29uc3QgbGlzdFR5cGU6ICdjaGVja2xpc3QnIHwgJ3Vub3JkZXJlZCcgfCAnb3JkZXJlZCcgPSBDSEVDS0xJU1RfUkUudGVzdChsaW5lKVxuICAgICAgICA/ICdjaGVja2xpc3QnXG4gICAgICAgIDogT1JERVJFRF9SRS50ZXN0KGxpbmUpXG4gICAgICAgICAgPyAnb3JkZXJlZCdcbiAgICAgICAgICA6ICd1bm9yZGVyZWQnO1xuXG4gICAgICBjb25zdCBpdGVtczogQXJ0aWNsZUxpc3RFbGVtZW50Wydwcm9wcyddWydpdGVtcyddID0gW107XG4gICAgICB3aGlsZSAoaSA8IGxpbmVzLmxlbmd0aCAmJiBsaW5lc1tpXS50cmltKCkgIT09ICcnKSB7XG4gICAgICAgIGNvbnN0IGN1ciA9IGxpbmVzW2ldO1xuICAgICAgICBjb25zdCBjaGVjayA9IGN1ci5tYXRjaChDSEVDS0xJU1RfUkUpO1xuICAgICAgICBjb25zdCB1bm9yZCA9IGN1ci5tYXRjaChVTk9SREVSRURfUkUpO1xuICAgICAgICBjb25zdCBvcmQgPSBjdXIubWF0Y2goT1JERVJFRF9SRSk7XG4gICAgICAgIGlmIChjaGVjaykgaXRlbXMucHVzaCh7IHRleHQ6IHByb2Nlc3NJbmxpbmVCb2xkKGNoZWNrWzJdLnRyaW0oKSkgfSk7XG4gICAgICAgIGVsc2UgaWYgKG9yZCAmJiBsaXN0VHlwZSA9PT0gJ29yZGVyZWQnKVxuICAgICAgICAgIGl0ZW1zLnB1c2goeyB0ZXh0OiBwcm9jZXNzSW5saW5lQm9sZChvcmRbMV0udHJpbSgpKSB9KTtcbiAgICAgICAgZWxzZSBpZiAodW5vcmQgJiYgbGlzdFR5cGUgIT09ICdvcmRlcmVkJylcbiAgICAgICAgICBpdGVtcy5wdXNoKHsgdGV4dDogcHJvY2Vzc0lubGluZUJvbGQodW5vcmRbMV0udHJpbSgpKSB9KTtcbiAgICAgICAgZWxzZSBicmVhaztcbiAgICAgICAgaSsrO1xuICAgICAgfVxuICAgICAgZWxlbWVudHMucHVzaCh7IHR5cGU6ICdsaXN0JywgcHJvcHM6IHsgaXRlbXMsIGxpc3RUeXBlIH0gfSk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBjb25zdCBwYXJhZ3JhcGg6IHN0cmluZ1tdID0gW107XG4gICAgd2hpbGUgKGkgPCBsaW5lcy5sZW5ndGggJiYgbGluZXNbaV0udHJpbSgpICE9PSAnJyAmJiAhc3RhcnRzTmV3QmxvY2sobGluZXNbaV0pKSB7XG4gICAgICBwYXJhZ3JhcGgucHVzaChsaW5lc1tpXSk7XG4gICAgICBpKys7XG4gICAgfVxuICAgIGNvbnN0IHRleHQgPSBwcm9jZXNzSW5saW5lQm9sZChwYXJhZ3JhcGguam9pbignICcpLnRyaW0oKSk7XG4gICAgaWYgKHRleHQpIHtcbiAgICAgIGVsZW1lbnRzLnB1c2goe1xuICAgICAgICB0eXBlOiAncGFyYWdyYXBoJyxcbiAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICBjb250ZW50OiB0ZXh0LFxuICAgICAgICAgIHNpemU6ICdtZWRpdW0nLFxuICAgICAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICAgICAgYm9sZDogZmFsc2UsXG4gICAgICAgICAgcHJvY2Vzc0xpbmtzOiB0cnVlLFxuICAgICAgICAgIGFsbG93UGFydGlhbEJvbGQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvLyBTdHJpcCBwYXJzZXItb25seSBvcHRpb25zIGJlZm9yZSBtZXJnaW5nIGludG8gQXJ0aWNsZU1ldGFkYXRhXG4gIGNvbnN0IHsgbG9jYWxlOiBfbCwgY2FsbG91dExhYmVsczogX2MsIC4uLm1ldGFkYXRhT3ZlcnJpZGVzIH0gPSBvcHRpb25zID8/IHt9O1xuXG4gIHJldHVybiB7XG4gICAgZWxlbWVudHMsXG4gICAgbWF4V2lkdGg6ICc5MDBweCcsXG4gICAgY2VudGVyZWQ6IHRydWUsXG4gICAgdGhlbWU6ICdhdXRvJyxcbiAgICAuLi5tZXRhZGF0YU92ZXJyaWRlcyxcbiAgfTtcbn1cblxuZnVuY3Rpb24gbm9ybWFsaXplKG1kOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gbWQucmVwbGFjZSgvXFxyXFxuL2csICdcXG4nKS5yZXBsYWNlKC9cXHIvZywgJ1xcbicpO1xufVxuXG5mdW5jdGlvbiBzdGFydHNOZXdCbG9jayhsaW5lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuIChcbiAgICBIRUFESU5HX1JFLnRlc3QobGluZSkgfHxcbiAgICBGRU5DRV9SRS50ZXN0KGxpbmUpIHx8XG4gICAgU0VQQVJBVE9SX1JFLnRlc3QobGluZSkgfHxcbiAgICBUQUJMRV9ST1dfUkUudGVzdChsaW5lKSB8fFxuICAgIFVOT1JERVJFRF9SRS50ZXN0KGxpbmUpIHx8XG4gICAgT1JERVJFRF9SRS50ZXN0KGxpbmUpIHx8XG4gICAgQ0hFQ0tMSVNUX1JFLnRlc3QobGluZSkgfHxcbiAgICBsaW5lLnN0YXJ0c1dpdGgoJz4nKSB8fFxuICAgIEJPWF9EUkFXSU5HLnRlc3QobGluZSlcbiAgKTtcbn1cblxuZnVuY3Rpb24gcHJvY2Vzc0lubGluZUJvbGQodGV4dDogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHRleHQucmVwbGFjZSgvXFwqXFwqKC4rPylcXCpcXCovZywgJzxzdHJvbmc+JDE8L3N0cm9uZz4nKTtcbn1cblxuZnVuY3Rpb24gbWFrZUhlYWRpbmcobGV2ZWw6IG51bWJlciwgY29udGVudDogc3RyaW5nKTogQXJ0aWNsZVRpdGxlRWxlbWVudCB8IEFydGljbGVTdWJ0aXRsZUVsZW1lbnQge1xuICBpZiAobGV2ZWwgPT09IDEpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogJ3RpdGxlJyxcbiAgICAgIHByb3BzOiB7IGNvbnRlbnQsIHNpemU6ICd4bGFyZ2UnLCBjb2xvcjogJ2RhcmsnLCBib2xkOiB0cnVlIH0sXG4gICAgfTtcbiAgfVxuICBjb25zdCBzaXplOiAnbGFyZ2UnIHwgJ21lZGl1bScgfCAnc21hbGwnID1cbiAgICBsZXZlbCA9PT0gMiA/ICdsYXJnZScgOiBsZXZlbCA9PT0gMyA/ICdtZWRpdW0nIDogJ3NtYWxsJztcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiAnc3VidGl0bGUnLFxuICAgIHByb3BzOiB7IGNvbnRlbnQsIHNpemUsIGNvbG9yOiAnZGFyaycsIGJvbGQ6IHRydWUgfSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gbWFrZVF1b3RlT3JDYWxsb3V0KGJsb2NrOiBzdHJpbmdbXSwgbGFiZWxzOiBDYWxsb3V0TGFiZWxzKTogQXJ0aWNsZUVsZW1lbnQge1xuICBjb25zdCBmaXJzdCA9IGJsb2NrWzBdO1xuICBjb25zdCBjYWxsb3V0ID0gZmlyc3QubWF0Y2goQ0FMTE9VVF9SRSk7XG4gIGNvbnN0IGxpbmVzID0gYmxvY2subWFwKGwgPT4gbC5yZXBsYWNlKC9ePlxccz8vLCAnJykpO1xuXG4gIGlmIChjYWxsb3V0KSB7XG4gICAgY29uc3QgdHlwZSA9IGNhbGxvdXRbMV0udG9VcHBlckNhc2UoKSBhcyBDYWxsb3V0VHlwZTtcbiAgICBjb25zdCBmaXJzdExpbmVSZXN0ID0gY2FsbG91dFsyXSB8fCAnJztcbiAgICBjb25zdCByZXN0ID0gbGluZXNcbiAgICAgIC5zbGljZSgxKVxuICAgICAgLmZpbHRlcihsID0+IGwudHJpbSgpICE9PSAnJylcbiAgICAgIC5qb2luKCdcXG4nKTtcbiAgICBjb25zdCB0ZXh0ID0gcHJvY2Vzc0lubGluZUJvbGQoW2ZpcnN0TGluZVJlc3QsIHJlc3RdLmZpbHRlcihCb29sZWFuKS5qb2luKCdcXG4nKS50cmltKCkpO1xuICAgIHJldHVybiBtYWtlTm90ZSh0eXBlLCB0ZXh0LCBsYWJlbHMpO1xuICB9XG5cbiAgY29uc3QgdGV4dCA9IHByb2Nlc3NJbmxpbmVCb2xkKGxpbmVzLmpvaW4oJyAnKS50cmltKCkpO1xuICByZXR1cm4ge1xuICAgIHR5cGU6ICdxdW90ZScsXG4gICAgcHJvcHM6IHtcbiAgICAgIGNvbnRlbnQ6IHRleHQsXG4gICAgICBzaXplOiAnbWVkaXVtJyxcbiAgICAgIGNvbG9yOiAnbWVkaXVtJyxcbiAgICAgIGJvbGQ6IGZhbHNlLFxuICAgICAgc2hvd1F1b3RlTWFyazogdHJ1ZSxcbiAgICAgIGFsaWdubWVudDogJ2xlZnQnLFxuICAgIH0sXG4gIH07XG59XG5cbmZ1bmN0aW9uIG1ha2VOb3RlKGtpbmQ6IENhbGxvdXRUeXBlLCB0ZXh0OiBzdHJpbmcsIGxhYmVsczogQ2FsbG91dExhYmVscyk6IEFydGljbGVOb3RlRWxlbWVudCB7XG4gIC8vIE5PVEUgZXMgZWwgY2FsbG91dCBuZXV0cm8gKGNhamEgZGUgY29udGVuaWRvIHNpbiBldGlxdWV0YSBkZSBzZXZlcmlkYWQpOiBzZVxuICAvLyByZW5kZXJpemEgU0lOIHByZWZpam8uIExvcyBkZW3DoXMgdGlwb3MgKFRJUC9JTkZPL1dBUk5JTkcvQ0FVVElPTi9JTVBPUlRBTlQpXG4gIC8vIHPDrSBtdWVzdHJhbiBzdSBsYWJlbCBwb3JxdWUgY29tdW5pY2EgY2F0ZWdvcsOtYS9zZXZlcmlkYWQuIEVsIG5vdGVzLWJveCBub1xuICAvLyByZW5kZXJpemEgaGVhZGVyIGN1YW5kbyBwcmVmaXggZXMgdmFjw61vIChgQGlmIChwcm9wcy5wcmVmaXgpYCkuXG4gIGNvbnN0IHByZWZpeCA9IGtpbmQgPT09ICdOT1RFJyA/ICcnIDogYCR7bGFiZWxzW2tpbmRdfTpgO1xuICByZXR1cm4ge1xuICAgIHR5cGU6ICdub3RlJyxcbiAgICBwcm9wczoge1xuICAgICAgdGV4dCxcbiAgICAgIHByZWZpeCxcbiAgICAgIGNvbG9yOiBDQUxMT1VUX0NPTE9SU1traW5kXSxcbiAgICAgIHRleHRDb2xvcjogJ2RhcmsnLFxuICAgICAgc2l6ZTogJ21lZGl1bScsXG4gICAgICByb3VuZGVkOiB0cnVlLFxuICAgICAgYWxsb3dQYXJ0aWFsQm9sZDogdHJ1ZSxcbiAgICAgIHByb2Nlc3NMaW5rczogdHJ1ZSxcbiAgICB9LFxuICB9O1xufVxuXG5mdW5jdGlvbiBtYWtlVGFibGUocm93czogc3RyaW5nW10pOiBBcnRpY2xlRWxlbWVudFtdIHtcbiAgY29uc3QgcGFyc2VkID0gcm93c1xuICAgIC5maWx0ZXIociA9PiAhVEFCTEVfRElWSURFUl9SRS50ZXN0KHIpKVxuICAgIC5tYXAociA9PlxuICAgICAgclxuICAgICAgICAudHJpbSgpXG4gICAgICAgIC5yZXBsYWNlKC9eXFx8LywgJycpXG4gICAgICAgIC5yZXBsYWNlKC9cXHwkLywgJycpXG4gICAgICAgIC5zcGxpdCgnfCcpXG4gICAgICAgIC5tYXAoYyA9PiBjLnRyaW0oKSlcbiAgICApO1xuICBpZiAocGFyc2VkLmxlbmd0aCA9PT0gMCkgcmV0dXJuIFtdO1xuXG4gIGNvbnN0IGhlYWRlciA9IHBhcnNlZFswXTtcbiAgY29uc3QgZGF0YVJvd3MgPSBwYXJzZWQuc2xpY2UoMSk7XG4gIGlmIChkYXRhUm93cy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gW1xuICAgICAge1xuICAgICAgICB0eXBlOiAncGFyYWdyYXBoJyxcbiAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICBjb250ZW50OiBoZWFkZXIuam9pbignIMK3ICcpLFxuICAgICAgICAgIHNpemU6ICdtZWRpdW0nLFxuICAgICAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICAgICAgYm9sZDogZmFsc2UsXG4gICAgICAgICAgcHJvY2Vzc0xpbmtzOiB0cnVlLFxuICAgICAgICAgIGFsbG93UGFydGlhbEJvbGQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIF07XG4gIH1cblxuICByZXR1cm4gZGF0YVJvd3MubWFwKHJvdyA9PiB7XG4gICAgY29uc3QgcGFpcnMgPSByb3cubWFwKChjZWxsLCBpZHgpID0+IHtcbiAgICAgIGNvbnN0IGtleSA9IGhlYWRlcltpZHhdID8/ICcnO1xuICAgICAgcmV0dXJuIGtleSA/IGA8c3Ryb25nPiR7a2V5fTo8L3N0cm9uZz4gJHtjZWxsfWAgOiBjZWxsO1xuICAgIH0pO1xuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiAncGFyYWdyYXBoJyxcbiAgICAgIHByb3BzOiB7XG4gICAgICAgIGNvbnRlbnQ6IHBhaXJzLmpvaW4oJyDCtyAnKSxcbiAgICAgICAgc2l6ZTogJ21lZGl1bScsXG4gICAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICAgIGJvbGQ6IGZhbHNlLFxuICAgICAgICBwcm9jZXNzTGlua3M6IHRydWUsXG4gICAgICAgIGFsbG93UGFydGlhbEJvbGQ6IHRydWUsXG4gICAgICB9LFxuICAgIH0gYXMgQXJ0aWNsZUVsZW1lbnQ7XG4gIH0pO1xufVxuIl19
322
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFya2Rvd24tYXJ0aWNsZS1wYXJzZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL21hcmtkb3duLWFydGljbGUvbWFya2Rvd24tYXJ0aWNsZS1wYXJzZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBb0JBLDBEQUEwRDtBQUMxRCxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQThDO0lBQ3ZFLEVBQUUsRUFBRTtRQUNGLElBQUksRUFBRSxNQUFNO1FBQ1osR0FBRyxFQUFFLEtBQUs7UUFDVixJQUFJLEVBQUUsTUFBTTtRQUNaLFNBQVMsRUFBRSxZQUFZO1FBQ3ZCLE9BQU8sRUFBRSxVQUFVO1FBQ25CLE9BQU8sRUFBRSxZQUFZO0tBQ3RCO0lBQ0QsRUFBRSxFQUFFO1FBQ0YsSUFBSSxFQUFFLE1BQU07UUFDWixHQUFHLEVBQUUsS0FBSztRQUNWLElBQUksRUFBRSxNQUFNO1FBQ1osU0FBUyxFQUFFLFdBQVc7UUFDdEIsT0FBTyxFQUFFLFNBQVM7UUFDbEIsT0FBTyxFQUFFLFNBQVM7S0FDbkI7SUFDRCxFQUFFLEVBQUU7UUFDRixJQUFJLEVBQUUsTUFBTTtRQUNaLEdBQUcsRUFBRSxNQUFNO1FBQ1gsSUFBSSxFQUFFLE1BQU07UUFDWixTQUFTLEVBQUUsWUFBWTtRQUN2QixPQUFPLEVBQUUsU0FBUztRQUNsQixPQUFPLEVBQUUsU0FBUztLQUNuQjtDQUNGLENBQUM7QUFFRjs7O0dBR0c7QUFDSCxNQUFNLGNBQWMsR0FBOEQ7SUFDaEYsSUFBSSxFQUFFLFNBQVM7SUFDZixHQUFHLEVBQUUsU0FBUztJQUNkLElBQUksRUFBRSxVQUFVO0lBQ2hCLFNBQVMsRUFBRSxTQUFTO0lBQ3BCLE9BQU8sRUFBRSxTQUFTO0lBQ2xCLE9BQU8sRUFBRSxRQUFRO0NBQ2xCLENBQUM7QUFjRixNQUFNLFdBQVcsR0FBRyxxQkFBcUIsQ0FBQztBQUMxQyxNQUFNLFVBQVUsR0FBRyw4REFBOEQsQ0FBQztBQUNsRixNQUFNLFFBQVEsR0FBRyxrQkFBa0IsQ0FBQztBQUNwQyxNQUFNLFVBQVUsR0FBRyxtQkFBbUIsQ0FBQztBQUN2QyxNQUFNLFlBQVksR0FBRyxnQ0FBZ0MsQ0FBQztBQUN0RCxNQUFNLFlBQVksR0FBRyxtQkFBbUIsQ0FBQztBQUN6QyxNQUFNLFlBQVksR0FBRyxpQ0FBaUMsQ0FBQztBQUN2RCxNQUFNLFVBQVUsR0FBRyxtQkFBbUIsQ0FBQztBQUN2QyxNQUFNLGdCQUFnQixHQUFHLHdCQUF3QixDQUFDO0FBQ2xELE1BQU0sWUFBWSxHQUFHLGtCQUFrQixDQUFDO0FBRXhDOzs7Ozs7Ozs7Ozs7O0dBYUc7QUFDSCxNQUFNLFVBQVUsb0JBQW9CLENBQ2xDLFFBQWdCLEVBQ2hCLE9BQXFDO0lBRXJDLE1BQU0sS0FBSyxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDOUMsTUFBTSxRQUFRLEdBQXFCLEVBQUUsQ0FBQztJQUN0QyxNQUFNLE1BQU0sR0FDVixPQUFPLEVBQUUsYUFBYTtRQUN0QixDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUV6RSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDVixPQUFPLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDeEIsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRXRCLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDO1lBQ3ZCLENBQUMsRUFBRSxDQUFDO1lBQ0osU0FBUztRQUNYLENBQUM7UUFFRCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ25DLElBQUksS0FBSyxFQUFFLENBQUM7WUFDVixNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksU0FBUyxDQUFDO1lBQ25DLE1BQU0sSUFBSSxHQUFhLEVBQUUsQ0FBQztZQUMxQixDQUFDLEVBQUUsQ0FBQztZQUNKLE9BQU8sQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQ3BELElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3BCLENBQUMsRUFBRSxDQUFDO1lBQ04sQ0FBQztZQUNELENBQUMsRUFBRSxDQUFDO1lBQ0osUUFBUSxDQUFDLElBQUksQ0FBQztnQkFDWixJQUFJLEVBQUUsTUFBTTtnQkFDWixLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUU7YUFDaEUsQ0FBQyxDQUFDO1lBQ0gsU0FBUztRQUNYLENBQUM7UUFFRCxJQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUMzQixNQUFNLElBQUksR0FBYSxFQUFFLENBQUM7WUFDMUIsT0FBTyxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQ2xGLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3BCLENBQUMsRUFBRSxDQUFDO1lBQ04sQ0FBQztZQUNELE9BQU8sSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFO2dCQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUN0RSxRQUFRLENBQUMsSUFBSSxDQUFDO2dCQUNaLElBQUksRUFBRSxNQUFNO2dCQUNaLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRTthQUNsRSxDQUFDLENBQUM7WUFDSCxTQUFTO1FBQ1gsQ0FBQztRQUVELElBQUksWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQzVCLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDL0QsQ0FBQyxFQUFFLENBQUM7WUFDSixTQUFTO1FBQ1gsQ0FBQztRQUVELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDdkMsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUNaLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNqRSxDQUFDLEVBQUUsQ0FBQztZQUNKLFNBQVM7UUFDWCxDQUFDO1FBRUQsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDekIsTUFBTSxLQUFLLEdBQWEsRUFBRSxDQUFDO1lBQzNCLE9BQU8sQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUNwRCxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNyQixDQUFDLEVBQUUsQ0FBQztZQUNOLENBQUM7WUFDRCxRQUFRLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO1lBQ2pELFNBQVM7UUFDWCxDQUFDO1FBRUQsSUFBSSxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDNUIsTUFBTSxJQUFJLEdBQWEsRUFBRSxDQUFDO1lBQzFCLE9BQU8sQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLElBQUksWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUN2RCxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNwQixDQUFDLEVBQUUsQ0FBQztZQUNOLENBQUM7WUFDRCxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDbEMsU0FBUztRQUNYLENBQUM7UUFFRCxJQUFJLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDaEYsTUFBTSxRQUFRLEdBQTBDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO2dCQUM3RSxDQUFDLENBQUMsV0FBVztnQkFDYixDQUFDLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7b0JBQ3JCLENBQUMsQ0FBQyxTQUFTO29CQUNYLENBQUMsQ0FBQyxXQUFXLENBQUM7WUFFbEIsTUFBTSxLQUFLLEdBQXlDLEVBQUUsQ0FBQztZQUN2RCxPQUFPLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQztnQkFDbEQsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNyQixNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDO2dCQUN0QyxNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDO2dCQUN0QyxNQUFNLEdBQUcsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO2dCQUNsQyxJQUFJLEtBQUs7b0JBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO3FCQUMzRCxJQUFJLEdBQUcsSUFBSSxRQUFRLEtBQUssU0FBUztvQkFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7cUJBQ3RGLElBQUksS0FBSyxJQUFJLFFBQVEsS0FBSyxTQUFTO29CQUN0QyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7O29CQUNsRCxNQUFNO2dCQUNYLENBQUMsRUFBRSxDQUFDO1lBQ04sQ0FBQztZQUNELFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDNUQsU0FBUztRQUNYLENBQUM7UUFFRCxNQUFNLFNBQVMsR0FBYSxFQUFFLENBQUM7UUFDL0IsT0FBTyxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDL0UsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN6QixDQUFDLEVBQUUsQ0FBQztRQUNOLENBQUM7UUFDRCxNQUFNLElBQUksR0FBRyxhQUFhLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZELElBQUksSUFBSSxFQUFFLENBQUM7WUFDVCxRQUFRLENBQUMsSUFBSSxDQUFDO2dCQUNaLElBQUksRUFBRSxXQUFXO2dCQUNqQixLQUFLLEVBQUU7b0JBQ0wsT0FBTyxFQUFFLElBQUk7b0JBQ2IsSUFBSSxFQUFFLFFBQVE7b0JBQ2QsS0FBSyxFQUFFLE1BQU07b0JBQ2IsSUFBSSxFQUFFLEtBQUs7b0JBQ1gsWUFBWSxFQUFFLElBQUk7b0JBQ2xCLGdCQUFnQixFQUFFLElBQUk7aUJBQ3ZCO2FBQ0YsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUM7SUFFRCxnRUFBZ0U7SUFDaEUsTUFBTSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsYUFBYSxFQUFFLEVBQUUsRUFBRSxHQUFHLGlCQUFpQixFQUFFLEdBQUcsT0FBTyxJQUFJLEVBQUUsQ0FBQztJQUU5RSxPQUFPO1FBQ0wsUUFBUTtRQUNSLFFBQVEsRUFBRSxPQUFPO1FBQ2pCLFFBQVEsRUFBRSxJQUFJO1FBQ2QsS0FBSyxFQUFFLE1BQU07UUFDYixHQUFHLGlCQUFpQjtLQUNyQixDQUFDO0FBQ0osQ0FBQztBQUVELFNBQVMsU0FBUyxDQUFDLEVBQVU7SUFDM0IsT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ3hELENBQUM7QUFFRCxTQUFTLGNBQWMsQ0FBQyxJQUFZO0lBQ2xDLE9BQU8sQ0FDTCxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztRQUNyQixRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztRQUNuQixZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztRQUN2QixZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztRQUN2QixZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztRQUN2QixVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztRQUNyQixZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztRQUN2QixJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQztRQUNwQixXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUN2QixDQUFDO0FBQ0osQ0FBQztBQUVELHNGQUFzRjtBQUN0RixnRkFBZ0Y7QUFDaEYsaUZBQWlGO0FBQ2pGLHFGQUFxRjtBQUNyRixTQUFTLGFBQWEsQ0FBQyxJQUFZO0lBQ2pDLE9BQU8sSUFBSTtTQUNSLE9BQU8sQ0FBQyxZQUFZLEVBQUUsaUJBQWlCLENBQUM7U0FDeEMsT0FBTyxDQUFDLGdCQUFnQixFQUFFLHFCQUFxQixDQUFDO1NBQ2hELE9BQU8sQ0FBQyxpQkFBaUIsRUFBRSxhQUFhLENBQUMsQ0FBQztBQUMvQyxDQUFDO0FBRUQsU0FBUyxXQUFXLENBQUMsS0FBYSxFQUFFLE9BQWU7SUFDakQsSUFBSSxLQUFLLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDaEIsT0FBTztZQUNMLElBQUksRUFBRSxPQUFPO1lBQ2IsS0FBSyxFQUFFLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFO1NBQzlELENBQUM7SUFDSixDQUFDO0lBQ0QsTUFBTSxJQUFJLEdBQ1IsS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQztJQUMzRCxPQUFPO1FBQ0wsSUFBSSxFQUFFLFVBQVU7UUFDaEIsS0FBSyxFQUFFLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUU7S0FDcEQsQ0FBQztBQUNKLENBQUM7QUFFRCxTQUFTLGtCQUFrQixDQUFDLEtBQWUsRUFBRSxNQUFxQjtJQUNoRSxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkIsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN4QyxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUVyRCxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBQ1osTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBaUIsQ0FBQztRQUNyRCxNQUFNLGFBQWEsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3ZDLE1BQU0sSUFBSSxHQUFHLEtBQUs7YUFDZixLQUFLLENBQUMsQ0FBQyxDQUFDO2FBQ1IsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQzthQUM1QixJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDZCxNQUFNLElBQUksR0FBRyxhQUFhLENBQUMsQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3BGLE9BQU8sUUFBUSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVELE1BQU0sSUFBSSxHQUFHLGFBQWEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7SUFDbkQsT0FBTztRQUNMLElBQUksRUFBRSxPQUFPO1FBQ2IsS0FBSyxFQUFFO1lBQ0wsT0FBTyxFQUFFLElBQUk7WUFDYixJQUFJLEVBQUUsUUFBUTtZQUNkLEtBQUssRUFBRSxRQUFRO1lBQ2YsSUFBSSxFQUFFLEtBQUs7WUFDWCxhQUFhLEVBQUUsSUFBSTtZQUNuQixTQUFTLEVBQUUsTUFBTTtTQUNsQjtLQUNGLENBQUM7QUFDSixDQUFDO0FBRUQsU0FBUyxRQUFRLENBQUMsSUFBaUIsRUFBRSxJQUFZLEVBQUUsTUFBcUI7SUFDdEUsOEVBQThFO0lBQzlFLDhFQUE4RTtJQUM5RSw0RUFBNEU7SUFDNUUsa0VBQWtFO0lBQ2xFLE1BQU0sTUFBTSxHQUFHLElBQUksS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztJQUN6RCxPQUFPO1FBQ0wsSUFBSSxFQUFFLE1BQU07UUFDWixLQUFLLEVBQUU7WUFDTCxJQUFJO1lBQ0osTUFBTTtZQUNOLEtBQUssRUFBRSxjQUFjLENBQUMsSUFBSSxDQUFDO1lBQzNCLFNBQVMsRUFBRSxNQUFNO1lBQ2pCLElBQUksRUFBRSxRQUFRO1lBQ2QsT0FBTyxFQUFFLElBQUk7WUFDYixnQkFBZ0IsRUFBRSxJQUFJO1lBQ3RCLFlBQVksRUFBRSxJQUFJO1NBQ25CO0tBQ0YsQ0FBQztBQUNKLENBQUM7QUFFRCxTQUFTLFNBQVMsQ0FBQyxJQUFjO0lBQy9CLE1BQU0sTUFBTSxHQUFHLElBQUk7U0FDaEIsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDdEMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQ1AsQ0FBQztTQUNFLElBQUksRUFBRTtTQUNOLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDO1NBQ2xCLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDO1NBQ2xCLEtBQUssQ0FBQyxHQUFHLENBQUM7U0FDVixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FDdEIsQ0FBQztJQUNKLElBQUksTUFBTSxDQUFDLE1BQU0sS0FBSyxDQUFDO1FBQUUsT0FBTyxFQUFFLENBQUM7SUFFbkMsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3pCLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakMsSUFBSSxRQUFRLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQzFCLE9BQU87WUFDTDtnQkFDRSxJQUFJLEVBQUUsV0FBVztnQkFDakIsS0FBSyxFQUFFO29CQUNMLE9BQU8sRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7b0JBQzlDLElBQUksRUFBRSxRQUFRO29CQUNkLEtBQUssRUFBRSxNQUFNO29CQUNiLElBQUksRUFBRSxLQUFLO29CQUNYLFlBQVksRUFBRSxJQUFJO29CQUNsQixnQkFBZ0IsRUFBRSxJQUFJO2lCQUN2QjthQUNGO1NBQ0YsQ0FBQztJQUNKLENBQUM7SUFFRCxPQUFPLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUU7UUFDeEIsTUFBTSxLQUFLLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsRUFBRTtZQUNsQyxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQzlCLE9BQU8sR0FBRztnQkFDUixDQUFDLENBQUMsV0FBVyxhQUFhLENBQUMsR0FBRyxDQUFDLGNBQWMsYUFBYSxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUNsRSxDQUFDLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzFCLENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTztZQUNMLElBQUksRUFBRSxXQUFXO1lBQ2pCLEtBQUssRUFBRTtnQkFDTCxPQUFPLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7Z0JBQzFCLElBQUksRUFBRSxRQUFRO2dCQUNkLEtBQUssRUFBRSxNQUFNO2dCQUNiLElBQUksRUFBRSxLQUFLO2dCQUNYLFlBQVksRUFBRSxJQUFJO2dCQUNsQixnQkFBZ0IsRUFBRSxJQUFJO2FBQ3ZCO1NBQ2dCLENBQUM7SUFDdEIsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQXJ0aWNsZUVsZW1lbnQsXG4gIEFydGljbGVMaXN0RWxlbWVudCxcbiAgQXJ0aWNsZU1ldGFkYXRhLFxuICBBcnRpY2xlTm90ZUVsZW1lbnQsXG4gIEFydGljbGVTdWJ0aXRsZUVsZW1lbnQsXG4gIEFydGljbGVUaXRsZUVsZW1lbnQsXG59IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvb3JnYW5pc21zL2FydGljbGUvdHlwZXMnO1xuXG5leHBvcnQgdHlwZSBDYWxsb3V0VHlwZSA9ICdOT1RFJyB8ICdUSVAnIHwgJ0lORk8nIHwgJ1dBUk5JTkcnIHwgJ0NBVVRJT04nIHwgJ0lNUE9SVEFOVCc7XG5cbi8qKlxuICogTG9jYWxpemVkIGxhYmVsIHBlciBjYWxsb3V0IGtpbmQuIFVzZWQgYXMgdGhlIHByZWZpeCBzaG93biBpbnNpZGUgdGhlXG4gKiByZXN1bHRpbmcgbm90ZSBlbGVtZW50IChlLmcuIGA+IFshTk9URV0g4oCmYCDihpIgYDx2YWwtbm90ZXMtYm94IHByZWZpeD1cIk5vdGFcIj5gKS5cbiAqXG4gKiBEZWZhdWx0cyB0byBTcGFuaXNoIGZvciBiYWNrLWNvbXBhdC4gUGFzcyBhIGRpZmZlcmVudCBtYXAgcGVyIGxvY2FsZSB3aGVuXG4gKiBwYXJzaW5nIHRyYW5zbGF0ZWQgZG9jdW1lbnRzIHNvIHRoZSBwcmVmaXggbWF0Y2hlcyB0aGUgYm9keSBsYW5ndWFnZS5cbiAqL1xuZXhwb3J0IHR5cGUgQ2FsbG91dExhYmVscyA9IFJlY29yZDxDYWxsb3V0VHlwZSwgc3RyaW5nPjtcblxuLyoqIEJ1aWx0LWluIGxhYmVsIHNldHMgZm9yIHRoZSB0aHJlZSBwbGF0Zm9ybSBsb2NhbGVzLiAqL1xuZXhwb3J0IGNvbnN0IENBTExPVVRfTEFCRUxTOiBSZWNvcmQ8J2VzJyB8ICdlbicgfCAncHQnLCBDYWxsb3V0TGFiZWxzPiA9IHtcbiAgZXM6IHtcbiAgICBOT1RFOiAnTm90YScsXG4gICAgVElQOiAnVGlwJyxcbiAgICBJTkZPOiAnSW5mbycsXG4gICAgSU1QT1JUQU5UOiAnSW1wb3J0YW50ZScsXG4gICAgV0FSTklORzogJ0F0ZW5jacOzbicsXG4gICAgQ0FVVElPTjogJ1ByZWNhdWNpw7NuJyxcbiAgfSxcbiAgZW46IHtcbiAgICBOT1RFOiAnTm90ZScsXG4gICAgVElQOiAnVGlwJyxcbiAgICBJTkZPOiAnSW5mbycsXG4gICAgSU1QT1JUQU5UOiAnSW1wb3J0YW50JyxcbiAgICBXQVJOSU5HOiAnV2FybmluZycsXG4gICAgQ0FVVElPTjogJ0NhdXRpb24nLFxuICB9LFxuICBwdDoge1xuICAgIE5PVEU6ICdOb3RhJyxcbiAgICBUSVA6ICdEaWNhJyxcbiAgICBJTkZPOiAnSW5mbycsXG4gICAgSU1QT1JUQU5UOiAnSW1wb3J0YW50ZScsXG4gICAgV0FSTklORzogJ0F0ZW7Dp8OjbycsXG4gICAgQ0FVVElPTjogJ0N1aWRhZG8nLFxuICB9LFxufTtcblxuLyoqXG4gKiBQZXItY2FsbG91dC1raW5kIGNvbG9yIChJb25pYyBzZW1hbnRpYyBjb2xvcikuIEZpeGVkIGFjcm9zcyBsb2NhbGVzIHNpbmNlXG4gKiByZWQgPSBkYW5nZXIgbm8gbWF0dGVyIHdoYXQgbGFuZ3VhZ2UgeW91IHNwZWFrLlxuICovXG5jb25zdCBDQUxMT1VUX0NPTE9SUzogUmVjb3JkPENhbGxvdXRUeXBlLCBBcnRpY2xlTm90ZUVsZW1lbnRbJ3Byb3BzJ11bJ2NvbG9yJ10+ID0ge1xuICBOT1RFOiAncHJpbWFyeScsXG4gIFRJUDogJ3N1Y2Nlc3MnLFxuICBJTkZPOiAndGVydGlhcnknLFxuICBJTVBPUlRBTlQ6ICd3YXJuaW5nJyxcbiAgV0FSTklORzogJ3dhcm5pbmcnLFxuICBDQVVUSU9OOiAnZGFuZ2VyJyxcbn07XG5cbi8qKiBPcHRpb25hbCBjb25maWd1cmF0aW9uIGZvciB0aGUgcGFyc2VyLiAqL1xuZXhwb3J0IGludGVyZmFjZSBQYXJzZU1hcmtkb3duQXJ0aWNsZU9wdGlvbnMgZXh0ZW5kcyBQYXJ0aWFsPEFydGljbGVNZXRhZGF0YT4ge1xuICAvKipcbiAgICogTG9jYWxlIHVzZWQgdG8gcGljayBidWlsdC1pbiBjYWxsb3V0IGxhYmVscy4gQ29udmVuaWVuY2Ugc2hvcnRjdXQgc29cbiAgICogY2FsbGVycyBkb24ndCBoYXZlIHRvIHNwcmVhZCBgQ0FMTE9VVF9MQUJFTFMuZW5gIHRoZW1zZWx2ZXMuIElnbm9yZWRcbiAgICogd2hlbiBgY2FsbG91dExhYmVsc2AgaXMgcHJvdmlkZWQgZXhwbGljaXRseS5cbiAgICovXG4gIGxvY2FsZT86ICdlcycgfCAnZW4nIHwgJ3B0JztcbiAgLyoqIE92ZXJyaWRlIGV2ZXJ5IGNhbGxvdXQgbGFiZWwgaW5kaXZpZHVhbGx5LiBUYWtlcyBwcmVjZWRlbmNlIG92ZXIgYGxvY2FsZWAuICovXG4gIGNhbGxvdXRMYWJlbHM/OiBDYWxsb3V0TGFiZWxzO1xufVxuXG5jb25zdCBCT1hfRFJBV0lORyA9IC9b4pSM4pSQ4pSU4pSY4pSc4pSk4pSs4pS04pS84pSA4pSC4pWU4pWX4pWa4pWd4pWQ4pWRXS87XG5jb25zdCBDQUxMT1VUX1JFID0gL14+XFxzKlxcWyEoTk9URXxUSVB8SU5GT3xXQVJOSU5HfENBVVRJT058SU1QT1JUQU5UKVxcXVxccyooLiopJC9pO1xuY29uc3QgRkVOQ0VfUkUgPSAvXmBgYChbXFx3LV0qKVxccyokLztcbmNvbnN0IEhFQURJTkdfUkUgPSAvXigjezEsNn0pXFxzKyguKykkLztcbmNvbnN0IFNFUEFSQVRPUl9SRSA9IC9eXFxzKig/Oi17Myx9fFxcKnszLH18X3szLH0pXFxzKiQvO1xuY29uc3QgVU5PUkRFUkVEX1JFID0gL15cXHMqWy0qK11cXHMrKC4rKSQvO1xuY29uc3QgQ0hFQ0tMSVNUX1JFID0gL15cXHMqWy0qK11cXHMrXFxbKFsgeFhdKVxcXVxccysoLispJC87XG5jb25zdCBPUkRFUkVEX1JFID0gL15cXHMqXFxkK1xcLlxccysoLispJC87XG5jb25zdCBUQUJMRV9ESVZJREVSX1JFID0gL15cXHMqXFx8P1tcXHM6fC1dK1xcfD9cXHMqJC87XG5jb25zdCBUQUJMRV9ST1dfUkUgPSAvXlxccypcXHwoLispXFx8XFxzKiQvO1xuXG4vKipcbiAqIFB1cmUgTWFya2Rvd24g4oaSIEFydGljbGVNZXRhZGF0YSBwYXJzZXIuIE5vIEFuZ3VsYXIgZGVwcyDigJQgdXNhYmxlIGZyb20gTm9kZSBzY3JpcHRzXG4gKiAoYnVpbGQtdGltZSBnZW5lcmF0aW9uKSBhbmQgZnJvbSB0aGUgQW5ndWxhciBgTWFya2Rvd25BcnRpY2xlUGFyc2VyU2VydmljZWAgd3JhcHBlci5cbiAqXG4gKiBTdXBwb3J0ZWQgc3ludGF4OlxuICogLSBIZWFkaW5ncyAoIywgIyMsICMjIyDigKYpIOKGkiB0aXRsZSAvIHN1YnRpdGxlXG4gKiAtIFBhcmFncmFwaHMg4oaSIHBhcmFncmFwaCAod2l0aCBgcHJvY2Vzc0xpbmtzYCArIGBhbGxvd1BhcnRpYWxCb2xkYClcbiAqIC0gTGlzdHMgKC0sICosIDEuKSDihpIgdW5vcmRlcmVkIC8gb3JkZXJlZCBsaXN0ICgtIFsgXSAvIC0gW3hdIGZvciBjaGVja2xpc3QpXG4gKiAtIEJsb2NrcXVvdGVzICg+KSDihpIgcXVvdGUsIHdpdGggR2l0SHViIGNhbGxvdXRzIGA+IFshTk9URXxUSVB8SU5GT3xXQVJOSU5HfENBVVRJT058SU1QT1JUQU5UXWAgbWFwcGVkIHRvIG5vdGVzXG4gKiAtIENvZGUgZmVuY2VzIChgYGBsYW5nKSDihpIgY29kZVxuICogLSBCb3gtZHJhd2luZyBBU0NJSSBhcnQgKOKUjOKUkOKUlOKUmOKUguKUgCkgYXV0by13cmFwcGVkIGFzIGNvZGVcbiAqIC0gVGFibGVzIOKGkiBmbGF0dGVuZWQgaW50byBwYXJhZ3JhcGhzIHdpdGggYm9sZCBrZXlzXG4gKiAtIEhvcml6b250YWwgcnVsZXMgKC0tLSwgKioqLCBfX18pIOKGkiBzZXBhcmF0b3JcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlTWFya2Rvd25BcnRpY2xlKFxuICBtYXJrZG93bjogc3RyaW5nLFxuICBvcHRpb25zPzogUGFyc2VNYXJrZG93bkFydGljbGVPcHRpb25zXG4pOiBBcnRpY2xlTWV0YWRhdGEge1xuICBjb25zdCBsaW5lcyA9IG5vcm1hbGl6ZShtYXJrZG93bikuc3BsaXQoJ1xcbicpO1xuICBjb25zdCBlbGVtZW50czogQXJ0aWNsZUVsZW1lbnRbXSA9IFtdO1xuICBjb25zdCBsYWJlbHM6IENhbGxvdXRMYWJlbHMgPVxuICAgIG9wdGlvbnM/LmNhbGxvdXRMYWJlbHMgPz9cbiAgICAob3B0aW9ucz8ubG9jYWxlID8gQ0FMTE9VVF9MQUJFTFNbb3B0aW9ucy5sb2NhbGVdIDogQ0FMTE9VVF9MQUJFTFMuZXMpO1xuXG4gIGxldCBpID0gMDtcbiAgd2hpbGUgKGkgPCBsaW5lcy5sZW5ndGgpIHtcbiAgICBjb25zdCBsaW5lID0gbGluZXNbaV07XG5cbiAgICBpZiAobGluZS50cmltKCkgPT09ICcnKSB7XG4gICAgICBpKys7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBjb25zdCBmZW5jZSA9IGxpbmUubWF0Y2goRkVOQ0VfUkUpO1xuICAgIGlmIChmZW5jZSkge1xuICAgICAgY29uc3QgbGFuZyA9IGZlbmNlWzFdIHx8IHVuZGVmaW5lZDtcbiAgICAgIGNvbnN0IGJvZHk6IHN0cmluZ1tdID0gW107XG4gICAgICBpKys7XG4gICAgICB3aGlsZSAoaSA8IGxpbmVzLmxlbmd0aCAmJiAhRkVOQ0VfUkUudGVzdChsaW5lc1tpXSkpIHtcbiAgICAgICAgYm9keS5wdXNoKGxpbmVzW2ldKTtcbiAgICAgICAgaSsrO1xuICAgICAgfVxuICAgICAgaSsrO1xuICAgICAgZWxlbWVudHMucHVzaCh7XG4gICAgICAgIHR5cGU6ICdjb2RlJyxcbiAgICAgICAgcHJvcHM6IHsgY29kZTogYm9keS5qb2luKCdcXG4nKSwgbGFuZ3VhZ2U6IGxhbmcsIHRoZW1lOiAnZGFyaycgfSxcbiAgICAgIH0pO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgaWYgKEJPWF9EUkFXSU5HLnRlc3QobGluZSkpIHtcbiAgICAgIGNvbnN0IGJvZHk6IHN0cmluZ1tdID0gW107XG4gICAgICB3aGlsZSAoaSA8IGxpbmVzLmxlbmd0aCAmJiAobGluZXNbaV0udHJpbSgpID09PSAnJyB8fCBCT1hfRFJBV0lORy50ZXN0KGxpbmVzW2ldKSkpIHtcbiAgICAgICAgYm9keS5wdXNoKGxpbmVzW2ldKTtcbiAgICAgICAgaSsrO1xuICAgICAgfVxuICAgICAgd2hpbGUgKGJvZHkubGVuZ3RoICYmIGJvZHlbYm9keS5sZW5ndGggLSAxXS50cmltKCkgPT09ICcnKSBib2R5LnBvcCgpO1xuICAgICAgZWxlbWVudHMucHVzaCh7XG4gICAgICAgIHR5cGU6ICdjb2RlJyxcbiAgICAgICAgcHJvcHM6IHsgY29kZTogYm9keS5qb2luKCdcXG4nKSwgbGFuZ3VhZ2U6ICd0ZXh0JywgdGhlbWU6ICdkYXJrJyB9LFxuICAgICAgfSk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAoU0VQQVJBVE9SX1JFLnRlc3QobGluZSkpIHtcbiAgICAgIGVsZW1lbnRzLnB1c2goeyB0eXBlOiAnc2VwYXJhdG9yJywgcHJvcHM6IHsgc3R5bGU6ICdsaW5lJyB9IH0pO1xuICAgICAgaSsrO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgY29uc3QgaGVhZGluZyA9IGxpbmUubWF0Y2goSEVBRElOR19SRSk7XG4gICAgaWYgKGhlYWRpbmcpIHtcbiAgICAgIGVsZW1lbnRzLnB1c2gobWFrZUhlYWRpbmcoaGVhZGluZ1sxXS5sZW5ndGgsIGhlYWRpbmdbMl0udHJpbSgpKSk7XG4gICAgICBpKys7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAobGluZS5zdGFydHNXaXRoKCc+JykpIHtcbiAgICAgIGNvbnN0IGJsb2NrOiBzdHJpbmdbXSA9IFtdO1xuICAgICAgd2hpbGUgKGkgPCBsaW5lcy5sZW5ndGggJiYgbGluZXNbaV0uc3RhcnRzV2l0aCgnPicpKSB7XG4gICAgICAgIGJsb2NrLnB1c2gobGluZXNbaV0pO1xuICAgICAgICBpKys7XG4gICAgICB9XG4gICAgICBlbGVtZW50cy5wdXNoKG1ha2VRdW90ZU9yQ2FsbG91dChibG9jaywgbGFiZWxzKSk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAoVEFCTEVfUk9XX1JFLnRlc3QobGluZSkpIHtcbiAgICAgIGNvbnN0IHJvd3M6IHN0cmluZ1tdID0gW107XG4gICAgICB3aGlsZSAoaSA8IGxpbmVzLmxlbmd0aCAmJiBUQUJMRV9ST1dfUkUudGVzdChsaW5lc1tpXSkpIHtcbiAgICAgICAgcm93cy5wdXNoKGxpbmVzW2ldKTtcbiAgICAgICAgaSsrO1xuICAgICAgfVxuICAgICAgZWxlbWVudHMucHVzaCguLi5tYWtlVGFibGUocm93cykpO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgaWYgKENIRUNLTElTVF9SRS50ZXN0KGxpbmUpIHx8IFVOT1JERVJFRF9SRS50ZXN0KGxpbmUpIHx8IE9SREVSRURfUkUudGVzdChsaW5lKSkge1xuICAgICAgY29uc3QgbGlzdFR5cGU6ICdjaGVja2xpc3QnIHwgJ3Vub3JkZXJlZCcgfCAnb3JkZXJlZCcgPSBDSEVDS0xJU1RfUkUudGVzdChsaW5lKVxuICAgICAgICA/ICdjaGVja2xpc3QnXG4gICAgICAgIDogT1JERVJFRF9SRS50ZXN0KGxpbmUpXG4gICAgICAgICAgPyAnb3JkZXJlZCdcbiAgICAgICAgICA6ICd1bm9yZGVyZWQnO1xuXG4gICAgICBjb25zdCBpdGVtczogQXJ0aWNsZUxpc3RFbGVtZW50Wydwcm9wcyddWydpdGVtcyddID0gW107XG4gICAgICB3aGlsZSAoaSA8IGxpbmVzLmxlbmd0aCAmJiBsaW5lc1tpXS50cmltKCkgIT09ICcnKSB7XG4gICAgICAgIGNvbnN0IGN1ciA9IGxpbmVzW2ldO1xuICAgICAgICBjb25zdCBjaGVjayA9IGN1ci5tYXRjaChDSEVDS0xJU1RfUkUpO1xuICAgICAgICBjb25zdCB1bm9yZCA9IGN1ci5tYXRjaChVTk9SREVSRURfUkUpO1xuICAgICAgICBjb25zdCBvcmQgPSBjdXIubWF0Y2goT1JERVJFRF9SRSk7XG4gICAgICAgIGlmIChjaGVjaykgaXRlbXMucHVzaCh7IHRleHQ6IHByb2Nlc3NJbmxpbmUoY2hlY2tbMl0udHJpbSgpKSB9KTtcbiAgICAgICAgZWxzZSBpZiAob3JkICYmIGxpc3RUeXBlID09PSAnb3JkZXJlZCcpIGl0ZW1zLnB1c2goeyB0ZXh0OiBwcm9jZXNzSW5saW5lKG9yZFsxXS50cmltKCkpIH0pO1xuICAgICAgICBlbHNlIGlmICh1bm9yZCAmJiBsaXN0VHlwZSAhPT0gJ29yZGVyZWQnKVxuICAgICAgICAgIGl0ZW1zLnB1c2goeyB0ZXh0OiBwcm9jZXNzSW5saW5lKHVub3JkWzFdLnRyaW0oKSkgfSk7XG4gICAgICAgIGVsc2UgYnJlYWs7XG4gICAgICAgIGkrKztcbiAgICAgIH1cbiAgICAgIGVsZW1lbnRzLnB1c2goeyB0eXBlOiAnbGlzdCcsIHByb3BzOiB7IGl0ZW1zLCBsaXN0VHlwZSB9IH0pO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgY29uc3QgcGFyYWdyYXBoOiBzdHJpbmdbXSA9IFtdO1xuICAgIHdoaWxlIChpIDwgbGluZXMubGVuZ3RoICYmIGxpbmVzW2ldLnRyaW0oKSAhPT0gJycgJiYgIXN0YXJ0c05ld0Jsb2NrKGxpbmVzW2ldKSkge1xuICAgICAgcGFyYWdyYXBoLnB1c2gobGluZXNbaV0pO1xuICAgICAgaSsrO1xuICAgIH1cbiAgICBjb25zdCB0ZXh0ID0gcHJvY2Vzc0lubGluZShwYXJhZ3JhcGguam9pbignICcpLnRyaW0oKSk7XG4gICAgaWYgKHRleHQpIHtcbiAgICAgIGVsZW1lbnRzLnB1c2goe1xuICAgICAgICB0eXBlOiAncGFyYWdyYXBoJyxcbiAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICBjb250ZW50OiB0ZXh0LFxuICAgICAgICAgIHNpemU6ICdtZWRpdW0nLFxuICAgICAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICAgICAgYm9sZDogZmFsc2UsXG4gICAgICAgICAgcHJvY2Vzc0xpbmtzOiB0cnVlLFxuICAgICAgICAgIGFsbG93UGFydGlhbEJvbGQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvLyBTdHJpcCBwYXJzZXItb25seSBvcHRpb25zIGJlZm9yZSBtZXJnaW5nIGludG8gQXJ0aWNsZU1ldGFkYXRhXG4gIGNvbnN0IHsgbG9jYWxlOiBfbCwgY2FsbG91dExhYmVsczogX2MsIC4uLm1ldGFkYXRhT3ZlcnJpZGVzIH0gPSBvcHRpb25zID8/IHt9O1xuXG4gIHJldHVybiB7XG4gICAgZWxlbWVudHMsXG4gICAgbWF4V2lkdGg6ICc5MDBweCcsXG4gICAgY2VudGVyZWQ6IHRydWUsXG4gICAgdGhlbWU6ICdhdXRvJyxcbiAgICAuLi5tZXRhZGF0YU92ZXJyaWRlcyxcbiAgfTtcbn1cblxuZnVuY3Rpb24gbm9ybWFsaXplKG1kOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gbWQucmVwbGFjZSgvXFxyXFxuL2csICdcXG4nKS5yZXBsYWNlKC9cXHIvZywgJ1xcbicpO1xufVxuXG5mdW5jdGlvbiBzdGFydHNOZXdCbG9jayhsaW5lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuIChcbiAgICBIRUFESU5HX1JFLnRlc3QobGluZSkgfHxcbiAgICBGRU5DRV9SRS50ZXN0KGxpbmUpIHx8XG4gICAgU0VQQVJBVE9SX1JFLnRlc3QobGluZSkgfHxcbiAgICBUQUJMRV9ST1dfUkUudGVzdChsaW5lKSB8fFxuICAgIFVOT1JERVJFRF9SRS50ZXN0KGxpbmUpIHx8XG4gICAgT1JERVJFRF9SRS50ZXN0KGxpbmUpIHx8XG4gICAgQ0hFQ0tMSVNUX1JFLnRlc3QobGluZSkgfHxcbiAgICBsaW5lLnN0YXJ0c1dpdGgoJz4nKSB8fFxuICAgIEJPWF9EUkFXSU5HLnRlc3QobGluZSlcbiAgKTtcbn1cblxuLy8gUHJvY2VzYSBtYXJjYWRvIGlubGluZSBhIEhUTUwgKHJlbmRlcml6YWRvIHbDrWEgaW5uZXJIVE1MIHBvciB2YWwtdGV4dC92YWwtYXJ0aWNsZSkuXG4vLyBMb3MgZW5sYWNlcyBbdGV4dG9dKHVybCkgTk8gc2UgdG9jYW4gYWPDoTogbG9zIHJlc3VlbHZlIGVsIFByb2Nlc3NMaW5rc1BpcGUgZW5cbi8vIHJ1bnRpbWUgKGdhdGVhZG8gcG9yIHByb2Nlc3NMaW5rcykuIE9yZGVuOiBjw7NkaWdvIHByaW1lcm8gKHBhcmEgbm8gaW50ZXJwcmV0YXJcbi8vIHN1IGludGVyaW9yKSwgbHVlZ28gbmVncml0YSwgbHVlZ28gaXTDoWxpY2EgKGxvcyBgKipgIHlhIGNvbnN1bWlkb3Mgbm8gY29saXNpb25hbikuXG5mdW5jdGlvbiBwcm9jZXNzSW5saW5lKHRleHQ6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiB0ZXh0XG4gICAgLnJlcGxhY2UoL2AoW15gXSspYC9nLCAnPGNvZGU+JDE8L2NvZGU+JylcbiAgICAucmVwbGFjZSgvXFwqXFwqKC4rPylcXCpcXCovZywgJzxzdHJvbmc+JDE8L3N0cm9uZz4nKVxuICAgIC5yZXBsYWNlKC9cXCooW14qXFxuXSs/KVxcKi9nLCAnPGVtPiQxPC9lbT4nKTtcbn1cblxuZnVuY3Rpb24gbWFrZUhlYWRpbmcobGV2ZWw6IG51bWJlciwgY29udGVudDogc3RyaW5nKTogQXJ0aWNsZVRpdGxlRWxlbWVudCB8IEFydGljbGVTdWJ0aXRsZUVsZW1lbnQge1xuICBpZiAobGV2ZWwgPT09IDEpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogJ3RpdGxlJyxcbiAgICAgIHByb3BzOiB7IGNvbnRlbnQsIHNpemU6ICd4bGFyZ2UnLCBjb2xvcjogJ2RhcmsnLCBib2xkOiB0cnVlIH0sXG4gICAgfTtcbiAgfVxuICBjb25zdCBzaXplOiAnbGFyZ2UnIHwgJ21lZGl1bScgfCAnc21hbGwnID1cbiAgICBsZXZlbCA9PT0gMiA/ICdsYXJnZScgOiBsZXZlbCA9PT0gMyA/ICdtZWRpdW0nIDogJ3NtYWxsJztcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiAnc3VidGl0bGUnLFxuICAgIHByb3BzOiB7IGNvbnRlbnQsIHNpemUsIGNvbG9yOiAnZGFyaycsIGJvbGQ6IHRydWUgfSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gbWFrZVF1b3RlT3JDYWxsb3V0KGJsb2NrOiBzdHJpbmdbXSwgbGFiZWxzOiBDYWxsb3V0TGFiZWxzKTogQXJ0aWNsZUVsZW1lbnQge1xuICBjb25zdCBmaXJzdCA9IGJsb2NrWzBdO1xuICBjb25zdCBjYWxsb3V0ID0gZmlyc3QubWF0Y2goQ0FMTE9VVF9SRSk7XG4gIGNvbnN0IGxpbmVzID0gYmxvY2subWFwKGwgPT4gbC5yZXBsYWNlKC9ePlxccz8vLCAnJykpO1xuXG4gIGlmIChjYWxsb3V0KSB7XG4gICAgY29uc3QgdHlwZSA9IGNhbGxvdXRbMV0udG9VcHBlckNhc2UoKSBhcyBDYWxsb3V0VHlwZTtcbiAgICBjb25zdCBmaXJzdExpbmVSZXN0ID0gY2FsbG91dFsyXSB8fCAnJztcbiAgICBjb25zdCByZXN0ID0gbGluZXNcbiAgICAgIC5zbGljZSgxKVxuICAgICAgLmZpbHRlcihsID0+IGwudHJpbSgpICE9PSAnJylcbiAgICAgIC5qb2luKCdcXG4nKTtcbiAgICBjb25zdCB0ZXh0ID0gcHJvY2Vzc0lubGluZShbZmlyc3RMaW5lUmVzdCwgcmVzdF0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oJ1xcbicpLnRyaW0oKSk7XG4gICAgcmV0dXJuIG1ha2VOb3RlKHR5cGUsIHRleHQsIGxhYmVscyk7XG4gIH1cblxuICBjb25zdCB0ZXh0ID0gcHJvY2Vzc0lubGluZShsaW5lcy5qb2luKCcgJykudHJpbSgpKTtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiAncXVvdGUnLFxuICAgIHByb3BzOiB7XG4gICAgICBjb250ZW50OiB0ZXh0LFxuICAgICAgc2l6ZTogJ21lZGl1bScsXG4gICAgICBjb2xvcjogJ21lZGl1bScsXG4gICAgICBib2xkOiBmYWxzZSxcbiAgICAgIHNob3dRdW90ZU1hcms6IHRydWUsXG4gICAgICBhbGlnbm1lbnQ6ICdsZWZ0JyxcbiAgICB9LFxuICB9O1xufVxuXG5mdW5jdGlvbiBtYWtlTm90ZShraW5kOiBDYWxsb3V0VHlwZSwgdGV4dDogc3RyaW5nLCBsYWJlbHM6IENhbGxvdXRMYWJlbHMpOiBBcnRpY2xlTm90ZUVsZW1lbnQge1xuICAvLyBOT1RFIGVzIGVsIGNhbGxvdXQgbmV1dHJvIChjYWphIGRlIGNvbnRlbmlkbyBzaW4gZXRpcXVldGEgZGUgc2V2ZXJpZGFkKTogc2VcbiAgLy8gcmVuZGVyaXphIFNJTiBwcmVmaWpvLiBMb3MgZGVtw6FzIHRpcG9zIChUSVAvSU5GTy9XQVJOSU5HL0NBVVRJT04vSU1QT1JUQU5UKVxuICAvLyBzw60gbXVlc3RyYW4gc3UgbGFiZWwgcG9ycXVlIGNvbXVuaWNhIGNhdGVnb3LDrWEvc2V2ZXJpZGFkLiBFbCBub3Rlcy1ib3ggbm9cbiAgLy8gcmVuZGVyaXphIGhlYWRlciBjdWFuZG8gcHJlZml4IGVzIHZhY8OtbyAoYEBpZiAocHJvcHMucHJlZml4KWApLlxuICBjb25zdCBwcmVmaXggPSBraW5kID09PSAnTk9URScgPyAnJyA6IGAke2xhYmVsc1traW5kXX06YDtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiAnbm90ZScsXG4gICAgcHJvcHM6IHtcbiAgICAgIHRleHQsXG4gICAgICBwcmVmaXgsXG4gICAgICBjb2xvcjogQ0FMTE9VVF9DT0xPUlNba2luZF0sXG4gICAgICB0ZXh0Q29sb3I6ICdkYXJrJyxcbiAgICAgIHNpemU6ICdtZWRpdW0nLFxuICAgICAgcm91bmRlZDogdHJ1ZSxcbiAgICAgIGFsbG93UGFydGlhbEJvbGQ6IHRydWUsXG4gICAgICBwcm9jZXNzTGlua3M6IHRydWUsXG4gICAgfSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gbWFrZVRhYmxlKHJvd3M6IHN0cmluZ1tdKTogQXJ0aWNsZUVsZW1lbnRbXSB7XG4gIGNvbnN0IHBhcnNlZCA9IHJvd3NcbiAgICAuZmlsdGVyKHIgPT4gIVRBQkxFX0RJVklERVJfUkUudGVzdChyKSlcbiAgICAubWFwKHIgPT5cbiAgICAgIHJcbiAgICAgICAgLnRyaW0oKVxuICAgICAgICAucmVwbGFjZSgvXlxcfC8sICcnKVxuICAgICAgICAucmVwbGFjZSgvXFx8JC8sICcnKVxuICAgICAgICAuc3BsaXQoJ3wnKVxuICAgICAgICAubWFwKGMgPT4gYy50cmltKCkpXG4gICAgKTtcbiAgaWYgKHBhcnNlZC5sZW5ndGggPT09IDApIHJldHVybiBbXTtcblxuICBjb25zdCBoZWFkZXIgPSBwYXJzZWRbMF07XG4gIGNvbnN0IGRhdGFSb3dzID0gcGFyc2VkLnNsaWNlKDEpO1xuICBpZiAoZGF0YVJvd3MubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIHtcbiAgICAgICAgdHlwZTogJ3BhcmFncmFwaCcsXG4gICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgY29udGVudDogaGVhZGVyLm1hcChwcm9jZXNzSW5saW5lKS5qb2luKCcgwrcgJyksXG4gICAgICAgICAgc2l6ZTogJ21lZGl1bScsXG4gICAgICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgICAgICBib2xkOiBmYWxzZSxcbiAgICAgICAgICBwcm9jZXNzTGlua3M6IHRydWUsXG4gICAgICAgICAgYWxsb3dQYXJ0aWFsQm9sZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgXTtcbiAgfVxuXG4gIHJldHVybiBkYXRhUm93cy5tYXAocm93ID0+IHtcbiAgICBjb25zdCBwYWlycyA9IHJvdy5tYXAoKGNlbGwsIGlkeCkgPT4ge1xuICAgICAgY29uc3Qga2V5ID0gaGVhZGVyW2lkeF0gPz8gJyc7XG4gICAgICByZXR1cm4ga2V5XG4gICAgICAgID8gYDxzdHJvbmc+JHtwcm9jZXNzSW5saW5lKGtleSl9Ojwvc3Ryb25nPiAke3Byb2Nlc3NJbmxpbmUoY2VsbCl9YFxuICAgICAgICA6IHByb2Nlc3NJbmxpbmUoY2VsbCk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6ICdwYXJhZ3JhcGgnLFxuICAgICAgcHJvcHM6IHtcbiAgICAgICAgY29udGVudDogcGFpcnMuam9pbignIMK3ICcpLFxuICAgICAgICBzaXplOiAnbWVkaXVtJyxcbiAgICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgICAgYm9sZDogZmFsc2UsXG4gICAgICAgIHByb2Nlc3NMaW5rczogdHJ1ZSxcbiAgICAgICAgYWxsb3dQYXJ0aWFsQm9sZDogdHJ1ZSxcbiAgICAgIH0sXG4gICAgfSBhcyBBcnRpY2xlRWxlbWVudDtcbiAgfSk7XG59XG4iXX0=
@@ -2,5 +2,5 @@
2
2
  * Current version of valtech-components.
3
3
  * This is automatically updated during the publish process.
4
4
  */
5
- export const VERSION = '4.0.153';
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvdmVyc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDdXJyZW50IHZlcnNpb24gb2YgdmFsdGVjaC1jb21wb25lbnRzLlxuICogVGhpcyBpcyBhdXRvbWF0aWNhbGx5IHVwZGF0ZWQgZHVyaW5nIHRoZSBwdWJsaXNoIHByb2Nlc3MuXG4gKi9cbmV4cG9ydCBjb25zdCBWRVJTSU9OID0gJzQuMC4xNTMnO1xuIl19
5
+ export const VERSION = '4.0.155';
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvdmVyc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDdXJyZW50IHZlcnNpb24gb2YgdmFsdGVjaC1jb21wb25lbnRzLlxuICogVGhpcyBpcyBhdXRvbWF0aWNhbGx5IHVwZGF0ZWQgZHVyaW5nIHRoZSBwdWJsaXNoIHByb2Nlc3MuXG4gKi9cbmV4cG9ydCBjb25zdCBWRVJTSU9OID0gJzQuMC4xNTUnO1xuIl19
@@ -56,7 +56,7 @@ import { BrowserMultiFormatReader } from '@zxing/browser';
56
56
  * Current version of valtech-components.
57
57
  * This is automatically updated during the publish process.
58
58
  */
59
- const VERSION = '4.0.153';
59
+ const VERSION = '4.0.155';
60
60
 
61
61
  // Control de estado de refresco (singleton a nivel de módulo)
62
62
  let isRefreshing = false;
@@ -32026,7 +32026,7 @@ class ArticleComponent {
32026
32026
  <span *ngIf="getListElement(element).props.listType === 'checklist'" class="val-article__list-check"
32027
32027
  >✓</span
32028
32028
  >
32029
- <span [innerHTML]="item.text"></span>
32029
+ <span [innerHTML]="item.text | processLinks"></span>
32030
32030
  </li>
32031
32031
  </ul>
32032
32032
  <ol
@@ -32034,7 +32034,7 @@ class ArticleComponent {
32034
32034
  class="val-article__list val-article__list--ordered"
32035
32035
  >
32036
32036
  <li *ngFor="let item of getListElement(element).props.items" class="val-article__list-item">
32037
- <span [innerHTML]="item.text"></span>
32037
+ <span [innerHTML]="item.text | processLinks"></span>
32038
32038
  </li>
32039
32039
  </ol>
32040
32040
  </ng-container>
@@ -32105,7 +32105,7 @@ class ArticleComponent {
32105
32105
  </ng-container>
32106
32106
  </div>
32107
32107
  </article>
32108
- `, isInline: true, styles: ["@charset \"UTF-8\";:root{--val-container-sm: 540px;--val-container-md: 720px;--val-container-lg: 880px;--val-container-xl: 1100px;--val-container-padding: 16px;--ion-color-primary: #7026df;--ion-color-primary-rgb: 112, 38, 223;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #6321c4;--ion-color-primary-tint: #7e3ce2;--ion-color-secondary: #e2ccff;--ion-color-secondary-rgb: 226, 204, 255;--ion-color-secondary-contrast: #000000;--ion-color-secondary-contrast-rgb: 0, 0, 0;--ion-color-secondary-shade: #c7b4e0;--ion-color-secondary-tint: #e5d1ff;--ion-color-texti: #354c69;--ion-color-texti-rgb: 53, 76, 105;--ion-color-texti-contrast: #ffffff;--ion-color-texti-contrast-rgb: 255, 255, 255;--ion-color-texti-shade: #2f435c;--ion-color-texti-tint: #495e78;--ion-color-darki: #090f1b;--ion-color-darki-rgb: 9, 15, 27;--ion-color-darki-contrast: #ffffff;--ion-color-darki-contrast-rgb: 255, 255, 255;--ion-color-darki-shade: #080d18;--ion-color-darki-tint: #222732;--ion-color-medium: #9e9e9e;--ion-color-medium-rgb: 158, 158, 158;--ion-color-medium-contrast: #000000;--ion-color-medium-contrast-rgb: 0, 0, 0;--ion-color-medium-shade: #8b8b8b;--ion-color-medium-tint: #a8a8a8;--swiper-pagination-color: var(--ion-color-primary);--swiper-navigation-color: var(--ion-color-primary);--swiper-pagination-bullet-inactive-color: var(--ion-color-medium)}body.dark,html.ion-palette-dark,body[data-theme=dark]{--ion-color-texti: #8fc1ff;--ion-color-texti-rgb: 143, 193, 255;--ion-color-texti-contrast: #000000;--ion-color-texti-contrast-rgb: 0, 0, 0;--ion-color-texti-shade: #7eaae0;--ion-color-texti-tint: #9ac7ff;--ion-color-darki: #ffffff;--ion-color-darki-rgb: 255, 255, 255;--ion-color-darki-contrast: #000000;--ion-color-darki-contrast-rgb: 0, 0, 0;--ion-color-darki-shade: #e0e0e0;--ion-color-darki-tint: #ffffff;--ion-color-primary: #8f49f8;--ion-color-primary-rgb: 143, 73, 248;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #7e40da;--ion-color-primary-tint: #9a5bf9}.ion-color-texti{--ion-color-base: var(--ion-color-texti);--ion-color-base-rgb: var(--ion-color-texti-rgb);--ion-color-contrast: var(--ion-color-texti-contrast);--ion-color-contrast-rgb: var(--ion-color-texti-contrast-rgb);--ion-color-shade: var(--ion-color-texti-shade);--ion-color-tint: var(--ion-color-texti-tint)}.ion-color-darki{--ion-color-base: var(--ion-color-darki);--ion-color-base-rgb: var(--ion-color-darki-rgb);--ion-color-contrast: var(--ion-color-darki-contrast);--ion-color-contrast-rgb: var(--ion-color-darki-contrast-rgb);--ion-color-shade: var(--ion-color-darki-shade);--ion-color-tint: var(--ion-color-darki-tint)}.val-article{width:100%;margin:0 auto;line-height:1.6;color:var(--ion-color-dark, #1f2937);display:block;position:static}.val-article--centered{margin:0 auto}.val-article--light{background-color:var(--ion-color-light, #ffffff);color:var(--ion-color-dark, #1f2937)}.val-article--dark{background-color:var(--ion-color-dark, #1f2937);color:var(--ion-color-light, #ffffff)}.val-article__element{position:relative}.val-article__element:last-child{margin-bottom:0!important}.val-article__spacing-top--none{margin-top:0!important}.val-article__spacing-top--small{margin-top:.5rem!important}.val-article__spacing-top--medium{margin-top:1rem!important}.val-article__spacing-top--large{margin-top:1.5rem!important}.val-article__spacing-top--xlarge{margin-top:2.5rem!important}.val-article__spacing-bottom--none{margin-bottom:0!important}.val-article__spacing-bottom--small{margin-bottom:.5rem!important}.val-article__spacing-bottom--medium{margin-bottom:1rem!important}.val-article__spacing-bottom--large{margin-bottom:1.5rem!important}.val-article__spacing-bottom--xlarge{margin-bottom:2.5rem!important}.val-article__spacing-horizontal--none{margin-left:0!important;margin-right:0!important}.val-article__spacing-horizontal--small{margin-left:.5rem!important;margin-right:.5rem!important}.val-article__spacing-horizontal--medium{margin-left:1rem!important;margin-right:1rem!important}.val-article__spacing-horizontal--large{margin-left:1.5rem!important;margin-right:1.5rem!important}.val-article__spacing-horizontal--xlarge{margin-left:2.5rem!important;margin-right:2.5rem!important}.val-article__quote{border-left:4px solid #0969da;padding:1rem;background-color:var(--ion-color-light-shade, #f8f9fa);border-radius:0 8px 8px 0;font-style:italic}.val-article__quote-content{margin-bottom:.5rem;font-size:1.1em}.val-article__quote-author{font-size:.9em;color:var(--ion-color-medium, #6c757d);font-style:normal;font-weight:500;text-align:right}.val-article__quote-source{font-weight:400;opacity:.8}.val-article__highlight{padding:1rem;background-color:var(--ion-color-warning-tint, #fff3cd);border:1px solid var(--ion-color-warning, #ffc107);border-radius:4px}.val-article__highlight--rounded{border-radius:12px}.val-article__code{border-radius:8px;overflow:hidden;border:1px solid #e1e5e9}.val-article__code-language{background-color:var(--ion-color-medium-tint, #f8f9fa);padding:.5rem 1rem;font-size:.875em;font-weight:500;color:var(--ion-color-dark, #495057);border-bottom:1px solid #e1e5e9;text-transform:uppercase;letter-spacing:.5px}.val-article__code-content{background-color:#f6f8fa;color:#24292e;padding:1rem;margin:0;overflow-x:auto;font-family:SFMono-Regular,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:.875em;line-height:1.5}.val-article__code-content code{background:none;padding:0;font-size:inherit;color:inherit}.val-article__code-content--dark{background-color:#161b22;color:#f0f6fc}.val-article__list{padding-left:1.5rem}.val-article__list--ordered{list-style-type:decimal}.val-article__list-item{margin-bottom:.5rem;line-height:1.6;position:relative}.val-article__list-item:last-child{margin-bottom:0}.val-article__list-check{color:var(--ion-color-success, #28a745);font-weight:700;margin-right:.5rem;position:absolute;left:-1.5rem}.val-article .val-article__list:has(.val-article__list-check){list-style:none;padding-left:1rem}.val-article__button-container--left{text-align:left}.val-article__button-container--center{text-align:center}.val-article__button-container--right{text-align:right}.val-article__separator{text-align:center}.val-article__separator-line{border:none;height:1px;background-color:#d0d7de;margin:0}.val-article__separator-line--thin{height:1px}.val-article__separator-line--thick{height:3px}.val-article__separator-dots{color:#d0d7de;font-size:1.5em;letter-spacing:.5em;-webkit-user-select:none;user-select:none}.val-article__separator-space{height:0}.val-article__image{text-align:center}.val-article__image--left{text-align:left}.val-article__image--center{text-align:center}.val-article__image--right{text-align:right}.val-article__image-content{max-width:100%;height:auto;border-radius:4px;box-shadow:0 2px 8px #0000001a;transition:transform .2s ease}.val-article__image-content:hover{transform:scale(1.02)}.val-article__image-content--rounded{border-radius:12px}.val-article__image-caption{margin-top:.5rem;font-size:.875em;color:var(--ion-color-medium, #6c757d);font-style:italic;text-align:center}.val-article__video{text-align:center}.val-article__video-content{max-width:100%;height:auto;border-radius:8px;box-shadow:0 4px 12px #00000026}.val-article__video-title{margin-top:.5rem;font-size:.9em;color:var(--ion-color-medium, #6c757d);font-weight:500}.val-article__custom *{max-width:100%}@media (max-width: 768px){.val-article__code-content{font-size:.8em;padding:.5rem}.val-article__image-content:hover{transform:none}.val-article__quote,.val-article__highlight{padding:.5rem}}:host-context(body.dark) .val-article--auto,:host-context(.dark) .val-article--auto,:host-context(.ion-palette-dark) .val-article--auto,:host-context(html.ion-palette-dark) .val-article--auto,:host-context([data-theme=dark]) .val-article--auto{background-color:var(--ion-color-dark, #1f2937);color:var(--ion-color-light, #ffffff)}:host-context(body.dark) .val-article--auto .val-article__quote,:host-context(.dark) .val-article--auto .val-article__quote,:host-context(.ion-palette-dark) .val-article--auto .val-article__quote,:host-context(html.ion-palette-dark) .val-article--auto .val-article__quote,:host-context([data-theme=dark]) .val-article--auto .val-article__quote{background-color:#ffffff14;border-left-color:var(--ion-color-primary)}:host-context(body.dark) .val-article--auto .val-article__highlight,:host-context(.dark) .val-article--auto .val-article__highlight,:host-context(.ion-palette-dark) .val-article--auto .val-article__highlight,:host-context(html.ion-palette-dark) .val-article--auto .val-article__highlight,:host-context([data-theme=dark]) .val-article--auto .val-article__highlight{background-color:#ffc1071a;border-color:var(--ion-color-warning-shade, #e0a800)}:host-context(body.dark) .val-article--auto .val-article__code-content,:host-context(.dark) .val-article--auto .val-article__code-content,:host-context(.ion-palette-dark) .val-article--auto .val-article__code-content,:host-context(html.ion-palette-dark) .val-article--auto .val-article__code-content,:host-context([data-theme=dark]) .val-article--auto .val-article__code-content{background-color:#161b22;color:#f0f6fc}.val-article__element{animation:fadeInUp .3s ease-out}@keyframes fadeInUp{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@media (prefers-contrast: high){.val-article__separator-line{background-color:currentColor;opacity:.5}.val-article__quote{border-left-width:6px}}@media (prefers-reduced-motion: reduce){.val-article .val-article__element{animation:none}.val-article__image-content{transition:none}.val-article__image-content:hover{transform:none}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$5.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: DisplayComponent, selector: "val-display", inputs: ["props"] }, { kind: "component", type: TitleComponent, selector: "val-title", inputs: ["props"] }, { kind: "component", type: TextComponent, selector: "val-text", inputs: ["props"] }, { kind: "component", type: ButtonComponent, selector: "val-button", inputs: ["preset", "props"], outputs: ["onClick"] }, { kind: "component", type: ImageComponent, selector: "val-image", inputs: ["props"] }, { kind: "component", type: CodeDisplayComponent, selector: "val-code-display", inputs: ["props"] }, { kind: "component", type: NotesBoxComponent, selector: "val-notes-box", inputs: ["props"] }, { kind: "component", type: PlainCodeBoxComponent, selector: "val-plain-code-box", inputs: ["props"] }] }); }
32108
+ `, isInline: true, styles: ["@charset \"UTF-8\";:root{--val-container-sm: 540px;--val-container-md: 720px;--val-container-lg: 880px;--val-container-xl: 1100px;--val-container-padding: 16px;--ion-color-primary: #7026df;--ion-color-primary-rgb: 112, 38, 223;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #6321c4;--ion-color-primary-tint: #7e3ce2;--ion-color-secondary: #e2ccff;--ion-color-secondary-rgb: 226, 204, 255;--ion-color-secondary-contrast: #000000;--ion-color-secondary-contrast-rgb: 0, 0, 0;--ion-color-secondary-shade: #c7b4e0;--ion-color-secondary-tint: #e5d1ff;--ion-color-texti: #354c69;--ion-color-texti-rgb: 53, 76, 105;--ion-color-texti-contrast: #ffffff;--ion-color-texti-contrast-rgb: 255, 255, 255;--ion-color-texti-shade: #2f435c;--ion-color-texti-tint: #495e78;--ion-color-darki: #090f1b;--ion-color-darki-rgb: 9, 15, 27;--ion-color-darki-contrast: #ffffff;--ion-color-darki-contrast-rgb: 255, 255, 255;--ion-color-darki-shade: #080d18;--ion-color-darki-tint: #222732;--ion-color-medium: #9e9e9e;--ion-color-medium-rgb: 158, 158, 158;--ion-color-medium-contrast: #000000;--ion-color-medium-contrast-rgb: 0, 0, 0;--ion-color-medium-shade: #8b8b8b;--ion-color-medium-tint: #a8a8a8;--swiper-pagination-color: var(--ion-color-primary);--swiper-navigation-color: var(--ion-color-primary);--swiper-pagination-bullet-inactive-color: var(--ion-color-medium)}body.dark,html.ion-palette-dark,body[data-theme=dark]{--ion-color-texti: #8fc1ff;--ion-color-texti-rgb: 143, 193, 255;--ion-color-texti-contrast: #000000;--ion-color-texti-contrast-rgb: 0, 0, 0;--ion-color-texti-shade: #7eaae0;--ion-color-texti-tint: #9ac7ff;--ion-color-darki: #ffffff;--ion-color-darki-rgb: 255, 255, 255;--ion-color-darki-contrast: #000000;--ion-color-darki-contrast-rgb: 0, 0, 0;--ion-color-darki-shade: #e0e0e0;--ion-color-darki-tint: #ffffff;--ion-color-primary: #8f49f8;--ion-color-primary-rgb: 143, 73, 248;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #7e40da;--ion-color-primary-tint: #9a5bf9}.ion-color-texti{--ion-color-base: var(--ion-color-texti);--ion-color-base-rgb: var(--ion-color-texti-rgb);--ion-color-contrast: var(--ion-color-texti-contrast);--ion-color-contrast-rgb: var(--ion-color-texti-contrast-rgb);--ion-color-shade: var(--ion-color-texti-shade);--ion-color-tint: var(--ion-color-texti-tint)}.ion-color-darki{--ion-color-base: var(--ion-color-darki);--ion-color-base-rgb: var(--ion-color-darki-rgb);--ion-color-contrast: var(--ion-color-darki-contrast);--ion-color-contrast-rgb: var(--ion-color-darki-contrast-rgb);--ion-color-shade: var(--ion-color-darki-shade);--ion-color-tint: var(--ion-color-darki-tint)}.val-article{width:100%;margin:0 auto;line-height:1.6;color:var(--ion-color-dark, #1f2937);display:block;position:static}.val-article--centered{margin:0 auto}.val-article--light{background-color:var(--ion-color-light, #ffffff);color:var(--ion-color-dark, #1f2937)}.val-article--dark{background-color:var(--ion-color-dark, #1f2937);color:var(--ion-color-light, #ffffff)}.val-article__element{position:relative}.val-article__element:last-child{margin-bottom:0!important}.val-article__spacing-top--none{margin-top:0!important}.val-article__spacing-top--small{margin-top:.5rem!important}.val-article__spacing-top--medium{margin-top:1rem!important}.val-article__spacing-top--large{margin-top:1.5rem!important}.val-article__spacing-top--xlarge{margin-top:2.5rem!important}.val-article__spacing-bottom--none{margin-bottom:0!important}.val-article__spacing-bottom--small{margin-bottom:.5rem!important}.val-article__spacing-bottom--medium{margin-bottom:1rem!important}.val-article__spacing-bottom--large{margin-bottom:1.5rem!important}.val-article__spacing-bottom--xlarge{margin-bottom:2.5rem!important}.val-article__spacing-horizontal--none{margin-left:0!important;margin-right:0!important}.val-article__spacing-horizontal--small{margin-left:.5rem!important;margin-right:.5rem!important}.val-article__spacing-horizontal--medium{margin-left:1rem!important;margin-right:1rem!important}.val-article__spacing-horizontal--large{margin-left:1.5rem!important;margin-right:1.5rem!important}.val-article__spacing-horizontal--xlarge{margin-left:2.5rem!important;margin-right:2.5rem!important}.val-article__quote{border-left:4px solid #0969da;padding:1rem;background-color:var(--ion-color-light-shade, #f8f9fa);border-radius:0 8px 8px 0;font-style:italic}.val-article__quote-content{margin-bottom:.5rem;font-size:1.1em}.val-article__quote-author{font-size:.9em;color:var(--ion-color-medium, #6c757d);font-style:normal;font-weight:500;text-align:right}.val-article__quote-source{font-weight:400;opacity:.8}.val-article__highlight{padding:1rem;background-color:var(--ion-color-warning-tint, #fff3cd);border:1px solid var(--ion-color-warning, #ffc107);border-radius:4px}.val-article__highlight--rounded{border-radius:12px}.val-article__code{border-radius:8px;overflow:hidden;border:1px solid #e1e5e9}.val-article__code-language{background-color:var(--ion-color-medium-tint, #f8f9fa);padding:.5rem 1rem;font-size:.875em;font-weight:500;color:var(--ion-color-dark, #495057);border-bottom:1px solid #e1e5e9;text-transform:uppercase;letter-spacing:.5px}.val-article__code-content{background-color:#f6f8fa;color:#24292e;padding:1rem;margin:0;overflow-x:auto;font-family:SFMono-Regular,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:.875em;line-height:1.5}.val-article__code-content code{background:none;padding:0;font-size:inherit;color:inherit}.val-article__code-content--dark{background-color:#161b22;color:#f0f6fc}.val-article__list{padding-left:1.5rem}.val-article__list--ordered{list-style-type:decimal}.val-article__list-item{margin-bottom:.5rem;line-height:1.6;position:relative}.val-article__list-item:last-child{margin-bottom:0}.val-article__list-check{color:var(--ion-color-success, #28a745);font-weight:700;margin-right:.5rem;position:absolute;left:-1.5rem}.val-article .val-article__list:has(.val-article__list-check){list-style:none;padding-left:1rem}.val-article__button-container--left{text-align:left}.val-article__button-container--center{text-align:center}.val-article__button-container--right{text-align:right}.val-article__separator{text-align:center}.val-article__separator-line{border:none;height:1px;background-color:#d0d7de;margin:0}.val-article__separator-line--thin{height:1px}.val-article__separator-line--thick{height:3px}.val-article__separator-dots{color:#d0d7de;font-size:1.5em;letter-spacing:.5em;-webkit-user-select:none;user-select:none}.val-article__separator-space{height:0}.val-article__image{text-align:center}.val-article__image--left{text-align:left}.val-article__image--center{text-align:center}.val-article__image--right{text-align:right}.val-article__image-content{max-width:100%;height:auto;border-radius:4px;box-shadow:0 2px 8px #0000001a;transition:transform .2s ease}.val-article__image-content:hover{transform:scale(1.02)}.val-article__image-content--rounded{border-radius:12px}.val-article__image-caption{margin-top:.5rem;font-size:.875em;color:var(--ion-color-medium, #6c757d);font-style:italic;text-align:center}.val-article__video{text-align:center}.val-article__video-content{max-width:100%;height:auto;border-radius:8px;box-shadow:0 4px 12px #00000026}.val-article__video-title{margin-top:.5rem;font-size:.9em;color:var(--ion-color-medium, #6c757d);font-weight:500}.val-article__custom *{max-width:100%}@media (max-width: 768px){.val-article__code-content{font-size:.8em;padding:.5rem}.val-article__image-content:hover{transform:none}.val-article__quote,.val-article__highlight{padding:.5rem}}:host-context(body.dark) .val-article--auto,:host-context(.dark) .val-article--auto,:host-context(.ion-palette-dark) .val-article--auto,:host-context(html.ion-palette-dark) .val-article--auto,:host-context([data-theme=dark]) .val-article--auto{background-color:var(--ion-color-dark, #1f2937);color:var(--ion-color-light, #ffffff)}:host-context(body.dark) .val-article--auto .val-article__quote,:host-context(.dark) .val-article--auto .val-article__quote,:host-context(.ion-palette-dark) .val-article--auto .val-article__quote,:host-context(html.ion-palette-dark) .val-article--auto .val-article__quote,:host-context([data-theme=dark]) .val-article--auto .val-article__quote{background-color:#ffffff14;border-left-color:var(--ion-color-primary)}:host-context(body.dark) .val-article--auto .val-article__highlight,:host-context(.dark) .val-article--auto .val-article__highlight,:host-context(.ion-palette-dark) .val-article--auto .val-article__highlight,:host-context(html.ion-palette-dark) .val-article--auto .val-article__highlight,:host-context([data-theme=dark]) .val-article--auto .val-article__highlight{background-color:#ffc1071a;border-color:var(--ion-color-warning-shade, #e0a800)}:host-context(body.dark) .val-article--auto .val-article__code-content,:host-context(.dark) .val-article--auto .val-article__code-content,:host-context(.ion-palette-dark) .val-article--auto .val-article__code-content,:host-context(html.ion-palette-dark) .val-article--auto .val-article__code-content,:host-context([data-theme=dark]) .val-article--auto .val-article__code-content{background-color:#161b22;color:#f0f6fc}.val-article__element{animation:fadeInUp .3s ease-out}@keyframes fadeInUp{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@media (prefers-contrast: high){.val-article__separator-line{background-color:currentColor;opacity:.5}.val-article__quote{border-left-width:6px}}@media (prefers-reduced-motion: reduce){.val-article .val-article__element{animation:none}.val-article__image-content{transition:none}.val-article__image-content:hover{transform:none}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$5.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: DisplayComponent, selector: "val-display", inputs: ["props"] }, { kind: "component", type: TitleComponent, selector: "val-title", inputs: ["props"] }, { kind: "component", type: TextComponent, selector: "val-text", inputs: ["props"] }, { kind: "component", type: ButtonComponent, selector: "val-button", inputs: ["preset", "props"], outputs: ["onClick"] }, { kind: "component", type: ImageComponent, selector: "val-image", inputs: ["props"] }, { kind: "component", type: CodeDisplayComponent, selector: "val-code-display", inputs: ["props"] }, { kind: "component", type: NotesBoxComponent, selector: "val-notes-box", inputs: ["props"] }, { kind: "component", type: PlainCodeBoxComponent, selector: "val-plain-code-box", inputs: ["props"] }, { kind: "pipe", type: ProcessLinksPipe, name: "processLinks" }] }); }
32109
32109
  }
32110
32110
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ArticleComponent, decorators: [{
32111
32111
  type: Component,
@@ -32119,6 +32119,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
32119
32119
  CodeDisplayComponent,
32120
32120
  NotesBoxComponent,
32121
32121
  PlainCodeBoxComponent,
32122
+ ProcessLinksPipe,
32122
32123
  ], template: `
32123
32124
  <article
32124
32125
  class="val-article"
@@ -32203,7 +32204,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
32203
32204
  <span *ngIf="getListElement(element).props.listType === 'checklist'" class="val-article__list-check"
32204
32205
  >✓</span
32205
32206
  >
32206
- <span [innerHTML]="item.text"></span>
32207
+ <span [innerHTML]="item.text | processLinks"></span>
32207
32208
  </li>
32208
32209
  </ul>
32209
32210
  <ol
@@ -32211,7 +32212,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
32211
32212
  class="val-article__list val-article__list--ordered"
32212
32213
  >
32213
32214
  <li *ngFor="let item of getListElement(element).props.items" class="val-article__list-item">
32214
- <span [innerHTML]="item.text"></span>
32215
+ <span [innerHTML]="item.text | processLinks"></span>
32215
32216
  </li>
32216
32217
  </ol>
32217
32218
  </ng-container>
@@ -33521,6 +33522,53 @@ function permissionGuard(permissions) {
33521
33522
  return router.createUrlTree([config.unauthorizedRoute]);
33522
33523
  };
33523
33524
  }
33525
+ /**
33526
+ * Factory de guard RBAC parametrizable — defense-in-depth a nivel de RUTA.
33527
+ *
33528
+ * Variante ergonómica de {@link permissionGuard} con firma variádica
33529
+ * (`rbacGuard('a:read', 'b:manage')` en vez de `permissionGuard(['a:read', 'b:manage'])`),
33530
+ * pensada para gatear vistas administrativas montadas vía los `provideValtech*Routes`
33531
+ * de la lib. Pasa si el usuario tiene **AL MENOS UNO** de los permisos (OR), igual que
33532
+ * el resto del gating del factory (`*valHasPermission`, menú). El match de wildcards
33533
+ * (`*:*`, `resource:*`, `*:action`) lo resuelve `AuthService.hasPermission`.
33534
+ *
33535
+ * Es una capa ADICIONAL al gating fino dentro de los componentes (botones por
33536
+ * `*valHasPermission`) y al 403 del backend — no los reemplaza. Sin permiso redirige
33537
+ * a `unauthorizedRoute` (mismo destino que `permissionGuard`).
33538
+ *
33539
+ * @param permissions - Uno o más permisos requeridos (OR)
33540
+ * @returns Guard function
33541
+ *
33542
+ * @example
33543
+ * ```typescript
33544
+ * import { rbacGuard } from 'valtech-components';
33545
+ *
33546
+ * const routes: Routes = [
33547
+ * {
33548
+ * path: 'api-keys',
33549
+ * canActivate: [rbacGuard('api-keys:read')],
33550
+ * component: ApiKeysViewComponent,
33551
+ * },
33552
+ * {
33553
+ * path: 'permissions',
33554
+ * canActivate: [rbacGuard('roles:read', 'rbac:manage')],
33555
+ * component: PermissionsViewComponent,
33556
+ * },
33557
+ * ];
33558
+ * ```
33559
+ */
33560
+ function rbacGuard(...permissions) {
33561
+ return () => {
33562
+ const authService = inject(AuthService);
33563
+ const router = inject(Router);
33564
+ const config = inject(VALTECH_AUTH_CONFIG);
33565
+ if (permissions.length === 0 || authService.hasAnyPermission(permissions)) {
33566
+ return true;
33567
+ }
33568
+ console.warn(`[ValtechAuth] Acceso a ruta denegado. Requerido: ${permissions.join(' o ')}`);
33569
+ return router.createUrlTree([config.unauthorizedRoute]);
33570
+ };
33571
+ }
33524
33572
  /**
33525
33573
  * Guard que lee permisos desde route.data.
33526
33574
  * Permite configurar permisos directamente en la definición de rutas.
@@ -55917,6 +55965,7 @@ function provideValtechPermissionsRoutes(opts) {
55917
55965
  {
55918
55966
  path: opts?.path ?? 'permissions',
55919
55967
  component: PermissionsViewComponent,
55968
+ canActivate: [rbacGuard('roles:read', 'rbac:manage')],
55920
55969
  data: { permissionsConfig: opts?.config },
55921
55970
  },
55922
55971
  ];
@@ -56666,6 +56715,7 @@ function provideValtechApiKeysRoutes(opts) {
56666
56715
  {
56667
56716
  path: opts?.path ?? 'api-keys',
56668
56717
  component: ApiKeysViewComponent,
56718
+ canActivate: [rbacGuard('api-keys:read')],
56669
56719
  data: { apiKeysConfig: opts?.config },
56670
56720
  },
56671
56721
  ];
@@ -59295,11 +59345,11 @@ function parseMarkdownArticle(markdown, options) {
59295
59345
  const unord = cur.match(UNORDERED_RE);
59296
59346
  const ord = cur.match(ORDERED_RE);
59297
59347
  if (check)
59298
- items.push({ text: processInlineBold(check[2].trim()) });
59348
+ items.push({ text: processInline(check[2].trim()) });
59299
59349
  else if (ord && listType === 'ordered')
59300
- items.push({ text: processInlineBold(ord[1].trim()) });
59350
+ items.push({ text: processInline(ord[1].trim()) });
59301
59351
  else if (unord && listType !== 'ordered')
59302
- items.push({ text: processInlineBold(unord[1].trim()) });
59352
+ items.push({ text: processInline(unord[1].trim()) });
59303
59353
  else
59304
59354
  break;
59305
59355
  i++;
@@ -59312,7 +59362,7 @@ function parseMarkdownArticle(markdown, options) {
59312
59362
  paragraph.push(lines[i]);
59313
59363
  i++;
59314
59364
  }
59315
- const text = processInlineBold(paragraph.join(' ').trim());
59365
+ const text = processInline(paragraph.join(' ').trim());
59316
59366
  if (text) {
59317
59367
  elements.push({
59318
59368
  type: 'paragraph',
@@ -59351,8 +59401,15 @@ function startsNewBlock(line) {
59351
59401
  line.startsWith('>') ||
59352
59402
  BOX_DRAWING.test(line));
59353
59403
  }
59354
- function processInlineBold(text) {
59355
- return text.replace(/\*\*(.+?)\*\*/g, '<strong>$1</strong>');
59404
+ // Procesa marcado inline a HTML (renderizado vía innerHTML por val-text/val-article).
59405
+ // Los enlaces [texto](url) NO se tocan acá: los resuelve el ProcessLinksPipe en
59406
+ // runtime (gateado por processLinks). Orden: código primero (para no interpretar
59407
+ // su interior), luego negrita, luego itálica (los `**` ya consumidos no colisionan).
59408
+ function processInline(text) {
59409
+ return text
59410
+ .replace(/`([^`]+)`/g, '<code>$1</code>')
59411
+ .replace(/\*\*(.+?)\*\*/g, '<strong>$1</strong>')
59412
+ .replace(/\*([^*\n]+?)\*/g, '<em>$1</em>');
59356
59413
  }
59357
59414
  function makeHeading(level, content) {
59358
59415
  if (level === 1) {
@@ -59378,10 +59435,10 @@ function makeQuoteOrCallout(block, labels) {
59378
59435
  .slice(1)
59379
59436
  .filter(l => l.trim() !== '')
59380
59437
  .join('\n');
59381
- const text = processInlineBold([firstLineRest, rest].filter(Boolean).join('\n').trim());
59438
+ const text = processInline([firstLineRest, rest].filter(Boolean).join('\n').trim());
59382
59439
  return makeNote(type, text, labels);
59383
59440
  }
59384
- const text = processInlineBold(lines.join(' ').trim());
59441
+ const text = processInline(lines.join(' ').trim());
59385
59442
  return {
59386
59443
  type: 'quote',
59387
59444
  props: {
@@ -59432,7 +59489,7 @@ function makeTable(rows) {
59432
59489
  {
59433
59490
  type: 'paragraph',
59434
59491
  props: {
59435
- content: header.join(' · '),
59492
+ content: header.map(processInline).join(' · '),
59436
59493
  size: 'medium',
59437
59494
  color: 'dark',
59438
59495
  bold: false,
@@ -59445,7 +59502,9 @@ function makeTable(rows) {
59445
59502
  return dataRows.map(row => {
59446
59503
  const pairs = row.map((cell, idx) => {
59447
59504
  const key = header[idx] ?? '';
59448
- return key ? `<strong>${key}:</strong> ${cell}` : cell;
59505
+ return key
59506
+ ? `<strong>${processInline(key)}:</strong> ${processInline(cell)}`
59507
+ : processInline(cell);
59449
59508
  });
59450
59509
  return {
59451
59510
  type: 'paragraph',
@@ -70438,5 +70497,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
70438
70497
  * Generated bundle index. Do not edit.
70439
70498
  */
70440
70499
 
70441
- export { ACTION_CARD_DEFAULTS, AD_SIZE_MAP, API_TABLE_COLUMN_LABELS, APP_VERSION_PLATFORM_PLUGIN, APP_VERSION_REMOTE_PLUGIN, ARTICLE_CARD_DEFAULTS, ARTICLE_SPACING, ARTICLE_STRIP_DEFAULTS, AUTH_CTA_DEFAULTS, AVATAR_UPLOAD_DEFAULTS, AboutViewComponent, AccordionComponent, AccountViewComponent, ActionCardComponent, ActionHeaderComponent, ActionType, AdSlotComponent, AdsLoaderService, AdsService, AlertBoxComponent, AnalyticsErrorHandler, AnalyticsRouterTracker, AnalyticsService, AnimatedTerminalComponent, ApiKeyCreateModalComponent, ApiKeyService, ApiKeysModalComponent, ApiKeysViewComponent, AppConfigService, AppVersionService, ArticleBuilder, ArticleCardComponent, ArticleComponent, ArticleStripComponent, AttachmentUploaderComponent, AuthBackgroundComponent, AuthCtaComponent, AuthService, AuthStateService, AuthStorageService, AuthSyncService, AvatarComponent, AvatarUploadComponent, BOTTOM_NAV_DEFAULTS, BannerComponent, BlogPostBuilder, BottomNavComponent, BoxComponent, BreadcrumbComponent, ButtonComponent, ButtonGroupComponent, CALLOUT_LABELS, CHEV_KEYS, CIRCLE_KEYS, COMMON_COUNTRY_CODES, COMMON_CURRENCIES, CORNER_KEYS, CTA_CARD_DEFAULTS, CURRENCY_INFO, CardComponent, CardSection, CardType, CardsCarouselComponent, ChangeEmailModalComponent, ChangePasswordModalComponent, CheckInputComponent, CheckboxRadioInputComponent, ChipGroupComponent, CodeDisplayComponent, CommandDisplayComponent, CommentComponent, CommentInputComponent, CommentSectionComponent, CompanyFooterComponent, ComponentStates, ConfirmationDialogService, ContainerComponent, ContentLoaderComponent, ContentReactionComponent, ContentService, ContentTransformer, CookieBannerComponent, CountdownComponent, CreateOrgModalComponent, CtaCardComponent, CurrencyInputComponent, DEFAULT_ADS_CONFIG, DEFAULT_APP_CONFIG_SERVICE_CONFIG, DEFAULT_APP_VERSION_SERVICE_CONFIG, DEFAULT_AUTH_CONFIG, DEFAULT_BACK_HEADER, DEFAULT_BUTTON_PRESETS, DEFAULT_CANCEL_BUTTON, DEFAULT_CHECK_INTERVAL_MS, DEFAULT_CONFIRM_BUTTON, DEFAULT_COUNTDOWN_LABELS, DEFAULT_COUNTDOWN_LABELS_EN, DEFAULT_DEBUG_CONSOLE_CONFIG, DEFAULT_DONATION_CONFIG, DEFAULT_EMPTY_STATE, DEFAULT_EMULATOR_CONFIG, DEFAULT_FEEDBACK_CONFIG, DEFAULT_FEEDBACK_TYPE_OPTIONS, DEFAULT_HOME_HEADER, DEFAULT_INFINITE_LIST_METADATA, DEFAULT_LOGIN_LOGO, DEFAULT_MODAL_CANCEL_BUTTON, DEFAULT_MODAL_CONFIRM_BUTTON, DEFAULT_PAGE_SIZE_OPTIONS, DEFAULT_PLATFORMS, DEFAULT_PRESETS, DEFAULT_REFRESHER_METADATA, DEFAULT_SKELETON_CONFIG, DEFAULT_SPLASH_SCREEN_CONFIG, DataTableComponent, DateInputComponent, DatePickerComponent, DateRangeInputComponent, DebugConsoleComponent, DeleteAccountModalComponent, DetailSkeletonComponent, DeviceService, DisplayComponent, DividerComponent, DocsApiTableComponent, DocsBreadcrumbComponent, DocsBuilder, DocsCalloutComponent, DocsCodeExampleComponent, DocsLayoutComponent, DocsNavLinksComponent, DocsNavigationService, DocsPageComponent, DocsSearchComponent, DocsSectionComponent, DocsShellComponent, DocsSidebarComponent, DocsTocComponent, DonationService, DownloadService, EditOrgModalComponent, EmptyStateComponent, EntityCardComponent, ExpandableTextComponent, FEATURES_LIST_DEFAULTS, FUN_MODAL_DEFAULTS, FabComponent, FaqComponent, FeaturesListComponent, FeedbackFormComponent, FeedbackService, FieldListComponent, FileInputComponent, FirebaseService, FirestoreCollectionFactory, FirestoreService, FontSizeOption, FontSizeSelectorComponent, FontSizeService, FooterComponent, FooterLinksComponent, FormComponent, FormFieldComponent, FormSkeletonComponent, FunHeaderComponent, FunModalComponent, GlassComponent, GlowCardComponent, GlowComponent, GridSkeletonComponent, HANDOFF_ROUTE_PARAM, HANDOFF_TOKEN_PARAM, HandoffService, HapticsService, HasPermissionDirective, HeaderComponent, HintComponent, HorizontalScrollComponent, HrefComponent, I18nService, IMAGE_DEFAULTS, INITIAL_AUTH_STATE, INITIAL_MFA_STATE, INVITATION_CARD_DEFAULTS, IONIC_COLORS$5 as IONIC_COLORS, Icon, IconComponent, IconService, ImageComponent, ImageCropComponent, ImageService, InAppBrowserService, InfiniteListComponent, InfoComponent, InputI18nHelper, InputType, InvitationCardComponent, InviteMemberModalComponent, ItemListComponent, LANG_STORAGE_KEY$1 as LANG_STORAGE_KEY, LEGAL_CONTENT_CONFIG, LOGGED_IN_HINT_COOKIE, LOGIN_DEFAULTS, LandingSplitComponent, LandingStepsComponent, LanguageSelectorComponent, LanguageSelectorV2Component, LayeredCardComponent, LegalContentService, LegalLinkService, LinkComponent, LinkProcessorService, LinkedProvidersComponent, LinksAccordionComponent, LinksCakeComponent, ListSkeletonComponent, LoadingDirective, LocalStorageService, LocaleService, LoginAttemptModalComponent, LoginComponent, MEDIA_OBJECT_DEFAULTS, MEMBER_CARD_DEFAULTS, METRIC_CARD_DEFAULTS, MODAL_SIZES, MOTIF_KEYS, MOTION, MaintenancePageComponent, MarkdownArticleParserService, MediaObjectComponent, MemberCardComponent, MemberDetailModalComponent, MemberImportModalComponent, MenuComponent, MessagingService, MetaService, MetricCardComponent, MfaModalComponent, ModalService, ModalShellComponent, MultiSelectSearchComponent, NUM_KEYS, NavigationService, NetworkBannerComponent, NetworkStatusService, NewsBuilder, NoContentComponent, NotesBoxComponent, NotificationActionService, NotificationPreferencesViewComponent, NotificationsService, NotificationsViewComponent, NumberFromToComponent, NumberStepperComponent, OAUTH_PROVIDERS_INFO, OAuthCallbackComponent, OAuthService, OptionCardsComponent, OrgInfoSheetComponent, OrgService, OrgSwitchService, OrganizationViewComponent, PATTERN_MOTIFS, PATTERN_PALETTES, PATTERN_STYLE_CONFIGS, PLATFORM_CONFIGS, PageContentComponent, PageLinksComponent, PageRefreshService, PageTemplateComponent, PageWavesComponent, PageWrapperComponent, PaginationComponent, PaginationService, PasswordInputComponent, PatternComponent, PermissionCatalogService, PermissionSelectorComponent, PermissionsModalComponent, PermissionsViewComponent, PhoneInputComponent, PillComponent, PinInputComponent, PlainCodeBoxComponent, PopoverSelectorComponent, PreferencesService, PreferencesViewComponent, PresetService, PriceTagComponent, ProcessLinksPipe, ProfileSkeletonComponent, ProfileViewComponent, ProgressBarComponent, ProgressRingComponent, ProgressStatusComponent, PrompterComponent, QR_PRESETS, QrCodeComponent, QrGeneratorService, QrScannerComponent, QueryBuilder, QuoteBoxComponent, REQUEST_STATUSES, RadioInputComponent, RangeInputComponent, RatingComponent, RefresherComponent, RequestFirestoreService, RequestFormBuilderService, RequestFormComponent, RequestModalComponent, RequestService, RightsFooterComponent, RotatingTextComponent, SEARCH_HEADER_DEFAULTS, SETTINGS_SECTIONS_CATALOG, SHAPE_KEYS, SHARE_PROFILE_MODAL_DEFAULTS, SKELETON_LAYOUT_DEFAULT_ROWS, SKELETON_PRESETS, SOLID_KEYS, STATS_BAR_DEFAULTS, STROKE_KEYS, SearchHeaderComponent, SearchSelectorComponent, SearchbarComponent, SectionHeaderComponent, SecurityViewComponent, SegmentControlComponent, SelectSearchComponent, SessionListModalComponent, SessionService, SettingsHubComponent, ShareButtonsComponent, ShareProfileModalComponent, SimpleComponent, SkeletonComponent, SkeletonLayoutComponent, SkeletonService, SplashComponent, SplashScreenService, StatsBarComponent, StatsCardComponent, StepperComponent, StorageService, SwipeCarouselComponent, SwitchOrgModalComponent, TRI_KEYS, TabbedContentComponent, TableSkeletonComponent, TabsComponent, Terminal404Component, TestimonialCardComponent, TestimonialCarouselComponent, TextComponent, TextInputComponent, TextareaInputComponent, ThemeOption, ThemeService, TicketCardComponent, TicketCardImageService, TimelineComponent, TitleBlockComponent, TitleComponent, ToastService, ToggleInputComponent, TokenService, ToolbarActionType, ToolbarComponent, TransferOwnershipModalComponent, TranslatePipe, TypedCollection, UPDATE_BANNER_DEFAULT_CONTENT, UPDATE_BANNER_I18N_NAMESPACE, UpdateBannerComponent, UserAvatarComponent, UsernameInputComponent, VALTECH_ADS_CONFIG, VALTECH_APP_CONFIG, VALTECH_APP_VERSION, VALTECH_AUTH_CONFIG, VALTECH_COMPANY_LINKS, VALTECH_CONTENT_CONFIG, VALTECH_DEBUG_CONSOLE, VALTECH_DEFAULT_CONTENT, VALTECH_DONATION_CONFIG, VALTECH_FEEDBACK_CONFIG, VALTECH_FIREBASE_CONFIG, VALTECH_FOOTER_I18N, VALTECH_FOOTER_LOGO, VALTECH_LANGUAGE_SELECTOR, VALTECH_LEGAL_CONFIG, VALTECH_NETWORK_ERROR_KEY, VALTECH_SETTINGS_MENU_LINKS, VALTECH_SITE_PATHS, VALTECH_SOCIAL_LINKS, VALTECH_SPLASH_SCREEN, VALTECH_WEB_BASE_URLS, VALTECH_WHATSAPP_CONFIG, VERSION, ValtechErrorService, VerifyViewComponent, WhatsappFabComponent, WhatsappService, WizardComponent, WizardFooterComponent, applyDefaultValueToControl, authGuard, authInterceptor, authPasswordValidator, beautifyLegalArticle, blogPost, buildCompanyFooterProps, buildFooterLinks, buildLegalLinkResolver, buildPath, buildSettingsCards, button, canSubmitRequestType, collections, connectPageRefresh, createErrorStateProps, createFirebaseConfig, createGlowCardProps, createInitialPaginationState, createNumberFromToField, createPageState, createPermissionLabeler, createRefreshableStream, createTitleProps, docs, errorLoggingInterceptor, extractPathParams, generatePatternTiles, generateRandomTile, getAppInfo, getAppVersion, getCollectionPath, getDocumentId, getTimeOfDayKey, goToTop, groupPermissionsByScope, guestGuard, hasEmulators, iconButton, interpretError, isAtEnd, isCollectionPath, isDocumentPath, isEmulatorMode, isIonicColor, isValidPath, joinPath, maxLength, mulberry32, news, parseMarkdownArticle, permissionGuard, permissionGuardFromRoute, provideLegalContent, provideSplashScreen, provideValtechAboutRoutes, provideValtechAccountRoutes, provideValtechAds, provideValtechApiKeysRoutes, provideValtechAppConfig, provideValtechAppVersion, provideValtechAppVersionHttp, provideValtechAuth, provideValtechAuthInterceptor, provideValtechContent, provideValtechDebugConsole, provideValtechDonations, provideValtechErrorHandling, provideValtechFeedback, provideValtechFirebase, provideValtechI18n, provideValtechLegal, provideValtechNotificationPreferencesRoutes, provideValtechNotificationsRoutes, provideValtechOrganizationRoutes, provideValtechPermissionsRoutes, provideValtechPreferencesRoutes, provideValtechPresets, provideValtechProfileRoutes, provideValtechSecurityRoutes, provideValtechSettingsRoutes, provideValtechSite, provideValtechSkeleton, provideValtechWhatsapp, query, renderPatternSvgInner, replaceSpecialChars, requestSubmitMode, resolveColor, resolveInputDefaultValue, resolveIonicColor, resolveWebBaseUrl, roleGuard, selectableRequestTypes, storagePaths, superAdminGuard, toArticle };
70500
+ export { ACTION_CARD_DEFAULTS, AD_SIZE_MAP, API_TABLE_COLUMN_LABELS, APP_VERSION_PLATFORM_PLUGIN, APP_VERSION_REMOTE_PLUGIN, ARTICLE_CARD_DEFAULTS, ARTICLE_SPACING, ARTICLE_STRIP_DEFAULTS, AUTH_CTA_DEFAULTS, AVATAR_UPLOAD_DEFAULTS, AboutViewComponent, AccordionComponent, AccountViewComponent, ActionCardComponent, ActionHeaderComponent, ActionType, AdSlotComponent, AdsLoaderService, AdsService, AlertBoxComponent, AnalyticsErrorHandler, AnalyticsRouterTracker, AnalyticsService, AnimatedTerminalComponent, ApiKeyCreateModalComponent, ApiKeyService, ApiKeysModalComponent, ApiKeysViewComponent, AppConfigService, AppVersionService, ArticleBuilder, ArticleCardComponent, ArticleComponent, ArticleStripComponent, AttachmentUploaderComponent, AuthBackgroundComponent, AuthCtaComponent, AuthService, AuthStateService, AuthStorageService, AuthSyncService, AvatarComponent, AvatarUploadComponent, BOTTOM_NAV_DEFAULTS, BannerComponent, BlogPostBuilder, BottomNavComponent, BoxComponent, BreadcrumbComponent, ButtonComponent, ButtonGroupComponent, CALLOUT_LABELS, CHEV_KEYS, CIRCLE_KEYS, COMMON_COUNTRY_CODES, COMMON_CURRENCIES, CORNER_KEYS, CTA_CARD_DEFAULTS, CURRENCY_INFO, CardComponent, CardSection, CardType, CardsCarouselComponent, ChangeEmailModalComponent, ChangePasswordModalComponent, CheckInputComponent, CheckboxRadioInputComponent, ChipGroupComponent, CodeDisplayComponent, CommandDisplayComponent, CommentComponent, CommentInputComponent, CommentSectionComponent, CompanyFooterComponent, ComponentStates, ConfirmationDialogService, ContainerComponent, ContentLoaderComponent, ContentReactionComponent, ContentService, ContentTransformer, CookieBannerComponent, CountdownComponent, CreateOrgModalComponent, CtaCardComponent, CurrencyInputComponent, DEFAULT_ADS_CONFIG, DEFAULT_APP_CONFIG_SERVICE_CONFIG, DEFAULT_APP_VERSION_SERVICE_CONFIG, DEFAULT_AUTH_CONFIG, DEFAULT_BACK_HEADER, DEFAULT_BUTTON_PRESETS, DEFAULT_CANCEL_BUTTON, DEFAULT_CHECK_INTERVAL_MS, DEFAULT_CONFIRM_BUTTON, DEFAULT_COUNTDOWN_LABELS, DEFAULT_COUNTDOWN_LABELS_EN, DEFAULT_DEBUG_CONSOLE_CONFIG, DEFAULT_DONATION_CONFIG, DEFAULT_EMPTY_STATE, DEFAULT_EMULATOR_CONFIG, DEFAULT_FEEDBACK_CONFIG, DEFAULT_FEEDBACK_TYPE_OPTIONS, DEFAULT_HOME_HEADER, DEFAULT_INFINITE_LIST_METADATA, DEFAULT_LOGIN_LOGO, DEFAULT_MODAL_CANCEL_BUTTON, DEFAULT_MODAL_CONFIRM_BUTTON, DEFAULT_PAGE_SIZE_OPTIONS, DEFAULT_PLATFORMS, DEFAULT_PRESETS, DEFAULT_REFRESHER_METADATA, DEFAULT_SKELETON_CONFIG, DEFAULT_SPLASH_SCREEN_CONFIG, DataTableComponent, DateInputComponent, DatePickerComponent, DateRangeInputComponent, DebugConsoleComponent, DeleteAccountModalComponent, DetailSkeletonComponent, DeviceService, DisplayComponent, DividerComponent, DocsApiTableComponent, DocsBreadcrumbComponent, DocsBuilder, DocsCalloutComponent, DocsCodeExampleComponent, DocsLayoutComponent, DocsNavLinksComponent, DocsNavigationService, DocsPageComponent, DocsSearchComponent, DocsSectionComponent, DocsShellComponent, DocsSidebarComponent, DocsTocComponent, DonationService, DownloadService, EditOrgModalComponent, EmptyStateComponent, EntityCardComponent, ExpandableTextComponent, FEATURES_LIST_DEFAULTS, FUN_MODAL_DEFAULTS, FabComponent, FaqComponent, FeaturesListComponent, FeedbackFormComponent, FeedbackService, FieldListComponent, FileInputComponent, FirebaseService, FirestoreCollectionFactory, FirestoreService, FontSizeOption, FontSizeSelectorComponent, FontSizeService, FooterComponent, FooterLinksComponent, FormComponent, FormFieldComponent, FormSkeletonComponent, FunHeaderComponent, FunModalComponent, GlassComponent, GlowCardComponent, GlowComponent, GridSkeletonComponent, HANDOFF_ROUTE_PARAM, HANDOFF_TOKEN_PARAM, HandoffService, HapticsService, HasPermissionDirective, HeaderComponent, HintComponent, HorizontalScrollComponent, HrefComponent, I18nService, IMAGE_DEFAULTS, INITIAL_AUTH_STATE, INITIAL_MFA_STATE, INVITATION_CARD_DEFAULTS, IONIC_COLORS$5 as IONIC_COLORS, Icon, IconComponent, IconService, ImageComponent, ImageCropComponent, ImageService, InAppBrowserService, InfiniteListComponent, InfoComponent, InputI18nHelper, InputType, InvitationCardComponent, InviteMemberModalComponent, ItemListComponent, LANG_STORAGE_KEY$1 as LANG_STORAGE_KEY, LEGAL_CONTENT_CONFIG, LOGGED_IN_HINT_COOKIE, LOGIN_DEFAULTS, LandingSplitComponent, LandingStepsComponent, LanguageSelectorComponent, LanguageSelectorV2Component, LayeredCardComponent, LegalContentService, LegalLinkService, LinkComponent, LinkProcessorService, LinkedProvidersComponent, LinksAccordionComponent, LinksCakeComponent, ListSkeletonComponent, LoadingDirective, LocalStorageService, LocaleService, LoginAttemptModalComponent, LoginComponent, MEDIA_OBJECT_DEFAULTS, MEMBER_CARD_DEFAULTS, METRIC_CARD_DEFAULTS, MODAL_SIZES, MOTIF_KEYS, MOTION, MaintenancePageComponent, MarkdownArticleParserService, MediaObjectComponent, MemberCardComponent, MemberDetailModalComponent, MemberImportModalComponent, MenuComponent, MessagingService, MetaService, MetricCardComponent, MfaModalComponent, ModalService, ModalShellComponent, MultiSelectSearchComponent, NUM_KEYS, NavigationService, NetworkBannerComponent, NetworkStatusService, NewsBuilder, NoContentComponent, NotesBoxComponent, NotificationActionService, NotificationPreferencesViewComponent, NotificationsService, NotificationsViewComponent, NumberFromToComponent, NumberStepperComponent, OAUTH_PROVIDERS_INFO, OAuthCallbackComponent, OAuthService, OptionCardsComponent, OrgInfoSheetComponent, OrgService, OrgSwitchService, OrganizationViewComponent, PATTERN_MOTIFS, PATTERN_PALETTES, PATTERN_STYLE_CONFIGS, PLATFORM_CONFIGS, PageContentComponent, PageLinksComponent, PageRefreshService, PageTemplateComponent, PageWavesComponent, PageWrapperComponent, PaginationComponent, PaginationService, PasswordInputComponent, PatternComponent, PermissionCatalogService, PermissionSelectorComponent, PermissionsModalComponent, PermissionsViewComponent, PhoneInputComponent, PillComponent, PinInputComponent, PlainCodeBoxComponent, PopoverSelectorComponent, PreferencesService, PreferencesViewComponent, PresetService, PriceTagComponent, ProcessLinksPipe, ProfileSkeletonComponent, ProfileViewComponent, ProgressBarComponent, ProgressRingComponent, ProgressStatusComponent, PrompterComponent, QR_PRESETS, QrCodeComponent, QrGeneratorService, QrScannerComponent, QueryBuilder, QuoteBoxComponent, REQUEST_STATUSES, RadioInputComponent, RangeInputComponent, RatingComponent, RefresherComponent, RequestFirestoreService, RequestFormBuilderService, RequestFormComponent, RequestModalComponent, RequestService, RightsFooterComponent, RotatingTextComponent, SEARCH_HEADER_DEFAULTS, SETTINGS_SECTIONS_CATALOG, SHAPE_KEYS, SHARE_PROFILE_MODAL_DEFAULTS, SKELETON_LAYOUT_DEFAULT_ROWS, SKELETON_PRESETS, SOLID_KEYS, STATS_BAR_DEFAULTS, STROKE_KEYS, SearchHeaderComponent, SearchSelectorComponent, SearchbarComponent, SectionHeaderComponent, SecurityViewComponent, SegmentControlComponent, SelectSearchComponent, SessionListModalComponent, SessionService, SettingsHubComponent, ShareButtonsComponent, ShareProfileModalComponent, SimpleComponent, SkeletonComponent, SkeletonLayoutComponent, SkeletonService, SplashComponent, SplashScreenService, StatsBarComponent, StatsCardComponent, StepperComponent, StorageService, SwipeCarouselComponent, SwitchOrgModalComponent, TRI_KEYS, TabbedContentComponent, TableSkeletonComponent, TabsComponent, Terminal404Component, TestimonialCardComponent, TestimonialCarouselComponent, TextComponent, TextInputComponent, TextareaInputComponent, ThemeOption, ThemeService, TicketCardComponent, TicketCardImageService, TimelineComponent, TitleBlockComponent, TitleComponent, ToastService, ToggleInputComponent, TokenService, ToolbarActionType, ToolbarComponent, TransferOwnershipModalComponent, TranslatePipe, TypedCollection, UPDATE_BANNER_DEFAULT_CONTENT, UPDATE_BANNER_I18N_NAMESPACE, UpdateBannerComponent, UserAvatarComponent, UsernameInputComponent, VALTECH_ADS_CONFIG, VALTECH_APP_CONFIG, VALTECH_APP_VERSION, VALTECH_AUTH_CONFIG, VALTECH_COMPANY_LINKS, VALTECH_CONTENT_CONFIG, VALTECH_DEBUG_CONSOLE, VALTECH_DEFAULT_CONTENT, VALTECH_DONATION_CONFIG, VALTECH_FEEDBACK_CONFIG, VALTECH_FIREBASE_CONFIG, VALTECH_FOOTER_I18N, VALTECH_FOOTER_LOGO, VALTECH_LANGUAGE_SELECTOR, VALTECH_LEGAL_CONFIG, VALTECH_NETWORK_ERROR_KEY, VALTECH_SETTINGS_MENU_LINKS, VALTECH_SITE_PATHS, VALTECH_SOCIAL_LINKS, VALTECH_SPLASH_SCREEN, VALTECH_WEB_BASE_URLS, VALTECH_WHATSAPP_CONFIG, VERSION, ValtechErrorService, VerifyViewComponent, WhatsappFabComponent, WhatsappService, WizardComponent, WizardFooterComponent, applyDefaultValueToControl, authGuard, authInterceptor, authPasswordValidator, beautifyLegalArticle, blogPost, buildCompanyFooterProps, buildFooterLinks, buildLegalLinkResolver, buildPath, buildSettingsCards, button, canSubmitRequestType, collections, connectPageRefresh, createErrorStateProps, createFirebaseConfig, createGlowCardProps, createInitialPaginationState, createNumberFromToField, createPageState, createPermissionLabeler, createRefreshableStream, createTitleProps, docs, errorLoggingInterceptor, extractPathParams, generatePatternTiles, generateRandomTile, getAppInfo, getAppVersion, getCollectionPath, getDocumentId, getTimeOfDayKey, goToTop, groupPermissionsByScope, guestGuard, hasEmulators, iconButton, interpretError, isAtEnd, isCollectionPath, isDocumentPath, isEmulatorMode, isIonicColor, isValidPath, joinPath, maxLength, mulberry32, news, parseMarkdownArticle, permissionGuard, permissionGuardFromRoute, provideLegalContent, provideSplashScreen, provideValtechAboutRoutes, provideValtechAccountRoutes, provideValtechAds, provideValtechApiKeysRoutes, provideValtechAppConfig, provideValtechAppVersion, provideValtechAppVersionHttp, provideValtechAuth, provideValtechAuthInterceptor, provideValtechContent, provideValtechDebugConsole, provideValtechDonations, provideValtechErrorHandling, provideValtechFeedback, provideValtechFirebase, provideValtechI18n, provideValtechLegal, provideValtechNotificationPreferencesRoutes, provideValtechNotificationsRoutes, provideValtechOrganizationRoutes, provideValtechPermissionsRoutes, provideValtechPreferencesRoutes, provideValtechPresets, provideValtechProfileRoutes, provideValtechSecurityRoutes, provideValtechSettingsRoutes, provideValtechSite, provideValtechSkeleton, provideValtechWhatsapp, query, rbacGuard, renderPatternSvgInner, replaceSpecialChars, requestSubmitMode, resolveColor, resolveInputDefaultValue, resolveIonicColor, resolveWebBaseUrl, roleGuard, selectableRequestTypes, storagePaths, superAdminGuard, toArticle };
70442
70501
  //# sourceMappingURL=valtech-components.mjs.map