Filehigh importancesource

session.tsx

commands/session/session.tsx

140
Lines
13009
Bytes
1
Exports
10
Imports
10
Keywords

What this is

This page documents one file from the repository and includes its full source so you can read it without leaving the docs site.

Beginner explanation

This file lives in the command layer. It likely turns a user action into concrete program behavior.

How it is used

Start from the exports list and related files. Those are the easiest clues for where this file fits into the system.

Expert explanation

Architecturally, this file intersects with session-engine, commands. It contains 140 lines, 10 detected imports, and 1 detected exports.

Important relationships

Detected exports

  • call

Keywords

textremotesessionurlreactelseondoneqrcodepanesymbolmemo_cache_sentineldimcolor

Detected imports

  • react/compiler-runtime
  • qrcode
  • react
  • react
  • ../../components/design-system/Pane.js
  • ../../ink.js
  • ../../keybindings/useKeybinding.js
  • ../../state/AppState.js
  • ../../types/command.js
  • ../../utils/debug.js

Source notes

This page embeds the full file contents. Small or leaf files are still indexed honestly instead of being over-explained.

Open parent directory

Full source

import { c as _c } from "react/compiler-runtime";
import { toString as qrToString } from 'qrcode';
import * as React from 'react';
import { useEffect, useState } from 'react';
import { Pane } from '../../components/design-system/Pane.js';
import { Box, Text } from '../../ink.js';
import { useKeybinding } from '../../keybindings/useKeybinding.js';
import { useAppState } from '../../state/AppState.js';
import type { LocalJSXCommandCall } from '../../types/command.js';
import { logForDebugging } from '../../utils/debug.js';
type Props = {
  onDone: () => void;
};
function SessionInfo(t0) {
  const $ = _c(19);
  const {
    onDone
  } = t0;
  const remoteSessionUrl = useAppState(_temp);
  const [qrCode, setQrCode] = useState("");
  let t1;
  let t2;
  if ($[0] !== remoteSessionUrl) {
    t1 = () => {
      if (!remoteSessionUrl) {
        return;
      }
      const url = remoteSessionUrl;
      const generateQRCode = async function generateQRCode() {
        const qr = await qrToString(url, {
          type: "utf8",
          errorCorrectionLevel: "L"
        });
        setQrCode(qr);
      };
      generateQRCode().catch(_temp2);
    };
    t2 = [remoteSessionUrl];
    $[0] = remoteSessionUrl;
    $[1] = t1;
    $[2] = t2;
  } else {
    t1 = $[1];
    t2 = $[2];
  }
  useEffect(t1, t2);
  let t3;
  if ($[3] === Symbol.for("react.memo_cache_sentinel")) {
    t3 = {
      context: "Confirmation"
    };
    $[3] = t3;
  } else {
    t3 = $[3];
  }
  useKeybinding("confirm:no", onDone, t3);
  if (!remoteSessionUrl) {
    let t4;
    if ($[4] === Symbol.for("react.memo_cache_sentinel")) {
      t4 = <Pane><Text color="warning">Not in remote mode. Start with `claude --remote` to use this command.</Text><Text dimColor={true}>(press esc to close)</Text></Pane>;
      $[4] = t4;
    } else {
      t4 = $[4];
    }
    return t4;
  }
  let T0;
  let t4;
  let t5;
  if ($[5] !== qrCode) {
    const lines = qrCode.split("\n").filter(_temp3);
    const isLoading = lines.length === 0;
    T0 = Pane;
    if ($[9] === Symbol.for("react.memo_cache_sentinel")) {
      t4 = <Box marginBottom={1}><Text bold={true}>Remote session</Text></Box>;
      $[9] = t4;
    } else {
      t4 = $[9];
    }
    t5 = isLoading ? <Text dimColor={true}>Generating QR code…</Text> : lines.map(_temp4);
    $[5] = qrCode;
    $[6] = T0;
    $[7] = t4;
    $[8] = t5;
  } else {
    T0 = $[6];
    t4 = $[7];
    t5 = $[8];
  }
  let t6;
  if ($[10] === Symbol.for("react.memo_cache_sentinel")) {
    t6 = <Text dimColor={true}>Open in browser: </Text>;
    $[10] = t6;
  } else {
    t6 = $[10];
  }
  let t7;
  if ($[11] !== remoteSessionUrl) {
    t7 = <Box marginTop={1}>{t6}<Text color="ide">{remoteSessionUrl}</Text></Box>;
    $[11] = remoteSessionUrl;
    $[12] = t7;
  } else {
    t7 = $[12];
  }
  let t8;
  if ($[13] === Symbol.for("react.memo_cache_sentinel")) {
    t8 = <Box marginTop={1}><Text dimColor={true}>(press esc to close)</Text></Box>;
    $[13] = t8;
  } else {
    t8 = $[13];
  }
  let t9;
  if ($[14] !== T0 || $[15] !== t4 || $[16] !== t5 || $[17] !== t7) {
    t9 = <T0>{t4}{t5}{t7}{t8}</T0>;
    $[14] = T0;
    $[15] = t4;
    $[16] = t5;
    $[17] = t7;
    $[18] = t9;
  } else {
    t9 = $[18];
  }
  return t9;
}
function _temp4(line_0, i) {
  return <Text key={i}>{line_0}</Text>;
}
function _temp3(line) {
  return line.length > 0;
}
function _temp2(e) {
  logForDebugging("QR code generation failed", e);
}
function _temp(s) {
  return s.remoteSessionUrl;
}
export const call: LocalJSXCommandCall = async onDone => {
  return <SessionInfo onDone={onDone} />;
};
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ0b1N0cmluZyIsInFyVG9TdHJpbmciLCJSZWFjdCIsInVzZUVmZmVjdCIsInVzZVN0YXRlIiwiUGFuZSIsIkJveCIsIlRleHQiLCJ1c2VLZXliaW5kaW5nIiwidXNlQXBwU3RhdGUiLCJMb2NhbEpTWENvbW1hbmRDYWxsIiwibG9nRm9yRGVidWdnaW5nIiwiUHJvcHMiLCJvbkRvbmUiLCJTZXNzaW9uSW5mbyIsInQwIiwiJCIsIl9jIiwicmVtb3RlU2Vzc2lvblVybCIsIl90ZW1wIiwicXJDb2RlIiwic2V0UXJDb2RlIiwidDEiLCJ0MiIsInVybCIsImdlbmVyYXRlUVJDb2RlIiwicXIiLCJ0eXBlIiwiZXJyb3JDb3JyZWN0aW9uTGV2ZWwiLCJjYXRjaCIsIl90ZW1wMiIsInQzIiwiU3ltYm9sIiwiZm9yIiwiY29udGV4dCIsInQ0IiwiVDAiLCJ0NSIsImxpbmVzIiwic3BsaXQiLCJmaWx0ZXIiLCJfdGVtcDMiLCJpc0xvYWRpbmciLCJsZW5ndGgiLCJtYXAiLCJfdGVtcDQiLCJ0NiIsInQ3IiwidDgiLCJ0OSIsImxpbmVfMCIsImkiLCJsaW5lIiwiZSIsInMiLCJjYWxsIl0sInNvdXJjZXMiOlsic2Vzc2lvbi50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdG9TdHJpbmcgYXMgcXJUb1N0cmluZyB9IGZyb20gJ3FyY29kZSdcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgUGFuZSB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvZGVzaWduLXN5c3RlbS9QYW5lLmpzJ1xuaW1wb3J0IHsgQm94LCBUZXh0IH0gZnJvbSAnLi4vLi4vaW5rLmpzJ1xuaW1wb3J0IHsgdXNlS2V5YmluZGluZyB9IGZyb20gJy4uLy4uL2tleWJpbmRpbmdzL3VzZUtleWJpbmRpbmcuanMnXG5pbXBvcnQgeyB1c2VBcHBTdGF0ZSB9IGZyb20gJy4uLy4uL3N0YXRlL0FwcFN0YXRlLmpzJ1xuaW1wb3J0IHR5cGUgeyBMb2NhbEpTWENvbW1hbmRDYWxsIH0gZnJvbSAnLi4vLi4vdHlwZXMvY29tbWFuZC5qcydcbmltcG9ydCB7IGxvZ0ZvckRlYnVnZ2luZyB9IGZyb20gJy4uLy4uL3V0aWxzL2RlYnVnLmpzJ1xuXG50eXBlIFByb3BzID0ge1xuICBvbkRvbmU6ICgpID0+IHZvaWRcbn1cblxuZnVuY3Rpb24gU2Vzc2lvbkluZm8oeyBvbkRvbmUgfTogUHJvcHMpOiBSZWFjdC5SZWFjdE5vZGUge1xuICBjb25zdCByZW1vdGVTZXNzaW9uVXJsID0gdXNlQXBwU3RhdGUocyA9PiBzLnJlbW90ZVNlc3Npb25VcmwpXG4gIGNvbnN0IFtxckNvZGUsIHNldFFyQ29kZV0gPSB1c2VTdGF0ZTxzdHJpbmc+KCcnKVxuXG4gIC8vIEdlbmVyYXRlIFFSIGNvZGUgd2hlbiBVUkwgaXMgYXZhaWxhYmxlXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFyZW1vdGVTZXNzaW9uVXJsKSByZXR1cm5cblxuICAgIGNvbnN0IHVybCA9IHJlbW90ZVNlc3Npb25VcmxcbiAgICBhc3luYyBmdW5jdGlvbiBnZW5lcmF0ZVFSQ29kZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgIGNvbnN0IHFyID0gYXdhaXQgcXJUb1N0cmluZyh1cmwsIHtcbiAgICAgICAgdHlwZTogJ3V0ZjgnLFxuICAgICAgICBlcnJvckNvcnJlY3Rpb25MZXZlbDogJ0wnLFxuICAgICAgfSlcbiAgICAgIHNldFFyQ29kZShxcilcbiAgICB9XG4gICAgLy8gSW50ZW50aW9uYWxseSBzaWxlbnQgZmFpbCAtIFVSTCBpcyBzdGlsbCBzaG93biBzbyBRUiBpcyBub24tY3JpdGljYWxcbiAgICBnZW5lcmF0ZVFSQ29kZSgpLmNhdGNoKGUgPT4ge1xuICAgICAgbG9nRm9yRGVidWdnaW5nKCdRUiBjb2RlIGdlbmVyYXRpb24gZmFpbGVkJywgZSlcbiAgICB9KVxuICB9LCBbcmVtb3RlU2Vzc2lvblVybF0pXG5cbiAgLy8gSGFuZGxlIEVTQyB0byBkaXNtaXNzXG4gIHVzZUtleWJpbmRpbmcoJ2NvbmZpcm06bm8nLCBvbkRvbmUsIHsgY29udGV4dDogJ0NvbmZpcm1hdGlvbicgfSlcblxuICAvLyBOb3QgaW4gcmVtb3RlIG1vZGVcbiAgaWYgKCFyZW1vdGVTZXNzaW9uVXJsKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxQYW5lPlxuICAgICAgICA8VGV4dCBjb2xvcj1cIndhcm5pbmdcIj5cbiAgICAgICAgICBOb3QgaW4gcmVtb3RlIG1vZGUuIFN0YXJ0IHdpdGggYGNsYXVkZSAtLXJlbW90ZWAgdG8gdXNlIHRoaXMgY29tbWFuZC5cbiAgICAgICAgPC9UZXh0PlxuICAgICAgICA8VGV4dCBkaW1Db2xvcj4ocHJlc3MgZXNjIHRvIGNsb3NlKTwvVGV4dD5cbiAgICAgIDwvUGFuZT5cbiAgICApXG4gIH1cblxuICBjb25zdCBsaW5lcyA9IHFyQ29kZS5zcGxpdCgnXFxuJykuZmlsdGVyKGxpbmUgPT4gbGluZS5sZW5ndGggPiAwKVxuICBjb25zdCBpc0xvYWRpbmcgPSBsaW5lcy5sZW5ndGggPT09IDBcblxuICByZXR1cm4gKFxuICAgIDxQYW5lPlxuICAgICAgPEJveCBtYXJnaW5Cb3R0b209ezF9PlxuICAgICAgICA8VGV4dCBib2xkPlJlbW90ZSBzZXNzaW9uPC9UZXh0PlxuICAgICAgPC9Cb3g+XG5cbiAgICAgIHsvKiBRUiBDb2RlIC0gc2lsZW50bHkgZmFpbHMgaWYgZ2VuZXJhdGlvbiBlcnJvcnMsIFVSTCBpcyBzdGlsbCBzaG93biAqL31cbiAgICAgIHtpc0xvYWRpbmcgPyAoXG4gICAgICAgIDxUZXh0IGRpbUNvbG9yPkdlbmVyYXRpbmcgUVIgY29kZeKApjwvVGV4dD5cbiAgICAgICkgOiAoXG4gICAgICAgIGxpbmVzLm1hcCgobGluZSwgaSkgPT4gPFRleHQga2V5PXtpfT57bGluZX08L1RleHQ+KVxuICAgICAgKX1cblxuICAgICAgey8qIFVSTCAqL31cbiAgICAgIDxCb3ggbWFyZ2luVG9wPXsxfT5cbiAgICAgICAgPFRleHQgZGltQ29sb3I+T3BlbiBpbiBicm93c2VyOiA8L1RleHQ+XG4gICAgICAgIDxUZXh0IGNvbG9yPVwiaWRlXCI+e3JlbW90ZVNlc3Npb25Vcmx9PC9UZXh0PlxuICAgICAgPC9Cb3g+XG5cbiAgICAgIDxCb3ggbWFyZ2luVG9wPXsxfT5cbiAgICAgICAgPFRleHQgZGltQ29sb3I+KHByZXNzIGVzYyB0byBjbG9zZSk8L1RleHQ+XG4gICAgICA8L0JveD5cbiAgICA8L1BhbmU+XG4gIClcbn1cblxuZXhwb3J0IGNvbnN0IGNhbGw6IExvY2FsSlNYQ29tbWFuZENhbGwgPSBhc3luYyBvbkRvbmUgPT4ge1xuICByZXR1cm4gPFNlc3Npb25JbmZvIG9uRG9uZT17b25Eb25lfSAvPlxufVxuIl0sIm1hcHBpbmdzIjoiO0FBQUEsU0FBU0EsUUFBUSxJQUFJQyxVQUFVLFFBQVEsUUFBUTtBQUMvQyxPQUFPLEtBQUtDLEtBQUssTUFBTSxPQUFPO0FBQzlCLFNBQVNDLFNBQVMsRUFBRUMsUUFBUSxRQUFRLE9BQU87QUFDM0MsU0FBU0MsSUFBSSxRQUFRLHdDQUF3QztBQUM3RCxTQUFTQyxHQUFHLEVBQUVDLElBQUksUUFBUSxjQUFjO0FBQ3hDLFNBQVNDLGFBQWEsUUFBUSxvQ0FBb0M7QUFDbEUsU0FBU0MsV0FBVyxRQUFRLHlCQUF5QjtBQUNyRCxjQUFjQyxtQkFBbUIsUUFBUSx3QkFBd0I7QUFDakUsU0FBU0MsZUFBZSxRQUFRLHNCQUFzQjtBQUV0RCxLQUFLQyxLQUFLLEdBQUc7RUFDWEMsTUFBTSxFQUFFLEdBQUcsR0FBRyxJQUFJO0FBQ3BCLENBQUM7QUFFRCxTQUFBQyxZQUFBQyxFQUFBO0VBQUEsTUFBQUMsQ0FBQSxHQUFBQyxFQUFBO0VBQXFCO0lBQUFKO0VBQUEsSUFBQUUsRUFBaUI7RUFDcEMsTUFBQUcsZ0JBQUEsR0FBeUJULFdBQVcsQ0FBQ1UsS0FBdUIsQ0FBQztFQUM3RCxPQUFBQyxNQUFBLEVBQUFDLFNBQUEsSUFBNEJqQixRQUFRLENBQVMsRUFBRSxDQUFDO0VBQUEsSUFBQWtCLEVBQUE7RUFBQSxJQUFBQyxFQUFBO0VBQUEsSUFBQVAsQ0FBQSxRQUFBRSxnQkFBQTtJQUd0Q0ksRUFBQSxHQUFBQSxDQUFBO01BQ1IsSUFBSSxDQUFDSixnQkFBZ0I7UUFBQTtNQUFBO01BRXJCLE1BQUFNLEdBQUEsR0FBWU4sZ0JBQWdCO01BQzVCLE1BQUFPLGNBQUEsa0JBQUFBLGVBQUE7UUFDRSxNQUFBQyxFQUFBLEdBQVcsTUFBTXpCLFVBQVUsQ0FBQ3VCLEdBQUcsRUFBRTtVQUFBRyxJQUFBLEVBQ3pCLE1BQU07VUFBQUMsb0JBQUEsRUFDVTtRQUN4QixDQUFDLENBQUM7UUFDRlAsU0FBUyxDQUFDSyxFQUFFLENBQUM7TUFBQSxDQUNkO01BRURELGNBQWMsQ0FBQyxDQUFDLENBQUFJLEtBQU0sQ0FBQ0MsTUFFdEIsQ0FBQztJQUFBLENBQ0g7SUFBRVAsRUFBQSxJQUFDTCxnQkFBZ0IsQ0FBQztJQUFBRixDQUFBLE1BQUFFLGdCQUFBO0lBQUFGLENBQUEsTUFBQU0sRUFBQTtJQUFBTixDQUFBLE1BQUFPLEVBQUE7RUFBQTtJQUFBRCxFQUFBLEdBQUFOLENBQUE7SUFBQU8sRUFBQSxHQUFBUCxDQUFBO0VBQUE7RUFmckJiLFNBQVMsQ0FBQ21CLEVBZVQsRUFBRUMsRUFBa0IsQ0FBQztFQUFBLElBQUFRLEVBQUE7RUFBQSxJQUFBZixDQUFBLFFBQUFnQixNQUFBLENBQUFDLEdBQUE7SUFHY0YsRUFBQTtNQUFBRyxPQUFBLEVBQVc7SUFBZSxDQUFDO0lBQUFsQixDQUFBLE1BQUFlLEVBQUE7RUFBQTtJQUFBQSxFQUFBLEdBQUFmLENBQUE7RUFBQTtFQUEvRFIsYUFBYSxDQUFDLFlBQVksRUFBRUssTUFBTSxFQUFFa0IsRUFBMkIsQ0FBQztFQUdoRSxJQUFJLENBQUNiLGdCQUFnQjtJQUFBLElBQUFpQixFQUFBO0lBQUEsSUFBQW5CLENBQUEsUUFBQWdCLE1BQUEsQ0FBQUMsR0FBQTtNQUVqQkUsRUFBQSxJQUFDLElBQUksQ0FDSCxDQUFDLElBQUksQ0FBTyxLQUFTLENBQVQsU0FBUyxDQUFDLHFFQUV0QixFQUZDLElBQUksQ0FHTCxDQUFDLElBQUksQ0FBQyxRQUFRLENBQVIsS0FBTyxDQUFDLENBQUMsb0JBQW9CLEVBQWxDLElBQUksQ0FDUCxFQUxDLElBQUksQ0FLRTtNQUFBbkIsQ0FBQSxNQUFBbUIsRUFBQTtJQUFBO01BQUFBLEVBQUEsR0FBQW5CLENBQUE7SUFBQTtJQUFBLE9BTFBtQixFQUtPO0VBQUE7RUFFVixJQUFBQyxFQUFBO0VBQUEsSUFBQUQsRUFBQTtFQUFBLElBQUFFLEVBQUE7RUFBQSxJQUFBckIsQ0FBQSxRQUFBSSxNQUFBO0lBRUQsTUFBQWtCLEtBQUEsR0FBY2xCLE1BQU0sQ0FBQW1CLEtBQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQUMsTUFBTyxDQUFDQyxNQUF1QixDQUFDO0lBQ2hFLE1BQUFDLFNBQUEsR0FBa0JKLEtBQUssQ0FBQUssTUFBTyxLQUFLLENBQUM7SUFHakNQLEVBQUEsR0FBQS9CLElBQUk7SUFBQSxJQUFBVyxDQUFBLFFBQUFnQixNQUFBLENBQUFDLEdBQUE7TUFDSEUsRUFBQSxJQUFDLEdBQUcsQ0FBZSxZQUFDLENBQUQsR0FBQyxDQUNsQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUosS0FBRyxDQUFDLENBQUMsY0FBYyxFQUF4QixJQUFJLENBQ1AsRUFGQyxHQUFHLENBRUU7TUFBQW5CLENBQUEsTUFBQW1CLEVBQUE7SUFBQTtNQUFBQSxFQUFBLEdBQUFuQixDQUFBO0lBQUE7SUFHTHFCLEVBQUEsR0FBQUssU0FBUyxHQUNSLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBUixLQUFPLENBQUMsQ0FBQyxtQkFBbUIsRUFBakMsSUFBSSxDQUdOLEdBRENKLEtBQUssQ0FBQU0sR0FBSSxDQUFDQyxNQUNaLENBQUM7SUFBQTdCLENBQUEsTUFBQUksTUFBQTtJQUFBSixDQUFBLE1BQUFvQixFQUFBO0lBQUFwQixDQUFBLE1BQUFtQixFQUFBO0lBQUFuQixDQUFBLE1BQUFxQixFQUFBO0VBQUE7SUFBQUQsRUFBQSxHQUFBcEIsQ0FBQTtJQUFBbUIsRUFBQSxHQUFBbkIsQ0FBQTtJQUFBcUIsRUFBQSxHQUFBckIsQ0FBQTtFQUFBO0VBQUEsSUFBQThCLEVBQUE7RUFBQSxJQUFBOUIsQ0FBQSxTQUFBZ0IsTUFBQSxDQUFBQyxHQUFBO0lBSUNhLEVBQUEsSUFBQyxJQUFJLENBQUMsUUFBUSxDQUFSLEtBQU8sQ0FBQyxDQUFDLGlCQUFpQixFQUEvQixJQUFJLENBQWtDO0lBQUE5QixDQUFBLE9BQUE4QixFQUFBO0VBQUE7SUFBQUEsRUFBQSxHQUFBOUIsQ0FBQTtFQUFBO0VBQUEsSUFBQStCLEVBQUE7RUFBQSxJQUFBL0IsQ0FBQSxTQUFBRSxnQkFBQTtJQUR6QzZCLEVBQUEsSUFBQyxHQUFHLENBQVksU0FBQyxDQUFELEdBQUMsQ0FDZixDQUFBRCxFQUFzQyxDQUN0QyxDQUFDLElBQUksQ0FBTyxLQUFLLENBQUwsS0FBSyxDQUFFNUIsaUJBQWUsQ0FBRSxFQUFuQyxJQUFJLENBQ1AsRUFIQyxHQUFHLENBR0U7SUFBQUYsQ0FBQSxPQUFBRSxnQkFBQTtJQUFBRixDQUFBLE9BQUErQixFQUFBO0VBQUE7SUFBQUEsRUFBQSxHQUFBL0IsQ0FBQTtFQUFBO0VBQUEsSUFBQWdDLEVBQUE7RUFBQSxJQUFBaEMsQ0FBQSxTQUFBZ0IsTUFBQSxDQUFBQyxHQUFBO0lBRU5lLEVBQUEsSUFBQyxHQUFHLENBQVksU0FBQyxDQUFELEdBQUMsQ0FDZixDQUFDLElBQUksQ0FBQyxRQUFRLENBQVIsS0FBTyxDQUFDLENBQUMsb0JBQW9CLEVBQWxDLElBQUksQ0FDUCxFQUZDLEdBQUcsQ0FFRTtJQUFBaEMsQ0FBQSxPQUFBZ0MsRUFBQTtFQUFBO0lBQUFBLEVBQUEsR0FBQWhDLENBQUE7RUFBQTtFQUFBLElBQUFpQyxFQUFBO0VBQUEsSUFBQWpDLENBQUEsU0FBQW9CLEVBQUEsSUFBQXBCLENBQUEsU0FBQW1CLEVBQUEsSUFBQW5CLENBQUEsU0FBQXFCLEVBQUEsSUFBQXJCLENBQUEsU0FBQStCLEVBQUE7SUFwQlJFLEVBQUEsSUFBQyxFQUFJLENBQ0gsQ0FBQWQsRUFFSyxDQUdKLENBQUFFLEVBSUQsQ0FHQSxDQUFBVSxFQUdLLENBRUwsQ0FBQUMsRUFFSyxDQUNQLEVBckJDLEVBQUksQ0FxQkU7SUFBQWhDLENBQUEsT0FBQW9CLEVBQUE7SUFBQXBCLENBQUEsT0FBQW1CLEVBQUE7SUFBQW5CLENBQUEsT0FBQXFCLEVBQUE7SUFBQXJCLENBQUEsT0FBQStCLEVBQUE7SUFBQS9CLENBQUEsT0FBQWlDLEVBQUE7RUFBQTtJQUFBQSxFQUFBLEdBQUFqQyxDQUFBO0VBQUE7RUFBQSxPQXJCUGlDLEVBcUJPO0FBQUE7QUE5RFgsU0FBQUosT0FBQUssTUFBQSxFQUFBQyxDQUFBO0VBQUEsT0FrRCtCLENBQUMsSUFBSSxDQUFNQSxHQUFDLENBQURBLEVBQUEsQ0FBQyxDQUFHQyxPQUFHLENBQUUsRUFBbkIsSUFBSSxDQUFzQjtBQUFBO0FBbEQxRCxTQUFBWCxPQUFBVyxJQUFBO0VBQUEsT0FxQ2tEQSxJQUFJLENBQUFULE1BQU8sR0FBRyxDQUFDO0FBQUE7QUFyQ2pFLFNBQUFiLE9BQUF1QixDQUFBO0VBa0JNMUMsZUFBZSxDQUFDLDJCQUEyQixFQUFFMEMsQ0FBQyxDQUFDO0FBQUE7QUFsQnJELFNBQUFsQyxNQUFBbUMsQ0FBQTtFQUFBLE9BQzRDQSxDQUFDLENBQUFwQyxnQkFBaUI7QUFBQTtBQWlFOUQsT0FBTyxNQUFNcUMsSUFBSSxFQUFFN0MsbUJBQW1CLEdBQUcsTUFBTUcsTUFBTSxJQUFJO0VBQ3ZELE9BQU8sQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUNBLE1BQU0sQ0FBQyxHQUFHO0FBQ3hDLENBQUMiLCJpZ25vcmVMaXN0IjpbXX0=