{"id":313,"date":"2025-12-08T12:44:14","date_gmt":"2025-12-08T06:44:14","guid":{"rendered":"https:\/\/stellardns.io\/?page_id=313"},"modified":"2026-03-25T07:33:43","modified_gmt":"2026-03-25T12:33:43","slug":"donate","status":"publish","type":"page","link":"https:\/\/stellardns.io\/?page_id=313","title":{"rendered":"Donate"},"content":{"rendered":"\r\n<div class=\"stellar-payment-form-wrapper\">\r\n    <div class=\"stellar-payment-container\">\r\n        <h3>Support Us with XLM<\/h3>\r\n\r\n        <form id=\"stellar-payment-form\" class=\"stellar-payment-form\" method=\"post\">\r\n            <input type=\"hidden\" id=\"stellar_payment_nonce_field\" name=\"stellar_payment_nonce_field\" value=\"7161e03288\" \/><input type=\"hidden\" name=\"_wp_http_referer\" value=\"\/index.php?rest_route=%2Fwp%2Fv2%2Fpages%2F313\" \/>\r\n            <div class=\"form-group\">\r\n                <label for=\"stellar_payment_amount\">Amount (XLM)<\/label>\r\n                <div class=\"input-group\">\r\n                    <input\r\n                        type=\"number\"\r\n                        id=\"stellar_payment_amount\"\r\n                        name=\"stellar_payment_amount\"\r\n                        value=\"100\"\r\n                        step=\"0.01\"\r\n                        min=\"0.01\"\r\n                        class=\"form-control\"\r\n                        required\r\n                        placeholder=\"Enter amount\"\r\n                    \/>\r\n                    <span class=\"input-group-text\">XLM<\/span>\r\n                <\/div>\r\n                <small class=\"form-text\">Enter the amount you want to send (minimum: 0.01 XLM)<\/small>\r\n            <\/div>\r\n\r\n                        <div class=\"form-group\">\r\n                <label>Description<\/label>\r\n                <p class=\"form-text\">\r\n                    Support Us with XLM                <\/p>\r\n            <\/div>\r\n            \r\n            <div class=\"payment-summary\">\r\n                <div class=\"summary-item\">\r\n                    <span>Amount:<\/span>\r\n                    <strong id=\"payment-amount-display\">100 XLM<\/strong>\r\n                <\/div>\r\n                <div class=\"summary-item\">\r\n                    <span>Network:<\/span>\r\n                    <strong>Mainnet<\/strong>\r\n                <\/div>\r\n            <\/div>\r\n\r\n            <button type=\"submit\" class=\"stellar-payment-submit btn btn-primary\">\r\n                <span class=\"button-text\">Send Payment<\/span>\r\n                <span class=\"spinner\" style=\"display: none;\"><\/span>\r\n            <\/button>\r\n        <\/form>\r\n\r\n        <div id=\"stellar-payment-status\" class=\"stellar-payment-status\" style=\"display: none;\"><\/div>\r\n    <\/div>\r\n<\/div>\r\n\r\n<!-- Load Stellar SDK from CDN -->\r\n<script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/stellar-sdk\/11.3.0\/stellar-sdk.min.js\"><\/script>\r\n<script>\r\n\/\/ Pass configuration from PHP to JavaScript\r\nconst stellarConfig = {\r\n    treasuryAddress: 'GBEB4N6JBDCNJR75O2V7QFHMU6FBAOASXQKO753JXHJSEMMNNA5V6HL7',\r\n    network: 'mainnet',\r\n    horizonUrl: 'https:\/\/horizon.stellar.org'\r\n};\r\n\r\nconsole.log('Stellar Config:', {\r\n    treasury: stellarConfig.treasuryAddress ? stellarConfig.treasuryAddress.substring(0, 8) + '...' : 'NOT SET',\r\n    network: stellarConfig.network,\r\n    horizonUrl: stellarConfig.horizonUrl\r\n});\r\n<\/script>\r\n\r\n<!-- Signing Modal -->\r\n<div id=\"stellar-signing-modal\" class=\"stellar-modal\" style=\"display: none;\">\r\n    <div class=\"stellar-modal-overlay\"><\/div>\r\n    <div class=\"stellar-modal-content\">\r\n        <div class=\"stellar-modal-header\">\r\n            <h3>Sign Transaction<\/h3>\r\n            <button type=\"button\" class=\"stellar-modal-close\" aria-label=\"Close\">&times;<\/button>\r\n        <\/div>\r\n        <div class=\"stellar-modal-body\">\r\n            <div class=\"transaction-summary\">\r\n                <p><strong>Amount:<\/strong> <span id=\"modal-amount\"><\/span> XLM<\/p>\r\n                <p><strong>Network:<\/strong> <span id=\"modal-network\"><\/span><\/p>\r\n            <\/div>\r\n\r\n            <div class=\"signing-options\">\r\n                <div class=\"form-group\">\r\n                    <label for=\"modal-secret-key\">Enter your Secret Key to sign:<\/label>\r\n                    <input\r\n                        type=\"password\"\r\n                        id=\"modal-secret-key\"\r\n                        placeholder=\"S...\"\r\n                        class=\"form-control\"\r\n                        autocomplete=\"off\"\r\n                    \/>\r\n                    <small class=\"form-text\">Your secret key (starts with S) - never shared with anyone<\/small>\r\n                <\/div>\r\n\r\n                <!-- Federation support (ready for future implementation) -->\r\n                <div class=\"federation-divider\">\r\n                    <span>or (coming soon)<\/span>\r\n                <\/div>\r\n\r\n                <div class=\"form-group federation-group\" style=\"opacity: 0.5; pointer-events: none;\">\r\n                    <label for=\"modal-federation-address\">Federated Address:<\/label>\r\n                    <input\r\n                        type=\"text\"\r\n                        id=\"modal-federation-address\"\r\n                        placeholder=\"name*stellardns.io\"\r\n                        class=\"form-control\"\r\n                        disabled\r\n                    \/>\r\n                    <small class=\"form-text\">Federation support coming soon<\/small>\r\n                <\/div>\r\n            <\/div>\r\n\r\n            <div class=\"stellar-modal-error\" id=\"modal-error\" style=\"display: none;\"><\/div>\r\n        <\/div>\r\n        <div class=\"stellar-modal-footer\">\r\n            <button type=\"button\" class=\"btn btn-secondary\" id=\"modal-cancel\">Cancel<\/button>\r\n            <button type=\"button\" class=\"btn btn-primary\" id=\"modal-sign\">\r\n                <span class=\"button-text\">Sign & Send<\/span>\r\n                <span class=\"spinner\" style=\"display: none;\"><\/span>\r\n            <\/button>\r\n        <\/div>\r\n    <\/div>\r\n<\/div>\r\n\r\n<style>\r\n.stellar-payment-form-wrapper {\r\n    padding: 20px 0;\r\n}\r\n\r\n.stellar-payment-container {\r\n    max-width: 500px;\r\n    margin: 0 auto;\r\n    padding: 30px;\r\n    background: #f9f9f9;\r\n    border: 1px solid #ddd;\r\n    border-radius: 8px;\r\n}\r\n\r\n.stellar-payment-form h3 {\r\n    margin-top: 0;\r\n    color: #333;\r\n    font-size: 24px;\r\n    margin-bottom: 20px;\r\n}\r\n\r\n.form-group {\r\n    margin-bottom: 20px;\r\n}\r\n\r\n.form-group label {\r\n    display: block;\r\n    margin-bottom: 8px;\r\n    font-weight: 600;\r\n    color: #333;\r\n}\r\n\r\n.form-control {\r\n    width: 100%;\r\n    padding: 10px;\r\n    border: 1px solid #ddd;\r\n    border-radius: 4px;\r\n    font-size: 14px;\r\n    font-family: monospace;\r\n    transition: border-color 0.2s;\r\n}\r\n\r\n.form-control:focus {\r\n    outline: none;\r\n    border-color: #007cba;\r\n    box-shadow: 0 0 0 3px rgba(0, 124, 186, 0.1);\r\n}\r\n\r\n.form-control[readonly] {\r\n    background-color: #f5f5f5;\r\n    cursor: not-allowed;\r\n}\r\n\r\n.input-group {\r\n    display: flex;\r\n    gap: 0;\r\n}\r\n\r\n.input-group .form-control {\r\n    margin-right: -1px;\r\n}\r\n\r\n.input-group-text {\r\n    padding: 10px 15px;\r\n    background: #f5f5f5;\r\n    border: 1px solid #ddd;\r\n    border-left: none;\r\n    font-weight: 600;\r\n}\r\n\r\n.form-text {\r\n    display: block;\r\n    margin-top: 5px;\r\n    font-size: 12px;\r\n    color: #666;\r\n}\r\n\r\n.payment-summary {\r\n    background: white;\r\n    padding: 15px;\r\n    border: 1px solid #e0e0e0;\r\n    border-radius: 4px;\r\n    margin: 20px 0;\r\n}\r\n\r\n.summary-item {\r\n    display: flex;\r\n    justify-content: space-between;\r\n    padding: 8px 0;\r\n    border-bottom: 1px solid #f0f0f0;\r\n}\r\n\r\n.summary-item:last-child {\r\n    border-bottom: none;\r\n}\r\n\r\n.summary-item span {\r\n    color: #666;\r\n}\r\n\r\n.summary-item strong {\r\n    color: #333;\r\n    font-family: monospace;\r\n}\r\n\r\n.stellar-payment-submit {\r\n    width: 100%;\r\n    padding: 12px;\r\n    background: #007cba;\r\n    color: white;\r\n    border: none;\r\n    border-radius: 4px;\r\n    font-size: 16px;\r\n    font-weight: 600;\r\n    cursor: pointer;\r\n    transition: background 0.2s;\r\n}\r\n\r\n.stellar-payment-submit:hover {\r\n    background: #005a87;\r\n}\r\n\r\n.stellar-payment-submit:disabled {\r\n    background: #ccc;\r\n    cursor: not-allowed;\r\n}\r\n\r\n.stellar-payment-submit .spinner {\r\n    display: inline-block;\r\n    width: 16px;\r\n    height: 16px;\r\n    margin-left: 8px;\r\n    border: 2px solid #fff;\r\n    border-top-color: transparent;\r\n    border-radius: 50%;\r\n    animation: spin 0.6s linear infinite;\r\n}\r\n\r\n@keyframes spin {\r\n    to { transform: rotate(360deg); }\r\n}\r\n\r\n.payment-note {\r\n    text-align: center;\r\n    margin-top: 15px;\r\n    font-size: 12px;\r\n    color: #666;\r\n}\r\n\r\n.stellar-payment-status {\r\n    margin-top: 20px;\r\n    padding: 12px 15px;\r\n    border-radius: 4px;\r\n}\r\n\r\n.stellar-payment-status.success {\r\n    background: #d4edda;\r\n    color: #155724;\r\n    border: 1px solid #c3e6cb;\r\n}\r\n\r\n.stellar-payment-status.error {\r\n    background: #f8d7da;\r\n    color: #721c24;\r\n    border: 1px solid #f5c6cb;\r\n}\r\n\r\n@media (max-width: 600px) {\r\n    .stellar-payment-container {\r\n        padding: 20px;\r\n    }\r\n\r\n    .stellar-payment-form h3 {\r\n        font-size: 20px;\r\n    }\r\n}\r\n\r\n\/* Modal Styles *\/\r\n.stellar-modal {\r\n    position: fixed;\r\n    top: 0;\r\n    left: 0;\r\n    width: 100%;\r\n    height: 100%;\r\n    z-index: 9999;\r\n    display: flex;\r\n    align-items: center;\r\n    justify-content: center;\r\n}\r\n\r\n.stellar-modal-overlay {\r\n    position: absolute;\r\n    top: 0;\r\n    left: 0;\r\n    width: 100%;\r\n    height: 100%;\r\n    background: rgba(0, 0, 0, 0.6);\r\n    backdrop-filter: blur(2px);\r\n}\r\n\r\n.stellar-modal-content {\r\n    position: relative;\r\n    background: white;\r\n    border-radius: 8px;\r\n    box-shadow: 0 4px 20px rgba(0, 0, 0, 0.3);\r\n    max-width: 500px;\r\n    width: 90%;\r\n    max-height: 90vh;\r\n    overflow-y: auto;\r\n    z-index: 1;\r\n}\r\n\r\n.stellar-modal-header {\r\n    display: flex;\r\n    justify-content: space-between;\r\n    align-items: center;\r\n    padding: 20px;\r\n    border-bottom: 1px solid #e0e0e0;\r\n}\r\n\r\n.stellar-modal-header h3 {\r\n    margin: 0;\r\n    font-size: 20px;\r\n    color: #333;\r\n}\r\n\r\n.stellar-modal-close {\r\n    background: none;\r\n    border: none;\r\n    font-size: 28px;\r\n    line-height: 1;\r\n    color: #999;\r\n    cursor: pointer;\r\n    padding: 0;\r\n    width: 30px;\r\n    height: 30px;\r\n    display: flex;\r\n    align-items: center;\r\n    justify-content: center;\r\n}\r\n\r\n.stellar-modal-close:hover {\r\n    color: #333;\r\n}\r\n\r\n.stellar-modal-body {\r\n    padding: 20px;\r\n}\r\n\r\n.transaction-summary {\r\n    background: #f0f8ff;\r\n    padding: 15px;\r\n    border-radius: 4px;\r\n    margin-bottom: 20px;\r\n    border: 1px solid #d0e8ff;\r\n}\r\n\r\n.transaction-summary p {\r\n    margin: 5px 0;\r\n    font-size: 14px;\r\n}\r\n\r\n.signing-options {\r\n    margin-top: 20px;\r\n}\r\n\r\n.federation-divider {\r\n    text-align: center;\r\n    margin: 20px 0;\r\n    position: relative;\r\n}\r\n\r\n.federation-divider::before,\r\n.federation-divider::after {\r\n    content: '';\r\n    position: absolute;\r\n    top: 50%;\r\n    width: 40%;\r\n    height: 1px;\r\n    background: #ddd;\r\n}\r\n\r\n.federation-divider::before {\r\n    left: 0;\r\n}\r\n\r\n.federation-divider::after {\r\n    right: 0;\r\n}\r\n\r\n.federation-divider span {\r\n    background: white;\r\n    padding: 0 10px;\r\n    color: #999;\r\n    font-size: 12px;\r\n}\r\n\r\n.stellar-modal-error {\r\n    background: #f8d7da;\r\n    color: #721c24;\r\n    padding: 10px 15px;\r\n    border-radius: 4px;\r\n    border: 1px solid #f5c6cb;\r\n    margin-top: 15px;\r\n    font-size: 14px;\r\n}\r\n\r\n.stellar-modal-footer {\r\n    display: flex;\r\n    justify-content: flex-end;\r\n    gap: 10px;\r\n    padding: 15px 20px;\r\n    border-top: 1px solid #e0e0e0;\r\n    background: #f9f9f9;\r\n}\r\n\r\n.btn {\r\n    padding: 10px 20px;\r\n    border: none;\r\n    border-radius: 4px;\r\n    font-size: 14px;\r\n    font-weight: 600;\r\n    cursor: pointer;\r\n    transition: background 0.2s;\r\n}\r\n\r\n.btn-secondary {\r\n    background: #6c757d;\r\n    color: white;\r\n}\r\n\r\n.btn-secondary:hover {\r\n    background: #5a6268;\r\n}\r\n\r\n.btn-primary {\r\n    background: #007cba;\r\n    color: white;\r\n}\r\n\r\n.btn-primary:hover {\r\n    background: #005a87;\r\n}\r\n\r\n.btn-primary:disabled {\r\n    background: #ccc;\r\n    cursor: not-allowed;\r\n}\r\n\r\n@media (max-width: 600px) {\r\n    .stellar-modal-content {\r\n        width: 95%;\r\n        max-height: 95vh;\r\n    }\r\n\r\n    .stellar-modal-header,\r\n    .stellar-modal-body,\r\n    .stellar-modal-footer {\r\n        padding: 15px;\r\n    }\r\n}\r\n<\/style>\r\n\r\n<script>\r\n(function() {\r\n    const form = document.getElementById('stellar-payment-form');\r\n    const modal = document.getElementById('stellar-signing-modal');\r\n    const modalClose = document.querySelector('.stellar-modal-close');\r\n    const modalOverlay = document.querySelector('.stellar-modal-overlay');\r\n    const modalCancel = document.getElementById('modal-cancel');\r\n    const modalSign = document.getElementById('modal-sign');\r\n    const modalError = document.getElementById('modal-error');\r\n    const modalSecretKey = document.getElementById('modal-secret-key');\r\n\r\n    if (!form || !modal) return;\r\n\r\n    let currentAmount = 0;\r\n    let currentNonce = '';\r\n\r\n    \/\/ Form submit - show modal\r\n    form.addEventListener('submit', function(e) {\r\n        e.preventDefault();\r\n\r\n        const amount = document.getElementById('stellar_payment_amount').value;\r\n        const nonce = document.querySelector('[name=\"stellar_payment_nonce_field\"]').value;\r\n\r\n        if (!amount || parseFloat(amount) <= 0) {\r\n            showStatus('Amount must be greater than 0', 'error');\r\n            return;\r\n        }\r\n\r\n        \/\/ Store values\r\n        currentAmount = amount;\r\n        currentNonce = nonce;\r\n\r\n        \/\/ Update modal with transaction details\r\n        document.getElementById('modal-amount').textContent = amount;\r\n        document.getElementById('modal-network').textContent = 'Mainnet';\r\n\r\n        \/\/ Clear previous inputs and errors\r\n        modalSecretKey.value = '';\r\n        modalError.style.display = 'none';\r\n\r\n        \/\/ Show modal\r\n        modal.style.display = 'flex';\r\n        modalSecretKey.focus();\r\n    });\r\n\r\n    \/\/ Close modal handlers\r\n    function closeModal() {\r\n        modal.style.display = 'none';\r\n        modalSecretKey.value = '';\r\n        modalError.style.display = 'none';\r\n    }\r\n\r\n    modalClose.addEventListener('click', closeModal);\r\n    modalOverlay.addEventListener('click', closeModal);\r\n    modalCancel.addEventListener('click', closeModal);\r\n\r\n    \/\/ Handle Enter key in secret key input\r\n    modalSecretKey.addEventListener('keypress', function(e) {\r\n        if (e.key === 'Enter') {\r\n            e.preventDefault();\r\n            modalSign.click();\r\n        }\r\n    });\r\n\r\n    \/\/ Sign & Send button\r\n    modalSign.addEventListener('click', function() {\r\n        const secretKey = modalSecretKey.value.trim();\r\n\r\n        \/\/ Clear previous errors\r\n        modalError.style.display = 'none';\r\n\r\n        \/\/ Validate secret key\r\n        if (!secretKey) {\r\n            showModalError('Please enter your secret key');\r\n            return;\r\n        }\r\n\r\n        if (!\/^S[A-Z2-7]{55}$\/.test(secretKey)) {\r\n            showModalError('Invalid secret key format (must start with S and be 56 characters)');\r\n            return;\r\n        }\r\n\r\n        \/\/ Disable button and show spinner\r\n        const spinner = modalSign.querySelector('.spinner');\r\n        const buttonText = modalSign.querySelector('.button-text');\r\n        modalSign.disabled = true;\r\n        spinner.style.display = 'inline-block';\r\n        buttonText.textContent = 'Processing...';\r\n\r\n        \/\/ Process payment\r\n        processPayment(secretKey, currentAmount, currentNonce)\r\n            .then(data => {\r\n                if (data.success) {\r\n                    closeModal();\r\n                    showStatus('Payment sent successfully! Transaction: ' + data.data.tx_hash, 'success');\r\n\r\n                    \/\/ Reset form\r\n                    form.reset();\r\n                } else {\r\n                    showModalError('Payment failed: ' + (data.data || 'Unknown error'));\r\n                    modalSign.disabled = false;\r\n                    spinner.style.display = 'none';\r\n                    buttonText.textContent = 'Sign & Send';\r\n                }\r\n            })\r\n            .catch(error => {\r\n                showModalError('Error: ' + error.message);\r\n                modalSign.disabled = false;\r\n                spinner.style.display = 'none';\r\n                buttonText.textContent = 'Sign & Send';\r\n            });\r\n    });\r\n\r\n    async function processPayment(secretKey, amount, nonce) {\r\n        console.log('\ud83d\ude80 Starting payment transaction...');\r\n\r\n        try {\r\n            \/\/ Verify Stellar SDK is loaded\r\n            if (!window.StellarSdk) {\r\n                throw new Error('Stellar SDK not loaded. Please refresh the page.');\r\n            }\r\n\r\n            const StellarSdk = window.StellarSdk;\r\n\r\n            \/\/ Verify configuration\r\n            if (!stellarConfig.treasuryAddress) {\r\n                throw new Error('Treasury address not configured. Please contact site administrator.');\r\n            }\r\n\r\n            console.log('\ud83d\udcb0 Payment details:', {\r\n                amount: amount,\r\n                destination: stellarConfig.treasuryAddress.substring(0, 8) + '...',\r\n                network: stellarConfig.network\r\n            });\r\n\r\n            \/\/ Test Horizon connectivity\r\n            try {\r\n                const testResponse = await fetch(stellarConfig.horizonUrl);\r\n                if (!testResponse.ok) {\r\n                    throw new Error(`Horizon server not accessible: ${testResponse.status}`);\r\n                }\r\n                console.log('\u2705 Horizon server reachable');\r\n            } catch (error) {\r\n                throw new Error(`Cannot connect to Horizon: ${error.message}`);\r\n            }\r\n\r\n            \/\/ Create server and keypair\r\n            const server = new StellarSdk.Horizon.Server(stellarConfig.horizonUrl);\r\n            const networkPassphrase = StellarSdk.Networks.PUBLIC;\r\n\r\n            console.log('\ud83d\udd11 Creating keypair from secret...');\r\n            const keypair = StellarSdk.Keypair.fromSecret(secretKey);\r\n            const publicKey = keypair.publicKey();\r\n\r\n            console.log('\ud83d\udce1 Loading account:', publicKey.substring(0, 8) + '...');\r\n            const account = await server.loadAccount(publicKey);\r\n\r\n            \/\/ Build transaction\r\n            console.log('\ud83c\udfd7\ufe0f Building transaction...');\r\n            const transaction = new StellarSdk.TransactionBuilder(account, {\r\n                fee: StellarSdk.BASE_FEE,\r\n                networkPassphrase: networkPassphrase,\r\n            })\r\n            .addOperation(StellarSdk.Operation.payment({\r\n                destination: stellarConfig.treasuryAddress,\r\n                asset: StellarSdk.Asset.native(),\r\n                amount: amount.toString()\r\n            }))\r\n            .setTimeout(180)\r\n            .build();\r\n\r\n            console.log('\u270d\ufe0f Signing transaction...');\r\n            transaction.sign(keypair);\r\n\r\n            console.log('\ud83d\udce4 Submitting transaction to Horizon...');\r\n            let result;\r\n            try {\r\n                result = await server.submitTransaction(transaction);\r\n                console.log('\u2705 Transaction submitted successfully:', result.hash);\r\n            } catch (error) {\r\n                console.error('\u274c Transaction submission failed:', error);\r\n\r\n                \/\/ Parse Horizon error response\r\n                if (error.response && error.response.data) {\r\n                    const errorData = error.response.data;\r\n                    if (errorData.extras && errorData.extras.result_codes) {\r\n                        const codes = errorData.extras.result_codes;\r\n                        throw new Error(`Transaction failed: ${codes.transaction || JSON.stringify(codes)}`);\r\n                    }\r\n                }\r\n                throw new Error(`Transaction failed: ${error.message}`);\r\n            }\r\n\r\n            \/\/ Return success in WordPress-compatible format\r\n            return {\r\n                success: true,\r\n                data: {\r\n                    tx_hash: result.hash,\r\n                    ledger: result.ledger,\r\n                    source_account: publicKey\r\n                }\r\n            };\r\n\r\n        } catch (error) {\r\n            console.error('\ud83d\udd25 Payment error:', error);\r\n            return {\r\n                success: false,\r\n                data: error.message\r\n            };\r\n        }\r\n    }\r\n\r\n    function showModalError(message) {\r\n        modalError.textContent = message;\r\n        modalError.style.display = 'block';\r\n    }\r\n\r\n    function showStatus(message, type) {\r\n        const statusEl = document.getElementById('stellar-payment-status');\r\n        statusEl.textContent = message;\r\n        statusEl.className = 'stellar-payment-status ' + type;\r\n        statusEl.style.display = 'block';\r\n\r\n        if (type === 'error') {\r\n            setTimeout(() => {\r\n                statusEl.style.display = 'none';\r\n            }, 5000);\r\n        }\r\n    }\r\n\r\n    \/\/ Close modal on Escape key\r\n    document.addEventListener('keydown', function(e) {\r\n        if (e.key === 'Escape' && modal.style.display === 'flex') {\r\n            closeModal();\r\n        }\r\n    });\r\n})();\r\n<\/script>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-313","page","type-page","status-publish","hentry"],"blocksy_meta":[],"_links":{"self":[{"href":"https:\/\/stellardns.io\/index.php?rest_route=\/wp\/v2\/pages\/313","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/stellardns.io\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/stellardns.io\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/stellardns.io\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/stellardns.io\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=313"}],"version-history":[{"count":2,"href":"https:\/\/stellardns.io\/index.php?rest_route=\/wp\/v2\/pages\/313\/revisions"}],"predecessor-version":[{"id":328,"href":"https:\/\/stellardns.io\/index.php?rest_route=\/wp\/v2\/pages\/313\/revisions\/328"}],"wp:attachment":[{"href":"https:\/\/stellardns.io\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=313"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}