[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$fRdeLluCS9GmUEzwOc2lCD5qW5Z-yNIf5vLd8t7QXDng":3,"$fBIkHglaBfCn0DeFke4DRsFWCT26-xgPURT89eN-u7Q4":475,"$fHGI69DdWNcJiHuQsjRqbz1r-POgRckzGYxfG06lkwhg":479},{"slug":4,"name":5,"version":6,"author":7,"author_profile":8,"description":9,"short_description":10,"active_installs":11,"downloaded":12,"rating":11,"num_ratings":11,"last_updated":13,"tested_up_to":14,"requires_at_least":15,"requires_php":16,"tags":17,"homepage":23,"download_link":24,"security_score":25,"vuln_count":11,"unpatched_count":11,"last_vuln_date":26,"fetched_at":27,"discovery_status":28,"vulnerabilities":29,"developer":30,"crawl_stats":26,"alternatives":35,"analysis":128,"fingerprints":425},"borderage-core","Borderage Core","0.1.0","brekam","https:\u002F\u002Fprofiles.wordpress.org\u002Fbrekam\u002F","\u003Cp>Borderage Core protects your WordPress site by requiring age verification for visitors. Unlike traditional ID-based systems, BorderAge uses \u003Cstrong>hand gesture recognition\u003C\u002Fstrong> – no selfie, no ID document required.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Features:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Protect entire site or specific pages\u003C\u002Fli>\n\u003Cli>Hand gesture verification (no facial recognition)\u003C\u002Fli>\n\u003Cli>Visitor account system for returning users\u003C\u002Fli>\n\u003Cli>Unified login form (WordPress account first, then visitor account fallback)\u003C\u002Fli>\n\u003Cli>Credit alert system – Automatic email notifications when credits run low\u003C\u002Fli>\n\u003Cli>Rate limiting – Prevent brute force verification attempts\u003C\u002Fli>\n\u003Cli>Login brute-force protection – Rate limiting on account login attempts\u003C\u002Fli>\n\u003Cli>Health logging system – 24-hour internal monitoring with export\u003C\u002Fli>\n\u003Cli>Statistics dashboard – View verification metrics (total, adults, minors)\u003C\u002Fli>\n\u003Cli>Customizable verification page styling\u003C\u002Fli>\n\u003Cli>Multi-language support (EN, FR, DE, ES)\u003C\u002Fli>\n\u003Cli>Developer tools – Testing utilities and data reset\u003C\u002Fli>\n\u003Cli>Debug mode with logging and export functionality\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>Requirements:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>BorderAge API credentials (site_id and site_secret_key)\u003C\u002Fli>\n\u003Cli>Credits for new verifications (existing verified users can still access)\u003C\u002Fli>\n\u003Cli>Pretty permalinks enabled in WordPress Settings\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>For more information, visit \u003Ca href=\"https:\u002F\u002Fborderage.com\u002F\" rel=\"nofollow ugc\">borderage.com\u003C\u002Fa> or contact us at \u003Ca href=\"contact@needemand.com\" rel=\"nofollow ugc\">contact@needemand.com\u003C\u002Fa>\u003C\u002Fp>\n\u003Ch3>Admin Pages\u003C\u002Fh3>\n\u003Cp>Borderage Core provides 8 configuration tabs accessible via \u003Cstrong>BorderAge\u003C\u002Fstrong> in the WordPress admin menu:\u003C\u002Fp>\n\u003Cp>  Tab\u003Cbr \u002F>\n  Description\u003Cbr \u002F>\n  Purpose\u003C\u002Fp>\n\u003Cp>  Configuration\u003Cbr \u002F>\n  API credentials and basic settings\u003Cbr \u002F>\n  Enter your site_id, secret_key, enable\u002Fdisable plugin, set debug mode\u003C\u002Fp>\n\u003Cp>  Protection\u003Cbr \u002F>\n  Protection mode and protected pages\u003Cbr \u002F>\n  Choose to protect all pages or specific pages, configure rate limiting\u003C\u002Fp>\n\u003Cp>  Appearance\u003Cbr \u002F>\n  Form styling customization\u003Cbr \u002F>\n  Customize verification page colors, button styles, and layout\u003C\u002Fp>\n\u003Cp>  Statistics\u003Cbr \u002F>\n  Verification metrics dashboard\u003Cbr \u002F>\n  View total verifications, adult\u002Fminor breakdown, monthly statistics\u003C\u002Fp>\n\u003Cp>  Guide\u003Cbr \u002F>\n  User documentation\u003Cbr \u002F>\n  Complete usage guide and setup instructions\u003C\u002Fp>\n\u003Cp>  Developers\u003Cbr \u002F>\n  API documentation\u003Cbr \u002F>\n  Technical reference for developers integrating with BorderAge\u003C\u002Fp>\n\u003Cp>  Debug\u003Cbr \u002F>\n  Health logs viewer\u003Cbr \u002F>\n  View system health logs, export debug information\u003C\u002Fp>\n\u003Cp>  Dev Tools\u003Cbr \u002F>\n  Testing utilities\u003Cbr \u002F>\n  Reset visitor data, clear logs, testing functions (debug mode only)\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Navigation:\u003C\u002Fstrong> Click on the “Borderage” menu item in WordPress admin to access all tabs. Each tab provides a specific set of configuration options and tools.\u003C\u002Fp>\n\u003Ch3>External Services\u003C\u002Fh3>\n\u003Cp>This plugin connects to the \u003Cstrong>BorderAge API\u003C\u002Fstrong> at \u003Ccode>pool.borderage.com\u003C\u002Fcode> for age verification services.\u003C\u002Fp>\n\u003Ch4>When data is transmitted\u003C\u002Fh4>\n\u003Col>\n\u003Cli>\u003Cstrong>During age verification\u003C\u002Fstrong> – When a visitor clicks “Verify now”\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Credit balance check\u003C\u002Fstrong> – When admin pages load to display remaining credits\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Statistics retrieval\u003C\u002Fstrong> – When the Statistics dashboard loads to display verification metrics\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Health logging\u003C\u002Fstrong> – Internal monitoring events (not transmitted to external API)\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Ch4>Data transmitted\u003C\u002Fh4>\n\u003Cp>  Data\u003Cbr \u002F>\n  Description\u003Cbr \u002F>\n  Purpose\u003C\u002Fp>\n\u003Cp>  site_id\u003Cbr \u002F>\n  Your site identifier\u003Cbr \u002F>\n  Identify your site\u003C\u002Fp>\n\u003Cp>  user_id\u003Cbr \u002F>\n  SHA256 hashed visitor ID\u003Cbr \u002F>\n  Pseudonymized visitor tracking\u003C\u002Fp>\n\u003Cp>  age\u003Cbr \u002F>\n  Age threshold\u003Cbr \u002F>\n  Verification requirement\u003C\u002Fp>\n\u003Cp>  hash\u003Cbr \u002F>\n  Security signature\u003Cbr \u002F>\n  Request validation\u003C\u002Fp>\n\u003Cp>  is_over_age\u003Cbr \u002F>\n  Boolean (true\u002Ffalse)\u003Cbr \u002F>\n  Age verification result\u003C\u002Fp>\n\u003Cp>  result_hash\u003Cbr \u002F>\n  Callback validation hash\u003Cbr \u002F>\n  Verify callback authenticity\u003C\u002Fp>\n\u003Cp>  reference_id\u003Cbr \u002F>\n  Attempt reference for rate limiting\u003Cbr \u002F>\n  Track verification attempts\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Hash Generation:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Credits check: \u003Ccode>hash('sha256', timestamp . site_id . secret_key)\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>Callback verification: \u003Ccode>hash('sha1', result . user_id . age . secret_key)\u003C\u002Fcode>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>Privacy note:\u003C\u002Fstrong> This plugin and the BorderAge API store only pseudonymized data: a hashed visitor ID and a boolean indicating whether the age threshold was met. \u003Cstrong>Zero Personally Identifiable Information (PII)\u003C\u002Fstrong> is stored or transmitted – no names, emails. Unlike competitors, BorderAge uses \u003Cstrong>no biometric fingerprinting\u003C\u002Fstrong>, \u003Cstrong>no selfies\u003C\u002Fstrong>, and \u003Cstrong>no ID documents\u003C\u002Fstrong>. This eliminates any risk of personal data leaks, as such data simply doesn’t exist in our system.\u003C\u002Fp>\n\u003Cp>For more details about BorderAge’s technology and privacy-first approach, visit \u003Ca href=\"https:\u002F\u002Fborderage.com\u002Ftechnology\u002F\" rel=\"nofollow ugc\">https:\u002F\u002Fborderage.com\u002Ftechnology\u002F\u003C\u002Fa>\u003C\u002Fp>\n\u003Ch4>Service links\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>\u003Cstrong>Privacy Policy:\u003C\u002Fstrong> \u003Ca href=\"https:\u002F\u002Fborderage.com\u002Fpolitique-confidentialite\u002F\" rel=\"nofollow ugc\">https:\u002F\u002Fborderage.com\u002Fpolitique-confidentialite\u002F\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Technology information:\u003C\u002Fstrong> \u003Ca href=\"https:\u002F\u002Fborderage.com\u002Ftechnology\u002F\" rel=\"nofollow ugc\">https:\u002F\u002Fborderage.com\u002Ftechnology\u002F\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Service website:\u003C\u002Fstrong> \u003Ca href=\"https:\u002F\u002Fborderage.com\u002F\" rel=\"nofollow ugc\">https:\u002F\u002Fborderage.com\u002F\u003C\u002Fa>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>Terms of Service:\u003C\u002Fstrong> BorderAge’s Terms of Use are negotiated individually between each client and Needemand (creator of the BorderAge SaaS). Contracts are established on a case-by-case basis rather than using a generic public ToS. Please contact BorderAge to discuss your specific terms.\u003C\u002Fp>\n\u003Ch3>Privacy Policy\u003C\u002Fh3>\n\u003Cp>\u003Cstrong>Data processed by this plugin:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Col>\n\u003Cli>\u003Cstrong>Visitor verification status\u003C\u002Fstrong> – Stored in browser cookies to remember verified visitors (expires after 24 hours)\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Visitor accounts\u003C\u002Fstrong> – Optional accounts for returning visitors (email, hashed password)\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Verification logs\u003C\u002Fstrong> – Records of verification callbacks for debugging (24-hour retention)\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Health logs\u003C\u002Fstrong> – Internal system monitoring logs (24-hour retention, JSON format)\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>\u003Cstrong>Data sent to the external BorderAge API:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>Only pseudonymized data is transmitted and stored: a hashed visitor ID (SHA256) and a boolean indicating whether the age verification was successful (is_over_age: true\u002Ffalse). Additional metadata includes site_id, age threshold, and security hashes for validation.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>What makes BorderAge different:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>Zero PII storage\u003C\u002Fstrong> – Neither this plugin nor the BorderAge API store any Personally Identifiable Information\u003C\u002Fli>\n\u003Cli>\u003Cstrong>No biometric fingerprint\u003C\u002Fstrong> – No biometric data is collected, stored, or transmitted\u003C\u002Fli>\n\u003Cli>\u003Cstrong>No data leak risk\u003C\u002Fstrong> – Impossible to leak personal data that doesn’t exist\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Privacy by design\u003C\u002Fstrong> – Hand gesture verification without selfies, ID documents, or facial recognition\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Rate limiting protection\u003C\u002Fstrong> – Prevents brute force verification attempts\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Automatic cleanup\u003C\u002Fstrong> – Verification tokens and logs expire after 24 hours\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>For complete privacy information, see the \u003Ca href=\"https:\u002F\u002Fborderage.com\u002Fpolitique-confidentialite\u002F\" rel=\"nofollow ugc\">BorderAge Privacy Policy\u003C\u002Fa>.\u003C\u002Fp>\n","Protect your WordPress pages by verifying visitor age via the BorderAge API using hand gesture recognition.",0,167,"2026-03-18T15:14:00.000Z","6.9.4","6.2","8.1",[18,19,20,21,22],"adult-content","age-gate","age-verification","compliance","hand-gesture","","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fborderage-core.zip",100,null,"2026-04-16T10:56:18.058Z","no_bundle",[],{"slug":7,"display_name":7,"profile_url":8,"plugin_count":31,"total_installs":11,"avg_security_score":25,"avg_patch_time_days":32,"trust_score":33,"computed_at":34},1,30,94,"2026-05-19T23:28:17.858Z",[36,55,69,87,109],{"slug":37,"name":38,"version":39,"author":40,"author_profile":41,"description":42,"short_description":43,"active_installs":44,"downloaded":45,"rating":25,"num_ratings":31,"last_updated":46,"tested_up_to":47,"requires_at_least":48,"requires_php":49,"tags":50,"homepage":53,"download_link":54,"security_score":25,"vuln_count":11,"unpatched_count":11,"last_vuln_date":26,"fetched_at":27},"advanced-age-verification-popup","Advanced Age Verification Popup","1.0","Yeasin","https:\u002F\u002Fprofiles.wordpress.org\u002Fyeasin1\u002F","\u003Cp>\u003Cstrong>Advanced Age Verification Popup\u003C\u002Fstrong> is a simple, lightweight, and customizable WordPress plugin that allows you to add an age verification popup to your website. Ideal for websites selling adult products like vaping supplies, alcohol, or any age-restricted content.\u003C\u002Fp>\n\u003Ch3>\u003Cstrong>Key Features\u003C\u002Fstrong>\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>Yes\u002FNo Button Verification\u003C\u002Fli>\n\u003Cli>Date of Birth Verification with modern Flatpickr date picker\u003C\u002Fli>\n\u003Cli>Option to enable \u003Cstrong>both methods\u003C\u002Fstrong>\u003C\u002Fli>\n\u003Cli>Custom logo upload\u003C\u002Fli>\n\u003Cli>Editable text (Title, Buttons, Warning)\u003C\u002Fli>\n\u003Cli>Set cookie duration\u003C\u002Fli>\n\u003Cli>Redirect underage users to a custom URL\u003C\u002Fli>\n\u003Cli>Responsive and mobile-friendly\u003C\u002Fli>\n\u003Cli>WooCommerce compatible\u003C\u002Fli>\n\u003Cli>Lightweight and fast loading\u003C\u002Fli>\n\u003Cli>Flatpickr dark theme for professional look\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>\u003Cstrong>Use Cases\u003C\u002Fstrong>\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>Vape and E-Cigarette Shops\u003C\u002Fli>\n\u003Cli>Alcohol and Spirits Stores\u003C\u002Fli>\n\u003Cli>CBD \u002F Cannabis Products\u003C\u002Fli>\n\u003Cli>Adult Content Sites\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Arbitrary section\u003C\u002Fh3>\n\u003Cp>None.\u003C\u002Fp>\n","Add an age verification popup with Yes\u002FNo and Date of Birth check for WooCommerce or adult sites.",80,1408,"2025-07-30T19:13:00.000Z","6.8.5","5.0","7.2",[18,19,20,51,52],"popup","woocommerce","https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fadvanced-age-verification-popup\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fadvanced-age-verification-popup.zip",{"slug":56,"name":57,"version":58,"author":59,"author_profile":60,"description":61,"short_description":62,"active_installs":11,"downloaded":63,"rating":11,"num_ratings":11,"last_updated":64,"tested_up_to":14,"requires_at_least":48,"requires_php":23,"tags":65,"homepage":23,"download_link":68,"security_score":25,"vuln_count":11,"unpatched_count":11,"last_vuln_date":26,"fetched_at":27},"legal-age-sign","Legal Age Sign","1.5","sdmeier","https:\u002F\u002Fprofiles.wordpress.org\u002Fsdmeier\u002F","\u003Cp>The Legal Age Sign plugin provides a dynamic, live-updating compliance sign for websites selling age-restricted products. It automatically calculates the exact cutoff date based on the visitor’s local device time and your custom age requirements (e.g., 18 or 21). The sign features a live clock and updates the “Born on or before” date automatically at midnight without requiring a page refresh.\u003C\u002Fp>\n\u003Ch3>Features\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>Customizable Age Limit: Set the minimum required age directly in the settings, and the math will automatically adapt.\u003C\u002Fli>\n\u003Cli>Live Time & Date: Displays the visitor’s current local date and time.\u003C\u002Fli>\n\u003Cli>Auto-Updating Birth Date: Automatically calculates the required cutoff date in real-time.\u003C\u002Fli>\n\u003Cli>Fully Customizable: Change warning text, phone numbers, and images directly from the WordPress dashboard.\u003C\u002Fli>\n\u003Cli>Theme Integration: Automatically inherits your website’s default fonts and text colors to blend seamlessly with your active theme.\u003C\u002Fli>\n\u003Cli>Portable Images: Default compliance images are packaged directly inside the plugin.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Usage\u003C\u002Fh3>\n\u003Cp>To display the sign on any Page, Post, or Widget area, simply insert the following shortcode:\u003C\u002Fp>\n\u003Cp>[legal_age_sign]\u003C\u002Fp>\n\u003Ch3>Configuration & Settings\u003C\u002Fh3>\n\u003Cp>You do not need to edit any code to change the text, age, or images on the sign.\u003C\u002Fp>\n\u003Col>\n\u003Cli>In your WordPress dashboard navigation menu, go to Settings > Age Sign Settings.\u003C\u002Fli>\n\u003Cli>Age Requirement: Enter the minimum age required to purchase your products (e.g., 18, 21).\u003C\u002Fli>\n\u003Cli>Images: By default, the plugin uses its built-in images. To override them, paste the full URL of any image from your WordPress Media Library into the text boxes.\u003C\u002Fli>\n\u003Cli>Warning Text: Customize the product type (e.g., “ALCOHOL!”, “TOBACCO!”, “VAPE PRODUCTS!”), the violation text, and the local reporting phone number.\u003C\u002Fli>\n\u003Cli>Click “Save Changes” and your sign will instantly update across your entire site.\u003C\u002Fli>\n\u003C\u002Fol>\n","Legal Age Sign - WordPress Plugin Version: 1.5 Author: SDMEIER",184,"2026-03-06T15:36:00.000Z",[19,20,21,66,67],"drinking-age","warning-sign","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Flegal-age-sign.zip",{"slug":70,"name":71,"version":72,"author":73,"author_profile":74,"description":75,"short_description":76,"active_installs":11,"downloaded":77,"rating":11,"num_ratings":11,"last_updated":78,"tested_up_to":14,"requires_at_least":79,"requires_php":80,"tags":81,"homepage":84,"download_link":85,"security_score":25,"vuln_count":11,"unpatched_count":11,"last_vuln_date":26,"fetched_at":86},"xyz-age-verification-free","XYZ Age Verification","2.5.0","xyzageverify","https:\u002F\u002Fprofiles.wordpress.org\u002Fxyzageverify\u002F","\u003Cp>XYZ Age Verification provides real age verification for WordPress sites that need to comply with age-gating regulations. Unlike simple “click to confirm” plugins, XYZ uses biometric liveness detection and optional government ID verification to confirm that a visitor is not a minor.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>How it works:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Col>\n\u003Cli>Visitors from configured regions are redirected to an age gate page.\u003C\u002Fli>\n\u003Cli>They complete a face liveness check (Tier 1) or liveness + government ID verification (Tier 2).\u003C\u002Fli>\n\u003Cli>Upon verification, a secure cookie is set and the visitor is granted access.\u003C\u002Fli>\n\u003Cli>All biometric data is processed in real-time and is not stored.\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>\u003Cstrong>Key features:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Two-tier verification: face liveness check or liveness + government ID\u003C\u002Fli>\n\u003Cli>Region-specific rules with Cloudflare geo detection\u003C\u002Fli>\n\u003Cli>Configurable minimum age per region (Tier 2 auto-enforced for non-18 thresholds)\u003C\u002Fli>\n\u003Cli>QR code for mobile phone verification\u003C\u002Fli>\n\u003Cli>Popup or same-device verification options\u003C\u002Fli>\n\u003Cli>Real-time session status polling\u003C\u002Fli>\n\u003Cli>Configurable bypass cookies for pre-verified users\u003C\u002Fli>\n\u003Cli>Configurable fail-open or fail-closed behavior for API outages and credit exhaustion\u003C\u002Fli>\n\u003Cli>Cryptographically signed verification cookies (HMAC-SHA256)\u003C\u002Fli>\n\u003Cli>Server-side API key handling (never exposed to the browser)\u003C\u002Fli>\n\u003Cli>Logged-in WordPress users automatically bypass the age gate\u003C\u002Fli>\n\u003Cli>Built-in free plan admin: manage regions, thresholds, and view verification history\u003C\u002Fli>\n\u003Cli>Setup checklist and API health check on the settings page\u003C\u002Fli>\n\u003Cli>Admin notices for common misconfigurations\u003C\u002Fli>\n\u003Cli>Contextual help tabs with setup guide and troubleshooting\u003C\u002Fli>\n\u003Cli>Compatible with standard WordPress page caches (not compatible with WP Rocket — see FAQ)\u003C\u002Fli>\n\u003Cli>Privacy-focused: no biometric data stored\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>Free plan included:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>This plugin includes a free plan with 100 verification credits per month — no credit card required. Register directly from the plugin settings page with just your email address. Credits reset monthly and do not roll over. Additional credit packs are available for sites that need more capacity.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Requirements:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>An XYZ Age Verification API key (register for a free plan directly from the plugin settings, or sign up at \u003Ca href=\"https:\u002F\u002Fwww.xyzinc.com\u002Fwordpress-plugin\" rel=\"nofollow ugc\">xyzinc.com\u003C\u002Fa>)\u003C\u002Fli>\n\u003Cli>Cloudflare proxying — free plan or higher (required for geo detection headers \u003Ccode>CF-IPCountry\u003C\u002Fcode> and \u003Ccode>CF-Region-Code\u003C\u002Fcode>)\u003C\u002Fli>\n\u003Cli>HTTPS enabled\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>External service — XYZ Age Verification API:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>This plugin connects to the XYZ Age Verification API at \u003Ccode>https:\u002F\u002Fage-verify.xyzinc.com\u003C\u002Fcode>, operated by XY Zinc (a brand of Chaos Unlimited LLC), to perform biometric liveness detection and government ID document verification. The plugin cannot function without this service — it is the core verification engine.\u003C\u002Fp>\n\u003Cp>When a visitor triggers age verification, the plugin sends the visitor’s country and state codes (derived from Cloudflare headers) to the API to create a verification session. The visitor then interacts directly with the verification UI hosted by the service. No biometric data passes through your WordPress server. The plugin polls the API for session status and receives only a pass\u002Ffail result.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwww.xyzinc.com\u002Fterms\" rel=\"nofollow ugc\">Terms of Use\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwww.xyzinc.com\u002Fprivacy\" rel=\"nofollow ugc\">Privacy Policy\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwww.xyzinc.com\u002Fwordpress-plugin\" rel=\"nofollow ugc\">Service information\u003C\u002Fa>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Planned Features\u003C\u002Fh3>\n\u003Cp>The following enhancements are planned for future releases:\u003C\u002Fp>\n\u003Ch4>Restricted path mode (Pro)\u003C\u002Fh4>\n\u003Cp>Currently the age gate applies to your entire site based on visitor region. A future release of the Pro plugin will add a \u003Cstrong>restricted paths\u003C\u002Fstrong> mode, allowing site owners to age-gate only specific URL paths (e.g., \u003Ccode>\u002Fmature\u002F\u003C\u002Fcode>, \u003Ccode>\u002Fadult-content\u002F\u003C\u002Fcode>) while leaving the rest of the site accessible without verification. This is ideal for sites that contain a mix of general and age-restricted content — such as sexuality education sites, media outlets with adult sections, or e-commerce stores with age-restricted product categories.\u003C\u002Fp>\n\u003Ch4>Additional credit packs\u003C\u002Fh4>\n\u003Cp>Credit packs will be available for purchase via PayPal for sites that need more capacity. Purchased credits will be added to a prepaid balance that persists until used — they will not expire or reset monthly. Multiple packs can be stacked.\u003C\u002Fp>\n\u003Ch4>Media file protection\u003C\u002Fh4>\n\u003Cp>We are investigating methods to extend age gate protection to files served from \u003Ccode>\u002Fwp-content\u002Fuploads\u002F\u003C\u002Fcode>. Because media files are served directly by the web server and do not pass through WordPress PHP execution, this requires server-level solutions (e.g., Nginx\u002FApache rewrite rules, signed URLs, or a PHP-based file proxy). A future release will provide guidance and\u002For built-in support for common hosting configurations.\u003C\u002Fp>\n\u003Ch3>Third-Party Libraries\u003C\u002Fh3>\n\u003Cp>This plugin includes the following third-party library:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>QRCode.js\u003C\u002Fstrong> — Client-side QR code generation\n\u003Cul>\n\u003Cli>Source: \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fdavidshimjs\u002Fqrcodejs\" rel=\"nofollow ugc\">https:\u002F\u002Fgithub.com\u002Fdavidshimjs\u002Fqrcodejs\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>License: MIT\u003C\u002Fli>\n\u003Cli>Files: \u003Ccode>assets\u002Fjs\u002Fqrcode.js\u003C\u002Fcode> (unminified source), \u003Ccode>assets\u002Fjs\u002Fqrcode.min.js\u003C\u002Fcode> (minified)\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>No build tools are required. The library is included as-is from the upstream repository with a minor CSS modification (image display style changed from “block” to “inline-block” for QR code placement). The unminified source is included in the plugin for review.\u003C\u002Fp>\n","Real age verification for WordPress — biometric liveness detection and government ID verification, not just a checkbox.",98,"2026-03-15T09:28:00.000Z","5.6","7.4",[18,82,19,20,83],"age-check","liveness-detection","https:\u002F\u002Fwww.xyzinc.com\u002Fwordpress-plugin","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fxyz-age-verification-free.2.5.0.zip","2026-03-15T15:16:48.613Z",{"slug":19,"name":88,"version":89,"author":90,"author_profile":91,"description":92,"short_description":93,"active_installs":94,"downloaded":95,"rating":96,"num_ratings":97,"last_updated":98,"tested_up_to":47,"requires_at_least":99,"requires_php":80,"tags":100,"homepage":104,"download_link":105,"security_score":106,"vuln_count":107,"unpatched_count":11,"last_vuln_date":108,"fetched_at":27},"Age Gate","3.7.2","Phil","https:\u002F\u002Fprofiles.wordpress.org\u002Fphilsbury\u002F","\u003Cp>There are many uses for restricting content based on age, be it movie trailers, beer or other adult themes. This plugin allows you to set a restriction on what content can been seen or restricted based on the age of the user.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Features\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Ask users to verify their age on page load\u003C\u002Fli>\n\u003Cli>SEO Friendly – common bots and crawlers are omitted from age checks\u003C\u002Fli>\n\u003Cli>Ability to add custom user agents for less common bots\u003C\u002Fli>\n\u003Cli>Shortcode for in content restrictions\u003C\u002Fli>\n\u003Cli>Choose to restrict an entire site, or selected content\u003C\u002Fli>\n\u003Cli>Select a different age on individual content\u003C\u002Fli>\n\u003Cli>Allow certain content to not be age gated under “all content” mode\u003C\u002Fli>\n\u003Cli>Three choices for input; dropdowns, input fields or a simple yes\u002Fno button\u003C\u002Fli>\n\u003Cli>Customise the order of the inputs based on your region (DD MM YYYY or MM DD YYYY)\u003C\u002Fli>\n\u003Cli>Allow a “remember me” check box if desired\u003C\u002Fli>\n\u003Cli>Ability to omit logged in users from being checked\u003C\u002Fli>\n\u003Cli>Add your own logo\u003C\u002Fli>\n\u003Cli>Update the text displayed on the entry form\u003C\u002Fli>\n\u003Cli>Select background colour\u002Fimage, foreground colour and text colour\u003C\u002Fli>\n\u003Cli>Use built in styling out of the box, or your own custom style\u003C\u002Fli>\n\u003Cli>Ability to add legal note or information to the bottom of the form\u003C\u002Fli>\n\u003Cli>Redirect failed logins to a URL of your choice e.g. an alcohol awareness website.\u003C\u002Fli>\n\u003Cli>Ability to use a non caching version\u003C\u002Fli>\n\u003Cli>Various hooks to add even more customisation such as additional form fields\u003C\u002Fli>\n\u003Cli>Compatible with multilingual plugins WPML, Polylang (2.3+), WP Multilang\u003C\u002Fli>\n\u003C\u002Ful>\n","A plugin to check the age of a visitor before view site or specified content",40000,1361715,92,64,"2025-10-22T19:24:00.000Z","6.0.0",[101,19,102,20,103],"adults-only","age-restriction","age-verify","https:\u002F\u002Fagegate.io\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fage-gate.3.7.2.zip",93,5,"2025-04-09 00:00:00",{"slug":110,"name":111,"version":112,"author":113,"author_profile":114,"description":115,"short_description":116,"active_installs":117,"downloaded":118,"rating":25,"num_ratings":119,"last_updated":120,"tested_up_to":23,"requires_at_least":121,"requires_php":122,"tags":123,"homepage":23,"download_link":126,"security_score":127,"vuln_count":11,"unpatched_count":11,"last_vuln_date":26,"fetched_at":27},"age-gate-lite","Age Gate Lite","0.0.7","SiD","https:\u002F\u002Fprofiles.wordpress.org\u002Fsiddhu09rocks\u002F","\u003Cp>If your content or products are about cannabis, alcohol, gambling or other adult content.\u003C\u002Fp>\n\u003Cp>Age Gate Lite makes it easier then ever to configure and style an age restriction pop up to protect younger audience.\u003C\u002Fp>\n\u003Cp>It is designed to be user friendly, simple lightweight and only requires users to confirm their age ( Yes \u002F No ).\u003C\u002Fp>\n\u003Cp>This plugin is absolutely, 100% free.\u003C\u002Fp>\n\u003Cp>Success message section included can be used for Email \u002F Newsletter Opt-in or Promotional messages.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Devs 👨‍💻\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>Avaliable JS Event Listeners – agl_passed & agl_failed.\u003C\u002Fp>\n\u003Cpre>\u003Ccode>\u003Cscript>\n    document.addEventListener(\"agl_passed\", function() {\n        \u002F\u002F Insert yor code for Age Gate Passed ;\n    });\n\n    document.addEventListener(\"agl_failed\", function() {\n        \u002F\u002F Insert yor code for Age Gate Failed');\n    });\n\u003C\u002Fscript>\n\u003C\u002Fcode>\u003C\u002Fpre>\n","A lightweight, customisable age gate to lock content from younger audience.",2000,14898,6,"2022-07-13T01:28:00.000Z","4.0","5.2.4",[124,19,20,103,125],"age","cannabis","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fage-gate-lite.zip",85,{"attackSurface":129,"codeSignals":246,"taintFlows":287,"riskAssessment":416,"analyzedAt":424},{"hooks":130,"ajaxHandlers":236,"restRoutes":243,"shortcodes":244,"cronEvents":245,"entryPointCount":31,"unprotectedCount":11},[131,137,142,146,150,153,156,159,163,169,171,174,179,184,188,192,195,198,200,204,206,208,209,212,215,218,221,224,228,232],{"type":132,"name":133,"callback":134,"file":135,"line":136},"action","plugins_loaded","closure","borderage-core.php",56,{"type":132,"name":138,"callback":139,"file":140,"line":141},"admin_menu","registerMenu","src\u002FAdmin\u002FAdminService.php",65,{"type":132,"name":143,"callback":144,"file":140,"line":145},"admin_enqueue_scripts","enqueueAssets",66,{"type":132,"name":147,"callback":148,"file":140,"line":149},"admin_init","handleSave",67,{"type":132,"name":147,"callback":151,"file":140,"line":152},"handleExport",68,{"type":132,"name":147,"callback":154,"file":140,"line":155},"handleDebugExport",69,{"type":132,"name":147,"callback":157,"file":140,"line":158},"handleDevReset",70,{"type":132,"name":160,"callback":161,"file":140,"line":162},"admin_notices","checkPermalinks",71,{"type":164,"name":165,"callback":166,"priority":167,"file":140,"line":168},"filter","admin_title","filterAdminTitle",10,73,{"type":132,"name":160,"callback":134,"file":140,"line":170},255,{"type":132,"name":160,"callback":134,"file":172,"line":173},"src\u002FAdmin\u002FPages\u002FDebugPage.php",182,{"type":132,"name":175,"callback":176,"priority":177,"file":178,"line":177},"wp_enqueue_scripts","enqueue",20,"src\u002FFront\u002FAssets.php",{"type":132,"name":180,"callback":181,"file":182,"line":183},"init","addRewriteRules","src\u002FFront\u002FCallbackHandler.php",45,{"type":164,"name":185,"callback":186,"file":182,"line":187},"query_vars","addQueryVars",46,{"type":132,"name":189,"callback":190,"priority":107,"file":182,"line":191},"template_redirect","handleCallback",47,{"type":132,"name":180,"callback":181,"file":193,"line":194},"src\u002FFront\u002FProtectionHandler.php",41,{"type":132,"name":180,"callback":196,"file":193,"line":197},"handleDebugReset",42,{"type":164,"name":185,"callback":186,"file":193,"line":199},43,{"type":132,"name":201,"callback":202,"priority":167,"file":193,"line":203},"wp","handleProtection",44,{"type":132,"name":189,"callback":205,"priority":107,"file":193,"line":183},"handleVerifyPage",{"type":132,"name":180,"callback":181,"file":207,"line":187},"src\u002FFront\u002FVisitorAuthHandler.php",{"type":164,"name":185,"callback":186,"file":207,"line":191},{"type":132,"name":189,"callback":210,"priority":107,"file":207,"line":211},"handleRegister",48,{"type":132,"name":189,"callback":213,"priority":107,"file":207,"line":214},"handleLogin",49,{"type":132,"name":189,"callback":216,"priority":107,"file":207,"line":217},"handleLoginPage",50,{"type":132,"name":180,"callback":219,"file":220,"line":77},"loadTextDomain","src\u002FPlugin.php",{"type":132,"name":180,"callback":222,"priority":223,"file":220,"line":223},"maybeFlushRewriteRules",99,{"type":132,"name":160,"callback":225,"file":226,"line":227},"displayAdminNotice","src\u002FServices\u002FAlertService.php",35,{"type":132,"name":229,"callback":230,"file":226,"line":231},"wp_mail_failed","anonymous",133,{"type":132,"name":147,"callback":233,"file":234,"line":235},"registerSettings","src\u002FServices\u002FSettings.php",57,[237],{"action":238,"nopriv":239,"callback":240,"hasNonce":241,"hasCapCheck":241,"file":140,"line":242},"borderage_test_credit_alert",false,"handleTestCreditAlert",true,72,[],[],[],{"dangerousFunctions":247,"sqlUsage":248,"outputEscaping":251,"fileOperations":283,"externalRequests":284,"nonceChecks":285,"capabilityChecks":167,"bundledLibraries":286},[],{"prepared":249,"raw":11,"locations":250},54,[],{"escaped":252,"rawEcho":253,"locations":254},1131,14,[255,257,259,261,263,265,267,270,272,274,276,278,280,282],{"file":140,"line":223,"context":256},"raw output",{"file":140,"line":258,"context":256},145,{"file":140,"line":260,"context":256},158,{"file":140,"line":262,"context":256},291,{"file":140,"line":264,"context":256},319,{"file":172,"line":266,"context":256},156,{"file":268,"line":269,"context":256},"src\u002FAdmin\u002FPages\u002FSettingsPage.php",38,{"file":271,"line":145,"context":256},"src\u002FAdmin\u002FPages\u002FStatsPage.php",{"file":271,"line":273,"context":256},183,{"file":226,"line":275,"context":256},168,{"file":226,"line":277,"context":256},177,{"file":279,"line":155,"context":256},"templates\u002Fverify-page.php",{"file":279,"line":281,"context":256},78,{"file":279,"line":106,"context":256},3,2,9,[],[288,311,321,332,340,349,357,388,403],{"entryPoint":289,"graph":290,"unsanitizedCount":31,"severity":310},"render (src\u002FAdmin\u002FPages\u002FStatsPage.php:32)",{"nodes":291,"edges":307},[292,297,301],{"id":293,"type":294,"label":295,"file":271,"line":296},"n0","source","$_GET",193,{"id":298,"type":299,"label":300,"file":271,"line":296},"n1","transform","→ renderPagination()",{"id":302,"type":303,"label":304,"file":271,"line":305,"wp_function":306},"n2","sink","echo() [XSS]",382,"echo",[308,309],{"from":293,"to":298,"sanitized":239},{"from":298,"to":302,"sanitized":239},"medium",{"entryPoint":312,"graph":313,"unsanitizedCount":31,"severity":310},"\u003CStatsPage> (src\u002FAdmin\u002FPages\u002FStatsPage.php:0)",{"nodes":314,"edges":318},[315,316,317],{"id":293,"type":294,"label":295,"file":271,"line":296},{"id":298,"type":299,"label":300,"file":271,"line":296},{"id":302,"type":303,"label":304,"file":271,"line":305,"wp_function":306},[319,320],{"from":293,"to":298,"sanitized":239},{"from":298,"to":302,"sanitized":239},{"entryPoint":322,"graph":323,"unsanitizedCount":11,"severity":331},"handleExport (src\u002FAdmin\u002FAdminService.php:262)",{"nodes":324,"edges":329},[325,328],{"id":293,"type":294,"label":326,"file":140,"line":327},"$_POST",281,{"id":298,"type":303,"label":304,"file":140,"line":262,"wp_function":306},[330],{"from":293,"to":298,"sanitized":241},"low",{"entryPoint":333,"graph":334,"unsanitizedCount":11,"severity":331},"\u003CAdminService> (src\u002FAdmin\u002FAdminService.php:0)",{"nodes":335,"edges":338},[336,337],{"id":293,"type":294,"label":326,"file":140,"line":327},{"id":298,"type":303,"label":304,"file":140,"line":262,"wp_function":306},[339],{"from":293,"to":298,"sanitized":241},{"entryPoint":341,"graph":342,"unsanitizedCount":11,"severity":331},"render (src\u002FAdmin\u002FPages\u002FDevToolsPage.php:33)",{"nodes":343,"edges":347},[344,346],{"id":293,"type":294,"label":295,"file":345,"line":214},"src\u002FAdmin\u002FPages\u002FDevToolsPage.php",{"id":298,"type":303,"label":304,"file":345,"line":249,"wp_function":306},[348],{"from":293,"to":298,"sanitized":241},{"entryPoint":350,"graph":351,"unsanitizedCount":11,"severity":331},"\u003CDevToolsPage> (src\u002FAdmin\u002FPages\u002FDevToolsPage.php:0)",{"nodes":352,"edges":355},[353,354],{"id":293,"type":294,"label":295,"file":345,"line":214},{"id":298,"type":303,"label":304,"file":345,"line":249,"wp_function":306},[356],{"from":293,"to":298,"sanitized":241},{"entryPoint":358,"graph":359,"unsanitizedCount":284,"severity":387},"handleCallback (src\u002FFront\u002FCallbackHandler.php:67)",{"nodes":360,"edges":382},[361,363,365,370,373,376],{"id":293,"type":294,"label":295,"file":182,"line":362},95,{"id":298,"type":299,"label":364,"file":182,"line":362},"→ findUserReferenceByAttempt()",{"id":302,"type":303,"label":366,"file":367,"line":368,"wp_function":369},"get_var() [SQLi]","src\u002FServices\u002FReferenceAttemptsRepository.php",130,"get_var",{"id":371,"type":294,"label":295,"file":182,"line":372},"n3",128,{"id":374,"type":299,"label":375,"file":182,"line":372},"n4","→ isValid()",{"id":377,"type":303,"label":378,"file":379,"line":380,"wp_function":381},"n5","get_row() [SQLi]","src\u002FServices\u002FVerificationTokenRepository.php",97,"get_row",[383,384,385,386],{"from":293,"to":298,"sanitized":239},{"from":298,"to":302,"sanitized":239},{"from":371,"to":374,"sanitized":239},{"from":374,"to":377,"sanitized":239},"high",{"entryPoint":389,"graph":390,"unsanitizedCount":284,"severity":387},"\u003CCallbackHandler> (src\u002FFront\u002FCallbackHandler.php:0)",{"nodes":391,"edges":398},[392,393,394,395,396,397],{"id":293,"type":294,"label":295,"file":182,"line":362},{"id":298,"type":299,"label":364,"file":182,"line":362},{"id":302,"type":303,"label":366,"file":367,"line":368,"wp_function":369},{"id":371,"type":294,"label":295,"file":182,"line":372},{"id":374,"type":299,"label":375,"file":182,"line":372},{"id":377,"type":303,"label":378,"file":379,"line":380,"wp_function":381},[399,400,401,402],{"from":293,"to":298,"sanitized":239},{"from":298,"to":302,"sanitized":239},{"from":371,"to":374,"sanitized":239},{"from":374,"to":377,"sanitized":239},{"entryPoint":404,"graph":405,"unsanitizedCount":31,"severity":387},"\u003CVisitorAuthHandler> (src\u002FFront\u002FVisitorAuthHandler.php:0)",{"nodes":406,"edges":413},[407,409,411],{"id":293,"type":294,"label":326,"file":207,"line":408},317,{"id":298,"type":299,"label":410,"file":207,"line":408},"→ countRecentAttempts()",{"id":302,"type":303,"label":366,"file":367,"line":412,"wp_function":369},114,[414,415],{"from":293,"to":298,"sanitized":239},{"from":298,"to":302,"sanitized":239},{"summary":417,"deductions":418},"The 'borderage-core' plugin v0.1.0 demonstrates several strong security practices. The complete absence of known CVEs and the consistent use of prepared statements for all SQL queries are significant strengths. Additionally, the plugin exhibits a very high rate of proper output escaping and includes capability checks for its entry points, indicating a good understanding of secure coding principles. The limited attack surface, primarily consisting of a single AJAX handler, and the lack of bundled libraries also contribute positively to its security posture.\n\nHowever, the static analysis reveals potential areas for improvement. The presence of 5 'flows with unsanitized paths' is a concern, with 3 identified as high severity taint flows. These flows suggest that user-supplied data might be processed without adequate sanitization, potentially leading to vulnerabilities like path traversal or local file inclusion if not handled carefully within the application context. While the attack surface is small, the specific nature of these unsanitized paths requires further investigation to confirm if they are exploitable.\n\nThe plugin's vulnerability history is currently clear, which is excellent. This, combined with the strong coding practices observed, suggests a generally secure plugin. Nevertheless, the identified high-severity taint flows warrant attention to ensure that these potential weaknesses are addressed, particularly given the plugin's early version. The overall security posture is good, but the taint analysis highlights specific code-level risks that should be remediated to achieve a fully robust security profile.",[419,422],{"reason":420,"points":421},"High severity taint flows found",15,{"reason":423,"points":167},"Unsanitized paths found in taint analysis","2026-04-16T13:46:15.084Z",{"wat":426,"direct":439},{"assetPaths":427,"generatorPatterns":431,"scriptPaths":432,"versionParams":434},[428,429,430],"\u002Fwp-content\u002Fplugins\u002Fborderage-core\u002Fsrc\u002FAdmin\u002Fassets\u002Fjs\u002Fadmin.js","\u002Fwp-content\u002Fplugins\u002Fborderage-core\u002Fsrc\u002FAdmin\u002Fassets\u002Fcss\u002Fadmin.css","\u002Fwp-content\u002Fplugins\u002Fborderage-core\u002Fsrc\u002FFrontend\u002Fassets\u002Fcss\u002Ffrontend.css",[],[428,433],"\u002Fwp-content\u002Fplugins\u002Fborderage-core\u002Fsrc\u002FFrontend\u002Fassets\u002Fjs\u002Ffrontend.js",[435,436,437,438],"borderage-core\u002Fsrc\u002FAdmin\u002Fassets\u002Fjs\u002Fadmin.js?ver=","borderage-core\u002Fsrc\u002FAdmin\u002Fassets\u002Fcss\u002Fadmin.css?ver=","borderage-core\u002Fsrc\u002FFrontend\u002Fassets\u002Fcss\u002Ffrontend.css?ver=","borderage-core\u002Fsrc\u002FFrontend\u002Fassets\u002Fjs\u002Ffrontend.js?ver=",{"cssClasses":440,"htmlComments":455,"htmlAttributes":460,"restEndpoints":465,"jsGlobals":469,"shortcodeOutput":472},[441,442,443,444,445,446,447,448,449,450,451,452,453,454],"borderage-credits-banner","borderage-banner-error","borderage-banner-warning","borderage-banner-icon","borderage-banner-content","borderage-banner-action","borderage-banner-contact","borderage-protection-form","borderage-modal-overlay","borderage-modal","borderage-modal-header","borderage-modal-body","borderage-modal-footer","borderage-notice-error",[456,457,458,459],"\u003C!-- Generated by BorderAge Core -->","\u003C!-- Protect all pages and posts -->","\u003C!-- Age verification form -->","\u003C!-- BorderAge Modal -->",[461,462,463,464],"data-borderage-verify","data-borderage-action","data-borderage-pin-url","data-borderage-modal-target",[466,467,468],"\u002Fwp-json\u002Fborderage-core\u002Fv1\u002Fverify","\u002Fwp-json\u002Fborderage-core\u002Fv1\u002Fpin","\u002Fwp-json\u002Fborderage-core\u002Fv1\u002Fcredits",[470,471],"borderageCore","BorderageCore",[473,474],"[borderage_protection_form]","[borderage_age_gate]",{"error":241,"url":476,"statusCode":477,"statusMessage":478,"message":478},"http:\u002F\u002Flocalhost\u002Fapi\u002Fplugins\u002Fborderage-core\u002Fbundle",404,"no bundle for this plugin yet",{"slug":4,"current_version":6,"total_versions":31,"versions":480},[481],{"version":482,"download_url":483,"svn_tag_url":484,"released_at":26,"has_diff":239,"diff_files_changed":485,"diff_lines":26,"trac_diff_url":26,"vulnerabilities":486,"is_current":239},"1.0.0","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fborderage-core.1.0.0.zip","https:\u002F\u002Fplugins.svn.wordpress.org\u002Fborderage-core\u002Ftags\u002F1.0.0\u002F",[],[]]