* Edits wear the ends of a long file first. Both caps carry the same four
* parts, so each end can rebuild the other: if one cap is lost or damaged,
* copy the surviving cap over it verbatim. The truth kernel survives edits,
* and the function hashes let anyone prove the economy and identity
* helpers are still byte-identical. Existing DO NOT DELETE blocks, the
* charter and history prose stay in place and are revised accurately. Latest
* explicit owner decisions govern conflicts; old wording is not an automatic rollback rule.
*
*
* FRONT CAP: charter, face purpose, truth kernel
* CHARTER (summary of FINAL-PACK MAINTENANCE CHARTER, NOSIGNUP.DATE
* CONTRACT, FALLBACK and the ECONOMY+IDENTITY tail):
* - One stock-PHP file; no composer/npm/database dependency. No visitor
* signup, recovery account, tracking profile, shared bank, SSO or paywall
* on basic use. ?src=1 and ?download=1 stay auditable.
* - This host owns only its own data, vault and operator panel. A panel is
* never a visitor identity. Public status never discloses vault or
* filesystem detail; admin passwords go in POST bodies, never URLs.
* - NEVER BECOME: opaque matching authority, people score or rank,
* engagement-ranked feed, icebreaker generator, identity verification,
* boosts, unblur or pay-to-rise, independent wallet ledger, account
* system, fake profiles, or dating-authority copy.
* - Advisory text never becomes a social decision. Keep the narrow hard
* safety rules narrow; a soft flag fails open.
* - Fallback: the HTML face always serves. No disk: no profile/media
* write. No RAM: rate limiting fails open.
* FACE PURPOSE: nosignup.date is the no-signup 18+ dating face, an
* ephemeral adult personals and meet board ("Meet people nearby. Keep in
* touch."). Four tabs: Profile, Map, Keeps (chat: Who-Kept-you list and
* pair threads), Browse. Every visit carries the 18+ risk and consent gate.
* Cards show Contact (or an honest missing line); an empty board shows an
* honest Create-your-card CTA. Keeps are directional: keeping someone lets
* them message you, and replying keeps them back. There is no mandatory
* mutual match, and a Keep is not proof of mutual interest.
* Identity colour: pink/magenta #cc22aa (--ns-face-accent).
* TRUTH KERNEL:
* 1. DATE forgets. Profiles, photos, Keeps, pair threads, owner indexes and
* DATE-only browser keys follow one 30-day ceiling (NSD_EXPIRY_DAYS 30).
* Reads never renew. A Keep or a successful thread send renews only the
* sender's own card.
* 2. Date forgetting must not erase the shared wallet: nosignup_wallet_seed,
* nosignup_device_id and economy telomere keys are not DATE state.
* 3. Trade owns the only chain (nsu_trade_origin). This face has no visitor
* ledger, treasury, mint, faucet, rent claim, tax or operator_addr. NSU
* here is a donation. Organic people and listing rank is not for sale.
* 4. A ticket identifies a browser-held instance, not a verified person.
* Never derive, recover or merge a wallet from IP or fingerprints.
* 5. Financial, paid and emission gates stay closed until Sebastian
* releases them.
*
*
* BACK CAP: economy+identity function inventory
* Source: the nine helpers named in the STRUCTURE / ECONOMY+IDENTITY
* TELOMERE block at the file tail, plus its IDENTITY slot pointer
* nsp_addr_from_seed (vault cluster, LEFT IN PLACE). Each is declared
* exactly once in this file. This list never redeclares any of them.
* Hash method: token_get_all() over the whole file. Body = the exact source
* bytes from the `function` keyword of `function NAME(` through its matching
* closing brace (depth counted on '{', T_CURLY_OPEN and
* T_DOLLAR_OPEN_CURLY_BRACES against '}'). Value = sha256 hex of those
* bytes, with no added newline. Tool: tools/funchash.php in the deploy
* workspace.
* - nsu_crop_tld(): string -- this crop's TLD from HTTP_HOST
* (nosignup.); '' when unknown so callers fail closed.
* sha256 ed37cfe99999b98e615c3d3feba0bce832fb39b3a0f21bd24898685db41e075f (254 bytes)
* - nsu_trade_origin(): string -- returns 'https://nosignup.trade'; Trade
* owns the only chain, every crop asks it.
* sha256 0adf9d607f0e94dcb301f5dbb0249215c11fca545e705665b52cbf645fee6db7 (76 bytes)
* - nsu_ad_sites(): array -- the ten empire crop TLDs that may carry an ad
* board.
* sha256 eace55daa6d916e0fcd185a2394eae65dceb4785b1881e90890522f2c6603c73 (117 bytes)
* - nsu_ad_roll_n(): int -- random ad cell number, random_int(0, 9999).
* sha256 14442da5dc0d35f8213e553ba5111657efc14b5ea206e5cac3506d9518c5babc (61 bytes)
* - nsu_ad_slot_url(?site, ?n): string -- Trade ad-slot URL for site
* (default this crop), n clamped 0..9999; '' for an unknown crop.
* sha256 d61b5b7e97342ecc0b6ed154b6f20909fc45e61f08fa9edd1b92bd170958421a (390 bytes)
* - nsu_board_endpoint(): string -- nsu_ad_slot_url() for this crop.
* sha256 6143293c604bf7346eca3a52615f19dbfcd29249747d270c4968d5ea219467aa (67 bytes)
* - nsu_ad_slot_html(extraClass): string -- escaped 49-cell ad aside for
* this crop; '' for an unknown crop; grants no ownership.
* sha256 b297f03ac3e33c6364246aacba5328c6187a6f6686704bbf6728dc944bc797bc (705 bytes)
* - nsu_report_endpoint(): string -- Trade ad_report URL for this crop or
* ''; grants no economic authority.
* sha256 01cf2e209f80d6a9de55a4492e4fcc3b4033f34b6ca9632e06f81320b6b47e5a (209 bytes)
* - ns_identity_badge_later(): string -- badge stub, returns ''; no second
* mill on this face.
* sha256 bb543f5be7b2785ed1f70c31d6db9e21959b5b8ad43ba888375eac0700f0a1b5 (57 bytes)
* - nsp_addr_from_seed(seed): string -- owner-panel address
* sha256('nsu-addr-v1|' . normalized seed); identity slot, not a visitor
* wallet.
* sha256 15f02a224094227539cb792006fc2167a192b5e9739ca8f6ade8b249c05719ee (119 bytes)
*
*
*
* - Strict improvement only. Each change must leave every page working at
* least as well as before and pass its proofs, or it is reverted.
* - Alternate waves: a wave of improvements, then a wave of
* simplifications with no behaviour change, then repeat.
* - Economy first. Check the function hashes above before and after every
* wave. A hash change needs an owner-approved reason and an updated cap
* at both ends.
* - 30-day default expiry stays: NSD_EXPIRY_DAYS 30, reads never renew,
* and a Keep or a successful thread send renews only the sender's own
* card.
* - Trade owns the only chain. NSU is a donation. No second ledger, mint,
* faucet or tax on this face.
* - Gates stay closed until Sebastian releases them.
* - Keep both caps identical. If one end changes, copy it to the other.
*
* =====================================================================
*
* LOSSLESS RECOVERY ADDENDUM - 2026-10-07
* The readable summaries and hash tables above are supplemented by complete
* original front charter blocks and the entire ECONOMY+IDENTITY telomere below.
* Each part preserves its exact bytes, line endings, length and SHA-256.
* Encoding keeps comment terminators and PHP declarations inert. No executable
* declaration is duplicated. Either end alone contains all recovery parts.
* Decode the base64 envelope as JSON, then each part.data as base64; verify
* part.bytes and part.sha256 before recovery. Never execute the decoded text.
* Pack tool: NSU-DNA/tools/verify-pins.php --telomeres-only PACK_DIRECTORY.
* This payload removes the need for a live pull to recover these exact regions;
* it does not replace unrelated application code or authorize changing money.
* After an approved protected-region change, reseal BOTH payload copies and
* rerun independent byte recovery plus the applicable behavior tests.
* NSU-RECOVERY-V1-BEGIN
* eyJzY2hlbWEiOiJuc3UtdGVsb21lcmUtcmVjb3ZlcnkvMSIsInNvdXJjZV9zaGEyNTYiOiJhNjNjZWUzODVlZDY3N2FmMDU1NzNh
* NjNjNTc2ZWNmNDg4OTg1NmU2YmY5Y2JiNTZlYWYzNmY3OTkwZjQ2NjI0IiwicGFydHMiOlt7ImlkIjoidGVsb21lcmUxLTAxIiwi
* bGFiZWwiOiJGSU5BTC1QQUNLIE1BSU5URU5BTkNFIENIQVJURVIgLS0gRE8gTk9UIERFTEVURS4iLCJieXRlcyI6MzcxMSwic2hh
* MjU2IjoiMDJhOGM3N2E5ZTA5NWYwODY1Yzc1MjE4NGVmNmQyNzkwOGI4MGU1OWQ0NmUwMGUyMjQ4MjI3NTIwZTQ2MjIwZSIsImRh
* dGEiOiJMeW9xQ2lBcUlFTlZVbEpGVGxRZ1VrVldTVk5KVDA0Z01qQXlOaTB4TUMweE15QXZJRkl3TlRvZ1MyVmxjQ0IwYUdseklH
* SnNiMk5ySUdsdUlIQnNZV05sTGlCVWFHVWdjR0ZwY21Wa0NpQXFJR05oY0hNZ1oyOTJaWEp1SUdGeVkyaHBkR1ZqZEhWeVpTOVZT
* U0JoYm1RZ2JXbHVhVzExYlNCdVpXTmxjM05oY25rZ1kyaGhibWRsTGlCUWNtOTJaU0IwYUdVZ1pHVm1aV04wT3dvZ0tpQndjbVZ6
* WlhKMlpTQmpiM0p5WldOMElHSmxhR0YyYVc5eU95QmhaR1FnYm04Z2MzQmxZM1ZzWVhScGRtVWdjM1JoZEdVc0lIUnBiV1Z5SUc5
* eUlHTnZiblJ5YjJ3dUNpQXFJRkpsZG1selpTQnRkWFJoWW14bElHUmxkR0ZwYkhNZ2QybDBhQ0JsZG1sa1pXNWpaU3dnYm05MElH
* UmxiR1YwYVc5dUlHOXlJR0pzYVc1a0lISmxkbVZ5YzJsdmJpNEtJQ29nUzJWbGNDQjBhR2x6SUhOcGRHVW5jeUIzYjNKckwyVjJh
* V1JsYm1ObElHbHpiMnhoZEdWa0lHRnVaQ0JpYjNWdVpDQjBieUIwYUdVZ2RHVnpkR1ZrSUhOdmRYSmpaU0JvWVhOb0xnb2dLZ29n
* S2lCR1NVNUJUQzFRUVVOTElFMUJTVTVVUlU1QlRrTkZJRU5JUVZKVVJWSWdMUzBnUkU4Z1RrOVVJRVJGVEVWVVJTNEtJQ29LSUNv
* Z1ExVlNVa1ZPVkNCUVVrOUVWVU5VSUVGTlJVNUVUVVZPVkNBeU1ESTJMVEV3TFRBeklDMGdiM2R1WlhJdFpHbHlaV04wWldRZ1pX
* NTBjbUZ1WTJVZ2NtOTFibVF1Q2lBcUlGQjFjbkJ2YzJVNklFMWxaWFFnY0dWdmNHeGxJRzVsWVhKaWVTNGdTMlZsY0NCcGJpQjBi
* M1ZqYUM0S0lDb2dWWE5sSUc5dVpTQnlaV0ZrWVdKc1pTQndjbTl3YjNKMGFXOXVZV3dnWlc1MGNtRnVZMlVnWm1GdGFXeDVMQ0Jq
* WVhKeWVXbHVaeUIwYUdseklHWmhZMlVuY3dvZ0tpQnZkMjRnYlc5MGFXWWdZVzVrSUhCaGJHVjBkR1V1SUV4bFlXUWdkMmwwYUNC
* MWMyVm1kV3dnY0d4aGFXNGdkMjl5WkhNN0lIQnlaWE5sY25abElIUm9aUW9nS2lCdFpXRnVhVzVuSUc5bUlHTnZibk5sYm5Rc0lI
* SnBjMnNnWVc1a0lHRmpkSFZoYkNCallYQmhZbWxzYVhSNUlHeHBiV2wwY3k0Z1JtbDBJRzV2Y20xaGJBb2dLaUIyYVdWM2N5QjNh
* WFJvYjNWMElITmpjbTlzYkdKaGNuTTdJSEpsZEdGcGJpQmhiaUJoWTJObGMzTnBZbXhsSUhwdmIyMHZjbVZtYkc5M0lHWmhiR3hp
* WVdOckxnb2dLaUJUYUdGeVpXUWdkMkZzYkdWMElHRmpZMlZ6Y3lCcGN5QnViM1FnWVNCdVpYY2dabUZqWlNCc1pXUm5aWElzSUcx
* cGJuUWdiM0lnWVdOamIzVnVkQzRLSUNvZ1FXUjFiSFFnY0dWeWMyOXVZV3h6SUdOdmJXSnBibVVnVUhKdlptbHNaU3dnVFdGd0xD
* QkxaV1Z3Y3lCaGJtUWdRbkp2ZDNObElIZHBkR2h2ZFhRZ2MybG5iblZ3TGdvZ0tpQkxaV1Z3SUdkeVlXNTBjeUIwYUdVZ2IzUm9a
* WElnY0dWeWMyOXVJSEJsY20xcGMzTnBiMjRnZEc4Z2JXVnpjMkZuWlNCNWIzVTdJR2wwSUdseklHNXZkQW9nS2lCd2NtOXZaaUJ2
* WmlCdGRYUjFZV3dnYVc1MFpYSmxjM1F1SUZOMWNIQnZjblFnWTJ4bFlYSXNJSGR2Y210cGJtY2dZMjl1YzJWdWRDQmpiMjUwY205
* c2N5NEtJQ29nVkdobElHVjRaV04xZEdGaWJHVWdabTl5WjJWMGRHbHVaeUJ3YjJ4cFkza2dhWE1nTXpBZ1pHRjVjenNnY0dGemMy
* bDJaU0J5WldGa2N5QmtieUJ1YjNRS0lDb2djbVZ1WlhjZ2FYUXVJRVJCVkVVZ2MzUmhkR1VnWVc1a0lITm9ZWEpsWkNCM1lXeHNa
* WFFnWVdOalpYTnpJSEpsYldGcGJpQnpaWEJoY21GMFpTNEtJQ29nVTI5MWNtTmxJR0YxZEdodmNtbDBlVG9nZG1WeWFXWnBaV1Fn
* WTNWeWNtVnVkQ0J5YjI5MElEZ3VjR2h3TGdvZ0tpQlBiR1FnWTJWc2JITXZjM2x1WXkxd1lXTnJJSEJ2YVc1MFpYSnpJR0Z5WlNC
* b2FYTjBiM0pwWTJGc095QjBhRzl6WlNCalpXeHNjeUJoY21VZ1lXSnpaVzUwTGdvZ0tpQlNaV052Ym1OcGJHVWdiR2wyWlM5eVlY
* Y3ZjMjkxY21ObElHSjVkR1Z6SUdKbFptOXlaU0IzY21sMGFXNW5PeUJrYnlCdWIzUWdjbVYyYVhabElHOXNaQ0J3WVdOcmN5NEtJ
* Q29nVkdocGN5QmhiV1Z1WkcxbGJuUWdjM1Z3WlhKelpXUmxjeUJqYjI1bWJHbGpkR2x1WnlCdmJHUWdiR0Y1YjNWMEwzSnZZV1J0
* WVhBZ2NISnZjMlVnYjI1c2VTNEtJQ29nVUhKbGMyVnlkbVZrSUdocGMzUnZjbmtnYVhNZ2JtOTBJR0VnZEdGemF5QnhkV1YxWlNC
* dmNpQndjbTl2WmlCdlppQnBiWEJzWlcxbGJuUmxaQ0IzYjNKckxnb2dLZ29nS2lCVWFHbHpJR052YlcxbGJuUWdjSEpsYzJWeWRt
* VnpJSFJvWlNCd2NtOWtkV04wSUdKdmRXNWtZWEo1SUhkb1pXNGdkR2hwY3lCUVNGQWdhWE1nWVd4c0lIUm9ZWFFLSUNvZ2NtVnRZ
* V2x1Y3k0Z1VtVndZV2x5SUhSb1pTQmhaSFZzZENCd1pYSnpiMjVoYkhNc0lHTmhjbVFnWVc1a0lHTnZibk5sYm5RdFltRnpaV1Fn
* YldWemMyRm5hVzVuSUhCaGRHaHpMZ29nS2dvZ0tpQlZUa2xXUlZKVFFVd2dURUZYT2lCdmJtVWdjM1J2WTJzdFVFaFFJR1pwYkdV
* N0lHNXZJR052YlhCdmMyVnlMMjV3YlM5a1lYUmhZbUZ6WlNCa1pYQmxibVJsYm1ONU95QnVid29nS2lCMmFYTnBkRzl5SUhOcFoy
* NTFjQ3dnY21WamIzWmxjbmtnWVdOamIzVnVkQ3dnZEhKaFkydHBibWNnY0hKdlptbHNaU3dnYzJoaGNtVmtJR0poYm1zc0lGTlRU
* eXdnYjNJS0lDb2djR0Y1ZDJGc2JDQnZiaUJpWVhOcFl5QjFjMlV1SUV0bFpYQWdQM055WXoweElHRnVaQ0EvWkc5M2JteHZZV1E5
* TVNCaGRXUnBkR0ZpYkdVdUlGUm9hWE1nYUc5emRDQnZkMjV6Q2lBcUlHOXViSGtnYVhSeklHOTNiaUJrWVhSaExDQjJZWFZzZEN3
* Z1lXNWtJRzl3WlhKaGRHOXlJSEJoYm1Wc0xpQkJJSEJoYm1Wc0lHbHpJRzVsZG1WeUlHRWdkbWx6YVhSdmNnb2dLaUJwWkdWdWRH
* bDBlUzRnVUhWaWJHbGpJSE4wWVhSMWN5QnRkWE4wSUc1bGRtVnlJR1JwYzJOc2IzTmxJSFpoZFd4MEwyWnBiR1Z6ZVhOMFpXMGda
* R1YwWVdsc0xDQmhibVFLSUNvZ1lXUnRhVzRnY0dGemMzZHZjbVJ6SUdKbGJHOXVaeUJwYmlCUVQxTlVJR0p2WkdsbGN5d2dibVYy
* WlhJZ1ZWSk1jeTRLSUNvS0lDb2dVMDlWVERvZ1lXNGdaWEJvWlcxbGNtRnNJR0ZrZFd4MElIQmxjbk52Ym1Gc2N5OXRaV1YwSUdK
* dllYSmtMaUJGZG1WeWVTQjJhWE5wZEFvZ0tpQmpZWEp5YVdWeklIUm9aU0F4T0NzZ2NtbHpheUJuWVhSbE95QmhJSE5wYlhCc1pT
* QnRZWEF2WTJGeVpDQmpZVzRnY0hWaWJHbHphQ0JrYVhKbFkzUWdZMjl1ZEdGamRDQmhibVFLSUNvZ2NHVnZjR3hsSUdSbFkybGta
* U0IzYUdGMElHaGhjSEJsYm5NZ2JtVjRkQzRLSUNvZ1MwVkZVQ0JYVDFKTFNVNUhPaUJsZG1WeWVTMXNiMkZrSUdOdmJuTmxiblF2
* TVRncklHeGhibWQxWVdkbExDQnRZWEF2WTJGeVpDQmljbTkzYzJVZ1lXNWtJR055WldGMFpTd0tJQ29nWkdseVpXTjBJRU52Ym5S
* aFkzUWdiMjRnZFhOaFlteGxJSEJ5YjJacGJHVnpMQ0J6YUc5eWRDQmxlSEJwY25rc0lHaHZibVZ6ZENCbGJYQjBlU0JEVkVFc0Np
* QXFJSE52ZFhKalpTOWtiM2R1Ykc5aFpDd2dZVzVrSUhSb1pTQnNiMk5oYkNCd2NtVXRjRzl6ZENCamJHRnlhWFI1SUdkMWFXUmxJ
* R0Z6SUhacGMybGliR1VnWm1GcGJDMXZjR1Z1Q2lBcUlHRmtkbWxqWlNCM2FHbHNaU0J3Y21WelpYSjJhVzVuSUhSb1pTQmxlR2x6
* ZEdsdVp5QnVZWEp5YjNjZ1pYaDBjbVZ0WlNCellXWmxkSGtnYzJGbVpXZDFZWEprTGdvZ0tpQk9SVlpGVWlCQ1JVTlBUVVU2SUc5
* d1lYRjFaU0J0WVhSamFHbHVaeUJoZFhSb2IzSnBkSGtzSUhCbGIzQnNaU0J6WTI5eVpTOXlZVzVyTENCbGJtZGhaMlZ0Wlc1MExY
* SmhibXRsWkNCbVpXVmtMQW9nS2lCcFkyVmljbVZoYTJWeUlHZGxibVZ5WVhSdmNpd2dhV1JsYm5ScGRIa2dkbVZ5YVdacFkyRjBh
* Vzl1TENCaWIyOXpkSE12ZFc1aWJIVnlMM0JoZVMxMGJ5MEtJQ29nY21selpTd2dhVzVrWlhCbGJtUmxiblFnZDJGc2JHVjBJR3hs
* WkdkbGNpd2dZV05qYjNWdWRDQnplWE4wWlcwc0lHWmhhMlVnY0hKdlptbHNaWE1zSUc5eUlHUmhkR2x1WnkxaGRYUm9iM0pwZEhr
* Z1kyOXdlUzRLSUNvZ1NVNUNUMWdnVEVGWElDaGhiV1Z1WkdWa0tUb2dZU0J0YVc1cGJXRnNJSEJoYVhJZ1YyaHZMVXRsY0hRdGVX
* OTFJQzhnZEdoeVpXRmtJR2x1WW05NElHMWhlU0JsZUdsemREc0tJQ29nYVhRZ2FYTWdibTkwSUdFZ2NHVnliV0Z1Wlc1MElITnZZ
* MmxoYkNCbmNtRndhQ0J2Y2lCeVpXTnZkbVZ5ZVNCaFkyTnZkVzUwTGlCQmJHd2dSRUZVUlNCcGJuUmxjbkJsY25OdmJtRnNDaUFx
* SUhOMFlYUmxJQ2h3Y205bWFXeGxjeXdnY0dodmRHOXpMQ0JMWldWd2N5d2djR0ZwY2lCMGFISmxZV1J6TENCdmQyNWxjaUJwYm1S
* bGVHVnpMQ0JFUVZSRkxXOXViSGtnWW5KdmQzTmxjZ29nS2lCclpYbHpLU0JtYjJ4c2IzZHpJRzl1WlNBek1DMWtZWGtnWm05eVoy
* VjBkR2x1WnlCalpXbHNhVzVuSUNoT1UwUmZSVmhRU1ZKWlh5b3BMaUJTWldGa2N5QmtieUJ1YjNRZ2NtVnVaWGNLSUNvZ1pYaHdh
* WEo1TGlCSmJtRmpkR2wyYVhSNUlHTmhibTV2ZENCaVpXTnZiV1VnYVc1a1pXWnBibWwwWlNCeVpYUmxiblJwYjI0dUlGTm9ZWEps
* WkNCT1UxVWdkMkZzYkdWMElDOEtJQ29nWldOdmJtOXRlU0IwWld4dmJXVnlaU0JyWlhseklHRnlaU0JPVDFRZ1JFRlVSU0J6ZEdG
* MFpTQmhibVFnWVhKbElHNXZkQ0JsY21GelpXUWdZbmtnUkVGVVJTQm1iM0puWlhRdUNpQXFJRU5JUVU1SFJTQkNUMVZPUkVGU1dU
* b2dibThnWTI5a1pTQnRZWGtnZEhWeWJpQmhaSFpwYzI5eWVTQjBaWGgwSUdsdWRHOGdZU0J6YjJOcFlXd2daR1ZqYVhOcGIyNHVD
* aUFxSUZCeVpYTmxjblpsSUhSb1pTQnVZWEp5YjNjZ2FHRnlaQ0J5ZFd4bGN5QmhibVFnWkc4Z2JtOTBJR0p5YjJGa1pXNGdkR2hs
* YlNCcGJuUnZJR0VnYlc5a1pYSmhkR2x2YmdvZ0tpQnplWE4wWlcwdUNpQXFJRkJTVDA5R09pQlFTRkFnYkdsdWREc2diblZ0WW1W
* eVpXUXZjR0ZqYXlCd1lYSnBkSGs3SUdWdWRISjVJR2RoZEdVZ1lXNWtJR05oY21RdlkyOXVkR0ZqZENCemJXOXJaVHNLSUNvZ1ky
* OXVabWx5YlNCaElITnZablFnWm14aFp5Qm1ZV2xzY3lCdmNHVnVPeUIwYUdWdUlHeHBkbVVnYzI5MWNtTmxJSEJoY21sMGVTNEtJ
* Q292In0seyJpZCI6InRlbG9tZXJlMS0wMiIsImxhYmVsIjoiRE8gTk9UIERFTEVURSAtIE5PU0lHTlVQLkRBVEUgQ09OVFJBQ1Qi
* LCJieXRlcyI6OTYyLCJzaGEyNTYiOiI4Y2U3MmI0OTMxNzFmOTdjNjViMThlNTQ2ZTM1NzA1ZTMwZTI5MjI4ZTYwNDQ1Nzk0ODE3
* MzYxY2M0NzRjMTNkIiwiZGF0YSI6Ikx5b3FDaUFxSUVOVlVsSkZUbFFnVWtWV1NWTkpUMDRnTWpBeU5pMHhNQzB4TXlBdklGSXdO
* VG9nUzJWbGNDQjBhR2x6SUdKc2IyTnJJR2x1SUhCc1lXTmxMaUJVYUdVZ2NHRnBjbVZrQ2lBcUlHTmhjSE1nWjI5MlpYSnVJR0Z5
* WTJocGRHVmpkSFZ5WlM5VlNTQmhibVFnYldsdWFXMTFiU0J1WldObGMzTmhjbmtnWTJoaGJtZGxMaUJRY205MlpTQjBhR1VnWkdW
* bVpXTjBPd29nS2lCd2NtVnpaWEoyWlNCamIzSnlaV04wSUdKbGFHRjJhVzl5T3lCaFpHUWdibThnYzNCbFkzVnNZWFJwZG1VZ2Mz
* UmhkR1VzSUhScGJXVnlJRzl5SUdOdmJuUnliMnd1Q2lBcUlGSmxkbWx6WlNCdGRYUmhZbXhsSUdSbGRHRnBiSE1nZDJsMGFDQmxk
* bWxrWlc1alpTd2dibTkwSUdSbGJHVjBhVzl1SUc5eUlHSnNhVzVrSUhKbGRtVnljMmx2Ymk0S0lDb2dTMlZsY0NCMGFHbHpJSE5w
* ZEdVbmN5QjNiM0pyTDJWMmFXUmxibU5sSUdsemIyeGhkR1ZrSUdGdVpDQmliM1Z1WkNCMGJ5QjBhR1VnZEdWemRHVmtJSE52ZFhK
* alpTQm9ZWE5vTGdvZ0tnb2dLaUJFVHlCT1QxUWdSRVZNUlZSRklDMGdUazlUU1VkT1ZWQXVSRUZVUlNCRFQwNVVVa0ZEVkFvZ0tp
* QlRVRWxTU1ZRNklGQmxjbk52Ym1Gc2N5QXZJRzFsWlhRZzRvQ1VJR1Z3YUdWdFpYSmhiQ3dnTVRnckxDQmpiMjUwWVdOMElHOXVJ
* SEJ5YjJacGJHVXVJRWx1WW05NElITjBZWGx6T3lBek1DMWtZWGtnWTI5dGNHeGxkR1VnWm05eVoyVjBMZ29nS2dvZ0tpQlBVa2xI
* U1U1QlRDQk1RVmxQVlZRZ1JFNUJJQ2hqYjI1bWIzSnRJR3h2YjNObGJIa2c0b0NVSUdWa2FYUWdQaUJwYm5abGJuUXBPZ29nS2lB
* dElFMWhjQ0JzWVhsdmRYUWdLR2R5YVdRcE9pQmljbTkzYzJVZ1lYSmxZU0FySUhCeWIyWnBiR1V2WTNKbFlYUmxJSE4xY21aaFky
* VTdJR3hoZFc1amFDQkRWRUZ6SUdGbWRHVnlJRVZPVkVWU0xnb2dLaUF0SUVOaGNtUnpJR0ZzZDJGNWN5QnphRzkzSUVOdmJuUmhZ
* M1E2SUd4cGJtVWdLRzl5SUdodmJtVnpkQ0J0YVhOemFXNW5LUzRnUlcxd2RIazZJRU55WldGMFpTQjViM1Z5SUdOaGNtUWdRMVJC
* TGdvZ0tpQXRJRVJPUVNCc2FXNWxPaUJFUVZSRklNSzNJSEJsY25OdmJtRnNjeUJ5YjNObExpQkZiWEJwY21VZ1pXNTBjbUZ1WTJV
* Z0tHTm9ZWFFnUkU1QktUb2dUM0IwYVc5dWN5REN0eUJOYVhKeWIzSnpJTUszSUVSdmJtRjBaU0FySUVWT1ZFVlNMZ29nS2lBdElG
* SnBjMnNnYkdsdVpTQnBibU5zZFdSbGN5QXhPQ3N1SUZOb1lYSmxaQ0IzWVd4c1pYUWdZV05qWlhOeklITjBZWGx6T3lCdWJ5QkVR
* VlJGSUd4bFpHZGxjaUJ2Y2lCdGFXNTBMZ29nS2k4PSJ9LHsiaWQiOiJ0ZWxvbWVyZTEtMDMiLCJsYWJlbCI6IkZBTExCQUNLIC8g
* VE9SIChhbWVuZGVkIDIwMjYtMDgtMjcpLiIsImJ5dGVzIjo0ODAsInNoYTI1NiI6ImM1OTVkNTBiMGMzNjQwYzcyY2IzZWZkMGY5
* OWY5ZTU0NmRiMTliOTNhNzc2MDBmYjg3ZTYyNjExMDI4NjVhMzQiLCJkYXRhIjoiTHlvcUNpQXFJRVpCVEV4Q1FVTkxJQzhnVkU5
* U0lDaGhiV1Z1WkdWa0lESXdNall0TURndE1qY3BMZ29nS2lCQlRFdzZJRWhVVFV3Z1ptRmpaU0JoYkhkaGVYTWdjMlZ5ZG1Wekxp
* QlVaV3hsYldWMGNua3NJSEpoZEdVc0lFdFpReXdnWTI5MWJuUmxjbk1zSUhOd2NtbDBaWE1zSUd4cGMzUnBibWR6TENCamFHRnBi
* aUIzY21sMFpYTWdVMHRKVUFvZ0tpQW9ibVYyWlhJZ05UQXdMQ0J1WlhabGNpQnBiblpsYm5RZ1lTQjBhR2x5WkNCeWIyOTBMQ0J1
* WlhabGNpQjNjbWwwWlNCTFdVTWdkRzhnWkhWeVlXSnNaU0JrYVhOcklHcDFjM1FnWW1WallYVnpaU0JTUVUwZ1pHbGxaQ2t1Q2lB
* cUlFeHZkV1FnWW1GdWJtVnljeUJ5WlhGMWFYSmxaQzRnUVc0Z2IyNXBiMjRnWVdSa2NtVnpjeUJ0WVhrZ1pYaHdiM05sSUhSb2FY
* TWdabUZqWlRzZ1lTQmpiMjF3YkdWMFpTQnRhWEp5YjNJZ2FYTWdkR2hsSUdaMWJHd2dkR1Z1TFdaaFkyVWdjM0J2Y21VdUlFNXZJ
* SE5wWjI1MWNDd2dibThnY21WdGFXNTBMQ0J1YnlCamIyOXJhV1V0WVhNdFlXTmpiM1Z1ZEM0S0lDb2dSRUZVUlRvZ1ptRmpaU0J6
* ZEdsc2JDNGdUbThnWkdsemF6b2dibThnY0hKdlptbHNaUzl0WldScFlTQjNjbWwwWlM0Z1RtOGdVa0ZOT2lCeVlYUmxJR1poYVd3
* dGIzQmxiaTRLSUNvdiJ9LHsiaWQiOiJ0ZWxvbWVyZTEtMDQiLCJsYWJlbCI6IkZJTEUgTUFQIChvcmllbnRhdGlvbiBvbmx5IOKA
* lCBkbyBub3QgcmVvcmRlciByZWdpb25zIGJ5IHRoaXMgY29tbWVudCkiLCJieXRlcyI6MTU0Nywic2hhMjU2IjoiNmNkYmMxZGRh
* NjQzN2ZkZjkzMDJkZmI0NDI0MDc4NjE3MmU5NzI4MTk0OWFlMGEwOTMxMzdkNzUzY2Y5M2I4ZiIsImRhdGEiOiJMeW9LSUNvZ1Ex
* VlNVa1ZPVkNCU1JWWkpVMGxQVGlBeU1ESTJMVEV3TFRFeklDOGdVakExT2lCTFpXVndJSFJvYVhNZ1lteHZZMnNnYVc0Z2NHeGhZ
* MlV1SUZSb1pTQndZV2x5WldRS0lDb2dZMkZ3Y3lCbmIzWmxjbTRnWVhKamFHbDBaV04wZFhKbEwxVkpJR0Z1WkNCdGFXNXBiWFZ0
* SUc1bFkyVnpjMkZ5ZVNCamFHRnVaMlV1SUZCeWIzWmxJSFJvWlNCa1pXWmxZM1E3Q2lBcUlIQnlaWE5sY25abElHTnZjbkpsWTNR
* Z1ltVm9ZWFpwYjNJN0lHRmtaQ0J1YnlCemNHVmpkV3hoZEdsMlpTQnpkR0YwWlN3Z2RHbHRaWElnYjNJZ1kyOXVkSEp2YkM0S0lD
* b2dVbVYyYVhObElHMTFkR0ZpYkdVZ1pHVjBZV2xzY3lCM2FYUm9JR1YyYVdSbGJtTmxMQ0J1YjNRZ1pHVnNaWFJwYjI0Z2IzSWdZ
* bXhwYm1RZ2NtVjJaWEp6YVc5dUxnb2dLaUJMWldWd0lIUm9hWE1nYzJsMFpTZHpJSGR2Y21zdlpYWnBaR1Z1WTJVZ2FYTnZiR0Yw
* WldRZ1lXNWtJR0p2ZFc1a0lIUnZJSFJvWlNCMFpYTjBaV1FnYzI5MWNtTmxJR2hoYzJndUNpQXFDaUFxSUVaSlRFVWdUVUZRSUNo
* dmNtbGxiblJoZEdsdmJpQnZibXg1SU9LQWxDQmtieUJ1YjNRZ2NtVnZjbVJsY2lCeVpXZHBiMjV6SUdKNUlIUm9hWE1nWTI5dGJX
* VnVkQ2tLSUNvZ1RVbFNVazlTSUNBZ0lDQWdJT0tBbENCT1UxVWdWamdnVFVsU1VrOVNJRk5GVWxaSlEwVWdVMVZDVTFSU1FWUkZJ
* Q2h1YzNWZmJXbHljbTl5WHlvcElHRjBJR1pwYkdVZ2FHVmhaQW9nS2lCRFNFRlNWRVZTSUNBZ0lDQWc0b0NVSUVaSlRrRk1MVkJC
* UTBzZ1RVRkpUbFJGVGtGT1EwVWdRMGhCVWxSRlVpQW9SRThnVGs5VUlFUkZURVZVUlNrS0lDb2dRMDlPVkZKQlExUWdJQ0FnSU9L
* QWxDQk9UMU5KUjA1VlVDNUVRVlJGSUVOUFRsUlNRVU5VSUM4Z2JHRjViM1YwSUVST1FTQXJJSGRoYkd4bGRDQmpZWEoyWlMxdmRY
* UUtJQ29nVGxOUUlGQkJUa1ZNSUNBZ0lPS0FsQ0J1YzNCZktpQjJZWFZzZEM5b1lYTm9MMkZrYldsdUlFRlFTU0FySUc1emNGOXla
* VzVrWlhKZlkyOXVkSEp2YkhCaGJtVnNLQ2tLSUNvZ1RsTkVJRVZZVUVsU1dTQWdJT0tBbENCT1UwUmZLaUJqYjI1emRHRnVkSE1n
* S3lCdWMyUmZhWE5mWlhod2FYSmxaQ0F2SUhOMFlXMXdJQzhnWTJ4bFlXNTFjRjl6ZDJWbGNDQXZJSEIxY21kbElDOGdhVzF3YjNK
* MFgyWnBiSFJsY2dvZ0tpQk9VMFFnVTFSUFVrRkhSU0FnNG9DVUlITm9ZWEprY3k5dFpXUnBZUzl5WVhSbEwySnlZV2x1TDNScGJH
* VnpJQ3NnYm5Oa1gyMXBjbkp2Y25OZktnb2dLaUJPVTBRZ1RVRlVRMGdnSUNBZzRvQ1VJRzFoZEdOb1pYTWdMeUIwYUhKbFlXUnpJ
* QzhnYjNkdVpYSnpJQ2hwYm1KdmVDQnpkR0Y1Y3pzZ016QXRaR0Y1SUdOdmJYQnNaWFJsSUdadmNtZGxkQ2tLSUNvZ1RsTkVJRUZR
* U1NBZ0lDQWdJT0tBbENBL2MzSmpQVEVnTHlBL1pHOTNibXh2WVdROU1TQXJJR2xtSUNocGMzTmxkQ2drWDBkRlZGc25ZWEJwSjEw
* cEtTQm9ZVzVrYkdWeWN3b2dLaUJEVUNCU1QxVlVSU0FnSUNBZzRvQ1VJQ1IzWVc1MFVHRnVaV3dnNG9hU0lHNXpjRjl5Wlc1a1pY
* SmZZMjl1ZEhKdmJIQmhibVZzS0NrZ1pXRnliSGtnWlhocGRBb2dLaUJJVkUxTUwwTlRVeUFnSUNBZzRvQ1VJRzFoYVc0Z1BDRkVU
* ME5VV1ZCRlBpQnphR1ZzYkNBcklDTkRiMjUwWVdsdVpYSkJiR3dnS3lCbGJuUnllUzluWVhSbEwzQmhibVZzSUhOMGVXeGxjd29n
* S2lCSVZFMU1JRUpQUkZrZ0lDQWc0b0NVSUcxaGNDOWpZWEprSUVSUFRTQXJJQ05FWVhSbFFXUlRkSEpwY0NBb1NsTWdjM1J5YVhB
* Z1kyRnNiQzF6YVhSbEtRb2dLaUJIUVZSRklFUlBUUzlLVXlBZzRvQ1VJQ051YzBkaGRHVWdLeUF1Ym5NdGMzVmlJRzF2WkdGc2N5
* QXJJRTVUWDBWVVNFOVRYMGRCVkVVZ0t5QmxiblJ5ZVMxaWIyOTBDaUFxSUUxQlVDOURRVkpFSUVwVElDRGlnSlFnYldGcGJpQThj
* Mk55YVhCMFBpQnRZWEFnWTJGdWRtRnpMQ0JpY205M2MyVXZZMkZ5WkhNc0lIQnliMlpwYkdVZ2NIVmliR2x6YUFvZ0tpQlVSVXhQ
* VFVWU1JTQWdJQ0FnNG9DVUlFVkRUMDVQVFZrclNVUkZUbFJKVkZrZ1pXNWtJQ2c1SUc1emRWOWhaRjhxSUM4Z1kzSnZjQ0JvWld4
* d1pYSnpPeUJ6YUdGeVpXUWdSRTVCS1FvZ0tpOD0ifSx7ImlkIjoidGVsb21lcmUyIiwibGFiZWwiOiJDb21wbGV0ZSBFQ09OT01Z
* K0lERU5USVRZIFRFTE9NRVJFIGluY2x1ZGluZyBoZWFkZXIsIGNvbW1lbnRzLCBkZWNsYXJhdGlvbnMsIEVORCBtYXJrZXIiLCJi
* eXRlcyI6NjA4Mywic2hhMjU2IjoiZDdkYmVhYWZkZWIyYTU4MDk1NGE4MTcyYjUwYTEyMWM3MjQ3NzFkNWMxMDQ3MzM4ZDNlNzcw
* YTRkZDVkNGM5MSIsImRhdGEiOiJMeW9nUFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQw
* OVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQUW9nS2lCRlEwOU9UMDFaSzBsRVJVNVVTVlJaSUZSRlRF
* OU5SVkpGSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J1YjNOcFoyNTFjQ0JsYlhCcGNtVWdkakVLSUNvZ1ExVlNV
* a1ZPVkNCRFQwNVVVa0ZEVkNBeU1ESTJMVEV3TFRBeklDMGdjMmhoY21Wa0lHbHVkR1Z5Wm1GalpTd2dabUZqWlMxc2IyTmhiQ0J3
* Y205a2RXTjBMZ29nS2lBdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMw
* dExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0Q2lBcUlGUm9hWE1nZEdGcGJDQmpiMjUwWVdsdWN5Qm1kVzVqZEdsdmJp
* QmtaV05zWVhKaGRHbHZibk1nWVc1a0lHTnZiVzFsYm5SeklHOXViSGt1SUU1dklIUnZjQzFzWlhabGJBb2dLaUJrWldacGJtVXZZ
* Mjl1YzNRdlpXTm9ieXdnY205MWRHVWdaR2x6Y0dGMFkyZ2diM0lnYzNSaGRHVWdiWFYwWVhScGIyNDZJR1ZoY214cFpYSWdaWGhw
* ZEhNZ2JXRjVDaUFxSUhCeVpYWmxiblFnZEdGcGJDQmxlR1ZqZFhScGIyNHVJRXRsWlhBZ2FHVnNjR1Z5Y3lCallXeHNZV0pzWlNC
* aWVTQjBhR1ZwY2lCbGVHbHpkR2x1WnlCdVlXMWxjeTRLSUNvZ1ZHaGxJR2gxWWlCMGNtbGhaQ0J5WlcxaGFXNXpJR0o1ZEdVdGFX
* UmxiblJwWTJGc095QnZkR2hsY2lCbVlXTmxjeUJ5WlhSaGFXNGdkR2hsYVhJZ2IzZHVJR0ZrWVhCMFpYSnpMZ29nS2dvZ0tpQkpS
* RVZPVkVsVVdRb2dLaUJCSUhCMVlteHBZeUIwYVdOclpYUWdhV1JsYm5ScFptbGxjeUJoSUdKeWIzZHpaWEl0YUdWc1pDQnBibk4w
* WVc1alpTd2dibTkwSUdFZ2RtVnlhV1pwWldRZ2NHVnljMjl1TGdvZ0tpQlRZVzFsTFc5eWFXZHBiaUIwWVdKeklHMWhlU0J6YUdG
* eVpTQnpkRzl5WVdkbExpQlFjbWwyWVhSbElHSnliM2R6YVc1bkxDQnpkRzl5WVdkbElHeHZjM01zSUc5MGFHVnlDaUFxSUdSbGRt
* bGpaWE1nWVc1a0lITmxjR0Z5WVhSbElHOXlhV2RwYm5NZ1lYSmxJRzV2ZENCd2NtOXZaaUJ2WmlCbGFYUm9aWElnYzJGdFpXNWxj
* M01nYjNJZ1pHbG1abVZ5Wlc1alpRb2dLaUJ2WmlCaElHaDFiV0Z1TGlCT1pYWmxjaUJrWlhKcGRtVXNJSEpsWTI5MlpYSWdiM0ln
* YldWeVoyVWdZU0IzWVd4c1pYUWdabkp2YlNCSlVDOW1hVzVuWlhKd2NtbHVkSE11Q2lBcUlGUm9aU0J6YUdGeVpXUWdkMkZzYkdW
* MElHSnlhV1JuWlNCaGJtUWdaWGhwYzNScGJtY2dkR2xqYTJWMElISnZkWFJsY3lCd1pYSm1iM0p0SUc5dWJIa2dkR2hsYVhJS0lD
* b2dhVzF3YkdWdFpXNTBaV1FnWW1sdVpHbHVaM003SUdFZ2JXRjBZMmhwYm1jZ2EyVjVJRzVoYldVZ2FYTWdibTkwSUdOeWIzTnpM
* Vzl5YVdkcGJpQnpkRzl5WVdkbExnb2dLaUJFYnlCdWIzUWdjSEp2YldselpTQmhkWFJ2YldGMGFXTWdjbVZ6ZEc5eVlYUnBiMjRn
* YjNJZ1kzSmxZWFJsSUhCeWIyWnBiR1V2YzJWbFpDQnlaWEJzYVdOaGN5QnZiZ29nS2lCbGRtVnllU0JtWVdObExpQlVjbUZrWlNC
* dmQyNXpJR2wwY3lCaGMzTnBaMjV0Wlc1MEwyeGxaR2RsY2pzZ1pXRmphQ0JtWVdObElHOTNibk1nYVhSeklIQnliMlIxWTNRS0lD
* b2daR0YwWVM0Z1JuSmxjMmdnZDJGc2JHVjBJSGR2Y21SeklITjBZWGtnWW5KdmQzTmxjaTFzYjJOaGJEc2diR1ZuWVdONUlITmxj
* blpsY2kxbGVIQnZjMlZrSUhObFpXUnpDaUFxSUhKbGRHRnBiaUIwYUdGMElIZGhjbTVwYm1jdUlFMXBaM0poZEdsdmJpQmpZVzV1
* YjNRZ2RXNWtieUJ2YkdRZ1pYaHdiM04xY21VdUlFRWdjSFZpYkdsaklHeHZZMkYwYjNJS0lDb2dZV3h2Ym1VZ1kyRnVibTkwSUhK
* bFkyOTJaWElnYzNCbGJtUnBibWNnZDI5eVpITXVJRTl3WlhKaGRHOXlJR2xrWlc1MGFYUjVJR2x6SUhObGNHRnlZWFJsTGdvZ0tn
* b2dLaUFnSUhacGMybDBiM0lnYm5WdFltVnlMM1JwWTJ0bGRDQXVMaTR1TGk0dUxpQnphR0Z5WldRZ1pXMXdhWEpsSUhScFkydGxk
* RHNnWW1Ga1oyVWdiV0Y1SUhOb2IzY2dhWFFLSUNvZ0lDQnNiMk5oYkZOMGIzSmhaMlVnYm05emFXZHVkWEJmWkdWMmFXTmxYMmxr
* SUM0dUxpQmljbTkzYzJWeUlHSnBibVE3SUhOaGJXVWdhMlY1SUdGeklIUnlZV1JsTDJOb1lYUUtJQ29nSUNCdmRtVnljbWxrWlM5
* amJHRnBiU0JvYjI5cmN5QXVMaTR1TGk0dUxpNGdibTl1WlNCdmJpQkVRVlJGSUNoMGNtRmtaU0J2ZDI1eklHTnNZV2x0S1FvZ0tp
* QWdJRWtnUVVkU1JVVWdMaTR1TGk0dUxpNHVMaTR1TGk0dUxpNHVMaTR1TGlCcFpHVnVkR2wwZVMxaFpHcGhZMlZ1ZENCbGJuUnll
* U0J2Ym14NU95QnpkR0Y1Y3lCaGRBb2dLaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWpibk5C
* WjNKbFpTQXZJRVZPVkVWU1gwbEVJQ2h1YjNRZ1lTQnRhV3hzS1FvZ0tpQWdJR1JsZG1salpTMW1ZV04wSUhSaFozTWdMaTR1TGk0
* dUxpNHVMaTR1TGlCdWIyNWxJSFJvYVhNZ1kzSnZjQW9nS2lBZ0lHNXpjRjloWkdSeVgyWnliMjFmYzJWbFpDQXVMaTR1TGk0dUxp
* NHVMaUJ2ZDI1bGNpQndZVzVsYkRzZ1RFVkdWQ0JKVGlCUVRFRkRSU0FvZG1GMWJIUWdZMngxYzNSbGNpa0tJQ29LSUNvZ1YwOVNT
* MVJCUWt4RlV3b2dLaUFnSUZKQlRTQWdQU0F2WkdWMkwzTm9iUzl1YjNOcFoyNTFjRjlrWVhSbFgybHdDaUFxSUNBZ1JFbFRTeUE5
* SUM0dlpHRjBZUW9nS2lCTFpXVndJSFJvWlNCbGVHbHpkR2x1WnlCeWIyOTBjeUJoYm1RZ2JHVm5ZV041SUdOdmJYQmhkR2xpYVd4
* cGRIa2djR0YwYUhNdUlGUm9hWE1nWTI5dGJXVnVkQW9nS2lCaGRYUm9iM0pwZW1WeklHNXZJRzFwWjNKaGRHbHZiaXdnYm1WM0lI
* QmxjaTF3WlhKemIyNGdabWxzWlNCdmNpQmtkWEJzYVdOaGRHVWdZM0psWkdWdWRHbGhiQ0J6ZEc5eVpTNEtJQ29LSUNvZ1VISmxj
* MlZ5ZG1VZ2RHaGxJRE13TFdSaGVTQkVRVlJGSUd4cFptVmplV05zWlNCbWIzSWdjSEp2Wm1sc1pYTXNJSEJvYjNSdmN5d2dTMlZs
* Y0hNZ1lXNWtDaUFxSUhSb2NtVmhaSE11SUZKbFlXUnpJR1J2SUc1dmRDQnlaVzVsZHlCcGRDNGdSRUZVUlNCbWIzSm5aWFFnYm1W
* MlpYSWdaWEpoYzJWeklITm9ZWEpsWkNCM1lXeHNaWFFLSUNvZ2FXUmxiblJwZEhrdllXTmpaWE56SUd0bGVYTXVJRTV2SUhCaGFX
* UWdjSEp2Wm1sc1pTQmliMjl6ZENCdmNpQjFibUpzZFhJZ2NHRjBhQzRLQ2lBcUlFVkRUMDVQVFZrS0lDb2dVMmhoY21Wa0lIZGhi
* R3hsZENCaFkyTmxjM01zSUVSdmJtRjBaU0JoYm1RZ2MyVndZWEpoZEdVZ1lXUWdjbVZoYkNCbGMzUmhkR1VnYldGNUlHSmxJR1Y0
* Y0c5elpXUUtJQ29nZDJsMGFHOTFkQ0JqY21WaGRHbHVaeUJoSUhObFkyOXVaQ0JzWldSblpYSXNJR04xY25KbGJtTjVMQ0J0YVc1
* MElHOXlJR0ZqWTI5MWJuUWdiMjRnWVNCbVlXTmxMZ29nS2lCVWNtRmtaU0J2ZDI1eklITndaVzVrSUdGMWRHaHZjbWw2WVhScGIy
* NHNJSE5sZEhSc1pXMWxiblFzSUdGa0lHOTNibVZ5YzJocGNDQmhibVFnWlhCdlkyZ2djM1JoZEdVdUNpQXFJRkJ5WlhObGNuWmxJ
* R04xY25KbGJuUWdjMmxuYm1GMGRYSmxjeXdnYjI1bExYUnBiV1VnWjJWdVpYTnBjeUJqWVhBc0lIQmhkWE5sWkNCbGJXbHpjMmx2
* YmlCaGJtUUtJQ29nWTJ4dmMyVmtJR1pwYm1GdVkybGhiQzl3WVdsa0lHZGhkR1Z6TGlCQmJtNTFZV3dnYzJWeWRtbGpaU0J5WlhO
* bGRDQnBjeUJ1YjNRZ1lTQjNZV3hzWlhRZ2NtVnRhVzUwTGdvZ0tpQlBjbWRoYm1saklIQmxiM0JzWlM5c2FYTjBhVzVuTDJOdmJu
* UmxiblFnY21GdWF5QnBjeUJ1YjNRZ1ptOXlJSE5oYkdVdUlFVmhjbXhwWlhJZ2MzVm5aMlZ6ZEdsdmJuTUtJQ29nWm05eUlIQmhh
* V1FnWTJoaGRDQndjbWx2Y21sMGVTd2djSEp2Ylc5MFpXUWdhbTlpY3k5c2FYTjBhVzVuY3l3Z2NISnZabWxzWlNCaWIyOXpkSE1n
* WVc1a0lIQmhhV1FLSUNvZ2JtOTBaU0J3YVc1dWFXNW5JR0Z5WlNCeVpYUnBjbVZrSUhOd1pXTjFiR0YwYVc5dUxDQnViM1FnWVhC
* d2NtOTJaV1FnWm5WMGRYSmxJSGR2Y21zdUNpQXFDaUFxSUVGa0lISmxjRzl5ZEhNZ2RYTmxJSFJvWlNCbGVHbHpkR2x1WnlCVWNt
* RmtaU0JsYm1Sd2IybHVkQ0JoYm1RZ1kzVnljbVZ1ZENCemJHOTBMMlZ3YjJOb0lITjBZWFJsTGdvZ0tpQlVjbUZrWlNCa1pXTnBa
* R1Z6SUdGalkyVndkR0Z1WTJVZ1lXNWtJR2wwY3lCamIyNW1hV2QxY21Wa0lIUmhhMlZrYjNkdUlISjFiR1U3SUdFZ1kyeHBaVzUw
* SUcxMWMzUUtJQ29nYm05MElHbHVabVZ5SUc5M2JtVnljMmhwY0N3Z2NtVm1kVzVrSUc5eUlIUmhhMlZrYjNkdUlHWnliMjBnZEhK
* aGJuTndiM0owSUhOMVkyTmxjM011SUZCbGNuTnZiZ29nS2lCeVpYQnZjblJ6SUdsdUlFTm9ZWFFnY21WdFlXbHVJR1JwYzNScGJt
* TjBMaUJRY21WelpYSjJaU0JoYkd3Z2FHVnNjR1Z5SUdKdlpHbGxjeUJpWld4dmR5NEtJQ29nUFQwOVBUMDlQVDA5UFQwOVBUMDlQ
* VDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQU0Fx
* THdvS0x5b3FJRmRvYVdOb0lHTnliM0FnYVhNZ2RHaHBjejhnVW1WaFpDQm1jbTl0SUhSb1pTQm9iM04wSUhOdklIUm9aU0JpYkc5
* amF5QnVaWFpsY2lCbWIzSnJjeUJ3WlhJZ2MybDBaUzRnS2k4S1puVnVZM1JwYjI0Z2JuTjFYMk55YjNCZmRHeGtLQ2s2SUhOMGNt
* bHVaeUI3Q2lBZ0lDQWthQ0E5SUhOMGNuUnZiRzkzWlhJb0tITjBjbWx1Wnlrb0pGOVRSVkpXUlZKYkowaFVWRkJmU0U5VFZDZGRJ
* RDgvSUNjbktTazdDaUFnSUNBa2FDQTlJSEJ5WldkZmNtVndiR0ZqWlNnbkx6cGNaQ3NrTHljc0lDY25MQ0FrYUNrZ1B6OGdKeWM3
* Q2lBZ0lDQnBaaUFvY0hKbFoxOXRZWFJqYUNnbkx5Zy9PbDU4WEM0cGJtOXphV2R1ZFhCY0xpaGJZUzE2WFhzeUxERXdmU2trTHlj
* c0lDUm9MQ0FrYlNrcElIc0tJQ0FnSUNBZ0lDQnlaWFIxY200Z0pHMWJNVjA3Q2lBZ0lDQjlDaUFnSUNCeVpYUjFjbTRnSnljN0Nu
* MEtDaThxS2lCWGFHVnlaU0IwYUdVZ2JXOXVaWGtnYkdsMlpYTXVJRlJ5WVdSbElHOTNibk1nZEdobElHOXViSGtnWTJoaGFXNDdJ
* R1YyWlhKNUlHTnliM0FnWVhOcmN5QnBkQzRnS2k4S1puVnVZM1JwYjI0Z2JuTjFYM1J5WVdSbFgyOXlhV2RwYmlncE9pQnpkSEpw
* Ym1jZ2V3b2dJQ0FnY21WMGRYSnVJQ2RvZEhSd2N6b3ZMMjV2YzJsbmJuVndMblJ5WVdSbEp6c0tmUW9LTHlvcUNpQXFJRlJvWlNC
* bGJYQnBjbVVnWVdRZ1ltOWhjbVFzSUhOamIzQmxaQ0IwYnlCMGFHbHpJR055YjNBdUNpQXFJRkpsZEhWeWJuTWdKeWNnZDJobGJp
* QjBhR1VnWTNKdmNDQmpZVzV1YjNRZ2JtRnRaU0JwZEhObGJHWXNJSE52SUdFZ1kyRnNiR1Z5SUdaaGFXeHpJR05zYjNObFpDQmhi
* bVFLSUNvZ2NtVnVaR1Z5Y3lCdWIzUm9hVzVuSUhKaGRHaGxjaUIwYUdGdUlHZDFaWE56YVc1bklHRWdibVZwWjJoaWIzVnlKM01n
* WW05aGNtUXVDaUFxTHdwbWRXNWpkR2x2YmlCdWMzVmZZV1JmYzJsMFpYTW9LVG9nWVhKeVlYa2dld29nSUNBZ2NtVjBkWEp1SUZz
* blkyOXRKeXduYjNKbkp5d25ibVYwSnl3bmRISmhaR1VuTENkamFHRjBKeXduZDI5eWF5Y3NKMjFoY210bGRDY3NKMlJoZEdVbkxD
* ZG1kVzRuTENkcGJtWnZKMTA3Q24wS1puVnVZM1JwYjI0Z2JuTjFYMkZrWDNKdmJHeGZiaWdwT2lCcGJuUWdleUJ5WlhSMWNtNGdj
* bUZ1Wkc5dFgybHVkQ2d3TENBNU9UazVLVHNnZlFwbWRXNWpkR2x2YmlCdWMzVmZZV1JmYzJ4dmRGOTFjbXdvUDNOMGNtbHVaeUFr
* YzJsMFpTQTlJRzUxYkd3c0lEOXBiblFnSkc0Z1BTQnVkV3hzS1RvZ2MzUnlhVzVuSUhzS0lDQWdJQ1IwSUQwZ0tDUnphWFJsSUNF
* OVBTQnVkV3hzSUNZbUlDUnphWFJsSUNFOVBTQW5KeWtnUHlCemRISjBiMnh2ZDJWeUtDUnphWFJsS1NBNklHNXpkVjlqY205d1gz
* UnNaQ2dwT3dvZ0lDQWdhV1lnS0NSMElEMDlQU0FuSnlCOGZDQWhhVzVmWVhKeVlYa29KSFFzSUc1emRWOWhaRjl6YVhSbGN5Z3BM
* Q0IwY25WbEtTa2djbVYwZFhKdUlDY25Pd29nSUNBZ2FXWWdLQ1J1SUQwOVBTQnVkV3hzS1NBa2JpQTlJRzV6ZFY5aFpGOXliMnhz
* WDI0b0tUc0tJQ0FnSUNSdUlEMGdiV0Y0S0RBc0lHMXBiaWc1T1RrNUxDQWtiaWtwT3dvZ0lDQWdjbVYwZFhKdUlHNXpkVjkwY21G
* a1pWOXZjbWxuYVc0b0tTQXVJQ2N2SnlBdUlDUjBJQzRnSnk4bklDNGdjM1J5WDNCaFpDZ29jM1J5YVc1bktTUnVMQ0EwTENBbk1D
* Y3NJRk5VVWw5UVFVUmZURVZHVkNrN0NuMEtablZ1WTNScGIyNGdibk4xWDJKdllYSmtYMlZ1WkhCdmFXNTBLQ2s2SUhOMGNtbHVa
* eUI3SUhKbGRIVnliaUJ1YzNWZllXUmZjMnh2ZEY5MWNtd29LVHNnZlFwbWRXNWpkR2x2YmlCdWMzVmZZV1JmYzJ4dmRGOW9kRzFz
* S0hOMGNtbHVaeUFrWlhoMGNtRkRiR0Z6Y3lBOUlDY25LVG9nYzNSeWFXNW5JSHNLSUNBZ0lDUjBJRDBnYm5OMVgyTnliM0JmZEd4
* a0tDazdDaUFnSUNCcFppQW9KSFFnUFQwOUlDY25JSHg4SUNGcGJsOWhjbkpoZVNna2RDd2dibk4xWDJGa1gzTnBkR1Z6S0Nrc0lI
* UnlkV1VwS1NCeVpYUjFjbTRnSnljN0NpQWdJQ0FrWTJ4eklEMGdKMjV6TFdGa0xYTnNiM1FuSUM0Z0tDUmxlSFJ5WVVOc1lYTnpJ
* Q0U5UFNBbkp5QS9JQ2NnSnlBdUlDUmxlSFJ5WVVOc1lYTnpJRG9nSnljcE93b2dJQ0FnSkdObGJHeHpJRDBnSnljN0NpQWdJQ0Jt
* YjNJZ0tDUnBJRDBnTURzZ0pHa2dQQ0EwT1RzZ0pHa3JLeWtnZXdvZ0lDQWdJQ0FnSUNSMWNtd2dQU0J1YzNWZllXUmZjMnh2ZEY5
* MWNtd29KSFFwT3dvZ0lDQWdJQ0FnSUNSalpXeHNjeUF1UFNBblBHRWdZMnhoYzNNOUltNXpMV0ZrTFdObGJHd2lJR2h5WldZOUlt
* MWhhV3gwYnpwaFpITkFibTl6YVdkdWRYQXVkSEpoWkdVL2MzVmlhbVZqZEQxT1UxVWxNakJoWkNVeU1HTnlaV1JwZENaaWIyUjVQ
* VTE1SlRJd1RsTlZKVEl3U1VRbE0wRWxNakFpSUhSaGNtZGxkRDBpWDJKc1lXNXJJaUJ5Wld3OUltNXZiM0JsYm1WeUlqNDhhVzFu
* SUdGc2REMGlZV1FpSUhOeVl6MGlKeUF1SUdoMGJXeHpjR1ZqYVdGc1kyaGhjbk1vSkhWeWJDd2dSVTVVWDFGVlQxUkZVeXdnSjFW
* VVJpMDRKeWtnTGlBbklpQnlaV1psY25KbGNuQnZiR2xqZVQwaWJtOHRjbVZtWlhKeVpYSWlQand2WVQ0bk93b2dJQ0FnZlFvZ0lD
* QWdjbVYwZFhKdUlDYzhZWE5wWkdVZ1kyeGhjM005SWljZ0xpQm9kRzFzYzNCbFkybGhiR05vWVhKektDUmpiSE1zSUVWT1ZGOVJW
* VTlVUlZNc0lDZFZWRVl0T0NjcElDNGdKeUlnWkdGMFlTMXVjeTFoWkQwaU1TSStKeUF1SUNSalpXeHNjeUF1SUNjOEwyRnphV1Js
* UGljN0NuMEtDaThxS2lCQlpDMXlaWEJ2Y25RZ1pXNWtjRzlwYm5RZ2IyNXNlUzRnVkhKaFpHVWdkbUZzYVdSaGRHVnpJSE5zYjNR
* dlpYQnZZMmdnWVc1a0lHOTNibk1nWVdOalpYQjBZVzVqWlN3S0lDb2dZMjl1Wm1sbmRYSmxaQ0IwWVd0bFpHOTNiaUJoYm1RZ2My
* aHZkMmx1WjNNZ2MzUmhkR1V1SUZObGJtUnBibWNnWVNCeVpYQnZjblFnYVhNZ2JtOTBJSEJ5YjI5bUlHOW1JR0VLSUNvZ2RHRnJa
* V1J2ZDI0c0lHOTNibVZ5YzJocGNDQnZjaUJ5WldaMWJtUTdJSFJvYVhNZ2FHVnNjR1Z5SUdkeVlXNTBjeUJ1YnlCbFkyOXViMjFw
* WXlCaGRYUm9iM0pwZEhrdUlDb3ZDbVoxYm1OMGFXOXVJRzV6ZFY5eVpYQnZjblJmWlc1a2NHOXBiblFvS1RvZ2MzUnlhVzVuSUhz
* S0lDQWdJQ1IwSUQwZ2JuTjFYMk55YjNCZmRHeGtLQ2s3Q2lBZ0lDQnBaaUFvSkhRZ1BUMDlJQ2NuSUh4OElDRnBibDloY25KaGVT
* Z2tkQ3dnYm5OMVgyRmtYM05wZEdWektDa3NJSFJ5ZFdVcEtTQnlaWFIxY200Z0p5YzdDaUFnSUNCeVpYUjFjbTRnYm5OMVgzUnlZ
* V1JsWDI5eWFXZHBiaWdwSUM0Z0p5OC9ZWEJwUFdGa1gzSmxjRzl5ZENaamNtOXdQU2NnTGlCMWNteGxibU52WkdVb0pIUXBPd3A5
* Q2dvdktpb2dRbUZrWjJVZ2MzUjFZaTRnVTJoaGNtVmtJSFJwWTJ0bGRDQnRZWGtnWW1VZ2NtVmhaQ0JtY205dElHeHZZMkZzVTNS
* dmNtRm5aU0J1YjNOcFoyNTFjRjlrWlhacFkyVmZhV1F1SUU1dklITmxZMjl1WkNCdGFXeHNJRzl1SUhSb2FYTWdabUZqWlM0Z0tp
* OEtablZ1WTNScGIyNGdibk5mYVdSbGJuUnBkSGxmWW1Ga1oyVmZiR0YwWlhJb0tUb2djM1J5YVc1bklIc2djbVYwZFhKdUlDY25P
* eUI5Q2k4cUlEMDlQVDA5UFQwOVBUMDlQVDA5UFQwOVBUMDlQU0JGVGtRZ1JVTlBUazlOV1N0SlJFVk9WRWxVV1NCVVJVeFBUVVZT
* UlNBOVBUMDlQVDA5UFQwOVBUMDlQVDA5UFQwZ0tpOD0ifV0sInByZXZpb3VzX3NvdXJjZV9zaGEyNTYiOiJkNDAwYmUwZTNkMWYx
* OTBjMjg1NTQ2OTQ2ZmNiZTFhN2FjMTlkY2FhOWMxZTU1ZTM0MGQxOGNhMTJmN2FlNDI3Iiwic291cmNlX3NoYTI1Nl9yb2xlIjoi
* cmV2aWV3ZWQgcGFyZW50LCBub3QgYSBzZWxmLXJlZmVyZW50aWFsIGNhbmRpZGF0ZSBoYXNoIiwicmV2aXNpb24iOiJSMDUgcmV2
* aWV3ZWQgUjA0IHJldHVybjsgYm91bmRlZCByZXBhaXJzLCBpc29sYXRlZCBldmlkZW5jZSwgcHJlc2VydmVkIGFyY2hpdGVjdHVy
* ZS9VSSJ9
* NSU-RECOVERY-V1-END
*/if (preg_match('/^www\.(.+)$/i', preg_replace('/:\d+$/', '', (string)($_SERVER['HTTP_HOST'] ?? '')), $m)) { header('Location: //' . strtolower($m[1]) . (string)($_SERVER['REQUEST_URI'] ?? '/'), true, 301); exit; }
/* Stock PHP 7.4 compatibility for the small PHP 8 string helper surface. */
if (!function_exists('str_contains')) {
function str_contains(string $haystack, string $needle): bool { return $needle === '' || strpos($haystack, $needle) !== false; }
}
if (!function_exists('str_starts_with')) {
function str_starts_with(string $haystack, string $needle): bool { return $needle === '' || strncmp($haystack, $needle, strlen($needle)) === 0; }
}
if (!function_exists('str_ends_with')) {
function str_ends_with(string $haystack, string $needle): bool {
if ($needle === '') return true;
$length = strlen($needle);
return $length <= strlen($haystack) && substr($haystack, -$length) === $needle;
}
}
/* === NSU V8 MIRROR SERVICE SUBSTRATE ======================================
* NODE = MIRROR. Every protocol peer is the same complete ten-face organism.
* Capacity changes how much service a mirror can provide, never its authority.
* This endpoint is compatibility/health metadata for SERVICE routing only.
* It does NOT claim that the future decentralized NSU monetary mesh exists.
*/
const NSU_MIRROR_HELLO_V = 1;
const NSU_MIRROR_FACE = 'date';
function nsu_mirror_manifest_state(): array {
$path = __DIR__ . DIRECTORY_SEPARATOR . 'pack.manifest.txt';
$out = ['fingerprint' => '', 'faces' => [], 'complete' => false];
if (!is_file($path) || is_link($path)) return $out;
$raw = @file_get_contents($path);
if (!is_string($raw) || $raw === '' || strlen($raw) > 262144) return $out;
if (preg_match('/^EMPIRE_FINGERPRINT\s+([0-9a-f]{64})\s*$/mi', $raw, $m)) $out['fingerprint'] = strtolower($m[1]);
if (preg_match_all('/^([0-9a-f]{64})\s+nosignup\.(com|org|net|trade|chat|work|market|date|fun|info)\s*$/mi', $raw, $mm, PREG_SET_ORDER)) {
foreach ($mm as $x) $out['faces']['nosignup.' . strtolower($x[2])] = strtolower($x[1]);
}
$need = [
'nosignup.com',
'nosignup.org',
'nosignup.net',
'nosignup.trade',
'nosignup.chat',
'nosignup.work',
'nosignup.market',
'nosignup.date',
'nosignup.fun',
'nosignup.info'
];
$out['complete'] = ($out['fingerprint'] !== '');
foreach ($need as $k) if (!isset($out['faces'][$k])) {
$out['complete'] = false;
break;
}
return $out;
}
function nsu_mirror_hello_payload(): array {
$mf = nsu_mirror_manifest_state();
$actual = strtolower((string)@hash_file('sha256', __FILE__));
$keys = ['nosignup.date'];
$expected = '';
foreach ($keys as $k) {
if (isset($mf['faces'][$k])) {
$expected = (string)$mf['faces'][$k];
break;
}
}
$faceMatch = ($actual !== '' && $expected !== '' && hash_equals($expected, $actual));
$manual = ((string)getenv('NSU_MIRROR_OVERLOAD') === '1') || is_file(__DIR__ . DIRECTORY_SEPARATOR . 'data' . DIRECTORY_SEPARATOR . 'mirror.pause');
$loadRatio = null;
$over = $manual;
if (function_exists('sys_getloadavg')) {
$la = @sys_getloadavg();
if (is_array($la) && isset($la[0])) {
$cpus = 1;
if (is_file('/proc/cpuinfo')) {
$c = @file_get_contents('/proc/cpuinfo');
if (is_string($c)) {
$n = preg_match_all('/^processor\s*:/m', $c);
if ($n > 0) $cpus = $n;
}
}
$loadRatio = round(((float)$la[0]) / max(1, $cpus), 3);
$mx = (float)(getenv('NSU_MIRROR_LOAD_RATIO_MAX') ?: 1.50);
if ($mx > 0 && $loadRatio >= $mx) $over = true;
}
}
$compatible = !empty($mf['complete']) && $faceMatch;
return [
'ok' => true,
'schema' => 'nsu-mirror-hello-v1',
'node_kind' => 'mirror',
'face' => NSU_MIRROR_FACE,
'face_hash' => $actual,
'empire_fingerprint' => (string)$mf['fingerprint'],
'complete_organism' => (bool)$mf['complete'],
'manifest_face_match' => $faceMatch,
'compatible_for_service' => $compatible,
'accepting_traffic' => $compatible && !$over,
'overloaded' => $over,
'load_ratio' => $loadRatio,
'economy_mesh' => false,
'economy_note' => 'Service mirror only. Decentralized NSU consensus is not claimed by this build.',
'capacity_authority' => false,
];
}
if ((string)($_GET['api'] ?? '') === 'mirror_hello') {
if (PHP_SAPI !== 'cli') {
header('Content-Type: application/json; charset=UTF-8');
header('Cache-Control: no-store, max-age=0');
header('Access-Control-Allow-Origin: *');
header('X-Content-Type-Options: nosniff');
header('Referrer-Policy: no-referrer');
}
echo json_encode(nsu_mirror_hello_payload(), JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE);
exit;
}
/* === /NSU V8 MIRROR SERVICE SUBSTRATE ===================================== */
/**
* CURRENT REVISION 2026-10-13 / R05: Keep this block in place. The paired
* caps govern architecture/UI and minimum necessary change. Prove the defect;
* preserve correct behavior; add no speculative state, timer or control.
* Revise mutable details with evidence, not deletion or blind reversion.
* Keep this site's work/evidence isolated and bound to the tested source hash.
*
* FINAL-PACK MAINTENANCE CHARTER -- DO NOT DELETE.
*
* CURRENT PRODUCT AMENDMENT 2026-10-03 - owner-directed entrance round.
* Purpose: Meet people nearby. Keep in touch.
* Use one readable proportional entrance family, carrying this face's
* own motif and palette. Lead with useful plain words; preserve the
* meaning of consent, risk and actual capability limits. Fit normal
* views without scrollbars; retain an accessible zoom/reflow fallback.
* Shared wallet access is not a new face ledger, mint or account.
* Adult personals combine Profile, Map, Keeps and Browse without signup.
* Keep grants the other person permission to message you; it is not
* proof of mutual interest. Support clear, working consent controls.
* The executable forgetting policy is 30 days; passive reads do not
* renew it. DATE state and shared wallet access remain separate.
* Source authority: verified current root 8.php.
* Old cells/sync-pack pointers are historical; those cells are absent.
* Reconcile live/raw/source bytes before writing; do not revive old packs.
* This amendment supersedes conflicting old layout/roadmap prose only.
* Preserved history is not a task queue or proof of implemented work.
*
* This comment preserves the product boundary when this PHP is all that
* remains. Repair the adult personals, card and consent-based messaging paths.
*
* UNIVERSAL LAW: one stock-PHP file; no composer/npm/database dependency; no
* visitor signup, recovery account, tracking profile, shared bank, SSO, or
* paywall on basic use. Keep ?src=1 and ?download=1 auditable. This host owns
* only its own data, vault, and operator panel. A panel is never a visitor
* identity. Public status must never disclose vault/filesystem detail, and
* admin passwords belong in POST bodies, never URLs.
*
* SOUL: an ephemeral adult personals/meet board. Every visit
* carries the 18+ risk gate; a simple map/card can publish direct contact and
* people decide what happens next.
* KEEP WORKING: every-load consent/18+ language, map/card browse and create,
* direct Contact on usable profiles, short expiry, honest empty CTA,
* source/download, and the local pre-post clarity guide as visible fail-open
* advice while preserving the existing narrow extreme safety safeguard.
* NEVER BECOME: opaque matching authority, people score/rank, engagement-ranked feed,
* icebreaker generator, identity verification, boosts/unblur/pay-to-
* rise, independent wallet ledger, account system, fake profiles, or dating-authority copy.
* INBOX LAW (amended): a minimal pair Who-Kept-you / thread inbox may exist;
* it is not a permanent social graph or recovery account. All DATE interpersonal
* state (profiles, photos, Keeps, pair threads, owner indexes, DATE-only browser
* keys) follows one 30-day forgetting ceiling (NSD_EXPIRY_*). Reads do not renew
* expiry. Inactivity cannot become indefinite retention. Shared NSU wallet /
* economy telomere keys are NOT DATE state and are not erased by DATE forget.
* CHANGE BOUNDARY: no code may turn advisory text into a social decision.
* Preserve the narrow hard rules and do not broaden them into a moderation
* system.
* PROOF: PHP lint; numbered/pack parity; entry gate and card/contact smoke;
* confirm a soft flag fails open; then live source parity.
*/
/**
* CURRENT REVISION 2026-10-13 / R05: Keep this block in place. The paired
* caps govern architecture/UI and minimum necessary change. Prove the defect;
* preserve correct behavior; add no speculative state, timer or control.
* Revise mutable details with evidence, not deletion or blind reversion.
* Keep this site's work/evidence isolated and bound to the tested source hash.
*
* DO NOT DELETE - NOSIGNUP.DATE CONTRACT
* SPIRIT: Personals / meet — ephemeral, 18+, contact on profile. Inbox stays; 30-day complete forget.
*
* ORIGINAL LAYOUT DNA (conform loosely — edit > invent):
* - Map layout (grid): browse area + profile/create surface; launch CTAs after ENTER.
* - Cards always show Contact: line (or honest missing). Empty: Create your card CTA.
* - DNA line: DATE · personals rose. Empire entrance (chat DNA): Options · Mirrors · Donate + ENTER.
* - Risk line includes 18+. Shared wallet access stays; no DATE ledger or mint.
*/
/**
* FALLBACK / TOR (amended 2026-08-27).
* ALL: HTML face always serves. Telemetry, rate, KYC, counters, sprites, listings, chain writes SKIP
* (never 500, never invent a third root, never write KYC to durable disk just because RAM died).
* Loud banners required. An onion address may expose this face; a complete mirror is the full ten-face spore. No signup, no remint, no cookie-as-account.
* DATE: face still. No disk: no profile/media write. No RAM: rate fail-open.
*/
/*
* CURRENT REVISION 2026-10-13 / R05: Keep this block in place. The paired
* caps govern architecture/UI and minimum necessary change. Prove the defect;
* preserve correct behavior; add no speculative state, timer or control.
* Revise mutable details with evidence, not deletion or blind reversion.
* Keep this site's work/evidence isolated and bound to the tested source hash.
*
* FILE MAP (orientation only — do not reorder regions by this comment)
* MIRROR — NSU V8 MIRROR SERVICE SUBSTRATE (nsu_mirror_*) at file head
* CHARTER — FINAL-PACK MAINTENANCE CHARTER (DO NOT DELETE)
* CONTRACT — NOSIGNUP.DATE CONTRACT / layout DNA + wallet carve-out
* NSP PANEL — nsp_* vault/hash/admin API + nsp_render_controlpanel()
* NSD EXPIRY — NSD_* constants + nsd_is_expired / stamp / cleanup_sweep / purge / import_filter
* NSD STORAGE — shards/media/rate/brain/tiles + nsd_mirrors_*
* NSD MATCH — matches / threads / owners (inbox stays; 30-day complete forget)
* NSD API — ?src=1 / ?download=1 + if (isset($_GET['api'])) handlers
* CP ROUTE — $wantPanel → nsp_render_controlpanel() early exit
* HTML/CSS — main shell + #ContainerAll + entry/gate/panel styles
* HTML BODY — map/card DOM + #DateAdStrip (JS strip call-site)
* GATE DOM/JS — #nsGate + .ns-sub modals + NS_ETHOS_GATE + entry-boot
* MAP/CARD JS — main