todo-list-3 version-audit: fix stale 0.3.4 defaults in build-deb.sh and printit index deb blurb; document audit in PACKAGING; smoke asserts deb fallback. CDN last-published 0.3.2/0.1.2 checksums left intentional.
319 lines
21 KiB
HTML
319 lines
21 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="utf-8" />
|
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
<link rel="stylesheet" href="brand/tokens.css" />
|
|
<link rel="stylesheet" href="verae-ui-kit.css" />
|
|
<title>Print it — Verae Timestamping</title>
|
|
<meta name="description" content="Download Verae Print Stamp for macOS, Windows, and Linux (deb). Digests-only registration with a clickable explorer lookup." />
|
|
<link rel="canonical" href="https://printit.verae.ai/" />
|
|
<style>
|
|
:root {
|
|
/* Night marketing surface; brand tokens.css supplies --night-* and --gold */
|
|
--bg: #0f0a14;
|
|
--card: #1a1224;
|
|
--ink: #f4eef8;
|
|
--muted: #a898b8;
|
|
--accent: #c4a85a;
|
|
--purple: #4a2e8c;
|
|
--border: #3a2a4a;
|
|
--print-purple: #4A2E8C;
|
|
--violet: #6B3FD6;
|
|
--gold: #C4A85A;
|
|
}
|
|
* { box-sizing: border-box; }
|
|
body {
|
|
margin: 0;
|
|
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
|
|
background: radial-gradient(1200px 600px at 20% -10%, #2a1840 0%, var(--bg) 55%);
|
|
color: var(--ink); min-height: 100vh; line-height: 1.5;
|
|
}
|
|
main { max-width: 940px; margin: 0 auto; padding: 3rem 1.25rem 4rem; }
|
|
h1 {
|
|
font-family: Georgia, "Times New Roman", serif;
|
|
font-size: clamp(1.8rem, 4vw, 2.4rem); font-weight: 700;
|
|
margin: 0 0 0.4rem; color: #fff;
|
|
}
|
|
.lede { color: var(--muted); font-size: 1.05rem; max-width: 44rem; }
|
|
.gold { color: var(--accent); }
|
|
.card {
|
|
background: var(--card); border: 1px solid var(--border);
|
|
border-radius: 14px; padding: 1.25rem 1.35rem; margin-top: 1.75rem;
|
|
}
|
|
.downloads { display: grid; gap: 0.85rem; margin-top: 1.5rem; }
|
|
.row {
|
|
display: grid; grid-template-columns: 1fr auto; gap: 1rem;
|
|
align-items: center; background: rgba(255,255,255,0.03);
|
|
border: 1px solid var(--border); border-radius: 12px; padding: 1rem 1.15rem;
|
|
}
|
|
@media (max-width: 700px) {
|
|
.row { grid-template-columns: 1fr; }
|
|
.actions { justify-content: stretch; }
|
|
.actions .btn { text-align: center; }
|
|
}
|
|
.row h2 { margin: 0; font-size: 1.05rem; font-weight: 600; }
|
|
.row p { margin: 0.25rem 0 0; color: var(--muted); font-size: 0.9rem; }
|
|
.actions { display: flex; flex-wrap: wrap; gap: 0.5rem; justify-content: flex-end; }
|
|
.btn {
|
|
display: inline-block; text-decoration: none; padding: 0.65rem 1.05rem;
|
|
border-radius: 999px; font-weight: 600; font-size: 0.86rem;
|
|
white-space: nowrap; border: 1px solid transparent;
|
|
}
|
|
.btn-primary {
|
|
background: linear-gradient(135deg, var(--print-purple, var(--purple)), var(--violet, #6B3FD6));
|
|
color: #fff; border-color: #7a52c4;
|
|
}
|
|
.btn-primary:hover { filter: brightness(1.08); }
|
|
.btn-secondary {
|
|
background: transparent; color: var(--ink); border-color: var(--border);
|
|
}
|
|
.btn-secondary:hover { border-color: var(--accent); color: var(--accent); }
|
|
.meta { margin-top: 1.5rem; font-size: 0.85rem; color: var(--muted); }
|
|
.steps { margin: 0.75rem 0 0; padding-left: 1.2rem; color: var(--muted); font-size: 0.95rem; }
|
|
.steps li { margin: 0.35rem 0; }
|
|
a.inline { color: var(--accent); }
|
|
footer {
|
|
margin-top: 2.5rem; padding-top: 1rem; border-top: 1px solid var(--border);
|
|
color: var(--muted); font-size: 0.85rem;
|
|
}
|
|
footer a { color: var(--accent); }
|
|
|
|
|
|
.faq h2{margin:0 0 .25rem;font-size:1.15rem}
|
|
.faq details{border-top:1px solid var(--border);padding:.85rem 0}
|
|
.faq details:first-of-type{border-top:0}
|
|
.faq summary{cursor:pointer;font-weight:600;font-size:1.02rem;color:#fff;list-style:none;display:flex;justify-content:space-between;gap:1rem}
|
|
.faq summary::-webkit-details-marker{display:none}
|
|
.faq summary::after{content:"+";color:var(--accent);font-size:1.3rem;line-height:1}
|
|
.faq details[open] summary::after{content:"\2212"}
|
|
.faq p,.faq li{color:var(--muted);font-size:.95rem}
|
|
.faq ol{padding-left:1.2rem}
|
|
.faq .hash{font-family:ui-monospace,Menlo,monospace;font-size:.8rem;word-break:break-all;color:var(--ink)}
|
|
.faq .btn{margin-top:.4rem}
|
|
|
|
/* Welcome dialog */
|
|
.vw-overlay{position:fixed;inset:0;background:rgba(10,6,18,.72);display:none;align-items:center;justify-content:center;z-index:1000;padding:1rem;overflow-y:auto}
|
|
.vw-overlay.open{display:flex}
|
|
.vw-modal{background:#fff;color:#1d1534;border-radius:16px;box-shadow:0 20px 60px rgba(0,0,0,.5);width:min(1100px,100%);padding:2rem 2.25rem 1.6rem;position:relative;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif}
|
|
.vw-close{position:absolute;top:.8rem;right:1rem;font-size:1.6rem;line-height:1;color:#888;border:0;background:none;cursor:pointer}
|
|
.vw-brand{color:#6b3fd6;font-weight:700;letter-spacing:.06em;font-size:.8rem;text-transform:uppercase}
|
|
.vw-modal h2{margin:.35rem 0 .25rem;font-size:clamp(1.3rem,3vw,1.85rem);line-height:1.2;color:#1d1534;font-family:inherit}
|
|
.vw-sub{margin:0 0 1.4rem;color:#555;font-size:1.02rem}
|
|
.vw-steps{display:grid;grid-template-columns:1.35fr 1fr 1fr;gap:1.2rem;align-items:start}
|
|
@media (max-width:800px){.vw-steps{grid-template-columns:1fr}}
|
|
.vw-step{background:#f6f4fb;border-radius:12px;padding:.85rem;text-align:center}
|
|
.vw-step img{width:100%;height:300px;object-fit:contain;background:#fff;border-radius:8px;border:1px solid #e3def0}
|
|
.vw-num{display:inline-block;width:1.6rem;height:1.6rem;line-height:1.6rem;border-radius:50%;background:#6b3fd6;color:#fff;font-weight:700;font-size:.85rem;margin-right:.35rem}
|
|
.vw-step h3{margin:.75rem 0 .25rem;font-size:1rem;color:#1d1534}
|
|
.vw-step p{margin:0;font-size:.85rem;color:#555;line-height:1.4}
|
|
.vw-foot{display:flex;flex-wrap:wrap;gap:1rem;justify-content:space-between;align-items:center;margin-top:1.4rem}
|
|
.vw-foot small{color:#777}
|
|
.vw-go{background:#6b3fd6;color:#fff;border:0;border-radius:10px;padding:.75rem 1.6rem;font-size:1rem;font-weight:600;cursor:pointer}
|
|
.how-link{background:none;border:1px solid var(--border);color:var(--accent);border-radius:999px;padding:.5rem 1rem;font-weight:600;font-size:.86rem;cursor:pointer;margin-top:.75rem}
|
|
.how-link:hover{border-color:var(--accent)}
|
|
.how-row{display:flex;align-items:center;gap:.9rem;margin-top:.75rem;flex-wrap:wrap}
|
|
.how-row .how-link{margin-top:0}
|
|
.how-thumb{padding:0;border:1px solid var(--border);border-radius:8px;background:none;cursor:pointer;overflow:hidden;line-height:0;transition:border-color .15s,transform .15s}
|
|
.how-thumb img{display:block;width:160px;height:auto}
|
|
.how-thumb:hover{border-color:var(--accent);transform:translateY(-1px)}
|
|
.rcpt-thumb img{width:80px}
|
|
.vw-step a{display:block;line-height:0}
|
|
.val-thumb img{width:120px}
|
|
.vw-left{display:flex;flex-direction:column;gap:.45rem}
|
|
.vw-dsa{font-size:.9rem;color:#444;display:flex;align-items:center;gap:.4rem;cursor:pointer;user-select:none}
|
|
.vw-dsa input{width:1rem;height:1rem;accent-color:#6b3fd6;cursor:pointer}
|
|
/* Mobile fixes */
|
|
.vw-overlay{align-items:flex-start}
|
|
.vw-modal{margin:auto}
|
|
@media (max-width:700px){
|
|
.vw-overlay{padding:.5rem}
|
|
.vw-modal{padding:1.1rem 1rem 1rem;border-radius:14px}
|
|
.vw-close{position:sticky;float:right;top:0;margin:-.4rem -.4rem 0 0;width:2.5rem;height:2.5rem;font-size:1.9rem;background:#fff;border-radius:50%}
|
|
.vw-modal h2{font-size:1.2rem;padding-right:.5rem}
|
|
.vw-sub{font-size:.92rem;margin-bottom:.9rem}
|
|
.vw-steps{display:flex;grid-template-columns:none;overflow-x:auto;scroll-snap-type:x mandatory;gap:.75rem;margin:0 -1rem;padding:0 1rem .5rem;-webkit-overflow-scrolling:touch}
|
|
.vw-step{flex:0 0 82%;scroll-snap-align:center}
|
|
.vw-step img{height:230px}
|
|
.vw-hint{display:block!important;text-align:center;font-size:.78rem;color:#888;margin:.3rem 0 0}
|
|
.vw-foot{flex-direction:column;align-items:stretch;gap:.8rem;margin-top:.9rem}
|
|
.vw-go{width:100%;padding:.85rem}
|
|
.how-row{gap:.6rem}
|
|
.how-row .how-link{flex-basis:100%;text-align:center}
|
|
.how-thumb img{width:110px}
|
|
.rcpt-thumb img{width:56px}
|
|
.val-thumb img{width:84px}
|
|
}
|
|
.vw-hint{display:none}
|
|
</style>
|
|
</head>
|
|
<body>
|
|
<main>
|
|
<div class="brand-mark" style="display:flex;align-items:center;gap:0.6rem;margin-bottom:1.25rem"><span style="width:36px;height:36px;border-radius:10px;background:linear-gradient(140deg,var(--print-purple,#4A2E8C),var(--violet,#6B3FD6));display:grid;place-items:center;font-weight:800;color:#fff">V</span><span style="font-weight:700;letter-spacing:0.04em;color:var(--gold,#C4A85A);font-size:0.85rem">PRINTIT · VERAE</span></div>
|
|
<p class="gold" style="letter-spacing:0.12em; text-transform:uppercase; font-size:0.75rem; font-weight:700; margin:0 0 0.75rem;">Verae · Print it</p>
|
|
<h1>Print → Verae Timestamping</h1>
|
|
<p class="lede">
|
|
Digests-only timestamping. Create a free account at
|
|
<a class="inline" href="https://customer.verae.ai/portal/">customer.verae.ai</a>,
|
|
mint an <code>xVerae-</code> signing key, then stamp from Print or the CLI.
|
|
</p>
|
|
<div class="how-row">
|
|
<button type="button" class="how-link" id="vw-open">How it works →</button>
|
|
<button type="button" class="how-thumb" id="vw-open-thumb" aria-label="Open How it works"><img src="/img/how-it-works-thumb.jpg" alt="Preview of the How it works dialog" width="160"></button>
|
|
<a class="how-thumb rcpt-thumb" href="/samples/verae-receipt-sample.pdf" target="_blank" rel="noopener" title="Open a sample Verae receipt (PDF)"><img src="/img/receipt-thumb.jpg" alt="Sample Verae Timestamp Registration receipt" width="80"></a>
|
|
<a class="how-thumb val-thumb" href="https://explorer.verae.ai/time?sha256=001ba8b3e94aaa3af8730343a821727b354b8545fb19b908bb2b6f1e4350678f&receipt=QmQWBx6jo8gkgAVdkAr48AxQgvgqsrTyfyHKn7RiDGWsJA" target="_blank" rel="noopener" title="See this receipt verified on the Verae explorer"><img src="/img/validation-thumb.jpg" alt="Verae explorer showing the receipt as VALID" width="120"></a>
|
|
</div>
|
|
|
|
<section class="card" aria-labelledby="dl-heading">
|
|
<h2 id="dl-heading" style="margin:0 0 0.25rem; font-size:1.15rem;">Downloads</h2>
|
|
<p style="margin:0; color:var(--muted); font-size:0.92rem;">Product version <strong>0.3.6</strong> <span style="opacity:0.85">(HelperVersion; published download builds may lag — see DOWNLOADS-MANIFEST)</span></p>
|
|
|
|
<div class="downloads">
|
|
<div class="row">
|
|
<div>
|
|
<h2>macOS</h2>
|
|
<p>Apple silicon & Intel · Developer ID signed & notarized · Print Destination</p>
|
|
</div>
|
|
<div class="actions">
|
|
<a class="btn btn-primary" href="/downloads/VeraePrintStamp-macos.pkg">Download .pkg</a>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="row">
|
|
<div>
|
|
<h2>Windows</h2>
|
|
<p>GUI installer (NSIS) · Start Menu + PATH · finish page runs setup</p>
|
|
</div>
|
|
<div class="actions">
|
|
<a class="btn btn-primary" href="/downloads/VeraePrintStamp-windows-amd64-setup.exe">Installer x64</a>
|
|
<a class="btn btn-secondary" href="/downloads/VeraePrintStamp-windows-arm64-setup.exe">Installer ARM64</a>
|
|
<a class="btn btn-secondary" href="/downloads/VeraePrintStamp-windows-amd64.zip">Zip x64</a>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="row">
|
|
<div>
|
|
<h2>Debian / Ubuntu</h2>
|
|
<p><code>.deb</code> package <strong>0.3.6</strong> (HelperVersion; published download builds may lag — see DOWNLOADS-MANIFEST) · <code>verae-print</code> + “Verae Timestamping” printer. Your first print opens a sign-in window to get your key.</p>
|
|
</div>
|
|
<div class="actions">
|
|
<a class="btn btn-primary" href="/downloads/verae-print_amd64.deb">Download amd64.deb</a>
|
|
<a class="btn btn-secondary" href="/downloads/verae-print_arm64.deb">arm64.deb</a>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="row">
|
|
<div>
|
|
<h2>Linux (tarball)</h2>
|
|
<p>Portable CLI + <code>install.sh</code> for any distro</p>
|
|
</div>
|
|
<div class="actions">
|
|
<a class="btn btn-secondary" href="/downloads/VeraePrintStamp-linux-amd64.tar.gz">amd64 .tar.gz</a>
|
|
<a class="btn btn-secondary" href="/downloads/VeraePrintStamp-linux-arm64.tar.gz">arm64 .tar.gz</a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<p class="meta">
|
|
Checksums: <a class="inline" href="/downloads/SHA256SUMS">SHA256SUMS</a>
|
|
</p>
|
|
</section>
|
|
|
|
<section class="card">
|
|
<h2 style="margin:0; font-size:1.15rem;">Quick start</h2>
|
|
<ol class="steps">
|
|
<li><strong>macOS:</strong> open the .pkg → first launch saves your signing key → Print → Destination → Verae Timestamping.</li>
|
|
<li><strong>Windows:</strong> run the setup .exe → Finish with “Run setup” → paste your <code>xVerae-</code> key → <code>verae-print stamp file.pdf</code>.</li>
|
|
<li><strong>Debian/Ubuntu:</strong> <code>sudo apt install ./verae-print_amd64.deb</code>, then print to “Verae Timestamping” and sign in when the window appears (or open “Verae Signing Key” from your apps menu).</li>
|
|
<li>Outputs: <code>Documents/Verae Timestamps/</code>.</li>
|
|
</ol>
|
|
</section>
|
|
|
|
<section class="card faq" id="learn-more" aria-labelledby="faq-heading">
|
|
<h2 id="faq-heading">Learn more</h2>
|
|
|
|
<details open>
|
|
<summary>What is a global timestamp?</summary>
|
|
<p>A global timestamp is public, permanent proof that a specific document existed in a specific form at a specific moment. When you print to Verae Timestamping, your computer calculates the document’s SHA-256 fingerprint, a 64-character code that changes completely if even one character of the file changes. Only that fingerprint is registered on the Verae Timestamping blockchain; the document itself never leaves your computer.</p>
|
|
<p>Once it’s recorded in a block, the entry can’t be edited or backdated. Anyone, anywhere, can later check that your file matches the fingerprint and see when it was registered. You don’t have to trust us, your lawyer, or anyone else’s word for it.</p>
|
|
</details>
|
|
|
|
<details>
|
|
<summary>Who is Verae Inc.?</summary>
|
|
<p>Verae builds cryptographic timestamping that gives businesses independently verifiable proof of their records. The company was co-founded by <strong>Stuart Haber</strong>, who co-invented cryptographic timestamping in 1991. That work is the foundation under every blockchain since.</p>
|
|
<p>Verae’s patent-pending technology seals records the moment they’re created without ever seeing their contents, which stay in your own storage. Verae is based at 575 Lexington Ave, 14th Floor, New York, NY 10022. Learn more at <a class="inline" href="https://verae.com">verae.com</a> or write to <a class="inline" href="mailto:info@verae.com">info@verae.com</a>.</p>
|
|
</details>
|
|
|
|
<details>
|
|
<summary>How does online verification work?</summary>
|
|
<p>Every receipt includes a lookup link and QR code. Opening it takes you to the public VeraeTime explorer, which checks the document’s fingerprint against the blockchain record:</p>
|
|
<ol>
|
|
<li>The link carries the document’s SHA-256 fingerprint and the receipt ID.</li>
|
|
<li>The explorer finds the matching entry on the Verae Timestamping blockchain and shows the block it’s in and when it was registered.</li>
|
|
<li>If the fingerprint and receipt match the chain, it shows <strong>VALID</strong>. To prove a particular file is the one that was stamped, compute its SHA-256 (for example <code>shasum -a 256 file.pdf</code>) and confirm it matches.</li>
|
|
</ol>
|
|
<p>Try it with the sample receipt shown in the screenshots above (block 113224):</p>
|
|
<p class="hash">sha256 001ba8b3e94aaa3af8730343a821727b354b8545fb19b908bb2b6f1e4350678f</p>
|
|
<a class="btn btn-primary" href="https://explorer.verae.ai/time?sha256=001ba8b3e94aaa3af8730343a821727b354b8545fb19b908bb2b6f1e4350678f&receipt=QmQWBx6jo8gkgAVdkAr48AxQgvgqsrTyfyHKn7RiDGWsJA" target="_blank" rel="noopener">Open the sample verification</a>
|
|
<a class="btn btn-secondary" href="/samples/verae-receipt-sample.pdf" target="_blank" rel="noopener">View the sample receipt</a>
|
|
<a class="btn btn-secondary" href="certificate.html?sha256=001ba8b3e94aaa3af8730343a821727b354b8545fb19b908bb2b6f1e4350678f&receipt=QmQWBx6jo8gkgAVdkAr48AxQgvgqsrTyfyHKn7RiDGWsJA&document=verae-receipt-sample.pdf&status=final">CERT-01 certificate preview</a>
|
|
</details>
|
|
</section>
|
|
|
|
|
|
<div class="card">
|
|
<h2 style="margin:0 0 0.5rem;font-size:1.05rem">Receipt states (PT-04…06)</h2>
|
|
<p style="margin:0 0 0.75rem;color:var(--muted);font-size:0.9rem">Only a <b style="color:var(--ink)">final</b> receipt is evidence. Job IDs are never proof.</p>
|
|
<ul class="steps">
|
|
<li><b>Queued offline</b> — waiting for network</li>
|
|
<li><b>Hashing on device…</b> — SHA-256 stays local</li>
|
|
<li><b>Pending receipt</b> — submitted, waiting VeraeTime + chain</li>
|
|
<li><b>Included in block #N (not final)</b> — not evidence yet</li>
|
|
<li><b>Final: Substrate block #N, finalized</b> — evidence</li>
|
|
</ul>
|
|
</div>
|
|
|
|
<footer>
|
|
<a href="https://verae.com">verae.com</a>
|
|
· <a href="https://customer.verae.ai/portal/">Customer portal</a>
|
|
· <a href="https://explorer.verae.ai/time">VeraeTime explorer</a>
|
|
· <a href="https://zap.verae.ai/portal/">Zapier portal</a>
|
|
<p>
|
|
<a class="inline" href="queue.html">Job queue (PT-04)</a>
|
|
· <a class="inline" href="certificate.html">Certificate (CERT-01)</a>
|
|
· <a class="inline" href="samples/verae-receipt-sample.pdf" target="_blank" rel="noopener">Sample receipt PDF</a>
|
|
</p>
|
|
</footer>
|
|
</main>
|
|
|
|
<div class="vw-overlay" id="vw" role="dialog" aria-modal="true" aria-labelledby="vw-title">
|
|
<div class="vw-modal">
|
|
<button type="button" class="vw-close" id="vw-x" aria-label="Close">×</button>
|
|
<div class="vw-brand">Verae Timestamping</div>
|
|
<h2 id="vw-title">Print to PDF and Register on the Global Verae Timestamping Blockchain — in one step</h2>
|
|
<p class="vw-sub">No new app to learn. Just print the way you always do.</p>
|
|
<div class="vw-steps">
|
|
<div class="vw-step"><img src="/img/print-dialog.jpg" alt="Print dialog with Verae Timestamping selected as the printer"><h3><span class="vw-num">1</span>Choose “Verae Timestamping”</h3><p>Pick it from your printer list in any app’s Print dialog.</p></div>
|
|
<div class="vw-step"><img src="/img/source-document.jpg" alt="The source document being printed"><h3><span class="vw-num">2</span>Print as normal</h3><p>Your PDF is saved to Documents/Verae Timestamps, signed with your key, and its fingerprint is registered.</p></div>
|
|
<div class="vw-step"><a href="/samples/verae-receipt-sample.pdf" target="_blank" rel="noopener" title="Open the sample receipt PDF"><img src="/img/receipt.jpg" alt="Verae Timestamp Registration receipt"></a><h3><span class="vw-num">3</span>Get your receipt</h3><p>A registration receipt with the SHA-256, ledger receipt ID and a QR code for public lookup.</p></div>
|
|
</div>
|
|
<p class="vw-hint">Swipe to see all 3 steps →</p>
|
|
<div class="vw-foot"><div class="vw-left"><small>Only the document’s fingerprint leaves your computer — never the file itself.</small><label class="vw-dsa"><input type="checkbox" id="vw-dsa"> Don’t show this again</label></div><button type="button" class="vw-go" id="vw-go">Get started</button></div>
|
|
</div>
|
|
</div>
|
|
<script>
|
|
(function(){
|
|
var o=document.getElementById('vw'),K='veraeWelcomeSeen';
|
|
function show(){try{document.getElementById('vw-dsa').checked=localStorage.getItem(K)==='1'}catch(e){}o.classList.add('open');document.getElementById('vw-go').focus();}
|
|
function hide(){o.classList.remove('open');try{if(document.getElementById('vw-dsa').checked){localStorage.setItem(K,'1')}else{localStorage.removeItem(K)}}catch(e){}}
|
|
document.getElementById('vw-open').onclick=show;document.getElementById('vw-open-thumb').onclick=show;
|
|
document.getElementById('vw-x').onclick=hide;
|
|
document.getElementById('vw-go').onclick=function(){hide();var d=document.getElementById('dl-heading');if(d)d.scrollIntoView({behavior:'smooth'});};
|
|
o.addEventListener('click',function(e){if(e.target===o)hide();});
|
|
document.addEventListener('keydown',function(e){if(e.key==='Escape'&&o.classList.contains('open'))hide();});
|
|
var seen=false;try{seen=localStorage.getItem(K)==='1'}catch(e){}
|
|
if(!seen||location.hash==='#how-it-works')show();
|
|
})();
|
|
</script>
|
|
</body>
|
|
</html>
|