1(function(){var grids=document.querySelectorAll('[data-arv-articles-grid]');for(var i=0;i<grids.length;i++){wireArticles(grids[i])} 2function wireArticles(grid){var root=grid.closest('.arv-articles');if(!root){return} 3var search=root.querySelector('[data-arv-articles-search]');var cat=root.querySelector('[data-arv-articles-cat]');var year=root.querySelector('[data-arv-articles-year]');var count=root.querySelector('[data-arv-articles-count]');var cards=grid.querySelectorAll('.arv-articles__card');if(!search&&!cat&&!year){return} 4function apply(){var q=search?search.value.trim().toLowerCase():'';var c=cat?cat.value:'';var y=year?year.value:'';var shown=0;for(var j=0;j<cards.length;j++){var card=cards[j];var title=card.getAttribute('data-arv-articles-title')||'';var cats=(card.getAttribute('data-arv-articles-cat')||'').split('|');var hit=(''===q||title.indexOf(q)!==-1)&&(''===c||cats.indexOf(c)!==-1)&&(''===y||card.getAttribute('data-arv-articles-year')===y);card.hidden=!hit;if(hit){shown++}} 5if(count){count.textContent=(''===q&&''===c&&''===y)?'':shown+(1===shown?' article':' articles')}} 6if(search){search.addEventListener('input',apply)} 7if(cat){cat.addEventListener('change',apply)} 8if(year){year.addEventListener('change',apply)}}})()
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.