PageSourceSearch

https://www.chiragjpgroup.org/about.html

html chiragjpgroup.org collected 2026-10-02 07:18:52 UTC 23,517 bytes, 620 lines download raw bytes

1<!DOCTYPE html>
2<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head>
3
4<meta charset="utf-8">
5<meta name="generator" content="quarto-1.4.550">
6
7<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
8
9
10<title>Chirag Patel’s Group - About us</title>
11<style>
12code{white-space: pre-wrap;}
13span.smallcaps{font-variant: small-caps;}
14div.columns{display: flex; gap: min(4vw, 1.5em);}
15div.column{flex: auto; overflow-x: auto;}
16div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
17ul.task-list{list-style: none;}
18ul.task-list li input[type="checkbox"] {
19  width: 0.8em;
20  margin: 0 0.8em 0.2em -1em; /* quarto-specific, see https://github.com/quarto-dev/quarto-cli/issues/4556 */ 
21  vertical-align: middle;
22}
23</style>
24
25
26<script src="site_libs/quarto-nav/quarto-nav.js"></script>
vendor: 1 bytes, line 26
26
27<script src="site_libs/quarto-nav/headroom.min.js"></script>
27
28<link href="./img/logo.png" rel="icon" type="image/png">
29<script src="site_libs/clipboard/clipboard.min.js"></script>
vendor: 1 bytes, line 29
29
30<script src="site_libs/quarto-html/quarto.js"></script>
vendor: 1 bytes, line 30
30
31<script src="site_libs/quarto-html/popper.min.js"></script>
vendor: 1 bytes, line 31
31
32<script src="site_libs/quarto-html/tippy.umd.min.js"></script>
32
33<link href="site_libs/quarto-html/tippy.css" rel="stylesheet">
34<link href="site_libs/quarto-html/quarto-syntax-highlighting.css" rel="stylesheet" id="quarto-text-highlighting-styles">
35<script src="site_libs/bootstrap/bootstrap.min.js"></script>
35
36<link href="site_libs/bootstrap/bootstrap-icons.css" rel="stylesheet">
37<link href="site_libs/bootstrap/bootstrap.min.css" rel="stylesheet" id="quarto-bootstrap" data-mode="light">
38<link href="site_libs/quarto-contrib/fontawesome6-0.1.0/all.css" rel="stylesheet">
39<link href="site_libs/quarto-contrib/fontawesome6-0.1.0/latex-fontsize.css" rel="stylesheet">
40<script id="quarto-search-options" type="application/json">{
41  "language": {
42    "search-no-results-text": "No results",
43    "search-matching-documents-text": "matching documents",
44    "search-copy-link-title": "Copy link to search",
45    "search-hide-matches-text": "Hide additional matches",
46    "search-more-match-text": "more match in this document",
47    "search-more-matches-text": "more matches in this document",
48    "search-clear-button-title": "Clear",
49    "search-text-placeholder": "",
50    "search-detached-cancel-button-title": "Cancel",
51    "search-submit-button-title": "Submit",
52    "search-label": "Search"
53  }
54}</script>
vendor: 67 bytes, lines 54-55
54
55<script async="" src="https://www.googletagmanager.com/gtag/js?id=
55G-QRGRZ5HCRW
vendor: 13 bytes, lines 55-56
55"></script>
56
57<script type="text/javascript">
58
vendor: 127 bytes, lines 59-62
59window.dataLayer = window.dataLayer || [];
60function gtag(){dataLayer.push(arguments);}
61gtag('js', new Date());
62gtag('config', '
62G-QRGRZ5HCRW
vendor: 29 bytes, line 62
62', { 'anonymize_ip': true});
63</script>
63
64
65
66<link rel="stylesheet" href="styles.css">
67</head>
68
69<body class="nav-fixed">
70
71<div id="quarto-search-results"></div>
72  <header id="quarto-header" class="headroom fixed-top">
73    <nav class="navbar navbar-expand-lg " data-bs-theme="dark">
74      <div class="navbar-container container-fluid">
75      <div class="navbar-brand-container mx-auto">
76    <a class="navbar-brand" href="./index.html">
77    <span class="navbar-title">Chirag Patel’s Group</span>
78    </a>
79  </div>
80          <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarCollapse" aria-controls="navbarCollapse" aria-expanded="false" aria-label="Toggle navigation" onclick="if (window.quartoToggleHeadroom) { window.quartoToggleHeadroom(); }">
81  <span class="navbar-toggler-icon"></span>
82</button>
83          <div class="collapse navbar-collapse" id="navbarCollapse">
84            <ul class="navbar-nav navbar-nav-scroll ms-auto">
85  <li class="nav-item">
86    <a class="nav-link" href="./index.html"> 
87<span class="menu-text">Home</span></a>
88  </li>  
89  <li class="nav-item">
90    <a class="nav-link" href="./members.html"> 
91<span class="menu-text">The Group</span></a>
92  </li>  
93  <li class="nav-item">
94    <a class="nav-link" href="./resources.html"> 
95<span class="menu-text">Resources</span></a>
96  </li>  
97  <li class="nav-item">
98    <a class="nav-link" href="./pubs.html"> 
99<span class="menu-text">Publications</span></a>
100  </li>  
101  <li class="nav-item">
102    <a class="nav-link active" href="./about.html" aria-current="page"> 
103<span class="menu-text">About</span></a>
104  </li>  
105  <li class="nav-item compact">
106    <a class="nav-link" href="https://twitter.com/chiragjp"> <i class="bi bi-twitter" role="img" aria-label="Twitter">
107</i> 
108<span class="menu-text"></span></a>
109  </li>  
110</ul>
111          </div> <!-- /navcollapse -->
112          <div class="quarto-navbar-tools">
113</div>
114      </div> <!-- /container-fluid -->
115    </nav>
116</header>
117<!-- content -->
118<div id="quarto-content" class="quarto-container page-columns page-rows-contents page-layout-article page-navbar">
119<!-- sidebar -->
120<!-- margin-sidebar -->
121    <div id="quarto-margin-sidebar" class="sidebar margin-sidebar">
122        <nav id="TOC" role="doc-toc" class="toc-active">
123    <h2 id="toc-title">On this page</h2>
124  <ul>
125  <li><a href="#contact-us" id="toc-contact-us" class="nav-link active" data-scroll-target="#contact-us">Contact us</a></li>
126  <li><a href="#current-research-support" id="toc-current-research-support" class="nav-link" data-scroll-target="#current-research-support">Current Research Support</a></li>
127  <li><a href="#past-research-support" id="toc-past-research-support" class="nav-link" data-scroll-target="#past-research-support">Past Research Support</a></li>
128  <li><a href="#office-location" id="toc-office-location" class="nav-link" data-scroll-target="#office-location">Office Location</a></li>
129  </ul>
130</nav>
131    </div>
132<!-- main -->
133<div class="quarto-about-trestles content">
134  <div class="about-entity">
135    <img src="/img/countway.jpg" class="about-image
136  rounded " style="width: 20em;">
137<header id="title-block-header" class="quarto-title-block default">
138<div class="quarto-title">
139<h1 class="title">About us</h1>
140</div>
141<div class="quarto-title-meta">
142  </div>
143</header>
144  </div>
145  <div class="about-contents"><main class="content" id="quarto-document-content">
146
147<section id="contact-us" class="level2">
148<h2 data-anchor-id="contact-us">Contact us</h2>
149<p><i class="fa-solid fa-envelope" aria-label="envelope"></i>:<a href="mailto:[email protected]" class="email">[email protected]</a></p>
150<p><i class="fa-brands fa-twitter" aria-label="twitter"></i>:<a href="https://twitter.com/chiragjp">@chiragjp</a></p>
151</section>
152<section id="current-research-support" class="level2">
153<h2 data-anchor-id="current-research-support">Current Research Support</h2>
154<ul>
155<li><p><a href="https://reporter.nih.gov/PISearch/9643320">National Institutes of Health</a></p></li>
156<li><p><a href="https://reporter.nih.gov/project-details/10487388">NIEHS R01</a> ES032470</p></li>
157<li><p><a href="https://reporter.nih.gov/project-details/10448053">NIA RF1</a> AG074372</p></li>
158<li><p><a href="https://reporter.nih.gov/project-details/10978543">NIDDK R01</a> DK137993</p></li>
159<li><p><a href="https://reporter.nih.gov/project-details/10993456">NIEHS U24</a> ES036819</p></li>
160<li><p>ARPA-H D24AC00345</p></li>
161</ul>
162</section>
163<section id="past-research-support" class="level2">
164<h2 data-anchor-id="past-research-support">
164Past Research Support</h2>
165<ul>
166<li><p><a href="https://reporter.nih.gov/project-details/9892947">NIAID R01</a> AI127250</p></li>
167<li><p><a href="https://reporter.nih.gov/project-details/9773034">NIDDK T32</a> DK110919</p></li>
168<li><p>National Science Foundation</p></li>
169<li><p>NIEHS R21, K99/R00</p></li>
170</ul>
171<p><a href="https://datascience.harvard.edu">Harvard Data Science Institute</a></p>
172<p><a href="https://www.hsph.harvard.edu/niehs/">Harvard-Chan NIEHS Center</a>.</p>
173<p>We have had compute and infrastructural support from Sanofi, Amazon Web Services, Microsoft Azure, Oracle Cloud, and Google.</p>
174</section>
175<section id="office-location" class="level2">
176<h2 data-anchor-id="office-location">Office Location</h2>
177<p>We are part of the&nbsp;<a href="http://dbmi.med.harvard.edu/">Department of Biomedical Informatics</a>&nbsp;at&nbsp;<a href="http://hms.harvard.edu/">Harvard Medical School</a>.</p>
178<p>Countway Library</p>
179<p>10 Shattuck Street, Office 302</p>
180<p>Boston, MA. 02115</p>
181<iframe src="https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d2949.342346297109!2d-71.10577814893294!3d42.33522394456005!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x89e3798eb5fa4e8d%3A0x693bc4b9eb02581a!2s10%20Shattuck%20St%2C%20Boston%2C%20MA%2002115!5e0!3m2!1sen!2sus!4v1673303062635!5m2!1sen!2sus" width="400" height="300" style="border:0;" allowfullscreen="" loading="lazy" referrerpolicy="no-referrer-when-downgrade">
182</iframe>
183<p>This website is built with <a href="https://quarto.org">Quarto</a>.</p>
184<div>
185</div>
186<div class="quarto-layout-panel" data-layout-ncol="1">
187<div class="quarto-layout-row">
188<div class="quarto-layout-cell" style="flex-basis: 100.0%;justify-content: center;">
189<p><img src="img/Blavatnikbioinformatics.png" class="img-fluid" width="600"></p>
190</div>
191</div>
192</div>
193
194
195</section>
196</main></div>
197</div>
198 <!-- /main -->
199<script id="quarto-html-after-body" type="application/javascript">
200window.document.addEventListener("DOMContentLoaded", function (event) {
201  const toggleBodyColorMode = (bsSheetEl) => {
202    const mode = bsSheetEl.getAttribute("data-mode");
203    const bodyEl = window.document.querySelector("body");
204    if (mode === "dark") {
205      bodyEl.classList.add("quarto-dark");
206      bodyEl.classList.remove("quarto-light");
207    } else {
208      bodyEl.classList.add("quarto-light");
209      bodyEl.classList.remove("quarto-dark");
210    }
211  }
212  const toggleBodyColorPrimary = () => {
213    const bsSheetEl = window.document.querySelector("link#quarto-bootstrap");
214    if (bsSheetEl) {
215      toggleBodyColorMode(bsSheetEl);
216    }
217  }
218  toggleBodyColorPrimary();  
219  const isCodeAnnotation = (el) => {
220    for (const clz of el.classList) {
221      if (clz.startsWith('code-annotation-')) {                     
222        return true;
223      }
224    }
225    return false;
226  }
227  const clipboard = new window.ClipboardJS('.code-copy-button', {
228    text: function(trigger) {
229      const codeEl = trigger.previousElementSibling.cloneNode(true);
230      for (const childEl of codeEl.children) {
231        if (isCodeAnnotation(childEl)) {
232          childEl.remove();
233        }
234      }
235      return codeEl.innerText;
236    }
237  });
238  clipboard.on('success', function(e) {
239    // button target
240    const button = e.trigger;
241    // don't keep focus
242    button.blur();
243    // flash "checked"
244    button.classList.add('code-copy-button-checked');
245    var currentTitle = button.getAttribute("title");
246    button.setAttribute("title", "Copied!");
247    let tooltip;
248    if (window.bootstrap) {
249      button.setAttribute("data-bs-toggle", "tooltip");
250      button.setAttribute("data-bs-placement", "left");
251      button.setAttribute("data-bs-title", "Copied!");
252      tooltip = new bootstrap.Tooltip(button, 
253        { trigger: "manual", 
254          customClass: "code-copy-button-tooltip",
255          offset: [0, -8]});
256      tooltip.show();    
257    }
258    setTimeout(function() {
259      if (tooltip) {
260        tooltip.hide();
261        button.removeAttribute("data-bs-title");
262        button.removeAttribute("data-bs-toggle");
263        button.removeAttribute("data-bs-placement");
264      }
265      button.setAttribute("title", currentTitle);
266      button.classList.remove('code-copy-button-checked');
267    }, 1000);
268    // clear code selection
269    e.clearSelection();
270  });
271  function tippyHover(el, contentFn, onTriggerFn, onUntriggerFn) {
272    const config = {
273      allowHTML: true,
274      maxWidth: 500,
275      delay: 100,
276      arrow: false,
277      appendTo: function(el) {
278          return el.parentElement;
279      },
280      interactive: true,
281      interactiveBorder: 10,
282      theme: 'quarto',
283      placement: 'bottom-start',
284    };
285    if (contentFn) {
286      config.content = contentFn;
287    }
288    if (onTriggerFn) {
289      config.onTrigger = onTriggerFn;
290    }
291    if (onUntriggerFn) {
292      config.onUntrigger = onUntriggerFn;
293    }
294    window.tippy(el, config); 
295  }
296  const noterefs = window.document.querySelectorAll('a[role="doc-noteref"]');
297  for (var i=0; i<noterefs.length; i++) {
298    const ref = noterefs[i];
299    tippyHover(ref, function() {
300      // use id or data attribute instead here
301      let href = ref.getAttribute('data-footnote-href') || ref.getAttribute('href');
302      try { href = new URL(href).hash; } catch {}
303      const id = href.replace(/^#\/?/, "");
304      const note = window.document.getElementById(id);
305      return note.innerHTML;
306    });
307  }
308  const xrefs = window.document.querySelectorAll('a.quarto-xref');
309  const processXRef = (id, note) => {
310    // Strip column container classes
311    const stripColumnClz = (el) => {
312      el.classList.remove("page-full", "page-columns");
313      if (el.children) {
314        for (const child of el.children) {
315          stripColumnClz(child);
316        }
317      }
318    }
319    stripColumnClz(note)
320    if (id === null || id.startsWith('sec-')) {
321      // Special case sections, only their first couple elements
322      const container = document.createElement("div");
323      if (note.children && note.children.length > 2) {
324        container.appendChild(note.children[0].cloneNode(true));
325        for (let i = 1; i < note.children.length; i++) {
326          const child = note.children[i];
327          if (child.tagName === "P" && child.innerText === "") {
328            continue;
329          } else {
330            container.appendChild(child.cloneNode(true));
331            break;
332          }
333        }
334        if (window.Quarto?.typesetMath) {
335          window.Quarto.typesetMath(container);
336        }
337        return container.innerHTML
338      } else {
339        if (window.Quarto?.typesetMath) {
340          window.Quarto.typesetMath(note);
341        }
342        return note.innerHTML;
343      }
344    } else {
345      // Remove any anchor links if they are present
346      const anchorLink = note.querySelector('a.anchorjs-link');
347      if (anchorLink) {
348        anchorLink.remove();
349      }
350      if (window.Quarto?.typesetMath) {
351        window.Quarto.typesetMath(note);
352      }
353      // TODO in 1.5, we should make sure this works without a callout special case
354      if (note.classList.contains("callout")) {
355        return note.outerHTML;
356      } else {
357        return note.innerHTML;
358      }
359    }
360  }
361  for (var i=0; i<xrefs.length; i++) {
362    const xref = xrefs[i];
363    tippyHover(xref, undefined, function(instance) {
364      instance.disable();
365      let url = xref.getAttribute('href');
366      let hash = undefined; 
367      if (url.startsWith('#')) {
368        hash = url;
369      } else {
370        try { hash = new URL(url).hash; } catch {}
371      }
372      if (hash) {
373        const id = hash.replace(/^#\/?/, "");
374        const note = window.document.getElementById(id);
375        if (note !== null) {
376          try {
377            const html = processXRef(id, note.cloneNode(true));
378            instance.setContent(html);
379          } finally {
380            instance.enable();
381            instance.show();
382          }
383        } else {
384          // See if we can fetch this
385          fetch(url.split('#')[0])
386          .then(res => res.text())
387          .then(html => {
388            const parser = new DOMParser();
389            const htmlDoc = parser.parseFromString(html, "text/html");
390            const note = htmlDoc.getElementById(id);
391            if (note !== null) {
392              const html = processXRef(id, note);
393              instance.setContent(html);
394            } 
395          }).finally(() => {
396            instance.enable();
397            instance.show();
398          });
399        }
400      } else {
401        // See if we can fetch a full url (with no hash to target)
402        // This is a special case and we should probably do some content thinning / targeting
403        fetch(url)
404        .then(res => res.text())
405        .then(html => {
406          const parser = new DOMParser();
407          const htmlDoc = parser.parseFromString(html, "text/html");
408          const note = htmlDoc.querySelector('main.content');
409          if (note !== null) {
410            // This should only happen for chapter cross references
411            // (since there is no id in the URL)
412            // remove the first header
413            if (note.children.length > 0 && note.children[0].tagName === "HEADER") {
414              note.children[0].remove();
415            }
416            const html = processXRef(null, note);
417            instance.setContent(html);
418          } 
419        }).finally(() => {
420          instance.enable();
421          instance.show();
422        });
423      }
424    }, function(instance) {
425    });
426  }
427      let selectedAnnoteEl;
428      const selectorForAnnotation = ( cell, annotation) => {
429        let cellAttr = 'data-code-cell="' + cell + '"';
430        let lineAttr = 'data-code-annotation="' +  annotation + '"';
431        const selector = 'span[' + cellAttr + '][' + lineAttr + ']';
432        return selector;
433      }
434      const selectCodeLines = (annoteEl) => {
435        const doc = window.document;
436        const targetCell = annoteEl.getAttribute("data-target-cell");
437        const targetAnnotation = annoteEl.getAttribute("data-target-annotation");
438        const annoteSpan = window.document.querySelector(selectorForAnnotation(targetCell, targetAnnotation));
439        const lines = annoteSpan.getAttribute("data-code-lines").split(",");
440        const lineIds = lines.map((line) => {
441          return targetCell + "-" + line;
442        })
443        let top = null;
444        let height = null;
445        let parent = null;
446        if (lineIds.length > 0) {
447            //compute the position of the single el (top and bottom and make a div)
448            const el = window.document.getElementById(lineIds[0]);
449            top = el.offsetTop;
450            height = el.offsetHeight;
451            parent = el.parentElement.parentElement;
452          if (lineIds.length > 1) {
453            const lastEl = window.document.getElementById(lineIds[lineIds.length - 1]);
454            const bottom = lastEl.offsetTop + lastEl.offsetHeight;
455            height = bottom - top;
456          }
457          if (top !== null && height !== null && parent !== null) {
458            // cook up a div (if necessary) and position it 
459            let div = window.document.getElementById("code-annotation-line-highlight");
460            if (div === null) {
461              div = window.document.createElement("div");
462              div.setAttribute("id", "code-annotation-line-highlight");
463              div.style.position = 'absolute';
464              parent.appendChild(div);
465            }
466            div.style.top = top - 2 + "px";
467            div.style.height = height + 4 + "px";
468            div.style.left = 0;
469            let gutterDiv = window.document.getElementById("code-annotation-line-highlight-gutter");
470            if (gutterDiv === null) {
471              gutterDiv = window.document.createElement("div");
472              gutterDiv.setAttribute("id", "code-annotation-line-highlight-gutter");
473              gutterDiv.style.position = 'absolute';
474              const codeCell = window.document.getElementById(targetCell);
475              const gutter = codeCell.querySelector('.code-annotation-gutter');
476              gutter.appendChild(gutterDiv);
477            }
478            gutterDiv.style.top = top - 2 + "px";
479            gutterDiv.style.height = height + 4 + "px";
480          }
481          selectedAnnoteEl = annoteEl;
482        }
483      };
484      const unselectCodeLines = () => {
485        const elementsIds = ["code-annotation-line-highlight", "code-annotation-line-highlight-gutter"];
486        elementsIds.forEach((elId) => {
487          const div = window.document.getElementById(elId);
488          if (div) {
489            div.remove();
490          }
491        });
492        selectedAnnoteEl = undefined;
493      };
494        // Handle positioning of the toggle
495    window.addEventListener(
496      "resize",
497      throttle(() => {
498        elRect = undefined;
499        if (selectedAnnoteEl) {
500          selectCodeLines(selectedAnnoteEl);
501        }
502      }, 10)
503    );
504    function throttle(fn, ms) {
505    let throttle = false;
506    let timer;
507      return (...args) => {
508        if(!throttle) { // first call gets through
509            fn.apply(this, args);
510            throttle = true;
511        } else { // all the others get throttled
512            if(timer) clearTimeout(timer); // cancel #2
513            timer = setTimeout(() => {
514              fn.apply(this, args);
515              timer = throttle = false;
516            }, ms);
517        }
518      };
519    }
520      // Attach click handler to the DT
521      const annoteDls = window.document.querySelectorAll('dt[data-target-cell]');
522      for (const annoteDlNode of annoteDls) {
523        annoteDlNode.addEventListener('click', (event) => {
524          const clickedEl = event.target;
525          if (clickedEl !== selectedAnnoteEl) {
526            unselectCodeLines();
527            const activeEl = window.document.querySelector('dt[data-target-cell].code-annotation-active');
528            if (activeEl) {
529              activeEl.classList.remove('code-annotation-active');
530            }
531            selectCodeLines(clickedEl);
532            clickedEl.classList.add('code-annotation-active');
533          } else {
534            // Unselect the line
535            unselectCodeLines();
536            clickedEl.classList.remove('code-annotation-active');
537          }
538        });
539      }
540  const findCites = (el) => {
541    const parentEl = el.parentElement;
542    if (parentEl) {
543      const cites = parentEl.dataset.cites;
544      if (cites) {
545        return {
546          el,
547          cites: cites.split(' ')
548        };
549      } else {
550        return findCites(el.parentElement)
551      }
552    } else {
553      return undefined;
554    }
555  };
556  var bibliorefs = window.document.querySelectorAll('a[role="doc-biblioref"]');
557  for (var i=0; i<bibliorefs.length; i++) {
558    const ref = bibliorefs[i];
559    const citeInfo = findCites(ref);
560    if (citeInfo) {
561      tippyHover(citeInfo.el, function() {
562        var popup = window.document.createElement('div');
563        citeInfo.cites.forEach(function(cite) {
564          var citeDiv = window.document.createElement('div');
565          citeDiv.classList.add('hanging-indent');
566          citeDiv.classList.add('csl-entry');
567          var biblioDiv = window.document.getElementById('ref-' + cite);
568          if (biblioDiv) {
569            citeDiv.innerHTML = biblioDiv.innerHTML;
570          }
571          popup.appendChild(citeDiv);
572        });
573        return popup.innerHTML;
574      });
575    }
576  }
577});
578</script>
578
579</div> <!-- /content -->
580<footer class="footer">
581  <div class="nav-footer">
582    <div class="nav-footer-left">
583      <ul class="footer-items list-unstyled">
584    <li class="nav-item">
585    <a class="nav-link" href="https://dbmi.hms.harvard.edu/people/chirag-patel">
586<p>© Chirag J Patel</p>
587</a>
588  </li>  
589    <li class="nav-item">
590    <a class="nav-link" href="https://scholar.google.com/citations?user=Ecjx73cAAAAJ">
591<p>Google Scholar</p>
592</a>
593  </li>  
594    <li class="nav-item compact">
595    <a class="nav-link" href="https://github.com/chiragjp">
596      <i class="bi bi-github" role="img">
597</i> 
598    </a>
599  </li>  
600    <li class="nav-item compact">
601    <a class="nav-link" href="https://twitter.com/chiragjp">
602      <i class="bi bi-twitter" role="img" aria-label="Twitter">
603</i> 
604    </a>
605  </li>  
606</ul>
607    </div>   
608    <div class="nav-footer-center">
609      &nbsp;
610    </div>
611    <div class="nav-footer-right">
612      &nbsp;
613    </div>
614  </div>
615</footer>
616
617
618
619
620</body></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.