// ==UserScript== // @name My-虎牙优化 // @namespace huya-live-optimized-ai.local // @version 2026.06.14.1 // @description 优化虎牙直播观看体验:画质、显示模式、加载转圈和页面控件屏蔽。 // @author 云上夜未央 // @license GPL-3.0-or-later // @match *://www.huya.com/* // @noframes // @grant GM_addStyle // @grant GM_setValue // @grant GM_getValue // @grant GM_addValueChangeListener // @grant GM_registerMenuCommand // @grant unsafeWindow // @run-at document-end // ==/UserScript== (function () { 'use strict'; const __hyB64ABC = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; const __hyB64Cache = Object.create(null); const __hyTextDecoder = typeof TextDecoder === 'function' ? new TextDecoder() : null; const __hyB64 = value => { if (Object.prototype.hasOwnProperty.call(__hyB64Cache, value)) return __hyB64Cache[value]; let buffer = 0; let bits = 0; const bytes = []; for (let index = 0; index < value.length; index += 1) { const char = value.charAt(index); if (char === '=') break; const code = __hyB64ABC.indexOf(char); if (code < 0) continue; buffer = (buffer << 6) | code; bits += 6; if (bits >= 8) { bits -= 8; bytes.push((buffer >> bits) & 255); } } const decoded = __hyTextDecoder ? __hyTextDecoder.decode(new Uint8Array(bytes)) : decodeURIComponent(bytes.map(byte => '%' + byte.toString(16).padStart(2, '0')).join('')); __hyB64Cache[value] = decoded; return decoded; }; try { if (window.top !== window.self) return; } catch (e) { return; } const _w = (typeof unsafeWindow !== 'undefined') ? unsafeWindow : window; const VERSION = '2026.06.14.1'; const STORE_KEY = 'hy_opt'; const CUSTOM_PROFILE_STORE_KEY = '__custom_control_profiles'; const CUSTOM_PROFILE_LIMIT = 12; const AREA = { POPUP: 180000, GIFT: 160000, NAV: 12000, SMALL: 5000, BADGE: 1200 }; const TIMING = { FULLSCREEN_POLL_MS: 1200, FULLSCREEN_MAX: 8, QUALITY_POLL_MS: 1500, QUALITY_MAX: 8, STOP_MIN_DELAY: 15000, OBSERVER_THROTTLE: 1200, DETAIL_SCROLL_MS: 1200 }; const TEXT_LEN = { NAV_SHORT: 12, NAV_LONG: 18, LOGIN: 6 }; const joinText = parts => parts.join(''); const buildTextPattern = (parts, flags = '') => new RegExp(parts.map(part => Array.isArray(part) ? joinText(part) : part).join('|'), flags); const SECRET_CONTROL_LABEL = joinText(['这', '是', '一', '个', '小', '秘', '密']); const HEADER_GAME_PROMO_TEXT_RE = buildTextPattern([['三', '角', '洲'], ['跑', '图'], ['游', '戏', '推', '广']]); const HEADER_ACTIVITY_PROMO_TEXT_RE = buildTextPattern([['活', '动'], ['福', '利'], ['礼', '包'], ['抽', '奖'], ['竞', '猜']]); const HEADER_USER_NAME_EXCLUDE_RE = new RegExp(`^(?:登录|下载|历史|任务|开播|消息|通知|${joinText(['活', '动'])}|${joinText(['福', '利'])})$`); const PLAYER_POPUP_SIGNAL_RE = buildTextPattern([['广', '告'], ['推', '广'], ['赞', '助'], ['福', '利'], ['活', '动'], ['抽', '奖'], ['红', '包'], ['礼', '包'], ['下', '载'], 'APP', ['扫', '码'], ['二', '维', '码'], 'ad\\b', 'ads\\b', 'advert', 'promo', 'promotion', 'welfare', 'lottery', 'activity', 'campaign', 'download', 'app', 'qrcode', 'qr-code'], 'i'); const GIFT_BENEFIT_SIGNAL_RE = buildTextPattern(['benefit', 'Benefit', 'privilege', 'Privilege', 'rights', 'Rights', 'reward', 'Reward', 'bonus', 'Bonus', 'rebate', 'Rebate', 'welfare', 'Welfare', 'activity[-_ ]?tip', 'ActivityTip', 'activity[-_ ]?pop', 'ActivityPop', 'activity[-_ ]?tooltip', 'ActivityTooltip', ['权', '益'], ['特', '权'], ['奖', '励'], ['福', '利'], ['返', '利'], ['加', '成'], ['活', '动', '说', '明'], ['活', '动', '浮', '层']], 'i'); const FIRST_CHARGE_TEXT_RE = new RegExp(`^首充(?:${joinText(['礼', '包'])})?$`); if (_w.__MY_HUYA_OPT_ACTIVE__) { console.warn('[HY] My-虎牙优化 已有实例运行,跳过重复初始化'); return; } _w.__MY_HUYA_OPT_ACTIVE__ = VERSION; let store = {}; let panel = null; let panelTitleEl = null; let mainViewEl = null; let detailViewEl = null; let detailEscapeHandler = null; let statsEl = null; let statusPillEl = null; let settingsPillEl = null; let blocksPillEl = null; let settingsEntryStatusEl = null; let theme = 'dark'; const roomFlags = {}; const activeTimers = new Set(); const regionRowRefs = {}; const regionBulkRefs = {}; let controlBulkInput = null; let controlBulkStatusEl = null; let controlPresetButtons = []; let secretControlInputEl = null; let customProfileSelectEl = null; let customProfileNameInputEl = null; let customProfileStatusEl = null; let customProfileApplyBtnEl = null; let customProfileDeleteBtnEl = null; let deferredApplyTimer = null; let storageSyncTimer = null; const SETTINGS = [ { key: 'script_enabled', name: '脚本功能总开关', desc: '一键启用或暂停显示模式、画质选择和控件屏蔽;关闭后保留设置但不再应用到页面', type: 'switch', def: true }, { key: 'fullscreen_mode', name: '进房显示模式', desc: '进入直播间后自动切换播放器显示状态', type: 'dropdown', def: 'off', options: [ { value: 'off', label: '不切换' }, { value: 'theater', label: '网页剧场模式' }, { value: 'fullscreen', label: '尝试浏览器全屏' } ] }, { key: 'quality_mode', name: '画质选择', desc: '默认不切换;可手动选择画质,自动最高优先选择无需扫码的最高可用画质', type: 'quality', def: 'off' }, { key: 'stop_loading_spinner', name: '加载转圈修复', desc: '直播间核心播放器就绪并完成一段补载后,停止统计等悬挂请求,减少浏览器标签页一直转圈', type: 'switch', def: true } ]; function loadStore() { try { const raw = GM_getValue(STORE_KEY, null); if (raw && typeof raw === 'object') store = raw; } catch (e) {} } function saveStore() { try { GM_setValue(STORE_KEY, store); } catch (e) {} } function getVal(key, def) { return Object.prototype.hasOwnProperty.call(store, key) ? store[key] : def; } function setVal(key, val) { store[key] = val; saveStore(); } function refreshPanelStateFromStore() { refreshSwitchInputs(); refreshDropdownRows(); updateQualityOptions(); refreshRegionRows(); refreshControlBulkState(); refreshControlPresetState(); refreshSecretControlState(); refreshCustomProfileUI(); refreshStats(); } function scheduleStorageRefresh() { if (storageSyncTimer) clearTimeout(storageSyncTimer); storageSyncTimer = setTimeout(() => { storageSyncTimer = null; refreshPanelStateFromStore(); scheduleApplyAll(); }, 120); } function setupStorageSync() { if (typeof GM_addValueChangeListener !== 'function') return; try { GM_addValueChangeListener(STORE_KEY, (key, oldValue, newValue, remote) => { if (!remote || !newValue || typeof newValue !== 'object') return; store = newValue; scheduleStorageRefresh(); }); GM_addValueChangeListener(CUSTOM_PROFILE_STORE_KEY, (key, oldValue, newValue, remote) => { if (!remote) return; refreshCustomProfileUI(); }); } catch (e) {} } function isScriptEnabled() { return getVal('script_enabled', true) !== false; } function migrateLegacyControlBlocks() { let changed = false; Object.entries(LEGACY_CONTROL_BLOCK_MIGRATIONS).forEach(([legacyKey, childKeys]) => { if (!getVal(legacyKey, false)) return; childKeys.forEach(key => { if (!CONTROL_BLOCK_MAP[key] || getVal(key, false)) return; store[key] = true; changed = true; }); store[legacyKey] = false; changed = true; }); ONE_TIME_CONTROL_BLOCK_MIGRATIONS.forEach(({ markerKey, sourceKey, childKeys }) => { if (getVal(markerKey, false)) return; if (getVal(sourceKey, false)) { childKeys.forEach(key => { if (!CONTROL_BLOCK_MAP[key] || getVal(key, false)) return; store[key] = true; }); } store[markerKey] = true; changed = true; }); if (changed) saveStore(); } function managedSetInterval(fn, ms, maxCount) { let count = 0; const id = setInterval(() => { count += 1; fn(id, count); if (count >= maxCount) clearManagedInterval(id); }, ms); activeTimers.add(id); return id; } function clearManagedInterval(id) { clearInterval(id); activeTimers.delete(id); } function clearAllTimers() { activeTimers.forEach(id => clearInterval(id)); activeTimers.clear(); } function isHuyaHost() { return location.hostname === 'huya.com' || location.hostname.endsWith('.huya.com'); } function getLiveRoot() { return document.querySelector('[data-hy-live-root="1"]') || document.querySelector('#J_mainRoom') || document.querySelector('.main-room') || document.querySelector('#liveRoomObj') || document.querySelector('.room-player'); } function markLiveRoot() { const root = getLiveRoot(); if (root && root.setAttribute) root.setAttribute('data-hy-live-root', '1'); return root; } function isLivePage() { return isHuyaHost() && /^\/[^/?#]+\/?$/.test(location.pathname) && !!getLiveRoot(); } function getRoomId() { const m = location.pathname.match(/^\/([^/?#]+)/); return m ? m[1] : null; } function resetRoomState() { Object.keys(roomFlags).forEach(key => delete roomFlags[key]); clearAllTimers(); QualityUnlocker.stop(); } function detectTheme() { theme = window.matchMedia && window.matchMedia('(prefers-color-scheme: light)').matches ? 'light' : 'dark'; if (document.documentElement) document.documentElement.setAttribute('data-hy-theme', theme); if (panel) panel.setAttribute('data-theme', theme); } function ensureControlBlockStyleEl() { if (controlBlockStyleEl && controlBlockStyleEl.isConnected) return controlBlockStyleEl; controlBlockStyleEl = document.getElementById('hy-control-block-css'); if (!controlBlockStyleEl) { controlBlockStyleEl = document.createElement('style'); controlBlockStyleEl.id = 'hy-control-block-css'; (document.head || document.documentElement).appendChild(controlBlockStyleEl); } return controlBlockStyleEl; } function buildControlBlockCss(item) { const body = item.hideMode === 'transparent' ? 'opacity:0!important;pointer-events:none!important' : 'display:none!important'; return item.selectors.map(selector => `${withKeepVisibleExclusion(selector)}{${body}}`).join('\n'); } function applyControlBlocks() { const oldStyleEl = controlBlockStyleEl && controlBlockStyleEl.isConnected ? controlBlockStyleEl : document.getElementById('hy-control-block-css'); if (oldStyleEl) oldStyleEl.textContent = ''; if (!isScriptEnabled()) { clearDynamicControlMarks(); return; } const enabledBlocks = ACTIVE_CONTROL_BLOCKS.filter(item => getVal(item.key, false)); markDynamicControls(enabledBlocks); const css = enabledBlocks .map(buildControlBlockCss) .join('\n'); if (!css && !controlBlockStyleEl) return; ensureControlBlockStyleEl().textContent = css; } function getRegionChildren(region) { return region.childKeys .map(key => CONTROL_BLOCK_MAP[key]) .filter(item => item && !INTERNAL_CONTROL_BLOCK_KEYS.has(item.key)); } function getRegionState(region) { const children = getRegionChildren(region); const enabled = children.filter(item => getVal(item.key, false)).length; return { total: children.length, enabled, all: children.length > 0 && enabled === children.length, partial: enabled > 0 && enabled < children.length }; } const ADVANCED_CONTROL_BLOCK_KEYS = new Set([ 'block_sidebar_rank_avatars', 'block_sidebar_rank_user_names', 'block_sidebar_rank_values', 'block_sidebar_rank_numbers', 'block_sidebar_chat_enter_messages', 'block_sidebar_chat_notice_messages', 'block_sidebar_chat_noble_messages', 'block_sidebar_chat_guard_messages', 'block_sidebar_chat_subscribe_messages', 'block_sidebar_chat_gift_messages', 'block_sidebar_chat_manager_messages', 'block_sidebar_chat_lottery_messages', 'block_sidebar_chat_emoji_panel', 'block_sidebar_chat_quick_reply_panel', 'block_sidebar_chat_identity_panel', 'block_sidebar_chat_login_permission_tip', 'block_sidebar_chat_tool_popover', 'block_player_network_notice', 'block_player_latency_notice', 'block_player_reconnect_notice', 'block_player_pause_loading_notice', 'block_player_quality_qrcode_notice', 'block_gift_face_item_icons', 'block_gift_face_item_names', 'block_gift_face_item_prices', 'block_gift_face_item_badges', 'block_gift_face_item_counts', 'block_gift_face_hover_detail', 'block_gift_face_combo_controls', 'block_gift_face_inventory_status', 'block_gift_face_send_button', 'block_gift_face_activity_badges_ext', 'block_room_below_category_recommend_items', 'block_room_below_category_recommend_title', 'block_room_below_category_recommend_icons', 'block_room_below_category_recommend_names', 'block_room_below_category_recommend_status_badges', 'block_room_below_category_recommend_view_counts', 'block_room_below_category_recommend_actions', 'block_room_below_category_recommend_hover_overlay' ]); const PLAYER_CONTROL_SELECTORS = [ '#player-ctrl-wrap', '.player-ctrl-wrap', '[class*="player-control"]', '[class*="PlayerControl"]', '[class*="control-bar"]', '[class*="ControlBar"]', '#player-danmu-wrap', '#player-danmu-btn', '#player-sound-btn', '#player-videotype', '#player-fullpage-btn', '#player-fullscreen-btn', '#shielding-effect', '.player-refresh-btn', '.player-report-btn', '.sound-progress', '.sound-bg', '.sound-bar', '.sound-btn' ].join(','); function isAdvancedControlBlock(item) { return !!item && ADVANCED_CONTROL_BLOCK_KEYS.has(item.key); } function isElementVisible(el) { if (!el || !el.isConnected) return false; const style = window.getComputedStyle(el); if (style.display === 'none' || style.visibility === 'hidden' || style.pointerEvents === 'none') return false; const rect = el.getBoundingClientRect(); return rect.width > 0 && rect.height > 0; } function findFirstVisible(selectors) { for (const selector of selectors) { const candidates = document.querySelectorAll(selector); for (const el of candidates) { if (isElementVisible(el)) return el; } } return null; } function getText(el) { return String(el && el.textContent || '').trim().replace(/\s+/g, ' '); } function getOwnText(el) { if (!el || !el.childNodes) return ''; return Array.from(el.childNodes) .filter(node => node.nodeType === Node.TEXT_NODE) .map(node => node.textContent || '') .join(' ') .trim() .replace(/\s+/g, ' '); } function getElementSignal(el, options) { const opts = options || {}; return [ opts.includeId ? el.id : null, el.getAttribute('title'), el.getAttribute('aria-label'), el.getAttribute('data-title'), el.getAttribute('data-name'), el.getAttribute('data-tip'), el.getAttribute('alt'), el.className, getOwnText(el), opts.includeText ? (opts.maxTextLength ? getText(el).slice(0, opts.maxTextLength) : getText(el)) : null ].filter(Boolean).join(' '); } function withKeepVisibleExclusion(selector) { if (!selector || selector.includes(KEEP_VISIBLE_ATTR)) return selector; return selector + ':not(' + KEEP_VISIBLE_SELECTOR + '):not(' + KEEP_VISIBLE_SELECTOR + ' *)'; } function isKeepVisibleSignal(signal) { return /彩蛋|easter[-_\s]?egg|easteregg|easter\b|\begg\b|cai[-_\s]?dan|caidan/i.test(String(signal || '')); } function shouldKeepVisible(el) { if (!el || !el.getAttribute) return false; if (el.hasAttribute(KEEP_VISIBLE_ATTR) || el.closest(KEEP_VISIBLE_SELECTOR)) return true; return false; } function markKeepVisible(el) { if (!el || !el.setAttribute || el.closest('#hy-panel')) return; el.setAttribute(KEEP_VISIBLE_ATTR, 'easter_egg'); } function resolveKeepVisibleContainer(el) { let current = el; let best = el; while (current && current !== document.body && current !== document.documentElement) { const signal = getElementSignal(current, { includeId: true }); const rect = current.getBoundingClientRect(); const area = rect.width * rect.height; if (isKeepVisibleSignal(signal) && rect.width > 0 && rect.height > 0 && area <= AREA.POPUP) best = current; current = current.parentElement; } return best; } function markKeepVisibleControls() { const selector = [ '[data-hy-keep-visible]', '[data-hy-qa-keep-visible]', '[data-hy-qa-easter-egg]', '[class*="egg"]', '[class*="Egg"]', '[class*="easter"]', '[class*="Easter"]', '[class*="caidan"]', '[class*="Caidan"]', '[class*="cai-dan"]', '[class*="CaiDan"]', '[title*="彩蛋"]', '[aria-label*="彩蛋"]', '[data-title*="彩蛋"]', '[data-name*="彩蛋"]' ].join(','); const direct = Array.from(document.querySelectorAll(selector)); const textHits = Array.from(document.querySelectorAll('div,section,aside,a,button,li,span,p,strong,em,i')) .filter(el => !el.closest('#hy-panel')) .filter(el => isElementVisible(el)) .filter(el => isKeepVisibleSignal(getElementSignal(el, { includeId: true }))); Array.from(new Set(direct.concat(textHits))).forEach(el => { markKeepVisible(el); markKeepVisible(resolveKeepVisibleContainer(el)); const item = el.closest('a,button,li,section,aside,div'); if (item) markKeepVisible(resolveKeepVisibleContainer(item)); }); } function genSelectors(dynBlock, roots, items, classPatterns) { const selectors = ['[data-hy-control-block="' + dynBlock + '"]']; for (const root of roots) { for (const item of items) { for (const cls of classPatterns) { selectors.push(root + ' ' + item + ' ' + cls); } } } return selectors; } function genChatInputSelectors(dynBlock, roots, subSelectors) { const selectors = ['[data-hy-control-block="' + dynBlock + '"]']; for (const root of roots) { for (const sub of subSelectors) { selectors.push(root + ' ' + sub); } } return selectors; } function markLeafElements(root, leafSel, pattern, name, opts) { const o = opts || {}; Array.from(root.querySelectorAll(leafSel)) .filter(el => el !== root) .filter(el => o.excludeSelector ? !el.closest(o.excludeSelector) : true) .filter(el => o.leafFilter ? o.leafFilter(el) : isElementVisible(el)) .filter(el => { const signal = getElementSignal(el, o.signalOptions || {}); if (!signal || !pattern.test(signal)) return false; if (o.reject && o.reject.test(signal)) return false; return true; }) .forEach(el => { const target = o.container ? (el.closest(o.container) || el) : el; if (!target || target === root) return; if (o.targetExcludeSelector && target.closest(o.targetExcludeSelector)) return; markControl(target, name); }); } function makeSmallLeafFilter(maxText, maxW, maxH, extraCheck) { return (el) => { if (!isElementVisible(el)) return false; if (extraCheck && !extraCheck(el)) return false; const rect = el.getBoundingClientRect(); const text = getOwnText(el) || getText(el); if (text.length > maxText) return false; return rect.width > 0 && rect.height > 0 && rect.width <= maxW && rect.height <= maxH; }; } function clearDynamicControlMarks() { document.querySelectorAll('[' + DYNAMIC_CONTROL_ATTR + ']').forEach(el => { el.removeAttribute(DYNAMIC_CONTROL_ATTR); }); document.querySelectorAll(KEEP_VISIBLE_SELECTOR).forEach(el => { el.removeAttribute(KEEP_VISIBLE_ATTR); }); } function markControl(el, name) { if (el && el.setAttribute && !shouldKeepVisible(el)) el.setAttribute(DYNAMIC_CONTROL_ATTR, name); } function findTextTarget(root, pattern, options) { if (!root) return null; const opts = options || {}; const candidates = Array.from(root.querySelectorAll(opts.selector || '*')) .filter(isElementVisible) .map(el => { const rect = el.getBoundingClientRect(); const text = getOwnText(el) || getText(el); return { el, rect, text, area: rect.width * rect.height }; }) .filter(item => { if (!item.text || !pattern.test(item.text)) return false; if (opts.maxTextLength && item.text.length > opts.maxTextLength) return false; if (opts.maxArea && item.area > opts.maxArea) return false; if (opts.minX !== undefined && item.rect.x < opts.minX) return false; if (opts.maxX !== undefined && item.rect.x > opts.maxX) return false; if (opts.minY !== undefined && item.rect.y < opts.minY) return false; if (opts.maxY !== undefined && item.rect.y > opts.maxY) return false; return true; }) .sort((a, b) => a.area - b.area); return candidates.length ? candidates[0].el : null; } function markHeaderDynamicControls(enabledKeys) { const canMark = name => !enabledKeys || enabledKeys.has('block_' + name); const navMaxX = Math.min(window.innerWidth * 0.62, 760); const headerRightSelector = '#J_duyaHeaderRight, [class*="HeaderRight"], .duya-header-right, [class*="header-right"], [class*="HeaderActions"], [class*="header-actions"], [class*="NavIg--"], [class*="NavActivity--"], [class*="NavWelfare--"], [class*="NavLottery--"], [class*="NavKaiBo--"], [class*="NavDownload--"]'; const navRoot = document.querySelector('#J_duyaHeaderNav, .duya-header-nav, .duya-header-menu'); const markNavItem = (name, pattern) => { if (!canMark(name)) return; const el = findTextTarget(navRoot, pattern, { selector: 'a,span,li,div', maxTextLength: TEXT_LEN.NAV_SHORT, maxArea: AREA.NAV, minY: 0, maxY: 70, maxX: navMaxX }); const target = el && (el.closest('a,li') || el); if (target && target.closest(headerRightSelector)) return; markControl(target, name); }; markNavItem('header_nav_home', /^首页$/); markNavItem('header_nav_live', /^直播$/); markNavItem('header_nav_category', /^分类$/); markNavItem('header_nav_match', /^赛事$/); markNavItem('header_nav_video', /^视频$/); markNavItem('header_nav_game', /^游戏$/); markNavItem('header_nav_trade', /^游戏卖号$/); const root = document.querySelector('#J_duyaHeaderRight') || document.querySelector('[class*="HeaderRight"]'); if (!root) return; const markHeaderItem = (name, pattern) => { if (!canMark(name)) return; const el = findTextTarget(root, pattern, { maxTextLength: TEXT_LEN.NAV_LONG, maxArea: AREA.SMALL, minY: 0, maxY: 70 }); const item = el && (el.closest('[class*="NavItem--"], a, button') || el); markControl(item, name); }; const markHeaderBySelector = (name, selector, closestSelector) => { if (!canMark(name)) return false; const el = Array.from(root.querySelectorAll(selector)).find(isElementVisible); markControl(el && (closestSelector ? el.closest(closestSelector) : el), name); return !!el; }; const isSmallTopTarget = (el, maxArea) => { if (!isElementVisible(el)) return false; const rect = el.getBoundingClientRect(); return rect.y >= 0 && rect.y <= 70 && rect.width >= 6 && rect.height >= 6 && rect.width * rect.height <= maxArea; }; markHeaderItem('header_game_promo', HEADER_GAME_PROMO_TEXT_RE); markHeaderItem('header_activity_promo', HEADER_ACTIVITY_PROMO_TEXT_RE); markHeaderItem('header_start_live', /^开播$/); markHeaderItem('header_download', /^下载$/); markHeaderItem('header_history', /^历史$/); markHeaderItem('header_task', /^任务$/); if (canMark('header_login')) { const login = findTextTarget(root, /^登录$/, { selector: 'a,button,div,span', maxTextLength: TEXT_LEN.LOGIN, maxArea: AREA.SMALL, minY: 0, maxY: 70 }); markControl(login && (login.closest('[class*="Login--"], [class*="LoginHd--"], a, button') || login), 'header_login'); } if (canMark('header_message')) { markHeaderItem('header_message', /消息|通知|私信/); markHeaderBySelector('header_message', '[class*="NavMessage"], [class*="NavMsg"], [class*="Message"], [class*="message"], [class*="NavIcon-msg"], [class*="NavIcon-message"]', '[class*="NavItem--"], a, button, div'); } const messageRoot = root.querySelector('[data-hy-control-block="header_message"], [class*="NavMessage"], [class*="NavMsg"], [class*="Message"], [class*="message"]'); if (canMark('header_message_badge')) { const badge = messageRoot && Array.from(messageRoot.querySelectorAll('[class*="Badge"], [class*="badge"], [class*="Unread"], [class*="unread"], [class*="Red"], [class*="red"], [class*="Dot"], [class*="dot"], em, i, span')) .find(el => isSmallTopTarget(el, AREA.BADGE) && (/badge|unread|red|dot|num|count/i.test(el.className || '') || /^[\d.]+$/.test(getOwnText(el) || getText(el)))); markControl(badge, 'header_message_badge'); } if (canMark('header_user_avatar')) { const avatar = Array.from(root.querySelectorAll('[class*="UserAvatar"], [class*="user-avatar"], [class*="Avatar"], [class*="avatar"], img[alt*="头像"]')) .find(el => isSmallTopTarget(el, 3600) && !el.closest('[data-hy-control-block="header_message"], [class*="NavMessage"], [class*="NavMsg"], [class*="Message"], [class*="message"]')); markControl(avatar && (avatar.closest('[class*="User"], [class*="user"], a, button') || avatar), 'header_user_avatar'); } if (canMark('header_user_name')) { const userName = Array.from(root.querySelectorAll('[class*="UserName"], [class*="user-name"], [class*="Nick"], [class*="nick"], [class*="Name"], [class*="name"]')) .map(el => ({ el, text: getOwnText(el) || getText(el) })) .find(item => item.text && item.text.length <= TEXT_LEN.NAV_LONG && !HEADER_USER_NAME_EXCLUDE_RE.test(item.text) && isSmallTopTarget(item.el, AREA.SMALL)); markControl(userName && (userName.el.closest('[class*="User"], [class*="user"], a, button') || userName.el), 'header_user_name'); } if (canMark('header_user_menu')) { const userMenu = Array.from(document.querySelectorAll('[class*="UserMenu"], [class*="user-menu"], [class*="UserPanel"], [class*="user-panel"], [class*="UserDrop"], [class*="user-drop"], [class*="Popover"], [class*="popover"], [class*="Dropdown"], [class*="dropdown"]')) .find(el => { if (!isElementVisible(el)) return false; const rect = el.getBoundingClientRect(); const text = getText(el); return rect.y >= 0 && rect.y <= 220 && rect.width <= 520 && /个人中心|我的订阅|我的关注|退出登录|账号|账户|我的钱包|贵族|开播中心/.test(text); }); markControl(userMenu, 'header_user_menu'); } } function markRoomHeaderDynamicControls() { const root = document.querySelector('#J_mainRoom') || document.body; if (!root) return; markControl(findTextTarget(root, /败者组|胜者组|赛事|比赛|LPL|AL|BLG/i, { maxTextLength: 40, maxArea: 16000, minX: 80, maxX: 360, minY: 68, maxY: 110 }), 'room_match_label'); const metaTargets = Array.from(root.querySelectorAll('*')) .filter(isElementVisible) .filter(el => { const rect = el.getBoundingClientRect(); const text = getOwnText(el) || getText(el); return rect.x >= 150 && rect.x <= 560 && rect.y >= 108 && rect.y <= 145 && /^(?:\d{4,}|\d+(?:\.\d+)?万)$/.test(text); }); metaTargets.forEach(el => { const text = getOwnText(el) || getText(el); if (/^\d{4,}$/.test(text)) { markControl(el, 'room_id'); } else if (/^\d+(?:\.\d+)?万$/.test(text)) { markControl(el, 'room_viewer_count'); } }); markControl(findTextTarget(root, /(?:英雄联盟|王者荣耀|穿越火线|绝地求生|视频|游戏)$/, { maxTextLength: 16, maxArea: 8000, minX: 360, maxX: 560, minY: 105, maxY: 150 }), 'room_category'); } function markSidebarRankDynamicControls() { const roots = Array.from(new Set(Array.from(document.querySelectorAll('#J_roomWeeklyRankListRoot, .room-weeklyRankList-content, [class*="RankNabob"]')))) .filter(isElementVisible); if (!roots.length) return; const leafSelector = 'img,picture,span,em,i,b,strong,a,p,div'; const itemSelector = 'li, [class*="rank-item--"], [class*="RankItem"], [class*="rankItem"]'; const isRankLeaf = (el, item) => { if (!isElementVisible(el) || el === item) return false; const rect = el.getBoundingClientRect(); const text = getOwnText(el) || getText(el); if (text.length > 36) return false; return rect.width > 0 && rect.height > 0 && rect.width <= 220 && rect.height <= 48; }; roots.forEach(root => { const items = Array.from(root.querySelectorAll(itemSelector)) .filter(isElementVisible) .filter(item => root.contains(item)); items.forEach((item, index) => { markLeafElements(item, leafSelector, /avatar|Avatar|head|Head|face|Face|photo|Photo|portrait|Portrait|头像/i, 'sidebar_rank_avatars', { leafFilter: (el) => isElementVisible(el) && el !== item, reject: /badge|Badge|medal|Medal|noble|Noble|guardian|Guardian|fans|Fans|level|Level/i }); markLeafElements(item, leafSelector, /nick|Nick|user[-_]?name|UserName|rank[-_]?name|RankName|name|Name|昵称|用户名/i, 'sidebar_rank_user_names', { leafFilter: (el) => isRankLeaf(el, item), reject: /badge|Badge|medal|Medal|fans|Fans|level|Level|score|Score|value|Value|heat|Heat|count|Count|num|Num|index|Index|rank[-_]?no|RankNo/i }); markLeafElements(item, leafSelector, /score|Score|value|Value|contribution|Contribution|heat|Heat|count|Count|point|Point|贡献|互动值|热度|积分|^\d{1,3}(?:,\d{3})*$|^\d+(?:\.\d+)?万?$/i, 'sidebar_rank_values', { leafFilter: (el) => isRankLeaf(el, item), reject: /badge|Badge|medal|Medal|fans|Fans|level|Level|rank[-_]?no|RankNo|rank[-_]?index|RankIndex|rank[-_]?num|RankNum|order|Order|avatar|Avatar|nick|Nick|name|Name/i }); markLeafElements(item, leafSelector, /rank[-_]?index|RankIndex|rank[-_]?no|RankNo|rank[-_]?num|RankNum|rank[-_]?order|RankOrder|order|Order|排名|序号|名次/i, 'sidebar_rank_numbers', { leafFilter: (el) => isRankLeaf(el, item), reject: /score|Score|value|Value|heat|Heat|count|Count|badge|Badge|medal|Medal|fans|Fans|level|Level|avatar|Avatar|nick|Nick|name|Name/i }); const firstRankNumber = Array.from(item.querySelectorAll(leafSelector)) .filter(el => isRankLeaf(el, item)) .find(el => { const text = getOwnText(el) || getText(el); const signal = getElementSignal(el); return /^\d{1,2}$/.test(text) && !/ConsumeLevel|fans-icon|badge|Badge|medal|Medal|level|Level|score|Score|value|Value|heat|Heat/i.test(signal); }); if (firstRankNumber && index < 20) markControl(firstRankNumber, 'sidebar_rank_numbers'); }); }); } function markSidebarDynamicControls() { const root = document.querySelector('#J_roomSide') || document.querySelector('.room-sidebar') || document.body; if (!root) return; Array.from(root.querySelectorAll('[class*="ChatList"], [class*="chat-list"], [class*="msg-list"], [class*="MsgList"], .room-chat-list, #J_msgList, #J_roomChatList, #chat-room__list')) .filter(isElementVisible) .forEach(el => markControl(el, 'sidebar_chat_messages')); const chatRoot = root.querySelector('#chat-room__wrap') || root.querySelector('#J_roomChatList, #J_msgList, #chat-room__list, .room-chat-list, .chat-room__list, [class*="ChatList"], [class*="chat-list"]'); if (chatRoot) { markControl(chatRoot, 'sidebar_chat_messages'); Array.from(chatRoot.querySelectorAll('.msg-normal-decorationPrefix, .fans-icon, [class*="fans-icon"]')) .filter(isElementVisible) .forEach(el => markControl(el, 'sidebar_chat_fans_badges')); Array.from(chatRoot.querySelectorAll('[class*="ConsumeLevelBadge"]')) .filter(isElementVisible) .forEach(el => markControl(el, 'sidebar_chat_level_badges')); Array.from(chatRoot.querySelectorAll('[class*="noble-medal"], [class*="GuardianMedal"], [class*="msg-pic"]')) .filter(isElementVisible) .forEach(el => markControl(el, 'sidebar_chat_noble_effects')); Array.from(chatRoot.querySelectorAll('.name.J_userMenu, [class*="name--"]')) .filter(isElementVisible) .forEach(el => markControl(el, 'sidebar_chat_user_names')); const classifySystemMessage = (el) => { const className = String(el.className || ''); const isSystemClass = /RoomMessageRichText|box-noble-level/.test(className); if (!isSystemClass && !/msg--/.test(className)) return ''; const messageText = Array.from(el.querySelectorAll('[class*="msg-text--"]')) .map(textEl => getText(textEl)) .join(' ') || getText(el); if (!messageText && !isSystemClass) return ''; const qaInteractionClass = /hy-qa-(?:gift|manager|lottery)/i.test(className); const clearSystemContainer = isSystemClass || qaInteractionClass || /system|notice|rich|event|activity|manager|admin|lottery|award/i.test(className); if (clearSystemContainer && /(?:赠送|送出|送给|连送|礼物|虎粮|荧光棒|金豆|宝箱).{0,24}(?:x\d+|\d+个|礼物|虎粮|荧光棒|金豆|宝箱|火箭|飞机|藏宝图|告白|小心心)/.test(messageText)) return 'sidebar_chat_gift_messages'; if (clearSystemContainer && /(?:房管|管理员|管理提示|禁言|解除禁言|被禁言|踢出|拉黑|封禁|巡管|超管|场控)/.test(messageText)) return 'sidebar_chat_manager_messages'; if (clearSystemContainer && /(?:抽奖|中奖|获奖|开奖|中得|获得奖励|福袋|红包|口令|活动奖励|恭喜.{0,20}(?:获得|中奖|中得|抽中))/.test(messageText)) return 'sidebar_chat_lottery_messages'; if (/系统消息|系统公告|直播间公告|房间公告|平台公告|虎牙依法|平台提示|温馨提示|文明发言|绿色直播|请勿|严禁|违规|举报|公告[::]/.test(messageText)) return 'sidebar_chat_notice_messages'; if (/贵族|帝皇|君王|公爵|领主|骑士|开通.*贵族|续费.*贵族/.test(messageText)) return 'sidebar_chat_noble_messages'; if (/守护|开通.*守护|续费.*守护/.test(messageText)) return 'sidebar_chat_guard_messages'; if (/订阅|关注|粉丝团|加入粉丝|成为粉丝/.test(messageText)) return 'sidebar_chat_subscribe_messages'; if (/驾临直播间|进入直播间|进入了直播间|来到直播间|欢迎.{0,20}(?:进入|来到|驾临|直播间|进场)/.test(messageText)) return 'sidebar_chat_enter_messages'; if (/开通|续费/.test(messageText)) return 'sidebar_chat_system_messages'; return isSystemClass ? 'sidebar_chat_system_messages' : ''; }; Array.from(chatRoot.querySelectorAll('[class*="RoomMessageRichText"], [class*="msg--"], [class*="box-noble-level"]')) .filter(isElementVisible) .forEach(el => { const controlName = classifySystemMessage(el); if (!controlName) return; markControl(el.closest('[class*="msg--"], [class*="box-noble-level"], a, div') || el, controlName); }); } Array.from(root.querySelectorAll('input, textarea, [contenteditable="true"], [class*="ChatInput"], [class*="chat-input"], .room-chat-input, #pub_msg_input, #J_roomChatInput')) .filter(isElementVisible) .forEach(el => { const target = el.closest('[class*="ChatInput"], [class*="chat-input"], .room-chat-input, form, div') || el; markControl(target, 'sidebar_chat_input'); }); const inputRoot = root.querySelector('#J_roomChatInput, .room-chat-input, .chat-room__input, [class*="ChatInput"], [class*="chat-input"]'); const sendButton = findTextTarget(inputRoot, /^(发送|Send)$/i, { selector: 'button,a,span,div', maxTextLength: 8, maxArea: 9000 }); const sendButtonTarget = sendButton && (sendButton.closest('button,a,[class*="SendBtn"],[class*="send-btn"]') || sendButton); if (inputRoot) { Array.from(inputRoot.querySelectorAll('#pub_msg_input, textarea, input, [contenteditable="true"]')) .filter(isElementVisible) .filter(el => { if (el.matches && el.matches('input[type="hidden"], input[type="button"], input[type="submit"], input[type="checkbox"], input[type="radio"]')) return false; if (el.matches && el.matches('input') && el.type && !/^(?:text|search)?$/i.test(el.type)) return false; return true; }) .forEach(el => markControl(el, 'sidebar_chat_textarea')); const getInputControlSignal = (el) => [ el.getAttribute('title'), el.getAttribute('aria-label'), el.getAttribute('data-title'), el.getAttribute('data-name'), el.getAttribute('data-tip'), el.className, getOwnText(el) ].filter(Boolean).join(' '); const markInputControl = (el, name) => { const target = el.closest('button,a,[role="button"],[class*="Btn"],[class*="btn"],[class*="Item"],[class*="item"],[class*="Icon"],[class*="icon"],span,div') || el; if (!target || target === inputRoot) return; if (sendButtonTarget && (target === sendButtonTarget || target.contains(sendButtonTarget) || sendButtonTarget.contains(target))) return; markControl(target, name); }; Array.from(inputRoot.querySelectorAll('button,a,[role="button"],i,span,div')) .filter(isElementVisible) .forEach(el => { const signal = getInputControlSignal(el); if (!signal || /^(发送|Send)$/i.test(getOwnText(el))) return; if (/表情|颜文字|emoji|emotion|emoticon|face/i.test(signal)) { markInputControl(el, 'sidebar_chat_emoji_button'); } else if (/快捷|回复|常用语|弹幕|样式|颜色|quick|reply|phrase|preset|danmu|style|color/i.test(signal)) { markInputControl(el, 'sidebar_chat_quick_buttons'); } else if (/粉丝牌|徽章|身份|装扮|贵族|守护|勋章|佩戴|badge|medal|fansmedal|noble|guardian|dress|decoration/i.test(signal)) { markInputControl(el, 'sidebar_chat_input_identity_entry'); } else if (/提示|公告|规则|禁言|登录后|文明发言|字数|剩余|tip|hint|notice|guide|limit|counter/i.test(signal)) { markInputControl(el, 'sidebar_chat_input_tips'); } }); const inputRect = inputRoot.getBoundingClientRect(); const popupSelectors = [ '[role="dialog"]', '[role="menu"]', '[role="tooltip"]', '[class*="Panel"]', '[class*="panel"]', '[class*="Popover"]', '[class*="popover"]', '[class*="Pop"]', '[class*="pop"]', '[class*="Dropdown"]', '[class*="dropdown"]', '[class*="Tooltip"]', '[class*="tooltip"]', '[class*="Layer"]', '[class*="layer"]', '[class*="Bubble"]', '[class*="bubble"]', '[class*="Menu"]', '[class*="menu"]', '[class*="Tip"]', '[class*="tip"]', '[class*="Guide"]', '[class*="guide"]', '[data-hy-qa-chat-popover]' ].join(','); const getInputPopupSignal = (el) => [ el.id, el.getAttribute('role'), el.getAttribute('title'), el.getAttribute('aria-label'), el.getAttribute('data-title'), el.getAttribute('data-name'), el.getAttribute('data-tip'), el.className, getOwnText(el), getText(el).slice(0, 160) ].filter(Boolean).join(' '); const resolvePopupTarget = (el) => { const target = el.closest('[role="dialog"],[role="menu"],[role="tooltip"],[class*="Panel"],[class*="panel"],[class*="Popover"],[class*="popover"],[class*="Dropdown"],[class*="dropdown"],[class*="Tooltip"],[class*="tooltip"],[class*="Layer"],[class*="layer"],[class*="Bubble"],[class*="bubble"],[class*="Menu"],[class*="menu"],[class*="Tip"],[class*="tip"],[class*="Guide"],[class*="guide"],[data-hy-qa-chat-popover]') || el; return target === inputRoot ? el : target; }; const isChatInputPopupCandidate = (el) => { if (!el || !isElementVisible(el)) return false; if (el === inputRoot || el.closest('#hy-panel')) return false; if (el.closest('#chat-room__wrap, #J_roomChatList, #J_msgList, #chat-room__list, .room-chat-list, .chat-room__list')) return false; if (el.closest('#player-face, .player-face-list, .player-face-gift, #player-gift-wrap, #player-ctrl-wrap, #player-recommend')) return false; if (el.matches && el.matches('button,a,input,textarea,[contenteditable="true"]')) return false; const rect = el.getBoundingClientRect(); const area = rect.width * rect.height; if (rect.width < 16 || rect.height < 10 || area > AREA.POPUP) return false; const style = window.getComputedStyle(el); const signal = getInputPopupSignal(el); const popupish = /panel|popover|popup|dropdown|tooltip|layer|bubble|menu|tip|guide|dialog/i.test(signal) || /^(?:absolute|fixed)$/i.test(style.position) || ['dialog', 'menu', 'tooltip'].includes(String(el.getAttribute('role') || '').toLowerCase()); if (!popupish) return false; const nearInput = rect.right >= inputRect.left - 260 && rect.left <= inputRect.right + 260 && rect.bottom >= inputRect.top - 360 && rect.top <= inputRect.bottom + 300; const rightSide = rect.right >= window.innerWidth - 560 || !!el.closest('#J_roomSide, .room-sidebar'); return inputRoot.contains(el) || (nearInput && rightSide); }; Array.from(document.querySelectorAll(popupSelectors)) .filter(isChatInputPopupCandidate) .forEach(el => { const signal = getInputPopupSignal(el); const target = resolvePopupTarget(el); if (/登录后|请先登录|登录才|游客|发言权限|权限不足|禁言|被禁言|解禁|等级不足|绑定手机|实名|实名认证|关注后|粉丝牌发言|login|permission|mute|forbid|banned|speak.?limit/i.test(signal)) { markControl(target, 'sidebar_chat_login_permission_tip'); } else if (/表情|颜文字|emoji|emotion|emoticon|face-panel|facePanel/i.test(signal)) { markControl(target, 'sidebar_chat_emoji_panel'); } else if (/快捷回复|快捷发言|快捷弹幕|常用语|常用回复|预设回复|quick.?reply|phrase|preset|canned/i.test(signal)) { markControl(target, 'sidebar_chat_quick_reply_panel'); } else if (/粉丝牌|徽章|身份|装扮|贵族|守护|勋章|佩戴|badge|medal|fansmedal|identity|noble|guardian|dress|decoration/i.test(signal)) { markControl(target, 'sidebar_chat_identity_panel'); } else if (/聊天工具|弹幕样式|弹幕颜色|样式|颜色|字体|字号|气泡|tool|style|color|font|bubble/i.test(signal)) { markControl(target, 'sidebar_chat_tool_popover'); } }); } markControl(sendButtonTarget, 'sidebar_chat_send_button'); } function getPlayerAreaRoot() { const selectors = [ '#liveRoomObj', '#J_player', '#player-wrap', '#player-container', '#player', '.room-player', '[class*="RoomPlayer"]', '[class*="room-player"]' ]; const roots = selectors.map(selector => document.querySelector(selector)).filter(Boolean); return roots.find(isElementVisible) || roots[0] || null; } function markPlayerStatusDynamicControls() { const root = getPlayerAreaRoot(); if (!root || !isElementVisible(root)) return; const controlSelector = PLAYER_CONTROL_SELECTORS; const leafSelector = 'div,span,p,em,i,b,strong,a,button'; const statusContainerSelector = [ '[data-hy-qa-player-status]', '[class*="tip"]', '[class*="Tip"]', '[class*="notice"]', '[class*="Notice"]', '[class*="toast"]', '[class*="Toast"]', '[class*="mask"]', '[class*="Mask"]', '[class*="loading"]', '[class*="Loading"]', '[class*="buffer"]', '[class*="Buffer"]', '[class*="error"]', '[class*="Error"]', '[class*="reconnect"]', '[class*="Reconnect"]', '[class*="qrcode"]', '[class*="QRCode"]', '[class*="qr-code"]', '[class*="network"]', '[class*="Network"]', '[class*="latency"]', '[class*="Latency"]' ].join(','); const isStatusCandidate = (el) => { if (!isElementVisible(el)) return false; if (el.closest(controlSelector)) return false; const rect = el.getBoundingClientRect(); const rootRect = root.getBoundingClientRect(); if (rect.bottom < rootRect.top || rect.top > rootRect.bottom || rect.right < rootRect.left || rect.left > rootRect.right) return false; const text = getOwnText(el) || getText(el); if (text.length > 80) return false; return rect.width > 0 && rect.height > 0 && rect.width <= Math.max(420, rootRect.width) && rect.height <= 180; }; const markPlayerStatusPart = (pattern, name, options) => { const opts = options || {}; markLeafElements(root, leafSelector, pattern, name, { leafFilter: isStatusCandidate, signalOptions: { includeText: true }, reject: opts.reject, container: statusContainerSelector, targetExcludeSelector: controlSelector }); }; markPlayerStatusPart(/线路|切线|切换线路|备用线路|网络|网速|弱网|网络波动|network|net[-_ ]?tip|connection|line[-_ ]?tip|route/i, 'player_network_notice', { reject: /清晰|画质|quality|qrcode|qr-code|扫码|全屏|音量|sound|volume|danmu|弹幕/i }); markPlayerStatusPart(/延迟|低延迟|高延迟|实时|卡顿|追帧|delay|latency|lag|stutter|frame/i, 'player_latency_notice', { reject: /清晰|画质|quality|错误|重连|error|reconnect|全屏|音量|sound|volume/i }); markPlayerStatusPart(/播放失败|播放错误|错误|异常|断开|断线|重连|重新连接|重试|连接失败|error|fail|failed|disconnect|reconnect|retry/i, 'player_reconnect_notice', { reject: /举报|report|刷新按钮|refresh-btn|全屏|音量|sound|volume|danmu|弹幕/i }); markPlayerStatusPart(/暂停|已暂停|加载中|正在加载|缓冲|转圈|loading|buffering|spinner|paused|pause|waiting/i, 'player_pause_loading_notice', { reject: /按钮|button|btn|control|全屏|音量|sound|volume|danmu|弹幕/i }); markPlayerStatusPart(/扫码|二维码|清晰度锁定|画质锁定|登录后.*(?:清晰|画质)|APP.*(?:清晰|画质)|蓝光|超清|quality|qrcode|qr-code|scan/i, 'player_quality_qrcode_notice', { reject: /清晰度入口|player-videotype|全屏|音量|sound|volume|danmu|弹幕/i }); } function markPlayerAdDynamicControls() { const root = getPlayerAreaRoot(); if (!root || !isElementVisible(root)) return; const controlSelector = PLAYER_CONTROL_SELECTORS; const giftAreaSelector = [ '#player-gift-wrap', '.player-gift-wrap', '.player-gift-left', '[class*="gift-left"]', '.player-gift-right', '[class*="gift-right"]', '#player-face', '.player-face-list', '.player-face-gift', '.player-face-arrow', '#player-recharge-btn', '#player-package-btn', '#player-guard-btn', '#player-noble-btn' ].join(','); const popupContainerSelector = [ '[data-hy-qa-player-popup-ad]', '[class*="ad"]', '[class*="Ad"]', '[class*="ads"]', '[class*="Ads"]', '[class*="advert"]', '[class*="Advert"]', '[class*="promo"]', '[class*="Promo"]', '[class*="activity"]', '[class*="Activity"]', '[class*="welfare"]', '[class*="Welfare"]', '[class*="lottery"]', '[class*="Lottery"]', '[class*="guide"]', '[class*="Guide"]', '[class*="popup"]', '[class*="Popup"]', '[class*="popover"]', '[class*="Popover"]', '[class*="modal"]', '[class*="Modal"]', '[class*="dialog"]', '[class*="Dialog"]', '[class*="mask"]', '[class*="Mask"]', '[class*="float"]', '[class*="Float"]' ].join(','); const leafSelector = 'div,section,aside,a,button,img,span,p,i,em'; const isAdPopupCandidate = (el) => { if (!el || el === root || !isElementVisible(el) || el.closest('#hy-panel') || el.closest(controlSelector) || el.closest(giftAreaSelector) || shouldKeepVisible(el)) return false; const rect = el.getBoundingClientRect(); const rootRect = root.getBoundingClientRect(); if (rect.bottom < rootRect.top || rect.top > rootRect.bottom || rect.right < rootRect.left || rect.left > rootRect.right) return false; const area = rect.width * rect.height; if (rect.width < 24 || rect.height < 18 || area > rootRect.width * rootRect.height * 0.9) return false; const signal = getElementSignal(el, { includeId: true, includeText: true, maxTextLength: 120 }); if (!PLAYER_POPUP_SIGNAL_RE.test(signal)) return false; if (/清晰|画质|quality|全屏|fullscreen|剧场|fullpage|音量|sound|volume|弹幕|danmu|举报|report|刷新|refresh|控制|control/i.test(signal)) return false; const style = window.getComputedStyle(el); const popupish = /absolute|fixed|sticky/i.test(style.position) || /popup|popover|modal|dialog|mask|float|layer|guide|ad|advert|promo|activity|welfare/i.test(signal); return popupish; }; Array.from(root.querySelectorAll(popupContainerSelector + ',' + leafSelector)) .filter(isAdPopupCandidate) .forEach(el => { const target = el.closest(popupContainerSelector) || el.closest('a,button,section,aside,div') || el; if (!target || target === root || target.closest(controlSelector) || target.closest(giftAreaSelector) || shouldKeepVisible(target)) return; markControl(target, 'player_popup_ad'); }); } function markGiftDynamicControls() { const rightRoot = document.querySelector('.player-gift-right'); if (rightRoot) { markControl(rightRoot.querySelector('#player-punch-btn'), 'gift_first_charge'); Array.from(rightRoot.querySelectorAll('li, a, button, div, p, span')) .filter(isElementVisible) .filter(el => FIRST_CHARGE_TEXT_RE.test(getOwnText(el) || getText(el))) .forEach(el => { const item = el.closest('li, a, button') || el; if (item !== rightRoot && rightRoot.contains(item)) markControl(item, 'gift_first_charge'); }); } const leftRoot = document.querySelector('.player-gift-left') || document.querySelector('#player-gift-wrap'); if (!leftRoot) return; Array.from(leftRoot.querySelectorAll('.diy-activity-icon, .diy-activity-icon-box, [id^="diy-activity-icon-"]')) .filter(isElementVisible) .forEach(el => { const text = getText(el); const item = el.closest('.diy-activity-icon') || el.closest('.diy-activity-icon-box') || el; if (/小黄车/.test(text)) markControl(item, 'gift_cart_activity'); if (/告白计划/.test(text)) markControl(item, 'gift_confession_activity'); }); const giftRoot = document.querySelector('#player-gift-wrap') || leftRoot; const activityRoots = Array.from(new Set([ ...Array.from(leftRoot.querySelectorAll('.player-left-icon-enter, .player-lucky-burst-icon, .diy-activity-icon, .diy-activity-icon-box, [id^="diy-activity-icon-"], .more-activity-icon, .more-activity-icon-box')), ...Array.from(giftRoot.querySelectorAll('[class*="activity-pop"], [class*="ActivityPop"], [class*="activity-tooltip"], [class*="ActivityTooltip"], [class*="benefit"], [class*="Benefit"], [class*="reward"], [class*="Reward"]')) ])).filter(root => isElementVisible(root) && !root.closest('.player-gift-right, [class*="gift-right"]')); const getActivitySignal = (el) => [ el.id, el.className, el.getAttribute('title'), el.getAttribute('data-title'), el.getAttribute('aria-label'), getOwnText(el) ].filter(Boolean).join(' '); const isActivityPlaceholder = (el) => { const signal = getActivitySignal(el); return /loading|Loading|skeleton|Skeleton|placeholder|Placeholder|empty|Empty|加载中|暂无|空空|占位/i.test(signal); }; activityRoots.forEach(root => { Array.from(root.querySelectorAll('span, em, i, b, strong, p, div, button, a')) .filter(el => el !== root && isElementVisible(el) && !isActivityPlaceholder(el)) .forEach(el => { if (shouldKeepVisible(el)) return; const signal = getActivitySignal(el); const target = el.closest('[class*="countdown"], [class*="Countdown"], [class*="time-left"], [class*="TimeLeft"], [class*="remain-time"], [class*="RemainTime"], [class*="benefit"], [class*="Benefit"], [class*="reward"], [class*="Reward"], [class*="bonus"], [class*="Bonus"], [class*="rebate"], [class*="Rebate"], [class*="activity-pop"], [class*="ActivityPop"], [class*="activity-tooltip"], [class*="ActivityTooltip"]') || el; if (shouldKeepVisible(target)) return; if (/countdown|Countdown|time[-_ ]?left|TimeLeft|remain[-_ ]?time|RemainTime|倒计时|剩余|限时|距.*(?:开始|结束)|\b\d{1,2}:\d{2}(?::\d{2})?\b/i.test(signal)) { markControl(target, 'gift_activity_countdown'); } if (GIFT_BENEFIT_SIGNAL_RE.test(signal)) { markControl(target, 'gift_activity_benefit_tips'); } }); }); const giftRootRect = giftRoot.getBoundingClientRect(); const isNearGiftRoot = (el) => { if (giftRoot.contains(el) || leftRoot.contains(el)) return true; const rect = el.getBoundingClientRect(); return rect.right >= giftRootRect.left - 80 && rect.left <= giftRootRect.right + 80 && rect.bottom >= giftRootRect.top - 280 && rect.top <= giftRootRect.bottom + 160; }; const isOceanActivityPanel = (el) => { if (!el || !isElementVisible(el) || el.closest('#hy-panel')) return false; if (el === giftRoot || el === leftRoot) return false; if (el.closest('.player-gift-right, [class*="gift-right"], #player-face, .player-face-list, .player-face-gift')) return false; const rect = el.getBoundingClientRect(); const area = rect.width * rect.height; if (rect.width < 120 || rect.height < 36 || rect.width > 520 || rect.height > 220 || area > AREA.GIFT) return false; if (!isNearGiftRoot(el)) return false; const signal = [getActivitySignal(el), getText(el).slice(0, 240)].filter(Boolean).join(' '); return /海洋之心|梦想人鱼|人鱼之恋|鲨鲨/.test(signal) && /第\s*\d+\s*\/\s*\d+\s*天|完成\s*\d+\s*星|次日\s*\d+\s*倍|点击查看|奖池|宝箱/.test(signal); }; const resolveOceanActivityPanel = (el) => { const candidates = []; let current = el; while (current && current !== document.body && current !== document.documentElement) { if (isOceanActivityPanel(current)) candidates.push(current); current = current.parentElement; } return candidates.sort((a, b) => { const rectA = a.getBoundingClientRect(); const rectB = b.getBoundingClientRect(); return rectB.width * rectB.height - rectA.width * rectA.height; })[0] || el; }; Array.from(new Set(Array.from(document.querySelectorAll('div, section, aside, a')) .filter(isOceanActivityPanel) .map(resolveOceanActivityPanel))) .slice(0, 4) .forEach(el => markControl(el, 'gift_activity_benefit_tips')); const faceRoots = Array.from(document.querySelectorAll('#player-face, .player-face-list, .player-face-gift')) .filter(root => isElementVisible(root)) .filter(root => !root.closest('.player-gift-right, [class*="gift-right"]')) .filter(root => leftRoot.contains(root) || root.closest('#player-gift-wrap, .player-gift-left, [class*="gift-left"]')); faceRoots.forEach(root => { Array.from(root.querySelectorAll('button, a, span, em, i, p, div')) .filter(el => el !== root && isElementVisible(el)) .forEach(el => { const ownText = getOwnText(el); const signal = [ el.id, el.className, el.getAttribute('title'), el.getAttribute('data-title'), el.getAttribute('aria-label'), ownText ].filter(Boolean).join(' '); const actionTarget = el.closest('button, a, [role="button"]') || el; if (/gift[-_]?detail|GiftDetail|gift[-_]?pop|GiftPop|gift[-_]?tooltip|GiftTooltip|hover[-_]?detail|HoverDetail|礼物详情|悬浮详情/i.test(signal)) { markControl(el, 'gift_face_hover_detail'); } if (/combo|continuous|streak|连送|连击/i.test(signal)) { markControl(actionTarget, 'gift_face_combo_controls'); } if (/inventory|bag[-_]?status|BagStatus|stock[-_]?status|StockStatus|owned[-_]?status|OwnedStatus|remain[-_]?status|RemainStatus|背包|库存|拥有|剩余/i.test(signal)) { markControl(el, 'gift_face_inventory_status'); } if ((/gift[-_]?send|GiftSend|send[-_]?btn|SendBtn/i.test(signal) || /^(赠送|送出|发送|send)$/i.test(ownText || '')) && !/recharge|package|guard|noble|chat|充值|包裹|守护|贵族|聊天/i.test(signal)) { markControl(actionTarget, 'gift_face_send_button'); } if (/gift[-_]?activity[-_]?badge|GiftActivityBadge|activity[-_]?badge|ActivityBadge|event[-_]?badge|EventBadge|bonus[-_]?badge|BonusBadge|rebate|活动角标|活动加成|返利加成/i.test(signal)) { markControl(el, 'gift_face_activity_badges_ext'); } }); }); } function markBelowRecommendDynamicControls() { const roots = Array.from(document.querySelectorAll('#J_roomMain .room-recommend, #J_roomMain [class*="RoomRecommend"], #J_roomMain [class*="roomRecommend"]')) .filter(isElementVisible) .filter(root => !root.closest('#room-moments, .room-moments, .room-footer-r, #room-union, #J_roomULike, #J_roomPersonalRecom, #classify-recom, .classify-recom, #recom-list')); if (!roots.length) return; const cardSelector = 'li, .live-card, [class*="card"], [class*="Card"]'; const leafSelector = 'img,picture,video,canvas,span,em,i,b,strong,a,p,div'; const isSmallLeaf = makeSmallLeafFilter(36, 260, 90); const belowExclude = '#room-moments, .room-moments, #room-union, #J_roomULike, #J_roomPersonalRecom, #classify-recom, .classify-recom, #recom-list'; const markCardPart = (card, pattern, name, options) => { const opts = options || {}; markLeafElements(card, leafSelector, pattern, name, { leafFilter: opts.allowMedia ? (el) => isElementVisible(el) : isSmallLeaf, excludeSelector: belowExclude, reject: opts.reject }); }; roots.forEach(root => { const cards = Array.from(root.querySelectorAll(cardSelector)) .filter(isElementVisible) .filter(card => root.contains(card)) .filter(card => !card.closest('#room-moments, .room-moments, #room-union, #J_roomULike, #J_roomPersonalRecom, #classify-recom, .classify-recom, #recom-list')); cards.forEach(card => { markCardPart(card, /cover|thumb|pic|poster|封面/i, 'room_below_recommend_cover', { allowMedia: true, reject: /avatar|nick|anchor|author|badge|medal|tag|label|title/i }); markCardPart(card, /title|room-name|roomName|RoomName|live-title|LiveTitle|标题|房间名/i, 'room_below_recommend_titles', { reject: /anchor|author|avatar|nick|viewer|online|heat|count|tag|label|category|badge|medal/i }); markCardPart(card, /avatar|nick|anchor-name|anchorName|author-name|authorName|identity|badge|medal|主播|昵称|头像|身份|徽章/i, 'room_below_recommend_anchor_info', { reject: /title|room-name|live-title|viewer|online|heat|count|cover|thumb|pic|poster/i }); markCardPart(card, /viewer|online|heat|hot|audience|观看|热度|在线|人看|^\d+(?:\.\d+)?万?$/i, 'room_below_recommend_view_counts', { reject: /title|room-name|anchor|author|avatar|nick|tag|label|category|badge|cover|thumb|pic/i }); markCardPart(card, /tag|label|category|badge|game-tag|gameTag|game-label|gameLabel|分类|标签|角标|游戏/i, 'room_below_recommend_tags', { reject: /title|room-name|live-title|viewer|online|heat|count|cover|thumb|pic|poster|anchor|author|avatar|nick/i }); }); }); } function markBelowCategoryRecommendDynamicControls() { const roots = Array.from(new Set(Array.from(document.querySelectorAll('#classify-recom, .classify-recom, #recom-list')))) .filter(isElementVisible); if (!roots.length) return; const leafSelector = 'img,picture,span,em,i,b,strong,a,p,div,button'; const itemSelector = 'li, a, [role="link"], [class*="item"], [class*="Item"], [class*="card"], [class*="Card"]'; const isPlaceholderSignal = (signal) => /loading|Loading|skeleton|Skeleton|placeholder|Placeholder|empty|Empty|no[-_ ]?data|NoData|加载|暂无|空空|占位/i.test(signal || ''); const isCategoryPlaceholder = (el) => { if (!el) return true; if (isPlaceholderSignal(getElementSignal(el, { includeId: true }))) return true; const placeholder = el.closest('[class*="loading"], [class*="Loading"], [class*="skeleton"], [class*="Skeleton"], [class*="placeholder"], [class*="Placeholder"], [class*="empty"], [class*="Empty"], [class*="no-data"], [class*="NoData"]'); return !!placeholder && !!placeholder.closest('#classify-recom, .classify-recom, #recom-list'); }; const isRealCategoryItem = (el) => { if (!isElementVisible(el) || isCategoryPlaceholder(el)) return false; if (el.closest('#room-union, #J_roomULike, #J_roomPersonalRecom, #room-moments, .room-moments')) return false; const rect = el.getBoundingClientRect(); const signal = getElementSignal(el, { includeId: true }); const text = getText(el); if (/推荐分类|分类推荐|换一换|刷新|更多/.test(text) && rect.height <= 36) return false; const hasItemShape = el.matches('li, a, [role="link"]') || /item|Item|card|Card|list-item|ListItem|recom/.test(signal); const hasRealContent = !!el.querySelector('img, picture, [class*="cover"], [class*="Cover"], [class*="icon"], [class*="Icon"], [class*="name"], [class*="Name"], [class*="viewer"], [class*="Viewer"], [class*="heat"], [class*="Heat"]') || /观看|热度|在线|人看|\d+(?:\.\d+)?万?/.test(text); return rect.width > 0 && rect.height >= 24 && rect.width <= 360 && hasItemShape && hasRealContent; }; const isSmallLeaf = makeSmallLeafFilter(40, 280, 96, (el) => !isCategoryPlaceholder(el)); const markCategoryPart = (root, pattern, name, options) => { const opts = options || {}; const leafFilter = opts.allowMedia ? (el) => isElementVisible(el) && !isCategoryPlaceholder(el) : (el) => isSmallLeaf(el); const rejectPattern = opts.actionOnly ? /button|btn|more|refresh|change|action|换一换|刷新|更多/ : null; if (!opts.actionOnly) { markLeafElements(root, leafSelector, pattern, name, { leafFilter, signalOptions: { includeId: true }, reject: opts.reject }); } if (opts.actionOnly) { Array.from(root.querySelectorAll(leafSelector)) .filter(el => el !== root && leafFilter(el)) .forEach(el => { const signal = getElementSignal(el, { includeId: true }); if (!signal || !pattern.test(signal)) return; if (isPlaceholderSignal(signal)) return; if (opts.reject && opts.reject.test(signal)) return; if (el.matches('button,[role="button"]') || /button|btn|more|refresh|change|action|换一换|刷新|更多/.test(signal)) { markControl(el, name); } }); } }; roots.forEach(root => { Array.from(root.querySelectorAll(itemSelector)) .filter(el => el !== root) .filter(isRealCategoryItem) .forEach(item => { markControl(item, 'room_below_category_recommend_items'); Array.from(item.querySelectorAll(leafSelector)) .filter(el => el !== item && isSmallLeaf(el)) .forEach(el => { const signal = getElementSignal(el, { includeId: true }); if (/live|Live|living|Living|status|Status|badge|Badge|tag|Tag|hot|Hot|recommend|Recommend|直播中|热播|推荐|开播|热门/i.test(signal) && !/name|Name|viewer|Viewer|online|Online|heat|Heat|count|Count|cover|Cover|thumb|Thumb|pic|Pic|icon|Icon/i.test(signal)) { markControl(el, 'room_below_category_recommend_status_badges'); } if (/hover|Hover|preview|Preview|overlay|Overlay|mask|Mask|pop|Pop|tooltip|Tooltip|enter|Enter|进入|预览|悬浮|浮层|遮罩/i.test(signal) && !/loading|Loading|skeleton|Skeleton|empty|Empty|加载|暂无/i.test(signal)) { markControl(el, 'room_below_category_recommend_hover_overlay'); } }); }); markCategoryPart(root, /title|Title|head|Head|hd|推荐分类|分类推荐/i, 'room_below_category_recommend_title', { reject: /item|card|list|name|viewer|online|heat|count|cover|thumb|pic|icon|button|btn|more|refresh|change/i }); markCategoryPart(root, /cover|Cover|thumb|Thumb|icon|Icon|pic|Pic|poster|封面|图标|缩略图/i, 'room_below_category_recommend_icons', { allowMedia: true, reject: /title|head|name|viewer|online|heat|count|button|btn|more|refresh|change/i }); markCategoryPart(root, /category-name|CategoryName|game-name|GameName|room-name|RoomName|name|Name|分类名|游戏名|房间名/i, 'room_below_category_recommend_names', { reject: /title|head|viewer|online|heat|count|cover|thumb|pic|icon|button|btn|more|refresh|change/i }); markCategoryPart(root, /viewer|Viewer|online|Online|heat|Heat|hot|Hot|count|Count|观看|热度|在线|人看|^\d+(?:\.\d+)?万?$/i, 'room_below_category_recommend_view_counts', { reject: /title|head|name|cover|thumb|pic|icon|button|btn|more|refresh|change/i }); markCategoryPart(root, /button|btn|more|More|refresh|Refresh|change|Change|action|Action|更多|换一换|刷新|进入/i, 'room_below_category_recommend_actions', { actionOnly: true, reject: /title|head|name|viewer|online|heat|count|cover|thumb|pic|icon/i }); }); } function markDynamicControls(enabledBlocksInput) { clearDynamicControlMarks(); markKeepVisibleControls(); const enabledBlocks = Array.isArray(enabledBlocksInput) ? enabledBlocksInput : ACTIVE_CONTROL_BLOCKS.filter(item => getVal(item.key, false)); if (!enabledBlocks.length) return; const enabledKeys = new Set(enabledBlocks.map(item => item.key)); DYNAMIC_CONTROL_GROUPS.forEach(group => { if (group.keys.some(key => enabledKeys.has(key))) group.mark(enabledKeys); }); } function getButtonLabel(el) { if (!el) return ''; return [ el.getAttribute('title'), el.getAttribute('aria-label'), el.getAttribute('data-title'), el.textContent ].filter(Boolean).join(' '); } function findDisplayModeButton(config, mode) { const btn = findFirstVisible(config.selectors); if (!btn || mode !== 'fullscreen') return btn; const label = getButtonLabel(btn); if (/网页全屏|页面全屏|剧场/.test(label)) { return findFirstVisible(['#player-fullscreen-btn', '.player-fullscreen-btn']); } return btn; } function getDisplayModeConfig(mode) { if (mode === 'theater') { return { label: '网页剧场模式', selectors: [ '#player-fullpage-btn', '.player-fullpage-btn', '[data-title*="剧场"]', '[title*="剧场"]', '[aria-label*="剧场"]', '[data-title*="网页全屏"]', '[title*="网页全屏"]', '[aria-label*="网页全屏"]' ], isActive: () => { const root = getLiveRoot(); const bodyClass = document.body ? document.body.className : ''; const rootClass = root && typeof root.className === 'string' ? root.className : ''; return /fullpage|full-page|web-full|theater|wide-screen/.test(String(bodyClass + ' ' + rootClass).toLowerCase()); } }; } if (mode === 'fullscreen') { return { label: '尝试浏览器全屏', selectors: [ '#player-fullscreen-btn', '.player-fullscreen-btn', '[data-title*="全屏"]', '[title*="全屏"]', '[aria-label*="全屏"]' ], isActive: () => !!document.fullscreenElement }; } return null; } function applyFullscreenState() { if (!isScriptEnabled()) return; const mode = getVal('fullscreen_mode', 'off'); if (mode === 'off' || !isLivePage()) return; const config = getDisplayModeConfig(mode); if (!config) return; if (config.isActive()) return; const room = getRoomId(); const key = '_fs_' + room + '_' + mode; if (!room || roomFlags[key] === 'done' || roomFlags[key] === 'pending') return; const initialBtn = findDisplayModeButton(config, mode); const hasPlayerSignal = !!document.querySelector('video, #player video, [id*="player"] video') || !!initialBtn; if (!hasPlayerSignal) return; roomFlags[key] = 'pending'; managedSetInterval((timerId, count) => { if (roomFlags[key] === 'done') { clearManagedInterval(timerId); return; } if (config.isActive()) { roomFlags[key] = 'done'; clearManagedInterval(timerId); return; } const btn = findDisplayModeButton(config, mode); if (btn && !btn.disabled && btn.getAttribute('aria-disabled') !== 'true') { btn.click(); setTimeout(() => { roomFlags[key] = 'done'; clearManagedInterval(timerId); }, 250); } else if (count >= 8) { delete roomFlags[key]; } }, TIMING.FULLSCREEN_POLL_MS, TIMING.FULLSCREEN_MAX); } function applyQualityMode() { if (!isScriptEnabled()) return; const mode = getVal('quality_mode', 'off'); if (mode === 'off' || !isLivePage()) return; const room = getRoomId(); const key = '_ql_' + room + '_' + mode; if (!room || roomFlags[key] === 'done' || roomFlags[key] === 'pending') return; roomFlags[key] = 'pending'; managedSetInterval((timerId, count) => { if (roomFlags[key] === 'done') { clearManagedInterval(timerId); return; } const qualities = QualityUnlocker.detectQualities(); const target = mode === 'highest' ? qualities.find(q => !q.isLocked) : qualities.find(q => q.value === mode); if (!target) { if (count >= 8) delete roomFlags[key]; return; } if (target.isLocked) QualityUnlocker.unlockAll(); setTimeout(() => QualityUnlocker.clickQuality(target), 0); roomFlags[key] = 'done'; clearManagedInterval(timerId); }, TIMING.QUALITY_POLL_MS, TIMING.QUALITY_MAX); } function scheduleStopPageLoading() { if (!getVal('stop_loading_spinner', true) || !isLivePage()) return; if (document.readyState === 'complete') return; const room = getRoomId(); const key = '_stop_load_' + room; if (!room || roomFlags[key] === 'done' || roomFlags[key] === 'pending') return; roomFlags[key] = 'pending'; const startedAt = Date.now(); const minStopDelay = TIMING.STOP_MIN_DELAY; managedSetInterval((timerId, count) => { if (document.readyState === 'complete') { roomFlags[key] = 'done'; clearManagedInterval(timerId); return; } const video = document.querySelector('video, #player video, [id*="player"] video'); const playerReady = video && (video.readyState >= 2 || !video.paused || video.currentTime > 0); if (playerReady && Date.now() - startedAt >= minStopDelay) { try { window.stop(); roomFlags[key] = 'done'; clearManagedInterval(timerId); } catch (err) { delete roomFlags[key]; clearManagedInterval(timerId); } } else if (count >= 30) { delete roomFlags[key]; } }, 1000, 30); } function applyAll() { detectTheme(); if (!isScriptEnabled()) { applyControlBlocks(); clearAllTimers(); QualityUnlocker.stop(); return; } applyControlBlocks(); if (!isLivePage()) return; markLiveRoot(); applyFullscreenState(); applyQualityMode(); scheduleStopPageLoading(); if (getVal('quality_mode', 'off') !== 'off') QualityUnlocker.waitForPlayer(); } function scheduleApplyAll() { if (deferredApplyTimer) clearTimeout(deferredApplyTimer); deferredApplyTimer = setTimeout(() => { deferredApplyTimer = null; applyAll(); }, document.hidden ? 500 : 0); } let debounceTimer = null; let obsThrottle = 0; const observer = new MutationObserver(() => { const now = Date.now(); const throttle = document.hidden ? TIMING.OBSERVER_THROTTLE * 4 : TIMING.OBSERVER_THROTTLE; if (now - obsThrottle < throttle) return; obsThrottle = now; clearTimeout(debounceTimer); debounceTimer = setTimeout(() => { if (document.querySelector('#liveRoomObj, .room-player, #J_mainRoom')) applyAll(); }, document.hidden ? 2200 : 800); }); document.addEventListener('visibilitychange', () => { if (!document.hidden) scheduleApplyAll(); }); function hookSPA() { const refresh = () => { resetRoomState(); managedSetInterval((timerId) => { if (!document.querySelector('#liveRoomObj, .room-player, #J_mainRoom')) return; clearManagedInterval(timerId); applyAll(); if (isScriptEnabled() && getVal('quality_mode', 'off') !== 'off') QualityUnlocker.waitForPlayer(); }, 500, 10); }; const pushState = history.pushState; const replaceState = history.replaceState; history.pushState = function () { pushState.apply(this, arguments); refresh(); }; history.replaceState = function () { replaceState.apply(this, arguments); refresh(); }; window.addEventListener('popstate', refresh); } function injectUICSS() { const css = [ '[data-theme="dark"]{--hy-bg:#17181c;--hy-surface:#202126;--hy-surface-2:#25272d;--hy-card:#202126;--hy-card-hover:#282a30;--hy-hover:#282a30;--hy-text:#f4f5f7;--hy-text2:#d6d9df;--hy-text3:#9ca3af;--hy-border:#34363d;--hy-accent:#ff7a1a;--hy-accent-hover:#ff8f3d;--hy-accent-soft:rgba(255,122,26,.16);--hy-sw-off:#4b4d55;--hy-sw-knob:#fff;--hy-shadow:0 12px 28px rgba(0,0,0,.22)}', '[data-theme="light"]{--hy-bg:#f7f8fa;--hy-surface:#fff;--hy-surface-2:#f3f4f6;--hy-card:#fff;--hy-card-hover:#f0f2f5;--hy-hover:#f0f2f5;--hy-text:#1f2329;--hy-text2:#4b5563;--hy-text3:#6b7280;--hy-border:#e6e8ee;--hy-accent:#ff6900;--hy-accent-hover:#f25f00;--hy-accent-soft:rgba(255,105,0,.12);--hy-sw-off:rgba(0,0,0,.12);--hy-sw-knob:#fff;--hy-shadow:0 12px 28px rgba(31,35,41,.08)}', ':root{--hy-fs-l1:16px;--hy-fs-l2:15px;--hy-fs-l3:14px;--hy-fs-l4:13px;--hy-fs-l5:12px;--hy-radius:8px}', '#hy-panel{position:fixed;z-index:2147483647;width:min(720px,calc(100vw - 40px));height:min(540px,calc(100vh - 40px));max-height:calc(100vh - 40px);display:flex;flex-direction:column;background:var(--hy-bg);border:1px solid var(--hy-border);border-radius:var(--hy-radius);box-shadow:var(--hy-shadow);font-family:MiSans,"Xiaomi Sans","PingFang SC","Microsoft YaHei",system-ui,sans-serif;transition:opacity .16s ease,transform .16s ease;overflow:hidden;letter-spacing:0}', '#hy-panel.hy-hidden{opacity:0;pointer-events:none;transform:scale(.98)}', '.hy-hdr{display:flex;justify-content:space-between;align-items:center;padding:13px 16px;font-size:var(--hy-fs-l1);font-weight:700;color:var(--hy-text);background:var(--hy-surface);border-bottom:1px solid var(--hy-border);flex-shrink:0;cursor:move}', '.hy-x{cursor:pointer;font-size:20px;color:var(--hy-text3);line-height:1;transition:all .16s ease;width:28px;height:28px;display:flex;align-items:center;justify-content:center;border-radius:8px}', '.hy-x:hover{color:var(--hy-accent);background:var(--hy-hover)}', '.hy-body{display:flex;flex:1;min-height:0;overflow:hidden;background:var(--hy-bg)}', '.hy-content-wrap{flex:1;overflow-y:auto;overflow-x:hidden;min-height:0;padding:14px;box-sizing:border-box}', '.hy-content-wrap::-webkit-scrollbar{width:3px}', '.hy-content-wrap::-webkit-scrollbar-thumb{background:var(--hy-border);border-radius:999px}', '.hy-dashboard{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;margin-bottom:10px}', '.hy-stat-card{min-width:0;border:1px solid var(--hy-border);border-radius:8px;background:var(--hy-card);padding:9px 12px;box-sizing:border-box;transition:border-color .16s ease,background .16s ease}', '.hy-stat-label{font-size:var(--hy-fs-l5);font-weight:500;line-height:1.35;color:var(--hy-text3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}', '.hy-stat-value{padding-top:4px;font-size:var(--hy-fs-l3);font-weight:700;line-height:1.35;color:var(--hy-text)}', '.hy-stat-card-on{border-color:var(--hy-accent);background:var(--hy-accent-soft)}', '.hy-stat-card-on .hy-stat-value{color:var(--hy-accent)}', '.hy-section{background:var(--hy-card);border:1px solid var(--hy-border);border-radius:8px;margin-bottom:12px;padding:12px 14px;overflow:visible}', '.hy-section:last-child{margin-bottom:0}', '.hy-section-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px;gap:12px}', '.hy-section-title{font-size:var(--hy-fs-l2);font-weight:600;color:var(--hy-text);line-height:1.35}', '.hy-section-stat{font-size:var(--hy-fs-l5);font-weight:500;color:var(--hy-text3);line-height:1.35;white-space:nowrap}', '.hy-profile-select{height:32px;border:1px solid var(--hy-border);border-radius:8px;background:var(--hy-surface-2);font-size:var(--hy-fs-l4);font-family:inherit;color:var(--hy-text);padding:0 10px;min-width:0;width:100%;box-sizing:border-box;outline:none}', '.hy-profile-select:focus{border-color:var(--hy-accent);background:var(--hy-card-hover);box-shadow:0 0 0 2px var(--hy-accent-soft)}', '.hy-preset-bar{display:grid;grid-template-columns:76px minmax(0,1fr);align-items:center;gap:10px 12px;border:1px solid var(--hy-border);border-radius:8px;background:var(--hy-surface-2);padding:10px 12px;margin-bottom:10px;box-sizing:border-box}', '.hy-preset-label{font-size:var(--hy-fs-l5);font-weight:500;line-height:1.35;color:var(--hy-text3);white-space:nowrap;min-width:0}', '.hy-preset-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;min-width:0}', '.hy-profile-actions{display:grid;grid-template-columns:minmax(150px,1.1fr) minmax(150px,1fr) auto auto auto;gap:8px;width:100%;align-items:center}', '.hy-profile-actions .hy-detail-search-input{width:100%;min-width:0;flex:none}', '.hy-profile-actions .hy-preset-btn{min-width:48px}', '.hy-preset-btn{height:28px;border:1px solid var(--hy-border);border-radius:8px;background:var(--hy-card);color:var(--hy-text2);font-size:var(--hy-fs-l5);font-family:inherit;font-weight:500;line-height:18px;padding:0 10px;cursor:pointer;transition:border-color .16s ease,background .16s ease,color .16s ease}', '.hy-preset-btn:hover,.hy-preset-btn-active{color:var(--hy-accent);border-color:var(--hy-accent);background:var(--hy-accent-soft)}', '.hy-list{border-top:1px solid var(--hy-border)}', '.hy-control-list{display:flex;flex-direction:column;gap:10px;border-top:none}', '.hy-control-list>.hy-control-bulk{border:1px solid var(--hy-border);border-radius:8px;background:var(--hy-surface-2);padding:10px 12px}', '.hy-control-list>.hy-control-bulk .hy-desc-line{display:none}', '.hy-region-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}', '.hy-region-card{border:1px solid var(--hy-border);border-radius:8px;background:var(--hy-surface-2);padding:12px 14px;box-sizing:border-box;transition:border-color .16s ease,background .16s ease,transform .16s ease}', '.hy-region-card.hy-setting{border:1px solid var(--hy-border);padding:12px 14px}', '.hy-region-card:hover{border-color:var(--hy-accent);background:var(--hy-card-hover);transform:translateY(-1px)}', '.hy-region-card .hy-row{align-items:flex-start}', '.hy-region-card .hy-rname{font-size:var(--hy-fs-l3);font-weight:600}', '.hy-region-card .hy-group-status{padding-top:5px}', '.hy-region-card .hy-desc-line{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;min-height:36px;padding-top:8px}', '.hy-region-card .hy-detail-btn{min-width:46px}', '.hy-detail-filter{display:flex;align-items:center;gap:8px;margin:10px 0 8px}', '.hy-detail-search-input{flex:1;min-width:0;height:32px;border:1px solid var(--hy-border);border-radius:8px;background:var(--hy-surface-2);color:var(--hy-text);font-size:var(--hy-fs-l4);font-family:inherit;line-height:32px;padding:0 10px;box-sizing:border-box;outline:none;transition:border-color .16s ease,background .16s ease,box-shadow .16s ease}', '.hy-detail-search-input::placeholder{color:var(--hy-text3)}', '.hy-detail-search-input:focus{border-color:var(--hy-accent);background:var(--hy-card-hover);box-shadow:0 0 0 2px var(--hy-accent-soft)}', '.hy-detail-jump-select{height:32px;max-width:180px;min-width:120px;flex:0 1 180px;border:1px solid var(--hy-border);border-radius:8px;background:var(--hy-surface-2);color:var(--hy-text);font-size:var(--hy-fs-l4);font-family:inherit;line-height:32px;padding:0 8px;box-sizing:border-box;outline:none;cursor:pointer;transition:border-color .16s ease,background .16s ease,box-shadow .16s ease}', '.hy-detail-jump-select:focus{border-color:var(--hy-accent);background:var(--hy-card-hover);box-shadow:0 0 0 2px var(--hy-accent-soft)}', '.hy-detail-enabled-only{display:inline-flex;align-items:center;gap:6px;height:32px;padding:0 10px;border:1px solid var(--hy-border);border-radius:8px;background:var(--hy-surface-2);color:var(--hy-text2);font-size:var(--hy-fs-l5);font-weight:500;white-space:nowrap;box-sizing:border-box;cursor:pointer;transition:border-color .16s ease,background .16s ease,color .16s ease}', '.hy-detail-enabled-only:hover{border-color:var(--hy-accent);background:var(--hy-accent-soft);color:var(--hy-accent)}', '.hy-detail-enabled-only input{width:14px;height:14px;margin:0;accent-color:var(--hy-accent);cursor:pointer}', '.hy-advanced-hidden{display:none!important}', '.hy-advanced-control .hy-rname:after{content:"高级";display:inline-flex;margin-left:6px;padding:0 5px;border-radius:999px;background:var(--hy-surface-2);color:var(--hy-text3);font-size:10px;font-weight:500;line-height:16px;vertical-align:1px}', '.hy-filter-hidden{display:none!important}', '.hy-detail-jump-target{background:var(--hy-accent-soft);box-shadow:inset 0 0 0 1px var(--hy-accent);border-radius:8px}', '.hy-detail-empty{display:none;padding:12px 0 2px;border-top:1px solid var(--hy-border);font-size:var(--hy-fs-l5);font-weight:400;line-height:1.5;color:var(--hy-text3);text-align:center}', '.hy-detail-empty-on{display:block}', '.hy-setting{border-bottom:1px solid var(--hy-border);padding:10px 0}', '.hy-setting:last-child{border-bottom:none;padding-bottom:0}', '.hy-row{display:flex;justify-content:space-between;align-items:center;gap:12px}', '.hy-rleft{flex:1;min-width:0;margin-right:4px}', '.hy-rname{font-size:var(--hy-fs-l3);color:var(--hy-text);font-weight:500;line-height:1.4}', '.hy-desc-line{padding-top:4px;font-size:var(--hy-fs-l5);color:var(--hy-text3);font-weight:400;line-height:1.5;white-space:normal;word-break:break-word}', '.hy-footer{padding:8px 16px;background:var(--hy-surface);border-top:1px solid var(--hy-border);font-size:var(--hy-fs-l5);color:var(--hy-text3);flex-shrink:0;display:flex;justify-content:space-between}', '.hy-dd{position:relative;width:172px;flex-shrink:0}', '.hy-dd-sel{display:flex;align-items:center;justify-content:space-between;height:32px;padding:0 12px;border-radius:8px;background:var(--hy-surface-2);border:1px solid var(--hy-border);font-size:var(--hy-fs-l3);font-weight:500;color:var(--hy-text);cursor:pointer;transition:all .16s ease;gap:8px;box-sizing:border-box}', '.hy-dd-sel:hover{border-color:var(--hy-accent);background:var(--hy-card-hover)}', '.hy-dd-text{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:20px}', '.hy-dd-arrow{font-size:10px;color:var(--hy-text3);flex-shrink:0;transition:transform .2s cubic-bezier(.2,0,0,1)}', '.hy-dd-open .hy-dd-arrow{transform:rotate(180deg)}', '.hy-dd-menu{position:absolute;top:calc(100% + 6px);right:0;width:max-content;min-width:100%;max-width:320px;max-height:210px;border-radius:8px;background:var(--hy-surface);border:1px solid var(--hy-border);box-shadow:var(--hy-shadow);z-index:2147483647;overflow-y:auto;display:none;padding:6px 0}', '.hy-dd-open .hy-dd-menu{display:block}', '.hy-dd-opt{display:flex;align-items:center;padding:9px 14px;font-size:var(--hy-fs-l3);font-weight:500;color:var(--hy-text2);cursor:pointer;transition:all .15s;line-height:1.35;white-space:nowrap;border-radius:8px;margin:2px 6px}', '.hy-dd-opt:hover{background:var(--hy-accent-soft);color:var(--hy-accent)}', '.hy-dd-opt-on{color:var(--hy-accent)!important;font-weight:600;background:var(--hy-accent-soft)}', '.hy-switch{position:relative;width:40px;height:22px;display:inline-flex;align-items:center;flex-shrink:0;cursor:pointer}', '.hy-switch input{position:absolute;opacity:0;width:0;height:0;pointer-events:none}', '.hy-switch-knob{position:absolute;inset:0;border-radius:11px;background:var(--hy-sw-off);transition:all .25s cubic-bezier(.4,0,.2,1)}', '.hy-switch-knob:after{content:"";position:absolute;left:2px;top:2px;width:18px;height:18px;border-radius:50%;background:var(--hy-sw-knob);transition:all .25s cubic-bezier(.4,0,.2,1);box-shadow:0 2px 4px rgba(0,0,0,.2)}', '.hy-switch input:checked+.hy-switch-knob{background:var(--hy-accent)}', '.hy-switch input:checked+.hy-switch-knob:after{transform:translateX(18px)}', '.hy-switch input:indeterminate+.hy-switch-knob{background:var(--hy-accent-soft)}', '.hy-switch input:indeterminate+.hy-switch-knob:after{transform:translateX(9px);background:var(--hy-accent)}', '.hy-row-actions{display:flex;align-items:center;gap:8px;flex-shrink:0}', '.hy-detail-btn,.hy-back-btn{border:1px solid var(--hy-border);background:var(--hy-surface-2);color:var(--hy-text2);border-radius:8px;padding:5px 10px;font-size:var(--hy-fs-l5);font-weight:500;line-height:18px;cursor:pointer;transition:all .16s ease}', '.hy-detail-btn:hover,.hy-back-btn:hover{color:var(--hy-accent);border-color:var(--hy-accent);background:var(--hy-accent-soft)}', '.hy-region-row{cursor:pointer;border-radius:8px;margin:0 -6px;padding:8px 6px;transition:background .16s ease}', '.hy-list>.hy-setting:not(.hy-region-card) .hy-region-row:hover{background:var(--hy-hover)}', '.hy-region-row:hover .hy-rname{color:var(--hy-accent)}', '.hy-group-status{font-size:var(--hy-fs-l5);font-weight:500;color:var(--hy-text3);padding-top:4px;line-height:1.4}', '.hy-detail-view.hy-hidden,.hy-main-view.hy-hidden{display:none}', '.hy-subview-head{display:flex;align-items:center;gap:10px;padding:0 0 10px}', '.hy-subview-title{font-size:var(--hy-fs-l2);font-weight:600;color:var(--hy-text);line-height:1.4}', '@media (max-width:620px){.hy-profile-actions{grid-template-columns:repeat(3,minmax(0,1fr))}.hy-profile-actions .hy-profile-select,.hy-profile-actions .hy-detail-search-input{grid-column:1/-1}}', '@media (max-width:520px){.hy-dashboard,.hy-region-grid{grid-template-columns:1fr}.hy-preset-bar{grid-template-columns:1fr}.hy-detail-filter{flex-wrap:wrap}.hy-detail-search-input{flex-basis:100%}.hy-detail-jump-select{flex:1 1 0;max-width:none}}' ].join('\n'); try { GM_addStyle(css); } catch (e) { const el = document.createElement('style'); el.id = 'hy-ui-css'; el.textContent = css; (document.head || document.documentElement).appendChild(el); } } function closeAllDDs() { document.querySelectorAll('.hy-dd-open').forEach(el => el.classList.remove('hy-dd-open')); } function refreshDropdownRows() { if (!panel) return; SETTINGS.filter(item => item.type === 'dropdown').forEach(item => { const row = panel.querySelector('.hy-setting[data-hy-key="' + item.key + '"]'); if (!row) return; const currentVal = getVal(item.key, item.def); const selectedOpt = item.options.find(opt => opt.value === currentVal) || item.options[0]; const textEl = row.querySelector('.hy-dd-text'); if (textEl && selectedOpt) textEl.textContent = selectedOpt.label; row.querySelectorAll('.hy-dd-opt').forEach(optEl => { optEl.classList.toggle('hy-dd-opt-on', optEl.textContent === (selectedOpt && selectedOpt.label)); }); }); } function buildDropdownRow(item, onChange) { const container = document.createElement('div'); container.className = 'hy-setting'; container.dataset.hyKey = item.key; const row = document.createElement('div'); row.className = 'hy-row'; const left = document.createElement('div'); left.className = 'hy-rleft'; const name = document.createElement('div'); name.className = 'hy-rname'; name.textContent = item.name; left.appendChild(name); row.appendChild(left); const dd = document.createElement('div'); dd.className = 'hy-dd'; const sel = document.createElement('div'); sel.className = 'hy-dd-sel'; const txt = document.createElement('span'); txt.className = 'hy-dd-text'; const arrow = document.createElement('span'); arrow.className = 'hy-dd-arrow'; arrow.textContent = '▼'; sel.appendChild(txt); sel.appendChild(arrow); dd.appendChild(sel); const menu = document.createElement('div'); menu.className = 'hy-dd-menu'; dd.appendChild(menu); const currentVal = getVal(item.key, item.def); item.options.forEach(opt => { const optEl = document.createElement('div'); optEl.className = 'hy-dd-opt'; if (opt.value === currentVal) optEl.classList.add('hy-dd-opt-on'); optEl.textContent = opt.label; optEl.addEventListener('click', (e) => { e.stopPropagation(); setVal(item.key, opt.value); menu.querySelectorAll('.hy-dd-opt').forEach(o => o.classList.remove('hy-dd-opt-on')); optEl.classList.add('hy-dd-opt-on'); txt.textContent = opt.label; dd.classList.remove('hy-dd-open'); resetRoomState(); onChange(); }); menu.appendChild(optEl); }); const selectedOpt = item.options.find(o => o.value === currentVal) || item.options[0]; txt.textContent = selectedOpt.label; sel.addEventListener('click', (e) => { e.stopPropagation(); const wasOpen = dd.classList.contains('hy-dd-open'); closeAllDDs(); if (!wasOpen) dd.classList.add('hy-dd-open'); }); row.appendChild(dd); container.appendChild(row); appendDesc(container, item.desc); return container; } function buildSwitchRow(item, onChange, options) { const opts = options || {}; const container = document.createElement('div'); container.className = 'hy-setting'; container.dataset.hyKey = item.key; if (isAdvancedControlBlock(item)) { container.classList.add('hy-advanced-control'); container.dataset.hyAdvanced = 'true'; } const row = document.createElement('div'); row.className = 'hy-row'; const left = document.createElement('div'); left.className = 'hy-rleft'; const name = document.createElement('div'); name.className = 'hy-rname'; name.textContent = item.name; left.appendChild(name); row.appendChild(left); const label = document.createElement('label'); label.className = 'hy-switch'; const input = document.createElement('input'); input.type = 'checkbox'; if (opts.inputClassName) input.className = opts.inputClassName; input.checked = opts.getChecked ? !!opts.getChecked() : !!getVal(item.key, item.def === undefined ? false : item.def); if (opts.getIndeterminate) input.indeterminate = !!opts.getIndeterminate(); const knob = document.createElement('span'); knob.className = 'hy-switch-knob'; label.appendChild(input); label.appendChild(knob); row.appendChild(label); input.addEventListener('change', () => { if (opts.onToggle) { opts.onToggle(input.checked, input); } else { setVal(item.key, input.checked); if (item.key === 'script_enabled') resetRoomState(); } onChange(); }); container.appendChild(row); if (opts.appendDesc !== false) { const descText = item.desc || ('开启后隐藏页面中的' + item.name.replace(/^屏蔽/, '') + ',减少视觉干扰'); appendDesc(container, descText); } return container; } function updateRegionRow(region) { const refs = regionRowRefs[region.key]; if (!refs) return; const state = getRegionState(region); refs.status.textContent = state.enabled + '/' + state.total + ' 个子控件已开启'; refs.status.style.color = state.enabled > 0 ? 'var(--hy-accent)' : 'var(--hy-text3)'; } function refreshRegionRows() { refreshSwitchInputs(); CONTROL_BLOCK_REGIONS.forEach(updateRegionRow); refreshRegionBulkRows(); refreshControlBulkState(); refreshControlPresetState(); refreshSecretControlState(); } function refreshSwitchInputs() { if (!panel) return; const settingByKey = Object.fromEntries(SETTINGS.map(item => [item.key, item])); panel.querySelectorAll('.hy-setting[data-hy-key]').forEach(row => { const key = row.dataset.hyKey; const input = row.querySelector('.hy-switch input'); if (!key || !input) return; const item = CONTROL_BLOCK_MAP[key] || settingByKey[key] || {}; const def = item.def === undefined ? false : item.def; input.checked = !!getVal(key, def); input.indeterminate = false; }); } function getControlBulkState() { const enabled = PUBLIC_CONTROL_BLOCKS.filter(item => getVal(item.key, false)).length; return { enabled, total: PUBLIC_CONTROL_BLOCKS.length, all: PUBLIC_CONTROL_BLOCKS.length > 0 && enabled === PUBLIC_CONTROL_BLOCKS.length, partial: enabled > 0 && enabled < PUBLIC_CONTROL_BLOCKS.length }; } function refreshControlBulkState() { if (!controlBulkInput) return; const state = getControlBulkState(); controlBulkInput.checked = state.all; controlBulkInput.indeterminate = state.partial; if (controlBulkStatusEl) { controlBulkStatusEl.textContent = state.enabled + '/' + state.total + ' 个控件已开启'; controlBulkStatusEl.style.color = state.enabled > 0 ? 'var(--hy-accent)' : 'var(--hy-text3)'; } } function setAllControlBlocks(enabled) { const blocks = enabled ? PUBLIC_CONTROL_BLOCKS : ACTIVE_CONTROL_BLOCKS; blocks.forEach(item => { store[item.key] = !!enabled; }); saveStore(); refreshRegionRows(); refreshStats(); } function getCurrentControlPresetKey() { const enabledKeys = PUBLIC_CONTROL_BLOCKS .filter(item => getVal(item.key, false)) .map(item => item.key); if (!enabledKeys.length) return ''; const enabledSet = new Set(enabledKeys); const matched = CONTROL_PRESETS.find(preset => { return preset.keys.length === enabledKeys.length && preset.keys.every(key => enabledSet.has(key)); }); return matched ? matched.key : ''; } function refreshControlPresetState() { if (!controlPresetButtons.length) return; const currentKey = getCurrentControlPresetKey(); controlPresetButtons.forEach(button => { const active = !!currentKey && button.dataset.hyPreset === currentKey; button.classList.toggle('hy-preset-btn-active', active); button.setAttribute('aria-pressed', active ? 'true' : 'false'); }); } function applyControlPreset(preset) { const targetKeys = new Set(preset.keys); PUBLIC_CONTROL_BLOCKS.forEach(item => { store[item.key] = targetKeys.has(item.key); }); saveStore(); refreshRegionRows(); refreshStats(); } function getSecretControlState() { const keys = SECRET_CONTROL_BLOCK_KEYS.filter(key => ACTIVE_CONTROL_BLOCK_KEYS.has(key)); const enabled = keys.filter(key => getVal(key, false)).length; return { total: keys.length, enabled, all: keys.length > 0 && enabled === keys.length, partial: enabled > 0 && enabled < keys.length }; } function refreshSecretControlState() { if (!secretControlInputEl || !secretControlInputEl.isConnected) return; const state = getSecretControlState(); secretControlInputEl.checked = state.all; secretControlInputEl.indeterminate = state.partial; } function setSecretControlBlocks(enabled) { SECRET_CONTROL_BLOCK_KEYS.forEach(key => { if (ACTIVE_CONTROL_BLOCK_KEYS.has(key)) store[key] = !!enabled; }); saveStore(); refreshRegionRows(); refreshSecretControlState(); refreshStats(); } function buildSecretSwitchRow(onChange) { const row = buildSwitchRow({ key: '__secret_control_blocks', name: SECRET_CONTROL_LABEL, type: 'switch', def: false }, onChange, { inputClassName: 'hy-secret-input', getChecked: () => getSecretControlState().all, getIndeterminate: () => getSecretControlState().partial, onToggle: checked => setSecretControlBlocks(checked), appendDesc: false }); secretControlInputEl = row.querySelector('.hy-secret-input'); refreshSecretControlState(); return row; } function getCustomProfiles() { try { const raw = GM_getValue(CUSTOM_PROFILE_STORE_KEY, null); if (raw && typeof raw === "object") return raw; } catch (e) {} return {}; } function saveCustomProfiles(profiles) { try { GM_setValue(CUSTOM_PROFILE_STORE_KEY, profiles); } catch (e) {} } function getSnapshotForCurrentSettings() { const snap = { ts: Date.now(), settings: {}, blocks: {} }; SETTINGS.forEach(function(item) { snap.settings[item.key] = getVal(item.key, item.def); }); PUBLIC_CONTROL_BLOCKS.forEach(function(item) { snap.blocks[item.key] = !!getVal(item.key, false); }); snap.internalBlocks = {}; INTERNAL_CONTROL_BLOCKS.forEach(function(item) { snap.internalBlocks[item.key] = !!getVal(item.key, false); }); snap.enabledCount = Object.values(snap.blocks).filter(Boolean).length; return snap; } function saveCustomProfile(name) { if (!name || !name.trim()) return null; name = name.trim().slice(0, 40); const profiles = getCustomProfiles(); const keys = Object.keys(profiles); if (keys.length >= CUSTOM_PROFILE_LIMIT) { delete profiles[keys[0]]; console.warn("[HY] 已保存" + CUSTOM_PROFILE_LIMIT + "套方案,最早移除"); } const snap = getSnapshotForCurrentSettings(); const id = "p_" + snap.ts + "_" + String(keys.length + 1).padStart(2, "0"); profiles[id] = { id: id, name: snap.settings.script_enabled !== false ? name : "已暂停-" + name, ts: snap.ts, settings: snap.settings, blocks: snap.blocks, internalBlocks: snap.internalBlocks, enabledCount: snap.enabledCount }; saveCustomProfiles(profiles); return id; } function applyCustomProfile(profileId) { const profiles = getCustomProfiles(); const profile = profiles[profileId]; if (!profile) return false; if (profile.settings) Object.entries(profile.settings).forEach(function(e) { store[e[0]] = e[1]; }); if (profile.blocks) PUBLIC_CONTROL_BLOCKS.forEach(function(item) { store[item.key] = !!profile.blocks[item.key]; }); INTERNAL_CONTROL_BLOCKS.forEach(function(item) { if (profile.internalBlocks && Object.prototype.hasOwnProperty.call(profile.internalBlocks, item.key)) store[item.key] = !!profile.internalBlocks[item.key]; else if (profile.blocks && Object.prototype.hasOwnProperty.call(profile.blocks, item.key)) store[item.key] = !!profile.blocks[item.key]; }); saveStore(); return true; } function deleteCustomProfile(profileId) { const profiles = getCustomProfiles(); delete profiles[profileId]; saveCustomProfiles(profiles); } function getProfileLabel(profileId, profile) { const d = new Date(profile.ts); const pad = function(n) { return String(n).padStart(2, "0"); }; return pad(d.getMonth()+1) + "/" + pad(d.getDate()) + " " + pad(d.getHours()) + ":" + pad(d.getMinutes()) + " • " + profile.enabledCount + "/" + PUBLIC_CONTROL_BLOCKS.length + " 个控件)"; } function refreshCustomProfileUI() { if (!customProfileSelectEl) return; const profiles = getCustomProfiles(); const keys = Object.keys(profiles); const previousValue = customProfileSelectEl.value; while (customProfileSelectEl.options.length > 1) customProfileSelectEl.remove(1); keys.sort(function(a, b) { return (profiles[b].ts || 0) - (profiles[a].ts || 0); }).forEach(function(id) { const option = document.createElement('option'); option.value = id; option.textContent = getProfileLabel(id, profiles[id]) || profiles[id].name || id; customProfileSelectEl.appendChild(option); }); customProfileSelectEl.value = profiles[previousValue] ? previousValue : '__none__'; if (customProfileSelectEl.value === '__none__' && keys.length) customProfileSelectEl.value = keys[0]; if (customProfileStatusEl) customProfileStatusEl.textContent = keys.length + " 套方案"; if (customProfileApplyBtnEl) customProfileApplyBtnEl.disabled = customProfileSelectEl.value === '__none__'; if (customProfileDeleteBtnEl) customProfileDeleteBtnEl.disabled = customProfileSelectEl.value === '__none__'; } function buildCustomProfileBar(onChange) { const container = document.createElement('div'); container.className = 'hy-preset-bar'; const label = document.createElement('div'); label.className = 'hy-preset-label'; label.textContent = '我的方案'; container.appendChild(label); customProfileStatusEl = document.createElement('span'); customProfileStatusEl.style.fontSize = 'var(--hy-fs-l5)'; customProfileStatusEl.style.fontWeight = '400'; customProfileStatusEl.style.color = 'var(--hy-text3)'; customProfileStatusEl.style.marginLeft = '4px'; label.appendChild(customProfileStatusEl); const actions = document.createElement('div'); actions.className = 'hy-preset-actions hy-profile-actions'; customProfileSelectEl = document.createElement('select'); customProfileSelectEl.className = 'hy-profile-select'; customProfileSelectEl.setAttribute('aria-label', '选择方案'); const noneOpt = document.createElement('option'); noneOpt.value = '__none__'; noneOpt.textContent = '无'; customProfileSelectEl.appendChild(noneOpt); actions.appendChild(customProfileSelectEl); customProfileNameInputEl = document.createElement('input'); customProfileNameInputEl.className = 'hy-detail-search-input'; customProfileNameInputEl.placeholder = '方案名称'; customProfileNameInputEl.setAttribute('aria-label', '输入方案名称'); actions.appendChild(customProfileNameInputEl); customProfileNameInputEl.addEventListener('keydown', function(ev) { if (ev.key === 'Enter' && customProfileNameInputEl.value.trim()) { saveCurrentCustomProfile(onChange); } }); function saveCurrentCustomProfile(changeHandler) { const id = saveCustomProfile(customProfileNameInputEl.value); if (!id) return; customProfileNameInputEl.value = ''; refreshCustomProfileUI(); changeHandler(); } const saveBtn = document.createElement('button'); saveBtn.type = 'button'; saveBtn.className = 'hy-preset-btn'; saveBtn.textContent = '保存'; saveBtn.addEventListener('click', function() { saveCurrentCustomProfile(onChange); }); actions.appendChild(saveBtn); customProfileApplyBtnEl = document.createElement('button'); customProfileApplyBtnEl.type = 'button'; customProfileApplyBtnEl.className = 'hy-preset-btn'; customProfileApplyBtnEl.textContent = '应用'; customProfileApplyBtnEl.disabled = true; customProfileApplyBtnEl.addEventListener('click', function() { const selId = customProfileSelectEl.value; if (!selId || selId === '__none__') return; applyCustomProfile(selId); refreshStats(); refreshRegionRows(); refreshControlBulkState(); refreshControlPresetState(); onChange(); }); actions.appendChild(customProfileApplyBtnEl); customProfileDeleteBtnEl = document.createElement('button'); customProfileDeleteBtnEl.type = 'button'; customProfileDeleteBtnEl.className = 'hy-preset-btn'; customProfileDeleteBtnEl.textContent = '删除'; customProfileDeleteBtnEl.disabled = true; customProfileDeleteBtnEl.addEventListener('click', function() { const selId = customProfileSelectEl.value; if (!selId || selId === '__none__') return; deleteCustomProfile(selId); customProfileSelectEl.value = '__none__'; refreshCustomProfileUI(); onChange(); }); actions.appendChild(customProfileDeleteBtnEl); customProfileSelectEl.addEventListener('change', function() { if (customProfileStatusEl) { const selId = customProfileSelectEl.value; if (selId && selId !== '__none__') { customProfileStatusEl.textContent = getProfileLabel(selId, getCustomProfiles()[selId]); } else { customProfileStatusEl.textContent = '无方案选中'; } } }); container.appendChild(actions); return container; } function buildEntryRow(entry) { const container = document.createElement('div'); container.className = 'hy-setting hy-region-card hy-entry-card'; if (entry.className) container.classList.add(entry.className); const row = document.createElement('div'); row.className = 'hy-row hy-region-row'; row.addEventListener('click', entry.onOpen); const left = document.createElement('div'); left.className = 'hy-rleft'; const name = document.createElement('div'); name.className = 'hy-rname'; name.textContent = entry.name; const status = document.createElement('div'); status.className = 'hy-group-status'; status.textContent = entry.status || ''; left.appendChild(name); left.appendChild(status); row.appendChild(left); const actions = document.createElement('div'); actions.className = 'hy-row-actions'; const detail = document.createElement('button'); detail.type = 'button'; detail.className = 'hy-detail-btn'; detail.textContent = '进入'; detail.addEventListener('click', (e) => { e.stopPropagation(); entry.onOpen(); }); actions.appendChild(detail); row.appendChild(actions); container.appendChild(row); appendDesc(container, entry.desc); return { container, status }; } function refreshRegionBulkState(region) { const refs = regionBulkRefs[region.key]; if (!refs || !refs.input || !refs.input.isConnected) return; const state = getRegionState(region); refs.input.checked = state.all; refs.input.indeterminate = state.partial; if (refs.status) { refs.status.textContent = state.enabled + '/' + state.total + ' 个子控件已开启'; refs.status.style.color = state.enabled > 0 ? 'var(--hy-accent)' : 'var(--hy-text3)'; } } function refreshRegionBulkRows() { CONTROL_BLOCK_REGIONS.forEach(refreshRegionBulkState); } function setRegionControlBlocks(region, enabled) { getRegionChildren(region).forEach(item => { store[item.key] = !!enabled; }); saveStore(); refreshRegionRows(); refreshStats(); } function buildRegionBulkRow(region, onChange) { const container = document.createElement('div'); container.className = 'hy-setting hy-region-bulk'; const row = document.createElement('div'); row.className = 'hy-row'; const left = document.createElement('div'); left.className = 'hy-rleft'; const name = document.createElement('div'); name.className = 'hy-rname'; name.textContent = region.name + '总开关'; const status = document.createElement('div'); status.className = 'hy-group-status'; left.appendChild(name); left.appendChild(status); row.appendChild(left); const label = document.createElement('label'); label.className = 'hy-switch'; const input = document.createElement('input'); input.type = 'checkbox'; const knob = document.createElement('span'); knob.className = 'hy-switch-knob'; label.appendChild(input); label.appendChild(knob); row.appendChild(label); input.addEventListener('change', () => { setRegionControlBlocks(region, input.checked); onChange(); }); container.appendChild(row); appendDesc(container, '一键开启或关闭本区域内所有单个控件,下面仍可逐项微调'); regionBulkRefs[region.key] = { input, status }; refreshRegionBulkState(region); return container; } function buildControlBulkRow(onChange) { const container = document.createElement('div'); container.className = 'hy-setting hy-control-bulk'; const row = document.createElement('div'); row.className = 'hy-row'; const left = document.createElement('div'); left.className = 'hy-rleft'; const name = document.createElement('div'); name.className = 'hy-rname'; name.textContent = '控件屏蔽总开关'; controlBulkStatusEl = document.createElement('div'); controlBulkStatusEl.className = 'hy-group-status'; left.appendChild(name); left.appendChild(controlBulkStatusEl); row.appendChild(left); const label = document.createElement('label'); label.className = 'hy-switch'; controlBulkInput = document.createElement('input'); controlBulkInput.type = 'checkbox'; const knob = document.createElement('span'); knob.className = 'hy-switch-knob'; label.appendChild(controlBulkInput); label.appendChild(knob); row.appendChild(label); controlBulkInput.addEventListener('change', () => { setAllControlBlocks(controlBulkInput.checked); onChange(); }); container.appendChild(row); appendDesc(container, '一键开启或关闭所有单个控件屏蔽,仍可进入二级页面单独微调'); refreshControlBulkState(); return container; } function buildControlPresetBar(onChange) { const container = document.createElement('div'); container.className = 'hy-preset-bar'; const label = document.createElement('div'); label.className = 'hy-preset-label'; label.textContent = '推荐配置'; container.appendChild(label); const actions = document.createElement('div'); actions.className = 'hy-preset-actions'; controlPresetButtons = []; CONTROL_PRESETS.forEach(preset => { const button = document.createElement('button'); button.type = 'button'; button.className = 'hy-preset-btn'; button.textContent = preset.name; button.dataset.hyPreset = preset.key; button.dataset.hyPresetSize = String(preset.keys.length); button.setAttribute('aria-pressed', 'false'); button.title = preset.name + ':开启 ' + preset.keys.length + ' 个控件屏蔽'; button.addEventListener('click', () => { applyControlPreset(preset); onChange(); }); controlPresetButtons.push(button); actions.appendChild(button); }); container.appendChild(actions); refreshControlPresetState(); return container; } function showMainView() { if (mainViewEl) mainViewEl.classList.remove('hy-hidden'); if (detailViewEl) detailViewEl.classList.add('hy-hidden'); detailEscapeHandler = null; if (panelTitleEl) panelTitleEl.textContent = 'My-虎牙优化'; closeAllDDs(); refreshRegionRows(); refreshStats(); } function openSettingsDetail(onChange) { if (!mainViewEl || !detailViewEl) return; closeAllDDs(); mainViewEl.classList.add('hy-hidden'); detailViewEl.classList.remove('hy-hidden'); if (panelTitleEl) panelTitleEl.textContent = '功能设置'; while (detailViewEl.firstChild) detailViewEl.removeChild(detailViewEl.firstChild); const head = document.createElement('div'); head.className = 'hy-subview-head'; const back = document.createElement('button'); back.type = 'button'; back.className = 'hy-back-btn'; back.textContent = '返回'; back.addEventListener('click', showMainView); const title = document.createElement('div'); title.className = 'hy-subview-title'; title.textContent = '功能设置'; head.appendChild(back); head.appendChild(title); detailViewEl.appendChild(head); const section = document.createElement('div'); section.className = 'hy-section hy-settings-detail'; appendDesc(section, '管理脚本启用、进房显示、画质和加载修复'); const list = document.createElement('div'); list.className = 'hy-list'; SETTINGS.forEach(item => { if (item.type === 'switch') list.appendChild(buildSwitchRow(item, onChange)); if (item.type === 'dropdown') list.appendChild(buildDropdownRow(item, onChange)); if (item.type === 'quality') list.appendChild(buildQualityRow(item, onChange)); }); list.appendChild(buildSecretSwitchRow(onChange)); section.appendChild(list); detailViewEl.appendChild(section); detailEscapeHandler = () => { showMainView(); return true; }; refreshPanelStateFromStore(); } function openRegionDetail(region, onChange) { if (!mainViewEl || !detailViewEl) return; closeAllDDs(); mainViewEl.classList.add('hy-hidden'); detailViewEl.classList.remove('hy-hidden'); if (panelTitleEl) panelTitleEl.textContent = '控件屏蔽'; while (detailViewEl.firstChild) detailViewEl.removeChild(detailViewEl.firstChild); const head = document.createElement('div'); head.className = 'hy-subview-head'; const back = document.createElement('button'); back.type = 'button'; back.className = 'hy-back-btn'; back.textContent = '返回'; back.addEventListener('click', showMainView); const title = document.createElement('div'); title.className = 'hy-subview-title'; title.textContent = region.name; head.appendChild(back); head.appendChild(title); detailViewEl.appendChild(head); const section = document.createElement('div'); section.className = 'hy-section'; appendDesc(section, region.desc); const children = getRegionChildren(region); const filterBar = document.createElement('div'); filterBar.className = 'hy-detail-filter'; const filterInput = document.createElement('input'); filterInput.type = 'search'; filterInput.className = 'hy-detail-search-input'; filterInput.placeholder = '搜索名称或 key'; filterInput.setAttribute('aria-label', '搜索控件'); filterBar.appendChild(filterInput); const jumpSelect = document.createElement('select'); jumpSelect.className = 'hy-detail-jump-select'; jumpSelect.setAttribute('aria-label', '跳转到控件'); const jumpPlaceholder = document.createElement('option'); jumpPlaceholder.value = ''; jumpPlaceholder.textContent = '跳转到控件'; jumpSelect.appendChild(jumpPlaceholder); children.forEach(item => { const option = document.createElement('option'); option.value = item.key; option.textContent = item.name; jumpSelect.appendChild(option); }); filterBar.appendChild(jumpSelect); const enabledOnlyLabel = document.createElement('label'); enabledOnlyLabel.className = 'hy-detail-enabled-only'; const enabledOnlyInput = document.createElement('input'); enabledOnlyInput.type = 'checkbox'; enabledOnlyInput.className = 'hy-detail-enabled-only-input'; enabledOnlyInput.setAttribute('aria-label', '只看已开启控件'); const enabledOnlyText = document.createElement('span'); enabledOnlyText.textContent = '只看已开启'; enabledOnlyLabel.appendChild(enabledOnlyInput); enabledOnlyLabel.appendChild(enabledOnlyText); filterBar.appendChild(enabledOnlyLabel); const advancedLabel = document.createElement('label'); advancedLabel.className = 'hy-detail-enabled-only hy-detail-advanced-toggle'; const advancedInput = document.createElement('input'); advancedInput.type = 'checkbox'; advancedInput.className = 'hy-detail-advanced-input'; advancedInput.setAttribute('aria-label', '显示高级控件'); const advancedText = document.createElement('span'); advancedText.textContent = '显示高级'; advancedLabel.appendChild(advancedInput); advancedLabel.appendChild(advancedText); filterBar.appendChild(advancedLabel); section.appendChild(filterBar); const list = document.createElement('div'); list.className = 'hy-list'; list.appendChild(buildRegionBulkRow(region, () => { onChange(); applyDetailFilter(); })); const childRows = children.map(item => { const row = buildSwitchRow(item, () => { onChange(); refreshRegionRows(); applyDetailFilter(); }); row.dataset.hySearchText = [item.name, item.key].join(' ').toLowerCase(); list.appendChild(row); return { item, row }; }); const empty = document.createElement('div'); empty.className = 'hy-detail-empty'; empty.textContent = '没有匹配的控件'; list.appendChild(empty); function applyDetailFilter() { const query = filterInput.value.trim().toLowerCase(); const enabledOnly = enabledOnlyInput.checked; const showAdvanced = advancedInput.checked; let visible = 0; childRows.forEach(({ item, row }) => { const matchedQuery = !query || row.dataset.hySearchText.includes(query); const matchedEnabled = !enabledOnly || !!getVal(item.key, item.def === undefined ? false : item.def); const isAdvanced = isAdvancedControlBlock(item); const activeAdvanced = isAdvanced && !!getVal(item.key, item.def === undefined ? false : item.def); const matchedAdvanced = showAdvanced || query || enabledOnly || !isAdvanced || activeAdvanced; const matched = matchedQuery && matchedEnabled && matchedAdvanced; row.classList.toggle('hy-filter-hidden', !matched); if (matched) visible += 1; }); empty.classList.toggle('hy-detail-empty-on', (query || enabledOnly || showAdvanced) && visible === 0); } filterInput.addEventListener('input', applyDetailFilter); enabledOnlyInput.addEventListener('change', applyDetailFilter); advancedInput.addEventListener('change', applyDetailFilter); jumpSelect.addEventListener('change', () => { const targetKey = jumpSelect.value; jumpSelect.value = ''; const target = childRows.find(({ item }) => item.key === targetKey); if (!target) return; filterInput.value = ''; enabledOnlyInput.checked = false; if (isAdvancedControlBlock(target.item)) advancedInput.checked = true; applyDetailFilter(); target.row.tabIndex = -1; try { target.row.scrollIntoView({ block: 'center', inline: 'nearest', behavior: 'smooth' }); } catch (err) { target.row.scrollIntoView(); } try { target.row.focus({ preventScroll: true }); } catch (err) { target.row.focus(); } target.row.classList.add('hy-detail-jump-target'); setTimeout(() => { target.row.classList.remove('hy-detail-jump-target'); }, TIMING.DETAIL_SCROLL_MS); }); section.appendChild(list); detailViewEl.appendChild(section); detailEscapeHandler = () => { const hasQuery = filterInput.value.trim() !== ''; if (hasQuery) { filterInput.value = ''; applyDetailFilter(); return true; } if (enabledOnlyInput.checked) { enabledOnlyInput.checked = false; applyDetailFilter(); return true; } if (advancedInput.checked) { advancedInput.checked = false; applyDetailFilter(); return true; } showMainView(); return true; }; const focusSearch = () => { try { filterInput.focus({ preventScroll: true }); } catch (err) { filterInput.focus(); } }; if (typeof requestAnimationFrame === 'function') requestAnimationFrame(focusSearch); else setTimeout(focusSearch, 0); applyDetailFilter(); } function buildRegionRow(region, onChange) { const container = document.createElement('div'); container.className = 'hy-setting hy-region-card'; const row = document.createElement('div'); row.className = 'hy-row hy-region-row'; row.addEventListener('click', () => openRegionDetail(region, onChange)); const left = document.createElement('div'); left.className = 'hy-rleft'; const name = document.createElement('div'); name.className = 'hy-rname'; name.textContent = region.name; const status = document.createElement('div'); status.className = 'hy-group-status'; left.appendChild(name); left.appendChild(status); row.appendChild(left); const actions = document.createElement('div'); actions.className = 'hy-row-actions'; const detail = document.createElement('button'); detail.type = 'button'; detail.className = 'hy-detail-btn'; detail.textContent = '进入'; detail.addEventListener('click', (e) => { e.stopPropagation(); openRegionDetail(region, onChange); }); actions.appendChild(detail); row.appendChild(actions); container.appendChild(row); appendDesc(container, region.desc); regionRowRefs[region.key] = { status }; updateRegionRow(region); return container; } let qualityDDEl = null; let qualityTxtEl = null; let qualityMenuEl = null; function buildQualityRow(item, onChange) { const container = document.createElement('div'); container.className = 'hy-setting'; container.id = 'hy-quality-row'; const row = document.createElement('div'); row.className = 'hy-row'; const left = document.createElement('div'); left.className = 'hy-rleft'; const name = document.createElement('div'); name.className = 'hy-rname'; name.textContent = item.name; left.appendChild(name); row.appendChild(left); qualityDDEl = document.createElement('div'); qualityDDEl.className = 'hy-dd'; const sel = document.createElement('div'); sel.className = 'hy-dd-sel'; qualityTxtEl = document.createElement('span'); qualityTxtEl.className = 'hy-dd-text'; qualityTxtEl.textContent = getVal('quality_mode', 'off') === 'off' ? '不切换' : '自动最高可用'; const arrow = document.createElement('span'); arrow.className = 'hy-dd-arrow'; arrow.textContent = '▼'; sel.appendChild(qualityTxtEl); sel.appendChild(arrow); qualityDDEl.appendChild(sel); qualityMenuEl = document.createElement('div'); qualityMenuEl.className = 'hy-dd-menu'; qualityDDEl.appendChild(qualityMenuEl); addQualityBaseOptions(onChange); sel.addEventListener('click', (e) => { e.stopPropagation(); const wasOpen = qualityDDEl.classList.contains('hy-dd-open'); closeAllDDs(); updateQualityOptions(); if (!wasOpen) qualityDDEl.classList.add('hy-dd-open'); }); row.appendChild(qualityDDEl); container.appendChild(row); appendDesc(container, item.desc); return container; } function addQualityBaseOptions(onChange) { const currentVal = getVal('quality_mode', 'off'); const optEl = document.createElement('div'); optEl.className = 'hy-dd-opt'; if (currentVal === 'off') optEl.classList.add('hy-dd-opt-on'); optEl.textContent = '不切换'; optEl.dataset.value = 'off'; optEl.addEventListener('click', (e) => { e.stopPropagation(); setVal('quality_mode', 'off'); qualityMenuEl.querySelectorAll('.hy-dd-opt').forEach(o => o.classList.remove('hy-dd-opt-on')); optEl.classList.add('hy-dd-opt-on'); qualityTxtEl.textContent = '不切换'; qualityDDEl.classList.remove('hy-dd-open'); resetRoomState(); onChange(); }); qualityMenuEl.appendChild(optEl); const autoEl = document.createElement('div'); autoEl.className = 'hy-dd-opt'; if (currentVal === 'highest') autoEl.classList.add('hy-dd-opt-on'); autoEl.textContent = '自动最高可用'; autoEl.dataset.value = 'highest'; autoEl.addEventListener('click', (e) => { e.stopPropagation(); setVal('quality_mode', 'highest'); qualityMenuEl.querySelectorAll('.hy-dd-opt').forEach(o => o.classList.remove('hy-dd-opt-on')); autoEl.classList.add('hy-dd-opt-on'); qualityTxtEl.textContent = '自动最高可用'; qualityDDEl.classList.remove('hy-dd-open'); resetQualityRoomState(); refreshStats(); scheduleApplyAll(); }); qualityMenuEl.appendChild(autoEl); } function updateQualityOptions() { if (!qualityMenuEl || !qualityTxtEl) return; qualityMenuEl.querySelectorAll('.hy-dd-opt').forEach(optEl => optEl.classList.remove('hy-dd-opt-on')); const baseOpt = qualityMenuEl.querySelector('.hy-dd-opt[data-value="' + getVal('quality_mode', 'off') + '"]'); if (baseOpt) baseOpt.classList.add('hy-dd-opt-on'); const qualities = QualityUnlocker.detectQualities(); qualityMenuEl.querySelectorAll('[data-value^="q_"]').forEach(el => el.remove()); const currentVal = getVal('quality_mode', 'off'); if (qualities.length === 0) { if (currentVal === 'off') qualityTxtEl.textContent = '不切换'; if (currentVal !== 'off') { qualityTxtEl.textContent = currentVal === 'highest' ? '自动最高可用' : '检测中...'; } return; } const highest = qualities.find(q => !q.isLocked); qualities.forEach(q => { const optEl = document.createElement('div'); optEl.className = 'hy-dd-opt'; optEl.dataset.value = q.value; optEl.textContent = q.label + (q.isLocked ? ' [扫码]' : ''); if (q.isLocked) { optEl.style.color = 'var(--hy-text3)'; optEl.style.fontStyle = 'italic'; } if (currentVal === q.value) optEl.classList.add('hy-dd-opt-on'); optEl.addEventListener('click', (e) => { e.stopPropagation(); setVal('quality_mode', q.value); qualityMenuEl.querySelectorAll('.hy-dd-opt').forEach(o => o.classList.remove('hy-dd-opt-on')); optEl.classList.add('hy-dd-opt-on'); qualityTxtEl.textContent = q.label + (q.isLocked ? ' [扫码]' : ''); qualityDDEl.classList.remove('hy-dd-open'); if (q.isLocked) QualityUnlocker.unlockAll(); setTimeout(() => QualityUnlocker.clickQuality(q), 0); resetQualityRoomState(); refreshStats(); scheduleApplyAll(); }); qualityMenuEl.appendChild(optEl); }); if (currentVal === 'off') { qualityTxtEl.textContent = '不切换'; return; } if (currentVal === 'highest') { qualityTxtEl.textContent = highest ? '自动最高可用: ' + highest.label : '自动最高可用'; return; } const selected = qualities.find(q => q.value === currentVal); if (selected) { qualityTxtEl.textContent = selected.label + (selected.isLocked ? ' [扫码]' : ''); } } function resetQualityRoomState() { Object.keys(roomFlags).forEach(key => { if (key.indexOf('_ql_') === 0) delete roomFlags[key]; }); } function appendDesc(container, text) { if (!text) return; const desc = document.createElement('div'); desc.className = 'hy-desc-line'; desc.textContent = text; container.appendChild(desc); } const QualityUnlocker = (() => { let listObserver = null; let initObserver = null; let pollTimer = null; let jqTimer = null; let onListChange = null; let waiting = false; let ready = false; let polling = false; function doubleRAF(fn) { requestAnimationFrame(() => requestAnimationFrame(fn)); } function getVideoTypeList() { const $ = getJQ(); if (!$) return null; const $list = $('#player-ctrl-wrap .player-videotype-list'); return $list.length ? $list : null; } function unlockAll() { try { const $ = getJQ(); const $list = getVideoTypeList(); if (!$ || !$list) return; $list.children(':has(.bitrate-right-btn.common-enjoy-btn)').each((i, el) => { const data = $(el).data('data'); if (data && typeof data === 'object' && 'status' in data) data.status = 0; }); if (onListChange) onListChange(); } catch (err) { console.warn('[HY] unlockAll error:', err); } } function detectQualities() { try { const $list = getVideoTypeList(); if (!$list) return []; const qualities = []; $list.children().each((i, li) => { if (li.nodeType !== 1) return; const span = li.querySelector('span'); const text = (span ? span.textContent : li.textContent).trim(); if (!text) return; const isLocked = li.querySelector('.bitrate-right-btn.common-enjoy-btn') !== null; qualities.push({ value: 'q_' + i, label: text, isLocked, li, rank: getQualityRank(text), sourceIndex: i }); }); qualities.sort((a, b) => { if (b.rank !== a.rank) return b.rank - a.rank; return a.sourceIndex - b.sourceIndex; }); return qualities; } catch (err) { return []; } } function getQualityRank(label) { const text = String(label || '').toLowerCase(); let rank = 0; const resolution = text.match(/(\d+(?:\.\d+)?)\s*k/); if (resolution) rank += Number(resolution[1]) * 1000; const bitrate = text.match(/(\d+)\s*m/); if (bitrate) rank += Number(bitrate[1]) * 20; if (/hdr/.test(text)) rank += 800; if (/原画|蓝光/.test(text)) rank += 700; if (/超清/.test(text)) rank += 500; if (/高清/.test(text)) rank += 300; if (/标清/.test(text)) rank += 100; if (/流畅/.test(text)) rank += 50; return rank; } function clickQuality(option) { try { const $ = getJQ(); const $list = getVideoTypeList(); if (!$ || !$list || !option) return; let targetLi = option.li && option.li.isConnected ? option.li : null; if (!targetLi) { $list.children().each((i, li) => { if (li.nodeType !== 1) return; const span = li.querySelector('span'); const text = (span ? span.textContent : li.textContent).trim(); if (text === option.label) { targetLi = li; return false; } }); } if (!targetLi || !targetLi.isConnected) return; const data = $(targetLi).data('data'); if (data && typeof data === 'object' && 'status' in data) data.status = 0; doubleRAF(() => { if (targetLi.isConnected) targetLi.click(); }); } catch (err) { console.warn('[HY] clickQuality error:', err); } } function setupListObserver() { try { const $list = getVideoTypeList(); if (!$list) { waitForJQuery(); return; } if (listObserver) listObserver.disconnect(); ready = true; waiting = false; polling = false; if (pollTimer) { clearTimeout(pollTimer); pollTimer = null; } if (initObserver) { initObserver.disconnect(); initObserver = null; } const syncList = () => { if (isScriptEnabled() && getVal('quality_mode', 'off') !== 'off') unlockAll(); else if (onListChange) onListChange(); }; listObserver = new MutationObserver(syncList); listObserver.observe($list[0], { childList: true, subtree: true, attributes: true, attributeFilter: ['class', 'data-status'] }); syncList(); updateQualityOptions(); } catch (err) { console.warn('[HY] setupListObserver error:', err); } } function waitForJQuery() { if (jqTimer) return; let count = 0; jqTimer = setInterval(() => { count += 1; if (getJQ()) { clearInterval(jqTimer); jqTimer = null; setupListObserver(); } else if (count >= 60) { clearInterval(jqTimer); jqTimer = null; } }, 500); } function waitForPlayer() { if (ready || waiting) return; waiting = true; if (document.getElementById('player-ctrl-wrap')) { setupListObserver(); return; } if (!document.body) { document.addEventListener('DOMContentLoaded', () => { waiting = false; waitForPlayer(); }, { once: true }); return; } if (initObserver) initObserver.disconnect(); initObserver = new MutationObserver(() => { if (document.getElementById('player-ctrl-wrap')) setupListObserver(); }); initObserver.observe(document.body, { childList: true, subtree: true }); pollTimer = setTimeout(() => { pollTimer = null; if (ready) return; if (document.getElementById('player-ctrl-wrap')) { setupListObserver(); return; } if (polling) return; polling = true; if (initObserver) { initObserver.disconnect(); initObserver = null; } const poll = setInterval(() => { if (document.getElementById('player-ctrl-wrap')) { clearInterval(poll); polling = false; setupListObserver(); } }, 1000); setTimeout(() => { clearInterval(poll); polling = false; waiting = false; }, 30000); }, 10000); } function stop() { waiting = false; ready = false; polling = false; if (listObserver) { listObserver.disconnect(); listObserver = null; } if (initObserver) { initObserver.disconnect(); initObserver = null; } if (pollTimer) { clearTimeout(pollTimer); pollTimer = null; } if (jqTimer) { clearInterval(jqTimer); jqTimer = null; } } return { waitForPlayer, stop, detectQualities, clickQuality, unlockAll, set onListChange(fn) { onListChange = fn; } }; })(); function centerPanel() { if (!panel) return; const width = Math.min(720, Math.max(360, window.innerWidth - 40)); const height = Math.min(540, Math.max(320, window.innerHeight - 40)); panel.style.left = Math.max(0, (window.innerWidth - width) / 2) + 'px'; panel.style.top = Math.max(0, (window.innerHeight - height) / 2) + 'px'; } function openPanel() { if (!panel) createUI(); if (!panel) return; centerPanel(); panel.classList.remove('hy-hidden'); if (isScriptEnabled()) QualityUnlocker.waitForPlayer(); updateQualityOptions(); showMainView(); } function closePanel() { if (!panel) return; panel.classList.add('hy-hidden'); closeAllDDs(); showMainView(); } function createUI() { panel = document.createElement('div'); panel.id = 'hy-panel'; panel.className = 'hy-hidden'; panel.setAttribute('data-theme', theme); const header = document.createElement('div'); header.className = 'hy-hdr'; panelTitleEl = document.createElement('span'); panelTitleEl.textContent = 'My-虎牙优化'; const close = document.createElement('span'); close.className = 'hy-x'; close.textContent = '×'; close.addEventListener('click', closePanel); header.appendChild(panelTitleEl); header.appendChild(close); panel.appendChild(header); header.addEventListener('mousedown', (e) => { if (e.target === close) return; e.preventDefault(); const rect = panel.getBoundingClientRect(); const offsetX = e.clientX - rect.left; const offsetY = e.clientY - rect.top; panel.style.transition = 'none'; function move(ev) { const nextX = Math.max(0, Math.min(window.innerWidth - rect.width, ev.clientX - offsetX)); const nextY = Math.max(0, Math.min(window.innerHeight - rect.height, ev.clientY - offsetY)); panel.style.left = nextX + 'px'; panel.style.top = nextY + 'px'; } function up() { document.removeEventListener('mousemove', move); document.removeEventListener('mouseup', up); panel.style.transition = ''; } document.addEventListener('mousemove', move); document.addEventListener('mouseup', up); }); const body = document.createElement('div'); body.className = 'hy-body'; const contentWrap = document.createElement('div'); contentWrap.className = 'hy-content-wrap'; contentWrap.classList.add('hy-main-view'); mainViewEl = contentWrap; contentWrap.addEventListener('scroll', closeAllDDs); const dashboard = document.createElement('div'); dashboard.className = 'hy-dashboard'; const createStatCard = (labelText) => { const card = document.createElement('div'); card.className = 'hy-stat-card'; const label = document.createElement('div'); label.className = 'hy-stat-label'; label.textContent = labelText; const value = document.createElement('div'); value.className = 'hy-stat-value'; card.appendChild(label); card.appendChild(value); dashboard.appendChild(card); return { card, value }; }; const statusStat = createStatCard('脚本状态'); const settingsStat = createStatCard('基础设置'); const blocksStat = createStatCard('控件屏蔽'); statusPillEl = statusStat.value; settingsPillEl = settingsStat.value; blocksPillEl = blocksStat.value; contentWrap.appendChild(dashboard); const section = document.createElement('div'); section.className = 'hy-section'; const sectionHead = document.createElement('div'); sectionHead.className = 'hy-section-head'; const sectionTitle = document.createElement('div'); sectionTitle.className = 'hy-section-title'; sectionTitle.textContent = '功能设置'; sectionHead.appendChild(sectionTitle); section.appendChild(sectionHead); const onChange = () => { refreshStats(); scheduleApplyAll(); }; const settingsEntry = buildEntryRow({ name: '功能设置', status: '显示模式、画质和加载修复', desc: '管理观看方式、画质和加载状态', className: 'hy-settings-entry', onOpen: () => openSettingsDetail(onChange) }); settingsEntryStatusEl = settingsEntry.status; section.appendChild(settingsEntry.container); contentWrap.appendChild(section); const blockSection = document.createElement('div'); blockSection.className = 'hy-section'; const blockHead = document.createElement('div'); blockHead.className = 'hy-section-head'; const blockTitle = document.createElement('div'); blockTitle.className = 'hy-section-title'; blockTitle.textContent = '控件屏蔽'; blockHead.appendChild(blockTitle); blockSection.appendChild(blockHead); const blockList = document.createElement('div'); blockList.className = 'hy-list hy-control-list'; blockList.appendChild(buildControlBulkRow(onChange)); blockList.appendChild(buildCustomProfileBar(onChange)); blockList.appendChild(buildControlPresetBar(onChange)); const regionGrid = document.createElement('div'); regionGrid.className = 'hy-region-grid'; CONTROL_BLOCK_REGIONS.forEach(region => { regionGrid.appendChild(buildRegionRow(region, onChange)); }); blockList.appendChild(regionGrid); blockSection.appendChild(blockList); contentWrap.appendChild(blockSection); body.appendChild(contentWrap); detailViewEl = document.createElement('div'); detailViewEl.className = 'hy-content-wrap hy-detail-view hy-hidden'; detailViewEl.addEventListener('scroll', closeAllDDs); body.appendChild(detailViewEl); panel.appendChild(body); const footer = document.createElement('div'); footer.className = 'hy-footer'; footer.textContent = VERSION; panel.appendChild(footer); document.body.appendChild(panel); document.addEventListener('keydown', (e) => { if (e.key !== 'Escape' || panel.classList.contains('hy-hidden')) return; if (detailViewEl && !detailViewEl.classList.contains('hy-hidden') && typeof detailEscapeHandler === 'function') { e.preventDefault(); e.stopPropagation(); detailEscapeHandler(); return; } closePanel(); }); refreshStats(); centerPanel(); } function refreshStats() { const changedBase = SETTINGS.filter(item => getVal(item.key, item.def) !== item.def).length; const changedBlocks = PUBLIC_CONTROL_BLOCKS.filter(item => getVal(item.key, false)).length; const running = isScriptEnabled(); if (statusPillEl) { statusPillEl.textContent = running ? '运行中' : '已暂停'; statusPillEl.parentElement.classList.toggle('hy-stat-card-on', running); } if (settingsPillEl) { settingsPillEl.textContent = changedBase + '/' + SETTINGS.length; settingsPillEl.parentElement.classList.toggle('hy-stat-card-on', changedBase > 0); } if (settingsEntryStatusEl) { settingsEntryStatusEl.textContent = changedBase + '/' + SETTINGS.length + ' 项基础设置已调整'; settingsEntryStatusEl.style.color = changedBase > 0 ? 'var(--hy-accent)' : 'var(--hy-text3)'; } if (blocksPillEl) { blocksPillEl.textContent = changedBlocks + '/' + PUBLIC_CONTROL_BLOCKS.length; blocksPillEl.parentElement.classList.toggle('hy-stat-card-on', changedBlocks > 0); } } const CONTROL_BLOCKS = [ { key: 'block_header_nav', name:__hyB64('5bGP6JS96aG26YOo5a+86Iiq'), selectors: [__hyB64('I2R1eWEtaGVhZGVy'), __hyB64('LmR1eWEtaGVhZGVy')] }, { key: 'block_header_nav_links', name:__hyB64('5bGP6JS96aG26YOo6aKR6YGT5a+86Iiq'), selectors: [__hyB64('I0pfZHV5YUhlYWRlck5hdg=='), __hyB64('LmR1eWEtaGVhZGVyLW5hdg=='), __hyB64('LmR1eWEtaGVhZGVyLW1lbnU='), __hyB64('LmR1eWEtbmF2'), __hyB64('LmR1eWEtbmF2LWxpbms=')] }, { key: 'block_header_nav_home', name:__hyB64('5bGP6JS96aG26YOo6aaW6aG15YWl5Y+j'), selectors: [__hyB64('W2RhdGEtaHktY29udHJvbC1ibG9jaz0iaGVhZGVyX25hdl9ob21lIl0=')] }, { key: 'block_header_nav_live', name:__hyB64('5bGP6JS96aG26YOo55u05pKt5YWl5Y+j'), selectors: [__hyB64('W2RhdGEtaHktY29udHJvbC1ibG9jaz0iaGVhZGVyX25hdl9saXZlIl0=')] }, { key: 'block_header_nav_category', name:__hyB64('5bGP6JS96aG26YOo5YiG57G75YWl5Y+j'), selectors: [__hyB64('W2RhdGEtaHktY29udHJvbC1ibG9jaz0iaGVhZGVyX25hdl9jYXRlZ29yeSJd')] }, { key: 'block_header_nav_match', name:__hyB64('5bGP6JS96aG26YOo6LWb5LqL5YWl5Y+j'), selectors: [__hyB64('W2RhdGEtaHktY29udHJvbC1ibG9jaz0iaGVhZGVyX25hdl9tYXRjaCJd')] }, { key: 'block_header_nav_video', name:__hyB64('5bGP6JS96aG26YOo6KeG6aKR5YWl5Y+j'), selectors: [__hyB64('W2RhdGEtaHktY29udHJvbC1ibG9jaz0iaGVhZGVyX25hdl92aWRlbyJd')] }, { key: 'block_header_nav_game', name:__hyB64('5bGP6JS96aG26YOo5ri45oiP5YWl5Y+j'), selectors: [__hyB64('W2RhdGEtaHktY29udHJvbC1ibG9jaz0iaGVhZGVyX25hdl9nYW1lIl0=')] }, { key: 'block_header_nav_trade', name:__hyB64('5bGP6JS96aG26YOo5ri45oiP5Y2W5Y+35YWl5Y+j'), selectors: [__hyB64('W2RhdGEtaHktY29udHJvbC1ibG9jaz0iaGVhZGVyX25hdl90cmFkZSJd')] }, { key: 'block_top_banners', name:__hyB64('5bGP6JS96aG26YOo5rS75Yqo'), selectors: [ __hyB64('I0pfcm9vbUdnVG9w'), __hyB64('LnJvb20tbW9kLWdnVG9w'), __hyB64('LnJvb20tZ2ctdG9w'), __hyB64('I3Jvb20taGQtYmFubmVy'), __hyB64('LnJvb20taGQtYmFubmVy'), __hyB64('W2NsYXNzKj0icm9vbUJhbm5lckluZm8iXQ=='), __hyB64('W2NsYXNzKj0iYmFubmVyTGlzdCJd'), __hyB64('W2NsYXNzKj0iYmFubmVySXRlbSJd') ] }, { key: 'block_anchor_extras', name:__hyB64('5bGP6JS95Li75pKt6ZmE5Yqg5L+h5oGv'), selectors: [ __hyB64('LnN1YnNjcmliZS1lbnRyYW5jZQ=='), __hyB64('I3l5bGl2ZVJrX2dhbWVfbmV3c0J1dA=='), __hyB64('I0pfcm9vbUhkSG9zdEx2SWNvbg=='), __hyB64('LmFuY2hvci1sZXZlbC1pY29u'), __hyB64('I0pfcm9vbUhvdXJSYW5r'), __hyB64('I0pfcm9vbUZhbnNSYW5r'), __hyB64('LnJvb20taG91ci1yYW5r'), __hyB64('LnJvb20tZmFucy1yYW5r') ] }, { key: 'block_sidebar_rank', name:__hyB64('5bGP6JS95Y+z5L6n5qac5Y2V'), selectors: [ __hyB64('I0pfcm9vbVNpZGVIZA=='), __hyB64('I0pfcm9vbVdlZWtseVJhbmtMaXN0'), __hyB64('I0pfcm9vbVdlZWtseVJhbmtMaXN0Um9vdA=='), __hyB64('LnJvb20td2Vla2x5UmFua0xpc3Q='), __hyB64('LnJvb20td2Vla2x5UmFua0xpc3QtY29udGVudA=='), __hyB64('W2NsYXNzKj0iUmFua05hYm9iIl0='), __hyB64('W2NsYXNzKj0icmFuay1pdGVtLS0iXQ==') ] }, { key: 'block_player_danmu', name:__hyB64('5bGP6JS95pKt5pS+5Zmo5by55bmV'), hideMode: 'transparent', selectors: [__hyB64('I2Rhbm11d3JhcA=='), __hyB64('I2Rhbm11ZGl2'), __hyB64('I2Rhbm11ZGl2Mg=='), __hyB64('LmRhbm11LWl0ZW0=')] }, { key: 'block_gift_activity', name:__hyB64('5bGP6JS956S854mp5rS75Yqo5qCP'), selectors: [ __hyB64('I3BsYXllci1naWZ0LXdyYXA='), __hyB64('LnJvb20tcGxheWVyLWdpZnQtcGxhY2Vob2xkZXI='), __hyB64('LnBsYXllci1naWZ0LWxlZnQ='), __hyB64('LnBsYXllci1naWZ0LXJpZ2h0'), __hyB64('LnBsYXllci1ib3gtaWNvbg=='), __hyB64('LnBsYXllci1jaGVzdC1idG4='), __hyB64('LmRpeS1hY3Rpdml0eS1pY29u'), __hyB64('LmRpeS1hY3Rpdml0eS1pY29uLWJveA=='), __hyB64('W2lkXj0iZGl5LWFjdGl2aXR5LWljb24tIl0=') ] }, { key: 'block_player_tips', name:__hyB64('5bGP6JS95o+Q56S65LiO5YaX5L2Z5oyJ6ZKu'), selectors: [ __hyB64('I3BsYXllci1sb2dpbi1ndWlkZS10aXA='), __hyB64('LnBsYXllci1sb2dpbi1ndWlkZS1jbG9zZQ=='), __hyB64('LnBsYXllci1sb2dpbi1ndWlkZS10ZXh0'), __hyB64('LnBsYXllci1yZXBvcnQtYnRu'), __hyB64('LnBsYXllci1yZWZyZXNoLWJ0bg=='), __hyB64('LnBsYXllci1kb3dubG9hZC10aXBz'), __hyB64('LnBsYXllci1hcHAtZ3VpZGU='), __hyB64('W2NsYXNzKj0ibG9naW4tZ3VpZGUiXQ=='), __hyB64('W2NsYXNzKj0iTG9naW5HdWlkZSJd') ] }, { key: 'block_header_search', name:__hyB64('5bGP6JS96aG26YOo5pCc57Si'), selectors: [__hyB64('I0pfZHV5YUhkU2VhcmNo'), __hyB64('LmR1eWEtaGVhZGVyLXNlYXJjaA==')] }, { key: 'block_header_actions', name:__hyB64('5bGP6JS96aG26YOo5YWl5Y+j5oyJ6ZKu'), selectors: [__hyB64('I0pfZHV5YUhlYWRlclJpZ2h0'), __hyB64('LmR1eWEtaGVhZGVyLXJpZ2h0')] }, { key: 'block_header_game_promo', name:__hyB64('5bGP6JS96aG26YOo5ri45oiP5o6o5bm/'), selectors: [ __hyB64('I0pfZHV5YUhlYWRlclJpZ2h0IFtjbGFzcyo9Ik5hdklnLS0iXQ=='), __hyB64('I0pfZHV5YUhlYWRlclJpZ2h0IFtjbGFzcyo9Ik5hdkl0ZW0tLSJdOmhhcyhbY2xhc3MqPSJOYXZJY29uLWlnIl0p'), __hyB64('W2RhdGEtaHktcWEtaGVhZGVyLWdhbWUtcHJvbW9d'), __hyB64('W2RhdGEtaHktY29udHJvbC1ibG9jaz0iaGVhZGVyX2dhbWVfcHJvbW8iXQ==') ] }, { key: 'block_header_activity_promo', name:__hyB64('5bGP6JS96aG26YOo5rS75Yqo5YWl5Y+j'), selectors: [ __hyB64('I0pfZHV5YUhlYWRlclJpZ2h0IFtjbGFzcyo9Ik5hdkFjdGl2aXR5LS0iXQ=='), __hyB64('I0pfZHV5YUhlYWRlclJpZ2h0IFtjbGFzcyo9Ik5hdldlbGZhcmUtLSJd'), __hyB64('I0pfZHV5YUhlYWRlclJpZ2h0IFtjbGFzcyo9Ik5hdkxvdHRlcnktLSJd'), __hyB64('I0pfZHV5YUhlYWRlclJpZ2h0IFtjbGFzcyo9Ik5hdkl0ZW0tLSJdOmhhcyhbY2xhc3MqPSJOYXZJY29uLWFjdGl2aXR5Il0p'), __hyB64('I0pfZHV5YUhlYWRlclJpZ2h0IFtjbGFzcyo9Ik5hdkl0ZW0tLSJdOmhhcyhbY2xhc3MqPSJOYXZJY29uLXdlbGZhcmUiXSk='), __hyB64('W2RhdGEtaHktcWEtaGVhZGVyLWFjdGl2aXR5LXByb21vXQ=='), __hyB64('W2RhdGEtaHktY29udHJvbC1ibG9jaz0iaGVhZGVyX2FjdGl2aXR5X3Byb21vIl0=') ] }, { key: 'block_header_start_live', name:__hyB64('5bGP6JS96aG26YOo5byA5pKt5YWl5Y+j'), selectors: [ __hyB64('I0pfZHV5YUhlYWRlclJpZ2h0IFtjbGFzcyo9Ik5hdkthaUJvLS0iXQ=='), __hyB64('I0pfZHV5YUhlYWRlclJpZ2h0IFtjbGFzcyo9Ik5hdkl0ZW0tLSJdOmhhcyhbY2xhc3MqPSJOYXZJY29uLWxzIl0p'), __hyB64('W2RhdGEtaHktY29udHJvbC1ibG9jaz0iaGVhZGVyX3N0YXJ0X2xpdmUiXQ=='), __hyB64('LnNpZGViYXItaWNvbi1hdXRob3I=') ] }, { key: 'block_header_download', name:__hyB64('5bGP6JS96aG26YOo5LiL6L295YWl5Y+j'), selectors: [__hyB64('I0pfZHV5YUhlYWRlclJpZ2h0IFtjbGFzcyo9Ik5hdkRvd25sb2FkLS0iXQ=='), __hyB64('I0pfZHV5YUhlYWRlclJpZ2h0IFtjbGFzcyo9Ik5hdkl0ZW0tLSJdOmhhcyhbY2xhc3MqPSJOYXZJY29uLWRvd25sb2FkIl0p'), __hyB64('W2RhdGEtaHktY29udHJvbC1ibG9jaz0iaGVhZGVyX2Rvd25sb2FkIl0=')] }, { key: 'block_header_history', name:__hyB64('5bGP6JS96aG26YOo5Y6G5Y+y6K6w5b2V'), selectors: [__hyB64('I0pfZHV5YUhlYWRlclJpZ2h0IFtjbGFzcyo9Ik5hdkl0ZW0tLSJdOmhhcyhbY2xhc3MqPSJOYXZJY29uLWhpc3RvcnkiXSk='), __hyB64('W2RhdGEtaHktY29udHJvbC1ibG9jaz0iaGVhZGVyX2hpc3RvcnkiXQ==')] }, { key: 'block_header_task', name:__hyB64('5bGP6JS96aG26YOo5Lu75Yqh5YWl5Y+j'), selectors: [__hyB64('I0pfZHV5YUhlYWRlclJpZ2h0IFtjbGFzcyo9Ik5hdkl0ZW0tLSJdOmhhcygjdGFzay1pdGVtKQ=='), __hyB64('I3Rhc2staXRlbQ=='), __hyB64('W2RhdGEtaHktY29udHJvbC1ibG9jaz0iaGVhZGVyX3Rhc2siXQ==')] }, { key: 'block_header_login', name:__hyB64('5bGP6JS96aG26YOo55m75b2V5YWl5Y+j'), selectors: [__hyB64('I0pfZHV5YUhlYWRlclJpZ2h0IFtjbGFzcyo9IkxvZ2luLS0iXQ=='), __hyB64('I0pfZHV5YUhlYWRlclJpZ2h0IFtjbGFzcyo9IkxvZ2luSGQtLSJd'), __hyB64('W2RhdGEtaHktY29udHJvbC1ibG9jaz0iaGVhZGVyX2xvZ2luIl0=')] }, { key: 'block_header_message', name:__hyB64('5bGP6JS96aG26YOo5raI5oGv5YWl5Y+j'), selectors: [ __hyB64('I0pfZHV5YUhlYWRlclJpZ2h0IFtjbGFzcyo9Ik5hdk1lc3NhZ2UiXQ=='), __hyB64('I0pfZHV5YUhlYWRlclJpZ2h0IFtjbGFzcyo9Ik5hdk1zZyJd'), __hyB64('I0pfZHV5YUhlYWRlclJpZ2h0IFtjbGFzcyo9Ik1lc3NhZ2UiXQ=='), __hyB64('I0pfZHV5YUhlYWRlclJpZ2h0IFtjbGFzcyo9Im1lc3NhZ2UiXQ=='), __hyB64('I0pfZHV5YUhlYWRlclJpZ2h0IFtjbGFzcyo9Ik5hdkl0ZW0tLSJdOmhhcyhbY2xhc3MqPSJOYXZJY29uLW1zZyJdKQ=='), __hyB64('I0pfZHV5YUhlYWRlclJpZ2h0IFtjbGFzcyo9Ik5hdkl0ZW0tLSJdOmhhcyhbY2xhc3MqPSJOYXZJY29uLW1lc3NhZ2UiXSk='), __hyB64('W2RhdGEtaHktY29udHJvbC1ibG9jaz0iaGVhZGVyX21lc3NhZ2UiXQ==') ] }, { key: 'block_header_message_badge', name:__hyB64('5bGP6JS96aG26YOo5raI5oGv57qi54K5'), selectors: [ __hyB64('I0pfZHV5YUhlYWRlclJpZ2h0IFtjbGFzcyo9Ik5hdk1lc3NhZ2UiXSBbY2xhc3MqPSJCYWRnZSJd'), __hyB64('I0pfZHV5YUhlYWRlclJpZ2h0IFtjbGFzcyo9Ik5hdk1lc3NhZ2UiXSBbY2xhc3MqPSJiYWRnZSJd'), __hyB64('I0pfZHV5YUhlYWRlclJpZ2h0IFtjbGFzcyo9Ik5hdk1zZyJdIFtjbGFzcyo9IkJhZGdlIl0='), __hyB64('I0pfZHV5YUhlYWRlclJpZ2h0IFtjbGFzcyo9Ik5hdk1zZyJdIFtjbGFzcyo9ImJhZGdlIl0='), __hyB64('I0pfZHV5YUhlYWRlclJpZ2h0IFtjbGFzcyo9Ik1lc3NhZ2UiXSBbY2xhc3MqPSJVbnJlYWQiXQ=='), __hyB64('I0pfZHV5YUhlYWRlclJpZ2h0IFtjbGFzcyo9Im1lc3NhZ2UiXSBbY2xhc3MqPSJ1bnJlYWQiXQ=='), __hyB64('W2RhdGEtaHktY29udHJvbC1ibG9jaz0iaGVhZGVyX21lc3NhZ2VfYmFkZ2UiXQ==') ] }, { key: 'block_header_user_avatar', name:__hyB64('5bGP6JS96aG26YOo55So5oi35aS05YOP'), selectors: [ __hyB64('I0pfZHV5YUhlYWRlclJpZ2h0IFtjbGFzcyo9IlVzZXJBdmF0YXIiXQ=='), __hyB64('I0pfZHV5YUhlYWRlclJpZ2h0IFtjbGFzcyo9InVzZXItYXZhdGFyIl0='), __hyB64('I0pfZHV5YUhlYWRlclJpZ2h0IFtjbGFzcyo9IkF2YXRhciJd'), __hyB64('I0pfZHV5YUhlYWRlclJpZ2h0IFtjbGFzcyo9ImF2YXRhciJd'), __hyB64('I0pfZHV5YUhlYWRlclJpZ2h0IGltZ1thbHQqPSLlpLTlg48iXQ=='), __hyB64('W2RhdGEtaHktY29udHJvbC1ibG9jaz0iaGVhZGVyX3VzZXJfYXZhdGFyIl0=') ] }, { key: 'block_header_user_name', name:__hyB64('5bGP6JS96aG26YOo55So5oi35ZCN'), selectors: [ __hyB64('I0pfZHV5YUhlYWRlclJpZ2h0IFtjbGFzcyo9IlVzZXJOYW1lIl0='), __hyB64('I0pfZHV5YUhlYWRlclJpZ2h0IFtjbGFzcyo9InVzZXItbmFtZSJd'), __hyB64('I0pfZHV5YUhlYWRlclJpZ2h0IFtjbGFzcyo9Ik5pY2siXQ=='), __hyB64('I0pfZHV5YUhlYWRlclJpZ2h0IFtjbGFzcyo9Im5pY2siXQ=='), __hyB64('W2RhdGEtaHktY29udHJvbC1ibG9jaz0iaGVhZGVyX3VzZXJfbmFtZSJd') ] }, { key: 'block_header_user_menu', name:__hyB64('5bGP6JS96aG26YOo55So5oi36I+c5Y2V'), selectors: [ __hyB64('W2NsYXNzKj0iVXNlck1lbnUiXTpoYXMoYSk='), __hyB64('W2NsYXNzKj0idXNlci1tZW51Il06aGFzKGEp'), __hyB64('W2NsYXNzKj0iVXNlclBhbmVsIl06aGFzKGEp'), __hyB64('W2NsYXNzKj0idXNlci1wYW5lbCJdOmhhcyhhKQ=='), __hyB64('W2NsYXNzKj0iVXNlckRyb3AiXTpoYXMoYSk='), __hyB64('W2NsYXNzKj0idXNlci1kcm9wIl06aGFzKGEp'), __hyB64('W2RhdGEtaHktY29udHJvbC1ibG9jaz0iaGVhZGVyX3VzZXJfbWVudSJd') ] }, { key: 'block_anchor_follow', name:__hyB64('5bGP6JS95YWz5rOo5oyJ6ZKu'), selectors: [__hyB64('LnN1YnNjcmliZS1lbnRyYW5jZQ=='), __hyB64('I3l5bGl2ZVJrX2dhbWVfbmV3c0J1dA=='), __hyB64('LnN1YnNjcmliZS1jb250cm9s'), __hyB64('LnN1YnNjcmliZS1jb3VudA==')] }, { key: 'block_anchor_level', name:__hyB64('5bGP6JS95Li75pKt562J57qn'), selectors: [__hyB64('I0pfcm9vbUhkSG9zdEx2SWNvbg=='), __hyB64('LmFuY2hvci1sZXZlbC1pY29u')] }, { key: 'block_anchor_hour_rank', name:__hyB64('5bGP6JS95aS06YOo5bCP5pe25qac'), selectors: [__hyB64('I0pfcm9vbUhvdXJSYW5r'), __hyB64('LnJvb20taG91ci1yYW5r')] }, { key: 'block_anchor_fans_rank', name:__hyB64('5bGP6JS95aS06YOo57KJ5LidL+WuiOaKpOamnA=='), selectors: [__hyB64('I0pfcm9vbUZhbnNSYW5r'), __hyB64('LnJvb20tZmFucy1yYW5r')] }, { key: 'block_room_banner', name:__hyB64('5bGP6JS955u05pKt6Ze05aS06YOo5rS75Yqo5qiq5bmF'), selectors: [__hyB64('I0pfcm9vbUdnVG9w'), __hyB64('LnJvb20tbW9kLWdnVG9w'), __hyB64('LnJvb20tZ2ctdG9w'), __hyB64('I3Jvb20taGQtYmFubmVy'), __hyB64('LnJvb20taGQtYmFubmVy'), __hyB64('W2NsYXNzKj0icm9vbUJhbm5lckluZm8iXQ=='), __hyB64('W2NsYXNzKj0iYmFubmVyTGlzdCJd'), __hyB64('W2NsYXNzKj0iYmFubmVySXRlbSJd')] }, { key: 'block_room_match_label', name:__hyB64('5bGP6JS955u05pKt6Ze06LWb5LqL5qCH6aKY'), selectors: [__hyB64('W2RhdGEtaHktY29udHJvbC1ibG9jaz0icm9vbV9tYXRjaF9sYWJlbCJd')] }, { key: 'block_room_id', name:__hyB64('5bGP6JS95oi/6Ze05Y+3'), selectors: [__hyB64('W2RhdGEtaHktY29udHJvbC1ibG9jaz0icm9vbV9pZCJd')] }, { key: 'block_room_viewer_count', name:__hyB64('5bGP6JS96KeC55yL5Lq65pWw'), selectors: [__hyB64('W2RhdGEtaHktY29udHJvbC1ibG9jaz0icm9vbV92aWV3ZXJfY291bnQiXQ==')] }, { key: 'block_room_category', name:__hyB64('5bGP6JS955u05pKt5YiG57G75YWl5Y+j'), selectors: [__hyB64('W2RhdGEtaHktY29udHJvbC1ibG9jaz0icm9vbV9jYXRlZ29yeSJd')] }, { key: 'block_sidebar_rank_nav', name:__hyB64('5bGP6JS95Y+z5L6n5qac5Y2V5YiH5o2i5qCH562+'), selectors: [__hyB64('LnJvb20td2Vla2x5UmFua0xpc3QtbmF2'), __hyB64('LnJvb20td2Vla2x5UmFua0xpc3QtbmF2LWl0ZW0=')] }, { key: 'block_sidebar_rank_content', name:__hyB64('5bGP6JS95Y+z5L6n5qac5Y2V55So5oi35YiX6KGo'), selectors: [__hyB64('I0pfcm9vbVdlZWtseVJhbmtMaXN0Um9vdA=='), __hyB64('LnJvb20td2Vla2x5UmFua0xpc3QtY29udGVudA=='), __hyB64('W2NsYXNzKj0iUmFua05hYm9iIl0='), __hyB64('W2NsYXNzKj0icmFuay1pdGVtLS0iXQ==')] }, { key: 'block_sidebar_rank_avatars', name:__hyB64('5bGP6JS95qac5Y2V55So5oi35aS05YOP'), selectors: [ __hyB64('W2RhdGEtaHktY29udHJvbC1ibG9jaz0ic2lkZWJhcl9yYW5rX2F2YXRhcnMiXQ=='), __hyB64('I0pfcm9vbVdlZWtseVJhbmtMaXN0Um9vdCBbY2xhc3MqPSJhdmF0YXIiXQ=='), __hyB64('I0pfcm9vbVdlZWtseVJhbmtMaXN0Um9vdCBbY2xhc3MqPSJBdmF0YXIiXQ=='), __hyB64('I0pfcm9vbVdlZWtseVJhbmtMaXN0Um9vdCBpbWdbYWx0Kj0i5aS05YOPIl0='), __hyB64('LnJvb20td2Vla2x5UmFua0xpc3QgW2NsYXNzKj0iYXZhdGFyIl0='), __hyB64('W2NsYXNzKj0iUmFua05hYm9iIl0gW2NsYXNzKj0iYXZhdGFyIl0=') ] }, { key: 'block_sidebar_rank_user_names', name:__hyB64('5bGP6JS95qac5Y2V55So5oi35pi156ew'), selectors: [ __hyB64('W2RhdGEtaHktY29udHJvbC1ibG9jaz0ic2lkZWJhcl9yYW5rX3VzZXJfbmFtZXMiXQ=='), __hyB64('I0pfcm9vbVdlZWtseVJhbmtMaXN0Um9vdCBbY2xhc3MqPSJuaWNrIl0='), __hyB64('I0pfcm9vbVdlZWtseVJhbmtMaXN0Um9vdCBbY2xhc3MqPSJOaWNrIl0='), __hyB64('I0pfcm9vbVdlZWtseVJhbmtMaXN0Um9vdCBbY2xhc3MqPSJ1c2VyLW5hbWUiXQ=='), __hyB64('I0pfcm9vbVdlZWtseVJhbmtMaXN0Um9vdCBbY2xhc3MqPSJVc2VyTmFtZSJd'), __hyB64('I0pfcm9vbVdlZWtseVJhbmtMaXN0Um9vdCBbY2xhc3MqPSJyYW5rLW5hbWUiXQ=='), __hyB64('I0pfcm9vbVdlZWtseVJhbmtMaXN0Um9vdCBbY2xhc3MqPSJSYW5rTmFtZSJd'), __hyB64('LnJvb20td2Vla2x5UmFua0xpc3QgW2NsYXNzKj0ibmljayJd'), __hyB64('W2NsYXNzKj0iUmFua05hYm9iIl0gW2NsYXNzKj0ibmljayJd') ] }, { key: 'block_sidebar_rank_values', name:__hyB64('5bGP6JS95qac5Y2V6LSh54yu5pWw5YC8'), selectors: [ __hyB64('W2RhdGEtaHktY29udHJvbC1ibG9jaz0ic2lkZWJhcl9yYW5rX3ZhbHVlcyJd'), __hyB64('I0pfcm9vbVdlZWtseVJhbmtMaXN0Um9vdCBbY2xhc3MqPSJzY29yZSJd'), __hyB64('I0pfcm9vbVdlZWtseVJhbmtMaXN0Um9vdCBbY2xhc3MqPSJTY29yZSJd'), __hyB64('I0pfcm9vbVdlZWtseVJhbmtMaXN0Um9vdCBbY2xhc3MqPSJ2YWx1ZSJd'), __hyB64('I0pfcm9vbVdlZWtseVJhbmtMaXN0Um9vdCBbY2xhc3MqPSJWYWx1ZSJd'), __hyB64('I0pfcm9vbVdlZWtseVJhbmtMaXN0Um9vdCBbY2xhc3MqPSJjb250cmlidXRpb24iXQ=='), __hyB64('I0pfcm9vbVdlZWtseVJhbmtMaXN0Um9vdCBbY2xhc3MqPSJDb250cmlidXRpb24iXQ=='), __hyB64('I0pfcm9vbVdlZWtseVJhbmtMaXN0Um9vdCBbY2xhc3MqPSJoZWF0Il0='), __hyB64('I0pfcm9vbVdlZWtseVJhbmtMaXN0Um9vdCBbY2xhc3MqPSJIZWF0Il0='), __hyB64('W2NsYXNzKj0iUmFua05hYm9iIl0gW2NsYXNzKj0ic2NvcmUiXQ=='), __hyB64('W2NsYXNzKj0iUmFua05hYm9iIl0gW2NsYXNzKj0idmFsdWUiXQ==') ] }, { key: 'block_sidebar_rank_numbers', name:__hyB64('5bGP6JS95qac5Y2V5o6S5ZCN5bqP5Y+3'), selectors: [ __hyB64('W2RhdGEtaHktY29udHJvbC1ibG9jaz0ic2lkZWJhcl9yYW5rX251bWJlcnMiXQ=='), __hyB64('I0pfcm9vbVdlZWtseVJhbmtMaXN0Um9vdCBbY2xhc3MqPSJyYW5rLWluZGV4Il0='), __hyB64('I0pfcm9vbVdlZWtseVJhbmtMaXN0Um9vdCBbY2xhc3MqPSJSYW5rSW5kZXgiXQ=='), __hyB64('I0pfcm9vbVdlZWtseVJhbmtMaXN0Um9vdCBbY2xhc3MqPSJyYW5rLW5vIl0='), __hyB64('I0pfcm9vbVdlZWtseVJhbmtMaXN0Um9vdCBbY2xhc3MqPSJSYW5rTm8iXQ=='), __hyB64('I0pfcm9vbVdlZWtseVJhbmtMaXN0Um9vdCBbY2xhc3MqPSJyYW5rLW51bSJd'), __hyB64('I0pfcm9vbVdlZWtseVJhbmtMaXN0Um9vdCBbY2xhc3MqPSJSYW5rTnVtIl0='), __hyB64('I0pfcm9vbVdlZWtseVJhbmtMaXN0Um9vdCBbY2xhc3MqPSJyYW5rLW9yZGVyIl0='), __hyB64('I0pfcm9vbVdlZWtseVJhbmtMaXN0Um9vdCBbY2xhc3MqPSJSYW5rT3JkZXIiXQ=='), __hyB64('W2NsYXNzKj0iUmFua05hYm9iIl0gW2NsYXNzKj0icmFuay1pbmRleCJd'), __hyB64('W2NsYXNzKj0iUmFua05hYm9iIl0gW2NsYXNzKj0icmFuay1ubyJd') ] }, { key: 'block_sidebar_user_badges', name:__hyB64('5bGP6JS95qac5Y2V55So5oi35b6956ug'), selectors: [ __hyB64('I0pfcm9vbVdlZWtseVJhbmtMaXN0Um9vdCBbY2xhc3MqPSJub2JsZS1tZWRhbCJd'), __hyB64('I0pfcm9vbVdlZWtseVJhbmtMaXN0Um9vdCBbY2xhc3MqPSJHdWFyZGlhbk1lZGFsIl0='), __hyB64('I0pfcm9vbVdlZWtseVJhbmtMaXN0Um9vdCAuZmFucy1pY29u'), __hyB64('I0pfcm9vbVdlZWtseVJhbmtMaXN0Um9vdCBbY2xhc3MqPSJDb25zdW1lTGV2ZWxCYWRnZSJd') ] }, { key: 'block_sidebar_rank_noble_badges', name:__hyB64('5bGP6JS95qac5Y2V6LS15peP5b6956ug'), selectors: [ __hyB64('I0pfcm9vbVdlZWtseVJhbmtMaXN0Um9vdCBbY2xhc3MqPSJub2JsZS1tZWRhbCJd'), __hyB64('I0pfcm9vbVdlZWtseVJhbmtMaXN0Um9vdCBbY2xhc3MqPSJOb2JsZU1lZGFsIl0='), __hyB64('I0pfcm9vbVdlZWtseVJhbmtMaXN0Um9vdCBbY2xhc3MqPSJub2JsZUljb24iXQ=='), __hyB64('LnJvb20td2Vla2x5UmFua0xpc3QgW2NsYXNzKj0ibm9ibGUtbWVkYWwiXQ=='), __hyB64('W2NsYXNzKj0iUmFua05hYm9iIl0gW2NsYXNzKj0ibm9ibGUiXQ==') ] }, { key: 'block_sidebar_rank_guard_badges', name:__hyB64('5bGP6JS95qac5Y2V5a6I5oqk5b6956ug'), selectors: [ __hyB64('I0pfcm9vbVdlZWtseVJhbmtMaXN0Um9vdCBbY2xhc3MqPSJHdWFyZGlhbk1lZGFsIl0='), __hyB64('I0pfcm9vbVdlZWtseVJhbmtMaXN0Um9vdCBbY2xhc3MqPSJndWFyZGlhbi1tZWRhbCJd'), __hyB64('I0pfcm9vbVdlZWtseVJhbmtMaXN0Um9vdCBbY2xhc3MqPSJndWFyZGlhbk1lZGFsIl0='), __hyB64('LnJvb20td2Vla2x5UmFua0xpc3QgW2NsYXNzKj0iR3VhcmRpYW5NZWRhbCJd'), __hyB64('W2NsYXNzKj0iUmFua05hYm9iIl0gW2NsYXNzKj0iZ3VhcmRpYW4iXQ==') ] }, { key: 'block_sidebar_rank_fans_badges', name:__hyB64('5bGP6JS95qac5Y2V57KJ5Lid54mM'), selectors: [ __hyB64('I0pfcm9vbVdlZWtseVJhbmtMaXN0Um9vdCAuZmFucy1pY29u'), __hyB64('I0pfcm9vbVdlZWtseVJhbmtMaXN0Um9vdCBbY2xhc3MqPSJmYW5zLWljb24iXQ=='), __hyB64('I0pfcm9vbVdlZWtseVJhbmtMaXN0Um9vdCBbY2xhc3MqPSJGYW5zTWVkYWwiXQ=='), __hyB64('I0pfcm9vbVdlZWtseVJhbmtMaXN0Um9vdCBbY2xhc3MqPSJmYW5zTWVkYWwiXQ=='), __hyB64('LnJvb20td2Vla2x5UmFua0xpc3QgLmZhbnMtaWNvbg=='), __hyB64('W2NsYXNzKj0iUmFua05hYm9iIl0gW2NsYXNzKj0iZmFucyJd') ] }, { key: 'block_sidebar_rank_level_badges', name:__hyB64('5bGP6JS95qac5Y2V562J57qn5b6956ug'), selectors: [ __hyB64('I0pfcm9vbVdlZWtseVJhbmtMaXN0Um9vdCBbY2xhc3MqPSJDb25zdW1lTGV2ZWxCYWRnZSJd'), __hyB64('I0pfcm9vbVdlZWtseVJhbmtMaXN0Um9vdCBbY2xhc3MqPSJjb25zdW1lLWxldmVsIl0='), __hyB64('I0pfcm9vbVdlZWtseVJhbmtMaXN0Um9vdCBbY2xhc3MqPSJjb25zdW1lTGV2ZWwiXQ=='), __hyB64('LnJvb20td2Vla2x5UmFua0xpc3QgW2NsYXNzKj0iQ29uc3VtZUxldmVsQmFkZ2UiXQ=='), __hyB64('W2NsYXNzKj0iUmFua05hYm9iIl0gW2NsYXNzKj0iQ29uc3VtZUxldmVsIl0=') ] }, { key: 'block_sidebar_chat_messages', name:__hyB64('5bGP6JS95Y+z5L6n6IGK5aSp5raI5oGv'), selectors: [ __hyB64('I0pfcm9vbUNoYXRMaXN0'), __hyB64('I0pfbXNnTGlzdA=='), __hyB64('I2NoYXQtcm9vbV9fd3JhcA=='), __hyB64('I2NoYXQtcm9vbV9fbGlzdA=='), __hyB64('LnJvb20tY2hhdC1saXN0'), __hyB64('LmNoYXQtcm9vbV9fbGlzdA=='), __hyB64('LnJvb20tc2lkZWJhci1jaGF0ICNjaGF0LXJvb21fX3dyYXA='), __hyB64('W2NsYXNzKj0iQ2hhdExpc3QiXQ=='), __hyB64('W2NsYXNzKj0iY2hhdC1saXN0Il0='), __hyB64('W2RhdGEtaHktY29udHJvbC1ibG9jaz0ic2lkZWJhcl9jaGF0X21lc3NhZ2VzIl0=') ] }, { key: 'block_sidebar_chat_fans_badges', name:__hyB64('5bGP6JS96IGK5aSp57KJ5Lid54mM'), selectors: [ __hyB64('I2NoYXQtcm9vbV9fd3JhcCAubXNnLW5vcm1hbC1kZWNvcmF0aW9uUHJlZml4'), __hyB64('I2NoYXQtcm9vbV9fd3JhcCAuZmFucy1pY29u'), __hyB64('I2NoYXQtcm9vbV9fd3JhcCBbY2xhc3MqPSJmYW5zLWljb24iXQ=='), __hyB64('W2RhdGEtaHktY29udHJvbC1ibG9jaz0ic2lkZWJhcl9jaGF0X2ZhbnNfYmFkZ2VzIl0=') ] }, { key: 'block_sidebar_chat_level_badges', name:__hyB64('5bGP6JS96IGK5aSp562J57qn5qCH562+'), selectors: [ __hyB64('I2NoYXQtcm9vbV9fd3JhcCBbY2xhc3MqPSJDb25zdW1lTGV2ZWxCYWRnZSJd'), __hyB64('W2RhdGEtaHktY29udHJvbC1ibG9jaz0ic2lkZWJhcl9jaGF0X2xldmVsX2JhZGdlcyJd') ] }, { key: 'block_sidebar_chat_noble_effects', name:__hyB64('5bGP6JS96IGK5aSp6LS15pePL+i/m+Wcuuagh+ivhg=='), selectors: [ __hyB64('I2NoYXQtcm9vbV9fd3JhcCBbY2xhc3MqPSJub2JsZS1tZWRhbCJd'), __hyB64('I2NoYXQtcm9vbV9fd3JhcCBbY2xhc3MqPSJHdWFyZGlhbk1lZGFsIl0='), __hyB64('I2NoYXQtcm9vbV9fd3JhcCBbY2xhc3MqPSJtc2ctcGljIl0='), __hyB64('W2RhdGEtaHktY29udHJvbC1ibG9jaz0ic2lkZWJhcl9jaGF0X25vYmxlX2VmZmVjdHMiXQ==') ] }, { key: 'block_sidebar_chat_user_names', name:__hyB64('5bGP6JS96IGK5aSp55So5oi35ZCN'), selectors: [ __hyB64('I2NoYXQtcm9vbV9fd3JhcCAubmFtZS5KX3VzZXJNZW51'), __hyB64('I2NoYXQtcm9vbV9fd3JhcCBbY2xhc3MqPSJuYW1lLS0iXQ=='), __hyB64('W2RhdGEtaHktY29udHJvbC1ibG9jaz0ic2lkZWJhcl9jaGF0X3VzZXJfbmFtZXMiXQ==') ] }, { key: 'block_sidebar_chat_system_messages', name:__hyB64('5bGP6JS96IGK5aSp57O757ufL+i/m+Wcuua2iOaBrw=='), selectors: [ __hyB64('I2NoYXQtcm9vbV9fd3JhcCBbY2xhc3MqPSJSb29tTWVzc2FnZVJpY2hUZXh0Il0='), __hyB64('I2NoYXQtcm9vbV9fd3JhcCBbY2xhc3MqPSJib3gtbm9ibGUtbGV2ZWwiXQ=='), __hyB64('W2RhdGEtaHktY29udHJvbC1ibG9jaz0ic2lkZWJhcl9jaGF0X3N5c3RlbV9tZXNzYWdlcyJd'), __hyB64('W2RhdGEtaHktY29udHJvbC1ibG9jaz0ic2lkZWJhcl9jaGF0X2VudGVyX21lc3NhZ2VzIl0='), __hyB64('W2RhdGEtaHktY29udHJvbC1ibG9jaz0ic2lkZWJhcl9jaGF0X25vdGljZV9tZXNzYWdlcyJd'), __hyB64('W2RhdGEtaHktY29udHJvbC1ibG9jaz0ic2lkZWJhcl9jaGF0X25vYmxlX21lc3NhZ2VzIl0='), __hyB64('W2RhdGEtaHktY29udHJvbC1ibG9jaz0ic2lkZWJhcl9jaGF0X2d1YXJkX21lc3NhZ2VzIl0='), __hyB64('W2RhdGEtaHktY29udHJvbC1ibG9jaz0ic2lkZWJhcl9jaGF0X3N1YnNjcmliZV9tZXNzYWdlcyJd'), __hyB64('W2RhdGEtaHktY29udHJvbC1ibG9jaz0ic2lkZWJhcl9jaGF0X2dpZnRfbWVzc2FnZXMiXQ=='), __hyB64('W2RhdGEtaHktY29udHJvbC1ibG9jaz0ic2lkZWJhcl9jaGF0X21hbmFnZXJfbWVzc2FnZXMiXQ=='), __hyB64('W2RhdGEtaHktY29udHJvbC1ibG9jaz0ic2lkZWJhcl9jaGF0X2xvdHRlcnlfbWVzc2FnZXMiXQ==') ] }, { key: 'block_sidebar_chat_enter_messages', name:__hyB64('5bGP6JS96IGK5aSp6L+b5Zy65raI5oGv'), selectors: [__hyB64('W2RhdGEtaHktY29udHJvbC1ibG9jaz0ic2lkZWJhcl9jaGF0X2VudGVyX21lc3NhZ2VzIl0=')] }, { key: 'block_sidebar_chat_notice_messages', name:__hyB64('5bGP6JS96IGK5aSp5YWs5ZGK5raI5oGv'), selectors: [__hyB64('W2RhdGEtaHktY29udHJvbC1ibG9jaz0ic2lkZWJhcl9jaGF0X25vdGljZV9tZXNzYWdlcyJd')] }, { key: 'block_sidebar_chat_noble_messages', name:__hyB64('5bGP6JS96IGK5aSp6LS15peP5raI5oGv'), selectors: [__hyB64('W2RhdGEtaHktY29udHJvbC1ibG9jaz0ic2lkZWJhcl9jaGF0X25vYmxlX21lc3NhZ2VzIl0=')] }, { key: 'block_sidebar_chat_guard_messages', name:__hyB64('5bGP6JS96IGK5aSp5a6I5oqk5raI5oGv'), selectors: [__hyB64('W2RhdGEtaHktY29udHJvbC1ibG9jaz0ic2lkZWJhcl9jaGF0X2d1YXJkX21lc3NhZ2VzIl0=')] }, { key: 'block_sidebar_chat_subscribe_messages', name:__hyB64('5bGP6JS96IGK5aSp6K6i6ZiF5raI5oGv'), selectors: [__hyB64('W2RhdGEtaHktY29udHJvbC1ibG9jaz0ic2lkZWJhcl9jaGF0X3N1YnNjcmliZV9tZXNzYWdlcyJd')] }, { key: 'block_sidebar_chat_gift_messages', name:__hyB64('5bGP6JS96IGK5aSp56S854mp5raI5oGv'), selectors: [__hyB64('W2RhdGEtaHktY29udHJvbC1ibG9jaz0ic2lkZWJhcl9jaGF0X2dpZnRfbWVzc2FnZXMiXQ==')] }, { key: 'block_sidebar_chat_manager_messages', name:__hyB64('5bGP6JS96IGK5aSp5oi/566h5raI5oGv'), selectors: [__hyB64('W2RhdGEtaHktY29udHJvbC1ibG9jaz0ic2lkZWJhcl9jaGF0X21hbmFnZXJfbWVzc2FnZXMiXQ==')] }, { key: 'block_sidebar_chat_lottery_messages', name:__hyB64('5bGP6JS96IGK5aSp5oq95aWW5Lit5aWW5raI5oGv'), selectors: [__hyB64('W2RhdGEtaHktY29udHJvbC1ibG9jaz0ic2lkZWJhcl9jaGF0X2xvdHRlcnlfbWVzc2FnZXMiXQ==')] }, { key: 'block_sidebar_chat_input', name:__hyB64('5bGP6JS95Y+z5L6n6IGK5aSp6L6T5YWl5Yy6'), selectors: [ __hyB64('I0pfcm9vbUNoYXRJbnB1dA=='), __hyB64('I3B1Yl9tc2dfaW5wdXQ='), __hyB64('LnJvb20tY2hhdC1pbnB1dA=='), __hyB64('LmNoYXQtcm9vbV9faW5wdXQ='), __hyB64('W2NsYXNzKj0iQ2hhdElucHV0Il0='), __hyB64('W2NsYXNzKj0iY2hhdC1pbnB1dCJd'), __hyB64('W2RhdGEtaHktY29udHJvbC1ibG9jaz0ic2lkZWJhcl9jaGF0X2lucHV0Il0=') ] }, { key: 'block_sidebar_chat_textarea', name:__hyB64('5bGP6JS96IGK5aSp6L6T5YWl5qGG'), selectors: [ __hyB64('I0pfcm9vbUNoYXRJbnB1dCAjcHViX21zZ19pbnB1dA=='), __hyB64('I3B1Yl9tc2dfaW5wdXQ='), ...genChatInputSelectors(__hyB64('c2lkZWJhcl9jaGF0X3RleHRhcmVh'), [__hyB64('I0pfcm9vbUNoYXRJbnB1dA=='), __hyB64('LnJvb20tY2hhdC1pbnB1dA=='), __hyB64('LmNoYXQtcm9vbV9faW5wdXQ='), __hyB64('W2NsYXNzKj0iQ2hhdElucHV0Il0='), __hyB64('W2NsYXNzKj0iY2hhdC1pbnB1dCJd')], [__hyB64('dGV4dGFyZWE='), __hyB64('aW5wdXRbdHlwZT0idGV4dCJd'), __hyB64('aW5wdXQ6bm90KFt0eXBlXSk='), __hyB64('W2NvbnRlbnRlZGl0YWJsZT0idHJ1ZSJd')]) ] }, { key: 'block_sidebar_chat_emoji_button', name:__hyB64('5bGP6JS96IGK5aSp6KGo5oOF5oyJ6ZKu'), selectors: genChatInputSelectors(__hyB64('c2lkZWJhcl9jaGF0X2Vtb2ppX2J1dHRvbg=='), [__hyB64('I0pfcm9vbUNoYXRJbnB1dA=='), __hyB64('LnJvb20tY2hhdC1pbnB1dA=='), __hyB64('LmNoYXQtcm9vbV9faW5wdXQ=')], [__hyB64('W3RpdGxlKj0i6KGo5oOFIl0='), __hyB64('W2FyaWEtbGFiZWwqPSLooajmg4UiXQ=='), __hyB64('W2RhdGEtdGl0bGUqPSLooajmg4UiXQ=='), __hyB64('W2NsYXNzKj0iRW1vamkiXQ=='), __hyB64('W2NsYXNzKj0iZW1vamkiXQ=='), __hyB64('W2NsYXNzKj0iRW1vdGlvbiJd'), __hyB64('W2NsYXNzKj0iZW1vdGlvbiJd'), __hyB64('W2NsYXNzKj0iRW1vdGljb24iXQ=='), __hyB64('W2NsYXNzKj0iZW1vdGljb24iXQ=='), __hyB64('W2NsYXNzKj0iRmFjZSJd'), __hyB64('W2NsYXNzKj0iZmFjZSJd')]) }, { key: 'block_sidebar_chat_quick_buttons', name:__hyB64('5bGP6JS96IGK5aSp5b+r5o235bel5YW3'), selectors: genChatInputSelectors(__hyB64('c2lkZWJhcl9jaGF0X3F1aWNrX2J1dHRvbnM='), [__hyB64('I0pfcm9vbUNoYXRJbnB1dA=='), __hyB64('LnJvb20tY2hhdC1pbnB1dA==')], [__hyB64('W3RpdGxlKj0i5b+r5o23Il0='), __hyB64('W2FyaWEtbGFiZWwqPSLlv6vmjbciXQ=='), __hyB64('W2RhdGEtdGl0bGUqPSLlv6vmjbciXQ=='), __hyB64('W3RpdGxlKj0i5by55bmVIl0='), __hyB64('W2FyaWEtbGFiZWwqPSLlvLnluZUiXQ=='), __hyB64('W2RhdGEtdGl0bGUqPSLlvLnluZUiXQ=='), __hyB64('W3RpdGxlKj0i6aKc6ImyIl0='), __hyB64('W2FyaWEtbGFiZWwqPSLpopzoibIiXQ=='), __hyB64('W2RhdGEtdGl0bGUqPSLpopzoibIiXQ=='), __hyB64('W2NsYXNzKj0iUXVpY2tSZXBseSJd'), __hyB64('W2NsYXNzKj0icXVpY2stcmVwbHkiXQ=='), __hyB64('W2NsYXNzKj0iRGFubXUiXQ=='), __hyB64('W2NsYXNzKj0iZGFubXUiXQ=='), __hyB64('W2NsYXNzKj0iQ29sb3IiXQ=='), __hyB64('W2NsYXNzKj0iY29sb3IiXQ==')]) }, { key: 'block_sidebar_chat_input_identity_entry', name:__hyB64('5bGP6JS96L6T5YWl5Yy66Lqr5Lu95YWl5Y+j'), selectors: [ __hyB64('W2RhdGEtaHktY29udHJvbC1ibG9jaz0ic2lkZWJhcl9jaGF0X2lucHV0X2lkZW50aXR5X2VudHJ5Il0='), __hyB64('I0pfcm9vbUNoYXRJbnB1dCBbdGl0bGUqPSLnsonkuJ3niYwiXQ=='), __hyB64('I0pfcm9vbUNoYXRJbnB1dCBbdGl0bGUqPSLlvr3nq6AiXQ=='), __hyB64('I0pfcm9vbUNoYXRJbnB1dCBbdGl0bGUqPSLouqvku70iXQ=='), __hyB64('I0pfcm9vbUNoYXRJbnB1dCBbdGl0bGUqPSLoo4Xmia4iXQ=='), __hyB64('I0pfcm9vbUNoYXRJbnB1dCBbdGl0bGUqPSLotLXml48iXQ=='), __hyB64('I0pfcm9vbUNoYXRJbnB1dCBbdGl0bGUqPSLlrojmiqQiXQ=='), __hyB64('I0pfcm9vbUNoYXRJbnB1dCBbY2xhc3MqPSJCYWRnZSJd'), __hyB64('I0pfcm9vbUNoYXRJbnB1dCBbY2xhc3MqPSJNZWRhbCJd'), __hyB64('I0pfcm9vbUNoYXRJbnB1dCBbY2xhc3MqPSJOb2JsZSJd'), __hyB64('I0pfcm9vbUNoYXRJbnB1dCBbY2xhc3MqPSJHdWFyZGlhbiJd'), __hyB64('I0pfcm9vbUNoYXRJbnB1dCBbY2xhc3MqPSJEcmVzcyJd'), __hyB64('I0pfcm9vbUNoYXRJbnB1dCBbY2xhc3MqPSJEZWNvcmF0aW9uIl0='), __hyB64('LnJvb20tY2hhdC1pbnB1dCBbY2xhc3MqPSJCYWRnZSJd'), __hyB64('LnJvb20tY2hhdC1pbnB1dCBbY2xhc3MqPSJNZWRhbCJd'), __hyB64('LnJvb20tY2hhdC1pbnB1dCBbY2xhc3MqPSJOb2JsZSJd'), __hyB64('LnJvb20tY2hhdC1pbnB1dCBbY2xhc3MqPSJHdWFyZGlhbiJd'), __hyB64('LnJvb20tY2hhdC1pbnB1dCBbY2xhc3MqPSJEcmVzcyJd'), __hyB64('LnJvb20tY2hhdC1pbnB1dCBbY2xhc3MqPSJEZWNvcmF0aW9uIl0=') ] }, { key: 'block_sidebar_chat_input_tips', name:__hyB64('5bGP6JS96L6T5YWl5Yy65o+Q56S6'), selectors: [ __hyB64('W2RhdGEtaHktY29udHJvbC1ibG9jaz0ic2lkZWJhcl9jaGF0X2lucHV0X3RpcHMiXQ=='), __hyB64('I0pfcm9vbUNoYXRJbnB1dCBbY2xhc3MqPSJUaXAiXQ=='), __hyB64('I0pfcm9vbUNoYXRJbnB1dCBbY2xhc3MqPSJ0aXAiXQ=='), __hyB64('I0pfcm9vbUNoYXRJbnB1dCBbY2xhc3MqPSJIaW50Il0='), __hyB64('I0pfcm9vbUNoYXRJbnB1dCBbY2xhc3MqPSJoaW50Il0='), __hyB64('I0pfcm9vbUNoYXRJbnB1dCBbY2xhc3MqPSJOb3RpY2UiXQ=='), __hyB64('I0pfcm9vbUNoYXRJbnB1dCBbY2xhc3MqPSJub3RpY2UiXQ=='), __hyB64('I0pfcm9vbUNoYXRJbnB1dCBbY2xhc3MqPSJHdWlkZSJd'), __hyB64('I0pfcm9vbUNoYXRJbnB1dCBbY2xhc3MqPSJndWlkZSJd'), __hyB64('I0pfcm9vbUNoYXRJbnB1dCBbY2xhc3MqPSJMaW1pdCJd'), __hyB64('I0pfcm9vbUNoYXRJbnB1dCBbY2xhc3MqPSJsaW1pdCJd'), __hyB64('I0pfcm9vbUNoYXRJbnB1dCBbY2xhc3MqPSJDb3VudGVyIl0='), __hyB64('I0pfcm9vbUNoYXRJbnB1dCBbY2xhc3MqPSJjb3VudGVyIl0='), __hyB64('LnJvb20tY2hhdC1pbnB1dCBbY2xhc3MqPSJUaXAiXQ=='), __hyB64('LnJvb20tY2hhdC1pbnB1dCBbY2xhc3MqPSJ0aXAiXQ=='), __hyB64('LnJvb20tY2hhdC1pbnB1dCBbY2xhc3MqPSJOb3RpY2UiXQ=='), __hyB64('LnJvb20tY2hhdC1pbnB1dCBbY2xhc3MqPSJub3RpY2UiXQ=='), __hyB64('LnJvb20tY2hhdC1pbnB1dCBbY2xhc3MqPSJHdWlkZSJd'), __hyB64('LnJvb20tY2hhdC1pbnB1dCBbY2xhc3MqPSJndWlkZSJd') ] }, { key: 'block_sidebar_chat_send_button', name:__hyB64('5bGP6JS96IGK5aSp5Y+R6YCB5oyJ6ZKu'), selectors: [ __hyB64('I0pfcm9vbUNoYXRJbnB1dCBidXR0b25bdHlwZT0ic3VibWl0Il0='), __hyB64('I0pfcm9vbUNoYXRJbnB1dCAuc2VuZC1idG4='), __hyB64('LnJvb20tY2hhdC1pbnB1dCAuc2VuZC1idG4='), __hyB64('LmNoYXQtcm9vbV9faW5wdXQgLnNlbmQtYnRu'), __hyB64('W2NsYXNzKj0iQ2hhdElucHV0Il0gW2NsYXNzKj0iU2VuZEJ0biJd'), __hyB64('W2NsYXNzKj0iY2hhdC1pbnB1dCJdIFtjbGFzcyo9InNlbmQtYnRuIl0='), __hyB64('W2RhdGEtaHktY29udHJvbC1ibG9jaz0ic2lkZWJhcl9jaGF0X3NlbmRfYnV0dG9uIl0=') ] }, { key: 'block_sidebar_chat_emoji_panel', name:__hyB64('5bGP6JS96IGK5aSp6KGo5oOF6Z2i5p2/'), selectors: [ __hyB64('W2RhdGEtaHktY29udHJvbC1ibG9jaz0ic2lkZWJhcl9jaGF0X2Vtb2ppX3BhbmVsIl0='), __hyB64('I0pfcm9vbVNpZGUgW2NsYXNzKj0iRW1vamlQYW5lbCJd'), __hyB64('I0pfcm9vbVNpZGUgW2NsYXNzKj0iZW1vamktcGFuZWwiXQ=='), __hyB64('I0pfcm9vbVNpZGUgW2NsYXNzKj0iRW1vdGlvblBhbmVsIl0='), __hyB64('I0pfcm9vbVNpZGUgW2NsYXNzKj0iZW1vdGlvbi1wYW5lbCJd'), __hyB64('I0pfcm9vbVNpZGUgW2NsYXNzKj0iRW1vdGljb25QYW5lbCJd'), __hyB64('LnJvb20tc2lkZWJhciBbY2xhc3MqPSJFbW9qaVBhbmVsIl0='), __hyB64('LnJvb20tc2lkZWJhciBbY2xhc3MqPSJlbW9qaS1wYW5lbCJd') ] }, { key: 'block_sidebar_chat_quick_reply_panel', name:__hyB64('5bGP6JS96IGK5aSp5b+r5o235Zue5aSN6Z2i5p2/'), selectors: [ __hyB64('W2RhdGEtaHktY29udHJvbC1ibG9jaz0ic2lkZWJhcl9jaGF0X3F1aWNrX3JlcGx5X3BhbmVsIl0='), __hyB64('I0pfcm9vbVNpZGUgW2NsYXNzKj0iUXVpY2tSZXBseVBhbmVsIl0='), __hyB64('I0pfcm9vbVNpZGUgW2NsYXNzKj0icXVpY2stcmVwbHktcGFuZWwiXQ=='), __hyB64('I0pfcm9vbVNpZGUgW2NsYXNzKj0iUGhyYXNlUGFuZWwiXQ=='), __hyB64('I0pfcm9vbVNpZGUgW2NsYXNzKj0icGhyYXNlLXBhbmVsIl0='), __hyB64('I0pfcm9vbVNpZGUgW2NsYXNzKj0iUHJlc2V0UGFuZWwiXQ=='), __hyB64('LnJvb20tc2lkZWJhciBbY2xhc3MqPSJRdWlja1JlcGx5UGFuZWwiXQ=='), __hyB64('LnJvb20tc2lkZWJhciBbY2xhc3MqPSJxdWljay1yZXBseS1wYW5lbCJd') ] }, { key: 'block_sidebar_chat_identity_panel', name:__hyB64('5bGP6JS96L6T5YWl5Yy66Lqr5Lu9L+ijheaJruW8ueWxgg=='), selectors: [ __hyB64('W2RhdGEtaHktY29udHJvbC1ibG9jaz0ic2lkZWJhcl9jaGF0X2lkZW50aXR5X3BhbmVsIl0='), __hyB64('I0pfcm9vbVNpZGUgW2NsYXNzKj0iSWRlbnRpdHlQYW5lbCJd'), __hyB64('I0pfcm9vbVNpZGUgW2NsYXNzKj0iaWRlbnRpdHktcGFuZWwiXQ=='), __hyB64('I0pfcm9vbVNpZGUgW2NsYXNzKj0iQmFkZ2VQYW5lbCJd'), __hyB64('I0pfcm9vbVNpZGUgW2NsYXNzKj0iTWVkYWxQYW5lbCJd'), __hyB64('I0pfcm9vbVNpZGUgW2NsYXNzKj0iTm9ibGVQYW5lbCJd'), __hyB64('I0pfcm9vbVNpZGUgW2NsYXNzKj0iRHJlc3NQYW5lbCJd'), __hyB64('LnJvb20tc2lkZWJhciBbY2xhc3MqPSJJZGVudGl0eVBhbmVsIl0='), __hyB64('LnJvb20tc2lkZWJhciBbY2xhc3MqPSJCYWRnZVBhbmVsIl0=') ] }, { key: 'block_sidebar_chat_login_permission_tip', name:__hyB64('5bGP6JS96L6T5YWl5Yy655m75b2VL+adg+mZkOaPkOekug=='), selectors: [ __hyB64('W2RhdGEtaHktY29udHJvbC1ibG9jaz0ic2lkZWJhcl9jaGF0X2xvZ2luX3Blcm1pc3Npb25fdGlwIl0='), __hyB64('I0pfcm9vbUNoYXRJbnB1dCBbY2xhc3MqPSJMb2dpblRpcCJd'), __hyB64('I0pfcm9vbUNoYXRJbnB1dCBbY2xhc3MqPSJsb2dpbi10aXAiXQ=='), __hyB64('I0pfcm9vbUNoYXRJbnB1dCBbY2xhc3MqPSJQZXJtaXNzaW9uVGlwIl0='), __hyB64('I0pfcm9vbUNoYXRJbnB1dCBbY2xhc3MqPSJwZXJtaXNzaW9uLXRpcCJd'), __hyB64('I0pfcm9vbUNoYXRJbnB1dCBbY2xhc3MqPSJTcGVha0xpbWl0Il0='), __hyB64('I0pfcm9vbUNoYXRJbnB1dCBbY2xhc3MqPSJzcGVhay1saW1pdCJd'), __hyB64('LnJvb20tY2hhdC1pbnB1dCBbY2xhc3MqPSJMb2dpblRpcCJd'), __hyB64('LnJvb20tY2hhdC1pbnB1dCBbY2xhc3MqPSJQZXJtaXNzaW9uVGlwIl0=') ] }, { key: 'block_sidebar_chat_tool_popover', name:__hyB64('5bGP6JS96IGK5aSp5bel5YW35rWu5bGC'), selectors: [ __hyB64('W2RhdGEtaHktY29udHJvbC1ibG9jaz0ic2lkZWJhcl9jaGF0X3Rvb2xfcG9wb3ZlciJd'), __hyB64('I0pfcm9vbVNpZGUgW2NsYXNzKj0iQ2hhdFRvb2xQYW5lbCJd'), __hyB64('I0pfcm9vbVNpZGUgW2NsYXNzKj0iVG9vbFBvcG92ZXIiXQ=='), __hyB64('I0pfcm9vbVNpZGUgW2NsYXNzKj0idG9vbC1wb3BvdmVyIl0='), __hyB64('I0pfcm9vbVNpZGUgW2NsYXNzKj0iRGFubXVTdHlsZVBhbmVsIl0='), __hyB64('I0pfcm9vbVNpZGUgW2NsYXNzKj0iQ29sb3JQYW5lbCJd'), __hyB64('I0pfcm9vbVNpZGUgW2NsYXNzKj0iRm9udFBhbmVsIl0='), __hyB64('LnJvb20tc2lkZWJhciBbY2xhc3MqPSJDaGF0VG9vbFBhbmVsIl0='), __hyB64('LnJvb20tc2lkZWJhciBbY2xhc3MqPSJUb29sUG9wb3ZlciJd') ] }, { key: 'block_sidebar_header', name:__hyB64('5bGP6JS95Y+z5L6n5qCP5aS06YOo'), selectors: [__hyB64('I0pfcm9vbVNpZGVIZA=='), __hyB64('LnJvb20tc2lkZS1oZA=='), __hyB64('LnJvb20tc2lkZWJhci1oZA==')] }, { key: 'block_sidebar_tab_switcher', name:__hyB64('5bGP6JS95Y+z5L6n5qCP5YiH5o2i5qCH562+'), selectors: [__hyB64('LnJvb20tc2lkZWJhci10YWI='), __hyB64('W2NsYXNzKj0icm9vbVNpZGViYXJUYWIiXQ=='), __hyB64('W2NsYXNzKj0ibmF2VGFiLS0iXQ==')] }, { key: 'block_sidebar_match_notice', name:__hyB64('5bGP6JS95Y+z5L6n6LWb56iL6aKE5ZGK'), selectors: [__hyB64('I0pfbW9kX21hdGNoU2NoZWR1bGU='), __hyB64('LnJvb20tbW9kLW1hdGNoU2NoZWR1bGU='), __hyB64('Lmh5LW1hdGNoLW5vdGljZXM='), __hyB64('Lm1hdGNoLW5vdGljZXNfX2hk'), __hyB64('Lm1hdGNoLW5vdGljZXNfX2Jk')] }, { key: 'block_player_danmu_button', name:__hyB64('5bGP6JS95by55bmV5byA5YWz'), selectors: [__hyB64('I3BsYXllci1kYW5tdS13cmFw'), __hyB64('I3BsYXllci1kYW5tdS1idG4=')] }, { key: 'block_player_refresh_report', name:__hyB64('5bGP6JS95Yi35pawL+S4vuaKpeaMiemSrg=='), selectors: [__hyB64('LnBsYXllci1yZWZyZXNoLWJ0bg=='), __hyB64('LnBsYXllci1yZXBvcnQtYnRu')] }, { key: 'block_player_refresh', name:__hyB64('5bGP6JS95Yi35paw5oyJ6ZKu'), selectors: [__hyB64('LnBsYXllci1yZWZyZXNoLWJ0bg==')] }, { key: 'block_player_report', name:__hyB64('5bGP6JS95Li+5oql5oyJ6ZKu'), selectors: [__hyB64('LnBsYXllci1yZXBvcnQtYnRu')] }, { key: 'block_player_login_tip', name:__hyB64('5bGP6JS955m75b2V55S76LSo5o+Q56S6'), selectors: [__hyB64('I3BsYXllci1sb2dpbi1ndWlkZS10aXA='), __hyB64('LnBsYXllci1sb2dpbi1ndWlkZS1jbG9zZQ=='), __hyB64('LnBsYXllci1sb2dpbi1ndWlkZS10ZXh0'), __hyB64('W2NsYXNzKj0ibG9naW4tZ3VpZGUiXQ=='), __hyB64('W2NsYXNzKj0iTG9naW5HdWlkZSJd')] }, { key: 'block_player_download_tip', name:__hyB64('5bGP6JS95LiL6L295byV5a+8'), selectors: [__hyB64('LnBsYXllci1kb3dubG9hZC10aXBz'), __hyB64('LnBsYXllci1hcHAtZ3VpZGU=')] }, { key: 'block_player_network_notice', name:__hyB64('5bGP6JS95pKt5pS+5Zmo57q/6LevL+e9kee7nOaPkOekug=='), selectors: [ __hyB64('W2RhdGEtaHktY29udHJvbC1ibG9jaz0icGxheWVyX25ldHdvcmtfbm90aWNlIl0='), __hyB64('I2xpdmVSb29tT2JqIFtkYXRhLWh5LXFhLXBsYXllci1zdGF0dXM9Im5ldHdvcmsiXQ=='), __hyB64('LnJvb20tcGxheWVyIFtkYXRhLWh5LXFhLXBsYXllci1zdGF0dXM9Im5ldHdvcmsiXQ=='), __hyB64('I2xpdmVSb29tT2JqIFtjbGFzcyo9Im5ldHdvcmstdGlwIl0='), __hyB64('I2xpdmVSb29tT2JqIFtjbGFzcyo9Ik5ldHdvcmtUaXAiXQ=='), __hyB64('I2xpdmVSb29tT2JqIFtjbGFzcyo9ImxpbmUtdGlwIl0='), __hyB64('I2xpdmVSb29tT2JqIFtjbGFzcyo9IkxpbmVUaXAiXQ=='), __hyB64('I2xpdmVSb29tT2JqIFtjbGFzcyo9Im5ldC10aXAiXQ=='), __hyB64('LnJvb20tcGxheWVyIFtjbGFzcyo9Im5ldHdvcmstdGlwIl0='), __hyB64('LnJvb20tcGxheWVyIFtjbGFzcyo9ImxpbmUtdGlwIl0=') ] }, { key: 'block_player_latency_notice', name:__hyB64('5bGP6JS95pKt5pS+5Zmo5bu26L+f5o+Q56S6'), selectors: [ __hyB64('W2RhdGEtaHktY29udHJvbC1ibG9jaz0icGxheWVyX2xhdGVuY3lfbm90aWNlIl0='), __hyB64('I2xpdmVSb29tT2JqIFtkYXRhLWh5LXFhLXBsYXllci1zdGF0dXM9ImxhdGVuY3kiXQ=='), __hyB64('LnJvb20tcGxheWVyIFtkYXRhLWh5LXFhLXBsYXllci1zdGF0dXM9ImxhdGVuY3kiXQ=='), __hyB64('I2xpdmVSb29tT2JqIFtjbGFzcyo9ImxhdGVuY3kiXQ=='), __hyB64('I2xpdmVSb29tT2JqIFtjbGFzcyo9IkxhdGVuY3kiXQ=='), __hyB64('I2xpdmVSb29tT2JqIFtjbGFzcyo9ImRlbGF5LXRpcCJd'), __hyB64('I2xpdmVSb29tT2JqIFtjbGFzcyo9IkRlbGF5VGlwIl0='), __hyB64('I2xpdmVSb29tT2JqIFtjbGFzcyo9ImxhZy10aXAiXQ=='), __hyB64('LnJvb20tcGxheWVyIFtjbGFzcyo9ImxhdGVuY3kiXQ=='), __hyB64('LnJvb20tcGxheWVyIFtjbGFzcyo9ImRlbGF5LXRpcCJd') ] }, { key: 'block_player_reconnect_notice', name:__hyB64('5bGP6JS95pKt5pS+5Zmo6ZSZ6K+vL+mHjei/nuaPkOekug=='), selectors: [ __hyB64('W2RhdGEtaHktY29udHJvbC1ibG9jaz0icGxheWVyX3JlY29ubmVjdF9ub3RpY2UiXQ=='), __hyB64('I2xpdmVSb29tT2JqIFtkYXRhLWh5LXFhLXBsYXllci1zdGF0dXM9InJlY29ubmVjdCJd'), __hyB64('LnJvb20tcGxheWVyIFtkYXRhLWh5LXFhLXBsYXllci1zdGF0dXM9InJlY29ubmVjdCJd'), __hyB64('I2xpdmVSb29tT2JqIFtjbGFzcyo9InJlY29ubmVjdCJd'), __hyB64('I2xpdmVSb29tT2JqIFtjbGFzcyo9IlJlY29ubmVjdCJd'), __hyB64('I2xpdmVSb29tT2JqIFtjbGFzcyo9ImVycm9yLXRpcCJd'), __hyB64('I2xpdmVSb29tT2JqIFtjbGFzcyo9IkVycm9yVGlwIl0='), __hyB64('I2xpdmVSb29tT2JqIFtjbGFzcyo9InBsYXllci1lcnJvciJd'), __hyB64('LnJvb20tcGxheWVyIFtjbGFzcyo9InJlY29ubmVjdCJd'), __hyB64('LnJvb20tcGxheWVyIFtjbGFzcyo9ImVycm9yLXRpcCJd') ] }, { key: 'block_player_pause_loading_notice', name:__hyB64('5bGP6JS95pKt5pS+5Zmo5pqC5YGcL+WKoOi9veaPkOekug=='), selectors: [ __hyB64('W2RhdGEtaHktY29udHJvbC1ibG9jaz0icGxheWVyX3BhdXNlX2xvYWRpbmdfbm90aWNlIl0='), __hyB64('I2xpdmVSb29tT2JqIFtkYXRhLWh5LXFhLXBsYXllci1zdGF0dXM9InBhdXNlTG9hZGluZyJd'), __hyB64('LnJvb20tcGxheWVyIFtkYXRhLWh5LXFhLXBsYXllci1zdGF0dXM9InBhdXNlTG9hZGluZyJd'), __hyB64('I2xpdmVSb29tT2JqIFtjbGFzcyo9ImxvYWRpbmctdGlwIl0='), __hyB64('I2xpdmVSb29tT2JqIFtjbGFzcyo9IkxvYWRpbmdUaXAiXQ=='), __hyB64('I2xpdmVSb29tT2JqIFtjbGFzcyo9ImxvYWRpbmctbWFzayJd'), __hyB64('I2xpdmVSb29tT2JqIFtjbGFzcyo9IkxvYWRpbmdNYXNrIl0='), __hyB64('I2xpdmVSb29tT2JqIFtjbGFzcyo9ImJ1ZmZlci1sb2FkaW5nIl0='), __hyB64('I2xpdmVSb29tT2JqIFtjbGFzcyo9InBhdXNlLXRpcCJd'), __hyB64('LnJvb20tcGxheWVyIFtjbGFzcyo9ImxvYWRpbmctdGlwIl0='), __hyB64('LnJvb20tcGxheWVyIFtjbGFzcyo9ImxvYWRpbmctbWFzayJd') ] }, { key: 'block_player_quality_qrcode_notice', name:__hyB64('5bGP6JS95riF5pmw5bqm6ZSB5a6aL+aJq+eggeaPkOekug=='), selectors: [ __hyB64('W2RhdGEtaHktY29udHJvbC1ibG9jaz0icGxheWVyX3F1YWxpdHlfcXJjb2RlX25vdGljZSJd'), __hyB64('I2xpdmVSb29tT2JqIFtkYXRhLWh5LXFhLXBsYXllci1zdGF0dXM9InF1YWxpdHlRcmNvZGUiXQ=='), __hyB64('LnJvb20tcGxheWVyIFtkYXRhLWh5LXFhLXBsYXllci1zdGF0dXM9InF1YWxpdHlRcmNvZGUiXQ=='), __hyB64('I2xpdmVSb29tT2JqIFtjbGFzcyo9InFyY29kZSJd'), __hyB64('I2xpdmVSb29tT2JqIFtjbGFzcyo9IlFSQ29kZSJd'), __hyB64('I2xpdmVSb29tT2JqIFtjbGFzcyo9InFyLWNvZGUiXQ=='), __hyB64('I2xpdmVSb29tT2JqIFtjbGFzcyo9InF1YWxpdHktbG9jayJd'), __hyB64('I2xpdmVSb29tT2JqIFtjbGFzcyo9IlF1YWxpdHlMb2NrIl0='), __hyB64('I2xpdmVSb29tT2JqIFtjbGFzcyo9InNjYW4tY29kZSJd'), __hyB64('LnJvb20tcGxheWVyIFtjbGFzcyo9InFyY29kZSJd'), __hyB64('LnJvb20tcGxheWVyIFtjbGFzcyo9InF1YWxpdHktbG9jayJd') ] }, { key: 'block_player_popup_ad', name:__hyB64('5bGP6JS95pKt5pS+5Zmo5by556qX5o+Q56S6'), selectors: [ __hyB64('W2RhdGEtaHktY29udHJvbC1ibG9jaz0icGxheWVyX3BvcHVwX2FkIl0='), __hyB64('I2xpdmVSb29tT2JqIFtkYXRhLWh5LXFhLXBsYXllci1wb3B1cC1hZF0='), __hyB64('LnJvb20tcGxheWVyIFtkYXRhLWh5LXFhLXBsYXllci1wb3B1cC1hZF0='), __hyB64('I2xpdmVSb29tT2JqIFtjbGFzcyo9ImFkLXBvcCJd'), __hyB64('I2xpdmVSb29tT2JqIFtjbGFzcyo9IkFkUG9wIl0='), __hyB64('I2xpdmVSb29tT2JqIFtjbGFzcyo9ImFkLXBvcHVwIl0='), __hyB64('I2xpdmVSb29tT2JqIFtjbGFzcyo9IkFkUG9wdXAiXQ=='), __hyB64('I2xpdmVSb29tT2JqIFtjbGFzcyo9ImFkdmVydCJd'), __hyB64('I2xpdmVSb29tT2JqIFtjbGFzcyo9IkFkdmVydCJd'), __hyB64('I2xpdmVSb29tT2JqIFtjbGFzcyo9InByb21vIl0='), __hyB64('I2xpdmVSb29tT2JqIFtjbGFzcyo9IlByb21vIl0='), __hyB64('I2xpdmVSb29tT2JqIFtjbGFzcyo9IndlbGZhcmUiXQ=='), __hyB64('I2xpdmVSb29tT2JqIFtjbGFzcyo9IldlbGZhcmUiXQ=='), __hyB64('I2xpdmVSb29tT2JqIFtjbGFzcyo9ImFjdGl2aXR5LXBvcCJd'), __hyB64('I2xpdmVSb29tT2JqIFtjbGFzcyo9IkFjdGl2aXR5UG9wIl0='), __hyB64('LnJvb20tcGxheWVyIFtjbGFzcyo9ImFkLXBvcCJd'), __hyB64('LnJvb20tcGxheWVyIFtjbGFzcyo9IkFkUG9wIl0='), __hyB64('LnJvb20tcGxheWVyIFtjbGFzcyo9ImFkdmVydCJd'), __hyB64('LnJvb20tcGxheWVyIFtjbGFzcyo9InByb21vIl0='), __hyB64('LnJvb20tcGxheWVyIFtjbGFzcyo9ImFjdGl2aXR5LXBvcCJd'), __hyB64('W2NsYXNzKj0iYWQtbGFiZWwiXQ=='), __hyB64('W2NsYXNzKj0iQWRMYWJlbCJd'), __hyB64('W2NsYXNzKj0iYWQtdGFnIl0='), __hyB64('W2NsYXNzKj0iQWRUYWciXQ=='), __hyB64('W2NsYXNzKj0iZ2FtZS1wcm9tbyJd'), __hyB64('W2NsYXNzKj0iR2FtZVByb21vIl0='), __hyB64('W2NsYXNzKj0iZ2FtZS1wcm9tb3RlIl0='), __hyB64('W2NsYXNzKj0iZG93bmxvYWQtYWQiXQ=='), __hyB64('W2NsYXNzKj0iRG93bmxvYWRBZCJd'), __hyB64('W2NsYXNzKj0ibGVnZW5kLWFkIl0='), __hyB64('W2NsYXNzKj0iTGVnZW5kQWQiXQ=='), __hyB64('LnJvb20tc2lkZWJhciBbY2xhc3MqPSJhZCJd'), __hyB64('LnJvb20tc2lkZWJhciBbY2xhc3MqPSJBZCJd'), __hyB64('LnJvb20tc2lkZWJhciBbY2xhc3MqPSJwcm9tbyJd'), __hyB64('LnJvb20tc2lkZWJhciBbY2xhc3MqPSJQcm9tbyJd'), __hyB64('LnJvb20tc2lkZWJhciBbY2xhc3MqPSJkb3dubG9hZCJd'), __hyB64('LnJvb20tc2lkZWJhciBbY2xhc3MqPSJEb3dubG9hZCJd'), __hyB64('LnJvb20tc2lkZWJhciBbY2xhc3MqPSJ3ZWxmYXJlIl0='), __hyB64('LnJvb20tc2lkZWJhciBbY2xhc3MqPSJXZWxmYXJlIl0='), __hyB64('LnJvb20tc2lkZWJhciBbY2xhc3MqPSJub2JsZSJd'), __hyB64('LnJvb20tc2lkZWJhciBbY2xhc3MqPSJOb2JsZSJd') ] }, { key: 'block_player_effect_settings', name:__hyB64('5bGP6JS95pKt5pS+5Zmo5bGP6JS96K6+572u5oyJ6ZKu'), selectors: [__hyB64('I3NoaWVsZGluZy1lZmZlY3Q=')] }, { key: 'block_player_sound_button', name:__hyB64('5bGP6JS95pKt5pS+5Zmo6Z+z6YeP5oyJ6ZKu'), selectors: [__hyB64('I3BsYXllci1zb3VuZC1idG4='), __hyB64('LnBsYXllci1zb3VuZC1vbg=='), __hyB64('LnBsYXllci1zb3VuZC1vZmY=')] }, { key: 'block_player_sound_slider', name:__hyB64('5bGP6JS95pKt5pS+5Zmo6Z+z6YeP5ruR5p2h'), selectors: [__hyB64('LnNvdW5kLXByb2dyZXNz'), __hyB64('LnNvdW5kLWJn'), __hyB64('LnNvdW5kLWJhcg=='), __hyB64('LnNvdW5kLWJ0bg==')] }, { key: 'block_player_quality_selector', name:__hyB64('5bGP6JS95pKt5pS+5Zmo5riF5pmw5bqm5YWl5Y+j'), selectors: [__hyB64('I3BsYXllci12aWRlb3R5cGU='), __hyB64('LnBsYXllci12aWRlb3R5cGU='), __hyB64('I3BsYXllci1jdHJsLXdyYXAgLnBsYXllci12aWRlb3R5cGUtbGlzdA=='), __hyB64('I3BsYXllci1jdHJsLXdyYXAgW2NsYXNzKj0icGxheWVyLXZpZGVvdHlwZSJd'), __hyB64('I3BsYXllci1jdHJsLXdyYXAgW2RhdGEtdGl0bGUqPSLmuIXmmbAiXQ=='), __hyB64('I3BsYXllci1jdHJsLXdyYXAgW3RpdGxlKj0i5riF5pmwIl0='), __hyB64('I3BsYXllci1jdHJsLXdyYXAgW2FyaWEtbGFiZWwqPSLmuIXmmbAiXQ=='), __hyB64('I3BsYXllci1jdHJsLXdyYXAgW2RhdGEtdGl0bGUqPSLnlLvotKgiXQ=='), __hyB64('I3BsYXllci1jdHJsLXdyYXAgW3RpdGxlKj0i55S76LSoIl0='), __hyB64('I3BsYXllci1jdHJsLXdyYXAgW2FyaWEtbGFiZWwqPSLnlLvotKgiXQ==')] }, { key: 'block_player_fullpage_button', name:__hyB64('5bGP6JS9572R6aG15Ymn5Zy65oyJ6ZKu'), selectors: [__hyB64('I3BsYXllci1mdWxscGFnZS1idG4='), __hyB64('LnBsYXllci1mdWxscGFnZS1idG4='), __hyB64('I3BsYXllci1jdHJsLXdyYXAgW2RhdGEtdGl0bGUqPSLliaflnLoiXQ=='), __hyB64('I3BsYXllci1jdHJsLXdyYXAgW3RpdGxlKj0i5Ymn5Zy6Il0='), __hyB64('I3BsYXllci1jdHJsLXdyYXAgW2FyaWEtbGFiZWwqPSLliaflnLoiXQ=='), __hyB64('I3BsYXllci1jdHJsLXdyYXAgW2RhdGEtdGl0bGUqPSLnvZHpobXlhajlsY8iXQ=='), __hyB64('I3BsYXllci1jdHJsLXdyYXAgW3RpdGxlKj0i572R6aG15YWo5bGPIl0='), __hyB64('I3BsYXllci1jdHJsLXdyYXAgW2FyaWEtbGFiZWwqPSLnvZHpobXlhajlsY8iXQ==')] }, { key: 'block_player_fullscreen_button', name:__hyB64('5bGP6JS95rWP6KeI5Zmo5YWo5bGP5oyJ6ZKu'), selectors: [__hyB64('I3BsYXllci1mdWxsc2NyZWVuLWJ0bg=='), __hyB64('LnBsYXllci1mdWxsc2NyZWVuLWJ0bg=='), __hyB64('I3BsYXllci1jdHJsLXdyYXAgW2RhdGEtdGl0bGU9IuWFqOWxjyJd'), __hyB64('I3BsYXllci1jdHJsLXdyYXAgW3RpdGxlPSLlhajlsY8iXQ=='), __hyB64('I3BsYXllci1jdHJsLXdyYXAgW2FyaWEtbGFiZWw9IuWFqOWxjyJd'), __hyB64('I3BsYXllci1jdHJsLXdyYXAgW2RhdGEtdGl0bGUqPSLmtY/op4jlmajlhajlsY8iXQ=='), __hyB64('I3BsYXllci1jdHJsLXdyYXAgW3RpdGxlKj0i5rWP6KeI5Zmo5YWo5bGPIl0='), __hyB64('I3BsYXllci1jdHJsLXdyYXAgW2FyaWEtbGFiZWwqPSLmtY/op4jlmajlhajlsY8iXQ==')] }, { key: 'block_player_recommend_background', name:__hyB64('5bGP6JS95pKt5pS+5Zmo5o6o6I2Q6IOM5pmv'), selectors: [__hyB64('I3BsYXllci1yZWNvbW1lbmQtYmc='), __hyB64('I3BsYXllci1yZWNvbW1lbmQgLnBsYXllci1yZWNvbW1lbmQtYmc='), __hyB64('I3BsYXllci1yZWNvbW1lbmQgLnBsYXllci1yZWNvbW1lbmQtYmctY292ZXI=')] }, { key: 'block_player_recommend_notice', name:__hyB64('5bGP6JS955u05pKt6aKE5ZGKL+aVtOaUueaPkOekug=='), selectors: [__hyB64('I3BsYXllci1yZWNvbW1lbmQgLnJlY29tbWVuZC10b3AtdWk='), __hyB64('I3BsYXllci1yZWNvbW1lbmQgLnJlY29tbWVuZC1saXZlLWZvcmVub3RpY2U='), __hyB64('I3JlY29tbWVuZC1mb3JiaWQ=')] }, { key: 'block_player_recommend_cards', name:__hyB64('5bGP6JS95pKt5pS+5Zmo5o6o6I2Q55u05pKt5Y2h54mH'), selectors: [__hyB64('I3BsYXllci1yZWNvbW1lbmQgLnBsYXllci1yZWNvbW1lbmQtYmlnLXZpZGVv'), __hyB64('I3BsYXllci1yZWNvbW1lbmQgLnBsYXllci1yZWNvbW1lbmQtbGlzdA=='), __hyB64('I3BsYXllci1yZWNvbW1lbmQgLnBsYXllci1yZWNvbW1lbmQtdmJveA=='), __hyB64('I3BsYXllci1yZWNvbW1lbmQgLnBsYXllci1yZWNvbW1lbmQtaG9tZQ==')] }, { key: 'block_player_recommend_big_card', name:__hyB64('5bGP6JS95pKt5pS+5Zmo5o6o6I2Q5aSn5Y2h'), selectors: [ __hyB64('I3BsYXllci1yZWNvbW1lbmQgLnBsYXllci1yZWNvbW1lbmQtYmlnLXZpZGVv'), __hyB64('I3BsYXllci1yZWNvbW1lbmQgW2NsYXNzKj0icmVjb21tZW5kLWJpZy12aWRlbyJd'), __hyB64('I3BsYXllci1yZWNvbW1lbmQgW2NsYXNzKj0iUmVjb21tZW5kQmlnVmlkZW8iXQ==') ] }, { key: 'block_player_recommend_list', name:__hyB64('5bGP6JS95pKt5pS+5Zmo5o6o6I2Q5YiX6KGo'), selectors: [ __hyB64('I3BsYXllci1yZWNvbW1lbmQgLnBsYXllci1yZWNvbW1lbmQtbGlzdA=='), __hyB64('I3BsYXllci1yZWNvbW1lbmQgLnBsYXllci1yZWNvbW1lbmQtdmJveA=='), __hyB64('I3BsYXllci1yZWNvbW1lbmQgW2NsYXNzKj0icmVjb21tZW5kLWxpc3QiXQ=='), __hyB64('I3BsYXllci1yZWNvbW1lbmQgW2NsYXNzKj0iUmVjb21tZW5kTGlzdCJd'), __hyB64('I3BsYXllci1yZWNvbW1lbmQgW2NsYXNzKj0icmVjb21tZW5kLXZib3giXQ=='), __hyB64('I3BsYXllci1yZWNvbW1lbmQgW2NsYXNzKj0iUmVjb21tZW5kVmJveCJd') ] }, { key: 'block_player_recommend_home', name:__hyB64('5bGP6JS95pKt5pS+5Zmo5pu05aSa54Ot6Zeo5YWl5Y+j'), selectors: [ __hyB64('I3BsYXllci1yZWNvbW1lbmQgLnBsYXllci1yZWNvbW1lbmQtaG9tZQ=='), __hyB64('I3BsYXllci1yZWNvbW1lbmQgW2NsYXNzKj0icmVjb21tZW5kLWhvbWUiXQ=='), __hyB64('I3BsYXllci1yZWNvbW1lbmQgW2NsYXNzKj0iUmVjb21tZW5kSG9tZSJd') ] }, { key: 'block_gift_bar_full', name:__hyB64('5bGP6JS95pW05p2h56S854mp5qCP'), selectors: [__hyB64('I3BsYXllci1naWZ0LXdyYXA='), __hyB64('LnJvb20tcGxheWVyLWdpZnQtcGxhY2Vob2xkZXI=')] }, { key: 'block_gift_quick_bar', name:__hyB64('5bGP6JS956S854mp5b+r5o235qCP'), selectors: [__hyB64('LnBsYXllci1naWZ0LWxlZnQ='), __hyB64('W2NsYXNzKj0iZ2lmdC1sZWZ0Il0=')] }, { key: 'block_gift_lucky_burst', name:__hyB64('5bGP6JS95qyn55qHL+eIhueCueWFpeWPow=='), selectors: [__hyB64('LnBsYXllci1sZWZ0LWljb24tZW50ZXI='), __hyB64('LnBsYXllci1sdWNreS1idXJzdC1pY29u')] }, { key: 'block_gift_game_recommend', name:__hyB64('5bGP6JS956S854mp5qCP5ri45oiP5o6o6I2Q'), selectors: [__hyB64('LmFiLWljb24ueHNiLWljb24=')] }, { key: 'block_gift_box', name:__hyB64('5bGP6JS955m+5a6d566x'), selectors: [__hyB64('LnBsYXllci1ib3gtaWNvbg=='), __hyB64('LnBsYXllci1jaGVzdC1idG4=')] }, { key: 'block_gift_activity_icons', name:__hyB64('5bGP6JS95rS75Yqo5Zu+5qCH'), selectors: [__hyB64('LmRpeS1hY3Rpdml0eS1pY29u'), __hyB64('LmRpeS1hY3Rpdml0eS1pY29uLWJveA=='), __hyB64('W2lkXj0iZGl5LWFjdGl2aXR5LWljb24tIl0=')] }, { key: 'block_gift_cart_activity', name:__hyB64('5bGP6JS95bCP6buE6L2m5YWl5Y+j'), selectors: [__hyB64('W2RhdGEtaHktY29udHJvbC1ibG9jaz0iZ2lmdF9jYXJ0X2FjdGl2aXR5Il0=')] }, { key: 'block_gift_confession_activity', name:__hyB64('5bGP6JS95ZGK55m96K6h5YiS5YWl5Y+j'), selectors: [__hyB64('W2RhdGEtaHktY29udHJvbC1ibG9jaz0iZ2lmdF9jb25mZXNzaW9uX2FjdGl2aXR5Il0=')] }, { key: 'block_gift_activity_countdown', name:__hyB64('5bGP6JS956S854mp5rS75Yqo5YCS6K6h5pe2'), selectors: [ __hyB64('W2RhdGEtaHktY29udHJvbC1ibG9jaz0iZ2lmdF9hY3Rpdml0eV9jb3VudGRvd24iXQ=='), __hyB64('LnBsYXllci1naWZ0LWxlZnQgW2NsYXNzKj0iY291bnRkb3duIl0='), __hyB64('LnBsYXllci1naWZ0LWxlZnQgW2NsYXNzKj0iQ291bnRkb3duIl0='), __hyB64('LnBsYXllci1naWZ0LWxlZnQgW2NsYXNzKj0idGltZS1sZWZ0Il0='), __hyB64('LnBsYXllci1naWZ0LWxlZnQgW2NsYXNzKj0iVGltZUxlZnQiXQ=='), __hyB64('LnBsYXllci1naWZ0LWxlZnQgW2NsYXNzKj0icmVtYWluLXRpbWUiXQ=='), __hyB64('LnBsYXllci1naWZ0LWxlZnQgW2NsYXNzKj0iUmVtYWluVGltZSJd'), __hyB64('I3BsYXllci1naWZ0LXdyYXAgW2NsYXNzKj0iYWN0aXZpdHkiXSBbY2xhc3MqPSJjb3VudGRvd24iXQ=='), __hyB64('I3BsYXllci1naWZ0LXdyYXAgW2NsYXNzKj0iQWN0aXZpdHkiXSBbY2xhc3MqPSJDb3VudGRvd24iXQ=='), __hyB64('LmRpeS1hY3Rpdml0eS1pY29uIFtjbGFzcyo9ImNvdW50ZG93biJd'), __hyB64('LmRpeS1hY3Rpdml0eS1pY29uLWJveCBbY2xhc3MqPSJjb3VudGRvd24iXQ==') ] }, { key: 'block_gift_activity_benefit_tips', name:__hyB64('5bGP6JS956S854mp5rS75Yqo5p2D55uK5o+Q56S6'), selectors: [ __hyB64('W2RhdGEtaHktY29udHJvbC1ibG9jaz0iZ2lmdF9hY3Rpdml0eV9iZW5lZml0X3RpcHMiXQ=='), __hyB64('LnBsYXllci1naWZ0LWxlZnQgW2NsYXNzKj0iYmVuZWZpdCJd'), __hyB64('LnBsYXllci1naWZ0LWxlZnQgW2NsYXNzKj0iQmVuZWZpdCJd'), __hyB64('LnBsYXllci1naWZ0LWxlZnQgW2NsYXNzKj0icmV3YXJkIl0='), __hyB64('LnBsYXllci1naWZ0LWxlZnQgW2NsYXNzKj0iUmV3YXJkIl0='), __hyB64('LnBsYXllci1naWZ0LWxlZnQgW2NsYXNzKj0iYm9udXMiXQ=='), __hyB64('LnBsYXllci1naWZ0LWxlZnQgW2NsYXNzKj0iQm9udXMiXQ=='), __hyB64('LnBsYXllci1naWZ0LWxlZnQgW2NsYXNzKj0icmViYXRlIl0='), __hyB64('LnBsYXllci1naWZ0LWxlZnQgW2NsYXNzKj0iUmViYXRlIl0='), __hyB64('LnBsYXllci1naWZ0LWxlZnQgW2NsYXNzKj0iYWN0aXZpdHktdGlwIl0='), __hyB64('LnBsYXllci1naWZ0LWxlZnQgW2NsYXNzKj0iQWN0aXZpdHlUaXAiXQ=='), __hyB64('I3BsYXllci1naWZ0LXdyYXAgW2NsYXNzKj0iYWN0aXZpdHktcG9wIl0='), __hyB64('I3BsYXllci1naWZ0LXdyYXAgW2NsYXNzKj0iQWN0aXZpdHlQb3AiXQ=='), __hyB64('I3BsYXllci1naWZ0LXdyYXAgW2NsYXNzKj0iYWN0aXZpdHktdG9vbHRpcCJd'), __hyB64('I3BsYXllci1naWZ0LXdyYXAgW2NsYXNzKj0iQWN0aXZpdHlUb29sdGlwIl0='), __hyB64('LmRpeS1hY3Rpdml0eS1pY29uIFtjbGFzcyo9ImJlbmVmaXQiXQ=='), __hyB64('LmRpeS1hY3Rpdml0eS1pY29uLWJveCBbY2xhc3MqPSJiZW5lZml0Il0=') ] }, { key: 'block_gift_more_activity', name:__hyB64('5bGP6JS95pu05aSa5rS75Yqo'), selectors: [__hyB64('Lm1vcmUtYWN0aXZpdHktaWNvbg=='), __hyB64('Lm1vcmUtYWN0aXZpdHktaWNvbi1ib3g=')] }, { key: 'block_gift_week_star', name:__hyB64('5bGP6JS95ZGo5pif'), selectors: [__hyB64('I3dlZWstc3Rhci1idG4=')] }, { key: 'block_gift_face_list', name:__hyB64('5bGP6JS956S854mp5b+r5o235YiX6KGo'), selectors: [__hyB64('I3BsYXllci1mYWNl'), __hyB64('LnBsYXllci1mYWNlLWxpc3Q='), __hyB64('LnBsYXllci1mYWNlLWdpZnQ=')] }, { key: 'block_gift_face_item_icons', name:__hyB64('5bGP6JS95b+r5o2356S854mp5Zu+5qCH'), hideMode: 'transparent', selectors: [ __hyB64('I3BsYXllci1mYWNlIGltZw=='), __hyB64('I3BsYXllci1mYWNlIFtjbGFzcyo9ImdpZnQtaWNvbiJd'), __hyB64('I3BsYXllci1mYWNlIFtjbGFzcyo9IkdpZnRJY29uIl0='), __hyB64('I3BsYXllci1mYWNlIFtjbGFzcyo9ImZhY2UtaWNvbiJd'), __hyB64('I3BsYXllci1mYWNlIFtjbGFzcyo9IkZhY2VJY29uIl0='), __hyB64('I3BsYXllci1mYWNlIFtjbGFzcyo9ImdpZnQtaW1nIl0='), __hyB64('I3BsYXllci1mYWNlIFtjbGFzcyo9IkdpZnRJbWciXQ=='), __hyB64('LnBsYXllci1mYWNlLWxpc3QgaW1n'), __hyB64('LnBsYXllci1mYWNlLWxpc3QgW2NsYXNzKj0iZ2lmdC1pY29uIl0='), __hyB64('LnBsYXllci1mYWNlLWxpc3QgW2NsYXNzKj0iR2lmdEljb24iXQ=='), __hyB64('LnBsYXllci1mYWNlLWxpc3QgW2NsYXNzKj0iZmFjZS1pY29uIl0='), __hyB64('LnBsYXllci1mYWNlLWxpc3QgW2NsYXNzKj0iRmFjZUljb24iXQ=='), __hyB64('LnBsYXllci1mYWNlLWdpZnQgaW1n'), __hyB64('LnBsYXllci1mYWNlLWdpZnQgW2NsYXNzKj0iZ2lmdC1pY29uIl0='), __hyB64('LnBsYXllci1mYWNlLWdpZnQgW2NsYXNzKj0iR2lmdEljb24iXQ==') ] }, { key: 'block_gift_face_item_names', name:__hyB64('5bGP6JS95b+r5o2356S854mp5ZCN56ew'), selectors: [ __hyB64('I3BsYXllci1mYWNlIFtjbGFzcyo9ImdpZnQtbmFtZSJd'), __hyB64('I3BsYXllci1mYWNlIFtjbGFzcyo9IkdpZnROYW1lIl0='), __hyB64('I3BsYXllci1mYWNlIFtjbGFzcyo9ImZhY2UtbmFtZSJd'), __hyB64('I3BsYXllci1mYWNlIFtjbGFzcyo9IkZhY2VOYW1lIl0='), __hyB64('I3BsYXllci1mYWNlIFtjbGFzcyo9ImdpZnQtdGl0bGUiXQ=='), __hyB64('I3BsYXllci1mYWNlIFtjbGFzcyo9IkdpZnRUaXRsZSJd'), __hyB64('LnBsYXllci1mYWNlLWxpc3QgW2NsYXNzKj0iZ2lmdC1uYW1lIl0='), __hyB64('LnBsYXllci1mYWNlLWxpc3QgW2NsYXNzKj0iR2lmdE5hbWUiXQ=='), __hyB64('LnBsYXllci1mYWNlLWxpc3QgW2NsYXNzKj0iZmFjZS1uYW1lIl0='), __hyB64('LnBsYXllci1mYWNlLWxpc3QgW2NsYXNzKj0iRmFjZU5hbWUiXQ=='), __hyB64('LnBsYXllci1mYWNlLWdpZnQgW2NsYXNzKj0iZ2lmdC1uYW1lIl0='), __hyB64('LnBsYXllci1mYWNlLWdpZnQgW2NsYXNzKj0iR2lmdE5hbWUiXQ==') ] }, { key: 'block_gift_face_item_prices', name:__hyB64('5bGP6JS95b+r5o2356S854mp5Lu35qC8'), selectors: [ __hyB64('I3BsYXllci1mYWNlIFtjbGFzcyo9ImdpZnQtcHJpY2UiXQ=='), __hyB64('I3BsYXllci1mYWNlIFtjbGFzcyo9IkdpZnRQcmljZSJd'), __hyB64('I3BsYXllci1mYWNlIFtjbGFzcyo9ImZhY2UtcHJpY2UiXQ=='), __hyB64('I3BsYXllci1mYWNlIFtjbGFzcyo9IkZhY2VQcmljZSJd'), __hyB64('I3BsYXllci1mYWNlIFtjbGFzcyo9InByaWNlIl0='), __hyB64('I3BsYXllci1mYWNlIFtjbGFzcyo9IlByaWNlIl0='), __hyB64('I3BsYXllci1mYWNlIFtjbGFzcyo9ImNvc3QiXQ=='), __hyB64('I3BsYXllci1mYWNlIFtjbGFzcyo9IkNvc3QiXQ=='), __hyB64('I3BsYXllci1mYWNlIFtjbGFzcyo9ImJlYW4iXQ=='), __hyB64('I3BsYXllci1mYWNlIFtjbGFzcyo9IkJlYW4iXQ=='), __hyB64('LnBsYXllci1mYWNlLWxpc3QgW2NsYXNzKj0iZ2lmdC1wcmljZSJd'), __hyB64('LnBsYXllci1mYWNlLWxpc3QgW2NsYXNzKj0iR2lmdFByaWNlIl0='), __hyB64('LnBsYXllci1mYWNlLWxpc3QgW2NsYXNzKj0icHJpY2UiXQ=='), __hyB64('LnBsYXllci1mYWNlLWxpc3QgW2NsYXNzKj0iUHJpY2UiXQ=='), __hyB64('LnBsYXllci1mYWNlLWdpZnQgW2NsYXNzKj0iZ2lmdC1wcmljZSJd'), __hyB64('LnBsYXllci1mYWNlLWdpZnQgW2NsYXNzKj0iR2lmdFByaWNlIl0=') ] }, { key: 'block_gift_face_item_badges', name:__hyB64('5bGP6JS95b+r5o2356S854mp6KeS5qCH'), selectors: [ __hyB64('I3BsYXllci1mYWNlIFtjbGFzcyo9ImdpZnQtYmFkZ2UiXQ=='), __hyB64('I3BsYXllci1mYWNlIFtjbGFzcyo9IkdpZnRCYWRnZSJd'), __hyB64('I3BsYXllci1mYWNlIFtjbGFzcyo9ImdpZnQtdGFnIl0='), __hyB64('I3BsYXllci1mYWNlIFtjbGFzcyo9IkdpZnRUYWciXQ=='), __hyB64('I3BsYXllci1mYWNlIFtjbGFzcyo9ImZhY2UtYmFkZ2UiXQ=='), __hyB64('I3BsYXllci1mYWNlIFtjbGFzcyo9IkZhY2VCYWRnZSJd'), __hyB64('I3BsYXllci1mYWNlIFtjbGFzcyo9ImhvdCJd'), __hyB64('I3BsYXllci1mYWNlIFtjbGFzcyo9IkhvdCJd'), __hyB64('I3BsYXllci1mYWNlIFtjbGFzcyo9ImRpc2NvdW50Il0='), __hyB64('I3BsYXllci1mYWNlIFtjbGFzcyo9IkRpc2NvdW50Il0='), __hyB64('I3BsYXllci1mYWNlIFtjbGFzcyo9ImxpbWl0ZWQiXQ=='), __hyB64('I3BsYXllci1mYWNlIFtjbGFzcyo9IkxpbWl0ZWQiXQ=='), __hyB64('I3BsYXllci1mYWNlIFtjbGFzcyo9ImNvcm5lciJd'), __hyB64('I3BsYXllci1mYWNlIFtjbGFzcyo9IkNvcm5lciJd'), __hyB64('LnBsYXllci1mYWNlLWxpc3QgW2NsYXNzKj0iZ2lmdC1iYWRnZSJd'), __hyB64('LnBsYXllci1mYWNlLWxpc3QgW2NsYXNzKj0iR2lmdEJhZGdlIl0='), __hyB64('LnBsYXllci1mYWNlLWxpc3QgW2NsYXNzKj0iZ2lmdC10YWciXQ=='), __hyB64('LnBsYXllci1mYWNlLWxpc3QgW2NsYXNzKj0iR2lmdFRhZyJd'), __hyB64('LnBsYXllci1mYWNlLWdpZnQgW2NsYXNzKj0iZ2lmdC1iYWRnZSJd'), __hyB64('LnBsYXllci1mYWNlLWdpZnQgW2NsYXNzKj0iR2lmdEJhZGdlIl0=') ] }, { key: 'block_gift_face_item_counts', name:__hyB64('5bGP6JS95b+r5o2356S854mp5pWw6YeP'), selectors: [ __hyB64('I3BsYXllci1mYWNlIFtjbGFzcyo9ImdpZnQtY291bnQiXQ=='), __hyB64('I3BsYXllci1mYWNlIFtjbGFzcyo9IkdpZnRDb3VudCJd'), __hyB64('I3BsYXllci1mYWNlIFtjbGFzcyo9ImZhY2UtY291bnQiXQ=='), __hyB64('I3BsYXllci1mYWNlIFtjbGFzcyo9IkZhY2VDb3VudCJd'), __hyB64('I3BsYXllci1mYWNlIFtjbGFzcyo9ImNvdW50Il0='), __hyB64('I3BsYXllci1mYWNlIFtjbGFzcyo9IkNvdW50Il0='), __hyB64('I3BsYXllci1mYWNlIFtjbGFzcyo9InN0b2NrIl0='), __hyB64('I3BsYXllci1mYWNlIFtjbGFzcyo9IlN0b2NrIl0='), __hyB64('I3BsYXllci1mYWNlIFtjbGFzcyo9Im93bmVkIl0='), __hyB64('I3BsYXllci1mYWNlIFtjbGFzcyo9Ik93bmVkIl0='), __hyB64('I3BsYXllci1mYWNlIFtjbGFzcyo9InJlbWFpbiJd'), __hyB64('I3BsYXllci1mYWNlIFtjbGFzcyo9IlJlbWFpbiJd'), __hyB64('I3BsYXllci1mYWNlIFtjbGFzcyo9InN0YXR1cyJd'), __hyB64('I3BsYXllci1mYWNlIFtjbGFzcyo9IlN0YXR1cyJd'), __hyB64('LnBsYXllci1mYWNlLWxpc3QgW2NsYXNzKj0iZ2lmdC1jb3VudCJd'), __hyB64('LnBsYXllci1mYWNlLWxpc3QgW2NsYXNzKj0iR2lmdENvdW50Il0='), __hyB64('LnBsYXllci1mYWNlLWxpc3QgW2NsYXNzKj0iY291bnQiXQ=='), __hyB64('LnBsYXllci1mYWNlLWxpc3QgW2NsYXNzKj0iQ291bnQiXQ=='), __hyB64('LnBsYXllci1mYWNlLWdpZnQgW2NsYXNzKj0iZ2lmdC1jb3VudCJd'), __hyB64('LnBsYXllci1mYWNlLWdpZnQgW2NsYXNzKj0iR2lmdENvdW50Il0=') ] }, { key: 'block_gift_face_hover_detail', name:__hyB64('5bGP6JS95b+r5o2356S854mp5oKs5rWu6K+m5oOF'), selectors: [ __hyB64('W2RhdGEtaHktY29udHJvbC1ibG9jaz0iZ2lmdF9mYWNlX2hvdmVyX2RldGFpbCJd'), __hyB64('I3BsYXllci1mYWNlIFtjbGFzcyo9ImdpZnQtZGV0YWlsIl0='), __hyB64('I3BsYXllci1mYWNlIFtjbGFzcyo9IkdpZnREZXRhaWwiXQ=='), __hyB64('I3BsYXllci1mYWNlIFtjbGFzcyo9ImdpZnQtcG9wIl0='), __hyB64('I3BsYXllci1mYWNlIFtjbGFzcyo9IkdpZnRQb3AiXQ=='), __hyB64('I3BsYXllci1mYWNlIFtjbGFzcyo9ImdpZnQtdG9vbHRpcCJd'), __hyB64('I3BsYXllci1mYWNlIFtjbGFzcyo9IkdpZnRUb29sdGlwIl0='), __hyB64('LnBsYXllci1mYWNlLWxpc3QgW2NsYXNzKj0iZ2lmdC1kZXRhaWwiXQ=='), __hyB64('LnBsYXllci1mYWNlLWxpc3QgW2NsYXNzKj0iR2lmdERldGFpbCJd'), __hyB64('LnBsYXllci1mYWNlLWxpc3QgW2NsYXNzKj0iZ2lmdC1wb3AiXQ=='), __hyB64('LnBsYXllci1mYWNlLWxpc3QgW2NsYXNzKj0iR2lmdFBvcCJd'), __hyB64('LnBsYXllci1mYWNlLWdpZnQgW2NsYXNzKj0iZ2lmdC1kZXRhaWwiXQ=='), __hyB64('LnBsYXllci1mYWNlLWdpZnQgW2NsYXNzKj0iR2lmdERldGFpbCJd'), __hyB64('LnBsYXllci1mYWNlLWdpZnQgW2NsYXNzKj0iZ2lmdC1wb3AiXQ=='), __hyB64('LnBsYXllci1mYWNlLWdpZnQgW2NsYXNzKj0iR2lmdFBvcCJd') ] }, { key: 'block_gift_face_combo_controls', name:__hyB64('5bGP6JS95b+r5o2356S854mp6L+e6YCBL+i/nuWHu+eKtuaAgQ=='), selectors: [ __hyB64('W2RhdGEtaHktY29udHJvbC1ibG9jaz0iZ2lmdF9mYWNlX2NvbWJvX2NvbnRyb2xzIl0='), __hyB64('I3BsYXllci1mYWNlIFtjbGFzcyo9ImNvbWJvIl0='), __hyB64('I3BsYXllci1mYWNlIFtjbGFzcyo9IkNvbWJvIl0='), __hyB64('I3BsYXllci1mYWNlIFtjbGFzcyo9ImNvbnRpbnVvdXMiXQ=='), __hyB64('I3BsYXllci1mYWNlIFtjbGFzcyo9IkNvbnRpbnVvdXMiXQ=='), __hyB64('I3BsYXllci1mYWNlIFtjbGFzcyo9InN0cmVhayJd'), __hyB64('I3BsYXllci1mYWNlIFtjbGFzcyo9IlN0cmVhayJd'), __hyB64('LnBsYXllci1mYWNlLWxpc3QgW2NsYXNzKj0iY29tYm8iXQ=='), __hyB64('LnBsYXllci1mYWNlLWxpc3QgW2NsYXNzKj0iQ29tYm8iXQ=='), __hyB64('LnBsYXllci1mYWNlLWxpc3QgW2NsYXNzKj0iY29udGludW91cyJd'), __hyB64('LnBsYXllci1mYWNlLWxpc3QgW2NsYXNzKj0iQ29udGludW91cyJd'), __hyB64('LnBsYXllci1mYWNlLWdpZnQgW2NsYXNzKj0iY29tYm8iXQ=='), __hyB64('LnBsYXllci1mYWNlLWdpZnQgW2NsYXNzKj0iQ29tYm8iXQ==') ] }, { key: 'block_gift_face_inventory_status', name:__hyB64('5bGP6JS95b+r5o2356S854mp6IOM5YyFL+W6k+WtmOeKtuaAgQ=='), selectors: [ __hyB64('W2RhdGEtaHktY29udHJvbC1ibG9jaz0iZ2lmdF9mYWNlX2ludmVudG9yeV9zdGF0dXMiXQ=='), __hyB64('I3BsYXllci1mYWNlIFtjbGFzcyo9ImludmVudG9yeSJd'), __hyB64('I3BsYXllci1mYWNlIFtjbGFzcyo9IkludmVudG9yeSJd'), __hyB64('I3BsYXllci1mYWNlIFtjbGFzcyo9ImJhZy1zdGF0dXMiXQ=='), __hyB64('I3BsYXllci1mYWNlIFtjbGFzcyo9IkJhZ1N0YXR1cyJd'), __hyB64('I3BsYXllci1mYWNlIFtjbGFzcyo9InN0b2NrLXN0YXR1cyJd'), __hyB64('I3BsYXllci1mYWNlIFtjbGFzcyo9IlN0b2NrU3RhdHVzIl0='), __hyB64('I3BsYXllci1mYWNlIFtjbGFzcyo9Im93bmVkLXN0YXR1cyJd'), __hyB64('I3BsYXllci1mYWNlIFtjbGFzcyo9Ik93bmVkU3RhdHVzIl0='), __hyB64('I3BsYXllci1mYWNlIFtjbGFzcyo9InJlbWFpbi1zdGF0dXMiXQ=='), __hyB64('I3BsYXllci1mYWNlIFtjbGFzcyo9IlJlbWFpblN0YXR1cyJd'), __hyB64('LnBsYXllci1mYWNlLWxpc3QgW2NsYXNzKj0iaW52ZW50b3J5Il0='), __hyB64('LnBsYXllci1mYWNlLWxpc3QgW2NsYXNzKj0iSW52ZW50b3J5Il0='), __hyB64('LnBsYXllci1mYWNlLWxpc3QgW2NsYXNzKj0iYmFnLXN0YXR1cyJd'), __hyB64('LnBsYXllci1mYWNlLWxpc3QgW2NsYXNzKj0iQmFnU3RhdHVzIl0='), __hyB64('LnBsYXllci1mYWNlLWdpZnQgW2NsYXNzKj0iaW52ZW50b3J5Il0='), __hyB64('LnBsYXllci1mYWNlLWdpZnQgW2NsYXNzKj0iSW52ZW50b3J5Il0=') ] }, { key: 'block_gift_face_send_button', name:__hyB64('5bGP6JS95b+r5o2356S854mp6LWg6YCB5oyJ6ZKu'), selectors: [ __hyB64('W2RhdGEtaHktY29udHJvbC1ibG9jaz0iZ2lmdF9mYWNlX3NlbmRfYnV0dG9uIl0='), __hyB64('I3BsYXllci1mYWNlIGJ1dHRvbltjbGFzcyo9ImdpZnQtc2VuZCJd'), __hyB64('I3BsYXllci1mYWNlIGJ1dHRvbltjbGFzcyo9IkdpZnRTZW5kIl0='), __hyB64('I3BsYXllci1mYWNlIGJ1dHRvbltjbGFzcyo9InNlbmQtYnRuIl0='), __hyB64('I3BsYXllci1mYWNlIGJ1dHRvbltjbGFzcyo9IlNlbmRCdG4iXQ=='), __hyB64('I3BsYXllci1mYWNlIFtyb2xlPSJidXR0b24iXVtjbGFzcyo9ImdpZnQtc2VuZCJd'), __hyB64('I3BsYXllci1mYWNlIFtyb2xlPSJidXR0b24iXVtjbGFzcyo9IkdpZnRTZW5kIl0='), __hyB64('LnBsYXllci1mYWNlLWxpc3QgYnV0dG9uW2NsYXNzKj0iZ2lmdC1zZW5kIl0='), __hyB64('LnBsYXllci1mYWNlLWxpc3QgYnV0dG9uW2NsYXNzKj0iR2lmdFNlbmQiXQ=='), __hyB64('LnBsYXllci1mYWNlLWxpc3QgYnV0dG9uW2NsYXNzKj0ic2VuZC1idG4iXQ=='), __hyB64('LnBsYXllci1mYWNlLWxpc3QgYnV0dG9uW2NsYXNzKj0iU2VuZEJ0biJd'), __hyB64('LnBsYXllci1mYWNlLWdpZnQgYnV0dG9uW2NsYXNzKj0iZ2lmdC1zZW5kIl0='), __hyB64('LnBsYXllci1mYWNlLWdpZnQgYnV0dG9uW2NsYXNzKj0iR2lmdFNlbmQiXQ==') ] }, { key: 'block_gift_face_activity_badges_ext', name:__hyB64('5bGP6JS95b+r5o2356S854mp5by55bGC5rS75Yqo6KeS5qCH'), selectors: [ __hyB64('W2RhdGEtaHktY29udHJvbC1ibG9jaz0iZ2lmdF9mYWNlX2FjdGl2aXR5X2JhZGdlc19leHQiXQ=='), __hyB64('I3BsYXllci1mYWNlIFtjbGFzcyo9ImdpZnQtYWN0aXZpdHktYmFkZ2UiXQ=='), __hyB64('I3BsYXllci1mYWNlIFtjbGFzcyo9IkdpZnRBY3Rpdml0eUJhZGdlIl0='), __hyB64('I3BsYXllci1mYWNlIFtjbGFzcyo9ImFjdGl2aXR5LWJhZGdlIl0='), __hyB64('I3BsYXllci1mYWNlIFtjbGFzcyo9IkFjdGl2aXR5QmFkZ2UiXQ=='), __hyB64('I3BsYXllci1mYWNlIFtjbGFzcyo9ImV2ZW50LWJhZGdlIl0='), __hyB64('I3BsYXllci1mYWNlIFtjbGFzcyo9IkV2ZW50QmFkZ2UiXQ=='), __hyB64('I3BsYXllci1mYWNlIFtjbGFzcyo9ImJvbnVzLWJhZGdlIl0='), __hyB64('I3BsYXllci1mYWNlIFtjbGFzcyo9IkJvbnVzQmFkZ2UiXQ=='), __hyB64('LnBsYXllci1mYWNlLWxpc3QgW2NsYXNzKj0iZ2lmdC1hY3Rpdml0eS1iYWRnZSJd'), __hyB64('LnBsYXllci1mYWNlLWxpc3QgW2NsYXNzKj0iR2lmdEFjdGl2aXR5QmFkZ2UiXQ=='), __hyB64('LnBsYXllci1mYWNlLWxpc3QgW2NsYXNzKj0iYWN0aXZpdHktYmFkZ2UiXQ=='), __hyB64('LnBsYXllci1mYWNlLWxpc3QgW2NsYXNzKj0iQWN0aXZpdHlCYWRnZSJd'), __hyB64('LnBsYXllci1mYWNlLWdpZnQgW2NsYXNzKj0iZ2lmdC1hY3Rpdml0eS1iYWRnZSJd'), __hyB64('LnBsYXllci1mYWNlLWdpZnQgW2NsYXNzKj0iR2lmdEFjdGl2aXR5QmFkZ2UiXQ==') ] }, { key: 'block_gift_face_arrow', name:__hyB64('5bGP6JS956S854mp5b+r5o235bGV5byA566t5aS0'), selectors: [__hyB64('LnBsYXllci1mYWNlLWFycm93')] }, { key: 'block_gift_charge', name:__hyB64('5bGP6JS95YWF5YC8L+WMheijueWFpeWPow=='), selectors: [__hyB64('LnBsYXllci1naWZ0LXJpZ2h0'), __hyB64('W2NsYXNzKj0iZ2lmdC1yaWdodCJd'), __hyB64('W2NsYXNzKj0icmVjaGFyZ2UiXQ==')] }, { key: 'block_gift_first_charge', name:__hyB64('5bGP6JS96aaW5YWF56S85YyF'), selectors: [__hyB64('I3BsYXllci1wdW5jaC1idG4='), __hyB64('W2RhdGEtaHktY29udHJvbC1ibG9jaz0iZ2lmdF9maXJzdF9jaGFyZ2UiXQ=='), __hyB64('I3BsYXllci1maXJzdC1yZWNoYXJnZS1idG4='), __hyB64('I3BsYXllci1maXJzdFJlY2hhcmdlLWJ0bg=='), __hyB64('W2NsYXNzKj0iZmlyc3QtcmVjaGFyZ2UiXQ=='), __hyB64('W2NsYXNzKj0iZmlyc3RSZWNoYXJnZSJd')] }, { key: 'block_gift_recharge', name:__hyB64('5bGP6JS95YWF5YC85YWl5Y+j'), selectors: [__hyB64('I3BsYXllci1yZWNoYXJnZS1idG4='), __hyB64('I3BsYXllci1yZWNoYXJnZS1jbGljaw=='), __hyB64('I3JlY2hhcmdlLWJ0bg==')] }, { key: 'block_gift_package', name:__hyB64('5bGP6JS95YyF6KO55YWl5Y+j'), selectors: [__hyB64('I3BsYXllci1wYWNrYWdlLWJ0bg==')] }, { key: 'block_gift_guard', name:__hyB64('5bGP6JS95a6I5oqk5YWl5Y+j'), selectors: [__hyB64('I3BsYXllci1ndWFyZC1idG4=')] }, { key: 'block_gift_noble', name:__hyB64('5bGP6JS96LS15peP5YWl5Y+j'), selectors: [__hyB64('I3BsYXllci1ub2JsZS1idG4=')] }, { key: 'block_room_below_info', name:__hyB64('5bGP6JS955u05pKt6Ze05LiL5pa55L+h5oGv'), selectors: [ __hyB64('I21hdGNoLWNtcy1jb250ZW50'), __hyB64('I21hdGNoTWFpbg=='), __hyB64('W2lkXj0ibWF0Y2hMaXZlIl0='), __hyB64('Lm1hdGNoX2JvZHlfd3JhcA=='), __hyB64('LmRpeS1jb21wcy13cmFw'), __hyB64('I0pfcm9vbU1haW4gLnJvb20tcHJvZmlsZQ=='), __hyB64('I0pfcm9vbU1haW4gLnJvb20tZGV0YWls'), __hyB64('I0pfcm9vbU1haW4gLnJvb20taW5mby13cmFw'), __hyB64('I0pfcm9vbU1haW4gLnJvb20tbW9kLXByb2ZpbGU='), __hyB64('I0pfcm9vbU1haW4gLnJvb20tcmVjb21tZW5k'), __hyB64('I0pfcm9vbU1haW4gW2NsYXNzKj0iUm9vbVByb2ZpbGUiXQ=='), __hyB64('I0pfcm9vbU1haW4gW2NsYXNzKj0icm9vbVByb2ZpbGUiXQ==') ] }, { key: 'block_room_below_match_cms', name:__hyB64('5bGP6JS95LiL5pa56LWb5LqLL+a0u+WKqOe7hOS7tg=='), selectors: [ __hyB64('I21hdGNoLWNtcy1jb250ZW50'), __hyB64('I21hdGNoTWFpbg=='), __hyB64('W2lkXj0ibWF0Y2hMaXZlIl0='), __hyB64('Lm1hdGNoX2JvZHlfd3JhcA=='), __hyB64('LmRpeS1jb21wcy13cmFw') ] }, { key: 'block_room_below_profile', name:__hyB64('5bGP6JS95LiL5pa55oi/6Ze06LWE5paZ'), selectors: [ __hyB64('I0pfcm9vbU1haW4gLnJvb20tcHJvZmlsZQ=='), __hyB64('I0pfcm9vbU1haW4gLnJvb20tZGV0YWls'), __hyB64('I0pfcm9vbU1haW4gLnJvb20taW5mby13cmFw'), __hyB64('I0pfcm9vbU1haW4gLnJvb20tbW9kLXByb2ZpbGU='), __hyB64('I0pfcm9vbU1haW4gW2NsYXNzKj0iUm9vbVByb2ZpbGUiXQ=='), __hyB64('I0pfcm9vbU1haW4gW2NsYXNzKj0icm9vbVByb2ZpbGUiXQ==') ] }, { key: 'block_room_below_recommend', name:__hyB64('5bGP6JS95LiL5pa55o6o6I2Q5Yy6'), selectors: [ __hyB64('I0pfcm9vbU1haW4gLnJvb20tcmVjb21tZW5k'), __hyB64('I0pfcm9vbU1haW4gW2NsYXNzKj0iUm9vbVJlY29tbWVuZCJd'), __hyB64('I0pfcm9vbU1haW4gW2NsYXNzKj0icm9vbVJlY29tbWVuZCJd') ] }, { key: 'block_room_below_recommend_cards', name:__hyB64('5bGP6JS95LiL5pa55o6o6I2Q5Y2h54mH'), selectors: [ __hyB64('I0pfcm9vbU1haW4gLnJvb20tcmVjb21tZW5kIGxp'), __hyB64('I0pfcm9vbU1haW4gLnJvb20tcmVjb21tZW5kIC5saXZlLWNhcmQ='), __hyB64('I0pfcm9vbU1haW4gW2NsYXNzKj0iUm9vbVJlY29tbWVuZCJdIGxp'), __hyB64('I0pfcm9vbU1haW4gW2NsYXNzKj0iUm9vbVJlY29tbWVuZCJdIFtjbGFzcyo9ImNhcmQiXQ=='), __hyB64('I0pfcm9vbU1haW4gW2NsYXNzKj0icm9vbVJlY29tbWVuZCJdIFtjbGFzcyo9ImNhcmQiXQ==') ] }, { key: 'block_room_below_recommend_cover', name:__hyB64('5bGP6JS95LiL5pa55o6o6I2Q5bCB6Z2i'), selectors: [ __hyB64('W2RhdGEtaHktY29udHJvbC1ibG9jaz0icm9vbV9iZWxvd19yZWNvbW1lbmRfY292ZXIiXQ=='), __hyB64('I0pfcm9vbU1haW4gLnJvb20tcmVjb21tZW5kIGxpIFtjbGFzcyo9ImNvdmVyIl0='), __hyB64('I0pfcm9vbU1haW4gLnJvb20tcmVjb21tZW5kIGxpIFtjbGFzcyo9IkNvdmVyIl0='), __hyB64('I0pfcm9vbU1haW4gLnJvb20tcmVjb21tZW5kIGxpIFtjbGFzcyo9InRodW1iIl0='), __hyB64('I0pfcm9vbU1haW4gLnJvb20tcmVjb21tZW5kIGxpIFtjbGFzcyo9IlRodW1iIl0='), __hyB64('I0pfcm9vbU1haW4gLnJvb20tcmVjb21tZW5kIGxpIFtjbGFzcyo9InBpYyJd'), __hyB64('I0pfcm9vbU1haW4gLnJvb20tcmVjb21tZW5kIGxpIFtjbGFzcyo9IlBpYyJd'), __hyB64('I0pfcm9vbU1haW4gLnJvb20tcmVjb21tZW5kIC5saXZlLWNhcmQgW2NsYXNzKj0iY292ZXIiXQ=='), __hyB64('I0pfcm9vbU1haW4gLnJvb20tcmVjb21tZW5kIC5saXZlLWNhcmQgW2NsYXNzKj0iQ292ZXIiXQ=='), __hyB64('I0pfcm9vbU1haW4gLnJvb20tcmVjb21tZW5kIFtjbGFzcyo9ImNhcmQiXSBbY2xhc3MqPSJjb3ZlciJd'), __hyB64('I0pfcm9vbU1haW4gLnJvb20tcmVjb21tZW5kIFtjbGFzcyo9ImNhcmQiXSBbY2xhc3MqPSJDb3ZlciJd'), __hyB64('I0pfcm9vbU1haW4gW2NsYXNzKj0iUm9vbVJlY29tbWVuZCJdIGxpIFtjbGFzcyo9ImNvdmVyIl0='), __hyB64('I0pfcm9vbU1haW4gW2NsYXNzKj0iUm9vbVJlY29tbWVuZCJdIGxpIFtjbGFzcyo9IkNvdmVyIl0='), __hyB64('I0pfcm9vbU1haW4gW2NsYXNzKj0iUm9vbVJlY29tbWVuZCJdIFtjbGFzcyo9ImNhcmQiXSBbY2xhc3MqPSJjb3ZlciJd'), __hyB64('I0pfcm9vbU1haW4gW2NsYXNzKj0iUm9vbVJlY29tbWVuZCJdIFtjbGFzcyo9ImNhcmQiXSBbY2xhc3MqPSJDb3ZlciJd'), __hyB64('I0pfcm9vbU1haW4gW2NsYXNzKj0icm9vbVJlY29tbWVuZCJdIGxpIFtjbGFzcyo9ImNvdmVyIl0='), __hyB64('I0pfcm9vbU1haW4gW2NsYXNzKj0icm9vbVJlY29tbWVuZCJdIGxpIFtjbGFzcyo9IkNvdmVyIl0='), __hyB64('I0pfcm9vbU1haW4gW2NsYXNzKj0icm9vbVJlY29tbWVuZCJdIFtjbGFzcyo9ImNhcmQiXSBbY2xhc3MqPSJjb3ZlciJd'), __hyB64('I0pfcm9vbU1haW4gW2NsYXNzKj0icm9vbVJlY29tbWVuZCJdIFtjbGFzcyo9ImNhcmQiXSBbY2xhc3MqPSJDb3ZlciJd') ] }, { key: 'block_room_below_recommend_titles', name:__hyB64('5bGP6JS95LiL5pa55o6o6I2Q5qCH6aKY'), selectors: [ __hyB64('W2RhdGEtaHktY29udHJvbC1ibG9jaz0icm9vbV9iZWxvd19yZWNvbW1lbmRfdGl0bGVzIl0='), __hyB64('I0pfcm9vbU1haW4gLnJvb20tcmVjb21tZW5kIGxpIFtjbGFzcyo9InRpdGxlIl0='), __hyB64('I0pfcm9vbU1haW4gLnJvb20tcmVjb21tZW5kIGxpIFtjbGFzcyo9IlRpdGxlIl0='), __hyB64('I0pfcm9vbU1haW4gLnJvb20tcmVjb21tZW5kIGxpIFtjbGFzcyo9InJvb20tbmFtZSJd'), __hyB64('I0pfcm9vbU1haW4gLnJvb20tcmVjb21tZW5kIGxpIFtjbGFzcyo9IlJvb21OYW1lIl0='), __hyB64('I0pfcm9vbU1haW4gLnJvb20tcmVjb21tZW5kIGxpIFtjbGFzcyo9ImxpdmUtdGl0bGUiXQ=='), __hyB64('I0pfcm9vbU1haW4gLnJvb20tcmVjb21tZW5kIGxpIFtjbGFzcyo9IkxpdmVUaXRsZSJd'), __hyB64('I0pfcm9vbU1haW4gLnJvb20tcmVjb21tZW5kIC5saXZlLWNhcmQgW2NsYXNzKj0idGl0bGUiXQ=='), __hyB64('I0pfcm9vbU1haW4gLnJvb20tcmVjb21tZW5kIC5saXZlLWNhcmQgW2NsYXNzKj0iVGl0bGUiXQ=='), __hyB64('I0pfcm9vbU1haW4gLnJvb20tcmVjb21tZW5kIFtjbGFzcyo9ImNhcmQiXSBbY2xhc3MqPSJ0aXRsZSJd'), __hyB64('I0pfcm9vbU1haW4gLnJvb20tcmVjb21tZW5kIFtjbGFzcyo9ImNhcmQiXSBbY2xhc3MqPSJUaXRsZSJd'), __hyB64('I0pfcm9vbU1haW4gW2NsYXNzKj0iUm9vbVJlY29tbWVuZCJdIGxpIFtjbGFzcyo9InRpdGxlIl0='), __hyB64('I0pfcm9vbU1haW4gW2NsYXNzKj0iUm9vbVJlY29tbWVuZCJdIGxpIFtjbGFzcyo9IlRpdGxlIl0='), __hyB64('I0pfcm9vbU1haW4gW2NsYXNzKj0iUm9vbVJlY29tbWVuZCJdIFtjbGFzcyo9ImNhcmQiXSBbY2xhc3MqPSJ0aXRsZSJd'), __hyB64('I0pfcm9vbU1haW4gW2NsYXNzKj0iUm9vbVJlY29tbWVuZCJdIFtjbGFzcyo9ImNhcmQiXSBbY2xhc3MqPSJUaXRsZSJd'), __hyB64('I0pfcm9vbU1haW4gW2NsYXNzKj0icm9vbVJlY29tbWVuZCJdIGxpIFtjbGFzcyo9InRpdGxlIl0='), __hyB64('I0pfcm9vbU1haW4gW2NsYXNzKj0icm9vbVJlY29tbWVuZCJdIGxpIFtjbGFzcyo9IlRpdGxlIl0='), __hyB64('I0pfcm9vbU1haW4gW2NsYXNzKj0icm9vbVJlY29tbWVuZCJdIFtjbGFzcyo9ImNhcmQiXSBbY2xhc3MqPSJ0aXRsZSJd'), __hyB64('I0pfcm9vbU1haW4gW2NsYXNzKj0icm9vbVJlY29tbWVuZCJdIFtjbGFzcyo9ImNhcmQiXSBbY2xhc3MqPSJUaXRsZSJd') ] }, { key: 'block_room_below_recommend_anchor_info', name:__hyB64('5bGP6JS95LiL5pa55o6o6I2Q5Li75pKt5L+h5oGv'), selectors: [ __hyB64('W2RhdGEtaHktY29udHJvbC1ibG9jaz0icm9vbV9iZWxvd19yZWNvbW1lbmRfYW5jaG9yX2luZm8iXQ=='), __hyB64('I0pfcm9vbU1haW4gLnJvb20tcmVjb21tZW5kIGxpIFtjbGFzcyo9ImF2YXRhciJd'), __hyB64('I0pfcm9vbU1haW4gLnJvb20tcmVjb21tZW5kIGxpIFtjbGFzcyo9IkF2YXRhciJd'), __hyB64('I0pfcm9vbU1haW4gLnJvb20tcmVjb21tZW5kIGxpIFtjbGFzcyo9Im5pY2siXQ=='), __hyB64('I0pfcm9vbU1haW4gLnJvb20tcmVjb21tZW5kIGxpIFtjbGFzcyo9Ik5pY2siXQ=='), __hyB64('I0pfcm9vbU1haW4gLnJvb20tcmVjb21tZW5kIGxpIFtjbGFzcyo9ImFuY2hvci1uYW1lIl0='), __hyB64('I0pfcm9vbU1haW4gLnJvb20tcmVjb21tZW5kIGxpIFtjbGFzcyo9ImFuY2hvck5hbWUiXQ=='), __hyB64('I0pfcm9vbU1haW4gLnJvb20tcmVjb21tZW5kIGxpIFtjbGFzcyo9ImF1dGhvci1uYW1lIl0='), __hyB64('I0pfcm9vbU1haW4gLnJvb20tcmVjb21tZW5kIGxpIFtjbGFzcyo9ImF1dGhvck5hbWUiXQ=='), __hyB64('I0pfcm9vbU1haW4gLnJvb20tcmVjb21tZW5kIGxpIFtjbGFzcyo9ImlkZW50aXR5Il0='), __hyB64('I0pfcm9vbU1haW4gLnJvb20tcmVjb21tZW5kIGxpIFtjbGFzcyo9IklkZW50aXR5Il0='), __hyB64('I0pfcm9vbU1haW4gLnJvb20tcmVjb21tZW5kIGxpIFtjbGFzcyo9Im1lZGFsIl0='), __hyB64('I0pfcm9vbU1haW4gLnJvb20tcmVjb21tZW5kIGxpIFtjbGFzcyo9Ik1lZGFsIl0='), __hyB64('I0pfcm9vbU1haW4gLnJvb20tcmVjb21tZW5kIC5saXZlLWNhcmQgW2NsYXNzKj0iYXZhdGFyIl0='), __hyB64('I0pfcm9vbU1haW4gLnJvb20tcmVjb21tZW5kIC5saXZlLWNhcmQgW2NsYXNzKj0iQXZhdGFyIl0='), __hyB64('I0pfcm9vbU1haW4gLnJvb20tcmVjb21tZW5kIC5saXZlLWNhcmQgW2NsYXNzKj0ibmljayJd'), __hyB64('I0pfcm9vbU1haW4gLnJvb20tcmVjb21tZW5kIC5saXZlLWNhcmQgW2NsYXNzKj0iTmljayJd'), __hyB64('I0pfcm9vbU1haW4gLnJvb20tcmVjb21tZW5kIFtjbGFzcyo9ImNhcmQiXSBbY2xhc3MqPSJhdmF0YXIiXQ=='), __hyB64('I0pfcm9vbU1haW4gLnJvb20tcmVjb21tZW5kIFtjbGFzcyo9ImNhcmQiXSBbY2xhc3MqPSJBdmF0YXIiXQ=='), __hyB64('I0pfcm9vbU1haW4gLnJvb20tcmVjb21tZW5kIFtjbGFzcyo9ImNhcmQiXSBbY2xhc3MqPSJuaWNrIl0='), __hyB64('I0pfcm9vbU1haW4gLnJvb20tcmVjb21tZW5kIFtjbGFzcyo9ImNhcmQiXSBbY2xhc3MqPSJOaWNrIl0='), __hyB64('I0pfcm9vbU1haW4gW2NsYXNzKj0iUm9vbVJlY29tbWVuZCJdIGxpIFtjbGFzcyo9ImF2YXRhciJd'), __hyB64('I0pfcm9vbU1haW4gW2NsYXNzKj0iUm9vbVJlY29tbWVuZCJdIGxpIFtjbGFzcyo9IkF2YXRhciJd'), __hyB64('I0pfcm9vbU1haW4gW2NsYXNzKj0iUm9vbVJlY29tbWVuZCJdIGxpIFtjbGFzcyo9Im5pY2siXQ=='), __hyB64('I0pfcm9vbU1haW4gW2NsYXNzKj0iUm9vbVJlY29tbWVuZCJdIGxpIFtjbGFzcyo9Ik5pY2siXQ=='), __hyB64('I0pfcm9vbU1haW4gW2NsYXNzKj0iUm9vbVJlY29tbWVuZCJdIFtjbGFzcyo9ImNhcmQiXSBbY2xhc3MqPSJhdmF0YXIiXQ=='), __hyB64('I0pfcm9vbU1haW4gW2NsYXNzKj0iUm9vbVJlY29tbWVuZCJdIFtjbGFzcyo9ImNhcmQiXSBbY2xhc3MqPSJBdmF0YXIiXQ=='), __hyB64('I0pfcm9vbU1haW4gW2NsYXNzKj0icm9vbVJlY29tbWVuZCJdIGxpIFtjbGFzcyo9ImF2YXRhciJd'), __hyB64('I0pfcm9vbU1haW4gW2NsYXNzKj0icm9vbVJlY29tbWVuZCJdIGxpIFtjbGFzcyo9IkF2YXRhciJd'), __hyB64('I0pfcm9vbU1haW4gW2NsYXNzKj0icm9vbVJlY29tbWVuZCJdIGxpIFtjbGFzcyo9Im5pY2siXQ=='), __hyB64('I0pfcm9vbU1haW4gW2NsYXNzKj0icm9vbVJlY29tbWVuZCJdIGxpIFtjbGFzcyo9Ik5pY2siXQ==') ] }, { key: 'block_room_below_recommend_view_counts', name:__hyB64('5bGP6JS95LiL5pa55o6o6I2Q6KeC55yL5Lq65pWw'), selectors: [ __hyB64('W2RhdGEtaHktY29udHJvbC1ibG9jaz0icm9vbV9iZWxvd19yZWNvbW1lbmRfdmlld19jb3VudHMiXQ=='), __hyB64('I0pfcm9vbU1haW4gLnJvb20tcmVjb21tZW5kIGxpIFtjbGFzcyo9InZpZXdlciJd'), __hyB64('I0pfcm9vbU1haW4gLnJvb20tcmVjb21tZW5kIGxpIFtjbGFzcyo9IlZpZXdlciJd'), __hyB64('I0pfcm9vbU1haW4gLnJvb20tcmVjb21tZW5kIGxpIFtjbGFzcyo9Im9ubGluZSJd'), __hyB64('I0pfcm9vbU1haW4gLnJvb20tcmVjb21tZW5kIGxpIFtjbGFzcyo9Ik9ubGluZSJd'), __hyB64('I0pfcm9vbU1haW4gLnJvb20tcmVjb21tZW5kIGxpIFtjbGFzcyo9ImhlYXQiXQ=='), __hyB64('I0pfcm9vbU1haW4gLnJvb20tcmVjb21tZW5kIGxpIFtjbGFzcyo9IkhlYXQiXQ=='), __hyB64('I0pfcm9vbU1haW4gLnJvb20tcmVjb21tZW5kIC5saXZlLWNhcmQgW2NsYXNzKj0idmlld2VyIl0='), __hyB64('I0pfcm9vbU1haW4gLnJvb20tcmVjb21tZW5kIC5saXZlLWNhcmQgW2NsYXNzKj0iVmlld2VyIl0='), __hyB64('I0pfcm9vbU1haW4gLnJvb20tcmVjb21tZW5kIFtjbGFzcyo9ImNhcmQiXSBbY2xhc3MqPSJ2aWV3ZXIiXQ=='), __hyB64('I0pfcm9vbU1haW4gLnJvb20tcmVjb21tZW5kIFtjbGFzcyo9ImNhcmQiXSBbY2xhc3MqPSJWaWV3ZXIiXQ=='), __hyB64('I0pfcm9vbU1haW4gW2NsYXNzKj0iUm9vbVJlY29tbWVuZCJdIGxpIFtjbGFzcyo9InZpZXdlciJd'), __hyB64('I0pfcm9vbU1haW4gW2NsYXNzKj0iUm9vbVJlY29tbWVuZCJdIGxpIFtjbGFzcyo9IlZpZXdlciJd'), __hyB64('I0pfcm9vbU1haW4gW2NsYXNzKj0iUm9vbVJlY29tbWVuZCJdIFtjbGFzcyo9ImNhcmQiXSBbY2xhc3MqPSJ2aWV3ZXIiXQ=='), __hyB64('I0pfcm9vbU1haW4gW2NsYXNzKj0iUm9vbVJlY29tbWVuZCJdIFtjbGFzcyo9ImNhcmQiXSBbY2xhc3MqPSJWaWV3ZXIiXQ=='), __hyB64('I0pfcm9vbU1haW4gW2NsYXNzKj0icm9vbVJlY29tbWVuZCJdIGxpIFtjbGFzcyo9InZpZXdlciJd'), __hyB64('I0pfcm9vbU1haW4gW2NsYXNzKj0icm9vbVJlY29tbWVuZCJdIGxpIFtjbGFzcyo9IlZpZXdlciJd'), __hyB64('I0pfcm9vbU1haW4gW2NsYXNzKj0icm9vbVJlY29tbWVuZCJdIFtjbGFzcyo9ImNhcmQiXSBbY2xhc3MqPSJ2aWV3ZXIiXQ=='), __hyB64('I0pfcm9vbU1haW4gW2NsYXNzKj0icm9vbVJlY29tbWVuZCJdIFtjbGFzcyo9ImNhcmQiXSBbY2xhc3MqPSJWaWV3ZXIiXQ==') ] }, { key: 'block_room_below_recommend_tags', name:__hyB64('5bGP6JS95LiL5pa55o6o6I2Q5qCH562+'), selectors: [ __hyB64('W2RhdGEtaHktY29udHJvbC1ibG9jaz0icm9vbV9iZWxvd19yZWNvbW1lbmRfdGFncyJd'), __hyB64('I0pfcm9vbU1haW4gLnJvb20tcmVjb21tZW5kIGxpIFtjbGFzcyo9InRhZyJd'), __hyB64('I0pfcm9vbU1haW4gLnJvb20tcmVjb21tZW5kIGxpIFtjbGFzcyo9IlRhZyJd'), __hyB64('I0pfcm9vbU1haW4gLnJvb20tcmVjb21tZW5kIGxpIFtjbGFzcyo9ImxhYmVsIl0='), __hyB64('I0pfcm9vbU1haW4gLnJvb20tcmVjb21tZW5kIGxpIFtjbGFzcyo9IkxhYmVsIl0='), __hyB64('I0pfcm9vbU1haW4gLnJvb20tcmVjb21tZW5kIGxpIFtjbGFzcyo9ImNhdGVnb3J5Il0='), __hyB64('I0pfcm9vbU1haW4gLnJvb20tcmVjb21tZW5kIGxpIFtjbGFzcyo9IkNhdGVnb3J5Il0='), __hyB64('I0pfcm9vbU1haW4gLnJvb20tcmVjb21tZW5kIGxpIFtjbGFzcyo9ImdhbWUtdGFnIl0='), __hyB64('I0pfcm9vbU1haW4gLnJvb20tcmVjb21tZW5kIGxpIFtjbGFzcyo9IkdhbWVUYWciXQ=='), __hyB64('I0pfcm9vbU1haW4gLnJvb20tcmVjb21tZW5kIGxpIFtjbGFzcyo9ImdhbWUtbGFiZWwiXQ=='), __hyB64('I0pfcm9vbU1haW4gLnJvb20tcmVjb21tZW5kIGxpIFtjbGFzcyo9IkdhbWVMYWJlbCJd'), __hyB64('I0pfcm9vbU1haW4gLnJvb20tcmVjb21tZW5kIC5saXZlLWNhcmQgW2NsYXNzKj0idGFnIl0='), __hyB64('I0pfcm9vbU1haW4gLnJvb20tcmVjb21tZW5kIC5saXZlLWNhcmQgW2NsYXNzKj0iVGFnIl0='), __hyB64('I0pfcm9vbU1haW4gLnJvb20tcmVjb21tZW5kIFtjbGFzcyo9ImNhcmQiXSBbY2xhc3MqPSJ0YWciXQ=='), __hyB64('I0pfcm9vbU1haW4gLnJvb20tcmVjb21tZW5kIFtjbGFzcyo9ImNhcmQiXSBbY2xhc3MqPSJUYWciXQ=='), __hyB64('I0pfcm9vbU1haW4gW2NsYXNzKj0iUm9vbVJlY29tbWVuZCJdIGxpIFtjbGFzcyo9InRhZyJd'), __hyB64('I0pfcm9vbU1haW4gW2NsYXNzKj0iUm9vbVJlY29tbWVuZCJdIGxpIFtjbGFzcyo9IlRhZyJd'), __hyB64('I0pfcm9vbU1haW4gW2NsYXNzKj0iUm9vbVJlY29tbWVuZCJdIFtjbGFzcyo9ImNhcmQiXSBbY2xhc3MqPSJ0YWciXQ=='), __hyB64('I0pfcm9vbU1haW4gW2NsYXNzKj0iUm9vbVJlY29tbWVuZCJdIFtjbGFzcyo9ImNhcmQiXSBbY2xhc3MqPSJUYWciXQ=='), __hyB64('I0pfcm9vbU1haW4gW2NsYXNzKj0icm9vbVJlY29tbWVuZCJdIGxpIFtjbGFzcyo9InRhZyJd'), __hyB64('I0pfcm9vbU1haW4gW2NsYXNzKj0icm9vbVJlY29tbWVuZCJdIGxpIFtjbGFzcyo9IlRhZyJd'), __hyB64('I0pfcm9vbU1haW4gW2NsYXNzKj0icm9vbVJlY29tbWVuZCJdIFtjbGFzcyo9ImNhcmQiXSBbY2xhc3MqPSJ0YWciXQ=='), __hyB64('I0pfcm9vbU1haW4gW2NsYXNzKj0icm9vbVJlY29tbWVuZCJdIFtjbGFzcyo9ImNhcmQiXSBbY2xhc3MqPSJUYWciXQ==') ] }, { key: 'block_room_below_moments_nav', name:__hyB64('5bGP6JS95LiL5pa55Yqo5oCB5a+86Iiq'), selectors: [ __hyB64('I3Jvb20tbW9tZW50cyAubW9tZW50cy1uYXY='), __hyB64('I3Jvb20tbW9tZW50cyAubW9tZW50cy1uYXYtaXRlbQ=='), __hyB64('LnJvb20tbW9tZW50cyAubW9tZW50cy1uYXY='), __hyB64('LnJvb20tbW9tZW50cyAubW9tZW50cy1uYXYtaXRlbQ==') ] }, { key: 'block_room_below_moments_content', name:__hyB64('5bGP6JS95LiL5pa55Yqo5oCB5YaF5a65'), selectors: [ __hyB64('I3Jvb20tbW9tZW50cyAubW9tZW50cy1jb250ZW50'), __hyB64('LnJvb20tbW9tZW50cyAubW9tZW50cy1jb250ZW50') ] }, { key: 'block_room_below_union', name:__hyB64('5bGP6JS95LiL5pa5562+57qm5YWs5Lya'), selectors: [ __hyB64('I3Jvb20tdW5pb24='), __hyB64('LnJvb20tdW5pb24=') ] }, { key: 'block_room_below_you_like', name:__hyB64('5bGP6JS95LiL5pa554yc5L2g5Zac5qyi'), selectors: [ __hyB64('I0pfcm9vbVVMaWtl'), __hyB64('LnJvb20teW91bGlrZQ=='), __hyB64('I0pfcm9vbVBlcnNvbmFsUmVjb20=') ] }, { key: 'block_room_below_category_recommend', name:__hyB64('5bGP6JS95LiL5pa55o6o6I2Q5YiG57G7'), selectors: [ __hyB64('I2NsYXNzaWZ5LXJlY29t'), __hyB64('LmNsYXNzaWZ5LXJlY29t'), __hyB64('I3JlY29tLWxpc3Q=') ] }, { key: 'block_room_below_category_recommend_items', name:__hyB64('5bGP6JS95LiL5pa55o6o6I2Q5YiG57G75p2h55uu'), selectors: [ __hyB64('W2RhdGEtaHktY29udHJvbC1ibG9jaz0icm9vbV9iZWxvd19jYXRlZ29yeV9yZWNvbW1lbmRfaXRlbXMiXQ=='), __hyB64('I2NsYXNzaWZ5LXJlY29tICNyZWNvbS1saXN0IGxpOm5vdCgubG9hZGluZyk6bm90KFtjbGFzcyo9ImxvYWRpbmciXSk6bm90KFtjbGFzcyo9IkxvYWRpbmciXSk6bm90KFtjbGFzcyo9InNrZWxldG9uIl0pOm5vdChbY2xhc3MqPSJTa2VsZXRvbiJdKTpub3QoW2NsYXNzKj0iZW1wdHkiXSk6bm90KFtjbGFzcyo9IkVtcHR5Il0p'), __hyB64('LmNsYXNzaWZ5LXJlY29tICNyZWNvbS1saXN0IGxpOm5vdCgubG9hZGluZyk6bm90KFtjbGFzcyo9ImxvYWRpbmciXSk6bm90KFtjbGFzcyo9IkxvYWRpbmciXSk6bm90KFtjbGFzcyo9InNrZWxldG9uIl0pOm5vdChbY2xhc3MqPSJTa2VsZXRvbiJdKTpub3QoW2NsYXNzKj0iZW1wdHkiXSk6bm90KFtjbGFzcyo9IkVtcHR5Il0p'), __hyB64('I3JlY29tLWxpc3QgbGk6bm90KC5sb2FkaW5nKTpub3QoW2NsYXNzKj0ibG9hZGluZyJdKTpub3QoW2NsYXNzKj0iTG9hZGluZyJdKTpub3QoW2NsYXNzKj0ic2tlbGV0b24iXSk6bm90KFtjbGFzcyo9IlNrZWxldG9uIl0pOm5vdChbY2xhc3MqPSJlbXB0eSJdKTpub3QoW2NsYXNzKj0iRW1wdHkiXSk='), __hyB64('I2NsYXNzaWZ5LXJlY29tICNyZWNvbS1saXN0IGFbY2xhc3MqPSJpdGVtIl06bm90KFtjbGFzcyo9ImxvYWRpbmciXSk6bm90KFtjbGFzcyo9IkxvYWRpbmciXSk6bm90KFtjbGFzcyo9InNrZWxldG9uIl0pOm5vdChbY2xhc3MqPSJTa2VsZXRvbiJdKTpub3QoW2NsYXNzKj0iZW1wdHkiXSk6bm90KFtjbGFzcyo9IkVtcHR5Il0p'), __hyB64('I2NsYXNzaWZ5LXJlY29tIFtjbGFzcyo9ImNsYXNzaWZ5LWNhcmQiXTpub3QoW2NsYXNzKj0ibG9hZGluZyJdKTpub3QoW2NsYXNzKj0iTG9hZGluZyJdKTpub3QoW2NsYXNzKj0ic2tlbGV0b24iXSk6bm90KFtjbGFzcyo9IlNrZWxldG9uIl0pOm5vdChbY2xhc3MqPSJlbXB0eSJdKTpub3QoW2NsYXNzKj0iRW1wdHkiXSk='), __hyB64('I2NsYXNzaWZ5LXJlY29tIFtjbGFzcyo9ImNsYXNzaWZ5LWl0ZW0iXTpub3QoW2NsYXNzKj0ibG9hZGluZyJdKTpub3QoW2NsYXNzKj0iTG9hZGluZyJdKTpub3QoW2NsYXNzKj0ic2tlbGV0b24iXSk6bm90KFtjbGFzcyo9IlNrZWxldG9uIl0pOm5vdChbY2xhc3MqPSJlbXB0eSJdKTpub3QoW2NsYXNzKj0iRW1wdHkiXSk=') ] }, { key: 'block_room_below_category_recommend_title', name:__hyB64('5bGP6JS95LiL5pa55o6o6I2Q5YiG57G75qCH6aKY'), selectors: [ __hyB64('W2RhdGEtaHktY29udHJvbC1ibG9jaz0icm9vbV9iZWxvd19jYXRlZ29yeV9yZWNvbW1lbmRfdGl0bGUiXQ=='), __hyB64('I2NsYXNzaWZ5LXJlY29tIFtjbGFzcyo9InRpdGxlIl0='), __hyB64('I2NsYXNzaWZ5LXJlY29tIFtjbGFzcyo9IlRpdGxlIl0='), __hyB64('I2NsYXNzaWZ5LXJlY29tIFtjbGFzcyo9ImhlYWQiXQ=='), __hyB64('I2NsYXNzaWZ5LXJlY29tIFtjbGFzcyo9IkhlYWQiXQ=='), __hyB64('I2NsYXNzaWZ5LXJlY29tIFtjbGFzcyo9ImhkIl0='), __hyB64('LmNsYXNzaWZ5LXJlY29tIFtjbGFzcyo9InRpdGxlIl0='), __hyB64('LmNsYXNzaWZ5LXJlY29tIFtjbGFzcyo9IlRpdGxlIl0='), __hyB64('LmNsYXNzaWZ5LXJlY29tIFtjbGFzcyo9ImhlYWQiXQ=='), __hyB64('LmNsYXNzaWZ5LXJlY29tIFtjbGFzcyo9IkhlYWQiXQ=='), __hyB64('I3JlY29tLWxpc3QgW2NsYXNzKj0idGl0bGUiXQ=='), __hyB64('I3JlY29tLWxpc3QgW2NsYXNzKj0iVGl0bGUiXQ==') ] }, { key: 'block_room_below_category_recommend_icons', name:__hyB64('5bGP6JS95LiL5pa55o6o6I2Q5YiG57G75bCB6Z2i'), selectors: [ __hyB64('W2RhdGEtaHktY29udHJvbC1ibG9jaz0icm9vbV9iZWxvd19jYXRlZ29yeV9yZWNvbW1lbmRfaWNvbnMiXQ=='), __hyB64('I2NsYXNzaWZ5LXJlY29tIC5yZWNvbS10aXRsZS1pY29u'), __hyB64('LmNsYXNzaWZ5LXJlY29tIC5yZWNvbS10aXRsZS1pY29u'), __hyB64('I2NsYXNzaWZ5LXJlY29tICNyZWNvbS1saXN0IGxpIGltZzpub3QoLmxvYWRpbmcp'), __hyB64('LmNsYXNzaWZ5LXJlY29tICNyZWNvbS1saXN0IGxpIGltZzpub3QoLmxvYWRpbmcp'), __hyB64('I2NsYXNzaWZ5LXJlY29tIFtjbGFzcyo9ImNvdmVyIl0='), __hyB64('I2NsYXNzaWZ5LXJlY29tIFtjbGFzcyo9IkNvdmVyIl0='), __hyB64('I2NsYXNzaWZ5LXJlY29tIFtjbGFzcyo9InRodW1iIl0='), __hyB64('I2NsYXNzaWZ5LXJlY29tIFtjbGFzcyo9IlRodW1iIl0='), __hyB64('I2NsYXNzaWZ5LXJlY29tIFtjbGFzcyo9Imljb24iXQ=='), __hyB64('I2NsYXNzaWZ5LXJlY29tIFtjbGFzcyo9Ikljb24iXQ=='), __hyB64('I2NsYXNzaWZ5LXJlY29tIFtjbGFzcyo9InBpYyJd'), __hyB64('I2NsYXNzaWZ5LXJlY29tIFtjbGFzcyo9IlBpYyJd'), __hyB64('LmNsYXNzaWZ5LXJlY29tIFtjbGFzcyo9ImNvdmVyIl0='), __hyB64('LmNsYXNzaWZ5LXJlY29tIFtjbGFzcyo9InRodW1iIl0='), __hyB64('LmNsYXNzaWZ5LXJlY29tIFtjbGFzcyo9Imljb24iXQ=='), __hyB64('I3JlY29tLWxpc3QgbGkgaW1nOm5vdCgubG9hZGluZyk='), __hyB64('I3JlY29tLWxpc3QgbGkgW2NsYXNzKj0iY292ZXIiXQ=='), __hyB64('I3JlY29tLWxpc3QgbGkgW2NsYXNzKj0idGh1bWIiXQ=='), __hyB64('I3JlY29tLWxpc3QgbGkgW2NsYXNzKj0iaWNvbiJd') ] }, { key: 'block_room_below_category_recommend_names', name:__hyB64('5bGP6JS95LiL5pa55o6o6I2Q5YiG57G75ZCN56ew'), selectors: [ __hyB64('W2RhdGEtaHktY29udHJvbC1ibG9jaz0icm9vbV9iZWxvd19jYXRlZ29yeV9yZWNvbW1lbmRfbmFtZXMiXQ=='), __hyB64('I2NsYXNzaWZ5LXJlY29tIFtjbGFzcyo9Im5hbWUiXQ=='), __hyB64('I2NsYXNzaWZ5LXJlY29tIFtjbGFzcyo9Ik5hbWUiXQ=='), __hyB64('I2NsYXNzaWZ5LXJlY29tIFtjbGFzcyo9ImNhdGVnb3J5LW5hbWUiXQ=='), __hyB64('I2NsYXNzaWZ5LXJlY29tIFtjbGFzcyo9IkNhdGVnb3J5TmFtZSJd'), __hyB64('I2NsYXNzaWZ5LXJlY29tIFtjbGFzcyo9ImdhbWUtbmFtZSJd'), __hyB64('I2NsYXNzaWZ5LXJlY29tIFtjbGFzcyo9IkdhbWVOYW1lIl0='), __hyB64('I2NsYXNzaWZ5LXJlY29tIFtjbGFzcyo9InJvb20tbmFtZSJd'), __hyB64('I2NsYXNzaWZ5LXJlY29tIFtjbGFzcyo9IlJvb21OYW1lIl0='), __hyB64('LmNsYXNzaWZ5LXJlY29tIFtjbGFzcyo9Im5hbWUiXQ=='), __hyB64('LmNsYXNzaWZ5LXJlY29tIFtjbGFzcyo9Ik5hbWUiXQ=='), __hyB64('LmNsYXNzaWZ5LXJlY29tIFtjbGFzcyo9ImNhdGVnb3J5LW5hbWUiXQ=='), __hyB64('I3JlY29tLWxpc3QgW2NsYXNzKj0ibmFtZSJd'), __hyB64('I3JlY29tLWxpc3QgW2NsYXNzKj0iTmFtZSJd') ] }, { key: 'block_room_below_category_recommend_status_badges', name:__hyB64('5bGP6JS95LiL5pa55o6o6I2Q5YiG57G754q25oCB6KeS5qCH'), selectors: [ __hyB64('W2RhdGEtaHktY29udHJvbC1ibG9jaz0icm9vbV9iZWxvd19jYXRlZ29yeV9yZWNvbW1lbmRfc3RhdHVzX2JhZGdlcyJd'), __hyB64('I2NsYXNzaWZ5LXJlY29tICNyZWNvbS1saXN0IGxpIFtjbGFzcyo9ImxpdmUiXTpub3QoW2NsYXNzKj0ibG9hZGluZyJdKTpub3QoW2NsYXNzKj0iTG9hZGluZyJdKTpub3QoW2NsYXNzKj0iZW1wdHkiXSk6bm90KFtjbGFzcyo9IkVtcHR5Il0p'), __hyB64('I2NsYXNzaWZ5LXJlY29tICNyZWNvbS1saXN0IGxpIFtjbGFzcyo9IkxpdmUiXTpub3QoW2NsYXNzKj0iTG9hZGluZyJdKTpub3QoW2NsYXNzKj0iRW1wdHkiXSk='), __hyB64('I2NsYXNzaWZ5LXJlY29tICNyZWNvbS1saXN0IGxpIFtjbGFzcyo9InN0YXR1cyJdOm5vdChbY2xhc3MqPSJsb2FkaW5nIl0pOm5vdChbY2xhc3MqPSJMb2FkaW5nIl0pOm5vdChbY2xhc3MqPSJlbXB0eSJdKTpub3QoW2NsYXNzKj0iRW1wdHkiXSk='), __hyB64('I2NsYXNzaWZ5LXJlY29tICNyZWNvbS1saXN0IGxpIFtjbGFzcyo9IlN0YXR1cyJdOm5vdChbY2xhc3MqPSJMb2FkaW5nIl0pOm5vdChbY2xhc3MqPSJFbXB0eSJdKQ=='), __hyB64('I2NsYXNzaWZ5LXJlY29tICNyZWNvbS1saXN0IGxpIFtjbGFzcyo9ImJhZGdlIl06bm90KFtjbGFzcyo9ImxvYWRpbmciXSk6bm90KFtjbGFzcyo9IkxvYWRpbmciXSk6bm90KFtjbGFzcyo9ImVtcHR5Il0pOm5vdChbY2xhc3MqPSJFbXB0eSJdKQ=='), __hyB64('I2NsYXNzaWZ5LXJlY29tICNyZWNvbS1saXN0IGxpIFtjbGFzcyo9IkJhZGdlIl06bm90KFtjbGFzcyo9IkxvYWRpbmciXSk6bm90KFtjbGFzcyo9IkVtcHR5Il0p'), __hyB64('I2NsYXNzaWZ5LXJlY29tICNyZWNvbS1saXN0IGxpIFtjbGFzcyo9InRhZyJdOm5vdChbY2xhc3MqPSJsb2FkaW5nIl0pOm5vdChbY2xhc3MqPSJMb2FkaW5nIl0pOm5vdChbY2xhc3MqPSJlbXB0eSJdKTpub3QoW2NsYXNzKj0iRW1wdHkiXSk='), __hyB64('I2NsYXNzaWZ5LXJlY29tICNyZWNvbS1saXN0IGxpIFtjbGFzcyo9IlRhZyJdOm5vdChbY2xhc3MqPSJMb2FkaW5nIl0pOm5vdChbY2xhc3MqPSJFbXB0eSJdKQ=='), __hyB64('LmNsYXNzaWZ5LXJlY29tICNyZWNvbS1saXN0IGxpIFtjbGFzcyo9InN0YXR1cyJdOm5vdChbY2xhc3MqPSJsb2FkaW5nIl0pOm5vdChbY2xhc3MqPSJMb2FkaW5nIl0pOm5vdChbY2xhc3MqPSJlbXB0eSJdKTpub3QoW2NsYXNzKj0iRW1wdHkiXSk='), __hyB64('I3JlY29tLWxpc3QgbGkgW2NsYXNzKj0iYmFkZ2UiXTpub3QoW2NsYXNzKj0ibG9hZGluZyJdKTpub3QoW2NsYXNzKj0iTG9hZGluZyJdKTpub3QoW2NsYXNzKj0iZW1wdHkiXSk6bm90KFtjbGFzcyo9IkVtcHR5Il0p') ] }, { key: 'block_room_below_category_recommend_view_counts', name:__hyB64('5bGP6JS95LiL5pa55o6o6I2Q5YiG57G75Lq65pWw'), selectors: [ __hyB64('W2RhdGEtaHktY29udHJvbC1ibG9jaz0icm9vbV9iZWxvd19jYXRlZ29yeV9yZWNvbW1lbmRfdmlld19jb3VudHMiXQ=='), __hyB64('I2NsYXNzaWZ5LXJlY29tIFtjbGFzcyo9InZpZXdlciJd'), __hyB64('I2NsYXNzaWZ5LXJlY29tIFtjbGFzcyo9IlZpZXdlciJd'), __hyB64('I2NsYXNzaWZ5LXJlY29tIFtjbGFzcyo9Im9ubGluZSJd'), __hyB64('I2NsYXNzaWZ5LXJlY29tIFtjbGFzcyo9Ik9ubGluZSJd'), __hyB64('I2NsYXNzaWZ5LXJlY29tIFtjbGFzcyo9ImhlYXQiXQ=='), __hyB64('I2NsYXNzaWZ5LXJlY29tIFtjbGFzcyo9IkhlYXQiXQ=='), __hyB64('I2NsYXNzaWZ5LXJlY29tIFtjbGFzcyo9ImhvdCJd'), __hyB64('I2NsYXNzaWZ5LXJlY29tIFtjbGFzcyo9IkhvdCJd'), __hyB64('I2NsYXNzaWZ5LXJlY29tIFtjbGFzcyo9ImNvdW50Il0='), __hyB64('I2NsYXNzaWZ5LXJlY29tIFtjbGFzcyo9IkNvdW50Il0='), __hyB64('LmNsYXNzaWZ5LXJlY29tIFtjbGFzcyo9InZpZXdlciJd'), __hyB64('LmNsYXNzaWZ5LXJlY29tIFtjbGFzcyo9Im9ubGluZSJd'), __hyB64('LmNsYXNzaWZ5LXJlY29tIFtjbGFzcyo9ImhlYXQiXQ=='), __hyB64('I3JlY29tLWxpc3QgW2NsYXNzKj0idmlld2VyIl0='), __hyB64('I3JlY29tLWxpc3QgW2NsYXNzKj0ib25saW5lIl0='), __hyB64('I3JlY29tLWxpc3QgW2NsYXNzKj0iaGVhdCJd') ] }, { key: 'block_room_below_category_recommend_actions', name:__hyB64('5bGP6JS95LiL5pa55o6o6I2Q5YiG57G75pON5L2c5YWl5Y+j'), selectors: [ __hyB64('W2RhdGEtaHktY29udHJvbC1ibG9jaz0icm9vbV9iZWxvd19jYXRlZ29yeV9yZWNvbW1lbmRfYWN0aW9ucyJd'), __hyB64('I2NsYXNzaWZ5LXJlY29tIFtjbGFzcyo9Im1vcmUiXQ=='), __hyB64('I2NsYXNzaWZ5LXJlY29tIFtjbGFzcyo9Ik1vcmUiXQ=='), __hyB64('I2NsYXNzaWZ5LXJlY29tIFtjbGFzcyo9InJlZnJlc2giXQ=='), __hyB64('I2NsYXNzaWZ5LXJlY29tIFtjbGFzcyo9IlJlZnJlc2giXQ=='), __hyB64('I2NsYXNzaWZ5LXJlY29tIFtjbGFzcyo9ImNoYW5nZSJd'), __hyB64('I2NsYXNzaWZ5LXJlY29tIFtjbGFzcyo9IkNoYW5nZSJd'), __hyB64('I2NsYXNzaWZ5LXJlY29tIFtjbGFzcyo9ImFjdGlvbiJd'), __hyB64('I2NsYXNzaWZ5LXJlY29tIFtjbGFzcyo9IkFjdGlvbiJd'), __hyB64('LmNsYXNzaWZ5LXJlY29tIFtjbGFzcyo9Im1vcmUiXQ=='), __hyB64('LmNsYXNzaWZ5LXJlY29tIFtjbGFzcyo9InJlZnJlc2giXQ=='), __hyB64('I3JlY29tLWxpc3QgW2NsYXNzKj0ibW9yZSJd'), __hyB64('I3JlY29tLWxpc3QgW2NsYXNzKj0icmVmcmVzaCJd'), __hyB64('I3JlY29tLWxpc3QgW2NsYXNzKj0iY2hhbmdlIl0='), __hyB64('I3JlY29tLWxpc3QgW2NsYXNzKj0iYWN0aW9uIl0=') ] }, { key: 'block_room_below_category_recommend_hover_overlay', name:__hyB64('5bGP6JS95LiL5pa55o6o6I2Q5YiG57G75oKs5rWu5rWu5bGC'), selectors: [ __hyB64('W2RhdGEtaHktY29udHJvbC1ibG9jaz0icm9vbV9iZWxvd19jYXRlZ29yeV9yZWNvbW1lbmRfaG92ZXJfb3ZlcmxheSJd'), __hyB64('I2NsYXNzaWZ5LXJlY29tICNyZWNvbS1saXN0IGxpIFtjbGFzcyo9ImhvdmVyIl06bm90KFtjbGFzcyo9ImxvYWRpbmciXSk6bm90KFtjbGFzcyo9IkxvYWRpbmciXSk6bm90KFtjbGFzcyo9InNrZWxldG9uIl0pOm5vdChbY2xhc3MqPSJTa2VsZXRvbiJdKQ=='), __hyB64('I2NsYXNzaWZ5LXJlY29tICNyZWNvbS1saXN0IGxpIFtjbGFzcyo9IkhvdmVyIl06bm90KFtjbGFzcyo9IkxvYWRpbmciXSk6bm90KFtjbGFzcyo9IlNrZWxldG9uIl0p'), __hyB64('I2NsYXNzaWZ5LXJlY29tICNyZWNvbS1saXN0IGxpIFtjbGFzcyo9InByZXZpZXciXTpub3QoW2NsYXNzKj0ibG9hZGluZyJdKTpub3QoW2NsYXNzKj0iTG9hZGluZyJdKTpub3QoW2NsYXNzKj0ic2tlbGV0b24iXSk6bm90KFtjbGFzcyo9IlNrZWxldG9uIl0p'), __hyB64('I2NsYXNzaWZ5LXJlY29tICNyZWNvbS1saXN0IGxpIFtjbGFzcyo9IlByZXZpZXciXTpub3QoW2NsYXNzKj0iTG9hZGluZyJdKTpub3QoW2NsYXNzKj0iU2tlbGV0b24iXSk='), __hyB64('I2NsYXNzaWZ5LXJlY29tICNyZWNvbS1saXN0IGxpIFtjbGFzcyo9Im92ZXJsYXkiXTpub3QoW2NsYXNzKj0ibG9hZGluZyJdKTpub3QoW2NsYXNzKj0iTG9hZGluZyJdKTpub3QoW2NsYXNzKj0ic2tlbGV0b24iXSk6bm90KFtjbGFzcyo9IlNrZWxldG9uIl0p'), __hyB64('I2NsYXNzaWZ5LXJlY29tICNyZWNvbS1saXN0IGxpIFtjbGFzcyo9Ik92ZXJsYXkiXTpub3QoW2NsYXNzKj0iTG9hZGluZyJdKTpub3QoW2NsYXNzKj0iU2tlbGV0b24iXSk='), __hyB64('I2NsYXNzaWZ5LXJlY29tICNyZWNvbS1saXN0IGxpIFtjbGFzcyo9Im1hc2siXTpub3QoW2NsYXNzKj0ibG9hZGluZyJdKTpub3QoW2NsYXNzKj0iTG9hZGluZyJdKTpub3QoW2NsYXNzKj0ic2tlbGV0b24iXSk6bm90KFtjbGFzcyo9IlNrZWxldG9uIl0p'), __hyB64('I2NsYXNzaWZ5LXJlY29tICNyZWNvbS1saXN0IGxpIFtjbGFzcyo9InBvcCJdOm5vdChbY2xhc3MqPSJsb2FkaW5nIl0pOm5vdChbY2xhc3MqPSJMb2FkaW5nIl0pOm5vdChbY2xhc3MqPSJza2VsZXRvbiJdKTpub3QoW2NsYXNzKj0iU2tlbGV0b24iXSk='), __hyB64('I2NsYXNzaWZ5LXJlY29tICNyZWNvbS1saXN0IGxpIFtjbGFzcyo9InRvb2x0aXAiXTpub3QoW2NsYXNzKj0ibG9hZGluZyJdKTpub3QoW2NsYXNzKj0iTG9hZGluZyJdKTpub3QoW2NsYXNzKj0ic2tlbGV0b24iXSk6bm90KFtjbGFzcyo9IlNrZWxldG9uIl0p'), __hyB64('LmNsYXNzaWZ5LXJlY29tICNyZWNvbS1saXN0IGxpIFtjbGFzcyo9Im92ZXJsYXkiXTpub3QoW2NsYXNzKj0ibG9hZGluZyJdKTpub3QoW2NsYXNzKj0iTG9hZGluZyJdKTpub3QoW2NsYXNzKj0ic2tlbGV0b24iXSk6bm90KFtjbGFzcyo9IlNrZWxldG9uIl0p'), __hyB64('I3JlY29tLWxpc3QgbGkgW2NsYXNzKj0icHJldmlldyJdOm5vdChbY2xhc3MqPSJsb2FkaW5nIl0pOm5vdChbY2xhc3MqPSJMb2FkaW5nIl0pOm5vdChbY2xhc3MqPSJza2VsZXRvbiJdKTpub3QoW2NsYXNzKj0iU2tlbGV0b24iXSk=') ] } ]; const CONTROL_BLOCK_REGIONS = [ { key: 'region_header', name:__hyB64('6aG16Z2i6aG26YOo'), desc:__hyB64('566h55CG6aG16Z2i6aG26YOo5YWl5Y+j5ZKM54q25oCB5pi+56S6'), childKeys: ['block_header_nav_home', 'block_header_nav_live', 'block_header_nav_category', 'block_header_nav_match', 'block_header_nav_video', 'block_header_nav_game', 'block_header_nav_trade', 'block_header_search', 'block_header_start_live', 'block_header_download', 'block_header_history', 'block_header_task', 'block_header_login', 'block_header_message', 'block_header_message_badge', 'block_header_user_avatar', 'block_header_user_name', 'block_header_user_menu'] }, { key: 'region_room_header', name:__hyB64('55u05pKt6Ze05aS06YOo'), desc:__hyB64('566h55CG55u05pKt6Ze05aS06YOo5L+h5oGv5pi+56S6'), childKeys: ['block_room_banner', 'block_room_match_label', 'block_anchor_follow', 'block_anchor_level', 'block_room_id', 'block_room_viewer_count', 'block_room_category', 'block_anchor_hour_rank', 'block_anchor_fans_rank'] }, { key: 'region_sidebar', name:__hyB64('5Y+z5L6n5qac5Y2VL+iBiuWkqeagjw=='), desc:__hyB64('566h55CG5Y+z5L6n5Yy65Z+f5YaF5a655ZKM6L6T5YWl5Yy65pi+56S6'), childKeys: ['block_sidebar_header', 'block_sidebar_tab_switcher', 'block_sidebar_rank_nav', 'block_sidebar_rank_content', 'block_sidebar_rank_avatars', 'block_sidebar_rank_user_names', 'block_sidebar_rank_values', 'block_sidebar_rank_numbers', 'block_sidebar_user_badges', 'block_sidebar_rank_noble_badges', 'block_sidebar_rank_guard_badges', 'block_sidebar_rank_fans_badges', 'block_sidebar_rank_level_badges', 'block_sidebar_match_notice', 'block_sidebar_chat_messages', 'block_sidebar_chat_fans_badges', 'block_sidebar_chat_level_badges', 'block_sidebar_chat_noble_effects', 'block_sidebar_chat_user_names', 'block_sidebar_chat_system_messages', 'block_sidebar_chat_enter_messages', 'block_sidebar_chat_notice_messages', 'block_sidebar_chat_noble_messages', 'block_sidebar_chat_guard_messages', 'block_sidebar_chat_subscribe_messages', 'block_sidebar_chat_gift_messages', 'block_sidebar_chat_manager_messages', 'block_sidebar_chat_lottery_messages', 'block_sidebar_chat_input', 'block_sidebar_chat_textarea', 'block_sidebar_chat_emoji_button', 'block_sidebar_chat_quick_buttons', 'block_sidebar_chat_input_identity_entry', 'block_sidebar_chat_input_tips', 'block_sidebar_chat_send_button', 'block_sidebar_chat_emoji_panel', 'block_sidebar_chat_quick_reply_panel', 'block_sidebar_chat_identity_panel', 'block_sidebar_chat_login_permission_tip', 'block_sidebar_chat_tool_popover'] }, { key: 'region_player', name:__hyB64('5pKt5pS+5Zmo'), desc:__hyB64('566h55CG5pKt5pS+5Zmo55S76Z2i44CB5o+Q56S65ZKM5o6n5Yi26aG55pi+56S6'), childKeys: ['block_player_danmu', 'block_player_danmu_button', 'block_player_refresh', 'block_player_report', 'block_player_login_tip', 'block_player_download_tip', 'block_player_network_notice', 'block_player_latency_notice', 'block_player_reconnect_notice', 'block_player_pause_loading_notice', 'block_player_quality_qrcode_notice', 'block_player_effect_settings', 'block_player_sound_button', 'block_player_sound_slider', 'block_player_quality_selector', 'block_player_fullpage_button', 'block_player_fullscreen_button', 'block_player_recommend_background', 'block_player_recommend_notice', 'block_player_recommend_big_card', 'block_player_recommend_list', 'block_player_recommend_home'] }, { key: 'region_gift', name:__hyB64('56S854mp5rS75Yqo'), desc:__hyB64('566h55CG56S854mp5Yy65Z+f5YWl5Y+j5ZKM54q25oCB5pi+56S6'), childKeys: ['block_gift_lucky_burst', 'block_gift_game_recommend', 'block_gift_box', 'block_gift_cart_activity', 'block_gift_confession_activity', 'block_gift_activity_countdown', 'block_gift_activity_benefit_tips', 'block_gift_more_activity', 'block_gift_week_star', 'block_gift_face_list', 'block_gift_face_item_icons', 'block_gift_face_item_names', 'block_gift_face_item_prices', 'block_gift_face_item_badges', 'block_gift_face_item_counts', 'block_gift_face_hover_detail', 'block_gift_face_combo_controls', 'block_gift_face_inventory_status', 'block_gift_face_send_button', 'block_gift_face_activity_badges_ext', 'block_gift_face_arrow', 'block_gift_first_charge', 'block_gift_recharge', 'block_gift_package', 'block_gift_guard', 'block_gift_noble'] }, { key: 'region_below', name:__hyB64('55u05pKt6Ze05LiL5pa5'), desc:__hyB64('566h55CG55u05pKt6Ze05LiL5pa55YaF5a655pi+56S6'), childKeys: ['block_room_below_match_cms', 'block_room_below_profile', 'block_room_below_recommend', 'block_room_below_recommend_cards', 'block_room_below_recommend_cover', 'block_room_below_recommend_titles', 'block_room_below_recommend_anchor_info', 'block_room_below_recommend_view_counts', 'block_room_below_recommend_tags', 'block_room_below_moments_nav', 'block_room_below_moments_content', 'block_room_below_union', 'block_room_below_you_like', 'block_room_below_category_recommend', 'block_room_below_category_recommend_items', 'block_room_below_category_recommend_title', 'block_room_below_category_recommend_icons', 'block_room_below_category_recommend_names', 'block_room_below_category_recommend_status_badges', 'block_room_below_category_recommend_view_counts', 'block_room_below_category_recommend_actions', 'block_room_below_category_recommend_hover_overlay'] } ]; const CONTROL_BLOCK_MAP = Object.fromEntries(CONTROL_BLOCKS.map(item => [item.key, item])); const LEGACY_CONTROL_BLOCK_MIGRATIONS = { block_header_nav: ['block_header_nav_home', 'block_header_nav_live', 'block_header_nav_category', 'block_header_nav_match', 'block_header_nav_video', 'block_header_nav_game', 'block_header_nav_trade', 'block_header_search', 'block_header_start_live', 'block_header_download', 'block_header_history', 'block_header_task', 'block_header_login', 'block_header_message', 'block_header_message_badge', 'block_header_user_avatar', 'block_header_user_name', 'block_header_user_menu'], block_header_nav_links: ['block_header_nav_home', 'block_header_nav_live', 'block_header_nav_category', 'block_header_nav_match', 'block_header_nav_video', 'block_header_nav_game', 'block_header_nav_trade'], block_header_actions: ['block_header_start_live', 'block_header_download', 'block_header_history', 'block_header_task', 'block_header_login', 'block_header_message', 'block_header_message_badge', 'block_header_user_avatar', 'block_header_user_name', 'block_header_user_menu'], block_top_banners: ['block_room_banner'], block_anchor_extras: ['block_anchor_follow', 'block_anchor_level', 'block_anchor_hour_rank', 'block_anchor_fans_rank'], block_anchor_ranks: ['block_anchor_hour_rank', 'block_anchor_fans_rank'], block_room_meta: ['block_room_id', 'block_room_viewer_count'], block_sidebar_rank: ['block_sidebar_header', 'block_sidebar_rank_nav', 'block_sidebar_rank_content', 'block_sidebar_rank_avatars', 'block_sidebar_rank_user_names', 'block_sidebar_rank_values', 'block_sidebar_rank_numbers', 'block_sidebar_user_badges', 'block_sidebar_rank_noble_badges', 'block_sidebar_rank_guard_badges', 'block_sidebar_rank_fans_badges', 'block_sidebar_rank_level_badges', 'block_sidebar_chat_messages'], block_sidebar_head: ['block_sidebar_header'], block_sidebar_tabs: ['block_sidebar_tab_switcher'], block_sidebar_match_schedule: ['block_sidebar_match_notice'], block_player_refresh_report: ['block_player_refresh', 'block_player_report'], block_player_tips: ['block_player_refresh', 'block_player_report', 'block_player_login_tip', 'block_player_download_tip', 'block_player_network_notice', 'block_player_latency_notice', 'block_player_reconnect_notice', 'block_player_pause_loading_notice', 'block_player_quality_qrcode_notice', 'block_player_effect_settings', 'block_player_recommend_background', 'block_player_recommend_notice', 'block_player_recommend_big_card', 'block_player_recommend_list', 'block_player_recommend_home'], block_player_recommend_cards: ['block_player_recommend_big_card', 'block_player_recommend_list', 'block_player_recommend_home'], block_gift_activity: ['block_gift_lucky_burst', 'block_gift_game_recommend', 'block_gift_box', 'block_gift_cart_activity', 'block_gift_confession_activity', 'block_gift_activity_countdown', 'block_gift_activity_benefit_tips', 'block_gift_more_activity', 'block_gift_recharge', 'block_gift_package', 'block_gift_guard', 'block_gift_noble'], block_gift_activity_icons: ['block_gift_cart_activity', 'block_gift_confession_activity'], block_gift_bar_full: ['block_gift_lucky_burst', 'block_gift_game_recommend', 'block_gift_box', 'block_gift_cart_activity', 'block_gift_confession_activity', 'block_gift_activity_countdown', 'block_gift_activity_benefit_tips', 'block_gift_more_activity', 'block_gift_week_star', 'block_gift_face_list', 'block_gift_face_item_icons', 'block_gift_face_item_names', 'block_gift_face_item_prices', 'block_gift_face_item_badges', 'block_gift_face_item_counts', 'block_gift_face_hover_detail', 'block_gift_face_combo_controls', 'block_gift_face_inventory_status', 'block_gift_face_send_button', 'block_gift_face_activity_badges_ext', 'block_gift_face_arrow', 'block_gift_first_charge', 'block_gift_recharge', 'block_gift_package', 'block_gift_guard', 'block_gift_noble'], block_gift_quick_bar: ['block_gift_lucky_burst', 'block_gift_game_recommend', 'block_gift_box', 'block_gift_cart_activity', 'block_gift_confession_activity', 'block_gift_more_activity'], block_gift_charge: ['block_gift_first_charge', 'block_gift_recharge', 'block_gift_package', 'block_gift_guard', 'block_gift_noble'], block_room_below_info: ['block_room_below_match_cms', 'block_room_below_profile', 'block_room_below_recommend', 'block_room_below_recommend_cards', 'block_room_below_recommend_cover', 'block_room_below_recommend_titles', 'block_room_below_recommend_anchor_info', 'block_room_below_recommend_view_counts', 'block_room_below_recommend_tags', 'block_room_below_moments_nav', 'block_room_below_moments_content', 'block_room_below_union', 'block_room_below_you_like', 'block_room_below_category_recommend', 'block_room_below_category_recommend_items', 'block_room_below_category_recommend_title', 'block_room_below_category_recommend_icons', 'block_room_below_category_recommend_names', 'block_room_below_category_recommend_status_badges', 'block_room_below_category_recommend_view_counts', 'block_room_below_category_recommend_actions', 'block_room_below_category_recommend_hover_overlay'] }; const LEGACY_CONTROL_BLOCK_KEYS = new Set(Object.keys(LEGACY_CONTROL_BLOCK_MIGRATIONS)); const INTERNAL_CONTROL_BLOCK_KEYS = new Set(['block_header_game_promo', 'block_header_activity_promo', 'block_player_popup_ad']); const ACTIVE_CONTROL_BLOCKS = CONTROL_BLOCKS.filter(item => !LEGACY_CONTROL_BLOCK_KEYS.has(item.key)); const ACTIVE_CONTROL_BLOCK_KEYS = new Set(ACTIVE_CONTROL_BLOCKS.map(item => item.key)); const INTERNAL_CONTROL_BLOCKS = ACTIVE_CONTROL_BLOCKS.filter(item => INTERNAL_CONTROL_BLOCK_KEYS.has(item.key)); const PUBLIC_CONTROL_BLOCKS = ACTIVE_CONTROL_BLOCKS.filter(item => !INTERNAL_CONTROL_BLOCK_KEYS.has(item.key)); const PUBLIC_CONTROL_BLOCK_KEYS = new Set(PUBLIC_CONTROL_BLOCKS.map(item => item.key)); const DYNAMIC_CONTROL_GROUP_SPECS = [ { prefixes: ['header_'], mark: markHeaderDynamicControls }, { names: ['room_match_label', 'room_id', 'room_viewer_count', 'room_category'], mark: markRoomHeaderDynamicControls }, { prefixes: ['sidebar_rank_'], mark: markSidebarRankDynamicControls }, { prefixes: ['sidebar_chat_'], mark: markSidebarDynamicControls }, { names: ['player_network_notice', 'player_latency_notice', 'player_reconnect_notice', 'player_pause_loading_notice', 'player_quality_qrcode_notice'], mark: markPlayerStatusDynamicControls }, { names: ['player_popup_ad'], mark: markPlayerAdDynamicControls }, { prefixes: ['gift_'], mark: markGiftDynamicControls }, { prefixes: ['room_below_recommend_'], mark: markBelowRecommendDynamicControls }, { prefixes: ['room_below_category_recommend_'], mark: markBelowCategoryRecommendDynamicControls } ]; const DYNAMIC_CONTROL_GROUPS = DYNAMIC_CONTROL_GROUP_SPECS.map(spec => ({ mark: spec.mark, keys: ACTIVE_CONTROL_BLOCKS .filter(item => item.selectors.some(selector => { const match = String(selector).match(/\[data-hy-control-block="([^"]+)"\]/); if (!match) return false; const name = match[1]; return (spec.names && spec.names.includes(name)) || (spec.prefixes && spec.prefixes.some(prefix => name.startsWith(prefix))); })) .map(item => item.key) })).filter(group => group.keys.length); function normalizeControlPresetKeys(keys) { const uniqueKeys = Array.from(new Set(keys)); const missingKeys = uniqueKeys.filter(key => !PUBLIC_CONTROL_BLOCK_KEYS.has(key)); if (missingKeys.length) console.warn('[HY] 推荐配置包含未知控件 key:', missingKeys.join(', ')); return uniqueKeys.filter(key => PUBLIC_CONTROL_BLOCK_KEYS.has(key)); } function normalizeSecretControlKeys(keys) { const uniqueKeys = Array.from(new Set(keys)); return uniqueKeys.filter(key => ACTIVE_CONTROL_BLOCK_KEYS.has(key)); } const CONTROL_PRESET_LIGHT_KEYS = normalizeControlPresetKeys([ 'block_header_start_live', 'block_header_download', 'block_header_task', 'block_player_login_tip', 'block_player_download_tip', 'block_player_recommend_notice', 'block_gift_lucky_burst', 'block_gift_game_recommend', 'block_gift_box', 'block_gift_cart_activity', 'block_gift_confession_activity', 'block_gift_activity_countdown', 'block_gift_activity_benefit_tips', 'block_gift_more_activity' ]); const SECRET_CONTROL_BLOCK_KEYS = normalizeSecretControlKeys([ 'block_header_game_promo', 'block_header_activity_promo', 'block_player_popup_ad' ]); const CONTROL_PRESET_STANDARD_KEYS = normalizeControlPresetKeys([ ...CONTROL_PRESET_LIGHT_KEYS, 'block_header_nav_game', 'block_header_nav_trade', 'block_header_history', 'block_room_banner', 'block_room_match_label', 'block_anchor_hour_rank', 'block_anchor_fans_rank', 'block_sidebar_rank_nav', 'block_sidebar_rank_content', 'block_sidebar_user_badges', 'block_sidebar_rank_noble_badges', 'block_sidebar_rank_guard_badges', 'block_sidebar_rank_fans_badges', 'block_sidebar_rank_level_badges', 'block_sidebar_match_notice', 'block_player_recommend_background', 'block_player_recommend_big_card', 'block_player_recommend_list', 'block_player_recommend_home', 'block_gift_week_star', 'block_gift_face_hover_detail', 'block_gift_face_combo_controls', 'block_gift_face_activity_badges_ext', 'block_room_below_recommend', 'block_room_below_recommend_cards', 'block_room_below_category_recommend' ]); const CONTROL_PRESET_STRONG_KEYS = normalizeControlPresetKeys([ ...CONTROL_PRESET_STANDARD_KEYS, 'block_header_message_badge', 'block_sidebar_rank_avatars', 'block_sidebar_rank_user_names', 'block_sidebar_rank_values', 'block_sidebar_rank_numbers', 'block_sidebar_chat_messages', 'block_sidebar_chat_fans_badges', 'block_sidebar_chat_level_badges', 'block_sidebar_chat_noble_effects', 'block_sidebar_chat_user_names', 'block_sidebar_chat_system_messages', 'block_sidebar_chat_enter_messages', 'block_sidebar_chat_notice_messages', 'block_sidebar_chat_noble_messages', 'block_sidebar_chat_guard_messages', 'block_sidebar_chat_subscribe_messages', 'block_sidebar_chat_gift_messages', 'block_sidebar_chat_manager_messages', 'block_sidebar_chat_lottery_messages', 'block_player_danmu', 'block_player_network_notice', 'block_player_latency_notice', 'block_player_reconnect_notice', 'block_player_pause_loading_notice', 'block_player_quality_qrcode_notice', 'block_gift_face_item_icons', 'block_gift_face_item_names', 'block_gift_face_item_prices', 'block_gift_face_item_badges', 'block_gift_face_item_counts', 'block_gift_face_inventory_status', 'block_room_below_recommend_cover', 'block_room_below_recommend_titles', 'block_room_below_recommend_anchor_info', 'block_room_below_recommend_view_counts', 'block_room_below_recommend_tags', 'block_room_below_category_recommend_items', 'block_room_below_category_recommend_title', 'block_room_below_category_recommend_icons', 'block_room_below_category_recommend_names', 'block_room_below_category_recommend_status_badges', 'block_room_below_category_recommend_view_counts', 'block_room_below_category_recommend_actions', 'block_room_below_category_recommend_hover_overlay' ]); const CONTROL_PRESETS = [ { key: 'light', name: '轻度', keys: CONTROL_PRESET_LIGHT_KEYS }, { key: 'standard', name: '标准', keys: CONTROL_PRESET_STANDARD_KEYS }, { key: 'strong', name: '强力', keys: CONTROL_PRESET_STRONG_KEYS } ]; const ONE_TIME_CONTROL_BLOCK_MIGRATIONS = [ { markerKey: '__migrated_block_gift_face_arrow_20260610', sourceKey: 'block_gift_face_list', childKeys: ['block_gift_face_arrow'] }, { markerKey: '__migrated_block_sidebar_chat_input_split_20260610', sourceKey: 'block_sidebar_chat_input', childKeys: ['block_sidebar_chat_textarea', 'block_sidebar_chat_emoji_button', 'block_sidebar_chat_quick_buttons', 'block_sidebar_chat_input_identity_entry', 'block_sidebar_chat_input_tips', 'block_sidebar_chat_send_button'] }, { markerKey: '__migrated_block_sidebar_chat_system_split_20260610', sourceKey: 'block_sidebar_chat_system_messages', childKeys: ['block_sidebar_chat_enter_messages', 'block_sidebar_chat_notice_messages', 'block_sidebar_chat_noble_messages', 'block_sidebar_chat_guard_messages', 'block_sidebar_chat_subscribe_messages'] }, { markerKey: '__migrated_block_sidebar_chat_interaction_split_20260611', sourceKey: 'block_sidebar_chat_system_messages', childKeys: ['block_sidebar_chat_gift_messages', 'block_sidebar_chat_manager_messages', 'block_sidebar_chat_lottery_messages'] }, { markerKey: '__migrated_block_sidebar_chat_input_popovers_20260610', sourceKey: 'block_sidebar_chat_emoji_button', childKeys: ['block_sidebar_chat_emoji_panel'] }, { markerKey: '__migrated_block_sidebar_chat_quick_popovers_20260610', sourceKey: 'block_sidebar_chat_quick_buttons', childKeys: ['block_sidebar_chat_quick_reply_panel', 'block_sidebar_chat_tool_popover'] }, { markerKey: '__migrated_block_sidebar_chat_identity_popover_20260610', sourceKey: 'block_sidebar_chat_input_identity_entry', childKeys: ['block_sidebar_chat_identity_panel'] }, { markerKey: '__migrated_block_sidebar_chat_login_permission_tip_20260610', sourceKey: 'block_sidebar_chat_input_tips', childKeys: ['block_sidebar_chat_login_permission_tip'] } ]; let controlBlockStyleEl = null; const DYNAMIC_CONTROL_ATTR = 'data-hy-control-block'; const KEEP_VISIBLE_ATTR = 'data-hy-keep-visible'; const KEEP_VISIBLE_SELECTOR = '[' + KEEP_VISIBLE_ATTR + ']'; function getJQ() { return _w.jQuery || _w.$ || window.jQuery || window.$; } loadStore(); migrateLegacyControlBlocks(); detectTheme(); injectUICSS(); setupStorageSync(); let domInited = false; function initDOM() { if (domInited) return; domInited = true; applyAll(); if (document.body) observer.observe(document.body, { childList: true, subtree: true }); hookSPA(); createUI(); QualityUnlocker.onListChange = updateQualityOptions; if (isScriptEnabled() && getVal('quality_mode', 'off') !== 'off') QualityUnlocker.waitForPlayer(); if (window.matchMedia) { const mql = window.matchMedia('(prefers-color-scheme: light)'); const onThemeChange = () => detectTheme(); if (mql.addEventListener) mql.addEventListener('change', onThemeChange); else if (mql.addListener) mql.addListener(onThemeChange); } } if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', initDOM); else initDOM(); try { GM_registerMenuCommand('打开设置', openPanel); } catch (e) {} })();