__vite_ssr_exportName__("default", () => { try { return __vite_ssr_export_default__ } catch {} });
const __vite_ssr_import_0__ = await __vite_ssr_import__("/src/pixel_patrol_base/viewer/quality_metrics.js", {"importedNames":["QUALITY_METRIC_BASES","describeQualityMetric","qualityMetricRank"]});


// Matches BasicStatsProcessor.OUTPUT_SCHEMA
const BASIC_METRIC_BASES = new Set([
  'mean_intensity', 'std_intensity', 'min_intensity', 'max_intensity',
]);

function matchesBases(col, bases) {
  for (const base of bases) {
    if (col === base || col.startsWith(base + '_')) return true;
  };
  return false;
}

/** Build a renderDistribution `sideInfo` object for a quality metric column, or null. */
function sideInfoFor(col) {
  const info = (0,__vite_ssr_import_0__.describeQualityMetric)(col);
  return info && {
    text: info.desc, hintUp: info.hintUp, hintDown: info.hintDown, goodDirection: info.goodDirection,
  };
}

const SIGNIFICANCE_HELP = [
  '**Statistical Comparisons**',
  '',
  'If selected (side menu), pairwise group comparisons use the Mann–Whitney U test (a non-parametric test that makes no assumptions about the data distribution) with Bonferroni correction for multiple comparisons.',
  '',
  'Significance levels: `ns` not significant (p ≥ 0.05), `*` p < 0.05, `**` p < 0.01, `***` p < 0.001.',
].join('\n');

// Mirrors plot-engine.js MAX_VIOLIN_POINTS - kept here only for the help text.
const MAX_VIOLIN_POINTS = 5000;

const DISTRIBUTION_HELP = `Plots with ${MAX_VIOLIN_POINTS.toLocaleString()} or fewer datapoints show the actual ` +
  'distribution shape (a violin); larger plots switch to a summary box plot (quartiles, min/max, mean).';

const GRANULARITY_HELP = 'Use the **Slice by** toggles to control whether each datapoint is a whole-image ' +
  'aggregate (**per image**) or one (image × dimension) combination (**per slice**) - shown by the badge in the ' +
  'card header. Pinning a dimension in the sidebar does the same, for that one slice. ' +
  'More toggles mean more datapoints, so check the sample size in the plot subtitle before trusting significance.';

const BASIC_INFO = [
  'Shows **per-image intensity statistics** across groups.',
  '', DISTRIBUTION_HELP,
  '', GRANULARITY_HELP,
  '', SIGNIFICANCE_HELP,
].join('\n');

const QUALITY_INFO = [
  'Visualizes **image quality metrics** across groups.',
  '', 'These metrics are **whole-image aggregates** — they detect global quality issues such as blur, ' +
  'noise, or exposure problems that affect the image broadly. They are not sensitive to localized ' +
  'defects or anomalies that cover only a small fraction of pixels.',
  '', DISTRIBUTION_HELP,
  '', GRANULARITY_HELP,
  '', SIGNIFICANCE_HELP,
].join('\n');

// Thresholds for fraction metrics where an absolute reading is meaningful - these
// are normalized 0-1 regardless of dtype or image content, so the numbers mean
// the same thing in every domain. Content-dependent metrics (laplacian_variance,
// spectral_slope, etc.) deliberately get no thresholds.
const FRACTION_WARNINGS = [
  {
    col: 'bright_clipping_fraction',
    threshold: 0.01,
    label: 'at the dtype ceiling',
    consequence: 'This may indicate sensor saturation or insufficient dynamic range.',
  },
  {
    col: 'dark_clipping_fraction',
    threshold: 0.05,
    // label/consequence used only as fallback when dtype column is absent.
    label: 'at minimum value',
    consequence: 'This may indicate background, missing values, or underexposure.',
  },
];

/** Return the minimum representable integer value for a dtype string like 'uint8', 'int16'. */
function dtypeMinValue(dtype) {
  if (dtype.startsWith('uint')) return 0;
  const bits = parseInt(dtype.replace(/^[a-z]+/, ''), 10);
  return Number.isFinite(bits) ? -(2 ** (bits - 1)) : null;
}

/** Check fraction metrics against absolute thresholds and prepend inline warnings. */
async function prependFractionWarnings(plotRoot, ctx) {
  const { q, andWhere } = ctx.sql;
  const cols = ctx.schema.allCols;

  // Clipping inflates laplacian_variance via artificial clip-boundary edges.
  if (cols.includes('laplacian_variance')) {
    const clipParts = [];
    if (cols.includes('bright_clipping_fraction')) clipParts.push(`"bright_clipping_fraction" > 0.01`);
    if (cols.includes('dark_clipping_fraction')) clipParts.push(`"dark_clipping_fraction" > 0.05`);
    if (clipParts.length) {
      const clipWhere = andWhere(ctx.where, `(${clipParts.join(' OR ')})`);
      const [clipRow] = await ctx.queryRows(`SELECT COUNT(*) AS n FROM pp_data ${clipWhere}`);
      const nClip = Number(clipRow?.n ?? 0);
      if (nClip > 0) {
        ctx.plot.prependWarning(plotRoot, {
          level: 'yellow',
          html: `<strong>${nClip.toLocaleString()} image${nClip === 1 ? '' : 's'}</strong> ` +
                `have clipped pixels. <strong>laplacian_variance</strong> is inflated by ` +
                `artificial edges at clip boundaries — interpret with caution for those images.`,
        });
      }
    }
  };

  // Fraction metrics (saturated, min-value)
  for (const { col, threshold, label, consequence } of FRACTION_WARNINGS) {
    if (!cols.includes(col)) continue;
    const pct = (threshold * 100).toLocaleString(undefined, { maximumSignificantDigits: 2 });
    const where = andWhere(ctx.where, `${q(col)} > ${threshold}`);
    // min_value_pixel_fraction: split unsigned (zero = background/void/underexposure) from
    // signed (min = lower-bound clipping, signal loss) -- they mean different things.
    if (col === 'dark_clipping_fraction' && cols.includes('dtype')) {
      const uWhere = andWhere(where, `"dtype" LIKE 'uint%'`);
      const sWhere = andWhere(where, `"dtype" NOT LIKE 'uint%' AND "dtype" LIKE '%int%'`);
      const [[uRow], [sRow]] = await Promise.all([
        ctx.queryRows(`SELECT COUNT(*) AS n FROM pp_data ${uWhere}`),
        ctx.queryRows(`SELECT COUNT(*) AS n FROM pp_data ${sWhere}`),
      ]);
      const nu = Number(uRow?.n ?? 0), ns = Number(sRow?.n ?? 0);
      if (nu > 0) {
        ctx.plot.prependWarning(plotRoot, {
          level: 'yellow',
          html: `<strong>${nu.toLocaleString()} image${nu === 1 ? '' : 's'}</strong> ` +
                `have more than ${pct}% of pixels at value 0. ${consequence}`,
        });
      };
      if (ns > 0) {
        const dtypeRows = await ctx.queryRows(`SELECT DISTINCT "dtype" FROM pp_data ${sWhere}`);
        const vals = [...new Set(dtypeRows.map(r => dtypeMinValue(r.dtype)).filter(v => v !== null))];
        const valStr = vals.length ? ` (${vals.length === 1 ? 'value' : 'values'} ${vals.sort((a, b) => a - b).join(', ')})` : '';
        ctx.plot.prependWarning(plotRoot, {
          level: 'yellow',
          html: `<strong>${ns.toLocaleString()} image${ns === 1 ? '' : 's'}</strong> ` +
                `have more than ${pct}% of pixels clipped at the lower bound${valStr}. Signal in those pixels may have been lost.`,
        });
      };
      continue;
    };

    // bright_clipping_fraction: integer only (float → NaN, never above threshold).
    if (col === 'bright_clipping_fraction') {
      const [row] = await ctx.queryRows(`SELECT COUNT(*) AS n FROM pp_data ${where}`);
      const n = Number(row?.n ?? 0);
      if (n > 0) {
        ctx.plot.prependWarning(plotRoot, {
          level: 'yellow',
          html: `<strong>${n.toLocaleString()} image${n === 1 ? '' : 's'}</strong> ` +
                `have more than ${pct}% of pixels at the dtype's maximum value — sensor saturation. ` +
                `Real signal there is lost.`,
        });
      };
      continue;
    };

    const [row] = await ctx.queryRows(`SELECT COUNT(*) AS n FROM pp_data ${where}`);
    const n = Number(row?.n ?? 0);
    if (n === 0) continue;
    ctx.plot.prependWarning(plotRoot, {
      level: 'yellow',
      html: `<strong>${n.toLocaleString()} image${n === 1 ? '' : 's'}</strong> ` +
            `have more than ${pct}% of pixels ${label}. ${consequence}`,
    });
  };

  // Sub-dtype packing: uint images where max_intensity is a power-of-2-minus-1 below the dtype ceiling.
  // E.g. uint16 peaking at 4095 → likely 12-bit data stored in a wider type.
  // bright_clipping_fraction compares against the dtype ceiling and stays 0 for these images.
  if (cols.includes('max_intensity') && cols.includes('dtype')) {
    const ceilExpr = `CASE "dtype" WHEN 'uint8' THEN 255 WHEN 'uint16' THEN 65535 ` +
                     `WHEN 'uint32' THEN 4294967295 ELSE NULL END`;
    const subWhere = andWhere(ctx.where,
      `"dtype" LIKE 'uint%' AND "max_intensity" IS NOT NULL AND "max_intensity" > 0 ` +
      `AND (CAST("max_intensity" AS BIGINT) & (CAST("max_intensity" AS BIGINT) + 1)) = 0 ` +
      `AND "max_intensity" < ${ceilExpr}`);
    const subRows = await ctx.queryRows(
      `SELECT COUNT(*) AS n, "max_intensity", "dtype" FROM pp_data ${subWhere} ` +
      `GROUP BY "max_intensity", "dtype" ORDER BY n DESC`);
    if (subRows.length > 0) {
      const total = subRows.reduce((s, r) => s + Number(r.n), 0);
      const details = subRows.map(r => {
        const bits = Math.round(Math.log2(Number(r.max_intensity) + 1));
        return `${r.dtype} peaking at ${Number(r.max_intensity).toLocaleString()} (${bits}-bit)`;
      }).join('; ');
      ctx.plot.prependWarning(plotRoot, {
        level: 'yellow',
        html: `<strong>${total.toLocaleString()} image${total === 1 ? '' : 's'}</strong> ` +
              `appear stored in a wider type than acquired — ${details}. ` +
              `The effective dynamic range is narrower than the dtype suggests. ` +
              `<strong>bright_clipping_fraction</strong> will not flag clipping at the sub-dtype ceiling.`,
      });
    }
  };

  // Signed-as-unsigned: signed int images with no negative values — signed range is unused.
  if (cols.includes('min_intensity') && cols.includes('dtype')) {
    const signedWhere = andWhere(ctx.where,
      `"dtype" LIKE '%int%' AND "dtype" NOT LIKE 'uint%' AND "min_intensity" IS NOT NULL AND "min_intensity" >= 0`);
    const [signedRow] = await ctx.queryRows(`SELECT COUNT(*) AS n FROM pp_data ${signedWhere}`);
    const nSigned = Number(signedRow?.n ?? 0);
    if (nSigned > 0) {
      ctx.plot.prependWarning(plotRoot, {
        level: 'blue',
        html: `<strong>${nSigned.toLocaleString()} image${nSigned === 1 ? '' : 's'}</strong> ` +
              `use a signed integer dtype but have no negative values — ` +
              `data may have been acquired as unsigned but stored as signed.`,
      });
    }
  }
}

/** Pinned dims as display labels: { c: 1 } -> ['C=1']. */
function pinnedDims(ctx) {
  return Object.entries(ctx.sql.pinnedDims())
    .sort(([a], [b]) => a.localeCompare(b))
    .map(([letter, idx]) => `${letter.toUpperCase()}=${idx}`);
}

// Rows one point is drawn from. The tile preview and the full card share it, so
// a pinned dimension moves both to the same slice.
function violinSource(ctx, splitDims) {
  const parts = ctx.sql.dimSubsetWhere({ fixed: ctx.sql.pinnedDims(), split: splitDims });
  return { table: 'pp_all', where: parts.length ? `WHERE ${parts.join(' AND ')}` : '' };
}

async function renderViolins(plotRoot, ctx, filterMetric, splitDims, fractionWarnings = false) {
  const { q, groupExpr: geFn, groupCol: gcFn } = ctx.sql;
  const { flexGrid: createFlexGrid, niceName, dataAvailabilityWarning, groupingLabel, engine } = ctx.plot;

  const metrics = resolveMetrics(ctx.schema, ctx.state.dimensions).filter(filterMetric);
  metrics.sort((a, b) => (0,__vite_ssr_import_0__.qualityMetricRank)(a) - (0,__vite_ssr_import_0__.qualityMetricRank)(b));
  if (!metrics.length) {
    plotRoot.innerHTML = '<div class="no-data">No numeric metric columns.</div>';
    return;
  };

  const metricSelects = metrics.map((m, i) => `COUNT(${q(m)}) AS c${i}`).join(', ');
  const [availRow] = await ctx.queryRows(
    `SELECT COUNT(*) AS total, ${metricSelects} FROM pp_data ${ctx.where}`
  );
  const tot = Number(availRow.total);
  const counts = metrics.map((m, i) => ({ label: niceName(m), present: Number(availRow[`c${i}`]), reason: (0,__vite_ssr_import_0__.describeQualityMetric)(m)?.nullReason }));
  const pinned = pinnedDims(ctx);
  dataAvailabilityWarning(plotRoot, counts, tot,
    { unit: (splitDims.size || pinned.length) ? 'slices' : 'images' });
  if (fractionWarnings) await prependFractionWarnings(plotRoot, ctx);

  const { table: sourceTable, where: combinedWhere } = violinSource(ctx, splitDims);
  const gc = gcFn();

  // Per-group summary stats (quartiles, min/max, mean) computed entirely in SQL,
  // so the box-plot fallback scales to any number of underlying rows. Batched
  // across every metric in one query, then sliced per metric below. GROUP BY
  // ROLLUP(gc) adds one extra grand-total row (GROUPING(gc) = 1) alongside the
  // per-group rows, so the overall approx_count_distinct below comes from the
  // same pass instead of a second full-table scan.
  const statCols = metrics.map(m => `
    COUNT(${q(m)}) AS "${m}__n",
    MIN(${q(m)}) AS "${m}__min",
    MAX(${q(m)}) AS "${m}__max",
    AVG(${q(m)}) AS "${m}__mean",
    STDDEV(${q(m)}) AS "${m}__sd",
    approx_quantile(${q(m)}, 0.25) AS "${m}__q1",
    approx_quantile(${q(m)}, 0.5) AS "${m}__median",
    approx_quantile(${q(m)}, 0.75) AS "${m}__q3"`).join(',\n');

  // Distinct-value count per metric, over the whole filtered table (not per
  // group) - only used for a small-N threshold, so approximate is fine.
  const ndCols = metrics.map(m => `approx_count_distinct(${q(m)}) AS "${m}__nd"`).join(',\n');

  const rows = await ctx.queryRows(`
    SELECT ${geFn()}, GROUPING(${gc}) AS __is_total__, ${statCols},
      ${ndCols}
    FROM ${sourceTable} ${combinedWhere}
    GROUP BY ROLLUP(${gc})
  `);
  const totalRow = rows.find(r => Number(r.__is_total__) === 1) ?? {};
  const statRows = rows.filter(r => Number(r.__is_total__) !== 1);

  if (!statRows.length) {
    plotRoot.innerHTML += '<div class="no-data">No rows match the current filter.</div>';
    return;
  };

  const statsByGroup = new Map(statRows.map(r => [String(r.__group__), r]));
  const groups = ctx.groups.filter(g => statsByGroup.has(g));

  const toPlot = [], noVariance = [];
  for (const metric of metrics) {
    let total = 0, gmin = Infinity, gmax = -Infinity;
    for (const g of groups) {
      const r = statsByGroup.get(g);
      const n = Number(r[`${metric}__n`]);
      total += n;
      if (n > 0) {
        gmin = Math.min(gmin, Number(r[`${metric}__min`]));
        gmax = Math.max(gmax, Number(r[`${metric}__max`]));
      }
    };
    if (total === 0) continue;
    if (gmin === gmax) noVariance.push({ metric, value: gmin });
    else toPlot.push({ metric, total });
  };

  const numGroups   = groups.length;
  let plotsPerRow = numGroups <= 2 ? 3 : numGroups === 3 ? 2 : 1;
  const showSignificance = !!ctx.state.showSignificance;

  // Side-info text (description + optional direction badge) sits beside the
  // chart when there's room, but wraps above it when the cell is too narrow
  // (see appendSideInfoRow) - stacked across several narrow columns that looks
  // cramped and uneven. Cap at 2 per row whenever it'll actually render, so
  // each cell has enough width for text and chart side by side instead.
  const anySideInfo = ctx.state.showInfo && toPlot.some(({ metric }) => sideInfoFor(metric));
  if (anySideInfo) plotsPerRow = Math.min(plotsPerRow, 2);

  if (toPlot.length) {
    const { wrap, flexBasisPct } = createFlexGrid(plotRoot, plotsPerRow);

    const perPoint = splitDims.size
      ? `one point per (image × ${[...splitDims].map(l => l.toUpperCase()).join(' × ')})`
      : 'one point per image';
    const granularityDesc = pinned.length ? `${perPoint} at ${pinned.join(', ')}` : perPoint;

    for (const { metric, total } of toPlot) {
      const label = niceName(metric);
      const title = `Distribution of ${label}<br><sup>${granularityDesc}; n=${total.toLocaleString()}</sup>`;

      // Pre-sliced per-group stats for this metric, so renderDistribution can
      // draw the box-summary fallback without re-querying. catSql = the group
      // expression, so each group is its own colored violin (series.isCategory).
      const stats = groups.map(g => {
        const r = statsByGroup.get(g);
        return {
          __group__: g, __cat__: g,
          n: r[`${metric}__n`], mn: r[`${metric}__min`], mx: r[`${metric}__max`],
          mean: r[`${metric}__mean`], sd: r[`${metric}__sd`],
          q1: r[`${metric}__q1`], med: r[`${metric}__median`], q3: r[`${metric}__q3`],
        };
      });

      const cell = document.createElement('div');
      cell.style.cssText = `flex:0 0 ${flexBasisPct}%;min-width:300px;margin-bottom:20px;box-sizing:border-box`;
      wrap.appendChild(cell);

      const isClipping = metric === 'bright_clipping_fraction' || metric === 'dark_clipping_fraction';
      await engine.renderDistribution(cell, ctx, {
        numCol: metric,
        source: { table: sourceTable, where: combinedWhere },
        catSql: gcFn(),
        catLabel: groupingLabel(''),
        yLabel: label,
        title,
        showSignificance,
        maxRawPoints: engine.CONSTANTS.MAX_VIOLIN_POINTS,
        series: { isCategory: true },
        categoriesOrder: groups,
        catLabelFn: ctx.groupLabel,
        stats,
        distinctCount: Number(totalRow[`${metric}__nd`]),
        sideInfo: sideInfoFor(metric),
        ...(isClipping ? { layout: { yaxis: { tickformat: '.2%', title: label } } } : {}),
      });
    }
  };

  if (noVariance.length) {
    ctx.plot.invariantTable(plotRoot, {
      title: 'Metrics with No Variance across all images that report it',
      headers: ['Metric', 'Value'],
      rows: noVariance.map(({ metric, value }) => [niceName(metric), Number(value).toFixed(4)]),
      hr: true,
    });
  }
}

// One simplified box plot per group, computed entirely in SQL (so it scales) -
// the overview-mode tile preview for a violin widget. maxRawPoints:0 forces the
// box-summary path regardless of size.
async function violinOverviewPlot(ctx, container, metric) {
  if (!metric) return false;
  return ctx.plot.engine.renderDistribution(container, ctx, {
    numCol: metric,
    source: violinSource(ctx, new Set()),
    catSql: ctx.sql.groupCol(),
    yLabel: ctx.plot.niceName(metric),
    series: { isCategory: true },
    categoriesOrder: ctx.groups,
    catLabelFn: ctx.groupLabel,
    mini: true,
    maxRawPoints: 0,
  });
}

function makeViolinPlugin(id, label, info, filterMetric, overviewMessage, metricPref = [], shortLabel, inputMetrics, { fractionWarnings = false } = {}) {
  const pickMetric = (ctx) =>
    metricPref.find(m => ctx.schema.allCols.includes(m)) ??
    ctx.schema.metricCols
      .filter(m => filterMetric(m) && ctx.schema.allCols.includes(m))
      .sort((a, b) => (0,__vite_ssr_import_0__.qualityMetricRank)(a) - (0,__vite_ssr_import_0__.qualityMetricRank)(b))[0] ??
    null;
  return {
    id, label, info, shortLabel, group: 'Dataset Stats', scope: 'image', multiPlot: true,
    inputs: inputMetrics ? [...inputMetrics] : [],
    requires(schema) {
      return schema.metricCols.some(filterMetric);
    },
    ...(overviewMessage ? { overviewMessage } : {}),
    async overviewPlot(container, ctx) {
      return violinOverviewPlot(ctx, container, pickMetric(ctx));
    },
    async render(container, ctx) {
      const dimCols = ctx.schema?.dimCols ?? [];
      const activeDims = ctx.state.dimensions ?? {};
      const splittable = dimCols.map(c => c.slice(4)).filter(letter => !(letter in activeDims));

      const splitDims = new Set();
      const plotRoot = document.createElement('div');

      // The card header already carries a "🖼️ per image" badge (from `scope: 'image'`
      // above) - keep it in sync with the toggles instead of adding a second badge.
      const syncBadge = () => ctx.plot.syncPinnedScopeBadge(container, ctx, splitDims.size > 0);
      syncBadge();

      const draw = async () => {
        plotRoot.innerHTML = '';
        try {
          await renderViolins(plotRoot, ctx, filterMetric, splitDims, fractionWarnings);
        } catch {
          plotRoot.innerHTML = '<div class="no-data">Failed to load data.</div>';
        }
      };

      if (splittable.length) {
        container.appendChild(ctx.plot.sliceToggles(splittable, splitDims, () => { syncBadge(); draw(); }));
      };

      container.appendChild(plotRoot);
      await draw();
    },
  };
}

async function basicOverviewSummary(ctx) {
  try {
    if (!ctx.schema.allCols.includes('mean_intensity')) return null;
    // The one thing worth flagging up front is mixed pixel types, which make raw
    // intensities non-comparable across images. Otherwise stay neutral and just
    // tease what the widget lets you inspect.
    if (ctx.schema.allCols.includes('dtype')) {
      const [row] = await ctx.queryRows(`SELECT COUNT(DISTINCT "dtype") AS n_dtypes FROM pp_data ${ctx.where}`);
      if (Number(row?.n_dtypes ?? 1) > 1) {
        return { text: `Mixed pixel types — brightness not comparable.`, warning: true };
      }
    };
    return `Compare per-image intensity statistics across groups.`;
  } catch { return null; }
}

// Stay neutral: the old per-metric "varies a lot / looks consistent" verdicts were
// opaque (which metric, measured how?). Just tease what the widget lets you compare.
async function qualityOverviewSummary() {
  return `Spot quality differences and outliers across groups.`;
}

const __vite_ssr_export_default__ = [
  makeViolinPlugin('violin-basic',   'Pixel Value Statistics', BASIC_INFO,   m => matchesBases(m, BASIC_METRIC_BASES), basicOverviewSummary,
    ['mean_intensity'], 'Intensity', BASIC_METRIC_BASES),
  makeViolinPlugin('violin-quality', 'Image Quality Metrics',  QUALITY_INFO, m => matchesBases(m, (0,__vite_ssr_import_0__.QUALITY_METRIC_BASES)), qualityOverviewSummary,
    ['laplacian_variance'], 'Image Quality', (0,__vite_ssr_import_0__.QUALITY_METRIC_BASES),
    { fractionWarnings: true }),
];

function resolveMetrics(schema, dimensions) {
  // Metrics are base columns; dim filtering is row-based via dim_* + obs_level.
  return schema.metricCols;
}
//# sourceMappingSource=vite-generated
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBsdWdpbl92aW9saW4uanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUVVBTElUWV9NRVRSSUNfQkFTRVMsIGRlc2NyaWJlUXVhbGl0eU1ldHJpYywgcXVhbGl0eU1ldHJpY1JhbmsgfSBmcm9tICcuL3F1YWxpdHlfbWV0cmljcy5qcyc7XG5cbi8vIE1hdGNoZXMgQmFzaWNTdGF0c1Byb2Nlc3Nvci5PVVRQVVRfU0NIRU1BXG5jb25zdCBCQVNJQ19NRVRSSUNfQkFTRVMgPSBuZXcgU2V0KFtcbiAgJ21lYW5faW50ZW5zaXR5JywgJ3N0ZF9pbnRlbnNpdHknLCAnbWluX2ludGVuc2l0eScsICdtYXhfaW50ZW5zaXR5Jyxcbl0pO1xuXG5mdW5jdGlvbiBtYXRjaGVzQmFzZXMoY29sLCBiYXNlcykge1xuICBmb3IgKGNvbnN0IGJhc2Ugb2YgYmFzZXMpIHtcbiAgICBpZiAoY29sID09PSBiYXNlIHx8IGNvbC5zdGFydHNXaXRoKGJhc2UgKyAnXycpKSByZXR1cm4gdHJ1ZTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5cbi8qKiBCdWlsZCBhIHJlbmRlckRpc3RyaWJ1dGlvbiBgc2lkZUluZm9gIG9iamVjdCBmb3IgYSBxdWFsaXR5IG1ldHJpYyBjb2x1bW4sIG9yIG51bGwuICovXG5mdW5jdGlvbiBzaWRlSW5mb0Zvcihjb2wpIHtcbiAgY29uc3QgaW5mbyA9IGRlc2NyaWJlUXVhbGl0eU1ldHJpYyhjb2wpO1xuICByZXR1cm4gaW5mbyAmJiB7XG4gICAgdGV4dDogaW5mby5kZXNjLCBoaW50VXA6IGluZm8uaGludFVwLCBoaW50RG93bjogaW5mby5oaW50RG93biwgZ29vZERpcmVjdGlvbjogaW5mby5nb29kRGlyZWN0aW9uLFxuICB9O1xufVxuXG5jb25zdCBTSUdOSUZJQ0FOQ0VfSEVMUCA9IFtcbiAgJyoqU3RhdGlzdGljYWwgQ29tcGFyaXNvbnMqKicsXG4gICcnLFxuICAnSWYgc2VsZWN0ZWQgKHNpZGUgbWVudSksIHBhaXJ3aXNlIGdyb3VwIGNvbXBhcmlzb25zIHVzZSB0aGUgTWFubuKAk1doaXRuZXkgVSB0ZXN0IChhIG5vbi1wYXJhbWV0cmljIHRlc3QgdGhhdCBtYWtlcyBubyBhc3N1bXB0aW9ucyBhYm91dCB0aGUgZGF0YSBkaXN0cmlidXRpb24pIHdpdGggQm9uZmVycm9uaSBjb3JyZWN0aW9uIGZvciBtdWx0aXBsZSBjb21wYXJpc29ucy4nLFxuICAnJyxcbiAgJ1NpZ25pZmljYW5jZSBsZXZlbHM6IGBuc2Agbm90IHNpZ25pZmljYW50IChwIOKJpSAwLjA1KSwgYCpgIHAgPCAwLjA1LCBgKipgIHAgPCAwLjAxLCBgKioqYCBwIDwgMC4wMDEuJyxcbl0uam9pbignXFxuJyk7XG5cbi8vIE1pcnJvcnMgcGxvdC1lbmdpbmUuanMgTUFYX1ZJT0xJTl9QT0lOVFMgLSBrZXB0IGhlcmUgb25seSBmb3IgdGhlIGhlbHAgdGV4dC5cbmNvbnN0IE1BWF9WSU9MSU5fUE9JTlRTID0gNTAwMDtcblxuY29uc3QgRElTVFJJQlVUSU9OX0hFTFAgPSBgUGxvdHMgd2l0aCAke01BWF9WSU9MSU5fUE9JTlRTLnRvTG9jYWxlU3RyaW5nKCl9IG9yIGZld2VyIGRhdGFwb2ludHMgc2hvdyB0aGUgYWN0dWFsIGAgK1xuICAnZGlzdHJpYnV0aW9uIHNoYXBlIChhIHZpb2xpbik7IGxhcmdlciBwbG90cyBzd2l0Y2ggdG8gYSBzdW1tYXJ5IGJveCBwbG90IChxdWFydGlsZXMsIG1pbi9tYXgsIG1lYW4pLic7XG5cbmNvbnN0IEdSQU5VTEFSSVRZX0hFTFAgPSAnVXNlIHRoZSAqKlNsaWNlIGJ5KiogdG9nZ2xlcyB0byBjb250cm9sIHdoZXRoZXIgZWFjaCBkYXRhcG9pbnQgaXMgYSB3aG9sZS1pbWFnZSAnICtcbiAgJ2FnZ3JlZ2F0ZSAoKipwZXIgaW1hZ2UqKikgb3Igb25lIChpbWFnZSDDlyBkaW1lbnNpb24pIGNvbWJpbmF0aW9uICgqKnBlciBzbGljZSoqKSAtIHNob3duIGJ5IHRoZSBiYWRnZSBpbiB0aGUgJyArXG4gICdjYXJkIGhlYWRlci4gUGlubmluZyBhIGRpbWVuc2lvbiBpbiB0aGUgc2lkZWJhciBkb2VzIHRoZSBzYW1lLCBmb3IgdGhhdCBvbmUgc2xpY2UuICcgK1xuICAnTW9yZSB0b2dnbGVzIG1lYW4gbW9yZSBkYXRhcG9pbnRzLCBzbyBjaGVjayB0aGUgc2FtcGxlIHNpemUgaW4gdGhlIHBsb3Qgc3VidGl0bGUgYmVmb3JlIHRydXN0aW5nIHNpZ25pZmljYW5jZS4nO1xuXG5jb25zdCBCQVNJQ19JTkZPID0gW1xuICAnU2hvd3MgKipwZXItaW1hZ2UgaW50ZW5zaXR5IHN0YXRpc3RpY3MqKiBhY3Jvc3MgZ3JvdXBzLicsXG4gICcnLCBESVNUUklCVVRJT05fSEVMUCxcbiAgJycsIEdSQU5VTEFSSVRZX0hFTFAsXG4gICcnLCBTSUdOSUZJQ0FOQ0VfSEVMUCxcbl0uam9pbignXFxuJyk7XG5cbmNvbnN0IFFVQUxJVFlfSU5GTyA9IFtcbiAgJ1Zpc3VhbGl6ZXMgKippbWFnZSBxdWFsaXR5IG1ldHJpY3MqKiBhY3Jvc3MgZ3JvdXBzLicsXG4gICcnLCAnVGhlc2UgbWV0cmljcyBhcmUgKip3aG9sZS1pbWFnZSBhZ2dyZWdhdGVzKiog4oCUIHRoZXkgZGV0ZWN0IGdsb2JhbCBxdWFsaXR5IGlzc3VlcyBzdWNoIGFzIGJsdXIsICcgK1xuICAnbm9pc2UsIG9yIGV4cG9zdXJlIHByb2JsZW1zIHRoYXQgYWZmZWN0IHRoZSBpbWFnZSBicm9hZGx5LiBUaGV5IGFyZSBub3Qgc2Vuc2l0aXZlIHRvIGxvY2FsaXplZCAnICtcbiAgJ2RlZmVjdHMgb3IgYW5vbWFsaWVzIHRoYXQgY292ZXIgb25seSBhIHNtYWxsIGZyYWN0aW9uIG9mIHBpeGVscy4nLFxuICAnJywgRElTVFJJQlVUSU9OX0hFTFAsXG4gICcnLCBHUkFOVUxBUklUWV9IRUxQLFxuICAnJywgU0lHTklGSUNBTkNFX0hFTFAsXG5dLmpvaW4oJ1xcbicpO1xuXG4vLyBUaHJlc2hvbGRzIGZvciBmcmFjdGlvbiBtZXRyaWNzIHdoZXJlIGFuIGFic29sdXRlIHJlYWRpbmcgaXMgbWVhbmluZ2Z1bCAtIHRoZXNlXG4vLyBhcmUgbm9ybWFsaXplZCAwLTEgcmVnYXJkbGVzcyBvZiBkdHlwZSBvciBpbWFnZSBjb250ZW50LCBzbyB0aGUgbnVtYmVycyBtZWFuXG4vLyB0aGUgc2FtZSB0aGluZyBpbiBldmVyeSBkb21haW4uIENvbnRlbnQtZGVwZW5kZW50IG1ldHJpY3MgKGxhcGxhY2lhbl92YXJpYW5jZSxcbi8vIHNwZWN0cmFsX3Nsb3BlLCBldGMuKSBkZWxpYmVyYXRlbHkgZ2V0IG5vIHRocmVzaG9sZHMuXG5jb25zdCBGUkFDVElPTl9XQVJOSU5HUyA9IFtcbiAge1xuICAgIGNvbDogJ2JyaWdodF9jbGlwcGluZ19mcmFjdGlvbicsXG4gICAgdGhyZXNob2xkOiAwLjAxLFxuICAgIGxhYmVsOiAnYXQgdGhlIGR0eXBlIGNlaWxpbmcnLFxuICAgIGNvbnNlcXVlbmNlOiAnVGhpcyBtYXkgaW5kaWNhdGUgc2Vuc29yIHNhdHVyYXRpb24gb3IgaW5zdWZmaWNpZW50IGR5bmFtaWMgcmFuZ2UuJyxcbiAgfSxcbiAge1xuICAgIGNvbDogJ2RhcmtfY2xpcHBpbmdfZnJhY3Rpb24nLFxuICAgIHRocmVzaG9sZDogMC4wNSxcbiAgICAvLyBsYWJlbC9jb25zZXF1ZW5jZSB1c2VkIG9ubHkgYXMgZmFsbGJhY2sgd2hlbiBkdHlwZSBjb2x1bW4gaXMgYWJzZW50LlxuICAgIGxhYmVsOiAnYXQgbWluaW11bSB2YWx1ZScsXG4gICAgY29uc2VxdWVuY2U6ICdUaGlzIG1heSBpbmRpY2F0ZSBiYWNrZ3JvdW5kLCBtaXNzaW5nIHZhbHVlcywgb3IgdW5kZXJleHBvc3VyZS4nLFxuICB9LFxuXTtcblxuLyoqIFJldHVybiB0aGUgbWluaW11bSByZXByZXNlbnRhYmxlIGludGVnZXIgdmFsdWUgZm9yIGEgZHR5cGUgc3RyaW5nIGxpa2UgJ3VpbnQ4JywgJ2ludDE2Jy4gKi9cbmZ1bmN0aW9uIGR0eXBlTWluVmFsdWUoZHR5cGUpIHtcbiAgaWYgKGR0eXBlLnN0YXJ0c1dpdGgoJ3VpbnQnKSkgcmV0dXJuIDA7XG4gIGNvbnN0IGJpdHMgPSBwYXJzZUludChkdHlwZS5yZXBsYWNlKC9eW2Etel0rLywgJycpLCAxMCk7XG4gIHJldHVybiBOdW1iZXIuaXNGaW5pdGUoYml0cykgPyAtKDIgKiogKGJpdHMgLSAxKSkgOiBudWxsO1xufVxuXG4vKiogQ2hlY2sgZnJhY3Rpb24gbWV0cmljcyBhZ2FpbnN0IGFic29sdXRlIHRocmVzaG9sZHMgYW5kIHByZXBlbmQgaW5saW5lIHdhcm5pbmdzLiAqL1xuYXN5bmMgZnVuY3Rpb24gcHJlcGVuZEZyYWN0aW9uV2FybmluZ3MocGxvdFJvb3QsIGN0eCkge1xuICBjb25zdCB7IHEsIGFuZFdoZXJlIH0gPSBjdHguc3FsO1xuICBjb25zdCBjb2xzID0gY3R4LnNjaGVtYS5hbGxDb2xzO1xuXG4gIC8vIENsaXBwaW5nIGluZmxhdGVzIGxhcGxhY2lhbl92YXJpYW5jZSB2aWEgYXJ0aWZpY2lhbCBjbGlwLWJvdW5kYXJ5IGVkZ2VzLlxuICBpZiAoY29scy5pbmNsdWRlcygnbGFwbGFjaWFuX3ZhcmlhbmNlJykpIHtcbiAgICBjb25zdCBjbGlwUGFydHMgPSBbXTtcbiAgICBpZiAoY29scy5pbmNsdWRlcygnYnJpZ2h0X2NsaXBwaW5nX2ZyYWN0aW9uJykpIGNsaXBQYXJ0cy5wdXNoKGBcImJyaWdodF9jbGlwcGluZ19mcmFjdGlvblwiID4gMC4wMWApO1xuICAgIGlmIChjb2xzLmluY2x1ZGVzKCdkYXJrX2NsaXBwaW5nX2ZyYWN0aW9uJykpIGNsaXBQYXJ0cy5wdXNoKGBcImRhcmtfY2xpcHBpbmdfZnJhY3Rpb25cIiA+IDAuMDVgKTtcbiAgICBpZiAoY2xpcFBhcnRzLmxlbmd0aCkge1xuICAgICAgY29uc3QgY2xpcFdoZXJlID0gYW5kV2hlcmUoY3R4LndoZXJlLCBgKCR7Y2xpcFBhcnRzLmpvaW4oJyBPUiAnKX0pYCk7XG4gICAgICBjb25zdCBbY2xpcFJvd10gPSBhd2FpdCBjdHgucXVlcnlSb3dzKGBTRUxFQ1QgQ09VTlQoKikgQVMgbiBGUk9NIHBwX2RhdGEgJHtjbGlwV2hlcmV9YCk7XG4gICAgICBjb25zdCBuQ2xpcCA9IE51bWJlcihjbGlwUm93Py5uID8/IDApO1xuICAgICAgaWYgKG5DbGlwID4gMCkge1xuICAgICAgICBjdHgucGxvdC5wcmVwZW5kV2FybmluZyhwbG90Um9vdCwge1xuICAgICAgICAgIGxldmVsOiAneWVsbG93JyxcbiAgICAgICAgICBodG1sOiBgPHN0cm9uZz4ke25DbGlwLnRvTG9jYWxlU3RyaW5nKCl9IGltYWdlJHtuQ2xpcCA9PT0gMSA/ICcnIDogJ3MnfTwvc3Ryb25nPiBgICtcbiAgICAgICAgICAgICAgICBgaGF2ZSBjbGlwcGVkIHBpeGVscy4gPHN0cm9uZz5sYXBsYWNpYW5fdmFyaWFuY2U8L3N0cm9uZz4gaXMgaW5mbGF0ZWQgYnkgYCArXG4gICAgICAgICAgICAgICAgYGFydGlmaWNpYWwgZWRnZXMgYXQgY2xpcCBib3VuZGFyaWVzIOKAlCBpbnRlcnByZXQgd2l0aCBjYXV0aW9uIGZvciB0aG9zZSBpbWFnZXMuYCxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gRnJhY3Rpb24gbWV0cmljcyAoc2F0dXJhdGVkLCBtaW4tdmFsdWUpXG4gIGZvciAoY29uc3QgeyBjb2wsIHRocmVzaG9sZCwgbGFiZWwsIGNvbnNlcXVlbmNlIH0gb2YgRlJBQ1RJT05fV0FSTklOR1MpIHtcbiAgICBpZiAoIWNvbHMuaW5jbHVkZXMoY29sKSkgY29udGludWU7XG4gICAgY29uc3QgcGN0ID0gKHRocmVzaG9sZCAqIDEwMCkudG9Mb2NhbGVTdHJpbmcodW5kZWZpbmVkLCB7IG1heGltdW1TaWduaWZpY2FudERpZ2l0czogMiB9KTtcbiAgICBjb25zdCB3aGVyZSA9IGFuZFdoZXJlKGN0eC53aGVyZSwgYCR7cShjb2wpfSA+ICR7dGhyZXNob2xkfWApO1xuICAgIC8vIG1pbl92YWx1ZV9waXhlbF9mcmFjdGlvbjogc3BsaXQgdW5zaWduZWQgKHplcm8gPSBiYWNrZ3JvdW5kL3ZvaWQvdW5kZXJleHBvc3VyZSkgZnJvbVxuICAgIC8vIHNpZ25lZCAobWluID0gbG93ZXItYm91bmQgY2xpcHBpbmcsIHNpZ25hbCBsb3NzKSAtLSB0aGV5IG1lYW4gZGlmZmVyZW50IHRoaW5ncy5cbiAgICBpZiAoY29sID09PSAnZGFya19jbGlwcGluZ19mcmFjdGlvbicgJiYgY29scy5pbmNsdWRlcygnZHR5cGUnKSkge1xuICAgICAgY29uc3QgdVdoZXJlID0gYW5kV2hlcmUod2hlcmUsIGBcImR0eXBlXCIgTElLRSAndWludCUnYCk7XG4gICAgICBjb25zdCBzV2hlcmUgPSBhbmRXaGVyZSh3aGVyZSwgYFwiZHR5cGVcIiBOT1QgTElLRSAndWludCUnIEFORCBcImR0eXBlXCIgTElLRSAnJWludCUnYCk7XG4gICAgICBjb25zdCBbW3VSb3ddLCBbc1Jvd11dID0gYXdhaXQgUHJvbWlzZS5hbGwoW1xuICAgICAgICBjdHgucXVlcnlSb3dzKGBTRUxFQ1QgQ09VTlQoKikgQVMgbiBGUk9NIHBwX2RhdGEgJHt1V2hlcmV9YCksXG4gICAgICAgIGN0eC5xdWVyeVJvd3MoYFNFTEVDVCBDT1VOVCgqKSBBUyBuIEZST00gcHBfZGF0YSAke3NXaGVyZX1gKSxcbiAgICAgIF0pO1xuICAgICAgY29uc3QgbnUgPSBOdW1iZXIodVJvdz8ubiA/PyAwKSwgbnMgPSBOdW1iZXIoc1Jvdz8ubiA/PyAwKTtcbiAgICAgIGlmIChudSA+IDApIHtcbiAgICAgICAgY3R4LnBsb3QucHJlcGVuZFdhcm5pbmcocGxvdFJvb3QsIHtcbiAgICAgICAgICBsZXZlbDogJ3llbGxvdycsXG4gICAgICAgICAgaHRtbDogYDxzdHJvbmc+JHtudS50b0xvY2FsZVN0cmluZygpfSBpbWFnZSR7bnUgPT09IDEgPyAnJyA6ICdzJ308L3N0cm9uZz4gYCArXG4gICAgICAgICAgICAgICAgYGhhdmUgbW9yZSB0aGFuICR7cGN0fSUgb2YgcGl4ZWxzIGF0IHZhbHVlIDAuICR7Y29uc2VxdWVuY2V9YCxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBpZiAobnMgPiAwKSB7XG4gICAgICAgIGNvbnN0IGR0eXBlUm93cyA9IGF3YWl0IGN0eC5xdWVyeVJvd3MoYFNFTEVDVCBESVNUSU5DVCBcImR0eXBlXCIgRlJPTSBwcF9kYXRhICR7c1doZXJlfWApO1xuICAgICAgICBjb25zdCB2YWxzID0gWy4uLm5ldyBTZXQoZHR5cGVSb3dzLm1hcChyID0+IGR0eXBlTWluVmFsdWUoci5kdHlwZSkpLmZpbHRlcih2ID0+IHYgIT09IG51bGwpKV07XG4gICAgICAgIGNvbnN0IHZhbFN0ciA9IHZhbHMubGVuZ3RoID8gYCAoJHt2YWxzLmxlbmd0aCA9PT0gMSA/ICd2YWx1ZScgOiAndmFsdWVzJ30gJHt2YWxzLnNvcnQoKGEsIGIpID0+IGEgLSBiKS5qb2luKCcsICcpfSlgIDogJyc7XG4gICAgICAgIGN0eC5wbG90LnByZXBlbmRXYXJuaW5nKHBsb3RSb290LCB7XG4gICAgICAgICAgbGV2ZWw6ICd5ZWxsb3cnLFxuICAgICAgICAgIGh0bWw6IGA8c3Ryb25nPiR7bnMudG9Mb2NhbGVTdHJpbmcoKX0gaW1hZ2Uke25zID09PSAxID8gJycgOiAncyd9PC9zdHJvbmc+IGAgK1xuICAgICAgICAgICAgICAgIGBoYXZlIG1vcmUgdGhhbiAke3BjdH0lIG9mIHBpeGVscyBjbGlwcGVkIGF0IHRoZSBsb3dlciBib3VuZCR7dmFsU3RyfS4gU2lnbmFsIGluIHRob3NlIHBpeGVscyBtYXkgaGF2ZSBiZWVuIGxvc3QuYCxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICAvLyBicmlnaHRfY2xpcHBpbmdfZnJhY3Rpb246IGludGVnZXIgb25seSAoZmxvYXQg4oaSIE5hTiwgbmV2ZXIgYWJvdmUgdGhyZXNob2xkKS5cbiAgICBpZiAoY29sID09PSAnYnJpZ2h0X2NsaXBwaW5nX2ZyYWN0aW9uJykge1xuICAgICAgY29uc3QgW3Jvd10gPSBhd2FpdCBjdHgucXVlcnlSb3dzKGBTRUxFQ1QgQ09VTlQoKikgQVMgbiBGUk9NIHBwX2RhdGEgJHt3aGVyZX1gKTtcbiAgICAgIGNvbnN0IG4gPSBOdW1iZXIocm93Py5uID8/IDApO1xuICAgICAgaWYgKG4gPiAwKSB7XG4gICAgICAgIGN0eC5wbG90LnByZXBlbmRXYXJuaW5nKHBsb3RSb290LCB7XG4gICAgICAgICAgbGV2ZWw6ICd5ZWxsb3cnLFxuICAgICAgICAgIGh0bWw6IGA8c3Ryb25nPiR7bi50b0xvY2FsZVN0cmluZygpfSBpbWFnZSR7biA9PT0gMSA/ICcnIDogJ3MnfTwvc3Ryb25nPiBgICtcbiAgICAgICAgICAgICAgICBgaGF2ZSBtb3JlIHRoYW4gJHtwY3R9JSBvZiBwaXhlbHMgYXQgdGhlIGR0eXBlJ3MgbWF4aW11bSB2YWx1ZSDigJQgc2Vuc29yIHNhdHVyYXRpb24uIGAgK1xuICAgICAgICAgICAgICAgIGBSZWFsIHNpZ25hbCB0aGVyZSBpcyBsb3N0LmAsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgY29uc3QgW3Jvd10gPSBhd2FpdCBjdHgucXVlcnlSb3dzKGBTRUxFQ1QgQ09VTlQoKikgQVMgbiBGUk9NIHBwX2RhdGEgJHt3aGVyZX1gKTtcbiAgICBjb25zdCBuID0gTnVtYmVyKHJvdz8ubiA/PyAwKTtcbiAgICBpZiAobiA9PT0gMCkgY29udGludWU7XG4gICAgY3R4LnBsb3QucHJlcGVuZFdhcm5pbmcocGxvdFJvb3QsIHtcbiAgICAgIGxldmVsOiAneWVsbG93JyxcbiAgICAgIGh0bWw6IGA8c3Ryb25nPiR7bi50b0xvY2FsZVN0cmluZygpfSBpbWFnZSR7biA9PT0gMSA/ICcnIDogJ3MnfTwvc3Ryb25nPiBgICtcbiAgICAgICAgICAgIGBoYXZlIG1vcmUgdGhhbiAke3BjdH0lIG9mIHBpeGVscyAke2xhYmVsfS4gJHtjb25zZXF1ZW5jZX1gLFxuICAgIH0pO1xuICB9XG5cbiAgLy8gU3ViLWR0eXBlIHBhY2tpbmc6IHVpbnQgaW1hZ2VzIHdoZXJlIG1heF9pbnRlbnNpdHkgaXMgYSBwb3dlci1vZi0yLW1pbnVzLTEgYmVsb3cgdGhlIGR0eXBlIGNlaWxpbmcuXG4gIC8vIEUuZy4gdWludDE2IHBlYWtpbmcgYXQgNDA5NSDihpIgbGlrZWx5IDEyLWJpdCBkYXRhIHN0b3JlZCBpbiBhIHdpZGVyIHR5cGUuXG4gIC8vIGJyaWdodF9jbGlwcGluZ19mcmFjdGlvbiBjb21wYXJlcyBhZ2FpbnN0IHRoZSBkdHlwZSBjZWlsaW5nIGFuZCBzdGF5cyAwIGZvciB0aGVzZSBpbWFnZXMuXG4gIGlmIChjb2xzLmluY2x1ZGVzKCdtYXhfaW50ZW5zaXR5JykgJiYgY29scy5pbmNsdWRlcygnZHR5cGUnKSkge1xuICAgIGNvbnN0IGNlaWxFeHByID0gYENBU0UgXCJkdHlwZVwiIFdIRU4gJ3VpbnQ4JyBUSEVOIDI1NSBXSEVOICd1aW50MTYnIFRIRU4gNjU1MzUgYCArXG4gICAgICAgICAgICAgICAgICAgICBgV0hFTiAndWludDMyJyBUSEVOIDQyOTQ5NjcyOTUgRUxTRSBOVUxMIEVORGA7XG4gICAgY29uc3Qgc3ViV2hlcmUgPSBhbmRXaGVyZShjdHgud2hlcmUsXG4gICAgICBgXCJkdHlwZVwiIExJS0UgJ3VpbnQlJyBBTkQgXCJtYXhfaW50ZW5zaXR5XCIgSVMgTk9UIE5VTEwgQU5EIFwibWF4X2ludGVuc2l0eVwiID4gMCBgICtcbiAgICAgIGBBTkQgKENBU1QoXCJtYXhfaW50ZW5zaXR5XCIgQVMgQklHSU5UKSAmIChDQVNUKFwibWF4X2ludGVuc2l0eVwiIEFTIEJJR0lOVCkgKyAxKSkgPSAwIGAgK1xuICAgICAgYEFORCBcIm1heF9pbnRlbnNpdHlcIiA8ICR7Y2VpbEV4cHJ9YCk7XG4gICAgY29uc3Qgc3ViUm93cyA9IGF3YWl0IGN0eC5xdWVyeVJvd3MoXG4gICAgICBgU0VMRUNUIENPVU5UKCopIEFTIG4sIFwibWF4X2ludGVuc2l0eVwiLCBcImR0eXBlXCIgRlJPTSBwcF9kYXRhICR7c3ViV2hlcmV9IGAgK1xuICAgICAgYEdST1VQIEJZIFwibWF4X2ludGVuc2l0eVwiLCBcImR0eXBlXCIgT1JERVIgQlkgbiBERVNDYCk7XG4gICAgaWYgKHN1YlJvd3MubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgdG90YWwgPSBzdWJSb3dzLnJlZHVjZSgocywgcikgPT4gcyArIE51bWJlcihyLm4pLCAwKTtcbiAgICAgIGNvbnN0IGRldGFpbHMgPSBzdWJSb3dzLm1hcChyID0+IHtcbiAgICAgICAgY29uc3QgYml0cyA9IE1hdGgucm91bmQoTWF0aC5sb2cyKE51bWJlcihyLm1heF9pbnRlbnNpdHkpICsgMSkpO1xuICAgICAgICByZXR1cm4gYCR7ci5kdHlwZX0gcGVha2luZyBhdCAke051bWJlcihyLm1heF9pbnRlbnNpdHkpLnRvTG9jYWxlU3RyaW5nKCl9ICgke2JpdHN9LWJpdClgO1xuICAgICAgfSkuam9pbignOyAnKTtcbiAgICAgIGN0eC5wbG90LnByZXBlbmRXYXJuaW5nKHBsb3RSb290LCB7XG4gICAgICAgIGxldmVsOiAneWVsbG93JyxcbiAgICAgICAgaHRtbDogYDxzdHJvbmc+JHt0b3RhbC50b0xvY2FsZVN0cmluZygpfSBpbWFnZSR7dG90YWwgPT09IDEgPyAnJyA6ICdzJ308L3N0cm9uZz4gYCArXG4gICAgICAgICAgICAgIGBhcHBlYXIgc3RvcmVkIGluIGEgd2lkZXIgdHlwZSB0aGFuIGFjcXVpcmVkIOKAlCAke2RldGFpbHN9LiBgICtcbiAgICAgICAgICAgICAgYFRoZSBlZmZlY3RpdmUgZHluYW1pYyByYW5nZSBpcyBuYXJyb3dlciB0aGFuIHRoZSBkdHlwZSBzdWdnZXN0cy4gYCArXG4gICAgICAgICAgICAgIGA8c3Ryb25nPmJyaWdodF9jbGlwcGluZ19mcmFjdGlvbjwvc3Ryb25nPiB3aWxsIG5vdCBmbGFnIGNsaXBwaW5nIGF0IHRoZSBzdWItZHR5cGUgY2VpbGluZy5gLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLy8gU2lnbmVkLWFzLXVuc2lnbmVkOiBzaWduZWQgaW50IGltYWdlcyB3aXRoIG5vIG5lZ2F0aXZlIHZhbHVlcyDigJQgc2lnbmVkIHJhbmdlIGlzIHVudXNlZC5cbiAgaWYgKGNvbHMuaW5jbHVkZXMoJ21pbl9pbnRlbnNpdHknKSAmJiBjb2xzLmluY2x1ZGVzKCdkdHlwZScpKSB7XG4gICAgY29uc3Qgc2lnbmVkV2hlcmUgPSBhbmRXaGVyZShjdHgud2hlcmUsXG4gICAgICBgXCJkdHlwZVwiIExJS0UgJyVpbnQlJyBBTkQgXCJkdHlwZVwiIE5PVCBMSUtFICd1aW50JScgQU5EIFwibWluX2ludGVuc2l0eVwiIElTIE5PVCBOVUxMIEFORCBcIm1pbl9pbnRlbnNpdHlcIiA+PSAwYCk7XG4gICAgY29uc3QgW3NpZ25lZFJvd10gPSBhd2FpdCBjdHgucXVlcnlSb3dzKGBTRUxFQ1QgQ09VTlQoKikgQVMgbiBGUk9NIHBwX2RhdGEgJHtzaWduZWRXaGVyZX1gKTtcbiAgICBjb25zdCBuU2lnbmVkID0gTnVtYmVyKHNpZ25lZFJvdz8ubiA/PyAwKTtcbiAgICBpZiAoblNpZ25lZCA+IDApIHtcbiAgICAgIGN0eC5wbG90LnByZXBlbmRXYXJuaW5nKHBsb3RSb290LCB7XG4gICAgICAgIGxldmVsOiAnYmx1ZScsXG4gICAgICAgIGh0bWw6IGA8c3Ryb25nPiR7blNpZ25lZC50b0xvY2FsZVN0cmluZygpfSBpbWFnZSR7blNpZ25lZCA9PT0gMSA/ICcnIDogJ3MnfTwvc3Ryb25nPiBgICtcbiAgICAgICAgICAgICAgYHVzZSBhIHNpZ25lZCBpbnRlZ2VyIGR0eXBlIGJ1dCBoYXZlIG5vIG5lZ2F0aXZlIHZhbHVlcyDigJQgYCArXG4gICAgICAgICAgICAgIGBkYXRhIG1heSBoYXZlIGJlZW4gYWNxdWlyZWQgYXMgdW5zaWduZWQgYnV0IHN0b3JlZCBhcyBzaWduZWQuYCxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuXG4vKiogUGlubmVkIGRpbXMgYXMgZGlzcGxheSBsYWJlbHM6IHsgYzogMSB9IC0+IFsnQz0xJ10uICovXG5mdW5jdGlvbiBwaW5uZWREaW1zKGN0eCkge1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMoY3R4LnNxbC5waW5uZWREaW1zKCkpXG4gICAgLnNvcnQoKFthXSwgW2JdKSA9PiBhLmxvY2FsZUNvbXBhcmUoYikpXG4gICAgLm1hcCgoW2xldHRlciwgaWR4XSkgPT4gYCR7bGV0dGVyLnRvVXBwZXJDYXNlKCl9PSR7aWR4fWApO1xufVxuXG4vLyBSb3dzIG9uZSBwb2ludCBpcyBkcmF3biBmcm9tLiBUaGUgdGlsZSBwcmV2aWV3IGFuZCB0aGUgZnVsbCBjYXJkIHNoYXJlIGl0LCBzb1xuLy8gYSBwaW5uZWQgZGltZW5zaW9uIG1vdmVzIGJvdGggdG8gdGhlIHNhbWUgc2xpY2UuXG5mdW5jdGlvbiB2aW9saW5Tb3VyY2UoY3R4LCBzcGxpdERpbXMpIHtcbiAgY29uc3QgcGFydHMgPSBjdHguc3FsLmRpbVN1YnNldFdoZXJlKHsgZml4ZWQ6IGN0eC5zcWwucGlubmVkRGltcygpLCBzcGxpdDogc3BsaXREaW1zIH0pO1xuICByZXR1cm4geyB0YWJsZTogJ3BwX2FsbCcsIHdoZXJlOiBwYXJ0cy5sZW5ndGggPyBgV0hFUkUgJHtwYXJ0cy5qb2luKCcgQU5EICcpfWAgOiAnJyB9O1xufVxuXG5hc3luYyBmdW5jdGlvbiByZW5kZXJWaW9saW5zKHBsb3RSb290LCBjdHgsIGZpbHRlck1ldHJpYywgc3BsaXREaW1zLCBmcmFjdGlvbldhcm5pbmdzID0gZmFsc2UpIHtcbiAgY29uc3QgeyBxLCBncm91cEV4cHI6IGdlRm4sIGdyb3VwQ29sOiBnY0ZuIH0gPSBjdHguc3FsO1xuICBjb25zdCB7IGZsZXhHcmlkOiBjcmVhdGVGbGV4R3JpZCwgbmljZU5hbWUsIGRhdGFBdmFpbGFiaWxpdHlXYXJuaW5nLCBncm91cGluZ0xhYmVsLCBlbmdpbmUgfSA9IGN0eC5wbG90O1xuXG4gIGNvbnN0IG1ldHJpY3MgPSByZXNvbHZlTWV0cmljcyhjdHguc2NoZW1hLCBjdHguc3RhdGUuZGltZW5zaW9ucykuZmlsdGVyKGZpbHRlck1ldHJpYyk7XG4gIG1ldHJpY3Muc29ydCgoYSwgYikgPT4gcXVhbGl0eU1ldHJpY1JhbmsoYSkgLSBxdWFsaXR5TWV0cmljUmFuayhiKSk7XG4gIGlmICghbWV0cmljcy5sZW5ndGgpIHtcbiAgICBwbG90Um9vdC5pbm5lckhUTUwgPSAnPGRpdiBjbGFzcz1cIm5vLWRhdGFcIj5ObyBudW1lcmljIG1ldHJpYyBjb2x1bW5zLjwvZGl2Pic7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgbWV0cmljU2VsZWN0cyA9IG1ldHJpY3MubWFwKChtLCBpKSA9PiBgQ09VTlQoJHtxKG0pfSkgQVMgYyR7aX1gKS5qb2luKCcsICcpO1xuICBjb25zdCBbYXZhaWxSb3ddID0gYXdhaXQgY3R4LnF1ZXJ5Um93cyhcbiAgICBgU0VMRUNUIENPVU5UKCopIEFTIHRvdGFsLCAke21ldHJpY1NlbGVjdHN9IEZST00gcHBfZGF0YSAke2N0eC53aGVyZX1gXG4gICk7XG4gIGNvbnN0IHRvdCA9IE51bWJlcihhdmFpbFJvdy50b3RhbCk7XG4gIGNvbnN0IGNvdW50cyA9IG1ldHJpY3MubWFwKChtLCBpKSA9PiAoeyBsYWJlbDogbmljZU5hbWUobSksIHByZXNlbnQ6IE51bWJlcihhdmFpbFJvd1tgYyR7aX1gXSksIHJlYXNvbjogZGVzY3JpYmVRdWFsaXR5TWV0cmljKG0pPy5udWxsUmVhc29uIH0pKTtcbiAgY29uc3QgcGlubmVkID0gcGlubmVkRGltcyhjdHgpO1xuICBkYXRhQXZhaWxhYmlsaXR5V2FybmluZyhwbG90Um9vdCwgY291bnRzLCB0b3QsXG4gICAgeyB1bml0OiAoc3BsaXREaW1zLnNpemUgfHwgcGlubmVkLmxlbmd0aCkgPyAnc2xpY2VzJyA6ICdpbWFnZXMnIH0pO1xuICBpZiAoZnJhY3Rpb25XYXJuaW5ncykgYXdhaXQgcHJlcGVuZEZyYWN0aW9uV2FybmluZ3MocGxvdFJvb3QsIGN0eCk7XG5cbiAgY29uc3QgeyB0YWJsZTogc291cmNlVGFibGUsIHdoZXJlOiBjb21iaW5lZFdoZXJlIH0gPSB2aW9saW5Tb3VyY2UoY3R4LCBzcGxpdERpbXMpO1xuICBjb25zdCBnYyA9IGdjRm4oKTtcblxuICAvLyBQZXItZ3JvdXAgc3VtbWFyeSBzdGF0cyAocXVhcnRpbGVzLCBtaW4vbWF4LCBtZWFuKSBjb21wdXRlZCBlbnRpcmVseSBpbiBTUUwsXG4gIC8vIHNvIHRoZSBib3gtcGxvdCBmYWxsYmFjayBzY2FsZXMgdG8gYW55IG51bWJlciBvZiB1bmRlcmx5aW5nIHJvd3MuIEJhdGNoZWRcbiAgLy8gYWNyb3NzIGV2ZXJ5IG1ldHJpYyBpbiBvbmUgcXVlcnksIHRoZW4gc2xpY2VkIHBlciBtZXRyaWMgYmVsb3cuIEdST1VQIEJZXG4gIC8vIFJPTExVUChnYykgYWRkcyBvbmUgZXh0cmEgZ3JhbmQtdG90YWwgcm93IChHUk9VUElORyhnYykgPSAxKSBhbG9uZ3NpZGUgdGhlXG4gIC8vIHBlci1ncm91cCByb3dzLCBzbyB0aGUgb3ZlcmFsbCBhcHByb3hfY291bnRfZGlzdGluY3QgYmVsb3cgY29tZXMgZnJvbSB0aGVcbiAgLy8gc2FtZSBwYXNzIGluc3RlYWQgb2YgYSBzZWNvbmQgZnVsbC10YWJsZSBzY2FuLlxuICBjb25zdCBzdGF0Q29scyA9IG1ldHJpY3MubWFwKG0gPT4gYFxuICAgIENPVU5UKCR7cShtKX0pIEFTIFwiJHttfV9fblwiLFxuICAgIE1JTigke3EobSl9KSBBUyBcIiR7bX1fX21pblwiLFxuICAgIE1BWCgke3EobSl9KSBBUyBcIiR7bX1fX21heFwiLFxuICAgIEFWRygke3EobSl9KSBBUyBcIiR7bX1fX21lYW5cIixcbiAgICBTVERERVYoJHtxKG0pfSkgQVMgXCIke219X19zZFwiLFxuICAgIGFwcHJveF9xdWFudGlsZSgke3EobSl9LCAwLjI1KSBBUyBcIiR7bX1fX3ExXCIsXG4gICAgYXBwcm94X3F1YW50aWxlKCR7cShtKX0sIDAuNSkgQVMgXCIke219X19tZWRpYW5cIixcbiAgICBhcHByb3hfcXVhbnRpbGUoJHtxKG0pfSwgMC43NSkgQVMgXCIke219X19xM1wiYCkuam9pbignLFxcbicpO1xuXG4gIC8vIERpc3RpbmN0LXZhbHVlIGNvdW50IHBlciBtZXRyaWMsIG92ZXIgdGhlIHdob2xlIGZpbHRlcmVkIHRhYmxlIChub3QgcGVyXG4gIC8vIGdyb3VwKSAtIG9ubHkgdXNlZCBmb3IgYSBzbWFsbC1OIHRocmVzaG9sZCwgc28gYXBwcm94aW1hdGUgaXMgZmluZS5cbiAgY29uc3QgbmRDb2xzID0gbWV0cmljcy5tYXAobSA9PiBgYXBwcm94X2NvdW50X2Rpc3RpbmN0KCR7cShtKX0pIEFTIFwiJHttfV9fbmRcImApLmpvaW4oJyxcXG4nKTtcblxuICBjb25zdCByb3dzID0gYXdhaXQgY3R4LnF1ZXJ5Um93cyhgXG4gICAgU0VMRUNUICR7Z2VGbigpfSwgR1JPVVBJTkcoJHtnY30pIEFTIF9faXNfdG90YWxfXywgJHtzdGF0Q29sc30sXG4gICAgICAke25kQ29sc31cbiAgICBGUk9NICR7c291cmNlVGFibGV9ICR7Y29tYmluZWRXaGVyZX1cbiAgICBHUk9VUCBCWSBST0xMVVAoJHtnY30pXG4gIGApO1xuICBjb25zdCB0b3RhbFJvdyA9IHJvd3MuZmluZChyID0+IE51bWJlcihyLl9faXNfdG90YWxfXykgPT09IDEpID8/IHt9O1xuICBjb25zdCBzdGF0Um93cyA9IHJvd3MuZmlsdGVyKHIgPT4gTnVtYmVyKHIuX19pc190b3RhbF9fKSAhPT0gMSk7XG5cbiAgaWYgKCFzdGF0Um93cy5sZW5ndGgpIHtcbiAgICBwbG90Um9vdC5pbm5lckhUTUwgKz0gJzxkaXYgY2xhc3M9XCJuby1kYXRhXCI+Tm8gcm93cyBtYXRjaCB0aGUgY3VycmVudCBmaWx0ZXIuPC9kaXY+JztcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBzdGF0c0J5R3JvdXAgPSBuZXcgTWFwKHN0YXRSb3dzLm1hcChyID0+IFtTdHJpbmcoci5fX2dyb3VwX18pLCByXSkpO1xuICBjb25zdCBncm91cHMgPSBjdHguZ3JvdXBzLmZpbHRlcihnID0+IHN0YXRzQnlHcm91cC5oYXMoZykpO1xuXG4gIGNvbnN0IHRvUGxvdCA9IFtdLCBub1ZhcmlhbmNlID0gW107XG4gIGZvciAoY29uc3QgbWV0cmljIG9mIG1ldHJpY3MpIHtcbiAgICBsZXQgdG90YWwgPSAwLCBnbWluID0gSW5maW5pdHksIGdtYXggPSAtSW5maW5pdHk7XG4gICAgZm9yIChjb25zdCBnIG9mIGdyb3Vwcykge1xuICAgICAgY29uc3QgciA9IHN0YXRzQnlHcm91cC5nZXQoZyk7XG4gICAgICBjb25zdCBuID0gTnVtYmVyKHJbYCR7bWV0cmljfV9fbmBdKTtcbiAgICAgIHRvdGFsICs9IG47XG4gICAgICBpZiAobiA+IDApIHtcbiAgICAgICAgZ21pbiA9IE1hdGgubWluKGdtaW4sIE51bWJlcihyW2Ake21ldHJpY31fX21pbmBdKSk7XG4gICAgICAgIGdtYXggPSBNYXRoLm1heChnbWF4LCBOdW1iZXIocltgJHttZXRyaWN9X19tYXhgXSkpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAodG90YWwgPT09IDApIGNvbnRpbnVlO1xuICAgIGlmIChnbWluID09PSBnbWF4KSBub1ZhcmlhbmNlLnB1c2goeyBtZXRyaWMsIHZhbHVlOiBnbWluIH0pO1xuICAgIGVsc2UgdG9QbG90LnB1c2goeyBtZXRyaWMsIHRvdGFsIH0pO1xuICB9XG5cbiAgY29uc3QgbnVtR3JvdXBzICAgPSBncm91cHMubGVuZ3RoO1xuICBsZXQgcGxvdHNQZXJSb3cgPSBudW1Hcm91cHMgPD0gMiA/IDMgOiBudW1Hcm91cHMgPT09IDMgPyAyIDogMTtcbiAgY29uc3Qgc2hvd1NpZ25pZmljYW5jZSA9ICEhY3R4LnN0YXRlLnNob3dTaWduaWZpY2FuY2U7XG5cbiAgLy8gU2lkZS1pbmZvIHRleHQgKGRlc2NyaXB0aW9uICsgb3B0aW9uYWwgZGlyZWN0aW9uIGJhZGdlKSBzaXRzIGJlc2lkZSB0aGVcbiAgLy8gY2hhcnQgd2hlbiB0aGVyZSdzIHJvb20sIGJ1dCB3cmFwcyBhYm92ZSBpdCB3aGVuIHRoZSBjZWxsIGlzIHRvbyBuYXJyb3dcbiAgLy8gKHNlZSBhcHBlbmRTaWRlSW5mb1JvdykgLSBzdGFja2VkIGFjcm9zcyBzZXZlcmFsIG5hcnJvdyBjb2x1bW5zIHRoYXQgbG9va3NcbiAgLy8gY3JhbXBlZCBhbmQgdW5ldmVuLiBDYXAgYXQgMiBwZXIgcm93IHdoZW5ldmVyIGl0J2xsIGFjdHVhbGx5IHJlbmRlciwgc29cbiAgLy8gZWFjaCBjZWxsIGhhcyBlbm91Z2ggd2lkdGggZm9yIHRleHQgYW5kIGNoYXJ0IHNpZGUgYnkgc2lkZSBpbnN0ZWFkLlxuICBjb25zdCBhbnlTaWRlSW5mbyA9IGN0eC5zdGF0ZS5zaG93SW5mbyAmJiB0b1Bsb3Quc29tZSgoeyBtZXRyaWMgfSkgPT4gc2lkZUluZm9Gb3IobWV0cmljKSk7XG4gIGlmIChhbnlTaWRlSW5mbykgcGxvdHNQZXJSb3cgPSBNYXRoLm1pbihwbG90c1BlclJvdywgMik7XG5cbiAgaWYgKHRvUGxvdC5sZW5ndGgpIHtcbiAgICBjb25zdCB7IHdyYXAsIGZsZXhCYXNpc1BjdCB9ID0gY3JlYXRlRmxleEdyaWQocGxvdFJvb3QsIHBsb3RzUGVyUm93KTtcblxuICAgIGNvbnN0IHBlclBvaW50ID0gc3BsaXREaW1zLnNpemVcbiAgICAgID8gYG9uZSBwb2ludCBwZXIgKGltYWdlIMOXICR7Wy4uLnNwbGl0RGltc10ubWFwKGwgPT4gbC50b1VwcGVyQ2FzZSgpKS5qb2luKCcgw5cgJyl9KWBcbiAgICAgIDogJ29uZSBwb2ludCBwZXIgaW1hZ2UnO1xuICAgIGNvbnN0IGdyYW51bGFyaXR5RGVzYyA9IHBpbm5lZC5sZW5ndGggPyBgJHtwZXJQb2ludH0gYXQgJHtwaW5uZWQuam9pbignLCAnKX1gIDogcGVyUG9pbnQ7XG5cbiAgICBmb3IgKGNvbnN0IHsgbWV0cmljLCB0b3RhbCB9IG9mIHRvUGxvdCkge1xuICAgICAgY29uc3QgbGFiZWwgPSBuaWNlTmFtZShtZXRyaWMpO1xuICAgICAgY29uc3QgdGl0bGUgPSBgRGlzdHJpYnV0aW9uIG9mICR7bGFiZWx9PGJyPjxzdXA+JHtncmFudWxhcml0eURlc2N9OyBuPSR7dG90YWwudG9Mb2NhbGVTdHJpbmcoKX08L3N1cD5gO1xuXG4gICAgICAvLyBQcmUtc2xpY2VkIHBlci1ncm91cCBzdGF0cyBmb3IgdGhpcyBtZXRyaWMsIHNvIHJlbmRlckRpc3RyaWJ1dGlvbiBjYW5cbiAgICAgIC8vIGRyYXcgdGhlIGJveC1zdW1tYXJ5IGZhbGxiYWNrIHdpdGhvdXQgcmUtcXVlcnlpbmcuIGNhdFNxbCA9IHRoZSBncm91cFxuICAgICAgLy8gZXhwcmVzc2lvbiwgc28gZWFjaCBncm91cCBpcyBpdHMgb3duIGNvbG9yZWQgdmlvbGluIChzZXJpZXMuaXNDYXRlZ29yeSkuXG4gICAgICBjb25zdCBzdGF0cyA9IGdyb3Vwcy5tYXAoZyA9PiB7XG4gICAgICAgIGNvbnN0IHIgPSBzdGF0c0J5R3JvdXAuZ2V0KGcpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIF9fZ3JvdXBfXzogZywgX19jYXRfXzogZyxcbiAgICAgICAgICBuOiByW2Ake21ldHJpY31fX25gXSwgbW46IHJbYCR7bWV0cmljfV9fbWluYF0sIG14OiByW2Ake21ldHJpY31fX21heGBdLFxuICAgICAgICAgIG1lYW46IHJbYCR7bWV0cmljfV9fbWVhbmBdLCBzZDogcltgJHttZXRyaWN9X19zZGBdLFxuICAgICAgICAgIHExOiByW2Ake21ldHJpY31fX3ExYF0sIG1lZDogcltgJHttZXRyaWN9X19tZWRpYW5gXSwgcTM6IHJbYCR7bWV0cmljfV9fcTNgXSxcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBjZWxsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICBjZWxsLnN0eWxlLmNzc1RleHQgPSBgZmxleDowIDAgJHtmbGV4QmFzaXNQY3R9JTttaW4td2lkdGg6MzAwcHg7bWFyZ2luLWJvdHRvbToyMHB4O2JveC1zaXppbmc6Ym9yZGVyLWJveGA7XG4gICAgICB3cmFwLmFwcGVuZENoaWxkKGNlbGwpO1xuXG4gICAgICBjb25zdCBpc0NsaXBwaW5nID0gbWV0cmljID09PSAnYnJpZ2h0X2NsaXBwaW5nX2ZyYWN0aW9uJyB8fCBtZXRyaWMgPT09ICdkYXJrX2NsaXBwaW5nX2ZyYWN0aW9uJztcbiAgICAgIGF3YWl0IGVuZ2luZS5yZW5kZXJEaXN0cmlidXRpb24oY2VsbCwgY3R4LCB7XG4gICAgICAgIG51bUNvbDogbWV0cmljLFxuICAgICAgICBzb3VyY2U6IHsgdGFibGU6IHNvdXJjZVRhYmxlLCB3aGVyZTogY29tYmluZWRXaGVyZSB9LFxuICAgICAgICBjYXRTcWw6IGdjRm4oKSxcbiAgICAgICAgY2F0TGFiZWw6IGdyb3VwaW5nTGFiZWwoJycpLFxuICAgICAgICB5TGFiZWw6IGxhYmVsLFxuICAgICAgICB0aXRsZSxcbiAgICAgICAgc2hvd1NpZ25pZmljYW5jZSxcbiAgICAgICAgbWF4UmF3UG9pbnRzOiBlbmdpbmUuQ09OU1RBTlRTLk1BWF9WSU9MSU5fUE9JTlRTLFxuICAgICAgICBzZXJpZXM6IHsgaXNDYXRlZ29yeTogdHJ1ZSB9LFxuICAgICAgICBjYXRlZ29yaWVzT3JkZXI6IGdyb3VwcyxcbiAgICAgICAgY2F0TGFiZWxGbjogY3R4Lmdyb3VwTGFiZWwsXG4gICAgICAgIHN0YXRzLFxuICAgICAgICBkaXN0aW5jdENvdW50OiBOdW1iZXIodG90YWxSb3dbYCR7bWV0cmljfV9fbmRgXSksXG4gICAgICAgIHNpZGVJbmZvOiBzaWRlSW5mb0ZvcihtZXRyaWMpLFxuICAgICAgICAuLi4oaXNDbGlwcGluZyA/IHsgbGF5b3V0OiB7IHlheGlzOiB7IHRpY2tmb3JtYXQ6ICcuMiUnLCB0aXRsZTogbGFiZWwgfSB9IH0gOiB7fSksXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBpZiAobm9WYXJpYW5jZS5sZW5ndGgpIHtcbiAgICBjdHgucGxvdC5pbnZhcmlhbnRUYWJsZShwbG90Um9vdCwge1xuICAgICAgdGl0bGU6ICdNZXRyaWNzIHdpdGggTm8gVmFyaWFuY2UgYWNyb3NzIGFsbCBpbWFnZXMgdGhhdCByZXBvcnQgaXQnLFxuICAgICAgaGVhZGVyczogWydNZXRyaWMnLCAnVmFsdWUnXSxcbiAgICAgIHJvd3M6IG5vVmFyaWFuY2UubWFwKCh7IG1ldHJpYywgdmFsdWUgfSkgPT4gW25pY2VOYW1lKG1ldHJpYyksIE51bWJlcih2YWx1ZSkudG9GaXhlZCg0KV0pLFxuICAgICAgaHI6IHRydWUsXG4gICAgfSk7XG4gIH1cbn1cblxuLy8gT25lIHNpbXBsaWZpZWQgYm94IHBsb3QgcGVyIGdyb3VwLCBjb21wdXRlZCBlbnRpcmVseSBpbiBTUUwgKHNvIGl0IHNjYWxlcykgLVxuLy8gdGhlIG92ZXJ2aWV3LW1vZGUgdGlsZSBwcmV2aWV3IGZvciBhIHZpb2xpbiB3aWRnZXQuIG1heFJhd1BvaW50czowIGZvcmNlcyB0aGVcbi8vIGJveC1zdW1tYXJ5IHBhdGggcmVnYXJkbGVzcyBvZiBzaXplLlxuYXN5bmMgZnVuY3Rpb24gdmlvbGluT3ZlcnZpZXdQbG90KGN0eCwgY29udGFpbmVyLCBtZXRyaWMpIHtcbiAgaWYgKCFtZXRyaWMpIHJldHVybiBmYWxzZTtcbiAgcmV0dXJuIGN0eC5wbG90LmVuZ2luZS5yZW5kZXJEaXN0cmlidXRpb24oY29udGFpbmVyLCBjdHgsIHtcbiAgICBudW1Db2w6IG1ldHJpYyxcbiAgICBzb3VyY2U6IHZpb2xpblNvdXJjZShjdHgsIG5ldyBTZXQoKSksXG4gICAgY2F0U3FsOiBjdHguc3FsLmdyb3VwQ29sKCksXG4gICAgeUxhYmVsOiBjdHgucGxvdC5uaWNlTmFtZShtZXRyaWMpLFxuICAgIHNlcmllczogeyBpc0NhdGVnb3J5OiB0cnVlIH0sXG4gICAgY2F0ZWdvcmllc09yZGVyOiBjdHguZ3JvdXBzLFxuICAgIGNhdExhYmVsRm46IGN0eC5ncm91cExhYmVsLFxuICAgIG1pbmk6IHRydWUsXG4gICAgbWF4UmF3UG9pbnRzOiAwLFxuICB9KTtcbn1cblxuZnVuY3Rpb24gbWFrZVZpb2xpblBsdWdpbihpZCwgbGFiZWwsIGluZm8sIGZpbHRlck1ldHJpYywgb3ZlcnZpZXdNZXNzYWdlLCBtZXRyaWNQcmVmID0gW10sIHNob3J0TGFiZWwsIGlucHV0TWV0cmljcywgeyBmcmFjdGlvbldhcm5pbmdzID0gZmFsc2UgfSA9IHt9KSB7XG4gIGNvbnN0IHBpY2tNZXRyaWMgPSAoY3R4KSA9PlxuICAgIG1ldHJpY1ByZWYuZmluZChtID0+IGN0eC5zY2hlbWEuYWxsQ29scy5pbmNsdWRlcyhtKSkgPz9cbiAgICBjdHguc2NoZW1hLm1ldHJpY0NvbHNcbiAgICAgIC5maWx0ZXIobSA9PiBmaWx0ZXJNZXRyaWMobSkgJiYgY3R4LnNjaGVtYS5hbGxDb2xzLmluY2x1ZGVzKG0pKVxuICAgICAgLnNvcnQoKGEsIGIpID0+IHF1YWxpdHlNZXRyaWNSYW5rKGEpIC0gcXVhbGl0eU1ldHJpY1JhbmsoYikpWzBdID8/XG4gICAgbnVsbDtcbiAgcmV0dXJuIHtcbiAgICBpZCwgbGFiZWwsIGluZm8sIHNob3J0TGFiZWwsIGdyb3VwOiAnRGF0YXNldCBTdGF0cycsIHNjb3BlOiAnaW1hZ2UnLCBtdWx0aVBsb3Q6IHRydWUsXG4gICAgaW5wdXRzOiBpbnB1dE1ldHJpY3MgPyBbLi4uaW5wdXRNZXRyaWNzXSA6IFtdLFxuICAgIHJlcXVpcmVzKHNjaGVtYSkge1xuICAgICAgcmV0dXJuIHNjaGVtYS5tZXRyaWNDb2xzLnNvbWUoZmlsdGVyTWV0cmljKTtcbiAgICB9LFxuICAgIC4uLihvdmVydmlld01lc3NhZ2UgPyB7IG92ZXJ2aWV3TWVzc2FnZSB9IDoge30pLFxuICAgIGFzeW5jIG92ZXJ2aWV3UGxvdChjb250YWluZXIsIGN0eCkge1xuICAgICAgcmV0dXJuIHZpb2xpbk92ZXJ2aWV3UGxvdChjdHgsIGNvbnRhaW5lciwgcGlja01ldHJpYyhjdHgpKTtcbiAgICB9LFxuICAgIGFzeW5jIHJlbmRlcihjb250YWluZXIsIGN0eCkge1xuICAgICAgY29uc3QgZGltQ29scyA9IGN0eC5zY2hlbWE/LmRpbUNvbHMgPz8gW107XG4gICAgICBjb25zdCBhY3RpdmVEaW1zID0gY3R4LnN0YXRlLmRpbWVuc2lvbnMgPz8ge307XG4gICAgICBjb25zdCBzcGxpdHRhYmxlID0gZGltQ29scy5tYXAoYyA9PiBjLnNsaWNlKDQpKS5maWx0ZXIobGV0dGVyID0+ICEobGV0dGVyIGluIGFjdGl2ZURpbXMpKTtcblxuICAgICAgY29uc3Qgc3BsaXREaW1zID0gbmV3IFNldCgpO1xuICAgICAgY29uc3QgcGxvdFJvb3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcblxuICAgICAgLy8gVGhlIGNhcmQgaGVhZGVyIGFscmVhZHkgY2FycmllcyBhIFwi8J+WvO+4jyBwZXIgaW1hZ2VcIiBiYWRnZSAoZnJvbSBgc2NvcGU6ICdpbWFnZSdgXG4gICAgICAvLyBhYm92ZSkgLSBrZWVwIGl0IGluIHN5bmMgd2l0aCB0aGUgdG9nZ2xlcyBpbnN0ZWFkIG9mIGFkZGluZyBhIHNlY29uZCBiYWRnZS5cbiAgICAgIGNvbnN0IHN5bmNCYWRnZSA9ICgpID0+IGN0eC5wbG90LnN5bmNQaW5uZWRTY29wZUJhZGdlKGNvbnRhaW5lciwgY3R4LCBzcGxpdERpbXMuc2l6ZSA+IDApO1xuICAgICAgc3luY0JhZGdlKCk7XG5cbiAgICAgIGNvbnN0IGRyYXcgPSBhc3luYyAoKSA9PiB7XG4gICAgICAgIHBsb3RSb290LmlubmVySFRNTCA9ICcnO1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGF3YWl0IHJlbmRlclZpb2xpbnMocGxvdFJvb3QsIGN0eCwgZmlsdGVyTWV0cmljLCBzcGxpdERpbXMsIGZyYWN0aW9uV2FybmluZ3MpO1xuICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICBwbG90Um9vdC5pbm5lckhUTUwgPSAnPGRpdiBjbGFzcz1cIm5vLWRhdGFcIj5GYWlsZWQgdG8gbG9hZCBkYXRhLjwvZGl2Pic7XG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIGlmIChzcGxpdHRhYmxlLmxlbmd0aCkge1xuICAgICAgICBjb250YWluZXIuYXBwZW5kQ2hpbGQoY3R4LnBsb3Quc2xpY2VUb2dnbGVzKHNwbGl0dGFibGUsIHNwbGl0RGltcywgKCkgPT4geyBzeW5jQmFkZ2UoKTsgZHJhdygpOyB9KSk7XG4gICAgICB9XG5cbiAgICAgIGNvbnRhaW5lci5hcHBlbmRDaGlsZChwbG90Um9vdCk7XG4gICAgICBhd2FpdCBkcmF3KCk7XG4gICAgfSxcbiAgfTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gYmFzaWNPdmVydmlld1N1bW1hcnkoY3R4KSB7XG4gIHRyeSB7XG4gICAgaWYgKCFjdHguc2NoZW1hLmFsbENvbHMuaW5jbHVkZXMoJ21lYW5faW50ZW5zaXR5JykpIHJldHVybiBudWxsO1xuICAgIC8vIFRoZSBvbmUgdGhpbmcgd29ydGggZmxhZ2dpbmcgdXAgZnJvbnQgaXMgbWl4ZWQgcGl4ZWwgdHlwZXMsIHdoaWNoIG1ha2UgcmF3XG4gICAgLy8gaW50ZW5zaXRpZXMgbm9uLWNvbXBhcmFibGUgYWNyb3NzIGltYWdlcy4gT3RoZXJ3aXNlIHN0YXkgbmV1dHJhbCBhbmQganVzdFxuICAgIC8vIHRlYXNlIHdoYXQgdGhlIHdpZGdldCBsZXRzIHlvdSBpbnNwZWN0LlxuICAgIGlmIChjdHguc2NoZW1hLmFsbENvbHMuaW5jbHVkZXMoJ2R0eXBlJykpIHtcbiAgICAgIGNvbnN0IFtyb3ddID0gYXdhaXQgY3R4LnF1ZXJ5Um93cyhgU0VMRUNUIENPVU5UKERJU1RJTkNUIFwiZHR5cGVcIikgQVMgbl9kdHlwZXMgRlJPTSBwcF9kYXRhICR7Y3R4LndoZXJlfWApO1xuICAgICAgaWYgKE51bWJlcihyb3c/Lm5fZHR5cGVzID8/IDEpID4gMSkge1xuICAgICAgICByZXR1cm4geyB0ZXh0OiBgTWl4ZWQgcGl4ZWwgdHlwZXMg4oCUIGJyaWdodG5lc3Mgbm90IGNvbXBhcmFibGUuYCwgd2FybmluZzogdHJ1ZSB9O1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gYENvbXBhcmUgcGVyLWltYWdlIGludGVuc2l0eSBzdGF0aXN0aWNzIGFjcm9zcyBncm91cHMuYDtcbiAgfSBjYXRjaCB7IHJldHVybiBudWxsOyB9XG59XG5cbi8vIFN0YXkgbmV1dHJhbDogdGhlIG9sZCBwZXItbWV0cmljIFwidmFyaWVzIGEgbG90IC8gbG9va3MgY29uc2lzdGVudFwiIHZlcmRpY3RzIHdlcmVcbi8vIG9wYXF1ZSAod2hpY2ggbWV0cmljLCBtZWFzdXJlZCBob3c/KS4gSnVzdCB0ZWFzZSB3aGF0IHRoZSB3aWRnZXQgbGV0cyB5b3UgY29tcGFyZS5cbmFzeW5jIGZ1bmN0aW9uIHF1YWxpdHlPdmVydmlld1N1bW1hcnkoKSB7XG4gIHJldHVybiBgU3BvdCBxdWFsaXR5IGRpZmZlcmVuY2VzIGFuZCBvdXRsaWVycyBhY3Jvc3MgZ3JvdXBzLmA7XG59XG5cbmV4cG9ydCBkZWZhdWx0IFtcbiAgbWFrZVZpb2xpblBsdWdpbigndmlvbGluLWJhc2ljJywgICAnUGl4ZWwgVmFsdWUgU3RhdGlzdGljcycsIEJBU0lDX0lORk8sICAgbSA9PiBtYXRjaGVzQmFzZXMobSwgQkFTSUNfTUVUUklDX0JBU0VTKSwgYmFzaWNPdmVydmlld1N1bW1hcnksXG4gICAgWydtZWFuX2ludGVuc2l0eSddLCAnSW50ZW5zaXR5JywgQkFTSUNfTUVUUklDX0JBU0VTKSxcbiAgbWFrZVZpb2xpblBsdWdpbigndmlvbGluLXF1YWxpdHknLCAnSW1hZ2UgUXVhbGl0eSBNZXRyaWNzJywgIFFVQUxJVFlfSU5GTywgbSA9PiBtYXRjaGVzQmFzZXMobSwgUVVBTElUWV9NRVRSSUNfQkFTRVMpLCBxdWFsaXR5T3ZlcnZpZXdTdW1tYXJ5LFxuICAgIFsnbGFwbGFjaWFuX3ZhcmlhbmNlJ10sICdJbWFnZSBRdWFsaXR5JywgUVVBTElUWV9NRVRSSUNfQkFTRVMsXG4gICAgeyBmcmFjdGlvbldhcm5pbmdzOiB0cnVlIH0pLFxuXTtcblxuZnVuY3Rpb24gcmVzb2x2ZU1ldHJpY3Moc2NoZW1hLCBkaW1lbnNpb25zKSB7XG4gIC8vIE1ldHJpY3MgYXJlIGJhc2UgY29sdW1uczsgZGltIGZpbHRlcmluZyBpcyByb3ctYmFzZWQgdmlhIGRpbV8qICsgb2JzX2xldmVsLlxuICByZXR1cm4gc2NoZW1hLm1ldHJpY0NvbHM7XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsQ0FBQTtBQUFBOzs7QUFFQSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsbUJBQW1CLENBQUM7QUFDL0IsS0FBSyxDQUFDLGtCQUFr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QyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDNUcsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNsSCxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDeEYsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLENBQUM7O0FBRWxILEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO0FBQ25CLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENB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QyxHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSztBQUM1RSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzNDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3hCLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLHdCQUF3QixDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLHdCQUF3QixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUN0RyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDbEcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDMUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMxRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztBQUM3RixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMzQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3JCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUMxQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO0FBQ3pCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDN0YsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDM0YsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDaEcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNWLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ04sQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNKLENBQUMsQ0FBQzs7QUFFRixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLO0FBQzNDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLGlCQUFpQixDQUFDLENBQUM7QUFDMUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxRQUFRO0FBQ3JDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzVGLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7QUFDakUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7QUFDdkYsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU07QUFDckYsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLHNCQUFzQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNwRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM1RCxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3pGLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDO0FBQ2pELENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDcEUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztBQUNwRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDUixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNoRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2xCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUMxQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO0FBQ3pCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdkYsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDN0UsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNWLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ04sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNsQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztBQUMvRixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDckcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2pJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUMxQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO0FBQ3pCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdkYsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2xJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDVixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNOLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVE7QUFDZCxDQUFDLENBQUMsQ0FBQyxDQUFDOztBQUVKLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQztBQUNsRixDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxDQUFDO0FBQzVDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQ3JGLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ25DLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDakIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQzFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7QUFDekIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNyRixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN0RyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzVDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDVixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNOLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVE7QUFDZCxDQUFDLENBQUMsQ0FBQyxDQUFDOztBQUVKLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDbkYsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNqQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVE7QUFDekIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUN0QyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztBQUNyQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNqRixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBQ3ZFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ04sQ0FBQyxDQUFDOztBQUVGLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTztBQUN2RyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJO0FBQzVFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyx3QkFBd0IsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsTUFBTTtBQUM3RixDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNoRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUNwRixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7QUFDbEUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUs7QUFDdkMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdEYsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzNGLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0FBQzFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxTQUFTO0FBQ3ZDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2pGLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUMxRCxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzVCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDaEUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdkMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN2RSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNoRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ25CLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ3hDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztBQUN2QixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDM0YsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzNFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNsRixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDMUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ1IsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNKLENBQUMsQ0FBQzs7QUFFRixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLE1BQU07QUFDM0YsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDaEUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUs7QUFDMUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNuSCxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO0FBQy9GLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDN0MsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3JCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ3hDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztBQUNyQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDL0YsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDMUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzdFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNSLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDSixDQUFDLENBQUM7QUFDRjs7QUFFQSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3pELFFBQVEsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDekIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDNUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7QUFDMUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQzdEOztBQUVBLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLElB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LFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUc7QUFDL0MsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdEUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsS0FBSyxDQUFDLHVCQUF1QixDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQzs7QUFFcEUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQztBQUNuRixDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7O0FBRW5CLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsR0FBRztBQUNoRixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN2RSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDO0FBQzNFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztBQUM1RSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQztBQUMzRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJO0FBQ2xELENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNwQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztBQUMvQixDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztBQUMvQixDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztBQUMvQixDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztBQUNoQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztBQUNqQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7QUFDaEQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO0FBQ25ELENBQUMsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7O0FBRTlELENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQztBQUN6RSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLElBQUk7QUFDdkUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDOztBQUU3RixDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUM7QUFDbkMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQztBQUNsRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTTtBQUNkLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYTtBQUN2QyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFDekIsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNKLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3JFLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDOztBQUVqRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDeEIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUN4RixDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU07QUFDVixDQUFDLENBQUM7O0FBRUYsQ0FBQyxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMzRSxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7O0FBRTVELENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3BDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUNoQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVE7QUFDcEQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUM1QixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNuQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ3pDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2hCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDakIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDMUQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDMUQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDTixDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ0osQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRO0FBQzdCLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUMvRCxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQ3ZDLENBQUMsQ0FBQzs7QUFFRixDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNO0FBQ25DLENBQUMsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2hFLENBQUMsQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLGdCQUFnQjs7QUFFdkQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7QUFDekUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQztBQUN0RSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7QUFDMUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDMUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU87QUFDdkUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUM1RixDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQzs7QUFFekQsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNyQixDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFdBQVcsQ0FBQzs7QUFFeEUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7QUFDL0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3hGLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQztBQUM3QixDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVE7O0FBRTVGLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUM1QyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDO0FBQ3BDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDOztBQUU1RyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLGtCQUFrQixDQUFDO0FBQzNFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztBQUN6RSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQztBQUNoRixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNwQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDckMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztBQUNmLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztBQUNsQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDaEYsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzVELENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNyRixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNULENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzs7QUFFUixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDaEQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFP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QUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3pGLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNSLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDSixDQUFDLENBQUM7O0FBRUYsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUN6QixDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ3RDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO0FBQ3hFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDbEMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDL0YsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSTtBQUNkLENBQUMsQ0FBQyxDQUFDLENBQUMs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SyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2pDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQzs7QUFFcEQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztBQUN0RixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSztBQUNuRixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMvRixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQzs7QUFFakIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQy9CLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDL0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztBQUNaLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQztBQUN2RixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztBQUNoQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDaEYsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ1IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzs7QUFFUCxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDN0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDM0csQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7O0FBRU4sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUM7QUFDckMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2xCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0g7O0FBRUEsS0FBSyxDQUFDLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUN6QyxDQUFDLENBQUMsR0FBRyxDQUFDO0FBQ04sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSTtBQUNuRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDO0FBQzlFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQztBQUM1RSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU87QUFDN0MsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDOUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDL0csQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDMUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDeEYsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDTixDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ0osQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FB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

//# vitestCache=W3siZmlsZSI6IjEiLCJpZCI6IjEiLCJpbXBvcnRzIjoiMiIsIm1hcHBpbmdzIjpmYWxzZSwiZGVwcyI6IjMiLCJkeW5hbWljRGVwcyI6IjQiLCJzdGF0aWNNb2NrcyI6bnVsbCwiaGFzQ292ZXJhZ2VEYXRhIjpmYWxzZX0sIi9ob21lL2VsbGEvd29yay9waXhlbC1wYXRyb2wvcGFja2FnZXMvcGl4ZWwtcGF0cm9sLWJhc2Uvc3JjL3BpeGVsX3BhdHJvbF9iYXNlL3ZpZXdlci9wbHVnaW5fdmlvbGluLmpzIix7InVybHMiOiI1IiwiaWRzIjoiNiJ9LFsiNyJdLFtdLFsiNyJdLHt9LCIvc3JjL3BpeGVsX3BhdHJvbF9iYXNlL3ZpZXdlci9xdWFsaXR5X21ldHJpY3MuanMiXQ==