23 lines
62 KiB
JSON
23 lines
62 KiB
JSON
{
|
|
"version": "0.1.0",
|
|
"installerTemplate": "#!/usr/bin/env bash\n# Generated by the FEDEO setup wizard. This file contains the agent's access token.\nset -euo pipefail\numask 077\n\nif [[ \"$(uname -s)\" != Linux ]]; then\n echo 'Diese Installation ist für Linux vorgesehen.' >&2\n exit 1\nfi\nif [[ \"$(id -u)\" == 0 ]]; then\n echo 'Bitte dieses Skript als normaler Benutzer ohne sudo starten.' >&2\n exit 1\nfi\nif [[ \"${1:-}\" != '' && \"${1:-}\" != --no-start ]]; then\n echo 'Aufruf: bash install.sh [--no-start]' >&2\n exit 1\nfi\n\nFEDEO_SETUP_ID='@@AGENT_ID@@'\nFEDEO_SETUP_AUTOSTART='@@AUTOSTART@@'\nFEDEO_SETUP_DIR=\"${XDG_DATA_HOME:-$HOME/.local/share}/fedeo-device-agent/$FEDEO_SETUP_ID\"\nFEDEO_SETUP_CONFIG=\"${XDG_CONFIG_HOME:-$HOME/.config}/fedeo-device-agent/$FEDEO_SETUP_ID.env\"\nFEDEO_SETUP_WORK=\"${XDG_STATE_HOME:-$HOME/.local/state}/fedeo-device-agent/$FEDEO_SETUP_ID\"\nFEDEO_SETUP_UNIT=\"fedeo-device-agent-$FEDEO_SETUP_ID.service\"\nFEDEO_SETUP_UNITS=\"${XDG_CONFIG_HOME:-$HOME/.config}/systemd/user\"\n\necho 'FEDEO Scan-Agent wird für diesen Benutzer eingerichtet.'\nfedeo_processing_ready() {\n python3 -c 'import PIL, cv2, numpy' >/dev/null 2>&1 &&\n tesseract --list-langs 2>/dev/null | grep -qx deu &&\n tesseract --list-langs 2>/dev/null | grep -qx eng\n}\nif ! command -v node >/dev/null || ! command -v scanimage >/dev/null || ! fedeo_processing_ready; then\n if ! command -v apt-get >/dev/null; then\n echo 'Bitte Node.js >= 20, SANE, Python/Pillow/OpenCV sowie Tesseract mit Deutsch/Englisch installieren und das Skript erneut starten.' >&2\n exit 1\n fi\n echo 'Fehlende Systempakete werden über apt installiert (sudo benötigt).'\n sudo apt-get update\n sudo apt-get install -y nodejs sane-utils python3-pil python3-opencv tesseract-ocr tesseract-ocr-deu tesseract-ocr-eng\nfi\nnode -e 'if (Number(process.versions.node.split(\".\")[0]) < 20) { console.error(\"Node.js >= 20 wird benötigt. Bitte Node.js aktualisieren und die Installation erneut starten.\"); process.exit(1) }'\nfedeo_processing_ready || { echo 'Die benötigte Bildverarbeitung oder die OCR-Sprachpakete fehlen weiterhin.' >&2; exit 1; }\n\nFEDEO_SETUP_NODE=\"$(command -v node)\"\nFEDEO_SETUP_HAS_SYSTEMD=false\nif command -v systemctl >/dev/null && systemctl --user show-environment >/dev/null 2>&1; then\n FEDEO_SETUP_HAS_SYSTEMD=true\nfi\nif [[ \"$FEDEO_SETUP_AUTOSTART\" == true && \"$FEDEO_SETUP_HAS_SYSTEMD\" != true ]]; then\n echo 'Der Benutzerdienst von systemd ist nicht erreichbar. Bitte in der Desktop-Sitzung starten oder den Autostart im Assistenten ausschalten.' >&2\n exit 1\nfi\n\nmkdir -p \"$FEDEO_SETUP_DIR\" \"$(dirname \"$FEDEO_SETUP_CONFIG\")\" \"$FEDEO_SETUP_WORK\" \"$FEDEO_SETUP_UNITS\"\n# Stop only the matching installation before replacing its files.\nif [[ \"$FEDEO_SETUP_HAS_SYSTEMD\" == true && \"${1:-}\" != --no-start ]]; then\n systemctl --user stop \"$FEDEO_SETUP_UNIT\" 2>/dev/null || true\nfi\n\npython3 - \"$FEDEO_SETUP_DIR\" \"$FEDEO_SETUP_CONFIG\" \"$FEDEO_SETUP_WORK\" \"$FEDEO_SETUP_NODE\" \"$FEDEO_SETUP_UNITS/$FEDEO_SETUP_UNIT\" <<'FEDEO_PYTHON'\nimport base64\nimport json\nimport os\nfrom pathlib import Path\nimport sys\n\nagent_dir, config_path, work_dir, node, unit_path = map(Path, sys.argv[1:])\nfiles = json.loads(base64.b64decode('@@PAYLOAD_BASE64@@'))\nfor name, encoded in files.items():\n relative = Path(name)\n if relative.is_absolute() or '..' in relative.parts:\n raise ValueError('Ungültiger Dateiname im Installationspaket')\n target = agent_dir / relative\n target.parent.mkdir(parents=True, exist_ok=True)\n target.write_bytes(base64.b64decode(encoded, validate=True))\n\nconfig = base64.b64decode('@@CONFIG_BASE64@@').decode('utf8')\nconfig += 'FEDEO_WORK_DIR=' + str(work_dir) + '\\n'\nconfig_path.write_text(config, encoding='utf8')\nconfig_path.chmod(0o600)\n\ndef unit_quote(value):\n return '\"' + str(value).replace('\\\\', '\\\\\\\\').replace('\"', '\\\\\"').replace('%', '%%') + '\"'\n\nunit_path.write_text('\\n'.join([\n '[Unit]', 'Description=FEDEO Scan-Agent', 'After=network-online.target', '',\n '[Service]', 'Type=simple',\n # WorkingDirectory takes a literal path, unlike Environment/ExecStart.\n # Quotes would become part of the path; only systemd specifiers need escaping.\n 'WorkingDirectory=' + str(agent_dir).replace('%', '%%'),\n 'Environment=' + unit_quote('FEDEO_AGENT_ENV=' + str(config_path)),\n 'ExecStart=' + unit_quote(node) + ' ' + unit_quote(agent_dir / 'dist/main.js'),\n 'Restart=on-failure', 'RestartSec=5', 'UMask=0077', '',\n '[Install]', 'WantedBy=default.target', '',\n]), encoding='utf8')\nFEDEO_PYTHON\n\necho \"Agent installiert: $FEDEO_SETUP_DIR\"\necho \"Konfiguration: $FEDEO_SETUP_CONFIG\"\nif [[ \"${1:-}\" == --no-start ]]; then\n echo 'Installation abgeschlossen; Agent wurde nicht gestartet.'\nelif [[ \"$FEDEO_SETUP_AUTOSTART\" == true ]]; then\n systemctl --user daemon-reload\n systemctl --user enable \"$FEDEO_SETUP_UNIT\"\n systemctl --user restart \"$FEDEO_SETUP_UNIT\"\n echo 'Agent gestartet. Er startet künftig bei der Anmeldung.'\n printf 'Protokoll: journalctl --user -u %q -f\\n' \"$FEDEO_SETUP_UNIT\"\n echo 'Jetzt im FEDEO-Assistenten die Verbindung prüfen. Die heruntergeladene Installationsdatei kann anschließend gelöscht werden.'\nelse\n if [[ \"$FEDEO_SETUP_HAS_SYSTEMD\" == true ]]; then\n systemctl --user disable \"$FEDEO_SETUP_UNIT\" 2>/dev/null || true\n systemctl --user daemon-reload\n fi\n echo 'Agent startet im Terminal. Dieses Fenster geöffnet lassen; Beenden mit Strg+C.'\n cd \"$FEDEO_SETUP_DIR\"\n FEDEO_AGENT_ENV=\"$FEDEO_SETUP_CONFIG\" \"$FEDEO_SETUP_NODE\" dist/main.js\nfi\n",
|
|
"files": {
|
|
"dist/api.js": "aW1wb3J0IHsgcmVhZEZpbGUsIHN0YXQgfSBmcm9tICJub2RlOmZzL3Byb21pc2VzIjsKaW1wb3J0IHsgYmFzZW5hbWUgfSBmcm9tICJub2RlOnBhdGgiOwpleHBvcnQgY2xhc3MgRmVkZW9BcGkgewogICAgY29uZmlnOwogICAgY29uc3RydWN0b3IoY29uZmlnKSB7CiAgICAgICAgdGhpcy5jb25maWcgPSBjb25maWc7CiAgICB9CiAgICB1cmwocGF0aCkgewogICAgICAgIHJldHVybiBgJHt0aGlzLmNvbmZpZy5mZWRlb1VybH0ke3BhdGh9YDsKICAgIH0KICAgIGhlYWRlcnMoZXh0cmEpIHsKICAgICAgICByZXR1cm4gewogICAgICAgICAgICAiWC1BZ2VudC1Ub2tlbiI6IHRoaXMuY29uZmlnLmFnZW50VG9rZW4sCiAgICAgICAgICAgIC4uLmV4dHJhLAogICAgICAgIH07CiAgICB9CiAgICBhc3luYyByZXF1ZXN0KHBhdGgsIGluaXQgPSB7fSwgdGltZW91dE1zID0gMzBfMDAwKSB7CiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaCh0aGlzLnVybChwYXRoKSwgewogICAgICAgICAgICAuLi5pbml0LAogICAgICAgICAgICBoZWFkZXJzOiB0aGlzLmhlYWRlcnMoaW5pdC5oZWFkZXJzKSwKICAgICAgICAgICAgc2lnbmFsOiBBYm9ydFNpZ25hbC50aW1lb3V0KHRpbWVvdXRNcyksCiAgICAgICAgfSk7CiAgICAgICAgaWYgKCFyZXNwb25zZS5vaykgewogICAgICAgICAgICBjb25zdCBib2R5ID0gYXdhaXQgcmVzcG9uc2UudGV4dCgpLmNhdGNoKCgpID0+ICIiKTsKICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGAke2luaXQubWV0aG9kIHx8ICJHRVQifSAke3BhdGh9IGZlaGxnZXNjaGxhZ2VuOiAke3Jlc3BvbnNlLnN0YXR1c30gJHtib2R5fWApOwogICAgICAgIH0KICAgICAgICByZXR1cm4gYXdhaXQgcmVzcG9uc2UuanNvbigpOwogICAgfQogICAgaGVhcnRiZWF0KHBheWxvYWQpIHsKICAgICAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KCIvaW5zdGFuY2UtYWdlbnQvaGVhcnRiZWF0IiwgewogICAgICAgICAgICBtZXRob2Q6ICJQT1NUIiwKICAgICAgICAgICAgaGVhZGVyczogeyAiQ29udGVudC1UeXBlIjogImFwcGxpY2F0aW9uL2pzb24iIH0sCiAgICAgICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHBheWxvYWQpLAogICAgICAgIH0pOwogICAgfQogICAgbmV4dFNjYW5Kb2IoKSB7CiAgICAgICAgcmV0dXJuIHRoaXMucmVxdWVzdCgiL2luc3RhbmNlLWFnZW50L3NjYW4tam9icy9uZXh0Iik7CiAgICB9CiAgICB1cGRhdGVTY2FuSm9iU3RhdHVzKGpvYklkLCBzdGF0dXMsIG1lc3NhZ2UpIHsKICAgICAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KGAvaW5zdGFuY2UtYWdlbnQvc2Nhbi1qb2JzLyR7am9iSWR9L3N0YXR1c2AsIHsKICAgICAgICAgICAgbWV0aG9kOiAiUE9TVCIsCiAgICAgICAgICAgIGhlYWRlcnM6IHsgIkNvbnRlbnQtVHlwZSI6ICJhcHBsaWNhdGlvbi9qc29uIiB9LAogICAgICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7IHN0YXR1cywgbWVzc2FnZSB9KSwKICAgICAgICB9KTsKICAgIH0KICAgIGFzeW5jIHVwbG9hZFNjYW4oam9iSWQsIHJlc3VsdCkgewogICAgICAgIGlmICgoYXdhaXQgc3RhdChyZXN1bHQucGF0aCkpLnNpemUgPiAxMDAgKiAxMDI0ICogMTAyNCkgewogICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkRpZSBTY2FuLURhdGVpIMO8YmVyc2NocmVpdGV0IGRhcyBVcGxvYWQtTGltaXQgdm9uIDEwMCBNaUIuIEJpdHRlIGRlbiBTdGFwZWwgYXVmdGVpbGVuIG9kZXIgZGllIEF1ZmzDtnN1bmcgcmVkdXppZXJlbi4iKTsKICAgICAgICB9CiAgICAgICAgY29uc3QgZm9ybSA9IG5ldyBGb3JtRGF0YSgpOwogICAgICAgIGNvbnN0IGZpbGVCdWZmZXIgPSBhd2FpdCByZWFkRmlsZShyZXN1bHQucGF0aCk7CiAgICAgICAgY29uc3QgZmlsZSA9IG5ldyBGaWxlKFtmaWxlQnVmZmVyXSwgcmVzdWx0LmZpbGVuYW1lIHx8IGJhc2VuYW1lKHJlc3VsdC5wYXRoKSwgewogICAgICAgICAgICB0eXBlOiByZXN1bHQubWltZVR5cGUsCiAgICAgICAgfSk7CiAgICAgICAgZm9ybS5hcHBlbmQoImZpbGUiLCBmaWxlKTsKICAgICAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KGAvaW5zdGFuY2UtYWdlbnQvc2Nhbi1qb2JzLyR7am9iSWR9L3VwbG9hZGAsIHsKICAgICAgICAgICAgbWV0aG9kOiAiUE9TVCIsCiAgICAgICAgICAgIGJvZHk6IGZvcm0sCiAgICAgICAgfSwgMTIwXzAwMCk7CiAgICB9Cn0K",
|
|
"dist/commands.js": "aW1wb3J0IHsgc3Bhd24gfSBmcm9tICJub2RlOmNoaWxkX3Byb2Nlc3MiOwpleHBvcnQgY29uc3QgY29tbWFuZEV4aXN0cyA9IChjb21tYW5kKSA9PiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gewogICAgY29uc3QgY2hpbGQgPSBzcGF3bigic2giLCBbIi1jIiwgJ2NvbW1hbmQgLXYgIiQxIiA+L2Rldi9udWxsIDI+JjEnLCAiLS0iLCBjb21tYW5kXSk7CiAgICBjaGlsZC5vbigiZXJyb3IiLCAoKSA9PiByZXNvbHZlKGZhbHNlKSk7CiAgICBjaGlsZC5vbigiY2xvc2UiLCAoY29kZSkgPT4gcmVzb2x2ZShjb2RlID09PSAwKSk7Cn0pOwpleHBvcnQgY29uc3QgcnVuQ29tbWFuZCA9IChjb21tYW5kLCBhcmdzLCBvcHRpb25zID0ge30pID0+IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKICAgIGNvbnN0IGNoaWxkID0gc3Bhd24oY29tbWFuZCwgYXJncywgewogICAgICAgIHN0ZGlvOiBbImlnbm9yZSIsICJwaXBlIiwgInBpcGUiXSwKICAgICAgICBjd2Q6IG9wdGlvbnMuY3dkLAogICAgfSk7CiAgICBjb25zdCBzdGRvdXQgPSBbXTsKICAgIGNvbnN0IHN0ZGVyciA9IFtdOwogICAgbGV0IHRpbWVkT3V0ID0gZmFsc2U7CiAgICBsZXQga2lsbFRpbWVvdXQ7CiAgICBjb25zdCB0aW1lb3V0ID0gb3B0aW9ucy50aW1lb3V0TXMKICAgICAgICA/IHNldFRpbWVvdXQoKCkgPT4gewogICAgICAgICAgICB0aW1lZE91dCA9IHRydWU7CiAgICAgICAgICAgIGNoaWxkLmtpbGwoIlNJR1RFUk0iKTsKICAgICAgICAgICAga2lsbFRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IGNoaWxkLmtpbGwoIlNJR0tJTEwiKSwgMjAwMCk7CiAgICAgICAgfSwgb3B0aW9ucy50aW1lb3V0TXMpCiAgICAgICAgOiBudWxsOwogICAgY2hpbGQuc3Rkb3V0Lm9uKCJkYXRhIiwgKGNodW5rKSA9PiBzdGRvdXQucHVzaChCdWZmZXIuZnJvbShjaHVuaykpKTsKICAgIGNoaWxkLnN0ZGVyci5vbigiZGF0YSIsIChjaHVuaykgPT4gc3RkZXJyLnB1c2goQnVmZmVyLmZyb20oY2h1bmspKSk7CiAgICBjaGlsZC5vbigiZXJyb3IiLCAoZXJyb3IpID0+IHsKICAgICAgICBpZiAodGltZW91dCkKICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpOwogICAgICAgIGlmIChraWxsVGltZW91dCkKICAgICAgICAgICAgY2xlYXJUaW1lb3V0KGtpbGxUaW1lb3V0KTsKICAgICAgICByZWplY3QoZXJyb3IpOwogICAgfSk7CiAgICBjaGlsZC5vbigiY2xvc2UiLCAoY29kZSwgc2lnbmFsKSA9PiB7CiAgICAgICAgaWYgKHRpbWVvdXQpCiAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0KTsKICAgICAgICBpZiAoa2lsbFRpbWVvdXQpCiAgICAgICAgICAgIGNsZWFyVGltZW91dChraWxsVGltZW91dCk7CiAgICAgICAgaWYgKHRpbWVkT3V0KSB7CiAgICAgICAgICAgIHJlamVjdChuZXcgRXJyb3IoYCR7Y29tbWFuZH0gd3VyZGUgbmFjaCAke29wdGlvbnMudGltZW91dE1zfSBtcyBiZWVuZGV0YCkpOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIGlmIChzaWduYWwpIHsKICAgICAgICAgICAgcmVqZWN0KG5ldyBFcnJvcihgJHtjb21tYW5kfSB3dXJkZSBkdXJjaCAke3NpZ25hbH0gYmVlbmRldGApKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICByZXNvbHZlKHsKICAgICAgICAgICAgc3Rkb3V0OiBCdWZmZXIuY29uY2F0KHN0ZG91dCkudG9TdHJpbmcoInV0ZjgiKSwKICAgICAgICAgICAgc3RkZXJyOiBCdWZmZXIuY29uY2F0KHN0ZGVycikudG9TdHJpbmcoInV0ZjgiKSwKICAgICAgICAgICAgY29kZTogY29kZSA/PyAxLAogICAgICAgIH0pOwogICAgfSk7Cn0pOwo=",
|
|
"dist/config.js": "aW1wb3J0IHBhdGggZnJvbSAibm9kZTpwYXRoIjsKaW1wb3J0IG9zIGZyb20gIm5vZGU6b3MiOwppbXBvcnQgeyBleGlzdHNTeW5jIH0gZnJvbSAibm9kZTpmcyI7CmltcG9ydCB7IGZpbGVVUkxUb1BhdGggfSBmcm9tICJub2RlOnVybCI7CmltcG9ydCB7IGxvYWREb3RFbnYgfSBmcm9tICIuL2Vudi5qcyI7CmNvbnN0IGN1cnJlbnRGaWxlID0gZmlsZVVSTFRvUGF0aChpbXBvcnQubWV0YS51cmwpOwpjb25zdCBhZ2VudFJvb3QgPSBwYXRoLnJlc29sdmUocGF0aC5kaXJuYW1lKGN1cnJlbnRGaWxlKSwgIi4uIik7CmNvbnN0IG9wdGlvbmFsID0gKHZhbHVlKSA9PiB7CiAgICBjb25zdCB0cmltbWVkID0gdmFsdWU/LnRyaW0oKTsKICAgIHJldHVybiB0cmltbWVkID8gdHJpbW1lZCA6IHVuZGVmaW5lZDsKfTsKY29uc3QgbnVtYmVyRnJvbUVudiA9ICh2YWx1ZSwgZmFsbGJhY2spID0+IHsKICAgIGlmICghdmFsdWUpCiAgICAgICAgcmV0dXJuIGZhbGxiYWNrOwogICAgY29uc3QgcGFyc2VkID0gTnVtYmVyKHZhbHVlKTsKICAgIHJldHVybiBOdW1iZXIuaXNGaW5pdGUocGFyc2VkKSAmJiBwYXJzZWQgPiAwID8gcGFyc2VkIDogZmFsbGJhY2s7Cn07CmNvbnN0IHNjYW5Gb3JtYXRGcm9tRW52ID0gKHZhbHVlKSA9PiB7CiAgICBpZiAodmFsdWUgPT09ICJwbmciIHx8IHZhbHVlID09PSAidGlmZiIgfHwgdmFsdWUgPT09ICJwZGYiKQogICAgICAgIHJldHVybiB2YWx1ZTsKICAgIHJldHVybiAicGRmIjsKfTsKY29uc3QgYm9vbGVhbkZyb21FbnYgPSAodmFsdWUsIGZhbGxiYWNrKSA9PiB7CiAgICBpZiAoIXZhbHVlKQogICAgICAgIHJldHVybiBmYWxsYmFjazsKICAgIHJldHVybiBbIjEiLCAidHJ1ZSIsICJ5ZXMiLCAiamEiLCAib24iXS5pbmNsdWRlcyh2YWx1ZS50cmltKCkudG9Mb3dlckNhc2UoKSk7Cn07CmNvbnN0IHBvc3Rwcm9jZXNzUHJvZmlsZUZyb21FbnYgPSAodmFsdWUpID0+IHsKICAgIGlmICh2YWx1ZSA9PT0gImRvY3VtZW50IiB8fCB2YWx1ZSA9PT0gInJlY2VpcHQiIHx8IHZhbHVlID09PSAicmF3IikKICAgICAgICByZXR1cm4gdmFsdWU7CiAgICByZXR1cm4gImRvY3VtZW50IjsKfTsKY29uc3QgZGVmYXVsdFBvc3Rwcm9jZXNzUHl0aG9uID0gKCkgPT4gewogICAgY29uc3QgbG9jYWxWZW52UHl0aG9uID0gcGF0aC5qb2luKGFnZW50Um9vdCwgIi52ZW52LW9wZW5jdiIsICJiaW4iLCAicHl0aG9uIik7CiAgICByZXR1cm4gZXhpc3RzU3luYyhsb2NhbFZlbnZQeXRob24pID8gbG9jYWxWZW52UHl0aG9uIDogInB5dGhvbjMiOwp9OwpleHBvcnQgY29uc3QgbG9hZENvbmZpZyA9ICgpID0+IHsKICAgIGxvYWREb3RFbnYocHJvY2Vzcy5lbnYuRkVERU9fQUdFTlRfRU5WIHx8ICIuZW52Iik7CiAgICBjb25zdCBmZWRlb1VybCA9IG9wdGlvbmFsKHByb2Nlc3MuZW52LkZFREVPX1VSTCk7CiAgICBjb25zdCBhZ2VudFRva2VuID0gb3B0aW9uYWwocHJvY2Vzcy5lbnYuRkVERU9fQUdFTlRfVE9LRU4pOwogICAgaWYgKCFmZWRlb1VybCkKICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkZFREVPX1VSTCBmZWhsdCIpOwogICAgaWYgKCFhZ2VudFRva2VuKQogICAgICAgIHRocm93IG5ldyBFcnJvcigiRkVERU9fQUdFTlRfVE9LRU4gZmVobHQiKTsKICAgIHJldHVybiB7CiAgICAgICAgZmVkZW9Vcmw6IGZlZGVvVXJsLnJlcGxhY2UoL1wvKyQvLCAiIiksCiAgICAgICAgYWdlbnRUb2tlbiwKICAgICAgICBwb2xsU2Vjb25kczogbnVtYmVyRnJvbUVudihwcm9jZXNzLmVudi5GRURFT19QT0xMX1NFQ09ORFMsIDUpLAogICAgICAgIHdvcmtEaXI6IG9wdGlvbmFsKHByb2Nlc3MuZW52LkZFREVPX1dPUktfRElSKSB8fCBwYXRoLmpvaW4ob3MudG1wZGlyKCksICJmZWRlby1kZXZpY2UtYWdlbnQiKSwKICAgICAgICBzY2FubmVyTmFtZTogb3B0aW9uYWwocHJvY2Vzcy5lbnYuRkVERU9fU0NBTk5FUl9OQU1FKSwKICAgICAgICBwcmludGVyTmFtZTogb3B0aW9uYWwocHJvY2Vzcy5lbnYuRkVERU9fUFJJTlRFUl9OQU1FKSwKICAgICAgICBzY2FuRm9ybWF0OiBzY2FuRm9ybWF0RnJvbUVudihwcm9jZXNzLmVudi5GRURFT19TQ0FOX0ZPUk1BVCksCiAgICAgICAgc2NhblJlc29sdXRpb246IG51bWJlckZyb21FbnYocHJvY2Vzcy5lbnYuRkVERU9fU0NBTl9SRVNPTFVUSU9OLCAzMDApLAogICAgICAgIHNjYW5Nb2RlOiBvcHRpb25hbChwcm9jZXNzLmVudi5GRURFT19TQ0FOX01PREUpIHx8ICJDb2xvciIsCiAgICAgICAgc2NhblNvdXJjZTogb3B0aW9uYWwocHJvY2Vzcy5lbnYuRkVERU9fU0NBTl9TT1VSQ0UpLAogICAgICAgIHNjYW5UaW1lb3V0U2Vjb25kczogbnVtYmVyRnJvbUVudihwcm9jZXNzLmVudi5GRURFT19TQ0FOX1RJTUVPVVRfU0VDT05EUywgOTAwKSwKICAgICAgICBzY2FuUG9zdHByb2Nlc3M6IGJvb2xlYW5Gcm9tRW52KHByb2Nlc3MuZW52LkZFREVPX1NDQU5fUE9TVFBST0NFU1MsIGZhbHNlKSwKICAgICAgICBzY2FuQmFja2dyb3VuZENsZWFudXA6IGJvb2xlYW5Gcm9tRW52KHByb2Nlc3MuZW52LkZFREVPX1NDQU5fQkFDS0dST1VORF9DTEVBTlVQLCB0cnVlKSwKICAgICAgICBzY2FuT2NyOiBib29sZWFuRnJvbUVudihwcm9jZXNzLmVudi5GRURFT19TQ0FOX09DUiwgdHJ1ZSksCiAgICAgICAgc2Nhbk9jckxhbmd1YWdlOiBvcHRpb25hbChwcm9jZXNzLmVudi5GRURFT19TQ0FOX09DUl9MQU5HVUFHRSkgfHwgImRldStlbmciLAogICAgICAgIHBvc3Rwcm9jZXNzUHJvZmlsZTogcG9zdHByb2Nlc3NQcm9maWxlRnJvbUVudihwcm9jZXNzLmVudi5GRURFT19TQ0FOX1BPU1RQUk9DRVNTX1BST0ZJTEUpLAogICAgICAgIHBvc3Rwcm9jZXNzUHl0aG9uOiBvcHRpb25hbChwcm9jZXNzLmVudi5GRURFT19TQ0FOX1BPU1RQUk9DRVNTX1BZVEhPTikgfHwgZGVmYXVsdFBvc3Rwcm9jZXNzUHl0aG9uKCksCiAgICAgICAgcG9zdHByb2Nlc3NTdHJpY3Q6IGJvb2xlYW5Gcm9tRW52KHByb2Nlc3MuZW52LkZFREVPX1NDQU5fUE9TVFBST0NFU1NfU1RSSUNULCBmYWxzZSksCiAgICB9Owp9Owo=",
|
|
"dist/env.js": "aW1wb3J0IHsgcmVhZEZpbGVTeW5jLCBleGlzdHNTeW5jIH0gZnJvbSAibm9kZTpmcyI7CmNvbnN0IHBhcnNlRW52TGluZSA9IChsaW5lKSA9PiB7CiAgICBjb25zdCB0cmltbWVkID0gbGluZS50cmltKCk7CiAgICBpZiAoIXRyaW1tZWQgfHwgdHJpbW1lZC5zdGFydHNXaXRoKCIjIikpCiAgICAgICAgcmV0dXJuIG51bGw7CiAgICBjb25zdCBzZXBhcmF0b3IgPSB0cmltbWVkLmluZGV4T2YoIj0iKTsKICAgIGlmIChzZXBhcmF0b3IgPT09IC0xKQogICAgICAgIHJldHVybiBudWxsOwogICAgY29uc3Qga2V5ID0gdHJpbW1lZC5zbGljZSgwLCBzZXBhcmF0b3IpLnRyaW0oKTsKICAgIGxldCB2YWx1ZSA9IHRyaW1tZWQuc2xpY2Uoc2VwYXJhdG9yICsgMSkudHJpbSgpOwogICAgaWYgKCh2YWx1ZS5zdGFydHNXaXRoKCJcIiIpICYmIHZhbHVlLmVuZHNXaXRoKCJcIiIpKSB8fAogICAgICAgICh2YWx1ZS5zdGFydHNXaXRoKCInIikgJiYgdmFsdWUuZW5kc1dpdGgoIiciKSkpIHsKICAgICAgICB2YWx1ZSA9IHZhbHVlLnNsaWNlKDEsIC0xKTsKICAgIH0KICAgIHJldHVybiB7IGtleSwgdmFsdWUgfTsKfTsKZXhwb3J0IGNvbnN0IGxvYWREb3RFbnYgPSAocGF0aCA9ICIuZW52IikgPT4gewogICAgaWYgKCFleGlzdHNTeW5jKHBhdGgpKQogICAgICAgIHJldHVybjsKICAgIGNvbnN0IGNvbnRlbnQgPSByZWFkRmlsZVN5bmMocGF0aCwgInV0ZjgiKTsKICAgIGZvciAoY29uc3QgbGluZSBvZiBjb250ZW50LnNwbGl0KC9ccj9cbi8pKSB7CiAgICAgICAgY29uc3QgcGFyc2VkID0gcGFyc2VFbnZMaW5lKGxpbmUpOwogICAgICAgIGlmICghcGFyc2VkKQogICAgICAgICAgICBjb250aW51ZTsKICAgICAgICBpZiAocHJvY2Vzcy5lbnZbcGFyc2VkLmtleV0gPT09IHVuZGVmaW5lZCkKICAgICAgICAgICAgcHJvY2Vzcy5lbnZbcGFyc2VkLmtleV0gPSBwYXJzZWQudmFsdWU7CiAgICB9Cn07Cg==",
|
|
"dist/logger.js": "Y29uc3QgdGltZXN0YW1wID0gKCkgPT4gbmV3IERhdGUoKS50b0lTT1N0cmluZygpOwpleHBvcnQgY29uc3QgbG9nID0gewogICAgaW5mbyhtZXNzYWdlLCBtZXRhKSB7CiAgICAgICAgaWYgKG1ldGEgPT09IHVuZGVmaW5lZCkgewogICAgICAgICAgICBjb25zb2xlLmxvZyhgWyR7dGltZXN0YW1wKCl9XSBJTkZPICR7bWVzc2FnZX1gKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICBjb25zb2xlLmxvZyhgWyR7dGltZXN0YW1wKCl9XSBJTkZPICR7bWVzc2FnZX1gLCBtZXRhKTsKICAgIH0sCiAgICB3YXJuKG1lc3NhZ2UsIG1ldGEpIHsKICAgICAgICBpZiAobWV0YSA9PT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICAgIGNvbnNvbGUud2FybihgWyR7dGltZXN0YW1wKCl9XSBXQVJOICR7bWVzc2FnZX1gKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICBjb25zb2xlLndhcm4oYFske3RpbWVzdGFtcCgpfV0gV0FSTiAke21lc3NhZ2V9YCwgbWV0YSk7CiAgICB9LAogICAgZXJyb3IobWVzc2FnZSwgbWV0YSkgewogICAgICAgIGlmIChtZXRhID09PSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgY29uc29sZS5lcnJvcihgWyR7dGltZXN0YW1wKCl9XSBFUlJPUiAke21lc3NhZ2V9YCk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgY29uc29sZS5lcnJvcihgWyR7dGltZXN0YW1wKCl9XSBFUlJPUiAke21lc3NhZ2V9YCwgbWV0YSk7CiAgICB9LAp9Owo=",
|
|
"dist/main.js": "IyEvdXNyL2Jpbi9lbnYgbm9kZQppbXBvcnQgb3MgZnJvbSAibm9kZTpvcyI7CmltcG9ydCBwYXRoIGZyb20gIm5vZGU6cGF0aCI7CmltcG9ydCB7IHJtIH0gZnJvbSAibm9kZTpmcy9wcm9taXNlcyI7CmltcG9ydCB7IEZlZGVvQXBpIH0gZnJvbSAiLi9hcGkuanMiOwppbXBvcnQgeyBsb2FkQ29uZmlnIH0gZnJvbSAiLi9jb25maWcuanMiOwppbXBvcnQgeyBsb2cgfSBmcm9tICIuL2xvZ2dlci5qcyI7CmltcG9ydCB7IGxpc3RQcmludGVycyB9IGZyb20gIi4vcHJpbnQvY3Vwcy5qcyI7CmltcG9ydCB7IGhhc1NhbmUsIGxpc3RTY2FubmVycywgcnVuU2NhbiB9IGZyb20gIi4vc2Nhbi9zYW5lLmpzIjsKaW1wb3J0IHsgcHJvY2Vzc2luZ0NhcGFiaWxpdGllcyB9IGZyb20gIi4vc2Nhbi9wb3N0cHJvY2Vzcy5qcyI7CmNvbnN0IHNsZWVwID0gKG1zKSA9PiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gc2V0VGltZW91dChyZXNvbHZlLCBtcykpOwpjb25zdCBzdHJpbmdpZnlFcnJvciA9IChlcnJvcikgPT4gewogICAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpCiAgICAgICAgcmV0dXJuIGVycm9yLm1lc3NhZ2U7CiAgICByZXR1cm4gU3RyaW5nKGVycm9yKTsKfTsKY29uc3QgbWFpbiA9IGFzeW5jICgpID0+IHsKICAgIGNvbnN0IGNvbmZpZyA9IGxvYWRDb25maWcoKTsKICAgIGNvbnN0IGFwaSA9IG5ldyBGZWRlb0FwaShjb25maWcpOwogICAgY29uc3QgcHJvY2Vzc2luZyA9IGF3YWl0IHByb2Nlc3NpbmdDYXBhYmlsaXRpZXMoY29uZmlnKTsKICAgIGxvZy5pbmZvKCJGRURFTyBHZXLDpHRlLUFnZW50IHN0YXJ0ZXQiLCB7CiAgICAgICAgcGxhdGZvcm06IHByb2Nlc3MucGxhdGZvcm0sCiAgICAgICAgd29ya0RpcjogY29uZmlnLndvcmtEaXIsCiAgICAgICAgcG9sbFNlY29uZHM6IGNvbmZpZy5wb2xsU2Vjb25kcywKICAgIH0pOwogICAgd2hpbGUgKHRydWUpIHsKICAgICAgICB0cnkgewogICAgICAgICAgICBjb25zdCBzY2FubmVyTmFtZXMgPSBhd2FpdCBsaXN0U2Nhbm5lcnMoKS5jYXRjaCgoZXJyb3IpID0+IHsKICAgICAgICAgICAgICAgIGxvZy53YXJuKCJTY2FubmVyLUVya2VubnVuZyBmZWhsZ2VzY2hsYWdlbiIsIHN0cmluZ2lmeUVycm9yKGVycm9yKSk7CiAgICAgICAgICAgICAgICByZXR1cm4gW107CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICBjb25zdCBwcmludGVyTmFtZXMgPSBhd2FpdCBsaXN0UHJpbnRlcnMoKS5jYXRjaCgoKSA9PiBbXSk7CiAgICAgICAgICAgIGNvbnN0IHNjYW5BdmFpbGFibGUgPSBhd2FpdCBoYXNTYW5lKCk7CiAgICAgICAgICAgIGNvbnN0IGhlYXJ0YmVhdFBheWxvYWQgPSB7CiAgICAgICAgICAgICAgICBjYXBhYmlsaXRpZXM6IHsKICAgICAgICAgICAgICAgICAgICBzY2FuOiBzY2FuQXZhaWxhYmxlLAogICAgICAgICAgICAgICAgICAgIC4uLnByb2Nlc3NpbmcsCiAgICAgICAgICAgICAgICAgICAgcHJpbnQ6IHByaW50ZXJOYW1lcy5sZW5ndGggPiAwLAogICAgICAgICAgICAgICAgICAgIHBsYXRmb3JtOiBwcm9jZXNzLnBsYXRmb3JtLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHNjYW5uZXJOYW1lcywKICAgICAgICAgICAgICAgIHByaW50ZXJOYW1lcywKICAgICAgICAgICAgICAgIGRlYnVnSW5mbzogewogICAgICAgICAgICAgICAgICAgIGhvc3RuYW1lOiBvcy5ob3N0bmFtZSgpLAogICAgICAgICAgICAgICAgICAgIHJlbGVhc2U6IG9zLnJlbGVhc2UoKSwKICAgICAgICAgICAgICAgICAgICBhcmNoOiBvcy5hcmNoKCksCiAgICAgICAgICAgICAgICAgICAgbm9kZTogcHJvY2Vzcy52ZXJzaW9uLAogICAgICAgICAgICAgICAgICAgIHVwdGltZVNlY29uZHM6IE1hdGgucm91bmQob3MudXB0aW1lKCkpLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfTsKICAgICAgICAgICAgY29uc3QgaGVhcnRiZWF0ID0gYXdhaXQgYXBpLmhlYXJ0YmVhdChoZWFydGJlYXRQYXlsb2FkKTsKICAgICAgICAgICAgaWYgKGhlYXJ0YmVhdC5wZW5kaW5nU2NhbkpvYnMgPiAwKSB7CiAgICAgICAgICAgICAgICBsb2cuaW5mbyhgJHtoZWFydGJlYXQucGVuZGluZ1NjYW5Kb2JzfSBTY2FuLUF1ZnRyYWcvQXVmdHLDpGdlIHdhcnRlbmApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGNvbnN0IG5leHQgPSBhd2FpdCBhcGkubmV4dFNjYW5Kb2IoKTsKICAgICAgICAgICAgaWYgKCFuZXh0LmpvYikgewogICAgICAgICAgICAgICAgYXdhaXQgc2xlZXAoY29uZmlnLnBvbGxTZWNvbmRzICogMTAwMCk7CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQogICAgICAgICAgICBsb2cuaW5mbygiU2Nhbi1BdWZ0cmFnIHdpcmQgYXVzZ2Vmw7xocnQiLCB7CiAgICAgICAgICAgICAgICBqb2JJZDogbmV4dC5qb2IuaWQsCiAgICAgICAgICAgICAgICB0ZW5hbnRJZDogbmV4dC5qb2IudGVuYW50SWQsCiAgICAgICAgICAgICAgICBzY2FubmVyTmFtZTogbmV4dC5qb2Iuc2Nhbm5lck5hbWUgfHwgY29uZmlnLnNjYW5uZXJOYW1lIHx8ICJkZWZhdWx0IiwKICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIC8vIEtlZXAgb25saW5lIHN0YXR1cyBmcmVzaCBkdXJpbmcgbG9uZyBzY2FucyB3aXRob3V0IHByb2JpbmcgYW4gb2NjdXBpZWQgVVNCIHNjYW5uZXIuCiAgICAgICAgICAgIGxldCBoZWFydGJlYXRSdW5uaW5nID0gZmFsc2U7CiAgICAgICAgICAgIGNvbnN0IGhlYXJ0YmVhdFRpbWVyID0gc2V0SW50ZXJ2YWwoYXN5bmMgKCkgPT4gewogICAgICAgICAgICAgICAgaWYgKGhlYXJ0YmVhdFJ1bm5pbmcpCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgaGVhcnRiZWF0UnVubmluZyA9IHRydWU7CiAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgIGF3YWl0IGFwaS5oZWFydGJlYXQoaGVhcnRiZWF0UGF5bG9hZCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBjYXRjaCAoZXJyb3IpIHsKICAgICAgICAgICAgICAgICAgICBsb2cud2FybigiSGVhcnRiZWF0IHfDpGhyZW5kIFNjYW4gZmVobGdlc2NobGFnZW4iLCBzdHJpbmdpZnlFcnJvcihlcnJvcikpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZmluYWxseSB7CiAgICAgICAgICAgICAgICAgICAgaGVhcnRiZWF0UnVubmluZyA9IGZhbHNlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCAzMF8wMDApOwogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgYXdhaXQgYXBpLnVwZGF0ZVNjYW5Kb2JTdGF0dXMobmV4dC5qb2IuaWQsICJydW5uaW5nIik7CiAgICAgICAgICAgICAgICBjb25zdCBqb2JJZCA9IG5leHQuam9iLmlkOwogICAgICAgICAgICAgICAgY29uc3QgcmVwb3J0UHJvZ3Jlc3MgPSBhc3luYyAobWVzc2FnZSkgPT4gewogICAgICAgICAgICAgICAgICAgIGF3YWl0IGFwaS51cGRhdGVTY2FuSm9iU3RhdHVzKGpvYklkLCAicnVubmluZyIsIG1lc3NhZ2UpLmNhdGNoKChlcnJvcikgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBsb2cud2FybigiU2Nhbi1TdGF0dXMga29ubnRlIG5pY2h0IMO8YmVydHJhZ2VuIHdlcmRlbiIsIHN0cmluZ2lmeUVycm9yKGVycm9yKSk7CiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgY29uc3Qgc2NhblJlc3VsdCA9IGF3YWl0IHJ1blNjYW4oY29uZmlnLCBuZXh0LmpvYiwgcmVwb3J0UHJvZ3Jlc3MpOwogICAgICAgICAgICAgICAgYXdhaXQgcmVwb3J0UHJvZ3Jlc3MoYCR7c2NhblJlc3VsdC5wYWdlQ291bnR9IFNlaXRlbiBnZXNjYW5udC4gJHtzY2FuUmVzdWx0Lndhcm5pbmdzLmpvaW4oIiAiKX1gLnRyaW0oKSk7CiAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgIGF3YWl0IGFwaS51cGxvYWRTY2FuKGpvYklkLCBzY2FuUmVzdWx0KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGNhdGNoIChlcnJvcikgewogICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgJHtzdHJpbmdpZnlFcnJvcihlcnJvcil9IFNjYW4tRGF0ZWkgYmxlaWJ0IHp1ciBXaWVkZXJoZXJzdGVsbHVuZyB1bnRlciAke3NjYW5SZXN1bHQucGF0aH0uYCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBhd2FpdCBybShwYXRoLmRpcm5hbWUoc2NhblJlc3VsdC5wYXRoKSwgeyByZWN1cnNpdmU6IHRydWUsIGZvcmNlOiB0cnVlIH0pLmNhdGNoKChlcnJvcikgPT4gewogICAgICAgICAgICAgICAgICAgIGxvZy53YXJuKCJTY2FuIGdlc3BlaWNoZXJ0OyB0ZW1wb3LDpHJlIERhdGVpZW4ga29ubnRlbiBuaWNodCBlbnRmZXJudCB3ZXJkZW4iLCBzdHJpbmdpZnlFcnJvcihlcnJvcikpOwogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICBsb2cuaW5mbygiU2Nhbi1BdWZ0cmFnIGFiZ2VzY2hsb3NzZW4iLCB7CiAgICAgICAgICAgICAgICAgICAgam9iSWQ6IG5leHQuam9iLmlkLAogICAgICAgICAgICAgICAgICAgIGZpbGU6IHNjYW5SZXN1bHQuZmlsZW5hbWUsCiAgICAgICAgICAgICAgICAgICAgcGFnZXM6IHNjYW5SZXN1bHQucGFnZUNvdW50LAogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY2F0Y2ggKGVycm9yKSB7CiAgICAgICAgICAgICAgICBjb25zdCBtZXNzYWdlID0gc3RyaW5naWZ5RXJyb3IoZXJyb3IpOwogICAgICAgICAgICAgICAgbG9nLmVycm9yKCJTY2FuLUF1ZnRyYWcgZmVobGdlc2NobGFnZW4iLCB7CiAgICAgICAgICAgICAgICAgICAgam9iSWQ6IG5leHQuam9iLmlkLAogICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UsCiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIGF3YWl0IGFwaS51cGRhdGVTY2FuSm9iU3RhdHVzKG5leHQuam9iLmlkLCAiZmFpbGVkIiwgbWVzc2FnZSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZmluYWxseSB7CiAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGhlYXJ0YmVhdFRpbWVyKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBjYXRjaCAoZXJyb3IpIHsKICAgICAgICAgICAgbG9nLmVycm9yKCJBZ2VudC1TY2hsZWlmZSBmZWhsZ2VzY2hsYWdlbiIsIHN0cmluZ2lmeUVycm9yKGVycm9yKSk7CiAgICAgICAgICAgIGF3YWl0IHNsZWVwKGNvbmZpZy5wb2xsU2Vjb25kcyAqIDEwMDApOwogICAgICAgIH0KICAgIH0KfTsKbWFpbigpLmNhdGNoKChlcnJvcikgPT4gewogICAgbG9nLmVycm9yKCJBZ2VudCBrb25udGUgbmljaHQgZ2VzdGFydGV0IHdlcmRlbiIsIHN0cmluZ2lmeUVycm9yKGVycm9yKSk7CiAgICBwcm9jZXNzLmV4aXQoMSk7Cn0pOwo=",
|
|
"dist/print/cups.js": "aW1wb3J0IHsgY29tbWFuZEV4aXN0cywgcnVuQ29tbWFuZCB9IGZyb20gIi4uL2NvbW1hbmRzLmpzIjsKZXhwb3J0IGNvbnN0IGhhc0N1cHMgPSAoKSA9PiBjb21tYW5kRXhpc3RzKCJscHN0YXQiKTsKZXhwb3J0IGNvbnN0IGxpc3RQcmludGVycyA9IGFzeW5jICgpID0+IHsKICAgIGlmICghYXdhaXQgaGFzQ3VwcygpKQogICAgICAgIHJldHVybiBbXTsKICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHJ1bkNvbW1hbmQoImxwc3RhdCIsIFsiLXAiXSwgeyB0aW1lb3V0TXM6IDEwXzAwMCB9KTsKICAgIGlmIChyZXN1bHQuY29kZSAhPT0gMCkKICAgICAgICByZXR1cm4gW107CiAgICByZXR1cm4gcmVzdWx0LnN0ZG91dAogICAgICAgIC5zcGxpdCgvXHI/XG4vKQogICAgICAgIC5tYXAoKGxpbmUpID0+IGxpbmUubWF0Y2goL15wcmludGVyXHMrKFxTKykvKT8uWzFdKQogICAgICAgIC5maWx0ZXIoKHByaW50ZXIpID0+IEJvb2xlYW4ocHJpbnRlcikpOwp9Owo=",
|
|
"dist/scan/postprocess.js": "aW1wb3J0IHBhdGggZnJvbSAibm9kZTpwYXRoIjsKaW1wb3J0IHsgZmlsZVVSTFRvUGF0aCB9IGZyb20gIm5vZGU6dXJsIjsKaW1wb3J0IHsgcnVuQ29tbWFuZCB9IGZyb20gIi4uL2NvbW1hbmRzLmpzIjsKY29uc3QgYWdlbnRSb290ID0gcGF0aC5yZXNvbHZlKHBhdGguZGlybmFtZShmaWxlVVJMVG9QYXRoKGltcG9ydC5tZXRhLnVybCkpLCAiLi4vLi4iKTsKY29uc3QgZG9jdW1lbnRTY3JpcHQgPSBwYXRoLmpvaW4oYWdlbnRSb290LCAic2NyaXB0cy9zY2FuX2RvY3VtZW50LnB5Iik7CmV4cG9ydCBjb25zdCBjaGVja1NjYW5SdW50aW1lID0gYXN5bmMgKGNvbmZpZywgcG9zdHByb2Nlc3MsIG9wdGlvbnMpID0+IHsKICAgIGNvbnN0IGFyZ3MgPSBbZG9jdW1lbnRTY3JpcHQsICItLWNoZWNrLXJ1bnRpbWUiLCAiLS1vY3ItbGFuZ3VhZ2UiLCBvcHRpb25zLm9jckxhbmd1YWdlXTsKICAgIGlmIChwb3N0cHJvY2VzcykKICAgICAgICBhcmdzLnB1c2goIi0tcG9zdHByb2Nlc3MiKTsKICAgIGlmIChjb25maWcucG9zdHByb2Nlc3NTdHJpY3QpCiAgICAgICAgYXJncy5wdXNoKCItLXN0cmljdCIpOwogICAgaWYgKG9wdGlvbnMuYmFja2dyb3VuZENsZWFudXApCiAgICAgICAgYXJncy5wdXNoKCItLWJhY2tncm91bmQtY2xlYW51cCIpOwogICAgaWYgKG9wdGlvbnMub2NyKQogICAgICAgIGFyZ3MucHVzaCgiLS1vY3IiKTsKICAgIHRyeSB7CiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcnVuQ29tbWFuZChjb25maWcucG9zdHByb2Nlc3NQeXRob24sIGFyZ3MsIHsgdGltZW91dE1zOiAxMF8wMDAgfSk7CiAgICAgICAgaWYgKHJlc3VsdC5jb2RlID09PSAwKQogICAgICAgICAgICByZXR1cm47CiAgICAgICAgdGhyb3cgbmV3IEVycm9yKHJlc3VsdC5zdGRlcnIudHJpbSgpKTsKICAgIH0KICAgIGNhdGNoIChlcnJvcikgewogICAgICAgIC8vIFJlcG9ydCBtaXNzaW5nIHJ1bnRpbWVzIGJlZm9yZSB0aGUgc2Nhbm5lciBjb25zdW1lcyBhbnkgcGFwZXIuCiAgICAgICAgY29uc3QgZGV0YWlsID0gZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiBTdHJpbmcoZXJyb3IpOwogICAgICAgIHRocm93IG5ldyBFcnJvcigiU2Nhbi1WZXJhcmJlaXR1bmcgbmljaHQgdmVyZsO8Z2Jhci4gQml0dGUgZGVuIEFnZW50ZW4gbWl0IFB5dGhvbi9QaWxsb3csIE9wZW5DViB1bmQgVGVzc2VyYWN0IHNhbXQgT0NSLVNwcmFjaHBha2V0ZW4gaW5zdGFsbGllcmVuLiAiICsgZGV0YWlsKTsKICAgIH0KfTsKZXhwb3J0IGNvbnN0IHByb2Nlc3NpbmdDYXBhYmlsaXRpZXMgPSBhc3luYyAoY29uZmlnKSA9PiB7CiAgICBjb25zdCBhdmFpbGFibGUgPSBhc3luYyAob3B0aW9ucykgPT4gewogICAgICAgIHRyeSB7CiAgICAgICAgICAgIGF3YWl0IGNoZWNrU2NhblJ1bnRpbWUoY29uZmlnLCBmYWxzZSwgb3B0aW9ucyk7CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KICAgICAgICBjYXRjaCB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CiAgICB9OwogICAgY29uc3QgW29jciwgYmFja2dyb3VuZENsZWFudXBdID0gYXdhaXQgUHJvbWlzZS5hbGwoWwogICAgICAgIGF2YWlsYWJsZSh7IG9jcjogdHJ1ZSwgb2NyTGFuZ3VhZ2U6IGNvbmZpZy5zY2FuT2NyTGFuZ3VhZ2UsIGJhY2tncm91bmRDbGVhbnVwOiBmYWxzZSB9KSwKICAgICAgICBhdmFpbGFibGUoeyBvY3I6IGZhbHNlLCBvY3JMYW5ndWFnZTogY29uZmlnLnNjYW5PY3JMYW5ndWFnZSwgYmFja2dyb3VuZENsZWFudXA6IHRydWUgfSksCiAgICBdKTsKICAgIHJldHVybiB7IG9jciwgYmFja2dyb3VuZENsZWFudXAgfTsKfTsKZXhwb3J0IGNvbnN0IGNyZWF0ZVNjYW5Eb2N1bWVudCA9IGFzeW5jIChjb25maWcsIHBhZ2VzLCBvdXRwdXRQYXRoLCByZXNvbHV0aW9uLCBwb3N0cHJvY2VzcywgcHJvZmlsZSwgb3B0aW9ucykgPT4gewogICAgY29uc3QgYXJncyA9IFtkb2N1bWVudFNjcmlwdCwgIi0tb3V0cHV0Iiwgb3V0cHV0UGF0aCwgIi0tcmVzb2x1dGlvbiIsIFN0cmluZyhyZXNvbHV0aW9uKSwgIi0tcHJvZmlsZSIsIHByb2ZpbGVdOwogICAgaWYgKHBvc3Rwcm9jZXNzKQogICAgICAgIGFyZ3MucHVzaCgiLS1wb3N0cHJvY2VzcyIpOwogICAgaWYgKGNvbmZpZy5wb3N0cHJvY2Vzc1N0cmljdCkKICAgICAgICBhcmdzLnB1c2goIi0tc3RyaWN0Iik7CiAgICBpZiAob3B0aW9ucy5iYWNrZ3JvdW5kQ2xlYW51cCkKICAgICAgICBhcmdzLnB1c2goIi0tYmFja2dyb3VuZC1jbGVhbnVwIik7CiAgICBpZiAob3B0aW9ucy5vY3IpCiAgICAgICAgYXJncy5wdXNoKCItLW9jciIsICItLW9jci1sYW5ndWFnZSIsIG9wdGlvbnMub2NyTGFuZ3VhZ2UpOwogICAgYXJncy5wdXNoKCItLWlucHV0cyIsIC4uLnBhZ2VzKTsKICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHJ1bkNvbW1hbmQoY29uZmlnLnBvc3Rwcm9jZXNzUHl0aG9uLCBhcmdzLCB7CiAgICAgICAgdGltZW91dE1zOiBjb25maWcuc2NhblRpbWVvdXRTZWNvbmRzICogMTAwMCwKICAgIH0pOwogICAgaWYgKHJlc3VsdC5jb2RlICE9PSAwKQogICAgICAgIHRocm93IG5ldyBFcnJvcihyZXN1bHQuc3RkZXJyIHx8ICJTY2FuLURhdGVpIGtvbm50ZSBuaWNodCBlcnN0ZWxsdCB3ZXJkZW4iKTsKICAgIGNvbnN0IGRldGFpbHMgPSBKU09OLnBhcnNlKHJlc3VsdC5zdGRvdXQpOwogICAgcmV0dXJuIHsKICAgICAgICBwYXRoOiBvdXRwdXRQYXRoLAogICAgICAgIGZpbGVuYW1lOiBwYXRoLmJhc2VuYW1lKG91dHB1dFBhdGgpLAogICAgICAgIG1pbWVUeXBlOiBvdXRwdXRQYXRoLmVuZHNXaXRoKCIucGRmIikgPyAiYXBwbGljYXRpb24vcGRmIiA6IG91dHB1dFBhdGguZW5kc1dpdGgoIi5wbmciKSA/ICJpbWFnZS9wbmciIDogImltYWdlL3RpZmYiLAogICAgICAgIC4uLmRldGFpbHMsCiAgICB9Owp9Owo=",
|
|
"dist/scan/sane.js": "aW1wb3J0IHsgbWtkaXIsIG1rZHRlbXAsIHJlYWRkaXIsIHN0YXQgfSBmcm9tICJub2RlOmZzL3Byb21pc2VzIjsKaW1wb3J0IHBhdGggZnJvbSAibm9kZTpwYXRoIjsKaW1wb3J0IHsgY29tbWFuZEV4aXN0cywgcnVuQ29tbWFuZCB9IGZyb20gIi4uL2NvbW1hbmRzLmpzIjsKaW1wb3J0IHsgY2hlY2tTY2FuUnVudGltZSwgY3JlYXRlU2NhbkRvY3VtZW50IH0gZnJvbSAiLi9wb3N0cHJvY2Vzcy5qcyI7CmNvbnN0IHN0cmluZ1NldHRpbmcgPSAoc2V0dGluZ3MsIGtleSkgPT4gewogICAgY29uc3QgdmFsdWUgPSBzZXR0aW5nc1trZXldOwogICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gInN0cmluZyIgJiYgdmFsdWUudHJpbSgpID8gdmFsdWUudHJpbSgpIDogdW5kZWZpbmVkOwp9Owpjb25zdCBib29sZWFuU2V0dGluZyA9IChzZXR0aW5ncywga2V5LCBmYWxsYmFjaykgPT4gewogICAgY29uc3QgdmFsdWUgPSBzZXR0aW5nc1trZXldOwogICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gImJvb2xlYW4iKQogICAgICAgIHJldHVybiB2YWx1ZTsKICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICJzdHJpbmciKQogICAgICAgIHJldHVybiBbIjEiLCAidHJ1ZSIsICJ5ZXMiLCAiamEiLCAib24iXS5pbmNsdWRlcyh2YWx1ZS50cmltKCkudG9Mb3dlckNhc2UoKSk7CiAgICByZXR1cm4gZmFsbGJhY2s7Cn07CmV4cG9ydCBjb25zdCBoYXNTYW5lID0gKCkgPT4gY29tbWFuZEV4aXN0cygic2NhbmltYWdlIik7CmV4cG9ydCBjb25zdCBsaXN0U2Nhbm5lcnMgPSBhc3luYyAoKSA9PiB7CiAgICBpZiAoIWF3YWl0IGhhc1NhbmUoKSkKICAgICAgICByZXR1cm4gW107CiAgICAvLyBTQU5FIGFsc28gcHJvYmVzIG5ldHdvcmsgYmFja2VuZHM7IHRoZXNlIGNhbiB0YWtlIG1vcmUgdGhhbiB0ZW4gc2Vjb25kcwogICAgLy8gZXZlbiB3aGVuIHRoZSBVU0Igc2Nhbm5lciBpcyBhbHJlYWR5IGF2YWlsYWJsZS4KICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHJ1bkNvbW1hbmQoInNjYW5pbWFnZSIsIFsiLUwiXSwgeyB0aW1lb3V0TXM6IDMwXzAwMCB9KTsKICAgIGlmIChyZXN1bHQuY29kZSAhPT0gMCkKICAgICAgICByZXR1cm4gW107CiAgICByZXR1cm4gcmVzdWx0LnN0ZG91dC5zcGxpdCgvXHI/XG4vKQogICAgICAgIC5tYXAoKGxpbmUpID0+IGxpbmUudHJpbSgpLm1hdGNoKC9eZGV2aWNlIGAoW14nXSspJy8pPy5bMV0pCiAgICAgICAgLmZpbHRlcigoZGV2aWNlKSA9PiBCb29sZWFuKGRldmljZSkpOwp9OwpleHBvcnQgY29uc3QgcnVuU2NhbiA9IGFzeW5jIChjb25maWcsIGpvYiwgcmVwb3J0UHJvZ3Jlc3MgPSBhc3luYyAoKSA9PiB7IH0pID0+IHsKICAgIGlmICghYXdhaXQgaGFzU2FuZSgpKQogICAgICAgIHRocm93IG5ldyBFcnJvcigic2NhbmltYWdlIGlzdCBuaWNodCBpbnN0YWxsaWVydCBvZGVyIG5pY2h0IGltIFBBVEgiKTsKICAgIGNvbnN0IHNldHRpbmdzID0gam9iLnNldHRpbmdzIHx8IHt9OwogICAgY29uc3QgZm9ybWF0ID0gc3RyaW5nU2V0dGluZyhzZXR0aW5ncywgImZvcm1hdCIpIHx8IGNvbmZpZy5zY2FuRm9ybWF0OwogICAgaWYgKCFbInBkZiIsICJwbmciLCAidGlmZiJdLmluY2x1ZGVzKGZvcm1hdCkpCiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJTY2FuLUZvcm1hdCBtdXNzIFBERiwgUE5HIG9kZXIgVElGRiBzZWluIik7CiAgICBjb25zdCByZXNvbHV0aW9uID0gTnVtYmVyKHNldHRpbmdzLnJlc29sdXRpb24gPz8gY29uZmlnLnNjYW5SZXNvbHV0aW9uKTsKICAgIGlmICghTnVtYmVyLmlzRmluaXRlKHJlc29sdXRpb24pIHx8IHJlc29sdXRpb24gPCA3NSB8fCByZXNvbHV0aW9uID4gMTIwMCkgewogICAgICAgIHRocm93IG5ldyBFcnJvcigiRGllIFNjYW4tQXVmbMO2c3VuZyBtdXNzIHp3aXNjaGVuIDc1IHVuZCAxMjAwIGRwaSBsaWVnZW4iKTsKICAgIH0KICAgIGNvbnN0IG1vZGUgPSBzdHJpbmdTZXR0aW5nKHNldHRpbmdzLCAibW9kZSIpIHx8IGNvbmZpZy5zY2FuTW9kZTsKICAgIGNvbnN0IHNvdXJjZSA9IHN0cmluZ1NldHRpbmcoc2V0dGluZ3MsICJzb3VyY2UiKSB8fCBjb25maWcuc2NhblNvdXJjZTsKICAgIGNvbnN0IHNjYW5uZXJOYW1lID0gam9iLnNjYW5uZXJOYW1lIHx8IGNvbmZpZy5zY2FubmVyTmFtZTsKICAgIGNvbnN0IHBhcGVyU2l6ZSA9IHN0cmluZ1NldHRpbmcoc2V0dGluZ3MsICJwYXBlclNpemUiKSB8fCAiYXV0byI7CiAgICBpZiAoIVsiYXV0byIsICJBNCIsICJMZXR0ZXIiXS5pbmNsdWRlcyhwYXBlclNpemUpKQogICAgICAgIHRocm93IG5ldyBFcnJvcigiVW5iZWthbm50ZXMgUGFwaWVyZm9ybWF0Iik7CiAgICBjb25zdCBiYXRjaCA9IEJvb2xlYW4oc291cmNlICYmIC9hZGZ8ZG9jdW1lbnQgZmVlZGVyL2kudGVzdChzb3VyY2UpKTsKICAgIGlmIChiYXRjaCAmJiBmb3JtYXQgIT09ICJwZGYiKQogICAgICAgIHRocm93IG5ldyBFcnJvcigiRsO8ciBFaW56dWctIHVuZCBEdXBsZXgtU2NhbnMgYml0dGUgUERGIGFscyBGb3JtYXQgd8OkaGxlbiIpOwogICAgY29uc3QgcG9zdHByb2Nlc3MgPSBib29sZWFuU2V0dGluZyhzZXR0aW5ncywgInBvc3Rwcm9jZXNzIiwgY29uZmlnLnNjYW5Qb3N0cHJvY2Vzcyk7CiAgICBjb25zdCBwcm9maWxlID0gc3RyaW5nU2V0dGluZyhzZXR0aW5ncywgInBvc3Rwcm9jZXNzUHJvZmlsZSIpIHx8IGNvbmZpZy5wb3N0cHJvY2Vzc1Byb2ZpbGU7CiAgICBpZiAoIVsiZG9jdW1lbnQiLCAicmVjZWlwdCIsICJyYXciXS5pbmNsdWRlcyhwcm9maWxlKSkKICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIlVuYmVrYW5udGVzIE5hY2hiZWFyYmVpdHVuZ3Nwcm9maWwiKTsKICAgIGNvbnN0IHByb2Nlc3NpbmcgPSB7CiAgICAgICAgYmFja2dyb3VuZENsZWFudXA6IGJvb2xlYW5TZXR0aW5nKHNldHRpbmdzLCAiYmFja2dyb3VuZENsZWFudXAiLCBjb25maWcuc2NhbkJhY2tncm91bmRDbGVhbnVwKSwKICAgICAgICBvY3I6IGZvcm1hdCA9PT0gInBkZiIgJiYgYm9vbGVhblNldHRpbmcoc2V0dGluZ3MsICJvY3IiLCBjb25maWcuc2Nhbk9jciksCiAgICAgICAgb2NyTGFuZ3VhZ2U6IHN0cmluZ1NldHRpbmcoc2V0dGluZ3MsICJvY3JMYW5ndWFnZSIpIHx8IGNvbmZpZy5zY2FuT2NyTGFuZ3VhZ2UsCiAgICB9OwogICAgYXdhaXQgY2hlY2tTY2FuUnVudGltZShjb25maWcsIHBvc3Rwcm9jZXNzLCBwcm9jZXNzaW5nKTsKICAgIC8vIEVhY2ggcGh5c2ljYWwgc2NhbiBoYXMgaXRzIG93biBkaXJlY3RvcnkuIEEgZmlsZW5hbWUgY2Fubm90IGVzY2FwZSBpdCBvciBvdmVyd3JpdGUgYW5vdGhlciBqb2IuCiAgICBhd2FpdCBta2Rpcihjb25maWcud29ya0RpciwgeyByZWN1cnNpdmU6IHRydWUsIG1vZGU6IDBvNzAwIH0pOwogICAgY29uc3Qgam9iRGlyID0gYXdhaXQgbWtkdGVtcChwYXRoLmpvaW4ocGF0aC5yZXNvbHZlKGNvbmZpZy53b3JrRGlyKSwgInNjYW4tIikpOwogICAgY29uc3QgcmVxdWVzdGVkID0gcGF0aC5iYXNlbmFtZSgoam9iLnJlcXVlc3RlZEZpbGVuYW1lIHx8ICJzY2FuIikucmVwbGFjZSgvXFwvZywgIi8iKSk7CiAgICBjb25zdCBzdGVtID0gcmVxdWVzdGVkLnJlcGxhY2UoL1wuW14uXSokLywgIiIpLnJlcGxhY2UoL1tceDAwLVx4MWZdL2csICIiKS50cmltKCkgfHwgInNjYW4iOwogICAgY29uc3Qgb3V0cHV0UGF0aCA9IHBhdGguam9pbihqb2JEaXIsIGAke3N0ZW19LiR7Zm9ybWF0fWApOwogICAgdHJ5IHsKICAgICAgICAvLyBEZXZpY2Uvc291cmNlIGNvbWUgZmlyc3Q6IGNoYW5naW5nIHNvdXJjZSBjYW4gY2hhbmdlIHRoZSByZW1haW5pbmcgU0FORSBvcHRpb25zLgogICAgICAgIGNvbnN0IGFyZ3MgPSBbXTsKICAgICAgICBpZiAoc2Nhbm5lck5hbWUpCiAgICAgICAgICAgIGFyZ3MucHVzaCgiLS1kZXZpY2UtbmFtZSIsIHNjYW5uZXJOYW1lKTsKICAgICAgICBpZiAoc291cmNlKQogICAgICAgICAgICBhcmdzLnB1c2goIi0tc291cmNlIiwgc291cmNlKTsKICAgICAgICBhcmdzLnB1c2goIi0tbW9kZSIsIG1vZGUsICItLXJlc29sdXRpb24iLCBTdHJpbmcocmVzb2x1dGlvbiksICItLWZvcm1hdD1wbmciKTsKICAgICAgICBpZiAocGFwZXJTaXplICE9PSAiYXV0byIpIHsKICAgICAgICAgICAgY29uc3QgW3dpZHRoLCBoZWlnaHRdID0gcGFwZXJTaXplID09PSAiQTQiID8gWzIxMCwgMjk3XSA6IFsyMTUuOSwgMjc5LjRdOwogICAgICAgICAgICBpZiAoc2Nhbm5lck5hbWU/LnN0YXJ0c1dpdGgoImZ1aml0c3U6IikpIHsKICAgICAgICAgICAgICAgIGFyZ3MucHVzaCgiLS1wYWdlLXdpZHRoIiwgU3RyaW5nKHdpZHRoKSwgIi0tcGFnZS1oZWlnaHQiLCBTdHJpbmcoaGVpZ2h0KSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgYXJncy5wdXNoKCItbCIsICIwIiwgIi10IiwgIjAiLCAiLXgiLCBTdHJpbmcod2lkdGgpLCAiLXkiLCBTdHJpbmcoaGVpZ2h0KSk7CiAgICAgICAgfQogICAgICAgIGlmIChiYXRjaCkgewogICAgICAgICAgICAvLyBSZWxhdGl2ZSBwYXR0ZXJuIGF2b2lkcyBpbnRlcnByZXRpbmcgJyUnIGluIGEgdXNlci1jb25maWd1cmVkIHdvcmsgZGlyZWN0b3J5LgogICAgICAgICAgICBhcmdzLnB1c2goIi0tYmF0Y2g9cGFnZS0lMDZkLnBuZyIsICItLWJhdGNoLXN0YXJ0PTEiLCAiLS1iYXRjaC1pbmNyZW1lbnQ9MSIpOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgYXJncy5wdXNoKCItLW91dHB1dC1maWxlIiwgInBhZ2UtMDAwMDAxLnBuZyIpOwogICAgICAgIH0KICAgICAgICBhd2FpdCByZXBvcnRQcm9ncmVzcyhiYXRjaCA/ICJEb2t1bWVudGUgd2VyZGVuIGVpbmdlem9nZW4gdW5kIGdlc2Nhbm50Li4uIiA6ICJTZWl0ZSB3aXJkIGdlc2Nhbm50Li4uIik7CiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcnVuQ29tbWFuZCgic2NhbmltYWdlIiwgYXJncywgewogICAgICAgICAgICBjd2Q6IGpvYkRpciwKICAgICAgICAgICAgdGltZW91dE1zOiBjb25maWcuc2NhblRpbWVvdXRTZWNvbmRzICogMTAwMCwKICAgICAgICB9KTsKICAgICAgICAvLyBTQU5FX1NUQVRVU19OT19ET0NTICg3KSBpcyB0aGUgZXhwZWN0ZWQgZW5kIG9mIGFuIHVubGltaXRlZCBBREYgYmF0Y2guCiAgICAgICAgLy8gTmV2ZXIgdHVybiBwYXBlciBqYW1zLCBJL08gZXJyb3JzIG9yIGNhbmNlbGVkIHNjYW5zIGludG8gYSBzdWNjZXNzZnVsIHBhcnRpYWwgdXBsb2FkLgogICAgICAgIGlmIChyZXN1bHQuY29kZSAhPT0gMCAmJiAhKGJhdGNoICYmIHJlc3VsdC5jb2RlID09PSA3KSkgewogICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IocmVzdWx0LnN0ZGVyci50cmltKCkgfHwgYHNjYW5pbWFnZSB3dXJkZSBtaXQgQ29kZSAke3Jlc3VsdC5jb2RlfSBiZWVuZGV0YCk7CiAgICAgICAgfQogICAgICAgIGNvbnN0IG5hbWVzID0gKGF3YWl0IHJlYWRkaXIoam9iRGlyKSkKICAgICAgICAgICAgLmZpbHRlcigobmFtZSkgPT4gL15wYWdlLVxkK1wucG5nJC8udGVzdChuYW1lKSkKICAgICAgICAgICAgLnNvcnQoKGEsIGIpID0+IE51bWJlcihhLm1hdGNoKC9cZCsvKVswXSkgLSBOdW1iZXIoYi5tYXRjaCgvXGQrLylbMF0pKTsKICAgICAgICBjb25zdCBwYWdlcyA9IFtdOwogICAgICAgIGZvciAoY29uc3QgW2luZGV4LCBuYW1lXSBvZiBuYW1lcy5lbnRyaWVzKCkpIHsKICAgICAgICAgICAgY29uc3QgcGFnZSA9IHBhdGguam9pbihqb2JEaXIsIG5hbWUpOwogICAgICAgICAgICAvLyBTb21lIHNjYW5pbWFnZSB2ZXJzaW9ucyBsZWF2ZSBhIHplcm8tYnl0ZSBmaWxlIGZvciB0aGUgZmluYWwgTk9fRE9DUyBhdHRlbXB0LgogICAgICAgICAgICBpZiAoKGF3YWl0IHN0YXQocGFnZSkpLnNpemUgPT09IDApIHsKICAgICAgICAgICAgICAgIGlmIChiYXRjaCAmJiByZXN1bHQuY29kZSA9PT0gNyAmJiBpbmRleCA9PT0gbmFtZXMubGVuZ3RoIC0gMSkKICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVW52b2xsc3TDpG5kaWdlIFNjYW4tU2VpdGU6ICR7bmFtZX1gKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoTnVtYmVyKG5hbWUubWF0Y2goL1xkKy8pWzBdKSAhPT0gaW5kZXggKyAxKQogICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJJbSBTY2FuIGZlaGxlbiBTZWl0ZW4iKTsKICAgICAgICAgICAgcGFnZXMucHVzaChwYWdlKTsKICAgICAgICB9CiAgICAgICAgaWYgKCFwYWdlcy5sZW5ndGgpCiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiS2VpbmUgU2VpdGVuIGdlc2Nhbm50LiBCaXR0ZSBQYXBpZXIgaW4gZGVuIEVpbnp1ZyBsZWdlbi4iKTsKICAgICAgICBpZiAoc291cmNlPy50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKCJkdXBsZXgiKSAmJiBwYWdlcy5sZW5ndGggJSAyICE9PSAwKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRGVyIER1cGxleC1TY2FuIGlzdCB1bnZvbGxzdMOkbmRpZzogWnUgZWluZXIgVm9yZGVyc2VpdGUgZmVobHQgZGllIFLDvGNrc2VpdGUuIik7CiAgICAgICAgfQogICAgICAgIGF3YWl0IHJlcG9ydFByb2dyZXNzKGAke3BhZ2VzLmxlbmd0aH0gU2VpdGVuIGdlc2Nhbm50LiAke3Byb2Nlc3Npbmcub2NyID8gIkR1cmNoc3VjaGJhcmVzIFBERiBtaXQgT0NSIHdpcmQgZXJzdGVsbHQuLi4iIDogIkRhdGVpIHdpcmQgZXJzdGVsbHQuLi4ifWApOwogICAgICAgIHJldHVybiBhd2FpdCBjcmVhdGVTY2FuRG9jdW1lbnQoY29uZmlnLCBwYWdlcywgb3V0cHV0UGF0aCwgcmVzb2x1dGlvbiwgcG9zdHByb2Nlc3MsIHByb2ZpbGUsIHByb2Nlc3NpbmcpOwogICAgfQogICAgY2F0Y2ggKGVycm9yKSB7CiAgICAgICAgY29uc3QgbWVzc2FnZSA9IGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogU3RyaW5nKGVycm9yKTsKICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7bWVzc2FnZX0gUm9oc2NhbnMgYmxlaWJlbiB6dXIgV2llZGVyaGVyc3RlbGx1bmcgaW4gJHtqb2JEaXJ9LmApOwogICAgfQp9Owo=",
|
|
"dist/types.js": "ZXhwb3J0IHt9Owo=",
|
|
"scripts/scan_document.py": "IyEvdXNyL2Jpbi9lbnYgcHl0aG9uMwoiIiJQcmVwYXJlIG9yZGVyZWQgc2Nhbm5lciBwYWdlcyBhbmQgcHVibGlzaCBhbiBvcHRpb25hbGx5IHNlYXJjaGFibGUgUERGIGF0b21pY2FsbHkuIiIiCmltcG9ydCBhcmdwYXJzZQppbXBvcnQganNvbgppbXBvcnQgbWF0aApmcm9tIHBhdGhsaWIgaW1wb3J0IFBhdGgKaW1wb3J0IHJlCmltcG9ydCBzaWduYWwKaW1wb3J0IHN1YnByb2Nlc3MKaW1wb3J0IHRlbXBmaWxlCgpmcm9tIFBJTCBpbXBvcnQgSW1hZ2UsIFBkZlBhcnNlcgoKCmRlZiBydW5fb2NyX2NvbW1hbmQoYXJndW1lbnRzKToKICAgIHByb2Nlc3MgPSBzdWJwcm9jZXNzLlBvcGVuKGFyZ3VtZW50cywgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwgc3RkZXJyPXN1YnByb2Nlc3MuUElQRSwgdGV4dD1UcnVlKQogICAgdHJ5OgogICAgICAgIHN0ZG91dCwgc3RkZXJyID0gcHJvY2Vzcy5jb21tdW5pY2F0ZSgpCiAgICBleGNlcHQgQmFzZUV4Y2VwdGlvbjoKICAgICAgICBwcm9jZXNzLmtpbGwoKQogICAgICAgIHByb2Nlc3Mud2FpdCgpCiAgICAgICAgcmFpc2UKICAgIGlmIHByb2Nlc3MucmV0dXJuY29kZSAhPSAwOgogICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiT0NSIGZlaGxnZXNjaGxhZ2VuOiAiICsgc3RkZXJyLnN0cmlwKCkpCiAgICByZXR1cm4gc3Rkb3V0CgoKZGVmIGNoZWNrX29jcihsYW5ndWFnZSk6CiAgICBpZiBub3QgcmUuZnVsbG1hdGNoKHIiW2EtekEtWjAtOV9dKyg/OlwrW2EtekEtWjAtOV9dKykqIiwgbGFuZ3VhZ2UpOgogICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIlVuZ8O8bHRpZ2UgT0NSLVNwcmFjaGUiKQogICAgdHJ5OgogICAgICAgIGxhbmd1YWdlcyA9IHJ1bl9vY3JfY29tbWFuZChbInRlc3NlcmFjdCIsICItLWxpc3QtbGFuZ3MiXSkuc3BsaXRsaW5lcygpCiAgICBleGNlcHQgRmlsZU5vdEZvdW5kRXJyb3IgYXMgZXJyb3I6CiAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJUZXNzZXJhY3QgZmVobHQuIEJpdHRlIHRlc3NlcmFjdC1vY3IgdW5kIGRpZSBTcHJhY2hwYWtldGUgdGVzc2VyYWN0LW9jci1kZXUvdGVzc2VyYWN0LW9jci1lbmcgaW5zdGFsbGllcmVuLiIpIGZyb20gZXJyb3IKICAgIG1pc3NpbmcgPSBzZXQobGFuZ3VhZ2Uuc3BsaXQoIisiKSkgLSB7bGluZS5zdHJpcCgpIGZvciBsaW5lIGluIGxhbmd1YWdlc30KICAgIGlmIG1pc3Npbmc6CiAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJPQ1ItU3ByYWNocGFrZXRlIGZlaGxlbjogIiArICIsICIuam9pbihzb3J0ZWQobWlzc2luZykpKQoKCmRlZiBjcmVhdGVfZG9jdW1lbnQoaW5wdXRzLCBvdXRwdXQsIHJlc29sdXRpb24sIHVzZV9wb3N0cHJvY2Vzcz1GYWxzZSwgcHJvZmlsZT0iZG9jdW1lbnQiLCBzdHJpY3Q9RmFsc2UsCiAgICAgICAgICAgICAgICAgICAgb2NyPUZhbHNlLCBvY3JfbGFuZ3VhZ2U9ImRldStlbmciLCBiYWNrZ3JvdW5kX2NsZWFudXA9RmFsc2UpOgogICAgaWYgbm90IGlucHV0czoKICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJLZWluZSBTZWl0ZW4gdm9yaGFuZGVuIikKICAgIGlmIG5vdCBtYXRoLmlzZmluaXRlKHJlc29sdXRpb24pIG9yIHJlc29sdXRpb24gPD0gMDoKICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJVbmfDvGx0aWdlIFNjYW4tQXVmbMO2c3VuZyIpCiAgICBvdXRwdXQgPSBQYXRoKG91dHB1dCkKICAgIGZpbGVfZm9ybWF0ID0geyIucGRmIjogIlBERiIsICIucG5nIjogIlBORyIsICIudGlmZiI6ICJUSUZGIn0uZ2V0KG91dHB1dC5zdWZmaXgubG93ZXIoKSkKICAgIGlmIG5vdCBmaWxlX2Zvcm1hdDoKICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJVbmJla2FubnRlcyBBdXNnYWJlZm9ybWF0IikKICAgIGlmIChsZW4oaW5wdXRzKSAhPSAxIG9yIG9jcikgYW5kIGZpbGVfZm9ybWF0ICE9ICJQREYiOgogICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIk1laHJzZWl0aWdlIFNjYW5zIHVuZCBPQ1IgYmVuw7Z0aWdlbiBQREYgYWxzIEF1c2dhYmVmb3JtYXQiKQogICAgaWYgb2NyOgogICAgICAgIGNoZWNrX29jcihvY3JfbGFuZ3VhZ2UpCgogICAgd2FybmluZ3MgPSBbXQogICAgcHJvY2Vzc29yID0gTm9uZQogICAgaWYgdXNlX3Bvc3Rwcm9jZXNzOgogICAgICAgIHRyeToKICAgICAgICAgICAgZnJvbSBvcGVuY3ZfcG9zdHByb2Nlc3MgaW1wb3J0IHBvc3Rwcm9jZXNzCiAgICAgICAgICAgIHByb2Nlc3NvciA9IHBvc3Rwcm9jZXNzCiAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgogICAgICAgICAgICBpZiBzdHJpY3Q6CiAgICAgICAgICAgICAgICByYWlzZQogICAgICAgICAgICB3YXJuaW5ncy5hcHBlbmQoIk9wZW5DViBmZWhsdDsgYWxsZSBTZWl0ZW4gd3VyZGVuIG9obmUgQmlsZGtvcnJla3R1ciDDvGJlcm5vbW1lbi4iKQogICAgaWYgYmFja2dyb3VuZF9jbGVhbnVwOgogICAgICAgIGZyb20gc2Nhbl9iYWNrZ3JvdW5kIGltcG9ydCBjbGVhbl9zY2FuX2JhY2tncm91bmQKCiAgICBwYXJ0aWFsID0gb3V0cHV0LndpdGhfbmFtZShvdXRwdXQubmFtZSArICIucGFydGlhbCIpCiAgICB0cnk6CiAgICAgICAgd2l0aCB0ZW1wZmlsZS5UZW1wb3JhcnlEaXJlY3RvcnkocHJlZml4PSJwcmVwYXJlZC0iLCBkaXI9b3V0cHV0LnBhcmVudCkgYXMgZGlyZWN0b3J5OgogICAgICAgICAgICBwcmVwYXJlZCA9IFtdCiAgICAgICAgICAgIGZvciBpbmRleCwgaW5wdXRfcGF0aCBpbiBlbnVtZXJhdGUoaW5wdXRzKToKICAgICAgICAgICAgICAgIGltYWdlX3BhdGggPSBQYXRoKGlucHV0X3BhdGgpCiAgICAgICAgICAgICAgICBjb3JyZWN0ZWQgPSBQYXRoKGRpcmVjdG9yeSkgLyBmImNvcnJlY3RlZC17aW5kZXg6MDZ9LnBuZyIKICAgICAgICAgICAgICAgIGlmIHByb2Nlc3NvcjoKICAgICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3NvcihpbWFnZV9wYXRoLCBjb3JyZWN0ZWQsIHByb2ZpbGUpCiAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlX3BhdGggPSBjb3JyZWN0ZWQKICAgICAgICAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgogICAgICAgICAgICAgICAgICAgICAgICBpZiBzdHJpY3Q6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZQogICAgICAgICAgICAgICAgICAgICAgICB3YXJuaW5ncy5hcHBlbmQoZiJTZWl0ZSB7aW5kZXggKyAxfTogQmlsZGtvcnJla3R1ciBmZWhsZ2VzY2hsYWdlbjsgUm9oc2NhbiDDvGJlcm5vbW1lbi4iKQogICAgICAgICAgICAgICAgaWYgYmFja2dyb3VuZF9jbGVhbnVwOgogICAgICAgICAgICAgICAgICAgIGNsZWFuZWQgPSBQYXRoKGRpcmVjdG9yeSkgLyBmImNsZWFuZWQte2luZGV4OjA2fS5wbmciCiAgICAgICAgICAgICAgICAgICAgY2xlYW5fc2Nhbl9iYWNrZ3JvdW5kKGltYWdlX3BhdGgsIGNsZWFuZWQpCiAgICAgICAgICAgICAgICAgICAgaW1hZ2VfcGF0aCA9IGNsZWFuZWQKCiAgICAgICAgICAgICAgICAjIE9ubHkgb25lIGRlY29kZWQgcGFnZSBpcyBrZXB0IGluIG1lbW9yeSwgZXZlbiBmb3IgZHVwbGV4IHN0YWNrcy4KICAgICAgICAgICAgICAgIHdpdGggSW1hZ2Uub3BlbihpbWFnZV9wYXRoKSBhcyBpbWFnZToKICAgICAgICAgICAgICAgICAgICB3aXRoIGltYWdlLmNvbnZlcnQoIlJHQiIpIGFzIHJnYjoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgb2NyOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFnZSA9IFBhdGgoZGlyZWN0b3J5KS5yZXNvbHZlKCkgLyBmInBhZ2Ute2luZGV4OjA2fS5wbmciCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZ2Iuc2F2ZShwYWdlLCAiUE5HIiwgZHBpPShyZXNvbHV0aW9uLCByZXNvbHV0aW9uKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXBhcmVkLmFwcGVuZChwYWdlKQogICAgICAgICAgICAgICAgICAgICAgICBlbGlmIGZpbGVfZm9ybWF0ID09ICJQREYiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmdiLnNhdmUocGFydGlhbCwgIlBERiIsIHJlc29sdXRpb249cmVzb2x1dGlvbiwgcXVhbGl0eT05MCwgYXBwZW5kPWluZGV4ID4gMCkKICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJnYi5zYXZlKHBhcnRpYWwsIGZpbGVfZm9ybWF0LCBkcGk9KHJlc29sdXRpb24sIHJlc29sdXRpb24pKQogICAgICAgICAgICAgICAgY29ycmVjdGVkLnVubGluayhtaXNzaW5nX29rPVRydWUpCiAgICAgICAgICAgICAgICBpZiBiYWNrZ3JvdW5kX2NsZWFudXA6CiAgICAgICAgICAgICAgICAgICAgY2xlYW5lZC51bmxpbmsobWlzc2luZ19vaz1UcnVlKQogICAgICAgICAgICBpZiBvY3I6CiAgICAgICAgICAgICAgICBwYWdlX2xpc3QgPSBQYXRoKGRpcmVjdG9yeSkgLyAicGFnZXMudHh0IgogICAgICAgICAgICAgICAgaWYgYW55KCJcbiIgaW4gc3RyKHBhZ2UpIG9yICJcciIgaW4gc3RyKHBhZ2UpIGZvciBwYWdlIGluIHByZXBhcmVkKToKICAgICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJEYXMgU2Nhbi1BcmJlaXRzdmVyemVpY2huaXMgZGFyZiBrZWluZW4gWmVpbGVudW1icnVjaCBlbnRoYWx0ZW4iKQogICAgICAgICAgICAgICAgcGFnZV9saXN0LndyaXRlX3RleHQoIlxuIi5qb2luKG1hcChzdHIsIHByZXBhcmVkKSkgKyAiXG4iLCBlbmNvZGluZz0idXRmOCIpCiAgICAgICAgICAgICAgICBwcmVmaXggPSBQYXRoKGRpcmVjdG9yeSkgLyAic2VhcmNoYWJsZSIKICAgICAgICAgICAgICAgIHJ1bl9vY3JfY29tbWFuZChbInRlc3NlcmFjdCIsIHN0cihwYWdlX2xpc3QpLCBzdHIocHJlZml4KSwgIi1sIiwgb2NyX2xhbmd1YWdlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS1kcGkiLCBzdHIocm91bmQocmVzb2x1dGlvbikpLCAicGRmIl0pCiAgICAgICAgICAgICAgICBzZWFyY2hhYmxlID0gcHJlZml4LndpdGhfc3VmZml4KCIucGRmIikKICAgICAgICAgICAgICAgIHdpdGggUGRmUGFyc2VyLlBkZlBhcnNlcihmaWxlbmFtZT1zdHIoc2VhcmNoYWJsZSkpIGFzIHBkZjoKICAgICAgICAgICAgICAgICAgICBpZiBsZW4ocGRmLnBhZ2VzKSAhPSBsZW4oaW5wdXRzKToKICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJPQ1ItUERGIGlzdCB1bnZvbGxzdMOkbmRpZzsgUm9oc2NhbnMgYmxlaWJlbiBlcmhhbHRlbiIpCiAgICAgICAgICAgICAgICBzZWFyY2hhYmxlLnJlcGxhY2UocGFydGlhbCkKICAgICAgICAgICAgcGFydGlhbC5yZXBsYWNlKG91dHB1dCkKICAgIGZpbmFsbHk6CiAgICAgICAgcGFydGlhbC51bmxpbmsobWlzc2luZ19vaz1UcnVlKQogICAgcmV0dXJuIHsicGFnZUNvdW50IjogbGVuKGlucHV0cyksICJ3YXJuaW5ncyI6IHdhcm5pbmdzfQoKCmRlZiBpbnRlcnJ1cHRlZCgqXyk6CiAgICByYWlzZSBTeXN0ZW1FeGl0KCJTY2FuLVZlcmFyYmVpdHVuZyBhYmdlYnJvY2hlbiIpCgoKZGVmIG1haW4oKToKICAgICMgTGV0IGZpbmFsbHkgYmxvY2tzIHN0b3AgVGVzc2VyYWN0IGFuZCByZW1vdmUgaW5jb21wbGV0ZSBQREZzIG9uIGFnZW50IHRpbWVvdXQuCiAgICBzaWduYWwuc2lnbmFsKHNpZ25hbC5TSUdURVJNLCBpbnRlcnJ1cHRlZCkKICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKGRlc2NyaXB0aW9uPSJTY2FuLVNlaXRlbiB6dSBlaW5lciBEYXRlaSB6dXNhbW1lbmbDvGhyZW4iKQogICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLS1pbnB1dHMiLCBuYXJncz0iKyIpCiAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItLW91dHB1dCIpCiAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItLXJlc29sdXRpb24iLCB0eXBlPWZsb2F0LCBkZWZhdWx0PTMwMCkKICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi0tcHJvZmlsZSIsIGNob2ljZXM9WyJkb2N1bWVudCIsICJyZWNlaXB0IiwgInJhdyJdLCBkZWZhdWx0PSJkb2N1bWVudCIpCiAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItLXBvc3Rwcm9jZXNzIiwgYWN0aW9uPSJzdG9yZV90cnVlIikKICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi0tc3RyaWN0IiwgYWN0aW9uPSJzdG9yZV90cnVlIikKICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi0tYmFja2dyb3VuZC1jbGVhbnVwIiwgYWN0aW9uPSJzdG9yZV90cnVlIikKICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi0tb2NyIiwgYWN0aW9uPSJzdG9yZV90cnVlIikKICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi0tb2NyLWxhbmd1YWdlIiwgZGVmYXVsdD0iZGV1K2VuZyIpCiAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItLWNoZWNrLXJ1bnRpbWUiLCBhY3Rpb249InN0b3JlX3RydWUiKQogICAgYXJncyA9IHBhcnNlci5wYXJzZV9hcmdzKCkKICAgIGlmIGFyZ3MuY2hlY2tfcnVudGltZToKICAgICAgICBpZiBhcmdzLmJhY2tncm91bmRfY2xlYW51cCBvciAoYXJncy5wb3N0cHJvY2VzcyBhbmQgYXJncy5zdHJpY3QpOgogICAgICAgICAgICBpbXBvcnQgY3YyLCBudW1weQogICAgICAgIGlmIGFyZ3Mub2NyOgogICAgICAgICAgICBjaGVja19vY3IoYXJncy5vY3JfbGFuZ3VhZ2UpCiAgICAgICAgcHJpbnQoanNvbi5kdW1wcyh7InJlYWR5IjogVHJ1ZX0pKQogICAgICAgIHJldHVybgogICAgaWYgbm90IGFyZ3MuaW5wdXRzIG9yIG5vdCBhcmdzLm91dHB1dDoKICAgICAgICBwYXJzZXIuZXJyb3IoIi0taW5wdXRzIHVuZCAtLW91dHB1dCBzaW5kIGVyZm9yZGVybGljaCIpCiAgICBwcmludChqc29uLmR1bXBzKGNyZWF0ZV9kb2N1bWVudChhcmdzLmlucHV0cywgYXJncy5vdXRwdXQsIGFyZ3MucmVzb2x1dGlvbiwgYXJncy5wb3N0cHJvY2VzcywgYXJncy5wcm9maWxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzLnN0cmljdCwgYXJncy5vY3IsIGFyZ3Mub2NyX2xhbmd1YWdlLCBhcmdzLmJhY2tncm91bmRfY2xlYW51cCkpKQoKCmlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICBtYWluKCkK",
|
|
"scripts/scan_background.py": "IiIiQ29uc2VydmF0aXZlIHBhcGVyIG1hc2tpbmcuIEtlZXAgdGhlIGNhbnZhcyBhbmQgZXZlcnkgcGl4ZWwgaW5zaWRlIHRoZSBwYXBlci4iIiIKZnJvbSBwYXRobGliIGltcG9ydCBQYXRoCgppbXBvcnQgY3YyCmltcG9ydCBudW1weSBhcyBucAoKCmRlZiB3aGl0ZW5fYmFja2dyb3VuZChpbWFnZSk6CiAgICBoZWlnaHQsIHdpZHRoID0gaW1hZ2Uuc2hhcGVbOjJdCiAgICBzY2FsZSA9IG1pbigxLjAsIDEwMDAuMCAvIG1heChoZWlnaHQsIHdpZHRoKSkKICAgIHNtYWxsID0gY3YyLnJlc2l6ZShpbWFnZSwgTm9uZSwgZng9c2NhbGUsIGZ5PXNjYWxlLCBpbnRlcnBvbGF0aW9uPWN2Mi5JTlRFUl9BUkVBKQogICAgZ3JheSA9IGN2Mi5jdnRDb2xvcihzbWFsbCwgY3YyLkNPTE9SX0JHUjJHUkFZKQogICAgYm9yZGVyID0gbnAuY29uY2F0ZW5hdGUoKGdyYXlbMF0sIGdyYXlbLTFdLCBncmF5WzosIDBdLCBncmF5WzosIC0xXSkpCiAgICBiYWNrZ3JvdW5kID0gZmxvYXQobnAubWVkaWFuKGJvcmRlcikpCiAgICAjIFdoaXRlIHN1cnJvdW5kaW5ncyBhbHJlYWR5IG5lZWQgbm8gY29ycmVjdGlvbi4gTmV2ZXIgc2VhcmNoIGluc2lkZSBhCiAgICAjIHdoaXRlIGRvY3VtZW50IGZvciBhbiBpc29sYXRlZCB0ZXh0IGJveCBvciBsb2dvIHRvIGtlZXAgaW5zdGVhZC4KICAgIGlmIGJhY2tncm91bmQgPj0gMjM1IG9yIG5wLnBlcmNlbnRpbGUoYm9yZGVyLCA3NSkgLSBucC5wZXJjZW50aWxlKGJvcmRlciwgMjUpID4gNTU6CiAgICAgICAgcmV0dXJuIGltYWdlCgogICAgdGhyZXNob2xkLCBfID0gY3YyLnRocmVzaG9sZChncmF5LCAwLCAyNTUsIGN2Mi5USFJFU0hfQklOQVJZICsgY3YyLlRIUkVTSF9PVFNVKQogICAgbWFzayA9IG5wLnVpbnQ4KGdyYXkgPiBtYXgodGhyZXNob2xkLCBiYWNrZ3JvdW5kICsgMjApKSAqIDI1NQogICAgbWFzayA9IGN2Mi5tb3JwaG9sb2d5RXgobWFzaywgY3YyLk1PUlBIX0NMT1NFLCBucC5vbmVzKCg1LCA1KSwgbnAudWludDgpKQogICAgY29udG91cnMsIF8gPSBjdjIuZmluZENvbnRvdXJzKG1hc2ssIGN2Mi5SRVRSX0VYVEVSTkFMLCBjdjIuQ0hBSU5fQVBQUk9YX1NJTVBMRSkKICAgIGNhbmRpZGF0ZXMgPSBbXQogICAgYXJlYSA9IGdyYXkuc2l6ZQogICAgZm9yIGNvbnRvdXIgaW4gY29udG91cnM6CiAgICAgICAgY29udG91cl9hcmVhID0gY3YyLmNvbnRvdXJBcmVhKGNvbnRvdXIpCiAgICAgICAgaWYgbm90IDAuMDE1ICogYXJlYSA8IGNvbnRvdXJfYXJlYSA8IDAuOTg1ICogYXJlYToKICAgICAgICAgICAgY29udGludWUKICAgICAgICBwZXJpbWV0ZXIgPSBjdjIuYXJjTGVuZ3RoKGNvbnRvdXIsIFRydWUpCiAgICAgICAgcG9seWdvbiA9IGN2Mi5hcHByb3hQb2x5RFAoY29udG91ciwgMC4wMTggKiBwZXJpbWV0ZXIsIFRydWUpCiAgICAgICAgaWYgbGVuKHBvbHlnb24pICE9IDQgb3Igbm90IGN2Mi5pc0NvbnRvdXJDb252ZXgocG9seWdvbik6CiAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgIyBVc2UgdGhlIHF1YWRyaWxhdGVyYWwgb25seSB0byByZWNvZ25pemUgYSBzaGVldCwgdGhlbiBrZWVwIGl0cyBmdWxsCiAgICAgICAgIyBjb250b3VyIGh1bGwgc28gcm91bmRlZCBvciBzbGlnaHRseSB1bmV2ZW4gZWRnZXMgY2Fubm90IGxvc2UgY29udGVudC4KICAgICAgICBwb2x5Z29uID0gY3YyLmNvbnZleEh1bGwoY29udG91cikKICAgICAgICBwYXBlciA9IG5wLnplcm9zX2xpa2UoZ3JheSkKICAgICAgICBjdjIuZmlsbFBvbHkocGFwZXIsIFtwb2x5Z29uXSwgMjU1KQogICAgICAgIGluc2lkZSA9IGN2Mi5lcm9kZShwYXBlciwgbnAub25lcygoNywgNyksIG5wLnVpbnQ4KSkgPiAwCiAgICAgICAgcmluZyA9IChjdjIuZGlsYXRlKHBhcGVyLCBucC5vbmVzKCg5LCA5KSwgbnAudWludDgpKSA+IDApICYgKHBhcGVyID09IDApCiAgICAgICAgaWYgaW5zaWRlLnN1bSgpIDwgMTAwIG9yIHJpbmcuc3VtKCkgPCA1MDoKICAgICAgICAgICAgY29udGludWUKICAgICAgICBwYXBlcl9saWdodCA9IGZsb2F0KG5wLm1lZGlhbihncmF5W2luc2lkZV0pKQogICAgICAgICMgQSBwYXBlciBlZGdlIG11c3Qgc2VwYXJhdGUgYSBtb3N0bHkgbGlnaHQgc2hlZXQgZnJvbSBkYXJrZXIgc2Nhbm5lcgogICAgICAgICMgYmFja2luZyBhbGwgYXJvdW5kIGl0LiBBbWJpZ3VvdXMgcGhvdG9zL3BhZ2VzIGFyZSBsZWZ0IHVudG91Y2hlZC4KICAgICAgICBpZiBwYXBlcl9saWdodCA8IGJhY2tncm91bmQgKyAzMCBvciBucC5tZWFuKGdyYXlbcmluZ10gPCBwYXBlcl9saWdodCAtIDIwKSA8IDAuODU6CiAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgY2FuZGlkYXRlcy5hcHBlbmQocG9seWdvbikKCiAgICBpZiBub3QgY2FuZGlkYXRlczoKICAgICAgICByZXR1cm4gaW1hZ2UKICAgIGtlZXBfc21hbGwgPSBucC56ZXJvc19saWtlKGdyYXkpCiAgICBjdjIuZmlsbFBvbHkoa2VlcF9zbWFsbCwgY2FuZGlkYXRlcywgMjU1KQogICAgIyBEbyBub3QgZXJhc2UgYW5vdGhlciBzaWduaWZpY2FudCBvYmplY3QgdGhhdCB3ZSBjb3VsZCBub3QgY2xhc3NpZnkuCiAgICBvdXRzaWRlID0gKGtlZXBfc21hbGwgPT0gMCkKICAgIGlmIG5wLm1lYW4oZ3JheVtvdXRzaWRlXSA+IGJhY2tncm91bmQgKyAzMCkgPiAwLjA0OgogICAgICAgIHJldHVybiBpbWFnZQogICAga2VlcCA9IG5wLnplcm9zKChoZWlnaHQsIHdpZHRoKSwgZHR5cGU9bnAudWludDgpCiAgICBwb2x5Z29ucyA9IFtucC5yaW50KHBvbHlnb24gLyBzY2FsZSkuYXN0eXBlKG5wLmludDMyKSBmb3IgcG9seWdvbiBpbiBjYW5kaWRhdGVzXQogICAgY3YyLmZpbGxQb2x5KGtlZXAsIHBvbHlnb25zLCAyNTUpCiAgICAjIFJvdW5kaW5nL2Rvd25zYW1wbGluZyB1bmNlcnRhaW50eSBncm93cyB3aXRoIHRoZSBvcmlnaW5hbCBzY2FuIERQSS4KICAgIHBhZGRpbmcgPSBtYXgoMiwgaW50KG5wLmNlaWwoMiAvIHNjYWxlKSkpCiAgICBrZWVwID0gY3YyLmRpbGF0ZShrZWVwLCBucC5vbmVzKCgyICogcGFkZGluZyArIDEsIDIgKiBwYWRkaW5nICsgMSksIG5wLnVpbnQ4KSkKICAgIHJlc3VsdCA9IGltYWdlLmNvcHkoKQogICAgcmVzdWx0W2tlZXAgPT0gMF0gPSAyNTUKICAgIHJldHVybiByZXN1bHQKCgpkZWYgY2xlYW5fc2Nhbl9iYWNrZ3JvdW5kKGlucHV0X3BhdGg6IFBhdGgsIG91dHB1dF9wYXRoOiBQYXRoKToKICAgIGltYWdlID0gY3YyLmltcmVhZChzdHIoaW5wdXRfcGF0aCksIGN2Mi5JTVJFQURfQ09MT1IpCiAgICBpZiBpbWFnZSBpcyBOb25lOgogICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiU2Nhbi1CaWxkIGtvbm50ZSBuaWNodCBnZWxlc2VuIHdlcmRlbiIpCiAgICBpZiBub3QgY3YyLmltd3JpdGUoc3RyKG91dHB1dF9wYXRoKSwgd2hpdGVuX2JhY2tncm91bmQoaW1hZ2UpKToKICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoIkJlcmVpbmlndGVzIFNjYW4tQmlsZCBrb25udGUgbmljaHQgZ2VzcGVpY2hlcnQgd2VyZGVuIikK",
|
|
"scripts/opencv_postprocess.py": "IyEvdXNyL2Jpbi9lbnYgcHl0aG9uMwppbXBvcnQgYXJncGFyc2UKaW1wb3J0IG1hdGgKZnJvbSBwYXRobGliIGltcG9ydCBQYXRoCgppbXBvcnQgY3YyCmltcG9ydCBudW1weSBhcyBucApmcm9tIFBJTCBpbXBvcnQgSW1hZ2UKCgpkZWYgb3JkZXJfcG9pbnRzKHBvaW50cyk6CiAgICByZWN0ID0gbnAuemVyb3MoKDQsIDIpLCBkdHlwZT0iZmxvYXQzMiIpCiAgICBwb2ludF9zdW0gPSBwb2ludHMuc3VtKGF4aXM9MSkKICAgIHBvaW50X2RpZmYgPSBucC5kaWZmKHBvaW50cywgYXhpcz0xKQoKICAgIHJlY3RbMF0gPSBwb2ludHNbbnAuYXJnbWluKHBvaW50X3N1bSldCiAgICByZWN0WzJdID0gcG9pbnRzW25wLmFyZ21heChwb2ludF9zdW0pXQogICAgcmVjdFsxXSA9IHBvaW50c1tucC5hcmdtaW4ocG9pbnRfZGlmZildCiAgICByZWN0WzNdID0gcG9pbnRzW25wLmFyZ21heChwb2ludF9kaWZmKV0KICAgIHJldHVybiByZWN0CgoKZGVmIGZvdXJfcG9pbnRfdHJhbnNmb3JtKGltYWdlLCBwb2ludHMpOgogICAgcmVjdCA9IG9yZGVyX3BvaW50cyhwb2ludHMpCiAgICB0b3BfbGVmdCwgdG9wX3JpZ2h0LCBib3R0b21fcmlnaHQsIGJvdHRvbV9sZWZ0ID0gcmVjdAoKICAgIHdpZHRoX2EgPSBucC5saW5hbGcubm9ybShib3R0b21fcmlnaHQgLSBib3R0b21fbGVmdCkKICAgIHdpZHRoX2IgPSBucC5saW5hbGcubm9ybSh0b3BfcmlnaHQgLSB0b3BfbGVmdCkKICAgIG1heF93aWR0aCA9IGludChtYXgod2lkdGhfYSwgd2lkdGhfYikpCgogICAgaGVpZ2h0X2EgPSBucC5saW5hbGcubm9ybSh0b3BfcmlnaHQgLSBib3R0b21fcmlnaHQpCiAgICBoZWlnaHRfYiA9IG5wLmxpbmFsZy5ub3JtKHRvcF9sZWZ0IC0gYm90dG9tX2xlZnQpCiAgICBtYXhfaGVpZ2h0ID0gaW50KG1heChoZWlnaHRfYSwgaGVpZ2h0X2IpKQoKICAgIGRlc3RpbmF0aW9uID0gbnAuYXJyYXkoWwogICAgICAgIFswLCAwXSwKICAgICAgICBbbWF4X3dpZHRoIC0gMSwgMF0sCiAgICAgICAgW21heF93aWR0aCAtIDEsIG1heF9oZWlnaHQgLSAxXSwKICAgICAgICBbMCwgbWF4X2hlaWdodCAtIDFdLAogICAgXSwgZHR5cGU9ImZsb2F0MzIiKQoKICAgIG1hdHJpeCA9IGN2Mi5nZXRQZXJzcGVjdGl2ZVRyYW5zZm9ybShyZWN0LCBkZXN0aW5hdGlvbikKICAgIHJldHVybiBjdjIud2FycFBlcnNwZWN0aXZlKGltYWdlLCBtYXRyaXgsIChtYXhfd2lkdGgsIG1heF9oZWlnaHQpLCBib3JkZXJWYWx1ZT0oMjU1LCAyNTUsIDI1NSkpCgoKZGVmIHJvdGF0ZV9ib3VuZChpbWFnZSwgYW5nbGUpOgogICAgaGVpZ2h0LCB3aWR0aCA9IGltYWdlLnNoYXBlWzoyXQogICAgY2VudGVyID0gKHdpZHRoIC8gMiwgaGVpZ2h0IC8gMikKICAgIG1hdHJpeCA9IGN2Mi5nZXRSb3RhdGlvbk1hdHJpeDJEKGNlbnRlciwgYW5nbGUsIDEuMCkKICAgIGNvcyA9IGFicyhtYXRyaXhbMCwgMF0pCiAgICBzaW4gPSBhYnMobWF0cml4WzAsIDFdKQoKICAgIG5ld193aWR0aCA9IGludCgoaGVpZ2h0ICogc2luKSArICh3aWR0aCAqIGNvcykpCiAgICBuZXdfaGVpZ2h0ID0gaW50KChoZWlnaHQgKiBjb3MpICsgKHdpZHRoICogc2luKSkKCiAgICBtYXRyaXhbMCwgMl0gKz0gKG5ld193aWR0aCAvIDIpIC0gY2VudGVyWzBdCiAgICBtYXRyaXhbMSwgMl0gKz0gKG5ld19oZWlnaHQgLyAyKSAtIGNlbnRlclsxXQoKICAgIHJldHVybiBjdjIud2FycEFmZmluZShpbWFnZSwgbWF0cml4LCAobmV3X3dpZHRoLCBuZXdfaGVpZ2h0KSwgYm9yZGVyVmFsdWU9KDI1NSwgMjU1LCAyNTUpKQoKCmRlZiBkZXNrZXdfYnlfdGV4dF9hbmdsZShpbWFnZSk6CiAgICBncmF5ID0gY3YyLmN2dENvbG9yKGltYWdlLCBjdjIuQ09MT1JfQkdSMkdSQVkpCiAgICBpbnZlcnRlZCA9IGN2Mi5iaXR3aXNlX25vdChncmF5KQogICAgdGhyZXNob2xkID0gY3YyLnRocmVzaG9sZChpbnZlcnRlZCwgMCwgMjU1LCBjdjIuVEhSRVNIX0JJTkFSWSB8IGN2Mi5USFJFU0hfT1RTVSlbMV0KICAgIGNvb3JkaW5hdGVzID0gbnAuY29sdW1uX3N0YWNrKG5wLndoZXJlKHRocmVzaG9sZCA+IDApKQoKICAgIGlmIGxlbihjb29yZGluYXRlcykgPCA1MDA6CiAgICAgICAgcmV0dXJuIGltYWdlCgogICAgYW5nbGUgPSBjdjIubWluQXJlYVJlY3QoY29vcmRpbmF0ZXMpWy0xXQogICAgaWYgYW5nbGUgPCAtNDU6CiAgICAgICAgYW5nbGUgPSAtKDkwICsgYW5nbGUpCiAgICBlbHNlOgogICAgICAgIGFuZ2xlID0gLWFuZ2xlCgogICAgaWYgYWJzKGFuZ2xlKSA8IDAuMiBvciBhYnMoYW5nbGUpID4gODoKICAgICAgICByZXR1cm4gaW1hZ2UKCiAgICByZXR1cm4gcm90YXRlX2JvdW5kKGltYWdlLCBhbmdsZSkKCgpkZWYgZmluZF9kb2N1bWVudF9jb250b3VyKGltYWdlLCBwcm9maWxlKToKICAgIHJhdGlvID0gaW1hZ2Uuc2hhcGVbMF0gLyA5MDAuMAogICAgcmVzaXplZCA9IGN2Mi5yZXNpemUoaW1hZ2UsIChpbnQoaW1hZ2Uuc2hhcGVbMV0gLyByYXRpbyksIDkwMCkpCiAgICBncmF5ID0gY3YyLmN2dENvbG9yKHJlc2l6ZWQsIGN2Mi5DT0xPUl9CR1IyR1JBWSkKICAgIGdyYXkgPSBjdjIuR2F1c3NpYW5CbHVyKGdyYXksICg1LCA1KSwgMCkKCiAgICBlZGdlcyA9IGN2Mi5DYW5ueShncmF5LCA0NSwgMTQwKQogICAga2VybmVsID0gY3YyLmdldFN0cnVjdHVyaW5nRWxlbWVudChjdjIuTU9SUEhfUkVDVCwgKDcsIDcpKQogICAgZWRnZXMgPSBjdjIubW9ycGhvbG9neUV4KGVkZ2VzLCBjdjIuTU9SUEhfQ0xPU0UsIGtlcm5lbCkKCiAgICBjb250b3VycywgXyA9IGN2Mi5maW5kQ29udG91cnMoZWRnZXMsIGN2Mi5SRVRSX0VYVEVSTkFMLCBjdjIuQ0hBSU5fQVBQUk9YX1NJTVBMRSkKICAgIGNvbnRvdXJzID0gc29ydGVkKGNvbnRvdXJzLCBrZXk9Y3YyLmNvbnRvdXJBcmVhLCByZXZlcnNlPVRydWUpWzo4XQoKICAgIG1pbl9hcmVhID0gcmVzaXplZC5zaGFwZVswXSAqIHJlc2l6ZWQuc2hhcGVbMV0gKiAoMC4wMyBpZiBwcm9maWxlID09ICJyZWNlaXB0IiBlbHNlIDAuMTIpCgogICAgZm9yIGNvbnRvdXIgaW4gY29udG91cnM6CiAgICAgICAgaWYgY3YyLmNvbnRvdXJBcmVhKGNvbnRvdXIpIDwgbWluX2FyZWE6CiAgICAgICAgICAgIGNvbnRpbnVlCgogICAgICAgIHBlcmltZXRlciA9IGN2Mi5hcmNMZW5ndGgoY29udG91ciwgVHJ1ZSkKICAgICAgICBhcHByb3ggPSBjdjIuYXBwcm94UG9seURQKGNvbnRvdXIsIDAuMDI1ICogcGVyaW1ldGVyLCBUcnVlKQogICAgICAgIGlmIGxlbihhcHByb3gpID09IDQ6CiAgICAgICAgICAgIHJldHVybiBhcHByb3gucmVzaGFwZSg0LCAyKSAqIHJhdGlvCgogICAgcmV0dXJuIE5vbmUKCgpkZWYgdHJpbV9saWdodF9ib3JkZXIoaW1hZ2UpOgogICAgZ3JheSA9IGN2Mi5jdnRDb2xvcihpbWFnZSwgY3YyLkNPTE9SX0JHUjJHUkFZKQogICAgbWFzayA9IGN2Mi50aHJlc2hvbGQoZ3JheSwgMjQ1LCAyNTUsIGN2Mi5USFJFU0hfQklOQVJZX0lOVilbMV0KICAgIGtlcm5lbCA9IGN2Mi5nZXRTdHJ1Y3R1cmluZ0VsZW1lbnQoY3YyLk1PUlBIX1JFQ1QsICg5LCA5KSkKICAgIG1hc2sgPSBjdjIubW9ycGhvbG9neUV4KG1hc2ssIGN2Mi5NT1JQSF9DTE9TRSwga2VybmVsKQoKICAgIGNvbnRvdXJzLCBfID0gY3YyLmZpbmRDb250b3VycyhtYXNrLCBjdjIuUkVUUl9FWFRFUk5BTCwgY3YyLkNIQUlOX0FQUFJPWF9TSU1QTEUpCiAgICBpZiBub3QgY29udG91cnM6CiAgICAgICAgcmV0dXJuIGltYWdlCgogICAgY29udG91ciA9IG1heChjb250b3Vycywga2V5PWN2Mi5jb250b3VyQXJlYSkKICAgIGlmIGN2Mi5jb250b3VyQXJlYShjb250b3VyKSA8IGltYWdlLnNoYXBlWzBdICogaW1hZ2Uuc2hhcGVbMV0gKiAwLjAyOgogICAgICAgIHJldHVybiBpbWFnZQoKICAgIHgsIHksIHdpZHRoLCBoZWlnaHQgPSBjdjIuYm91bmRpbmdSZWN0KGNvbnRvdXIpCiAgICBwYWRkaW5nID0gbWF4KDEyLCBpbnQobWluKHdpZHRoLCBoZWlnaHQpICogMC4wMjUpKQogICAgeCA9IG1heCgwLCB4IC0gcGFkZGluZykKICAgIHkgPSBtYXgoMCwgeSAtIHBhZGRpbmcpCiAgICB3aWR0aCA9IG1pbihpbWFnZS5zaGFwZVsxXSAtIHgsIHdpZHRoICsgcGFkZGluZyAqIDIpCiAgICBoZWlnaHQgPSBtaW4oaW1hZ2Uuc2hhcGVbMF0gLSB5LCBoZWlnaHQgKyBwYWRkaW5nICogMikKICAgIHJldHVybiBpbWFnZVt5OnkgKyBoZWlnaHQsIHg6eCArIHdpZHRoXQoKCmRlZiBlbmhhbmNlX3JlY2VpcHQoaW1hZ2UpOgogICAgZ3JheSA9IGN2Mi5jdnRDb2xvcihpbWFnZSwgY3YyLkNPTE9SX0JHUjJHUkFZKQogICAgY2xhaGUgPSBjdjIuY3JlYXRlQ0xBSEUoY2xpcExpbWl0PTIuMCwgdGlsZUdyaWRTaXplPSg4LCA4KSkKICAgIGdyYXkgPSBjbGFoZS5hcHBseShncmF5KQogICAgZ3JheSA9IGN2Mi5mYXN0TmxNZWFuc0Rlbm9pc2luZyhncmF5LCBOb25lLCA4LCA3LCAyMSkKICAgIGdyYXkgPSBjdjIubm9ybWFsaXplKGdyYXksIE5vbmUsIDAsIDI1NSwgY3YyLk5PUk1fTUlOTUFYKQogICAgcmV0dXJuIGN2Mi5jdnRDb2xvcihncmF5LCBjdjIuQ09MT1JfR1JBWTJCR1IpCgoKZGVmIGVuaGFuY2VfZG9jdW1lbnQoaW1hZ2UpOgogICAgbGFiID0gY3YyLmN2dENvbG9yKGltYWdlLCBjdjIuQ09MT1JfQkdSMkxBQikKICAgIGxfY2hhbm5lbCwgYV9jaGFubmVsLCBiX2NoYW5uZWwgPSBjdjIuc3BsaXQobGFiKQogICAgY2xhaGUgPSBjdjIuY3JlYXRlQ0xBSEUoY2xpcExpbWl0PTEuNiwgdGlsZUdyaWRTaXplPSg4LCA4KSkKICAgIGxfY2hhbm5lbCA9IGNsYWhlLmFwcGx5KGxfY2hhbm5lbCkKICAgIHJldHVybiBjdjIuY3Z0Q29sb3IoY3YyLm1lcmdlKChsX2NoYW5uZWwsIGFfY2hhbm5lbCwgYl9jaGFubmVsKSksIGN2Mi5DT0xPUl9MQUIyQkdSKQoKCmRlZiBhdXRvX3JvdGF0ZV9wcm9maWxlKGltYWdlLCBwcm9maWxlKToKICAgIGhlaWdodCwgd2lkdGggPSBpbWFnZS5zaGFwZVs6Ml0KCiAgICBpZiBwcm9maWxlID09ICJyZWNlaXB0IiBhbmQgd2lkdGggPiBoZWlnaHQ6CiAgICAgICAgcmV0dXJuIGN2Mi5yb3RhdGUoaW1hZ2UsIGN2Mi5ST1RBVEVfOTBfQ0xPQ0tXSVNFKQoKICAgIHJldHVybiBpbWFnZQoKCmRlZiBwb3N0cHJvY2VzcyhpbnB1dF9wYXRoLCBvdXRwdXRfcGF0aCwgcHJvZmlsZSk6CiAgICBpbWFnZSA9IGN2Mi5pbXJlYWQoc3RyKGlucHV0X3BhdGgpLCBjdjIuSU1SRUFEX0NPTE9SKQogICAgaWYgaW1hZ2UgaXMgTm9uZToKICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoZiJPcGVuQ1Yga29ubnRlIHtpbnB1dF9wYXRofSBuaWNodCBsZXNlbiIpCgogICAgY29udG91ciA9IGZpbmRfZG9jdW1lbnRfY29udG91cihpbWFnZSwgcHJvZmlsZSkKICAgIGlmIGNvbnRvdXIgaXMgbm90IE5vbmU6CiAgICAgICAgcHJvY2Vzc2VkID0gZm91cl9wb2ludF90cmFuc2Zvcm0oaW1hZ2UsIGNvbnRvdXIuYXN0eXBlKCJmbG9hdDMyIikpCiAgICBlbHNlOgogICAgICAgIHByb2Nlc3NlZCA9IHRyaW1fbGlnaHRfYm9yZGVyKGltYWdlKQoKICAgIHByb2Nlc3NlZCA9IGRlc2tld19ieV90ZXh0X2FuZ2xlKHByb2Nlc3NlZCkKICAgIHByb2Nlc3NlZCA9IHRyaW1fbGlnaHRfYm9yZGVyKHByb2Nlc3NlZCkKICAgIHByb2Nlc3NlZCA9IGF1dG9fcm90YXRlX3Byb2ZpbGUocHJvY2Vzc2VkLCBwcm9maWxlKQoKICAgIGlmIHByb2ZpbGUgPT0gInJlY2VpcHQiOgogICAgICAgIHByb2Nlc3NlZCA9IGVuaGFuY2VfcmVjZWlwdChwcm9jZXNzZWQpCiAgICBlbGlmIHByb2ZpbGUgIT0gInJhdyI6CiAgICAgICAgcHJvY2Vzc2VkID0gZW5oYW5jZV9kb2N1bWVudChwcm9jZXNzZWQpCgogICAgc2F2ZV9vdXRwdXQocHJvY2Vzc2VkLCBvdXRwdXRfcGF0aCkKCgpkZWYgc2F2ZV9vdXRwdXQoaW1hZ2UsIG91dHB1dF9wYXRoKToKICAgIHN1ZmZpeCA9IG91dHB1dF9wYXRoLnN1ZmZpeC5sb3dlcigpCgogICAgaWYgc3VmZml4ID09ICIucGRmIjoKICAgICAgICByZ2IgPSBjdjIuY3Z0Q29sb3IoaW1hZ2UsIGN2Mi5DT0xPUl9CR1IyUkdCKQogICAgICAgIHBpbF9pbWFnZSA9IEltYWdlLmZyb21hcnJheShyZ2IpCiAgICAgICAgaWYgcGlsX2ltYWdlLm1vZGUgIT0gIlJHQiI6CiAgICAgICAgICAgIHBpbF9pbWFnZSA9IHBpbF9pbWFnZS5jb252ZXJ0KCJSR0IiKQogICAgICAgIHBpbF9pbWFnZS5zYXZlKG91dHB1dF9wYXRoLCAiUERGIiwgcmVzb2x1dGlvbj0zMDAuMCkKICAgICAgICByZXR1cm4KCiAgICBpZiBzdWZmaXggaW4geyIuanBnIiwgIi5qcGVnIn06CiAgICAgICAgY3YyLmltd3JpdGUoc3RyKG91dHB1dF9wYXRoKSwgaW1hZ2UsIFtjdjIuSU1XUklURV9KUEVHX1FVQUxJVFksIDkyXSkKICAgICAgICByZXR1cm4KCiAgICBpZiBzdWZmaXggPT0gIi5wbmciOgogICAgICAgIGN2Mi5pbXdyaXRlKHN0cihvdXRwdXRfcGF0aCksIGltYWdlLCBbY3YyLklNV1JJVEVfUE5HX0NPTVBSRVNTSU9OLCAzXSkKICAgICAgICByZXR1cm4KCiAgICBpZiBzdWZmaXggaW4geyIudGlmIiwgIi50aWZmIn06CiAgICAgICAgY3YyLmltd3JpdGUoc3RyKG91dHB1dF9wYXRoKSwgaW1hZ2UpCiAgICAgICAgcmV0dXJuCgogICAgcmFpc2UgUnVudGltZUVycm9yKGYiTmljaHQgdW50ZXJzdMO8dHp0ZXMgQXVzZ2FiZWZvcm1hdDoge3N1ZmZpeH0iKQoKCmRlZiBtYWluKCk6CiAgICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcihkZXNjcmlwdGlvbj0iRkVERU8gU2Nhbi1OYWNoYmVhcmJlaXR1bmcgbWl0IE9wZW5DViIpCiAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItLWlucHV0IiwgcmVxdWlyZWQ9VHJ1ZSkKICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi0tb3V0cHV0IiwgcmVxdWlyZWQ9VHJ1ZSkKICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi0tcHJvZmlsZSIsIGRlZmF1bHQ9ImRvY3VtZW50IiwgY2hvaWNlcz1bImRvY3VtZW50IiwgInJlY2VpcHQiLCAicmF3Il0pCiAgICBhcmdzID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQoKICAgIHBvc3Rwcm9jZXNzKFBhdGgoYXJncy5pbnB1dCksIFBhdGgoYXJncy5vdXRwdXQpLCBhcmdzLnByb2ZpbGUpCgoKaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgIG1haW4oKQo=",
|
|
"scripts/setup-opencv.sh": "IyEvdXNyL2Jpbi9lbnYgc2gKc2V0IC1ldQoKU0NSSVBUX0RJUj0iJChDRFBBVEg9IGNkIC0tICIkKGRpcm5hbWUgLS0gIiQwIikiICYmIHB3ZCkiCkFHRU5UX0RJUj0iJChDRFBBVEg9IGNkIC0tICIkU0NSSVBUX0RJUi8uLiIgJiYgcHdkKSIKVkVOVl9ESVI9IiR7RkVERU9fU0NBTl9QT1NUUFJPQ0VTU19WRU5WOi0kQUdFTlRfRElSLy52ZW52LW9wZW5jdn0iClBZVEhPTl9CSU49IiR7UFlUSE9OOi1weXRob24zfSIKCmVjaG8gIkZFREVPIE9wZW5DVi1VbWdlYnVuZyB3aXJkIHZvcmJlcmVpdGV0IgplY2hvICJBZ2VudDogJEFHRU5UX0RJUiIKZWNobyAiVmVudjogICRWRU5WX0RJUiIKCmlmICEgY29tbWFuZCAtdiAiJFBZVEhPTl9CSU4iID4vZGV2L251bGwgMj4mMTsgdGhlbgogIGVjaG8gIkZlaGxlcjogJFBZVEhPTl9CSU4gd3VyZGUgbmljaHQgZ2VmdW5kZW4uIiA+JjIKICBleGl0IDEKZmkKCiIkUFlUSE9OX0JJTiIgLW0gdmVudiAiJFZFTlZfRElSIgoiJFZFTlZfRElSL2Jpbi9weXRob24iIC1tIHBpcCBpbnN0YWxsIC0tdXBncmFkZSBwaXAKIiRWRU5WX0RJUi9iaW4vcHl0aG9uIiAtbSBwaXAgaW5zdGFsbCAtciAiJEFHRU5UX0RJUi9yZXF1aXJlbWVudHMtb3BlbmN2LnR4dCIKIiRWRU5WX0RJUi9iaW4vcHl0aG9uIiAtYyAiaW1wb3J0IGN2MiwgUElMLCBudW1weTsgcHJpbnQoJ09wZW5DViBPSycpIgoKZWNobwplY2hvICJGZXJ0aWcuIFZlcndlbmRlIGluIC5lbnY6IgplY2hvICJGRURFT19TQ0FOX1BPU1RQUk9DRVNTPXRydWUiCmVjaG8gIkZFREVPX1NDQU5fUE9TVFBST0NFU1NfUFlUSE9OPSRWRU5WX0RJUi9iaW4vcHl0aG9uIgo=",
|
|
"requirements-opencv.txt": "b3BlbmN2LXB5dGhvbi1oZWFkbGVzcz49NC45ClBpbGxvdz49MTAuMApudW1weT49MS4yNgo=",
|
|
"package.json": "ewogICJuYW1lIjogIkBmZWRlby9kZXZpY2UtYWdlbnQiLAogICJ2ZXJzaW9uIjogIjAuMS4wIiwKICAidHlwZSI6ICJtb2R1bGUiLAogICJlbmdpbmVzIjogewogICAgIm5vZGUiOiAiPj0yMCIKICB9LAogICJzY3JpcHRzIjogewogICAgInN0YXJ0IjogIm5vZGUgZGlzdC9tYWluLmpzIiwKICAgICJzZXR1cDpvcGVuY3YiOiAic2ggc2NyaXB0cy9zZXR1cC1vcGVuY3Yuc2giCiAgfQp9Cg=="
|
|
}
|
|
}
|