{"data":{"format":"sidebud-widget-pack","formatVersion":2,"exportedAt":"2026-09-26T11:45:11.531Z","manifest":{"id":"app.sidebud.hermes-agent","mcp":{"args":["server/index.mjs"],"command":"node","transport":"stdio"},"data":[{"id":"agents","tool":"list_agents","extract":"text-json","refreshSeconds":60},{"id":"sessions","tool":"list_sessions","extract":"text-json","arguments":{"limit":20},"refreshSeconds":20},{"id":"tasks","tool":"list_tasks","extract":"text-json","refreshSeconds":30},{"id":"cron","tool":"list_cron_jobs","extract":"text-json","refreshSeconds":300}],"logo":{"kind":"file","path":"logo.png","source":"https://github.com/NousResearch/hermes-agent/blob/7b761da2de4979e424510ca7022bf9527aa65b68/apps/desktop/assets/icon.png"},"name":"Hermes Agent","tile":{"size":"large"},"badge":{"text":"{{agents/active}}","tone":"info"},"setup":{"steps":["Install Hermes Agent (hermes --version prints its version) and choose a model for it (hermes model).","Keep the Hermes gateway running (hermes gateway start) so kanban tasks are picked up; sessions and their messages work without it.","Nothing else to set: the pack reads Hermes on this computer and starts its own private Hermes backend when it needs one."],"detect":{"anyPath":["~/.hermes","{{env.LOCALAPPDATA}}/hermes/bin/hermes.exe"]},"prerequisites":[{"name":"Hermes Agent","command":"hermes"},{"name":"Node.js","command":"node"}]},"skill":{"path":"SKILL.md"},"author":{"name":"Sidebud"},"blocks":[{"type":"stats","items":[{"tone":"neutral","label":"Agents","value":"{{agents/count|default:0}}"},{"tone":"info","label":"Working","value":"{{agents/active|default:0}}"},{"tone":"neutral","label":"Tasks","value":"{{tasks/open|default:0}}"}]},{"item":{"key":"{{item/id}}","time":"{{item/lastActivityAt}}","title":"{{item/title|truncate:60}}","status":"{{item/activity}}","subtitle":"{{item/agent}}","statusTones":{"running":"info"}},"type":"list","items":"{{sessions/sessions|sort:-state=running,-lastActivityAt}}","limit":8,"title":"Sessions","emptyText":"No Hermes sessions yet"},{"item":{"key":"{{item/id}}","time":"{{item/updatedAt}}","title":"{{item/title|truncate:80}}","subtitle":"{{item/assignee|default:Unassigned}}"},"type":"board","items":"{{tasks/tasks|sort:-updatedAt}}","limit":3,"title":"Kanban","column":"{{item/status}}","columns":[{"id":"todo","tone":"neutral","title":"To do","values":["triage","todo","ready","scheduled"]},{"id":"running","tone":"info","title":"Running"},{"id":"review","tone":"warning","title":"Review"},{"id":"blocked","tone":"danger","title":"Blocked"},{"id":"done","tone":"success","title":"Done"}]},{"item":{"time":"{{item/lastActiveAt}}","title":"{{item/displayName}}","status":"{{item/activity}}","subtitle":"{{item/model|default:Default model}}","statusTones":{"working":"info"}},"type":"list","items":"{{agents/agents|sort:-activeSessions,-lastActiveAt}}","limit":10,"title":"Agents","emptyText":"No Hermes agents"},{"item":{"time":"{{item/nextRunAt}}","title":"{{item/name|default:Scheduled job|truncate:60}}","status":"{{item/lastStatus}}","subtitle":"{{item/agent}} · {{item/schedule}}","statusTones":{"ok":"success","error":"danger","failed":"danger","success":"success"}},"type":"list","items":"{{cron/jobs|sort:nextRunAt}}","limit":6,"title":"Scheduled","emptyText":"No scheduled jobs"}],"detail":{"tool":"read_session","extract":"text-json","message":{"at":"{{item/at}}","role":"{{item/role}}","text":"{{item/content}}"},"messages":"{{detail/messages}}","arguments":{"agent":"{{item/agent}}","limit":20,"session_id":"{{item/id}}"}},"glance":{"stats":[{"tone":"info","label":"Working","value":"{{agents/active|default:0}}"},{"tone":"neutral","label":"Tasks","value":"{{tasks/open|default:0}}"}]},"notify":[{"id":"sessions","key":"{{item/id}}","items":"{{sessions/sessions}}","rules":[{"text":"Hermes agent {{item/agent}} finished “{{item/title}}”.","state":"idle","priority":"finished","withLatest":true}],"state":"{{item/state}}","category":"agents"},{"id":"tasks","key":"{{item/id}}","items":"{{tasks/tasks}}","rules":[{"text":"Hermes task “{{item/title}}” ({{item/assignee|default:Hermes}}) is done.","state":"done","priority":"finished","withLatest":true},{"text":"Hermes task “{{item/title}}” ({{item/assignee|default:Hermes}}) is ready for your review.","state":"review","priority":"needs_you","withLatest":true},{"text":"Hermes task “{{item/title}}” ({{item/assignee|default:Hermes}}) is blocked.","state":"blocked","priority":"failed","withLatest":true}],"state":"{{item/status}}","category":"agents"}],"license":"MIT","listing":{"account":"Hermes Agent on this computer","category":"agents","homepage":"https://hermes-agent.nousresearch.com/docs","connectsTo":"Hermes on this computer, through the server in this pack (Hermes's local backend and CLI)"},"preview":{"at":"2026-09-25T09:00:00.000Z","data":{"cron":{"jobs":[{"id":"j1","name":"Morning digest","agent":"default","schedule":"every day at 8:00","nextRunAt":"2026-09-26T08:00:00.000Z","lastStatus":"ok"}],"count":1},"tasks":{"open":3,"count":4,"tasks":[{"id":"t_a1","agent":"coder","title":"Add dark mode to settings","status":"todo","assignee":"coder","updatedAt":"2026-09-25T08:00:00.000Z"},{"id":"t_a2","agent":"coder","title":"Fix the flaky checkout test","status":"running","assignee":"coder","updatedAt":"2026-09-25T08:57:00.000Z"},{"id":"t_a3","agent":"default","title":"Review the onboarding copy","status":"review","assignee":"default","updatedAt":"2026-09-25T08:30:00.000Z"},{"id":"t_a4","agent":"default","title":"Write the migration guide","status":"done","assignee":"default","updatedAt":"2026-09-25T04:00:00.000Z"}],"running":1},"agents":{"count":2,"active":1,"agents":[{"name":"default","model":"Hermes 4","activity":"","displayName":"default","lastActiveAt":"2026-09-25T08:24:00.000Z","activeSessions":0},{"name":"coder","model":"Hermes 4","activity":"working","displayName":"coder","lastActiveAt":"2026-09-25T08:57:00.000Z","activeSessions":1}]},"sessions":{"count":3,"active":1,"sessions":[{"id":"s1","agent":"coder","state":"running","title":"Fix the flaky checkout test","activity":"running","lastActivityAt":"2026-09-25T08:57:00.000Z"},{"id":"s2","agent":"default","state":"idle","title":"Plan next week","activity":"","lastActivityAt":"2026-09-25T08:24:00.000Z"},{"id":"s3","agent":"coder","state":"idle","title":"Upgrade the image library","activity":"","lastActivityAt":"2026-09-25T06:00:00.000Z"}]}}},"version":"1.2.3","controls":[{"id":"status","kind":"prompt","label":"What's running","prompt":"What are my Hermes agents working on, and what did they finish recently?","default":true},{"id":"tasks","kind":"prompt","label":"Tasks","prompt":"Summarize my Hermes kanban tasks: what's open, running, and done."},{"id":"agents","kind":"prompt","label":"Agents","prompt":"Which Hermes agents do I have, and what is each one working on?"}],"subtitle":"{{agents/count|default:0}} agents · {{agents/active|default:0}} working · {{tasks/open|default:0}} open tasks","description":"Your Hermes agents on the phone: each agent (profile), its recent sessions and what is running, and the kanban tasks Hermes hands out. The execution agent can read sessions, continue one, start a new one, or give an agent a task. No messaging platform is needed.","permissions":{"reach":["computer"],"tools":[{"name":"list_agents","access":"read","description":"The user's Hermes agents (profiles) and what each is running"},{"name":"list_sessions","access":"read","description":"Recent sessions across agents"},{"name":"read_session","access":"read","description":"A session's latest messages"},{"name":"list_tasks","access":"read","description":"Kanban tasks and their results"},{"name":"list_cron_jobs","access":"read","description":"Scheduled jobs"},{"name":"send_message","access":"write","description":"Continue a session with a message"},{"name":"start_session","access":"write","description":"Start a new session for an agent"},{"name":"create_task","access":"write","description":"Give an agent a kanban task"}]},"schemaVersion":3,"refreshSeconds":20,"contentHash":"sha256:1d7efed52445a48cd85b355476a80de2288cdd0e336f5628f82f70b0dd27cab7"},"files":{"logo.png":"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","server/index.mjs":"Ly8gSGVybWVzIEFnZW50IE1DUCBzZXJ2ZXIgZm9yIHRoaXMgcGFjazogdGhlIHVzZXIncyBIZXJtZXMgYWdlbnRzIChwcm9maWxlcyksCi8vIHRoZWlyIHNlc3Npb25zLCBrYW5iYW4gdGFza3MsIGFuZCBjcm9uIGpvYnMsIHdpdGggbm8gbWVzc2FnaW5nIHBsYXRmb3JtCi8vIG5lZWRlZC4gUmVhZHMgY29tZSBzdHJhaWdodCBmcm9tIEhlcm1lcydzIGZpbGVzLCByZWFkLW9ubHksIGFzIEhlcm1lcydzIG93bgovLyBzZXNzaW9uIGxpc3QgZG9lczogZWFjaCBwcm9maWxlJ3MgZm9sZGVyLCBpdHMgc3RhdGUuZGIsIGl0cyBjcm9uIGpvYnMsIGFuZAovLyB0aGUga2FuYmFuIGJvYXJkJ3Mga2FuYmFuLmRiLiBXb3JrIGdvZXMgdGhyb3VnaCB0aGUgYGhlcm1lc2AgQ0xJLiBIRVJNRVNfSE9NRSBhbmQKLy8gSEVSTUVTX0NPTU1BTkQgb3ZlcnJpZGUgd2hlcmUgSGVybWVzIGxpdmVzIGFuZCB0aGUgY29tbWFuZCAoZGVmYXVsdAovLyB+Ly5oZXJtZXMgYW5kIGBoZXJtZXNgIG9uIHRoZSBQQVRIKS4KaW1wb3J0IHsgc3Bhd24sIGV4ZWNGaWxlIH0gZnJvbSAnbm9kZTpjaGlsZF9wcm9jZXNzJwppbXBvcnQgeyBleGlzdHNTeW5jLCByZWFkZGlyU3luYywgcmVhZEZpbGVTeW5jIH0gZnJvbSAnbm9kZTpmcycKaW1wb3J0IHsgaG9tZWRpciB9IGZyb20gJ25vZGU6b3MnCmltcG9ydCB7IGlzQWJzb2x1dGUsIGpvaW4gfSBmcm9tICdub2RlOnBhdGgnCmltcG9ydCB7IHBhdGhUb0ZpbGVVUkwgfSBmcm9tICdub2RlOnVybCcKaW1wb3J0IHsgYXJnLCBzZXJ2ZSB9IGZyb20gJy4vbWNwLm1qcycKCmNvbnN0IHJlYWQgPSB7IHJlYWRPbmx5SGludDogdHJ1ZSwgZGVzdHJ1Y3RpdmVIaW50OiBmYWxzZSwgaWRlbXBvdGVudEhpbnQ6IHRydWUgfQpjb25zdCB3b3JrID0geyByZWFkT25seUhpbnQ6IGZhbHNlLCBkZXN0cnVjdGl2ZUhpbnQ6IGZhbHNlLCBpZGVtcG90ZW50SGludDogZmFsc2UgfQpjb25zdCBOQU1FID0gL15bQS1aYS16MC05XVtBLVphLXowLTkuXy1dezAsNjN9JC8KY29uc3QgU0VTU0lPTiA9IC9eW0EtWmEtejAtOV1bQS1aYS16MC05Ll86LV17MCwxMjd9JC8KLyoqIEthbmJhbiB0YXNrIGlkcyAoYHRfODc1NTc5NWRgKTsgc2Vzc2lvbiBpZHMgbG9vayBsaWtlIGAyMDI2MDkyNV8xNTA3MjBfNzdmNTkyYC4gKi8KY29uc3QgVEFTS19JRCA9IC9edF9bMC05YS1mXXs0LDY0fSQvCmNvbnN0IFRBU0tfU1RBVFVTRVMgPSBbJ2FyY2hpdmVkJywgJ2Jsb2NrZWQnLCAnZG9uZScsICdyZWFkeScsICdyZXZpZXcnLCAncnVubmluZycsICdzY2hlZHVsZWQnLCAndG9kbycsICd0cmlhZ2UnXQovKiogSGVybWVzIGNhbGxzIGEgc2Vzc2lvbiBhY3RpdmUgd2hpbGUgaXQgaGFzIG5vdCBlbmRlZCBhbmQgc2F3IGFjdGl2aXR5IGluIHRoZSBsYXN0IGZpdmUgbWludXRlcy4gKi8KY29uc3QgQUNUSVZFX1dJTkRPV19TID0gMzAwCmNvbnN0IGlzbyA9IChzZWNvbmRzKSA9PiAodHlwZW9mIHNlY29uZHMgPT09ICdudW1iZXInICYmIHNlY29uZHMgPiAwID8gbmV3IERhdGUoc2Vjb25kcyAqIDEwMDApLnRvSVNPU3RyaW5nKCkgOiBudWxsKQpjb25zdCBjbGlwID0gKHRleHQsIG1heCkgPT4gKHR5cGVvZiB0ZXh0ID09PSAnc3RyaW5nJyA/ICh0ZXh0Lmxlbmd0aCA+IG1heCA/IGAke3RleHQuc2xpY2UoMCwgbWF4KX3igKZgIDogdGV4dCkgOiBudWxsKQpjb25zdCBwaWNrID0gKHZhbHVlLCBrZXlzKSA9PiBPYmplY3QuZnJvbUVudHJpZXMoa2V5cy5maWx0ZXIoKGtleSkgPT4gdmFsdWU/LltrZXldICE9PSB1bmRlZmluZWQpLm1hcCgoa2V5KSA9PiBba2V5LCB2YWx1ZVtrZXldXSkpCmNvbnN0IHJlYWRKc29uID0gKHBhdGgpID0+IHsKICB0cnkgewogICAgcmV0dXJuIEpTT04ucGFyc2UocmVhZEZpbGVTeW5jKHBhdGgsICd1dGY4JykpCiAgfSBjYXRjaCB7CiAgICByZXR1cm4gbnVsbAogIH0KfQovKiogQSB0b3AtbGV2ZWwgc2NhbGFyIGZyb20gYSBzbWFsbCBZQU1MIGZpbGUgKGBrZXk6IHZhbHVlYCBvciBpbnNpZGUgYHNlY3Rpb246YCksIHdpdGhvdXQgYSBZQU1MIHBhcnNlci4gKi8KZnVuY3Rpb24geWFtbFZhbHVlKHRleHQsIGtleSwgc2VjdGlvbikgewogIGxldCBpbnNpZGUgPSAhc2VjdGlvbgogIGZvciAoY29uc3QgbGluZSBvZiB0ZXh0LnNwbGl0KCdcbicpKSB7CiAgICBpZiAoc2VjdGlvbiAmJiAvXlxTLy50ZXN0KGxpbmUpKSBpbnNpZGUgPSBsaW5lLnN0YXJ0c1dpdGgoYCR7c2VjdGlvbn06YCkKICAgIGNvbnN0IG1hdGNoID0gaW5zaWRlICYmIGxpbmUubWF0Y2gobmV3IFJlZ0V4cChgXiR7c2VjdGlvbiA/ICdcXHMrJyA6ICcnfSR7a2V5fTpcXHMqKC4qPylcXHMqJGApKQogICAgaWYgKG1hdGNoICYmIG1hdGNoWzFdICYmICFtYXRjaFsxXS5zdGFydHNXaXRoKCcjJykpIHJldHVybiBtYXRjaFsxXS5yZXBsYWNlKC9ccysjLiokLywgJycpLnJlcGxhY2UoL14oWyciXSkoLiopXDEkLywgJyQyJykKICB9CiAgcmV0dXJuIG51bGwKfQoKLyoqCiAqIEhlcm1lcydzIHN0YXRlIG9uIHRoaXMgY29tcHV0ZXIsIHJlYWQtb25seTogdGhlIGRlZmF1bHQgcHJvZmlsZSBsaXZlcyBpbgogKiBgaG9tZWAsIG90aGVycyBpbiBgaG9tZS9wcm9maWxlcy88bmFtZT5gLiBgb3BlbkRiKHBhdGgpYCByZXR1cm5zIGFuIG9iamVjdAogKiB3aXRoIGBhbGwoc3FsLCAuLi5wYXJhbXMpYCBhbmQgYGNsb3NlKClgLgogKi8KZXhwb3J0IGZ1bmN0aW9uIGhlcm1lc1N0b3JlKHsgaG9tZSwgb3BlbkRiIH0pIHsKICBjb25zdCBwcm9maWxlcyA9ICgpID0+IHsKICAgIGNvbnN0IG5hbWVkID0gZXhpc3RzU3luYyhqb2luKGhvbWUsICdwcm9maWxlcycpKQogICAgICA/IHJlYWRkaXJTeW5jKGpvaW4oaG9tZSwgJ3Byb2ZpbGVzJyksIHsgd2l0aEZpbGVUeXBlczogdHJ1ZSB9KQogICAgICAgICAgLmZpbHRlcigoZW50cnkpID0+IGVudHJ5LmlzRGlyZWN0b3J5KCkgJiYgTkFNRS50ZXN0KGVudHJ5Lm5hbWUpICYmIGV4aXN0c1N5bmMoam9pbihob21lLCAncHJvZmlsZXMnLCBlbnRyeS5uYW1lLCAnY29uZmlnLnlhbWwnKSkpCiAgICAgICAgICAubWFwKChlbnRyeSkgPT4gKHsgbmFtZTogZW50cnkubmFtZSwgaG9tZTogam9pbihob21lLCAncHJvZmlsZXMnLCBlbnRyeS5uYW1lKSB9KSkKICAgICAgICAgIC5zb3J0KChhLCBiKSA9PiBhLm5hbWUubG9jYWxlQ29tcGFyZShiLm5hbWUpKQogICAgICA6IFtdCiAgICByZXR1cm4gW3sgbmFtZTogJ2RlZmF1bHQnLCBob21lIH0sIC4uLm5hbWVkXQogIH0KICBjb25zdCBob21lT2YgPSAoYWdlbnQpID0+IHByb2ZpbGVzKCkuZmluZCgocHJvZmlsZSkgPT4gcHJvZmlsZS5uYW1lID09PSBhZ2VudCk/LmhvbWUgPz8gbnVsbAogIGNvbnN0IHRleHQgPSAocGF0aCkgPT4gKGV4aXN0c1N5bmMocGF0aCkgPyByZWFkRmlsZVN5bmMocGF0aCwgJ3V0ZjgnKSA6ICcnKQogIGNvbnN0IHdpdGhEYiA9IChwcm9maWxlSG9tZSwgZm4sIGZpbGUgPSAnc3RhdGUuZGInKSA9PiB7CiAgICBjb25zdCBwYXRoID0gam9pbihwcm9maWxlSG9tZSwgZmlsZSkKICAgIGlmICghZXhpc3RzU3luYyhwYXRoKSkgcmV0dXJuIFtdCiAgICBjb25zdCBkYiA9IG9wZW5EYihwYXRoKQogICAgdHJ5IHsKICAgICAgcmV0dXJuIGZuKGRiKQogICAgfSBmaW5hbGx5IHsKICAgICAgZGIuY2xvc2UoKQogICAgfQogIH0KICBjb25zdCB3aXRoQm9hcmQgPSAoZm4pID0+IHdpdGhEYihob21lLCBmbiwgJ2thbmJhbi5kYicpCiAgcmV0dXJuIHsKICAgIGFnZW50cygpIHsKICAgICAgY29uc3QgZ2F0ZXdheSA9IHJlYWRKc29uKGpvaW4oaG9tZSwgJ2dhdGV3YXlfc3RhdGUuanNvbicpKQogICAgICBjb25zdCBzZXJ2ZWQgPSBnYXRld2F5Py5nYXRld2F5X3N0YXRlID09PSAncnVubmluZycgJiYgQXJyYXkuaXNBcnJheShnYXRld2F5LnNlcnZlZF9wcm9maWxlcykgPyBnYXRld2F5LnNlcnZlZF9wcm9maWxlcyA6IFtdCiAgICAgIHJldHVybiBwcm9maWxlcygpLm1hcCgoeyBuYW1lLCBob21lOiBwcm9maWxlSG9tZSB9KSA9PiB7CiAgICAgICAgY29uc3QgY29uZmlnID0gdGV4dChqb2luKHByb2ZpbGVIb21lLCAnY29uZmlnLnlhbWwnKSkKICAgICAgICBjb25zdCBtZXRhID0gdGV4dChqb2luKHByb2ZpbGVIb21lLCAncHJvZmlsZS55YW1sJykpCiAgICAgICAgcmV0dXJuIHsgbmFtZSwgZGVzY3JpcHRpb246IHlhbWxWYWx1ZShtZXRhLCAnZGVzY3JpcHRpb24nKSB8fCBudWxsLCBtb2RlbDogeWFtbFZhbHVlKGNvbmZpZywgJ2RlZmF1bHQnLCAnbW9kZWwnKSA/PyB5YW1sVmFsdWUoY29uZmlnLCAnbW9kZWwnLCAnbW9kZWwnKSwgcHJvdmlkZXI6IHlhbWxWYWx1ZShjb25maWcsICdwcm92aWRlcicsICdtb2RlbCcpLCBpc0RlZmF1bHQ6IG5hbWUgPT09ICdkZWZhdWx0JywgZ2F0ZXdheVJ1bm5pbmc6IHNlcnZlZC5pbmNsdWRlcyhuYW1lKSB9CiAgICAgIH0pCiAgICB9LAogICAgLyoqIFJlY2VudCBzZXNzaW9ucywgbmV3ZXN0IGFjdGl2aXR5IGZpcnN0LCBhY3Jvc3MgYWdlbnRzIChgYWdlbnRgICJhbGwiKSBvciBvbmUuICovCiAgICBzZXNzaW9ucyh7IGFnZW50ID0gJ2FsbCcsIGxpbWl0ID0gMjAsIG5vdyA9IERhdGUubm93KCkgfSkgewogICAgICBjb25zdCB0YXJnZXRzID0gYWdlbnQgPT09ICdhbGwnID8gcHJvZmlsZXMoKSA6IHByb2ZpbGVzKCkuZmlsdGVyKChwcm9maWxlKSA9PiBwcm9maWxlLm5hbWUgPT09IGFnZW50KQogICAgICBjb25zdCByb3dzID0gdGFyZ2V0cy5mbGF0TWFwKCh7IG5hbWUsIGhvbWU6IHByb2ZpbGVIb21lIH0pID0+CiAgICAgICAgd2l0aERiKHByb2ZpbGVIb21lLCAoZGIpID0+CiAgICAgICAgICBkYgogICAgICAgICAgICAuYWxsKAogICAgICAgICAgICAgIGBTRUxFQ1Qgcy5pZCwgcy5zb3VyY2UsIHMubW9kZWwsIHMudGl0bGUsIHMuY3dkLCBzLnN0YXJ0ZWRfYXQsIHMuZW5kZWRfYXQsIHMubWVzc2FnZV9jb3VudCwgcy5sYXN0X2FjdGl2aXR5X2Rlc2NyaXB0aW9uLAogICAgICAgICAgICAgICAgIE1BWChDT0FMRVNDRShzLmxhc3RfYWN0aXZpdHlfYXQsIHMuc3RhcnRlZF9hdCksIENPQUxFU0NFKChTRUxFQ1QgTUFYKG0udGltZXN0YW1wKSBGUk9NIG1lc3NhZ2VzIG0gV0hFUkUgbS5zZXNzaW9uX2lkID0gcy5pZCksIDApKSBBUyBsYXN0X2FjdGl2ZSwKICAgICAgICAgICAgICAgICAoU0VMRUNUIG0uY29udGVudCBGUk9NIG1lc3NhZ2VzIG0gV0hFUkUgbS5zZXNzaW9uX2lkID0gcy5pZCBBTkQgbS5yb2xlID0gJ3VzZXInIE9SREVSIEJZIG0udGltZXN0YW1wIExJTUlUIDEpIEFTIGZpcnN0X21lc3NhZ2UKICAgICAgICAgICAgICAgRlJPTSBzZXNzaW9ucyBzIFdIRVJFIENPQUxFU0NFKHMuYXJjaGl2ZWQsIDApID0gMCBBTkQgQ09BTEVTQ0Uocy5oaWRkZW4sIDApID0gMAogICAgICAgICAgICAgICBPUkRFUiBCWSBsYXN0X2FjdGl2ZSBERVNDIExJTUlUID9gLAogICAgICAgICAgICAgIGxpbWl0CiAgICAgICAgICAgICkKICAgICAgICAgICAgLm1hcCgocm93KSA9PiAoeyAuLi5yb3csIGFnZW50OiBuYW1lIH0pKQogICAgICAgICkKICAgICAgKQogICAgICByZXR1cm4gcm93cwogICAgICAgIC5zb3J0KChhLCBiKSA9PiBiLmxhc3RfYWN0aXZlIC0gYS5sYXN0X2FjdGl2ZSkKICAgICAgICAuc2xpY2UoMCwgbGltaXQpCiAgICAgICAgLm1hcCgocm93KSA9PiB7CiAgICAgICAgICAvLyBIZXJtZXMgc3RhbXBzIGFjdGl2aXR5IGEgbGl0dGxlIGFoZWFkIG9mIHRoZSBjbG9jayBhdCB0aW1lczsgbm90aGluZyBoYXMgaGFwcGVuZWQgaW4gdGhlIGZ1dHVyZS4KICAgICAgICAgIGNvbnN0IGxhc3RBY3RpdmUgPSBNYXRoLm1pbihyb3cubGFzdF9hY3RpdmUsIG5vdyAvIDEwMDApCiAgICAgICAgICBjb25zdCBhY3RpdmUgPSByb3cuZW5kZWRfYXQgPT09IG51bGwgJiYgbm93IC8gMTAwMCAtIGxhc3RBY3RpdmUgPCBBQ1RJVkVfV0lORE9XX1MKICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgIGlkOiByb3cuaWQsCiAgICAgICAgICAgIGFnZW50OiByb3cuYWdlbnQsCiAgICAgICAgICAgIHRpdGxlOiByb3cudGl0bGUgfHwgY2xpcChyb3cuZmlyc3RfbWVzc2FnZSwgODApIHx8ICdVbnRpdGxlZCBzZXNzaW9uJywKICAgICAgICAgICAgc291cmNlOiByb3cuc291cmNlID8/IG51bGwsCiAgICAgICAgICAgIG1vZGVsOiByb3cubW9kZWwgPz8gbnVsbCwKICAgICAgICAgICAgYWN0aXZlLAogICAgICAgICAgICAvKiogcnVubmluZyB3aGlsZSBIZXJtZXMgd29ya3Mgb24gaXQsIGlkbGUgb3RoZXJ3aXNlLiAqLwogICAgICAgICAgICBzdGF0ZTogYWN0aXZlID8gJ3J1bm5pbmcnIDogJ2lkbGUnLAogICAgICAgICAgICAvKiogInJ1bm5pbmciIHdoaWxlIGl0IHdvcmtzLCBlbXB0eSBvdGhlcndpc2U6IGEgd2lkZ2V0IHNob3dzIGEgc3RhdHVzIG9ubHkgd2hlbiB0aGVyZSBpcyBuZXdzLiAqLwogICAgICAgICAgICBhY3Rpdml0eTogYWN0aXZlID8gJ3J1bm5pbmcnIDogJycsCiAgICAgICAgICAgIG1lc3NhZ2VzOiByb3cubWVzc2FnZV9jb3VudCA/PyAwLAogICAgICAgICAgICBmb2xkZXI6IHJvdy5jd2QgPz8gbnVsbCwKICAgICAgICAgICAgc3RhcnRlZEF0OiBpc28ocm93LnN0YXJ0ZWRfYXQpLAogICAgICAgICAgICBsYXN0QWN0aXZpdHlBdDogaXNvKGxhc3RBY3RpdmUpLAogICAgICAgICAgICBwcmV2aWV3OiBjbGlwKHJvdy5sYXN0X2FjdGl2aXR5X2Rlc2NyaXB0aW9uIHx8IHJvdy5maXJzdF9tZXNzYWdlLCAxNjApLAogICAgICAgICAgfQogICAgICAgIH0pCiAgICB9LAogICAgLyoqIFRoZSBsYXRlc3QgYGxpbWl0YCB1c2VyIGFuZCBhc3Npc3RhbnQgbWVzc2FnZXMgb2Ygb25lIHNlc3Npb24sIG9sZGVzdCBmaXJzdDsgbnVsbCBpZiB0aGUgYWdlbnQgaXMgdW5rbm93bi4gKi8KICAgIG1lc3NhZ2VzKGFnZW50LCBpZCwgbGltaXQpIHsKICAgICAgY29uc3QgcHJvZmlsZUhvbWUgPSBob21lT2YoYWdlbnQpCiAgICAgIGlmICghcHJvZmlsZUhvbWUpIHJldHVybiBudWxsCiAgICAgIHJldHVybiB3aXRoRGIocHJvZmlsZUhvbWUsIChkYikgPT4KICAgICAgICBkYi5hbGwoYFNFTEVDVCByb2xlLCBjb250ZW50LCB0aW1lc3RhbXAgRlJPTSBtZXNzYWdlcyBXSEVSRSBzZXNzaW9uX2lkID0gPyBBTkQgcm9sZSBJTiAoJ3VzZXInLCAnYXNzaXN0YW50JykgQU5EIGNvbnRlbnQgSVMgTk9UIE5VTEwgQU5EIFRSSU0oY29udGVudCkgIT0gJycgT1JERVIgQlkgdGltZXN0YW1wIERFU0MgTElNSVQgP2AsIGlkLCBsaW1pdCkKICAgICAgKS5yZXZlcnNlKCkKICAgIH0sCiAgICAvKiogVGFza3Mgb24gdGhlIGRlZmF1bHQga2FuYmFuIGJvYXJkLCBuZXdlc3QgZmlyc3QsIHdpdGggdGhlaXIgbGF0ZXN0IHJ1bidzIHJlc3VsdCBvciBlcnJvci4gKi8KICAgIHRhc2tzKHsgYWdlbnQsIHN0YXR1cywgbGltaXQgPSAxMDAgfSA9IHt9KSB7CiAgICAgIGNvbnN0IHdoZXJlID0gW3N0YXR1cyA/ICdzdGF0dXMgPSA/JyA6ICJzdGF0dXMgIT0gJ2FyY2hpdmVkJyIsIC4uLihhZ2VudCA/IFsnYXNzaWduZWUgPSA/J10gOiBbXSldCiAgICAgIHJldHVybiB3aXRoQm9hcmQoKGRiKSA9PgogICAgICAgIGRiLmFsbCgKICAgICAgICAgIGBTRUxFQ1QgdC5pZCwgdC50aXRsZSwgdC5ib2R5LCB0LmFzc2lnbmVlLCB0LnN0YXR1cywgdC5wcmlvcml0eSwgdC5jcmVhdGVkX2F0LCB0LmNvbXBsZXRlZF9hdCwgdC5zZXNzaW9uX2lkLCB0LnJlc3VsdCwgdC5sYXN0X2ZhaWx1cmVfZXJyb3IsCiAgICAgICAgICAgICAoU0VMRUNUIHIuc3VtbWFyeSBGUk9NIHRhc2tfcnVucyByIFdIRVJFIHIudGFza19pZCA9IHQuaWQgQU5EIHIuc3VtbWFyeSBJUyBOT1QgTlVMTCBPUkRFUiBCWSByLmVuZGVkX2F0IERFU0MgTElNSVQgMSkgQVMgc3VtbWFyeQogICAgICAgICAgIEZST00gdGFza3MgdCBXSEVSRSAke3doZXJlLmpvaW4oJyBBTkQgJyl9IE9SREVSIEJZIHQuY3JlYXRlZF9hdCBERVNDIExJTUlUID9gLAogICAgICAgICAgLi4uKHN0YXR1cyA/IFtzdGF0dXNdIDogW10pLAogICAgICAgICAgLi4uKGFnZW50ID8gW2FnZW50XSA6IFtdKSwKICAgICAgICAgIGxpbWl0CiAgICAgICAgKQogICAgICApCiAgICB9LAogICAgLyoqIE9uZSB0YXNrIGFuZCBpdHMgcnVucywgb2xkZXN0IGZpcnN0OyBudWxsIHdoZW4gdGhlcmUgaXMgbm8gc3VjaCB0YXNrLiAqLwogICAgdGFzayhpZCkgewogICAgICBjb25zdCBbdGFza10gPSB3aXRoQm9hcmQoKGRiKSA9PiBkYi5hbGwoJ1NFTEVDVCBpZCwgdGl0bGUsIGJvZHksIGFzc2lnbmVlLCBzdGF0dXMsIGNyZWF0ZWRfYXQsIGNvbXBsZXRlZF9hdCwgcmVzdWx0LCBsYXN0X2ZhaWx1cmVfZXJyb3IgRlJPTSB0YXNrcyBXSEVSRSBpZCA9ID8nLCBpZCkpCiAgICAgIGlmICghdGFzaykgcmV0dXJuIG51bGwKICAgICAgcmV0dXJuIHsgLi4udGFzaywgcnVuczogd2l0aEJvYXJkKChkYikgPT4gZGIuYWxsKCdTRUxFQ1QgcHJvZmlsZSwgc3RhdHVzLCBvdXRjb21lLCBzdW1tYXJ5LCBlcnJvciwgc3RhcnRlZF9hdCwgZW5kZWRfYXQgRlJPTSB0YXNrX3J1bnMgV0hFUkUgdGFza19pZCA9ID8gT1JERVIgQlkgc3RhcnRlZF9hdCcsIGlkKSkgfQogICAgfSwKICAgIGNyb25Kb2JzKCkgewogICAgICByZXR1cm4gcHJvZmlsZXMoKS5mbGF0TWFwKCh7IG5hbWUsIGhvbWU6IHByb2ZpbGVIb21lIH0pID0+IHsKICAgICAgICBjb25zdCBzYXZlZCA9IHJlYWRKc29uKGpvaW4ocHJvZmlsZUhvbWUsICdjcm9uJywgJ2pvYnMuanNvbicpKQogICAgICAgIHJldHVybiAoQXJyYXkuaXNBcnJheShzYXZlZD8uam9icykgPyBzYXZlZC5qb2JzIDogW10pLm1hcCgoam9iKSA9PiAoeyAuLi5qb2IsIGFnZW50OiBuYW1lIH0pKQogICAgICB9KQogICAgfSwKICB9Cn0KCi8qKgogKiBUaGUgc2VydmVyJ3MgdG9vbHMuIGBoZXJtZXNgIGlzIGEgYGhlcm1lc1N0b3JlYDsgYGNsaShhcmdzKWAgcnVucyBgaGVybWVzYAogKiBhbmQgcmV0dXJucyBpdHMgc3Rkb3V0OyBgbGF1bmNoKGFyZ3MsIGN3ZClgIHN0YXJ0cyBhIGRldGFjaGVkIGBoZXJtZXNgIHJ1bgogKiB0aGF0IG91dGxpdmVzIHRoaXMgY2FsbDsgYG5vdygpYCBpcyB0aGUgY2xvY2suCiAqLwpleHBvcnQgZnVuY3Rpb24gaGVybWVzVG9vbHMoeyBoZXJtZXMsIGNsaSwgbGF1bmNoLCBub3cgPSAoKSA9PiBEYXRlLm5vdygpIH0pIHsKICBjb25zdCBhZ2VudEFyZ3MgPSAoYWdlbnQpID0+IChhZ2VudCAmJiBhZ2VudCAhPT0gJ2RlZmF1bHQnID8gWyctcCcsIGFnZW50XSA6IFtdKQogIGNvbnN0IGFnZW50TmFtZSA9IChhcmdzLCBrZXkgPSAnYWdlbnQnKSA9PiBhcmcuc3RyaW5nKGFyZ3MsIGtleSwgeyBwYXR0ZXJuOiBOQU1FLCBmYWxsYmFjazogJ2RlZmF1bHQnIH0pCiAgY29uc3Qga25vd24gPSAoYWdlbnQpID0+IHsKICAgIGlmICghaGVybWVzLmFnZW50cygpLnNvbWUoKGNhbmRpZGF0ZSkgPT4gY2FuZGlkYXRlLm5hbWUgPT09IGFnZW50KSkgdGhyb3cgbmV3IEVycm9yKGBObyBIZXJtZXMgYWdlbnQgbmFtZWQgJHthZ2VudH0uIGxpc3RfYWdlbnRzIHNob3dzIHRoZW0uYCkKICAgIHJldHVybiBhZ2VudAogIH0KICAvLyBgYWdlbnRgIG5hbWVzIHRoZSBhc3NpZ25lZSB0aGUgd2F5IHNlc3Npb25zIGRvOyBhIHRhc2sgcm93IG9wZW5zIHdpdGggcmVhZF9zZXNzaW9uIGxpa2UgYSBzZXNzaW9uLgogIGNvbnN0IHRhc2sgPSAocm93KSA9PiAoewogICAgaWQ6IHJvdy5pZCwKICAgIHRpdGxlOiByb3cudGl0bGUsCiAgICBhc3NpZ25lZTogcm93LmFzc2lnbmVlID8/IG51bGwsCiAgICBhZ2VudDogcm93LmFzc2lnbmVlID8/ICdkZWZhdWx0JywKICAgIHN0YXR1czogcm93LnN0YXR1cywKICAgIGJvZHk6IGNsaXAocm93LmJvZHksIDMwMCksCiAgICByZXN1bHQ6IGNsaXAocm93LnJlc3VsdCA/PyByb3cuc3VtbWFyeSwgNjAwKSwKICAgIGVycm9yOiBjbGlwKHJvdy5sYXN0X2ZhaWx1cmVfZXJyb3IsIDMwMCksCiAgICBjcmVhdGVkQXQ6IGlzbyhyb3cuY3JlYXRlZF9hdCksCiAgICBjb21wbGV0ZWRBdDogaXNvKHJvdy5jb21wbGV0ZWRfYXQpLAogICAgLyoqIFdoZW4gaXQgbGFzdCBjaGFuZ2VkOiBmaW5pc2hlZCwgb3IgZWxzZSBjcmVhdGVkLiAqLwogICAgdXBkYXRlZEF0OiBpc28ocm93LmNvbXBsZXRlZF9hdCA/PyByb3cuY3JlYXRlZF9hdCksCiAgfSkKCiAgcmV0dXJuIFsKICAgIHsKICAgICAgbmFtZTogJ2xpc3RfYWdlbnRzJywKICAgICAgZGVzY3JpcHRpb246ICJUaGUgdXNlcidzIEhlcm1lcyBhZ2VudHMgKHByb2ZpbGVzKTogbmFtZSwgZGVzY3JpcHRpb24sIG1vZGVsLCB3aGV0aGVyIHRoZSBIZXJtZXMgZ2F0ZXdheSBzZXJ2ZXMgaXQsIGFuZCBob3cgbWFueSBvZiBpdHMgc2Vzc2lvbnMgYXJlIGFjdGl2ZSBub3cuIiwKICAgICAgaW5wdXRTY2hlbWE6IHsgdHlwZTogJ29iamVjdCcsIHByb3BlcnRpZXM6IHt9IH0sCiAgICAgIGFubm90YXRpb25zOiByZWFkLAogICAgICBydW46IGFzeW5jICgpID0+IHsKICAgICAgICBjb25zdCBzZXNzaW9ucyA9IGhlcm1lcy5zZXNzaW9ucyh7IGxpbWl0OiAyMDAsIG5vdzogbm93KCkgfSkKICAgICAgICBjb25zdCBhZ2VudHMgPSBoZXJtZXMuYWdlbnRzKCkubWFwKChhZ2VudCkgPT4gewogICAgICAgICAgY29uc3Qgb3duID0gc2Vzc2lvbnMuZmlsdGVyKChlbnRyeSkgPT4gZW50cnkuYWdlbnQgPT09IGFnZW50Lm5hbWUpCiAgICAgICAgICBjb25zdCBhY3RpdmVTZXNzaW9ucyA9IG93bi5maWx0ZXIoKGVudHJ5KSA9PiBlbnRyeS5hY3RpdmUpLmxlbmd0aAogICAgICAgICAgcmV0dXJuIHsgLi4uYWdlbnQsIGRpc3BsYXlOYW1lOiBhZ2VudC5uYW1lLCBhY3RpdmVTZXNzaW9ucywgc3RhdGU6IGFjdGl2ZVNlc3Npb25zID8gJ3dvcmtpbmcnIDogJ2lkbGUnLCBhY3Rpdml0eTogYWN0aXZlU2Vzc2lvbnMgPyAnd29ya2luZycgOiAnJywgc2Vzc2lvbnM6IG93bi5sZW5ndGgsIGxhc3RBY3RpdmVBdDogb3duWzBdPy5sYXN0QWN0aXZpdHlBdCA/PyBudWxsIH0KICAgICAgICB9KQogICAgICAgIHJldHVybiB7IGNvdW50OiBhZ2VudHMubGVuZ3RoLCBhY3RpdmU6IGFnZW50cy5maWx0ZXIoKGFnZW50KSA9PiBhZ2VudC5hY3RpdmVTZXNzaW9ucyA+IDApLmxlbmd0aCwgYWdlbnRzIH0KICAgICAgfSwKICAgIH0sCiAgICB7CiAgICAgIG5hbWU6ICdsaXN0X3Nlc3Npb25zJywKICAgICAgZGVzY3JpcHRpb246ICdSZWNlbnQgSGVybWVzIHNlc3Npb25zLCBuZXdlc3QgYWN0aXZpdHkgZmlyc3QsIGFjcm9zcyBhbGwgYWdlbnRzIG9yIG9uZTogaWQsIGFnZW50LCB0aXRsZSwgd2hldGhlciBpdCBpcyBydW5uaW5nIG5vdywgbWVzc2FnZSBjb3VudCwgZm9sZGVyLCBhbmQgdGltZXMuIFBhc3MgdGhlIGlkIHRvIHJlYWRfc2Vzc2lvbiBvciBzZW5kX21lc3NhZ2UuJywKICAgICAgaW5wdXRTY2hlbWE6IHsgdHlwZTogJ29iamVjdCcsIHByb3BlcnRpZXM6IHsgYWdlbnQ6IHsgdHlwZTogJ3N0cmluZycsIGRlc2NyaXB0aW9uOiAnQWdlbnQgKHByb2ZpbGUpIG5hbWU7IG9taXQgZm9yIGFsbCcgfSwgbGltaXQ6IHsgdHlwZTogJ2ludGVnZXInLCBtaW5pbXVtOiAxLCBtYXhpbXVtOiAxMDAsIGRlZmF1bHQ6IDIwIH0gfSB9LAogICAgICBhbm5vdGF0aW9uczogcmVhZCwKICAgICAgcnVuOiBhc3luYyAoYXJncykgPT4gewogICAgICAgIGNvbnN0IGFnZW50ID0gYXJncy5hZ2VudCA9PT0gdW5kZWZpbmVkID8gJ2FsbCcgOiBrbm93bihhZ2VudE5hbWUoYXJncykpCiAgICAgICAgY29uc3Qgc2Vzc2lvbnMgPSBoZXJtZXMuc2Vzc2lvbnMoeyBhZ2VudCwgbGltaXQ6IGFyZy5pbnRlZ2VyKGFyZ3MsICdsaW1pdCcsIHsgbWluOiAxLCBtYXg6IDEwMCwgZmFsbGJhY2s6IDIwIH0pLCBub3c6IG5vdygpIH0pCiAgICAgICAgcmV0dXJuIHsgY291bnQ6IHNlc3Npb25zLmxlbmd0aCwgYWN0aXZlOiBzZXNzaW9ucy5maWx0ZXIoKGVudHJ5KSA9PiBlbnRyeS5hY3RpdmUpLmxlbmd0aCwgc2Vzc2lvbnMgfQogICAgICB9LAogICAgfSwKICAgIHsKICAgICAgbmFtZTogJ3JlYWRfc2Vzc2lvbicsCiAgICAgIGRlc2NyaXB0aW9uOiAiVGhlIGxhdGVzdCBtZXNzYWdlcyBvZiBvbmUgSGVybWVzIHNlc3Npb24sIG9sZGVzdCBmaXJzdDogdGhlIHVzZXIncyBhbmQgdGhlIGFnZW50J3Mgd29yZHMgKHRvb2wgY2FsbHMgbGVmdCBvdXQpLiBHaXZlbiBhIGthbmJhbiB0YXNrIGlkICh0X+KApikgaW5zdGVhZCwgdGhlIHRhc2sgYXMgdGhlIHJlcXVlc3QgYW5kIGVhY2ggcnVuJ3MgcmVzdWx0IG9yIGVycm9yIGFzIHRoZSByZXBsaWVzLiIsCiAgICAgIGlucHV0U2NoZW1hOiB7IHR5cGU6ICdvYmplY3QnLCBwcm9wZXJ0aWVzOiB7IHNlc3Npb25faWQ6IHsgdHlwZTogJ3N0cmluZycsIGRlc2NyaXB0aW9uOiAnU2Vzc2lvbiBpZCwgb3IgYSBrYW5iYW4gdGFzayBpZCcgfSwgYWdlbnQ6IHsgdHlwZTogJ3N0cmluZycsIGRlc2NyaXB0aW9uOiAnSXRzIGFnZW50IChwcm9maWxlKSwgZnJvbSBsaXN0X3Nlc3Npb25zOyBkZWZhdWx0ICJkZWZhdWx0IicgfSwgbGltaXQ6IHsgdHlwZTogJ2ludGVnZXInLCBtaW5pbXVtOiAxLCBtYXhpbXVtOiA1MCwgZGVmYXVsdDogMjAgfSB9LCByZXF1aXJlZDogWydzZXNzaW9uX2lkJ10gfSwKICAgICAgYW5ub3RhdGlvbnM6IHJlYWQsCiAgICAgIHJ1bjogYXN5bmMgKGFyZ3MpID0+IHsKICAgICAgICBjb25zdCBpZCA9IGFyZy5zdHJpbmcoYXJncywgJ3Nlc3Npb25faWQnLCB7IHBhdHRlcm46IFNFU1NJT04gfSkKICAgICAgICBpZiAoVEFTS19JRC50ZXN0KGlkKSkgewogICAgICAgICAgY29uc3QgZm91bmQgPSBoZXJtZXMudGFzayhpZCkKICAgICAgICAgIGlmICghZm91bmQpIHRocm93IG5ldyBFcnJvcihgTm8ga2FuYmFuIHRhc2sgJHtpZH1gKQogICAgICAgICAgY29uc3QgcmVwbGllcyA9IGZvdW5kLnJ1bnMubWFwKChydW4pID0+ICh7IHJvbGU6ICdhc3Npc3RhbnQnLCBjb250ZW50OiBydW4uc3VtbWFyeSA/IGNsaXAocnVuLnN1bW1hcnksIDJfMDAwKSA6IHJ1bi5lcnJvciA/IGBGYWlsZWQ6ICR7Y2xpcChydW4uZXJyb3IsIDE2MCl9YCA6IGBSdW4gJHtydW4ub3V0Y29tZSA/PyBydW4uc3RhdHVzfWAsIGF0OiBpc28ocnVuLmVuZGVkX2F0ID8/IHJ1bi5zdGFydGVkX2F0KSB9KSkKICAgICAgICAgIGNvbnN0IG1lc3NhZ2VzID0gW3sgcm9sZTogJ3VzZXInLCBjb250ZW50OiBjbGlwKFtmb3VuZC50aXRsZSwgZm91bmQuYm9keV0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oJ1xuXG4nKSwgMl8wMDApLCBhdDogaXNvKGZvdW5kLmNyZWF0ZWRfYXQpIH0sIC4uLnJlcGxpZXNdCiAgICAgICAgICByZXR1cm4geyBzZXNzaW9uX2lkOiBpZCwgYWdlbnQ6IGZvdW5kLmFzc2lnbmVlID8/ICdkZWZhdWx0JywgdGFzazogeyBzdGF0dXM6IGZvdW5kLnN0YXR1cywgcmVzdWx0OiBjbGlwKGZvdW5kLnJlc3VsdCwgNjAwKSB9LCBjb3VudDogbWVzc2FnZXMubGVuZ3RoLCBtZXNzYWdlcyB9CiAgICAgICAgfQogICAgICAgIGNvbnN0IGFnZW50ID0ga25vd24oYWdlbnROYW1lKGFyZ3MpKQogICAgICAgIGNvbnN0IG1lc3NhZ2VzID0gKGhlcm1lcy5tZXNzYWdlcyhhZ2VudCwgaWQsIGFyZy5pbnRlZ2VyKGFyZ3MsICdsaW1pdCcsIHsgbWluOiAxLCBtYXg6IDUwLCBmYWxsYmFjazogMjAgfSkpID8/IFtdKS5tYXAoKG1lc3NhZ2UpID0+ICh7IHJvbGU6IG1lc3NhZ2Uucm9sZSwgY29udGVudDogY2xpcChtZXNzYWdlLmNvbnRlbnQsIDJfMDAwKSwgYXQ6IGlzbyhtZXNzYWdlLnRpbWVzdGFtcCkgfSkpCiAgICAgICAgcmV0dXJuIHsgc2Vzc2lvbl9pZDogaWQsIGFnZW50LCBjb3VudDogbWVzc2FnZXMubGVuZ3RoLCBtZXNzYWdlcyB9CiAgICAgIH0sCiAgICB9LAogICAgewogICAgICBuYW1lOiAnc2VuZF9tZXNzYWdlJywKICAgICAgZGVzY3JpcHRpb246ICJDb250aW51ZSBhIEhlcm1lcyBzZXNzaW9uIHdpdGggYSBtZXNzYWdlLiBSZXR1cm5zIGF0IG9uY2Ugd2hpbGUgdGhlIGFnZW50IHdvcmtzOyBpdHMgcmVwbHkgbGFuZHMgaW4gdGhlIHNlc3Npb24gKHJlYWRfc2Vzc2lvbikuIFVzZSB0aGUgc2Vzc2lvbidzIGFnZW50IGZyb20gbGlzdF9zZXNzaW9ucy4iLAogICAgICBpbnB1dFNjaGVtYTogeyB0eXBlOiAnb2JqZWN0JywgcHJvcGVydGllczogeyBzZXNzaW9uX2lkOiB7IHR5cGU6ICdzdHJpbmcnIH0sIGFnZW50OiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjcmlwdGlvbjogJ1RoZSBzZXNzaW9uXCdzIGFnZW50IChwcm9maWxlKTsgZGVmYXVsdCAiZGVmYXVsdCInIH0sIG1lc3NhZ2U6IHsgdHlwZTogJ3N0cmluZycgfSB9LCByZXF1aXJlZDogWydzZXNzaW9uX2lkJywgJ21lc3NhZ2UnXSB9LAogICAgICBhbm5vdGF0aW9uczogd29yaywKICAgICAgcnVuOiBhc3luYyAoYXJncykgPT4gewogICAgICAgIGNvbnN0IGlkID0gYXJnLnN0cmluZyhhcmdzLCAnc2Vzc2lvbl9pZCcsIHsgcGF0dGVybjogU0VTU0lPTiB9KQogICAgICAgIGNvbnN0IGFnZW50ID0ga25vd24oYWdlbnROYW1lKGFyZ3MpKQogICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBhcmcuc3RyaW5nKGFyZ3MsICdtZXNzYWdlJywgeyBtYXg6IDIwXzAwMCB9KQogICAgICAgIGF3YWl0IGxhdW5jaChbLi4uYWdlbnRBcmdzKGFnZW50KSwgJy0tcmVzdW1lJywgaWQsICcteicsIG1lc3NhZ2VdLCBob21lZGlyKCkpCiAgICAgICAgcmV0dXJuIHsgc2VudDogdHJ1ZSwgc2Vzc2lvbl9pZDogaWQsIGFnZW50LCBub3RlOiAnSGVybWVzIGlzIHdvcmtpbmcgb24gaXQ7IHJlYWRfc2Vzc2lvbiBzaG93cyBpdHMgcmVwbHkgd2hlbiBpdCBmaW5pc2hlcy4nIH0KICAgICAgfSwKICAgIH0sCiAgICB7CiAgICAgIG5hbWU6ICdzdGFydF9zZXNzaW9uJywKICAgICAgZGVzY3JpcHRpb246ICdTdGFydCBhIG5ldyBIZXJtZXMgc2Vzc2lvbiBmb3Igb25lIGFnZW50IHdpdGggYSBmaXJzdCBtZXNzYWdlLCBvcHRpb25hbGx5IGluIGEgZm9sZGVyLiBSZXR1cm5zIHRoZSBuZXcgc2Vzc2lvbiBpZCBvbmNlIEhlcm1lcyBoYXMgY3JlYXRlZCBpdDsgdGhlIGFnZW50IGtlZXBzIHdvcmtpbmcgaW4gdGhlIGJhY2tncm91bmQuJywKICAgICAgaW5wdXRTY2hlbWE6IHsgdHlwZTogJ29iamVjdCcsIHByb3BlcnRpZXM6IHsgYWdlbnQ6IHsgdHlwZTogJ3N0cmluZycsIGRlc2NyaXB0aW9uOiAnQWdlbnQgKHByb2ZpbGUpIG5hbWU7IGRlZmF1bHQgImRlZmF1bHQiJyB9LCBtZXNzYWdlOiB7IHR5cGU6ICdzdHJpbmcnIH0sIGZvbGRlcjogeyB0eXBlOiAnc3RyaW5nJywgZGVzY3JpcHRpb246ICdBYnNvbHV0ZSBmb2xkZXIgdG8gd29yayBpbiAoZGVmYXVsdDogaG9tZSknIH0gfSwgcmVxdWlyZWQ6IFsnbWVzc2FnZSddIH0sCiAgICAgIGFubm90YXRpb25zOiB3b3JrLAogICAgICBydW46IGFzeW5jIChhcmdzKSA9PiB7CiAgICAgICAgY29uc3QgYWdlbnQgPSBrbm93bihhZ2VudE5hbWUoYXJncykpCiAgICAgICAgY29uc3QgbWVzc2FnZSA9IGFyZy5zdHJpbmcoYXJncywgJ21lc3NhZ2UnLCB7IG1heDogMjBfMDAwIH0pCiAgICAgICAgY29uc3QgZm9sZGVyID0gYXJnLm9wdGlvbmFsU3RyaW5nKGFyZ3MsICdmb2xkZXInLCB7IG1heDogMV8wMDAgfSkKICAgICAgICBpZiAoZm9sZGVyICE9PSB1bmRlZmluZWQgJiYgIWlzQWJzb2x1dGUoZm9sZGVyKSkgdGhyb3cgbmV3IEVycm9yKCdmb2xkZXIgbXVzdCBiZSBhbiBhYnNvbHV0ZSBwYXRoJykKICAgICAgICBjb25zdCBzdGFydGVkQXQgPSBub3coKQogICAgICAgIGF3YWl0IGxhdW5jaChbLi4uYWdlbnRBcmdzKGFnZW50KSwgJy16JywgbWVzc2FnZV0sIGZvbGRlciA/PyBob21lZGlyKCkpCiAgICAgICAgLy8gSGVybWVzIHJlY29yZHMgdGhlIHNlc3Npb24gYXMgaXQgc3RhcnRzOyBmaW5kIGl0IHNvIHRoZSBjYWxsZXIgY2FuIGZvbGxvdyBpdC4KICAgICAgICBmb3IgKGxldCBhdHRlbXB0ID0gMDsgYXR0ZW1wdCA8IDMwOyBhdHRlbXB0ICs9IDEpIHsKICAgICAgICAgIGNvbnN0IGNyZWF0ZWQgPSBoZXJtZXMuc2Vzc2lvbnMoeyBhZ2VudCwgbGltaXQ6IDUsIG5vdzogbm93KCkgfSkuZmluZCgoZW50cnkpID0+IGVudHJ5LnN0YXJ0ZWRBdCAmJiBEYXRlLnBhcnNlKGVudHJ5LnN0YXJ0ZWRBdCkgPj0gc3RhcnRlZEF0IC0gMl8wMDApCiAgICAgICAgICBpZiAoY3JlYXRlZCkgcmV0dXJuIHsgc3RhcnRlZDogdHJ1ZSwgc2Vzc2lvbl9pZDogY3JlYXRlZC5pZCwgYWdlbnQsIHRpdGxlOiBjcmVhdGVkLnRpdGxlIH0KICAgICAgICAgIGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIDUwMCkpCiAgICAgICAgfQogICAgICAgIHJldHVybiB7IHN0YXJ0ZWQ6IHRydWUsIHNlc3Npb25faWQ6IG51bGwsIGFnZW50LCBub3RlOiAnU3RhcnRlZDsgbGlzdF9zZXNzaW9ucyBzaG93cyBpdCBvbmNlIEhlcm1lcyByZWNvcmRzIGl0LicgfQogICAgICB9LAogICAgfSwKICAgIHsKICAgICAgbmFtZTogJ2xpc3RfdGFza3MnLAogICAgICBkZXNjcmlwdGlvbjogIlRhc2tzIG9uIEhlcm1lcydzIGthbmJhbiBib2FyZCwgd2hpY2ggdGhlIEhlcm1lcyBnYXRld2F5IGhhbmRzIHRvIGFnZW50czogaWQsIHRpdGxlLCBhc3NpZ25lZSwgc3RhdHVzLCBhbmQgdGhlIHJlc3VsdCBvciBlcnJvciBvZiBpdHMgbGF0ZXN0IHJ1bi4gcmVhZF9zZXNzaW9uIHdpdGggYSB0YXNrIGlkIHNob3dzIHRoZSB0YXNrIGFuZCBldmVyeSBydW4uIiwKICAgICAgaW5wdXRTY2hlbWE6IHsgdHlwZTogJ29iamVjdCcsIHByb3BlcnRpZXM6IHsgYWdlbnQ6IHsgdHlwZTogJ3N0cmluZycsIGRlc2NyaXB0aW9uOiAnT25seSB0YXNrcyBhc3NpZ25lZCB0byB0aGlzIGFnZW50JyB9LCBzdGF0dXM6IHsgdHlwZTogJ3N0cmluZycsIGVudW06IFRBU0tfU1RBVFVTRVMgfSB9IH0sCiAgICAgIGFubm90YXRpb25zOiByZWFkLAogICAgICBydW46IGFzeW5jIChhcmdzKSA9PiB7CiAgICAgICAgY29uc3QgdGFza3MgPSBoZXJtZXMudGFza3MoeyBhZ2VudDogYXJncy5hZ2VudCA9PT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkIDogYWdlbnROYW1lKGFyZ3MpLCBzdGF0dXM6IGFyZ3Muc3RhdHVzID09PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiBhcmcub25lT2YoYXJncywgJ3N0YXR1cycsIFRBU0tfU1RBVFVTRVMpIH0pLm1hcCh0YXNrKQogICAgICAgIGNvbnN0IG9wZW4gPSB0YXNrcy5maWx0ZXIoKHRhc2spID0+ICFbJ2RvbmUnLCAnYXJjaGl2ZWQnXS5pbmNsdWRlcyh0YXNrLnN0YXR1cykpCiAgICAgICAgcmV0dXJuIHsgY291bnQ6IHRhc2tzLmxlbmd0aCwgb3Blbjogb3Blbi5sZW5ndGgsIHJ1bm5pbmc6IHRhc2tzLmZpbHRlcigodGFzaykgPT4gdGFzay5zdGF0dXMgPT09ICdydW5uaW5nJykubGVuZ3RoLCB0YXNrcyB9CiAgICAgIH0sCiAgICB9LAogICAgewogICAgICBuYW1lOiAnY3JlYXRlX3Rhc2snLAogICAgICBkZXNjcmlwdGlvbjogIlB1dCBhIHRhc2sgb24gSGVybWVzJ3Mga2FuYmFuIGJvYXJkIGZvciBvbmUgYWdlbnQ7IHRoZSBIZXJtZXMgZ2F0ZXdheSBydW5zIGl0IChpdCBtdXN0IGJlIHJ1bm5pbmcpLiBVc2UgZm9yIHdvcmsgdGhlIHVzZXIgd2FudHMgYW4gYWdlbnQgdG8gcGljayB1cCBvbiBpdHMgb3duLiIsCiAgICAgIGlucHV0U2NoZW1hOiB7IHR5cGU6ICdvYmplY3QnLCBwcm9wZXJ0aWVzOiB7IHRpdGxlOiB7IHR5cGU6ICdzdHJpbmcnIH0sIGJvZHk6IHsgdHlwZTogJ3N0cmluZycsIGRlc2NyaXB0aW9uOiAnV2hhdCB0byBkbywgaW4gZnVsbCcgfSwgYWdlbnQ6IHsgdHlwZTogJ3N0cmluZycsIGRlc2NyaXB0aW9uOiAnQWdlbnQgKHByb2ZpbGUpIHRvIGFzc2lnbjsgZGVmYXVsdCAiZGVmYXVsdCInIH0gfSwgcmVxdWlyZWQ6IFsndGl0bGUnXSB9LAogICAgICBhbm5vdGF0aW9uczogd29yaywKICAgICAgcnVuOiBhc3luYyAoYXJncykgPT4gewogICAgICAgIGNvbnN0IHRpdGxlID0gYXJnLnN0cmluZyhhcmdzLCAndGl0bGUnLCB7IG1heDogMjAwIH0pCiAgICAgICAgY29uc3QgYm9keSA9IGFyZy5vcHRpb25hbFN0cmluZyhhcmdzLCAnYm9keScsIHsgbWF4OiAyMF8wMDAgfSkKICAgICAgICBjb25zdCBhZ2VudCA9IGtub3duKGFnZW50TmFtZShhcmdzKSkKICAgICAgICBjb25zdCBvdXRwdXQgPSBhd2FpdCBjbGkoWydrYW5iYW4nLCAnY3JlYXRlJywgdGl0bGUsICctLWFzc2lnbmVlJywgYWdlbnQsICctLWNyZWF0ZWQtYnknLCAnc2lkZWJ1ZCcsIC4uLihib2R5ID8gWyctLWJvZHknLCBib2R5XSA6IFtdKSwgJy0tanNvbiddKQogICAgICAgIGNvbnN0IGNyZWF0ZWQgPSBKU09OLnBhcnNlKG91dHB1dCB8fCAne30nKQogICAgICAgIGNvbnN0IHRhc2sgPSBjcmVhdGVkPy50YXNrID8/IGNyZWF0ZWQKICAgICAgICByZXR1cm4geyBjcmVhdGVkOiB0cnVlLCB0YXNrX2lkOiB0YXNrPy5pZCA/PyBudWxsLCB0aXRsZSwgYWdlbnQsIHN0YXR1czogdGFzaz8uc3RhdHVzID8/IG51bGwgfQogICAgICB9LAogICAgfSwKICAgIHsKICAgICAgbmFtZTogJ2xpc3RfY3Jvbl9qb2JzJywKICAgICAgZGVzY3JpcHRpb246ICJIZXJtZXMncyBzY2hlZHVsZWQgam9icyBhY3Jvc3MgYWdlbnRzOiBuYW1lLCBhZ2VudCwgc2NoZWR1bGUsIHdoZXRoZXIgaXQgaXMgb24sIGFuZCB0aGUgbGFzdCBhbmQgbmV4dCBydW4uIiwKICAgICAgaW5wdXRTY2hlbWE6IHsgdHlwZTogJ29iamVjdCcsIHByb3BlcnRpZXM6IHt9IH0sCiAgICAgIGFubm90YXRpb25zOiByZWFkLAogICAgICBydW46IGFzeW5jICgpID0+IHsKICAgICAgICBjb25zdCBqb2JzID0gaGVybWVzLmNyb25Kb2JzKCkubWFwKChqb2IpID0+ICh7CiAgICAgICAgICBpZDogam9iLmlkLAogICAgICAgICAgbmFtZTogam9iLm5hbWUgfHwgY2xpcChqb2IucHJvbXB0LCA2MCkgfHwgJ1NjaGVkdWxlZCBqb2InLAogICAgICAgICAgYWdlbnQ6IGpvYi5hZ2VudCwKICAgICAgICAgIHNjaGVkdWxlOiBqb2Iuc2NoZWR1bGVfZGlzcGxheSA/PyBqb2Iuc2NoZWR1bGU/LmRpc3BsYXkgPz8gbnVsbCwKICAgICAgICAgIGVuYWJsZWQ6IGpvYi5lbmFibGVkICE9PSBmYWxzZSAmJiAham9iLnBhdXNlZF9hdCwKICAgICAgICAgIHN0YXRlOiBqb2IucGF1c2VkX2F0ID8gJ3BhdXNlZCcgOiBqb2Iuc3RhdGUgPz8gbnVsbCwKICAgICAgICAgIHByb21wdDogY2xpcChqb2IucHJvbXB0LCAyMDApLAogICAgICAgICAgbGFzdFJ1bkF0OiBqb2IubGFzdF9ydW5fYXQgPz8gbnVsbCwKICAgICAgICAgIG5leHRSdW5BdDogam9iLm5leHRfcnVuX2F0ID8/IG51bGwsCiAgICAgICAgICBsYXN0U3RhdHVzOiBqb2IubGFzdF9zdGF0dXMgPz8gbnVsbCwKICAgICAgICAgIGxhc3RFcnJvcjogY2xpcChqb2IubGFzdF9lcnJvciwgMzAwKSwKICAgICAgICB9KSkKICAgICAgICByZXR1cm4geyBjb3VudDogam9icy5sZW5ndGgsIGpvYnMgfQogICAgICB9LAogICAgfSwKICBdCn0KCi8qKiBSdW5zIGBoZXJtZXNgIHRvIGNvbXBsZXRpb24gYW5kIHJldHVybnMgc3Rkb3V0LCBvciB0aHJvd3MgaXRzIGVycm9yIG91dHB1dC4gKi8KZXhwb3J0IGNvbnN0IGhlcm1lc0NsaSA9IChjb21tYW5kKSA9PiAoYXJncykgPT4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4gewogIGV4ZWNGaWxlKGNvbW1hbmQsIGFyZ3MsIHsgdGltZW91dDogNjBfMDAwLCBtYXhCdWZmZXI6IDggKiAxMDI0ICogMTAyNCwgY3dkOiBob21lZGlyKCkgfSwgKGVycm9yLCBzdGRvdXQsIHN0ZGVycikgPT4gewogICAgaWYgKGVycm9yKSByZWplY3QobmV3IEVycm9yKGVycm9yLmNvZGUgPT09ICdFTk9FTlQnID8gYCR7Y29tbWFuZH0gaXMgbm90IGluc3RhbGxlZCBvciBub3Qgb24gdGhlIFBBVEhgIDogY2xpcChTdHJpbmcoc3RkZXJyIHx8IGVycm9yLm1lc3NhZ2UpLnRyaW0oKSwgNTAwKSB8fCAnSGVybWVzIGZhaWxlZCcpKQogICAgZWxzZSByZXNvbHZlKHN0ZG91dCkKICB9KQp9KQoKLyoqIFN0YXJ0cyBhIGBoZXJtZXNgIHJ1biBpbiB0aGUgYmFja2dyb3VuZCB0aGF0IG91dGxpdmVzIHRoaXMgc2VydmVyJ3MgY2FsbCAoYW5kIHRoZSBzZXJ2ZXIpLiAqLwpleHBvcnQgY29uc3QgaGVybWVzTGF1bmNoID0gKGNvbW1hbmQpID0+IChhcmdzLCBjd2QpID0+IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKICBjb25zdCBjaGlsZCA9IHNwYXduKGNvbW1hbmQsIGFyZ3MsIHsgY3dkLCBkZXRhY2hlZDogdHJ1ZSwgc3RkaW86ICdpZ25vcmUnIH0pCiAgY2hpbGQub25jZSgnZXJyb3InLCAoZXJyb3IpID0+IHJlamVjdChuZXcgRXJyb3IoZXJyb3IuY29kZSA9PT0gJ0VOT0VOVCcgPyBgJHtjb21tYW5kfSBpcyBub3QgaW5zdGFsbGVkIG9yIG5vdCBvbiB0aGUgUEFUSGAgOiBlcnJvci5tZXNzYWdlKSkpCiAgY2hpbGQub25jZSgnc3Bhd24nLCAoKSA9PiB7IGNoaWxkLnVucmVmKCk7IHJlc29sdmUoKSB9KQp9KQoKLyoqIE9wZW5zIGEgc3RhdGUuZGIgcmVhZC1vbmx5IHdpdGggTm9kZSdzIGJ1aWx0LWluIFNRTGl0ZS4gKi8KZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNxbGl0ZVJlYWRlcigpIHsKICBjb25zdCB7IERhdGFiYXNlU3luYyB9ID0gYXdhaXQgaW1wb3J0KCdub2RlOnNxbGl0ZScpCiAgcmV0dXJuIChwYXRoKSA9PiB7CiAgICBjb25zdCBkYiA9IG5ldyBEYXRhYmFzZVN5bmMocGF0aCwgeyByZWFkT25seTogdHJ1ZSB9KQogICAgcmV0dXJuIHsgYWxsOiAoc3FsLCAuLi5wYXJhbXMpID0+IGRiLnByZXBhcmUoc3FsKS5hbGwoLi4ucGFyYW1zKSwgY2xvc2U6ICgpID0+IGRiLmNsb3NlKCkgfQogIH0KfQoKaWYgKGltcG9ydC5tZXRhLnVybCA9PT0gcGF0aFRvRmlsZVVSTChwcm9jZXNzLmFyZ3ZbMV0gPz8gJycpLmhyZWYpIHsKICAvLyBOb2RlJ3MgU1FMaXRlIGlzIHN0aWxsIG1hcmtlZCBleHBlcmltZW50YWw7IGl0cyB3YXJuaW5nIGlzIG5vaXNlIG9uIHRoaXMgc2VydmVyJ3Mgc3RkZXJyLgogIHByb2Nlc3MucmVtb3ZlQWxsTGlzdGVuZXJzKCd3YXJuaW5nJykKICBjb25zdCBjb21tYW5kID0gcHJvY2Vzcy5lbnYuSEVSTUVTX0NPTU1BTkQgfHwgJ2hlcm1lcycKICBjb25zdCBoZXJtZXMgPSBoZXJtZXNTdG9yZSh7IGhvbWU6IHByb2Nlc3MuZW52LkhFUk1FU19IT01FIHx8IGpvaW4oaG9tZWRpcigpLCAnLmhlcm1lcycpLCBvcGVuRGI6IGF3YWl0IHNxbGl0ZVJlYWRlcigpIH0pCiAgc2VydmUoeyBuYW1lOiAnc2lkZWJ1ZC1wYWNrLWhlcm1lcycsIHZlcnNpb246ICcxLjEuMCcsIHRvb2xzOiBoZXJtZXNUb29scyh7IGhlcm1lcywgY2xpOiBoZXJtZXNDbGkoY29tbWFuZCksIGxhdW5jaDogaGVybWVzTGF1bmNoKGNvbW1hbmQpIH0pIH0pCn0K","server/mcp.mjs":"Ly8gQSBtaW5pbWFsIE1DUCBzZXJ2ZXIgb3ZlciBzdGRpbzogbmV3bGluZS1kZWxpbWl0ZWQgSlNPTi1SUEMgMi4wIHdpdGggdGhlCi8vIGluaXRpYWxpemUsIHBpbmcsIHRvb2xzL2xpc3QsIGFuZCB0b29scy9jYWxsIG1ldGhvZHMuIE5vIGRlcGVuZGVuY2llcywgc28gYQovLyBwYWNrJ3Mgc2VydmVyIHJ1bnMgd2l0aCBwbGFpbiBgbm9kZWAgYW5kIG5vdGhpbmcgdG8gaW5zdGFsbC4gQ29weSB0aGlzIGZpbGUKLy8gaW50byBhbnkgcGFjayB0aGF0IHNoaXBzIGl0cyBvd24gc2VydmVyLgppbXBvcnQgeyBjcmVhdGVJbnRlcmZhY2UgfSBmcm9tICdub2RlOnJlYWRsaW5lJwoKLyoqCiAqIEVhY2ggdG9vbCBpcyBgeyBuYW1lLCBkZXNjcmlwdGlvbiwgaW5wdXRTY2hlbWEsIGFubm90YXRpb25zLCBydW4gfWAsIHdoZXJlCiAqIGBydW4oYXJncylgIHJldHVybnMgSlNPTiBkYXRhIChzZW50IGFzIHN0cnVjdHVyZWQgY29udGVudCBhbmQgYXMgdGV4dCkgb3IKICogdGhyb3dzIGFuIEVycm9yIHdob3NlIG1lc3NhZ2UgdGhlIGNhbGxlciBzZWVzLgogKi8KZXhwb3J0IGZ1bmN0aW9uIHNlcnZlKHsgbmFtZSwgdmVyc2lvbiwgdG9vbHMgfSkgewogIGNvbnN0IHNlbmQgPSAobWVzc2FnZSkgPT4gcHJvY2Vzcy5zdGRvdXQud3JpdGUoYCR7SlNPTi5zdHJpbmdpZnkobWVzc2FnZSl9XG5gKQogIGNvbnN0IGhhbmRsZXJzID0gewogICAgaW5pdGlhbGl6ZTogKHBhcmFtcykgPT4gKHsgcHJvdG9jb2xWZXJzaW9uOiBwYXJhbXM/LnByb3RvY29sVmVyc2lvbiA/PyAnMjAyNS0wNi0xOCcsIGNhcGFiaWxpdGllczogeyB0b29sczoge30gfSwgc2VydmVySW5mbzogeyBuYW1lLCB2ZXJzaW9uIH0gfSksCiAgICBwaW5nOiAoKSA9PiAoe30pLAogICAgJ3Rvb2xzL2xpc3QnOiAoKSA9PiAoeyB0b29sczogdG9vbHMubWFwKCh7IHJ1bjogX3J1biwgLi4udG9vbCB9KSA9PiB0b29sKSB9KSwKICAgICd0b29scy9jYWxsJzogKHBhcmFtcykgPT4gY2FsbFRvb2wodG9vbHMsIHBhcmFtcz8ubmFtZSwgcGFyYW1zPy5hcmd1bWVudHMgPz8ge30pLAogIH0KICBjb25zdCBpbnB1dCA9IGNyZWF0ZUludGVyZmFjZSh7IGlucHV0OiBwcm9jZXNzLnN0ZGluIH0pCiAgaW5wdXQub24oJ2xpbmUnLCBhc3luYyAobGluZSkgPT4gewogICAgbGV0IG1lc3NhZ2UKICAgIHRyeSB7CiAgICAgIG1lc3NhZ2UgPSBKU09OLnBhcnNlKGxpbmUpCiAgICB9IGNhdGNoIHsKICAgICAgcmV0dXJuCiAgICB9CiAgICAvLyBOb3RpZmljYXRpb25zIChubyBpZCkgbmVlZCBubyByZXBseS4KICAgIGlmIChtZXNzYWdlPy5pZCA9PT0gdW5kZWZpbmVkIHx8IG1lc3NhZ2UuaWQgPT09IG51bGwpIHJldHVybgogICAgY29uc3QgaGFuZGxlciA9IGhhbmRsZXJzW21lc3NhZ2UubWV0aG9kXQogICAgaWYgKCFoYW5kbGVyKSByZXR1cm4gc2VuZCh7IGpzb25ycGM6ICcyLjAnLCBpZDogbWVzc2FnZS5pZCwgZXJyb3I6IHsgY29kZTogLTMyNjAxLCBtZXNzYWdlOiBgTWV0aG9kIG5vdCBmb3VuZDogJHttZXNzYWdlLm1ldGhvZH1gIH0gfSkKICAgIHRyeSB7CiAgICAgIHNlbmQoeyBqc29ucnBjOiAnMi4wJywgaWQ6IG1lc3NhZ2UuaWQsIHJlc3VsdDogYXdhaXQgaGFuZGxlcihtZXNzYWdlLnBhcmFtcykgfSkKICAgIH0gY2F0Y2ggKGVycm9yKSB7CiAgICAgIHNlbmQoeyBqc29ucnBjOiAnMi4wJywgaWQ6IG1lc3NhZ2UuaWQsIGVycm9yOiB7IGNvZGU6IC0zMjYwMywgbWVzc2FnZTogZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiBTdHJpbmcoZXJyb3IpIH0gfSkKICAgIH0KICB9KQogIGlucHV0Lm9uKCdjbG9zZScsICgpID0+IHByb2Nlc3MuZXhpdCgwKSkKfQoKLyoqIFJ1bnMgb25lIHRvb2w7IGZhaWx1cmVzIGJlY29tZSBhbiBlcnJvciByZXN1bHQgdGhlIGFnZW50IGNhbiByZWFkLCBuZXZlciBhIGNyYXNoLiAqLwpleHBvcnQgYXN5bmMgZnVuY3Rpb24gY2FsbFRvb2wodG9vbHMsIG5hbWUsIGFyZ3MpIHsKICBjb25zdCB0b29sID0gdG9vbHMuZmluZCgoY2FuZGlkYXRlKSA9PiBjYW5kaWRhdGUubmFtZSA9PT0gbmFtZSkKICBpZiAoIXRvb2wpIHJldHVybiB7IGNvbnRlbnQ6IFt7IHR5cGU6ICd0ZXh0JywgdGV4dDogYFVua25vd24gdG9vbCAke25hbWV9YCB9XSwgaXNFcnJvcjogdHJ1ZSB9CiAgdHJ5IHsKICAgIGNvbnN0IGRhdGEgPSBhd2FpdCB0b29sLnJ1bihhcmdzKQogICAgcmV0dXJuIHsgY29udGVudDogW3sgdHlwZTogJ3RleHQnLCB0ZXh0OiBKU09OLnN0cmluZ2lmeShkYXRhKSB9XSwgc3RydWN0dXJlZENvbnRlbnQ6IGRhdGEgfQogIH0gY2F0Y2ggKGVycm9yKSB7CiAgICByZXR1cm4geyBjb250ZW50OiBbeyB0eXBlOiAndGV4dCcsIHRleHQ6IGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogU3RyaW5nKGVycm9yKSB9XSwgaXNFcnJvcjogdHJ1ZSB9CiAgfQp9CgovKiogQXJndW1lbnQgY2hlY2tzIHRoYXQgdGhyb3cgYSByZWFkYWJsZSBtZXNzYWdlOyBlYWNoIHJldHVybnMgdGhlIHZhbHVlIG9yIGl0cyBkZWZhdWx0LiAqLwpleHBvcnQgY29uc3QgYXJnID0gewogIHN0cmluZyhhcmdzLCBrZXksIHsgbWF4ID0gNTAwLCBwYXR0ZXJuLCBmYWxsYmFjayB9ID0ge30pIHsKICAgIGNvbnN0IHZhbHVlID0gYXJnc1trZXldID8/IGZhbGxiYWNrCiAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAnc3RyaW5nJyB8fCAhdmFsdWUubGVuZ3RoIHx8IHZhbHVlLmxlbmd0aCA+IG1heCB8fCAocGF0dGVybiAmJiAhcGF0dGVybi50ZXN0KHZhbHVlKSkpIHRocm93IG5ldyBFcnJvcihgJHtrZXl9IGlzIG1pc3Npbmcgb3IgaW52YWxpZGApCiAgICByZXR1cm4gdmFsdWUKICB9LAogIG9wdGlvbmFsU3RyaW5nKGFyZ3MsIGtleSwgeyBtYXggPSAyXzAwMCB9ID0ge30pIHsKICAgIGNvbnN0IHZhbHVlID0gYXJnc1trZXldCiAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gbnVsbCkgcmV0dXJuIHVuZGVmaW5lZAogICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ3N0cmluZycgfHwgdmFsdWUubGVuZ3RoID4gbWF4KSB0aHJvdyBuZXcgRXJyb3IoYCR7a2V5fSBpcyBpbnZhbGlkYCkKICAgIHJldHVybiB2YWx1ZQogIH0sCiAgaW50ZWdlcihhcmdzLCBrZXksIHsgbWluLCBtYXgsIGZhbGxiYWNrIH0pIHsKICAgIGNvbnN0IHZhbHVlID0gYXJnc1trZXldID8/IGZhbGxiYWNrCiAgICBpZiAoIU51bWJlci5pc0ludGVnZXIodmFsdWUpIHx8IHZhbHVlIDwgbWluIHx8IHZhbHVlID4gbWF4KSB0aHJvdyBuZXcgRXJyb3IoYCR7a2V5fSBtdXN0IGJlIGEgd2hvbGUgbnVtYmVyIGZyb20gJHttaW59IHRvICR7bWF4fWApCiAgICByZXR1cm4gdmFsdWUKICB9LAogIGJvb2xlYW4oYXJncywga2V5LCBmYWxsYmFjaykgewogICAgY29uc3QgdmFsdWUgPSBhcmdzW2tleV0gPz8gZmFsbGJhY2sKICAgIGlmICh0eXBlb2YgdmFsdWUgIT09ICdib29sZWFuJykgdGhyb3cgbmV3IEVycm9yKGAke2tleX0gbXVzdCBiZSB0cnVlIG9yIGZhbHNlYCkKICAgIHJldHVybiB2YWx1ZQogIH0sCiAgb25lT2YoYXJncywga2V5LCBvcHRpb25zLCBmYWxsYmFjaykgewogICAgY29uc3QgdmFsdWUgPSBhcmdzW2tleV0gPz8gZmFsbGJhY2sKICAgIGlmICghb3B0aW9ucy5pbmNsdWRlcyh2YWx1ZSkpIHRocm93IG5ldyBFcnJvcihgJHtrZXl9IG11c3QgYmUgb25lIG9mICR7b3B0aW9ucy5qb2luKCcsICcpfWApCiAgICByZXR1cm4gdmFsdWUKICB9LAogIGxpc3QoYXJncywga2V5LCB7IG1pbiA9IDAsIG1heCA9IDIwLCBpdGVtIH0pIHsKICAgIGNvbnN0IHZhbHVlID0gYXJnc1trZXldCiAgICBpZiAoIUFycmF5LmlzQXJyYXkodmFsdWUpIHx8IHZhbHVlLmxlbmd0aCA8IG1pbiB8fCB2YWx1ZS5sZW5ndGggPiBtYXggfHwgIXZhbHVlLmV2ZXJ5KGl0ZW0pKSB0aHJvdyBuZXcgRXJyb3IoYCR7a2V5fSBpcyBtaXNzaW5nIG9yIGludmFsaWRgKQogICAgcmV0dXJuIHZhbHVlCiAgfSwKICBkYXRlVGltZShhcmdzLCBrZXksIGZhbGxiYWNrKSB7CiAgICBjb25zdCB2YWx1ZSA9IGFyZ3Nba2V5XSA/PyBmYWxsYmFjawogICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQpIHJldHVybiB1bmRlZmluZWQKICAgIGlmICh0eXBlb2YgdmFsdWUgIT09ICdzdHJpbmcnIHx8ICEvXlxkezR9LVxkezJ9LVxkezJ9VFxkezJ9OlxkezJ9KDpcZHsyfShcLlxkKyk/KT8oWnxbKy1dXGR7Mn06XGR7Mn0pJC8udGVzdCh2YWx1ZSkpIHRocm93IG5ldyBFcnJvcihgJHtrZXl9IG11c3QgYmUgYW4gSVNPIGRhdGUtdGltZSB3aXRoIGEgdGltZSB6b25lYCkKICAgIHJldHVybiB2YWx1ZQogIH0sCn0K","SKILL.md":"LS0tCm5hbWU6IEhlcm1lcyBBZ2VudApkZXNjcmlwdGlvbjogU2VlIGFuZCBkaXJlY3QgdGhlIHVzZXIncyBIZXJtZXMgYWdlbnRzIChwcm9maWxlcyk6IHRoZWlyIHNlc3Npb25zLCB3aGF0IGlzIHJ1bm5pbmcsIGthbmJhbiB0YXNrcywgYW5kIHNjaGVkdWxlZCBqb2JzLgotLS0KCiMgSGVybWVzIEFnZW50CgpIZXJtZXMgQWdlbnQgKE5vdXMgUmVzZWFyY2gpIHJ1bnMgYWdlbnRzIG9uIHRoaXMgY29tcHV0ZXIuIFRoaXMgcGFjayByZWFjaGVzIHRoZW0gdGhyb3VnaCBhIHNtYWxsIHNlcnZlciB0aGF0IHJlYWRzIEhlcm1lcydzIGxvY2FsIGJhY2tlbmQgYW5kIHJ1bnMgdGhlIGBoZXJtZXNgIGNvbW1hbmQuIE5vIG1lc3NhZ2luZyBwbGF0Zm9ybSBpcyBuZWVkZWQuIFRvb2wgbmFtZXMgYmVsb3cgYXJlIHRoZSBzZXJ2ZXIncyBvd247IHlvdXIgTUNQIGNsaWVudCBtYXkgc2hvdyB0aGVtIHdpdGggdGhpcyBpbnRlZ3JhdGlvbidzIHByZWZpeCAoZm9yIGV4YW1wbGUgYGhlcm1lc19hZ2VudF9fbGlzdF9zZXNzaW9uc2ApLiBSZXN1bHRzIGFyZSBKU09OLgoKIyMgVGVybXMKCi0gKipBZ2VudCoqOiBhIEhlcm1lcyBwcm9maWxlLCBzdWNoIGFzIGBkZWZhdWx0YCBvciBgY29kZXJgLCB3aXRoIGl0cyBvd24gbW9kZWwsIHNraWxscywgbWVtb3J5LCBhbmQgc2Vzc2lvbnMuIGBsaXN0X2FnZW50c2AgbGlzdHMgdGhlbS4gV2hlbiB0aGUgdXNlciBuYW1lcyBhIEhlcm1lcyBhZ2VudCwgaXQgaXMgb25lIG9mIHRoZXNlLgotICoqU2Vzc2lvbioqOiBvbmUgY29udmVyc2F0aW9uIHdpdGggb25lIGFnZW50IChgaWRgLCBgYWdlbnRgLCBgdGl0bGVgLCBgc3RhdGVgIHJ1bm5pbmcgb3IgaWRsZSwgYG1lc3NhZ2VzYCwgYGZvbGRlcmApLiBIZXJtZXMncyBlcXVpdmFsZW50IG9mIGEgdGhyZWFkLgotICoqVGFzayoqOiBhIGNhcmQgb24gSGVybWVzJ3Mga2FuYmFuIGJvYXJkLCBhc3NpZ25lZCB0byBhbiBhZ2VudC4gVGhlIEhlcm1lcyBnYXRld2F5IHBpY2tzIHRhc2tzIHVwIGFuZCBydW5zIHRoZW0gaW4gdGhlaXIgb3duIHNlc3Npb24uCi0gKipDcm9uIGpvYioqOiB3b3JrIEhlcm1lcyBydW5zIG9uIGEgc2NoZWR1bGUuCgojIyBGaW5kaW5nIHRoZSByaWdodCBzZXNzaW9uCgoxLiBgbGlzdF9zZXNzaW9uc2AgKG9wdGlvbmFsbHkgd2l0aCBgYWdlbnRgKSBsaXN0cyBzZXNzaW9ucyBuZXdlc3QgZmlyc3Q7IG1hdGNoIHRoZSB1c2VyJ3Mgd29yZHMgYWdhaW5zdCB0aXRsZXMsIGFnZW50cywgYW5kIGZvbGRlcnMuCjIuIFBpY2sgb25lIHNlc3Npb24uIElmIG5vbmUgb3Igc2V2ZXJhbCBmaXQsIHNheSB3aGljaCBvbmVzIHlvdSBmb3VuZCBhbmQgYXNrLgozLiBSZWZlciB0byBzZXNzaW9ucyBieSB0aXRsZSBhbmQgYWdlbnQsIG5ldmVyIGJ5IGlkLgoKIyMgUmVhZGluZwoKYHJlYWRfc2Vzc2lvbmAgd2l0aCB0aGUgc2Vzc2lvbidzIGBzZXNzaW9uX2lkYCBhbmQgYGFnZW50YCBnaXZlcyBpdHMgbGF0ZXN0IG1lc3NhZ2VzLiBTdW1tYXJpemUgd2hhdCBtYXR0ZXJzIGluIG9uZSBvciB0d28gc2VudGVuY2VzOyBuZXZlciByZWFkIGxvbmcgbWVzc2FnZXMgYWxvdWQuCgojIyBHaXZpbmcgYW4gYWdlbnQgd29yawoKLSAqKkZvbGxvdy11cCBvbiBleGlzdGluZyB3b3JrKio6IGBzZW5kX21lc3NhZ2VgIHdpdGggdGhlIHNlc3Npb24ncyBgc2Vzc2lvbl9pZGAgYW5kIGBhZ2VudGAuIEl0IHJldHVybnMgYXQgb25jZSBhbmQgdGhlIGFnZW50IHJlcGxpZXMgaW4gdGhhdCBzZXNzaW9uLiBUaGlzIGlzIHRoZSBkZWZhdWx0IHdoZW4gdGhlIHVzZXIgcmVmZXJzIHRvIGEgY2hhdCBvciBzZXNzaW9uIHRoZXkgYWxyZWFkeSBoYXZlLgotICoqQSBuZXcgY29udmVyc2F0aW9uKio6IGBzdGFydF9zZXNzaW9uYCB3aXRoIGBhZ2VudGAsIHRoZSBgbWVzc2FnZWAsIGFuZCBvcHRpb25hbGx5IGEgYGZvbGRlcmAsIG9ubHkgd2hlbiB0aGUgdXNlciBhc2tzIGZvciBzb21ldGhpbmcgbmV3LiBJdCByZXR1cm5zIHRoZSBuZXcgc2Vzc2lvbidzIGlkOyBtZW50aW9uIGl0cyB0aXRsZS4KLSAqKldvcmsgdG8gcnVuIG9uIGl0cyBvd24qKjogYGNyZWF0ZV90YXNrYCBwdXRzIGEgdGFzayBvbiB0aGUgYm9hcmQgZm9yIGFuIGFnZW50OyB0aGUgZ2F0ZXdheSBydW5zIGl0LiBVc2UgaXQgd2hlbiB0aGUgdXNlciBzYXlzIHRvIHF1ZXVlIG9yIGFzc2lnbiBhIHRhc2ssIG9yIGZvciB3b3JrIHdpdGggbm8gY2hhdCB0byBjb250aW51ZS4KLSBBIHN1Y2Nlc3NmdWwgY2FsbCBpcyB0aGUgY29uZmlybWF0aW9uLiBEbyBub3QgcmVhZCB0aGUgc2Vzc2lvbiBiYWNrIHRvIGNoZWNrLCBhbmQgZG8gbm90IHNlbmQgdGhlIHNhbWUgbWVzc2FnZSB0d2ljZS4KCiMjIExpbWl0cyBhbmQgZXJyb3JzCgotIFRoZSBmaXJzdCByZWFkIHN0YXJ0cyBhIHByaXZhdGUgSGVybWVzIGJhY2tlbmQsIHdoaWNoIHRha2VzIGEgZmV3IHNlY29uZHMuCi0gVGFza3MgcnVuIG9ubHkgd2hpbGUgdGhlIEhlcm1lcyBnYXRld2F5IGlzIHJ1bm5pbmcgKGBoZXJtZXMgZ2F0ZXdheSBzdGFydGApLiBTZXNzaW9ucyB3b3JrIHdpdGhvdXQgaXQuCi0gQW4gZXJyb3IgdGhhdCBgaGVybWVzYCBpcyBub3QgaW5zdGFsbGVkIG9yIG5vdCBvbiB0aGUgUEFUSCBtZWFucyBIZXJtZXMgQWdlbnQgbXVzdCBiZSBpbnN0YWxsZWQgb24gdGhpcyBjb21wdXRlci4KLSBUaGUgcGFjayBjYW5ub3QgYW5zd2VyIEhlcm1lcydzIGFwcHJvdmFsIHByb21wdHM7IHRoZSB1c2VyIGFuc3dlcnMgdGhvc2UgaW4gSGVybWVzLgo="},"signature":{"publicKey":"4d9b98c280e248815370a0c3fe152828a508cc7955e60e1910c9a90c97e9a674","value":"1d7719d3c089ed52da6776cfa25412fe9c34d7d510d85774e7ea0f43c4d05ca23c76abaec27d8519497a1f61c4cee462c210fba2917086ae3ecb3eb9f372090d"}},"error":null}