PageSourceSearch

https://ahmayun.github.io/

html ahmayun.github.io collected 2026-10-03 08:33:31 UTC 25,099 bytes, 5 lines download raw bytes

1<!DOCTYPE html> <html lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <title> Ahmad Humayun </title> <meta name="author" content="Ahmad Humayun"> <meta name="description" content="PhD student in Computer Science at Virginia Tech, researching automated software testing and security of data-intensive distributed programs. "> <meta name="keywords" content="big data testing, distributed systems, software engineering, fuzzing, program analysis, ahmad humayun"> <link rel="stylesheet" href="/assets/css/bootstrap.min.css?a4b3f509e79c54a512b890d73235ef04"> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/css/mdb.min.css" integrity="sha256-jpjYvU3G3N6nrrBwXJoVEYI/0zw8htfFnhT9ljN3JJw=" crossorigin="anonymous"> <link defer rel="stylesheet" href="/assets/css/academicons.min.css?f0b7046b84e425c55f3463ac249818f5"> <link defer rel="stylesheet" href="/assets/css/scholar-icons.css?62b2ac103a88034e6882a5be5f3e2772"> <link defer rel="stylesheet" type="text/css" href="https://fonts.googleapis.com/css?family=Roboto:300,400,500,700|Roboto+Slab:100,300,400,500,700|Material+Icons&amp;display=swap"> <link defer rel="stylesheet" href="/assets/css/jekyll-pygments-themes-github.css?591dab5a4e56573bf4ef7fd332894c99" media="" id="highlight_theme_light"> <link rel="shortcut icon" href="/assets/img/favicon.ico?ade068b7b52b45ea5a170b8e6d6b2d2a"> <link rel="stylesheet" href="/assets/css/main.css?d41d8cd98f00b204e9800998ecf8427e"> <link rel="canonical" href="/"> 
1<script src="/assets/js/theme.js?a81d82887dd692e91686b43de4542f18"></script>
1 <link defer rel="stylesheet" href="/assets/css/jekyll-pygments-themes-native.css?5847e5ed4a4568527aa6cfab446049ca" media="none" id="highlight_theme_dark"> 
1<script>
2    initTheme();
3  </script>
3 </head> <body class="fixed-top-nav "> <header> <nav id="navbar" class="navbar navbar-light navbar-expand-sm fixed-top" role="navigation"> <div class="container"> <button class="navbar-toggler collapsed ml-auto" type="button" data-toggle="collapse" data-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation"> <span class="sr-only">Toggle navigation</span> <span class="icon-bar top-bar"></span> <span class="icon-bar middle-bar"></span> <span class="icon-bar bottom-bar"></span> </button> <div class="collapse navbar-collapse text-right" id="navbarNav"> <ul class="navbar-nav ml-auto flex-nowrap"> <li class="nav-item active"> <a class="nav-link" href="/">about <span class="sr-only">(current)</span> </a> </li> <li class="nav-item "> <a class="nav-link" href="/publications/">publications </a> </li> <li class="nav-item"> <button id="search-toggle" title="Search" onclick="openSearchModal()"> <span class="nav-link">ctrl k <i class="ti ti-search"></i></span> </button> </li> <li class="toggle-container"> <button id="light-toggle" title="Change theme"> <i class="ti ti-sun-moon" id="light-toggle-system"></i> <i class="ti ti-moon-filled" id="light-toggle-dark"></i> <i class="ti ti-sun-filled" id="light-toggle-light"></i> </button> </li> </ul> </div> </div> </nav> <progress id="progress" value="0"> <div class="progress-container"> <span class="progress-bar"></span> </div> </progress> </header> <div class="container mt-5" role="main"> <div class="post"> <header class="post-header"> <h1 class="post-title"> Ahmad Humayun </h1> <p class="desc"></p> </header> <article> <div class="profile float-right"> <figure> <picture> <source class="responsive-img-srcset" srcset="/assets/img/prof_pic-480.webp 480w,/assets/img/prof_pic-800.webp 800w,/assets/img/prof_pic-1400.webp 1400w," type="image/webp" sizes="(min-width: 930px) 270.0px, (min-width: 576px) 30vw, 95vw"> <img src="/assets/img/prof_pic.jpg?a48169adff25aded2e2a9ef2818cffee" class="img-fluid z-depth-1 rounded" width="100%" height="auto" alt="prof_pic.jpg" loading="eager" onerror="this.onerror=null; $('.responsive-img-srcset').remove();"> </source></picture> </figure> <div class="more-info"> <p>4th Floor Gilbert Place</p> <p>220 Gilbert St</p> <p>Blacksburg, VA 24060</p> <p> <a href="mailto:[email protected]"><i class="fas fa-envelope"></i> [email protected]</a><br> <a href="https://www.linkedin.com/in/ahmayun" target="_blank" rel="external nofollow noopener"><i class="fab fa-linkedin"></i> LinkedIn</a><br> <a href="https://github.com/ahmayun" target="_blank" rel="external nofollow noopener"><i class="fab fa-github"></i> GitHub</a><br> <a href="https://scholar.google.com/citations?user=uO6VHNAAAAAJ&amp;hl=en" target="_blank" rel="external nofollow noopener"><i class="ai ai-google-scholar"></i> Google Scholar</a><br> <a href="/assets/pdf/ahmad-resume.pdf" target="_blank"><i class="fas fa-file-pdf"></i> CV</a> </p> </div> </div> <div class="clearfix"> <p>I’m a 5th year PhD candidate in Computer Science at Virginia Tech, advised by <a href="https://people.cs.vt.edu/~gulzar/" rel="external nofollow noopener" target="_blank">Prof. Muhammad Ali Gulzar</a> on automated software testing and security of distributed data-intensive scalable computing (DISC) and Machine Learning (ML) applications. I also collaborate closely with <a href="https://web.cs.ucla.edu/~miryung/" rel="external nofollow noopener" target="_blank">Prof. Miryung Kim</a> @ UCLA.</p> <p>My research focuses on developing novel methods to improve testing and debugging across two domains: (1) big data analytics applications, targeting DISC frameworks like Apache Spark and Apache Flink, and (2) large language models (LLMs), where I investigate code reasoning capabilities, fault localization, and provenance tracking in federated learning settings. I’ve published my work at top-tier venues including <a href="https://portal.core.edu.au/conf-ranks/52/" rel="external nofollow noopener" target="_blank">ESEC/FSE</a> and <a href="https://portal.core.edu.au/conf-ranks/279/" rel="external nofollow noopener" target="_blank">IEEE/ACM ASE</a>. My tools have discovered multiple previously unknown <a href="https://github.com/ahmayun/dag-fuzzer-generalized?tab=readme-ov-file#reported-issues" rel="external nofollow noopener" target="_blank">faults</a> in popular distributed frameworks such as <a href="https://github.com/apache/spark" rel="external nofollow noopener" target="_blank">Apache Spark</a>, <a href="https://github.com/apache/flink" rel="external nofollow noopener" target="_blank">Apache Flink</a>, <a href="https://github.com/pola-rs/polars" rel="external nofollow noopener" target="_blank">Polars</a>, and <a href="https://github.com/dask/dask" rel="external nofollow noopener" target="_blank">Dask</a>. My recent work introduces token-level attribution techniques for federated LLMs to enable debugging, malicious client detection, and trust verification in collaborative learning environments.</p> <p>I recently completed an internship as an Applied Scientist at <code class="language-plaintext highlighter-rouge">Amazon Web Services</code>
3 (Summer 2025), where I developed an LLM-powered application to automate the modeling of complex distributed algorithms in low-resource programming languages, deployed both as a standalone application and an MCP server. Previously, as an Applied Scientist intern at AWS (Summer 2024), I enhanced the automated testing infrastructure of critical AWS Services.</p> </div> <h2> <a href="/news/" style="color: inherit">news</a> </h2> <div class="news"> <div class="table-responsive" style="max-height: 60vw"> <table class="table table-sm table-borderless"> <tr> <th scope="row" style="width: 20%">Feb 10, 2026</th> <td> 🎉 Our paper <strong>“ProToken: Token-Level Attribution for Federated Large Language Models”</strong> has been accepted to <strong>MLSys 2026</strong>! </td> </tr> <tr> <th scope="row" style="width: 20%">Feb 10, 2026</th> <td> 🎉 Our paper <strong>“Generating and Understanding Tests via Path-Aware Symbolic Execution with LLMs”</strong> has been accepted to <strong>ICPC 2026</strong>! </td> </tr> <tr> <th scope="row" style="width: 20%">Jan 26, 2026</th> <td> 🎉 We just submitted exciting work on DAG-based fuzzing for Dataflow Frameworks to <strong>ISSTA ‘26</strong>! Our work has exposed <a href="https://github.com/ahmayun/dag-fuzzer-generalized?tab=readme-ov-file#reported-issues" rel="external nofollow noopener" target="_blank">several faults</a> across four different frameworks: Apache Spark, Apache Flink, Dask and Polars! </td> </tr> <tr> <th scope="row" style="width: 20%">Aug 15, 2025</th> <td> 🚀 I was offered to return for another Applied Science internship at AWS! </td> </tr> <tr> <th scope="row" style="width: 20%">Nov 07, 2024</th> <td> 🎖️ Honored to serve on the Program Committee for <a href="https://provenanceweek.github.io/TaPP2024/TaPP_2024.html#organizers:~:text=Ahmad%20Humayun%2C%20Virginia%20Tech" rel="external nofollow noopener" target="_blank">TaPP 2024</a> - Workshop on the Theory and Practice of Provenance! </td> </tr> <tr> <th scope="row" style="width: 20%">Aug 15, 2024</th> <td> 🚀 Excited to start my internship at AWS as an Applied Scientist working with <a href="https://ankushdesai.github.io/" rel="external nofollow noopener" target="_blank">Ankush Desai</a> and <a href="https://www.linkedin.com/in/aman-goel-a55a8646/" rel="external nofollow noopener" target="_blank">Aman Goel</a>! </td> </tr> <tr> <th scope="row" style="width: 20%">Apr 15, 2024</th> <td> 🎉 Our paper on natural symbolic execution-based testing for big data analytics has been accepted at <strong>ESEC/FSE 2024</strong>! </td> </tr> <tr> <th scope="row" style="width: 20%">Sep 13, 2023</th> <td> 🎤 I presented our work on <a href="https://ieeexplore.ieee.org/document/10298291" rel="external nofollow noopener" target="_blank">Natural Input Generation for Big Data Analytics</a> at <strong>ASE 2023</strong> in Luxembourg! </td> </tr> <tr> <th scope="row" style="width: 20%">Sep 11, 2023</th> <td> 🎤 I presented Co-dependence Aware Fuzzing for Dataflow-based Big Data Analytics at <strong>ESEC/FSE 2023</strong> in San Francisco you can find my talk <a href="https://dl.acm.org/doi/10.1145/3611643.3616298" rel="external nofollow noopener" target="_blank">here</a>! </td> </tr> <tr> <th scope="row" style="width: 20%">Aug 21, 2023</th> <td> 🏆 I was awarded a SIGSOFT grant to present my work at the 38th IEEE/ACM International Conference on Automated Software Engineering (ASE 2023) in Luxembourg. </td> </tr> <tr> <th scope="row" style="width: 20%">Jul 17, 2023</th> <td> 🎉 Our paper on natural input generation for data intensive applications has been accepted at <strong>ASE ‘23</strong>! </td> </tr> <tr> <th scope="row" style="width: 20%">May 04, 2023</th> <td> 🎉 Our paper on co-dependence aware fuzzing for dataflow-based big data analytics has been accepted at <strong>ESEC/FSE 2023</strong>! </td> </tr> </table> </div> </div> <h2> <a href="/publications/" style="color: inherit">selected publications</a> </h2> <div class="publications"> <ol class="bibliography"> <li> <div class="row"> <div class="col col-sm-2 abbr"> <abbr class="badge rounded w-100">
3MLSys 2026</abbr> </div> <div id="gill2026protokentokenlevelattributionfederated" class="col-sm-8"> <div class="title">ProToken: Token-Level Attribution for Federated Large Language Models</div> <div class="author"> Waris Gill, Ahmad Humayun, Ali Anwar, and <span class="more-authors" title="click to view 1 more author" onclick=" var element=$(this); element.attr('title', ''); var more_authors_text=element.text() == '1 more author' ? 'Muhammad Ali Gulzar' : '1 more author'; var cursorPosition=0; var textAdder=setInterval(function(){ element.html(more_authors_text.substring(0, cursorPosition + 1)); if (++cursorPosition == more_authors_text.length){ clearInterval(textAdder); } }, '10'); ">1 more author</span> </div> <div class="periodical"> <em>Ninth Annual Conference on Machine Learning and Systems</em>, 2026 </div> <div class="periodical"> </div> <div class="links"> <a href="/assets/pdf/protoken.pdf" class="btn btn-sm z-depth-0" role="button">PDF</a> </div> </div> </div> </li> <li> <div class="row"> <div class="col col-sm-2 abbr"> <abbr class="badge rounded w-100">ICPC 2026</abbr> </div> <div id="wu2025generating" class="col-sm-8"> <div class="title">Generating and Understanding Tests via Path-Aware Symbolic Execution with LLMs</div> <div class="author"> Yaoxuan Wu, Xiaojie Zhou, Ahmad Humayun, and <span class="more-authors" title="click to view 2 more authors" onclick=" var element=$(this); element.attr('title', ''); var more_authors_text=element.text() == '2 more authors' ? 'Muhammad Ali Gulzar, Miryung Kim' : '2 more authors'; var cursorPosition=0; var textAdder=setInterval(function(){ element.html(more_authors_text.substring(0, cursorPosition + 1)); if (++cursorPosition == more_authors_text.length){ clearInterval(textAdder); } }, '10'); ">2 more authors</span> </div> <div class="periodical"> <em>The 34th IEEE/ACM International Conference on Program Comprehension</em>, 2026 </div> <div class="periodical"> </div> <div class="links"> <a href="/assets/pdf/palm.pdf" class="btn btn-sm z-depth-0" role="button">PDF</a> </div> </div> </div> </li> <li> <div class="row"> <div class="col col-sm-2 abbr"> <abbr class="badge rounded w-100">ESEC/FSE 2024</abbr> </div> <div id="10.1145/3660825" class="col-sm-8"> <div class="title">Natural Symbolic Execution-Based Testing for Big Data Analytics</div> <div class="author"> Yaoxuan Wu, Ahmad Humayun, Muhammad Ali Gulzar, and <span class="more-authors" title="click to view 1 more author" onclick=" var element=$(this); element.attr('title', ''); var more_authors_text=element.text() == '1 more author' ? 'Miryung Kim' : '1 more author'; var cursorPosition=0; var textAdder=setInterval(function(){ element.html(more_authors_text.substring(0, cursorPosition + 1)); if (++cursorPosition == more_authors_text.length){ clearInterval(textAdder); } }, '10'); ">1 more author</span> </div> <div class="periodical"> <em>Proceedings of the 32nd ACM Joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering</em>, Jul 2024 </div> <div class="periodical"> </div> <div class="links"> <a class="abstract btn btn-sm z-depth-0" role="button">Abs</a> <a href="https://doi.org/10.1145/3660825" class="btn btn-sm z-depth-0" role="button" rel="external nofollow noopener" target="_blank">DOI</a> <a href="/assets/pdf/naturalsym.pdf" class="btn btn-sm z-depth-0" role="button">PDF</a> </div> <div class="abstract hidden"> <p>Symbolic execution is an automated test input generation technique that models individual program paths as logical constraints. However, the realism of concrete test inputs generated by SMT solvers often comes into question. Existing symbolic execution tools only seek arbitrary solutions for given path constraints. These constraints do not incorporate the naturalness of inputs that observe statistical distributions, range constraints, or preferred string constants. This results in unnatural-looking inputs that fail to emulate real-world data. In this paper, we extend symbolic execution with consideration for incorporating naturalness. Our key insight is that users typically understand the semantics of program inputs, such as the distribution of height or possible values of zipcode, which can be leveraged to advance the ability of symbolic execution to produce natural test inputs. We instantiate this idea in NaturalSym, a symbolic execution-based test generation tool for data-intensive scalable computing (DISC) applications. NaturalSym generates natural-looking data that mimics real-world distributions by utilizing user-prov
3ided input semantics to drastically enhance the naturalness of inputs, while preserving strong bug-finding potential. On DISC applications and commercial big data test benchmarks, NaturalSym achieves a higher degree of realism —as evidenced by a perplexity score 35.1 points lower on median, and detects 1.29\texttimes injected faults compared to the state-of-the-art symbolic executor for DISC, BigTest. This is because BigTest draws inputs purely based on the satisfiability of path constraints constructed from branch predicates, while NaturalSym is able to draw natural concrete values based on user-specified semantics and prioritize using these values in input generation. Our empirical results demonstrate that NaturalSym finds injected faults 47.8\texttimes more than NaturalFuzz (a coverage-guided fuzzer) and 19.1\texttimes more than ChatGPT. Meanwhile, TestMiner (a mining-based approach) fails to detect any injected faults. NaturalSym is the first symbolic executor that combines the notion of input naturalness in symbolic path constraints during SMT-based input generation. We make our code available at https://github.com/UCLA-SEAL/NaturalSym.</p> </div> </div> </div> </li> <li> <div class="row"> <div class="col col-sm-2 abbr"> <abbr class="badge rounded w-100">ESEC/FSE 2023</abbr> </div> <div id="10.1145/3611643.3616298" class="col-sm-8"> <div class="title">Co-dependence Aware Fuzzing for Dataflow-Based Big Data Analytics</div> <div class="author"> Ahmad Humayun, Miryung Kim, and Muhammad Ali Gulzar </div> <div class="periodical"> <em>In Proceedings of the 31st ACM Joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering</em>, San Francisco, CA, USA, Jul 2023 </div> <div class="periodical"> </div> <div class="links"> <a class="abstract btn btn-sm z-depth-0" role="button">Abs</a> <a href="https://doi.org/10.1145/3611643.3616298" class="btn btn-sm z-depth-0" role="button" rel="external nofollow noopener" target="_blank">DOI</a> <a href="/assets/pdf/depfuzz.pdf" class="btn btn-sm z-depth-0" role="button">PDF</a> </div> <div class="abstract hidden"> <p>Data-intensive scalable computing has become popular due to the increasing demands of analyzing big data. For example, Apache Spark and Hadoop allow developers to write dataflow-based applications with user-defined functions to process data with custom logic. Testing such applications is difficult. (1) These applications often take multiple datasets as input. (2) Unlike in SQL, there is no explicit schema for these datasets and each unstructured (or semi-structured) dataset is segmented and parsed at runtime. (3) Dataflow operators (e.g., join) create implicit co-dependence constraints between the fields of multiple datasets. An efficient and effective testing technique must analyze co-dependence among different regions of multiple datasets at the level of rows and columns and orchestrate input mutations jointly on co-dependent regions. We propose DepFuzz to increase the effectiveness and efficiency of fuzz testing dataflow-based big data applications. The key insight behind DepFuzz is twofold. It keeps track of which code segments operate on which datasets, which rows, and which columns. By analyzing the use of dataflow operators (e.g., join and groupByKey) in tandem with the semantics of UDFs, DepFuzz generates test data that subsequently reach hard-to-reach regions of the application code. In real-world big data applications, DepFuzz finds 3.4\texttimes more faults, achieving 29% more statement coverage in half the time as Jazzer’s, a state-of-the-art commercial fuzzer for Java bytecode. It outperforms prior DISC testing by exposing deeper semantic faults beyond simpler input formatting errors, especially when multiple datasets have complex interactions through dataflow operators.</p> </div> </div> </div> </li> <li> <div class="row"> <div class="col col-sm-2 abbr"> <abbr class="badge rounded w-100">ASE 2023</abbr> </div> <div id="10298291" class="col-sm-8"> <div class="title">NaturalFuzz: Natural Input Generation for Big Data Analytics</div> <div class="author"> Ahmad Humayun, Yaoxuan Wu, Miryung Kim, and <span class="more-authors" title="click to view 1 more author" onclick=" var element=$(this); element.attr('title', ''); var more_authors_text=element.text() == '1 more author' ? 'Muhammad Ali Gulzar' : '1 more author'; var cursorPosition=0; var textAdder=setInterval(function(){ element.html(more_authors_text.substring(0, cursorPosition + 1)); if (++cursorPosition == more_authors_text.length){ clearInterval(textAdder); } }, '10'); ">1 more author</span> </div> <div class="periodical"> <em>In 2023 38th IEEE/ACM International Conference on Automated Software Engineering (ASE)</em>, Jul 2023 </div> <div class="periodical"> </div> <div class="links"> <a href="https://doi.org/10.1109/ASE56229.2023.00034" class="btn btn-sm z-depth-0" role="button" rel="external nofollow noopener" target="_blank">DOI</a> <a href="/assets/pdf/naturalfuzz.pdf" class="btn btn-sm z-depth-0" role="button">PDF</a> </div> </div> </div> </li> <li> <div class="row"> <div class="col col-sm-2 abbr"> <abbr class="badge rounded w-100">[under review]</abbr> </div> <div id="haroon2025accuratelylargelanguagemodels" class="col-sm-8"> <div class="title">How Accurately Do Large Language Models Understand Code?</div> <div class="author"> Sabaat Haroon, Ahmad Faraz Khan, Ahmad Humayun, and <span class="more-authors" title="click to view 5 more authors" onclick=" var element=$(this); element.attr('title', ''); var more_authors_text=element.text() == '5 more authors' ? 'Waris Gill, Abdul Haddi Amjad, Ali R. Butt, Mohammad Taha Khan, Muhammad Ali Gulzar' : '5 more authors'; var cursorPosition=0; var textAdder=setInterval(function(){ element.html(more_authors_text.substring(0, cursorPosition + 1)); if (++cursorPosition == more_authors_text.length){ clearInterval(textAdder); } }, '10'); ">5 more authors</span> </div> <div class="periodical"> Jul 2025 </div> <div class="periodical"> </div> <div class="links"> </div> </div> </div> </li> </ol> </div> </article> </div> </div> <footer class="fixed-bottom" role="contentinfo"> <div class="container mt-0"> © Copyright 2026 Ahmad Humayun. Powered by <a href="https://jekyllrb.com/" target="_blank" rel="external nofollow noopener">Jekyll</a> with <a href="https://github.com/alshedivat/al-folio" rel="external nofollow noopener" target="_blank">al-folio</a> theme. </div> </footer> 
3<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/jquery.min.js" integrity="sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4=" crossorigin="anonymous"></script>
3 
3<script src="/assets/js/bootstrap.bundle.min.js"></script>
3 
3<script src="https://cdn.jsdelivr.net/npm/[email protected]/js/mdb.min.js" integrity="sha256-NdbiivsvWt7VYCt6hYNT3h/th9vSTL4EDWeGs5SN3DA=" crossorigin="anonymous"></script>
3 
3<script defer src="https://cdn.jsdelivr.net/npm/[email protected]/dist/masonry.pkgd.min.js" integrity="sha256-Nn1q/fx0H7SNLZMQ5Hw5JLaTRZp0yILA/FRexe19VdI=" crossorigin="anonymous"></script>
3 
3<script defer src="https://cdn.jsdelivr.net/npm/[email protected]/imagesloaded.pkgd.min.js" integrity="sha256-htrLFfZJ6v5udOG+3kNLINIKh2gvoKqwEhHYfTTMICc=" crossorigin="anonymous"></script>
3 
3<script defer src="/assets/js/masonry.js?a0db7e5d5c70cc3252b3138b0c91dcaf" type="text/javascript"></script>
3 
3<script defer src="https://cdn.jsdelivr.net/npm/[email protected]/dist/medium-zoom.min.js" integrity="sha256-ZgMyDAIYDYGxbcpJcfUnYwNevG/xi9OHKaR/8GK+jWc=" crossorigin="anonymous"></script>
3 
3<script defer src="/assets/js/zoom.js?85ddb88934d28b74e78031fd54cf8308"></script>
3 
3<script src="/assets/js/no_defer.js?2781658a0a2b13ed609542042a859126"></script>
3 
3<script defer src="/assets/js/common.js?e0514a05c5c95ac1a93a8dfd5249b92e"></script>
3 
3<script defer src="/assets/js/copy_code.js?c8a01c11a92744d44b093fc3bda915df" type="text/javascript"></script>
3 
3<script defer src="/assets/js/jupyter_new_tab.js?d9f17b6adc2311cbabd747f4538bb15f"></script>
3 
3<script async src="https://d1bxh8uas1mnw7.cloudfront.net/assets/embed.js"></script>
3 
3<script async src="https://badge.dimensions.ai/badge.js"></script>
3 
3<script defer type="text/javascript" id="MathJax-script" src="https://cdn.jsdelivr.net/npm/[email protected]/es5/tex-mml-chtml.js" integrity="sha256-MASABpB4tYktI2Oitl4t+78w/lyA+D7b/s9GEP0JOGI=" crossorigin="anonymous"></script>
3 
3<script src="/assets/js/mathjax-setup.js?a5bb4e6a542c546dd929b24b8b236dfd"></script>
3 
3<script defer src="https://cdnjs.cloudflare.com/polyfill/v3/polyfill.min.js?features=es6" crossorigin="anonymous"></script>
3 
3<script defer src="/assets/js/progress-bar.js?2f30e0e6801ea8f5036fa66e1ab0a71a" type="text/javascript"></script>
3 
3<script src="/assets/js/vanilla-back-to-top.min.js?f40d453793ff4f64e238e420181a1d17"></script>
3 
3<script>
4    addBackToTop();
5  </script>
5 
5<script type="module" src="/assets/js/search/ninja-keys.min.js?a3446f084dcaecc5f75aa1757d087dcf"></script>
5 <ninja-keys hidebreadcrumbs noautoloadmdicons placeholder="Type to start searching"></ninja-keys> 
5<script src="/assets/js/search-setup.js?6c304f7b1992d4b60f7a07956e52f04a"></script>
5 
5<script src="/assets/js/search-data.js"></script>
5 
5<script src="/assets/js/shortcut-key.js?6f508d74becd347268a7f822bca7309d"></script>
5 </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.