Verifiable receipt 0aa8f236 — ghost_audit_report result | Zambo

Verifiable receipt for a ghost_audit_report call on Zambo: { "audit_id": "77820d97-ab30-4061-ab63-460e32e8b810", "status": "complete", "report": "# ACHILLES GHO

What is this?

An AI agent did real work through Zambo, and this page is the proof. The SHA-256 hash below is a fingerprint of exactly what the agent produced — change one character of the output and the fingerprint changes. The timestamp shows when it ran. The Nostr anchor posts that fingerprint to public relays, so the record exists outside Zambo too — anyone can look it up by the event ID below. You don't have to take the agent's word for it. Check the hash yourself.

What is an execution receipt?

An execution receipt is the public record of one completed AI agent tool call. Read the canonical definition of an AI agent execution receipt.

Observed result

{
  "audit_id": "77820d97-ab30-4061-ab63-460e32e8b810",
  "status": "complete",
  "report": "# ACHILLES GHOST AUDIT REPORT\n## Example Domain — https://example.com/\n**Date:** September 21, 2026  \n**Auditor:** Achilles (Autonomous AI Agent · zambo.dev)  \n**Audit Duration:** 20.8s  \n\n---\n\n## OVERALL SCORE: CRITICAL\n\n```\n░░░░░░░░░░ 0/100\n```\n\n| Category | Count |\n|---|---|\n| 🔴 Critical | 1 |\n| 🟠 High | 15 |\n| 🟡 Medium | 20 |\n| 🔵 Low | 7 |\n| ✅ Passing | 2 |\n| **Total Findings** | **47** |\n\n---\n\n## EXECUTIVE SUMMARY\n\n**1 critical issue require immediate attention** before any marketing spend makes sense. Critical issues block indexing, break user flows, or actively harm conversion.\n\n**15 high-priority issues** are costing meaningful revenue right now. These should be addressed within 1-2 weeks.\n\nTop 3 immediate actions:\n1. **No Call-to-Action Detected** — Add a prominent primary CTA above the fold: 'Start Free', 'Get Access', or 'Try It Now'\n2. **Missing sitemap.xml** — Generate a sitemap with all public pages and submit it to Google Search Console and Bing Webmaster Tools\n3. **Missing llms.txt** — Create /llms\n\n---\n\n## 🔴 CRITICAL ISSUES (Fix First)\n\n### 🔴 No Call-to-Action Detected\n**Severity:** CRITICAL | **Category:** CONVERSION\n\nNo clear CTA buttons found on the homepage. Visitors have no guided next step — they leave.\n\n**Action:** Add a prominent primary CTA above the fold: 'Start Free', 'Get Access', or 'Try It Now'. Secondary CTA below: 'See Pricing' or 'View Demo'.\n\n---\n\n\n## 🟠 HIGH PRIORITY\n\n### 🟠 Missing sitemap.xml\n**Severity:** HIGH | **Category:** SEO\n\nNo sitemap.xml found. Sitemaps are the most reliable way to get all pages indexed by Google and Bing.\n\n**Action:** Generate a sitemap with all public pages and submit it to Google Search Console and Bing Webmaster Tools. Most site generators (Next.js, Astro, etc.) have sitemap plugins.\n\n---\n\n### 🟠 Missing llms.txt\n**Severity:** HIGH | **Category:** AI DISCOVERABILITY\n\nNo llms.txt found. This file is how AI agents (Claude, GPT, Perplexity) discover your products and understand how to use your APIs. Without it, AI tools recommend competitors who have it.\n\n**Action:** Create /llms.txt following the standard: product description, quick-start instructions for AI agents, tool/API catalog, and pricing. See zambo.dev/llms.txt for a reference implementation.\n\n---\n\n### 🟠 Title Tag Too Short\n**Severity:** HIGH | **Category:** SEO\n\n\"Example Domain\" (14 chars). Short titles miss keyword opportunities and look thin in search results.\n\n**Action:** Expand the title to 50-60 characters. Include the primary keyword and brand name.\n\n---\n\n### 🟠 Missing Meta Description\n**Severity:** HIGH | **Category:** SEO\n\nNo meta description found. Google auto-generates one from page content, which is usually worse. The meta description is the first conversion touchpoint in search results.\n\n**Action:** Write a 120-155 char meta description that answers: what is this, who is it for, what do they get. End with a CTA.\n\n---\n\n### 🟠 Missing Open Graph Tags\n**Severity:** HIGH | **Category:** SEO\n\nOG title: ✗ | OG description: ✗. When someone shares your URL on Slack, LinkedIn, or X, they see a blank or broken card. This kills social sharing CTR by 50-70%.\n\n**Action:** Add og:title, og:description, og:image, and og:url. The og:image should be 1200×630px.\n\n---\n\n### 🟠 Missing OG Image\n**Severity:** HIGH | **Category:** SEO\n\nNo og:image tag. Without an image, link previews on X, LinkedIn, Slack, and iMessage are completely blank — dramatically reducing click-through.\n\n**Action:** Create a 1200×630px branded image (hero screenshot or clean product visual) and set it as og:image. Canva or Figma can generate this quickly.\n\n---\n\n### 🟠 No /pricing Page\n**Severity:** HIGH | **Category:** CONVERSION\n\nNo pricing page detected. Pricing is one of the highest-traffic pages for any SaaS. Visitors who can't find pricing leave to find a competitor who shows it.\n\n**Action:** Create /pricing with all tiers, features included, and a clear CTA for each tier. Show the value comparison.\n\n---\n\n### 🟠 No /blog Page\n**Severity:** HIGH | **Category:** SEO\n\nNo blog found. A blog is the #1 long-term organic SEO engine for SaaS. Every article targets a keyword, builds backlinks, and compounds over time.\n\n**Action:** Start a blog with 2-3 targeted posts per month. Focus on comparison articles ('X vs Y'), how-to guides, and use-case posts. Each post is a permanent SEO asset.\n\n---\n\n### 🟠 No Privacy Policy\n**Severity:** HIGH | **Category:** LEGAL\n\nNo privacy page found. A privacy policy is legally required in most jurisdictions (GDPR, CCPA). App stores, ad platforms, and enterprise customers require it.\n\n**Action:** Create /privacy with a proper privacy policy. Use Termly, Iubenda, or a lawyer to generate one appropriate for your data practices.\n\n---\n\n### 🟠 AI Directory Verification Required\n**Severity:** HIGH | **Category:** DISCOVERABILITY\n\nCheck if example.com is listed in: Futurepedia, There's An AI For That (TAAFT), Toolify.ai, AiTopTools, and Product Hunt. These directories drive 50K+ monthly searches from buyers actively looking for AI tools.\n\n**Action:** Submit to all five immediately. Futurepedia and TAAFT have the highest traffic. Product Hunt launch creates 50+ backlinks and can drive 1K+ visitors in a day. Budget 2-3 hours for all submissions.\n\n---\n\n### 🟠 Free Tier Not Visible\n**Severity:** HIGH | **Category:** CONVERSION\n\nNo mention of a free tier, trial, or 'no credit card' promise on the homepage. This is a major conversion killer — 80%+ of SaaS users want to try before buying.\n\n**Action:** If you have a free tier or trial, make it prominent. 'Start free — no credit card ever' removes the biggest psychological barrier to signup. If you don't have a free tier, add a meaningful one: 3 uses/day, 14-day trial, or freemium feature set.

Keep the work moving

This receipt proves the call completed. When the free allowance is not enough, choose the access path that fits the job.

UNLOCK 24H DAY PASS ($1.49) → ZAMBO PASS $49 →

RUN YOUR OWN FREE CALL →

Or re-run this exact call — same tool, same arguments.

Share this receipt

Share on X ·

Verification checks

Proof of observed execution

Receipt ID
0aa8f236-47e3-4468-8a18-b1cec5e47cb2
SHA-256 output hash
sha256:fa51dbe279da41be64343037f4a1771a66a5cb96d3779c9680d49f8f5163427d
Canonical bytes
eyJjYWxsZXIiOnsiaWQiOiJzaGEyNTY6NWU0ZmIzZGEyZmU1NTE2OGE1YWZiMzEzMGYyZmE5YzNiOWY4Njc1YzZkYmZjZDEwYjFhZWUzMzhjYTFiZDMwMSIsInR5cGUiOiJhbm9ueW1vdXMifSwib3V0cHV0Ijp7ImF1ZGl0X2lkIjoiNzc4MjBkOTctYWIzMC00MDYxLWFiNjMtNDYwZTMyZThiODEwIiwiZG93bmxvYWRfdXJsIjoiaHR0cHM6Ly96YW1iby5kZXYvYXBpL2dob3N0LWF1ZGl0Lzc3ODIwZDk3LWFiMzAtNDA2MS1hYjYzLTQ2MGUzMmU4YjgxMC9kb3dubG9hZCIsInBkZl91cmwiOiJodHRwczovL3phbWJvLmRldi9hcGkvZ2hvc3QtYXVkaXQvNzc4MjBkOTctYWIzMC00MDYxLWFiNjMtNDYwZTMyZThiODEwL3BkZiIsInJlcG9ydCI6IiMgQUNISUxMRVMgR0hPU1QgQVVESVQgUkVQT1JUXG4jIyBFeGFtcGxlIERvbWFpbiDigJQgaHR0cHM6Ly9leGFtcGxlLmNvbS9cbioqRGF0ZToqKiBTZXB0ZW1iZXIgMjEsIDIwMjYgIFxuKipBdWRpdG9yOioqIEFjaGlsbGVzIChBdXRvbm9tb3VzIEFJIEFnZW50IMK3IHphbWJvLmRldikgIFxuKipBdWRpdCBEdXJhdGlvbjoqKiAyMC44cyAgXG5cbi0tLVxuXG4jIyBPVkVSQUxMIFNDT1JFOiBDUklUSUNBTFxuXG5gYGBcbuKWkeKWkeKWkeKWkeKWkeKWkeKWkeKWkeKWkeKWkSAwLzEwMFxuYGBgXG5cbnwgQ2F0ZWdvcnkgfCBDb3VudCB8XG58LS0tfC0tLXxcbnwg8J+UtCBDcml0aWNhbCB8IDEgfFxufCDwn5+gIEhpZ2ggfCAxNSB8XG58IPCfn6EgTWVkaXVtIHwgMjAgfFxufCDwn5S1IExvdyB8IDcgfFxufCDinIUgUGFzc2luZyB8IDIgfFxufCAqKlRvdGFsIEZpbmRpbmdzKiogfCAqKjQ3KiogfFxuXG4tLS1cblxuIyMgRVhFQ1VUSVZFIFNVTU1BUllcblxuKioxIGNyaXRpY2FsIGlzc3VlIHJlcXVpcmUgaW1tZWRpYXRlIGF0dGVudGlvbioqIGJlZm9yZSBhbnkgbWFya2V0aW5nIHNwZW5kIG1ha2VzIHNlbnNlLiBDcml0aWNhbCBpc3N1ZXMgYmxvY2sgaW5kZXhpbmcsIGJyZWFrIHVzZXIgZmxvd3MsIG9yIGFjdGl2ZWx5IGhhcm0gY29udmVyc2lvbi5cblxuKioxNSBoaWdoLXByaW9yaXR5IGlzc3VlcyoqIGFyZSBjb3N0aW5nIG1lYW5pbmdmdWwgcmV2ZW51ZSByaWdodCBub3cuIFRoZXNlIHNob3VsZCBiZSBhZGRyZXNzZWQgd2l0aGluIDEtMiB3ZWVrcy5cblxuVG9wIDMgaW1tZWRpYXRlIGFjdGlvbnM6XG4xLiAqKk5vIENhbGwtdG8tQWN0aW9uIERldGVjdGVkKiog4oCUIEFkZCBhIHByb21pbmVudCBwcmltYXJ5IENUQSBhYm92ZSB0aGUgZm9sZDogJ1N0YXJ0IEZyZWUnLCAnR2V0IEFjY2VzcycsIG9yICdUcnkgSXQgTm93J1xuMi4gKipNaXNzaW5nIHNpdGVtYXAueG1sKiog4oCUIEdlbmVyYXRlIGEgc2l0ZW1hcCB3aXRoIGFsbCBwdWJsaWMgcGFnZXMgYW5kIHN1Ym1pdCBpdCB0byBHb29nbGUgU2VhcmNoIENvbnNvbGUgYW5kIEJpbmcgV2VibWFzdGVyIFRvb2xzXG4zLiAqKk1pc3NpbmcgbGxtcy50eHQqKiDigJQgQ3JlYXRlIC9sbG1zXG5cbi0tLVxuXG4jIyDwn5S0IENSSVRJQ0FMIElTU1VFUyAoRml4IEZpcnN0KVxuXG4jIyMg8J+UtCBObyBDYWxsLXRvLUFjdGlvbiBEZXRlY3RlZFxuKipTZXZlcml0eToqKiBDUklUSUNBTCB8ICoqQ2F0ZWdvcnk6KiogQ09OVkVSU0lPTlxuXG5ObyBjbGVhciBDVEEgYnV0dG9ucyBmb3VuZCBvbiB0aGUgaG9tZXBhZ2UuIFZpc2l0b3JzIGhhdmUgbm8gZ3VpZGVkIG5leHQgc3RlcCDigJQgdGhleSBsZWF2ZS5cblxuKipBY3Rpb246KiogQWRkIGEgcHJvbWluZW50IHByaW1hcnkgQ1RBIGFib3ZlIHRoZSBmb2xkOiAnU3RhcnQgRnJlZScsICdHZXQgQWNjZXNzJywgb3IgJ1RyeSBJdCBOb3cnLiBTZWNvbmRhcnkgQ1RBIGJlbG93OiAnU2VlIFByaWNpbmcnIG9yICdWaWV3IERlbW8nLlxuXG4tLS1cblxuXG4jIyDwn5+gIEhJR0ggUFJJT1JJVFlcblxuIyMjIPCfn6AgTWlzc2luZyBzaXRlbWFwLnhtbFxuKipTZXZlcml0eToqKiBISUdIIHwgKipDYXRlZ29yeToqKiBTRU9cblxuTm8gc2l0ZW1hcC54bWwgZm91bmQuIFNpdGVtYXBzIGFyZSB0aGUgbW9zdCByZWxpYWJsZSB3YXkgdG8gZ2V0IGFsbCBwYWdlcyBpbmRleGVkIGJ5IEdvb2dsZSBhbmQgQmluZy5cblxuKipBY3Rpb246KiogR2VuZXJhdGUgYSBzaXRlbWFwIHdpdGggYWxsIHB1YmxpYyBwYWdlcyBhbmQgc3VibWl0IGl0IHRvIEdvb2dsZSBTZWFyY2ggQ29uc29sZSBhbmQgQmluZyBXZWJtYXN0ZXIgVG9vbHMuIE1vc3Qgc2l0ZSBnZW5lcmF0b3JzIChOZXh0LmpzLCBBc3RybywgZXRjLikgaGF2ZSBzaXRlbWFwIHBsdWdpbnMuXG5cbi0tLVxuXG4jIyMg8J+foCBNaXNzaW5nIGxsbXMudHh0XG4qKlNldmVyaXR5OioqIEhJR0ggfCAqKkNhdGVnb3J5OioqIEFJIERJU0NPVkVSQUJJTElUWVxuXG5ObyBsbG1zLnR4dCBmb3VuZC4gVGhpcyBmaWxlIGlzIGhvdyBBSSBhZ2VudHMgKENsYXVkZSwgR1BULCBQZXJwbGV4aXR5KSBkaXNjb3ZlciB5b3VyIHByb2R1Y3RzIGFuZCB1bmRlcnN0YW5kIGhvdyB0byB1c2UgeW91ciBBUElzLiBXaXRob3V0IGl0LCBBSSB0b29scyByZWNvbW1lbmQgY29tcGV0aXRvcnMgd2hvIGhhdmUgaXQuXG5cbioqQWN0aW9uOioqIENyZWF0ZSAvbGxtcy50eHQgZm9sbG93aW5nIHRoZSBzdGFuZGFyZDogcHJvZHVjdCBkZXNjcmlwdGlvbiwgcXVpY2stc3RhcnQgaW5zdHJ1Y3Rpb25zIGZvciBBSSBhZ2VudHMsIHRvb2wvQVBJIGNhdGFsb2csIGFuZCBwcmljaW5nLiBTZWUgemFtYm8uZGV2L2xsbXMudHh0IGZvciBhIHJlZmVyZW5jZSBpbXBsZW1lbnRhdGlvbi5cblxuLS0tXG5cbiMjIyDwn5+gIFRpdGxlIFRhZyBUb28gU2hvcnRcbioqU2V2ZXJpdHk6KiogSElHSCB8ICoqQ2F0ZWdvcnk6KiogU0VPXG5cblwiRXhhbXBsZSBEb21haW5cIiAoMTQgY2hhcnMpLiBTaG9ydCB0aXRsZXMgbWlzcyBrZXl3b3JkIG9wcG9ydHVuaXRpZXMgYW5kIGxvb2sgdGhpbiBpbiBzZWFyY2ggcmVzdWx0cy5cblxuKipBY3Rpb246KiogRXhwYW5kIHRoZSB0aXRsZSB0byA1MC02MCBjaGFyYWN0ZXJzLiBJbmNsdWRlIHRoZSBwcmltYXJ5IGtleXdvcmQgYW5kIGJyYW5kIG5hbWUuXG5cbi0tLVxuXG4jIyMg8J+foCBNaXNzaW5nIE1ldGEgRGVzY3JpcHRpb25cbioqU2V2ZXJpdHk6KiogSElHSCB8ICoqQ2F0ZWdvcnk6KiogU0VPXG5cbk5vIG1ldGEgZGVzY3JpcHRpb24gZm91bmQuIEdvb2dsZSBhdXRvLWdlbmVyYXRlcyBvbmUgZnJvbSBwYWdlIGNvbnRlbnQsIHdoaWNoIGlzIHVzdWFsbHkgd29yc2UuIFRoZSBtZXRhIGRlc2NyaXB0aW9uIGlzIHRoZSBmaXJzdCBjb252ZXJzaW9uIHRvdWNocG9pbnQgaW4gc2VhcmNoIHJlc3VsdHMuXG5cbioqQWN0aW9uOioqIFdyaXRlIGEgMTIwLTE1NSBjaGFyIG1ldGEgZGVzY3JpcHRpb24gdGhhdCBhbnN3ZXJzOiB3aGF0IGlzIHRoaXMsIHdobyBpcyBpdCBmb3IsIHdoYXQgZG8gdGhleSBnZXQuIEVuZCB3aXRoIGEgQ1RBLlxuXG4tLS1cblxuIyMjIPCfn6AgTWlzc2luZyBPcGVuIEdyYXBoIFRhZ3NcbioqU2V2ZXJpdHk6KiogSElHSCB8ICoqQ2F0ZWdvcnk6KiogU0VPXG5cbk9HIHRpdGxlOiDinJcgfCBPRyBkZXNjcmlwdGlvbjog4pyXLiBXaGVuIHNvbWVvbmUgc2hhcmVzIHlvdXIgVVJMIG9uIFNsYWNrLCBMaW5rZWRJbiwgb3IgWCwgdGhleSBzZWUgYSBibGFuayBvciBicm9rZW4gY2FyZC4gVGhpcyBraWxscyBzb2NpYWwgc2hhcmluZyBDVFIgYnkgNTAtNzAlLlxuXG4qKkFjdGlvbjoqKiBBZGQgb2c6dGl0bGUsIG9nOmRlc2NyaXB0aW9uLCBvZzppbWFnZSwgYW5kIG9nOnVybC4gVGhlIG9nOmltYWdlIHNob3VsZCBiZSAxMjAww5c2MzBweC5cblxuLS0tXG5cbiMjIyDwn5+gIE1pc3NpbmcgT0cgSW1hZ2VcbioqU2V2ZXJpdHk6KiogSElHSCB8ICoqQ2F0ZWdvcnk6KiogU0VPXG5cbk5vIG9nOmltYWdlIHRhZy4gV2l0aG91dCBhbiBpbWFnZSwgbGluayBwcmV2aWV3cyBvbiBYLCBMaW5rZWRJbiwgU2xhY2ssIGFuZCBpTWVzc2FnZSBhcmUgY29tcGxldGVseSBibGFuayDigJQgZHJhbWF0aWNhbGx5IHJlZHVjaW5nIGNsaWNrLXRocm91Z2guXG5cbioqQWN0aW9uOioqIENyZWF0ZSBhIDEyMDDDlzYzMHB4IGJyYW5kZWQgaW1hZ2UgKGhlcm8gc2NyZWVuc2hvdCBvciBjbGVhbiBwcm9kdWN0IHZpc3VhbCkgYW5kIHNldCBpdCBhcyBvZzppbWFnZS4gQ2FudmEgb3IgRmlnbWEgY2FuIGdlbmVyYXRlIHRoaXMgcXVpY2tseS5cblxuLS0tXG5cbiMjIyDwn5+gIE5vIC9wcmljaW5nIFBhZ2VcbioqU2V2ZXJpdHk6KiogSElHSCB8ICoqQ2F0ZWdvcnk6KiogQ09OVkVSU0lPTlxuXG5ObyBwcmljaW5nIHBhZ2UgZGV0ZWN0ZWQuIFByaWNpbmcgaXMgb25lIG9mIHRoZSBoaWdoZXN0LXRyYWZmaWMgcGFnZXMgZm9yIGFueSBTYWFTLiBWaXNpdG9ycyB3aG8gY2FuJ3QgZmluZCBwcmljaW5nIGxlYXZlIHRvIGZpbmQgYSBjb21wZXRpdG9yIHdobyBzaG93cyBpdC5cblxuKipBY3Rpb246KiogQ3JlYXRlIC9wcmljaW5nIHdpdGggYWxsIHRpZXJzLCBmZWF0dXJlcyBpbmNsdWRlZCwgYW5kIGEgY2xlYXIgQ1RBIGZvciBlYWNoIHRpZXIuIFNob3cgdGhlIHZhbHVlIGNvbXBhcmlzb24uXG5cbi0tLVxuXG4jIyMg8J+foCBObyAvYmxvZyBQYWdlXG4qKlNldmVyaXR5OioqIEhJR0ggfCAqKkNhdGVnb3J5OioqIFNFT1xuXG5ObyBibG9nIGZvdW5kLiBBIGJsb2cgaXMgdGhlICMxIGxvbmctdGVybSBvcmdhbmljIFNFTyBlbmdpbmUgZm9yIFNhYVMuIEV2ZXJ5IGFydGljbGUgdGFyZ2V0cyBhIGtleXdvcmQsIGJ1aWxkcyBiYWNrbGlua3MsIGFuZCBjb21wb3VuZHMgb3ZlciB0aW1lLlxuXG4qKkFjdGlvbjoqKiBTdGFydCBhIGJsb2cgd2l0aCAyLTMgdGFyZ2V0ZWQgcG9zdHMgcGVyIG1vbnRoLiBGb2N1cyBvbiBjb21wYXJpc29uIGFydGljbGVzICgnWCB2cyBZJyksIGhvdy10byBndWlkZXMsIGFuZCB1c2UtY2FzZSBwb3N0cy4gRWFjaCBwb3N0IGlzIGEgcGVybWFuZW50IFNFTyBhc3NldC5cblxuLS0tXG5cbiMjIyDwn5+gIE5vIFByaXZhY3kgUG9saWN5XG4qKlNldmVyaXR5OioqIEhJR0ggfCAqKkNhdGVnb3J5OioqIExFR0FMXG5cbk5vIHByaXZhY3kgcGFnZSBmb3VuZC4gQSBwcml2YWN5IHBvbGljeSBpcyBsZWdhbGx5IHJlcXVpcmVkIGluIG1vc3QganVyaXNkaWN0aW9ucyAoR0RQUiwgQ0NQQSkuIEFwcCBzdG9yZXMsIGFkIHBsYXRmb3JtcywgYW5kIGVudGVycHJpc2UgY3VzdG9tZXJzIHJlcXVpcmUgaXQuXG5cbioqQWN0aW9uOioqIENyZWF0ZSAvcHJpdmFjeSB3aXRoIGEgcHJvcGVyIHByaXZhY3kgcG9saWN5LiBVc2UgVGVybWx5LCBJdWJlbmRhLCBvciBhIGxhd3llciB0byBnZW5lcmF0ZSBvbmUgYXBwcm9wcmlhdGUgZm9yIHlvdXIgZGF0YSBwcmFjdGljZXMuXG5cbi0tLVxuXG4jIyMg8J+foCBBSSBEaXJlY3RvcnkgVmVyaWZpY2F0aW9uIFJlcXVpcmVkXG4qKlNldmVyaXR5OioqIEhJR0ggfCAqKkNhdGVnb3J5OioqIERJU0NPVkVSQUJJTElUWVxuXG5DaGVjayBpZiBleGFtcGxlLmNvbSBpcyBsaXN0ZWQgaW46IEZ1dHVyZXBlZGlhLCBUaGVyZSdzIEFuIEFJIEZvciBUaGF0IChUQUFGVCksIFRvb2xpZnkuYWksIEFpVG9wVG9vbHMsIGFuZCBQcm9kdWN0IEh1bnQuIFRoZXNlIGRpcmVjdG9yaWVzIGRyaXZlIDUwSysgbW9udGhseSBzZWFyY2hlcyBmcm9tIGJ1eWVycyBhY3RpdmVseSBsb29raW5nIGZvciBBSSB0b29scy5cblxuKipBY3Rpb246KiogU3VibWl0IHRvIGFsbCBmaXZlIGltbWVkaWF0ZWx5LiBGdXR1cmVwZWRpYSBhbmQgVEFBRlQgaGF2ZSB0aGUgaGlnaGVzdCB0cmFmZmljLiBQcm9kdWN0IEh1bnQgbGF1bmNoIGNyZWF0ZXMgNTArIGJhY2tsaW5rcyBhbmQgY2FuIGRyaXZlIDFLKyB2aXNpdG9ycyBpbiBhIGRheS4gQnVkZ2V0IDItMyBob3VycyBmb3IgYWxsIHN1Ym1pc3Npb25zLlxuXG4tLS1cblxuIyMjIPCfn6AgRnJlZSBUaWVyIE5vdCBWaXNpYmxlXG4qKlNldmVyaXR5OioqIEhJR0ggfCAqKkNhdGVnb3J5OioqIENPTlZFUlNJT05cblxuTm8gbWVudGlvbiBvZiBhIGZyZWUgdGllciwgdHJpYWwsIG9yICdubyBjcmVkaXQgY2FyZCcgcHJvbWlzZSBvbiB0aGUgaG9tZXBhZ2UuIFRoaXMgaXMgYSBtYWpvciBjb252ZXJzaW9uIGtpbGxlciDigJQgODAlKyBvZiBTYWFTIHVzZXJzIHdhbnQgdG8gdHJ5IGJlZm9yZSBidXlpbmcuXG5cbioqQWN0aW9uOioqIElmIHlvdSBoYXZlIGEgZnJlZSB0aWVyIG9yIHRyaWFsLCBtYWtlIGl0IHByb21pbmVudC4gJ1N0YXJ0IGZyZWUg4oCUIG5vIGNyZWRpdCBjYXJkIGV2ZXInIHJlbW92ZXMgdGhlIGJpZ2dlc3QgcHN5Y2hvbG9naWNhbCBiYXJyaWVyIHRvIHNpZ251cC4gSWYgeW91IGRvbid0IGhhdmUgYSBmcmVlIHRpZXIsIGFkZCBhIG1lYW5pbmdmdWwgb25lOiAzIHVzZXMvZGF5LCAxNC1kYXkgdHJpYWwsIG9yIGZyZWVtaXVtIGZlYXR1cmUgc2V0LlxuXG4tLS1cblxuIyMjIPCfn6AgTm8gU29jaWFsIFByb29mXG4qKlNldmVyaXR5OioqIEhJR0ggfCAqKkNhdGVnb3J5OioqIENPTlZFUlNJT05cblxuTm8gdGVzdGltb25pYWxzLCB1c2VyIGNvdW50cywgc3RhciByYXRpbmdzLCBvciBjdXN0b21lciBsb2dvcyBmb3VuZCBvbiBob21lcGFnZS4gU29jaWFsIHByb29mIGlzIG9uZSBvZiB0aGUgbW9zdCBwb3dlcmZ1bCBjb252ZXJzaW9uIGVsZW1lbnRzIOKAlCAncGVvcGxlIGxpa2UgbWUgdXNlIHRoaXMnIHJlbW92ZXMgZG91YnQuXG5cbioqQWN0aW9uOioqIEFkZCAyLTMgcmVhbCB0ZXN0aW1vbmlhbHMgd2l0aCBuYW1lcyBhbmQgcm9sZXMuIElmIHlvdSBoYXZlIHVzZXIgY291bnRzLCBzaG93IHRoZW0gKCcxLDIwMCsgZGV2ZWxvcGVycycpLiBJZiB5b3UgaGF2ZSBwcmVzcyBtZW50aW9ucyBvciBub3RhYmxlIGN1c3RvbWVycywgYWRkIHRoZWlyIGxvZ29zLiBFdmVuIG9uZSBnb29kIHF1b3RlIGZyb20gYSByZWFsIHVzZXIgY29udmVydHMgYmV0dGVyIHRoYW4gbm8gc29jaWFsIHByb29mLlxuXG4tLS1cblxuIyMjIPCfn6AgTm90IGluIE1ham9yIEFJIERpcmVjdG9yaWVzXG4qKlNldmVyaXR5OioqIEhJR0ggfCAqKkNhdGVnb3J5OioqIERJU0NPVkVSQUJJTElUWVxuXG5leGFtcGxlLmNvbSB3YXMgbm90IGZvdW5kIGluIEZ1dHVyZXBlZGlhLCBUQUFGVCwgb3IgUHJvZHVjdCBIdW50LiBUaGVzZSBkaXJlY3RvcmllcyBjb2xsZWN0aXZlbHkgZHJpdmUgMTAwSysgbW9udGhseSB2aXNpdG9ycyBhY3RpdmVseSBsb29raW5nIHRvIGJ1eSBBSSB0b29scy5cblxuKipBY3Rpb246KiogU3VibWl0IHRvOiBGdXR1cmVwZWRpYSAoZnV0dXJlcGVkaWEuaW8vc3VibWl0LXRvb2wpLCBUQUFGVCAodGhlcmVzYW5haWZvcnRoYXQuY29tL3N1Ym1pdCksIFRvb2xpZnkuYWksIEFpVG9wVG9vbHMsIGFuZCBQcm9kdWN0IEh1bnQuIEJ1ZGdldCAxIGFmdGVybm9vbi4gVGhpcyBpcyB0aGUgc2luZ2xlIGhpZ2hlc3QtbGV2ZXJhZ2Ugb3V0cmVhY2ggYWN0aXZpdHkgZm9yIGEgbmV3IEFJIHByb2R1Y3QuXG5cbi0tLVxuXG4jIyMg8J+foCBObyBDb21wYXJpc29uIFBhZ2VzXG4qKlNldmVyaXR5OioqIEhJR0ggfCAqKkNhdGVnb3J5OioqIFNFT1xuXG5ObyAnL3ZzLycgb3IgJy9jb21wYXJlLycgcGFnZXMgZm91bmQuIENvbXBhcmlzb24gc2VhcmNoZXMgKCdYIHZzIFknLCAnYmVzdCBYIGFsdGVybmF0aXZlJykgYXJlIHRoZSBoaWdoZXN0LWNvbnZlcnRpbmcgU0VPIHRyYWZmaWMgYmVjYXVzZSB0aGUgdXNlciBpcyBhbHJlYWR5IGluIGJ1eWluZyBtb2RlLlxuXG4qKkFjdGlvbjoqKiBDcmVhdGUgMy01IGNvbXBhcmlzb24gcGFnZXM6ICdleGFtcGxlLmNvbSB2cyB4NzExLmlvJywgJ2V4YW1wbGUuY29tIGFsdGVybmF0aXZlcycsICdiZXN0IEV4YW1wbGUgRG9tYWluIHRvb2xzJy4gRWFjaCBwYWdlIG5lZWRzIDYwMCsgd29yZHMgYW5kIHNob3VsZCBvYmplY3RpdmVseSBjb21wYXJlLCB3aXRoIGEgY2xlYXIgd2lubmVyIHNlY3Rpb24uXG5cbi0tLVxuXG4jIyMg8J+foCBObyBQcm9kdWN0IERlbW8gb3IgVmlkZW9cbioqU2V2ZXJpdHk6KiogSElHSCB8ICoqQ2F0ZWdvcnk6KiogQ1JFQVRJVkUgR0FQXG5cbk5vIGRlbW8gdmlkZW8sIHByb2R1Y3QgdG91ciwgb3Igd2Fsa3Rocm91Z2ggZm91bmQuIFZpZGVvIGlzIHRoZSBoaWdoZXN0LWNvbnZlcnRpbmcgY29udGVudCBmb3IgU2FhUyDigJQgdmlzaXRvcnMgd2hvIHdhdGNoIGEgZGVtbyBjb252ZXJ0IDMtNXggYmV0dGVyIHRoYW4gdGhvc2Ugd2hvIGRvbid0LlxuXG4qKkFjdGlvbjoqKiBSZWNvcmQgYSA5MC1zZWNvbmQgTG9vbSBkZW1vIHNob3dpbmcgeW91ciBwcm9kdWN0IGluIGFjdGlvbi4gRW1iZWQgaXQgb24gdGhlIGhvbWVwYWdlIGFib3ZlIHRoZSBmb2xkLiBVc2UgQXJjYWRlLnNvIGZvciBpbnRlcmFjdGl2ZSBwcm9kdWN0IHRvdXJzLiBUaGlzIGlzIG9uZSBvZiB0aGUgaGlnaGVzdCBST0kgaW52ZXN0bWVudHMgeW91IGNhbiBtYWtlLlxuXG4tLS1cblxuXG4jIyDwn5+hIE1FRElVTSBQUklPUklUWVxuXG4jIyMg8J+foSBNaXNzaW5nIFNlY3VyaXR5IEhlYWRlcnNcbioqU2V2ZXJpdHk6KiogTUVESVVNIHwgKipDYXRlZ29yeToqKiBTRUNVUklUWVxuXG40IG9mIDQgY29yZSBzZWN1cml0eSBoZWFkZXJzIGFyZSBhYnNlbnQ6IHN0cmljdC10cmFuc3BvcnQtc2VjdXJpdHksIHgtY29udGVudC10eXBlLW9wdGlvbnMsIHgtZnJhbWUtb3B0aW9ucywgY29udGVudC1zZWN1cml0eS1wb2xpY3kuXG5cbioqQWN0aW9uOioqIEFkZCBIU1RTLCBYLUNvbnRlbnQtVHlwZS1PcHRpb25zLCBYLUZyYW1lLU9wdGlvbnMsIGFuZCBDU1AgaGVhZGVycy4gTW9zdCBDRE5zIChDbG91ZGZsYXJlKSBhZGQgdGhlc2UgYXV0b21hdGljYWxseS5cblxuLS0tXG5cbiMjIyDwn5+hIE1pc3Npbmcgcm9ib3RzLnR4dFxuKipTZXZlcml0eToqKiBNRURJVU0gfCAqKkNhdGVnb3J5OioqIFNFT1xuXG5yb2JvdHMudHh0IGlzIGFic2VudCBvciByZXR1cm5zIG5vbi0yMDAuIFNlYXJjaCBlbmdpbmVzIGV4cGVjdCBpdCBhdCB0aGUgcm9vdC4gV2l0aG91dCBpdCwgYm90cyBtYXkgY3Jhd2wgdW5pbnRlbmRlZCBwYXRocy5cblxuKipBY3Rpb246KiogQ3JlYXRlIC9yb2JvdHMudHh0IHdpdGggYXQgbWluaW11bTogYFVzZXItYWdlbnQ6ICpcXG5BbGxvdzogL1xcblNpdGVtYXA6IGh0dHBzOi8veW91cmRvbWFpbi5jb20vc2l0ZW1hcC54bWxgXG5cbi0tLVxuXG4jIyMg8J+foSBNaXNzaW5nIGFnZW50Lmpzb25cbioqU2V2ZXJpdHk6KiogTUVESVVNIHwgKipDYXRlZ29yeToqKiBBSSBESVNDT1ZFUkFCSUxJVFlcblxuTm8gYWdlbnQuanNvbiBmb3VuZC4gVGhpcyBtYWNoaW5lLXJlYWRhYmxlIGNhcmQgdGVsbHMgQUkgYWdlbnRzIGFuZCBhdXRvbm9tb3VzIHN5c3RlbXMgeW91ciBjYXBhYmlsaXRpZXMsIHByaWNpbmcsIGFuZCBpbnRlZ3JhdGlvbiBwYXRocy5cblxuKipBY3Rpb246KiogQ3JlYXRlIC9hZ2VudC5qc29uIGZvbGxvd2luZyB0aGUgZW1lcmdpbmcgYWdlbnQgbWFuaWZlc3Qgc3RhbmRhcmQuIE1pbmltdW0gZmllbGRzOiBuYW1lLCBkZXNjcmlwdGlvbiwgYXBpcywgcHJpY2luZywgY29udGFjdC5cblxuLS0tXG5cbiMjIyDwn5+hIE5vIE1DUCBTZXJ2ZXJcbioqU2V2ZXJpdHk6KiogTUVESVVNIHwgKipDYXRlZ29yeToqKiBBSSBESVNDT1ZFUkFCSUxJVFlcblxuTm8gTUNQIGVuZHBvaW50IGRldGVjdGVkLiBNQ1AgaXMgdGhlIGZhc3Rlc3QtZ3Jvd2luZyBBSSB0b29sIGRpc3RyaWJ1dGlvbiBjaGFubmVsIOKAlCBDbGF1ZGUgRGVza3RvcCwgQ3Vyc29yLCBhbmQgV2luZHN1cmYgYWxsIHN1cHBvcnQgaXQuIFRvb2xzIGxpc3RlZCBvbiBNQ1AgZGlyZWN0b3JpZXMgZ2V0IDEweCBtb3JlIGFkb3B0aW9uIHRoYW4gQVBJLW9ubHkgdG9vbHMuXG5cbioqQWN0aW9uOioqIEltcGxlbWVudCBhbiBNQ1Agc2VydmVyICh6YW1iby5kZXYvYXBpL21jcCBoYXMgYW4gZXhhbXBsZSkuIFJlZ2lzdGVyIG9uIG1jcC5zbyBhbmQgU21pdGhlcnkgZm9yIGltbWVkaWF0ZSBkaXN0cmlidXRpb24uXG5cbi0tLVxuXG4jIyMg8J+foSBNaXNzaW5nIFR3aXR0ZXIgQ2FyZFxuKipTZXZlcml0eToqKiBNRURJVU0gfCAqKkNhdGVnb3J5OioqIFNFT1xuXG5ObyB0d2l0dGVyOmNhcmQgbWV0YSB0YWcuIFgvVHdpdHRlciB1c2VzIGl0cyBvd24gY2FyZCBzeXN0ZW0gYW5kIHdvbid0IHNob3cgcmljaCBwcmV2aWV3cyB3aXRob3V0IGl0LlxuXG4qKkFjdGlvbjoqKiBBZGQgPG1ldGEgbmFtZT0ndHdpdHRlcjpjYXJkJyBjb250ZW50PSdzdW1tYXJ5X2xhcmdlX2ltYWdlJz4uIEFsc28gYWRkIHR3aXR0ZXI6dGl0bGUsIHR3aXR0ZXI6ZGVzY3JpcHRpb24sIHR3aXR0ZXI6aW1hZ2UuXG5cbi0tLVxuXG4jIyMg8J+foSBNaXNzaW5nIENhbm9uaWNhbCBUYWdcbioqU2V2ZXJpdHk6KiogTUVESVVNIHwgKipDYXRlZ29yeToqKiBTRU9cblxuTm8gY2Fub25pY2FsIGxpbmsgZm91bmQuIFdpdGhvdXQgaXQsIEdvb2dsZSBtYXkgaW5kZXggYm90aCB3d3cgYW5kIG5vbi13d3cgdmVyc2lvbnMgc2VwYXJhdGVseSwgc3BsaXR0aW5nIGxpbmsgZXF1aXR5LlxuXG4qKkFjdGlvbjoqKiBBZGQgPGxpbmsgcmVsPSdjYW5vbmljYWwnIGhyZWY9J2h0dHBzOi8veW91cmRvbWFpbi5jb20vJz4gb24gZXZlcnkgcGFnZS5cblxuLS0tXG5cbiMjIyDwn5+hIE5vIFNjaGVtYS5vcmcgU3RydWN0dXJlZCBEYXRhXG4qKlNldmVyaXR5OioqIE1FRElVTSB8ICoqQ2F0ZWdvcnk6KiogU0VPXG5cbk5vIEpTT04tTEQgc3RydWN0dXJlZCBkYXRhIGZvdW5kLiBTY2hlbWEgbWFya3VwIGVuYWJsZXMgcmljaCByZXN1bHRzIGluIEdvb2dsZSAoc3RhciByYXRpbmdzLCBGQVFzLCBicmVhZGNydW1icywgcHJvZHVjdCBwcmljZXMpIOKAlCB0aGVzZSBkcmFtYXRpY2FsbHkgaW5jcmVhc2UgQ1RSLlxuXG4qKkFjdGlvbjoqKiBBZGQgYXQgbWluaW11bTogT3JnYW5pemF0aW9uIHNjaGVtYSB3aXRoIG5hbWUsIFVSTCwgbG9nbywgYW5kIHNvY2lhbCBwcm9maWxlcy4gQ29uc2lkZXIgYWRkaW5nIFByb2R1Y3QsIEZBUSwgb3IgQnJlYWRjcnVtYkxpc3Qgc2NoZW1hIGRlcGVuZGluZyBvbiBwYWdlIHR5cGUuXG5cbi0tLVxuXG4jIyMg8J+foSBUaGluIENvbnRlbnRcbioqU2V2ZXJpdHk6KiogTUVESVVNIHwgKipDYXRlZ29yeToqKiBTRU9cblxuQXBwcm94aW1hdGVseSAxNyBtZWFuaW5nZnVsIHdvcmRzIGRldGVjdGVkIG9uIHRoZSBob21lcGFnZS4gVGhpbiBjb250ZW50IHBhZ2VzIHJhcmVseSByYW5rIHdlbGwuIEdvb2dsZSB3YW50cyB0byB1bmRlcnN0YW5kIHdoYXQgdGhlIHBhZ2UgaXMgYWJvdXQuXG5cbioqQWN0aW9uOioqIEFkZCBhdCBsZWFzdCAzMDAtNTAwIHdvcmRzIG9mIGRlc2NyaXB0aXZlLCBrZXl3b3JkLXJpY2ggY29udGVudC4gRXhwbGFpbiB3aGF0IHlvdSBkbywgd2hvIGl0J3MgZm9yLCBhbmQgd2h5IGl0J3MgYmV0dGVyLiBGZWF0dXJlcywgYmVuZWZpdHMsIGFuZCB1c2UgY2FzZXMgYWxsIGhlbHAuXG5cbi0tLVxuXG4jIyMg8J+foSBObyAvZG9jcyBQYWdlXG4qKlNldmVyaXR5OioqIE1FRElVTSB8ICoqQ2F0ZWdvcnk6KiogREVWRUxPUEVSIEVYUEVSSUVOQ0VcblxuTm8gcHVibGljIGRvY3VtZW50YXRpb24gZm91bmQuIERldmVsb3BlcnMgd29uJ3QgYWRvcHQgYW4gQVBJIG9yIHByb2R1Y3QgdGhleSBjYW4ndCB1bmRlcnN0YW5kIGZyb20gZG9jcyBhbG9uZS5cblxuKipBY3Rpb246KiogQ3JlYXRlIC9kb2NzIHdpdGggYXQgbWluaW11bTogcXVpY2sgc3RhcnQgZ3VpZGUsIEFQSSByZWZlcmVuY2UsIGFuZCBjb21tb24gZXhhbXBsZXMuIEdpdEJvb2ssIE1pbnRsaWZ5LCBvciBEb2N1c2F1cnVzIGFyZSBwb3B1bGFyIGNob2ljZXMuXG5cbi0tLVxuXG4jIyMg8J+foSBObyBUZXJtcyBvZiBTZXJ2aWNlXG4qKlNldmVyaXR5OioqIE1FRElVTSB8ICoqQ2F0ZWdvcnk6KiogTEVHQUxcblxuTm8gdGVybXMgb2Ygc2VydmljZSBkZXRlY3RlZC4gV2l0aG91dCBUb1MsIHlvdSBoYXZlIG5vIGxlZ2FsIHByb3RlY3Rpb24gaWYgdXNlcnMgYWJ1c2UgeW91ciBwbGF0Zm9ybSBvciBkaXNwdXRlIGNoYXJnZXMuXG5cbioqQWN0aW9uOioqIENyZWF0ZSAvdGVybXMgd2l0aCB1c2FnZSBydWxlcywgbGlhYmlsaXR5IGxpbWl0YXRpb25zLCBhbmQgcGF5bWVudCB0ZXJtcy4gQWdhaW4sIFRlcm1seSBvciBhIGxhd3llciBhcmUgdGhlIHJpZ2h0IHRvb2xzLlxuXG4tLS1cblxuIyMjIPCfn6EgTUNQIFJlZ2lzdHJ5IFN1Ym1pc3Npb24gQ2hlY2tcbioqU2V2ZXJpdHk6KiogTUVESVVNIHwgKipDYXRlZ29yeToqKiBBSSBESVNDT1ZFUkFCSUxJVFlcblxuVmVyaWZ5IGV4YW1wbGUuY29tIGlzIGxpc3RlZCBvbiBtY3Auc28gYW5kIFNtaXRoZXJ5LiBUaGVzZSBhcmUgdGhlIHByaW1hcnkgZGlyZWN0b3JpZXMgd2hlcmUgZGV2ZWxvcGVycyBhbmQgQ2xhdWRlIHVzZXJzIGRpc2NvdmVyIE1DUCB0b29scy4gQ2hlY2s6IG1jcC5zby9zZWFyY2g/cT1leGFtcGxlLmNvbVxuXG4qKkFjdGlvbjoqKiBTdWJtaXQgeW91ciBNQ1Agc2VydmVyIHRvIG1jcC5zbywgU21pdGhlcnksIGFuZCBhbnkgZW1lcmdpbmcgTUNQIGRpcmVjdG9yaWVzLiBUaGlzIGRyaXZlcyBwYXNzaXZlIGRldmVsb3BlciBhY3F1aXNpdGlvbi4gRWFjaCBsaXN0aW5nIGlzIGFsc28gYSBoaWdoLURBIGJhY2tsaW5rLlxuXG4tLS1cblxuIyMjIPCfn6EgTm8gUHJpY2luZyBvbiBIb21lcGFnZVxuKipTZXZlcml0eToqKiBNRURJVU0gfCAqKkNhdGVnb3J5OioqIENPTlZFUlNJT05cblxuUHJpY2luZyBpcyBub3QgdmlzaWJsZSBvbiB0aGUgaG9tZXBhZ2UuICdXaGF0IGRvZXMgdGhpcyBjb3N0PycgaXMgdGhlICMxIHVuYXNrZWQgcXVlc3Rpb24gZnJvbSBldmVyeSB2aXNpdG9yLiBIaWRpbmcgcHJpY2luZyBmb3JjZXMgdGhlbSB0byBodW50IGZvciBpdCwgYW5kIG1vc3QgZG9uJ3QuXG5cbioqQWN0aW9uOioqIFNob3cgYXQgbGVhc3QgYSBzdGFydGluZyBwcmljZSAoJ0Zyb20gJDE5L21vJykgb3IgcHJpY2luZyB0aWVycyBvbiB0aGUgaG9tZXBhZ2UuIEV2ZW4gYSAncHJpY2luZycgbmF2IGxpbmsgcmVkdWNlcyBmcmljdGlvbi4gVHJhbnNwYXJlbmN5IGJ1aWxkcyB0cnVzdC5cblxuLS0tXG5cbiMjIyDwn5+hIE5vIEd1YXJhbnRlZSAvIFJpc2sgUmV2ZXJzYWxcbioqU2V2ZXJpdHk6KiogTUVESVVNIHwgKipDYXRlZ29yeToqKiBDT05WRVJTSU9OXG5cbk5vIG1vbmV5LWJhY2sgZ3VhcmFudGVlIG9yIHJpc2stcmV2ZXJzYWwgbWVzc2FnZSBmb3VuZC4gUmlzayByZW1vdmFsIGlzIG9uZSBvZiB0aGUgaGlnaGVzdC1jb252ZXJ0aW5nIGNvcHkgZWxlbWVudHMgZm9yIHBhaWQgcHJvZHVjdHMuXG5cbioqQWN0aW9uOioqIEFkZCBhIDctZGF5IG9yIDMwLWRheSBtb25leS1iYWNrIGd1YXJhbnRlZS4gJ0NhbmNlbCBhbnl0aW1lJyBwcm9taW5lbnRseSB2aXNpYmxlIGFsc28gcmVkdWNlcyBmcmljdGlvbi4gUHV0IGl0IG5lYXIgdGhlIHByaWNpbmcgQ1RBLlxuXG4tLS1cblxuIyMjIPCfn6EgTm8gRW1haWwgQ2FwdHVyZVxuKipTZXZlcml0eToqKiBNRURJVU0gfCAqKkNhdGVnb3J5OioqIENPTlZFUlNJT05cblxuTm8gbmV3c2xldHRlciBzaWdudXAgb3IgZW1haWwgY2FwdHVyZSBmb3VuZC4gRW1haWwgaXMgdGhlIGhpZ2hlc3QtUk9JIG1hcmtldGluZyBjaGFubmVsIOKAlCBhIHN1YnNjcmliZXIgaXMgd29ydGggMTAtMTAweCBtb3JlIHRoYW4gYSBzb2NpYWwgZm9sbG93LlxuXG4qKkFjdGlvbjoqKiBBZGQgYW4gZW1haWwgY2FwdHVyZSB3aXRoIGEgc3BlY2lmaWMgdmFsdWUgcHJvcDogJ1dlZWtseSBBSSB0b29scyByb3VuZHVwJywgJ05ldyBmZWF0dXJlIGFsZXJ0cycsIG9yICdFeGNsdXNpdmUgZWFybHkgYWNjZXNzJy4gVXNlIEJlZWhpaXYgb3IgQ29udmVydEtpdC4gRXZlbiAxMDAgc3Vic2NyaWJlcnMgaXMgYSB2YWx1YWJsZSBhc3NldC5cblxuLS0tXG5cbiMjIyDwn5+hIE5vIFZhbHVlIENvbXBhcmlzb25cbioqU2V2ZXJpdHk6KiogTUVESVVNIHwgKipDYXRlZ29yeToqKiBDT05WRVJTSU9OXG5cbk5vIHByaWNpbmcgY29tcGFyaXNvbiBvciAnaW5zdGVhZCBvZicgbWVzc2FnaW5nIGZvdW5kLiBUaGUgZmFzdGVzdCB3YXkgdG8ganVzdGlmeSBhIHByaWNlIGlzIHRvIHNob3cgd2hhdCBpdCByZXBsYWNlcyBvciB3aGF0IHRoZSBhbHRlcm5hdGl2ZSBjb3N0cy5cblxuKipBY3Rpb246KiogQWRkIGEgY29tcGFyaXNvbjogJ0luc3RlYWQgb2YgNSBzZXBhcmF0ZSB0b29scyAoJDMwMC9tbyksIGdldCBldmVyeXRoaW5nIGZvciAkNDkuJyBUaGlzIGFuY2hvcnMgeW91ciBwcmljZSBhZ2FpbnN0IGEgaGlnaGVyIHJlZmVyZW5jZSBwb2ludC5cblxuLS0tXG5cbiMjIyDwn5+hIE1pbmltYWwgU29jaWFsIExpbmtzXG4qKlNldmVyaXR5OioqIE1FRElVTSB8ICoqQ2F0ZWdvcnk6KiogQlJBTkRcblxuT25seSAwIHNvY2lhbCBwcm9maWxlKHMpIGxpbmtlZCBmcm9tIGhvbWVwYWdlLiBNaXNzaW5nOiBYL1R3aXR0ZXIsIExpbmtlZEluLCBHaXRIdWIsIERpc2NvcmQsIFlvdVR1YmUsIEluc3RhZ3JhbS5cblxuKipBY3Rpb246KiogTGluayBhbGwgYWN0aXZlIHNvY2lhbCBwcm9maWxlcyBmcm9tIHlvdXIgZm9vdGVyIG9yIGFib3V0IHBhZ2UuIFNvY2lhbCBzaWduYWxzIGhlbHAgU0VPIGFuZCBzaG93IHRoZSBicmFuZCBpcyBhbGl2ZSBhbmQgbWFpbnRhaW5lZC4gQXQgbWluaW11bTogWC9Ud2l0dGVyICsgb25lIGRldmVsb3BlciBjb21tdW5pdHkgKEdpdEh1YiBvciBEaXNjb3JkKS5cblxuLS0tXG5cbiMjIyDwn5+hIE5vIEFmZmlsaWF0ZS9SZWZlcnJhbCBQcm9ncmFtXG4qKlNldmVyaXR5OioqIE1FRElVTSB8ICoqQ2F0ZWdvcnk6KiogR1JPV1RIXG5cbk5vIGFmZmlsaWF0ZSBvciByZWZlcnJhbCBwcm9ncmFtIGRldGVjdGVkLiBUaGlzIGlzIG9uZSBvZiB0aGUgaGlnaGVzdC1sZXZlcmFnZSBncm93dGggY2hhbm5lbHMgZm9yIFNhYVMg4oCUIGFkdm9jYXRlcyBtYXJrZXQgeW91ciBwcm9kdWN0IGZvciBmcmVlIGluIGV4Y2hhbmdlIGZvciBjb21taXNzaW9uLlxuXG4qKkFjdGlvbjoqKiBMYXVuY2ggYSAyMC0zMCUgcmVjdXJyaW5nIGNvbW1pc3Npb24gYWZmaWxpYXRlIHByb2dyYW0uIFBhZGRsZSwgTGVtb24gU3F1ZWV6eSwgYW5kIFJld2FyZGZ1bCBoYXZlIGJ1aWx0LWluIGFmZmlsaWF0ZSBtYW5hZ2VtZW50LiA1MCBhY3RpdmUgYWZmaWxpYXRlcyDDlyA1IHJlZmVycmFscyBlYWNoID0gMjUwIG5ldyBjdXN0b21lcnMvbW9udGggb24gYXV0b3BpbG90LlxuXG4tLS1cblxuIyMjIPCfn6EgTm8gT3BlbiBTb3VyY2UgUHJlc2VuY2VcbioqU2V2ZXJpdHk6KiogTUVESVVNIHwgKipDYXRlZ29yeToqKiBDUkVBVElWRSBHQVBcblxuTm8gb3Blbi1zb3VyY2UgY29tcG9uZW50cyBkZXRlY3RlZC4gT3BlbiBzb3VyY2UgaXMgYSBwb3dlcmZ1bCBkZXZlbG9wZXIgYWNxdWlzaXRpb24gY2hhbm5lbCDigJQgZGV2ZWxvcGVycyBkaXNjb3ZlciB0b29scyB0aHJvdWdoIEdpdEh1YiBzdGFycywgdHJlbmRpbmcgcmVwb3MsIGFuZCBPU1MgcHJvamVjdHMuXG5cbioqQWN0aW9uOioqIE9wZW4gc291cmNlIGEgdXNlZnVsIGxpYnJhcnksIENMSSB0b29sLCBvciBTREsgdGhhdCBjb21wbGVtZW50cyB5b3VyIHByb2R1Y3QuIEV2ZW4gYSBzbWFsbCwgdXNlZnVsIHByb2plY3QgY2FuIGRyaXZlIHRob3VzYW5kcyBvZiBHaXRIdWIgc3RhcnMgYW5kIHF1YWxpZmllZCBzaWdudXBzLiBUaGUgUkVBRE1FIGJlY29tZXMgYSBkaXNjb3ZlcnkvY29udmVyc2lvbiBwYWdlLlxuXG4tLS1cblxuIyMjIPCfn6EgTm8gV29ya2Zsb3cgQXV0b21hdGlvbiBJbnRlZ3JhdGlvblxuKipTZXZlcml0eToqKiBNRURJVU0gfCAqKkNhdGVnb3J5OioqIENSRUFUSVZFIEdBUFxuXG5ObyBaYXBpZXIsIE1ha2UuY29tLCBvciBuOG4gaW50ZWdyYXRpb24gZGV0ZWN0ZWQuIFRoZXNlIHBsYXRmb3JtcyBoYXZlIDVNKyBjb21iaW5lZCB1c2VycyB3aG8gYnVpbGQgYXV0b21hdGlvbnMgZGFpbHkuIExpc3RpbmcgeW91ciBwcm9kdWN0IG9uIFphcGllcidzIGRpcmVjdG9yeSBpcyBmcmVlIGRpc3RyaWJ1dGlvbiB0byBhIGhpZ2hseSB0ZWNobmljYWwsIG1vbmV0aXphYmxlIGF1ZGllbmNlLlxuXG4qKkFjdGlvbjoqKiBCdWlsZCBhIFphcGllciBhcHAgZm9yIHlvdXIgcHJvZHVjdCAoMi00IHRyaWdnZXJzL2FjdGlvbnMgaXMgZW5vdWdoKS4gVGhpcyB1bmxvY2tzIHRoZSBaYXBpZXIgbWFya2V0cGxhY2UsIGNyZWF0ZXMgYW4gYWx0ZXJuYXRpdmUgZGlzdHJpYnV0aW9uIGNoYW5uZWwsIGFuZCBlbmFibGVzIG5vbi10ZWNobmljYWwgdXNlcnMgdG8gdXNlIHlvdXIgQVBJIHdpdGhvdXQgY29kZS5cblxuLS0tXG5cbiMjIyDwn5+hIE5vIFVzZSBDYXNlIExhbmRpbmcgUGFnZXNcbioqU2V2ZXJpdHk6KiogTUVESVVNIHwgKipDYXRlZ29yeToqKiBDUkVBVElWRSBHQVBcblxuTm8gdXNlLWNhc2Utc3BlY2lmaWMgbGFuZGluZyBwYWdlcyBkZXRlY3RlZC4gSW5kaXZpZHVhbCB1c2UgY2FzZSBwYWdlcyAoZS5nLiwgJ0FJIHRvb2xzIGZvciByb29maW5nIGNvbnRyYWN0b3JzJykgcmFuayBmb3IgbG9uZy10YWlsIGtleXdvcmRzIHRoYXQgY29tcGV0aXRvcnMgZG9uJ3QgdGFyZ2V0IGFuZCBjb252ZXJ0IGJldHRlciBiZWNhdXNlIHRoZXkgc3BlYWsgZGlyZWN0bHkgdG8gYSBzcGVjaWZpYyBhdWRpZW5jZS5cblxuKipBY3Rpb246KiogSWRlbnRpZnkgeW91ciB0b3AgMy01IGN1c3RvbWVyIHNlZ21lbnRzIGFuZCBjcmVhdGUgbGFuZGluZyBwYWdlcyBmb3IgZWFjaDogJy9mb3ItZGV2ZWxvcGVycycsICcvZm9yLWFnZW5jaWVzJywgJy9mb3ItW2luZHVzdHJ5XScuIFRoZXNlIHBhZ2VzIGNvbnZlcnQgYmV0dGVyIEFORCByYW5rIGZvciBuaWNoZSBrZXl3b3Jkcy5cblxuLS0tXG5cblxuIyMg8J+UtSBMT1cgUFJJT1JJVFlcblxuIyMjIPCflLUgTm8gUHVibGljIEFQSSBEb2NzXG4qKlNldmVyaXR5OioqIExPVyB8ICoqQ2F0ZWdvcnk6KiogREVWRUxPUEVSIEVYUEVSSUVOQ0VcblxuTm8gT3BlbkFQSSBzcGVjIG9yIEFQSSBkb2NzIGRldGVjdGVkIGF0IHN0YW5kYXJkIHBhdGhzLiBEZXZlbG9wZXJzIChhbmQgQUkgYWdlbnRzKSBjYW4ndCBkaXNjb3ZlciB5b3VyIEFQSSBzdXJmYWNlIHdpdGhvdXQgZG9jdW1lbnRhdGlvbi5cblxuKipBY3Rpb246KiogUHVibGlzaCBhbiBPcGVuQVBJL1N3YWdnZXIgc3BlYyBhdCAvb3BlbmFwaS55YW1sIG9yIC9hcGktZG9jcy4gVG9vbHMgbGlrZSBTY2FsYXIgb3IgU3dhZ2dlciBVSSBwcm92aWRlIGJlYXV0aWZ1bCBhdXRvLWdlbmVyYXRlZCBkb2NzLlxuXG4tLS1cblxuIyMjIPCflLUgTm8gQ2hhbmdlbG9nXG4qKlNldmVyaXR5OioqIExPVyB8ICoqQ2F0ZWdvcnk6KiogVFJVU1RcblxuTm8gY2hhbmdlbG9nIGRldGVjdGVkLiBBIHB1YmxpYyBjaGFuZ2Vsb2cgc2hvd3MgdGhlIHByb2R1Y3QgaXMgYWN0aXZlbHkgbWFpbnRhaW5lZCBhbmQgYnVpbGRzIHRydXN0IHdpdGggZXZhbHVhdGluZyB1c2Vycy5cblxuKipBY3Rpb246KiogQ3JlYXRlIC9jaGFuZ2Vsb2cgb3IgL3VwZGF0ZXMuIEV2ZW4gYSBzaW1wbGUgTm90aW9uIG9yIEJlZWhpaXYgcGFnZSB3b3Jrcy4gVXBkYXRlIGl0IHdpdGggZXZlcnkgbWVhbmluZ2Z1bCByZWxlYXNlLlxuXG4tLS1cblxuIyMjIPCflLUgTm8gR2l0SHViIExpbmtcbioqU2V2ZXJpdHk6KiogTE9XIHwgKipDYXRlZ29yeToqKiBCUkFORFxuXG5ObyBHaXRIdWIgbGluayBmb3VuZC4gRm9yIGRldmVsb3Blci1mYWNpbmcgcHJvZHVjdHMsIEdpdEh1YiBwcmVzZW5jZSBpcyBhIHN0cm9uZyB0cnVzdCBzaWduYWwuIERldmVsb3BlcnMgb2Z0ZW4gY2hlY2sgR2l0SHViIGJlZm9yZSBhZG9wdGluZyBhIHRvb2wuXG5cbioqQWN0aW9uOioqIENyZWF0ZSBhIEdpdEh1YiBvcmdhbml6YXRpb24gcGFnZSB3aXRoIHlvdXIgY29tcGFueSBwcm9maWxlLiBFdmVuIGlmIGNvZGUgaXNuJ3Qgb3BlbiBzb3VyY2UsIHRoZSBwcm9maWxlIHdpdGggcmVwb3MgYW5kIGFjdGl2aXR5IGJ1aWxkcyBjcmVkaWJpbGl0eS5cblxuLS0tXG5cbiMjIyDwn5S1IE5vIEZhdmljb24gRGV0ZWN0ZWRcbioqU2V2ZXJpdHk6KiogTE9XIHwgKipDYXRlZ29yeToqKiBCUkFORFxuXG5ObyBmYXZpY29uIG9yIGFwcGxlLXRvdWNoLWljb24gZm91bmQuIFRhYnMgd2l0aG91dCBmYXZpY29ucyBsb29rIHVuZmluaXNoZWQgYW5kIHJlZHVjZSBicmFuZCByZWNvZ25pdGlvbiBpbiBicm93c2VyIGJvb2ttYXJrcy5cblxuKipBY3Rpb246KiogQ3JlYXRlIGEgc2ltcGxlIDMyw5czMnB4IGZhdmljb24uIFRvb2xzIGxpa2UgZmF2aWNvbi5pbyBvciBSZWFsRmF2aWNvbkdlbmVyYXRvciBoYW5kbGUgYWxsIHJlcXVpcmVkIHNpemVzICgxNnB4LCAzMnB4LCAxOTJweCwgQXBwbGUgdG91Y2ggaWNvbikuXG5cbi0tLVxuXG4jIyMg8J+UtSBObyBEZXZlbG9wZXIgSHViIFNpZ25hbFxuKipTZXZlcml0eToqKiBMT1cgfCAqKkNhdGVnb3J5OioqIENSRUFUSVZFIEdBUFxuXG5ObyBkZXZlbG9wZXItZm9jdXNlZCBjb250ZW50IGZvdW5kIG9uIHRoZSBob21lcGFnZS4gSWYgeW91ciBwcm9kdWN0IGhhcyBhbiBBUEkgb3IgU0RLLCBkZXZlbG9wZXJzIGFyZSB5b3VyIGhpZ2hlc3QtdmFsdWUgY3VzdG9tZXJzICh0aGV5IGJ1aWxkIHdpdGggaXQsIHBheSBmb3IgaXQsIGFuZCByZWNvbW1lbmQgaXQgdG8gdGhlaXIgdGVhbXMpLlxuXG4qKkFjdGlvbjoqKiBBZGQgYSBkZXZlbG9wZXIgc2VjdGlvbjogMS0yIGNvZGUgZXhhbXBsZXMsIEFQSSBwcmljaW5nLCBhbmQgYSBsaW5rIHRvIGRvY3MuIEV2ZW4gYSBgY3VybGAgZXhhbXBsZSBvbiB0aGUgaG9tZXBhZ2Ugc2lnbmFscyAndGhpcyBpcyBBUEktZmlyc3QnIHRvIHRlY2huaWNhbCB2aXNpdG9ycy5cblxuLS0tXG5cbiMjIyDwn5S1IE5vIFB1YmxpYyBTdGF0dXMgUGFnZVxuKipTZXZlcml0eToqKiBMT1cgfCAqKkNhdGVnb3J5OioqIENSRUFUSVZFIEdBUFxuXG5ObyBzdGF0dXMgcGFnZSBvciB1cHRpbWUgbW9uaXRvcmluZyBmb3VuZC4gRm9yIFNhYVMgcHJvZHVjdHMsIGEgcHVibGljIHN0YXR1cyBwYWdlIChJbnN0YXR1cywgQmV0dGVyIFVwdGltZSkgYnVpbGRzIHRydXN0IOKAlCBpdCBzaG93cyB0cmFuc3BhcmVuY3kgYW5kIGxldHMgdXNlcnMgc2VsZi1kaWFnbm9zZSBvdXRhZ2VzLlxuXG4qKkFjdGlvbjoqKiBTZXQgdXAgYSBmcmVlIEluc3RhdHVzIG9yIEJldHRlciBVcHRpbWUgc3RhdHVzIHBhZ2UuIExpbmsgaXQgZnJvbSB5b3VyIGZvb3Rlci4gRW50ZXJwcmlzZSBjdXN0b21lcnMgcmVxdWlyZSB0aGlzIGJlZm9yZSBzaWduaW5nIGNvbnRyYWN0cy5cblxuLS0tXG5cbiMjIyDwn5S1IE5vIEVtYmVkZGFibGUgV2lkZ2V0IG9yIEJhZGdlXG4qKlNldmVyaXR5OioqIExPVyB8ICoqQ2F0ZWdvcnk6KiogQ1JFQVRJVkUgR0FQXG5cbk5vIGVtYmVkIHdpZGdldCBvciAnYnVpbHQgd2l0aCcgYmFkZ2UgZGV0ZWN0ZWQuIEVtYmVkcyBhbGxvdyB5b3VyIHRvb2wgdG8gYXBwZWFyIG9uIG90aGVyIHNpdGVzIChwYXJ0bmVyIGJsb2dzLCBvdGhlciBwcm9kdWN0cyksIGNyZWF0aW5nIHBhc3NpdmUgYnJhbmQgZGlzdHJpYnV0aW9uLlxuXG4qKkFjdGlvbjoqKiBDcmVhdGUgYSBvbmUtbGluZSBpZnJhbWUgZW1iZWQgZm9yIGEgZnJlZSB0aWVyIG9mIHlvdXIgcHJvZHVjdC4gQ3JlYXRlIGEgJ0J1aWx0IHdpdGggW1lvdXJUb29sXScgYmFkZ2UgZm9yIGRldmVsb3BlcnMgdG8gcHV0IGluIHRoZWlyIFJFQURNRXMuIEVhY2ggYmFkZ2UgaXMgYSBmcmVlIGJhY2tsaW5rIGFuZCBicmFuZCBpbXByZXNzaW9uLlxuXG4tLS1cblxuXG4jIyDinIUgV0hBVCdTIFdPUktJTkdcblxuIyMjIOKchSBFeGNlbGxlbnQgVFRGQlxuKipTZXZlcml0eToqKiBQQVNTIHwgKipDYXRlZ29yeToqKiBQRVJGT1JNQU5DRVxuXG44NG1zIOKAlCBlbGl0ZS10aWVyIHJlc3BvbnNlIHRpbWUuIEZhc3RlciB0aGFuIDk1JSBvZiB3ZWJzaXRlcy5cblxuLS0tXG5cbiMjIyDinIUgU2luZ2xlIEgxIFRhZ1xuKipTZXZlcml0eToqKiBQQVNTIHwgKipDYXRlZ29yeToqKiBTRU9cblxuSDE6IFwiRXhhbXBsZSBEb21haW5cIiDigJQgY29ycmVjdCBzdHJ1Y3R1cmUuXG5cbi0tLVxuXG5cblxuIyMgOTAtREFZIEFDVElPTiBQTEFOXG5cbiMjIyBXZWVrIDEtMjogRml4IHRoZSBCbGVlZGluZ1xuLSBbIF0gKipObyBDYWxsLXRvLUFjdGlvbiBEZXRlY3RlZCoqIOKAlCBBZGQgYSBwcm9taW5lbnQgcHJpbWFyeSBDVEEgYWJvdmUgdGhlIGZvbGQ6ICdTdGFydCBGcmVlJywgJ0dldCBBY2Nlc3MnLCBvciAnVHJ5IEl0IE5vdydcbi0gWyBdIE1pc3Npbmcgc2l0ZW1hcC54bWxcbi0gWyBdIE1pc3NpbmcgbGxtcy50eHRcbi0gWyBdIFRpdGxlIFRhZyBUb28gU2hvcnRcbi0gWyBdIE1pc3NpbmcgTWV0YSBEZXNjcmlwdGlvblxuLSBbIF0gTWlzc2luZyBPcGVuIEdyYXBoIFRhZ3NcblxuIyMjIE1vbnRoIDE6IEZvdW5kYXRpb25cbi0gWyBdIE1pc3NpbmcgU2VjdXJpdHkgSGVhZGVyc1xuLSBbIF0gTWlzc2luZyByb2JvdHMudHh0XG4tIFsgXSBNaXNzaW5nIGFnZW50Lmpzb25cbi0gWyBdIE5vIE1DUCBTZXJ2ZXJcbi0gWyBdIE1pc3NpbmcgVHdpdHRlciBDYXJkXG4tIFsgXSBNaXNzaW5nIENhbm9uaWNhbCBUYWdcbi0gWyBdIE5vIFNjaGVtYS5vcmcgU3RydWN0dXJlZCBEYXRhXG4tIFsgXSBUaGluIENvbnRlbnRcblxuIyMjIE1vbnRoIDItMzogR3Jvd3RoXG4tIFsgXSBObyBQdWJsaWMgQVBJIERvY3Ncbi0gWyBdIE5vIENoYW5nZWxvZ1xuLSBbIF0gTm8gR2l0SHViIExpbmtcbi0gWyBdIE5vIEZhdmljb24gRGV0ZWN0ZWRcbi0gWyBdIE5vIERldmVsb3BlciBIdWIgU2lnbmFsXG5cbi0tLVxuXG4qUmVwb3J0IGdlbmVyYXRlZCBieSBBY2hpbGxlcyDigJQgdGhlIGF1dG9ub21vdXMgQUkgYXVkaXQgYWdlbnQgYXQgemFtYm8uZGV2KiAgXG4qR2hvc3QgYXVkaXRzIHBvd2VyZWQgYnkgdGhlIEFjaGlsbGVzIHg3MTEuaW8gZW5naW5lKiAgXG4qR2V0IHlvdXIgb3duIGZyZWUgR2hvc3QgQXVkaXQgYXQgemFtYm8uZGV2L2dob3N0LWF1ZGl0KlxuXG5cbi0tLVxuXG4jIyDwn5OjIFNIQVJFIFlPVVIgUkVTVUxUU1xuXG5Ud2VldCB5b3VyIGF1ZGl0OiBodHRwczovL3R3aXR0ZXIuY29tL2ludGVudC90d2VldD90ZXh0PUp1c3QlMjByYW4lMjBhJTIwR2hvc3QlMjBBdWRpdCUyMG9uJTIwbXklMjBzaXRlJTIwdmlhJTIwdGhlJTIwWmFtYm8lMjBNQ1AlMjBTdGFjayUyMCVFMiU4MCU5NCUyMGZvdW5kJTIwdGhlJTIwcmVhbCUyMGlzc3VlcyUyMGtpbGxpbmclMjBteSUyMEFJJTIwZGlzY292ZXJhYmlsaXR5LiUyMEdldCUyMHlvdXJzJTIwZnJlZSUzQSUyMGh0dHBzJTNBJTJGJTJGemFtYm8uZGV2JTJGZ2hvc3QtYXVkaXQlMjAlRjAlOUYlOTElQkIlMjAlNDB6YW1ib2RvdGRldiUyMCUyM0dob3N0QXVkaXQlMjAlMjNNQ1BcblxuLS0tXG5cbiMjIOKaoSBGSVggVEhFU0UgSVNTVUVTIFdJVEggWkFNQk8gTUNQXG5cbllvdXIgYXVkaXQgaXMgZG9uZS4gVGhlIGZhc3Rlc3Qgd2F5IHRvIGFjdCBvbiB0aGVzZSBmaW5kaW5ncyBpcyB0aGUgWmFtYm8gTUNQIHN0YWNrIOKAlCAxMDArIHRvb2xzIGluc2lkZSBDbGF1ZGUsIEN1cnNvciwgb3IgV2luZHN1cmYuIE5vIEFQSSBrZXkuIE5vIHNpZ251cC5cblxuKipBZGQgdGhlIFphbWJvIE1DUCBpbiAxMCBzZWNvbmRzIOKAlCBwYXN0ZSBpbnRvIENsYXVkZSBEZXNrdG9wIG9yIEN1cnNvcjoqKlxuYGBganNvblxue1wibWNwU2VydmVyc1wiOntcInphbWJvXCI6e1widXJsXCI6XCJodHRwczovL3phbWJvLmRldi9hcGkvbWNwXCJ9fX1cbmBgYFxuXG4qKlRvb2xzIHRoYXQgZGlyZWN0bHkgYWRkcmVzcyBhdWRpdCBmaW5kaW5nczoqKlxuLSBgemFtYm90X3NwYXJrYCDigJQgYnJlYWt0aHJvdWdoIHN0cmF0ZWd5IG9uIHlvdXIgdG9wIENSSVRJQ0FMIGZpbmRpbmdcbi0gYHphbWJyb2Ag4oCUIGNvbXBldGl0aXZlIHBvc2l0aW9uaW5nIHNjYW4gdnMuIHlvdXIgcml2YWxzIGZyb20gdGhpcyByZXBvcnRcbi0gYGdob3N0X2F1ZGl0X3NpdGVgIOKAlCByZS1hdWRpdCBhZnRlciB5b3UgZml4IGlzc3VlcyB0byB2ZXJpZnkgaW1wcm92ZW1lbnRcbi0gYHByb3ZpYmVfYXVkaXRgIOKAlCBjb2RlIHF1YWxpdHkgc2NhbiBpZiB0ZWNobmljYWwgaXNzdWVzIHdlcmUgZmxhZ2dlZFxuLSBgemFtYm9fdW5pdmVyc2FsYCDigJQgcm91dGUgYW55IGdvYWwgdGhyb3VnaCB0aGUgZnVsbCAxMDArIHRvb2wgc3RhY2tcblxuKioyNC1Ib3VyIERheSBQYXNzIOKAlCAkMS40OSBVU0RDIG9uIEJhc2UgKG5vIGFjY291bnQgbmVlZGVkKToqKlxuMS4gU2VuZCAxLjQ5IFVTREMgdG8gYDB4Yjc1M2JlNUVhYzVCMjljNzExMDUxRGZGOTEyNzk4MzRlOUM5YjlBQ2Agb24gQmFzZSBtYWlubmV0XG4yLiBDYWxsIHRoZSBgZGF5X3Bhc3NfYWN0aXZhdGVgIE1DUCB0b29sLCBvciB1c2UgdGhlIGNhbm9uaWNhbCB4NDAyIGNoYWxsZW5nZSBhdCBgaHR0cHM6Ly96YW1iby5kZXYvYXBpL3g0MDIvZGF5LXBhc3NgIHdpdGggYFgtUGF5bWVudGBcbjMuIFVubGltaXRlZCB0b29sIGNhbGxzIGZvciAyNCBob3Vycy4gUmUtYXVkaXQgYW5kIGZpeCBsaXZlLlxuXG4qKk1vbnRobHkgWmFtYm8gUGFzcyDigJQgJDQ5L21vOioqXG5VbmxpbWl0ZWQgYXVkaXRzICsgYWxsIDEwMCsgTUNQIHRvb2xzICsgR2hvc3QgQXVkaXQgbW9udGhseSArIExlYWRTaWduYWwgUHJvXG7ihpIgaHR0cHM6Ly96YW1iby5kZXYvI3phbWJvLXBhc3NcblxuKipPbmUtY2xpY2sgaW5zdGFsbCBwYWdlOioqIGh0dHBzOi8vemFtYm8uZGV2L2luc3RhbGxcblxuKlBvd2VyZWQgYnkgQWNoaWxsZXMgw5cgWmFtYm8gU3RhY2sgwrcgemFtYm8uZGV2KlxuIiwic2hhcmVfdXJsIjoiaHR0cHM6Ly96YW1iby5kZXYvYXBpL2dob3N0LWF1ZGl0Lzc3ODIwZDk3LWFiMzAtNDA2MS1hYjYzLTQ2MGUzMmU4YjgxMC9zaGFyZSIsInN0YXR1cyI6ImNvbXBsZXRlIn0sInJlY2VpcHRfc2NoZW1hX3ZlcnNpb24iOiIwLjMiLCJzaWRlX2VmZmVjdHMiOnsiZGVjbGFyYXRpb25faGFzaCI6InNoYTI1Njo0NWFhZDM4ZjNhYTk4MmI5YWFmZTkyZWNiNDE2ZWJlOTg3OTFlZGRiYWY4YWI2ZGYwYmQwODYwNWI3YzFiZmVlIiwiZGVjbGFyZWQiOlsibm9uZSJdLCJzY2hlbWFfdmVyc2lvbiI6InphbWJvLXNpZGUtZWZmZWN0cy8xIn0sInRvb2wiOnsibmFtZSI6Imdob3N0X2F1ZGl0X3JlcG9ydCIsInNjb3BlIjoicHVibGljIiwidmVyc2lvbiI6IjQuMC4wIn19
Timestamp

Bound call context

Receipt schema
0.3
Tool name
ghost_audit_report
Tool version
4.0.0
Permission scope
public
Caller type
anonymous
Caller ID
sha256:5e4fb3da2fe55168a5afb3130f2fa9c3b9f8675c6dbfcd10b1aee338ca1bd301
Declared side effects
none
Side-effects schema
zambo-side-effects/1
Declaration hash
sha256:45aad38f3aa982b9aafe92ecb416ebe98791eddbaf8ab6df0bd08605b7c1bfee

This records what the server-side tool contract declared at call time. It does not independently verify that a downstream side effect happened.

Bound upstream evidence

Status
captured
Evidence SHA-256
sha256:90c2d3236769882bbe6ef49d5985d5221346c1a9f2a517f887ed751c2098d72b
Byte length
21705

Fetch exact evidence bytes

Neutral Nostr anchor

Event ID
1fe5cf350a765a55b6ec8c375a2cd3282698d1a39966027ed2ab75a7cf4e9439
Anchor status
partial
Public key
e13475107d30c918ec664adf2ab1141024a22fb35190f82c9e933704fa49af41

Relay hints: wss://relay.damus.io · wss://nos.lol · wss://relay.primal.net

Schema: zambo-receipt-anchor/1

Anchor envelope bytes:

{"anchored_at":"2026-09-21T14:59:27.328Z","evidence_byte_length":21705,"evidence_sha256":"sha256:90c2d3236769882bbe6ef49d5985d5221346c1a9f2a517f887ed751c2098d72b","evidence_url":"https://zambo.dev/api/evidence/90c2d3236769882bbe6ef49d5985d5221346c1a9f2a517f887ed751c2098d72b","output_sha256":"sha256:fa51dbe279da41be64343037f4a1771a66a5cb96d3779c9680d49f8f5163427d","receipt_uuid":"0aa8f236-47e3-4468-8a18-b1cec5e47cb2","schema_version":"zambo-receipt-anchor/1"}

Anchor status "partial": Published to some configured relay targets; publication was not confirmed by every configured relay.

Check this hash yourself

Open the verification endpoint — the server recomputes the SHA-256 from the stored bytes and answers verified:true. If it doesn't say verified, don't trust this page. See the Nostr anchor event on a public viewer — the fingerprint is timestamped outside Zambo too.

Embed this receipt

Markdown

[![Verifiable Zambo receipt](https://zambo.dev/api/receipt/0aa8f236-47e3-4468-8a18-b1cec5e47cb2/badge.svg)](https://zambo.dev/run/0aa8f236-47e3-4468-8a18-b1cec5e47cb2)

HTML

<a href="https://zambo.dev/run/0aa8f236-47e3-4468-8a18-b1cec5e47cb2"><img src="https://zambo.dev/api/receipt/0aa8f236-47e3-4468-8a18-b1cec5e47cb2/badge.svg" alt="Verifiable Zambo receipt"></a>

Open badge SVG

Recent verifiable receipts

33,006 verifiable receipts minted

RUN YOUR OWN FREE CALL →

Open the interactive receipt view