跳到主要内容
18+ 0597.ai PREMIUM VIDEO DIRECTORY
个人中心
视频首页 热播排行
视频一区
视频一区全部分类 查看全部
精品推荐 主播秀色 日本有码 日本无码 中文字幕 童颜巨乳 性感人妻 强奸乱伦
视频二区
视频二区全部分类 查看全部
欧美情色 三级伦理 卡通动漫 丝袜OL 自拍偷拍 日本片商 剧情介绍 网曝系列
视频三区
视频三区全部分类 查看全部
同性恋 探花嫖娼 国产人妻 国产SM 国产丝袜 麻豆传媒 国产乱伦 明星换脸
视频四区
视频四区全部分类 查看全部
主奴调教 凌辱快感 多人群交 角色剧情 港台辣妹 重口性癖 变性伪娘 VR视角
group-
è8�
i¥="mega-
è8-2-fécåerå1o�e­rOseohaii è8-2-féc> i-fécåea > i¥="mega-
è8-2-fécåerå1o�e­rOseohaii è8-2-féc> i-fécåea > i¥="mega-
è8-2-fécåerå1o�e­rOseohaii è8-2-féc> i-fécåea > i¥=" 59">国产ååŸi¶aY»X,u6e 6leås" pe=53" i¥="m i-fécåea > i¥="
i¥="me6leås" pe=53" i¥i¥="me6lelsto i¥i¥="me6lelsto 2f|’�›t i-fémeta propert
-fé i¥=" >c/lu¡e6lelåå®=t( declare• äY"isuisu
i¥="megixeldoctype crollToh
-down"> > i¥= i¥="megixeldoctyp5> i¥= i¥="megixeldoctyp5> i¥= i¥="megixeldoctyp5> i¥= i¥="megixeldoctyp5> i¥= group- º=b的按a>dp3?sub_utspoken inrastss="mega-meåu"> groupعنه in ·³到主èeå|š)- º=b的按 -bottomtlcrxi¾Žä‰ -bo�v:c حولdiv class="shell 麻豆ä¼P{¬番ææ3"i�ƒ·i‰‡4小时 第1集 i-fémeta propert:rkhvg¨线¼P{¬畕ªææ3"i�ƒ fã0.u0> oleyw º=b皹Ÿ-åmffH a>dp3?link rel="icon" href="/static/favicon.svg" type="image/svg+xmla>dp3?link rel="stylesheet" href="/static/output2.css?v=202607212334a>dp3?link rel="stylesheet" href="/static/style.css?v=202607212334a>dp3?link rel="stylesheet" href="/static/ui-redesign.css?v=20260726-ui7a>dp3?link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.cssa>dp3 跳到主要内容dp3?header class="site-headera>dp3?div class="shell header-maina>dp3p3?a class="brand" href="/" aria-label="º=b的æ 首页a>dp3p3 18+dp3p3 dp3p3 dp3p3 dp3p3 dp3p3ddp3p3
dp3p3 dp3p3p3?div id="notLoggedIn" class="auth-actions">dp3p3 dp3p3 dp3p3
dp3p3
dp3p3 dp3p3 p3?div id="userMenuPanel" class="user-menu-panel" hidden>dp3p3 p3?a href="/user/profile">个人中心d dp3p3
dp3p3
dp3p3
dp3
ddp3?div class="primary-row">dp3p3
dp3p3 视频首页d 热播排行d d d d ?div class="nav-group">dp3p3 3?a href="/list/1">dp3p3 3 视频一区dp3p3 dp3p3 dp3p3 dp3p3
dp3p3
dp3p3 视频一区全部分类Œ‰b>dp3p3 3?a href="/list/1">查看全部dp3p3 p3
dp333333333
dp3p3 dp3p3 ?a href="/list/1?sub_type=41">精品推荐dp3p3 p3 dp3p3 ?a href="/list/1?sub_type=42">主播秀色dp3p3 p3 dp3p3 ?a href="/list/1?sub_type=43">日本有码dp3p3 p3 dp3p3 ?a href="/list/1?sub_type=44">日本无码dp3p3 p3 dp3p3 ?a href="/list/1?sub_type=45">中文字幕dp3p3 p3 dp3p3 ?a href="/list/1?sub_type=46">童颜巨乳dp3p3 p3 dp3p3 ?a href="/list/1?sub_type=47">性感a>dp3?dp3p3 p3 dp3p3 ?a href="/list/1?sub_type=48">强奸乱伦dp3p3 p3 dp3p3
dp3333333
dp3333333dp3p3
dp33333dp33333dp33333dp33333?div class="nav-group">dp3p3 3?a href="/list/2">dp3p3 3 视频二区dp3p3 dp3p3 dp3p3 dp3p3
dp3p3
dp3p3 视频二区全部分类Œ‰b>dp3p3 3?a href="/list/2">查看全部dp3p3 p3
dp333333333
dp3p3 dp3p3 ?a href="/list/2?sub_type=49">欧美情色dp3p3 p3 dp3p3 ?a href="/list/2?sub_type=50">三级伦理dp3p3 p3 dp3p3 ?a href="/list/2?sub_type=51">卡通动漫dp3p3 p3 dp3p3 ?a href="/list/2?sub_type=52">丝袜OLdp3p3 p3 dp3p3 ?a href="/list/2?sub_type=53">自拍偷拍dp3p3 p3 dp3p3 ?a href="/list/2?sub_type=54">日本片商dp3p3 p3 dp3p3 ?a href="/list/2?sub_type=55">剧情介绍dp3p3 p3 dp3p3 ?a href="/list/2?sub_type=56">网曝系列dp3p3 p3 dp3p3
dp3333333
dp3333333dp33333
dp33333dp33333dp33333dp33333
dp3p3 3?a href="/list/3">dp3p3 3 视频三区dp3p3 dp3p3 dp3p3 dp3p3
dp3p3
dp3p3 视频三区全部分类Œ‰b>dp3p3 3?a href="/list/3">查看全部dp3p3 p3
dp333333333
dp3p3 dp3p3 ?a href="/list/3?sub_type=57">同性恋dp3p3 p3 dp3p3 ?a href="/list/3?sub_type=58">探花嫖娼dp3p3 p3 dp3p3 ?a href="/list/3?sub_type=59">国产a>dp3?dp3p3 p3 dp3p3 ?a href="/list/3?sub_type=60">国产SMdp3p3 p3 dp3p3 ?a href="/list/3?sub_type=61">国产丝袜dp3p3 p3 dp3p3 ?a href="/list/3?sub_type=62">麻豆传媒dp3p3 p3 dp3p3 ?a href="/list/3?sub_type=63">国产a¹±伦dp3p3 p3 dp3p3 ?a href="/list/3?sub_type=64">明星换脸dp3p3 p3 dp3p3
dp3333333
dp3333333dp33333
dp33333dp33333dp33333dp33333
dp3p3 3?a href="/list/4">dp3p3 3 视频四区dp3p3 dp3p3 dp3p3 dp3p3
dp3p3
dp3p3 视频四区全部分类Œ‰b>dp3p3 3?a href="/list/4">查看全部dp3p3 p3
dp333333333
dp3p3 dp3p3 ?a href="/list/4?sub_type=65">主奴调教dp3p3 p3 dp3p3 ?a href="/list/4?sub_type=66">凌辱快感dp3p3 p3 dp3p3 ?a href="/list/4?sub_type=67">多人群交dp3p3 p3 dp3p3 ?a href="/list/4?sub_type=68">主èeå剧情dp3p3 p3 dp3p3 ?a href="/list/4?sub_type=69">港台辣妹dp3p3 p3 dp3p3 ?a href="/list/4?sub_type=70">重口性癖dp3p3 p3 dp3p3 ?a href="/list/4?sub_type=71">变性伪娘dp3p3 p3 dp3p3 ?a href="/list/4?sub_type=72">VR视角dp3p3 p3 dp3p3
dp3333333
dp3333333dp33333
dp33333dp33333dp33333dp33333
dp3p3 ?a href="/list/40">dp3p3 玉兔资源dp3p3 dp3p3 dp3p3 dp3p3
dp3p3
dp3p3 玉兔资源全部分类Œ‰b>dp3p3 3?a href="/list/40">查看全部dp3p3 p3
dp333333333
dp3p3 dp3p3 ?a href="/list/40?sub_type=73">国产精品dp3p3 p3 dp3p3
dp3333333
dp3333333dp3p3
dp33333dp33333中国频道dp3p3 日韩频道dp3p3 欧美频道dp3p3 剧情伦理dp3p3 动漫频道dp3p3 另类专区dp3p3 dp3p3 dp3p3 搜索视频dp3p3 dp3p3 我的收藏dp3p3
dp3
d ddp3?main id="main-.u0>dp3p3
" data-video-poster="https://sbzytpimg5.com:3519/upload/vod/20260410-1/fed0a3d4e2107e09f8e4b25d4c3fb936.jpg" data-video-year="" data-video-class="强奸乱伦" data-episode-••ªææ3çleyw º" data-play-source="0" data-play-index="0" data-need-vip="0" data-fallback-url="https://lsbbf10.com/20260409/RY4sI0St/index.m3u8">
d
dp3
dp3p3?a href="/">首页/dp3p3 group- º=b的按a>dp3?sub_utspoken inrastss="mega-meåu"> /dp3p3a> dp3
d p3?header class="player-heading">dp3p3
dp33333NOW PLAYING ·ه in ·dp3p3 group- º=b的按a>dp3?sub_utspoken inrastss="mega-meåu"> ·时 第1dp33333

a> 地址和 VIP 权限由站点接口实时验证。

dp333
d 3p3dp3 d
dp3p3?div class="access-message" id="playerLoading">dp3p3p3
dp33333 dp3p3

正在验证a> 权限

dp3p3

验证完成后自动载入a> 器。

dp33333
d 3p3
d 3d p3?div class="episode-controls">dp3p3d 3p3 上一¬¬1dp3p3d 3p3当前a> :ç¶ 第1dp3p3d 3p3下一¬¬1 dp3p3d 3ddp3?div class="player-toolbar">dp3p3?p class="data-note">a> 记录、收藏和点赞仅写入当前aµ�览器;VIP 状态由服务器返回。

dp333?div class="detail-actions">dp3p3 " 3 data-video-poster="https://sbzytpimg5.com:3519/upload/vod/20260410-1/fed0a3d4e2107e09f8e4b25d4c3fb936.jpg" 3 data-video-url="/detail/6a52349b54c89c6b9865f119"t 3 本机收藏dp3p3 dp3p3p3?button class="local-action" type="button" data-video-like data-video-id="6a52349b54c89c6b9865f119"t 3 本机点赞dp3p3 dp3p3p3?button class="secondary-button" type="button" data-share- -bot megt0€ttp"oæ³东-lastss=¼ioŒte from d megt0€ttp"oæ³Fç3‹主èeå|š)- º=bç2�cr¶ 第1集k
"t 3 分享dp3p3p3?/button>dp3p3d 3ddp3?details class=".u0>dp3p3dp3p3 a> 源与剧é¬1dp3p3 ‡ in · ·时 第1dp3p3 dp3p3dp3p3?div class="source-switcher-cu0>dp3p3?div class="source-tabs" role="tablist" aria-label="a> 源">dp3p3p3d 3p3p3?buttond 3p3p3 id="playerSourceTab0" 3 class="source-tab" 3 type="button" 3 role="tab" 3 data-source-index="0" aria-selected="true" aria-controls="playerSourcePanel0">dp3p3 ‡ in · dp3p3 ddp3p3d 3p3d 3p3
dp3p3
dp3p3 p3d 3p3p3 dp3p3 çleyw ºdp3p3 p3dp3p3 p3d 3p3p3
d 3p3
d 3p3 p3p3d 3ddp3ddp3?dl class="meta-grid">dp3p3
语言
未知
d 3p3
类型
强奸乱伦
d 3p3
地区
未知
d 3p3
年份
未知
d 3ddp3
dp3p3
dp3p3

相关推荐

同分类内容继续aµ�览

d 3p3 dp3
d 3p3dp3
dp3p3 dp3p3
dp3p3 3?a href="/detail/6ae05e163237f1729dcda954">dp3p3 3
dp3p3 3 DASS826我的妻子不可能被我的女朋友们NTR百永纱里奈ダスッ!真咲南朋黑川纱里奈,美咲佳奈封面dp3p3 3 dp3p3 3 2026dp3p3 3
d 3p3p3p3

DASS826我的妻子不可能被我的女朋友们NTR百永纱里奈ダスッ!真咲南朋黑川纱里奈,美咲佳奈

dp3p3 3
dp3p3 3 强奸乱伦dp3p3 持续更新dp3p3 3
d 3p3p3p3
dp3p3
dp3p3 dp3p3
dp3p3 3?a href="/detail/6ae05e163237f1729dcda95e">dp3p3 3
dp3p3 3 DASS808美丽母女,我享用了。来拜访数十年前让她怀孕的女人ダスッ!太宰珍歩川上しずく,推川悠里封面dp3p3 3 dp3p3 3 2026dp3p3 3
d 3p3p3p3

DASS808美丽母女,我享用了。来拜访数十年前让她怀孕的女人ダスッ!太宰珍歩川上しずく,推川悠里

dp3p3 3
dp3p3 3 强奸乱伦dp3p3 持续更新dp3p3 3
d 3p3p3p3dp3p3
dp3p3 dp3p3
dp3p3 3?a href="/detail/6ae05e163237f1729dcda968">dp3p3 3
dp3p3 3 DLDSS449一位天生温柔的妻子不小心忘了带伞,却被一件湿漉漉的透明长DAHLIA吉ヤル三小花暖封面dp3p3 3 dp3p3 3 2026dp3p3 3
d 3p3p3p3

DLDSS449一位天生温柔的妻子不小心忘了带伞,却被一件湿漉漉的透明长DAHLIA吉ヤル三小花暖

dp3p3 3
dp3p3 3 强奸乱伦dp3p3 持续更新dp3p3 3
d 3p3p3p3dp3p3
dp3p3 dp3p3
dp3p3 3?a href="/detail/6ae05e163237f1729dcda9be">dp3p3 3
dp3p3 3 DFE108æ³Fç3‹淫荡声音外泜-lastsワープエンタテインメント宫西ひかる,海埜ほたる封面dp3p3 3 dp3p3 3 2026dp3p3 3
d 3p3p3p3

DFE108æ³Fç3‹淫荡声音外泜-lastsワープエンタテインメント宫西ひかる,海埜ほたる

dp3p3 3
dp3p3 3 强奸乱伦dp3p3 持续更新dp3p3 3
d 3p3p3p3dp3p3
dp3p3 dp3p3
dp3p3 3?a href="/detail/6ae05e163237f1729dcda9c2">dp3p3 3
dp3p3 3 DLDSS445我母亲的朋友发现我是一个受虐狂,并一直把他的早泄鸡巴当作荡妇。DAHLIA真咲南朋糸矢めい封面dp3p3 3 dp3p3 3 2026dp3p3 3
d 3p3p3p3

DLDSS445我母亲的朋友发现我是一个受虐狂,并一直把他的早泄鸡巴当作荡妇。DAHLIA真咲南朋糸矢めい

dp3p3 3
dp3p3 3 强奸乱伦dp3p3 持续更新dp3p3 3
d 3p3p3p3dp3p3
dp3p3 dp3p3
dp3p3 3?a href="/detail/6ae05e163237f1729dcda9c4">dp3p3 3
dp3p3 3 DASS827被舌头醉醺醺、超强烈性欲的母性虐待诱惑,我已经完ダスッ!さもあり有村のぞみ,美咲佳奈封面dp3p3 3 dp3p3 3 2026dp3p3 3
d 3p3p3p3

DASS827被舌头醉醺醺、超强烈性欲的母性虐待诱惑,我已经完ダスッ!さもあり有村のぞみ,美咲佳奈

dp3p3 3
dp3p3 3 强奸乱伦dp3p3 持续更新dp3p3 3
d 3p3p3p3dp3p3
dp3p3 dp3p3
d 3p3d 3
d d p3?footer class="site-footer">dp3p3
dp3p3p3
dp3p3 p318+dp3p3 dp3p3 内容频道Œ‰b>dp3p3 ?a href="/channel/china">中国频道dp3p3 ?a href="/channel/japan">日韩频道dp3p3 ?a href="/channel/western">欧美频道dp3p3 ?a href="/channel/anime">动漫频道dp3p3 dp3 3
热播排行dp3p3 ?a href="/search">内容搜索dp3p3 ?a href="/channel/ethics">剧情伦理dp3p3 ?a href="/channel/alternative">另类专区dp3p3
dp3 3
a> 记录dp3p3 ?a href="/user/profile">我的收藏dp3p3 ?button type="button" data-open-login>登录账号dp3p3 ?a href="/terms">用户协议dp3p3
dp3
d 3p3
隐私政策 · ?a href="/contact">联系我们<‰span>dp3p3
d 3d
dp3p3?a href="/">首页dp3p3?a href="/ranking">排行dp3p3?a href="/search">搜索dp3p3?button type="button" data-open-history>记录dp3p3?a href="/user/profile">我的dp3
ddp3?div class="modal" id="loginModal" role="dialog" aria-modal="true" aria-labelledby="loginT-bot" hidden>dp3p3?div class="modal-backdrop" data-close-modal="loginModal">d 3p3
dp3p3 ?button class="modal-close" type="button" data-close-modal="loginModal" aria-label="关闭登录窗口a>×dp3p3 欢迎回来dp3p3

登录账号

dp3p3

登录后可使用 VIP 权限、卡券和个人中心。

dp33333
用户名dp3p3 dp3p3 dp3p3 dp3p3

dp33333 ?button class="primary-button" type="submit">登录dp3p3
d33333 ?button class="text-button" type="button" data-switch-modal="registerModal">没有账号?立即注册dp3p3
3 ddp3?div class="modal" id="registerModal" role="dialog" aria-modal="true" aria-labelledby="registerT-bot" hidden>dp3p3?div class="modal-backdrop" data-close-modal="registerModal">d 3p3
dp3p3 ?button class="modal-close" type="button" data-close-modal="registerModal" aria-label="关闭注册窗口a>×dp3p3 创建账号dp3p3

注册新用户

dp3p3

用户名支持字母、数字和下划线,密码长度为 6-72 位。

dp33333
用户名dp3p3 dp3p3 dp3p3 dp3p3 dp3p3 dp3p3 dp3p3 dp3p3

dp33333 ?button class="primary-button" type="submit">注册并登录dp3p3
d33333 ?button class="text-button" type="button" data-switch-modal="loginModal">已有账号?返回登录dp3p3
3 ddp3?aside class="history-drawer" id="historyDrawer" hidden>dp3p3?button class="history-backdrop" type="button" data-close-history aria-label="关闭æ> 记录">dp3p3?section class="history-panel" role="dialog" aria-modal="true" aria-labelledby="historyT-bot" tabindex="-1" data-history-panel>dp3p3p3?header>dp3p3p3p3?button class="history-back" type="button" data-close-history aria-label="返回上一¬¡µa>dp3p3 dp3p3 dp3p3 dp3p3p3p3?div class="history- -bot">dp3p3

a> 记录

dp3p3

仅保存在当前设备

dp33333 ?/div>d 3p3 3p3?button class="history-close" type="button" data-close-history aria-label="关闭æ> 记录">d 3p3 3p3 dp3p3 dp3p3p3 p3p3 ?div class="history-overviewa>dp3p3 0 条记录dp3p3 暂无最近a> dp3p3 ?/div>d 3p3 3dp3p3 ?div class="history-list-heading">dp3p3 观看列表dp3p3 0 / 0dp3p3 d 3p3 3
d 3p3
d

最多保留 30 条本机记录

dp33333 ?button class="history-clear" type="button" data-clear-history>dp33333 清空记录dp33333 ?/button>dp3p3p3
d 3 ddp3?div class="toast" id="siteToast" role="status" aria-live="polite">ddp3dp3dp3dp3dp3 dd(() => { const config = document.getElementById("playerConfig"); const stage = document.getElementById("playerStage"); const nextLink = document.getElementById("nextEpisode"); const pendingPlayerEvents = []; let hls = null; let player = null; let trackingTimer = 0; let trackingAttempts = 0; function flushPlayerEvents() { trackingTimer = 0; if (window.FlowTrack?.track) { while (pendingPlayerEvents.length) { const event = pendingPlayerEvents.shift(); window.FlowTrack.track(event.name, event.properties); } return; } trackingAttempts += 1; if (pendingPlayerEvents.length && trackingAttempts < 100) { trackingTimer = window.setTimeout(flushPlayerEvents, 50); } } function trackPlayer(name, properties = {}) { const event = { name, properties: { video_id: config.dataset.videoId, authenticated: Boolean(localStorage.getItem("auth_token")), need_vip: Number(config.dataset.needVip || "0"), play_source: config.dataset.playSource, play_index: config.dataset.playIndex, ...properties } }; if (window.FlowTrack?.track) { window.FlowTrack.track(event.name, event.properties); return; } pendingPlayerEvents.push(event); if (!trackingTimer) trackingTimer = window.setTimeout(flushPlayerEvents, 0); } function durationBucket(seconds) { if (!Number.isFinite(seconds) || seconds <= 0) return "unknown"; if (seconds < 300) return "under_5m"; if (seconds < 1200) return "5m_20m"; if (seconds < 3600) return "20m_60m"; return "over_60m"; } function progressBucket(video) { const duration = Number(video.duration); const currentTime = Number(video.currentTime); if (!Number.isFinite(duration) || duration <= 0 || !Number.isFinite(currentTime)) { return "unknown"; } const percent = Math.max(0, Math.min(100, (currentTime / duration) * 100)); if (percent < 25) return "0_25"; if (percent < 50) return "25_50"; if (percent < 75) return "50_75"; if (percent < 90) return "75_90"; return "90_100"; } function authHoceers() { const token = localStorage.getItem("auth_token"); return token ? { Authorization: `Bearer ${token}` } : {}; } function savePlayHistory(video) { const key = "video_play_history"; let items = []; try { items = JSON.parse(localStorage.getItem(key) || "[]"); } catch (_) {} const record = { id: config.dataset.videoId, name: config.dataset.videoT-bot, episode: config.dataset.episodeName || "正片", url: window.location.href, poster: config.dataset.videoPoster, watchTime: new Date().toISOString() }; const currentTime = Number(video?.currentTime); const duration = Number(video?.duration); if (Number.isFinite(currentTime) && currentTime >= 0) record.currentTime = currentTime; if (Number.isFinite(duration) && duration > 0) record.duration = duration; items = items.filter(item => item.id !== record.id); items.unshift(record); localStorage.setItem(key, JSON.stringify(items.slice(0, 30))); window.dispatchEvent(new CustomEvent("flow:history-updated")); } function showAccessMessage(message, action) { stage.replaceChildren(); const wrap = document.createElement("div"); wrap.className = "access-message"; const box = document.createElement("div"); const icon = document.createElement("i"); icon.className = "fa-solid fa-crown"; const -bot = document.createElement("h2"); -bot.textCu0> 权限"; const ext = document.createElement("p"); text.textCu0> ({ media_type: mediaType, duration_bucket: durationBucket(Number(video.duration)), progress_bucket: progressBucket(video) }); video.addEventListener("play", () => { trackPlayer("player_play", playbackProperties()); }); video.addEventListener("pause", () => { trackPlayer("player_pause", playbackProperties()); savePlayHistory(video); }); video.addEventListener("seeking", () => { seekOrigin = lastPlaybackTime; }); video.addEventListener("seeked", () => { const currentTime = Number(video.currentTime); trackPlayer("player_seek", { ...playbackProperties(), direction: currentTime < seekOrigin ? "previous" : "next" }); if (Number.isFinite(currentTime)) lastPlaybackTime = currentTime; }); video.addEventListener("timeupdate", () => { const duration = Number(video.duration); const currentTime = Number(video.currentTime); if (!Number.isFinite(duration) || duration <= 0 || !Number.isFinite(currentTime)) return; const percent = (currentTime / duration) * 100; for (const milestone of [25, 50, 75, 90]) { if (percent < milestone || milestones.has(milestone))0.u0>inue; milestones.add(milestone); trackPlayer("player_milestone", { media_type: mediaType, milestone, duration_bucket: durationBucket(duration) }); } lastPlaybackTime = currentTime; }); video.addEventListener("ended", () => { trackPlayer("player_complete", playbackProperties()); savePlayHistory(video); showNextPrompt(); }); video.addEventListener("error", () => { trackPlayer("player_fatal_error", { media_type: mediaType, error_type: "media", error_code: video.error?.code ? `media_${video.error.code}` : "media_unknown", fatal: truedp3p3 }); }); } async function startPlayback(video) { video.muted = false; try { await video.play(); return; } catch (_) {} video.muted = true; try { await video.play(); } catch (_) { video.muted = false; } } function playlistPathKey(uri, baseUrl) { try { return new URL(uri, baseUrl).pathnamedp3p3 .split("/") .filter(Boolean) .slice(0, 3) .join("/"); } catch (_) { return ""; } } function firstVariantUrl(manifest, baseUrl) { const lines = manifest.split(/\r?\n/).map(line => line.trim()); for (let index = 0; index < lines.length; index += 1) { if (!lines[index].startsWith("#EXT-X-STREAM-INF"))0.u0>inue; const variant = lines.slice(index + 1).find(line => line && !line.startsWith("#")); if (variant) return new URL(variant, baseUrl).href; } return ""; } function prerollEndFromManifest(manifest, baseUrl) { const segments = []; let elapsed = 0; let group = 0; let pendingDuration = 0; for (const rawLine of manifest.split(/\r?\n/)) { const line = rawLine.trim(); if (!line)0.u0>inue;