PageSourceSearch

https://www.carterconlon.com/about

html carterconlon.com collected 2026-10-09 23:26:05 UTC 26,575 bytes, 476 lines download raw bytes

1<!DOCTYPE html>
2<html lang="en">
3<head>
4    <meta charset="UTF-8">
5    <meta name="viewport" content="width=device-width, initial-scale=1.0">
6    <title>About | Carter Conlon</title>
7    <link rel="preconnect" href="https://fonts.googleapis.com">
8    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
9    <link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600&family=Syne:wght@400;500;600;700;800&display=swap" rel="stylesheet">
10    <link href="https://fonts.cdnfonts.com/css/d-din" rel="stylesheet">
11    
11<script src="https://unpkg.com/@phosphor-icons/[email protected]"></script>
11
12    <link rel="stylesheet" href="/static/css/style.css?v=1790700511">
13    
14    <!-- Google Analytics (GA4) -->
vendor: 68 bytes, lines 14-15
14
15    <script async src="https://www.googletagmanager.com/gtag/js?id=
15G-4NF3B6DDSF
vendor: 16 bytes, lines 15-16
15"></script>
16    
16<script>
17        
vendor: 151 bytes, lines 17-20
17window.dataLayer = window.dataLayer || [];
18        function gtag(){dataLayer.push(arguments);}
19        gtag('js', new Date());
20        gtag('config', '
20G-4NF3B6DDSF
vendor: 8 bytes, lines 20-21
20');
21    
21</script>
21
22    
23    
24</head>
25<body>
26    <!-- Header -->
27    <header class="site-header ">
28        <div class="container">
29            <a href="/" class="site-logo">Carter Conlon</a>
30            <button class="menu-toggle" onclick="document.querySelector('.nav-links').classList.toggle('open')" aria-label="Menu">
31                <span></span><span></span><span></span>
32            </button>
33            <nav class="nav-links">
34                <a href="/about" class="active">About</a>
35                <a href="/sermons" >Sermons</a>
36                <div class="nav-dropdown">
37                    <a href="/podcast" class="nav-dropdown-toggle " aria-haspopup="true">Podcast <svg width="10" height="10" viewBox="0 0 10 10" aria-hidden="true"><path d="M1 3l4 4 4-4" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/></svg></a>
38                    <div class="nav-dropdown-menu">
39                        <a href="/dailydevotionals" >Daily Devotionals</a>
40                        <a href="/podcast/a-call-to-the-nation" >A Call to the Nation</a>
41                        <a href="/podcast/sermons" >Sermons</a>
42                        
43                    </div>
44                </div>
45                <a href="/blog" >Blog</a>
46                <a href="/music" >Music</a>
47                <a href="/books" >Books</a>
48                <a href="https://pushpay.com/g/tscnyc?f%5B0%5D=Carter%20Conlon%20Compassion%20Fund" target="_blank" rel="noopener">Give</a>
49                <a href="javascript:void(0)" class="btn-subscribe" onclick="openSubscribe()">Subscribe</a>
50            </nav>
51        </div>
52    </header>
53
54    
55<div class="about-hero">
56    <div class="container">
57        <!-- Quote -->
58        <blockquote class="about-quote">
59            <p>"Prayer is the key to all that Jesus is willing to do. The day and hour demands that those who still know the mercy of Jesus Christ begin to plead for our nation. When prayer turns to a heartfelt cry for freedom and deliverance, God will hear and answer. I believe that God is willing to show His mercy to us once again, in spite of how far we have gotten away from truth as a society."</p>
60            <cite>Pastor Carter Conlon</cite>
61        </blockquote>
62    </div>
63</div>
64
65<!-- Carter Conlon Bio -->
66<section class="section reveal">
67    <div class="container">
68        <div class="about-section">
69            <div class="about-text">
70                <h2>Carter Conlon</h2>
71                <p>Carter Conlon's life has been marked by a deep commitment to prayer, a passion for spiritual renewal, and a tireless enthusiasm for sharing the gospel of Jesus Christ. Born in Quebec, Canada, Carter's journey in ministry began as a young police officer who cried out to God on May 12, 1978.</p>
72                <p>Today, Carter serves as General Overseer of Times Square Church in New York City. He joined the pastoral staff at TSC as an associate pastor in 1994 at the invitation of founding pastor David Wilkerson and became Senior Pastor from 2001 until 2020.</p>
73                <p>Carter is privileged to serve in ministry alongside his wife, Teresa Conlon, who is the President of Summit International School of Ministry. The Conlon's have three children and nine grandchildren.</p>
74            </div>
75            <div class="about-video-embed">
76                <p class="about-video-label">Carter Conlon shares his testimony</p>
77                <div class="about-video-wrapper">
78                    <iframe src="https://www.youtube.com/embed/_tUARnowbJg" allowfullscreen allow="autoplay; encrypted-media" loading="lazy"></iframe>
79                </div>
80            </div>
81        </div>
82    </div>
83</section>
84
85<!-- Times Square Church -->
86<section class="section reveal">
87    <div class="container">
88        <div class="about-section reverse">
89            <div class="about-text">
90                <h2>Times Square Church</h2>
91                <p>Founded in 1987, Times Square Church is a beacon of hope in the heart of New York City. The mission of TSC is simple: to see lives changed through the love of God and His Word.</p>
92                <p>Times Square Church was founded by Pastor David Wilkerson. Pastor David was first called to New York City in 1958 to minister to gang members and drug addicts, as told in the best-selling book The Cross and the Switchblade.</p>
93                <p>Now under the leadership of Senior Pastor Tim Dilena, the passion to pray, disciple believers, build up leaders, and care for the poor is still at the heart of Times Square Church today.</p>
94                <a href="https://www.tsc.nyc" target="_blank" rel="noopener" class="btn-outline" style="margin-top: 16px;">Visit TSC Website</a>
95            </div>
96            <div class="about-image">
97                <img src="/static/images/about_0_f2577dbfee.jpg" alt="Times Square Church interior" loading="lazy" style="width: 100%; height: 100%; object-fit: cover;">
98            </div>
99        </div>
100    </div>
101</section>
102
103<!-- It's Time To Pray -->
104<section class="section section--light reveal">
105    <div class="container">
106        <div class="about-section">
107            <div class="about-text">
108                <h2>It's Time To Pray</h2>
109                <p>In the early 2000s, God prompted Carter to call together the churches of New York City to congregate for one hour of prayer on the streets of Manhattan. As a result, for three consecutive years, Christians from all denominations assembled on Broadway, culminating in a gathering of over 50,000 people in its final year.</p>
110                <p>During this movement, the Lord placed on Carter's heart to begin a weekly worldwide prayer meeting, which today is broadcast weekly from Summit International School of Ministry, the bible school of Times Square Church. Every Wednesday, this powerful service is streamed by churches and individuals in 200+ countries and territories throughout the world.</p>
111                <p>Since its inception, the worldwide prayer meeting has received hundreds of thousands of prayer requests and witnessed innumerable answers to prayer.</p>
112                <div style="display: flex; gap: 12px; flex-wrap: wrap; margin-top: 16px;">
113                    <a href="https://www.youtube.com/playlist?list=PLI_UFfXJJvH9miaXIxnP8jHPWqElqrRcg" target="_blank" rel="noopener" class="btn-outline">Watch Latest Meeting</a>
114                    <a href="/contact" class="btn-outline">Pray for Someone</a>
115                    <a href="/contact" class="btn-outline">Send Prayer Request</a>
116                </div>
117            </div>
118            <div class="about-video-embed">
119                <p class="about-video-label">"The Call of the Shipmaster" — a sermon sharing why you and I are called to prayer</p>
120                <div class="about-video-wrapper">
121                    <iframe src="https://www.youtube.com/embed/0vpjC9cwzIk" allowfullscreen allow="autoplay; encrypted-media" loading="lazy"></iframe>
122                </div>
123            </div>
124        </div>
125    </div>
126</section>
127
128<!-- Radio -->
129
130<section class="section reveal">
131    <div class="container">
132        <div class="about-section reverse">
133            <div class="about-text">
134                <h2>Radio</h2>
135                <p>
135Beyond the pulpit, Carter's one-minute devotional, It's Time to Pray, is heard on Christian radio outlets across the nation. His half-hour radio program, A Call to the Nation, continues to expand its reach throughout the United States.</p>
136                <p>Through these platforms, he encourages believers to embrace the power of prayer in their daily lives.</p>
137                <a href="/podcast" class="btn-outline" style="margin-top: 16px;">Listen to the Podcast</a>
138            </div>
139            <div class="about-image">
140                <img src="/static/images/about_1_557490f7da.jpg" alt="Carter Conlon in the recording studio" loading="lazy" style="width: 100%; height: 100%; object-fit: cover;">
141            </div>
142        </div>
143    </div>
144</section>
145
146
147<!-- Compassion Fund -->
148<section class="section section--light reveal">
149    <div class="container">
150        <div class="about-section">
151            <div class="about-text">
152                <h2>Compassion Fund</h2>
153                <p>As an author, Carter Conlon has authored several impactful books, including The 180-Degree Christian, Fear Not, Unshakable, and his autobiographical book, It's Time to Pray. 100% of the proceeds from his writings benefit the Compassion Fund, a charitable fund through Times Square Church to help those in need.</p>
154                <a href="https://pushpay.com/g/tscnyc?f%5B0%5D=Carter%20Conlon%20Compassion%20Fund" target="_blank" rel="noopener" class="btn-outline" style="margin-top: 16px;">Give to the Compassion Fund</a>
155            </div>
156            <div class="about-image">
157                <img src="/static/images/about_2_f9f1aa6286.jpg" alt="Compassion fund outreach" loading="lazy" style="width: 100%; height: 100%; object-fit: cover;">
158            </div>
159        </div>
160    </div>
161</section>
162
163<!-- Summit International School of Ministry -->
164<section class="section reveal">
165    <div class="container">
166        <div class="about-section reverse">
167            <div class="about-text">
168                <h2>Summit International School of Ministry</h2>
169                <p>Summit International School of Ministry exists to train men and women for ministry through a transformative relationship with Jesus Christ. Summit is a ministry close to Pastor Carter's heart, and where he spends much of his time. "It is a wise generation" he explains, "that invests in light during a time of darkness". Each year, students graduate from Summit and serve in ministries and churches all over the world, making a difference wherever they go. Summit emphasizes truly knowing God, not just learning about Him.</p>
170            </div>
171            <div class="about-image">
172                <img src="/static/images/about_3_19b0601ce8.png" alt="Summit International School of Ministry campus" loading="lazy" style="width: 100%; height: 100%; object-fit: cover;">
173            </div>
174        </div>
175    </div>
176</section>
177
178<!-- David Wilkerson Quote -->
179<section class="cta-banner wilkerson-section reveal">
180    <div class="container">
181        <div class="wilkerson-layout">
182            <div class="wilkerson-image">
183                <img src="/static/images/about_4_6eb0c193cd.jpg" alt="Carter Conlon with David Wilkerson" loading="lazy">
184            </div>
185            <div class="wilkerson-quote">
186                <blockquote>
187                    "Carter Conlon is a true man of God who lives what he preaches. He has been given a special anointing of the Holy Spirit to deliver the Word of God with straightforwardness and authority yet with mercy and grace. When this man preaches, you know you have truly heard from God's throne."
188                </blockquote>
189                <p class="wilkerson-name">David Wilkerson (1931-2011)</p>
190                <p class="wilkerson-title">Founding Pastor, Times Square Church, New York</p>
191            </div>
192        </div>
193    </div>
194</section>
195
196
197    <!-- Footer -->
198    <footer class="site-footer">
199        <div class="container">
200            <div class="footer-top">
201                <div class="footer-brand">
202                    <div class="footer-logo">Carter Conlon</div>
203                    <div class="footer-phone">(212) 541-6300</div>
204                    <div class="footer-address">
205                        Times Square Church<br>
206                        1657 Broadway<br>
207                        New York, NY 10019<br>
208                        USA
209                    </div>
210                </div>
211                <nav class="footer-nav">
212                    <a href="/about">About</a>
213                    <a href="/sermons">Sermons</a>
214                    <a href="/dailydevotionals">Daily Devotionals</a>
215                    <a href="/podcast">Podcast</a>
216                    <a href="/blog">Blog</a>
217                    <a href="/music">Music</a>
218                    <a href="/books">Books</a>
219                    <a href="https://pushpay.com/g/tscnyc?f%5B0%5D=Carter%20Conlon%20Compassion%20Fund" target="_blank" rel="noopener">Give</a>
220                </nav>
221            </div>
222            <div class="footer-bottom">
223                <span class="copyright">&copy; Carter Conlon 2026. All Rights Reserved. <a href="/privacy">Privacy</a> &middot; <a href="/terms">Terms</a></span>
224                <div class="social-links">
225                    <a href="https://www.facebook.com/carterconlon" class="fb" target="_blank" rel="noopener" aria-label="Facebook">
226                        <svg width="18" height="18" viewBox="0 0 24 24" fill="currentColor"><path d="M24 12.073c0-6.627-5.373-12-12-12s-12 5.373-12 12c0 5.99 4.388 10.954 10.125 11.854v-8.385h-3.047v-3.47h3.047v-2.642c0-3.007 1.792-4.669 4.533-4.669 1.312 0 2.686.235 2.686.235v2.953h-1.514c-1.491 0-1.956.925-1.956 1.874v2.25h3.328l-.532 3.47h-2.796v8.385c5.738-.9 10.126-5.864 10.126-11.854z"/></svg>
227                    </a>
228                    <a href="https://twitter.com/carterconlon" class="tw" target="_blank" rel="noopener" aria-label="X">
229                        <svg width="16" height="16" viewBox="0 0 24 24" fill="currentColor"><path d="M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z"/></svg>
230                    </a>
231                    <a href="https://www.youtube.com/@CarterConlonOfficial" class="yt" target="_blank" rel="noopener" aria-label="YouTube">
232                        <svg width="18" height="18" viewBox="0 0 24 24" fill="currentColor"><path d="M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z"/></svg>
233                    </a>
234                </div>
235            </div>
236        </div>
237    </footer>
238
239    <!-- Subscribe Modal -->
240    <div class="modal-overlay" id="subscribeModal" onclick="if(event.target===this)closeSubscribe()">
241        <div class="modal-content">
242            <button class="modal-close" onclick="closeSubscribe()">&times;</button>
243            <p class="subscribe-tagline">Subscribe now and get daily <em>it's time to pray</em> devotionals in your inbox</p>
244            <form class="subscribe-form" id="subscribeForm" onsubmit="return handleSubscribe(event)">
245                <div class="subscribe-fields">
246                    <input type="text" id="sub-first" placeholder="First Name" required>
247                    <input type="text" id="sub-last" placeholder="Last Name" required>
248                    <input type="email" id="sub-email" placeholder="Email" required>
249                </div>
250                <div style="position:absolute; left:-9999px; top:-9999px;" aria-hidden="true">
251                    <label for="sub-website">Website</label>
252                    <input type="text" id="sub-website" name="website" tabindex="-1" autocomplete="off">
253                </div>
254                <button type="submit" class="btn-primary" id="sub-btn" style="width: 100%; margin-top: 12px;">Subscribe Now</button>
255                <p id="sub-msg" style="text-align: center; margin-top: 8px; font-size: 14px; display: none;"></p>
256            </form>
257        </div>
258    </div>
259    
259<script>
260    function openSubscribe() {
261        document.getElementById('subscribeModal').classList.add('active');
262        document.body.style.overflow = 'hidden';
263    }
264    function closeSubscribe() {
265        document.getElementById('subscribeModal').classList.remove('active');
266        document.body.style.overflow = '';
267    }
268    async function handleSubscribe(e) {
269        e.preventDefault();
270        const btn = document.getElementById('sub-btn');
271        const msg = document.getElementById('sub-msg');
272        btn.disabled = true;
273        btn.textContent = 'Subscribing...';
274        msg.style.display = 'none';
275        try {
276            const resp = await fetch('/api/subscribe', {
277                method: 'POST',
278                headers: { 'Content-Type': 'application/json' },
279                body: JSON.stringify({
280                    first_name: document.getElementById('sub-first').value,
281                    last_name: document.getElementById('sub-last').value,
282                    email: document.getElementById('sub-email').value,
283                    website: document.getElementById('sub-website').value,
284                }),
285            });
286            const data = await resp.json();
287            if (resp.ok) {
288                msg.textContent = 'Thank you for subscribing!';
289                msg.style.color = '#4CAF50';
290                msg.style.display = 'block';
291                document.getElementById('subscribeForm').reset();
292                setTimeout(closeSubscribe, 2000);
293            } else {
294                msg.textContent = data.error || 'Something went wrong';
295                msg.style.color = '#e57373';
296                msg.style.display = 'block';
297            }
298        } catch (err) {
299            msg.textContent = 'Network error. Please try again.';
300            msg.style.color = '#e57373';
301            msg.style.display = 'block';
302        }
303        btn.disabled = false;
304        btn.textContent = 'Subscribe Now';
305    }
306    </script>
306
307
308    <!-- Live Stream Popup (Worldwide Prayer Meeting, Wednesdays 6:55-8:35 PM New York time) -->
309    <div class="modal-overlay" id="liveModal" onclick="if(event.target===this)dismissLive()">
310        <div class="modal-content live-modal">
311            <button class="modal-close" onclick="dismissLive()">&times;</button>
312            <div class="live-badge"><span class="live-dot"></span>Live Now</div>
313            <h3 class="live-title">The Worldwide Prayer Meeting is live</h3>
314            <div class="live-player" id="livePlayer" hidden></div>
315            <div id="liveActions">
316                <p class="live-text">Join thousands of believers in 200+ countries in worship, the Word and prayer, happening right now.</p>
317                <a href="https://www.youtube.com/@TimesSquareChurch/live" target="_blank" rel="noopener" class="btn-primary" onclick="dismissLive()">Watch Live</a>
318            </div>
319            <a href="https://www.youtube.com/@TimesSquareChurch/live" target="_blank" rel="noopener" class="live-yt-link" id="liveYtLink" hidden>Watch on YouTube &#8599;</a>
320        </div>
321    </div>
322    <button class="live-pill" id="livePill" onclick="reopenLive()" hidden><span class="live-dot"></span>Live Now &mdash; Watch</button>
323    
323<script>
324    (function () {
325        var START_MIN = 18 * 60 + 55;   // 6:55 PM
326        var END_MIN = 20 * 60 + 35;     // 8:35 PM
327        var STORAGE_KEY = 'wwpmLiveDismissed';
328        var overlay = document.getElementById('liveModal');
329        var pill = document.getElementById('livePill');
330
331        function nyNow() {
332            var parts = new Intl.DateTimeFormat('en-US', {
333                timeZone: 'America/New_York', weekday: 'short',
334                year: 'numeric', month: '2-digit', day: '2-digit',
335                hour: '2-digit', minute: '2-digit', hour12: false
336            }).formatToParts(new Date());
337            var p = {};
338            parts.forEach(function (x) { p[x.type] = x.value; });
339            return p;
340        }
341
342        function getDismissed() {
343            try { return localStorage.getItem(STORAGE_KEY); } catch (e) { return null; }
344        }
345
346        var preview = new URLSearchParams(location.search).has('livePreview');
347        var previewDismissed = false;
348        var playerLoaded = false;
349        var embedBlocked = false;
350
351        // If YouTube refuses to embed the stream (e.g. error 150/151),
352        // fall back to the Watch Live link layout instead of a dead player.
353        window.addEventListener('message', function (e) {
354            if (e.origin.indexOf('youtube') === -1 || typeof e.data !== 'string') return;
355            var d;
356            try { d = JSON.parse(e.data); } catch (err) { return; }
357            if (d.event === 'onError') {
358                embedBlocked = true;
359                unloadPlayer();
360            }
361        });
362
363        window.dismissLive = function () {
364            if (preview) {
365                previewDismissed = true;
366            } else {
367                var p = nyNow();
368                try { localStorage.setItem(STORAGE_KEY, p.year + '-' + p.month + '-' + p.day); } catch (e) {}
369            }
370            update();
371        };
372
373        window.reopenLive = function () {
374            previewDismissed = false;
375            try { localStorage.removeItem(STORAGE_KEY); } catch (e) {}
376            update();
377        };
378
379        function loadPlayer() {
380            if (playerLoaded || embedBlocked) return;
381            playerLoaded = true;
382            fetch('/api/live-video' + (preview ? '?recent=1' : ''))
383                .then(function (r) { return r.json(); })
384                .then(function (data) {
385                    if (!data.videoId) { playerLoaded = false; return; } // fallback shown; retry on next update()
386                    var ifr = document.createElement('iframe');
387                    ifr.src = 'https://www.youtube-nocookie.com/embed/' + data.videoId
388                        + '?autoplay=1&mute=1&rel=0&enablejsapi=1&origin=' + encodeURIComponent(location.origin);
389                    ifr.allow = 'autoplay; encrypted-media; picture-in-picture';
390                    ifr.allowFullscreen = true;
391                    ifr.title = 'Worldwide Prayer Meeting live stream';
392                    ifr.addEventListener('load', function () {
393                        try {
394                            ifr.contentWindow.postMessage(JSON.stringify({ event: 'listening', id: 'wwpm', channel: 'widget' }), '*');
395                            ifr.contentWindow.postMessage(JSON.stringify({ event: 'command', func: 'addEventListener', args: ['onError'] }), '*');
396                        } catch (e) {}
397                    });
398                    var wrap = document.getElementById('livePlayer');
399                    wrap.appendChild(ifr);
400                    var unmute = document.createElement('button');
401                    unmute.className = 'live-unmute';
402                    unmute.innerHTML = '&#128266; Tap to unmute';
403                    unmute.onclick = function () {
404                        ['unMute', 'playVideo'].forEach(function (func) {
405                            ifr.contentWindow.postMessage(JSON.stringify({ event: 'command', func: func, args: [] }), '*');
406                        });
407                        unmute.remove();
408                    };
409                    wrap.appendChild(unmute);
410                    wrap.hidden = false;
411                    document.getElementById('liveActions').hidden = true;
412                    document.getElementById('liveYtLink').hidden = false;
413                })
414                .catch(function () {});
415        }
416
417        function unloadPlayer() {
418            if (!playerLoaded) return;
419            playerLoaded = false;
420            var wrap = document.getElementById('livePlayer');
421            wrap.innerHTML = '';
422            wrap.hidden = true;
423            document.getElementById('liveActions').hidden = false;
424            document.getElementById('liveYtLink').hidden = true;
425        }
426
427        function update() {
428            var p = nyNow();
429            var mins = (parseInt(p.hour, 10) % 24) * 60 + parseInt(p.minute, 10);
430            var isLive = preview || (p.weekday === 'Wed' && mins >= START_MIN && mins < END_MIN);
431            var dismissed = preview ? previewDismissed
432                : getDismissed() === p.year + '-' + p.month + '-' + p.day;
433            var showModal = isLive && !dismissed;
434            overlay.classList.toggle('active', showModal);
435            pill.hidden = !(isLive && dismissed);
436            if (showModal) { loadPlayer(); } else { unloadPlayer(); }
437        }
438
439        update();
440        setInterval(update, 60000);
441    })();
442    </script>
442
443    
443<script>
444    // Podcast dropdown: hover opens it on desktop, a click or tap opens it anywhere
445    (function () {
446        document.querySelectorAll('.nav-dropdown-toggle').forEach(function (t) {
447            t.addEventListener('click', function (e) {
448                e.preventDefault();
449                var d = t.parentElement, open = d.classList.contains('open');
450                document.querySelectorAll('.nav-dropdown.open').forEach(function (o) { o.classList.remove('open'); });
451                if (!open) d.classList.add('open');
452            });
453        });
454        document.addEventListener('click', function (e) {
455            if (!e.target.closest('.nav-dropdown')) document.querySelectorAll('.nav-dropdown.open').forEach(function (o) { o.classList.remove('open'); });
456        });
457        document.addEventListener('keydown', function (e) {
458            if (e.key === 'Escape') document.querySelectorAll('.nav-dropdown.open').forEach(function (o) { o.classList.remove('open'); });
459        });
460    })();
461    </script>
461
462    
463<script>
464const observer = new IntersectionObserver((entries) => {
465    entries.forEach(entry => {
466        if (entry.isIntersecting) {
467            entry.target.classList.add('visible');
468        }
469    });
470}, { threshold: 0.1 });
471
472document.querySelectorAll('.reveal').forEach(el => observer.observe(el));
473</script>
473
474
475</body>
476</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.