1!function(){"use strict";if(!window.StreamerFollow){var followedIds=new Set,i18n_follow="Follow",i18n_unfollow="Unfollow",i18n_followed="Followed",i18n_unfollowed="Unfollowed",browseState={page:1,q:"",total:0,timer:null};document.addEventListener("DOMContentLoaded",function(){!function loadFollowedIds(){return document.querySelector('[data-auth="true"].streamer-follow-fab, [data-auth="true"].streamer-follow-btn')?fetch("/profile/follows/ids").then(function(res){return res.ok?res.json():null}).then(function(data){data&&data.success&&data.ids&&(followedIds=new Set(data.ids.map(Number)),document.querySelectorAll(".streamer-follow-fab[data-streamer-id], .streamer-follow-btn[data-streamer-id]").forEach(function(btn){var id=parseInt(btn.dataset.streamerId,10);id&&followedIds.has(id)&&applyButtonState(btn,!0)}),refreshCardFollowRanks())}).catch(function(){}):Promise.resolve()}(),initFollowsSortable(),function initBrowseStreamersModal(){var modal=document.getElementById("browseStreamersModal");modal&&"true"!==modal.dataset.ready&&(modal.dataset.ready="true",document.getElementById("followsBrowseBtn")?.addEventListener("click",openBrowseModal),document.getElementById("followsBrowseIconBtn")?.addEventListener("click",openBrowseModal),modal.addEventListener("click",function(e){if(e.target.closest("[data-browse-close]"))closeBrowseModal();else{var pageBtn=e.target.closest("[data-browse-page]");if(pageBtn&&!pageBtn.disabled){var pages=Math.max(1,Math.ceil(browseState.total/300));"prev"===pageBtn.dataset.browsePage&&(browseState.page=Math.max(1,browseState.page-1)),"next"===pageBtn.dataset.browsePage&&(browseState.page=Math.min(pages,browseState.page+1)),loadBrowseStreamers()}}}),document.addEventListener("keydown",function(e){"Escape"!==e.key||modal.hidden||closeBrowseModal()}))}(),syncFollowsEmptyState(),function initStreamerPagedLists(){document.querySelectorAll("[data-paged-list]").forEach(initStreamerPagedList)}();var pending=window.__pendingPlayerStreamer,activeCard=document.querySelector(".focus-card.active, .beauty-card.active, .streamer-btn.active"),fab=document.getElementById("streamerFollowFab"),container=document.getElementById("focusPlayerContainer")||document.getElementById("livePlayerContainer");if(pending)setPlayerStreamer(pending.streamerId,void 0,pending.card||activeCard),window.__pendingPlayerStreamer=null;else if(activeCard&&parseInt(activeCard.dataset.streamerId,10))setPlayerStreamer(activeCard.dataset.streamerId,void 0,activeCard);else{var initialId=fab&&fab.dataset.streamerId||container&&container.dataset.streamerId;initialId&&setPlayerStreamer(initialId,void 0,activeCard)}}),window.StreamerFollow={toggle:toggle,handleClick:function handleClick(btn){if(btn)if("true"===btn.dataset.auth){var id=parseInt(btn.dataset.streamerId,10);id&&toggle(id,btn)}else showLogin()},setPlayerStreamer:setPlayerStreamer,getFollowedIds:function(){return followedIds},isFollowing:isFollowing,getStreamerPageUrl:getStreamerPageUrl,computeFollowRank:computeFollowRank,followHeartHtml:followHeartHtml,refreshCardFollowRanks:refreshCardFollowRanks,openBrowseModal:openBrowseModal}}function labels(){var seeded=window.streamerFollowI18n||{};return{follow:seeded.follow||i18n_follow,unfollow:seeded.unfollow||i18n_unfollow,followed:seeded.followed||i18n_followed,unfollowed:seeded.unfollowed||i18n_unfollowed}}function showFollowerCount(){return!0===window.showFollowerCount}function followIconHtml(isFollowing){return'<i class="fa-solid '+(isFollowing?"fa-heart-circle-minus":"fa-heart-circle-plus")+' streamer-follow-btn-icon" aria-hidden="true"></i>'}function t(key,fallback){var value=window.L&&window.L.T?window.L.T(key):null;return value&&value!==key?value:fallback}function followLabel(btn,isFollowing){var fromBtn=btn&&(isFollowing?btn.getAttribute("data-text-unfollow"):btn.getAttribute("data-text-follow"));if(fromBtn)return fromBtn;var pack=labels();return isFollowing?t("streamer.unfollow",pack.unfollow):t("streamer.follow",pack.follow)}function applyStreamerMeta(fab,name,avatar){if(fab){var nameEl=fab.querySelector(".streamer-follow-fab-name"),img=fab.querySelector(".streamer-follow-fab-avatar img"),displayName=function formatStreamerName(name){return"function"==typeof formatBlvStreamerName?formatBlvStreamerName(name||"")||name||"BLV":(name||"").trim()||"BLV"}(name);nameEl&&(nameEl.textContent=displayName,fab.dataset.streamerName=displayName),img&&(img.alt=displayName,avatar&&(img.src=avatar))}}function showLogin(){"function"!=typeof showLoginRequiredModal?window.AuthModal?window.AuthModal.open("login"):window.location.href="/Account/Login?returnUrl="+encodeURIComponent(window.location.pathname+window.location.search):showLoginRequiredModal()}function getStreamerPageUrl(streamerId){var id=parseInt(streamerId,10);return id>
10?"/streamer/"+id:""}function isFollowing(streamerId){var id=parseInt(streamerId,10);return id>0&&followedIds.has(id)}function computeFollowRank(streamerId,isLive){var followed=isFollowing(streamerId);return isLive&&followed?0:isLive?1:followed?2:3}function followHeartHtml(){return'<span class="focus-card-follow-heart" aria-hidden="true"><svg viewBox="0 0 24 24"><path fill="currentColor" d="M12 21.35l-1.45-1.32C5.4 15.36 2 12.28 2 8.5 2 5.42 4.42 3 7.5 3c1.74 0 3.41.81 4.5 2.09C13.09 3.81 14.76 3 16.5 3 19.58 3 22 5.42 22 8.5c0 3.78-3.4 6.86-8.55 11.54L12 21.35z"/></svg></span>'}function refreshCardFollowRanks(){document.querySelectorAll(".focus-card-item").forEach(function(item){var card=item.querySelector(".focus-card, .beauty-card, .focus-match-card"),sid=card&&card.dataset?card.dataset.streamerId:"",isLive="true"===item.dataset.isLive||!!(card&&card.classList&&card.classList.contains("is-live")),followed=isFollowing(sid);item.dataset.followRank=String(computeFollowRank(sid,isLive)),item.classList.toggle("is-followed",followed),followed&&function ensureFollowHeart(item){var bg=item.querySelector(".focus-card-bg, .beauty-card-bg");bg&&!bg.querySelector(".focus-card-follow-heart")&&bg.insertAdjacentHTML("afterbegin",'<span class="focus-card-follow-heart" aria-hidden="true"><svg viewBox="0 0 24 24"><path fill="currentColor" d="M12 21.35l-1.45-1.32C5.4 15.36 2 12.28 2 8.5 2 5.42 4.42 3 7.5 3c1.74 0 3.41.81 4.5 2.09C13.09 3.81 14.76 3 16.5 3 19.58 3 22 5.42 22 8.5c0 3.78-3.4 6.86-8.55 11.54L12 21.35z"/></svg></span>')}(item)}),"function"==typeof window.sortFocusCardsByTime&&window.sortFocusCardsByTime()}function applyButtonState(btn,isFollowing,followerCount){if(btn){btn.classList.toggle("is-following",!!isFollowing),btn.dataset.following=isFollowing?"true":"false";var nextLabel=followLabel(btn,isFollowing),label=btn.querySelector(".streamer-follow-fab-text, .streamer-follow-btn-text");label&&(label.textContent=btn.classList.contains("streamer-follow-header-btn")?followLabel(btn,!1):nextLabel);var icon=btn.querySelector(".streamer-follow-btn-icon");if(icon&&(icon.classList.toggle("fa-heart-circle-plus",!isFollowing),icon.classList.toggle("fa-heart-circle-minus",!!isFollowing)),(btn.classList.contains("is-icon-only")||btn.classList.contains("streamer-follow-header-btn"))&&(btn.setAttribute("aria-label",nextLabel),btn.setAttribute("title",nextLabel)),"number"==typeof followerCount)document.querySelectorAll('.streamer-follower-count[data-streamer-id="'+btn.dataset.streamerId+'"]').forEach(function(el){el.textContent=String(followerCount)})}}function bindPlayerFollowButton(btn,id,following){if(btn){if(!id)return btn.hidden=!0,btn.classList.remove("is-visible"),void(btn.dataset.streamerId="");btn.hidden=!1,btn.classList.add("is-visible"),btn.dataset.streamerId=String(id),applyButtonState(btn,following)}}function setPlayerStreamer(streamerId,isFollowing,card){var fab=document.getElementById("streamerFollowFab"),headerBtn=document.getElementById("streamerFollowHeaderBtn"),container=document.getElementById("focusPlayerContainer")||document.getElementById("livePlayerContainer"),id=parseInt(streamerId,10)||0;container&&(container.dataset.streamerId=id?String(id):"");var following="boolean"==typeof isFollowing?isFollowing:followedIds.has(id);bindPlayerFollowButton(fab,id,following),bindPlayerFollowButton(headerBtn,id,following);var metaCard=card||document.querySelector(".focus-card.active, .beauty-card.active, .streamer-btn.active");if(fab&&metaCard){var meta=function resolveCardStreamerMeta(card){if(!card)return{name:"",avatar:""};var name=(card.dataset.streamer||card.dataset.streamerName||"").trim();if(!name){var item=card.closest(".focus-card-item")||card.parentElement||card,label=item.querySelector?item.querySelector(".focus-card-streamer"):null;name=(label&&label.textContent||"").replace(/\s+/g," ").trim()}return{name:name,avatar:(card.dataset.streamerAvatar||card.dataset.coverImage||"").trim()}}(metaCard);applyStreamerMeta(fab,meta.name,meta.avatar)}}function toggle(streamerId,sourceBtn){fetch("/profile/follows/toggle",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify({streamerId:streamerId})}).then(function(res){return 401===res.status||403===res.status?(showLogin(),null):res.json()}).then(function(data){if(data)if(data.success){if(data.isFollowing?followedIds.add(streamerId):followedIds.delete(streamerId),function syncAllButtons(streamerId,isFollowing,followerCount){document.querySelectorAll('[data-streamer-id="'+streamerId+'"].streamer-follow-fab, [data-streamer-id="'+streamerId+'"].streamer-follow-btn').forEach(function(btn
1){applyButtonState(btn,isFollowing,followerCount)})}(streamerId,data.isFollowing,data.followerCount),refreshCardFollowRanks(),function updateFollowsPanel(streamerId,isFollowing,followerCount,sourceBtn){var list=document.getElementById("followsList");if(list){if(isFollowing){if(!list.querySelector('.follows-item[data-streamer-id="'+streamerId+'"]')){var card=sourceBtn&&sourceBtn.closest?sourceBtn.closest(".browse-streamer-card"):null;!function upsertFollowsRow(streamerId,name,avatar,followerCount){var list=document.getElementById("followsList");if(!list)return;if(list.querySelector('.follows-item[data-streamer-id="'+streamerId+'"]'))return void syncFollowsEmptyState();list.insertAdjacentHTML("afterbegin",function buildFollowRow(streamerId,name,avatar,followerCount){var safeAvatar=avatar||"/images/default-avatar.svg",url=getStreamerPageUrl(streamerId);return'<div class="content-item follows-item" data-streamer-id="'+streamerId+'"><button type="button" class="follows-drag-handle" title="'+t("user.reorderFollows","Drag to reorder")+'"><svg viewBox="0 0 10 16" width="10" height="16" aria-hidden="true" focusable="false"><circle cx="2" cy="2" r="1.35"></circle><circle cx="8" cy="2" r="1.35"></circle><circle cx="2" cy="8" r="1.35"></circle><circle cx="8" cy="8" r="1.35"></circle><circle cx="2" cy="14" r="1.35"></circle><circle cx="8" cy="14" r="1.35"></circle></svg></button><div class="content-icon"><img src="'+safeAvatar+'" alt="" loading="lazy" draggable="false" onerror="this.onerror=null; this.src=\'/images/default-avatar.svg\';"></div><div class="content-body"><div class="content-title"></div>'+function followerCountHtml(streamerId,followerCount){return showFollowerCount()?'<div class="content-meta"><span><span class="streamer-follower-count" data-streamer-id="'+streamerId+'">'+(followerCount||0)+"</span> "+t("streamer.followers","followers")+"</span></div>":""}(streamerId,followerCount)+'</div><div class="content-actions"><a href="'+url+'" class="action-btn view" title="'+t("user.view","View")+'"><i class="fas fa-eye"></i></a><button type="button" class="action-btn delete streamer-follow-btn is-following" data-streamer-id="'+streamerId+'" data-auth="true" data-following="true" data-text-follow="'+t("streamer.follow",labels().follow)+'" data-text-unfollow="'+t("streamer.unfollow",labels().unfollow)+'" onclick="window.StreamerFollow?.handleClick(this)">'+followIconHtml(!0)+"</button></div></div>"}(streamerId,0,avatar,followerCount));var title=list.querySelector('.follows-item[data-streamer-id="'+streamerId+'"] .content-title');title&&(title.textContent=name||"BLV");syncFollowsEmptyState()}(streamerId,card&&card.dataset?card.dataset.name:"",card&&card.dataset?card.dataset.avatar:"",followerCount),updateFollowsCount(1)}}else list.querySelectorAll('.follows-item[data-streamer-id="'+streamerId+'"]').forEach(function(item){item.remove()}),updateFollowsCount(-1);syncFollowsEmptyState()}}(streamerId,data.isFollowing,data.followerCount,sourceBtn),"function"==typeof showToast){var pack=labels();showToast(data.isFollowing?t("streamer.followed",pack.followed):t("streamer.unfollowed",pack.unfollowed),"success")}}else data.message&&-1!==String(data.message).indexOf("æªç»å½")?showLogin():"function"==typeof showToast&&showToast(data.message||"Failed","error")}).catch(function(){"function"==typeof showToast&&showToast("Network error","error")})}function initFollowsSortable(){var list=document.querySelector("#panel-follows .follows-sortable");if(list&&"true"!==list.dataset.sortableReady){list.dataset.sortableReady="true";var drag=null;list.addEventListener("pointerdown",function(e){if(0===e.button){var handle=e.target.closest(".follows-drag-handle");if(handle&&list.contains(handle)){var item=handle.closest(".follows-item");item&&(e.preventDefault(),drag={item:item,pointerId:e.pointerId,startY:e.clientY,active:!1,startOrder:currentIds().join(",")},document.addEventListener("pointermove",onPointerMove,{passive:!1}),document.addEventListener("pointerup",onPointerUp),document.addEventListener("pointercancel",onPointerUp))}}})}function getAllItems(){return Array.from(list.querySelectorAll(":scope > .follows-item"))}function currentIds(){return getAllItems().map(function(el){return parseInt(el.dataset.streamerId,10)}).filter(function(id){return id>0})}function clearDropMarks(){list.querySelectorAll(".follows-drop-before, .follows-drop-after").forEach(function(el){el.classList.remove("follows-drop-before","follows-drop-after")})}function moveByClientY(clientY){if(drag){var item=drag.item,others=function getItems(){return getAllItems().filter(function(el){return!el.classList.contains("is-search-hidden")&&!el.classList.contains("is-page-hidden")})}().filter(function(el){return el!==item});if(clearDropMarks(),others.length){for(var i=0;i<others.length;i++){var rect=others[i].getBoundingClientRect();if(clientY<rect.top+rect.height/2)return others[i].classList.add("follows-drop-before"),void(item.nextSibling!==others[i]&&list.insertBefore(item,others[i])
1)}var last=others[others.length-1];last.classList.add("follows-drop-after"),item.previousSibling!==last&&list.appendChild(item)}}}function onPointerMove(e){drag&&e.pointerId===drag.pointerId&&(!drag.active&&Math.abs(e.clientY-drag.startY)<5||(drag.active||(drag.active=!0,drag.item.classList.add("is-dragging"),list.classList.add("is-reordering")),e.preventDefault(),moveByClientY(e.clientY)))}function onPointerUp(e){if(drag&&e.pointerId===drag.pointerId){document.removeEventListener("pointermove",onPointerMove),document.removeEventListener("pointerup",onPointerUp),document.removeEventListener("pointercancel",onPointerUp);var changed=drag.active&&drag.startOrder!==currentIds().join(",");drag.item.classList.remove("is-dragging"),list.classList.remove("is-reordering"),clearDropMarks(),drag=null,changed&&function persistOrder(){var ids=currentIds();ids.length&&fetch("/profile/follows/reorder",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({streamerIds:ids})}).then(function(res){return res.json()}).then(function(data){data&&!data.success&&"function"==typeof showToast&&showToast(data.message||"Failed","error")}).catch(function(){"function"==typeof showToast&&showToast("Network error","error")})}()}}}function syncFollowsEmptyState(){var list=document.getElementById("followsList"),empty=document.getElementById("followsEmpty");if(list&&empty){var has=list.querySelectorAll(".follows-item").length>0;empty.hidden=has,list.hidden=!has,window.ProfileListTools&&window.ProfileListTools.refresh("follows")}}function updateFollowsCount(delta){var countEl=document.querySelector('.profile-widget-card[data-tab="follows"] .profile-widget-value');countEl&&(countEl.textContent=String(Math.max(0,(parseInt(countEl.textContent,10)||0)+delta)))}function closeBrowseModal(){var modal=document.getElementById("browseStreamersModal");modal&&(modal.hidden=!0),document.body.style.overflow=""}function renderBrowseGrid(items){var grid=document.getElementById("browseStreamersGrid"),empty=document.getElementById("browseStreamersEmpty");if(grid&&empty){if(!items||!items.length)return grid.innerHTML="",void(empty.hidden=!1);empty.hidden=!0,grid.innerHTML=items.map(function(item){var following=!!item.isFollowing;return'<article class="browse-streamer-card" data-streamer-id="'+item.id+'" data-name="'+String(item.name||"").replace(/"/g,""")+'" data-avatar="'+String(item.avatarUrl||"").replace(/"/g,""")+'"><img src="'+(item.avatarUrl||"/images/default-avatar.svg")+'" alt="" loading="lazy" onerror="this.onerror=null; this.src=\'/images/default-avatar.svg\';"><div class="browse-streamer-name"></div>'+(showFollowerCount()?'<div class="browse-streamer-followers"><span class="streamer-follower-count" data-streamer-id="'+item.id+'">'+(item.followerCount||0)+"</span> "+t("streamer.followers","followers")+"</div>":"")+'<button type="button" class="streamer-follow-btn browse-follow-btn'+(following?" is-following":"")+'" data-streamer-id="'+item.id+'" data-auth="true" data-following="'+(following?"true":"false")+'" onclick="window.StreamerFollow?.handleClick(this)">'+followIconHtml(following)+'<span class="streamer-follow-btn-text">'+(following?t("streamer.unfollow",i18n_unfollow):t("streamer.follow",i18n_follow))+"</span></button></article>"}).join(""),Array.prototype.forEach.call(grid.querySelectorAll(".browse-streamer-card"),function(card,index){var nameEl=card.querySelector(".browse-streamer-name");nameEl&&(nameEl.textContent=items[index].name||"BLV")})}}function loadBrowseStreamers(){var grid=document.getElementById("browseStreamersGrid");if(grid){grid.innerHTML='<div class="browse-streamers-empty">'+t("match.player.loading","Loading...")+"</div>";var url="/profile/streamers/browse?page="+browseState.page+"&pageSize=300&q="+encodeURIComponent(browseState.q||"");fetch(url,{credentials:"same-origin"}).then(function(res){return res.json()}).then(function(data){data&&data.success?(browseState.total=data.total||0,renderBrowseGrid(data.items||[]),function renderBrowsePager(){var pager=document.getElementById("browseStreamersPager");if(pager){var pages=Math.ceil(browseState.total/300);if(browseState.total<=300)return pager.hidden=!0,void(pager.innerHTML="");pager.hidden=!1,pager.innerHTML='<button type="button" data-browse-page="prev"'+(browseState.page<=1?" disabled":"")+">"+t("user.prevPage","Previous")+"</button><span>"+browseState.page+" / "+pages+'</span><button type="button" data-browse-page="next"'+(browseState.page>=pages?" disabled":"")+">"+t("user.nextPage","Next")+"</button>"}}()):renderBrowseGrid([])}).catch(function(){renderBrowseGrid([])})}}function openBrowseModal(){var modal=document.getElementById("browseStreamersModal");if(modal){modal.hidden=!1,document.body.style.overflow="hidden",browseState.page=1;var input=document.getElementById("browseStreamersSearch");input&&!input.dataset.bound&&(input.dataset.bound="true",input.addEventListener("input",function(){clearTimeout(browseState.t
1imer),browseState.timer=setTimeout(function(){browseState.q=input.value||"",browseState.page=1,loadBrowseStreamers()},250)})),input&&(browseState.q=input.value||"",input.focus()),loadBrowseStreamers()}}function initStreamerPagedList(root){if(root){var pageSize=parseInt(root.dataset.pageSize,10)||20,pager=root.querySelector("[data-list-pager]"),empty=root.querySelector("[data-schedule-empty]"),buttons=root.querySelectorAll("[data-schedule-filter]"),page=1;buttons.forEach(function(btn){btn.addEventListener("click",function(){applyFilter(btn.dataset.scheduleFilter)})}),buttons.length?applyFilter("all"):render()}function applyFilter(filter){root.querySelectorAll("[data-schedule-row]").forEach(function(row){var sport=(row.dataset.sport||"football").toLowerCase(),live="true"===row.dataset.live,show=!filter||"all"===filter||"live"===filter&&live||"football"===filter&&"football"===sport||"basketball"===filter&&"basketball"===sport;row.dataset.filterHidden=show?"false":"true"}),buttons.forEach(function(btn){btn.classList.toggle("is-active",btn.dataset.scheduleFilter===filter)}),page=1,render()}function render(){var rows=Array.from(root.querySelectorAll("[data-page-row]")),eligible=function eligibleRows(){return Array.from(root.querySelectorAll("[data-page-row]")).filter(function(row){return"true"!==row.dataset.filterHidden})}(),total=eligible.length,pages=Math.max(1,Math.ceil(total/pageSize)||1);page>pages&&(page=pages);var showPager=total>pageSize;eligible.forEach(function(row,i){var start=(page-1)*pageSize;row.hidden=showPager&&(i<start||i>=start+pageSize)}),rows.forEach(function(row){"true"===row.dataset.filterHidden&&(row.hidden=!0)}),empty&&(empty.hidden=total>0),function renderPager(pages,current){if(pager)if(pager.innerHTML="",pages<=1)pager.hidden=!0;else{pager.hidden=!1,addBtn("«",1,1===current,!1),addBtn("â¹",current-1,1===current,!1);for(var start=Math.max(1,current-2),end=Math.min(pages,start+4),i=start=Math.max(1,end-4);i<=end;i++)addBtn(String(i),i,!1,i===current);addBtn("âº",current+1,current===pages,!1),addBtn("»",pages,current===pages,!1)}function addBtn(label,target,disabled,active){var btn=document.createElement("button");btn.type="button",btn.className="streamer-pager-btn"+(active?" is-active":""),btn.textContent=label,btn.disabled=!!disabled,disabled||active||btn.addEventListener("click",function(){page=target,render()}),pager.appendChild(btn)}}(showPager?pages:1,page)}}}();
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.