PageSourceSearch

https://s.bizhankook.com/static/js/article-public.js?v=f4e96827

js bizhankook.com collected 2026-10-02 10:16:24 UTC 23,773 bytes, 56 lines download raw bytes

1(function(){'use strict';window.addEventListener('load',function(){var bar=document.getElementById('pub-read-progress');var content=document.querySelector('.article-content');if(!bar||!content)return;var contentH=content.offsetHeight;var articlePk=window._articlePk||null;var maxPct=0,sentPct=0,sendTimer=null;function sendPct(pct){if(!articlePk||pct<=sentPct)return;sentPct=pct;var url='/api/reader/articles/'+articlePk+'/read-pct/?pct='+pct;if(navigator.sendBeacon)navigator.sendBeacon(url,'');else fetch(url,{method:'POST',keepalive:true});}
2function scheduleSend(pct){if(pct<100&&pct-sentPct<10)return;clearTimeout(sendTimer);sendTimer=setTimeout(function(){sendPct(pct);},1000);}
3function update(){var top=content.getBoundingClientRect().top;var scrollable=contentH-window.innerHeight;var pct=scrollable<=0?100:Math.min(100,Math.max(0,-top)/scrollable*100);bar.style.width=pct+'%';var pctInt=Math.round(pct);if(pctInt>maxPct){maxPct=pctInt;scheduleSend(maxPct);}}
4window.addEventListener('scroll',update,{passive:true});update();function flush(){sendPct(maxPct);}
5document.addEventListener('visibilitychange',function(){if(document.visibilityState==='hidden')flush();});window.addEventListener('pagehide',flush);});(function(){var audio=document.getElementById('article-audio');if(!audio)return;var btnPlay=document.getElementById('article-audio-play');var iconPlay=document.getElementById('article-audio-icon-play');var iconPause=document.getElementById('article-audio-icon-pause');var range=document.getElementById('article-audio-range');var elCur=document.getElementById('article-audio-cur');var elDur=document.getElementById('article-audio-dur');function fmt(s){s=Math.floor(s||0);return Math.floor(s/60)+':'+('0'+(s%60)).slice(-2);}
6audio.addEventListener('loadedmetadata',function(){range.max=Math.floor(audio.duration);elDur.textContent=fmt(audio.duration);});audio.addEventListener('timeupdate',function(){if(!range._dragging){range.value=Math.floor(audio.currentTime);elCur.textContent=fmt(audio.currentTime);}});audio.addEventListener('ended',function(){iconPlay.style.display='';iconPause.style.display='none';});btnPlay.addEventListener('click',function(){if(audio.paused){audio.play();iconPlay.style.display='none';iconPause.style.display='';}else{audio.pause();iconPlay.style.display='';iconPause.style.display='none';}});range.addEventListener('mousedown',function(){range._dragging=true;});range.addEventListener('touchstart',function(){range._dragging=true;},{passive:true});range.addEventListener('input',function(){elCur.textContent=fmt(range.value);});range.addEventListener('change',function(){audio.currentTime=range.value;range._dragging=false;});}());document.querySelectorAll('figure.cms-slide').forEach(function(fig){var raw=fig.getAttribute('data-slide');if(!raw)return;var slides;try{slides=JSON.parse(raw);}catch(e){return;}
7if(!slides.length)return;var current=0;var caption=fig.querySelector('figcaption');var wrap=document.createElement('div');wrap.className='cms-slide-reader';var track=document.createElement('div');track.className='cms-slide-reader-track';slides.forEach(function(s){var img=document.createElement('img');img.src=s.url828||s.url2048||s.url||'';img.alt=s.title||'';img.draggable=false;track.appendChild(img);});wrap.appendChild(track);var dots=[];if(slides.length>1){var prev=document.createElement('button');prev.className='cms-slide-reader-btn prev';prev.innerHTML='&#8249;';wrap.appendChild(prev);var next=document.createElement('button');next.className='cms-slide-reader-btn next';next.innerHTML='&#8250;';wrap.appendChild(next);prev.addEventListener('click',function(){go(current-1);});next.addEventListener('click',function(){go(current+1);});}
8var _touchStartX=0;wrap.addEventListener('touchstart',function(e){_touchStartX=e.touches[0].clientX;},{passive:true});wrap.addEventListener('touchend',function(e){var dx=e.changedTouches[0].clientX-_touchStartX;if(Math.abs(dx)>50)go(dx<0?current+1:current-1);},{passive:true});var _dragging=false;var _dragStartX=0;function _setDragX(px){track.style.transition='none';track.style.transform='translateX(calc(-'+(current*100)+'% + '+px+'px))';}
9function _endDrag(dx){_dragging=false;track.style.transition='';var threshold=Math.min(80,wrap.offsetWidth/4);if(Math.abs(dx)>threshold)go(dx<0?current+1:current-1);else go(current);}
10wrap.addEventListener('pointerdown',function(e){if(e.pointerType!=='mouse'||e.button!==0)return;if(e.target.closest('.cms-slide-reader-btn'))return;_dragging=true;_dragStartX=e.clientX;wrap.setPointerCapture(e.pointerId);e.preventDefault();});wrap.addEventListener('pointermove',function(e){if(!_dragging)return;_setDragX(e.clientX-_dragStartX);});wrap.addEventListener('pointerup',function(e){if(!_dragging)return;_endDrag(e.clientX-_dragStartX);});wrap.addEventListener('pointercancel',function(){if(!_dragging)return;_endDrag(0);});function go(n){current=(n+slides.length)%slides.length;track.style.transform='translateX(-'+(current*100)+'%)';
10dots.forEach(function(d,i){d.classList.toggle('active',i===current);});}
11fig.innerHTML='';fig.appendChild(wrap);if(slides.length>1){var dotWrap=document.createElement('div');dotWrap.className='cms-slide-reader-dots';slides.forEach(function(_,i){var d=document.createElement('button');d.className='cms-slide-reader-dot'+(i===0?' active':'');d.addEventListener('click',function(){go(i);});dotWrap.appendChild(d);dots.push(d);});fig.appendChild(dotWrap);}
12if(caption)fig.appendChild(caption);});window.addEventListener('load',function(){var aside=document.querySelector('.article-aside');if(!aside)return;var mq=window.matchMedia('(min-width: 901px)');function update(){if(!mq.matches){aside.style.top='';return;}
13var gap=16;aside.style.top=Math.min(gap,window.innerHeight-aside.offsetHeight-gap)+'px';}
14update();window.addEventListener('resize',update);if(mq.addEventListener)mq.addEventListener('change',update);else mq.addListener(update);});(function(){var listEl=document.getElementById('cms-related-list');if(!listEl)return;var apiUrl=listEl.getAttribute('data-api-url');if(!apiUrl)return;function makeItem(a){var el=document.createElement('a');el.className='related-item';el.href=a.url;var html='';if(a.thumbnail_url){html+='<img class="related-thumb" src="'+a.thumbnail_url+'" alt="">';}
15html+='<div class="related-info">';if(a.category)html+='<span class="related-cat">'+a.category+'</span>';html+='<span class="related-item-title">'+a.title+'</span>';if(a.byline)html+='<span class="related-byline">'+a.byline+'</span>';html+='</div>';el.innerHTML=html;if(window.CMS&&window.CMS.processTitles)window.CMS.processTitles(el);return el;}
16function makeBylineItem(a){var el=document.createElement('a');el.className='related-item';el.href=a.url;var html='';if(a.thumbnail_url){html+='<img class="related-thumb" src="'+a.thumbnail_url+'" alt="">';}
17html+='<div class="related-info"><span class="related-item-title">'+a.title+'</span></div>';el.innerHTML=html;if(window.CMS&&window.CMS.processTitles)window.CMS.processTitles(el);return el;}
18function load(){fetch(apiUrl).then(function(r){return r.ok?r.json():null;}).then(function(data){if(!data)return;var bylineWrap=document.getElementById('cms-byline-articles');if(bylineWrap&&data.byline_articles&&data.byline_articles.length){data.byline_articles.forEach(function(group){if(!group.articles||!group.articles.length)return;var sec=document.createElement('section');sec.className='related-articles';var h2=document.createElement('h2');h2.className='related-title';var titleText=group.title||(group.author+' '+(group.role||'기자')+'의 기사');if(group.author_url){var titleLink=document.createElement('a');titleLink.href=group.author_url;titleLink.textContent=titleText;h2.appendChild(titleLink);}else{h2.textContent=titleText;}
19var list=document.createElement('div');list.className='related-list';group.articles.forEach(function(a){list.appendChild(makeBylineItem(a));});sec.appendChild(h2);sec.appendChild(list);bylineWrap.appendChild(sec);});}
20var isMobile=!window.matchMedia('(min-width: 901px)').matches;if(data.related&&data.related.length&&!(isMobile&&data.related_title==='최신 기사')){data.related.forEach(function(a){listEl.appendChild(makeItem(a));});var section=document.getElementById('cms-related-articles');if(data.related_title){var h2=section.querySelector('.related-title');if(h2)h2.textContent=data.related_title;}
21section.style.display='';window._cmsExcludePks=window._cmsExcludePks||{};var touchedGroups=[];data.related.forEach(function(a){window._cmsExcludePks[a.pk]=true;document.querySelectorAll('.widget-article-item[data-pk="'+a.pk+'"]').forEach(function(el){var group=el.closest('.widget-group');var inline=el.closest('.cms-inline-widget');if(group)touchedGroups.push(group);if(inline)touchedGroups.push(inline);el.remove();});});touchedGroups.forEach(function(g){if(g.querySelector('.widget-article-item'))return;var fig=g.closest('figure.cms-tag-widget');if(fig)fig.style.display='none';g.remove();});}
22var recList=document.getElementById('cms-recommended-list');if(recList&&data.recommended&&data.recommended.length){data.recommended.forEach(function(a){recList.appendChild(makeItem(a));});document.getElementById('cms-recommended-articles').style.display='';}}).catch(function(){});}
23var loaded=false;var content=document.querySelector('.article-content');function checkScroll(){if(loaded)return;if(!content){load();loaded=true;return;}
24var rect=content.getBoundingClientRect();var contentHeight=rect.height;if(contentHeight===0)return;var scrolled=-rect.top+window.innerHeight;if(scrolled/contentHeight>=0.7){loaded=true;window.removeEventListener('scroll',checkScroll,{passive:true});load();}}
25window.addEventListener('scroll',checkScroll,{passive:true});checkScroll();}());var PRICE_URL=window._stockPriceUrl;var LIST_URL=window._stockListUrl;if(!PRICE_URL)return;var _cache={},_tip=null,_hideTimer=null;var _progressRaf=null;var _progressStart=null;var _PROGRESS_DURATION=3000;function getTooltip(){if(_tip)return _tip;_tip=document.createElement('div');_tip.className='cms-stock-tip';_tip.innerHTML='<div class="cms-stock-tip-loading">'+'<div class="cms-stock-tip-progress"><div class="cms-stock-tip-progress-bar"></div></div>'+'<a class="cms-stock-tip-search" href="#" target="_blank" style="display:none"></a>'+'</div>'+'<div class="cms-stock-tip-content" style="display:none">'+'<div class="cms-stock-tip-header">'+'<span class="cms-stock-tip-code"></span>'+'<span class="cms-stock-tip-price"></span>'+'<span class="cms-stock-tip-change"></span>'+'</div>'+'<div class="cms-stock-tip-chart"><svg class="cms-stock-sparkline" viewBox="0 0 200 50" preserveAspectRatio="none">'+'<polyline class="cms-stock-sparkline-line"/><polyline class="cms-stock-sparkline-area"/>'+'</svg></div>'+'<a class="cms-stock-tip-more" href="#" target="_blank"></a>'+'</div>';_tip.addEventListener('mouseenter',function(){clearTimeout(_hideTimer);});_tip.addEventListener('mouseleave',hideTip);document.body.appendChild(_tip);return _tip;}
26function startProgress(){var tip=getTooltip();var bar=tip.querySelector('.cms-stock-tip-progress-bar');tip.querySelector('.cms-stock-tip-loading').style.display='';tip.querySelector('.cms-stock-tip-content').style.display='none';bar.style.width='0%';bar.style.transition='none';_progressStart=performance.now();if(_progressRaf)cancelAnimationFrame(_progressRaf);function step(now){var elapsed=now-_progressStart;var pct=Math.min(elapsed/_PROGRESS_DURATION*100,95);bar.style.width=pct+'%';if(pct<95)_progressRaf=requestAnimationFrame(step);}
27_progressRaf=requestAnimationFrame(step);}
28function stopProgress(){if(_progressRaf){cancelAnimationFrame(_progressRaf);_progressRaf=null;}
29var tip=getTooltip();var bar=tip.querySelector('.cms-stock-tip-progress-bar');bar.style.transition='width 0.15s ease';bar.style.width='100%';setTimeout(function(){tip.querySelector('.cms-stock-tip-loading').style.display='none';tip.querySelector('.cms-stock-tip-content').style.display='';},150);}
30function buildSparkline(prices){var tip=getTooltip();var svg=tip.querySelector('.cms-stock-sparkline');var linePoly=tip.querySelector('.cms-stock-sparkline-line');var areaPoly=tip.querySelector('.cms-stock-sparkline-area');if(!prices||prices.length<2){linePoly.setAttribute('points','');areaPoly.setAttribute('points','');return;}
31var W=200,H=50,n=prices.length;var minP=Math.min.apply(null,prices),maxP=Math.max.apply(null,prices),range=maxP-minP||1;var pts=prices.map(function(p,i){return((i/(n-1))*W).toFixed(1)+','+(H-((p-minP)/range)*(H-6)-3).toFixed(1);});linePoly.setAttribute('points',pts.join(' '));areaPoly.setAttribute('points','0,'+H+' '+pts.join(' ')+' '+W+','+H);svg.setAttribute('data-trend',prices[prices.length-1]>=prices[0]?'up':'down');}
32function showTip(badge,data){var tip=getTooltip();var company=badge.getAttribute('data-company')||'';tip.querySelector('.cms-stock-tip-code').textContent='';var price=data.current;tip.querySelector('.cms-stock-tip-price').textContent=price>
32=1000?price.toLocaleString('ko-KR')+'원':price.toFixed(2);var chg=data.change_pct;var chgEl=tip.querySelector('.cms-stock-tip-change');chgEl.textContent='전일대비 '+(chg>=0?'▲ +':'▼ ')+chg+'%';chgEl.className='cms-stock-tip-change '+(chg>=0?'up':'down');var moreEl=tip.querySelector('.cms-stock-tip-more');if(company){moreEl.textContent=company+' 기사 더보기';moreEl.href='/stocks/'+company+':'+data.code+'/';moreEl.style.display='block';}else{moreEl.style.display='none';}
33buildSparkline(data.prices);var tw=tip.offsetWidth,th=tip.offsetHeight;var rect=badge.getBoundingClientRect();var left=rect.left+window.scrollX+rect.width/2-tw/2;var top=rect.bottom+window.scrollY+8;if(left<8)left=8;if(left+tw>window.innerWidth-8)left=window.innerWidth-tw-8;if(top+th>window.scrollY+window.innerHeight-8)top=rect.top+window.scrollY-th-8;tip.style.left=left+'px';tip.style.top=top+'px';tip.style.visibility='visible';tip.style.pointerEvents='auto';}
34function hideTip(){_hideTimer=setTimeout(function(){if(_tip){_tip.style.visibility='hidden';_tip.style.pointerEvents='none';}},120);}
35function updateBadgeLabel(code,market){document.querySelectorAll('.cms-stock-badge').forEach(function(b){if((b.dataset.rawCode||b.textContent.trim())===code&&market){b.dataset.market=market;}});}
36function attachBadge(badge){if(badge._bound)return;badge._bound=true;if(!badge.dataset.rawCode)badge.dataset.rawCode=badge.getAttribute('data-code')||badge.textContent.trim();badge.addEventListener('mouseenter',function(){clearTimeout(_hideTimer);var code=badge.dataset.rawCode;if(_cache[code]){showTip(badge,_cache[code]);return;}
37var tip=getTooltip();startProgress();var company=badge.getAttribute('data-company')||'';var searchEl=tip.querySelector('.cms-stock-tip-search');if(company){searchEl.textContent=company+' 기사 검색하기';searchEl.href='/stocks/'+encodeURIComponent(company)+':'+encodeURIComponent(code)+'/';searchEl.style.display='block';}else{searchEl.style.display='none';}
38var rect=badge.getBoundingClientRect();tip.style.left=(rect.left+window.scrollX)+'px';tip.style.top=(rect.bottom+window.scrollY+8)+'px';tip.style.visibility='visible';tip.style.pointerEvents='auto';fetch(PRICE_URL+'?code='+encodeURIComponent(code)).then(function(r){return r.json();}).then(function(data){stopProgress();if(data.error){tip.querySelector('.cms-stock-tip-price').textContent='조회 실패';tip.querySelector('.cms-stock-tip-content').style.display='';tip.querySelector('.cms-stock-tip-loading').style.display='none';return;}
39_cache[code]=data;updateBadgeLabel(code,data.market);showTip(badge,data);}).catch(function(){stopProgress();tip.querySelector('.cms-stock-tip-price').textContent='네트워크 오류';tip.querySelector('.cms-stock-tip-content').style.display='';tip.querySelector('.cms-stock-tip-loading').style.display='none';});});badge.addEventListener('mouseleave',hideTip);}
40function wrapCompanyName(badge){var company=badge.getAttribute('data-company')||'';if(!company)return null;var prev=badge.previousSibling;if(prev&&prev.nodeType===1&&prev.classList&&prev.classList.contains('cms-stock-name')){if(!prev.dataset.rawCode)prev.dataset.rawCode=badge.dataset.rawCode||badge.getAttribute('data-code')||badge.textContent.trim();if(!prev.dataset.company)prev.dataset.company=company;return prev;}
41if(!prev||prev.nodeType!==3)return null;var text=prev.nodeValue;var idx=text.lastIndexOf(company);if(idx===-1)return null;var parent=prev.parentNode;var before=text.slice(0,idx);parent.removeChild(prev);if(before)parent.insertBefore(document.createTextNode(before),badge);var nameSpan=document.createElement('span');nameSpan.className='cms-stock-name';nameSpan.textContent=company;nameSpan.dataset.rawCode=badge.dataset.rawCode||badge.getAttribute('data-code')||badge.textContent.trim();nameSpan.dataset.company=company;parent.insertBefore(nameSpan,badge);return nameSpan;}
42document.querySelectorAll('.cms-stock-badge').forEach(function(badge){attachBadge(badge);var nameSpan=wrapCompanyName(badge);if(nameSpan)attachBadge(nameSpan);});}());(function(){var dialog=document.getElementById('cms-share-dialog');if(!dialog)return;var backdrop=dialog.querySelector('.cms-share-dialog-backdrop');var closeBtn=dialog.querySelector('.cms-share-dialog-close');var copyBtn=document.getElementById('cms-share-copy-btn');var nativeBtn=document.getElementById('cms-share-native-btn');var urlText=document.getElementById('cms-share-url-text');function openDialog(){dialog.style.display='flex';document.body.style.overflow='hidden';if(urlText)urlText.textContent=location.origin+location.pathname;}
43function closeDialog(){dialog.style.display='none';document.body.style.overflow='';}
44[document.getElementById('article-share-btn'),document.getElementById('cms-meta-share-btn'),].forEach(function(btn
44){if(!btn)return;btn.addEventListener('click',openDialog);});closeBtn&&closeBtn.addEventListener('click',closeDialog);backdrop&&backdrop.addEventListener('click',closeDialog);document.addEventListener('keydown',function(e){if(e.key==='Escape')closeDialog();});copyBtn&&copyBtn.addEventListener('click',function(){var url=urlText?urlText.textContent.trim():location.href;navigator.clipboard&&navigator.clipboard.writeText(url).then(function(){copyBtn.textContent='복사됨';copyBtn.classList.add('copied');setTimeout(function(){copyBtn.textContent='복사';copyBtn.classList.remove('copied');},1800);});});nativeBtn&&nativeBtn.addEventListener('click',function(){var url=urlText?urlText.textContent.trim():location.href;var shareData={title:document.title,url:url};if(navigator.share){navigator.share(shareData).catch(function(){});}else{navigator.clipboard&&navigator.clipboard.writeText(url).then(function(){var orig=nativeBtn.textContent;nativeBtn.textContent='URL 복사됨';setTimeout(function(){nativeBtn.textContent=orig;},1500);});}});}());(function(){function doPrint(){var root=document.getElementById('cms-reader-root');var pk=root?root.dataset.articlePk:'';if(!pk)return;var popup=window.open('/articles/'+pk+'/print/','_blank','width=900,height=700,scrollbars=yes');if(popup)popup.focus();}
45var btns=[document.getElementById('cms-meta-print-btn'),document.getElementById('cms-reader-print-btn'),];btns.forEach(function(btn){if(btn)btn.addEventListener('click',doPrint);});}());(function(){var figures=document.querySelectorAll('figure.cms-numcard');if(!figures.length||!window.IntersectionObserver)return;function parseNum(str){var m=str.match(/([\d,]+\.?\d*)/);return m?parseFloat(m[1].replace(/,/g,'')):null;}
46function formatNum(original,current){var hasComma=original.indexOf(',')>=0;var decimals=(original.match(/\.(\d+)/)||['',''])[1].length;var s=current.toFixed(decimals);if(hasComma){var parts=s.split('.');parts[0]=parts[0].replace(/\B(?=(\d{3})+(?!\d))/g,',');s=parts.join('.');}
47return original.replace(/([\d,]+\.?\d*)/,s);}
48function animateCard(card){var numEl=card.querySelector('.cms-numcard-num');if(!numEl||numEl.dataset.animated)return;numEl.dataset.animated='1';var original=numEl.textContent;var target=parseNum(original);if(target===null)return;var duration=1200;var start=null;function easeOut(t){return 1-Math.pow(1-t,3);}
49function step(ts){if(!start)start=ts;var p=Math.min(1,(ts-start)/duration);numEl.textContent=formatNum(original,target*easeOut(p));if(p<1)requestAnimationFrame(step);else numEl.textContent=original;}
50requestAnimationFrame(step);}
51var obs=new IntersectionObserver(function(entries){entries.forEach(function(entry){if(!entry.isIntersecting)return;entry.target.querySelectorAll('.cms-numcard-card').forEach(animateCard);obs.unobserve(entry.target);});},{threshold:0.2});figures.forEach(function(fig){obs.observe(fig);});}());(function(){document.querySelectorAll('figure.cms-video').forEach(function(fig){var id=fig.getAttribute('data-video-id');if(!id)return;var thumb=fig.querySelector('.cms-video-thumb');if(!thumb)return;thumb.style.cursor='pointer';thumb.addEventListener('click',function(){var iframe=document.createElement('iframe');iframe.src='https://www.youtube-nocookie.com/embed/'+id
52+'?autoplay=1&rel=0&origin='+encodeURIComponent(window.location.origin);iframe.width='100%';iframe.height='100%';iframe.frameBorder='0';iframe.allow='accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture';iframe.allowFullscreen=true;iframe.style.cssText='position:absolute;top:0;left:0;width:100%;height:100%;border:0';var wrapper=document.createElement('div');wrapper.style.cssText='position:relative;width:100%;padding-top:56.25%;background:#000';wrapper.appendChild(iframe);thumb.parentNode.replaceChild(wrapper,thumb);});});}());(function(){if(!document.querySelector('blockquote.twitter-tweet'))return;var s=document.createElement('script');s.async=true;s.charset='utf-8';s.src='https://platform.twitter.com/widgets.js';document.body.appendChild(s);}());(function(){var root=document.getElementById('cms-reader-root');var pk=root&&root.dataset.articlePk;if(!pk)return;try{fetch('/api/v1/articles/'+pk+'/view/',{method:'POST'});}catch(e){}}());(function(){function injectAd(el){if(el.dataset.adLoaded)return;el.dataset.adLoaded='1';var html=el.dataset.ad;if(!html)return;el.innerHTML=html;el.querySelectorAll('script').forEach(function(s){var ns=document.createElement('script');if(s.src){ns.src=s.src;ns.async=true;}
53else ns.textContent=s.textContent;s.parentNode.replaceChild(ns,s);});}
54window.addEventListener('load',function(){var ads=document.querySelectorAll('.cms-ad-lazy');if(!ads.length)return;var obs=new IntersectionObserver(function(entries){entries.forEac
54h(function(e){if(e.isIntersecting){injectAd(e.target);obs.unobserve(e.target);}});},{rootMargin:'300px'});ads.forEach(function(el){obs.observe(el);});});}());(function(){window.addEventListener('load',function(){var btn=document.getElementById('pub-scroll-top');var content=document.querySelector('.article-content');if(!btn||!content)return;var contentH=content.offsetHeight;var shown=false;function update(){var top=content.getBoundingClientRect().top;var scrollable=contentH-window.innerHeight;var pct=scrollable<=0?100:Math.min(100,Math.max(0,-top)/scrollable*100);var shouldShow=pct>=95;if(shouldShow!==shown){shown=shouldShow;btn.classList.toggle('is-visible',shown);}}
55window.addEventListener('scroll',update,{passive:true});update();btn.addEventListener('click',function(){window.scrollTo({top:0,behavior:'smooth'});});});}());(function(){document.querySelectorAll('.cms-ad-roll').forEach(function(el){try{var list=JSON.parse(el.getAttribute('data-ads')||'[]');if(!list.length)return;el.innerHTML=list[Math.floor(Math.random()*list.length)];el.querySelectorAll('script').forEach(function(s){var ns=document.createElement('script');if(s.src){ns.src=s.src;ns.async=true;}
56else ns.textContent=s.textContent;s.parentNode.replaceChild(ns,s);});}catch(e){}});}());

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.