1(function(){var MAX_CHARS=27;var MQ='(max-width: 549px)';function debounce(fn,wait){var t;return function(){clearTimeout(t);t=setTimeout(fn,wait)}} 2function findOrWrapTitleSpan(titleEl){var existing=titleEl.querySelector('.ticker-title-text');if(existing)return existing;var textNode=null;for(var i=0;i<titleEl.childNodes.length;i++){var n=titleEl.childNodes[i];if(n.nodeType===3&&n.nodeValue&&n.nodeValue.trim().length){textNode=n;break}} 3if(!textNode)return null;var span=document.createElement('span');span.className='ticker-title-text';span.textContent=textNode.nodeValue.trim();titleEl.replaceChild(span,textNode);return span} 4function truncateText(text){if(!text)return'';var t=text.trim();if(t.length<=MAX_CHARS)return t;return t.slice(0,MAX_CHARS)+'...'} 5function applyTruncation(){var isMobile=window.matchMedia&&window.matchMedia(MQ).matches;var titles=document.querySelectorAll('.home-ticker .course-title');titles.forEach(function(title){var span=findOrWrapTitleSpan(title);if(!span)return;var full=span.getAttribute('data-full-title');if(!full){full=span.textContent.trim();span.setAttribute('data-full-title',full)} 6span.textContent=isMobile?truncateText(full):full})} 7document.addEventListener('DOMContentLoaded',function(){applyTruncation();window.addEventListener('resize',debounce(applyTruncation,150))})})()
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.