@golproductions/check 3.3.6 → 3.3.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,106 +1,106 @@
1
- # Check
2
-
3
- **Less hallucinations.** Check is a command firewall for AI coding agents: it validates commands, packages, and URLs before they run in your project. What isn't real gets denied, what is real passes through. Deterministic, no AI inside.
4
-
5
- **This is the one location.** Everything integrates from here:
6
-
7
- ```
8
- npx @golproductions/check --install # Windows, macOS, Linux
9
- curl check.golproductions.com | sh # Unix shells
10
- ```
11
-
12
- Installing mints a free key bound to your machine. No signup, 120 free checks per day, then $0.0068 AUD each from a prepaid balance, and the same key is shared by every Check tool on the machine. Need more? Get a paid GOL API Key at [the console](https://www.golproductions.com/console.html).
13
-
14
- ---
15
-
16
- ## Integrate it into anything
17
-
18
- Check is one primitive with four faces. Pick the one your environment speaks.
19
-
20
- ### 1. Hook mode: blocks bad commands before they run
21
-
22
- For any tool with pre-execution hooks. `--install` wires these automatically for **Claude Code, Cursor, and Gemini CLI**; wire anything else yourself: pipe the hook JSON to the script, read the verdict.
23
-
24
- ```
25
- echo '{"tool_input":{"command":"some command"}}' | node ~/.check/check.mjs
26
- → {"hookSpecificOutput":{"permissionDecision":"allow"}} # runnable
27
- → {"hookSpecificOutput":{"permissionDecision":"deny", ...}} # hallucinated
28
- ```
29
-
30
- The script auto-detects Claude Code, Cursor, and Gemini hook formats and answers in each tool's own dialect.
31
-
32
- ### 2. MCP server: for anything that speaks Model Context Protocol
33
-
34
- Windsurf, Antigravity, Continue, Amazon Q, Roo Code, Claude Desktop, or your own agent:
35
-
36
- ```json
37
- {
38
- "mcpServers": {
39
- "check": {
40
- "command": "npx",
41
- "args": ["@golproductions/check", "--mcp"],
42
- "env": { "GOL_CLIENT_ID": "your_key" }
43
- }
44
- }
45
- }
46
- ```
47
-
48
- Exposes two tools: `Check` (verdict only) and `CheckAndExecute` (validate, then run if clean). MCP is advisory: the agent calls it when its rules say to. Add one line to your agent's rules: *"Before running any shell command, validate it with the `check` tool."*
49
-
50
- ### 3. CLI: for scripts, CI, git hooks, anything with a shell
51
-
52
- ```
53
- curl check.golproductions.com | sh # installs the `check` command (Unix)
54
- check "netlify-cli deploy --prod" # → invalid (exit 1)
55
- check "netlify deploy --prod" # → runnable (exit 0)
56
- echo "some command" | check # pipe mode
57
- ```
58
-
59
- Exit codes make it composable: gate a CI step, a git pre-push hook, a Docker entrypoint, a cron job.
60
-
61
- ### 4. HTTP: for everything else, in any language
62
-
63
- ```
64
- POST https://triage.golproductions.com/preflight
65
- Header: X-GOL-CLIENT-ID: your_key
66
- Body: {"command": "the command to validate"}
67
-
68
- → {"verdict": "runnable" | "invalid", "reason": "...", "daily_remaining": 119}
69
- ```
70
-
71
- That is the whole contract. Rate limit 60/min. A `402` means the free tier is spent and the balance is empty. Treat it as allow-with-warning, never as a verdict.
72
-
73
- ---
74
-
75
- ## Keys
76
-
77
- | Tier | What | Where |
78
- |------|------|-------|
79
- | **GOL Client ID** (free) | Minted automatically on install, bound to the machine, shared by every tool on it. 120 checks/day, forever. | Nowhere. It just happens |
80
- | **GOL API Key** (paid) | Prepaid balance ($0.0068 AUD/check after the daily 120), spend caps, dashboard, 2FA. | [Console](https://www.golproductions.com/console.html) |
81
-
82
- Same header, same API. The tier is just what the key can do.
83
-
84
- ## Manage
85
-
86
- ```
87
- npx @golproductions/check --status Your key + where Check is installed
88
- npx @golproductions/check --credits Balance and free checks remaining
89
- npx @golproductions/check --uninstall Remove from every tool
90
- ```
91
-
92
- ## Editor extensions
93
-
94
- Thin wrappers over this same API exist on the [VS Code Marketplace](https://marketplace.visualstudio.com/items?itemName=golproductions.gol-check), [Open VSX](https://open-vsx.org/extension/golproductions/gol-check) (also used by Antigravity), and the [JetBrains Marketplace](https://plugins.jetbrains.com/plugin/32408). They validate on demand; the hook and MCP faces above are the real-time gate.
95
-
96
- ## Links
97
-
98
- [Product](https://www.golproductions.com/check.html) · [Pricing](https://www.golproductions.com/pricing.html) · [Console](https://www.golproductions.com/console.html) · [Updates](https://www.golproductions.com/updates.html) · [Blog](https://www.golproductions.com/blog/)
99
-
100
- ## Terms
101
-
102
- By installing or using Check you agree to the [Terms of Service](https://www.golproductions.com/terms.html) and [Privacy Policy](https://www.golproductions.com/privacy.html). The service is provided as is; see the Terms for the full picture, including your Australian Consumer Law rights.
103
-
104
- ## License
105
-
106
- Copyright (c) 2026 GOL Productions. All rights reserved.
1
+ # Check
2
+
3
+ **The anti-hallucination layer.** Check stops hallucinated commands, packages, and URLs before they run in your project. What isn't real gets blocked, what is real passes through. Deterministic, one round trip to the nearest Cloudflare edge, no AI inside.
4
+
5
+ **This is the one location.** Everything integrates from here:
6
+
7
+ ```
8
+ npx @golproductions/check --install # Windows, macOS, Linux
9
+ curl check.golproductions.com | sh # Unix shells
10
+ ```
11
+
12
+ Installing mints a free key bound to your machine. No signup, 120 free checks per day, then $0.0068 AUD each from a prepaid balance, and the same key is shared by every Check tool on the machine. Need more? Get a paid GOL API Key at [the console](https://www.golproductions.com/console.html).
13
+
14
+ ---
15
+
16
+ ## Integrate it into anything
17
+
18
+ Check is one primitive with four faces. Pick the one your environment speaks.
19
+
20
+ ### 1. Hook mode: blocks bad commands before they run
21
+
22
+ For any tool with pre-execution hooks. `--install` wires these automatically for **Claude Code, Cursor, and Gemini CLI**; wire anything else yourself: pipe the hook JSON to the script, read the verdict.
23
+
24
+ ```
25
+ echo '{"tool_input":{"command":"some command"}}' | node ~/.check/check.mjs
26
+ → {"hookSpecificOutput":{"permissionDecision":"allow"}} # runnable
27
+ → {"hookSpecificOutput":{"permissionDecision":"deny", ...}} # hallucinated
28
+ ```
29
+
30
+ The script auto-detects Claude Code, Cursor, and Gemini hook formats and answers in each tool's own dialect.
31
+
32
+ ### 2. MCP server: for anything that speaks Model Context Protocol
33
+
34
+ Windsurf, Antigravity, Continue, Amazon Q, Roo Code, Claude Desktop, or your own agent:
35
+
36
+ ```json
37
+ {
38
+ "mcpServers": {
39
+ "check": {
40
+ "command": "npx",
41
+ "args": ["@golproductions/check", "--mcp"],
42
+ "env": { "GOL_CLIENT_ID": "your_key" }
43
+ }
44
+ }
45
+ }
46
+ ```
47
+
48
+ Exposes two tools: `Check` (verdict only) and `CheckAndExecute` (validate, then run if clean). MCP is advisory: the agent calls it when its rules say to. Add one line to your agent's rules: *"Before running any shell command, validate it with the `check` tool."*
49
+
50
+ ### 3. CLI: for scripts, CI, git hooks, anything with a shell
51
+
52
+ ```
53
+ curl check.golproductions.com | sh # installs the `check` command (Unix)
54
+ check "netlify-cli deploy --prod" # → invalid (exit 1)
55
+ check "netlify deploy --prod" # → runnable (exit 0)
56
+ echo "some command" | check # pipe mode
57
+ ```
58
+
59
+ Exit codes make it composable: gate a CI step, a git pre-push hook, a Docker entrypoint, a cron job.
60
+
61
+ ### 4. HTTP: for everything else, in any language
62
+
63
+ ```
64
+ POST https://triage.golproductions.com/preflight
65
+ Header: X-GOL-CLIENT-ID: your_key
66
+ Body: {"command": "the command to validate"}
67
+
68
+ → {"verdict": "runnable" | "invalid", "reason": "...", "daily_remaining": 119}
69
+ ```
70
+
71
+ That is the whole contract. Rate limit 60/min. A `402` means the free tier is spent and the balance is empty. Treat it as allow-with-warning, never as a verdict.
72
+
73
+ ---
74
+
75
+ ## Keys
76
+
77
+ | Tier | What | Where |
78
+ |------|------|-------|
79
+ | **GOL Client ID** (free) | Minted automatically on install, bound to the machine, shared by every tool on it. 120 checks/day, forever. | Nowhere. It just happens |
80
+ | **GOL API Key** (paid) | Prepaid balance ($0.0068 AUD/check after the daily 120), spend caps, dashboard, 2FA. | [Console](https://www.golproductions.com/console.html) |
81
+
82
+ Same header, same API. The tier is just what the key can do.
83
+
84
+ ## Manage
85
+
86
+ ```
87
+ npx @golproductions/check --status Your key + where Check is installed
88
+ npx @golproductions/check --credits Balance and free checks remaining
89
+ npx @golproductions/check --uninstall Remove from every tool
90
+ ```
91
+
92
+ ## Editor extensions
93
+
94
+ Thin wrappers over this same API exist on the [VS Code Marketplace](https://marketplace.visualstudio.com/items?itemName=golproductions.gol-check), [Open VSX](https://open-vsx.org/extension/golproductions/gol-check) (also used by Antigravity), and the [JetBrains Marketplace](https://plugins.jetbrains.com/plugin/32408). They validate on demand; the hook and MCP faces above are the real-time gate.
95
+
96
+ ## Links
97
+
98
+ [Product](https://www.golproductions.com/check.html) · [Pricing](https://www.golproductions.com/pricing.html) · [Console](https://www.golproductions.com/console.html) · [Updates](https://www.golproductions.com/updates.html) · [Blog](https://www.golproductions.com/blog/)
99
+
100
+ ## Terms
101
+
102
+ By installing or using Check you agree to the [Terms of Service](https://www.golproductions.com/terms.html) and [Privacy Policy](https://www.golproductions.com/privacy.html). The service is provided as is; see the Terms for the full picture, including your Australian Consumer Law rights.
103
+
104
+ ## License
105
+
106
+ Copyright (c) 2026 GOL Productions. All rights reserved.
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
1
  #!/usr/bin/env node
2
- import{readFileSync as e,writeFileSync as o,mkdirSync as t,existsSync as n,createWriteStream as s,chmodSync as r,unlinkSync as c,rmSync as i}from"node:fs";import{spawnSync as a,spawn as l}from"node:child_process";import{createServer as h,connect as d}from"node:net";import{fileURLToPath as u}from"node:url";import{join as m}from"node:path";import{homedir as p,platform as f,arch as g}from"node:os";import{pipeline as k}from"node:stream/promises";import{Readable as y}from"node:stream";const w=(()=>{try{return JSON.parse(e(m(u(new URL(".",import.meta.url)),"..","package.json"),"utf8")).version}catch{return"3.3.5"}})(),v="https://triage.golproductions.com/preflight",C=process.env.GOL_CLIENT_ID||"";function T(){if(C)return C;try{const o=e(m(p(),".check","key"),"utf8").trim();if(o)return o}catch{}try{const o=JSON.parse(e(m(p(),".claude","settings.json"),"utf8"));return o.env?.GOL_CLIENT_ID||""}catch{return""}}async function S(){try{const e=await async function(){const{createHash:e}=await import("node:crypto"),{hostname:o,userInfo:t}=await import("node:os");let n="";try{n=t().username||""}catch{}const s=[o(),f(),g(),n].join("|");return e("sha256").update(s).digest("hex")}(),o=await fetch(v.replace("/preflight","/instant-key"),{method:"POST",headers:{"Content-Type":"application/json","User-Agent":"c/"+w},body:JSON.stringify({fingerprint:e,channel:"npm"}),signal:AbortSignal.timeout(1e4)});if(!o.ok)return null;const t=await o.json();return t&&t.client_id?t.client_id:null}catch{return null}}async function x(e){const o="win32"===f()?"win":"darwin"===f()?"macos":"linux",t=`https://pub-e55366a7f5994be9be04f0e205179f4a.r2.dev/releases/truth-gate-v3.0.0-${o}-${"arm64"===g()?"arm64":"x64"}${"win"===o?".exe":""}`,n=await fetch(t);if(!n.ok)throw new Error(`Download failed: ${n.status}`);if(await k(y.fromWeb(n.body),s(e)),"win"!==o)try{r(e,493)}catch{}}async function P(){let n=process.env.GOL_CLIENT_ID||"";n||(n=await S()),n||(console.log("ERROR: could not mint a key (offline, or this network hit its daily limit). Get one at https://golproductions.com/check then re-run with GOL_CLIENT_ID set."),process.exit(1));const s=p(),r=m(s,".check");t(r,{recursive:!0});const c=m(r,"check.mjs").replace(/\\/g,"/");o(c,e(new URL(import.meta.url),"utf8"),"utf8"),o(m(r,"key"),n,"utf8");const i="win32"===f()?".exe":"",a=m(r,"truth-gate"+i).replace(/\\/g,"/");let l=!0;try{await x(a)}catch{l=!1}console.log(`Check is installed.\n\nWhat follows is written for the AI agent that ran this command. If a person ran\nit, hand this to your agent.\n\nCheck is a deterministic gate. It validates every shell command against this\nmachine before it runs, so a fabricated command is denied before it can execute.\nYou install it once; from here, it wires itself in. You know this environment\nbetter than any installer could, so you do the wiring.\n\nAlready in place\n key ${n}\n (saved at ${m(r,"key").replace(/\\/g,"/")})\n gate script ${c}\n outcome check ${l?a:"(download failed; skip the post-execution step)"}\n\nThe contract\n Before each shell command, pipe its hook JSON to node ${c}\n with GOL_CLIENT_ID=${n} in the environment. The output tells you allow or\n deny. Check speaks Claude Code, Cursor, and Gemini natively; for anything\n else, send {"tool_name":"Bash","tool_input":{"command":"<cmd>"}} and read a\n denial as stderr plus exit 2.\n\n No hook system? Add Check as an MCP server instead:\n {"command":"npx","args":["@golproductions/check","--mcp"],"env":{"GOL_CLIENT_ID":"${n}"}}\n and call the check tool before every command.\n\nThree steps\n 1. Identify what you are (Claude Code, Cursor, Gemini CLI, Windsurf, Zed,\n aider, something custom) and where your user-level config lives.\n 2. Wire the contract into that config, before execution. Merge, don't\n overwrite. For Claude Code: hooks.PreToolUse, matcher "Bash|PowerShell",\n command node with the gate script as its argument, plus env.GOL_CLIENT_ID.\n If your environment also has post-execution and stop hooks, wire the same\n script to PostToolUse and Stop: that turns on outcome receipts (real exit\n codes) and the completion gate, which challenges a "done" left sitting on\n a fresh, unaddressed failure.\n 3. Prove it, don't assume it. Run flurbomatic-zzz --init — it must be\n denied. Then run echo check-install-verify — it must pass. Two matching\n receipts mean the gate is live: tell your user "Check is active, 120 free\n checks a day on this machine." If they don't match, read your hook docs\n and fix the wiring. The facts above don't change.\n\nFor your user, if they ask: 120 free checks a day per machine, then $0.0068 AUD\nper check from a prepaid wallet at https://golproductions.com/console.html. If\nthe service is ever unreachable, commands proceed with a warning — the gate\nfails open, so it never becomes the thing that stops your work.`),process.exit(0)}function b(e){return e&&(e.includes(".check")||e.includes("truth-gate"))}function O(e){return!!b(e.command)||!!e.args?.some(e=>b(e))}function _(){console.log(`\n Check v${w}: Anti-hallucination layer for AI coding agents\n\n Usage:\n\n npx @golproductions/check --install <key> Install Check with your Client ID\n npx @golproductions/check --uninstall Remove Check from all tools\n npx @golproductions/check --status Show what is installed and active\n npx @golproductions/check --credits Check your usage and balance\n npx @golproductions/check --docs View documentation\n npx @golproductions/check --help Show this help\n\n Get your key: https://golproductions.com/check\n Pricing: 120 free/day, then $0.0068 AUD per check\n`),process.exit(0)}const I=parseInt(process.env.CHECK_DAEMON_PORT||"17874",10),N=6e5;function U(){try{const e=u(import.meta.url);l(process.execPath,[e,"--daemon"],{detached:!0,stdio:"ignore",windowsHide:!0}).unref()}catch{}}const j=process.argv.slice(2);function E(e,{input:o,cwd:t}={}){return new Promise(s=>{try{const r=function(){if("win32"!==f())return"bash";const e=[process.env.CLAUDE_CODE_GIT_BASH_PATH,"C:/Program Files/Git/bin/bash.exe","C:/Program Files/Git/usr/bin/bash.exe","C:/Program Files (x86)/Git/bin/bash.exe"].filter(Boolean);for(const o of e)try{if(n(o))return o}catch{}return null}();if(!r)return s(null);const c=l(r,e,{cwd:t,windowsHide:!0});let i="",a="";const h=setTimeout(()=>{try{c.kill()}catch{}s(null)},4e3);c.stdout.on("data",e=>{a+=e}),c.stderr.on("data",e=>{i+=e}),c.on("error",()=>{clearTimeout(h),s(null)}),c.on("close",e=>{clearTimeout(h),s({status:e,stderr:i,stdout:a})}),void 0!==o&&c.stdin.write(o),c.stdin.end()}catch{s(null)}})}function L(e,o,t){if(o){const o={cursor:{permission:"allow"},gemini:{decision:"allow"},claude:{hookSpecificOutput:{hookEventName:"PreToolUse",permissionDecision:"allow"}}};process.stdout.write(JSON.stringify(o[e]||o.claude)),process.exit(0)}"gemini"===e&&(process.stdout.write(JSON.stringify({decision:"deny",reason:t})),process.exit(2));const n={cursor:{permission:"deny",agent_message:t},claude:{hookSpecificOutput:{hookEventName:"PreToolUse",permissionDecision:"deny",permissionDecisionReason:t}}};process.stdout.write(JSON.stringify(n[e]||n.claude)),process.exit(0)}function D(e,s){let r=!0;try{const e=m(p(),".check","credits-warned-"+(new Date).toISOString().slice(0,10));r=n(e),r||(t(m(p(),".check"),{recursive:!0}),o(e,"1"))}catch{r=!1}const c=r?void 0:s;if("gemini"===e&&(process.stdout.write(JSON.stringify({decision:"allow"})),c&&process.stderr.write(c),process.exit(0)),"cursor"===e){const e={permission:"allow"};c&&(e.user_message=c),process.stdout.write(JSON.stringify(e)),process.exit(0)}const i={hookSpecificOutput:{hookEventName:"PreToolUse",permissionDecision:"allow"}};c&&(i.systemMessage=c),process.stdout.write(JSON.stringify(i)),process.exit(0)}j.includes("--daemon")&&(await async function(){let e=setTimeout(()=>process.exit(0),N);const o=h(o=>{clearTimeout(e),e=setTimeout(()=>process.exit(0),N);let t="";o.on("error",()=>{}),o.on("data",async e=>{t+=e;const n=t.indexOf("\n");if(-1===n)return;let s;try{s=JSON.parse(t.slice(0,n))}catch{return void o.destroy()}if(s.v!==w)return o.end(JSON.stringify({gol:1,stale:1})+"\n"),void setTimeout(()=>process.exit(0),50);try{const e=new AbortController,t=setTimeout(()=>e.abort(),5e3),n=await fetch(v,{method:"POST",headers:{"Content-Type":"application/json","X-GOL-CLIENT-ID":s.key,"User-Agent":"c/"+w},body:JSON.stringify(s.body),signal:e.signal});clearTimeout(t);const r=await n.text();o.end(JSON.stringify({gol:1,status:n.status,text:r})+"\n")}catch{o.end(JSON.stringify({gol:1,err:1})+"\n")}})});o.on("error",()=>process.exit(0)),o.listen(I,"127.0.0.1")}(),await new Promise(()=>{})),j.includes("--agent")&&await P(),j.includes("--install")&&await async function(){let s=process.argv[3]||process.env.GOL_CLIENT_ID||"";s&&"your_key"!==s||(console.log("\n Activating Check (free, no signup)...\n"),s=await S(),s||(console.log(" Could not activate automatically (offline, or this network hit its daily limit).\n"),console.log(" Get a key the manual way: https://golproductions.com/check\n"),console.log(" Then run: npx @golproductions/check --install YOUR_KEY\n"),process.exit(1)),console.log(" Activated. 120 free checks per day.\n"));const r=await async function(e){try{const o=await fetch(v,{method:"POST",headers:{"Content-Type":"application/json","X-GOL-CLIENT-ID":e,"User-Agent":"c/"+w},body:JSON.stringify({command:"echo check-install-verify",cwd:process.cwd(),v:w}),signal:AbortSignal.timeout(1e4)});if(o.ok)return{valid:!0,expired:!1};let t={};try{t=await o.json()}catch{}return{valid:!1,expired:/expir/i.test(t.reason||t.error||t.message||"")}}catch{return{valid:!1,expired:!1}}}(s);r.valid||(r.expired?(console.log("\n Your Client ID has expired: "+s),console.log("\n Renew your key at: https://golproductions.com/check\n")):(console.log("\n Invalid Client ID: "+s),console.log("\n Get a valid key at: https://golproductions.com/check\n")),process.exit(1)),console.log("\n Key verified. Installing Check...\n");const c=p();let i=0;const a=e(new URL(import.meta.url),"utf8"),l=m(c,".check");t(l,{recursive:!0});const h=m(l,"check.mjs").replace(/\\/g,"/");o(h,a,"utf8"),o(m(l,"key"),s,"utf8");const d="win32"===f()?".exe":"",u=m(l,"truth-gate"+d).replace(/\\/g,"/");await x(u);const g={command:"npx",args:["@golproductions/check","--mcp"],env:{GOL_CLIENT_ID:s}},k=[{name:"Claude Code",dir:m(c,".claude"),file:"settings.json",config:e=>(e.hooks=e.hooks||{},e.hooks.PreToolUse=(e.hooks.PreToolUse||[]).filter(e=>!e.hooks?.some(O)),e.hooks.PreToolUse.push({matcher:"Bash|PowerShell",hooks:[{type:"command",command:"node",args:[h]}]}),e.hooks.PostToolUse=(e.hooks.PostToolUse||[]).filter(e=>!e.hooks?.some(O)),e.hooks.PostToolUse.push({matcher:"Bash|PowerShell",hooks:[{type:"command",command:"node",args:[h]}]},{matcher:"Bash|PowerShell",hooks:[{type:"command",command:u}]},{matcher:"Edit|Write|NotebookEdit",hooks:[{type:"command",command:u}]}),e.hooks.Stop=(e.hooks.Stop||[]).filter(e=>!e.hooks?.some(O)),e.hooks.Stop.push({hooks:[{type:"command",command:"node",args:[h]}]}),e.env=e.env||{},e.env.GOL_CLIENT_ID=s,e)},{name:"Gemini CLI / Antigravity",dir:m(c,".gemini"),file:"settings.json",config:e=>{e.hooks=e.hooks||{},e.hooks.BeforeTool=e.hooks.BeforeTool||[];const o=e.hooks.BeforeTool;return o.find(e=>e.hooks?.some(e=>"check-gate"===e.name))||o.push({matcher:".*",hooks:[{type:"command",command:"node "+h,name:"check-gate"}]}),e}},{name:"Cursor",dir:m(c,".cursor"),file:"hooks.json",config:e=>(e.version=e.version||1,e.hooks=e.hooks||{},e.hooks.beforeShellExecution=(e.hooks.beforeShellExecution||[]).filter(e=>!b(e.command)),e.hooks.beforeShellExecution.push({command:"node "+h}),e)},{name:"Homebase",dir:m(c,".homebase"),file:"hooks.json",config:e=>(e.hooks=e.hooks||{},e.hooks.PreToolUse=(e.hooks.PreToolUse||[]).filter(e=>!e.hooks?.some(O)),e.hooks.PreToolUse.push({matcher:"Bash|PowerShell",hooks:[{type:"command",command:"node",args:[h]}]}),e.hooks.PostToolUse=(e.hooks.PostToolUse||[]).filter(e=>!e.hooks?.some(O)),e.hooks.PostToolUse.push({matcher:"Bash|PowerShell",hooks:[{type:"command",command:u}]}),e.env=e.env||{},e.env.GOL_CLIENT_ID=s,e)},{name:"Windsurf (MCP)",dir:m(c,".codeium","windsurf"),file:"mcp_config.json",config:e=>(e.mcpServers=e.mcpServers||{},e.mcpServers.Check=g,e)},{name:"Continue (MCP)",dir:m(process.cwd(),".continue","mcpServers"),file:"check.json",config:()=>({mcpServers:{Check:g}})},{name:"Amazon Q Developer (MCP)",dir:m(c,".aws","amazonq"),file:"mcp.json",config:e=>(e.mcpServers=e.mcpServers||{},e.mcpServers.Check={type:"stdio",...g},e)},{name:"Roo Code (project MCP)",dir:m(process.cwd(),".roo"),file:"mcp.json",config:e=>(e.mcpServers=e.mcpServers||{},e.mcpServers.Check=g,e)},{name:"Project MCP (shared)",dir:process.cwd(),file:".mcp.json",config:e=>(e.mcpServers=e.mcpServers||{},e.mcpServers.Check=g,e)}],y=["Windsurf (MCP)","Continue (MCP)","Amazon Q Developer (MCP)","Roo Code (project MCP)","Project MCP (shared)"];let C=!1;for(const s of k){const r=y.includes(s.name);if(!r&&!n(s.dir))continue;r&&t(s.dir,{recursive:!0});const c=m(s.dir,s.file);let a={};try{a=JSON.parse(e(c,"utf8"))}catch{}const l=s.config(a);o(c,JSON.stringify(l,null,2)+"\n","utf8"),i++,"Claude Code"===s.name&&(C=!0)}if(0===i){t(m(c,".claude"),{recursive:!0});const n=m(c,".claude","settings.json");let s={};try{s=JSON.parse(e(n,"utf8"))}catch{}const r=k[0].config(s);o(n,JSON.stringify(r,null,2)+"\n","utf8"),C=!0}const T=C?"CLAUDE.md":"AGENTS.md",P=m(process.cwd(),T);try{const t=n(P)?e(P,"utf8"):"";if(!t.includes("Never fabricate")){const e=t.length>0?t.trimEnd()+"\n\n":"";o(P,e+"Never fabricate, hallucinate, or invent values. If you don't have it, say you don't have it. No fake keys, no fake IDs, no fake paths, no fake URLs. If unsure, ask. Never guess and present it as fact.\n","utf8")}}catch{}console.log(`\n Your free GOL Client ID (this machine): ${s}`),console.log(" Shared by every editor on this machine. 120 free checks/day."),console.log(" Need more? Get a GOL API Key (paid, prepaid balance) at"),console.log(" https://www.golproductions.com/console"),console.log("\n By using Check you agree to the Terms and Privacy Policy:"),console.log(" golproductions.com/terms | golproductions.com/privacy"),console.log("\nSafe travels wanderer..\n"),process.exit(0)}(),j.includes("--uninstall")&&await async function(){const t=p();let s=0;console.log("\n Removing Check...\n");let r=Promise.resolve();try{const e=T();e&&(r=fetch(v.replace("/preflight","/log"),{method:"POST",headers:{"Content-Type":"application/json","X-GOL-CLIENT-ID":e,"User-Agent":"c/"+w},body:JSON.stringify({verdict:"uninstall",channel:"npm",os:f(),arch:g(),version:w}),signal:AbortSignal.timeout(3e3)}).catch(()=>{}))}catch{}const a=[{name:"Claude Code",path:m(t,".claude","settings.json"),clean:e=>(e.hooks?.PreToolUse&&(e.hooks.PreToolUse=e.hooks.PreToolUse.filter(e=>!e.hooks?.some(O)),0===e.hooks.PreToolUse.length&&delete e.hooks.PreToolUse),e.hooks?.PostToolUse&&(e.hooks.PostToolUse=e.hooks.PostToolUse.filter(e=>!e.hooks?.some(O)),0===e.hooks.PostToolUse.length&&delete e.hooks.PostToolUse),e.hooks&&0===Object.keys(e.hooks).length&&delete e.hooks,e.env&&(delete e.env.GOL_CLIENT_ID,0===Object.keys(e.env).length&&delete e.env),e)},{name:"Gemini CLI",path:m(t,".gemini","settings.json"),clean:e=>(e.hooks?.BeforeTool&&(e.hooks.BeforeTool=e.hooks.BeforeTool.filter(e=>!e.hooks?.some(e=>"check-gate"===e.name)),0===e.hooks.BeforeTool.length&&delete e.hooks.BeforeTool,0===Object.keys(e.hooks).length&&delete e.hooks),e)},{name:"Cursor",path:m(t,".cursor","hooks.json"),clean:e=>(e.hooks?.beforeShellExecution&&(e.hooks.beforeShellExecution=e.hooks.beforeShellExecution.filter(e=>!b(e.command)),0===e.hooks.beforeShellExecution.length&&delete e.hooks.beforeShellExecution,0===Object.keys(e.hooks).length&&delete e.hooks),e)},{name:"Homebase",path:m(t,".homebase","hooks.json"),clean:e=>(e.hooks?.PreToolUse&&(e.hooks.PreToolUse=e.hooks.PreToolUse.filter(e=>!e.hooks?.some(O)),0===e.hooks.PreToolUse.length&&delete e.hooks.PreToolUse),e.hooks?.PostToolUse&&(e.hooks.PostToolUse=e.hooks.PostToolUse.filter(e=>!e.hooks?.some(O)),0===e.hooks.PostToolUse.length&&delete e.hooks.PostToolUse),e.hooks&&0===Object.keys(e.hooks).length&&delete e.hooks,e.env&&(delete e.env.GOL_CLIENT_ID,0===Object.keys(e.env).length&&delete e.env),e)}],l=[{name:"Windsurf",path:m(t,".codeium","windsurf","mcp_config.json")},{name:"Amazon Q",path:m(t,".aws","amazonq","mcp.json")}],h=[{name:"Continue",path:m(process.cwd(),".continue","mcpServers","check.json"),deleteFile:!0},{name:"Roo Code",path:m(process.cwd(),".roo","mcp.json")},{name:"Project MCP",path:m(process.cwd(),".mcp.json")}];for(const t of a)if(n(t.path))try{const n=JSON.parse(e(t.path,"utf8")),r=t.clean(n);o(t.path,JSON.stringify(r,null,2)+"\n","utf8"),console.log(" removed "+t.name),s++}catch{}for(const t of[...l,...h])if(n(t.path))try{if(t.deleteFile)c(t.path),console.log(" removed "+t.name),s++;else{const n=JSON.parse(e(t.path,"utf8"));n.mcpServers?.Check&&(delete n.mcpServers.Check,0===Object.keys(n.mcpServers).length&&delete n.mcpServers,o(t.path,JSON.stringify(n,null,2)+"\n","utf8"),console.log(" removed "+t.name),s++)}}catch{}const d=m(t,".check");if(n(d))try{i(d,{recursive:!0,force:!0}),console.log(" removed ~/.check/")}catch{}0===s?console.log(" No Check installations found.\n"):(console.log(`\n Removed from ${s} tool${1!==s?"s":""}.`),console.log(" CLAUDE.md / AGENTS.md rules were left in place.\n"));try{await r}catch{}process.exit(0)}(),j.includes("--status")&&await async function(){const o=p(),t=m(o,".check"),s="win32"===f()?".exe":"",r=T();if(console.log(`\n Check v${w}\n`),r){const e=r.length>12?r.slice(0,8)+"..."+r.slice(-4):r;console.log(" Client ID: "+e)}else console.log(" Client ID: not set");const c=m(t,"truth-gate"+s);console.log(" Binary: "+(n(c)?"installed":"not found"));const i=m(t,"check.mjs");console.log(" Script: "+(n(i)?"installed":"not found")),console.log("\n Integrations:\n");const a=[{name:"Claude Code",path:m(o,".claude","settings.json"),test:e=>e.hooks?.PreToolUse?.some(e=>e.hooks?.some(O))||e.hooks?.PostToolUse?.some(e=>e.hooks?.some(O)),detail:e=>{const o=[];return e.hooks?.PreToolUse?.some(e=>e.hooks?.some(O))&&o.push("PreToolUse"),e.hooks?.PostToolUse?.some(e=>e.hooks?.some(O))&&o.push("PostToolUse"),o.join(", ")}},{name:"Gemini CLI",path:m(o,".gemini","settings.json"),test:e=>e.hooks?.BeforeTool?.some(e=>e.hooks?.some(e=>"check-gate"===e.name)),detail:()=>"BeforeTool"},{name:"Cursor",path:m(o,".cursor","hooks.json"),test:e=>e.hooks?.beforeShellExecution?.some(e=>b(e.command)),detail:()=>"beforeShellExecution"},{name:"Homebase",path:m(o,".homebase","hooks.json"),test:e=>e.hooks?.PreToolUse?.some(e=>e.hooks?.some(O))||e.hooks?.PostToolUse?.some(e=>e.hooks?.some(O)),detail:e=>{const o=[];return e.hooks?.PreToolUse?.some(e=>e.hooks?.some(O))&&o.push("PreToolUse"),e.hooks?.PostToolUse?.some(e=>e.hooks?.some(O))&&o.push("PostToolUse"),o.join(", ")}},{name:"Windsurf",path:m(o,".codeium","windsurf","mcp_config.json"),test:e=>!!e.mcpServers?.Check,detail:()=>"MCP"},{name:"Continue",path:m(process.cwd(),".continue","mcpServers","check.json"),test:e=>!!e.mcpServers?.Check,detail:()=>"MCP (project)"},{name:"Amazon Q",path:m(o,".aws","amazonq","mcp.json"),test:e=>!!e.mcpServers?.Check,detail:()=>"MCP"},{name:"Roo Code",path:m(process.cwd(),".roo","mcp.json"),test:e=>!!e.mcpServers?.Check,detail:()=>"MCP (project)"},{name:"Project MCP",path:m(process.cwd(),".mcp.json"),test:e=>!!e.mcpServers?.Check,detail:()=>"MCP (project)"}];for(const o of a)if(n(o.path))try{const t=JSON.parse(e(o.path,"utf8"));o.test(t)?console.log(" + "+o.name.padEnd(14)+" active ("+o.detail(t)+")"):console.log(" - "+o.name.padEnd(14)+" tool installed, Check not configured")}catch{console.log(" ? "+o.name.padEnd(14)+" config unreadable")}else console.log(" - "+o.name.padEnd(14)+" not detected");console.log(""),process.exit(0)}(),j.includes("--credits")&&await async function(){const e=T();e||(console.log("\n No Client ID found. Set GOL_CLIENT_ID or run --install first.\n"),process.exit(1));try{const o=await fetch(v.replace("/preflight","/credits"),{method:"GET",headers:{"X-GOL-CLIENT-ID":e,"User-Agent":"c/"+w},signal:AbortSignal.timeout(1e4)});o.ok||(console.log("\n Could not fetch credits (HTTP "+o.status+").\n"),process.exit(1));const t=await o.json();console.log(`\n Check v${w}: Credits\n`),void 0!==t.free_remaining&&console.log(" Free today: "+t.free_remaining+" / "+(t.free_daily||120)),void 0!==t.calls_today&&console.log(" Calls today: "+t.calls_today),void 0!==t.balance&&console.log(" Balance: $"+t.balance+" AUD"),void 0!==t.total_calls&&console.log(" Total calls: "+t.total_calls),t.plan&&console.log(" Plan: "+t.plan),0===Object.keys(t).length&&console.log(" "+JSON.stringify(t)),console.log("")}catch(e){console.log("\n Could not reach API: "+e.message+"\n")}process.exit(0)}(),j.includes("--docs")&&await async function(){console.log(`\n Check v${w}: Documentation\n\n Install: npx @golproductions/check --install <key>\n Uninstall: npx @golproductions/check --uninstall\n Status: npx @golproductions/check --status\n Credits: npx @golproductions/check --credits\n\n How it works:\n\n Check installs hooks into your AI coding tools. Every time\n the AI runs a command or edits a file, Check verifies it\n before or after execution.\n\n PreToolUse Validates commands before they run.\n PostToolUse Verifies results after execution.\n MCP Server Provides Check and CheckAndExecute tools.\n CLAUDE.md Adds anti-fabrication instructions.\n\n Supported tools:\n\n Claude Code, Gemini CLI, Cursor, Windsurf, Continue,\n Amazon Q Developer, Roo Code, Homebase\n\n Pricing:\n\n 120 free checks per day. Then $0.0068 AUD per check.\n Credits never expire. Pay as you go.\n\n Links:\n\n Website: https://golproductions.com/check\n Docs: https://github.com/golproductions/check\n Support: support@golproductions.com\n`);try{const{execSync:e}=await import("node:child_process"),o="https://github.com/golproductions/check";"win32"===f()?e(`start "" "${o}"`,{stdio:"ignore",shell:!0}):"darwin"===f()?e(`open "${o}"`,{stdio:"ignore"}):e(`xdg-open "${o}"`,{stdio:"ignore"})}catch{}process.exit(0)}(),(j.includes("--help")||j.includes("-h"))&&_(),j.includes("--mcp")&&(await import("./mcp.js"),process.exit(0)),!j.some(e=>e.startsWith("-"))&&process.stdin.isTTY&&_(),async function(){let t="claude";try{let s,r="";for await(const e of process.stdin)r+=e;r=r.replace(/^/,"").trim(),r||await P();try{s=JSON.parse(r)}catch{return void L("claude",!1,"check: unreadable hook input (not JSON), command blocked")}if("Stop"===s.hook_event_name){try{const o=m(p(),".check","last-fail.json");if(!s.stop_hook_active&&n(o)){const t=JSON.parse(e(o,"utf8")),n=6e5;t&&t.ts&&Date.now()-t.ts<n&&(c(o),process.stdout.write(JSON.stringify({decision:"block",reason:"Check: the last shell command exited "+t.code+" ("+(t.cmd||"").slice(0,120)+(t.stderr?" - "+t.stderr.slice(0,160):"")+"). Address the failure or tell the user about it before finishing."})),process.exit(0)),c(o)}}catch{}process.exit(0)}if("PostToolUse"===s.hook_event_name){try{const e=s.tool_response||{},t=(s.tool_input&&s.tool_input.command||"").slice(0,4e3),r=T();if(t&&r){const s="number"==typeof e.exit_code?e.exit_code:"number"==typeof e.exitCode?e.exitCode:null,i=null!==s?0!==s:!0===e.interrupted||!!e.error,a="string"==typeof e.stderr?e.stderr:"",l=(t.trim().split(/\s+/)[0]||"").split(/[\\/]/).pop(),h=new Set(["grep","egrep","fgrep","rg","test","[","[[","diff","cmp"]),d=1===s&&h.has(l),u=i&&!d;try{const e=m(p(),".check","last-fail.json");u?o(e,JSON.stringify({ts:Date.now(),code:s,cmd:t.slice(0,200),stderr:a.slice(0,200)}),"utf8"):!i&&n(e)&&c(e)}catch{}await fetch(v.replace("/preflight","/log"),{method:"POST",headers:{"Content-Type":"application/json","X-GOL-CLIENT-ID":r,"User-Agent":"c/"+w},body:JSON.stringify({verdict:u?"outcome_fail":"outcome_ok",reason:u?"exit "+(null!==s?s:"?")+(a?": "+a.slice(0,200):""):"",binary:(t.trim().split(/\s+/)[0]||"").slice(0,64),cmd:t,channel:"return-path"}),signal:AbortSignal.timeout(3e3)})}}catch{}return void process.exit(0)}t=function(e){return"string"!=typeof e.command||e.tool_input?"BeforeTool"===e.hook_event_name||e.toolCall?.argumentsJson?"gemini":"claude":"cursor"}(s);const i=function(e,o){if("cursor"===o)return e.command;if("gemini"===o){if(e.tool_input?.command)return e.tool_input.command;if(e.toolCall?.argumentsJson)try{const o="string"==typeof e.toolCall.argumentsJson?JSON.parse(e.toolCall.argumentsJson):e.toolCall.argumentsJson;return o.command||o.CommandLine||o.command_line}catch{return null}return null}return e.tool_input?.command}(s,t);if(!i)return void L(t,!0);const a=T();if(!a)return void L(t,!1,"check: GOL_CLIENT_ID not set. Get your key at https://golproductions.com/check");const l=async e=>{try{const o=await function(e,o){return new Promise((t,n)=>{const s=d(I,"127.0.0.1"),r=setTimeout(()=>{s.destroy(),n(new Error("daemon timeout"))},3e3);let c="";s.on("error",e=>{clearTimeout(r),n(e)}),s.on("connect",()=>{s.write(JSON.stringify({v:w,key:e,body:o})+"\n")}),s.on("data",e=>{c+=e;const o=c.indexOf("\n");if(-1!==o){clearTimeout(r),s.destroy();try{const e=JSON.parse(c.slice(0,o));if(1!==e.gol)return n(new Error("not our daemon"));if(e.stale)return U(),n(new Error("stale daemon replaced"));if(e.err)return n(new Error("daemon upstream error"));t({status:e.status,text:e.text})}catch(e){n(e)}}}),s.on("close",()=>{clearTimeout(r),n(new Error("daemon closed"))})})}(a,e);return{res:{ok:o.status>=200&&o.status<300,status:o.status},d:JSON.parse(o.text)}}catch{U()}const o=new AbortController,t=setTimeout(()=>o.abort(),5e3),n=await fetch(v,{method:"POST",headers:{"Content-Type":"application/json","X-GOL-CLIENT-ID":a,"User-Agent":"c/"+w},body:JSON.stringify(e),signal:o.signal});return clearTimeout(t),{res:n,d:await n.json()}},h={command:i,cwd:s.cwd||process.cwd(),platform:t,channel:"npm",tool_name:s.tool_name,v:w,probe_ok:1,path_ok:1,git_ok:1},u="Bash"===s.tool_name?async function(e){try{const o=await E(["-n"],{input:e});if(null===o)return null;if(0===o.status){const e=(o.stderr||"").split("\n").find(e=>/here-document.*end-of-file/i.test(e));return!!e&&e.replace(/^[^:]*bash[^:]*:\s*/i,"").trim()}return((o.stderr||"").split("\n").find(e=>e.trim())||"syntax error").replace(/^[^:]*bash[^:]*:\s*/i,"").trim()}catch{return null}}(i):Promise.resolve(null),f=l(h).catch(e=>{throw e});f.catch(()=>{});const g=await u;if("string"==typeof g)return void L(t,!1,`check: syntax error. ${g}`);let{res:k,d:y}=await f;if(k.ok&&"probe"===y.verdict&&Array.isArray(y.probe)){const e=y.probe.slice(0,8).filter(e=>"string"==typeof e&&e&&e.length<=500),o=await Promise.all(e.map(e=>{if(e.startsWith("path:")){const o=e.slice(5),t=/^([A-Za-z]:[\\/]|\/)/.test(o)?o:m(s.cwd||process.cwd(),o);try{return Promise.resolve({exists:n(t),why:""})}catch{return Promise.resolve(null)}}return e.startsWith("gitcmd:")?async function(e,o){try{const t=await E(["-c","command -v git >/dev/null 2>&1 || exit 3; git --list-cmds=builtins,others 2>/dev/null || exit 4; git config --get-regexp '^alias\\.' 2>/dev/null"],{cwd:o});if(null===t||3===t.status||4===t.status)return null;const n=new Set;for(const e of(t.stdout||"").split(/\r?\n/)){const o=e.trim();if(o)if(o.startsWith("alias.")){const e=o.slice(6).split(/\s/)[0];e&&n.add(e)}else n.add(o.split(/\s/)[0])}return 0===n.size?null:n.has(e)?{exists:!0}:{exists:!1,why:"'"+e+"' is not a git command"}}catch{return null}}(e.slice(7),s.cwd||process.cwd()):e.startsWith("gitref:")?async function(e,o){try{const t=await E(["-c",'command -v git >/dev/null 2>&1 || exit 3; git rev-parse --verify --quiet "$1" >/dev/null 2>&1 && exit 0; git ls-files --error-unmatch -- "$1" >/dev/null 2>&1 && exit 0; exit 1',"check",e],{cwd:o});return null===t||3===t.status?null:0===t.status?{exists:!0}:1===t.status?{exists:!1,why:"'"+e+"' is not a ref or tracked path in this repo"}:null}catch{return null}}(e.slice(7),s.cwd||process.cwd()):async function(e,o){try{const t=await E(["-c",'type -- "$1"',"check",e],{cwd:o});if(null===t)return null;if(0===t.status)return{exists:!0};const n=(t.stderr||"").split("\n").find(o=>o.includes(e))||"";return{exists:!1,why:n.slice(n.indexOf(e)).trim()||e+": not found"}}catch{return null}}(e,s.cwd||process.cwd())})),t={},r={};e.forEach((e,n)=>{const s=o[n];null!==s&&(t[e]=s.exists,!s.exists&&s.why&&(r[e]=s.why))}),({res:k,d:y}=await l({...h,probe:t,probe_why:r}))}if(!k.ok){if(429===k.status||/rate limit/i.test(y.reason||y.error||""))return void D(t,"check: rate limited (60 checks/min), command ran unverified. Check resumes automatically.");if(k.status>=500)return void D(t,"check: validation service error (HTTP "+k.status+"), command ran unverified. Check resumes automatically.");if(402===k.status){return void D(t,`check: you've used all ${y.daily_free||120} free checks for today and your balance is empty. Check is off until tomorrow, commands run unverified. Credits you buy never expire. ${y.upgrade||"Top up at https://www.golproductions.com/console.html"}`)}return void L(t,!1,y.reason||y.error||"check: request not authorized, command blocked")}"runnable"===y.verdict?L(t,!0):L(t,!1,y.reason||"denied. Address the issue before continuing.")}catch{D(t,"check: validation service unreachable, command ran unverified. Check resumes automatically.")}}();
2
+ const a0ar=a0B;(function(q,z){const aq=a0B,A=q();while(!![]){try{const B=-parseInt(aq(0x340,'ympA'))/0x1*(-parseInt(aq(0x276,'28UE'))/0x2)+-parseInt(aq(0x2cd,'ZE@Y'))/0x3+-parseInt(aq(0x21b,'vkq4'))/0x4*(parseInt(aq(0x232,'lBD1'))/0x5)+parseInt(aq(0x34a,'DlTL'))/0x6+parseInt(aq(0x1b1,'w7S2'))/0x7*(parseInt(aq(0x1ec,'yoWt'))/0x8)+parseInt(aq(0x23f,'A1l7'))/0x9*(-parseInt(aq(0x478,'0([$'))/0xa)+-parseInt(aq(0x2e1,'@GnU'))/0xb*(-parseInt(aq(0x447,'5aFf'))/0xc);if(B===z)break;else A['push'](A['shift']());}catch(D){A['push'](A['shift']());}}}(a0A,0xc1f60));import{readFileSync as a0J,writeFileSync as a0K,mkdirSync as a0L,existsSync as a0M,createWriteStream as a0N,chmodSync as a0O,unlinkSync as a0Q,rmSync as a0R}from'node:fs';import{spawnSync as a0V,spawn as a0W}from'node:child_process';import{join as a0X}from'node:path';import{homedir as a0Y,platform as a0Z,arch as a0a0}from'node:os';function a0B(a,b){a=a-0x146;const c=a0A();let d=c[a];if(a0B['NxwnDL']===undefined){var e=function(j){const l='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let m='',n='',o=m+e,p=(''+function(){return 0x0;})['indexOf']('\x0a')!==-0x1;for(let q=0x0,r,s,t=0x0;s=j['charAt'](t++);~s&&(r=q%0x4?r*0x40+s:s,q++%0x4)?m+=p||o['charCodeAt'](t+0xa)-0xa!==0x0?String['fromCharCode'](0xff&r>>(-0x2*q&0x6)):q:0x0){s=l['indexOf'](s);}for(let u=0x0,v=m['length'];u<v;u++){n+='%'+('00'+m['charCodeAt'](u)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(n);};const i=function(k,l){let m=[],n=0x0,o,p='';k=e(k);let q;for(q=0x0;q<0x100;q++){m[q]=q;}for(q=0x0;q<0x100;q++){n=(n+m[q]+l['charCodeAt'](q%l['length']))%0x100,o=m[q],m[q]=m[n],m[n]=o;}q=0x0,n=0x0;for(let r=0x0;r<k['length'];r++){q=(q+0x1)%0x100,n=(n+m[q])%0x100,o=m[q],m[q]=m[n],m[n]=o,p+=String['fromCharCode'](k['charCodeAt'](r)^m[(m[q]+m[n])%0x100]);}return p;};a0B['DGFnVP']=i,a0B['HXAwIK']={},a0B['NxwnDL']=!![];}const f=c[0x0],g=a+f,h=a0B['HXAwIK'][g];if(!h){if(a0B['pyHeaB']===undefined){const j=function(k){this['aHLspQ']=k,this['xilgPX']=[0x1,0x0,0x0],this['PfDnam']=function(){return'newState';},this['NTpzKg']='\x5cw+\x20*\x5c(\x5c)\x20*{\x5cw+\x20*',this['YtZtCn']='[\x27|\x22].+[\x27|\x22];?\x20*}';};j['prototype']['eJLETm']=function(){const k=new RegExp(this['NTpzKg']+this['YtZtCn']),l=k['test'](this['PfDnam']['toString']())?--this['xilgPX'][0x1]:--this['xilgPX'][0x0];return this['QRiclN'](l);},j['prototype']['QRiclN']=function(k){if(!Boolean(~k))return k;return this['KnSuJV'](this['aHLspQ']);},j['prototype']['KnSuJV']=function(k){for(let l=0x0,m=this['xilgPX']['length'];l<m;l++){this['xilgPX']['push'](Math['round'](Math['random']())),m=this['xilgPX']['length'];}return k(this['xilgPX'][0x0]);},(''+function(){return 0x0;})['indexOf']('\x0a')===-0x1&&new j(a0B)['eJLETm'](),a0B['pyHeaB']=!![];}d=a0B['DGFnVP'](d,b),a0B['HXAwIK'][g]=d;}else d=h;return d;}function a0A(){const b0=['WPNcN8o0W6ddQ8opWP3dU3pdMa','WOFcImoGW5RdOa','a0K+WQpcQxqfW67dNv3dLNpcVW','WO3cJbiW','WP7cJGu','WPewxq','WO3dUNZdLWyKW5RcT1u','mCoyamkOWRldIa','WRVdR8k0WQitWRyZ','WRlcL8kLdq9GiCk3vSk3WPRcMZeuxbpdGW','W7FdMCkh','W4jcWO01WR8ZW6PwWPVdV0FcVSoDFKddQw4qW7LttCkq','DmkSWP3cSmkSWQ0g','WOFdNSofWQFcT8oRemo7','W45aWOxcM8kHWRxdMKiwFmk7','WPaGp8o9W4bDmYi6','W5a3vwaTWQZdSrRdGCoa','W7KwW6BdRmkF','W4RdIaaVugZcQW','WRGYnt13vSkQW4zruCkv','W7dcVCklm3apWPWKW7RdU8o7W6q','WR5BWPNcGmkzW7RdNeaWE8k/q8kuWRT6D8oiW6TUW68rWRNdKcmgthuXoCoYW7ddNdHZWRnXwq','WQqhW4mBWQuT','uapcPSkUWQNdKCkdmmoQhhddNexcTa','o8k6amok','aGamECk9Dq','lCoalHG','xdHCW4NdPCoG','WOLJW4ZdVW','W5FdNSkwWQa9','dqldKa','WR5hsCkaW77cIhRdHvBcTSktWOu','tYfoW5q','WQKUz8of','WRHasmkBW48','WRWlW4azWQi','WQC0hrxdVa','W5FdUgVdHKqrW4RcUvFcNZG','W6ddKSksfWLYjmoHua','m8kgBGa','jwqZW4rdzh4','FcfpW4/dRSo3','fWZdM8o8wW','WQyTgHJdUmkCrgu','W7PkWPJcHSkqWR7cLuW6l8kQr8kDW75Tm8knW4rQWQOgWRRcKtLjtZONoSo4WRBdHYPOW6f9sComAG','da7dH8ogwSk6oZqVW7K','Ff8hgmkqC8kUBNxdTG','hutdQSkVWQLSW7O1W7/dVSoczmklWQTqW4K','W45Gha','WPFcI8oG','W5pcKq41lmk7W7KhAq','WP97W4pcOMifyXXb','W7hdMmkFbbjM','W4KkW6ldU8kbFq','WRWWz8oJW4atF8kCWOS','W47cTCo1iCo1j8kwWQ3dRmkb','W6tcV8o8jCo0','W7pdMeZdSW','W4BdUwK','imkgnvS6WRbe','oCkXhCoCjvhcUq','W7LWjW','WRW7ymoRW4yA','ECkipG','WPdcMHehkSk2W7yszCoCWRldV8o1m8kj','W4tcV8oZWPmDWQC6iCoeC8k5W6JdQupdUfqEadeQWOKHtmoF','WRW7FCo8W5yEBa','WRTFa8kYsSkMnqyzkJ3dISoOmG','l2CpW7NdRMOg','Amkipei2WQW','iqynqSkNBSk3tCkAW44','W6ibxCo2fW','ng4UW4vdAx8','ASo4C8o0WRO','WRtdPd8A','W7q3ESkUW45rD8kbW45RWOrosfddGCkbW7BdSXnPB8kJWP7dNCkZWPRdIetdN0pcTCoxkSkMf0C4ESkfW7VdOmosWQBcTcqPmCocW5JcRurvW4FcPCo/zb/dT1pcRSoGntreW4FdGSoJW7SyoCodW5nVWOZcO8oxW4ddOSogCmoRWORdPdtcTSkbW7tdHhBcO8kIWPpcMCorlSold8kpW5aLWRdcTXuTsmoGWQ9xaslcPa0jWRHHnshdPgSwaqtdUSkWW5ngehtcGHRcU0nAjNFdNmkMWQxdTXCjv1OsDHmEgCkuW73dICoktI5kgxldNwhdUaBcKCkEW5tdHrhdH8kLWPVcHfZcRu10F0K9fmoHovNcHNC+x8oRrCk/cmkrtCkbWOBcPLhcRmkBW7BcOCk/W47dJti7WQNdUqz3WRddQmo1w8khWQJcT8k2v1bSwrpdVdqqBZtcQSkPWPRcVaeChNnWFuetW4hcM8oAWQZdTJBdGvzFCdqfgxSCFmoZW6iDWOZdPdHRWOngWQS/CCkyW4ddLZeWWRD+ca4vvSk5jxFcRCkyBdHfW7qVfmomW53cGaNdJSo+iSkQWQFcS8o2f8kuoZZdSSkweSk+nSosWR9MW5DdW5LAj1jfWRFcSSkqDbyaWQZcOsblW4hcQLu7WPtcJhWQWP/dOCorxuVdSqhcGx4AW6xdGXauh1n7W4NdKCosW47cPmkcW5pdLSkBW5HDFSk+pLWqC082W5volGhcNCoMWPLAEqFcMCkiWOtcGcC1W6RdKsCFehDrWO4gWRzUfmkse8kfW4/dGLemv8kUrmkvhmkjW7nzWRtcOu4tFConoCoTWPGKr3GxWQ/cGSoOcJ7dGspdTmkYwsZdUKRcTsCKW5lcVuVcU8kvWQDQEhelW5FdGrXPBCoSeCkNtSk1WRpdMSoYWQdcGmkGjaLaacqjdCkhWQpcNCo0WRZdPSkAWRSCevlcG1VdTblcPxaNw8koW50CW4ldHKVcJmkPWOtdQmkGW57dGbRcS3qhDSocBaxcKfhdONZcH8knW70Tpvn4WPNdUmkbWRHrW43cImooW7bMW6pcO8oYW45EbSohCw7dKGJdGuSUcY/cTsvEWQxdP8oBCqldGCoXhmoQWPZdKufNCNufsmkJrv0KqajXWRBdLWhdQKrPnG','ESoKD8oJWQqa','xmkopXyqWRfjCSoHW4RcT8oEWQBdJq3cLrVdRWBdR2tcLG','emodc8oNWOtdK8oMBa','EGBdVc3dRsK6WO/dSNDb','W53cHSoqWRhdNXNdJSohf8ocW55LW4a','pM8CW67dQhCeW6JdMfBdSwldTCo5zM/cIdS','cqldMmo+ta','qGBdOdldIG','WOjoW7DH','WPVcMa0Rla','W7H8mh10s8k2W5W','omkWfSoslG','W4VcJCos','kCkWvCo2WR0FWRZdQJCyaWHMW4S1uG4','WOySjmoG','W6fMmdy','WOC9pW','smkmrmkvWQldKCoTF8oJxwFdPSonlmkaA2pcSCoWW5Sv','WOycW6Gx','areAE8kHCSkOCCkgW4u','WPJcGreXo8k8W7W','WQqnW4O','W4TCWPpcNCoyWPVdKKSTEW','px4CW6RdR2mEW6FdJG','W7hdMmkCdXPVkq','WO94W4FcOG','WOtcNCoGW7BdOmoz','uvdcKW','bCoPma','mK5hrSk6BSk8ASkiW4yRW7VdKvzKnCkgWOnQW7uofCkzW6tcKKRdGWpcHXRdMmkZW6S','p2OJjmklW5OhWQVdQ1BdN8k5W4G','W49epWBdUL0qWOe9d3O','WRC5gbRdQSkHxg8Uc18','W49uW71Tq8oRkSo9DCk+WPTnWOGQf8o+W4xdJHBdP+kaQYC','cGpdMmoIuq','jwm7W4PjjhddU8o1WO8','tuxcIamhW6tcK8kZWRO','W6eSACo8W5ecsCkgWPOH','W7/cPmoHj8oPjCkRWQtdUG','WPtdNH8M','BCo1DCo+WQiAWQdcPa','WRNcVCkjngeC','nCoAmHVdUW','gmkWfmoCp3/cRmo7','m8kgBGddKSoSW6C','s0/cHbO2W7BcLSkP','j8oZFSoYWRiy','zJn1E8op','CLmAjSkuB8k8','W7L6lJrQua','y2NcReS','W6WDqmoUcW','xdXyW5/dQSk/W6hdO8kCjJdcJCkwaSkxW7ldNWdcTCoiECoKxbxcImoUW5JcO8kEzmo7W7JdRCkFW4bsic7dLmk7WP/dKSklW4ldQCoAmSoqbwLNgXSHvhBdJSkYkmoKWRFcSCozFCo0W4ZcGCoEW4OEW4RdGLTgWRK+xrrajYFdMSklWPu9F8keeXC','baaolG','yCo/ECo8WQi','WO8Xi8oZW5Ps','WR3dSmk+WRu','W7zQf8oiW43dGCkgESoov8kX','W5RdNCky','f+kdO13cHHbKEwTHWQjutdvJW6FdL0PTWP9FWQvMlsGcmCkTWQBcGmkYW5P6W7VdJSohbSkAf8olhhPNyv1lFhjEg8kPW7tcSCkkWPyZjr0cwWVcHCkzWO3dJLpcSColBSoFl8kzfWDRWRLlW4WrW4iHWRlcU8ogW57cTJGIB8oNW6ldP3SEW559W5HAW7byCSouWP/cU30PW4/cNmoQWR0jwcRdTmoyW75JWOXzWQxcKLLGfCoPqSkzWP9zWQrvW4HJW4hdP8kDCCoPWRmpiIpcKW5AFmkBWQ3dJCoqq8otFHxcS8kHW6WrWQSgW4xcVZRcOmkJW7NdJ8oJlqutWOrFaSotiComDcXnWPWdkeSGrgxcVcr/fG8hB8kLprLMW7fOav/dMeqfWPBcLhfzWPzGBIJcN8kqySkDfgBcJwFdImkkjSkfW4/cH8kpW5zEnu5/WPJdRfq5WP0VvJbxWPiod8kbWQBdSmoXoSkNnmoNW5DnW4RcRcynjhv4vrddKt/dK8k9F8ofCKecWP9SW5KuAhaTEmoZW57cRHKYW4G5uYZdR8kycK8NW7GAW53dKmkgoSkTfs1DnsZcKsNdKxVcGmk3amowlCoatmkrWOVdNHJcP1/dMmkEDrtdSCkWWR09WP7cTmkbwCo5s2H3FCo1WQLEW67cQr/dJ2vXamkHCwRdQ2NcICoDW7ddSedcTYxdJSkLWRZdIqzgoY/cKmkZxaRdNCkaWRFdRmkhW605WQ9+p3JcNbD5qNpcTmoed3BcVg3cT33cNuHJWQddT3aSlrfVdH0LWRTovSo2W7b5oSkYWPrTf17cPCoZW6ldTIHMWPZdPrtcICkGW5f+W6JcH8kuW6GktLyov8kwAxCCWRNdOCkBwSkHWR/dNSkCimk3W5LKW6pcHvn5qCkdW5pdRYiFB8kWW6bAFdFdIwnXrmoDW6OwbContvdcNt86W5pcMqC/iNBdVSocB0pcLgDQW6WdymkLWPTuvCofi306WR1fWO7dGmkoWRGLDmo/BgZdO8kIcSkroWhcNaJcO8k2a0tcUbrjAbpcVL59WPJdICoDw2P6vmkiWQVdNdFcImktW5vRgZBdGSoIW4hcUmkkWPZdTIf6W5RdKmkvlg04W5O3W6VcGJPJv8o6W7pdHvRdJmkhxCktWQ5FrMtcVSkeWOy8mIBcHCkemmo1mwRdH8oZFCo0lcVdS8kXlrJdPmkc','WP8lx1e0','WPZcIre0imk6W7KazCouW7lcUSoSl8kinG','w8o3WPldSSoo','W69ziXddIW','WQnBq8kzW7lcLxRdLuZcSCkDWOpcQSoSWQzrxYC','zCo1EmoWWQuB','bCotWQZdIvddQSowCsGf','iSk6gmokmNa','WR/dVSkGymkW','WPddGGeRsN3cUG','W4RdISoVgG','W59iW7L6xCkI','W5RdJCoNhmoJmGqYw8obWQSjn8k7CSoiy8o5zgNdQffcaCkhWP3cNCk1W6erdSkiwSkZW4pcTCk6W4eGDa7dMenkw3nwbN/cIcFdK8kXDKSt','WRBdTrzmeG','bCoiWQddNG','aKBcHCk0WQJdNG','uCkEeCkZg2i','pwudW6y','fvVcJCkZ','W7ZdMmkvbW','WPxdMmoeWQ8','WQVcPSkmlq','W4JcKCobWQddQqxdJmozwmobW4nJW4bm','dgSDW6VdVvqyW7BdKKRdPM/dS8o8Eq','yUkcUetcG8kOW5/dT2tdR110WQFdUI3cIMycWPxdVSovvKRdHgBcMCk6WR3cR3mSW6pcVmkeWQJdISkTESoaWRbko3DSW7NcGeZdG8k0FCoemLnVWR/dRY7dOYvDqKfjW5RcMNJdLZJdQSoLFmkvWR56BmkSqSoDWRzKWOZdHZBcJdpdVSkXs8ksa8k9fKxdKupcPCooeCkoWRjvWPxdUmkiW4BdGmoBWPvXW4JcVam1mmoEq8oyWRy4W5dcR8ktWRi2Eur5C3BcNYVdLLFcPheUW4zNW77cTCoPy8oPWQHPW449gmoEu3NcTmoKWRuIWPPMW5lcISkvWPCGCmkwiSoNWQNdKCkZlriZk8opWRPKWOzoWR8qWQtdG8okWObtW7VcNCk9sSkhW6KafCkjhqLvC8o6uJldPSoYWRpcJmk2tfJcJgpcG8kPWOLbWOilWRpdJSonW7xcJH0MW75kWRxdHSkRzNVcMalcVmkreSkkdK/dKSk6E8owjCkqWO9MEYddJJNdMmk3ymk2x8k5W7RcRmkLW4BcQh56fI8asCkyW6ShWPDKceLluYHeWOyxsKldQs5yWR1/W6npWR5hbHRcUZWfzSoqW6ldQmkSE8kfbhb1W77cPqJcMSkJsIPjax1akSknWOJdTrtcVNfghx0EWRTWW6HNWPW/kmone27cICk8A00ZWRxdM3fxW5hdH8oYE8kbDSk1WQpcVMy6WRCnW4mgcYnbBmk4qJW1kSoZW4CxW5Lmmc0UCmkTWRFdTCogq8kgW4FdKKRcUmo1WP3dPCoVW7FdOJNdKb0aW6rpl1xdOmoIW50DaaHabW91wb3cISkwwtDAW4ahlmo9W4v2AI3cSmoqiCk/WQFdJ8o1ucXmpmour3jSWR7dJCkdxCkCW5VcHeuXW4RcS8oMFHrZW7iHW5pcOIqbx1tcS2hcUSk3W5X/Cr/dTSo2W75+v15uWO1Sh8oQDSogFJarW5FdRX4MhSoLWRKOyf3cVrWRW4mTfKqahLj+caxdI3VdVmkvnmkhpIObcuPrWRz1WQHSWRtdKCoevstdV3OjBSk6C8kwW55JqIlcVu3dRJNcMu/cG1xcTCkyW4vFwdZcNZL2u8kMWPuKWQ8xaSkpyLmnsa90n8ohWRbfWPhcRSkGWOtdJdXkFCkvWONdOmo3W6a7WQ3cQx9CDdaOt8kpn8oBomkzeINdU3dcQauWW5tdVCoHkfVcMSkCaIDrW5OdwCokWRddI0uRWRRcTxWLW6BdH1BcIY3cLCo9WPhdH8oYeb3cVvpdVCotW4VcRCkGW6LNA8oAW7ZcR8oCo1v8W54HW5RdLSk7WRNdGg3dUMJdPSk6W6/dNCk4WOvvW5tcMMFcRwDnp8k6W6OOWPFcOSoLyIzEx2OWW7m5WPG3DYmJWP0iw8oXWPdcPwxcN0ldO2jdjCkrD8kBBmoBCceurmoVkCkTWR7cQ8oIuSknWOBdKmkODCk1ygNcVCoQWO1csCoUwH/cVmoNWRbFW6ldKNhcH8kbvmoHwI1gkSozW53cLCoXfLpcQSoJWQi1WRFdR1fCmCoYWOBcUmktWO/cImoRxmogyb/cRMpdSdi3WOBcP8kDnhCzWR/cIcZcOCoxkeFdSCo4mSkqCCoDpmofWOldShBcOgj7W5RcLSk5dwhdTI9PsmoheCoOyCktW5VdImoap10scSo5WQNdLbH/mqXFWQNdPmkVmwtdLmoAWPtcPehdJCoDlCo9WQBcQbVdPmoAW4TnW7TDFSoFW6FcMSoOW5FdU8kslSkBi8o4W5xdUwX/WOb/jmo1WRKaW5pcGWPQWODKW6XzW4NcUWhdR8oYzwRdV8oGwmomW4vFbqpcQCoCaWudkvZcOtNcHf8eBr3cTmo+cSoUu3xcIMhcKCkUvmoVWOZcLXaEwtvdWQ7cS8oOW6RcUCkEW7JcOmksWOZcT01QumozW7hdR2jBWQtdGmkZm8ogW7SwpCkjfxZcLWFdVapdSHWHW7TlmCkCvCkoamondCknbh1cWPDtm8oDAr3dIeNcKCo8tWe','W61BWPlcISkhWQG','WOyyW6WAWRuuWR3dLSk4uG','WQ5mrCkg','W4vWmYDkv8k2W55LtSkC','WOKlqXaKW6pcSX3dMmojWQlcLMpcTmk1W5iTW4jEusWhBSoLWPJcKCo/CColpSoro3z4WP3dMSo7umo3WQ3cNgj9FwRdJSkzW5RcSX5Wh8ksW4OzW5NcSCotWRZcJxZcUCo9W4uitsP7p8kGW6JcGmkTW6nDy8kSvJVdQZGIASoceSo2WQ9/f0Xvr8opWPXhq8kGW60OmNhcGb8yWPOZWRZcTaf7uXLJDCo0cXJcVwHajCo9WODCh8oVW7rsq8k4yw4IW6L+WPJcSG','jx4SW5PnEa','WRHyrCkrW4q','lSoAmbu','W7jaWPe','WRVdSCkYWRWBWRmL','W7/cUCo0imoMlG','WPmyv1u','WOZdHamLvG','W7xdMSkAWQiL','W6eaxCoQcG','W7bTmJXS','WRK9bWxdUmkztq','CLqskmkEo8o4EwldTfJcUSkIWQD7W68CtSkCW5JdUfRdObZcLCoWWQJdVH59WRpdQmoWWP/cJCoIs8kersGwhf7cTe0M','W7/cPmoYpmoZmCkvWQVdT8kf','W4xdHSkBWQGH','W6ybW4eDWQqHW64','nCkrDWhdTSoHW6y','ECoXySo/','Ftn3Dq','WP/dLmoeWQZcGmoI','WQnBq8kzW5i','W7H8mab7sSkVW5DctG','W51zFei6WQBcTWFdGSobWQ/dJ2tcTmosWPD5','W6tdLSkDcX8','WPxcJSoJW4BdO8oyWOxdQNldOCkdWRdcMq','irSFC8k6uSkZFCkfW4C','m8oumbu','W5tdVNhdG1S7W5VcVG','lSoblXNdPSotWPOmjq','zhdcRuFcMW','WORdHaGRh2VcPSoFemocW7CUWO/dPCkfuLfe','W5ddKSkxdqLKgCo4wSk6','W7z3jtb1','FJb7FG','W4VdUhddJfS','WOBdJGOHv23cNCoEgCokW4qBWOxdR8kfqLzEW6dcIG','iCk2W4ddMmoeWPpcPCknW4pdOCoIWOjZEmkeW5xdMSoCf8kXWRJdRLrYhCkenw3cQqarBLjaW6KXW6iClmkMBaRcPCkc','WPC7iSo4W7fuoYKM','qSkdg8o/','mSk2f8oyl2FcGmo7W7agW6JdQSoQ','WOKlu10','xbtdLmkSW6bmW7mKW7xdUSkmiSkpWQTlW4BcVahcPcjwhvtdUa1rW4n7W6BcSftdLW','u1NdU8o/rCkfhr4','ESktovS','W49qW7L7tmk0','aqyhDmkT','W5NcO8o2pmkQa8kLWQFdRCkz','pgT1q8oPWP1KWQu','mXeoECk6zmkpD8kgW4C','n8kbDau','kw8dW6RdR20','jCkdAq','eWJdLmoGtCk7jcC4','W5hdISoTfmo7','WO7cLGW9','l8kaCX3dPmk4WQZdP11TdmoeW6ZdVxBdQSklW6HqW7X5gbhcSSoSW5hdQCk7W78SE8kGWRrCxSocW6hcK8oPFCofWQnVtmoAwc7cI1FdVSoMsCk9vmkSr8kcW4JcMSoPW7BcJhtdRCoAn8krW5RcLqtcPJCJWPu2W4mRW6HW','ASozyWldTmoX','WP8zW6GlWQylWRNdLSkW','W4iQBCoAW4OECSk6WP0S','BSkMWOhcTmkZW7ujeIJdHW','xXCeD8k9zCk+','wexcNXKfW6pcIq','WRWnW4iqWO4SW6vkWOFdRW','bvFcGSo/','k8oumrNdRa','WOudW6KwWQKaWRZdLCkT','WRuQeWpdTmkBrNq5ifxdMse','g8oeWR3dQehdQ8o3Fs4E','WRFcLmoHW5ddPq','W5v1cmovW60','raJdOJW','EYCjCmkTiCkVASkiW51UW5hdIXP2j8ohWQbMW7nebCoEWQtcTW','W6D6isbXvG','yxOCW6BdP2GEW6BdN0W','WQtdMmoeWQ/cH8o/dSoX','W41oW799','W5j0W4lcOM8A','W4RdGmo2c8oHzKm0g8ozWR0hpq','W7z3jtb1aSo5W7v/CCkMW4FdICketIfsegJcSSkabtVdGNVdH8o8WQddUSk6W5tcPmkIW5JcUu7cJCoNlCkHy8oRWO4Pp2VcRCoAW6xdIuldJmo6pmoCsZVdICk0uCoNW7xdSur9WP/cM3Cgyv1LWPFdOIJdIeL0','WQ3dSmk+WR0tWRWY','WRZcO8kb','W6SudmosWOZdHt8','W65aWOhcISkhWQNdNuSVyW','WRWhW54i','WP4wv10+WQ3dSW','os/cRe3cNXlcSmkG','ECoLzCo/WRu','vmkagq','WRBdU8k0W70DWQiZk8oepW','WRO3afBdV8krxw4U','WQ3dT8k2WRmzW6H2m8kfCCk/W7JcQexdTfOtsgioWQSEh8kCsWldLCkoWR0+WPVdV8oBW43dOqxcTCojzgZcG8kBj3JdK2ehW6RdSmoqza4TWPygWQTZWPJcOHfkW7lcMmoQW5ddVaNcNhRdOuOEfgmcWQOOaZ1fW6RcJahdUmolWO1hpx3cIra','sqBcRCoYW7q/WQS3W6ZdSSozpSkS','A8o1Cmo4WQmwWPZcOIyBcYXNWPr2b1RcMfJcPG','W6a9EmoIW4qsEW','bapdGq','W74Oi8oZW5xcG8kQwSosyCkAWQVcUmkaWQa','w8oKWO/dO8oo','mCoqmXFdVmoC','FI51CSoz','iMmaW7BdUq','WO0ytLG','vSobWR/dNKhcUCoICdKoW5SKW4OmW6HmEM3dI8oiWPrZW5pdNXJcIxlcMGLAtbaJW5jiAuv8W7avkLNcQXxcMSkgkSo5oSk6W6CZs8kLmmomrmkYbSokW6FdQmkSWQhdJKxcHwu0E3fxiL7dUSknamk54Og3tCohW4LvW741W65QtSkbBW1yzmkXWPhdPM/cM8kGWPHPWRxdQmorWRzxWPBdKG3dSv7cVsZdRGNcIwFdQmkyBCkBWPWVWRlcTCoTW5lcUe9TWOmymc/dJG','W4VdGmoJgW','W6PDWP/cGG','W5CDW7pdNmkrFadcTwNcJq','m384WPe','WPaGkCoXW5Xi','W4WKp8oXW4HwmYmRW74','W7KAqCoP','WRCQerldSmkkwY09c1tdMcRcOtK','ESo/E8oY','WP4yW7quWRq','jMubW6JdSG','xSkzhSkRc3r1nq','W7ZcPCoGjG','WPTBx8kgW7xcINddMNdcPmkr','og8CW7ddQgSz','W54FW6RdO8knurdcON7cMW','WQubW50VWRq3W71FWOddQa','W6RcJmotWQVdMHJdImoqgCooW4XJW4joWPhcJCox','W4LeW7f6','vdPsW4VdRW','WP9GW44','ECksc8kIddb2j2VcSvfdixtdQW','WO7dG8oNWQRdGXVdJCkuv8ohW5KQW49iWOhdNSkbhSkbxCocW6HypmoIz1BdOxBcK0lcHMNdQwVcIGjIW4eBo8oOemkPWOvbWRybW6ldKbL+vIddJxFcPb84tSkHuNZcSCodWP8LW4JcMZbuWQThW4NdG8opnGBcMXhdUhWb','WQVcU8kkleCpWP48','omoBkW','bCocWRNdJ03dT8oMA3ihW4m4WOq','W51hWPpcJmkE','jCkryqldPCoNW5dcOeH0aSkSW7hcRsdcRmojWRDEWQu','FeZcIGmrW7ldMSkgWRddRwi','W5XDW7XlrSk1','WO7cJrmXj8k+W7esDq','freeC8k8zmkDCCkfW44','W59cWPFcLCkAWRtcLx8','WRZdMSkseLvRpSo4wW','WOddNSohWQ4','W7SRsCo8W5CqzW','WRbEWQpdJmkCAXxcUZVcIa','ymkapvm','W7lcL8kklwKpWPW0','WOS7iSo/W50','ffVdTCkOWRm','W4vYaa','WP/dNSon','z2xcS0pcHK/cQCk6lfVdOIDRWQBcRSk2WR3dTq','W4Odu8o0hCo7jhi+bdK','WRe0hra','WRG3eW','WRZcKSoFWOORW6RcPmokCc9SgCk5W5BcIrVcHCkeWOtcJSoFW4KLrSk/WRhcTmk2qSoatxSsWPfgWQr2','sr7dQW','WQ3dVW1tcmkdb8oyhSkmWOBdHCoq','W4FcHmokWQRdHbi','WP7cLGW1kmk3W7W','WQ0mW44tWRuSW6vD','WOyLrmkCW6VdI8keECoTqCkWW5/cTCk3W4TVW4mJWPJdSHv7','WPb4W40','pSoznbxdPSoaWQWdoa','hWdcPrmqW7pdMSkOWRddU2iPWONcQ8kGiglcVJRcPraesKJcU8ogi8kEW4pcLcxdUutdHqNcVSoJiSoCxCoFpITYW5eYwxpcQHHzWOBcQ8kVgmopsq','vSkMWP3cQ8kuWRqmdrldMSkA','W6ldMmkbbG','lgukW7O','yYChW63dSNawW63dMW','aHSfCW','hNGlW5FdRMSBW5tdHf0','edDpW5NdPCoSWRxdOG','W7G3yCoG','W7Phjrq','kCojhCk0','mmkCFG','WPq8na','z3xcSKy','WPuwvvSS','W4xdHSknWQGGW7q','nCoAmHVdU8kAWPKzm8kj','nSk2fConogW','W5tdHSoYlmoTELiIr8oa','ySkonW','pMSCW7ddPa','W7BdKSkFcX5LBCo1tmo2WOlcNYCod1VcHSoJC8o1irK/bSonbtJcSSkRdHnrWQegj1tcVmoKWQO','zhtcPuhcMKG','W43dP3i','bSovWQldMue','dfhdQmkUWQL8W6GOW7NdV8oOlSkcWRfmW47cVWm','W4BcJmolWQ7dHq','WO87kG','z8o/FSoIWQe','yCo/ECo8WOidWQRcQsOrdGPqWOrHaLVcHq','WRBdTrzmeSodcSoyx8ki','sd1tWO/cSW','W6ldHCkEab4','i8kRc8oqm3NcTSo4W7e','WQddSmkNW7auWR0Jk8ka','FdTqW5hdOmoRWQxdNCkupda','qu4sh8kABSk0xNtdOa','W7zaWPNcHmkg','hLxdTSkIWQ5SW74','wu/cMq','xmo/WO7dPCoyWPpcPCol','DeqhiSkhzmk8','hsddOwFcGuJcV8k0mvtdKITNWQhcRSoLW5G','WP0sW6i','WPJcMCoQW5tdUSov','BCkajfu7','W61olrBdGvWtWPq','W4tcV8oZWP4DW7ivkCknEmk4W6JdQxJdMruBb2qfWR1gvSkSs1BcGmkNWOaxWQxdN8o/W6xdHIFcHmk6duVdJmkzodNdJ3bjWRJcVmktlruWWPqcWRv2W57cRr1CWQ/dJmkhWRi','W7S5W4BdGCkGxvJcVx8','nmo6W5ZdR8o4W6XrnY/dHCknW4/dMa','W5zWf8ou','iWZdHmo9','WQqPEwCPcCoTW7vgCmkdW6NdHW','nJSKsCkltCksxCkNW79uW7tdVa','W61BWPFcM8kaWQK','WRHatCkgW5tcLG','W7tdNSkDfH5Z','WPWvvL8O','bb/dHCo6tq','W7tdK8kmWQKYW4pdQ8olCc9wf8k1W5/cGq','W7e3zCoJW4qFEG','WOKwvvWaWQRdUqpdMmor','DeOwjW','e0/cHCkYWQpdLq','WOKwtLeZWPZdTbldGCojWR0','qaBdPJC','W4PvhCorc8oXy0mWdxZdM8oJfhjEEcn1a8oGW4pcGuqKp3tdIg/cM8o6FsZdNW3cMhrmWQC','WQanW4ixWQi','r8kycSkIdgn4i2xcRW','r3lcPhRcGfpcTSkgmfa','W6dcV8o0','W7ZcPSoMWR4WWRuCmSka','WOJdHaS','WRFdTbPlfmkjbCoy','WPqFW7tdVa','W4zpW7DG','WOFcJmoOW5RdUG','WPeCvfCRWQS','W4FcJCohWQNdGXpdJmoh','WPhcKSoY','W4VdUhddJhCRW5/cVvxcHXtdQdBcNmo3','WRddQHq','a8otWQVcGW','W4KrW7BdVCkxAW','W5xdISoL','W5hdMmkFfHjVomoYfCo+WRVcTbih','W45Qc8oxW6O','W4btW78','W7XtW6T6Fmk+zCoIwCkJWOO','hbCyrCkTC8kTFCkBW5G','W5xdSM3dG0eTW50','WR89dqu','WR3dUSkNWQqBWRWXnSokD8kLW7pcPW','WPJdLmotWRG','eCocWQddKKRdSa','lSojcSkGWRpdLa','aSocWR7dJW','W70Dr8o1eCkZy1aLbq','faWbySklBSk/Fq','W7r4vfBcPSoEca','W6FdMCkcbW8','W7XhlqFdILC','ASk3AaddUSoJW63cRa','B1lcJIiAW7JcLSkqWQZdRa','W4PQaW','W57dNCkqWQO9','y8kQWOBcSa','WPldJH4QtgVcUG','WQZdSmkZBSkQySoI','W5LiW742','W7T+lty','FMWZW5TdC2W','cX7dMmo7','EMpcSqdcHu/cTCk9','iMuj','iM8aW6tdTwW','W71dWPFcMSkrWR8','W77dNCksWQqSW7ldT8oz','W5HtW7DIA8kWzSoI','W5tdNmoJW5ZdOSonWPNdSwxdNSktWQVcNSk6W4RcTuWaWQGFW5RcSWSexu8oic3dQxxdICkrW4mgmCoNfSoSWPVdGCodW6ddJh3cTCo2AmoxW6FdSxWvsSkWeSo0','W4BdNSkEWQ8','xXCaC8kRAG','jmkBAGddTSoSW6C','WQldSmk0','W7OQgXK','W4ZdKCoKrW','WOdcHSoCWQa','baRdPZZdMI0','beRcICkIWQJdHCkf','eKtdTW','W7RdMmkEcqG','veJcHg3cPgpcISkbdhFdOW','WO0lvvi6','WPisW7uwWQidW7VcK8kvwHBcKb0Vx8oTxSkKmmkffJpdTYPrCConumkOs8o4WPZdNwRcGXLbW7tdKCkXW6yzW6ZdJa','ewiWW41rF2JdRG','lSoqkqtdOCoAWPqzCSknlmkSW5u','WO3dThddG00NW5ZcTq','WPa4jmo3W4S','W6LhWO8','nw4Q','ESoKCSo4WQqh','WPRcK8oGW5BcRG','wqBdOJW','W6OyvG','pbeuoCkqzCkXF3q','WQmXgKxcQW','WOZdUSk1WR8aWRCckSklCq','WOGoa8kIW5pcINJdHetcUSouWQBcJmo1WRDsbrqwWQRdHWPhWPlcI8kWW7BcHCoGz8kiCJBcK8kRW4PY','Eg/cPYK2W5VcS8kaWPhdNvHFW60','WQZdVWLlamkobq','W4VdGmoYe8oPA0e','WRRdTSk+WRuDWQCI','uZftW5VdTCoT','WRO2DM8CWO/dNJBdO8oXWPhdVXO','WR8kW5q','W7tdNSkFbG','WRZdUSkJWRWtWReZ','FfKeomkuzSk9','WOToWRBcTSohoadcQLtcLeO7','i8kRgmonkg0','DwxcP0hcNvNcICk7jLNdIGDWWQRcVSkQWQBdSMhcSq','W51okH3dNfCRWOihea','W5zKemou','WR0wW4Te','tXhdPI0','zmkoovG','W7TxWOBcHSkhWR/dKq','aCovWQtdJ0e','xSoIWOBcUq','WPa7imoX','W4KoW6/dPSka','W7LsWPHfW6jZW71aWR3dSsRcHa','r8oZWO7dPSoFWO4','pSocoq','BZToW4JdLCoQWQ7dVCkOita','gL3dTSk3WQv9','zSkop10GW7bhzmkUWOW','W4FdHmkuefzakSoYw8kI','vdfe','WPSuW6SSWQivWQpdLSkMtq','pSk+fmoC','pguVFSo+WOX5WPVdUq','W6maw8oV','i8kvDrRdVSoS','W4/cK8ouWQNdNXtdImoaumohW4mLW4ryWPRdMq','uCkGWOdcU8kZWQ4rb2FcGCkYW6JdNHy','l8opfmoPWQ3dJ8oTzW','uapcPCkKWRpdMCkhkmkKwttdKKxcPrPeiqRcQGTpW4famSoGct0vW6ysqCk4g8kMCHRdVCoX','WPLBq8osW6lcINVdKWxdV8keWPlcISoZWRDcxNmYWP3cUfy','tSoKWPldRSoz','grShFCk7','WPqxwvWQWQFdSGa','lSodaW','WQeSeK4','iWSygmkGD8kpqG','k8kBya','w8kygG','wr3dRI3dJdu','rGZdOt7dJs4','W6HzjqBdIW','W6e9zmoRW4yf','geZcI8kSWRq','oNGhW64','fNK7W71nzxBdNCoPWOq','WP3dTHHsbCkiqmoOx8kcWPa','W6NcHSojWQZdMb7cICo3DCoH','EwhcReS','BCkGWOlcSW','iCoBaa','W6ydW5Op','r8o5WOC','wCo/zCoJWOuCWQdcPHyeaG','WR8ldX7dH1CrWPLinvVdNXit','W7PgWOtcNa','W6uXzG','Cmk4mCkypvXza0FcL2DPba','FJnTDCooWPHBWONdSxC','WRG9gHhdRCkw','WOpcT0ZdJ0K8W4ZcVbVcKtlcPJlcH8o3ph1UWRWXW7/cHCkoWPHgreXBWPxdJv7dVmogFSouFc/cPxe9mHzcv8kuChiyW6PZubBdM8kCWQq1m8kDWO/cRmorpW','v0/cHb0g','W71WlZHT','W77cKCobWPhdMrJdHCoHsSon','WRHBqCkx','WPuyW7ysWQyjWRhdRmk4vXZcHW','W6NcQmo6oSoelCkMWQC','WO07kCoXWO4','W4NdL8oReCo8BG','e0ZcICkQWQBdNSkv','s0NcHHmAW6lcJG','W4BdH8kmWQK','W6OmW6BdM8kByrRcHwJcMW','W5pcMG48lmkWW60z','W6Ohv8oIeSkWAvSI','WRmcWP7cISkzWQO','W5yrW6q','x8klW63dMeVdTmoSEtijWPaLWOSeWQDlng/dGCoEWPXSWPRdMXldG3lcOa5kxvTHW4fbE15YW7bgy0VdVGtcMmkBp8o0FCo5W4u3qSk/Dq','W7OAvSoU','WQ3dT8k2WRmzW6H2pmklAmoXW6RcRbhdQeyyddekWRuevG','ue3cI8kZW6FdLmkupCk1xYtcMqe','ECktoui2','WOJcLXuXjq','W7O3z8oLW5y','W4vPbCojW73dIW','WOtcNCoWW5S','WOddHColWR/cGCo5','W4pcGmouWPBdKWxdN8ors8oB','W6/cPCoHpCoOma','W77cTCoYpCoOla','W7q3ESoTW4a','WQ8yW4FdNCobW6ldHvOisCkCxG','WPxcLG4ZoG','BmkMWOFcSq','W57cGSoaWOddMbm','mCoyamkUWQG','W6XeirC','mSkhyH/dUCoJW67cRq','l8kBAaBdPa','WPFdHaeR','DCk9WO/cQ8k1WQG','yLmAlG','WR9/W4/cPgC','ygKBW7hdSMSf','W7KDxCoJha','DSk8WP3cTW','W4rDW6S','WPFdNWGRv3O','WPhcLGy','BSoYWONdTCoxWRhcPCoeW5hdTSo7WQK8s8kUW7VcLCoWemkDWRNdQvq','W6VcTCo+j8oPkW','WONcKaW9jSkSW6W','ACktyGddVSoSW6O','i8omi0iYWQPyza','BMSnW7FdQhisWQhcNW','WR4pWRhcISkbW7RdLa4OASkNd8kmWRz7E8kfW4LOW78tWR7dKdOiqw9YpSoOW6ldHsW8W647wSknjSopW5OGhSkxfYSOWRisWOj4W6qWdGJdN8oucmoiE3m','WO8Csv8ZWRxdSG','BCkopvSYWRbj','WRldTr4','jmkCyG7dVmkSW6NcU0j2','W5ddM8ktWRuRW6e','W45zW75HwSk0wCoMACk8WOnPWOHVeCo5W4pdIaVcQq','WRWBW50z','WPVdNSofWQdcP8o6gCo0W7P2bCk8fNbMW6SzFq','gSocWQpdNfddSq','W4BdL8knWQWNW6ddT8ovEJm','hSoiWQldKghdR8oKDIGJW5e6WO8','lIH1F8oq','W7tdL8kzWQ48W7BdKmotEJe','teJcJHOz','zSkop10G','uKpcMYuqW6xcJmkGWQ3dUG','mHWnDCkJ','dLhdQCkSWQX5W74','W5hdL8ksWQGGW7O','jw8xW7a','tftcJXKaW6m','z8kfgmktex98e3RcPG','W787EmoDW4adAmkkWPW6','nmkaDqtdUCoLW6RcRLq','WQVdRH8F','W70kqCo1','rCkHWOVcVmkR','WR9iiXZdIfSyW40DeM3cGfnxfSoFhSkT','C8k9WOJdPW','W55zW7T7wSkIy8o4Aq','W4RcHSoqWQtdNXS','WOXIW5NcRW','i8kRc8oqm3K','WO3dThpdHL0QW4W','W6z6q8kCW6JcI2VdK1FcTSkxWPtcJmoVWRC','W51zBLG6WQ3cTWhdMmolW7tcLN7dUSkcW495WQ96us0AFCoKWPJdHmk4ymomj8kfcXfEWRBdTmohA8kfW4/dS04Zi1VdNCkhW5NdOqzCpSkPW7O8WRZcU8kT','ieZcL8kZWPpdN8kEjCkftZu','pmkWhG','WPFdNX4Ns28','W53dKSko','w0xcHq8','zhtcOfRcMK8','A8kOWPRcVmkOWPOpdq','ESoKzmo+WR8uWQBcRdO','kMSAW6i','aXely8k6CSkYBSkm','WPdcMHellmkRW64rFSoi','WQpdG8opWP/cM8oLemocW6b1','WPqsW70qWRucWOBdM8kXuH7cPWa5t8k4xSkLoSol','WPOsW7uyWRmp','bmk4rJJdK8ohWQ3cPuK','fCkBAe3dLmoTW6FcRq','W7nekW','wK7cNq','FdLQFmoDWOHw','tCoujY7dV8oNW6dcOW1U','omonnaq','WPVcIWq9fSk9W7KDymoc','yv0fomkq','W5ddI8oHe8o9Bee0','W4VcM8onWRe','WPPEW4ddG8k1wZlcLtxcK2nIW6RcTCo6Fmk5cer9o8oeWRb1W5ldL8osWPSiW5ZdKCkPF8kcW709mhxcVK/cHHn9WPxcKCogW5HGs8kF','DCohnfRcR8k0WRFcIxT6hCkNW74','z8kLWOlcSmk3','B1lcHbWqW7tcJSoLWPldILC2WOhcN8kTntdcUN7dIW','W7boWPVcIG','WPSqvKq6WRe','dwypW7BdPwfxW4ldMfZdKa','WRpdUqKjc8kEd8of','WPZcMW4Qpq','DM3cOftcGflcQW','W6Phjr/dH0y','wCoIC8odWR4CWQpcNZas','eXeoECk6zmkiCmkmW4DNW7JdGf9Im8oDWQ1SW68','W6XooaBdH1WyWP5gfMZcILW','pM8CW67dQhCeW6JdMfy','W5HzW6T6','W5NcI8oD','F2/cRKxcNa','nYddOq7dHbZdUG','W6hdR8kHWRuuWR4/iSkmAq','fMqTW512zxxdPmopWPie','B8kfBepcU8kmW4jDfmkTpSkuW5NdHG','fqJdHmoH','mKlcL8kVWRVdOmkEpSk1tGpcLaddUeq','brS7ySk6Amk1FW','WPmpW7il','zgZcQe3cIG','F10AlG','qWFdVYZdJq','aKBcKmkYWRxdNG','W77dMmkw','W75ziutcMG','WR9gwCkgW4NdIhJdL1hcSG','FCkopvm','WRZcKSoFWPmRW73dOColnsrQcSkIWPpcHLddNmoTWOVcICkrWOGHxSkIWQ/cOmkSlSkht3CvW48AW6uyW74bpmkAW7VcPctcK8khWQ90ifpdSmkFWPP0W6e','W4ddOM3dLeC8','WOqQgXZdVmkDxcahkxy','WRxcLGW9k8k4W6Sr','W4ldM8ksWQqHW6BdSa','WQWhW44vWQiSW6ru','u8kEgSkIdwq','W5yBW63dQmkazG','W5GuW7qrWRmoWRVdHSkX','WQldUSk9WRCgWRO','WPTgsCkMW47cINpdO1BcSG','jSoiWR7dJ3ddTSoUDaKEW5u','WO0ysem6','x8kyeSkSdq','W49tW7z6qCk/F8oR','WQSdW4eqWQiAW79vWPBdUH4','ab/dKmoGuSkTiYuUW4blWP4Y','WO7cKbS9','WOH+W4FcOMmesa','W6LDWP/cM8kq','W71aWPVcGSkuWRtdKq','y8o/F8o5','nCofcSo0W7u','EtrJ','EGpdHmkfWR7cKmkeoSk5uJFdNcBdVe0xAKZcOqfFW4fcpCo3dZngWRinbmk+u8kNmZFcTSkjcgaYW6pcIGjKc8kXtCkAzI/dN8kmxJ7cHSkkWRuqW7a','W7SkqSoTgmo9yq','mCkVcCovja','WPxcJSoPWOxcUG','hSoiWQldKfC','WR9Bq8kEW77cJhhdHLdcOW','WQirW4is','W7C2FG','WPGqW4GOWR4QW6DVWOhdVG','sSoKWOFdTW','W4ldU3pdIf8','WPucW6KmWQGv','W7Oax8oK','smo+WOxdOSoaW4VcSmomW5hdTG','WReGhqi','WOFdGWKTtIxcQCoxcmod','sflcGGiq','WOpcUd8','E2/cPG','WPmzW60','WQ4lW4eiWRq3','lSoDnbBdVa','tSoLWOhdOG','WQerW6WoWQmKW7i','cLhdQmkWWQLGW7u','ySkSWO3cS8kHWQKg','Evmyimkg','WPFdMmoy','mSkQemovkxFcSq','WQrcx8oIcq','bmobChe2WQOnDSoHWPtcPSoaWQddG0JcNqRcTMVdJudcHuelW77cHxvokCksxCkIqcNcRSoTaSkjzmkcWPDJWOjfWOyrDSkBcCk6qSoJu8onWRiV','W4uEv0i+WRRdOq','W4fFW6GGqSkIzCoG','WOaJkq','WP4wvfy2WQq','W7noWOlcJmkDWR/dHW','W7PfoG','WQVdQH1gfCki','WPf0W5RdQwycuXS','gvRdRa','iCoabCkYWQpdMq','WPRdN8ozWR/cLCoMemoYW7C','xh8NA8oDCCkQzg3dOe7cQ8o4','WRC3grVdUmkqta','w8ksnur+WP9kCSkVWPy','xG3dIG','ESkoa0iHWRDdCa','W4BdGmkqWQmR','W4vsW7TIxCk1B8o9','iSkmBHK','Amo5WO7dTCooWOJcO8kaW7hdQSo3WOi','q8o5WO/dQSoy','W6f6mYC','mNKRW4W','gf3dGZpdGWSfWQW','vZTsW5FdSG','W4rtW7DLwW','W5tdVCouaColB8kbWO7dISkOqSktWRVcHSo2','W6RcMmkIn1yDWRm','WQtcK8o3W4FdMSosWOtdSLtdMmkv','lMqXW4jr','mCoybCkZWRldJW','WQaHbbpdQSkBxa','W65kWOtcGSkCWQNdHKCSyCkAsSkBWRDTmSkhW4zuW68tWQhcNYm','dfVdRCkMWRj8W7mKW7RdVq','W5HKac3dRx42WQGMkedcRhy','W53cHSofWRFdLr8','tYzsW57dPa','W6ZcQuSxwCoAuSo9wmkkWOFdJSoO','hmouWQldLq','W7hcS8kalw0aWPS','W61opb7dJ1eA','kM4WW45wyG','B2/cUci','W6xcVSoWiSoYjSkNWRe','CCk7WOFcQ8kL','WRboWOhcNa','W4RdUxZdI10QW4ZcQW','WOKCsuq','WPVdNSofWQdcHW','q8kFgmkP','W5tdNmkKWPpdVmoyWOBdSxFdJSkuW7/dLW','m8k3hmoAnItdV8oWW6DpW7pdSCo2qL/dPWjGW6yLW67dNqpcG8oLq8kXW7NdTX9vwSo7DmowW4XlW6VcL2f8WO3dOSkOW6RcQ8oVpNpdLLOKWQBcRwCRhmonWQ/dMIaMWOVcIe1lvCkAW7D/pmkNWRirW6/cTmoYrmkCW6y5W4riWPmWsZNcRq3cUSozWPq','dWldK8oW','W554vdxdSCkBs2TQha','W6hdG8kvdq51','W5irW6ZdPmkh','W4VcKCowWQRdHa','W6eSBmoNW4O','a8k+W4JcR8kaW4/dVmkeWO7cUSkSW4m','W6qmqSoshmoSCLqJeW','W6hdG8kdcXvMjmoXta','WRBdTrzmjmkBbCofrmkOWPtdH8oB','oCoqmWK','aXeBECkKD8k+','amkWcSoncxhcSmoYW50CW74','W7tdNSkDbW','wSkudCkug2jMi3VcSa','wmoeWQxdNKFdSG','WPZcK8oRW5JdVq','WQ3dQHvofq','WOFcK8oPW5y','WR/dQb5sdmkidSoFq8kSWOBdHCoq','WPPLW4xcQLSuxG','zISoW4vdzcdcQmk6W4fbW69Xcg/cN8o6','WRpcU8kc','W749zSoPW5ez','WPuysq','WPm1p8oNW4S','WOywW68x','WPJcK8oJ','W5pcKCocWR/cGmo6d8kTWRW/g8kOlIT1W7qaEreyl0/dQ8ovW5xdNZTtydNdQ8k4W7NcKrRdVdWYWP0h','W5S5W7qrWO4jWQhdLSkMxXhcLHeQsq'];a0A=function(){return b0;};return a0A();}import{pipeline as a0a1}from'node:stream/promises';import{Readable as a0a2}from'node:stream';const k=a0ar(0x407,'nKj*'),g='https://triage.golproductions.com/preflight',y=process.env.GOL_CLIENT_ID||'';function v(){const as=a0ar;if(y)return y;try{const q=a0J(a0X(a0Y(),as(0x469,'Ppr)'),as(0x22f,'qI1P')),as(0x220,'V@Af'))[as(0x39e,'ZE@Y')]();if(q)return q;}catch{}try{const z=JSON[as(0x401,'ThDd')](a0J(a0X(a0Y(),as(0x2b0,'bMjb'),as(0x15e,'aN(G')),as(0x1cf,'aN(G')));return z[as(0x319,'RT^v')]?.[as(0x1b2,'w0kP')]||'';}catch{return'';}}function w(q){const at=a0ar;return q&&(q[at(0x350,'nKj*')]('.check')||q[at(0x2ca,'hfFE')](at(0x2ec,'fo&u')));}function C(q){const au=a0ar;return!!w(q['command'])||!!q['args']?.[au(0x453,'yG$)')](z=>w(z));}function T(){const ax=a0ar,A=(function(){let D=!![];return function(E,F){const G=D?function(){const av=a0B;if(F){const H=F[av(0x308,'l]bd')](E,arguments);return F=null,H;}}:function(){};return D=![],G;};}()),B=A(this,function(){const aw=a0B;return B[aw(0x334,'nIH8')]()[aw(0x348,']]cR')]('(((.+)+)+)+$')[aw(0x2e4,'w0kP')]()['constructor'](B)['search'](aw(0x35f,'ThDd'));});B(),(console[ax(0x17b,'Ppr)')](ax(0x35a,'TdxJ')+k+ax(0x3fe,'#SPw')),process['exit'](0x0));}const P=process['argv'][a0ar(0x39b,'TdxJ')](0x2);function S(J,K,L){const ay=a0ar;if(K){const W={};W[ay(0x3d6,'w0kP')]='allow';const X={};X[ay(0x2f3,'V@Af')]=ay(0x310,'bMjb');const Y={};Y['hookEventName']=ay(0x457,'#p*&'),Y[ay(0x196,'0([$')]=ay(0x2ce,'UPsy');const Z={};Z[ay(0x296,'0%Cj')]=Y;const a0={};a0[ay(0x273,'nKj*')]=W,a0[ay(0x289,'nKj*')]=X,a0[ay(0x392,'qI1P')]=Z;const a1=a0;return process[ay(0x193,'YJ6L')][ay(0x244,'sjt[')](JSON[ay(0x2ba,'#vKP')](a1[J]||a1[ay(0x26f,'$%3Z')])),void(process['exitCode']=0x0);}const M={};M['decision']=ay(0x2b7,'@Ejq'),M['reason']=L;if('gemini'===J)return process[ay(0x209,'#vKP')][ay(0x224,'aN(G')](JSON[ay(0x3e9,'nKj*')](M)),void(process[ay(0x25d,'nKj*')]=0x2);const N={};N[ay(0x298,'N*AW')]=ay(0x363,'@GnU'),N['agent_message']=L;const O={};O[ay(0x299,'aN(G')]='PreToolUse',O[ay(0x170,'YJ6L')]='deny',O[ay(0x345,'28UE')]=L;const Q={};Q[ay(0x403,'fo&u')]=O;const R={};R[ay(0x2ef,'bMjb')]=N,R[ay(0x1f1,'28UE')]=Q;const V=R;process[ay(0x35b,'x&T$')][ay(0x351,'UPsy')](JSON['stringify'](V[J]||V[ay(0x32e,'OkpG')])),process[ay(0x1df,'w0kP')]=0x0;}function b(E,F){const az=a0ar;let G=!0x0;try{const M=a0X(a0Y(),az(0x1f6,'w0kP'),az(0x14c,'TdxJ')+new Date()['toISOString']()[az(0x41e,'fo&u')](0x0,0xa)),N={};N[az(0x3e7,'@Ejq')]=!0x0,(G=a0M(M),G||(a0L(a0X(a0Y(),az(0x3f1,'#vKP')),N),a0K(M,'1')));}catch{G=!0x1;}const H=G?void 0x0:F,I={};I[az(0x3eb,'#vKP')]=az(0x1b6,'^(US');if(az(0x44f,'wrkt')===E)return process[az(0x390,'w0kP')][az(0x26c,'nIH8')](JSON[az(0x361,'x&T$')](I)),H&&process['stderr'][az(0x316,'@Ejq')](H),void(process[az(0x25d,'nKj*')]=0x0);if(az(0x311,'RT^v')===E){const O={};O[az(0x2da,'wrkt')]=az(0x310,'bMjb');const Q=O;return H&&(Q[az(0x396,'fo&u')]=H),process['stdout']['write'](JSON['stringify'](Q)),void(process['exitCode']=0x0);}const J={};J[az(0x362,'DlTL')]=az(0x457,'#p*&'),J[az(0x3c8,'wrkt')]=az(0x1b6,'^(US');const K={};K[az(0x19a,'#vKP')]=J;const L=K;H&&(L['systemMessage']=H),process[az(0x37e,'OkpG')][az(0x301,'28UE')](JSON['stringify'](L)),process['exitCode']=0x0;}P[a0ar(0x150,'#SPw')](a0ar(0x181,'wrkt'))&&await(async function(){const aA=a0ar;let E=process[aA(0x30f,'ThDd')][0x3]||process.env.GOL_CLIENT_ID||'';E&&'your_key'!==E||(console[aA(0x24f,'ThDd')]('\x0a\x20\x20Activating\x20Check\x20(free,\x20no\x20signup)...\x0a'),E=await(async function(){const aB=aA;try{const a0={};a0[aB(0x338,'ThDd')]=aB(0x235,']]cR'),a0[aB(0x332,'nIH8')]='c/'+k;const a1=await(async function(){const aC=aB,{createHash:a4}=await import('node:crypto'),{hostname:a5,userInfo:a6}=await import('node:os');let a7='';try{a7=a6()[aC(0x27c,'ZE@Y')]||'';}catch{}const a8=[a5(),a0Z(),a0a0(),a7][aC(0x222,'nIH8')]('|');return a4('sha256')[aC(0x32b,'DlTL')](a8)[aC(0x2f4,'#SPw')](aC(0x3a7,'$%3Z'));}()),a2=await fetch(g[aB(0x47a,'#p*&')](aB(0x466,'wrkt'),aB(0x38b,'ympA')),{'method':aB(0x3b0,'bMjb'),'headers':a0,'body':JSON[aB(0x2a6,'ZE@Y')]({'fingerprint':a1,'channel':aB(0x194,'bMjb')}),'signal':AbortSignal['timeout'](0x2710)});if(!a2['ok'])return null;const a3=await a2[aB(0x1c8,'R#bQ')]();return a3&&a3[aB(0x17c,'@GnU')]?a3[aB(0x3aa,'Ppr)')]:null;}catch{return null;}}()),E||(console[aA(0x36f,'ympA')](aA(0x15b,']]cR')),console[aA(0x3d8,'V@Af')](aA(0x28e,'28UE')),console[aA(0x1f8,')DJJ')](aA(0x2b2,'^(US')),process[aA(0x314,'TdxJ')](0x1)),console[aA(0x16f,'0%Cj')](aA(0x238,'Ki(n')));const F=await async function(a0){const aD=aA;try{const a1={};a1['Content-Type']='application/json',a1['X-GOL-CLIENT-ID']=a0,a1[aD(0x3d9,'28UE')]='c/'+k;const a2=await fetch(g,{'method':'POST','headers':a1,'body':JSON[aD(0x19e,'l]bd')]({'command':'echo\x20check-install-verify','cwd':process[aD(0x22a,'@GnU')](),'v':k}),'signal':AbortSignal[aD(0x261,'@Ejq')](0x2710)}),a3={};a3[aD(0x434,'x&T$')]=!0x0,a3[aD(0x223,'28UE')]=!0x1;if(a2['ok'])return a3;let a4={};try{a4=await a2[aD(0x34b,'aN(G')]();}catch{}return{'valid':!0x1,'expired':/expir/i['test'](a4[aD(0x406,'l]bd')]||a4['error']||a4[aD(0x428,'TdxJ')]||'')};}catch{const a5={};return a5[aD(0x3a1,'5aFf')]=!0x1,a5[aD(0x3d7,'yG$)')]=!0x1,a5;}}(E);F[aA(0x45d,'@GnU')]||(F[aA(0x1a6,'A1l7')]?(console[aA(0x1e5,'$%3Z')]('\x0a\x20\x20Your\x20Client\x20ID\x20has\x20expired:\x20'+E),console['log'](aA(0x2ee,'N*AW'))):(console[aA(0x3fd,'N*AW')](aA(0x382,'V@Af')+E),console[aA(0x173,'TdxJ')](aA(0x324,'nIH8'))),process[aA(0x3d1,'92D^')](0x1)),console[aA(0x16f,'0%Cj')](aA(0x174,'N*AW'));const G=a0Y();let H=0x0;const I=a0J(new URL(import.meta.url),aA(0x3f8,'w0kP')),J=a0X(G,aA(0x368,'aN(G')),K={};K[aA(0x2bc,'w0kP')]=!0x0,a0L(J,K);const L=a0X(J,aA(0x265,'f0H%'))['replace'](/\\/g,'/');a0K(L,I,aA(0x1fa,'hfFE')),a0K(a0X(J,aA(0x1a8,'RT^v')),E,aA(0x23e,'TdxJ'));const M=aA(0x304,'OkpG')===a0Z()?'.exe':'',N=a0X(J,aA(0x1de,'f0H%')+M)[aA(0x42d,'ZE@Y')](/\\/g,'/');await async function(a0){const aE=aA,a1=aE(0x19c,'qI1P')===a0Z()?aE(0x3b6,'nIH8'):'darwin'===a0Z()?'macos':aE(0x480,'wrkt'),a2=aE(0x454,'ZE@Y')+a1+'-'+(aE(0x2eb,'sjt[')===a0a0()?aE(0x309,'R^A&'):aE(0x450,'@GnU'))+('win'===a1?aE(0x1fb,']]cR'):''),a3=await fetch(a2);if(!a3['ok'])throw new Error(aE(0x156,']]cR')+a3[aE(0x3c3,'#vKP')]);if(await a0a1(a0a2[aE(0x36d,'Ppr)')](a3[aE(0x180,'wrkt')]),a0N(a0)),aE(0x253,'#p*&')!==a1)try{a0O(a0,0x1ed);}catch{}}(N);const O={};O[aA(0x216,'^(US')]=E;const Q={};Q[aA(0x471,'^(US')]=aA(0x3de,'@Ejq'),Q[aA(0x468,'R#bQ')]=['@golproductions/check',aA(0x323,'f0H%')],Q[aA(0x1cc,'R^A&')]=O;const R=Q,V=[{'name':aA(0x161,'@Ejq'),'dir':a0X(G,'.claude'),'file':aA(0x204,'@GnU'),'config':a0=>(a0['hooks']=a0[aA(0x3af,'nKj*')]||{},a0[aA(0x43f,'bMjb')][aA(0x25a,']]cR')]=(a0['hooks'][aA(0x30e,'V@Af')]||[])['filter'](a1=>!a1[aA(0x369,'R^A&')]?.[aA(0x20b,'(NX@')](C)),a0['hooks'][aA(0x183,'wrkt')][aA(0x37a,'yG$)')]({'matcher':aA(0x1b8,'N*AW'),'hooks':[{'type':'command','command':aA(0x412,'x&T$'),'args':[L]}]}),a0[aA(0x14f,'wrkt')]['PostToolUse']=(a0['hooks'][aA(0x250,'#vKP')]||[])['filter'](a1=>!a1[aA(0x3ca,'(NX@')]?.[aA(0x410,'wrkt')](C)),a0[aA(0x259,'w7S2')][aA(0x2b3,'Ki(n')][aA(0x3d5,'RT^v')]({'matcher':aA(0x2e3,'Ki(n'),'hooks':[{'type':aA(0x302,'28UE'),'command':N}]},{'matcher':aA(0x288,'ThDd'),'hooks':[{'type':'command','command':N}]}),a0[aA(0x32a,'sjt[')]=a0[aA(0x32a,'sjt[')]||{},a0['env'][aA(0x254,'#SPw')]=E,a0)},{'name':'Gemini\x20CLI\x20/\x20Antigravity','dir':a0X(G,aA(0x3b2,'nIH8')),'file':aA(0x46a,'hfFE'),'config':a0=>{const aF=aA;a0[aF(0x16d,'0([$')]=a0[aF(0x3ca,'(NX@')]||{},a0[aF(0x3af,'nKj*')][aF(0x29b,'N*AW')]=a0['hooks'][aF(0x21e,'sjt[')]||[];const a1=a0[aF(0x3ce,'l]bd')]['BeforeTool'],a2={};a2[aF(0x295,'V@Af')]=aF(0x39f,'yoWt'),a2[aF(0x1b9,'#p*&')]=aF(0x25e,'92D^')+L,a2[aF(0x2e7,'A1l7')]='check-gate';const a3={};return a3[aF(0x329,'28UE')]='.*',a3[aF(0x277,'yG$)')]=[a2],(a1['find'](a4=>a4[aF(0x1c0,'V@Af')]?.[aF(0x25b,'fo&u')](a5=>aF(0x313,'ThDd')===a5[aF(0x2d0,'28UE')]))||a1[aF(0x1af,'$%3Z')](a3),a0);}},{'name':'Cursor','dir':a0X(G,aA(0x282,'wrkt')),'file':aA(0x458,'UPsy'),'config':a0=>(a0[aA(0x153,'wrkt')]=a0[aA(0x31e,'0([$')]||0x1,a0[aA(0x33e,'R#bQ')]=a0['hooks']||{},a0[aA(0x3ce,'l]bd')]['beforeShellExecution']=(a0['hooks'][aA(0x160,'ZE@Y')]||[])[aA(0x293,'N*AW')](a1=>!w(a1['command'])),a0[aA(0x258,'@Ejq')][aA(0x479,'#vKP')][aA(0x2ae,'Ppr)')]({'command':aA(0x20a,'R^A&')+L}),a0)},{'name':aA(0x1f2,'N*AW'),'dir':a0X(G,aA(0x3ad,'#p*&')),'file':'hooks.json','config':a0=>(a0[aA(0x3ce,'l]bd')]=a0[aA(0x27d,'ZE@Y')]||{},a0[aA(0x1d3,'$%3Z')][aA(0x1a1,'A1l7')]=(a0[aA(0x246,'Ki(n')][aA(0x248,'yoWt')]||[])['filter'](a1=>!a1['hooks']?.[aA(0x2ed,'nIH8')](C)),a0[aA(0x426,'f0H%')][aA(0x263,'vkq4')][aA(0x262,'N*AW')]({'matcher':aA(0x416,'wrkt'),'hooks':[{'type':aA(0x46c,')DJJ'),'command':aA(0x359,'5aFf'),'args':[L]}]}),a0[aA(0x2fb,'#SPw')]['PostToolUse']=(a0[aA(0x14f,'wrkt')][aA(0x3e2,'sjt[')]||[])[aA(0x40f,'#SPw')](a1=>!a1['hooks']?.['some'](C)),a0[aA(0x3f2,'lBD1')][aA(0x41b,'w7S2')][aA(0x3ea,'0qJs')]({'matcher':aA(0x1b8,'N*AW'),'hooks':[{'type':aA(0x3f3,'A1l7'),'command':N}]}),a0[aA(0x381,'x&T$')]=a0['env']||{},a0[aA(0x3b1,'bMjb')]['GOL_CLIENT_ID']=E,a0)},{'name':aA(0x236,'UPsy'),'dir':a0X(G,aA(0x205,'bMjb'),'windsurf'),'file':aA(0x3b7,'yG$)'),'config':a0=>(a0[aA(0x2a5,'#p*&')]=a0[aA(0x432,'w7S2')]||{},a0['mcpServers']['Check']=R,a0)},{'name':aA(0x1d2,'x&T$'),'dir':a0X(process[aA(0x46d,'ympA')](),aA(0x2f6,'RT^v'),aA(0x3a4,'5aFf')),'file':'check.json','config':()=>({'mcpServers':{'Check':R}})},{'name':'Amazon\x20Q\x20Developer\x20(MCP)','dir':a0X(G,aA(0x1c7,'vkq4'),'amazonq'),'file':aA(0x32c,'Ppr)'),'config':a0=>(a0[aA(0x230,'RT^v')]=a0[aA(0x3a5,'A1l7')]||{},a0[aA(0x18f,'hfFE')]['Check']={'type':aA(0x42b,'N*AW'),...R},a0)},{'name':aA(0x3c4,'nIH8'),'dir':a0X(process['cwd'](),aA(0x1f9,'TdxJ')),'file':aA(0x3cd,'w7S2'),'config':a0=>(a0[aA(0x460,'aN(G')]=a0[aA(0x377,'R^A&')]||{},a0[aA(0x155,'V@Af')][aA(0x2a9,'UPsy')]=R,a0)},{'name':'Project\x20MCP\x20(shared)','dir':process[aA(0x22a,'@GnU')](),'file':aA(0x166,'x&T$'),'config':a0=>(a0[aA(0x272,']]cR')]=a0[aA(0x2bd,'yG$)')]||{},a0[aA(0x367,'#SPw')]['Check']=R,a0)}],W=['Windsurf\x20(MCP)','Continue\x20(MCP)','Amazon\x20Q\x20Developer\x20(MCP)',aA(0x239,'fo&u'),aA(0x2cf,'@Ejq')];let X=!0x1;for(const a0 of V){const a1=W['includes'](a0['name']);if(!a1&&!a0M(a0[aA(0x321,'0%Cj')]))continue;const a2={};a2[aA(0x39d,'x&T$')]=!0x0,a1&&a0L(a0[aA(0x321,'0%Cj')],a2);const a3=a0X(a0[aA(0x3d3,'92D^')],a0[aA(0x366,'x&T$')]);let a4={};try{a4=JSON[aA(0x372,'92D^')](a0J(a3,'utf8'));}catch{}const a5=a0[aA(0x3ab,'x&T$')](a4);a0K(a3,JSON[aA(0x3da,'wrkt')](a5,null,0x2)+'\x0a',aA(0x1ea,'R#bQ')),H++,aA(0x2d2,'wrkt')===a0['name']&&(X=!0x0);}if(0x0===H){const a6={};a6[aA(0x2ac,'R#bQ')]=!0x0,a0L(a0X(G,aA(0x459,'w0kP')),a6);const a7=a0X(G,aA(0x389,'0qJs'),aA(0x2d9,'sjt['));let a8={};try{a8=JSON[aA(0x2c9,'A1l7')](a0J(a7,aA(0x148,'yoWt')));}catch{}const a9=V[0x0][aA(0x328,'^(US')](a8);a0K(a7,JSON[aA(0x439,'@GnU')](a9,null,0x2)+'\x0a','utf8'),X=!0x0;}const Y=X?aA(0x2c1,'ZE@Y'):aA(0x1ad,'vkq4'),Z=a0X(process[aA(0x20c,'f0H%')](),Y);try{const aa=a0M(Z)?a0J(Z,aA(0x2ab,'UPsy')):'';if(!aa['includes'](aA(0x15a,'#SPw'))){const ab=aa['length']>0x0?aa[aA(0x3ef,'ZE@Y')]()+'\x0a\x0a':'';a0K(Z,ab+'Never\x20fabricate,\x20hallucinate,\x20or\x20invent\x20values.\x20If\x20you\x20don\x27t\x20have\x20it,\x20say\x20you\x20don\x27t\x20have\x20it.\x20No\x20fake\x20keys,\x20no\x20fake\x20IDs,\x20no\x20fake\x20paths,\x20no\x20fake\x20URLs.\x20If\x20unsure,\x20ask.\x20Never\x20guess\x20and\x20present\x20it\x20as\x20fact.\x0a',aA(0x1ea,'R#bQ'));}}catch{}console[aA(0x287,'yG$)')](aA(0x441,'ThDd')+E),console['log'](aA(0x257,'bMjb')),console[aA(0x198,'92D^')](aA(0x17d,'@Ejq')),console[aA(0x190,'nIH8')](aA(0x375,'0%Cj')),console[aA(0x1c3,'nKj*')](aA(0x306,'Ki(n')),console[aA(0x318,'YJ6L')](aA(0x1f4,'R^A&')),console['log'](aA(0x464,'w0kP')),process[aA(0x2cb,']]cR')](0x0);}()),P['includes'](a0ar(0x38a,'w7S2'))&&await(async function(){const aG=a0ar,z=a0Y();let A=0x0;console[aG(0x2c3,'sjt[')](aG(0x3d4,'OkpG'));let B=Promise[aG(0x383,'UPsy')]();try{const H=v();H&&(B=fetch(g[aG(0x213,'hfFE')](aG(0x2df,')DJJ'),'/log'),{'method':aG(0x34f,'@Ejq'),'headers':{'Content-Type':aG(0x400,'yG$)'),'X-GOL-CLIENT-ID':H,'User-Agent':'c/'+k},'body':JSON['stringify']({'verdict':'uninstall','channel':aG(0x1ce,'DlTL'),'os':a0Z(),'arch':a0a0(),'version':k}),'signal':AbortSignal[aG(0x408,'0qJs')](0xbb8)})[aG(0x1aa,'nIH8')](()=>{}));}catch{}const D=[{'name':aG(0x171,'f0H%'),'path':a0X(z,aG(0x2b0,'bMjb'),aG(0x1d9,')DJJ')),'clean':I=>(I[aG(0x16c,'92D^')]?.[aG(0x2f8,'fo&u')]&&(I['hooks']['PreToolUse']=I[aG(0x197,']]cR')][aG(0x2a4,'#SPw')]['filter'](J=>!J[aG(0x2fb,'#SPw')]?.['some'](C)),0x0===I[aG(0x1e6,'N*AW')]['PreToolUse']['length']&&delete I[aG(0x3f9,'#vKP')]['PreToolUse']),I['hooks']?.['PostToolUse']&&(I['hooks'][aG(0x152,'fo&u')]=I['hooks'][aG(0x2f9,'aN(G')][aG(0x18e,'l]bd')](J=>!J[aG(0x424,'0qJs')]?.[aG(0x3fb,')DJJ')](C)),0x0===I[aG(0x18b,'^(US')][aG(0x3fc,'$%3Z')][aG(0x2f5,'vkq4')]&&delete I[aG(0x339,'ThDd')]['PostToolUse']),I['hooks']&&0x0===Object[aG(0x1d8,'TdxJ')](I[aG(0x27d,'ZE@Y')])['length']&&delete I[aG(0x35c,'vkq4')],I['env']&&(delete I[aG(0x3cf,']]cR')][aG(0x211,'@Ejq')],0x0===Object[aG(0x1da,'0%Cj')](I[aG(0x1cc,'R^A&')])[aG(0x1f0,'wrkt')]&&delete I[aG(0x2c4,'@Ejq')]),I)},{'name':aG(0x24a,']]cR'),'path':a0X(z,aG(0x34c,'ympA'),aG(0x176,'DlTL')),'clean':I=>(I[aG(0x14e,'RT^v')]?.[aG(0x20f,')DJJ')]&&(I[aG(0x27d,'ZE@Y')][aG(0x43c,'x&T$')]=I[aG(0x40c,'DlTL')]['BeforeTool'][aG(0x31a,'V@Af')](J=>!J[aG(0x27d,'ZE@Y')]?.[aG(0x40d,'aN(G')](K=>'check-gate'===K['name'])),0x0===I['hooks'][aG(0x20f,')DJJ')][aG(0x404,'#vKP')]&&delete I[aG(0x431,'fo&u')]['BeforeTool'],0x0===Object[aG(0x187,'OkpG')](I[aG(0x30a,'aN(G')])[aG(0x256,'TdxJ')]&&delete I[aG(0x26e,'#p*&')]),I)},{'name':'Cursor','path':a0X(z,aG(0x3b9,'#p*&'),aG(0x19b,'DlTL')),'clean':I=>(I['hooks']?.[aG(0x2d8,'w0kP')]&&(I[aG(0x23b,'w0kP')][aG(0x21d,'YJ6L')]=I[aG(0x355,'0%Cj')]['beforeShellExecution'][aG(0x1b5,'x&T$')](J=>!w(J[aG(0x1f7,'ZE@Y')])),0x0===I[aG(0x277,'yG$)')][aG(0x440,'0qJs')]['length']&&delete I[aG(0x258,'@Ejq')][aG(0x294,'R#bQ')],0x0===Object['keys'](I[aG(0x14f,'wrkt')])[aG(0x215,'qI1P')]&&delete I['hooks']),I)},{'name':aG(0x2f1,'yG$)'),'path':a0X(z,aG(0x3a9,'yG$)'),'hooks.json'),'clean':I=>(I[aG(0x342,'yoWt')]?.[aG(0x1c2,'YJ6L')]&&(I[aG(0x277,'yG$)')]['PreToolUse']=I[aG(0x33d,'qI1P')][aG(0x1e4,'@Ejq')][aG(0x22c,'0([$')](J=>!J[aG(0x369,'R^A&')]?.[aG(0x226,'92D^')](C)),0x0===I[aG(0x3af,'nKj*')][aG(0x248,'yoWt')][aG(0x370,'#p*&')]&&delete I[aG(0x431,'fo&u')][aG(0x3bd,'w0kP')]),I[aG(0x26e,'#p*&')]?.[aG(0x385,'28UE')]&&(I[aG(0x339,'ThDd')]['PostToolUse']=I[aG(0x426,'f0H%')][aG(0x41b,'w7S2')][aG(0x2d1,'^(US')](J=>!J[aG(0x3ed,'@GnU')]?.['some'](C)),0x0===I['hooks'][aG(0x3c6,'(NX@')]['length']&&delete I[aG(0x277,'yG$)')][aG(0x1d5,'R#bQ')]),I[aG(0x1ff,'x&T$')]&&0x0===Object['keys'](I[aG(0x14f,'wrkt')])[aG(0x297,'aN(G')]&&delete I[aG(0x2dd,'YJ6L')],I['env']&&(delete I[aG(0x30d,'#p*&')][aG(0x347,'sjt[')],0x0===Object[aG(0x187,'OkpG')](I[aG(0x15d,'@GnU')])[aG(0x1ca,'^(US')]&&delete I[aG(0x47b,'5aFf')]),I)}],E=[{'name':aG(0x203,'yoWt'),'path':a0X(z,aG(0x264,'yG$)'),aG(0x438,'bMjb'),'mcp_config.json')},{'name':aG(0x165,'28UE'),'path':a0X(z,aG(0x352,'28UE'),aG(0x3bb,'wrkt'),aG(0x326,'R#bQ'))}],F=[{'name':'Continue','path':a0X(process['cwd'](),'.continue',aG(0x460,'aN(G'),aG(0x292,'ZE@Y')),'deleteFile':!0x0},{'name':aG(0x2c2,'ZE@Y'),'path':a0X(process[aG(0x474,'#SPw')](),'.roo',aG(0x237,'OkpG'))},{'name':aG(0x2f0,'TdxJ'),'path':a0X(process['cwd'](),'.mcp.json')}];for(const I of D)if(a0M(I['path']))try{const J=JSON[aG(0x2fa,'^(US')](a0J(I['path'],aG(0x443,'#SPw'))),K=I['clean'](J);a0K(I[aG(0x373,'RT^v')],JSON[aG(0x163,'yG$)')](K,null,0x2)+'\x0a',aG(0x393,'Ppr)')),console[aG(0x241,'#SPw')]('\x20\x20\x20\x20removed\x20\x20'+I[aG(0x24b,'YJ6L')]),A++;}catch{}for(const L of[...E,...F])if(a0M(L[aG(0x270,'R^A&')]))try{if(L[aG(0x164,'w0kP')])a0Q(L[aG(0x481,'^(US')]),console[aG(0x2ea,'x&T$')]('\x20\x20\x20\x20removed\x20\x20'+L[aG(0x1eb,'w7S2')]),A++;else{const M=JSON['parse'](a0J(L[aG(0x270,'R^A&')],aG(0x45c,'Ki(n')));M[aG(0x360,'f0H%')]?.[aG(0x388,'vkq4')]&&(delete M['mcpServers'][aG(0x29f,'w0kP')],0x0===Object[aG(0x2a2,'wrkt')](M['mcpServers'])[aG(0x2f5,'vkq4')]&&delete M['mcpServers'],a0K(L[aG(0x42e,'#vKP')],JSON[aG(0x361,'x&T$')](M,null,0x2)+'\x0a','utf8'),console[aG(0x1c5,'0qJs')](aG(0x357,'R^A&')+L[aG(0x16a,'nIH8')]),A++);}}catch{}const G=a0X(z,aG(0x3b5,'#p*&'));if(a0M(G))try{const N={};N[aG(0x451,'5aFf')]=!0x0,N[aG(0x275,'#p*&')]=!0x0,(a0R(G,N),console[aG(0x37c,'^(US')](aG(0x17a,'$%3Z')));}catch{}0x0===A?console[aG(0x240,'ZE@Y')](aG(0x446,'0([$')):(console[aG(0x1f8,')DJJ')]('\x0a\x20\x20Removed\x20from\x20'+A+aG(0x29a,'lBD1')+(0x1!==A?'s':'')+'.'),console[aG(0x267,'vkq4')](aG(0x2cc,'vkq4')));try{await B;}catch{}process[aG(0x157,'R#bQ')](0x0);}()),P['includes'](a0ar(0x28c,'nIH8'))&&await(async function(){const aH=a0ar,q=a0Y(),z=a0X(q,aH(0x1fc,'(NX@')),A='win32'===a0Z()?'.exe':'',B=v();if(console['log']('\x0a\x20\x20Check\x20v'+k+'\x0a'),B){const G=B[aH(0x47e,'@GnU')]>0xc?B['slice'](0x0,0x8)+aH(0x333,'Ki(n')+B[aH(0x206,'92D^')](-0x4):B;console[aH(0x23d,'OkpG')](aH(0x251,'sjt[')+G);}else console[aH(0x2c3,'sjt[')]('\x20\x20Client\x20ID:\x20\x20not\x20set');const D=a0X(z,'truth-gate'+A);console[aH(0x1d1,'hfFE')](aH(0x38e,'Ki(n')+(a0M(D)?aH(0x32f,'0%Cj'):aH(0x19f,')DJJ')));const E=a0X(z,'check.mjs');console[aH(0x3d8,'V@Af')]('\x20\x20Script:\x20\x20\x20\x20\x20'+(a0M(E)?aH(0x456,'RT^v'):aH(0x476,'TdxJ'))),console[aH(0x318,'YJ6L')](aH(0x1a7,'YJ6L'));const F=[{'name':aH(0x249,'DlTL'),'path':a0X(q,aH(0x42c,'V@Af'),'settings.json'),'test':H=>H[aH(0x452,'hfFE')]?.[aH(0x183,'wrkt')]?.[aH(0x36b,'R^A&')](I=>I[aH(0x16c,'92D^')]?.[aH(0x14d,'#vKP')](C))||H[aH(0x3c9,'5aFf')]?.[aH(0x22b,'qI1P')]?.[aH(0x41f,'@GnU')](I=>I[aH(0x2fb,'#SPw')]?.[aH(0x27b,'sjt[')](C)),'detail':H=>{const aI=aH,I=[];return H[aI(0x246,'Ki(n')]?.[aI(0x2be,'0%Cj')]?.['some'](J=>J[aI(0x40c,'DlTL')]?.[aI(0x42f,'lBD1')](C))&&I[aI(0x397,'qI1P')](aI(0x2d7,'#vKP')),H['hooks']?.[aI(0x341,'R^A&')]?.[aI(0x280,'A1l7')](J=>J[aI(0x23b,'w0kP')]?.[aI(0x36b,'R^A&')](C))&&I[aI(0x18a,'YJ6L')](aI(0x341,'R^A&')),I[aI(0x303,'#vKP')](',\x20');}},{'name':'Gemini\x20CLI','path':a0X(q,aH(0x28b,'ZE@Y'),aH(0x3c7,']]cR')),'test':H=>H['hooks']?.[aH(0x21e,'sjt[')]?.[aH(0x167,'0%Cj')](I=>I[aH(0x320,'A1l7')]?.['some'](J=>aH(0x315,'0qJs')===J[aH(0x463,'(NX@')])),'detail':()=>aH(0x44d,'w0kP')},{'name':aH(0x3a0,'qI1P'),'path':a0X(q,'.cursor',aH(0x22d,'nIH8')),'test':H=>H[aH(0x35c,'vkq4')]?.[aH(0x2bf,'RT^v')]?.[aH(0x14d,'#vKP')](I=>w(I[aH(0x3db,'x&T$')])),'detail':()=>aH(0x294,'R#bQ')},{'name':aH(0x3ee,'l]bd'),'path':a0X(q,'.homebase',aH(0x18d,'@GnU')),'test':H=>H[aH(0x29d,'nIH8')]?.['PreToolUse']?.[aH(0x182,'w0kP')](I=>I['hooks']?.[aH(0x409,'hfFE')](C))||H[aH(0x18b,'^(US')]?.[aH(0x365,'l]bd')]?.[aH(0x27e,'0qJs')](I=>I['hooks']?.[aH(0x3dc,'Ppr)')](C)),'detail':H=>{const aJ=aH,I=[];return H[aJ(0x3c9,'5aFf')]?.['PreToolUse']?.['some'](J=>J[aJ(0x1a2,'28UE')]?.[aJ(0x312,'f0H%')](C))&&I[aJ(0x3d5,'RT^v')](aJ(0x2a4,'#SPw')),H[aJ(0x259,'w7S2')]?.[aJ(0x17e,'UPsy')]?.['some'](J=>J[aJ(0x14e,'RT^v')]?.[aJ(0x36b,'R^A&')](C))&&I['push'](aJ(0x2e0,'yoWt')),I[aJ(0x233,'f0H%')](',\x20');}},{'name':aH(0x467,'0%Cj'),'path':a0X(q,'.codeium',aH(0x1a5,'ThDd'),'mcp_config.json'),'test':H=>!!H[aH(0x147,'vkq4')]?.[aH(0x461,'R^A&')],'detail':()=>'MCP'},{'name':'Continue','path':a0X(process[aH(0x24d,'OkpG')](),'.continue','mcpServers',aH(0x3e6,'yoWt')),'test':H=>!!H[aH(0x29e,'@Ejq')]?.[aH(0x281,'Ppr)')],'detail':()=>aH(0x379,'wrkt')},{'name':'Amazon\x20Q','path':a0X(q,aH(0x24e,'V@Af'),aH(0x2d5,'YJ6L'),aH(0x2d3,'DlTL')),'test':H=>!!H[aH(0x1d6,'w0kP')]?.['Check'],'detail':()=>'MCP'},{'name':aH(0x3c5,'OkpG'),'path':a0X(process[aH(0x16e,'$%3Z')](),aH(0x3cb,'R#bQ'),aH(0x1ee,'YJ6L')),'test':H=>!!H['mcpServers']?.[aH(0x15f,'28UE')],'detail':()=>aH(0x330,'A1l7')},{'name':'Project\x20MCP','path':a0X(process[aH(0x24d,'OkpG')](),aH(0x37d,'bMjb')),'test':H=>!!H['mcpServers']?.[aH(0x425,'N*AW')],'detail':()=>'MCP\x20(project)'}];for(const H of F)if(a0M(H['path']))try{const I=JSON['parse'](a0J(H[aH(0x21f,'$%3Z')],aH(0x2a7,'DlTL')));H[aH(0x2e2,'5aFf')](I)?console[aH(0x2c3,'sjt[')](aH(0x2de,'YJ6L')+H[aH(0x437,'@GnU')][aH(0x3dd,'R^A&')](0xe)+aH(0x28d,'wrkt')+H[aH(0x2ad,']]cR')](I)+')'):console[aH(0x37c,'^(US')](aH(0x46e,'fo&u')+H['name'][aH(0x279,']]cR')](0xe)+aH(0x38c,'28UE'));}catch{console[aH(0x291,'DlTL')](aH(0x1e0,'TdxJ')+H[aH(0x231,'l]bd')][aH(0x162,'R#bQ')](0xe)+aH(0x2aa,'sjt['));}else console[aH(0x2ea,'x&T$')](aH(0x1e9,'nKj*')+H[aH(0x423,'^(US')]['padEnd'](0xe)+aH(0x26b,'Ki(n'));console[aH(0x420,'28UE')](''),process[aH(0x221,'(NX@')](0x0);}()),P[a0ar(0x353,'bMjb')](a0ar(0x20d,'A1l7'))&&await(async function(){const aK=a0ar,z=v();z||(console[aK(0x240,'ZE@Y')](aK(0x1ac,')DJJ')),process['exit'](0x1));try{const A={};A[aK(0x33f,'nKj*')]=z,A[aK(0x44b,'nKj*')]='c/'+k;const B=await fetch(g['replace'](aK(0x14a,'92D^'),aK(0x184,'qI1P')),{'method':aK(0x3df,'OkpG'),'headers':A,'signal':AbortSignal[aK(0x300,'Ppr)')](0x2710)});B['ok']||(console[aK(0x1d4,'R#bQ')]('\x0a\x20\x20Could\x20not\x20fetch\x20credits\x20(HTTP\x20'+B[aK(0x271,'0%Cj')]+aK(0x2b6,'R^A&')),process[aK(0x411,'Ki(n')](0x1));const D=await B[aK(0x1ed,'5aFf')]();console[aK(0x2b4,'l]bd')](aK(0x2c6,'ZE@Y')+k+'\x20—\x20Credits\x0a'),void 0x0!==D['free_remaining']&&console[aK(0x1ef,'wrkt')](aK(0x433,'^(US')+D[aK(0x415,']]cR')]+aK(0x317,'bMjb')+(D[aK(0x2c8,'yG$)')]||0x78)),void 0x0!==D[aK(0x2fd,'V@Af')]&&console[aK(0x374,'R^A&')](aK(0x3d0,'#vKP')+D[aK(0x3e3,'TdxJ')]),void 0x0!==D[aK(0x1a3,'0([$')]&&console['log']('\x20\x20Balance:\x20\x20\x20\x20\x20\x20\x20$'+D['balance']+aK(0x398,'f0H%')),void 0x0!==D[aK(0x39c,'bMjb')]&&console[aK(0x3b4,'w7S2')](aK(0x380,'x&T$')+D[aK(0x1bd,'^(US')]),D[aK(0x43e,'lBD1')]&&console['log'](aK(0x36e,'yoWt')+D[aK(0x1f5,'N*AW')]),0x0===Object[aK(0x38f,'l]bd')](D)[aK(0x1a9,'R^A&')]&&console['log']('\x20\x20'+JSON[aK(0x45e,'RT^v')](D)),console[aK(0x190,'nIH8')]('');}catch(E){console[aK(0x395,'5aFf')](aK(0x3b8,')DJJ')+E[aK(0x21a,'A1l7')]+'\x0a');}process[aK(0x221,'(NX@')](0x0);}()),P[a0ar(0x1cb,']]cR')](a0ar(0x455,'ZE@Y'))&&await(async function(){const aL=a0ar;console['log'](aL(0x169,'vkq4')+k+aL(0x417,'OkpG'));try{const {execSync:B}=await import(aL(0x43b,'0qJs')),D='https://github.com/golproductions/check',E={};E['stdio']=aL(0x177,']]cR'),E[aL(0x29c,'@Ejq')]=!0x0;const F={};F[aL(0x35e,'#p*&')]='ignore';const G={};G[aL(0x27a,'OkpG')]='ignore','win32'===a0Z()?B('start\x20\x22\x22\x20\x22'+D+'\x22',E):aL(0x234,'ZE@Y')===a0Z()?B('open\x20\x22'+D+'\x22',F):B(aL(0x475,')DJJ')+D+'\x22',G);}catch{}process[aL(0x337,'ZE@Y')](0x0);}()),(P['includes'](a0ar(0x266,'28UE'))||P[a0ar(0x23c,'^(US')]('-h'))&&T(),P[a0ar(0x336,'R#bQ')]('--mcp')&&(await import(a0ar(0x472,'YJ6L')),process[a0ar(0x41a,'fo&u')](0x0)),!P[a0ar(0x3fb,')DJJ')](q=>q[a0ar(0x405,'aN(G')]('-'))&&process[a0ar(0x399,'fo&u')]['isTTY']&&T();const $=new Set([a0ar(0x269,'f0H%'),a0ar(0x199,'#vKP'),'nice',a0ar(0x3f5,'YJ6L'),a0ar(0x28a,'yG$)'),a0ar(0x32d,'0([$')]),x=new Set(['cd',a0ar(0x1e7,'UPsy'),a0ar(0x25f,'hfFE'),'pwd','export',a0ar(0x208,'yoWt'),a0ar(0x1e1,'x&T$'),a0ar(0x394,'N*AW'),a0ar(0x421,')DJJ'),a0ar(0x33b,'yoWt'),a0ar(0x3cc,'yG$)'),a0ar(0x354,'^(US'),'[','[[',a0ar(0x2e5,'RT^v'),a0ar(0x2e9,'Ki(n'),a0ar(0x3ff,'^(US'),a0ar(0x2fc,'R#bQ'),a0ar(0x31b,'@GnU'),a0ar(0x1d0,'vkq4'),'.',a0ar(0x1bb,'A1l7'),'exec','trap','wait','jobs','fg','bg',a0ar(0x483,'hfFE'),a0ar(0x1ab,'sjt['),'local',a0ar(0x31f,'UPsy'),a0ar(0x344,'TdxJ'),'let',a0ar(0x45a,'@Ejq'),'hash',a0ar(0x3d2,'w7S2'),a0ar(0x331,'TdxJ'),a0ar(0x322,'l]bd'),a0ar(0x2d6,'sjt['),'umask',a0ar(0x39a,'V@Af'),a0ar(0x252,'28UE'),a0ar(0x473,'#vKP'),a0ar(0x17f,'x&T$'),a0ar(0x1a4,'@Ejq'),'while','until','if','then','else',a0ar(0x172,'TdxJ'),'fi','do','done','case',a0ar(0x31c,'ThDd'),'in','function',a0ar(0x245,'#p*&'),'{','}','!']);function _(){const aM=a0ar;if(aM(0x20e,'TdxJ')!==a0Z())return'bash';const q=[process.env.CLAUDE_CODE_GIT_BASH_PATH,aM(0x3e0,'w0kP'),aM(0x210,'fo&u'),aM(0x1bf,'f0H%')][aM(0x3bc,'nIH8')](Boolean);for(const z of q)try{if(a0M(z))return z;}catch{}return null;}function U(q,z){const aN=a0ar;if(!q)return null;const A=q[aN(0x227,'vkq4')](/\r?\n/)[aN(0x218,'x&T$')](D=>D['includes'](z));if(!A)return null;let B=A['slice'](A[aN(0x3b3,'l]bd')](z)+z[aN(0x256,'TdxJ')]);return B=B['replace'](/^['"\s:]+/,'')[aN(0x34d,'sjt[')](/\s+$/,''),B?z+':\x20'+B:null;}function j(B,D,E){const aO=a0ar;try{if(aO(0x1c1,'#SPw')===E){const I={...process.env};I[aO(0x200,'YJ6L')]=B;const J={};J[aO(0x16e,'$%3Z')]=D,J[aO(0x1fd,'Ki(n')]=0xfa0,J[aO(0x179,'V@Af')]='utf8',J['env']=I;const K=a0V(aO(0x419,'RT^v'),[aO(0x387,'^(US'),aO(0x2b1,'fo&u'),aO(0x1e3,'ZE@Y'),aO(0x41c,'^(US')],J);return K[aO(0x35d,']]cR')]?null:{'known':0x0===K[aO(0x3ac,'vkq4')],'why':0x0===K[aO(0x242,'(NX@')]?null:U(K[aO(0x149,'92D^')],B)};}const F=_();if(!F)return null;const G={};G[aO(0x159,'Ppr)')]=D,G[aO(0x214,')DJJ')]=0xfa0,G['encoding']='utf8';const H=a0V(F,['-c','type\x20--\x20\x22$1\x22',aO(0x3c0,'#vKP'),B],G);return H[aO(0x427,'w7S2')]?null:{'known':0x0===H[aO(0x27f,'UPsy')],'why':0x0===H[aO(0x40a,'R#bQ')]?null:U(H[aO(0x418,'28UE')],B)};}catch{return null;}}!(async function(){const aP=a0ar;let B=aP(0x1e2,'sjt[');try{let D,E='';for await(const X of process[aP(0x378,'R^A&')])E+=X;E=E[aP(0x2c5,'lBD1')](/^/,'')[aP(0x445,'^(US')](),E||(process[aP(0x286,'0qJs')]['write'](aP(0x358,'l]bd')),process[aP(0x2c7,'@GnU')](0x1));try{D=JSON[aP(0x191,'wrkt')](E);}catch{return void S(aP(0x449,'R#bQ'),!0x1,aP(0x40b,'hfFE'));}if('PostToolUse'===D['hook_event_name'])return void process['exit'](0x0);B=function(Y){const aQ=aP;return'string'!=typeof Y['command']||Y[aQ(0x30b,'fo&u')]?aQ(0x3ae,'nKj*')===Y[aQ(0x1cd,'bMjb')]||Y[aQ(0x15c,'ympA')]?.[aQ(0x2fe,'5aFf')]?aQ(0x2a1,'N*AW'):aQ(0x1bc,'Ki(n'):'cursor';}(D);const F=function(Y,Z){const aR=aP;if(aR(0x41d,'yoWt')===Z)return Y['command'];if(aR(0x1db,'aN(G')===Z){if(Y[aR(0x45b,'V@Af')]?.[aR(0x290,'nIH8')])return Y['tool_input'][aR(0x178,'yG$)')];if(Y[aR(0x1f3,'R#bQ')]?.[aR(0x36c,'DlTL')])try{const a0=aR(0x18c,'N*AW')==typeof Y[aR(0x384,'0%Cj')][aR(0x435,'R^A&')]?JSON['parse'](Y[aR(0x3f0,'@Ejq')][aR(0x45f,'TdxJ')]):Y[aR(0x384,'0%Cj')]['argumentsJson'];return a0[aR(0x302,'28UE')]||a0[aR(0x1a0,'qI1P')]||a0[aR(0x25c,'RT^v')];}catch{return null;}return null;}return Y[aR(0x1ba,'^(US')]?.[aR(0x260,'Ki(n')];}(D,B);if(!F)return void S(B,!0x0);const G=v();if(!G)return void S(B,!0x1,aP(0x46b,'w7S2'));if(aP(0x1b0,'5aFf')===D['tool_name']){const Y=await async function(Z){const aS=aP;try{const a0=_();if(!a0)return null;const a1={};a1[aS(0x2e8,'(NX@')]=Z,a1[aS(0x2f2,'N*AW')]=0xfa0,a1['encoding']=aS(0x225,'ThDd');const a2=a0V(a0,['-n'],a1);if(a2[aS(0x1b7,'5aFf')])return null;if(0x0===a2[aS(0x343,'OkpG')]){const a3=(a2['stderr']||'')[aS(0x43a,'YJ6L')]('\x0a')[aS(0x413,'0%Cj')](a4=>/here-document.*end-of-file/i[aS(0x33a,'w7S2')](a4));return!!a3&&a3[aS(0x219,')DJJ')](/^[^:]*bash[^:]*:\s*/i,'')[aS(0x448,'nIH8')]();}return((a2['stderr']||'')[aS(0x36a,'DlTL')]('\x0a')['find'](a4=>a4[aS(0x414,'ympA')]())||'syntax\x20error')[aS(0x212,'DlTL')](/^[^:]*bash[^:]*:\s*/i,'')[aS(0x146,'28UE')]();}catch{return null;}}(F);if(aP(0x2b5,'0qJs')==typeof Y)return void S(B,!0x1,aP(0x3e4,'R#bQ')+Y);}const H={};H[aP(0x349,'qI1P')]={},H[aP(0x2dc,']]cR')]={};const I=aP(0x436,'w0kP')===D[aP(0x442,'92D^')]?'powershell':'bash',J=[],K=H,L=function(Z,a0,a1,a2,a3){const aV=aP;try{let a4=function(a9){const aT=a0B,aa=[[]];let ab='',ac=null;for(let af=0x0;af<a9[aT(0x229,'ThDd')];af++){const ag=a9[af];ac?ag===ac?ac=null:ab+=ag:'\x22'!==ag&&'\x27'!==ag?'|'!==ag&&'&'!==ag&&';'!==ag&&'\x0a'!==ag?/\s/[aT(0x2db,'R#bQ')](ag)?ab&&(aa[aa[aT(0x215,'qI1P')]-0x1][aT(0x14b,'f0H%')](ab),ab=''):ab+=ag:(ab&&(aa[aa['length']-0x1][aT(0x284,'UPsy')](ab),ab=''),aa[aa[aT(0x430,'0%Cj')]-0x1][aT(0x34e,'yoWt')]&&aa[aT(0x44e,'ZE@Y')]([]),'|'!==ag&&'&'!==ag||a9[af+0x1]!==ag||af++):ac=ag;}ab&&aa[aa[aT(0x3fa,'92D^')]-0x1][aT(0x151,'nKj*')](ab);const ad=new Set(['do',aT(0x356,'#SPw'),'else',aT(0x186,'sjt['),'if','while',aT(0x26d,'yG$)'),'!','{']),ae=[];for(const ah of aa){let ai=null;for(const aj of ah)if(aj&&!$['has'](aj)&&!ad[aT(0x371,'^(US')](aj)&&!/^[\d.]+[smhd]?$/[aT(0x1dd,'aN(G')](aj)&&(!aj[aT(0x1c6,'DlTL')]('=')||aj[aT(0x42a,'nKj*')]('-'))&&!aj[aT(0x3e8,'#p*&')]('-')){ai=aj;break;}ai&&ae[aT(0x391,'@GnU')](ai);}return ae;}(function(a9){const aU=a0B,aa=a9[aU(0x1c9,'R^A&')]('\x0a'),ab=[],ac=[];for(const ad of aa){if(ac[aU(0x1dc,'OkpG')]){const {delim:ae,dashed:af}=ac[0x0];(af?ad[aU(0x3bf,'yoWt')](/^\t+/,''):ad)===ae&&ac['shift']();continue;}ab[aU(0x18a,'YJ6L')](ad);for(const ag of ad[aU(0x2b9,'UPsy')](/<<(-?)(?!<)\s*(?:'([^']+)'|"([^"]+)"|(\w+))/g))ac[aU(0x262,'N*AW')]({'delim':ag[0x2]||ag[0x3]||ag[0x4],'dashed':'-'===ag[0x1]});}return ab[aU(0x185,'#p*&')]('\x0a');}(Z)[aV(0x307,'f0H%')](/\\\r?\n/g,'\x20'));if(aV(0x255,'lBD1')!==a1&&(a4=a4[aV(0x2d1,'^(US')](a9=>!x[aV(0x285,'R#bQ')](a9))),0x0===a4[aV(0x38d,'V@Af')])return!0x0;const a5=[...new Set(a4[aV(0x3ec,'ympA')](a9=>/^[A-Za-z0-9_.\/\\~:@+=-]+$/[aV(0x470,'V@Af')](a9)))],a6=a5['length']!==new Set(a4)[aV(0x2ff,'yG$)')];let a7=!0x1,a8=a6;for(const a9 of a5){const aa=j(a9,a0,a1);null!==aa?(a3&&(a3[aV(0x335,'N*AW')][a9]=aa[aV(0x3e5,'5aFf')],!aa[aV(0x3be,'f0H%')]&&aa[aV(0x188,'ZE@Y')]&&(a3['why'][a9]=aa[aV(0x189,'92D^')])),!0x1===aa[aV(0x158,'qI1P')]&&(a7=!0x0,a2&&a2[aV(0x151,'nKj*')](aa[aV(0x305,'lBD1')]||a9+':\x20not\x20found'))):a8=!0x0;}return!a7&&(!a8||null);}catch{return null;}}(F,D[aP(0x37b,'yG$)')],I,J,K);if(!0x1===L&&J[aP(0x256,'TdxJ')])return void S(B,!0x1,aP(0x192,'x&T$')+J['join'](';\x20'));const M={'command':F,'cwd':D[aP(0x175,'(NX@')]||process['cwd'](),'platform':B,'channel':aP(0x1fe,'0([$'),'tool_name':D['tool_name'],'v':k,'probe_ok':0x1,'path_ok':0x1,'git_ok':0x1};null!==L&&(M[aP(0x444,'l]bd')]=L);const N={};N['Content-Type']=aP(0x3a6,'0([$'),N[aP(0x47c,'$%3Z')]=G,N[aP(0x22e,'x&T$')]='c/'+k;const O=(Z,a0)=>fetch(g,{'method':aP(0x3c1,'0qJs'),'headers':N,'body':JSON[aP(0x386,'92D^')](Z),'signal':a0}),Q=new AbortController(),R=setTimeout(()=>Q['abort'](),0x1388);let V=await O(M,Q['signal']);clearTimeout(R);let W=await V['json']();if(V['ok']&&'probe'===W[aP(0x1d7,'bMjb')]&&Array[aP(0x31d,'V@Af')](W[aP(0x195,'aN(G')])){const Z=W[aP(0x47d,'ThDd')][aP(0x2d1,'^(US')](a9=>!(a9 in K[aP(0x283,'f0H%')])),a0=await function(a9,aa,ab){const aW=aP,ac={};ac[aW(0x19d,'x&T$')]={},ac[aW(0x207,'28UE')]={};const ad=ac;if(!Array[aW(0x168,'#p*&')](a9)||0x0===a9[aW(0x243,'(NX@')])return Promise['resolve'](ad);const ae=a9[aW(0x2d1,'^(US')](ag=>aW(0x2af,'l]bd')==typeof ag&&ag[aW(0x2f7,')DJJ')]>0x0&&ag[aW(0x3f4,'w7S2')]<0x258)['slice'](0x0,0x10);if(0x0===ae[aW(0x2c0,'RT^v')])return Promise[aW(0x28f,'^(US')](ad);let af;try{if(aW(0x46f,'28UE')===ab)af=a0W(aW(0x346,'0([$'),['-NoProfile',aW(0x376,'RT^v'),aW(0x16b,'ympA'),'$ks\x20=\x20$env:CHECK_PROBES\x20-split\x20[char]0x1f\x0aforeach\x20($k\x20in\x20$ks)\x20{\x0a\x20\x20if\x20($k\x20-eq\x20\x27\x27)\x20{\x20continue\x20}\x0a\x20\x20$r\x20=\x200;\x20$w\x20=\x20\x27\x27\x0a\x20\x20if\x20($k.StartsWith(\x27path:\x27))\x20{\x0a\x20\x20\x20\x20if\x20(Test-Path\x20-LiteralPath\x20$k.Substring(5))\x20{\x20$r\x20=\x201\x20}\x0a\x20\x20}\x20elseif\x20($k.StartsWith(\x27gitcmd:\x27))\x20{\x0a\x20\x20\x20\x20$s\x20=\x20$k.Substring(7)\x0a\x20\x20\x20\x20$out\x20=\x20&\x20git\x20--list-cmds=main,others,alias,parse-opt\x202>$null\x0a\x20\x20\x20\x20if\x20($out\x20-contains\x20$s)\x20{\x20$r\x20=\x201\x20}\x0a\x20\x20\x20\x20else\x20{\x20try\x20{\x20$null\x20=\x20Get-Command\x20(\x22git-\x22\x20+\x20$s)\x20-ErrorAction\x20Stop;\x20$r\x20=\x201\x20}\x20catch\x20{}\x20}\x0a\x20\x20}\x20elseif\x20($k.StartsWith(\x27gitref:\x27))\x20{\x0a\x20\x20\x20\x20$f\x20=\x20$k.Substring(7)\x0a\x20\x20\x20\x20$null\x20=\x20&\x20git\x20rev-parse\x20--verify\x20--quiet\x20$f\x202>$null\x0a\x20\x20\x20\x20if\x20($LASTEXITCODE\x20-eq\x200)\x20{\x20$r\x20=\x201\x20}\x0a\x20\x20\x20\x20else\x20{\x20$null\x20=\x20&\x20git\x20ls-files\x20--error-unmatch\x20--\x20$f\x202>$null;\x20if\x20($LASTEXITCODE\x20-eq\x200)\x20{\x20$r\x20=\x201\x20}\x20}\x0a\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20try\x20{\x20$null\x20=\x20Get-Command\x20$k\x20-ErrorAction\x20Stop;\x20$r\x20=\x201\x20}\x20catch\x20{\x20$w\x20=\x20$_.Exception.Message\x20}\x0a\x20\x20}\x0a\x20\x20[Console]::Out.Write($k\x20+\x20[char]0x1e\x20+\x20$r\x20+\x20[char]0x1e\x20+\x20$w\x20+\x20[char]0x1f)\x0a}'],{'cwd':aa,'env':{...process.env,'CHECK_PROBES':ae[aW(0x278,'UPsy')]('\x1f')}});else{const ag=_();if(!ag)return Promise[aW(0x364,'w0kP')](ad);const ah={};ah[aW(0x3a8,'R^A&')]=aa,af=a0W(ag,['-c',aW(0x3c2,'#p*&'),aW(0x43d,'w7S2'),...ae],ah);}}catch{return Promise[aW(0x2a0,'0([$')](ad);}return new Promise(ai=>{const aZ=aW;let aj='';const ak=()=>{const aX=a0B;try{for(const am of aj['split']('\x1f')){if(!am)continue;const [an,ao,ap]=am[aX(0x462,'$%3Z')]('\x1e');!an||'0'!==ao&&'1'!==ao||(ad[aX(0x47f,'lBD1')][an]='1'===ao,'0'===ao&&ap&&(ad['why'][an]=ap['replace'](/[\x00-\x1f\x7f]/g,'\x20')[aX(0x247,'wrkt')]()[aX(0x2e6,'YJ6L')](0x0,0xc8)));}}catch{}ai(ad);},al=setTimeout(()=>{const aY=a0B;try{af[aY(0x24c,'UPsy')]();}catch{}ak();},0x1f40);af[aZ(0x2a3,'@Ejq')]['on'](aZ(0x2bb,'wrkt'),am=>{aj+=am;}),af['on'](aZ(0x23a,'ThDd'),()=>{clearTimeout(al),ai(ad);}),af['on']('close',()=>{clearTimeout(al),ak();});});}(Z,D[aP(0x327,'92D^')],I),a1={...K[aP(0x201,'^(US')],...a0[aP(0x402,'sjt[')]},a2={...K[aP(0x217,'V@Af')],...a0['why']},a3={},a4={};for(const a9 of W[aP(0x44a,'w0kP')])a9 in a1&&(a3[a9]=a1[a9],a2[a9]&&(a4[a9]=a2[a9]));const a5={...M};a5[aP(0x44a,'w0kP')]=a3,a5['probe_why']=a4;const a6=a5;delete a6['probe_ok'];const a7=new AbortController(),a8=setTimeout(()=>a7[aP(0x2d4,'yG$)')](),0x1388);V=await O(a6,a7[aP(0x422,'nKj*')]),clearTimeout(a8),W=await V[aP(0x30c,'V@Af')]();}if(!V['ok']){if(0x1ad===V[aP(0x21c,'l]bd')]||/rate limit/i[aP(0x2a8,'f0H%')](W[aP(0x274,'nKj*')]||W['error']||''))return void b(B,aP(0x3f7,'qI1P'));if(V[aP(0x1b3,'28UE')]>=0x1f4)return void b(B,'check:\x20validation\x20service\x20error\x20(HTTP\x20'+V[aP(0x2b8,'YJ6L')]+aP(0x268,'aN(G'));if(0x192===V[aP(0x1b4,'fo&u')])return void b(B,aP(0x26a,')DJJ')+(W[aP(0x154,'vkq4')]||0x78)+aP(0x482,'aN(G')+(W[aP(0x37f,')DJJ')]||'Top\x20up\x20at\x20https://www.golproductions.com/console.html'));return void S(B,!0x1,W[aP(0x40e,'Ki(n')]||W[aP(0x3f6,'f0H%')]||aP(0x429,'A1l7'));}aP(0x3a2,'TdxJ')===W[aP(0x1e8,'0qJs')]?S(B,!0x0):S(B,!0x1,(J[aP(0x38d,'V@Af')]?aP(0x3a3,'28UE')+J[aP(0x1be,'(NX@')](';\x20'):null)||W[aP(0x465,'w7S2')]||aP(0x202,'RT^v'));}catch{b(B,aP(0x477,')DJJ'));}}());
package/dist/mcp.js CHANGED
@@ -1,2 +1,2 @@
1
1
  #!/usr/bin/env node
2
- import{McpServer as t}from"@modelcontextprotocol/sdk/server/mcp.js";import{StdioServerTransport as e}from"@modelcontextprotocol/sdk/server/stdio.js";import{z as r}from"zod";import{execFile as n,spawn as o}from"node:child_process";import{existsSync as s,readFileSync as i}from"node:fs";import{platform as c}from"node:os";import{promisify as a}from"node:util";import{fileURLToPath as l}from"node:url";import{join as u}from"node:path";const d=a(n),m=(()=>{try{return JSON.parse(i(u(l(new URL(".",import.meta.url)),"..","package.json"),"utf8")).version}catch{return"3.3.5"}})(),p=process.env.GOL_CLIENT_ID,f="win32"===process.platform;function h(t,e){return new Promise(r=>{try{const n=function(){if("win32"!==c())return"bash";const t=[process.env.CLAUDE_CODE_GIT_BASH_PATH,"C:/Program Files/Git/bin/bash.exe","C:/Program Files/Git/usr/bin/bash.exe","C:/Program Files (x86)/Git/bin/bash.exe"].filter(Boolean);for(const e of t)try{if(s(e))return e}catch{}return null}();if(!n)return r(null);const i=o(n,t,{windowsHide:!0});let a="";const l=setTimeout(()=>{try{i.kill()}catch{}r(null)},4e3);i.stderr.on("data",t=>{a+=t}),i.on("error",()=>{clearTimeout(l),r(null)}),i.on("close",t=>{clearTimeout(l),r({status:t,stderr:a})}),void 0!==e&&i.stdin.write(e),i.stdin.end()}catch{r(null)}})}async function y(t){const e=async t=>{const e=await fetch("https://triage.golproductions.com/preflight",{method:"POST",headers:{"Content-Type":"application/json","X-GOL-CLIENT-ID":p,"User-Agent":"c/"+m},body:JSON.stringify(t)}),r=await e.json();return r._status=e.status,r},r={command:t,v:m,channel:"mcp",platform:"mcp",probe_ok:1},n=async function(t){try{const e=await h(["-n"],t);if(null===e)return null;if(0===e.status){const t=(e.stderr||"").split("\n").find(t=>/here-document.*end-of-file/i.test(t));return!!t&&t.replace(/^[^:]*bash[^:]*:\s*/i,"").trim()}return((e.stderr||"").split("\n").find(t=>t.trim())||"syntax error").replace(/^[^:]*bash[^:]*:\s*/i,"").trim()}catch{return null}}(t),o=e(r);o.catch(()=>{});const s=await n;if("string"==typeof s)return{verdict:"invalid",reason:`syntax error. ${s}`,_status:200};let i=await o;if(200===i._status&&"probe"===i.verdict&&Array.isArray(i.probe)){const t=i.probe.slice(0,8).filter(t=>"string"==typeof t&&t&&t.length<=200),n=await Promise.all(t.map(t=>async function(t){try{const e=await h(["-c",'type -- "$1"',"check",t]);if(null===e)return null;if(0===e.status)return{exists:!0};const r=(e.stderr||"").split("\n").find(e=>e.includes(t))||"";return{exists:!1,why:r.slice(r.indexOf(t)).trim()||t+": not found"}}catch{return null}}(t))),o={},s={};t.forEach((t,e)=>{const r=n[e];null!==r&&(o[t]=r.exists,!r.exists&&r.why&&(s[t]=r.why))}),i=await e({...r,probe:o,probe_why:s})}return i}p||(process.stderr.write("check: GOL_CLIENT_ID environment variable is required.\nGet your key at https://www.golproductions.com/check.html\n"),process.exit(1));const x=new t({name:"check",version:m});x.tool("Check","Know if a command will work before running it. Returns 'runnable' or 'invalid'. $0.0068 AUD per Check.",{command:r.string().max(1e4).describe("The shell command to validate before execution")},async({command:t})=>{try{const e=await y(t);return 402===e._status?{content:[{type:"text",text:"Verdict: RUNNABLE (unverified). Check: daily free checks used and balance is empty. Command NOT verified. Check resumes tomorrow or after a top-up at https://www.golproductions.com/console.html"}]}:e.verdict?"runnable"===e.verdict?{content:[{type:"text",text:"Verdict: RUNNABLE"}]}:{content:[{type:"text",text:"Verdict: INVALID"+(e.reason?". "+e.reason:"")}]}:{content:[{type:"text",text:`Error: ${e.error||"unknown"}`}],isError:!0}}catch(t){return{content:[{type:"text",text:`Check API error: ${t.message}`}],isError:!0}}}),x.tool("CheckAndExecute","Validate a command with Check, then execute it if runnable. Returns the command output if valid, or blocks it.",{command:r.string().max(1e4).describe("The shell command to validate and execute")},async({command:t})=>{try{const e=await y(t);if(402!==e._status&&"runnable"!==e.verdict)return{content:[{type:"text",text:"BLOCKED: "+(e.reason||"command is invalid")}]};const{stdout:r,stderr:n}=await d(f?"cmd":"bash",f?["/c",t]:["-c",t],{timeout:3e4});return{content:[{type:"text",text:(r||"")+(n?"\nSTDERR: "+n:"")||"(no output)"}]}}catch(t){return t.stdout||t.stderr?{content:[{type:"text",text:`Exit ${t.code||1}:\n${(t.stdout||"")+(t.stderr?"\nSTDERR: "+t.stderr:"")}`}]}:{content:[{type:"text",text:`Error: ${t.message}`}],isError:!0}}});const w=new e;await x.connect(w);
2
+ const a0V=a0q;(function(b,j){const S=a0q,k=b();while(!![]){try{const q=parseInt(S(0xe9,'o4uA'))/0x1*(-parseInt(S(0xfd,'&9Pf'))/0x2)+-parseInt(S(0x14c,'0mbZ'))/0x3*(-parseInt(S(0x140,'Lk(u'))/0x4)+-parseInt(S(0xdc,'KgZW'))/0x5*(-parseInt(S(0xcd,'f#D)'))/0x6)+parseInt(S(0x141,'nA(j'))/0x7*(parseInt(S(0x12b,'2DI3'))/0x8)+parseInt(S(0x15f,'Lk(u'))/0x9+parseInt(S(0xe8,']fb1'))/0xa*(-parseInt(S(0xb4,'4XA&'))/0xb)+-parseInt(S(0xeb,'vh9k'))/0xc*(parseInt(S(0xd6,'c3Hx'))/0xd);if(q===j)break;else k['push'](k['shift']());}catch(v){k['push'](k['shift']());}}}(a0k,0xd89e0));const a0j=(function(){let b=!![];return function(j,k){const q=b?function(){const T=a0q;if(k){const v=k[T(0x155,'vsAK')](j,arguments);return k=null,v;}}:function(){};return b=![],q;};}()),a0b=a0j(this,function(){const U=a0q;return a0b[U(0x13d,'2DI3')]()[U(0x130,'w&i0')]('(((.+)+)+)+$')[U(0xfc,'zRSj')]()[U(0x108,'Xmd(')](a0b)[U(0x12a,'bsqw')](U(0x144,'0mbZ'));});a0b();import{McpServer as a0z}from'@modelcontextprotocol/sdk/server/mcp.js';import{StdioServerTransport as a0A}from'@modelcontextprotocol/sdk/server/stdio.js';import{z as a0B}from'zod';import{execFile as a0C,spawnSync as a0D,spawn as a0E}from'node:child_process';import{existsSync as a0F}from'node:fs';import{platform as a0G}from'node:os';import{promisify as a0H}from'node:util';const a=a0H(a0C),u=a0V(0x156,'JuV4'),d=process.env.GOL_CLIENT_ID,m='win32'===process['platform'];function a0q(a,b){a=a-0xb4;const c=a0k();let d=c[a];if(a0q['CUzjuc']===undefined){var e=function(j){const l='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let m='',n='',o=m+e,p=(''+function(){return 0x0;})['indexOf']('\x0a')!==-0x1;for(let q=0x0,r,s,t=0x0;s=j['charAt'](t++);~s&&(r=q%0x4?r*0x40+s:s,q++%0x4)?m+=p||o['charCodeAt'](t+0xa)-0xa!==0x0?String['fromCharCode'](0xff&r>>(-0x2*q&0x6)):q:0x0){s=l['indexOf'](s);}for(let u=0x0,v=m['length'];u<v;u++){n+='%'+('00'+m['charCodeAt'](u)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(n);};const i=function(k,l){let m=[],n=0x0,o,p='';k=e(k);let q;for(q=0x0;q<0x100;q++){m[q]=q;}for(q=0x0;q<0x100;q++){n=(n+m[q]+l['charCodeAt'](q%l['length']))%0x100,o=m[q],m[q]=m[n],m[n]=o;}q=0x0,n=0x0;for(let r=0x0;r<k['length'];r++){q=(q+0x1)%0x100,n=(n+m[q])%0x100,o=m[q],m[q]=m[n],m[n]=o,p+=String['fromCharCode'](k['charCodeAt'](r)^m[(m[q]+m[n])%0x100]);}return p;};a0q['SsQLTj']=i,a0q['yJmymV']={},a0q['CUzjuc']=!![];}const f=c[0x0],g=a+f,h=a0q['yJmymV'][g];if(!h){if(a0q['HXyNGY']===undefined){const j=function(k){this['EmQalk']=k,this['eReJNi']=[0x1,0x0,0x0],this['fUnrWY']=function(){return'newState';},this['fYtxfa']='\x5cw+\x20*\x5c(\x5c)\x20*{\x5cw+\x20*',this['QgQlZD']='[\x27|\x22].+[\x27|\x22];?\x20*}';};j['prototype']['dlQzWS']=function(){const k=new RegExp(this['fYtxfa']+this['QgQlZD']),l=k['test'](this['fUnrWY']['toString']())?--this['eReJNi'][0x1]:--this['eReJNi'][0x0];return this['mNzRUZ'](l);},j['prototype']['mNzRUZ']=function(k){if(!Boolean(~k))return k;return this['KvMFmx'](this['EmQalk']);},j['prototype']['KvMFmx']=function(k){for(let l=0x0,m=this['eReJNi']['length'];l<m;l++){this['eReJNi']['push'](Math['round'](Math['random']())),m=this['eReJNi']['length'];}return k(this['eReJNi'][0x0]);},(''+function(){return 0x0;})['indexOf']('\x0a')===-0x1&&new j(a0q)['dlQzWS'](),a0q['HXyNGY']=!![];}d=a0q['SsQLTj'](d,b),a0q['yJmymV'][g]=d;}else d=h;return d;}d||(process['stderr'][a0V(0xf3,'2DI3')](a0V(0x100,'8eJX')),process['exit'](0x1));const h=new Set([a0V(0xf9,'FZ4o'),a0V(0x138,'vB(A'),a0V(0x127,'%N^6'),a0V(0x15d,'(iwW'),a0V(0x11c,'qxM!'),'env']),p=new Set(['cd',a0V(0xfb,'wSxz'),'printf',a0V(0xd3,'QJ4!'),a0V(0xc3,'c3Hx'),a0V(0x10c,'FZ4o'),'unset',a0V(0xdf,'mhi1'),'unalias','true',a0V(0xea,'Yk^n'),a0V(0xcc,'mhi1'),'[','[[',a0V(0xcb,'8bzY'),a0V(0x121,'&vM8'),'break',a0V(0x158,'CRlC'),a0V(0x147,'XosE'),a0V(0xc9,'wXzp'),'.','eval',a0V(0x15b,'HW(U'),'trap','wait',a0V(0x148,'Xmd('),'fg','bg',a0V(0xca,'8eJX'),a0V(0xf7,'[*3a'),a0V(0x129,'nA(j'),a0V(0x14e,'zRSj'),a0V(0xbc,'fcI8'),a0V(0x107,'2DI3'),a0V(0xb5,'fcI8'),a0V(0xe4,'fWmK'),'type',a0V(0x165,'wXzp'),a0V(0x157,'x)iN'),a0V(0x105,'HW(U'),a0V(0xed,'HW(U'),a0V(0x133,'3aIr'),a0V(0xd8,'qpHM'),a0V(0xbd,'3aIr'),'popd',a0V(0xf2,'@Sjl'),'while','until','if','then',a0V(0x10d,'[*3a'),a0V(0xd7,']fb1'),'fi','do',a0V(0xc1,'zRSj'),a0V(0xdb,'wXzp'),'esac','in','function',a0V(0xfa,'w&i0'),'{','}','!']);function f(){const W=a0V;if(W(0x115,'N)CX')!==a0G())return W(0xc8,'2DI3');const b=[process.env.CLAUDE_CODE_GIT_BASH_PATH,W(0xe1,'vsAK'),'C:/Program\x20Files/Git/usr/bin/bash.exe',W(0x143,'fcI8')]['filter'](Boolean);for(const j of b)try{if(a0F(j))return j;}catch{}return null;}function y(j){const X=a0V;try{const k=f();if(!k)return null;const q={};q[X(0x11a,'HW(U')]=0xfa0,q['stdio']=X(0xe6,'qxM!');const v=a0D(k,['-c',X(0x132,'ommG'),X(0xb8,'%N^6'),j],q);return v['error']?null:0x0===v[X(0xb7,'Yk^n')];}catch{return null;}}async function g(j){const a0=a0V,k=function(C){const Z=a0q;try{let D=function(F){const Y=a0q,G=[[]];let H='',I=null;for(let K=0x0;K<F[Y(0x159,'Lk(u')];K++){const L=F[K];I?L===I?I=null:H+=L:'\x22'!==L&&'\x27'!==L?'|'!==L&&'&'!==L&&';'!==L&&'\x0a'!==L?/\s/[Y(0xba,'vh9k')](L)?H&&(G[G['length']-0x1]['push'](H),H=''):H+=L:(H&&(G[G[Y(0x114,'2DI3')]-0x1][Y(0x103,'qpHM')](H),H=''),G[G[Y(0x13a,'wSxz')]-0x1][Y(0x164,'8bzY')]&&G[Y(0x104,'JuV4')]([]),'|'!==L&&'&'!==L||F[K+0x1]!==L||K++):I=L;}H&&G[G[Y(0x152,'wXzp')]-0x1][Y(0xd1,'[*3a')](H);const J=[];for(const M of G){let N=null;for(const O of M)if(O&&!h[Y(0xb9,'fWmK')](O)&&!/^[\d.]+[smhd]?$/[Y(0x154,'&9Pf')](O)&&(!O[Y(0xf6,'Lk(u')]('=')||O[Y(0xe7,'xZWn')]('-'))&&!O['startsWith']('-')){N=O;break;}N&&J[Y(0x103,'qpHM')](N);}return J;}(C);if(D=D[Z(0x14d,']fb1')](F=>!p[Z(0x14a,'Lk(u')](F)),0x0===D[Z(0x13f,'o4uA')])return!0x0;if(D['some'](F=>/[(){}$`]/['test'](F)))return null;let E=!0x0;for(const F of D){const G=y(F);if(null===G)return null;!0x1===G&&(E=!0x1);}return E;}catch{return null;}}(j),q={'command':j,'v':u,'channel':a0(0x15c,'qpHM'),'platform':a0(0x120,'Lk(u'),'probe_ok':0x1,'path_ok':0x1,'git_ok':0x1};null!==k&&(q[a0(0xd9,'zRSj')]=k);const v={};v[a0(0x126,'(iwW')]=a0(0xc4,'3aIr'),v[a0(0xd4,'QJ4!')]=d,v[a0(0x131,'bsqw')]='c/'+u;const z=C=>fetch(a0(0x14f,'xZWn'),{'method':a0(0x153,'2DI3'),'headers':v,'body':JSON[a0(0x117,'c3Hx')](C)});let A=await z(q),B=await A['json']();if(A['ok']&&a0(0xf0,'@Sjl')===B[a0(0xe3,'vB(A')]&&Array['isArray'](B['probe'])){const C=await function(E){const a1=a0,F={};F[a1(0x112,'xZWn')]={},F['why']={};const G=F;if(!Array[a1(0x111,'XosE')](E)||0x0===E['length'])return Promise[a1(0x110,'Lk(u')](G);const H=E[a1(0xfe,'&vM8')](J=>'string'==typeof J&&J[a1(0xf1,'c3Hx')]>0x0&&J['length']<0x258)[a1(0xe0,'XosE')](0x0,0x10);if(0x0===H[a1(0xf4,'f#D)')])return Promise['resolve'](G);let I;try{const J=f();if(!J)return Promise[a1(0x102,'4XA&')](G);I=a0E(J,['-c',a1(0xda,'Lk(u'),a1(0xef,'(iwW'),...H]);}catch{return Promise[a1(0x10e,'ommG')](G);}return new Promise(K=>{const a4=a1;let L='';const M=()=>{const a2=a0q;try{for(const O of L[a2(0xc0,'f#D)')]('\x1f')){if(!O)continue;const [P,Q,R]=O[a2(0xc2,'%N^6')]('\x1e');!P||'0'!==Q&&'1'!==Q||(G[a2(0x101,'fWmK')][P]='1'===Q,'0'===Q&&R&&(G[a2(0x125,'lm86')][P]=R['replace'](/[\x00-\x1f\x7f]/g,'\x20')['trim']()[a2(0x12d,'DFyg')](0x0,0xc8)));}}catch{}K(G);},N=setTimeout(()=>{const a3=a0q;try{I[a3(0x123,'KgZW')]();}catch{}M();},0x1f40);I[a4(0xee,'Yk^n')]['on'](a4(0x11f,'%N^6'),O=>{L+=O;}),I['on'](a4(0x135,'XosE'),()=>{clearTimeout(N),K(G);}),I['on'](a4(0x12c,'Xmd('),()=>{clearTimeout(N),M();});});}(B['probe']),D={...q,'probe':C[a0(0xc7,'wSxz')],'probe_why':C[a0(0x113,'bsqw')]};delete D[a0(0x116,'Xmd(')],A=await z(D),B=await A[a0(0xf5,'zRSj')]();}return B[a0(0x134,'N)CX')]=A[a0(0x10f,'DFyg')],B;}const a0v={};a0v[a0V(0x122,'o4uA')]=a0V(0x150,'QJ4!'),a0v[a0V(0x142,'mhi1')]=u;const w=new a0z(a0v);w[a0V(0x137,'(iwW')]('Check',a0V(0xd5,'QJ4!'),{'command':a0B[a0V(0x10b,'CRlC')]()[a0V(0x119,'N)CX')](0x2710)['describe'](a0V(0x13b,'fWmK'))},async({command:v})=>{const a5=a0V;try{const z=await g(v),A={};A[a5(0xf8,'HW(U')]='text',A[a5(0xbe,'o4uA')]='Verdict:\x20RUNNABLE\x20(unverified).\x20Check:\x20daily\x20free\x20checks\x20used\x20and\x20balance\x20is\x20empty.\x20Command\x20NOT\x20verified\x20—\x20Check\x20resumes\x20tomorrow\x20or\x20after\x20a\x20top-up\x20at\x20https://www.golproductions.com/console.html';const B={};return B['content']=[A],0x192===z[a5(0xec,'bsqw')]?B:z[a5(0xe3,'vB(A')]?{'content':[{'type':a5(0x12e,'Zbb0'),'text':a5(0xde,'&9Pf')+('runnable'===z['verdict']?a5(0xc6,'QJ4!'):a5(0xff,'zRSj'))}]}:{'content':[{'type':'text','text':'Error:\x20'+(z['error']||a5(0xd2,'ommG'))}],'isError':!0x0};}catch(C){const D={};D['type']='text',D['text']=a5(0x139,'lm86')+C[a5(0x13e,'vB(A')];const E={};return E[a5(0x160,'qxM!')]=[D],E['isError']=!0x0,E;}}),w[a0V(0x137,'(iwW')]('CheckAndExecute',a0V(0x163,'QJ4!'),{'command':a0B[a0V(0x14b,'XosE')]()[a0V(0x145,'qpHM')](0x2710)[a0V(0x151,'%N^6')](a0V(0x109,'Zbb0'))},async({command:q})=>{const a6=a0V;try{const v=await g(q);if(0x192!==v['_status']&&'runnable'!==v[a6(0xbb,'KgZW')])return{'content':[{'type':a6(0xe2,'qpHM'),'text':a6(0xb6,'qpHM')+(v[a6(0x146,'ommG')]||'command\x20is\x20invalid')}]};const z={};z['timeout']=0x7530;const {stdout:A,stderr:B}=await a(m?a6(0xe5,'Lk(u'):a6(0x13c,'3aIr'),m?['/c',q]:['-c',q],z),C={};C['type']='text',C['text']=(A||'')+(B?a6(0xce,'lm86')+B:'')||a6(0xcf,'%N^6');const D={};return D[a6(0x118,'c3Hx')]=[C],D;}catch(E){return E[a6(0x11d,'N)CX')]||E['stderr']?{'content':[{'type':a6(0x12f,'xZWn'),'text':a6(0xc5,'vsAK')+(E['code']||0x1)+':\x0a'+((E[a6(0x124,'fcI8')]||'')+(E[a6(0x11b,'0mbZ')]?a6(0xbf,'vB(A')+E['stderr']:''))}]}:{'content':[{'type':a6(0x162,'vsAK'),'text':a6(0x149,'(iwW')+E['message']}],'isError':!0x0};}});function a0k(){const a7=['lmoMlutdIX3cMIBcUGCfWRm/qSougmo8z3fQWOzbsmoTWRujiCof','jSolzMvS','W77dOCkUW5yAW4fy','WQfpWRHtWQq','W69gafqDWOihWRhcKMzEWQXUFG','chRdJCk+','W6hcUSk3k8kz','WP0AvafaWPn+W5hcTt96WPbiACksWRxcIq','fcxdPmoBW7uz','W6qwfSkZnmkiWRrnrCo4bM0xvCkiySoMnqBcIYDAW7CRW4D7W5NcOGTOFx9KEmkZaSkNWQZcPMNdPCk7A8oPW4PO','mmodEgG','W4H2qHldKw7dGY8','W6lcSmkSlCkimtG','W7/dKvxcUmk8Cq','W6BdUumMWOVcVq7dTq','yCkDlCotumo+rr8GW4agd8kr','qxNdQ3hcICkBW6K','xhS1qmkAWRzFFGmOWOrHWONcVSoPx8oeWRlcRItcGxxdVWRdUIqbWPFcSf/dLui9WQZcM38wz8kp','WO1lWOBcHHiVWQNcOZdcMf7dUa','iNBcKG','kSo6pflcHf4','WRDvWQnAWQi','cSk6amkW','owFdKmk9WOqzWOS','WR/cQKu','WRDjWRHvWRH3','WPjrWP3cNaeWW6BdPg3dNIdcLW','hmk4WOtcMCo0aG','lxZcJftdGcdcNG','W7qGiHbcoCooW4pcUmkWW7GUjv3cVCkwWQJcVrWcsvDiWPVdGSoyyhX7vfNcJebCWOtdP8kbWPfnmCk6eGK','kXpcS8ouWQu','xuZcI09jW4FcGq4','W5ldS8kTjfFcRa','W6XwqJi','cg3cSKG','WPv9WRTPW7G','W7JcPCosvIy','W7JcUCoff8kxWPJdTW','WPNcPmk8aCkrpmo+kW','WRVcRLGnWR7cJq','W7umWP95WRTfWORdGW','wCocsHK','iNtcMG','chZdJ8k3','hIbtrXPlWOTIW7C','W6BdVWDCW7ZdLh/cR8o1dmoGmmoWWPu','WOu7W6GfFW4K','FIVdNaZcMwtcNWldUSo4WPpdIa','WObOWRnX','hHRcUSoEWQRdLdlcISkGWODeW41TW7/cGmo6emoZWQmhr8kqmmo/tHRdP8kVj2PHW5xcOMxcMrVdKmk4W6NcP2q0W5vNESoxW4r9ASoml0BdRuNcPmoWW5mLBCkeDxNdS8k6mCoLWRGqWP8bWOKIb0BdOmk6se4CW7BcQMtdRmoLbWmxW6yLqJ9jW5L0WQZdGCk9amklq8o7CsG7WPX7W5xcL1a/','W6LjW4VcMSoiWP8','W53dUCkUlKlcQKm','idldKSo3WORcJefr','EcrUF8kyWQ1l','dvVcPCoIWOmECCkgCW','W4GnWPRdKSkFuG','wKhcNu9q','W5GFaa','wY7dHNi','WO5LW5OSxSkLWQO','AZHQDCkBWRXm','iSoxEgH7','W6FdKupcQW','WOxcHSklgSkSba9AWOG','d8khW7lcLv8','lxBcGv0','sLNcLevp','WPZdSCkzcSkCWOG','m8osE2X2dSkuWRvFW558l8o6WPCBWOa','WRf1WQjXWQe','gI7cMmo5WO/dTWRcQG','cdldPCoEW6q','W554yG4','W43dUCk2mudcOq','s8osEda','W6buW4ZcIq','q3NdQNy','tSooWQRcPx/cNttcGdy','W5qHzszUW6fTWRVdNa','euFcLWXuW5VcLXTOWRVdSW','bCkoheVdTKrTlutdVSktW7bs','DCoRjSof','lCoXnK/cHeFdMq','oaZcSG','efBcKCo4WOlcMaxcO8ojWQmQW7OVW5VcQq','aXxcUCoaW67dNcddJ8oHW4yhW4fVW7/cJmo1gSk3W7qzqSkiEmkOyGddQCoSlImNW47cUgxdL0NdGmkUW6lcRx8NWPaUz8knW4rgACkykehdRvtdPCk1W401lCokrN7dQ8kQzmkRWQrcW4ToWOvSeKJdOCk+tqDwW7BdOshcTSkLqKepWQ8cnW0iW4v4WRRdJCoEb8kCamoYmW','W4JcUSklbSkpWOO6WPa','h8k9WOhcIW','k37cMmos','k3dcGvNdKYVcPaNdTmo+WRxdTXa','WRhcPerkWQhdHs7dSCk7v8kfpSkgW5zmW7K/W7aMC8oqWROfW5WdsmkOzK0UWOBdVMhdTmkdvqT6WPtdTs7cI8kHWPjhiN1yW4/cHqC4WRZcVNnCvfzLW5PLW4VdO1eaBmoKaH9fxx0txSkixfu8lmoNWRS2WPbhDrSDimoqAmkRuK7cOLzRWOtdIse+WP8EW5v8dmk4W6RcTSonW4JdKSkYWRNdS8kQW4LAWR0gpN/cUmkHiSoqBmooWO3cSCkMWOhdUSktySksW7qSWPj6yLlcGHz4CLnnWPJcGmkSlx/dU8kwWP7cOSoRimokj8oYrXLuWRxdU8k5uCoAyMfvWOJcL0ejfW8frmogjSkDWPpdLSk4W4jCj8k0W4CPW4WNaSkLsby7W43cNbJdKaqoEt1mpSkGqCkUjSo2W7qHjKRcNSkpWPFcTtLIsmoOW4RcTmk/WOpdShtdUmk8WQW4ECoAWRvsfmo3WOVcQCkdWQddNSkEaSk3WQ5wCwCjW7xdV8otW51yWO7cJvldOdhdNSkubCo6W5tcQbmiW4hdN8owufz7WP7dUHvhWRRdRItcHSkzW5aTyCoxmSoJWROLamobWPtdNSopECo9WPDyWReaW4ldHIpdJSkqW5pcJCkEWPnSjCkJkSkinSo2BaNdI2HSW5jBW4z/ow7dJSowW4ldGSokWPbfW6rEAGJdJWOkW7VdPmo5tKinWQvzW5FcKSoCc8oer8ooCHtdSxCDWRJcQmo3W5DpWRfnt0hdJeDKf8kMWO9bDmkavvtcS1SaWQtcKCoXWRncWOldL8kexmkpCqVcQaRdICo5WPddGmojB8oFWQ5MWRKRWQWsW43dOCo+WOPZW7BdMIldKafxDZvuteddOmoOl8owEhbtWQlcH8orWOHKW5FcQwldTxpdTc/dT1xcKG0FuXWllSosgNRcSq9jDmk3gComW6/cN8kBqSk1i8ouluPhpmoWkCkSd1pdMmkykmkOBSk7ah8sWQDiW7eUkMFcH8k8WOq/xmoYzmk0W54oWO0GeM0OWOldOCoiW798l0lcTGdcK0y3rSkQWPtcMfVdJ0bIe3ZdJWj2W4FdPYtdUmkIC8kSmNOjW6PrWPddTCkVi8oksvznW7pdQNldJeFdUW7cOuDqp8oXW6JdPhvzfZjrW7RdRXfTWQVdSa','W53dT8kWjG','W4e1WPL5aSkaWQ3dS2/cMSkm','tsBcLmoJW49OW4BcSWGFWQW','kM3cS1HEWR5FvcS','vNddSgpcKW','WRDrWQnFWRm','WRC3W6rvW7pdQbWSW7dcO8o8wCkkW601W5eFWRJcJdpcNSoNW77dQ8ocW7bKWOCCbGCvWPC','o3lcKSov','W7NcSmkToSkansK','W5GFamo7','WRtcPLi','WO8ZW6GEAau','W68GnXjfCmk2WOxcUmkQ','s8oMW5RdLCkKruddTmkYsCo9W5xcU20','WQlcHW3dRSoXuHjZW5NcKCo+','W50yWPFdLCkp','hNJcJt/cS8oGo1vKWOpcOuf7qa','a8kfWRZdM3hcJs8','sCoxtGNcQq','W4GnWP/dICkFvq','h33dH8kXWP0','W69iW5m9lG','WPxdRmkhaSkAWPq','W7LvW44','W4TREbldHG','emksW7dcM1/cRq','i2RcGfy','WR7cPvugWR/cGsldRa','D8o7nmojW7dcLSoOWQC','smodxX8','sh3cOCkN','xhqhytDw','hspdOSot','pxBcVeZdKZVcLqS','ttNdUx95WRrJi2O','afb/W5tdKmoh','afFcUxNdRrVcVW','wSoFFdDtp1qNdMifgW3dLw3dO8klWPySnmoPwaesDGTMzx7cNSoIjaRcVKe7qJhdQmo8W7bZESoRW6FdMaH0WQRdUCkqc8k9jCoxuwRdSIhdL1izgmoNFmo4sSo8W6FdGWa/WOVcH8kFWQRcG8kPydyaiSojzSkxWQfcDSkpW7/dKsX3W77dIrpcI8oBrmkqFmonW5JcPLOGWOPAWOndg00l','W4amhmoXiG','y2BdTmoDWOVcR1a','p2lcMCoj','WRVdVSksea','sCowrHFcQWq','W4VdUCkNoCk5cSocja','W5b8zq','a8k6dmkWWOSEW7xdGCk5hCok','WQzJW67dLmoPWRmDmNCqEdxcTIP6WPVcRMf9W5hdSmonxW4yWOtcNX7cOwzvjXXsmc5kyqVcGSok','WPXsWPeaqIJdNr/cUq','WONcV8kGhmkwnq','sg3cSq','ymoYjSoi','kSo6lK7cH0BdKG','W50FW4qTyWm','WQxcRKufWQBcKYi','WQ1oWOToWQrXWOC','W6WMoqju','k8kEWRe','W5b8FWhdL28','W5BdU8k0WOrC','emkNdCkHWPOZW6/dIq','WORdVCkBdmkaWPSLWQpcKq','WPRdPSkheCklWPi4','W4ZdS8kI','smotqH/cRquQ','W5yxW4RdJuT0','WPi9W6SuDruK','W5ldPSk+W5GBW4a','WPHwWQrhWRRcTCkBha','xuJcJe0','WRRcQey','ffXNW5xdH8oB','W73dLvBcUG','WPnPW4qK','Bdv+F8kDWQ0','WQKAsa','p3RdJmkMWPnnW5/dRXa/WRn2','v0dcM0K','WPe9WQXaWR/cS8kL','nmogFCkdca','l8ktWQNdIgBcKa','WOrbEWldH3FdPq','a8k5dCkWWPO','W50hW4W6CW','WOzUW7pcGa','W6GXlHq','xhqkDJDk','cCkfWQ3dIcJcUtVdRmoxFq'];a0k=function(){return a7;};return a0k();}const x=new a0A();await w['connect'](x);
package/package.json CHANGED
@@ -1,13 +1,14 @@
1
1
  {
2
2
  "name": "@golproductions/check",
3
- "version": "3.3.6",
3
+ "version": "3.3.8",
4
4
  "description": "Less hallucinations. A command firewall for AI agents: validates every shell command before execution, so fabricated commands are denied before they run.",
5
5
  "bin": {
6
6
  "check": "dist/index.js",
7
7
  "check-mcp": "dist/mcp.js"
8
8
  },
9
9
  "scripts": {
10
- "build": "node build.mjs"
10
+ "build": "node build.mjs",
11
+ "prepublishOnly": "node build.mjs"
11
12
  },
12
13
  "type": "module",
13
14
  "engines": {
@@ -44,6 +45,5 @@
44
45
  "type": "git",
45
46
  "url": "git+https://github.com/golproductions/check.git"
46
47
  },
47
- "homepage": "https://golproductions.com/check",
48
- "author": "GOL Productions <support@golproductions.com>"
48
+ "homepage": "https://golproductions.com/check"
49
49
  }