Former CIA Director
John Brennan arrives for a meeting at the Capitol in Washington, May 21, 2019. (AP Photo/J. Scott Applewhite, File) 2026-04-18T00:23:16Z WASHINGTON (AP) — A lead prosecutor in the
John Brennan investigation has been removed from the case after expressing concerns to
Justice Department officials about the legal strength of a potential criminal prosecution of the former CIA director, a person familiar with the matter said Friday.
Maria Medetis Long told defense lawyers involved in the investigation that she was no longer participating in the Brennan investigation. Her departure from the investigation came after she conveyed doubt that there was sufficient evidence for a criminal case against Brennan, said the person, who spoke on condition of anonymity to
The Associated Press to discuss internal
Justice Department conversations. The
Justice Department did not dispute that Medetis Long was no longer part of the investigation but also did not elaborate on the circumstances of her departure. The department said in a statement that “as a matter of routine practice, attorneys are moved around on cases so offices can most effectively allocate resources. It is completely healthy and normal to change members of legal teams.” freestar.queue.push(function () { window.fsAdCount = window.fsAdCount + 1 || 0; let customChannel = '/dynamic_' + fsAdCount; let adList = document.querySelectorAll(".fs-feed-ad") let thisAd = adList[fsAdCount]; let randId = Math.random().toString(36).slice(2); thisAd.id = randId; let thisPlacement = fsAdCount == 0 ? "apnews_story_feed" : "apnews_story_feed_dynamic"; freestar.newAdSlots({ placementName: thisPlacement, slotId: randId }, customChannel); }); CNN first reported Medetis Long’s departure from the investigation. She referred a request for comment to a spokesperson for her office, who did not immediately provide a statement. Medetis Long heads the national security section at the
U.S. Attorney’s office for the Southern District of Florida, which for months has been scrutinizing Brennan in connection with one of President
Donald Trump’s chief grievances — the U.S. government’s years-old investigation into potential ties between
Russia and Trump’s 2016 campaign for the White House. /* Desktop-first: fully collapse by default */ #ap-readmore-embed { display: none; margin: 0; padding: 0; height: 0; min-height: 0; overflow: hidden; text-align: center; position: relative; z-index: 2; } /* Only show on mobile */ @media (max-width: 767px) { #ap-readmore-embed { display: block; margin: 28px 0; height: auto; overflow: visible; } } #ap-readmore-embed .ap-readmore-btn { appearance: none; -webkit-appearance: none; border: 0; background: #000; color: #fff; cursor: pointer; display: inline-flex; align-items: center; justify-content: center; gap: 10px; padding: 14px 22px; border-radius: 999px; font-family: inherit, "AP Sans", -apple-system, BlinkMacSystemFont, "Helvetica Neue", Arial, sans-serif; font-weight: 700; font-size: 16px; letter-spacing: 0.2px; line-height: 1; box-shadow: 0 10px 18px rgba(0,0,0,0.12); transition: transform 120ms ease, box-shadow 120ms ease, opacity 120ms ease; touch-action: manipulation; -webkit-tap-highlight-color: transparent; position: relative; z-index: 3; } #ap-readmore-embed .ap-readmore-btn:hover { transform: translateY(-1px); box-shadow: 0 14px 22px rgba(0,0,0,0.16); } #ap-readmore-embed .ap-readmore-btn:active { transform: translateY(0); box-shadow: 0 10px 18px rgba(0,0,0,0.12); opacity: 0.95; } #ap-readmore-embed .ap-readmore-btn:focus-visible { outline: 3px solid rgba(228, 0, 43, 0.35); outline-offset: 3px; } #ap-readmore-embed .ap-readmore-icon { width: 10px; height: 10px; border-right: 2px solid currentColor; border-bottom: 2px solid currentColor; transform: rotate(45deg); margin-top: -2px; } #ap-readmore-embed .ap-readmore-fade { display: none; height: 48px; margin-top: -48px; pointer-events: none; background: linear-gradient(to bottom, rgba(255,255,255,0), rgba(255,255,255,1)); } Read More (function () { var APRM_EMBED_ID = "ap-readmore-embed"; var APRM_MOBILE_MQ = "(max-width: 767px)"; function APRM_onReady(fn) { if (document.readyState === "loading") { document.addEventListener("DOMContentLoaded", fn); } else { fn(); } } APRM_onReady(function () { var APRM_embedEl = document.getElementById(APRM_EMBED_ID); if (!APRM_embedEl) return; // 🚨 DESKTOP: remove entire module wrapper and bail early if (!window.matchMedia(APRM_MOBILE_MQ).matches) { var APRM_rootModule = APRM_embedEl.closest(".HTMLModuleEnhancement") || APRM_embedEl.closest(".HtmlModule"); if (APRM_rootModule && APRM_rootModule.parentNode) { APRM_rootModule.parentNode.removeChild(APRM_rootModule); } else if (APRM_embedEl.parentNode) { APRM_embedEl.parentNode.removeChild(APRM_embedEl); } return; // stop the rest of the script from running } }); })(); (function () { var EMBED_ID = "ap-readmore-embed"; var BTN_ID = "apReadMoreBtn"; var FADE_ID = "apReadMoreFade"; var STOP_SELECTOR = ".Page-below"; var SIGN_IN_GATE_SELECTOR = ".sign-in-gate-content"; var HIDDEN_ATTR = "data-ap-readmore-hidden"; var MOBILE_MQ = "(max-width: 767px)"; function ready(fn) { if (document.readyState === "loading") { document.addEventListener("DOMContentLoaded", fn); } else { fn(); } } function isElementNode(n) { return n && n.nodeType === 1; } function cancelEvent(e) { if (!e) return; if (typeof e.preventDefault === "function") e.preventDefault(); if (typeof e.stopPropagation === "function") e.stopPropagation(); if (typeof e.stopImmediatePropagation === "function") e.stopImmediatePropagation(); e.cancelBubble = true; e.returnValue = false; } function collapseDesktopEmbed(embed) { if (!embed) return true; if (!window.matchMedia(MOBILE_MQ).matches) { var maybeWrappers = [ embed.parentElement, embed.closest(".html-embed"), embed.closest("[data-type='htmlembed']"), embed.closest("[class*='embed']"), embed.closest("[class*='Embed']") ].filter(Boolean); embed.style.display = "none"; embed.style.margin = "0"; embed.style.padding = "0"; embed.style.height = "0"; embed.style.minHeight = "0"; embed.style.overflow = "hidden"; maybeWrappers.forEach(function (el) { el.style.margin = "0"; el.style.padding = "0"; el.style.height = "0"; el.style.minHeight = "0"; el.style.overflow = "hidden"; }); if (embed.parentNode) { embed.parentNode.removeChild(embed); } return true; } return false; } ready(function () { var embed = document.getElementById(EMBED_ID); var btn = document.getElementById(BTN_ID); var fade = document.getElementById(FADE_ID); if (!embed || !btn) return; if (collapseDesktopEmbed(embed)) return; var signInGate = document.querySelector(SIGN_IN_GATE_SELECTOR); if (signInGate) { embed.innerHTML = ""; return; } // — Analytics: impression when embed enters viewport — if ("IntersectionObserver" in window) { var io = new IntersectionObserver(function (entries, observer) { if (entries[0].isIntersecting) { window.dataLayer = window.dataLayer || []; window.dataLayer.push({ event: "ap_readmore_impression" }); observer.disconnect(); } }, { threshold: 0 }); io.observe(btn); } var stopEl = document.querySelector(STOP_SELECTOR); if (!stopEl) return; var rootCandidates = [ embed.closest(".Page"), embed.closest("article"), embed.closest("main"), document.body ].filter(Boolean); var root = rootCandidates.find(function (c) { return c.contains(stopEl); }) || document.body; var all = root.getElementsByTagName("*"); var hidden = []; for (var i = 0; i Brennan served as CIA director under President Barack Obama and was in the position when the intelligence community published a detailed assessment of Russian interference in the 2016 presidential election. The
Justice Department last year received a referral from Rep. Jim Jordan, the Republican chairman of the House Judiciary Committee, asserting that Brennan had given false testimony about the preparation of that assessment — a claim Brennan and his lawyers have vigorously denied. freestar.queue.push(function () { window.fsAdCount = window.fsAdCount + 1 || 0; let customChannel = '/dynamic_' + fsAdCount; let adList = document.querySelectorAll(".fs-feed-ad") let thisAd = adList[fsAdCount]; let randId = Math.random().toString(36).slice(2); thisAd.id = randId; let thisPlacement = fsAdCount == 0 ? "apnews_story_feed" : "apnews_story_feed_dynamic"; freestar.newAdSlots({ placementName: thisPlacement, slotId: randId }, customChannel); }); Investigators who in recent months have issued a flurry of subpoenas have been preparing for additional interviews in the probe, though it remains unclear whether any charges will be brought or what impact Medetis Long’s departure will have on the case or on witnesses’ willingness to cooperate. Trump this month replaced Pam Bondi as his attorney general, frustrated by the lack of progress in criminal investigations against political opponents like Brennan. Her deputy, Todd Blanche, is now acting attorney general and has said that Trump has the right and duty to be involved in seeking investigations against people he has had “issues with.” Sign up for Morning Wire: Our flagship newsletter breaks down the biggest headlines of the day. Email address Sign up By checking this box, you agree to AP's Terms of Use and acknowledge that AP may collect and use your data pursuant to our Privacy Policy . [data-ap-newsletter-embed-nlmw25] { display: flex; flex-direction: column; align-items: flex-start; gap: 16px; width: 100%; max-width: 720px; min-width: 0; padding: 16px 16px 16px 16px; box-sizing: border-box; border-radius: 8px; border: 1px solid #E6E6E7; background: #F2F2F2; box-shadow: 0 4px 4px 4px rgba(102, 102, 102, 0.40); font-family: "AP Var", system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, sans-serif; color: #000; container-type: inline-size; container-name: ap-nl-nlmw25; margin-left: auto; margin-right: auto; align-self: center; justify-self: center; } [data-ap-newsletter-embed-nlmw25] .ap-newsletter-accent-nlmw25 { width: 48px; height: 6px; } [data-ap-newsletter-embed-nlmw25] .ap-newsletter-title-nlmw25 { align-self: stretch; color: #000; font-family: "AP Var", system-ui, sans-serif; font-size: 18px; font-style: normal; font-weight: 400; line-height: 150%; margin: 0; } [data-ap-newsletter-embed-nlmw25] .ap-newsletter-title-nlmw25 strong { font-weight: 700; line-height: 130%; } [data-ap-newsletter-embed-nlmw25] .ap-newsletter-form-nlmw25 { margin: 0; display: flex; flex-direction: column; gap: 16px; width: 100%; } [data-ap-newsletter-embed-nlmw25] .ap-newsletter-row-nlmw25 { display: flex; align-items: center; gap: 12px; width: 100%; flex-wrap: nowrap; } [data-ap-newsletter-embed-nlmw25] .ap-newsletter-input-nlmw25 { width: 100%; min-width: 0; border: 1px solid #E6E6E7; border-radius: 10px; padding: 11px 12px; font-size: 14px; line-height: 1.2; outline: none; box-sizing: border-box; background: #fff; color: #000; } [data-ap-newsletter-embed-nlmw25] .ap-newsletter-input-wrapper-nlmw25 { display: flex; flex-direction: column; align-items: flex-start; gap: 8px; flex: 1 0 0; } [data-ap-newsletter-embed-nlmw25] .ap-newsletter-input-nlmw25:focus { border-color: rgba(0,0,0,.35); box-shadow: 0 0 0 3px rgba(255, 50, 46, 0.18); } [data-ap-newsletter-embed-nlmw25] .ap-newsletter-button-nlmw25 { display: flex; justify-content: center; align-items: center; height: 40px; max-height: 40px; padding: 8px 16px; border-radius: 24px; background: #191919; color: #ffffff; border: none; font-size: 14px; font-weight: 600; line-height: 1; cursor: pointer; white-space: nowrap; transition: background 150ms ease, transform 120ms ease; flex: 0 0 auto; } [data-ap-newsletter-embed-nlmw25] .ap-newsletter-button-nlmw25:hover { background: #000000; } [data-ap-newsletter-embed-nlmw25] .ap-newsletter-button-nlmw25:active { transform: scale(0.98); } [data-ap-newsletter-embed-nlmw25] .ap-newsletter-disclaimer-nlmw25 { display: flex; flex-direction: column; align-items: flex-start; gap: 8px; align-self: stretch; background: rgba(255, 255, 255, 0); background-blend-mode: multiply; margin: 0; } [data-ap-newsletter-embed-nlmw25] .ap-newsletter-check-nlmw25 { display: flex; gap: 8px; align-items: flex-start; user-select: none; cursor: pointer; } [data-ap-newsletter-embed-nlmw25] .ap-newsletter-checkbox-nlmw25 { margin-top: 2px; width: 16px; height: 16px; accent-color: var(--ap-accent); flex: 0 0 auto; } [data-ap-newsletter-embed-nlmw25] .ap-newsletter-checktext-nlmw25 { font-size: 12px; line-height: 1.35; color: var(--ap-muted); } [data-ap-newsletter-embed-nlmw25] a { color: var(--ap-text); text-decoration: underline; text-underline-offset: 2px; } [data-ap-newsletter-embed-nlmw25] a:hover { color: var(--ap-accent); } [data-ap-newsletter-embed-nlmw25] .ap-newsletter-messages-nlmw25 { margin: 0; } [data-ap-newsletter-embed-nlmw25] .ap-newsletter-error-nlmw25:empty, [data-ap-newsletter-embed-nlmw25] .ap-newsletter-help-nlmw25:empty { display: none; } [data-ap-newsletter-embed-nlmw25] .ap-newsletter-help-nlmw25 { margin: 0; } [data-ap-newsletter-embed-nlmw25] .ap-newsletter-messages-nlmw25:has(.ap-newsletter-error-nlmw25:empty):has(.ap-newsletter-help-nlmw25:empty) { display: none; } [data-ap-newsletter-embed-nlmw25] .ap-newsletter-error-nlmw25 { margin: 0; font-size: 12px; line-height: 1.35; color: var(--ap-error); min-height: 1.2em; } [data-ap-newsletter-embed-nlmw25] .ap-newsletter-help-nlmw25 { margin: 6px 0 0; font-size: 12px; line-height: 1.35; color: var(--ap-muted); } [data-ap-newsletter-embed-nlmw25].is-submitted-nlmw25 .ap-newsletter-input-nlmw25 { background: rgba(0,0,0,.04); border-color: rgba(0,0,0,.10); color: rgba(0,0,0,.70); cursor: default; } [data-ap-newsletter-embed-nlmw25].is-submitted-nlmw25 .ap-newsletter-button-nlmw25 { display: none; } [data-ap-newsletter-embed-nlmw25].is-submitted-nlmw25 .ap-newsletter-disclaimer-nlmw25 { display: none; } [data-ap-newsletter-embed-nlmw25] .ap-newsletter-bot-field-nlmw25 { position: absolute !important; left: -9999px; top: -9999px; width: 1px; height: 1px; opacity: 0; pointer-events: none; } [data-ap-newsletter-embed-nlmw25] .ap-sr-only-nlmw25 { position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; } @container ap-nl-nlmw25 (max-width: 420px) { [data-ap-newsletter-embed-nlmw25] { max-width: 350px; padding: 16px; gap: 12px; } [data-ap-newsletter-embed-nlmw25] .ap-newsletter-form-nlmw25 { gap: 12px; } [data-ap-newsletter-embed-nlmw25] .ap-newsletter-row-nlmw25 { flex-direction: column; align-items: stretch; gap: 12px; } [data-ap-newsletter-embed-nlmw25] .ap-newsletter-button-nlmw25 { width: 100%; } [data-ap-newsletter-embed-nlmw25] .ap-newsletter-input-wrapper-nlmw25, [data-ap-newsletter-embed-nlmw25] .ap-newsletter-input-nlmw25 { width: 100%; } } @media (max-width: 420px) { [data-ap-newsletter-embed-nlmw25] { max-width: 350px; padding: 16px; gap: 12px; } [data-ap-newsletter-embed-nlmw25] .ap-newsletter-form-nlmw25 { gap: 12px; } [data-ap-newsletter-embed-nlmw25] .ap-newsletter-row-nlmw25 { flex-direction: column; align-items: stretch; gap: 12px; } [data-ap-newsletter-embed-nlmw25] .ap-newsletter-button-nlmw25 { width: 100%; } [data-ap-newsletter-embed-nlmw25] .ap-newsletter-input-wrapper-nlmw25, [data-ap-newsletter-embed-nlmw25] .ap-newsletter-input-nlmw25 { width: 100%; } } const NL_DEFAULT_CONFIG_NLMW25 = { apiUrl: '/api/newsletter/signup', defaultNewsletterList: ['Morning Wire Subscribers'], recaptchaSiteKey: '6Lf06WQrAAAAABB9Ms3Gru2SFLSxUYrLqP5YLDMn', recaptchaHeader: 'X-ReCaptcha-Token', /* UTM params to append to the page URL used as the request referrer. This does NOT modify the subscription payload. */ referrerUtmParams: { utm_source: 'embed' }, messages: { invalidEmail: 'Please use a valid email address.', disclaimerRequired: 'Please check disclaimer before proceeding.', invalidBoth: 'Please provide a valid email address, and check disclaimer.', genericError: 'Something went wrong. Please try again later.', botBlocked: 'Please try again.', recaptchaLoadFail: 'Failed to load reCAPTCHA. Please refresh the page and try again.', recaptchaRequired: 'reCAPTCHA verification is required. Please ensure reCAPTCHA is loaded on this page.', recaptchaFailed: 'reCAPTCHA verification failed. Please refresh the page and try again.', verificationFailed: 'Verification failed. Please try again.' } }; (function (nlConfigNLMW25) { const nlEmailRegexNLMW25 = /^[^\s@]+@[^\s@]+\.[^\s@]{2,}$/; const nlRecaptchaCheckIntervalNLMW25 = 100; const nlRecaptchaMaxAttemptsNLMW25 = 50; function nlIsValidEmailNLMW25(email) { return nlEmailRegexNLMW25.test(String(email || '').trim()); } function nlBuildReferrerUrlNLMW25(utmParams) { try { const url = new URL(window.location.href); Object.entries(utmParams || {}).forEach(([key, value]) => { if (value !== undefined && value !== null && value !== '') { url.searchParams.set(key, value); } }); return url.toString(); } catch (err) { console.warn('Unable to build referrer URL with UTM params:', err); return window.location.href; } } function nlLoadRecaptchaScriptNLMW25(siteKey, callback) { if (typeof window.grecaptcha !== 'undefined') { callback && callback(); return; } const existingScript = document.querySelector('script[src*="recaptcha/api.js"]'); if (existingScript) { const checkInterval = setInterval(() => { if (typeof window.grecaptcha !== 'undefined') { clearInterval(checkInterval); callback && callback(); } }, nlRecaptchaCheckIntervalNLMW25); return; } const script = document.createElement('script'); script.src = `https://www.google.com/recaptcha/api.js?render=${encodeURIComponent(siteKey)}`; script.async = true; script.defer = true; script.onload = () => callback && callback(); script.onerror = () => { console.error('Failed to load reCAPTCHA script'); callback && callback(false); }; document.head.appendChild(script); } function nlWaitForRecaptchaNLMW25(callback, maxAttempts = nlRecaptchaMaxAttemptsNLMW25) { let attempts = 0; const checkRecaptcha = () => { attempts++; if ( typeof window.grecaptcha !== 'undefined' && typeof window.grecaptcha.execute === 'function' ) { callback(true); } else if (attempts token && token.length > 0 ? token : null) .catch(error => { const errorMsg = error?.message || String(error); if ( errorMsg.includes('No reCAPTCHA clients') || errorMsg.includes('not initialized') || errorMsg.includes('Invalid site key') ) { throw new Error('recaptcha_failed'); } throw error; }); } const nlEmbedsNLMW25 = document.querySelectorAll('[data-ap-newsletter-embed-nlmw25]'); nlEmbedsNLMW25.forEach((rootNLMW25, idxNLMW25) => { const formNLMW25 = rootNLMW25.querySelector('.ap-newsletter-form-nlmw25'); const emailInputNLMW25 = rootNLMW25.querySelector('.ap-newsletter-input-nlmw25'); const checkboxNLMW25 = rootNLMW25.querySelector('.ap-newsletter-checkbox-nlmw25'); const errorElNLMW25 = rootNLMW25.querySelector('.ap-newsletter-error-nlmw25'); const helpElNLMW25 = rootNLMW25.querySelector('.ap-newsletter-help-nlmw25'); const botFieldNLMW25 = rootNLMW25.querySelector('.ap-newsletter-bot-field-nlmw25'); const recaptchaDivNLMW25 = rootNLMW25.querySelector('.ap-newsletter-recaptcha-nlmw25'); let nlIsSubmittingNLMW25 = false; const newsletterListNLMW25 = nlConfigNLMW25.defaultNewsletterList; const recaptchaSiteKeyNLMW25 = nlConfigNLMW25.recaptchaSiteKey; const requestReferrerNLMW25 = nlBuildReferrerUrlNLMW25(nlConfigNLMW25.referrerUtmParams); const emailIdNLMW25 = `nl-email-nlmw25-${idxNLMW25}`; const helpIdNLMW25 = `nl-help-nlmw25-${idxNLMW25}`; const errIdNLMW25 = `nl-error-nlmw25-${idxNLMW25}`; const recaptchaIdNLMW25 = `recaptcha-nlmw25-${idxNLMW25}`; emailInputNLMW25.id = emailIdNLMW25; helpElNLMW25.id = helpIdNLMW25; errorElNLMW25.id = errIdNLMW25; if (recaptchaDivNLMW25) { recaptchaDivNLMW25.id = recaptchaIdNLMW25; if (recaptchaSiteKeyNLMW25) { recaptchaDivNLMW25.setAttribute('data-sitekey', recaptchaSiteKeyNLMW25); } } emailInputNLMW25.setAttribute('aria-describedby', `${helpIdNLMW25} ${errIdNLMW25}`); const nlSetErrorNLMW25 = (msg) => { errorElNLMW25.textContent = msg || ''; errorElNLMW25.style.display = msg ? 'block' : 'none'; }; const nlHideErrorNLMW25 = () => nlSetErrorNLMW25(''); const nlSetSubmittedNLMW25 = () => { rootNLMW25.classList.add('is-submitted-nlmw25'); emailInputNLMW25.value = 'SUBMITTED'; emailInputNLMW25.style.fontWeight = 'bold'; emailInputNLMW25.setAttribute('readonly', 'readonly'); emailInputNLMW25.setAttribute('aria-invalid', 'false'); nlHideErrorNLMW25(); }; const nlSubscribeNLMW25 = (tokenNLMW25) => { if (nlIsSubmittingNLMW25) return; if (botFieldNLMW25?.value) { console.warn('Bot field filled --', botFieldNLMW25.value); nlSetErrorNLMW25(nlConfigNLMW25.messages.botBlocked); return; } const emailNLMW25 = String(emailInputNLMW25.value || '').trim(); const emailOkNLMW25 = nlIsValidEmailNLMW25(emailNLMW25); const disclaimerOkNLMW25 = checkboxNLMW25.checked; if (!emailOkNLMW25 && !disclaimerOkNLMW25) { nlSetErrorNLMW25(nlConfigNLMW25.messages.invalidBoth); emailInputNLMW25.setAttribute('aria-invalid', 'true'); emailInputNLMW25.focus(); return; } if (!emailOkNLMW25) { nlSetErrorNLMW25(nlConfigNLMW25.messages.invalidEmail); emailInputNLMW25.setAttribute('aria-invalid', 'true'); emailInputNLMW25.focus(); return; } if (!disclaimerOkNLMW25) { nlSetErrorNLMW25(nlConfigNLMW25.messages.disclaimerRequired); checkboxNLMW25.focus(); return; } nlIsSubmittingNLMW25 = true; const headersNLMW25 = { 'Content-Type': 'application/json' }; if (tokenNLMW25) { headersNLMW25[nlConfigNLMW25.recaptchaHeader] = tokenNLMW25; } fetch(nlConfigNLMW25.apiUrl, { method: 'POST', headers: headersNLMW25, body: JSON.stringify({ emailId: emailNLMW25, newsLetterListToSubscribe: newsletterListNLMW25 }), /* This is the key change: send the current page URL + UTM params as the referrer. Example: https://.../article/... ?utm_source=embed */ referrer: requestReferrerNLMW25, referrerPolicy: 'strict-origin-when-cross-origin' }) .then(response => response.json() .then(data => ({ status: response.status, data })) .catch(() => ({ status: response.status, data: null })) ) .then(result => { nlIsSubmittingNLMW25 = false; const hasVerificationErrorNLMW25 = result.data && ( result.data.message?.includes('Verification Failed') || result.data.error?.includes('Verification Failed') ); if (hasVerificationErrorNLMW25) { nlSetErrorNLMW25(nlConfigNLMW25.messages.verificationFailed); return; } if (result.status === 200) { if (typeof window.NLSignup === 'function') { try { window.NLSignup(emailNLMW25); } catch (err) {} } window.dispatchEvent(new CustomEvent('nl:newsletterSignup:nlmw25', { detail: { email: emailNLMW25, source: 'Morning Wire Embed', newsletters: newsletterListNLMW25, referrer: requestReferrerNLMW25 } })); nlSetSubmittedNLMW25(); } else { const errorMsgNLMW25 = result.data?.message || result.data?.error || nlConfigNLMW25.messages.genericError; nlSetErrorNLMW25(errorMsgNLMW25); } }) .catch(error => { nlIsSubmittingNLMW25 = false; console.error('Newsletter subscription error:', error); nlSetErrorNLMW25(nlConfigNLMW25.messages.genericError); }); }; const nlAttemptRecaptchaNLMW25 = () => { if (!recaptchaSiteKeyNLMW25) { nlWaitForRecaptchaNLMW25(isAvailable => { if (!isAvailable) { nlSetErrorNLMW25(nlConfigNLMW25.messages.recaptchaRequired); nlIsSubmittingNLMW25 = false; return; } nlExecuteRecaptchaNLMW25() .then(token => nlSubscribeNLMW25(token)) .catch(() => nlSubscribeNLMW25(null)); }); return; } nlLoadRecaptchaScriptNLMW25(recaptchaSiteKeyNLMW25, success => { if (success === false) { nlSetErrorNLMW25(nlConfigNLMW25.messages.recaptchaLoadFail); nlIsSubmittingNLMW25 = false; return; } nlWaitForRecaptchaNLMW25(isAvailable => { if (!isAvailable) { nlSetErrorNLMW25(nlConfigNLMW25.messages.recaptchaRequired); nlIsSubmittingNLMW25 = false; return; } const runExecuteNLMW25 = () => { nlExecuteRecaptchaNLMW25() .then(token => nlSubscribeNLMW25(token)) .catch(error => { if (error?.message === 'recaptcha_failed') { nlSetErrorNLMW25(nlConfigNLMW25.messages.recaptchaFailed); nlIsSubmittingNLMW25 = false; } else { console.warn('reCAPTCHA error:', error); nlSubscribeNLMW25(null); } }); }; if (typeof window.grecaptcha.ready === 'function') { window.grecaptcha.ready(runExecuteNLMW25); } else { runExecuteNLMW25(); } }); }); }; formNLMW25.addEventListener('submit', e => { e.preventDefault(); if (rootNLMW25.classList.contains('is-submitted-nlmw25') || nlIsSubmittingNLMW25) return; nlHideErrorNLMW25(); nlAttemptRecaptchaNLMW25(); }); emailInputNLMW25.addEventListener('input', () => { nlHideErrorNLMW25(); emailInputNLMW25.setAttribute('aria-invalid', 'false'); }); checkboxNLMW25.addEventListener('change', nlHideErrorNLMW25); }); })(NL_DEFAULT_CONFIG_NLMW25); Last year, Trump effectively forced out the acting U.S. attorney in the Eastern District of Virginia , Erik Siebert, after Siebert did not push forward with criminal charges against two other Trump foes, former FBI Director James Comey and New York Attorney General Letitia James. A hastily installed loyalist prosecutor, Lindsey Halligan, subsequently secured indictments against Comey and James but the cases were thrown out after a judge concluded that Halligan was unlawfully appointed. _____ Associated Press writer Alanna Durkin Richer in Washington contributed to this report. ERIC TUCKER Tucker covers national security in Washington for
The Associated Press, with a focus on the FBI and
Justice Department. twitter mailto