no-framework-video-player
Version:
A no framework video player.you can use it as long as your program is in javascript environment
15,437 lines • 739 kB
JavaScript
(function(){ try {var elementStyle = document.createElement('style'); elementStyle.appendChild(document.createTextNode(".d-slider.svelte-1ruaw7f.svelte-1ruaw7f{position:relative}.d-slider.svelte-1ruaw7f .d-slider__runway.svelte-1ruaw7f{width:100%;background-color:#333;position:relative;cursor:pointer;vertical-align:middle}.d-slider.svelte-1ruaw7f .d-slider__runway .d-slider__cursor.svelte-1ruaw7f,.d-slider.svelte-1ruaw7f .d-slider__runway .d-slider__preload.svelte-1ruaw7f,.d-slider.svelte-1ruaw7f .d-slider__runway .d-slider__bar.svelte-1ruaw7f{position:absolute;top:0;left:0;height:100%}.d-slider.svelte-1ruaw7f .d-slider__runway .d-slider__cursor.svelte-1ruaw7f{display:none;z-index:1;width:1px;background:#fff;pointer-events:none}.d-slider.svelte-1ruaw7f .d-slider__runway .d-slider__cursor .d-slider__tips.svelte-1ruaw7f{pointer-events:none;color:#fff;position:absolute;white-space:nowrap;z-index:2;bottom:14px;left:50%;padding:4px;box-sizing:border-box;display:block;font-size:12px;background:rgba(0,0,0,.6);border-radius:3px;transform:translate(-50%)}.d-slider.svelte-1ruaw7f .d-slider__runway:hover .d-slider__cursor.svelte-1ruaw7f{display:block}.d-slider.svelte-1ruaw7f .d-slider__runway .d-slider__preload.svelte-1ruaw7f{background:#717171}.d-slider.svelte-1ruaw7f .d-slider__runway .d-slider__bar.svelte-1ruaw7f{background:linear-gradient(to right,var(--primary-color) 0%,var(--primary-color-end) 80%,var(--primary-color-end) 100%)}.d-slider.svelte-1ruaw7f .d-slider__runway .d-slider__bar.svelte-1ruaw7f:before{display:block;content:\"\";position:absolute;right:-6px;top:50%;width:12px;height:12px;transition:.2s;transform:translateY(-50%) scale(1);border-radius:50%;background:#fff;border:5px solid var(--primary-color)}.d-slider.is-vertical.svelte-1ruaw7f.svelte-1ruaw7f{height:100px;display:inline-block}.d-slider.is-vertical.svelte-1ruaw7f .d-slider__runway.svelte-1ruaw7f{position:relative;height:100%;margin:0 6px}.d-slider.is-vertical.svelte-1ruaw7f .d-slider__runway .d-slider__preload.svelte-1ruaw7f,.d-slider.is-vertical.svelte-1ruaw7f .d-slider__runway .d-slider__bar.svelte-1ruaw7f,.d-slider.is-vertical.svelte-1ruaw7f .d-slider__runway .d-slider__cursor.svelte-1ruaw7f{bottom:0;top:auto;width:100%}.d-slider.is-vertical.svelte-1ruaw7f .d-slider__runway .d-slider__cursor.svelte-1ruaw7f{height:1px}.d-slider.is-vertical.svelte-1ruaw7f .d-slider__runway .d-slider__bar.svelte-1ruaw7f:before{top:-6px;left:50%;width:12px;height:12px;transform:translate(-50%) scale(1)}.d-progress-bar.svelte-1ruaw7f.svelte-1ruaw7f{position:absolute;left:0;right:0;bottom:0;width:100%;transition:height .1s;height:3px;z-index:1}.d-progress-bar.svelte-1ruaw7f .d-slider__runway.svelte-1ruaw7f{transition:height .1s;height:100%!important}.d-progress-bar.svelte-1ruaw7f .d-slider__runway .d-slider__bar.svelte-1ruaw7f:before{transform:translateY(-50%) scale(0)}.d-progress-bar.svelte-1ruaw7f.svelte-1ruaw7f:hover{height:100%}.d-progress-bar.svelte-1ruaw7f:hover .d-slider__bar.svelte-1ruaw7f:before{transform:translateY(-50%) scale(1)!important}.d-player-filter-panel-item.svelte-1ruaw7f .d-slider__runway.svelte-1ruaw7f{background-color:#999}.d-player-filter-panel-item.svelte-1ruaw7f .d-slider__runway .d-slider__bar.svelte-1ruaw7f:before{width:8px;height:8px}.filter-panel-slider.svelte-1ruaw7f.svelte-1ruaw7f{width:100%}.d-switch.svelte-4mlfkg.svelte-4mlfkg{position:relative;height:18px;transition:background .2s;background:#757575;border-radius:10px;display:inline-flex;align-items:center;vertical-align:middle}.d-switch.svelte-4mlfkg .d-switch__input.svelte-4mlfkg{position:relative;z-index:1;margin:0;width:100%;height:100%;opacity:0}.d-switch.svelte-4mlfkg .d-switch_action.svelte-4mlfkg{position:absolute;transition:.2s;left:2px;top:2px;z-index:0;height:14px;width:14px;background:#fff;border-radius:50%}.d-switch.is-checked.svelte-4mlfkg.svelte-4mlfkg{background-color:var(--primary-color)}.d-switch.is-checked.svelte-4mlfkg .d-switch_action.svelte-4mlfkg{left:100%;background:#fff;margin-left:-18px}.d-icon.svelte-1ojdyss{display:inline-block;cursor:pointer;overflow:hidden}.icon-play.svelte-1ojdyss{margin-left:5px}div.svelte-1sesy3u.svelte-1sesy3u,span.svelte-1sesy3u.svelte-1sesy3u,h5.svelte-1sesy3u.svelte-1sesy3u,i.svelte-1sesy3u.svelte-1sesy3u,ul.svelte-1sesy3u.svelte-1sesy3u,li.svelte-1sesy3u.svelte-1sesy3u{margin:0;padding:0;border:0;font-size:100%;font:inherit;vertical-align:baseline}ul.svelte-1sesy3u.svelte-1sesy3u{list-style:none}@keyframes svelte-1sesy3u-rotating{to{-webkit-transform:rotate(360deg)}}.d-player-contextmenu.svelte-1sesy3u.svelte-1sesy3u,.d-player-dialog.svelte-1sesy3u.svelte-1sesy3u{position:absolute;left:0;top:0;bottom:50px;width:100%;z-index:5}.d-player-contextmenu.svelte-1sesy3u .d-player-copyText.svelte-1sesy3u{opacity:0}.d-player-contextmenu.svelte-1sesy3u .d-player-contextmenu-body.svelte-1sesy3u{position:absolute;border-radius:5px;font-size:12px;background:rgba(0,0,0,.8);color:#efefef;text-align:left;min-width:130px;box-sizing:border-box;padding:5px 0}.d-player-contextmenu.svelte-1sesy3u .d-player-contextmenu-body li.svelte-1sesy3u{padding:8px 20px;margin:0;cursor:pointer;transition:.2s}.d-player-contextmenu.svelte-1sesy3u .d-player-contextmenu-body li.svelte-1sesy3u:hover{background-color:#ffffff1a}.d-player-dialog.svelte-1sesy3u.svelte-1sesy3u{display:flex;justify-content:center;align-items:center}.d-player-dialog.svelte-1sesy3u .d-player-dialog-body.svelte-1sesy3u{background-color:#212121e6;border-radius:5px;color:#fff;min-width:200px;padding:0 0 10px}.d-player-dialog.svelte-1sesy3u .d-player-dialog-body .d-player-dialog-title.svelte-1sesy3u{text-align:center;position:relative;font-size:14px;font-weight:400;margin:0 0 10px;padding:12px 0;border-bottom:1px solid rgba(255,255,255,.15)}.d-player-dialog.svelte-1sesy3u .d-player-dialog-body .d-player-dialog-title .icon-close.svelte-1sesy3u{position:absolute;right:0px;top:0px;width:40px;height:40px;line-height:40px;text-align:center;cursor:pointer}.d-player-dialog.svelte-1sesy3u .d-player-dialog-body .d-player-hotkey-panel.svelte-1sesy3u{font-size:12px;color:#eee;padding-right:40px}.d-player-dialog.svelte-1sesy3u .d-player-dialog-body .d-player-hotkey-panel .d-player-hotkey-panel-item.svelte-1sesy3u{line-height:26px}.d-player-dialog.svelte-1sesy3u .d-player-dialog-body .d-player-hotkey-panel .d-player-hotkey-panel-item span.svelte-1sesy3u{text-align:center;display:inline-block;width:120px}.d-player-dialog.svelte-1sesy3u .d-player-dialog-body .d-player-hotkey-panel .d-player-hotkey-panel-item span.svelte-1sesy3u:nth-child(2){color:#999;width:160px}.d-player-dialog.svelte-1sesy3u .d-player-dialog-body .d-player-filter-panel.svelte-1sesy3u{width:320px;padding:0 20px;text-align:center}.d-player-dialog.svelte-1sesy3u .d-player-dialog-body .d-player-filter-panel .d-player-filter-reset.svelte-1sesy3u{text-align:center;cursor:pointer;margin-top:10px;padding:3px 20px;display:inline-block;border-radius:2px;font-size:12px;background:rgba(133,133,133,.5)}.d-player-dialog.svelte-1sesy3u .d-player-dialog-body .d-player-filter-panel .d-player-filter-reset.svelte-1sesy3u:hover{background:rgba(255,255,255,.3)}.d-player-dialog.svelte-1sesy3u .d-player-dialog-body .d-player-filter-panel .d-player-filter-panel-item.svelte-1sesy3u{height:32px;display:flex;align-items:center}.d-player-dialog.svelte-1sesy3u .d-player-dialog-body .d-player-filter-panel .d-player-filter-panel-item span.svelte-1sesy3u{font-size:12px;display:block;width:80px;text-align:center}@font-face{font-family:iconfont;src:url(data:font/woff2;base64,d09GMgABAAAAAAf8AAsAAAAAD4AAAAesAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHFQGYACENAqQFI0gATYCJAMwCxoABCAFhGcHgRgbMA2jopRwhpH9xYEN7tEpwmIWXYlFbb0abbZI79LiOw8i759JE179cG04wTl4/lv73fdGdx1R7dBpePptO1IS0ROpEcucKY175977I5ZAEaYoB0Q+Sa9AyUuuH/ScmnFzExLIzqhN/27WA9pOSYBUSFMxoWIeqfuqJXeerBhQVrSma0bPHPxEe3/ryvP/O+8/vROmlEQSRRMb+GBOkyUgmdUv+7V8hmli/aG/EQqjplPxhHhyzZqoot6oROqNaqXSKgZrk2NVhFlY/ZvcBwGlU5v65uH5PUwdTjXMG8CGCvxoOVnCYeQmYnMKReR61X3j5QMHvfVHAO926uUnuiIo12AXut4HEbykIr8L6H/aqH1DN1cH6ytwwIDDgUnkzVf9Mi7j0GaVaYnWE2DczO1k+hWpS8cpyCzf5CG/v3tHvNa6IaYQ47zm7FpAEBVKVWcVleX4f16HsmrgftwVUiERBKQaQURqmOSxWwgowe5AqsY+hgAD9hkQCPIqAkW+QWCRBwQO+b0zfkj7zAJ2gT5gJrCcEZcy6q0k3pSWkWHj8nBmZvSUUTb8osN2s7NDvrdXy9Nj4OEpqIEIvRY3HgSKcZQwjtJS3DAytmYBP1FU9L3/95QyIMBkIg04lxMG42lHgjNnKzFOrpIelGoMuImUo5gYJWZmUln8gHHvebdwWjfAxMiUA08YhQPUsgelIOQoXHGTqgkpVLI6d55j9PHwK3FoAKBNZegLJupaYE4OgIPZDEU4VcoVnJw+yCoYJen8nooeZg8xh1dw1+lr7A1GPcBNDk+wU8z0R01PQJedZwEdOML6T/GY+RYOlQNVsVO4MJiynUNHad+DrMMYE6DECxPPp6YsmfmLfp2jszO+HSMX5vo5LbCgYXV9bicOrFDPI+TcNONAwuZOU5CInQB8k9z0KgEz9ZSDFCihUQLabhIWc9NrYIEIVIt5EDeskrA3qt9YDSPcdWDh2noLxHILj1c9ftyZVExBrBQf8ycPXZmJm19yxEd8SYWUnZDiw0f9KkHFyBEnQj4Jcxg16keoLs9e4FUXajyAkA/hOBh1+Jg/Tl5LwCHyShpOUqd85NsS6mQKJi6nUgR+0pNoYU0mxmzmjEZAGzSGurFL12bo2euXuavqeWbuxpUtKbNGQ2iq2mxKa2AdyOXblidgpmGYUnKTwMpEF0wUhCW+Sl/MlhKt0VCRaqbMpInEKxD6pEgh8IGMIZ3sKPbsO/4vhZPlndlsfQomL4051Z+cnFZpte02mX84Q8W1f5S7vYclBFYebq0HtaA4rCgkWDBKvPeaGbmxvnFjdCbI3Zqgv6QTvUUL7L0a5TmVoBTsSRkYStwLSjNLLKTOxQPr9mdUgALwUWxvm3tmT8FIqQ+I/vy5X6tMeE7iu1gRZnVOOLPKskb4PWbpek46J8lysdRZnctd0dXPIVtIdd8P3BB4TlLsQCz/PvQXdA4U+IFAO6tPRJy+kcbtFQmnbWZsp/HBt5RDf6N/299F71a8L1l2XHZ56PjwpMl5c/zm2L74vuE4iUzk6ypzk+373pWIJ+O74jvzg5EPfTfYIJQ3ZXfEednV2RMJQTydXZdZZ5sf/kT5rD/LR//8IYRA7yIxyJ3gO4hMcpcWSq+GXQu8FnYVaAqGXFcy2/8J325tba7MrARhjwNI/0h/srSLqLq+97+wSqPbAeMXczfUk+457lOffTaLYMcchIfgiDVCuOeqGCGCv/VzN25M3YXuk5nY3BWAekcGABlLarWx7FJG+g7amXCWcpWaZn8xiOP1ODp96TF4tnjHdo0tvL/UKaXIpjyuBFNgKXlIeV1KsfP+E7aa7cU7Tg+4X4w657FNCafER/j7IWTtLjju2vlB35b76OphdNX9lsqnaAdZwjBkmd14UtyqdBkVE0P1CLzF7HEvIPN3zSPyXP3S9y7nhMvCc5Zl9s1AdHTIS719PVb38Nacx0bnzXtO9YhVj54Yxd7iDEk3etkq57gf05ckk19/MyKOOSlZAnFV26xDvZQBytrbGblYPVZrz+eiIbVgcUszxV+IP038VPwFSOM9+nE1q2/0OVTdhzPtuA8A8O6xMQtEAACCXfwXYdxOlYz/1C6O4D8pXsl/IKQFVVxL5oIgA7hu3A+of8ma1Hq23rt8sxlJeWINH7gm/VW87WtqfLfUIqiHESmuJC3JjV0Ax6AOMHUdckh2cyWpsqb29qd0KCh5J9CJdON+u+BMKJP1P86EDypYACNaR1ncPjiVc/CiCygdODi4MkHrJymAbU8ERO8ZVOsPjN4ryuLewJn2B17vH0qPNXm8ynYNewY5YcREj2VS1bHgkr3UW0yakpsk+yMam8HKAtePeo+wRlPHDradhEQxi42q2OHlYliWimmjcpTkpkR61fPitB1cqSrYYyCOzIoRRuhVz0hKLe6Ywp/vFko0SpxRRD0qDHsi0qUzAZevgDpi1UoNDiTRakuEiCpiTDIMZVQu5/CjQCV3KYxOXyuHJOJKKzi0VR7tKFZlud1zqt09CyixV65LxYgVJ16CRCmklEpqafAX6pL3+nWmh0vFo6xOBiLnGNS8sThkpUGsxzooHM8xYpGowAF2vK3KpkInUp169CVtdEpQ1RACAAAAAA==) format(\"woff2\")}.iconfont{font-family:iconfont!important;font-size:16px;font-style:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.icon-replay:before{content:\"\\e631\"}.icon-pip:before{content:\"\\e820\"}.icon-loading:before{content:\"\\e62e\"}.icon-play:before{content:\"\\e851\"}.icon-pause:before{content:\"\\e863\"}.icon-screen:before{content:\"\\e88f\"}.icon-web-screen:before{content:\"\\e609\"}.icon-settings:before{content:\"\\e60c\"}.icon-volume-down:before{content:\"\\e60d\"}.icon-volume-up:before{content:\"\\e60e\"}.icon-volume-mute:before{content:\"\\e60f\"}div.svelte-1qnrxjl.svelte-1qnrxjl,span.svelte-1qnrxjl.svelte-1qnrxjl,p.svelte-1qnrxjl.svelte-1qnrxjl,img.svelte-1qnrxjl.svelte-1qnrxjl,i.svelte-1qnrxjl.svelte-1qnrxjl{margin:0;padding:0;border:0;font-size:100%;font:inherit;vertical-align:baseline}.iconfont.svelte-1qnrxjl.svelte-1qnrxjl{display:inline-block}.d-flex-x.svelte-1qnrxjl.svelte-1qnrxjl{display:flex}.d-flex-x.svelte-1qnrxjl.svelte-1qnrxjl{align-items:center}.mr5.svelte-1qnrxjl.svelte-1qnrxjl{margin-right:5px}.d-pointer.svelte-1qnrxjl.svelte-1qnrxjl{cursor:pointer}.rotating.svelte-1qnrxjl.svelte-1qnrxjl{animation:svelte-1qnrxjl-rotating 2s linear infinite}@keyframes svelte-1qnrxjl-rotating{to{-webkit-transform:rotate(360deg)}}.f50.svelte-1qnrxjl.svelte-1qnrxjl{font-size:50px}.f24.svelte-1qnrxjl.svelte-1qnrxjl{font-size:24px}.d-loading.svelte-1qnrxjl.svelte-1qnrxjl{position:absolute;left:0;right:0;bottom:0px;top:0;display:flex;align-items:center;justify-content:center;background:rgba(0,0,0,.3);z-index:2;color:#efefef;text-align:center;font-size:13px}.loading-img.svelte-1qnrxjl.svelte-1qnrxjl{width:50px}.d-logo-loading.svelte-1qnrxjl.svelte-1qnrxjl{position:relative;width:100px;height:23px;overflow:hidden}.d-logo-loading.svelte-1qnrxjl .d-logo.svelte-1qnrxjl{width:100%;height:100%;background:url(https://s.thsi.cn/cd/ths-frontend-hxmui-container/front/thsc-hxmui/1.11.0/img/logo_light.ed78645a.png) 50%;background-size:cover}.d-logo-loading.svelte-1qnrxjl .d-light.svelte-1qnrxjl{position:absolute;left:0;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);width:32px;height:23px;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGIAAABaCAMAAAB0UnP8AAAAhFBMVEUAAAD///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8g2+bRAAAALHRSTlMABAgVDx4uDCU9ODMZKUJcRiFWYGZKt06ojpeJUq95bmqzo6CTfYRydaybgZ4JNUQAAAd9SURBVGjejNWNVtpAEIbhpoECGii/ojUCapEU7v/++s27ux23kMTxHH/O0Tx+Mzubb7eqsPquGo0Gg0FZllVVDYeLxVg1/VT6cbEYqqqqVOl3RyP7M/7+W2sV9gEhYARQBoDH/6Du9aFCWaBgOIFRtBqhsgwhAcD9p0KxaG4I8RhFWwqAIglEIAGPv7OaUPomMo440dUrD5FlCAHS4x2JxiIRg55peApCIDAGixD+/dlsNg+l76QIoV0YnqNzGP+HUJdcANiEckRBPIcTrRk8RIlABrVICXj8drutrfTVFBAZlqOqaFXPNAoqaxMZSABQ10vKEKLIULOmjDyLgdA3CQQyAITn/0wVFBnkwPBWdaZwgjZNp2QgQgBWoWQsZcQctMqJzhTXIciw2ZBgtVqnQhGiZmVGd6e8TwhVGISOknUpAgfVfr/XZynB2MzsXEEEA6JNcMJPUxBqBHv8iTJFSWQwDyc6O5UJEC5oCAL2+6bZhWqaE0hmiKi8U719KodD3RsQZFCTlEDC0UqIjJTDY1R9nYLwYVsIFw4C9PzLh9XlIqY5HQ6r1XL5L8aCgXenyE+sEZOJ2uSCgGdKyG5nORRju82JQSuRnyefRBIUQc9/okCOyag3ED/GGaFqSeFEnARtsgwXhN8qIWbYPAKh3fgKgaAaiAiT+EGIIGjOHwC/rEx5/mAca02DTokYc0+1EoUTPuxAqE3M4RkhGiJsHGEadAqi6iAYRTbs+3vbiZoQEizDr/P5XXU+C7EYx2a/XkMw70RgdBJcTyEEx8lCkAHhDYQcl6M6BTHvJ/Ijm/oUFpsQCAZQGEyDTtXajK+myM4Tk6gV4tQcLwgCHqlgcKhaCGbRsRUKARGHbSGeIBAwiGHE/hCISR9RXB9ZNrteatiEiMIfymKETt0g2ra7yAhWmxBGxEm8v5vw8vIiQsZtovxEFD2rzXlKfUohBFB/6FRG3OUperdiHIma8xT7pDbp6a+vbUR/CifoE0e2ZilsJ1KIVxXEW06k7ZbQmyKN4u4uHVkR9EmTQPgyUXRsBcRkPqdPzc6GbSEQMGzeELvG7loukOymbdmKIp+2H9mPZ44TxMPDA0RIYXuhC6SFKNoWr6riVtCndTxPCoGQEWy3EZzZzhTFrT5N0pG92LDfIAQ4wXaf1hAcqKsUvRfUtpN4zwh/d0v4SgqOrIg4iicRCBlh1yDvC3uxQkiAuH3PBiEjwpGFYBSEyImLESsRs0SUbYSfJ67ZeEHVSxHqk4hzIijbC12DTyJO/4g0CvrU/a5gt7nI2QobBXvnBKvH/cEbScRcxNVVfkO42gpu2RNbEUI48fjItEXYbjPtSAw8RRcxdYLFy0cBwShE7J0YQ9y+PopEIFTxDoxb0VyPgmmfbdp+fYjovz4gfPEi8bdSc1ttI4qh6ENbqKF1ZojBLZi0BOqG/P8HRmeNthVFntFknvy2kHS2rn5xVRghhcLTB/0HiCq8akUtRw/DT0u0UyhCeGpxXNs/QKyrAgRlG4Sr4kmhwAi+LDxrNxFeowoQqYMSwnIgofh1H/FfCIWi1TZ+CuE9UrYpeIQiCPZkibYhHqQKQ3wp0S5WpGgbwsu21QoQJRSoAoTq9tdAtKoAQQcVwst++q2i6pl8BoHwunIEgop3qgjlwFcQRPt8PoJoy1F0Bo4YqjiRAzMiiqoq3nlvUc0j3lEItF0QWXgHot1akUc89csgqHiOiFpBmj0tCYpod+UoI0LbSh9C0EPRlUt4F6miIgKwibgGgk9PlhYKxDRt+4kvDxZeLFRUQZAFIUh3JCg9WRC5M8hJcC8CgiPGuJob5rmqolphBCGOCcGLUk9Op8kkuWQPjcNpT7S2NFCGKog6WPCeeLKlHLVWZATiRnrPMR4xgXlN9VZToaBW7LPi8BFxG/I0R0YHJVUI0VhREai7TqqWn/BTWn7UJ9vHgsp9pYsS4zmM4MkK0aoCwj3E1taALFtG+p0IdEGO0trAGPYNAARN9IZQM5ubNCAN4gjCMoibwX7FCeYmjNC4rVqxJbwci5i48dRTXUMZwYxQsMNP9clWRF5+0B683FumuRF6T/2TLT2zth+YoZUgO8FYCa5tHbsdc906stgcDG02sYHFZvipZo/yZcSsnaCWpxYOg/BdiYMIUrZ6j2pFfVKB4NlaNB7/Eo5/BrHPAEG4xEIQRKiiWc++WwFr28+mXKtyA9gAGQQlj1RTy5eWgqGMSbvywYiF/x9swE0RCSHWrcjb+M9eLZoVM58QBEOeujHGWWE5vQDABOvPRlcgTRREdwab/W5xmMRIJyQDXC523Smnl3hPzd0Chm5503TmDhZnMAOYk4aXILCTCMKaKgridqY66JoXxzy/5mFDNaKzQoxv9qi4GMKoN8kBwAapLkSxaYWkERF3OwYkDqs6esoG3EQxam7Q9QLtJ+7V8/BigySRZLfjtCoGh3og+cgdhJlA7D9yw8BVYpizgORbvf4P8B0vJSPaU312lYXcPhgBsR9O4M8TEp1iLSvaRwUDyDyv/m8i2RCxLoCqjRwPvKW/f+j7KYAIDeIN31OsfyvZzREAAAAASUVORK5CYII=) 50%;background-size:cover;opacity:.6;-webkit-animation:svelte-1qnrxjl-move .8s ease-in-out infinite;animation:svelte-1qnrxjl-move .8s ease-in-out infinite}@keyframes svelte-1qnrxjl-move{0%{left:0}to{left:100%}}.d-player-top.svelte-q8odyd{position:absolute;font-size:16px;left:0px;top:0;right:0px;color:#fff;display:flex;padding:0 20px;height:60px;background-image:linear-gradient(rgba(0,0,0,.6),transparent);justify-content:space-between;z-index:1}.d-flex-center.svelte-o0d56g{display:flex}.d-flex-center.svelte-o0d56g{justify-content:center;align-items:center}.d-status.svelte-o0d56g{text-align:center;font-size:14px;vertical-align:middle;background:rgba(0,0,0,.8);padding:0 8px;height:30px;border-radius:5px;display:flex;align-items:center;color:#fffffff2}.d-radio.svelte-1rv9n3y{position:relative;display:inline-block;padding-left:20px;box-sizing:border-box;height:18px;line-height:18px;font-size:14px;margin-left:12px;margin-top:10px;cursor:pointer;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.d-radio.svelte-1rv9n3y:before{content:\"\";position:absolute;display:inline-block;top:2px;left:0;width:12px;height:12px;border:1px solid #ccc;border-radius:50%}.d-radio.d-radio-checked.svelte-1rv9n3y:before{content:\"\";border-color:#409eff;position:absolute;display:inline-block;top:2px;left:0;width:12px;height:12px;border:1px solid #409eff;border-radius:50%}.d-radio.d-radio-checked.svelte-1rv9n3y:after{content:\"\";position:absolute;top:5px;left:3px;display:inline-block;width:8px;height:8px;background-color:#00a1d6;border-radius:50%}.d-toast.svelte-bbg92z{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);background-color:#282828f5;padding:0 18px;border-radius:10px}.d-toast-content.svelte-bbg92z{font-size:16px;line-height:1;word-break:break-all;color:#fefefe}.d-feedback-container.svelte-bjqzkb.svelte-bjqzkb{position:absolute;left:0;top:0;right:0;bottom:0;display:flex;justify-content:center;align-items:center;z-index:3}.d-feedback-container.svelte-bjqzkb .dialog.svelte-bjqzkb{width:400px;height:240px;background-color:#212121e6;color:#fff}.d-feedback-container.svelte-bjqzkb .dialog .header.svelte-bjqzkb{width:100%;height:40px;display:flex;justify-content:center;align-items:center;font-size:16px;position:relative}.d-feedback-container.svelte-bjqzkb .dialog .header.svelte-bjqzkb:after{content:\" \";position:absolute;width:100%;height:1px;bottom:0;left:0;background-color:#fff6}.d-feedback-container.svelte-bjqzkb .dialog .header .icon-close.svelte-bjqzkb{position:absolute;right:0px;top:8px;width:40px;height:40px;line-height:40px;text-align:center;cursor:pointer;font:inherit}.d-feedback-container.svelte-bjqzkb .dialog .content.svelte-bjqzkb{position:relative;text-align:left}.d-feedback-container.svelte-bjqzkb .dialog .other.svelte-bjqzkb{font-size:14px;margin-left:12px}.d-feedback-container.svelte-bjqzkb .dialog #otherContent.svelte-bjqzkb{background-color:#191919;border:1px solid hsla(0,0%,100%,.4);resize:none;color:#ccc;margin-top:10px}.d-feedback-container.svelte-bjqzkb .dialog #otherContent.svelte-bjqzkb::-webkit-scrollbar{width:5px;background-color:#ffffff80}.d-feedback-container.svelte-bjqzkb .dialog #otherContent.svelte-bjqzkb::-webkit-scrollbar-thumb{width:5px;height:5px;background-color:#00000080;border-radius:10px}.d-feedback-container.svelte-bjqzkb .dialog .footer.svelte-bjqzkb{text-align:center}.d-feedback-container.svelte-bjqzkb .dialog .footer .d-player-filter-reset.svelte-bjqzkb{cursor:pointer;margin-top:10px;padding:3px 20px;display:inline-block;border-radius:2px;font-size:12px;background:rgba(133,133,133,.5)}.d-feedback-container.svelte-bjqzkb .dialog .footer .d-player-filter-reset.svelte-bjqzkb:hover{background:rgba(255,255,255,.3)}.d-icon-feedback.svelte-v622af{position:absolute;width:15px;height:15px;top:20px;right:35px;z-index:2;cursor:pointer}div.svelte-fbmaz8.svelte-fbmaz8,span.svelte-fbmaz8.svelte-fbmaz8,ul.svelte-fbmaz8.svelte-fbmaz8,li.svelte-fbmaz8.svelte-fbmaz8,video.svelte-fbmaz8.svelte-fbmaz8{margin:0;padding:0;border:0;font-size:100%;font:inherit;vertical-align:baseline}ul.svelte-fbmaz8.svelte-fbmaz8{list-style:none}.d-fade-in-enter-active.svelte-fbmaz8.svelte-fbmaz8,.d-fade-in-leave-active.svelte-fbmaz8.svelte-fbmaz8{transition:.5s}.d-fade-in-enter-from.svelte-fbmaz8.svelte-fbmaz8,.d-fade-in-leave-to.svelte-fbmaz8.svelte-fbmaz8{opacity:0}.d-scale-out-enter-active.svelte-fbmaz8.svelte-fbmaz8,.d-scale-out-leave-active.svelte-fbmaz8.svelte-fbmaz8{transition:.3s}.d-scale-out-leave-to.svelte-fbmaz8.svelte-fbmaz8{transform:scale(1.3);opacity:0}.rotateHover.svelte-fbmaz8.svelte-fbmaz8{transition:.2s}.rotateHover.svelte-fbmaz8.svelte-fbmaz8:hover{transform:rotate(90deg)}.rotating.svelte-fbmaz8.svelte-fbmaz8{animation:svelte-fbmaz8-rotating 2s linear infinite}@keyframes svelte-fbmaz8-rotating{to{-webkit-transform:rotate(360deg)}}.iconfont.svelte-fbmaz8.svelte-fbmaz8{display:inline-block}.d-flex-x.svelte-fbmaz8.svelte-fbmaz8,.d-flex-y.svelte-fbmaz8.svelte-fbmaz8,.d-flex-center.svelte-fbmaz8.svelte-fbmaz8{display:flex}.d-flex-x.svelte-fbmaz8.svelte-fbmaz8{align-items:center}.d-flex-y.svelte-fbmaz8.svelte-fbmaz8{justify-content:center}.d-flex-center.svelte-fbmaz8.svelte-fbmaz8{justify-content:center;align-items:center}.mr5.svelte-fbmaz8.svelte-fbmaz8{margin-right:5px}.mr10.svelte-fbmaz8.svelte-fbmaz8{margin-right:10px}.ml5.svelte-fbmaz8.svelte-fbmaz8{margin-left:5px}.ml10.svelte-fbmaz8.svelte-fbmaz8{margin-left:10px}.d-pointer.svelte-fbmaz8.svelte-fbmaz8{cursor:pointer}.d-player-wrap.svelte-fbmaz8.svelte-fbmaz8{position:relative;overflow:hidden;background-color:#000}.d-player-wrap.web-full-screen.svelte-fbmaz8.svelte-fbmaz8{z-index:9999999;position:fixed;left:0;top:0;width:100vw!important;height:100vh!important}.d-player-wrap.svelte-fbmaz8 .d-player-video.svelte-fbmaz8{position:relative;z-index:1;width:100%;height:100%}.d-player-wrap.svelte-fbmaz8 .d-player-video .d-player-video-poster.svelte-fbmaz8{position:absolute;height:100%;width:100%;top:0;left:0}.d-player-wrap.svelte-fbmaz8 .d-player-video .d-player-video-main.svelte-fbmaz8{width:100%;height:100%;transition:.2s}.d-player-wrap.svelte-fbmaz8 .d-player-video .d-player-video-main.video-mirror.svelte-fbmaz8{transform:rotateY(180deg)}.d-player-wrap.svelte-fbmaz8 .d-player-control.svelte-fbmaz8{transition:.1s;transform:translateY(40px);position:absolute;z-index:2;left:0;bottom:0;height:50px;width:100%;color:#fff}.d-player-wrap.svelte-fbmaz8 .d-player-control .d-control-progress.svelte-fbmaz8{width:100%;position:relative;height:10px;cursor:pointer}.d-player-wrap.svelte-fbmaz8 .d-player-control .d-control-progress .d-progress-bar.svelte-fbmaz8{position:absolute;left:0;right:0;bottom:0;width:100%;transition:height .1s;height:3px;z-index:1}.d-player-wrap.svelte-fbmaz8 .d-player-control .d-control-progress .d-progress-bar .d-slider__runway.svelte-fbmaz8{transition:height .1s;height:100%}.d-player-wrap.svelte-fbmaz8 .d-player-control .d-control-progress .d-progress-bar .d-slider__runway .d-slider__bar.svelte-fbmaz8:before{transform:translateY(-50%) scale(0)}.d-player-wrap.svelte-fbmaz8 .d-player-control .d-control-progress:hover .d-progress-bar.svelte-fbmaz8{height:100%}.d-player-wrap.svelte-fbmaz8 .d-player-control .d-control-progress:hover .d-progress-bar .d-slider__bar.svelte-fbmaz8:before{transform:translateY(-50%) scale(1)!important}.d-player-wrap.svelte-fbmaz8 .d-player-control .d-control-tool.svelte-fbmaz8{position:absolute;padding:0 10px;background:rgba(0,0,0,.8);display:flex;justify-content:space-between;align-items:center;top:10px;left:0;bottom:0;width:100%;box-sizing:border-box}.d-player-wrap.svelte-fbmaz8 .d-player-control .d-control-tool .d-tool-bar.svelte-fbmaz8{display:flex;height:100%}.d-player-wrap.svelte-fbmaz8 .d-player-control .d-control-tool .d-tool-bar .d-tool-item.svelte-fbmaz8{position:relative;height:100%;cursor:pointer;text-align:center;padding:0 8px;display:flex;align-items:center;font-size:13px}.d-player-wrap.svelte-fbmaz8 .d-player-control .d-control-tool .d-tool-bar .d-tool-item .d-tool-item-main.svelte-fbmaz8{position:absolute;white-space:nowrap;z-index:2;bottom:98%;left:50%;padding:6px 16px;box-sizing:border-box;display:none;background:rgba(0,0,0,.95);border-radius:5px;transform:translate(-50%)}.d-player-wrap.svelte-fbmaz8 .d-player-control .d-control-tool .d-tool-bar .d-tool-item:hover .d-tool-item-main.svelte-fbmaz8{display:flex}.d-player-wrap.svelte-fbmaz8 .d-player-control .d-control-tool .d-tool-time.svelte-fbmaz8{font-size:12px;color:#fff;font-weight:300}.d-player-wrap.svelte-fbmaz8 .d-player-control .d-control-tool .d-tool-time .total-time.svelte-fbmaz8{color:#fffc}.d-player-wrap.svelte-fbmaz8 .d-player-control .d-control-tool .volume-box.svelte-fbmaz8{height:160px;width:50px;display:flex;align-items:center;justify-content:center}.d-player-wrap.svelte-fbmaz8 .d-player-control .d-control-tool .volume-box .volume-main.svelte-fbmaz8{height:90%;display:flex;width:60px;flex-direction:column;align-items:center}.d-player-wrap.svelte-fbmaz8 .d-player-control .d-control-tool .volume-box .volume-main .volume-text-size.svelte-fbmaz8{margin-bottom:10px;font-size:12px;font-weight:400}.d-player-wrap.svelte-fbmaz8 .d-player-control .d-control-tool .volume-box .volume-main.is-muted .d-slider__bar.svelte-fbmaz8{height:0!important}.d-player-wrap.svelte-fbmaz8 .d-player-control .d-control-tool .speed-main.svelte-fbmaz8{padding:0 10px}.d-player-wrap.svelte-fbmaz8 .d-player-control .d-control-tool .speed-main li.svelte-fbmaz8{cursor:pointer;line-height:34px;font-size:12px;color:#fff}.d-player-wrap.svelte-fbmaz8 .d-player-control .d-control-tool .speed-main li.svelte-fbmaz8:hover{opacity:.8}.d-player-wrap.svelte-fbmaz8 .d-player-control .d-control-tool .speed-main li.speed-active.svelte-fbmaz8{color:var(--primary-color);font-weight:700}.d-player-wrap.d-player-wrap-hover.svelte-fbmaz8 .d-player-control.svelte-fbmaz8{transform:translateY(0)}.d-player-state.svelte-fbmaz8.svelte-fbmaz8,.d-player-input.svelte-fbmaz8.svelte-fbmaz8{position:absolute;left:0;top:0;right:0;bottom:40px;display:flex;justify-content:center;align-items:center;overflow:hidden;z-index:1}.d-player-input.svelte-fbmaz8.svelte-fbmaz8{width:100%;border:none;opacity:0;cursor:default}.d-play-btn.svelte-fbmaz8.svelte-fbmaz8{width:90px;height:90px;color:#fff;display:flex;align-items:center;justify-content:center;background-color:#000000b3;border-radius:50%}.d-player-lightoff.svelte-fbmaz8.svelte-fbmaz8{position:fixed;left:0;top:0;width:100vw;height:100vh;background-color:#000000e6}.is-lightoff.svelte-fbmaz8.svelte-fbmaz8{z-index:999998}.d-left-0.svelte-fbmaz8.svelte-fbmaz8{left:0!important}.d-player-state-top.svelte-fbmaz8.svelte-fbmaz8{position:absolute;left:0;top:0;right:0;bottom:40px px;display:flex;justify-content:center;align-items:flex-start;padding-top:5%;overflow:hidden;z-index:1}")); document.head.appendChild(elementStyle);} catch(e) {console.error('vite-plugin-css-injected-by-js', e);} })();function De() {
}
const zr = (L) => L;
function Hr(L) {
return L();
}
function Jt() {
return /* @__PURE__ */ Object.create(null);
}
function at(L) {
L.forEach(Hr);
}
function Ie(L) {
return typeof L == "function";
}
function qe(L, A) {
return L != L ? A == A : L !== A || L && typeof L == "object" || typeof L == "function";
}
let Rt;
function Mt(L, A) {
return Rt || (Rt = document.createElement("a")), Rt.href = A, L === Rt.href;
}
function oi(L) {
return Object.keys(L).length === 0;
}
function Re(L) {
return L == null ? "" : L;
}
const jr = typeof window < "u";
let li = jr ? () => window.performance.now() : () => Date.now(), jt = jr ? (L) => requestAnimationFrame(L) : De;
const _t = /* @__PURE__ */ new Set();
function Vr(L) {
_t.forEach((A) => {
A.c(L) || (_t.delete(A), A.f());
}), _t.size !== 0 && jt(Vr);
}
function ui(L) {
let A;
return _t.size === 0 && jt(Vr), {
promise: new Promise((I) => {
_t.add(A = { c: L, f: I });
}),
abort() {
_t.delete(A);
}
};
}
function X(L, A) {
L.appendChild(A);
}
function $e(L, A, I) {
const N = Vt(L);
if (!N.getElementById(A)) {
const B = J("style");
B.id = A, B.textContent = I, Yr(N, B);
}
}
function Vt(L) {
if (!L)
return document;
const A = L.getRootNode ? L.getRootNode() : L.ownerDocument;
return A && A.host ? A : L.ownerDocument;
}
function fi(L) {
const A = J("style");
return Yr(Vt(L), A), A.sheet;
}
function Yr(L, A) {
return X(L.head || L, A), A.sheet;
}
function fe(L, A, I) {
L.insertBefore(A, I || null);
}
function ue(L) {
L.parentNode.removeChild(L);
}
function It(L, A) {
for (let I = 0; I < L.length; I += 1)
L[I] && L[I].d(A);
}
function J(L) {
return document.createElement(L);
}
function di(L) {
return document.createElementNS("http://www.w3.org/2000/svg", L);
}
function he(L) {
return document.createTextNode(L);
}
function ae() {
return he(" ");
}
function Tt() {
return he("");
}
function ce(L, A, I, N) {
return L.addEventListener(A, I, N), () => L.removeEventListener(A, I, N);
}
function Bt(L) {
return function(A) {
return A.stopPropagation(), L.call(this, A);
};
}
function V(L, A, I) {
I == null ? L.removeAttribute(A) : L.getAttribute(A) !== I && L.setAttribute(A, I);
}
function ci(L) {
return Array.from(L.childNodes);
}
function _e(L, A) {
A = "" + A, L.wholeText !== A && (L.data = A);
}
function qt(L, A) {
L.value = A == null ? "" : A;
}
function kt(L, A, I, N) {
I === null ? L.style.removeProperty(A) : L.style.setProperty(A, I, N ? "important" : "");
}
function $t(L, A, I) {
L.classList[I ? "add" : "remove"](A);
}
function Xr(L, A, { bubbles: I = !1, cancelable: N = !1 } = {}) {
const B = document.createEvent("CustomEvent");
return B.initCustomEvent(L, I, N, A), B;
}
class hi {
constructor(A = !1) {
this.is_svg = !1, this.is_svg = A, this.e = this.n = null;
}
c(A) {
this.h(A);
}
m(A, I, N = null) {
this.e || (this.is_svg ? this.e = di(I.nodeName) : this.e = J(I.nodeName), this.t = I, this.c(A)), this.i(N);
}
h(A) {
this.e.innerHTML = A, this.n = Array.from(this.e.childNodes);
}
i(A) {
for (let I = 0; I < this.n.length; I += 1)
fe(this.t, this.n[I], A);
}
p(A) {
this.d(), this.h(A), this.i(this.a);
}
d() {
this.n.forEach(ue);
}
}
const Ft = /* @__PURE__ */ new Map();
let wt = 0;
function vi(L) {
let A = 5381, I = L.length;
for (; I--; )
A = (A << 5) - A ^ L.charCodeAt(I);
return A >>> 0;
}
function gi(L, A) {
const I = { stylesheet: fi(A), rules: {} };
return Ft.set(L, I), I;
}
function er(L, A, I, N, B, G, U, M = 0) {
const g = 16.666 / N;
let P = `{
`;
for (let D = 0; D <= 1; D += g) {
const p = A + (I - A) * G(D);
P += D * 100 + `%{${U(p, 1 - p)}}
`;
}
const y = P + `100% {${U(I, 1 - I)}}
}`, O = `__svelte_${vi(y)}_${M}`, C = Vt(L), { stylesheet: F, rules: R } = Ft.get(C) || gi(C, L);
R[O] || (R[O] = !0, F.insertRule(`@keyframes ${O} ${y}`, F.cssRules.length));
const T = L.style.animation || "";
return L.style.animation = `${T ? `${T}, ` : ""}${O} ${N}ms linear ${B}ms 1 both`, wt += 1, O;
}
function mi(L, A) {
const I = (L.style.animation || "").split(", "), N = I.filter(
A ? (G) => G.indexOf(A) < 0 : (G) => G.indexOf("__svelte") === -1
), B = I.length - N.length;
B && (L.style.animation = N.join(", "), wt -= B, wt || pi());
}
function pi() {
jt(() => {
wt || (Ft.forEach((L) => {
const { ownerNode: A } = L.stylesheet;
A && ue(A);
}), Ft.clear());
});
}
let At;
function bt(L) {
At = L;
}
function Yt() {
if (!At)
throw new Error("Function called outside component initialization");
return At;
}
function Qr(L) {
Yt().$$.on_mount.push(L);
}
function Ei(L) {
Yt().$$.on_destroy.push(L);
}
function pt() {
const L = Yt();
return (A, I, { cancelable: N = !1 } = {}) => {
const B = L.$$.callbacks[A];
if (B) {
const G = Xr(A, I, { cancelable: N });
return B.slice().forEach((U) => {
U.call(L, G);
}), !G.defaultPrevented;
}
return !0;
};
}
function yi(L, A) {
const I = L.$$.callbacks[A.type];
I && I.slice().forEach((N) => N.call(this, A));
}
const Dt = [], ct = [], Ct = [], tr = [], Zr = Promise.resolve();
let zt = !1;
function Jr() {
zt || (zt = !0, Zr.then(qr));
}
function Ht() {
return Jr(), Zr;
}
function st(L) {
Ct.push(L);
}
const Nt = /* @__PURE__ */ new Set();
let Pt = 0;
function qr() {
const L = At;
do {
for (; Pt < Dt.length; ) {
const A = Dt[Pt];
Pt++, bt(A), _i(A.$$);
}
for (bt(null), Dt.length = 0, Pt = 0; ct.length; )
ct.pop()();
for (let A = 0; A < Ct.length; A += 1) {
const I = Ct[A];
Nt.has(I) || (Nt.add(I), I());
}
Ct.length = 0;
} while (Dt.length);
for (; tr.length; )
tr.pop()();
zt = !1, Nt.clear(), bt(L);
}
function _i(L) {
if (L.fragment !== null) {
L.update(), at(L.before_update);
const A = L.dirty;
L.dirty = [-1], L.fragment && L.fragment.p(L.ctx, A), L.after_update.forEach(st);
}
}
let St;
function Ti() {
return St || (St = Promise.resolve(), St.then(() => {
St = null;
})), St;
}
function Kt(L, A, I) {
L.dispatchEvent(Xr(`${A ? "intro" : "outro"}${I}`));
}
const Ot = /* @__PURE__ */ new Set();
let ht;
function Ne() {
ht = {
r: 0,
c: [],
p: ht
};
}
function Ke() {
ht.r || at(ht.c), ht = ht.p;
}
function $(L, A) {
L && L.i && (Ot.delete(L), L.i(A));
}
function se(L, A, I, N) {
if (L && L.o) {
if (Ot.has(L))
return;
Ot.add(L), ht.c.push(() => {
Ot.delete(L), N && (I && L.d(1), N());
}), L.o(A);
} else
N && N();
}
const xi = { duration: 0 };
function Ze(L, A, I, N) {
let B = A(L, I), G = N ? 0 : 1, U = null, M = null, g = null;
function P() {
g && mi(L, g);
}
function y(C, F) {
const R = C.b - G;
return F *= Math.abs(R), {
a: G,
b: C.b,
d: R,
duration: F,
start: C.start,
end: C.start + F,
group: C.group
};
}
function O(C) {
const { delay: F = 0, duration: R = 300, easing: T = zr, tick: D = De, css: p } = B || xi, S = {
start: li() + F,
b: C
};
C || (S.group = ht, ht.r += 1), U || M ? M = S : (p && (P(), g = er(L, G, C, R, F, T, p)), C && D(0, 1), U = y(S, R), st(() => Kt(L, C, "start")), ui((b) => {
if (M && b > M.start && (U = y(M, R), M = null, Kt(L, U.b, "start"), p && (P(), g = er(L, G, U.b, U.duration, 0, T, B.css))), U) {
if (b >= U.end)
D(G = U.b, 1 - G), Kt(L, U.b, "end"), M || (U.b ? P() : --U.group.r || at(U.group.c)), U = null;
else if (b >= U.start) {
const _ = b - U.start;
G = U.a + U.d * T(_ / U.duration), D(G, 1 - G);
}
}
return !!(U || M);
}));
}
return {
run(C) {
Ie(B) ? Ti().then(() => {
B = B(), O(C);
}) : O(C);
},
end() {
P(), U = M = null;
}
};
}
function Se(L) {
L && L.c();
}
function Te(L, A, I, N) {
const { fragment: B, after_update: G } = L.$$;
B && B.m(A, I), N || st(() => {
const U = L.$$.on_mount.map(Hr).filter(Ie);
L.$$.on_destroy ? L.$$.on_destroy.push(...U) : at(U), L.$$.on_mount = [];
}), G.forEach(st);
}
function xe(L, A) {
const I = L.$$;
I.fragment !== null && (at(I.on_destroy), I.fragment && I.fragment.d(A), I.on_destroy = I.fragment = null, I.ctx = []);
}
function Si(L, A) {
L.$$.dirty[0] === -1 && (Dt.push(L), Jr(), L.$$.dirty.fill(0)), L.$$.dirty[A / 31 | 0] |= 1 << A % 31;
}
function et(L, A, I, N, B, G, U, M = [-1]) {
const g = At;
bt(L);
const P = L.$$ = {
fragment: null,
ctx: [],
props: G,
update: De,
not_equal: B,
bound: Jt(),
on_mount: [],
on_destroy: [],
on_disconnect: [],
before_update: [],
after_update: [],
context: new Map(A.context || (g ? g.$$.context : [])),
callbacks: Jt(),
dirty: M,
skip_bound: !1,
root: A.target || g.$$.root
};
U && U(P.root);
let y = !1;
if (P.ctx = I ? I(L, A.props || {}, (O, C, ...F) => {
const R = F.length ? F[0] : C;
return P.ctx && B(P.ctx[O], P.ctx[O] = R) && (!P.skip_bound && P.bound[O] && P.bound[O](R), y && Si(L, O)), C;
}) : [], P.update(), y = !0, at(P.before_update), P.fragment = N ? N(P.ctx) : !1, A.target) {
if (A.hydrate) {
const O = ci(A.target);
P.fragment && P.fragment.l(O), O.forEach(ue);
} else
P.fragment && P.fragment.c();
A.intro && $(L.$$.fragment), Te(L, A.target, A.anchor, A.customElement), qr();
}
bt(g);
}
class tt {
$destroy() {
xe(this, 1), this.$destroy = De;
}
$on(A, I) {
if (!Ie(I))
return De;
const N = this.$$.callbacks[A] || (this.$$.callbacks[A] = []);
return N.push(I), () => {
const B = N.indexOf(I);
B !== -1 && N.splice(B, 1);
};
}
$set(A) {
this.$$set && !oi(A) && (this.$$.skip_bound = !0, this.$$set(A), this.$$.skip_bound = !1);
}
}
function Je(L, { delay: A = 0, duration: I = 400, easing: N = zr } = {}) {
const B = +getComputedStyle(L).opacity;
return {
delay: A,
duration: I,
easing: N,
css: (G) => `opacity: ${G * B}`
};
}
var Di = typeof globalThis < "u" ? globalThis : typeof window < "u" ? window : typeof global < "u" ? global : typeof self < "u" ? self : {};
function bi(L) {
return L && L.__esModule && Object.prototype.hasOwnProperty.call(L, "default") ? L.default : L;
}
var $r = { exports: {} };
(function(L, A) {
typeof window < "u" && function(N, B) {
L.exports = B();
}(Di, () => (() => {
var I = {
"./src/config.ts": (U, M, g) => {
g.r(M), g.d(M, {
enableStreamingMode: () => m,
hlsDefaultConfig: () => e,
mergeConfig: () => u
});
var P = g("./src/controller/abr-controller.ts"), y = g("./src/controller/audio-stream-controller.ts"), O = g("./src/controller/audio-track-controller.ts"), C = g("./src/controller/subtitle-stream-controller.ts"), F = g("./src/controller/subtitle-track-controller.ts"), R = g("./src/controller/buffer-controller.ts"), T = g("./src/controller/timeline-controller.ts"), D = g("./src/controller/cap-level-controller.ts"), p = g("./src/controller/fps-controller.ts"), S = g("./src/controller/eme-controller.ts"), b = g("./src/controller/cmcd-controller.ts"), _ = g("./src/utils/xhr-loader.ts"), E = g("./src/utils/fetch-loader.ts"), l = g("./src/utils/cues.ts"), n = g("./src/utils/mediakeys-helper.ts"), t = g("./src/utils/logger.ts");
function d() {
return d = Object.assign ? Object.assign.bind() : function(s) {
for (var v = 1; v < arguments.length; v++) {
var c = arguments[v];
for (var o in c)
Object.prototype.hasOwnProperty.call(c, o) && (s[o] = c[o]);
}
return s;
}, d.apply(this, arguments);
}
function h(s, v) {
var c = Object.keys(s);
if (Object.getOwnPropertySymbols) {
var o = Object.getOwnPropertySymbols(s);
v && (o = o.filter(function(a) {
return Object.getOwnPropertyDescriptor(s, a).enumerable;
})), c.push.apply(c, o);
}
return c;
}
function i(s) {
for (var v = 1; v < arguments.length; v++) {
var c = arguments[v] != null ? arguments[v] : {};
v % 2 ? h(Object(c), !0).forEach(function(o) {
r(s, o, c[o]);
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(s, Object.getOwnPropertyDescriptors(c)) : h(Object(c)).forEach(function(o) {
Object.defineProperty(s, o, Object.getOwnPropertyDescriptor(c, o));
});
}
return s;
}
function r(s, v, c) {
return v in s ? Object.defineProperty(s, v, { value: c, enumerable: !0, configurable: !0, writable: !0 }) : s[v] = c, s;
}
var e = i(i({
autoStartLoad: !0,
startPosition: -1,
defaultAudioCodec: void 0,
debug: !1,
capLevelOnFPSDrop: !1,
capLevelToPlayerSize: !1,
ignoreDevicePixelRatio: !1,
initialLiveManifestSize: 1,
maxBufferLength: 30,
backBufferLength: 1 / 0,
maxBufferSize: 60 * 1e3 * 1e3,
maxBufferHole: 0.1,
highBufferWatchdogPeriod: 2,
nudgeOffset: 0.1,
nudgeMaxRetry: 3,
maxFragLookUpTolerance: 0.25,
liveSyncDurationCount: 3,
liveMaxLatencyDurationCount: 1 / 0,
liveSyncDuration: void 0,
liveMaxLatencyDuration: void 0,
maxLiveSyncPlaybackRate: 1,
liveDurationInfinity: !1,
liveBackBufferLength: null,
maxMaxBufferLength: 600,
enableWorker: !0,
enableSoftwareAES: !0,
manifestLoadingTimeOut: 1e4,
manifestLoadingMaxRetry: 1,
manifestLoadingRetryDelay: 1e3,
manifestLoadingMaxRetryTimeout: 64e3,
startLevel: void 0,
levelLoadingTimeOut: 1e4,
levelLoadingMaxRetry: 4,
levelLoadingRetryDelay: 1e3,
levelLoadingMaxRetryTimeout: 64e3,
fragLoadingTimeOut: 2e4,
fragLoadingMaxRetry: 6,
fragLoadingRetryDelay: 1e3,
fragLoadingMaxRetryTimeout: 64e3,
startFragPrefetch: !1,
fpsDroppedMonitoringPeriod: 5e3,
fpsDroppedMonitoringThreshold: 0.2,
appendErrorMaxRetry: 3,
loader: _.default,
fLoader: void 0,
pLoader: void 0,
xhrSetup: void 0,
licenseXhrSetup: void 0,
licenseResponseCallback: void 0,
abrController: P.default,
bufferController: R.default,
capLevelController: D.default,
fpsController: p.default,
stretchShortVideoTrack: !1,
maxAudioFramesDrift: 1,
forceKeyFrameOnDiscontinuity: !0,
abrEwmaFastLive: 3,
abrEwmaSlowLive: 9,
abrEwmaFastVoD: 3,
abrEwmaSlowVoD: 9,
abrEwmaDefaultEstimate: 5e5,
abrBandWidthFactor: 0.95,
abrBandWidthUpFactor: 0.7,
abrMaxWithRealBitrate: !1,
maxStarvationDelay: 4,
maxLoadingDelay: 4,
minAutoBitrate: 0,
emeEnabled: !1,
widevineLicenseUrl: void 0,
drmSystemOptions: {},
requestMediaKeySystemAccessFunc: n.requestMediaKeySystemAccess,
testBandwidth: !0,
progressive: !1,
lowLatencyMode: !0,
cmcd: void 0,
enableDateRangeMetadataCues: !0,
enableEmsgMetadataCues: !0,
enableID3MetadataCues: !0
}, f()), {}, {
subtitleStreamController: C.SubtitleStreamController,
subtitleTrackController: F.default,
timelineController: T.TimelineController,
audioStreamController: y.default,
audioTrackController: O.default,
emeController: S.default,
cmcdController: b.default
});
function f() {
return {
cueHandler: l.default,
enableWebVTT: !0,
enableIMSC1: !0,
enableCEA708Captions: !0,
captionsTextTrack1Label: "English",
captionsTextTrack1LanguageCode: "en",
captionsTextTrack2Label: "Spanish",
captionsTextTrack2LanguageCode: "es",
captionsTextTrack3Label: "Unknown CC",
captionsTextTrack3LanguageCode: "",
captionsTextTrack4Label: "Unknown CC",
captionsTextTrack4LanguageCode: "",
renderTextTracksNatively: !0
};
}
function u(s, v) {
if ((v.liveSyncDurationCount || v.liveMaxLatencyDurationCount) && (v.liveSyncDuration || v.liveMaxLatencyDuration))
throw new Error("Illegal hls.js config: don't mix up liveSyncDurationCount/liveMaxLatencyDurationCount and liveSyncDuration/liveMaxLatencyDuration");
if (v.liveMaxLatencyDurationCount !== void 0 && (v.liveSyncDurationCount === void 0 || v.liveMaxLatencyDurationCount <= v.liveSyncDurationCount))
throw new Error('Illegal hls.js config: "liveMaxLatencyDurationCount" must be greater than "liveSyncDurationCount"');
if (v.liveMaxLatencyDuration !== void 0 && (v.liveSyncDuration === void 0 || v.liveMaxLatencyDuration <= v.liveSyncDuration))
throw new Error('Illegal hls.js config: "liveMaxLatencyDuration" must be greater than "liveSyncDuration"');
return d({}, s, v);
}
function m(s) {
var v = s.loader;
if (v !== E.default && v !== _.default)
t.logger.log("[config]: Custom loader detected, cannot enable progressive streaming"), s.progressive = !1;
else {
var c = (0, E.fetchSupported)();
c && (s.loader = E.default, s.progressive = !0, s.enableSoftwareAES = !0, t.logger.log("[config]: Progressive streaming enabled, using FetchLoader"));
}
}
},
"./src/controller/abr-controller.ts": (U, M, g) => {
g.r(M), g.d(M, {
default: () => S
});
var P = g("./src/polyfills/number.ts"), y = g("./src/utils/ewma-bandwidth-estimator.ts"), O = g("./src/events.ts"), C = g("./src/errors.ts"), F = g("./src/types/loader.ts"), R = g("./src/utils/logger.ts");
function T(b, _) {
for (var E = 0; E < _.length; E++) {
var l = _[E];
l.enumerable = l.enumerable || !1, l.configurable = !0, "value" in l && (l.writable = !0), Object.defineProperty(b, l.key, l);
}
}
function D(b, _, E) {
return _ && T(b.prototype, _), E && T(b, E), Object.defineProperty(b, "prototype", { writable: !1 }), b;
}
var p = /* @__PURE__ */ function() {
function b(E) {
this.hls = void 0, this.lastLoadedFragLevel = 0, this._nextAutoLevel = -1, this.timer = void 0, this.onCheck = this._abandonRulesCheck.bind(this), this.fragCurrent = null, this.partCurrent = null, this.bitrateTestDelay = 0, this.bwEstimator = void 0, this.hls = E;
var l = E.config;
this.bwEstimator = new y.default(l.abrEwmaSlowVoD, l.abrEwmaFastVoD, l.abrEwmaDefaultEstimate), this.registerListeners();
}
var _ = b.prototype;
return _.registerListeners = function() {
var l = this.hls;
l.on(O.Events.FRAG_LOADING, this.onFragLoading, this), l.on(O.Events.FRAG_LOADED, this.onFragLoaded, this), l.on(O.Events.FRAG_BUFFERED, this.onFragBuffered, this), l.on(O.Events.LEVEL_LOADED, this.onLevelLoaded, this), l.on(O.Events.ERROR, this.onError, this);
}, _.unregisterListeners = function() {
var l = this.hls;
l.off(O.Events.FRAG_LOADING, this.onFragLoading, this), l.off(O.Events.FRAG_LOADED, this.onFragLoaded, this), l.off(O.Events.FRAG_BUFFERED, this.onFragBuffered, this), l.off(O.Events.LEVEL_LOADED, this.onLevelLoaded, this), l.off(O.Events.ERROR, this.onError, this);
}, _.destroy = function() {
this.unregisterListeners(), this.clearTimer(), this.hls = this.onCheck = null, this.fragCurrent = this.partCurrent = null;
}, _.onFragLoading = function(l, n) {
var t = n.frag;
if (t.type === F.PlaylistLevelType.MAIN && !this.timer) {
var d;
this.fragCurrent = t, this.partCurrent = (d = n.part) != null ? d : null, this.timer = self.setInterval(this.onCheck, 100);
}
}, _.onLevelLoaded = function(l, n) {
var t = this.hls.config;
n.details.live ? this.bwEstimator.update(t.abrEwmaSlowLive, t.abrEwmaFastLive) : this.bwEstimator.update(t.abrEwmaSlowVoD, t.abrEwmaFastVoD);
}, _._abandonRulesCheck = function() {
var l = this.fragCurrent, n = this.partCurrent, t = this.hls, d = t.autoLevelEnabled;
t.config;
var h = t.media;
if (!(!l || !h)) {
var i = n ? n.stats : l.stats, r = n ? n.duration : l.duration;
if (i.aborted || i.loaded && i.loaded === i.total || l.level === 0) {
this.clearTimer(), this._nextAutoLevel = -1;
return;
}
if (!(!d || h.paused || !h.playbackRate || !h.readyState)) {
var e = t.mainForwardBufferInfo;
if (e !== null) {
var f = performance.now() - i.loading.start, u = Math.abs(h.playbackRate);
if (!(f <= 500 * r / u)) {
var m = i.loaded && i.loading.first, s = this.bwEstimator.getEstimate(), v = t.levels, c = t.minAutoLevel, o = v[l.level], a = i.total || Math.max(i.loaded, Math.round(r * o.maxBitrate / 8)), x = m ? i.loaded * 1e3 / f : 0, k = x ? (a - i.loaded) / x : a * 8 / s, K = e.len / u;
if (!(k <= K)) {
var w = Number.POSITIVE_INFINITY, W;
for (W = l.level - 1; W > c; W--) {
var z = v[W].maxBitrate;
if (w = x ? r * z / (8 * 0.8 * x) : r * z / s, w < K)
break;
}
w >= k || (R.logger.warn("Fragment " + l.sn + (n ? " part " + n.index : "") + " of level " + l.level + " is loading too slowly and will cause an underbuffer; aborting and switching to level " + W + `
Current BW estimate: ` + ((0, P.isFiniteNumber)(s) ? (s / 1024).toFixed(3) : "Unknown") + ` Kb/s
Estimated load time for current fragment: ` + k.toFixed(3) + ` s
Estimated load time for the next fragment: ` + w.toFixed(3) + ` s
Time to underbuffer: ` + K.toFixed(3) + " s"), t.nextLoadLevel = W, m && this.bwEstimator.sample(f, i.loaded), this.clearTimer(), l.loader && (this.fragCurrent = this.partCurrent = null, l.loader.abort()), t.trigger(O.Events.FRAG_LOAD_EMERGENCY_ABORTED, {
frag: l,
part: n,
stats: i
}));
}
}
}
}
}
}, _.onFragLoaded = function(l, n) {
var t = n.frag, d = n.part;
if (t.type === F.PlaylistLevelType.MAIN && (0, P.isFiniteNumber)(t.sn)) {
var h = d ? d.stats : t.stats, i = d ? d.duration : t.duration;
if (this.clearTimer(), this.lastLoadedFragLevel = t.level, this._nextAutoLevel = -1, this.hls.config.abrMaxWithRealBitrate) {
var r = this.hls.levels[t.level], e = (r.loaded ? r.loaded.bytes : 0) + h.loaded, f = (r.loaded ? r.loaded.duration : 0) + i;
r.loaded = {
bytes: e,
duration: f
}, r.realBitrate = Math.round(8 * e / f);
}
if (t.bitrateTest) {
var u = {
stats: h,
frag: t,
part: d,
id: t.type
};
this.onFragBuffered(O.Events.FRAG_BUFFERED, u);
}
}
}, _.onFragBuffered = function(l, n) {
var t = n.frag, d = n.part, h = d ? d.stats : t.stats;
if (!h.aborted && !(t.type !== F.PlaylistLevelType.MAIN || t.sn === "initSegment")) {
var i = h.parsing.end - h.loading.start;
this.bwEstimator.sample(i, h.loaded), h.bwEstimate = this.bwEstimator.getEstimate(), t.bitrateTest ? this.bitrateTestDelay = i / 1e3 : this.bitrateTestDelay = 0;
}
}, _.onError = function(l, n) {
switch (n.details) {
case C.ErrorDetails.FRAG_LOAD_ERROR:
case C.ErrorDetails.FRAG_LOAD_TIMEOUT:
this.clearTimer();
break;
}
}, _.clearTimer = function() {
self.clearInterval(this.timer), this.timer = void 0;
}, _.getNextABRAutoLevel = function() {
var l = this.fragCurrent, n = this.partCurrent, t = this.hls, d = t.maxAutoLevel, h = t.config, i = t.minAutoLevel, r = t.media, e = n ? n.duration : l ? l.duration : 0;
r && r.currentTime;
var f = r && r.playbackRate !== 0 ? Math.abs(r.playbackRate) : 1, u = this.bwEstimator ? this.bwEstimator.getEstimate() : h.abrEwmaDefaultEstimate, m = t.mainForwardBufferInfo, s = (m ? m.len : 0) / f, v = this.findBestLevel(u, i, d, s, h.abrBandWidthFactor, h.abrBandWidthUpFactor);
if (v >= 0)
return v;
R.logger.trace((s ? "rebuffering expected" : "buffer is empty") + ", finding optimal quality level");
var c = e ? Math.min(e, h.maxStarvationDelay) : h.maxStarvationDelay, o = h.abrBandWidthFactor, a = h.abrBandWidthUpFactor;
if (!s) {
var x = this.bitrateTestDelay;
if (x) {
var k = e ? Math.min(e, h.maxLoadingDelay) : h.maxLoadingDelay;
c = k - x, R.logger.trace("bitrate test took " + Math.round(1e3 * x) + "ms, set first fragment max fetchDuration to " + Math.round(1e3 * c) + " ms"), o = a = 1;
}
}
return v = this.findBestLevel(u, i, d, s + c, o, a), Math.max(v, 0);
}, _.findBestLevel = function(l, n, t, d, h, i) {
for (var r, e = this.fragCurrent, f = this.partCurrent, u = this.lastLoadedFragLevel, m = this.hls.levels, s = m[u], v = !!(s != null && (r = s.details) !== null && r !== void 0 && r.live), c = s == null ? void 0 : s.codecSet, o = f ? f.duration : e ? e.duration : 0, a = t; a >= n; a--) {
var x = m[a];
if (!(!x || c && x.codecSet !== c)) {
var k = x.details, K = (f ? k == null ? void 0 : k.partTarget : k == null ? void 0 : k.averagetargetduration) || o, w = void 0;
a <= u ? w = h * l : w = i * l;
var W = m[a].maxBitrate, z = W * K / w;
if (R.logger.trace("level/adjustedbw/bitrate/avgDuration/maxFetchDuration/fetchDuration: " + a + "/" + Math.round(w) + "/" + W + "/" + K + "/" + d + "/" + z), w > W && (z === 0 || !(0, P.isFiniteNumber)(z) || v && !this.bitrateTestDelay || z < d))
return a;
}
}
return -1;
}, D(b, [{
key: "nextAutoLevel",
get: function() {
var l = this._nextAutoLevel, n = this.bwEstimator;
if (l !== -1 && !n.canEstimate())
return l;
var t = this.getNextABRAutoLevel();
return l !== -1 && this.hls.levels[t].loadError ? l : (l !== -1 && (t = Math.min(l, t)), t);
},
set: function(l) {
this._nextAutoLevel = l;
}
}]), b;
}();
const S = p;
},
"./src/controller/audio-stream-controller.ts": (U, M, g) => {
g.r(M), g.d(M, {
default: () => r
});
var P = g("./src/polyfills/number.ts"), y = g("./src/controller/base-stream-controller.ts"), O = g("./src/events.ts"), C = g("./src/utils/buffer-helper.ts"), F = g("./src/controller/fragment-tracker.ts"), R = g("./src/types/level.ts"), T = g("./src/types/loader.ts"), D = g("./src/loader/fragment.ts"), p = g("./src/demux/chunk-cache.ts"), S = g("./src/demux/transmuxer-interface.ts"), b = g("./src/types/transmuxer.ts"), _ = g("./src/controller/fragment-finders.ts"), E = g("./src/utils/discontinuities.ts"), l = g("./src/errors.ts");
function n() {
return n = Object.assign ? Object.assign.bind() : function(e) {
for (var f = 1; f < arguments.length; f++) {
var u = arguments[f];
for (var m in u)
Object.prototype.hasOwnProperty.call(u, m) && (e[m] = u[m]);
}
return e;
}, n.apply(this, arguments);
}
function t(e, f) {
e.prototype = Object.create(f.prototype), e.prototype.constructor = e, d(e, f);
}
function d(e, f) {
return d = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(m, s) {
return m.__proto__ = s, m;
}, d(e, f);
}
var h = 100, i = /* @__PURE__ */ function(e) {
t(f, e);
function f(m, s) {
var v;
return v = e.call(this, m, s, "[audio-stream-controller]") || this, v.videoBuffer = null, v.videoTrackCC = -1, v.waitingVideoCC = -1, v.audioSwitch = !1, v.trackId = -1, v.waitingData = null, v.mainDetails = null, v.bufferFlushed = !1, v.cachedTrackLoadedData = null, v._registerListeners(), v;
}
var u = f.prototype;
return u.onHandlerDestroying = function() {
this._unregisterListeners(), this.mainDetails = null;
}, u._registerListeners = function() {
var s = this.hls;
s.on(O.Events.MEDIA_ATTACHED, this.onMediaAttached, this), s.on(O.Events.MEDIA_DETACHING, this.onMediaDetaching, this), s.on(O.Events.MANIFEST_LOADING, this.onManifestLoading, this), s.on(O.Events.LEVEL_LOADED, this.onLevelLoaded, this), s.on(O.Events.AUDIO_TRACKS_UPDATED, this.onAudioTracksUpdated, this), s.on(O.Events.AUDIO_TRACK_SWITCHING, this.onAudioTrackSwitching, this), s.on(O.Events.AUDIO_TRACK_LOADED, this.onAudioTrackLoaded, this), s.on(O.Events.ERROR, this.onError, this), s.on(O.Events.BUFFER_RESET, this.onBufferReset, this), s.on(O.Events.BUFFER_CREATED, this.onBufferCreated, this), s.on(O.Events.BUFFER_FLUSHED, this.onBufferFlushed, this), s.on(O.Events.INIT_PTS_FOUND, this.onInitPtsFound, this), s.on(O.Events.FRAG_BUFFERED, this.onFragBuffered, this);
}, u._unregisterListeners = function() {
var s = this.hls;
s.off(O.Events.MEDIA_ATTACHED, this.onMediaAttached, this), s.off(O.Events.MEDIA_DETACHING, this.onMediaDetaching, this), s.off(O.Events.MANIFEST_LOADING, this.onManifestLoading, this), s.off(O.Events.LEVEL_LOADED, this.onLevelLoaded, this), s.off(O.Events.AUDIO_TRACKS_UPDATED, this.onAudioTracksUpdated, this), s.off(O.Events.AUDIO_TRACK_SWITCHING, this.onAudioTrackSwitching, this), s.off(O.Events.AUDIO_TRACK_LOADED, this.onAudioTrackLoaded, this), s.off(O.Events.ERROR, this.onError, this), s.off(O.Events.BUFFER_RESET, this.onBufferReset, this), s.off(O.Events.BUFFER_CREATED, this.onBufferCreated, this), s.off(O.Events.BUFFER_FLUSHED, this.onBufferFlushed, this), s.off(O.Events.INIT_PTS_FOUND, this.onInitPtsFound, this), s.off(O.Events.FRAG_BUFFERED, this.onFragBuffered, this);
}, u.onInitPtsFound = function(s, v) {
var c = v.frag, o = v.id, a = v.initPTS;
if (o === "main") {
var x = c.cc;
this.initPTS[c.cc] = a, this.log("InitPTS for cc: " + x + " found from main: " + a), this.videoTrackCC = x, this.state === y.State.WAITING_INIT_PTS && this.tick();
}
}, u.startLoad = function(s) {
if (!this.levels) {
this.startPosition = s, this.state = y.State.STOPPED;
return;
}
var v = this.lastCurrentTime;
this.stopLoad(), this.setInterval(h), this.fragLoadError = 0, v > 0 && s === -1 ? (this.log("Override startPosition with lastCurrentTime @" + v.toFixed(3)), s = v, this.state = y.State.IDLE) : (this.loadedmetadata = !1, this.state = y.State.WAITING_TRACK), this.nextLoadPosition = this.startPosition = this.lastCurrentTime = s, this.tick();
}, u.doTick = function() {
switch (this.state) {
case y.State.IDLE:
this.doTickIdle();
break;
case y.State.WAITING_TRACK: {
var s, v = this.levels, c = this.trackId, o = v == null || (s = v[c]) === null || s === void 0 ? void 0 : s.details;
if (o) {
if (this.waitForCdnTuneIn(o))
break;
this.state = y.State.WAITING_INIT_PTS;
}
break;
}
case y.State.FRAG_LOADING_WAITING_RETRY: {
var a, x = performance.now(), k = this.retryDate;
(!k || x >= k || (a = this.media) !== null && a !== void 0 && a.seeking) && (this.log("RetryDate reached, switch back to IDLE state"), this.resetStartWhenNotLoaded(this.trackId), this.state = y.State.IDLE);
break;
}
case y.State.WAITING_INIT_PTS: {
var K = this.waitingData;
if (K) {
var w = K.frag, W = K.part, z = K.cache, H = K.complete;
if (this.initPTS[w.cc] !== void 0) {
this.waitingData = null, this.waitingVideoCC = -1, this.state = y.State.FRAG_LOADING;
var j = z.flush(), Y = {
frag: w,
part: W,
payload: j,
networkDetails: null
};
this._handleFragmentLoadProgress(Y), H && e.prototype._handleFragmentLoadComplete.call(this, Y);
} else if (this.videoTrackCC !== this.waitingVideoCC)
this.log("Waiting fragment cc (" + w.cc + ") cancelled because video is at cc " + this.videoTrackCC), this.clearWaitingFragment();
else {
var Z = this.getLoadPosition(), q = C.BufferHelper.bufferInfo(this.mediaBuffer, Z, this.config.maxBufferHole), ee = (0, _.fragmentWithinToleranceTest)(q.end, this.config.maxFragLookUpTolerance, w);
ee < 0 && (this.log("Waiting fragment cc (" + w.cc + ") @ " + w.start + " cancelled because another fragment at " + q.end + " is needed"), this.clearWaitingFragment());
}
} else
this.state = y.State.IDLE;
}
}
this.onTickEnd();
}, u.clearWaitingFragment = function() {
var s = this.waitingData;
s && (this.fragmentTracker.removeFragment(s.frag), this.waitingData = null, this.waitingVideoCC = -1, this.state = y.State.IDLE);
}, u.resetLoadingState = function() {
this.clearWaitingFragment(), e.prototype.resetLoadingState.call(this);
}, u.onTickEnd = function() {
var s = this.media;
if (!(!s || !s.readyState)) {
var v = this.mediaBuffer ? this.mediaBuffer : s, c = v.buffered;
!this.loadedmetadata && c.length && (this.loadedmetadata = !0), this.lastCurrentTime = s.currentTime;
}
}, u.doTickIdle = function() {
var s, v, c = this.hls, o = this.levels, a = this.media, x = this.trackId, k = c.config;
if (!(!o || !o[x]) && !(!a && (this.startFragRequested || !k.startFragPrefetch))) {
var K = o[x], w = K.details;
if (!w || w.live && this.levelLastLoaded !== x || this.waitForCdnTuneIn(w)) {
this.state = y.State.WAITING_TRACK;
return;
}
var W = this.mediaBuffer ? this.mediaBuffer : this.media;
this.bufferFlushed && W && (this.bufferFlushed = !1, this.afterBufferFlushed(W, D.ElementaryStreamTypes.AUDIO, T.PlaylistLevelType.AUDIO));
var z = this.getFwdBufferInfo(W, T.PlaylistLevelType.AUDIO);
if (z !== null) {
var H = this.getFwdBufferInfo(this.videoBuffer ? this.videoBuffer : this.media, T.PlaylistLevelType.MAIN), j = z.len, Y = this.getMaxBufferLength(H == null ? void 0 : H.len), Z = this.audioSwitch;
if (!(j >= Y && !Z)) {
if (!Z && this._streamEnded(z, w)) {
c.trigger(O.Events.BUFFER_EOS, {
type: "audio"
}), this.state = y.State.ENDED;
return;
}
var q = w.fragments, ee = q[0].start, te = z.end;
if (Z && a) {
var ne = this.getLoadPosition();
te = ne, w.PTSKnown && ne < ee && (z.end > ee || z.nextStart) && (this.log("Alt audio track ahead of main track, seek to start of alt audio track"), a.currentTime = ee + 0.05);
}
if (!(H && te > H.end + w.targetduration) && !((!H || !H.len) && z.len)) {
var ie = this.getNextFragment(te, w);
if (!ie) {
this.bufferFlushed = !0;
return;
}
((s = ie.decryptdata) === null || s === void 0 ? void 0 : s.keyFormat) === "identity" && !((v = ie.decryptdata) !== null && v !== void 0 && v.key) ? this.loadKey(ie, w) : this.loadFragment(ie, w, te);
}
}
}
}
}, u.getMaxBufferLength = function(s) {
var v = e.prototype.getMaxBufferLength.call(this);
return s ? Math.max(v, s) : v;
}, u.onMediaDetaching = function() {
this.videoBuffer = null, e.prototype.onMediaDetaching.call(this);
}, u.onAudioTracksUpdated = function(s, v) {
var c = v.audioTracks;
this.resetTransmuxer(), this.levels = c.map(function(o) {
return new R.Level(o);
});
}, u.onAudioTrackSwitching = function(s, v) {
var c = !!v.url;
this.trackId = v.id;
var o = this.fragCurrent;
o != null && o.loader && o.loader.abort(), this.fragCurrent = null, this.clearWaitingFragment(), c ? this.setInterval(h) : this.resetTransmuxer(), c ? (this.audioSwitch = !0, this.state = y.State.IDLE) : this.state = y.State.STOPPED, this.tick();
}, u.onManifestLoading = function() {
this.mainDetails = null, this.fragmentTracker.removeAllFragments(), this.startPosition = this.lastCurrentTime = 0, this.bufferFlushed = !1;
}, u.onLevelLoaded = function(s, v) {
this.mainDetails = v.details, this.cachedTrackLoadedData !== null && (this.hls.trigger(O.Events.AUDIO_TRACK_LOADED, this.cachedTrackLoadedData), this.cachedTrackLoadedData = null);
}, u.onAudioTrackLoaded = function(s, v) {
var c;
if (this.mainDetails == null) {
this.cachedTrackLoadedData = v;
return;
}
var o = this.levels, a = v.details, x = v.id;
if (!o) {
this.warn("Audio tracks were reset while loading level " + x);
return;
}
this.log("Track " + x + " loaded [" + a.startSN + "," + a.endSN + "],duration:" + a.totalduration);
var k = o[x], K = 0;
if (a.live || (c = k.details) !== null && c !== void 0 && c.live) {
var w = this.mainDetails;
if (a.fragments[0] || (a.deltaUpdateFailed = !0), a.deltaUpdateFailed || !w)
return;
!k.details && a.hasProgramDateTime && w.hasProgramDateTime ? ((0, E.alignMediaPlaylistByPDT)(a, w), K = a.fragments[0].start) : K = this.alignPlaylists(a, k.details);
}
k.details = a, this.levelLastLoaded = x, !this.startFragRequested && (this.mainDetails || !a.live) && this.setStartPosition(k.details, K), this.state === y.State.WAITING_TRACK && !this.waitForCdnTuneIn(a) && (this.state = y.State.IDLE), this.tick();
}, u._handleFragmentLoadProgress = function(s) {
var v, c = s.frag, o = s.part, a = s.payload, x = this.config, k = this.trackId, K = this.levels;
if (!K) {
this.warn("Audio tracks were reset while fragment load was in progress. Fragment " + c.sn + " of level " + c.level + " will not be buffered");
return;
}
var w = K[k];
console.assert(w, "Audio track is defined on fragment load progress");
var W = w.details;
console.assert(W, "Audio track details are defined on fragment load progress");
var z = x.defaultAudioCodec || w.audioCodec || "mp4a.40.2", H = this.transmuxer;
H || (H = this.transmuxer = new S.default(this.hls, T.PlaylistLevelType.AUDIO, this._handleTransmuxComplete.bind(this), this._handleTransmuxerFlush.bind(this)));
var j = this.initPTS[c.cc], Y = (v = c.initSegment) === null || v === void 0 ? void 0 : v.data;
if (j !== void 0) {
var Z = !1, q = o ? o.index : -1, ee = q !== -1, te = new b.ChunkMetadata(c.level, c.sn, c.stats.chunkCount, a.byteLength, q, ee);
H.push(a, Y, z, "", c, o, W.totalduration, Z, te, j);
} else {
this.log("Unknown video PTS for cc " + c.cc + ", waiting for video PTS before demuxing audio frag " + c.sn + " of [" + W.startSN + " ," + W.endSN + "],track " + k);
var ne = this.waitingData = this.waitingData || {
frag: c,
part: o,
cache: new p.default(),
complete: !1
}, ie = ne.cache;
ie.push(new Uint8Array(a)), this.waitingVideoCC = this.videoTrackCC, this.state = y.State.WAITING_INIT_PTS;
}
}, u._handleFragmentLoadComplete = function(s) {
if (this.waitingData) {
this.waitingData.complete = !0;
return;
}
e.prototype._handleFragmentLoadComplete.call(this, s);
}, u.onBufferReset = function() {
this.mediaBuffer = this.videoBuffer = null, this.loadedmetadata = !1;
}, u.onBufferCreated = function(s, v) {
var c = v.tracks.audio;
c && (this.mediaBuffer = c.buffer || null), v.tracks.video && (this.videoBuffer = v.tracks.video.buffer || null);
}, u.onFragBuffered = function(s, v) {
var c = v.frag, o = v.part;
if (c.type === T.PlaylistLevelType.AUDIO) {
if (this.fragContextChanged(c)) {
this.warn("Fragment " + c.sn + (o ? " p: " + o.index : "") + " of level " + c.level + " finished buffering, but was aborted. state: " + this.state + ", audioSwitch: " + this.audioSwitch);
return;
}
c.sn !== "initSegment" && (this.fragPrevious = c, this.audioSwitch && (this.audioSwitch = !1, this.hls.trigger(O.Events.AUDIO_TRACK_SWITCHED, {
id: this.trackId
}))), this.fragBufferedComplete(c, o);
}
}, u.onError = function(s, v) {
switch (v.details) {
case l.ErrorDetails.FRAG_LOAD_ERROR:
case l.ErrorDetails.FRAG_LOAD_TIMEOUT:
case l.ErrorDetails.KEY_LOAD_ERROR:
case l.ErrorDetails.KEY_LOAD_TIMEOUT:
this.onFragmentOrKeyLoadError(T.PlaylistLevelType.AUDIO, v);
break;
case l.ErrorDetails.AUDIO_TRACK_LOAD_ERROR:
case l.ErrorDetails.AUDIO_TRACK_LOAD_TIMEOUT:
this.state !== y.State.ERROR && this.state !== y.State.STOPPED && (this.state = v.fatal ? y.State.ERROR : y.State.IDLE, this.warn(v.details + " while loading frag, switching to " + this.state + " state"));
break;
case l.ErrorDetails.BUFFER_FULL_ERROR:
if (v.parent === "audio" && (this.state === y.State.PARSING || this.state === y.State.PARSED)) {
var c = !0, o = this.getFwdBufferInfo(this.mediaBuffer, T.PlaylistLevelType.AUDIO);
o && o.len > 0.5 && (c = !this.reduceMaxBufferLength(o.len)), c && (this.warn("Buffer full error also media.currentTime is not buffered, flush audio buffer"), this.fragCurrent = null, e.prototype.flushMainBuffer.call(this, 0, Number.POSITIVE_INFINITY, "audio")), this.resetLoadingState();
}
break;
}
}, u.onBufferFlushed = function(s, v) {
var c = v.type;
c === D.ElementaryStreamTypes.AUDIO && (this.bufferFlushed = !0);
}, u._handleTransmuxComplete = function(s) {
var v, c = "audio", o = this.hls, a = s.remuxResult, x = s.chunkMeta, k = this.getCurrentContext(x);
if (!k) {
this.warn("The loading context changed while buffering fragment " + x.sn + " of level " + x.level + ". This chunk will not be buffered."), this.resetStartWhenNotLoaded(x.level);
return;
}
var K = k.frag, w = k.part, W = k.level.details, z = a.audio, H = a.text, j = a.id3, Y = a.initSegment;
if (!(this.fragContextChanged(K) || !W)) {
if (this.state = y.State.PARSING, this.audioSwitch && z && this.completeAudioSwitch(), Y != null && Y.tracks && (this._bufferInitSegment(Y.tracks, K, x), o.trigger(O.Events.FRAG_PARSING_INIT_SEGMENT, {
frag: K,
id: c,
tracks: Y.tracks
})), z) {
var Z = z.startPTS, q = z.endPTS, ee = z.startDTS, te = z.endDTS;
w && (w.elementaryStreams[D.ElementaryStreamTypes.AUDIO] = {
startPTS: Z,
endPTS: q,
startDTS: ee,
endDTS: te
}), K.setElementaryStreamInfo(D.ElementaryStreamTypes.AUDIO, Z, q, ee, te), this.bufferFragmentData(z, K, w, x);
}
if (j != null && (v = j.samples) !== null && v !== void 0 && v.length) {
var ne = n({
id: c,
frag: K,
details: W
}, j);
o.trigger(O.Events.FRAG_PARSING_METADATA, ne);
}
if (H) {
var ie = n({
id: c,
frag: K,
details: W
}, H);
o.trigger(O.Events.FRAG_PARSING_USERDATA, ie);
}
}
}, u._bufferInitSegment = function(s, v, c) {
if (this.state === y.State.PARSING) {
s.video && delete s.video;
var o = s.audio;
if (!!o) {
o.levelCodec = o.codec, o.id = "audio", this.log("Init audio buffer, container:" + o.container + ", codecs[parsed]=[" + o.codec + "]"), this.hls.trigger(O.Events.BUFFER_CODECS, s);
var a = o.initSegment;
if (a != null && a.byteLength) {
var x = {
type: "audio",
frag: v,
part: null,
chunkMeta: c,
parent: v.type,
data: a
};
this.hls.trigger(O.Events.BUFFER_APPENDING, x);
}
this.tick();
}
}
}, u.loadFragment = function(s, v, c) {
var o = this.fragmentTracker.getState(s);
this.fragCurrent = s, (this.audioSwitch || o === F.FragmentState.NOT_LOADED || o === F.FragmentState.PARTIAL) && (s.sn === "initSegment" ? this._loadInitSegment(s) : v.live && !(0, P.isFiniteNumber)(this.initPTS[s.cc]) ? (this.log("Waiting for video PTS in continuity counter " + s.cc + " of live stream before loading audio fragment " + s.sn + " of level " + this.trackId), this.state = y.State.WAITING_INIT_PTS) : (this.startFragRequested = !0, e.prototype.loadFragment.call(this, s, v, c)));
}, u.completeAudioSwitch = function() {
var s = this.hls, v = this.media, c = this.trackId;
v && (this.log("Switching audio track : flushing all audio"), e.prototype.flushMainBuffer.call(this, 0, Number.POSITIVE_INFINITY, "audio")), this.audioSwitch = !1, s.trigger(O.Events.AUDIO_TRACK_SWITCHED, {
id: c
});
}, f;
}(y.default);
const r = i;
},
"./src/controller/audio-track-controller.ts": (U, M, g) => {
g.r(M), g.d(M, {
default: () => S
});
var P = g("./src/events.ts"), y = g("./src/errors.ts"), O = g("./src/controller/base-playlist-controller.ts"), C = g("./src/types/loader.ts");
function F(b, _) {
for (var E = 0; E < _.length; E++) {
var l = _[E];
l.enumerable = l.enumerable || !1, l.configurable = !0, "value" in l && (l.writable = !0), Object.defineProperty(b, l.key, l);
}
}
function R(b, _, E) {
return _ && F(b.prototype, _), E && F(b, E), Object.defineProperty(b, "prototype", { writable: !1 }), b;
}
function T(b, _) {
b.prototype = Object.create(_.prototype), b.prototype.constructor = b, D(b, _);
}
function D(b, _) {
return D = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(l, n) {
return l.__proto__ = n, l;
}, D(b, _);
}
var p = /* @__PURE__ */ function(b) {
T(_, b);
function _(l) {
var n;
return n = b.call(this, l, "[audio-track-controller]") || this, n.tracks = [], n.groupId = null, n.tracksInGroup = [], n.trackId = -1, n.trackName = "", n.selectDefaultTrack = !0, n.registerListeners(), n;
}
var E = _.prototype;
return E.registerListeners = function() {
var n = this.hls;
n.on(P.Events.MANIFEST_LOADING, this.onManifestLoading, this), n.on(P.Events.MANIFEST_PARSED, this.onManifestParsed, this), n.on(P.Events.LEVEL_LOADING, this.onLevelLoading, this), n.on(P.Events.LEVEL_SWITCHING, this.onLevelSwitching, this), n.on(P.Events.AUDIO_TRACK_LOADED, this.onAudioTrackLoaded, this), n.on(P.Events.ERROR, this.onError, this);
}, E.unregisterListeners = function() {
var n = this.hls;
n.off(P.Events.MANIFEST_LOADING, this.onManifestLoading, this), n.off(P.Events.MANIFEST_PARSED, this.onManifestParsed, this), n.off(P.Events.LEVEL_LOADING, this.onLevelLoading, this), n.off(P.Events.LEVEL_SWITCHING, this.onLevelSwitching, this), n.off(P.Events.AUDIO_TRACK_LOADED, this.onAudioTrackLoaded, this), n.off(P.Events.ERROR, this.onError, this);
}, E.destroy = function() {
this.unregisterListeners(), this.tracks.length = 0, this.tracksInGroup.length = 0, b.prototype.destroy.call(this);
}, E.onManifestLoading = function() {
this.tracks = [], this.groupId = null, this.tracksInGroup = [], this.trackId = -1, this.trackName = "", this.selectDefaultTrack = !0;
}, E.onManifestParsed = function(n, t) {
this.tracks = t.audioTracks || [];
}, E.onAudioTrackLoaded = function(n, t) {
var d = t.id, h = t.details, i = this.tracksInGroup[d];
if (!i) {
this.warn("Invalid audio track id " + d);
return;
}
var r = i.details;
i.details = t.details, this.log("audioTrack " + d + " loaded [" + h.startSN + "-" + h.endSN + "]"), d === this.trackId && (this.retryCount = 0, this.playlistLoaded(d, t, r));
}, E.onLevelLoading = function(n, t) {
this.switchLevel(t.level);
}, E.onLevelSwitching = function(n, t) {
this.switchLevel(t.level);
}, E.switchLevel = function(n) {
var t = this.hls.levels[n];
if (!!(t != null && t.audioGroupIds)) {
var d = t.audioGroupIds[t.urlId];
if (this.groupId !== d) {
this.groupId = d;
var h = this.tracks.filter(function(r) {
return !d || r.groupId === d;
});
this.selectDefaultTrack && !h.some(function(r) {
return r.default;
}) && (this.selectDefaultTrack = !1), this.tracksInGroup = h;
var i = {
audioTracks: h
};
this.log("Updating audio tracks, " + h.length + ' track(s) found in "' + d + '" group-id'), this.hls.trigger(P.Events.AUDIO_TRACKS_UPDATED, i), this.selectInitialTrack();
}
}
}, E.onError = function(n, t) {
b.prototype.onError.call(this, n, t), !(t.fatal || !t.context) && t.context.type === C.PlaylistContextType.AUDIO_TRACK && t.context.id === this.trackId && t.context.groupId === this.groupId && this.retryLoadingOrFail(t);
}, E.setAudioTrack = function(n) {
var t = this.tracksInGroup;
if (n < 0 || n >= t.length) {
this.warn("Invalid id passed to audio-track controller");
return;
}
this.clearTimer();
var d = t[this.trackId];
this.log("Now switching to audio-track index " + n);
var h = t[n], i = h.id, r = h.groupId, e = r === void 0 ? "" : r, f = h.name, u = h.type, m = h.url;
if (this.trackId = n, this.trackName = f, this.selectDefaultTrack = !1, this.hls.trigger(P.Events.AUDIO_TRACK_SWITCHING, {
id: i,
groupId: e,
name: f,
type: u,
url: m
}), !(h.details && !h.details.live)) {
var s = this.switchParams(h.url, d == null ? void 0 : d.details);
this.loadPlaylist(s);
}
}, E.selectInitialTrack = function() {
var n = this.tracksInGroup;
console.assert(n.length, "Initial audio track should be selected when tracks are known");
var t = this.trackName, d = this.findTrackId(t) || this.findTrackId();
d !== -1 ? this.setAudioTrack(d) : (this.warn("No track found for running audio group-ID: " + this.groupId), this.hls.trigger(P.Events.ERROR, {
type: y.ErrorTypes.MEDIA_ERROR,
details: y.ErrorDetails.AUDIO_TRACK_LOAD_ERROR,
fatal: !0
}));
}, E.findTrackId = function(n) {
for (var t = this.tracksInGroup, d = 0; d < t.length; d++) {
var h = t[d];
if ((!this.selectDefaultTrack || h.default) && (!n || n === h.name))
return h.id;
}
return -1;
}, E.loadPlaylist = function(n) {
var t = this.tracksInGroup[this.trackId];
if (this.shouldLoadTrack(t)) {
var d = t.id, h = t.groupId, i = t.url;
if (n)
try {
i = n.addDirectives(i);
} catch (r) {
this.warn("Could not construct new URL with HLS Delivery Directives: " + r);
}
this.log("loading audio-track playlist for id: " + d), this.clearTimer(), this.hls.trigger(P.Events.AUDIO_TRACK_LOADING, {
url: i,
id: d,
groupId: h,
deliveryDirectives: n || null
});
}
}, R(_, [{
key: "audioTracks",
get: function() {
return this.tracksInGroup;
}
}, {
key: "audioTrack",
get: function() {
return this.trackId;
},
set: function(n) {
this.selectDefaultTrack = !1, this.setAudioTrack(n);
}
}]), _;
}(O.default);
const S = p;
},
"./src/controller/base-playlist-controller.ts": (U, M, g) => {
g.r(M), g.d(M, {
default: () => R
});
var P = g("./src/polyfills/number.ts"), y = g("./src/types/level.ts"), O = g("./src/controller/level-helper.ts"), C = g("./src/utils/logger.ts"), F = g("./src/errors.ts"), R = /* @__PURE__ */ function() {
function T(p, S) {
this.hls = void 0, this.timer = -1, this.canLoad = !1, this.retryCount = 0, this.log = void 0, this.warn = void 0, this.log = C.logger.log.bind(C.logger, S + ":"), this.warn = C.logger.warn.bind(C.logger, S + ":"), this.hls = p;
}
var D = T.prototype;
return D.destroy = function() {
this.clearTimer(), this.hls = this.log = this.warn = null;
}, D.onError = function(S, b) {
b.fatal && b.type === F.ErrorTypes.NETWORK_ERROR && this.clearTimer();
}, D.clearTimer = function() {
clearTimeout(this.timer), this.timer = -1;
}, D.startLoad = function() {
this.canLoad = !0, this.retryCount = 0, this.loadPlaylist();
}, D.stopLoad = function() {
this.canLoad = !1, this.clearTimer();
}, D.switchParams = function(S, b) {
var _ = b == null ? void 0 : b.renditionReports;
if (_)
for (var E = 0; E < _.length; E++) {
var l = _[E], n = "" + l.URI;
if (n === S.slice(-n.length)) {
var t = parseInt(l["LAST-MSN"]), d = parseInt(l["LAST-PART"]);
if (b && this.hls.config.lowLatencyMode) {
var h = Math.min(b.age - b.partTarget, b.targetduration);
d !== void 0 && h > b.partTarget && (d += 1);
}
if ((0, P.isFiniteNumber)(t))
return new y.HlsUrlParameters(t, (0, P.isFiniteNumber)(d) ? d : void 0, y.HlsSkip.No);
}
}
}, D.loadPlaylist = function(S) {
}, D.shouldLoadTrack = function(S) {
return this.canLoad && S && !!S.url && (!S.details || S.details.live);
}, D.playlistLoaded = function(S, b, _) {
var E = this, l = b.details, n = b.stats, t = n.loading.end ? Math.max(0, self.performance.now() - n.loading.end) : 0;
if (l.advancedDateTime = Date.now() - t, l.live || _ != null && _.live) {
if (l.reloaded(_), _ && this.log("live playlist " + S + " " + (l.advanced ? "REFRESHED " + l.lastPartSn + "-" + l.lastPartIndex : "MISSED")), _ && l.fragments.length > 0 && (0, O.mergeDetails)(_, l), !this.canLoad || !l.live)
return;
var d, h = void 0, i = void 0;
if (l.canBlockReload && l.endSN && l.advanced) {
var r = this.hls.config.lowLatencyMode, e = l.lastPartSn, f = l.endSN, u = l.lastPartIndex, m = u !== -1, s = e === f, v = r ? 0 : u;
m ? (h = s ? f + 1 : e, i = s ? v : u + 1) : h = f + 1;
var c = l.age, o = c + l.ageHeader, a = Math.min(o - l.partTarget, l.targetduration * 1.5);
if (a > 0) {
if (_ && a > _.tuneInGoal)
this.warn("CDN Tune-in goal increased from: " + _.tuneInGoal + " to: " + a + " with playlist age: " + l.age), a = 0;
else {
var x = Math.floor(a / l.targetduration);
if (h += x, i !== void 0) {
var k = Math.round(a % l.targetduration / l.partTarget);
i += k;
}
this.log("CDN Tune-in age: " + l.ageHeader + "s last advanced " + c.toFixed(2) + "s goal: " + a + " skip sn " + x + " to part " + i);
}
l.tuneInGoal = a;
}
if (d = this.getDeliveryDirectives(l, b.deliveryDirectives, h, i), r || !s) {
this.loadPlaylist(d);
return;
}
} else
d = this.getDeliveryDirectives(l, b.deliveryDirectives, h, i);
var K = (0, O.computeReloadInterval)(l, n);
h !== void 0 && l.canBlockReload && (K -= l.partTarget || 1), this.log("reload live playlist " + S + " in " + Math.round(K) + " ms"), this.timer = self.setTimeout(function() {
return E.loadPlaylist(d);
}, K);
} else
this.clearTimer();
}, D.getDeliveryDirectives = function(S, b, _, E) {
var l = (0, y.getSkipValue)(S, _);
return b != null && b.skip && S.deltaUpdateFailed && (_ = b.msn, E = b.part, l = y.HlsSkip.No), new y.HlsUrlParameters(_, E, l);
}, D.retryLoadingOrFail = function(S) {
var b = this, _ = this.hls.config, E = this.retryCount < _.levelLoadingMaxRetry;
if (E) {
var l;
if (this.retryCount++, S.details.indexOf("LoadTimeOut") > -1 && (l = S.context) !== null && l !== void 0 && l.deliveryDirectives)
this.warn("retry playlist loading #" + this.retryCount + ' after "' + S.details + '"'), this.loadPlaylist();
else {
var n = Math.min(Math.pow(2, this.retryCount) * _.levelLoadingRetryDelay, _.levelLoadingMaxRetryTimeout);
this.timer = self.setTimeout(function() {
return b.loadPlaylist();
}, n), this.warn("retry playlist loading #" + this.retryCount + " in " + n + ' ms after "' + S.details + '"');
}
} else
this.warn('cannot recover from error "' + S.details + '"'), this.clearTimer(), S.fatal = !0;
return E;
}, T;
}();
},
"./src/controller/base-stream-controller.ts": (U, M, g) => {
g.r(M), g.d(M, {
State: () => f,
default: () => u
});
var P = g("./src/polyfills/number.ts"), y = g("./src/task-loop.ts"), O = g("./src/controller/fragment-tracker.ts"), C = g("./src/utils/buffer-helper.ts"), F = g("./src/utils/logger.ts"), R = g("./src/events.ts"), T = g("./src/errors.ts"), D = g("./src/types/transmuxer.ts"), p = g("./src/utils/mp4-tools.ts"), S = g("./src/utils/discontinuities.ts"), b = g("./src/controller/fragment-finders.ts"), _ = g("./src/controller/level-helper.ts"), E = g("./src/loader/fragment-loader.ts"), l = g("./src/crypt/decrypter.ts"), n = g("./src/utils/time-ranges.ts"), t = g("./src/types/loader.ts");
function d(m, s) {
for (var v = 0; v < s.length; v++) {
var c = s[v];
c.enumerable = c.enumerable || !1, c.configurable = !0, "value" in c && (c.writable = !0), Object.defineProperty(m, c.key, c);
}
}
function h(m, s, v) {
return s && d(m.prototype, s), v && d(m, v), Object.defineProperty(m, "prototype", { writable: !1 }), m;
}
function i(m) {
if (m === void 0)
throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
return m;
}
function r(m, s) {
m.prototype = Object.create(s.prototype), m.prototype.constructor = m, e(m, s);
}
function e(m, s) {
return e = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(c, o) {
return c.__proto__ = o, c;
}, e(m, s);
}
var f = {
STOPPED: "STOPPED",
IDLE: "IDLE",
KEY_LOADING: "KEY_LOADING",
FRAG_LOADING: "FRAG_LOADING",
FRAG_LOADING_WAITING_RETRY: "FRAG_LOADING_WAITING_RETRY",
WAITING_TRACK: "WAITING_TRACK",
PARSING: "PARSING",
PARSED: "PARSED",
ENDED: "ENDED",
ERROR: "ERROR",
WAITING_INIT_PTS: "WAITING_INIT_PTS",
WAITING_LEVEL: "WAITING_LEVEL"
}, u = /* @__PURE__ */ function(m) {
r(s, m);
function s(c, o, a) {
var x;
return x = m.call(this) || this, x.hls = void 0, x.fragPrevious = null, x.fragCurrent = null, x.fragmentTracker = void 0, x.transmuxer = null, x._state = f.STOPPED, x.media = null, x.mediaBuffer = null, x.config = void 0, x.bitrateTest = !1, x.lastCurrentTime = 0, x.nextLoadPosition = 0, x.startPosition = 0, x.loadedmetadata = !1, x.fragLoadError = 0, x.retryDate = 0, x.levels = null, x.fragmentLoader = void 0, x.levelLastLoaded = null, x.startFragRequested = !1, x.decrypter = void 0, x.initPTS = [], x.onvseeking = null, x.onvended = null, x.logPrefix = "", x.log = void 0, x.warn = void 0, x.logPrefix = a, x.log = F.logger.log.bind(F.logger, a + ":"), x.warn = F.logger.warn.bind(F.logger, a + ":"), x.hls = c, x.fragmentLoader = new E.default(c.config), x.fragmentTracker = o, x.config = c.config, x.decrypter = new l.default(c, c.config), c.on(R.Events.KEY_LOADED, x.onKeyLoaded, i(x)), c.on(R.Events.LEVEL_SWITCHING, x.onLevelSwitching, i(x)), x;
}
var v = s.prototype;
return v.doTick = function() {
this.onTickEnd();
}, v.onTickEnd = function() {
}, v.startLoad = function(o) {
}, v.stopLoad = function() {
this.fragmentLoader.abort();
var o = this.fragCurrent;
o && this.fragmentTracker.removeFragment(o), this.resetTransmuxer(), this.fragCurrent = null, this.fragPrevious = null, this.clearInterval(), this.clearNextTick(), this.state = f.STOPPED;
}, v._streamEnded = function(o, a) {
var x = this.fragCurrent, k = this.fragmentTracker;
if (!a.live && x && this.media && x.sn >= a.endSN && !o.nextStart) {
var K = a.partList;
if (K != null && K.length) {
var w = K[K.length - 1], W = C.BufferHelper.isBuffered(this.media, w.start + w.duration / 2);
return W;
}
var z = k.getState(x);
return z === O.FragmentState.PARTIAL || z === O.FragmentState.OK;
}
return !1;
}, v.onMediaAttached = function(o, a) {
var x = this.media = this.mediaBuffer = a.media;
this.onvseeking = this.onMediaSeeking.bind(this), this.onvended = this.onMediaEnded.bind(this), x.addEventListener("seeking", this.onvseeking), x.addEventListener("ended", this.onvended);
var k = this.config;
this.levels && k.autoStartLoad && this.state === f.STOPPED && this.startLoad(k.startPosition);
}, v.onMediaDetaching = function() {
var o = this.media;
o != null && o.ended && (this.log("MSE detaching and video ended, reset startPosition"), this.startPosition = this.lastCurrentTime = 0), o && this.onvseeking && this.onvended && (o.removeEventListener("seeking", this.onvseeking), o.removeEventListener("ended", this.onvended), this.onvseeking = this.onvended = null), this.media = this.mediaBuffer = null, this.loadedmetadata = !1, this.fragmentTracker.removeAllFragments(), this.stopLoad();
}, v.onMediaSeeking = function() {
var o = this.config, a = this.fragCurrent, x = this.media, k = this.mediaBuffer, K = this.state, w = x ? x.currentTime : 0, W = C.BufferHelper.bufferInfo(k || x, w, o.maxBufferHole);
if (this.log("media seeking to " + ((0, P.isFiniteNumber)(w) ? w.toFixed(3) : w) + ", state: " + K), K === f.ENDED)
this.resetLoadingState();
else if (a && !W.len) {
var z = o.maxFragLookUpTolerance, H = a.start - z, j = a.start + a.duration + z, Y = w > j;
(w < H || Y) && (Y && a.loader && (this.log("seeking outside of buffer while fragment load in progress, cancel fragment load"), a.loader.abort()), this.resetLoadingState());
}
x && (this.lastCurrentTime = w), !this.loadedmetadata && !W.len && (this.nextLoadPosition = this.startPosition = w), this.tickImmediate();
}, v.onMediaEnded = function() {
this.startPosition = this.lastCurrentTime = 0;
}, v.onKeyLoaded = function(o, a) {
if (!(this.state !== f.KEY_LOADING || a.frag !== this.fragCurrent || !this.levels)) {
this.state = f.IDLE;
var x = this.levels[a.frag.level].details;
x && this.loadFragment(a.frag, x, a.frag.start);
}
}, v.onLevelSwitching = function(o, a) {
this.fragLoadError = 0;
}, v.onHandlerDestroying = function() {
this.stopLoad(), m.prototype.onHandlerDestroying.call(this);
}, v.onHandlerDestroyed = function() {
this.state = f.STOPPED, this.hls.off(R.Events.KEY_LOADED, this.onKeyLoaded, this), this.hls.off(R.Events.LEVEL_SWITCHING, this.onLevelSwitching, this), this.fragmentLoader && this.fragmentLoader.destroy(), this.decrypter && this.decrypter.destroy(), this.hls = this.log = this.warn = this.decrypter = this.fragmentLoader = this.fragmentTracker = null, m.prototype.onHandlerDestroyed.call(this);
}, v.loadKey = function(o, a) {
this.log("Loading key for " + o.sn + " of [" + a.startSN + "-" + a.endSN + "], " + (this.logPrefix === "[stream-controller]" ? "level" : "track") + " " + o.level), this.state = f.KEY_LOADING, this.fragCurrent = o, this.hls.trigger(R.Events.KEY_LOADING, {
frag: o
});
}, v.loadFragment = function(o, a, x) {
this._loadFragForPlayback(o, a, x);
}, v._loadFragForPlayback = function(o, a, x) {
var k = this, K = function(W) {
if (k.fragContextChanged(o)) {
k.warn("Fragment " + o.sn + (W.part ? " p: " + W.part.index : "") + " of level " + o.level + " was dropped during download."), k.fragmentTracker.removeFragment(o);
return;
}
o.stats.chunkCount++, k._handleFragmentLoadProgress(W);
};
this._doFragLoad(o, a, x, K).then(function(w) {
if (!!w) {
k.fragLoadError = 0;
var W = k.state;
if (k.fragContextChanged(o)) {
(W === f.FRAG_LOADING || !k.fragCurrent && W === f.PARSING) && (k.fragmentTracker.removeFragment(o), k.state = f.IDLE);
return;
}
"payload" in w && (k.log("Loaded fragment " + o.sn + " of level " + o.level), k.hls.trigger(R.Events.FRAG_LOADED, w)), k._handleFragmentLoadComplete(w);
}
}).catch(function(w) {
k.state === f.STOPPED || k.state === f.ERROR || (k.warn(w), k.resetFragmentLoading(o));
});
}, v.flushMainBuffer = function(o, a, x) {
if (x === void 0 && (x = null), !!(o - a)) {
var k = {
startOffset: o,
endOffset: a,
type: x
};
this.fragLoadError = 0, this.hls.trigger(R.Events.BUFFER_FLUSHING, k);
}
}, v._loadInitSegment = function(o) {
var a = this;
this._doFragLoad(o).then(function(x) {
if (!x || a.fragContextChanged(o) || !a.levels)
throw new Error("init load aborted");
return x;
}).then(function(x) {
var k = a.hls, K = x.payload, w = o.decryptdata;
if (K && K.byteLength > 0 && w && w.key && w.iv && w.method === "AES-128") {
var W = self.performance.now();
return a.decrypter.webCryptoDecrypt(new Uint8Array(K), w.key.buffer, w.iv.buffer).then(function(z) {
var H = self.performance.now();
return k.trigger(R.Events.FRAG_DECRYPTED, {
frag: o,
payload: z,
stats: {
tstart: W,
tdecrypt: H
}
}), x.payload = z, x;
});
}
return x;
}).then(function(x) {
var k = a.fragCurrent, K = a.hls, w = a.levels;
if (!w)
throw new Error("init load aborted, missing levels");
var W = w[o.level].details;
console.assert(W, "Level details are defined when init segment is loaded");
var z = o.stats;
a.state = f.IDLE, a.fragLoadError = 0, o.data = new Uint8Array(x.payload), z.parsing.start = z.buffering.start = self.performance.now(), z.parsing.end = z.buffering.end = self.performance.now(), x.frag === k && K.trigger(R.Events.FRAG_BUFFERED, {
stats: z,
frag: k,
part: null,
id: o.type
}), a.tick();
}).catch(function(x) {
a.state === f.STOPPED || a.state === f.ERROR || (a.warn(x), a.resetFragmentLoading(o));
});
}, v.fragContextChanged = function(o) {
var a = this.fragCurrent;
return !o || !a || o.level !== a.level || o.sn !== a.sn || o.urlId !== a.urlId;
}, v.fragBufferedComplete = function(o, a) {
var x, k, K = this.mediaBuffer ? this.mediaBuffer : this.media;
this.log("Buffered " + o.type + " sn: " + o.sn + (a ? " part: " + a.index : "") + " of " + (this.logPrefix === "[stream-controller]" ? "level" : "track") + " " + o.level + " " + (K ? n.default.toString(C.BufferHelper.getBuffered(K)) : "(detached)")), this.state = f.IDLE, K && (!this.loadedmetadata && K.buffered.length && ((x = this.fragCurrent) === null || x === void 0 ? void 0 : x.sn) === ((k = this.fragPrevious) === null || k === void 0 ? void 0 : k.sn) && (this.loadedmetadata = !0, this.seekToStartPos()), this.tick());
}, v.seekToStartPos = function() {
}, v._handleFragmentLoadComplete = function(o) {
var a = this.transmuxer;
if (!!a) {
var x = o.frag, k = o.part, K = o.partsLoaded, w = !K || K.length === 0 || K.some(function(z) {
return !z;
}), W = new D.ChunkMetadata(x.level, x.sn, x.stats.chunkCount + 1, 0, k ? k.index : -1, !w);
a.flush(W);
}
}, v._handleFragmentLoadProgress = function(o) {
}, v._doFragLoad = function(o, a, x, k) {
var K = this;
if (x === void 0 && (x = null), !this.levels)
throw new Error("frag load aborted, missing levels");
if (x = Math.max(o.start, x || 0), this.config.lowLatencyMode && a) {
var w = a.partList;
if (w && k) {
x > o.end && a.fragmentHint && (o = a.fragmentHint);
var W = this.getNextPart(w, o, x);
if (W > -1) {
var z = w[W];
return this.log("Loading part sn: " + o.sn + " p: " + z.index + " cc: " + o.cc + " of playlist [" + a.startSN + "-" + a.endSN + "] parts [0-" + W + "-" + (w.length - 1) + "] " + (this.logPrefix === "[stream-controller]" ? "level" : "track") + ": " + o.level + ", target: " + parseFloat(x.toFixed(3))), this.nextLoadPosition = z.start + z.duration, this.state = f.FRAG_LOADING, this.hls.trigger(R.Events.FRAG_LOADING, {
frag: o,
part: w[W],
targetBufferTime: x
}), this.doFragPartsLoad(o, w, W, k).catch(function(H) {
return K.handleFragLoadError(H);
});
} else if (!o.url || this.loadedEndOfParts(w, x))
return Promise.resolve(null);
}
}
return this.log("Loading fragment " + o.sn + " cc: " + o.cc + " " + (a ? "of [" + a.startSN + "-" + a.endSN + "] " : "") + (this.logPrefix === "[stream-controller]" ? "level" : "track") + ": " + o.level + ", target: " + parseFloat(x.toFixed(3))), (0, P.isFiniteNumber)(o.sn) && !this.bitrateTest && (this.nextLoadPosition = o.start + o.duration), this.state = f.FRAG_LOADING, this.hls.trigger(R.Events.FRAG_LOADING, {
frag: o,
targetBufferTime: x
}), this.fragmentLoader.load(o, k).catch(function(H) {
return K.handleFragLoadError(H);
});
}, v.doFragPartsLoad = function(o, a, x, k) {
var K = this;
return new Promise(function(w, W) {
var z = [], H = function j(Y) {
var Z = a[Y];
K.fragmentLoader.loadPart(o, Z, k).then(function(q) {
z[Z.index] = q;
var ee = q.part;
K.hls.trigger(R.Events.FRAG_LOADED, q);
var te = a[Y + 1];
if (te && te.fragment === o)
j(Y + 1);
else
return w({
frag: o,
part: ee,
partsLoaded: z
});
}).catch(W);
};
H(x);
});
}, v.handleFragLoadError = function(o) {
var a = o.data;
return a && a.details === T.ErrorDetails.INTERNAL_ABORTED ? this.handleFragLoadAborted(a.frag, a.part) : this.hls.trigger(R.Events.ERROR, a), null;
}, v._handleTransmuxerFlush = function(o) {
var a = this.getCurrentContext(o);
if (!a || this.state !== f.PARSING) {
this.fragCurrent || (this.state = f.IDLE);
return;
}
var x = a.frag, k = a.part, K = a.level, w = self.performance.now();
x.stats.parsing.end = w, k && (k.stats.parsing.end = w), this.updateLevelTiming(x, k, K, o.partial);
}, v.getCurrentContext = function(o) {
var a = this.levels, x = o.level, k = o.sn, K = o.part;
if (!a || !a[x])
return this.warn("Levels object was unset while buffering fragment " + k + " of level " + x + ". The current chunk will not be buffered."), null;
var w = a[x], W = K > -1 ? (0, _.getPartWith)(w, k, K) : null, z = W ? W.fragment : (0, _.getFragmentWithSN)(w, k, this.fragCurrent);
return z ? {
frag: z,
part: W,
level: w
} : null;
}, v.bufferFragmentData = function(o, a, x, k) {
if (!(!o || this.state !== f.PARSING)) {
var K = o.data1, w = o.data2, W = K;
if (K && w && (W = (0, p.appendUint8Array)(K, w)), !(!W || !W.length)) {
var z = {
type: o.type,
frag: a,
part: x,
chunkMeta: k,
parent: a.type,
data: W
};
this.hls.trigger(R.Events.BUFFER_APPENDING, z), o.dropped && o.independent && !x && this.flushBufferGap(a);
}
}
}, v.flushBufferGap = function(o) {
var a = this.media;
if (!!a) {
if (!C.BufferHelper.isBuffered(a, a.currentTime)) {
this.flushMainBuffer(0, o.start);
return;
}
var x = a.currentTime, k = C.BufferHelper.bufferInfo(a, x, 0), K = o.duration, w = Math.min(this.config.maxFragLookUpTolerance * 2, K * 0.25), W = Math.max(Math.min(o.start - w, k.end - w), x + w);
o.start - W > w && this.flushMainBuffer(W, o.start);
}
}, v.getFwdBufferInfo = function(o, a) {
var x = this.config, k = this.getLoadPosition();
if (!(0, P.isFiniteNumber)(k))
return null;
var K = C.BufferHelper.bufferInfo(o, k, x.maxBufferHole);
if (K.len === 0 && K.nextStart !== void 0) {
var w = this.fragmentTracker.getBufferedFrag(k, a);
if (w && K.nextStart < w.end)
return C.BufferHelper.bufferInfo(o, k, Math.max(K.nextStart, x.maxBufferHole));
}
return K;
}, v.getMaxBufferLength = function(o) {
var a = this.config, x;
return o ? x = Math.max(8 * a.maxBufferSize / o, a.maxBufferLength) : x = a.maxBufferLength, Math.min(x, a.maxMaxBufferLength);
}, v.reduceMaxBufferLength = function(o) {
var a = this.config, x = o || a.maxBufferLength;
return a.maxMaxBufferLength >= x ? (a.maxMaxBufferLength /= 2, this.warn("Reduce max buffer length to " + a.maxMaxBufferLength + "s"), !0) : !1;
}, v.getNextFragment = function(o, a) {
var x = a.fragments, k = x.length;
if (!k)
return null;
var K = this.config, w = x[0].start, W;
if (a.live) {
var z = K.initialLiveManifestSize;
if (k < z)
return this.warn("Not enough fragments to start playback (have: " + k + ", need: " + z + ")"), null;
!a.PTSKnown && !this.startFragRequested && this.startPosition === -1 && (W = this.getInitialLiveFragment(a, x), this.startPosition = W ? this.hls.liveSyncPosition || W.start : o);
} else
o <= w && (W = x[0]);
if (!W) {
var H = K.lowLatencyMode ? a.partEnd : a.fragmentEnd;
W = this.getFragmentAtPosition(o, H, a);
}
return this.mapToInitFragWhenRequired(W);
}, v.mapToInitFragWhenRequired = function(o) {
return o != null && o.initSegment && !(o != null && o.initSegment.data) && !this.bitrateTest ? o.initSegment : o;
}, v.getNextPart = function(o, a, x) {
for (var k = -1, K = !1, w = !0, W = 0, z = o.length; W < z; W++) {
var H = o[W];
if (w = w && !H.independent, k > -1 && x < H.start)
break;
var j = H.loaded;
!j && (K || H.independent || w) && H.fragment === a && (k = W), K = j;
}
return k;
}, v.loadedEndOfParts = function(o, a) {
var x = o[o.length - 1];
return x && a > x.start && x.loaded;
}, v.getInitialLiveFragment = function(o, a) {
var x = this.fragPrevious, k = null;
if (x) {
if (o.hasProgramDateTime && (this.log("Live playlist, switching playlist, load frag with same PDT: " + x.programDateTime), k = (0, b.findFragmentByPDT)(a, x.endProgramDateTime, this.config.maxFragLookUpTolerance)), !k) {
var K = x.sn + 1;
if (K >= o.startSN && K <= o.endSN) {
var w = a[K - o.startSN];
x.cc === w.cc && (k = w, this.log("Live playlist, switching playlist, load frag with next SN: " + k.sn));
}
k || (k = (0, b.findFragWithCC)(a, x.cc), k && this.log("Live playlist, switching playlist, load frag with same CC: " + k.sn));
}
} else {
var W = this.hls.liveSyncPosition;
W !== null && (k = this.getFragmentAtPosition(W, this.bitrateTest ? o.fragmentEnd : o.edge, o));
}
return k;
}, v.getFragmentAtPosition = function(o, a, x) {
var k = this.config, K = this.fragPrevious, w = x.fragments, W = x.endSN, z = x.fragmentHint, H = k.maxFragLookUpTolerance, j = !!(k.lowLatencyMode && x.partList && z);
j && z && !this.bitrateTest && (w = w.concat(z), W = z.sn);
var Y;
if (o < a) {
var Z = o > a - H ? 0 : H;
Y = (0, b.findFragmentByPTS)(K, w, o, Z);
} else
Y = w[w.length - 1];
if (Y) {
var q = Y.sn - x.startSN;
if (K && Y.sn === K.sn && !j) {
var ee = K && Y.level === K.level;
if (ee) {
var te = w[q + 1];
Y.sn < W && this.fragmentTracker.getState(te) !== O.FragmentState.OK ? (this.log("SN " + Y.sn + " just loaded, load next one: " + te.sn), Y = te) : Y = null;
}
}
}
return Y;
}, v.synchronizeToLiveEdge = function(o) {
var a = this.config, x = this.media;
if (!!x) {
var k = this.hls.liveSyncPosition, K = x.currentTime, w = o.fragments[0].start, W = o.edge, z = K >= w - a.maxFragLookUpTolerance && K <= W;
if (k !== null && x.duration > k && (K < k || !z)) {
var H = a.liveMaxLatencyDuration !== void 0 ? a.liveMaxLatencyDuration : a.liveMaxLatencyDurationCount * o.targetduration;
(!z && x.readyState < 4 || K < W - H) && (this.loadedmetadata || (this.nextLoadPosition = k), x.readyState && (this.warn("Playback: " + K.toFixed(3) + " is located too far from the end of live sliding playlist: " + W + ", reset currentTime to : " + k.toFixed(3)), x.currentTime = k));
}
}
}, v.alignPlaylists = function(o, a) {
var x = this.levels, k = this.levelLastLoaded, K = this.fragPrevious, w = k !== null ? x[k] : null, W = o.fragments.length;
if (!W)
return this.warn("No fragments in live playlist"), 0;
var z = o.fragments[0].start, H = !a, j = o.alignedSliding && (0, P.isFiniteNumber)(z);
if (H || !j && !z) {
(0, S.alignStream)(K, w, o);
var Y = o.fragments[0].start;
return this.log("Live playlist sliding: " + Y.toFixed(2) + " start-sn: " + (a ? a.startSN : "na") + "->" + o.startSN + " prev-sn: " + (K ? K.sn : "na") + " fragments: " + W), Y;
}
return z;
}, v.waitForCdnTuneIn = function(o) {
var a = 3;
return o.live && o.canBlockReload && o.partTarget && o.tuneInGoal > Math.max(o.partHoldBack, o.partTarget * a);
}, v.setStartPosition = function(o, a) {
var x = this.startPosition;
if (x < a && (x = -1), x === -1 || this.lastCurrentTime === -1) {
var k = o.startTimeOffset;
(0, P.isFiniteNumber)(k) ? (x = a + k, k < 0 && (x += o.totalduration), x = Math.min(Math.max(a, x), a + o.totalduration), this.log("Start time offset " + k + " found in playlist, adjust startPosition to " + x), this.startPosition = x) : o.live ? x = this.hls.liveSyncPosition || a : this.startPosition = x = 0, this.lastCurrentTime = x;
}
this.nextLoadPosition = x;
}, v.getLoadPosition = function() {
var o = this.media, a = 0;
return this.loadedmetadata && o ? a = o.currentTime : this.nextLoadPosition && (a = this.nextLoadPosition), a;
}, v.handleFragLoadAborted = function(o, a) {
this.transmuxer && o.sn !== "initSegment" && o.stats.aborted && (this.warn("Fragment " + o.sn + (a ? " part" + a.index : "") + " of level " + o.level + " was aborted"), this.resetFragmentLoading(o));
}, v.resetFragmentLoading = function(o) {
(!this.fragCurrent || !this.fragContextChanged(o) && this.state !== f.FRAG_LOADING_WAITING_RETRY) && (this.state = f.IDLE);
}, v.onFragmentOrKeyLoadError = function(o, a) {
if (!a.fatal) {
var x = a.frag;
if (!(!x || x.type !== o)) {
var k = this.fragCurrent;
console.assert(k && x.sn === k.sn && x.level === k.level && x.urlId === k.urlId, "Frag load error must match current frag to retry");
var K = this.config;
if (this.fragLoadError + 1 <= K.fragLoadingMaxRetry) {
this.loadedmetadata || (this.startFragRequested = !1, this.nextLoadPosition = this.startPosition);
var w = Math.min(Math.pow(2, this.fragLoadError) * K.fragLoadingRetryDelay, K.fragLoadingMaxRetryTimeout);
this.warn("Fragment " + x.sn + " of " + o + " " + x.level + " failed to load, retrying in " + w + "ms"), this.retryDate = self.performance.now() + w, this.fragLoadError++, this.state = f.FRAG_LOADING_WAITING_RETRY;
} else
a.levelRetry ? (o === t.PlaylistLevelType.AUDIO && (this.fragCurrent = null), this.fragLoadError = 0, this.state = f.IDLE) : (F.logger.error(a.details + " reaches max retry, redispatch as fatal ..."), a.fatal = !0, this.hls.stopLoad(), this.state = f.ERROR);
}
}
}, v.afterBufferFlushed = function(o, a, x) {
if (!!o) {
var k = C.BufferHelper.getBuffered(o);
this.fragmentTracker.detectEvictedFragments(a, k, x), this.state === f.ENDED && this.resetLoadingState();
}
}, v.resetLoadingState = function() {
this.fragCurrent = null, this.fragPrevious = null, this.state = f.IDLE;
}, v.resetStartWhenNotLoaded = function(o) {
if (!this.loadedmetadata) {
this.startFragRequested = !1;
var a = this.levels ? this.levels[o].details : null;
a != null && a.live ? (this.startPosition = -1, this.setStartPosition(a, 0), this.resetLoadingState()) : this.nextLoadPosition = this.startPosition;
}
}, v.updateLevelTiming = function(o, a, x, k) {
var K = this, w = x.details;
console.assert(!!w, "level.details must be defined");
var W = Object.keys(o.elementaryStreams).reduce(function(z, H) {
var j = o.elementaryStreams[H];
if (j) {
var Y = j.endPTS - j.startPTS;
if (Y <= 0)
return K.warn("Could not parse fragment " + o.sn + " " + H + " duration reliably (" + Y + ")"), z || !1;
var Z = k ? 0 : (0, _.updateFragPTSDTS)(w, o, j.startPTS, j.endPTS, j.startDTS, j.endDTS);
return K.hls.trigger(R.Events.LEVEL_PTS_UPDATED, {
details: w,
level: x,
drift: Z,
type: H,
frag: o,
start: j.startPTS,
end: j.endPTS
}), !0;
}
return z;
}, !1);
W || (this.warn("Found no media in fragment " + o.sn + " of level " + x.id + " resetting transmuxer to fallback to playlist timing"), this.resetTransmuxer()), this.state = f.PARSED, this.hls.trigger(R.Events.FRAG_PARSED, {
frag: o,
part: a
});
}, v.resetTransmuxer = function() {
this.transmuxer && (this.transmuxer.destroy(), this.transmuxer = null);
}, h(s, [{
key: "state",
get: function() {
return this._state;
},
set: function(o) {
var a = this._state;
a !== o && (this._state = o, this.log(a + "->" + o));
}
}]), s;
}(y.default);
},
"./src/controller/buffer-controller.ts": (U, M, g) => {
g.r(M), g.d(M, {
default: () => b
});
var P = g("./src/polyfills/number.ts"), y = g("./src/events.ts"), O = g("./src/utils/logger.ts"), C = g("./src/errors.ts"), F = g("./src/utils/buffer-helper.ts"), R = g("./src/utils/mediasource-helper.ts"), T = g("./src/loader/fragment.ts"), D = g("./src/controller/buffer-operation-queue.ts"), p = (0, R.getMediaSource)(), S = /([ha]vc.)(?:\.[^.,]+)+/, b = /* @__PURE__ */ function() {
function _(l) {
var n = this;
this.details = null, this._objectUrl = null, this.operationQueue = void 0, this.listeners = void 0, this.hls = void 0, this.bufferCodecEventsExpected = 0, this._bufferCodecEventsTotal = 0, this.media = null, this.mediaSource = null, this.appendError = 0, this.tracks = {}, this.pendingTracks = {}, this.sourceBuffer = void 0, this._onMediaSourceOpen = function() {
var t = n.hls, d = n.media, h = n.mediaSource;
O.logger.log("[buffer-controller]: Media source opened"), d && (n.updateMediaElementDuration(), t.trigger(y.Events.MEDIA_ATTACHED, {
media: d
})), h && h.removeEventListener("sourceopen", n._onMediaSourceOpen), n.checkPendingTracks();
}, this._onMediaSourceClose = function() {
O.logger.log("[buffer-controller]: Media source closed");
}, this._onMediaSourceEnded = function() {
O.logger.log("[buffer-controller]: Media source ended");
}, this.hls = l, this._initSourceBuffer(), this.registerListeners();
}
var E = _.prototype;
return E.hasSourceTypes = function() {
return this.getSourceBufferTypes().length > 0 || Object.keys(this.pendingTracks).length > 0;
}, E.destroy = function() {
this.unregisterListeners(), this.details = null;
}, E.registerListeners = function() {
var n = this.hls;
n.on(y.Events.MEDIA_ATTACHING, this.onMediaAttaching, this), n.on(y.Events.MEDIA_DETACHING, this.onMediaDetaching, this), n.on(y.Events.MANIFEST_PARSED, this.onManifestParsed, this), n.on(y.Events.BUFFER_RESET, this.onBufferReset, this), n.on(y.Events.BUFFER_APPENDING, this.onBufferAppending, this), n.on(y.Events.BUFFER_CODECS, this.onBufferCodecs, this), n.on(y.Events.BUFFER_EOS, this.onBufferEos, this), n.on(y.Events.BUFFER_FLUSHING, this.onBufferFlushing, this), n.on(y.Events.LEVEL_UPDATED, this.onLevelUpdated, this), n.on(y.Events.FRAG_PARSED, this.onFragParsed, this), n.on(y.Events.FRAG_CHANGED, this.onFragChanged, this);
}, E.unregisterListeners = function() {
var n = this.hls;
n.off(y.Events.MEDIA_ATTACHING, this.onMediaAttaching, this), n.off(y.Events.MEDIA_DETACHING, this.onMediaDetaching, this), n.off(y.Events.MANIFEST_PARSED, this.onManifestParsed, this), n.off(y.Events.BUFFER_RESET, this.onBufferReset, this), n.off(y.Events.BUFFER_APPENDING, this.onBufferAppending, this), n.off(y.Events.BUFFER_CODECS, this.onBufferCodecs, this), n.off(y.Events.BUFFER_EOS, this.onBufferEos, this), n.off(y.Events.BUFFER_FLUSHING, this.onBufferFlushing, this), n.off(y.Events.LEVEL_UPDATED, this.onLevelUpdated, this), n.off(y.Events.FRAG_PARSED, this.onFragParsed, this), n.off(y.Events.FRAG_CHANGED, this.onFragChanged, this);
}, E._initSourceBuffer = function() {
this.sourceBuffer = {}, this.operationQueue = new D.default(this.sourceBuffer), this.listeners = {
audio: [],
video: [],
audiovideo: []
};
}, E.onManifestParsed = function(n, t) {
var d = 2;
(t.audio && !t.video || !t.altAudio) && (d = 1), this.bufferCodecEventsExpected = this._bufferCodecEventsTotal = d, this.details = null, O.logger.log(this.bufferCodecEventsExpected + " bufferCodec event(s) expected");
}, E.onMediaAttaching = function(n, t) {
var d = this.media = t.media;
if (d && p) {
var h = this.mediaSource = new p();
h.addEventListener("sourceopen", this._onMediaSourceOpen), h.addEventListener("sourceended", this._onMediaSourceEnded), h.addEventListener("sourceclose", this._onMediaSourceClose), d.src = self.URL.createObjectURL(h), this._objectUrl = d.src;
}
}, E.onMediaDetaching = function() {
var n = this.media, t = this.mediaSource, d = this._objectUrl;
if (t) {
if (O.logger.log("[buffer-controller]: media source detaching"), t.readyState === "open")
try {
t.endOfStream();
} catch (h) {
O.logger.warn("[buffer-controller]: onMediaDetaching: " + h.message + " while calling endOfStream");
}
this.onBufferReset(), t.removeEventListener("sourceopen", this._onMediaSourceOpen), t.removeEventListener("sourceended", this._onMediaSourceEnded), t.removeEventListener("sourceclose", this._onMediaSourceClose), n && (d && self.URL.revokeObjectURL(d), n.src === d ? (n.removeAttribute("src"), n.load()) : O.logger.warn("[buffer-controller]: media.src was changed by a third party - skip cleanup")), this.mediaSource = null, this.media = null, this._objectUrl = null, this.bufferCodecEventsExpected = this._bufferCodecEventsTotal, this.pendingTracks = {}, this.tracks = {};
}
this.hls.trigger(y.Events.MEDIA_DETACHED, void 0);
}, E.onBufferReset = function() {
var n = this;
this.getSourceBufferTypes().forEach(function(t) {
var d = n.sourceBuffer[t];
try {
d && (n.removeBufferListeners(t), n.mediaSource && n.mediaSource.removeSourceBuffer(d), n.sourceBuffer[t] = void 0);
} catch (h) {
O.logger.warn("[buffer-controller]: Failed to reset the " + t + " buffer", h);
}
}), this._initSourceBuffer();
}, E.onBufferCodecs = function(n, t) {
var d = this, h = this.getSourceBufferTypes().length;
Object.keys(t).forEach(function(i) {
if (h) {
var r = d.tracks[i];
if (r && typeof r.buffer.changeType == "function") {
var e = t[i], f = e.id, u = e.codec, m = e.levelCodec, s = e.container, v = e.metadata, c = (r.levelCodec || r.codec).replace(S, "$1"), o = (m || u).replace(S, "$1");
if (c !== o) {
var a = s + ";codecs=" + (m || u);
d.appendChangeType(i, a), O.logger.log("[buffer-controller]: switching codec " + c + " to " + o), d.tracks[i] = {
buffer: r.buffer,
codec: u,
container: s,
levelCodec: m,
metadata: v,
id: f
};
}
}
} else
d.pendingTracks[i] = t[i];
}), !h && (this.bufferCodecEventsExpected = Math.max(this.bufferCodecEventsExpected - 1, 0), this.mediaSource && this.mediaSource.readyState === "open" && this.checkPendingTracks());
}, E.appendChangeType = function(n, t) {
var d = this, h = this.operationQueue, i = {
execute: function() {
var e = d.sourceBuffer[n];
e && (O.logger.log("[buffer-controller]: changing " + n + " sourceBuffer type to " + t), e.changeType(t)), h.shiftAndExecuteNext(n);
},
onStart: function() {
},
onComplete: function() {
},
onError: function(e) {
O.logger.warn("[buffer-controller]: Failed to change " + n + " SourceBuffer type", e);
}
};
h.append(i, n);
}, E.onBufferAppending = function(n, t) {
var d = this, h = this.hls, i = this.operationQueue, r = this.tracks, e = t.data, f = t.type, u = t.frag, m = t.part, s = t.chunkMeta, v = s.buffering[f], c = self.performance.now();
v.start = c;
var o = u.stats.buffering, a = m ? m.stats.buffering : null;
o.start === 0 && (o.start = c), a && a.start === 0 && (a.start = c);
var x = r.audio, k = f === "audio" && s.id === 1 && (x == null ? void 0 : x.container) === "audio/mpeg", K = {
execute: function() {
if (v.executeStart = self.performance.now(), k) {
var W = d.sourceBuffer[f];
if (W) {
var z = u.start - W.timestampOffset;
Math.abs(z) >= 0.1 && (O.logger.log("[buffer-controller]: Updating audio SourceBuffer timestampOffset to " + u.start + " (delta: " + z + ") sn: " + u.sn + ")"), W.timestampOffset = u.start);
}
}
d.appendExecutor(e, f);
},
onStart: function() {
},
onComplete: function() {
var W = self.performance.now();
v.executeEnd = v.end = W, o.first === 0 && (o.first = W), a && a.first === 0 && (a.first = W);
var z = d.sourceBuffer, H = {};
for (var j in z)
H[j] = F.BufferHelper.getBuffered(z[j]);
d.appendError = 0, d.hls.trigger(y.Events.BUFFER_APPENDED, {
type: f,
frag: u,
part: m,
chunkMeta: s,
parent: u.type,
timeRanges: H
});
},
onError: function(W) {
O.logger.error("[buffer-controller]: Error encountered while trying to append to the " + f + " SourceBuffer", W);
var z = {
type: C.ErrorTypes.MEDIA_ERROR,
parent: u.type,
details: C.ErrorDetails.BUFFER_APPEND_ERROR,
err: W,
fatal: !1
};
W.code === DOMException.QUOTA_EXCEEDED_ERR ? z.details = C.ErrorDetails.BUFFER_FULL_ERROR : (d.appendError++, z.details = C.ErrorDetails.BUFFER_APPEND_ERROR, d.appendError > h.config.appendErrorMaxRetry && (O.logger.error("[buffer-controller]: Failed " + h.config.appendErrorMaxRetry + " times to append segment in sourceBuffer"), z.fatal = !0, h.stopLoad())), h.trigger(y.Events.ERROR, z);
}
};
i.append(K, f);
}, E.onBufferFlushing = function(n, t) {
var d = this, h = this.operationQueue, i = function(e) {
return {
execute: d.removeExecutor.bind(d, e, t.startOffset, t.endOffset),
onStart: function() {
},
onComplete: function() {
d.hls.trigger(y.Events.BUFFER_FLUSHED, {
type: e
});
},
onError: function(u) {
O.logger.warn("[buffer-controller]: Failed to remove from " + e + " SourceBuffer", u);
}
};
};
t.type ? h.append(i(t.type), t.type) : this.getSourceBufferTypes().forEach(function(r) {
h.append(i(r), r);
});
}, E.onFragParsed = function(n, t) {
var d = this, h = t.frag, i = t.part, r = [], e = i ? i.elementaryStreams : h.elementaryStreams;
e[T.ElementaryStreamTypes.AUDIOVIDEO] ? r.push("audiovideo") : (e[T.ElementaryStreamTypes.AUDIO] && r.push("audio"), e[T.ElementaryStreamTypes.VIDEO] && r.push("video"));
var f = function() {
var m = self.performance.now();
h.stats.buffering.end = m, i && (i.stats.buffering.end = m);
var s = i ? i.stats : h.stats;
d.hls.trigger(y.Events.FRAG_BUFFERED, {
frag: h,
part: i,
stats: s,
id: h.type
});
};
r.length === 0 && O.logger.warn("Fragments must have at least one ElementaryStreamType set. type: " + h.type + " level: " + h.level + " sn: " + h.sn), this.blockBuffers(f, r);
}, E.onFragChanged = function(n, t) {
this.flushBackBuffer();
}, E.onBufferEos = function(n, t) {
var d = this, h = this.getSourceBufferTypes().reduce(function(i, r) {
var e = d.sourceBuffer[r];
return (!t.type || t.type === r) && e && !e.ended && (e.ended = !0, O.logger.log("[buffer-controller]: " + r + " sourceBuffer now EOS")), i && !!(!e || e.ended);
}, !0);
h && this.blockBuffers(function() {
var i = d.mediaSource;
!i || i.readyState !== "open" || i.endOfStream();
});
}, E.onLevelUpdated = function(n, t) {
var d = t.details;
!d.fragments.length || (this.details = d, this.getSourceBufferTypes().length ? this.blockBuffers(this.updateMediaElementDuration.bind(this)) : this.updateMediaElementDuration());
}, E.flushBackBuffer = function() {
var n = this.hls, t = this.details, d = this.media, h = this.sourceBuffer;
if (!(!d || t === null)) {
var i = this.getSourceBufferTypes();
if (!!i.length) {
var r = t.live && n.config.liveBackBufferLength !== null ? n.config.liveBackBufferLength : n.config.backBufferLength;
if (!(!(0, P.isFiniteNumber)(r) || r < 0)) {
var e = d.currentTime, f = t.levelTargetDuration, u = Math.max(r, f), m = Math.floor(e / f) * f - u;
i.forEach(function(s) {
var v = h[s];
if (v) {
var c = F.BufferHelper.getBuffered(v);
c.length > 0 && m > c.start(0) && (n.trigger(y.Events.BACK_BUFFER_REACHED, {
bufferEnd: m
}), t.live && n.trigger(y.Events.LIVE_BACK_BUFFER_REACHED, {
bufferEnd: m
}), n.trigger(y.Events.BUFFER_FLUSHING, {
startOffset: 0,
endOffset: m,
type: s
}));
}
});
}
}
}
}, E.updateMediaElementDuration = function() {
if (!(!this.details || !this.media || !this.mediaSource || this.mediaSource.readyState !== "open")) {
var n = this.details, t = this.hls, d = this.media, h = this.mediaSource, i = n.fragments[0].start + n.totalduration, r = d.duration, e = (0, P.isFiniteNumber)(h.duration) ? h.duration : 0;
n.live && t.config.liveDurationInfinity ? (O.logger.log("[buffer-controller]: Media Source duration is set to Infinity"), h.duration = 1 / 0, this.updateSeekableRange(n)) : (i > e && i > r || !(0, P.isFiniteNumber)(r)) && (O.logger.log("[buffer-controller]: Updating Media Source duration to " + i.toFixed(3)), h.duration = i);
}
}, E.updateSeekableRange = function(n) {
var t = this.mediaSource, d = n.fragments, h = d.length;
if (h && n.live && t !== null && t !== void 0 && t.setLiveSeekableRange) {
var i = Math.max(0, d[0].start), r = Math.max(i, i + n.totalduration);
t.setLiveSeekableRange(i, r);
}
}, E.checkPendingTracks = function() {
var n = this.bufferCodecEventsExpected, t = this.operationQueue, d = this.pendingTracks, h = Object.keys(d).length;
if (h && !n || h === 2) {
this.createSourceBuffers(d), this.pendingTracks = {};
var i = this.getSourceBufferTypes();
if (i.length === 0) {
this.hls.trigger(y.Events.ERROR, {
type: C.ErrorTypes.MEDIA_ERROR,
details: C.ErrorDetails.BUFFER_INCOMPATIBLE_CODECS_ERROR,
fatal: !0,
reason: "could not create source buffer for media codec(s)"
});
return;
}
i.forEach(function(r) {
t.executeNext(r);
});
}
}, E.createSourceBuffers = function(n) {
var t = this.sourceBuffer, d = this.mediaSource;
if (!d)
throw Error("createSourceBuffers called when mediaSource was null");
var h = 0;
for (var i in n)
if (!t[i]) {
var r = n[i];
if (!r)
throw Error("source buffer exists for track " + i + ", however track does not");
var e = r.levelCodec || r.codec, f = r.container + ";codecs=" + e;
O.logger.log("[buffer-controller]: creating sourceBuffer(" + f + ")");
try {
var u = t[i] = d.addSourceBuffer(f), m = i;
this.addBufferListener(m, "updatestart", this._onSBUpdateStart), this.addBufferListener(m, "updateend", this._onSBUpdateEnd), this.addBufferListener(m, "error", this._onSBUpdateError), this.tracks[i] = {
buffer: u,
codec: e,
container: r.container,
levelCodec: r.levelCodec,
metadata: r.metadata,
id: r.id
}, h++;
} catch (s) {
O.logger.error("[buffer-controller]: error while trying to add sourceBuffer: " + s.message), this.hls.trigger(y.Events.ERROR, {
type: C.ErrorTypes.MEDIA_ERROR,
details: C.ErrorDetails.BUFFER_ADD_CODEC_ERROR,
fatal: !1,
error: s,
mimeType: f
});
}
}
h && this.hls.trigger(y.Events.BUFFER_CREATED, {
tracks: this.tracks
});
}, E._onSBUpdateStart = function(n) {
var t = this.operationQueue, d = t.current(n);
d.onStart();
}, E._onSBUpdateEnd = function(n) {
var t = this.operationQueue, d = t.current(n);
d.onComplete(), t.shiftAndExecuteNext(n);
}, E._onSBUpdateError = function(n, t) {
O.logger.error("[buffer-controller]: " + n + " SourceBuffer error", t), this.hls.trigger(y.Events.ERROR, {
type: C.ErrorTypes.MEDIA_ERROR,
details: C.ErrorDetails.BUFFER_APPENDING_ERROR,
fatal: !1
});
var d = this.operationQueue.current(n);
d && d.onError(t);
}, E.removeExecutor = function(n, t, d) {
var h = this.media, i = this.mediaSource, r = this.operationQueue, e = this.sourceBuffer, f = e[n];
if (!h || !i || !f) {
O.logger.warn("[buffer-controller]: Attempting to remove from the " + n + " SourceBuffer, but it does not exist"), r.shiftAndExecuteNext(n);
return;
}
var u = (0, P.isFiniteNumber)(h.duration) ? h.duration : 1 / 0, m = (0, P.isFiniteNumber)(i.duration) ? i.duration : 1 / 0, s = Math.max(0, t), v = Math.min(d, u, m);
v > s ? (O.logger.log("[buffer-controller]: Removing [" + s + "," + v + "] from the " + n + " SourceBuffer"), console.assert(!f.updating, n + " sourceBuffer must not be updating"), f.remove(s, v)) : r.shiftAndExecuteNext(n);
}, E.appendExecutor = function(n, t) {
var d = this.operationQueue, h = this.sourceBuffer, i = h[t];
if (!i) {
O.logger.warn("[buffer-controller]: Attempting to append to the " + t + " SourceBuffer, but it does not exist"), d.shiftAndExecuteNext(t);
return;
}
i.ended = !1, console.assert(!i.updating, t + " sourceBuffer must not be updating"), i.appendBuffer(n);
}, E.blockBuffers = function(n, t) {
var d = this;
if (t === void 0 && (t = this.getSourceBufferTypes()), !t.length) {
O.logger.log("[buffer-controller]: Blocking operation requested, but no SourceBuffers exist"), Promise.resolve().then(n);
return;
}
var h = this.operationQueue, i = t.map(function(r) {
return h.appendBlocker(r);
});
Promise.all(i).then(function() {
n(), t.forEach(function(r) {
var e = d.sourceBuffer[r];
(!e || !e.updating) && h.shiftAndExecuteNext(r);
});
});
}, E.getSourceBufferTypes = function() {
return Object.keys(this.sourceBuffer);
}, E.addBufferListener = function(n, t, d) {
var h = this.sourceBuffer[n];
if (!!h) {
var i = d.bind(this, n);
this.listeners[n].push({
event: t,
listener: i
}), h.addEventListener(t, i);
}
}, E.removeBufferListeners = function(n) {
var t = this.sourceBuffer[n];
!t || this.listeners[n].forEach(function(d) {
t.removeEventListener(d.event, d.listener);
});
}, _;
}();
},
"./src/controller/buffer-operation-queue.ts": (U, M, g) => {
g.r(M), g.d(M, {
default: () => y
});
var P = g("./src/utils/logger.ts"), y = /* @__PURE__ */ function() {
function O(F) {
this.buffers = void 0, this.queues = {
video: [],
audio: [],
audiovideo: []
}, this.buffers = F;
}
var C = O.prototype;
return C.append = function(R, T) {
var D = this.queues[T];
D.push(R), D.length === 1 && this.buffers[T] && this.executeNext(T);
}, C.insertAbort = function(R, T) {
var D = this.queues[T];
D.unshift(R), this.executeNext(T);
}, C.appendBlocker = function(R) {
var T, D = new Promise(function(S) {
T = S;
}), p = {
execute: T,
onStart: function() {
},
onComplete: function() {
},
onError: function() {
}
};
return this.append(p, R), D;
}, C.executeNext = function(R) {
var T = this.buffers, D = this.queues, p = T[R], S = D[R];
if (S.length) {
var b = S[0];
try {
b.execute();
} catch (_) {
P.logger.warn("[buffer-operation-queue]: Unhandled exception executing the current operation"), b.onError(_), (!p || !p.updating) && (S.shift(), this.executeNext(R));
}
}
}, C.shiftAndExecuteNext = function(R) {
this.queues[R].shift(), this.executeNext(R);
}, C.current = function(R) {
return this.queues[R][0];
}, O;
}();
},
"./src/controller/cap-level-controller.ts": (U, M, g) => {
g.r(M), g.d(M, {
default: () => F
});
var P = g("./src/events.ts");
function y(R, T) {
for (var D = 0; D < T.length; D++) {
var p = T[D];
p.enumerable = p.enumerable || !1, p.configurable = !0, "value" in p && (p.writable = !0), Object.defineProperty(R, p.key, p);
}
}
function O(R, T, D) {
return T && y(R.prototype, T), D && y(R, D), Object.defineProperty(R, "prototype", { writable: !1 }), R;
}
var C = /* @__PURE__ */ function() {
function R(D) {
this.autoLevelCapping = void 0, this.firstLevel = void 0, this.media = void 0, this.restrictedLevels = void 0, this.timer = void 0, this.hls = void 0, this.streamController = void 0, this.clientRect = void 0, this.hls = D, this.autoLevelCapping = Number.POSITIVE_INFINITY, this.firstLevel = -1, this.media = null, this.restrictedLevels = [], this.timer = void 0, this.clientRect = null, this.registerListeners();
}
var T = R.prototype;
return T.setStreamController = function(p) {
this.streamController = p;
}, T.destroy = function() {
this.unregisterListener(), this.hls.config.capLevelToPlayerSize && this.stopCapping(), this.media = null, this.clientRect = null, this.hls = this.streamController = null;
}, T.registerListeners = function() {
var p = this.hls;
p.on(P.Events.FPS_DROP_LEVEL_CAPPING, this.onFpsDropLevelCapping, this), p.on(P.Events.MEDIA_ATTACHING, this.onMediaAttaching, this), p.on(P.Events.MANIFEST_PARSED, this.onManifestParsed, this), p.on(P.Events.BUFFER_CODECS, this.onBufferCodecs, this), p.on(P.Events.MEDIA_DETACHING, this.onMediaDetaching, this);
}, T.unregisterListener = function() {
var p = this.hls;
p.off(P.Events.FPS_DROP_LEVEL_CAPPING, this.onFpsDropLevelCapping, this), p.off(P.Events.MEDIA_ATTACHING, this.onMediaAttaching, this), p.off(P.Events.MANIFEST_PARSED, this.onManifestParsed, this), p.off(P.Events.BUFFER_CODECS, this.onBufferCodecs, this), p.off(P.Events.MEDIA_DETACHING, this.onMediaDetaching, this);
}, T.onFpsDropLevelCapping = function(p, S) {
R.isLevelAllowed(S.droppedLevel, this.restrictedLevels) && this.restrictedLevels.push(S.droppedLevel);
}, T.onMediaAttaching = function(p, S) {
this.media = S.media instanceof HTMLVideoElement ? S.media : null;
}, T.onManifestParsed = function(p, S) {
var b = this.hls;
this.restrictedLevels = [], this.firstLevel = S.firstLevel, b.config.capLevelToPlayerSize && S.video && this.startCapping();
}, T.onBufferCodecs = function(p, S) {
var b = this.hls;
b.config.capLevelToPlayerSize && S.video && this.startCapping();
}, T.onMediaDetaching = function() {
this.stopCapping();
}, T.detectPlayerSize = function() {
if (this.media && this.mediaHeight > 0 && this.mediaWidth > 0) {
var p = this.hls.levels;
if (p.length) {
var S = this.hls;
S.autoLevelCapping = this.getMaxLevel(p.length - 1), S.autoLevelCapping > this.autoLevelCapping && this.streamController && this.streamController.nextLevelSwitch(), this.autoLevelCapping = S.autoLevelCapping;
}
}
}, T.getMaxLevel = function(p) {
var S = this, b = this.hls.levels;
if (!b.length)
return -1;
var _ = b.filter(function(E, l) {
return R.isLevelAllowed(l, S.restrictedLevels) && l <= p;
});
return this.clientRect = null, R.getMaxLevelByMediaSize(_, this.mediaWidth, this.mediaHeight);
}, T.startCapping = function() {
this.timer || (this.autoLevelCapping = Number.POSITIVE_INFINITY, this.hls.firstLevel = this.getMaxLevel(this.firstLevel), self.clearInterval(this.timer), this.timer = self.setInterval(this.detectPlayerSize.bind(this), 1e3), this.detectPlayerSize());
}, T.stopCapping = function() {
this.restrictedLevels = [], this.firstLevel = -1, this.autoLevelCapping = Number.POSITIVE_INFINITY, this.timer && (self.clearInterval(this.timer), this.timer = void 0);
}, T.getDimensions = function() {
if (this.clientRect)
return this.clientRect;
var p = this.media, S = {
width: 0,
height: 0
};
if (p) {
var b = p.getBoundingClientRect();
S.width = b.width, S.height = b.height, !S.width && !S.height && (S.width = b.right - b.left || p.width || 0, S.height = b.bottom - b.top || p.height || 0);
}
return this.clientRect = S, S;
}, R.isLevelAllowed = function(p, S) {
return S === void 0 && (S = []), S.indexOf(p) === -1;
}, R.getMaxLevelByMediaSize = function(p, S, b) {
if (!p || !p.length)
return -1;
for (var _ = function(d, h) {
return h ? d.width !== h.width || d.height !== h.height : !0;
}, E = p.length - 1, l = 0; l < p.length; l += 1) {
var n = p[l];
if ((n.width >= S || n.height >= b) && _(n, p[l + 1])) {
E = l;
break;
}
}
return E;
}, O(R, [{
key: "mediaWidth",
get: function() {
return this.getDimensions().width * this.contentScaleFactor;
}
}, {
key: "mediaHeight",
get: function() {
return this.getDimensions().height * this.contentScaleFactor;
}
}, {
key: "contentScaleFactor",
get: function() {
var p = 1;
if (!this.hls.config.ignoreDevicePixelRatio)
try {
p = self.devicePixelRatio;
} catch {
}
return p;
}
}]), R;
}();
const F = C;
},
"./src/controller/cmcd-controller.ts": (U, M, g) => {
g.r(M), g.d(M, {
default: () => b
});
var P = g("./src/events.ts"), y = g("./src/types/cmcd.ts"), O = g("./src/utils/buffer-helper.ts"), C = g("./src/utils/logger.ts");
function F(_, E) {
for (var l = 0; l < E.length; l++) {
var n = E[l];
n.enumerable = n.enumerable || !1, n.configurable = !0, "value" in n && (n.writable = !0), Object.defineProperty(_, n.key, n);
}
}
function R(_, E, l) {
return E && F(_.prototype, E), l && F(_, l), Object.defineProperty(_, "prototype", { writable: !1 }), _;
}
function T(_, E) {
var l = typeof Symbol < "u" && _[Symbol.iterator] || _["@@iterator"];
if (l)
return (l = l.call(_)).next.bind(l);
if (Array.isArray(_) || (l = D(_)) || E && _ && typeof _.length == "number") {
l && (_ = l);
var n = 0;
return function() {
return n >= _.length ? { done: !0 } : { done: !1, value: _[n++] };
};
}
throw new TypeError(`Invalid attempt to iterate non-iterable instance.
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`);
}
function D(_, E) {
if (!!_) {
if (typeof _ == "string")
return p(_, E);
var l = Object.prototype.toString.call(_).slice(8, -1);
if (l === "Object" && _.constructor && (l = _.constructor.name), l === "Map" || l === "Set")
return Array.from(_);
if (l === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(l))
return p(_, E);
}
}
function p(_, E) {
(E == null || E > _.length) && (E = _.length);
for (var l = 0, n = new Array(E); l < E; l++)
n[l] = _[l];
return n;
}
function S() {
return S = Object.assign ? Object.assign.bind() : function(_) {
for (var E = 1; E < arguments.length; E++) {
var l = arguments[E];
for (var n in l)
Object.prototype.hasOwnProperty.call(l, n) && (_[n] = l[n]);
}
return _;
}, S.apply(this, arguments);
}
var b = /* @__PURE__ */ function() {
function _(l) {
var n = this;
this.hls = void 0, this.config = void 0, this.media = void 0, this.sid = void 0, this.cid = void 0, this.useHeaders = !1, this.initialized = !1, this.starved = !1, this.buffering = !0, this.audioBuffer = void 0, this.videoBuffer = void 0, this.onWaiting = function() {
n.initialized && (n.starved = !0), n.buffering = !0;
}, this.onPlaying = function() {
n.initialized || (n.initialized = !0), n.buffering = !1;
}, this.applyPlaylistData = function(h) {
try {
n.apply(h, {
ot: y.CMCDObjectType.MANIFEST,
su: !n.initialized
});
} catch (i) {
C.logger.warn("Could not generate manifest CMCD data.", i);
}
}, this.applyFragmentData = function(h) {
try {
var i = h.frag, r = n.hls.levels[i.level], e = n.getObjectType(i), f = {
d: i.duration * 1e3,
ot: e
};
(e === y.CMCDObjectType.VIDEO || e === y.CMCDObjectType.AUDIO || e == y.CMCDObjectType.MUXED) && (f.br = r.bitrate / 1e3, f.tb = n.getTopBandwidth(e) / 1e3, f.bl = n.getBufferLength(e)), n.apply(h, f);
} catch (u) {
C.logger.warn("Could not generate segment CMCD data.", u);
}
}, this.hls = l;
var t = this.config = l.config, d = t.cmcd;
d != null && (t.pLoader = this.createPlaylistLoader(), t.fLoader = this.createFragmentLoader(), this.sid = d.sessionId || _.uuid(), this.cid = d.contentId, this.useHeaders = d.useHeaders === !0, this.registerListeners());
}
var E = _.prototype;
return E.registerListeners = function() {
var n = this.hls;
n.on(P.Events.MEDIA_ATTACHED, this.onMediaAttached, this), n.on(P.Events.MEDIA_DETACHED, this.onMediaDetached, this), n.on(P.Events.BUFFER_CREATED, this.onBufferCreated, this);
}, E.unregisterListeners = function() {
var n = this.hls;
n.off(P.Events.MEDIA_ATTACHED, this.onMediaAttached, this), n.off(P.Events.MEDIA_DETACHED, this.onMediaDetached, this), n.off(P.Events.BUFFER_CREATED, this.onBufferCreated, this), this.onMediaDetached();
}, E.destroy = function() {
this.unregisterListeners(), this.hls = this.config = this.audioBuffer = this.videoBuffer = null;
}, E.onMediaAttached = function(n, t) {
this.media = t.media, this.media.addEventListener("waiting", this.onWaiting), this.media.addEventListener("playing", this.onPlaying);
}, E.onMediaDetached = function() {
!this.media || (this.media.removeEventListener("waiting", this.onWaiting), this.media.removeEventListener("playing", this.onPlaying), this.media = null);
}, E.onBufferCreated = function(n, t) {
var d, h;
this.audioBuffer = (d = t.tracks.audio) === null || d === void 0 ? void 0 : d.buffer, this.videoBuffer = (h = t.tracks.video) === null || h === void 0 ? void 0 : h.buffer;
}, E.createData = function() {
var n;
return {
v: y.CMCDVersion,
sf: y.CMCDStreamingFormat.HLS,
sid: this.sid,
cid: this.cid,
pr: (n = this.media) === null || n === void 0 ? void 0 : n.playbackRate,
mtp: this.hls.bandwidthEstimate / 1e3
};
}, E.apply = function(n, t) {
t === void 0 && (t = {}), S(t, this.createData());
var d = t.ot === y.CMCDObjectType.INIT || t.ot === y.CMCDObjectType.VIDEO || t.ot === y.CMCDObjectType.MUXED;
if (this.starved && d && (t.bs = !0, t.su = !0, this.starved = !1), t.su == null && (t.su = this.buffering), this.useHeaders) {
var h = _.toHeaders(t);
if (!Object.keys(h).length)
return;
n.headers || (n.headers = {}), S(n.headers, h);
} else {
var i = _.toQuery(t);
if (!i)
return;
n.url = _.appendQueryToUri(n.url, i);
}
}, E.getObjectType = function(n) {
var t = n.type;
if (t === "subtitle")
return y.CMCDObjectType.TIMED_TEXT;
if (n.sn === "initSegment")
return y.CMCDObjectType.INIT;
if (t === "audio")
return y.CMCDObjectType.AUDIO;
if (t === "main")
return this.hls.audioTracks.length ? y.CMCDObjectType.VIDEO : y.CMCDObjectType.MUXED;
}, E.getTopBandwidth = function(n) {
var t = 0, d, h = this.hls;
if (n === y.CMCDObjectType.AUDIO)
d = h.audioTracks;
else {
var i = h.maxAutoLevel, r = i > -1 ? i + 1 : h.levels.length;
d = h.levels.slice(0, r);
}
for (var e = T(d), f; !(f = e()).done; ) {
var u = f.value;
u.bitrate > t && (t = u.bitrate);
}
return t > 0 ? t : NaN;
}, E.getBufferLength = function(n) {
var t = this.hls.media, d = n === y.CMCDObjectType.AUDIO ? this.audioBuffer : this.videoBuffer;
if (!d || !t)
return NaN;
var h = O.BufferHelper.bufferInfo(d, t.currentTime, this.config.maxBufferHole);
return h.len * 1e3;
}, E.createPlaylistLoader = function() {
var n = this.config.pLoader, t = this.applyPlaylistData, d = n || this.config.loader;
return /* @__PURE__ */ function() {
function h(r) {
this.loader = void 0, this.loader = new d(r);
}
var i = h.prototype;
return i.destroy = function() {
this.loader.destroy();
}, i.abort = function() {
this.loader.abort();
}, i.load = function(e, f, u) {
t(e), this.loader.load(e, f, u);
}, R(h, [{
key: "stats",
get: function() {
return this.loader.stats;
}
}, {
key: "context",
get: function() {
return this.loader.context;
}
}]), h;
}();
}, E.createFragmentLoader = function() {
var n = this.config.fLoader, t = this.applyFragmentData, d = n || this.config.loader;
return /* @__PURE__ */ function() {
function h(r) {
this.loader = void 0, this.loader = new d(r);
}
var i = h.prototype;
return i.destroy = function() {
this.loader.destroy();
}, i.abort = function() {
this.loader.abort();
}, i.load = function(e, f, u) {
t(e), this.loader.load(e, f, u);
}, R(h, [{
key: "stats",
get: function() {
return this.loader.stats;
}
}, {
key: "context",
get: function() {
return this.loader.context;
}
}]), h;
}();
}, _.uuid = function() {
var n = URL.createObjectURL(new Blob()), t = n.toString();
return URL.revokeObjectURL(n), t.slice(t.lastIndexOf("/") + 1);
}, _.serialize = function(n) {
for (var t = [], d = function(k) {
return !Number.isNaN(k) && k != null && k !== "" && k !== !1;
}, h = function(k) {
return Math.round(k);
}, i = function(k) {
return h(k / 100) * 100;
}, r = function(k) {
return encodeURIComponent(k);
}, e = {
br: h,
d: h,
bl: i,
dl: i,
mtp: i,
nor: r,
rtp: i,
tb: h
}, f = Object.keys(n || {}).sort(), u = T(f), m; !(m = u()).done; ) {
var s = m.value, v = n[s];
if (!!d(v) && !(s === "v" && v === 1) && !(s == "pr" && v === 1)) {
var c = e[s];
c && (v = c(v));
var o = typeof v, a = void 0;
s === "ot" || s === "sf" || s === "st" ? a = s + "=" + v : o === "boolean" ? a = s : o === "number" ? a = s + "=" + v : a = s + "=" + JSON.stringify(v), t.push(a);
}
}
return t.join(",");
}, _.toHeaders = function(n) {
for (var t = Object.keys(n), d = {}, h = ["Object", "Request", "Session", "Status"], i = [{}, {}, {}, {}], r = {
br: 0,
d: 0,
ot: 0,
tb: 0,
bl: 1,
dl: 1,
mtp: 1,
nor: 1,
nrr: 1,
su: 1,
cid: 2,
pr: 2,
sf: 2,
sid: 2,
st: 2,
v: 2,
bs: 3,
rtp: 3
}, e = 0, f = t; e < f.length; e++) {
var u = f[e], m = r[u] != null ? r[u] : 1;
i[m][u] = n[u];
}
for (var s = 0; s < i.length; s++) {
var v = _.serialize(i[s]);
v && (d["CMCD-" + h[s]] = v);
}
return d;
}, _.toQuery = function(n) {
return "CMCD=" + encodeURIComponent(_.serialize(n));
}, _.appendQueryToUri = function(n, t) {
if (!t)
return n;
var d = n.includes("?") ? "&" : "?";
return "" + n + d + t;
}, _;
}();
},
"./src/controller/eme-controller.ts": (U, M, g) => {
g.r(M), g.d(M, {
default: () => b
});
var P = g("./src/events.ts"), y = g("./src/errors.ts"), O = g("./src/utils/logger.ts"), C = g("./src/utils/mediakeys-helper.ts");
function F(_, E) {
for (var l = 0; l < E.length; l++) {
var n = E[l];
n.enumerable = n.enumerable || !1, n.configurable = !0, "value" in n && (n.writable = !0), Object.defineProperty(_, n.key, n);
}
}
function R(_, E, l) {
return E && F(_.prototype, E), l && F(_, l), Object.defineProperty(_, "prototype", { writable: !1 }), _;
}
var T = 3, D = function(E, l, n) {
var t = {
audioCapabilities: [],
videoCapabilities: []
};
return E.forEach(function(d) {
t.audioCapabilities.push({
contentType: 'audio/mp4; codecs="' + d + '"',
robustness: n.audioRobustness || ""
});
}), l.forEach(function(d) {
t.videoCapabilities.push({
contentType: 'video/mp4; codecs="' + d + '"',
robustness: n.videoRobustness || ""
});
}), [t];
}, p = function(E, l, n, t) {
switch (E) {
case C.KeySystems.WIDEVINE:
return D(l, n, t);
default:
throw new Error("Unknown key-system: " + E);
}
}, S = /* @__PURE__ */ function() {
function _(l) {
this.hls = void 0, this._widevineLicenseUrl = void 0, this._licenseXhrSetup = void 0, this._licenseResponseCallback = void 0, this._emeEnabled = void 0, this._requestMediaKeySystemAccess = void 0, this._drmSystemOptions = void 0, this._config = void 0, this._mediaKeysList = [], this._media = null, this._hasSetMediaKeys = !1, this._requestLicenseFailureCount = 0, this.mediaKeysPromise = null, this._onMediaEncrypted = this.onMediaEncrypted.bind(this), this.hls = l, this._config = l.config, this._widevineLicenseUrl = this._config.widevineLicenseUrl, this._licenseXhrSetup = this._config.licenseXhrSetup, this._licenseResponseCallback = this._config.licenseResponseCallback, this._emeEnabled = this._config.emeEnabled, this._requestMediaKeySystemAccess = this._config.requestMediaKeySystemAccessFunc, this._drmSystemOptions = this._config.drmSystemOptions, this._registerListeners();
}
var E = _.prototype;
return E.destroy = function() {
this._unregisterListeners(), this.hls = this._onMediaEncrypted = null, this._requestMediaKeySystemAccess = null;
}, E._registerListeners = function() {
this.hls.on(P.Events.MEDIA_ATTACHED, this.onMediaAttached, this), this.hls.on(P.Events.MEDIA_DETACHED, this.onMediaDetached, this), this.hls.on(P.Events.MANIFEST_PARSED, this.onManifestParsed, this);
}, E._unregisterListeners = function() {
this.hls.off(P.Events.MEDIA_ATTACHED, this.onMediaAttached, this), this.hls.off(P.Events.MEDIA_DETACHED, this.onMediaDetached, this), this.hls.off(P.Events.MANIFEST_PARSED, this.onManifestParsed, this);
}, E.getLicenseServerUrl = function(n) {
switch (n) {
case C.KeySystems.WIDEVINE:
if (!this._widevineLicenseUrl)
break;
return this._widevineLicenseUrl;
}
throw new Error('no license server URL configured for key-system "' + n + '"');
}, E._attemptKeySystemAccess = function(n, t, d) {
var h = this, i = p(n, t, d, this._drmSystemOptions);
O.logger.log("Requesting encrypted media key-system access");
var r = this.requestMediaKeySystemAccess(n, i);
this.mediaKeysPromise = r.then(function(e) {
return h._onMediaKeySystemAccessObtained(n, e);
}), r.catch(function(e) {
O.logger.error('Failed to obtain key-system "' + n + '" access:', e);
});
}, E._onMediaKeySystemAccessObtained = function(n, t) {
var d = this;
O.logger.log('Access for key-system "' + n + '" obtained');
var h = {
mediaKeysSessionInitialized: !1,
mediaKeySystemAccess: t,
mediaKeySystemDomain: n
};
this._mediaKeysList.push(h);
var i = Promise.resolve().then(function() {
return t.createMediaKeys();
}).then(function(r) {
return h.mediaKeys = r, O.logger.log('Media-keys created for key-system "' + n + '"'), d._onMediaKeysCreated(), r;
});
return i.catch(function(r) {
O.logger.error("Failed to create media-keys:", r);
}), i;
}, E._onMediaKeysCreated = function() {
var n = this;
this._mediaKeysList.forEach(function(t) {
t.mediaKeysSession || (t.mediaKeysSession = t.mediaKeys.createSession(), n._onNewMediaKeySession(t.mediaKeysSession));
});
}, E._onNewMediaKeySession = function(n) {
var t = this;
O.logger.log("New key-system session " + n.sessionId), n.addEventListener("message", function(d) {
t._onKeySessionMessage(n, d.message);
}, !1);
}, E._onKeySessionMessage = function(n, t) {
O.logger.log("Got EME message event, creating license request"), this._requestLicense(t, function(d) {
O.logger.log("Received license data (length: " + (d && d.byteLength) + "), updating key-session"), n.update(d).catch(function(h) {
O.logger.warn("Updating key-session failed: " + h);
});
});
}, E.onMediaEncrypted = function(n) {
var t = this;
if (O.logger.log('Media is encrypted using "' + n.initDataType + '" init data type'), !this.mediaKeysPromise) {
O.logger.error("Fatal: Media is encrypted but no CDM access or no keys have been requested"), this.hls.trigger(P.Events.ERROR, {
type: y.ErrorTypes.KEY_SYSTEM_ERROR,
details: y.ErrorDetails.KEY_SYSTEM_NO_KEYS,
fatal: !0
});
return;
}
var d = function(i) {
!t._media || (t._attemptSetMediaKeys(i), t._generateRequestWithPreferredKeySession(n.initDataType, n.initData));
};
this.mediaKeysPromise.then(d).catch(d);
}, E._attemptSetMediaKeys = function(n) {
if (!this._media)
throw new Error("Attempted to set mediaKeys without first attaching a media element");
if (!this._hasSetMediaKeys) {
var t = this._mediaKeysList[0];
if (!t || !t.mediaKeys) {
O.logger.error("Fatal: Media is encrypted but no CDM access or no keys have been obtained yet"), this.hls.trigger(P.Events.ERROR, {
type: y.ErrorTypes.KEY_SYSTEM_ERROR,
details: y.ErrorDetails.KEY_SYSTEM_NO_KEYS,
fatal: !0
});
return;
}
O.logger.log("Setting keys for encrypted media"), this._media.setMediaKeys(t.mediaKeys), this._hasSetMediaKeys = !0;
}
}, E._generateRequestWithPreferredKeySession = function(n, t) {
var d = this, h = this._mediaKeysList[0];
if (!h) {
O.logger.error("Fatal: Media is encrypted but not any key-system access has been obtained yet"), this.hls.trigger(P.Events.ERROR, {
type: y.ErrorTypes.KEY_SYSTEM_ERROR,
details: y.ErrorDetails.KEY_SYSTEM_NO_ACCESS,
fatal: !0
});
return;
}
if (h.mediaKeysSessionInitialized) {
O.logger.warn("Key-Session already initialized but requested again");
return;
}
var i = h.mediaKeysSession;
if (!i) {
O.logger.error("Fatal: Media is encrypted but no key-session existing"), this.hls.trigger(P.Events.ERROR, {
type: y.ErrorTypes.KEY_SYSTEM_ERROR,
details: y.ErrorDetails.KEY_SYSTEM_NO_SESSION,
fatal: !0
});
return;
}
if (!t) {
O.logger.warn("Fatal: initData required for generating a key session is null"), this.hls.trigger(P.Events.ERROR, {
type: y.ErrorTypes.KEY_SYSTEM_ERROR,
details: y.ErrorDetails.KEY_SYSTEM_NO_INIT_DATA,
fatal: !0
});
return;
}
O.logger.log('Generating key-session request for "' + n + '" init data type'), h.mediaKeysSessionInitialized = !0, i.generateRequest(n, t).then(function() {
O.logger.debug("Key-session generation succeeded");
}).catch(function(r) {
O.logger.error("Error generating key-session request:", r), d.hls.trigger(P.Events.ERROR, {
type: y.ErrorTypes.KEY_SYSTEM_ERROR,
details: y.ErrorDetails.KEY_SYSTEM_NO_SESSION,
fatal: !1
});
});
}, E._createLicenseXhr = function(n, t, d) {
var h = new XMLHttpRequest();
h.responseType = "arraybuffer", h.onreadystatechange = this._onLicenseRequestReadyStageChange.bind(this, h, n, t, d);
var i = this._licenseXhrSetup;
if (i)
try {
i.call(this.hls, h, n), i = void 0;
} catch (r) {
O.logger.error(r);
}
try {
h.readyState || h.open("POST", n, !0), i && i.call(this.hls, h, n);
} catch (r) {
throw new Error("issue setting up KeySystem license XHR " + r);
}
return h;
}, E._onLicenseRequestReadyStageChange = function(n, t, d, h) {
switch (n.readyState) {
case 4:
if (n.status === 200) {
this._requestLicenseFailureCount = 0, O.logger.log("License request succeeded");
var i = n.response, r = this._licenseResponseCallback;
if (r)
try {
i = r.call(this.hls, n, t);
} catch (f) {
O.logger.error(f);
}
h(i);
} else {
if (O.logger.error("License Request XHR failed (" + t + "). Status: " + n.status + " (" + n.statusText + ")"), this._requestLicenseFailureCount++, this._requestLicenseFailureCount > T) {
this.hls.trigger(P.Events.ERROR, {
type: y.ErrorTypes.KEY_SYSTEM_ERROR,
details: y.ErrorDetails.KEY_SYSTEM_LICENSE_REQUEST_FAILED,
fatal: !0
});
return;
}
var e = T - this._requestLicenseFailureCount + 1;
O.logger.warn("Retrying license request, " + e + " attempts left"), this._requestLicense(d, h);
}
break;
}
}, E._generateLicenseRequestChallenge = function(n, t) {
switch (n.mediaKeySystemDomain) {
case C.KeySystems.WIDEVINE:
return t;
}
throw new Error("unsupported key-system: " + n.mediaKeySystemDomain);
}, E._requestLicense = function(n, t) {
O.logger.log("Requesting content license for key-system");
var d = this._mediaKeysList[0];
if (!d) {
O.logger.error("Fatal error: Media is encrypted but no key-system access has been obtained yet"), this.hls.trigger(P.Events.ERROR, {
type: y.ErrorTypes.KEY_SYSTEM_ERROR,
details: y.ErrorDetails.KEY_SYSTEM_NO_ACCESS,
fatal: !0
});
return;
}
try {
var h = this.getLicenseServerUrl(d.mediaKeySystemDomain), i = this._createLicenseXhr(h, n, t);
O.logger.log("Sending license request to URL: " + h);
var r = this._generateLicenseRequestChallenge(d, n);
i.send(r);
} catch (e) {
O.logger.error("Failure requesting DRM license: " + e), this.hls.trigger(P.Events.ERROR, {
type: y.ErrorTypes.KEY_SYSTEM_ERROR,
details: y.ErrorDetails.KEY_SYSTEM_LICENSE_REQUEST_FAILED,
fatal: !0
});
}
}, E.onMediaAttached = function(n, t) {
if (!!this._emeEnabled) {
var d = t.media;
this._media = d, d.addEventListener("encrypted", this._onMediaEncrypted);
}
}, E.onMediaDetached = function() {
var n = this._media, t = this._mediaKeysList;
!n || (n.removeEventListener("encrypted", this._onMediaEncrypted), this._media = null, this._mediaKeysList = [], Promise.all(t.map(function(d) {
if (d.mediaKeysSession)
return d.mediaKeysSession.close().catch(function() {
});
})).then(function() {
return n.setMediaKeys(null);
}).catch(function() {
}));
}, E.onManifestParsed = function(n, t) {
if (!!this._emeEnabled) {
var d = t.levels.map(function(i) {
return i.audioCodec;
}).filter(function(i) {
return !!i;
}), h = t.levels.map(function(i) {
return i.videoCodec;
}).filter(function(i) {
return !!i;
});
this._attemptKeySystemAccess(C.KeySystems.WIDEVINE, d, h);
}
}, R(_, [{
key: "requestMediaKeySystemAccess",
get: function() {
if (!this._requestMediaKeySystemAccess)
throw new Error("No requestMediaKeySystemAccess function configured");
return this._requestMediaKeySystemAccess;
}
}]), _;
}();
const b = S;
},
"./src/controller/fps-controller.ts": (U, M, g) => {
g.r(M), g.d(M, {
default: () => C
});
var P = g("./src/events.ts"), y = g("./src/utils/logger.ts"), O = /* @__PURE__ */ function() {
function F(T) {
this.hls = void 0, this.isVideoPlaybackQualityAvailable = !1, this.timer = void 0, this.media = null, this.lastTime = void 0, this.lastDroppedFrames = 0, this.lastDecodedFrames = 0, this.streamController = void 0, this.hls = T, this.registerListeners();
}
var R = F.prototype;
return R.setStreamController = function(D) {
this.streamController = D;
}, R.registerListeners = function() {
this.hls.on(P.Events.MEDIA_ATTACHING, this.onMediaAttaching, this);
}, R.unregisterListeners = function() {
this.hls.off(P.Events.MEDIA_ATTACHING, this.onMediaAttaching);
}, R.destroy = function() {
this.timer && clearInterval(this.timer), this.unregisterListeners(), this.isVideoPlaybackQualityAvailable = !1, this.media = null;
}, R.onMediaAttaching = function(D, p) {
var S = this.hls.config;
if (S.capLevelOnFPSDrop) {
var b = p.media instanceof self.HTMLVideoElement ? p.media : null;
this.media = b, b && typeof b.getVideoPlaybackQuality == "function" && (this.isVideoPlaybackQualityAvailable = !0), self.clearInterval(this.timer), this.timer = self.setInterval(this.checkFPSInterval.bind(this), S.fpsDroppedMonitoringPeriod);
}
}, R.checkFPS = function(D, p, S) {
var b = performance.now();
if (p) {
if (this.lastTime) {
var _ = b - this.lastTime, E = S - this.lastDroppedFrames, l = p - this.lastDecodedFrames, n = 1e3 * E / _, t = this.hls;
if (t.trigger(P.Events.FPS_DROP, {
currentDropped: E,
currentDecoded: l,
totalDroppedFrames: S
}), n > 0 && E > t.config.fpsDroppedMonitoringThreshold * l) {
var d = t.currentLevel;
y.logger.warn("drop FPS ratio greater than max allowed value for currentLevel: " + d), d > 0 && (t.autoLevelCapping === -1 || t.autoLevelCapping >= d) && (d = d - 1, t.trigger(P.Events.FPS_DROP_LEVEL_CAPPING, {
level: d,
droppedLevel: t.currentLevel
}), t.autoLevelCapping = d, this.streamController.nextLevelSwitch());
}
}
this.lastTime = b, this.lastDroppedFrames = S, this.lastDecodedFrames = p;
}
}, R.checkFPSInterval = function() {
var D = this.media;
if (D)
if (this.isVideoPlaybackQualityAvailable) {
var p = D.getVideoPlaybackQuality();
this.checkFPS(D, p.totalVideoFrames, p.droppedVideoFrames);
} else
this.checkFPS(D, D.webkitDecodedFrameCount, D.webkitDroppedFrameCount);
}, F;
}();
const C = O;
},
"./src/controller/fragment-finders.ts": (U, M, g) => {
g.r(M), g.d(M, {
findFragWithCC: () => T,
findFragmentByPDT: () => O,
findFragmentByPTS: () => C,
fragmentWithinToleranceTest: () => F,
pdtWithinToleranceTest: () => R
});
var P = g("./src/polyfills/number.ts"), y = g("./src/utils/binary-search.ts");
function O(D, p, S) {
if (p === null || !Array.isArray(D) || !D.length || !(0, P.isFiniteNumber)(p))
return null;
var b = D[0].programDateTime;
if (p < (b || 0))
return null;
var _ = D[D.length - 1].endProgramDateTime;
if (p >= (_ || 0))
return null;
S = S || 0;
for (var E = 0; E < D.length; ++E) {
var l = D[E];
if (R(p, S, l))
return l;
}
return null;
}
function C(D, p, S, b) {
S === void 0 && (S = 0), b === void 0 && (b = 0);
var _ = null;
if (D ? _ = p[D.sn - p[0].sn + 1] || null : S === 0 && p[0].start === 0 && (_ = p[0]), _ && F(S, b, _) === 0)
return _;
var E = y.default.search(p, F.bind(null, S, b));
return E || _;
}
function F(D, p, S) {
D === void 0 && (D = 0), p === void 0 && (p = 0);
var b = Math.min(p, S.duration + (S.deltaPTS ? S.deltaPTS : 0));
return S.start + S.duration - b <= D ? 1 : S.start - b > D && S.start ? -1 : 0;
}
function R(D, p, S) {
var b = Math.min(p, S.duration + (S.deltaPTS ? S.deltaPTS : 0)) * 1e3, _ = S.endProgramDateTime || 0;
return _ - b > D;
}
function T(D, p) {
return y.default.search(D, function(S) {
return S.cc < p ? 1 : S.cc > p ? -1 : 0;
});
}
},
"./src/controller/fragment-tracker.ts": (U, M, g) => {
g.r(M), g.d(M, {
FragmentState: () => O,
FragmentTracker: () => C
});
var P = g("./src/events.ts"), y = g("./src/types/loader.ts"), O;
(function(T) {
T.NOT_LOADED = "NOT_LOADED", T.APPENDING = "APPENDING", T.PARTIAL = "PARTIAL", T.OK = "OK";
})(O || (O = {}));
var C = /* @__PURE__ */ function() {
function T(p) {
this.activeFragment = null, this.activeParts = null, this.fragments = /* @__PURE__ */ Object.create(null), this.timeRanges = /* @__PURE__ */ Object.create(null), this.bufferPadding = 0.2, this.hls = void 0, this.hls = p, this._registerListeners();
}
var D = T.prototype;
return D._registerListeners = function() {
var S = this.hls;
S.on(P.Events.BUFFER_APPENDED, this.onBufferAppended, this), S.on(P.Events.FRAG_BUFFERED, this.onFragBuffered, this), S.on(P.Events.FRAG_LOADED, this.onFragLoaded, this);
}, D._unregisterListeners = function() {
var S = this.hls;
S.off(P.Events.BUFFER_APPENDED, this.onBufferAppended, this), S.off(P.Events.FRAG_BUFFERED, this.onFragBuffered, this), S.off(P.Events.FRAG_LOADED, this.onFragLoaded, this);
}, D.destroy = function() {
this._unregisterListeners(), this.fragments = this.timeRanges = null;
}, D.getAppendedFrag = function(S, b) {
if (b === y.PlaylistLevelType.MAIN) {
var _ = this.activeFragment, E = this.activeParts;
if (!_)
return null;
if (E)
for (var l = E.length; l--; ) {
var n = E[l], t = n ? n.end : _.appendedPTS;
if (n.start <= S && t !== void 0 && S <= t)
return l > 9 && (this.activeParts = E.slice(l - 9)), n;
}
else if (_.start <= S && _.appendedPTS !== void 0 && S <= _.appendedPTS)
return _;
}
return this.getBufferedFrag(S, b);
}, D.getBufferedFrag = function(S, b) {
for (var _ = this.fragments, E = Object.keys(_), l = E.length; l--; ) {
var n = _[E[l]];
if ((n == null ? void 0 : n.body.type) === b && n.buffered) {
var t = n.body;
if (t.start <= S && S <= t.end)
return t;
}
}
return null;
}, D.detectEvictedFragments = function(S, b, _) {
var E = this;
Object.keys(this.fragments).forEach(function(l) {
var n = E.fragments[l];
if (!!n) {
if (!n.buffered) {
n.body.type === _ && E.removeFragment(n.body);
return;
}
var t = n.range[S];
!t || t.time.some(function(d) {
var h = !E.isTimeBuffered(d.startPTS, d.endPTS, b);
return h && E.removeFragment(n.body), h;
});
}
});
}, D.detectPartialFragments = function(S) {
var b = this, _ = this.timeRanges, E = S.frag, l = S.part;
if (!(!_ || E.sn === "initSegment")) {
var n = R(E), t = this.fragments[n];
!t || (Object.keys(_).forEach(function(d) {
var h = E.elementaryStreams[d];
if (!!h) {
var i = _[d], r = l !== null || h.partial === !0;
t.range[d] = b.getBufferedTimes(E, l, r, i);
}
}), t.loaded = null, Object.keys(t.range).length ? t.buffered = !0 : this.removeFragment(t.body));
}
}, D.fragBuffered = function(S) {
var b = R(S), _ = this.fragments[b];
_ && (_.loaded = null, _.buffered = !0);
}, D.getBufferedTimes = function(S, b, _, E) {
for (var l = {
time: [],
partial: _
}, n = b ? b.start : S.start, t = b ? b.end : S.end, d = S.minEndPTS || t, h = S.maxStartPTS || n, i = 0; i < E.length; i++) {
var r = E.start(i) - this.bufferPadding, e = E.end(i) + this.bufferPadding;
if (h >= r && d <= e) {
l.time.push({
startPTS: Math.max(n, E.start(i)),
endPTS: Math.min(t, E.end(i))
});
break;
} else if (n < e && t > r)
l.partial = !0, l.time.push({
startPTS: Math.max(n, E.start(i)),
endPTS: Math.min(t, E.end(i))
});
else if (t <= r)
break;
}
return l;
}, D.getPartialFragment = function(S) {
var b = null, _, E, l, n = 0, t = this.bufferPadding, d = this.fragments;
return Object.keys(d).forEach(function(h) {
var i = d[h];
!i || F(i) && (E = i.body.start - t, l = i.body.end + t, S >= E && S <= l && (_ = Math.min(S - E, l - S), n <= _ && (b = i.body, n = _)));
}), b;
}, D.getState = function(S) {
var b = R(S), _ = this.fragments[b];
return _ ? _.buffered ? F(_) ? O.PARTIAL : O.OK : O.APPENDING : O.NOT_LOADED;
}, D.isTimeBuffered = function(S, b, _) {
for (var E, l, n = 0; n < _.length; n++) {
if (E = _.start(n) - this.bufferPadding, l = _.end(n) + this.bufferPadding, S >= E && b <= l)
return !0;
if (b <= E)
return !1;
}
return !1;
}, D.onFragLoaded = function(S, b) {
var _ = b.frag, E = b.part;
if (!(_.sn === "initSegment" || _.bitrateTest || E)) {
var l = R(_);
this.fragments[l] = {
body: _,
loaded: b,
buffered: !1,
range: /* @__PURE__ */ Object.create(null)
};
}
}, D.onBufferAppended = function(S, b) {
var _ = this, E = b.frag, l = b.part, n = b.timeRanges;
if (E.type === y.PlaylistLevelType.MAIN)
if (this.activeFragment = E, l) {
var t = this.activeParts;
t || (this.activeParts = t = []), t.push(l);
} else
this.activeParts = null;
this.timeRanges = n, Object.keys(n).forEach(function(d) {
var h = n[d];
if (_.detectEvictedFragments(d, h), !l)
for (var i = 0; i < h.length; i++)
E.appendedPTS = Math.max(h.end(i), E.appendedPTS || 0);
});
}, D.onFragBuffered = function(S, b) {
this.detectPartialFragments(b);
}, D.hasFragment = function(S) {
var b = R(S);
return !!this.fragments[b];
}, D.removeFragmentsInRange = function(S, b, _) {
var E = this;
Object.keys(this.fragments).forEach(function(l) {
var n = E.fragments[l];
if (!!n && n.buffered) {
var t = n.body;
t.type === _ && t.start < b && t.end > S && E.removeFragment(t);
}
});
}, D.removeFragment = function(S) {
var b = R(S);
S.stats.loaded = 0, S.clearElementaryStreamInfo(), delete this.fragments[b];
}, D.removeAllFragments = function() {
this.fragments = /* @__PURE__ */ Object.create(null), this.activeFragment = null, this.activeParts = null;
}, T;
}();
function F(T) {
var D, p;
return T.buffered && (((D = T.range.video) === null || D === void 0 ? void 0 : D.partial) || ((p = T.range.audio) === null || p === void 0 ? void 0 : p.partial));
}
function R(T) {
return T.type + "_" + T.level + "_" + T.urlId + "_" + T.sn;
}
},
"./src/controller/gap-controller.ts": (U, M, g) => {
g.r(M), g.d(M, {
MAX_START_GAP_JUMP: () => R,
SKIP_BUFFER_HOLE_STEP_SECONDS: () => T,
SKIP_BUFFER_RANGE_START: () => D,
STALL_MINIMUM_DURATION_MS: () => F,
default: () => p
});
var P = g("./src/utils/buffer-helper.ts"), y = g("./src/errors.ts"), O = g("./src/events.ts"), C = g("./src/utils/logger.ts"), F = 250, R = 2, T = 0.1, D = 0.05, p = /* @__PURE__ */ function() {
function S(_, E, l, n) {
this.config = void 0, this.media = null, this.fragmentTracker = void 0, this.hls = void 0, this.nudgeRetry = 0, this.stallReported = !1, this.stalled = null, this.moved = !1, this.seeking = !1, this.config = _, this.media = E, this.fragmentTracker = l, this.hls = n;
}
var b = S.prototype;
return b.destroy = function() {
this.media = null, this.hls = this.fragmentTracker = null;
}, b.poll = function(E, l) {
var n = this.config, t = this.media, d = this.stalled;
if (t !== null) {
var h = t.currentTime, i = t.seeking, r = this.seeking && !i, e = !this.seeking && i;
if (this.seeking = i, h !== E) {
if (this.moved = !0, d !== null) {
if (this.stallReported) {
var f = self.performance.now() - d;
C.logger.warn("playback not stuck anymore @" + h + ", after " + Math.round(f) + "ms"), this.stallReported = !1;
}
this.stalled = null, this.nudgeRetry = 0;
}
return;
}
if ((e || r) && (this.stalled = null), !(t.paused && !i || t.ended || t.playbackRate === 0 || !P.BufferHelper.getBuffered(t).length)) {
var u = P.BufferHelper.bufferInfo(t, h, 0), m = u.len > 0, s = u.nextStart || 0;
if (!(!m && !s)) {
if (i) {
var v = u.len > R, c = !s || l && l.start <= h || s - h > R && !this.fragmentTracker.getPartialFragment(h);
if (v || c)
return;
this.moved = !1;
}
if (!this.moved && this.stalled !== null) {
var o, a = Math.max(s, u.start || 0) - h, x = this.hls.levels ? this.hls.levels[this.hls.currentLevel] : null, k = x == null || (o = x.details) === null || o === void 0 ? void 0 : o.live, K = k ? x.details.targetduration * 2 : R;
if (a > 0 && a <= K) {
this._trySkipBufferHole(null);
return;
}
}
var w = self.performance.now();
if (d === null) {
this.stalled = w;
return;
}
var W = w - d;
if (!(!i && W >= F && (this._reportStall(u), !this.media))) {
var z = P.BufferHelper.bufferInfo(t, h, n.maxBufferHole);
this._tryFixBufferStall(z, W);
}
}
}
}
}, b._tryFixBufferStall = function(E, l) {
var n = this.config, t = this.fragmentTracker, d = this.media;
if (d !== null) {
var h = d.currentTime, i = t.getPartialFragment(h);
if (i) {
var r = this._trySkipBufferHole(i);
if (r || !this.media)
return;
}
E.len > n.maxBufferHole && l > n.highBufferWatchdogPeriod * 1e3 && (C.logger.warn("Trying to nudge playhead over buffer-hole"), this.stalled = null, this._tryNudgeBuffer());
}
}, b._reportStall = function(E) {
var l = this.hls, n = this.media, t = this.stallReported;
!t && n && (this.stallReported = !0, C.logger.warn("Playback stalling at @" + n.currentTime + " due to low buffer (" + JSON.stringify(E) + ")"), l.trigger(O.Events.ERROR, {
type: y.ErrorTypes.MEDIA_ERROR,
details: y.ErrorDetails.BUFFER_STALLED_ERROR,
fatal: !1,
buffer: E.len
}));
}, b._trySkipBufferHole = function(E) {
var l = this.config, n = this.hls, t = this.media;
if (t === null)
return 0;
for (var d = t.currentTime, h = 0, i = P.BufferHelper.getBuffered(t), r = 0; r < i.length; r++) {
var e = i.start(r);
if (d + l.maxBufferHole >= h && d < e) {
var f = Math.max(e + D, t.currentTime + T);
return C.logger.warn("skipping hole, adjusting currentTime from " + d + " to " + f), this.moved = !0, this.stalled = null, t.currentTime = f, E && n.trigger(O.Events.ERROR, {
type: y.ErrorTypes.MEDIA_ERROR,
details: y.ErrorDetails.BUFFER_SEEK_OVER_HOLE,
fatal: !1,
reason: "fragment loaded with buffer holes, seeking from " + d + " to " + f,
frag: E
}), f;
}
h = i.end(r);
}
return 0;
}, b._tryNudgeBuffer = function() {
var E = this.config, l = this.hls, n = this.media, t = this.nudgeRetry;
if (n !== null) {
var d = n.currentTime;
if (this.nudgeRetry++, t < E.nudgeMaxRetry) {
var h = d + (t + 1) * E.nudgeOffset;
C.logger.warn("Nudging 'currentTime' from " + d + " to " + h), n.currentTime = h, l.trigger(O.Events.ERROR, {
type: y.ErrorTypes.MEDIA_ERROR,
details: y.ErrorDetails.BUFFER_NUDGE_ON_STALL,
fatal: !1
});
} else
C.logger.error("Playhead still not moving while enough data buffered @" + d + " after " + E.nudgeMaxRetry + " nudges"), l.trigger(O.Events.ERROR, {
type: y.ErrorTypes.MEDIA_ERROR,
details: y.ErrorDetails.BUFFER_STALLED_ERROR,
fatal: !0
});
}
}, S;
}();
},
"./src/controller/id3-track-controller.ts": (U, M, g) => {
g.r(M), g.d(M, {
default: () => E
});
var P = g("./src/polyfills/number.ts"), y = g("./src/events.ts"), O = g("./src/utils/texttrack-utils.ts"), C = g("./src/demux/id3.ts"), F = g("./src/loader/date-range.ts"), R = g("./src/types/demuxer.ts"), T = 0.25;
function D() {
return self.WebKitDataCue || self.VTTCue || self.TextTrackCue;
}
var p = function() {
var l = D();
try {
new l(0, Number.POSITIVE_INFINITY, "");
} catch {
return Number.MAX_VALUE;
}
return Number.POSITIVE_INFINITY;
}();
function S(l, n) {
return l.getTime() / 1e3 - n;
}
function b(l) {
return Uint8Array.from(l.replace(/^0x/, "").replace(/([\da-fA-F]{2}) ?/g, "0x$1 ").replace(/ +$/, "").split(" ")).buffer;
}
var _ = /* @__PURE__ */ function() {
function l(t) {
this.hls = void 0, this.id3Track = null, this.media = null, this.dateRangeCuesAppended = {}, this.hls = t, this._registerListeners();
}
var n = l.prototype;
return n.destroy = function() {
this._unregisterListeners(), this.id3Track = null, this.media = null, this.dateRangeCuesAppended = {}, this.hls = null;
}, n._registerListeners = function() {
var d = this.hls;
d.on(y.Events.MEDIA_ATTACHED, this.onMediaAttached, this), d.on(y.Events.MEDIA_DETACHING, this.onMediaDetaching, this), d.on(y.Events.MANIFEST_LOADING, this.onManifestLoading, this), d.on(y.Events.FRAG_PARSING_METADATA, this.onFragParsingMetadata, this), d.on(y.Events.BUFFER_FLUSHING, this.onBufferFlushing, this), d.on(y.Events.LEVEL_UPDATED, this.onLevelUpdated, this);
}, n._unregisterListeners = function() {
var d = this.hls;
d.off(y.Events.MEDIA_ATTACHED, this.onMediaAttached, this), d.off(y.Events.MEDIA_DETACHING, this.onMediaDetaching, this), d.off(y.Events.MANIFEST_LOADING, this.onManifestLoading, this), d.off(y.Events.FRAG_PARSING_METADATA, this.onFragParsingMetadata, this), d.off(y.Events.BUFFER_FLUSHING, this.onBufferFlushing, this), d.off(y.Events.LEVEL_UPDATED, this.onLevelUpdated, this);
}, n.onMediaAttached = function(d, h) {
this.media = h.media;
}, n.onMediaDetaching = function() {
!this.id3Track || ((0, O.clearCurrentCues)(this.id3Track), this.id3Track = null, this.media = null, this.dateRangeCuesAppended = {});
}, n.onManifestLoading = function() {
this.dateRangeCuesAppended = {};
}, n.createTrack = function(d) {
var h = this.getID3Track(d.textTracks);
return h.mode = "hidden", h;
}, n.getID3Track = function(d) {
if (!!this.media) {
for (var h = 0; h < d.length; h++) {
var i = d[h];
if (i.kind === "metadata" && i.label === "id3")
return (0, O.sendAddTrackEvent)(i, this.media), i;
}
return this.media.addTextTrack("metadata", "id3");
}
}, n.onFragParsingMetadata = function(d, h) {
if (!!this.media) {
var i = this.hls.config, r = i.enableEmsgMetadataCues, e = i.enableID3MetadataCues;
if (!(!r && !e)) {
h.frag;
var f = h.samples;
h.details, this.id3Track || (this.id3Track = this.createTrack(this.media));
for (var u = D(), m = 0; m < f.length; m++) {
var s = f[m].type;
if (!(s === R.MetadataSchema.emsg && !r || !e)) {
var v = C.getID3Frames(f[m].data);
if (v) {
var c = f[m].pts, o = c + f[m].duration;
o > p && (o = p);
var a = o - c;
a <= 0 && (o = c + T);
for (var x = 0; x < v.length; x++) {
var k = v[x];
if (!C.isTimeStampFrame(k)) {
this.updateId3CueEnds(c);
var K = new u(c, o, "");
K.value = k, s && (K.type = s), this.id3Track.addCue(K);
}
}
}
}
}
}
}
}, n.updateId3CueEnds = function(d) {
var h, i = (h = this.id3Track) === null || h === void 0 ? void 0 : h.cues;
if (i)
for (var r = i.length; r--; ) {
var e = i[r];
e.startTime < d && e.endTime === p && (e.endTime = d);
}
}, n.onBufferFlushing = function(d, h) {
var i = h.startOffset, r = h.endOffset, e = h.type, f = this.id3Track, u = this.hls;
if (!!u) {
var m = u.config, s = m.enableEmsgMetadataCues, v = m.enableID3MetadataCues;
if (f && (s || v)) {
var c;
e === "audio" ? c = function(a) {
return a.type === R.MetadataSchema.audioId3 && v;
} : e === "video" ? c = function(a) {
return a.type === R.MetadataSchema.emsg && s;
} : c = function(a) {
return a.type === R.MetadataSchema.audioId3 && v || a.type === R.MetadataSchema.emsg && s;
}, (0, O.removeCuesInRange)(f, i, r, c);
}
}
}, n.onLevelUpdated = function(d, h) {
var i = this, r = h.details;
if (!(!this.media || !r.hasProgramDateTime || !this.hls.config.enableDateRangeMetadataCues)) {
var e = this.dateRangeCuesAppended, f = this.id3Track, u = r.dateRanges, m = Object.keys(u);
if (f)
for (var s = Object.keys(e).filter(function(w) {
return !m.includes(w);
}), v = function(W) {
var z = s[W];
Object.keys(e[z].cues).forEach(function(H) {
f.removeCue(e[z].cues[H]);
}), delete e[z];
}, c = s.length; c--; )
v(c);
var o = r.fragments[r.fragments.length - 1];
if (!(m.length === 0 || !(0, P.isFiniteNumber)(o == null ? void 0 : o.programDateTime))) {
this.id3Track || (this.id3Track = this.createTrack(this.media));
for (var a = o.programDateTime / 1e3 - o.start, x = D(), k = function(W) {
var z = m[W], H = u[z], j = e[z], Y = (j == null ? void 0 : j.cues) || {}, Z = (j == null ? void 0 : j.durationKnown) || !1, q = S(H.startDate, a), ee = p, te = H.endDate;
if (te)
ee = S(te, a), Z = !0;
else if (H.endOnNext && !Z) {
var ne = m.reduce(function(me, ve) {
var pe = u[ve];
return pe.class === H.class && pe.id !== ve && pe.startDate > H.startDate && me.push(pe), me;
}, []).sort(function(me, ve) {
return me.startDate.getTime() - ve.startDate.getTime();
})[0];
ne && (ee = S(ne.startDate, a), Z = !0);
}
for (var ie = Object.keys(H.attr), oe = 0; oe < ie.length; oe++) {
var de = ie[oe];
if (!(de === F.DateRangeAttribute.ID || de === F.DateRangeAttribute.CLASS || de === F.DateRangeAttribute.START_DATE || de === F.DateRangeAttribute.DURATION || de === F.DateRangeAttribute.END_DATE || de === F.DateRangeAttribute.END_ON_NEXT)) {
var re = Y[de];
if (re)
Z && !j.durationKnown && (re.endTime = ee);
else {
var le = H.attr[de];
re = new x(q, ee, ""), (de === F.DateRangeAttribute.SCTE35_OUT || de === F.DateRangeAttribute.SCTE35_IN) && (le = b(le)), re.value = {
key: de,
data: le
}, re.type = R.MetadataSchema.dateRange, i.id3Track.addCue(re), Y[de] = re;
}
}
}
e[z] = {
cues: Y,
dateRange: H,
durationKnown: Z
};
}, K = 0; K < m.length; K++)
k(K);
}
}
}, l;
}();
const E = _;
},
"./src/controller/latency-controller.ts": (U, M, g) => {
g.r(M), g.d(M, {
default: () => R
});
var P = g("./src/errors.ts"), y = g("./src/events.ts"), O = g("./src/utils/logger.ts");
function C(T, D) {
for (var p = 0; p < D.length; p++) {
var S = D[p];
S.enumerable = S.enumerable || !1, S.configurable = !0, "value" in S && (S.writable = !0), Object.defineProperty(T, S.key, S);
}
}
function F(T, D, p) {
return D && C(T.prototype, D), p && C(T, p), Object.defineProperty(T, "prototype", { writable: !1 }), T;
}
var R = /* @__PURE__ */ function() {
function T(p) {
var S = this;
this.hls = void 0, this.config = void 0, this.media = null, this.levelDetails = null, this.currentTime = 0, this.stallCount = 0, this._latency = null, this.timeupdateHandler = function() {
return S.timeupdate();
}, this.hls = p, this.config = p.config, this.registerListeners();
}
var D = T.prototype;
return D.destroy = function() {
this.unregisterListeners(), this.onMediaDetaching(), this.levelDetails = null, this.hls = this.timeupdateHandler = null;
}, D.registerListeners = function() {
this.hls.on(y.Events.MEDIA_ATTACHED, this.onMediaAttached, this), this.hls.on(y.Events.MEDIA_DETACHING, this.onMediaDetaching, this), this.hls.on(y.Events.MANIFEST_LOADING, this.onManifestLoading, this), this.hls.on(y.Events.LEVEL_UPDATED, this.onLevelUpdated, this), this.hls.on(y.Events.ERROR, this.onError, this);
}, D.unregisterListeners = function() {
this.hls.off(y.Events.MEDIA_ATTACHED, this.onMediaAttached), this.hls.off(y.Events.MEDIA_DETACHING, this.onMediaDetaching), this.hls.off(y.Events.MANIFEST_LOADING, this.onManifestLoading), this.hls.off(y.Events.LEVEL_UPDATED, this.onLevelUpdated), this.hls.off(y.Events.ERROR, this.onError);
}, D.onMediaAttached = function(S, b) {
this.media = b.media, this.media.addEventListener("timeupdate", this.timeupdateHandler);
}, D.onMediaDetaching = function() {
this.media && (this.media.removeEventListener("timeupdate", this.timeupdateHandler), this.media = null);
}, D.onManifestLoading = function() {
this.levelDetails = null, this._latency = null, this.stallCount = 0;
}, D.onLevelUpdated = function(S, b) {
var _ = b.details;
this.levelDetails = _, _.advanced && this.timeupdate(), !_.live && this.media && this.media.removeEventListener("timeupdate", this.timeupdateHandler);
}, D.onError = function(S, b) {
b.details === P.ErrorDetails.BUFFER_STALLED_ERROR && (this.stallCount++, O.logger.warn("[playback-rate-controller]: Stall detected, adjusting target latency"));
}, D.timeupdate = function() {
var S = this.media, b = this.levelDetails;
if (!(!S || !b)) {
this.currentTime = S.currentTime;
var _ = this.computeLatency();
if (_ !== null) {
this._latency = _;
var E = this.config, l = E.lowLatencyMode, n = E.maxLiveSyncPlaybackRate;
if (!(!l || n === 1)) {
var t = this.targetLatency;
if (t !== null) {
var d = _ - t, h = Math.min(this.maxLatency, t + b.targetduration), i = d < h;
if (b.live && i && d > 0.05 && this.forwardBufferLength > 1) {
var r = Math.min(2, Math.max(1, n)), e = Math.round(2 / (1 + Math.exp(-0.75 * d - this.edgeStalled)) * 20) / 20;
S.playbackRate = Math.min(r, Math.max(1, e));
} else
S.playbackRate !== 1 && S.playbackRate !== 0 && (S.playbackRate = 1);
}
}
}
}
}, D.estimateLiveEdge = function() {
var S = this.levelDetails;
return S === null ? null : S.edge + S.age;
}, D.computeLatency = function() {
var S = this.estimateLiveEdge();
return S === null ? null : S - this.currentTime;
}, F(T, [{
key: "latency",
get: function() {
return this._latency || 0;
}
}, {
key: "maxLatency",
get: function() {
var S = this.config, b = this.levelDetails;
return S.liveMaxLatencyDuration !== void 0 ? S.liveMaxLatencyDuration : b ? S.liveMaxLatencyDurationCount * b.targetduration : 0;
}
}, {
key: "targetLatency",
get: function() {
var S = this.levelDetails;
if (S === null)
return null;
var b = S.holdBack, _ = S.partHoldBack, E = S.targetduration, l = this.config, n = l.liveSyncDuration, t = l.liveSyncDurationCount, d = l.lowLatencyMode, h = this.hls.userConfig, i = d && _ || b;
(h.liveSyncDuration || h.liveSyncDurationCount || i === 0) && (i = n !== void 0 ? n : t * E);
var r = E, e = 1;
return i + Math.min(this.stallCount * e, r);
}
}, {
key: "liveSyncPosition",
get: function() {
var S = this.estimateLiveEdge(), b = this.targetLatency, _ = this.levelDetails;
if (S === null || b === null || _ === null)
return null;
var E = _.edge, l = S - b - this.edgeStalled, n = E - _.totalduration, t = E - (this.config.lowLatencyMode && _.partTarget || _.targetduration);
return Math.min(Math.max(n, l), t);
}
}, {
key: "drift",
get: function() {
var S = this.levelDetails;
return S === null ? 1 : S.drift;
}
}, {
key: "edgeStalled",
get: function() {
var S = this.levelDetails;
if (S === null)
return 0;
var b = (this.config.lowLatencyMode && S.partTarget || S.targetduration) * 3;
return Math.max(S.age - b, 0);
}
}, {
key: "forwardBufferLength",
get: function() {
var S = this.media, b = this.levelDetails;
if (!S || !b)
return 0;
var _ = S.buffered.length;
return (_ ? S.buffered.end(_ - 1) : b.edge) - this.currentTime;
}
}]), T;
}();
},
"./src/controller/level-controller.ts": (U, M, g) => {
g.r(M), g.d(M, {
default: () => l
});
var P = g("./src/types/level.ts"), y = g("./src/events.ts"), O = g("./src/errors.ts"), C = g("./src/utils/codecs.ts"), F = g("./src/controller/level-helper.ts"), R = g("./src/controller/base-playlist-controller.ts"), T = g("./src/types/loader.ts");
function D() {
return D = Object.assign ? Object.assign.bind() : function(n) {
for (var t = 1; t < arguments.length; t++) {
var d = arguments[t];
for (var h in d)
Object.prototype.hasOwnProperty.call(d, h) && (n[h] = d[h]);
}
return n;
}, D.apply(this, arguments);
}
function p(n, t) {
for (var d = 0; d < t.length; d++) {
var h = t[d];
h.enumerable = h.enumerable || !1, h.configurable = !0, "value" in h && (h.writable = !0), Object.defineProperty(n, h.key, h);
}
}
function S(n, t, d) {
return t && p(n.prototype, t), d && p(n, d), Object.defineProperty(n, "prototype", { writable: !1 }), n;
}
function b(n, t) {
n.prototype = Object.create(t.prototype), n.prototype.constructor = n, _(n, t);
}
function _(n, t) {
return _ = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(h, i) {
return h.__proto__ = i, h;
}, _(n, t);
}
var E = /chrome|firefox/.test(navigator.userAgent.toLowerCase()), l = /* @__PURE__ */ function(n) {
b(t, n);
function t(h) {
var i;
return i = n.call(this, h, "[level-controller]") || this, i._levels = [], i._firstLevel = -1, i._startLevel = void 0, i.currentLevelIndex = -1, i.manualLevelIndex = -1, i.onParsedComplete = void 0, i._registerListeners(), i;
}
var d = t.prototype;
return d._registerListeners = function() {
var i = this.hls;
i.on(y.Events.MANIFEST_LOADED, this.onManifestLoaded, this), i.on(y.Events.LEVEL_LOADED, this.onLevelLoaded, this), i.on(y.Events.AUDIO_TRACK_SWITCHED, this.onAudioTrackSwitched, this), i.on(y.Events.FRAG_LOADED, this.onFragLoaded, this), i.on(y.Events.ERROR, this.onError, this);
}, d._unregisterListeners = function() {
var i = this.hls;
i.off(y.Events.MANIFEST_LOADED, this.onManifestLoaded, this), i.off(y.Events.LEVEL_LOADED, this.onLevelLoaded, this), i.off(y.Events.AUDIO_TRACK_SWITCHED, this.onAudioTrackSwitched, this), i.off(y.Events.FRAG_LOADED, this.onFragLoaded, this), i.off(y.Events.ERROR, this.onError, this);
}, d.destroy = function() {
this._unregisterListeners(), this.manualLevelIndex = -1, this._levels.length = 0, n.prototype.destroy.call(this);
}, d.startLoad = function() {
var i = this._levels;
i.forEach(function(r) {
r.loadError = 0;
}), n.prototype.startLoad.call(this);
}, d.onManifestLoaded = function(i, r) {
var e = [], f = [], u = [], m, s = {}, v, c = !1, o = !1, a = !1;
if (r.levels.forEach(function(w) {
var W = w.attrs;
c = c || !!(w.width && w.height), o = o || !!w.videoCodec, a = a || !!w.audioCodec, E && w.audioCodec && w.audioCodec.indexOf("mp4a.40.34") !== -1 && (w.audioCodec = void 0);
var z = w.bitrate + "-" + w.attrs.RESOLUTION + "-" + w.attrs.CODECS;
v = s[z], v ? v.url.push(w.url) : (v = new P.Level(w), s[z] = v, e.push(v)), W && (W.AUDIO && (0, F.addGroupId)(v, "audio", W.AUDIO), W.SUBTITLES && (0, F.addGroupId)(v, "text", W.SUBTITLES));
}), (c || o) && a && (e = e.filter(function(w) {
var W = w.videoCodec, z = w.width, H = w.height;
return !!W || !!(z && H);
})), e = e.filter(function(w) {
var W = w.audioCodec, z = w.videoCodec;
return (!W || (0, C.isCodecSupportedInMp4)(W, "audio")) && (!z || (0, C.isCodecSupportedInMp4)(z, "video"));
}), r.audioTracks && (f = r.audioTracks.filter(function(w) {
return !w.audioCodec || (0, C.isCodecSupportedInMp4)(w.audioCodec, "audio");
}), (0, F.assignTrackIdsByGroup)(f)), r.subtitles && (u = r.subtitles, (0, F.assignTrackIdsByGroup)(u)), e.length > 0) {
m = e[0].bitrate, e.sort(function(w, W) {
return w.bitrate - W.bitrate;
}), this._levels = e;
for (var x = 0; x < e.length; x++)
if (e[x].bitrate === m) {
this._firstLevel = x, this.log("manifest loaded, " + e.length + " level(s) found, first bitrate: " + m);
break;
}
var k = a && !o, K = {
levels: e,
audioTracks: f,
subtitleTracks: u,
firstLevel: this._firstLevel,
stats: r.stats,
audio: a,
video: o,
altAudio: !k && f.some(function(w) {
return !!w.url;
})
};
this.hls.trigger(y.Events.MANIFEST_PARSED, K), (this.hls.config.autoStartLoad || this.hls.forceStartLoad) && this.hls.startLoad(this.hls.config.startPosition);
} else
this.hls.trigger(y.Events.ERROR, {
type: O.ErrorTypes.MEDIA_ERROR,
details: O.ErrorDetails.MANIFEST_INCOMPATIBLE_CODECS_ERROR,
fatal: !0,
url: r.url,
reason: "no level with compatible codecs found in manifest"
});
}, d.onError = function(i, r) {
var e;
if (n.prototype.onError.call(this, i, r), !r.fatal) {
var f = r.context, u = this._levels[this.currentLevelIndex];
if (f && (f.type === T.PlaylistContextType.AUDIO_TRACK && u.audioGroupIds && f.groupId === u.audioGroupIds[u.urlId] || f.type === T.PlaylistContextType.SUBTITLE_TRACK && u.textGroupIds && f.groupId === u.textGroupIds[u.urlId])) {
this.redundantFailover(this.currentLevelIndex);
return;
}
var m = !1, s = !0, v;
switch (r.details) {
case O.ErrorDetails.FRAG_LOAD_ERROR:
case O.ErrorDetails.FRAG_LOAD_TIMEOUT:
case O.ErrorDetails.KEY_LOAD_ERROR:
case O.ErrorDetails.KEY_LOAD_TIMEOUT:
if (r.frag) {
var c = r.frag.type === T.PlaylistLevelType.MAIN ? r.frag.level : this.currentLevelIndex, o = this._levels[c];
o ? (o.fragmentError++, o.fragmentError > this.hls.config.fragLoadingMaxRetry && (v = c)) : v = c;
}
break;
case O.ErrorDetails.LEVEL_LOAD_ERROR:
case O.ErrorDetails.LEVEL_LOAD_TIMEOUT:
f && (f.deliveryDirectives && (s = !1), v = f.level), m = !0;
break;
case O.ErrorDetails.REMUX_ALLOC_ERROR:
v = (e = r.level) != null ? e : this.currentLevelIndex, m = !0;
break;
}
v !== void 0 && this.recoverLevel(r, v, m, s);
}
}, d.recoverLevel = function(i, r, e, f) {
var u = i.details, m = this._levels[r];
if (m.loadError++, e) {
var s = this.retryLoadingOrFail(i);
if (s)
i.levelRetry = !0;
else {
this.currentLevelIndex = -1;
return;
}
}
if (f) {
var v = m.url.length;
if (v > 1 && m.loadError < v)
i.levelRetry = !0, this.redundantFailover(r);
else if (this.manualLevelIndex === -1) {
for (var c = -1, o = this._levels, a = o.length; a--; ) {
var x = (a + this.currentLevelIndex) % o.length;
if (x !== this.currentLevelIndex && o[x].loadError === 0) {
c = x;
break;
}
}
c > -1 && this.currentLevelIndex !== c && (this.warn(u + ": switch to " + c), i.levelRetry = !0, this.hls.nextAutoLevel = c);
}
}
}, d.redundantFailover = function(i) {
var r = this._levels[i], e = r.url.length;
if (e > 1) {
var f = (r.urlId + 1) % e;
this.warn("Switching to redundant URL-id " + f), this._levels.forEach(function(u) {
u.urlId = f;
}), this.level = i;
}
}, d.onFragLoaded = function(i, r) {
var e = r.frag;
if (e !== void 0 && e.type === T.PlaylistLevelType.MAIN) {
var f = this._levels[e.level];
f !== void 0 && (f.fragmentError = 0, f.loadError = 0);
}
}, d.onLevelLoaded = function(i, r) {
var e, f = r.level, u = r.details, m = this._levels[f];
if (!m) {
var s;
this.warn("Invalid level index " + f), (s = r.deliveryDirectives) !== null && s !== void 0 && s.skip && (u.deltaUpdateFailed = !0);
return;
}
f === this.currentLevelIndex ? (m.fragmentError === 0 && (m.loadError = 0, this.retryCount = 0), this.playlistLoaded(f, r, m.details)) : (e = r.deliveryDirectives) !== null && e !== void 0 && e.skip && (u.deltaUpdateFailed = !0);
}, d.onAudioTrackSwitched = function(i, r) {
var e = this.hls.levels[this.currentLevelIndex];
if (!!e && e.audioGroupIds) {
for (var f = -1, u = this.hls.audioTracks[r.id].groupId, m = 0; m < e.audioGroupIds.length; m++)
if (e.audioGroupIds[m] === u) {
f = m;
break;
}
f !== e.urlId && (e.urlId = f, this.startLoad());
}
}, d.loadPlaylist = function(i) {
var r = this.currentLevelIndex, e = this._levels[r];
if (this.canLoad && e && e.url.length > 0) {
var f = e.urlId, u = e.url[f];
if (i)
try {
u = i.addDirectives(u);
} catch (m) {
this.warn("Could not construct new URL with HLS Delivery Directives: " + m);
}
this.log("Attempt loading level index " + r + (i ? " at sn " + i.msn + " part " + i.part : "") + " with URL-id " + f + " " + u), this.clearTimer(), this.hls.trigger(y.Events.LEVEL_LOADING, {
url: u,
level: r,
id: f,
deliveryDirectives: i || null
});
}
}, d.removeLevel = function(i, r) {
var e = function(m, s) {
return s !== r;
}, f = this._levels.filter(function(u, m) {
return m !== i ? !0 : u.url.length > 1 && r !== void 0 ? (u.url = u.url.filter(e), u.audioGroupIds && (u.audioGroupIds = u.audioGroupIds.filter(e)), u.textGroupIds && (u.textGroupIds = u.textGroupIds.filter(e)), u.urlId = 0, !0) : !1;
}).map(function(u, m) {
var s = u.details;
return s != null && s.fragments && s.fragments.forEach(function(v) {
v.level = m;
}), u;
});
this._levels = f, this.hls.trigger(y.Events.LEVELS_UPDATED, {
levels: f
});
}, S(t, [{
key: "levels",
get: function() {
return this._levels.length === 0 ? null : this._levels;
}
}, {
key: "level",
get: function() {
return this.currentLevelIndex;
},
set: function(i) {
var r, e = this._levels;
if (e.length !== 0 && !(this.currentLevelIndex === i && (r = e[i]) !== null && r !== void 0 && r.details)) {
if (i < 0 || i >= e.length) {
var f = i < 0;
if (this.hls.trigger(y.Events.ERROR, {
type: O.ErrorTypes.OTHER_ERROR,
details: O.ErrorDetails.LEVEL_SWITCH_ERROR,
level: i,
fatal: f,
reason: "invalid level idx"
}), f)
return;
i = Math.min(i, e.length - 1);
}
this.clearTimer();
var u = this.currentLevelIndex, m = e[u], s = e[i];
this.log("switching to level " + i + " from " + u), this.currentLevelIndex = i;
var v = D({}, s, {
level: i,
maxBitrate: s.maxBitrate,
uri: s.uri,
urlId: s.urlId
});
delete v._urlId, this.hls.trigger(y.Events.LEVEL_SWITCHING, v);
var c = s.details;
if (!c || c.live) {
var o = this.switchParams(s.uri, m == null ? void 0 : m.details);
this.loadPlaylist(o);
}
}
}
}, {
key: "manualLevel",
get: function() {
return this.manualLevelIndex;
},
set: function(i) {
this.manualLevelIndex = i, this._startLevel === void 0 && (this._startLevel = i), i !== -1 && (this.level = i);
}
}, {
key: "firstLevel",
get: function() {
return this._firstLevel;
},
set: function(i) {
this._firstLevel = i;
}
}, {
key: "startLevel",
get: function() {
if (this._startLevel === void 0) {
var i = this.hls.config.startLevel;
return i !== void 0 ? i : this._firstLevel;
} else
return this._startLevel;
},
set: function(i) {
this._startLevel = i;
}
}, {
key: "nextLoadLevel",
get: function() {
return this.manualLevelIndex !== -1 ? this.manualLevelIndex : this.hls.nextAutoLevel;
},
set: function(i) {
this.level = i, this.manualLevelIndex === -1 && (this.hls.nextAutoLevel = i);
}
}]), t;
}(R.default);
},
"./src/controller/level-helper.ts": (U, M, g) => {
g.r(M), g.d(M, {
addGroupId: () => F,
addSliding: () => n,
adjustSliding: () => l,
assignTrackIdsByGroup: () => R,
computeReloadInterval: () => t,
getFragmentWithSN: () => d,
getPartWith: () => h,
mapFragmentIntersection: () => E,
mapPartIntersection: () => _,
mergeDetails: () => S,
updateFragPTSDTS: () => p,
updatePTS: () => T
});
var P = g("./src/polyfills/number.ts"), y = g("./src/utils/logger.ts"), O = g("./src/loader/date-range.ts");
function C() {
return C = Object.assign ? Object.assign.bind() : function(i) {
for (var r = 1; r < arguments.length; r++) {
var e = arguments[r];
for (var f in e)
Object.prototype.hasOwnProperty.call(e, f) && (i[f] = e[f]);
}
return i;
}, C.apply(this, arguments);
}
function F(i, r, e) {
switch (r) {
case "audio":
i.audioGroupIds || (i.audioGroupIds = []), i.audioGroupIds.push(e);
break;
case "text":
i.textGroupIds || (i.textGroupIds = []), i.textGroupIds.push(e);
break;
}
}
function R(i) {
var r = {};
i.forEach(function(e) {
var f = e.groupId || "";
e.id = r[f] = r[f] || 0, r[f]++;
});
}
function T(i, r, e) {
var f = i[r], u = i[e];
D(f, u);
}
function D(i, r) {
var e = r.startPTS;
if ((0, P.isFiniteNumber)(e)) {
var f = 0, u;
r.sn > i.sn ? (f = e - i.start, u = i) : (f = i.start - e, u = r), u.duration !== f && (u.duration = f);
} else if (r.sn > i.sn) {
var m = i.cc === r.cc;
m && i.minEndPTS ? r.start = i.start + (i.minEndPTS - i.start) : r.start = i.start + i.duration;
} else
r.start = Math.max(i.start - r.duration, 0);
}
function p(i, r, e, f, u, m) {
var s = f - e;
s <= 0 && (y.logger.warn("Fragment should have a positive duration", r), f = e + r.duration, m = u + r.duration);
var v = e, c = f, o = r.startPTS, a = r.endPTS;
if ((0, P.isFiniteNumber)(o)) {
var x = Math.abs(o - e);
(0, P.isFiniteNumber)(r.deltaPTS) ? r.deltaPTS = Math.max(x, r.deltaPTS) : r.deltaPTS = x, v = Math.max(e, o), e = Math.min(e, o), u = Math.min(u, r.startDTS), c = Math.min(f, a), f = Math.max(f, a), m = Math.max(m, r.endDTS);
}
r.duration = f - e;
var k = e - r.start;
r.appendedPTS = f, r.start = r.startPTS = e, r.maxStartPTS = v, r.startDTS = u, r.endPTS = f, r.minEndPTS = c, r.endDTS = m;
var K = r.sn;
if (!i || K < i.startSN || K > i.endSN)
return 0;
var w, W = K - i.startSN, z = i.fragments;
for (z[W] = r, w = W; w > 0; w--)
D(z[w], z[w - 1]);
for (w = W; w < z.length - 1; w++)
D(z[w], z[w + 1]);
return i.fragmentHint && D(z[z.length - 1], i.fragmentHint), i.PTSKnown = i.alignedSliding = !0, k;
}
function S(i, r) {
for (var e = null, f = i.fragments, u = f.length - 1; u >= 0; u--) {
var m = f[u].initSegment;
if (m) {
e = m;
break;
}
}
i.fragmentHint && delete i.fragmentHint.endPTS;
var s = 0, v;
if (E(i, r, function(w, W) {
w.relurl && (s = w.cc - W.cc), (0, P.isFiniteNumber)(w.startPTS) && (0, P.isFiniteNumber)(w.endPTS) && (W.start = W.startPTS = w.startPTS, W.startDTS = w.startDTS, W.appendedPTS = w.appendedPTS, W.maxStartPTS = w.maxStartPTS, W.endPTS = w.endPTS, W.endDTS = w.endDTS, W.minEndPTS = w.minEndPTS, W.duration = w.endPTS - w.startPTS, W.duration && (v = W), r.PTSKnown = r.alignedSliding = !0), W.elementaryStreams = w.elementaryStreams, W.loader = w.loader, W.stats = w.stats, W.urlId = w.urlId, w.initSegment && (W.initSegment = w.initSegment, e = w.initSegment);
}), e) {
var c = r.fragmentHint ? r.fragments.concat(r.fragmentHint) : r.fragments;
c.forEach(function(w) {
var W;
(!w.initSegment || w.initSegment.relurl === ((W = e) === null || W === void 0 ? void 0 : W.relurl)) && (w.initSegment = e);
});
}
if (r.skippedSegments)
if (r.deltaUpdateFailed = r.fragments.some(function(w) {
return !w;
}), r.deltaUpdateFailed) {
y.logger.warn("[level-helper] Previous playlist missing segments skipped in delta playlist");
for (var o = r.skippedSegments; o--; )
r.fragments.shift();
r.startSN = r.fragments[0].sn, r.startCC = r.fragments[0].cc;
} else
r.canSkipDateRanges && (r.dateRanges = b(i.dateRanges, r.dateRanges, r.recentlyRemovedDateranges));
var a = r.fragments;
if (s) {
y.logger.warn("discontinuity sliding from playlist, take drift into account");
for (var x = 0; x < a.length; x++)
a[x].cc += s;
}
r.skippedSegments && (r.startCC = r.fragments[0].cc), _(i.partList, r.partList, function(w, W) {
W.elementaryStreams = w.elementaryStreams, W.stats = w.stats;
}), v ? p(r, v, v.startPTS, v.endPTS, v.startDTS, v.endDTS) : l(i, r), a.length && (r.totalduration = r.edge - a[0].start), r.driftStartTime = i.driftStartTime, r.driftStart = i.driftStart;
var k = r.advancedDateTime;
if (r.advanced && k) {
var K = r.edge;
r.driftStart || (r.driftStartTime = k, r.driftStart = K), r.driftEndTime = k, r.driftEnd = K;
} else
r.driftEndTime = i.driftEndTime, r.driftEnd = i.driftEnd, r.advancedDateTime = i.advancedDateTime;
}
function b(i, r, e) {
var f = C({}, i);
return e && e.forEach(function(u) {
delete f[u];
}), Object.keys(r).forEach(function(u) {
var m = new O.DateRange(r[u].attr, f[u]);
m.isValid ? f[u] = m : y.logger.warn('Ignoring invalid Playlist Delta Update DATERANGE tag: "' + JSON.stringify(r[u].attr) + '"');
}), f;
}
function _(i, r, e) {
if (i && r)
for (var f = 0, u = 0, m = i.length; u <= m; u++) {
var s = i[u], v = r[u + f];
s && v && s.index === v.index && s.fragment.sn === v.fragment.sn ? e(s, v) : f--;
}
}
function E(i, r, e) {
for (var f = r.skippedSegments, u = Math.max(i.startSN, r.startSN) - r.startSN, m = (i.fragmentHint ? 1 : 0) + (f ? r.endSN : Math.min(i.endSN, r.endSN)) - r.startSN, s = r.startSN - i.startSN, v = r.fragmentHint ? r.fragments.concat(r.fragmentHint) : r.fragments, c = i.fragmentHint ? i.fragments.concat(i.fragmentHint) : i.fragments, o = u; o <= m; o++) {
var a = c[s + o], x = v[o];
f && !x && o < f && (x = r.fragments[o] = a), a && x && e(a, x);
}
}
function l(i, r) {
var e = r.startSN + r.skippedSegments - i.startSN, f = i.fragments;
e < 0 || e >= f.length || n(r, f[e].start);
}
function n(i, r) {
if (r) {
for (var e = i.fragments, f = i.skippedSegments; f < e.length; f++)
e[f].start += r;
i.fragmentHint && (i.fragmentHint.start += r);
}
}
function t(i, r) {
var e = 1e3 * i.levelTargetDuration, f = e / 2, u = i.age, m = u > 0 && u < e * 3, s = r.loading.end - r.loading.start, v, c = i.availabilityDelay;
if (i.updated === !1)
if (m) {
var o = 333 * i.misses;
v = Math.max(Math.min(f, s * 2), o), i.availabilityDelay = (i.availabilityDelay || 0) + v;
} else
v = f;
else
m ? (c = Math.min(c || e / 2, u), i.availabilityDelay = c, v = c + e - u) : v = e - s;
return Math.round(v);
}
function d(i, r, e) {
if (!i || !i.details)
return null;
var f = i.details, u = f.fragments[r - f.startSN];
return u || (u = f.fragmentHint, u && u.sn === r) ? u : r < f.startSN && e && e.sn === r ? e : null;
}
function h(i, r, e) {
if (!i || !i.details)
return null;
var f = i.details.partList;
if (f)
for (var u = f.length; u--; ) {
var m = f[u];
if (m.index === e && m.fragment.sn === r)
return m;
}
return null;
}
},
"./src/controller/stream-controller.ts": (U, M, g) => {
g.r(M), g.d(M, {
default: () => h
});
var P = g("./src/polyfills/number.ts"), y = g("./src/controller/base-stream-controller.ts"), O = g("./src/is-supported.ts"), C = g("./src/events.ts"), F = g("./src/utils/buffer-helper.ts"), R = g("./src/controller/fragment-tracker.ts"), T = g("./src/types/loader.ts"), D = g("./src/loader/fragment.ts"), p = g("./src/demux/transmuxer-interface.ts"), S = g("./src/types/transmuxer.ts"), b = g("./src/controller/gap-controller.ts"), _ = g("./src/errors.ts");
function E(i, r) {
for (var e = 0; e < r.length; e++) {
var f = r[e];
f.enumerable = f.enumerable || !1, f.configurable = !0, "value" in f && (f.writable = !0), Object.defineProperty(i, f.key, f);
}
}
function l(i, r, e) {
return r && E(i.prototype, r), e && E(i, e), Object.defineProperty(i, "prototype", { writable: !1 }), i;
}
function n(i, r) {
i.prototype = Object.create(r.prototype), i.prototype.constructor = i, t(i, r);
}
function t(i, r) {
return t = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(f, u) {
return f.__proto__ = u, f;
}, t(i, r);
}
var d = 100, h = /* @__PURE__ */ function(i) {
n(r, i);
function r(f, u) {
var m;
return m = i.call(this, f, u, "[stream-controller]") || this, m.audioCodecSwap = !1, m.gapController = null, m.level = -1, m._forceStartLoad = !1, m.altAudio = !1, m.audioOnly = !1, m.fragPlaying = null, m.onvplaying = null, m.onvseeked = null, m.fragLastKbps = 0, m.couldBacktrack = !1, m.backtrackFragment = null, m.audioCodecSwitch = !1, m.videoBuffer = null, m._registerListeners(), m;
}
var e = r.prototype;
return e._registerListeners = function() {
var u = this.hls;
u.on(C.Events.MEDIA_ATTACHED, this.onMediaAttached, this), u.on(C.Events.MEDIA_DETACHING, this.onMediaDetaching, this), u.on(C.Events.MANIFEST_LOADING, this.onManifestLoading, this), u.on(C.Events.MANIFEST_PARSED, this.onManifestParsed, this), u.on(C.Events.LEVEL_LOADING, this.onLevelLoading, this), u.on(C.Events.LEVEL_LOADED, this.onLevelLoaded, this), u.on(C.Events.FRAG_LOAD_EMERGENCY_ABORTED, this.onFragLoadEmergencyAborted, this), u.on(C.Events.ERROR, this.onError, this), u.on(C.Events.AUDIO_TRACK_SWITCHING, this.onAudioTrackSwitching, this), u.on(C.Events.AUDIO_TRACK_SWITCHED, this.onAudioTrackSwitched, this), u.on(C.Events.BUFFER_CREATED, this.onBufferCreated, this), u.on(C.Events.BUFFER_FLUSHED, this.onBufferFlushed, this), u.on(C.Events.LEVELS_UPDATED, this.onLevelsUpdated, this), u.on(C.Events.FRAG_BUFFERED, this.onFragBuffered, this);
}, e._unregisterListeners = function() {
var u = this.hls;
u.off(C.Events.MEDIA_ATTACHED, this.onMediaAttached, this), u.off(C.Events.MEDIA_DETACHING, this.onMediaDetaching, this), u.off(C.Events.MANIFEST_LOADING, this.onManifestLoading, this), u.off(C.Events.MANIFEST_PARSED, this.onManifestParsed, this), u.off(C.Events.LEVEL_LOADED, this.onLevelLoaded, this), u.off(C.Events.FRAG_LOAD_EMERGENCY_ABORTED, this.onFragLoadEmergencyAborted, this), u.off(C.Events.ERROR, this.onError, this), u.off(C.Events.AUDIO_TRACK_SWITCHING, this.onAudioTrackSwitching, this), u.off(C.Events.AUDIO_TRACK_SWITCHED, this.onAudioTrackSwitched, this), u.off(C.Events.BUFFER_CREATED, this.onBufferCreated, this), u.off(C.Events.BUFFER_FLUSHED, this.onBufferFlushed, this), u.off(C.Events.LEVELS_UPDATED, this.onLevelsUpdated, this), u.off(C.Events.FRAG_BUFFERED, this.onFragBuffered, this);
}, e.onHandlerDestroying = function() {
this._unregisterListeners(), this.onMediaDetaching();
}, e.startLoad = function(u) {
if (this.levels) {
var m = this.lastCurrentTime, s = this.hls;
if (this.stopLoad(), this.setInterval(d), this.level = -1, this.fragLoadError = 0, !this.startFragRequested) {
var v = s.startLevel;
v === -1 && (s.config.testBandwidth && this.levels.length > 1 ? (v = 0, this.bitrateTest = !0) : v = s.nextAutoLevel), this.level = s.nextLoadLevel = v, this.loadedmetadata = !1;
}
m > 0 && u === -1 && (this.log("Override startPosition with lastCurrentTime @" + m.toFixed(3)), u = m), this.state = y.State.IDLE, this.nextLoadPosition = this.startPosition = this.lastCurrentTime = u, this.tick();
} else
this._forceStartLoad = !0, this.state = y.State.STOPPED;
}, e.stopLoad = function() {
this._forceStartLoad = !1, i.prototype.stopLoad.call(this);
}, e.doTick = function() {
switch (this.state) {
case y.State.IDLE:
this.doTickIdle();
break;
case y.State.WAITING_LEVEL: {
var u, m = this.levels, s = this.level, v = m == null || (u = m[s]) === null || u === void 0 ? void 0 : u.details;
if (v && (!v.live || this.levelLastLoaded === this.level)) {
if (this.waitForCdnTuneIn(v))
break;
this.state = y.State.IDLE;
break;
}
break;
}
case y.State.FRAG_LOADING_WAITING_RETRY:
{
var c, o = self.performance.now(), a = this.retryDate;
(!a || o >= a || (c = this.media) !== null && c !== void 0 && c.seeking) && (this.log("retryDate reached, switch back to IDLE state"), this.resetStartWhenNotLoaded(this.level), this.state = y.State.IDLE);
}
break;
}
this.onTickEnd();
}, e.onTickEnd = function() {
i.prototype.onTickEnd.call(this), this.checkBuffer(), this.checkFragmentChanged();
}, e.doTickIdle = function() {
var u, m, s = this.hls, v = this.levelLastLoaded, c = this.levels, o = this.media, a = s.config, x = s.nextLoadLevel;
if (!(v === null || !o && (this.startFragRequested || !a.startFragPrefetch)) && !(this.altAudio && this.audioOnly) && !(!c || !c[x])) {
var k = c[x];
this.level = s.nextLoadLevel = x;
var K = k.details;
if (!K || this.state === y.State.WAITING_LEVEL || K.live && this.levelLastLoaded !== x) {
this.state = y.State.WAITING_LEVEL;
return;
}
var w = this.getMainFwdBufferInfo();
if (w !== null) {
var W = w.len, z = this.getMaxBufferLength(k.maxBitrate);
if (!(W >= z)) {
if (this._streamEnded(w, K)) {
var H = {};
this.altAudio && (H.type = "video"), this.hls.trigger(C.Events.BUFFER_EOS, H), this.state = y.State.ENDED;
return;
}
this.backtrackFragment && this.backtrackFragment.start > w.end && (this.backtrackFragment = null);
var j = this.backtrackFragment ? this.backtrackFragment.start : w.end, Y = this.getNextFragment(j, K);
if (this.couldBacktrack && !this.fragPrevious && Y && Y.sn !== "initSegment" && this.fragmentTracker.getState(Y) !== R.FragmentState.OK) {
var Z, q = ((Z = this.backtrackFragment) != null ? Z : Y).sn, ee = q - K.startSN, te = K.fragments[ee - 1];
te && Y.cc === te.cc && (Y = te, this.fragmentTracker.removeFragment(te));
} else
this.backtrackFragment && w.len && (this.backtrackFragment = null);
if (Y && this.fragmentTracker.getState(Y) === R.FragmentState.OK && this.nextLoadPosition > j) {
var ne = this.audioOnly && !this.altAudio ? D.ElementaryStreamTypes.AUDIO : D.ElementaryStreamTypes.VIDEO;
o && this.afterBufferFlushed(o, ne, T.PlaylistLevelType.MAIN), Y = this.getNextFragment(this.nextLoadPosition, K);
}
!Y || (Y.initSegment && !Y.initSegment.data && !this.bitrateTest && (Y = Y.initSegment), ((u = Y.decryptdata) === null || u === void 0 ? void 0 : u.keyFormat) === "identity" && !((m = Y.decryptdata) !== null && m !== void 0 && m.key) ? this.loadKey(Y, K) : this.loadFragment(Y, K, j));
}
}
}
}, e.loadFragment = function(u, m, s) {
var v, c = this.fragmentTracker.getState(u);
this.fragCurrent = u, c === R.FragmentState.NOT_LOADED ? u.sn === "initSegment" ? this._loadInitSegment(u) : this.bitrateTest ? (this.log("Fragment " + u.sn + " of level " + u.level + " is being downloaded to test bitrate and will not be buffered"), this._loadBitrateTestFrag(u)) : (this.startFragRequested = !0, i.prototype.loadFragment.call(this, u, m, s)) : c === R.FragmentState.APPENDING ? this.reduceMaxBufferLength(u.duration) && this.fragmentTracker.removeFragment(u) : ((v = this.media) === null || v === void 0 ? void 0 : v.buffered.length) === 0 && this.fragmentTracker.removeAllFragments();
}, e.getAppendedFrag = function(u) {
var m = this.fragmentTracker.getAppendedFrag(u, T.PlaylistLevelType.MAIN);
return m && "fragment" in m ? m.fragment : m;
}, e.getBufferedFrag = function(u) {
return this.fragmentTracker.getBufferedFrag(u, T.PlaylistLevelType.MAIN);
}, e.followingBufferedFrag = function(u) {
return u ? this.getBufferedFrag(u.end + 0.5) : null;
}, e.immediateLevelSwitch = function() {
this.abortCurrentFrag(), this.flushMainBuffer(0, Number.POSITIVE_INFINITY);
}, e.nextLevelSwitch = function() {
var u = this.levels, m = this.media;
if (m != null && m.readyState) {
var s, v = this.getAppendedFrag(m.currentTime);
if (v && v.start > 1 && this.flushMainBuffer(0, v.start - 1), !m.paused && u) {
var c = this.hls.nextLoadLevel, o = u[c], a = this.fragLastKbps;
a && this.fragCurrent ? s = this.fragCurrent.duration * o.maxBitrate / (1e3 * a) + 1 : s = 0;
} else
s = 0;
var x = this.getBufferedFrag(m.currentTime + s);
if (x) {
var k = this.followingBufferedFrag(x);
if (k) {
this.abortCurrentFrag();
var K = k.maxStartPTS ? k.maxStartPTS : k.start, w = k.duration, W = Math.max(x.end, K + Math.min(Math.max(w - this.config.maxFragLookUpTolerance, w * 0.5), w * 0.75));
this.flushMainBuffer(W, Number.POSITIVE_INFINITY);
}
}
}
}, e.abortCurrentFrag = function() {
var u = this.fragCurrent;
switch (this.fragCurrent = null, this.backtrackFragment = null, u != null && u.loader && u.loader.abort(), this.state) {
case y.State.KEY_LOADING:
case y.State.FRAG_LOADING:
case y.State.FRAG_LOADING_WAITING_RETRY:
case y.State.PARSING:
case y.State.PARSED:
this.state = y.State.IDLE;
break;
}
this.nextLoadPosition = this.getLoadPosition();
}, e.flushMainBuffer = function(u, m) {
i.prototype.flushMainBuffer.call(this, u, m, this.altAudio ? "video" : null);
}, e.onMediaAttached = function(u, m) {
i.prototype.onMediaAttached.call(this, u, m);
var s = m.media;
this.onvplaying = this.onMediaPlaying.bind(this), this.onvseeked = this.onMediaSeeked.bind(this), s.addEventListener("playing", this.onvplaying), s.addEventListener("seeked", this.onvseeked), this.gapController = new b.default(this.config, s, this.fragmentTracker, this.hls);
}, e.onMediaDetaching = function() {
var u = this.media;
u && this.onvplaying && this.onvseeked && (u.removeEventListener("playing", this.onvplaying), u.removeEventListener("seeked", this.onvseeked), this.onvplaying = this.onvseeked = null, this.videoBuffer = null), this.fragPlaying = null, this.gapController && (this.gapController.destroy(), this.gapController = null), i.prototype.onMediaDetaching.call(this);
}, e.onMediaPlaying = function() {
this.tick();
}, e.onMediaSeeked = function() {
var u = this.media, m = u ? u.currentTime : null;
(0, P.isFiniteNumber)(m) && this.log("Media seeked to " + m.toFixed(3)), this.tick();
}, e.onManifestLoading = function() {
this.log("Trigger BUFFER_RESET"), this.hls.trigger(C.Events.BUFFER_RESET, void 0), this.fragmentTracker.removeAllFragments(), this.couldBacktrack = !1, this.startPosition = this.lastCurrentTime = 0, this.fragPlaying = null, this.backtrackFragment = null;
}, e.onManifestParsed = function(u, m) {
var s = !1, v = !1, c;
m.levels.forEach(function(o) {
c = o.audioCodec, c && (c.indexOf("mp4a.40.2") !== -1 && (s = !0), c.indexOf("mp4a.40.5") !== -1 && (v = !0));
}), this.audioCodecSwitch = s && v && !(0, O.changeTypeSupported)(), this.audioCodecSwitch && this.log("Both AAC/HE-AAC audio found in levels; declaring level codec as HE-AAC"), this.levels = m.levels, this.startFragRequested = !1;
}, e.onLevelLoading = function(u, m) {
var s = this.levels;
if (!(!s || this.state !== y.State.IDLE)) {
var v = s[m.level];
(!v.details || v.details.live && this.levelLastLoaded !== m.level || this.waitForCdnTuneIn(v.details)) && (this.state = y.State.WAITING_LEVEL);
}
}, e.onLevelLoaded = function(u, m) {
var s, v = this.levels, c = m.level, o = m.details, a = o.totalduration;
if (!v) {
this.warn("Levels were reset while loading level " + c);
return;
}
this.log("Level " + c + " loaded [" + o.startSN + "," + o.endSN + "], cc [" + o.startCC + ", " + o.endCC + "] duration:" + a);
var x = this.fragCurrent;
x && (this.state === y.State.FRAG_LOADING || this.state === y.State.FRAG_LOADING_WAITING_RETRY) && x.level !== m.level && x.loader && (this.state = y.State.IDLE, this.backtrackFragment = null, x.loader.abort());
var k = v[c], K = 0;
if (o.live || (s = k.details) !== null && s !== void 0 && s.live) {
if (o.fragments[0] || (o.deltaUpdateFailed = !0), o.deltaUpdateFailed)
return;
K = this.alignPlaylists(o, k.details);
}
if (k.details = o, this.levelLastLoaded = c, this.hls.trigger(C.Events.LEVEL_UPDATED, {
details: o,
level: c
}), this.state === y.State.WAITING_LEVEL) {
if (this.waitForCdnTuneIn(o))
return;
this.state = y.State.IDLE;
}
this.startFragRequested ? o.live && this.synchronizeToLiveEdge(o) : this.setStartPosition(o, K), this.tick();
}, e._handleFragmentLoadProgress = function(u) {
var m, s = u.frag, v = u.part, c = u.payload, o = this.levels;
if (!o) {
this.warn("Levels were reset while fragment load was in progress. Fragment " + s.sn + " of level " + s.level + " will not be buffered");
return;
}
var a = o[s.level], x = a.details;
if (!x) {
this.warn("Dropping fragment " + s.sn + " of level " + s.level + " after level details were reset");
return;
}
var k = a.videoCodec, K = x.PTSKnown || !x.live, w = (m = s.initSegment) === null || m === void 0 ? void 0 : m.data, W = this._getAudioCodec(a), z = this.transmuxer = this.transmuxer || new p.default(this.hls, T.PlaylistLevelType.MAIN, this._handleTransmuxComplete.bind(this), this._handleTransmuxerFlush.bind(this)), H = v ? v.index : -1, j = H !== -1, Y = new S.ChunkMetadata(s.level, s.sn, s.stats.chunkCount, c.byteLength, H, j), Z = this.initPTS[s.cc];
z.push(c, w, W, k, s, v, x.totalduration, K, Y, Z);
}, e.onAudioTrackSwitching = function(u, m) {
var s = this.altAudio, v = !!m.url, c = m.id;
if (!v) {
if (this.mediaBuffer !== this.media) {
this.log("Switching on main audio, use media.buffered to schedule main fragment loading"), this.mediaBuffer = this.media;
var o = this.fragCurrent;
o != null && o.loader && (this.log("Switching to main audio track, cancel main fragment load"), o.loader.abort()), this.resetTransmuxer(), this.resetLoadingState();
} else
this.audioOnly && this.resetTransmuxer();
var a = this.hls;
s && a.trigger(C.Events.BUFFER_FLUSHING, {
startOffset: 0,
endOffset: Number.POSITIVE_INFINITY,
type: "audio"
}), a.trigger(C.Events.AUDIO_TRACK_SWITCHED, {
id: c
});
}
}, e.onAudioTrackSwitched = function(u, m) {
var s = m.id, v = !!this.hls.audioTracks[s].url;
if (v) {
var c = this.videoBuffer;
c && this.mediaBuffer !== c && (this.log("Switching on alternate audio, use video.buffered to schedule main fragment loading"), this.mediaBuffer = c);
}
this.altAudio = v, this.tick();
}, e.onBufferCreated = function(u, m) {
var s = m.tracks, v, c, o = !1;
for (var a in s) {
var x = s[a];
if (x.id === "main") {
if (c = a, v = x, a === "video") {
var k = s[a];
k && (this.videoBuffer = k.buffer);
}
} else
o = !0;
}
o && v ? (this.log("Alternate track found, use " + c + ".buffered to schedule main fragment loading"), this.mediaBuffer = v.buffer) : this.mediaBuffer = this.media;
}, e.onFragBuffered = function(u, m) {
var s = m.frag, v = m.part;
if (!(s && s.type !== T.PlaylistLevelType.MAIN)) {
if (this.fragContextChanged(s)) {
this.warn("Fragment " + s.sn + (v ? " p: " + v.index : "") + " of level " + s.level + " finished buffering, but was aborted. state: " + this.state), this.state === y.State.PARSED && (this.state = y.State.IDLE);
return;
}
var c = v ? v.stats : s.stats;
this.fragLastKbps = Math.round(8 * c.total / (c.buffering.end - c.loading.first)), s.sn !== "initSegment" && (this.fragPrevious = s), this.fragBufferedComplete(s, v);
}
}, e.onError = function(u, m) {
switch (m.details) {
case _.ErrorDetails.FRAG_LOAD_ERROR:
case _.ErrorDetails.FRAG_LOAD_TIMEOUT:
case _.ErrorDetails.KEY_LOAD_ERROR:
case _.ErrorDetails.KEY_LOAD_TIMEOUT:
this.onFragmentOrKeyLoadError(T.PlaylistLevelType.MAIN, m);
break;
case _.ErrorDetails.LEVEL_LOAD_ERROR:
case _.ErrorDetails.LEVEL_LOAD_TIMEOUT:
this.state !== y.State.ERROR && (m.fatal ? (this.warn("" + m.details), this.state = y.State.ERROR) : !m.levelRetry && this.state === y.State.WAITING_LEVEL && (this.state = y.State.IDLE));
break;
case _.ErrorDetails.BUFFER_FULL_ERROR:
if (m.parent === "main" && (this.state === y.State.PARSING || this.state === y.State.PARSED)) {
var s = !0, v = this.getFwdBufferInfo(this.media, T.PlaylistLevelType.MAIN);
v && v.len > 0.5 && (s = !this.reduceMaxBufferLength(v.len)), s && (this.warn("buffer full error also media.currentTime is not buffered, flush main"), this.immediateLevelSwitch()), this.resetLoadingState();
}
break;
}
}, e.checkBuffer = function() {
var u = this.media, m = this.gapController;
if (!(!u || !m || !u.readyState)) {
if (this.loadedmetadata || !F.BufferHelper.getBuffered(u).length) {
var s = this.state !== y.State.IDLE ? this.fragCurrent : null;
m.poll(this.lastCurrentTime, s);
}
this.lastCurrentTime = u.currentTime;
}
}, e.onFragLoadEmergencyAborted = function() {
this.state = y.State.IDLE, this.loadedmetadata || (this.startFragRequested = !1, this.nextLoadPosition = this.startPosition), this.tickImmediate();
}, e.onBufferFlushed = function(u, m) {
var s = m.type;
if (s !== D.ElementaryStreamTypes.AUDIO || this.audioOnly && !this.altAudio) {
var v = (s === D.ElementaryStreamTypes.VIDEO ? this.videoBuffer : this.mediaBuffer) || this.media;
this.afterBufferFlushed(v, s, T.PlaylistLevelType.MAIN);
}
}, e.onLevelsUpdated = function(u, m) {
this.levels = m.levels;
}, e.swapAudioCodec = function() {
this.audioCodecSwap = !this.audioCodecSwap;
}, e.seekToStartPos = function() {
var u = this.media;
if (!!u) {
var m = u.currentTime, s = this.startPosition;
if (s >= 0 && m < s) {
if (u.seeking) {
this.log("could not seek to " + s + ", already seeking at " + m);
return;
}
var v = F.BufferHelper.getBuffered(u), c = v.length ? v.start(0) : 0, o = c - s;
o > 0 && (o < this.config.maxBufferHole || o < this.config.maxFragLookUpTolerance) && (this.log("adjusting start position by " + o + " to match buffer start"), s += o, this.startPosition = s), this.log("seek to target start position " + s + " from current time " + m), u.currentTime = s;
}
}
}, e._getAudioCodec = function(u) {
var m = this.config.defaultAudioCodec || u.audioCodec;
return this.audioCodecSwap && m && (this.log("Swapping audio codec"), m.indexOf("mp4a.40.5") !== -1 ? m = "mp4a.40.2" : m = "mp4a.40.5"), m;
}, e._loadBitrateTestFrag = function(u) {
var m = this;
u.bitrateTest = !0, this._doFragLoad(u).then(function(s) {
var v = m.hls;
if (!(!s || v.nextLoadLevel || m.fragContextChanged(u))) {
m.fragLoadError = 0, m.state = y.State.IDLE, m.startFragRequested = !1, m.bitrateTest = !1;
var c = u.stats;
c.parsing.start = c.parsing.end = c.buffering.start = c.buffering.end = self.performance.now(), v.trigger(C.Events.FRAG_LOADED, s), u.bitrateTest = !1;
}
});
}, e._handleTransmuxComplete = function(u) {
var m, s = "main", v = this.hls, c = u.remuxResult, o = u.chunkMeta, a = this.getCurrentContext(o);
if (!a) {
this.warn("The loading context changed while buffering fragment " + o.sn + " of level " + o.level + ". This chunk will not be buffered."), this.resetStartWhenNotLoaded(o.level);
return;
}
var x = a.frag, k = a.part, K = a.level, w = c.video, W = c.text, z = c.id3, H = c.initSegment, j = K.details, Y = this.altAudio ? void 0 : c.audio;
if (!this.fragContextChanged(x)) {
if (this.state = y.State.PARSING, H) {
H.tracks && (this._bufferInitSegment(K, H.tracks, x, o), v.trigger(C.Events.FRAG_PARSING_INIT_SEGMENT, {
frag: x,
id: s,
tracks: H.tracks
}));
var Z = H.initPTS, q = H.timescale;
(0, P.isFiniteNumber)(Z) && (this.initPTS[x.cc] = Z, v.trigger(C.Events.INIT_PTS_FOUND, {
frag: x,
id: s,
initPTS: Z,
timescale: q
}));
}
if (w && c.independent !== !1) {
if (j) {
var ee = w.startPTS, te = w.endPTS, ne = w.startDTS, ie = w.endDTS;
if (k)
k.elementaryStreams[w.type] = {
startPTS: ee,
endPTS: te,
startDTS: ne,
endDTS: ie
};
else if (w.firstKeyFrame && w.independent && (this.couldBacktrack = !0), w.dropped && w.independent) {
var oe = this.getMainFwdBufferInfo(), de = (oe ? oe.end : this.getLoadPosition()) + this.config.maxBufferHole, re = w.firstKeyFramePTS ? w.firstKeyFramePTS : ee;
if (de < re - this.config.maxBufferHole) {
this.backtrack(x);
return;
}
x.setElementaryStreamInfo(w.type, x.start, te, x.start, ie, !0);
}
x.setElementaryStreamInfo(w.type, ee, te, ne, ie), this.backtrackFragment && (this.backtrackFragment = x), this.bufferFragmentData(w, x, k, o);
}
} else if (c.independent === !1) {
this.backtrack(x);
return;
}
if (Y) {
var le = Y.startPTS, me = Y.endPTS, ve = Y.startDTS, pe = Y.endDTS;
k && (k.elementaryStreams[D.ElementaryStreamTypes.AUDIO] = {
startPTS: le,
endPTS: me,
startDTS: ve,
endDTS: pe
}), x.setElementaryStreamInfo(D.ElementaryStreamTypes.AUDIO, le, me, ve, pe), this.bufferFragmentData(Y, x, k, o);
}
if (j && z !== null && z !== void 0 && (m = z.samples) !== null && m !== void 0 && m.length) {
var Pe = {
id: s,
frag: x,
details: j,
samples: z.samples
};
v.trigger(C.Events.FRAG_PARSING_METADATA, Pe);
}
if (j && W) {
var ye = {
id: s,
frag: x,
details: j,
samples: W.samples
};
v.trigger(C.Events.FRAG_PARSING_USERDATA, ye);
}
}
}, e._bufferInitSegment = function(u, m, s, v) {
var c = this;
if (this.state === y.State.PARSING) {
this.audioOnly = !!m.audio && !m.video, this.altAudio && !this.audioOnly && delete m.audio;
var o = m.audio, a = m.video, x = m.audiovideo;
if (o) {
var k = u.audioCodec, K = navigator.userAgent.toLowerCase();
this.audioCodecSwitch && (k && (k.indexOf("mp4a.40.5") !== -1 ? k = "mp4a.40.2" : k = "mp4a.40.5"), o.metadata.channelCount !== 1 && K.indexOf("firefox") === -1 && (k = "mp4a.40.5")), K.indexOf("android") !== -1 && o.container !== "audio/mpeg" && (k = "mp4a.40.2", this.log("Android: force audio codec to " + k)), u.audioCodec && u.audioCodec !== k && this.log('Swapping manifest audio codec "' + u.audioCodec + '" for "' + k + '"'), o.levelCodec = k, o.id = "main", this.log("Init audio buffer, container:" + o.container + ", codecs[selected/level/parsed]=[" + (k || "") + "/" + (u.audioCodec || "") + "/" + o.codec + "]");
}
a && (a.levelCodec = u.videoCodec, a.id = "main", this.log("Init video buffer, container:" + a.container + ", codecs[level/parsed]=[" + (u.videoCodec || "") + "/" + a.codec + "]")), x && this.log("Init audiovideo buffer, container:" + x.container + ", codecs[level/parsed]=[" + (u.attrs.CODECS || "") + "/" + x.codec + "]"), this.hls.trigger(C.Events.BUFFER_CODECS, m), Object.keys(m).forEach(function(w) {
var W = m[w], z = W.initSegment;
z != null && z.byteLength && c.hls.trigger(C.Events.BUFFER_APPENDING, {
type: w,
data: z,
frag: s,
part: null,
chunkMeta: v,
parent: s.type
});
}), this.tick();
}
}, e.getMainFwdBufferInfo = function() {
return this.getFwdBufferInfo(this.mediaBuffer ? this.mediaBuffer : this.media, T.PlaylistLevelType.MAIN);
}, e.backtrack = function(u) {
this.couldBacktrack = !0, this.backtrackFragment = u, this.resetTransmuxer(), this.flushBufferGap(u), this.fragmentTracker.removeFragment(u), this.fragPrevious = null, this.nextLoadPosition = u.start, this.state = y.State.IDLE;
}, e.checkFragmentChanged = function() {
var u = this.media, m = null;
if (u && u.readyState > 1 && u.seeking === !1) {
var s = u.currentTime;
if (F.BufferHelper.isBuffered(u, s) ? m = this.getAppendedFrag(s) : F.BufferHelper.isBuffered(u, s + 0.1) && (m = this.getAppendedFrag(s + 0.1)), m) {
this.backtrackFragment = null;
var v = this.fragPlaying, c = m.level;
(!v || m.sn !== v.sn || v.level !== c || m.urlId !== v.urlId) && (this.hls.trigger(C.Events.FRAG_CHANGED, {
frag: m
}), (!v || v.level !== c) && this.hls.trigger(C.Events.LEVEL_SWITCHED, {
level: c
}), this.fragPlaying = m);
}
}
}, l(r, [{
key: "nextLevel",
get: function() {
var u = this.nextBufferedFrag;
return u ? u.level : -1;
}
}, {
key: "currentFrag",
get: function() {
var u = this.media;
return u ? this.fragPlaying || this.getAppendedFrag(u.currentTime) : null;
}
}, {
key: "currentProgramDateTime",
get: function() {
var u = this.media;
if (u) {
var m = u.currentTime, s = this.currentFrag;
if (s && (0, P.isFiniteNumber)(m) && (0, P.isFiniteNumber)(s.programDateTime)) {
var v = s.programDateTime + (m - s.start) * 1e3;
return new Date(v);
}
}
return null;
}
}, {
key: "currentLevel",
get: function() {
var u = this.currentFrag;
return u ? u.level : -1;
}
}, {
key: "nextBufferedFrag",
get: function() {
var u = this.currentFrag;
return u ? this.followingBufferedFrag(u) : null;
}
}, {
key: "forceStartLoad",
get: function() {
return this._forceStartLoad;
}
}]), r;
}(y.default);
},
"./src/controller/subtitle-stream-controller.ts": (U, M, g) => {
g.r(M), g.d(M, {
SubtitleStreamController: () => n
});
var P = g("./src/events.ts"), y = g("./src/utils/buffer-helper.ts"), O = g("./src/controller/fragment-finders.ts"), C = g("./src/utils/discontinuities.ts"), F = g("./src/controller/level-helper.ts"), R = g("./src/controller/fragment-tracker.ts"), T = g("./src/controller/base-stream-controller.ts"), D = g("./src/types/loader.ts"), p = g("./src/types/level.ts");
function S(d, h) {
for (var i = 0; i < h.length; i++) {
var r = h[i];
r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(d, r.key, r);
}
}
function b(d, h, i) {
return h && S(d.prototype, h), i && S(d, i), Object.defineProperty(d, "prototype", { writable: !1 }), d;
}
function _(d, h) {
d.prototype = Object.create(h.prototype), d.prototype.constructor = d, E(d, h);
}
function E(d, h) {
return E = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(r, e) {
return r.__proto__ = e, r;
}, E(d, h);
}
var l = 500, n = /* @__PURE__ */ function(d) {
_(h, d);
function h(r, e) {
var f;
return f = d.call(this, r, e, "[subtitle-stream-controller]") || this, f.levels = [], f.currentTrackId = -1, f.tracksBuffered = [], f.mainDetails = null, f._registerListeners(), f;
}
var i = h.prototype;
return i.onHandlerDestroying = function() {
this._unregisterListeners(), this.mainDetails = null;
}, i._registerListeners = function() {
var e = this.hls;
e.on(P.Events.MEDIA_ATTACHED, this.onMediaAttached, this), e.on(P.Events.MEDIA_DETACHING, this.onMediaDetaching, this), e.on(P.Events.MANIFEST_LOADING, this.onManifestLoading, this), e.on(P.Events.LEVEL_LOADED, this.onLevelLoaded, this), e.on(P.Events.ERROR, this.onError, this), e.on(P.Events.SUBTITLE_TRACKS_UPDATED, this.onSubtitleTracksUpdated, this), e.on(P.Events.SUBTITLE_TRACK_SWITCH, this.onSubtitleTrackSwitch, this), e.on(P.Events.SUBTITLE_TRACK_LOADED, this.onSubtitleTrackLoaded, this), e.on(P.Events.SUBTITLE_FRAG_PROCESSED, this.onSubtitleFragProcessed, this), e.on(P.Events.BUFFER_FLUSHING, this.onBufferFlushing, this);
}, i._unregisterListeners = function() {
var e = this.hls;
e.off(P.Events.MEDIA_ATTACHED, this.onMediaAttached, this), e.off(P.Events.MEDIA_DETACHING, this.onMediaDetaching, this), e.off(P.Events.MANIFEST_LOADING, this.onManifestLoading, this), e.off(P.Events.LEVEL_LOADED, this.onLevelLoaded, this), e.off(P.Events.ERROR, this.onError, this), e.off(P.Events.SUBTITLE_TRACKS_UPDATED, this.onSubtitleTracksUpdated, this), e.off(P.Events.SUBTITLE_TRACK_SWITCH, this.onSubtitleTrackSwitch, this), e.off(P.Events.SUBTITLE_TRACK_LOADED, this.onSubtitleTrackLoaded, this), e.off(P.Events.SUBTITLE_FRAG_PROCESSED, this.onSubtitleFragProcessed, this), e.off(P.Events.BUFFER_FLUSHING, this.onBufferFlushing, this);
}, i.startLoad = function() {
this.stopLoad(), this.state = T.State.IDLE, this.setInterval(l), this.tick();
}, i.onManifestLoading = function() {
this.mainDetails = null, this.fragmentTracker.removeAllFragments();
}, i.onLevelLoaded = function(e, f) {
this.mainDetails = f.details;
}, i.onSubtitleFragProcessed = function(e, f) {
var u = f.frag, m = f.success;
if (this.fragPrevious = u, this.state = T.State.IDLE, !!m) {
var s = this.tracksBuffered[this.currentTrackId];
if (!!s) {
for (var v, c = u.start, o = 0; o < s.length; o++)
if (c >= s[o].start && c <= s[o].end) {
v = s[o];
break;
}
var a = u.start + u.duration;
v ? v.end = a : (v = {
start: c,
end: a
}, s.push(v)), this.fragmentTracker.fragBuffered(u);
}
}
}, i.onBufferFlushing = function(e, f) {
var u = f.startOffset, m = f.endOffset;
if (u === 0 && m !== Number.POSITIVE_INFINITY) {
var s = this.currentTrackId, v = this.levels;
if (!v.length || !v[s] || !v[s].details)
return;
var c = v[s].details, o = c.targetduration, a = m - o;
if (a <= 0)
return;
f.endOffsetSubtitles = Math.max(0, a), this.tracksBuffered.forEach(function(x) {
for (var k = 0; k < x.length; ) {
if (x[k].end <= a) {
x.shift();
continue;
} else if (x[k].start < a)
x[k].start = a;
else
break;
k++;
}
}), this.fragmentTracker.removeFragmentsInRange(u, a, D.PlaylistLevelType.SUBTITLE);
}
}, i.onError = function(e, f) {
var u, m = f.frag;
!m || m.type !== D.PlaylistLevelType.SUBTITLE || ((u = this.fragCurrent) !== null && u !== void 0 && u.loader && this.fragCurrent.loader.abort(), this.state = T.State.IDLE);
}, i.onSubtitleTracksUpdated = function(e, f) {
var u = this, m = f.subtitleTracks;
this.tracksBuffered = [], this.levels = m.map(function(s) {
return new p.Level(s);
}), this.fragmentTracker.removeAllFragments(), this.fragPrevious = null, this.levels.forEach(function(s) {
u.tracksBuffered[s.id] = [];
}), this.mediaBuffer = null;
}, i.onSubtitleTrackSwitch = function(e, f) {
if (this.currentTrackId = f.id, !this.levels.length || this.currentTrackId === -1) {
this.clearInterval();
return;
}
var u = this.levels[this.currentTrackId];
u != null && u.details ? this.mediaBuffer = this.mediaBufferTimeRanges : this.mediaBuffer = null, u && this.setInterval(l);
}, i.onSubtitleTrackLoaded = function(e, f) {
var u, m = f.details, s = f.id, v = this.currentTrackId, c = this.levels;
if (!!c.length) {
var o = c[v];
if (!(s >= c.length || s !== v || !o)) {
if (this.mediaBuffer = this.mediaBufferTimeRanges, m.live || (u = o.details) !== null && u !== void 0 && u.live) {
var a = this.mainDetails;
if (m.deltaUpdateFailed || !a)
return;
var x = a.fragments[0];
if (!o.details)
m.hasProgramDateTime && a.hasProgramDateTime ? (0, C.alignMediaPlaylistByPDT)(m, a) : x && (0, F.addSliding)(m, x.start);
else {
var k = this.alignPlaylists(m, o.details);
k === 0 && x && (0, F.addSliding)(m, x.start);
}
}
if (o.details = m, this.levelLastLoaded = s, this.tick(), m.live && !this.fragCurrent && this.media && this.state === T.State.IDLE) {
var K = (0, O.findFragmentByPTS)(null, m.fragments, this.media.currentTime, 0);
K || (this.warn("Subtitle playlist not aligned with playback"), o.details = void 0);
}
}
}
}, i._handleFragmentLoadComplete = function(e) {
var f = e.frag, u = e.payload, m = f.decryptdata, s = this.hls;
if (!this.fragContextChanged(f) && u && u.byteLength > 0 && m && m.key && m.iv && m.method === "AES-128") {
var v = performance.now();
this.decrypter.webCryptoDecrypt(new Uint8Array(u), m.key.buffer, m.iv.buffer).then(function(c) {
var o = performance.now();
s.trigger(P.Events.FRAG_DECRYPTED, {
frag: f,
payload: c,
stats: {
tstart: v,
tdecrypt: o
}
});
});
}
}, i.doTick = function() {
if (!this.media) {
this.state = T.State.IDLE;
return;
}
if (this.state === T.State.IDLE) {
var e = this.currentTrackId, f = this.levels;
if (!f.length || !f[e] || !f[e].details)
return;
var u = f[e].details, m = u.targetduration, s = this.config, v = this.media, c = y.BufferHelper.bufferedInfo(this.tracksBuffered[this.currentTrackId] || [], v.currentTime - m, s.maxBufferHole), o = c.end, a = c.len, x = this.getMaxBufferLength() + m;
if (a > x)
return;
console.assert(u, "Subtitle track details are defined on idle subtitle stream controller tick");
var k = u.fragments, K = k.length, w = u.edge, W, z = this.fragPrevious;
if (o < w) {
var H = s.maxFragLookUpTolerance;
W = (0, O.findFragmentByPTS)(z, k, Math.max(k[0].start, o), H), !W && z && z.start < k[0].start && (W = k[0]);
} else
W = k[K - 1];
if (W = this.mapToInitFragWhenRequired(W), !W || this.fragmentTracker.getState(W) !== R.FragmentState.NOT_LOADED)
return;
W.encrypted ? this.loadKey(W, u) : this.loadFragment(W, u, o);
}
}, i.loadFragment = function(e, f, u) {
this.fragCurrent = e, e.sn === "initSegment" ? this._loadInitSegment(e) : d.prototype.loadFragment.call(this, e, f, u);
}, b(h, [{
key: "mediaBufferTimeRanges",
get: function() {
return new t(this.tracksBuffered[this.currentTrackId] || []);
}
}]), h;
}(T.default), t = function(h) {
this.buffered = void 0;
var i = function(e, f, u) {
if (f = f >>> 0, f > u - 1)
throw new DOMException("Failed to execute '" + e + "' on 'TimeRanges': The index provided (" + f + ") is greater than the maximum bound (" + u + ")");
return h[f][e];
};
this.buffered = {
get length() {
return h.length;
},
end: function(e) {
return i("end", e, h.length);
},
start: function(e) {
return i("start", e, h.length);
}
};
};
},
"./src/controller/subtitle-track-controller.ts": (U, M, g) => {
g.r(M), g.d(M, {
default: () => b
});
var P = g("./src/events.ts"), y = g("./src/utils/texttrack-utils.ts"), O = g("./src/controller/base-playlist-controller.ts"), C = g("./src/types/loader.ts");
function F(_, E) {
for (var l = 0; l < E.length; l++) {
var n = E[l];
n.enumerable = n.enumerable || !1, n.configurable = !0, "value" in n && (n.writable = !0), Object.defineProperty(_, n.key, n);
}
}
function R(_, E, l) {
return E && F(_.prototype, E), l && F(_, l), Object.defineProperty(_, "prototype", { writable: !1 }), _;
}
function T(_, E) {
_.prototype = Object.create(E.prototype), _.prototype.constructor = _, D(_, E);
}
function D(_, E) {
return D = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(n, t) {
return n.__proto__ = t, n;
}, D(_, E);
}
var p = /* @__PURE__ */ function(_) {
T(E, _);
function E(n) {
var t;
return t = _.call(this, n, "[subtitle-track-controller]") || this, t.media = null, t.tracks = [], t.groupId = null, t.tracksInGroup = [], t.trackId = -1, t.selectDefaultTrack = !0, t.queuedDefaultTrack = -1, t.trackChangeListener = function() {
return t.onTextTracksChanged();
}, t.asyncPollTrackChange = function() {
return t.pollTrackChange(0);
}, t.useTextTrackPolling = !1, t.subtitlePollingInterval = -1, t._subtitleDisplay = !0, t.registerListeners(), t;
}
var l = E.prototype;
return l.destroy = function() {
this.unregisterListeners(), this.tracks.length = 0, this.tracksInGroup.length = 0, this.trackChangeListener = this.asyncPollTrackChange = null, _.prototype.destroy.call(this);
}, l.registerListeners = function() {
var t = this.hls;
t.on(P.Events.MEDIA_ATTACHED, this.onMediaAttached, this), t.on(P.Events.MEDIA_DETACHING, this.onMediaDetaching, this), t.on(P.Events.MANIFEST_LOADING, this.onManifestLoading, this), t.on(P.Events.MANIFEST_PARSED, this.onManifestParsed, this), t.on(P.Events.LEVEL_LOADING, this.onLevelLoading, this), t.on(P.Events.LEVEL_SWITCHING, this.onLevelSwitching, this), t.on(P.Events.SUBTITLE_TRACK_LOADED, this.onSubtitleTrackLoaded, this), t.on(P.Events.ERROR, this.onError, this);
}, l.unregisterListeners = function() {
var t = this.hls;
t.off(P.Events.MEDIA_ATTACHED, this.onMediaAttached, this), t.off(P.Events.MEDIA_DETACHING, this.onMediaDetaching, this), t.off(P.Events.MANIFEST_LOADING, this.onManifestLoading, this), t.off(P.Events.MANIFEST_PARSED, this.onManifestParsed, this), t.off(P.Events.LEVEL_LOADING, this.onLevelLoading, this), t.off(P.Events.LEVEL_SWITCHING, this.onLevelSwitching, this), t.off(P.Events.SUBTITLE_TRACK_LOADED, this.onSubtitleTrackLoaded, this), t.off(P.Events.ERROR, this.onError, this);
}, l.onMediaAttached = function(t, d) {
this.media = d.media, this.media && (this.queuedDefaultTrack > -1 && (this.subtitleTrack = this.queuedDefaultTrack, this.queuedDefaultTrack = -1), this.useTextTrackPolling = !(this.media.textTracks && "onchange" in this.media.textTracks), this.useTextTrackPolling ? this.pollTrackChange(500) : this.media.textTracks.addEventListener("change", this.asyncPollTrackChange));
}, l.pollTrackChange = function(t) {
self.clearInterval(this.subtitlePollingInterval), this.subtitlePollingInterval = self.setInterval(this.trackChangeListener, t);
}, l.onMediaDetaching = function() {
if (!!this.media) {
self.clearInterval(this.subtitlePollingInterval), this.useTextTrackPolling || this.media.textTracks.removeEventListener("change", this.asyncPollTrackChange), this.trackId > -1 && (this.queuedDefaultTrack = this.trackId);
var t = S(this.media.textTracks);
t.forEach(function(d) {
(0, y.clearCurrentCues)(d);
}), this.subtitleTrack = -1, this.media = null;
}
}, l.onManifestLoading = function() {
this.tracks = [], this.groupId = null, this.tracksInGroup = [], this.trackId = -1, this.selectDefaultTrack = !0;
}, l.onManifestParsed = function(t, d) {
this.tracks = d.subtitleTracks;
}, l.onSubtitleTrackLoaded = function(t, d) {
var h = d.id, i = d.details, r = this.trackId, e = this.tracksInGroup[r];
if (!e) {
this.warn("Invalid subtitle track id " + h);
return;
}
var f = e.details;
e.details = d.details, this.log("subtitle track " + h + " loaded [" + i.startSN + "-" + i.endSN + "]"), h === this.trackId && (this.retryCount = 0, this.playlistLoaded(h, d, f));
}, l.onLevelLoading = function(t, d) {
this.switchLevel(d.level);
}, l.onLevelSwitching = function(t, d) {
this.switchLevel(d.level);
}, l.switchLevel = function(t) {
var d = this.hls.levels[t];
if (!!(d != null && d.textGroupIds)) {
var h = d.textGroupIds[d.urlId];
if (this.groupId !== h) {
var i = this.tracksInGroup ? this.tracksInGroup[this.trackId] : void 0, r = this.tracks.filter(function(u) {
return !h || u.groupId === h;
});
this.tracksInGroup = r;
var e = this.findTrackId(i == null ? void 0 : i.name) || this.findTrackId();
this.groupId = h;
var f = {
subtitleTracks: r
};
this.log("Updating subtitle tracks, " + r.length + ' track(s) found in "' + h + '" group-id'), this.hls.trigger(P.Events.SUBTITLE_TRACKS_UPDATED, f), e !== -1 && this.setSubtitleTrack(e, i);
}
}
}, l.findTrackId = function(t) {
for (var d = this.tracksInGroup, h = 0; h < d.length; h++) {
var i = d[h];
if ((!this.selectDefaultTrack || i.default) && (!t || t === i.name))
return i.id;
}
return -1;
}, l.onError = function(t, d) {
_.prototype.onError.call(this, t, d), !(d.fatal || !d.context) && d.context.type === C.PlaylistContextType.SUBTITLE_TRACK && d.context.id === this.trackId && d.context.groupId === this.groupId && this.retryLoadingOrFail(d);
}, l.loadPlaylist = function(t) {
var d = this.tracksInGroup[this.trackId];
if (this.shouldLoadTrack(d)) {
var h = d.id, i = d.groupId, r = d.url;
if (t)
try {
r = t.addDirectives(r);
} catch (e) {
this.warn("Could not construct new URL with HLS Delivery Directives: " + e);
}
this.log("Loading subtitle playlist for id " + h), this.hls.trigger(P.Events.SUBTITLE_TRACK_LOADING, {
url: r,
id: h,
groupId: i,
deliveryDirectives: t || null
});
}
}, l.toggleTrackModes = function(t) {
var d = this, h = this.media, i = this.trackId;
if (!!h) {
var r = S(h.textTracks), e = r.filter(function(m) {
return m.groupId === d.groupId;
});
if (t === -1)
[].slice.call(r).forEach(function(m) {
m.mode = "disabled";
});
else {
var f = e[i];
f && (f.mode = "disabled");
}
var u = e[t];
u && (u.mode = this.subtitleDisplay ? "showing" : "hidden");
}
}, l.setSubtitleTrack = function(t, d) {
var h, i = this.tracksInGroup;
if (!this.media) {
this.queuedDefaultTrack = t;
return;
}
if (this.trackId !== t && this.toggleTrackModes(t), !(this.trackId === t && (t === -1 || (h = i[t]) !== null && h !== void 0 && h.details) || t < -1 || t >= i.length)) {
this.clearTimer();
var r = i[t];
if (this.log("Switching to subtitle track " + t), this.trackId = t, r) {
var e = r.id, f = r.groupId, u = f === void 0 ? "" : f, m = r.name, s = r.type, v = r.url;
this.hls.trigger(P.Events.SUBTITLE_TRACK_SWITCH, {
id: e,
groupId: u,
name: m,
type: s,
url: v
});
var c = this.switchParams(r.url, d == null ? void 0 : d.details);
this.loadPlaylist(c);
} else
this.hls.trigger(P.Events.SUBTITLE_TRACK_SWITCH, {
id: t
});
}
}, l.onTextTracksChanged = function() {
if (this.useTextTrackPolling || self.clearInterval(this.subtitlePollingInterval), !(!this.media || !this.hls.config.renderTextTracksNatively)) {
for (var t = -1, d = S(this.media.textTracks), h = 0; h < d.length; h++)
if (d[h].mode === "hidden")
t = h;
else if (d[h].mode === "showing") {
t = h;
break;
}
this.subtitleTrack !== t && (this.subtitleTrack = t);
}
}, R(E, [{
key: "subtitleDisplay",
get: function() {
return this._subtitleDisplay;
},
set: function(t) {
this._subtitleDisplay = t, this.trackId > -1 && this.toggleTrackModes(this.trackId);
}
}, {
key: "subtitleTracks",
get: function() {
return this.tracksInGroup;
}
}, {
key: "subtitleTrack",
get: function() {
return this.trackId;
},
set: function(t) {
this.selectDefaultTrack = !1;
var d = this.tracksInGroup ? this.tracksInGroup[this.trackId] : void 0;
this.setSubtitleTrack(t, d);
}
}]), E;
}(O.default);
function S(_) {
for (var E = [], l = 0; l < _.length; l++) {
var n = _[l];
n.kind === "subtitles" && n.label && E.push(_[l]);
}
return E;
}
const b = p;
},
"./src/controller/timeline-controller.ts": (U, M, g) => {
g.r(M), g.d(M, {
TimelineController: () => b
});
var P = g("./src/polyfills/number.ts"), y = g("./src/events.ts"), O = g("./src/utils/cea-608-parser.ts"), C = g("./src/utils/output-filter.ts"), F = g("./src/utils/webvtt-parser.ts"), R = g("./src/utils/texttrack-utils.ts"), T = g("./src/utils/imsc1-ttml-parser.ts"), D = g("./src/utils/mp4-tools.ts"), p = g("./src/types/loader.ts"), S = g("./src/utils/logger.ts"), b = /* @__PURE__ */ function() {
function n(d) {
if (this.hls = void 0, this.media = null, this.config = void 0, this.enabled = !0, this.Cues = void 0, this.textTracks = [], this.tracks = [], this.initPTS = [], this.timescale = [], this.unparsedVttFrags = [], this.captionsTracks = {}, this.nonNativeCaptionsTracks = {}, this.cea608Parser1 = void 0, this.cea608Parser2 = void 0, this.lastSn = -1, this.lastPartIndex = -1, this.prevCC = -1, this.vttCCs = l(), this.captionsProperties = void 0, this.hls = d, this.config = d.config, this.Cues = d.config.cueHandler, this.captionsProperties = {
textTrack1: {
label: this.config.captionsTextTrack1Label,
languageCode: this.config.captionsTextTrack1LanguageCode
},
textTrack2: {
label: this.config.captionsTextTrack2Label,
languageCode: this.config.captionsTextTrack2LanguageCode
},
textTrack3: {
label: this.config.captionsTextTrack3Label,
languageCode: this.config.captionsTextTrack3LanguageCode
},
textTrack4: {
label: this.config.captionsTextTrack4Label,
languageCode: this.config.captionsTextTrack4LanguageCode
}
}, this.config.enableCEA708Captions) {
var h = new C.default(this, "textTrack1"), i = new C.default(this, "textTrack2"), r = new C.default(this, "textTrack3"), e = new C.default(this, "textTrack4");
this.cea608Parser1 = new O.default(1, h, i), this.cea608Parser2 = new O.default(3, r, e);
}
d.on(y.Events.MEDIA_ATTACHING, this.onMediaAttaching, this), d.on(y.Events.MEDIA_DETACHING, this.onMediaDetaching, this), d.on(y.Events.MANIFEST_LOADING, this.onManifestLoading, this), d.on(y.Events.MANIFEST_LOADED, this.onManifestLoaded, this), d.on(y.Events.SUBTITLE_TRACKS_UPDATED, this.onSubtitleTracksUpdated, this), d.on(y.Events.FRAG_LOADING, this.onFragLoading, this), d.on(y.Events.FRAG_LOADED, this.onFragLoaded, this), d.on(y.Events.FRAG_PARSING_USERDATA, this.onFragParsingUserdata, this), d.on(y.Events.FRAG_DECRYPTED, this.onFragDecrypted, this), d.on(y.Events.INIT_PTS_FOUND, this.onInitPtsFound, this), d.on(y.Events.SUBTITLE_TRACKS_CLEARED, this.onSubtitleTracksCleared, this), d.on(y.Events.BUFFER_FLUSHING, this.onBufferFlushing, this);
}
var t = n.prototype;
return t.destroy = function() {
var h = this.hls;
h.off(y.Events.MEDIA_ATTACHING, this.onMediaAttaching, this), h.off(y.Events.MEDIA_DETACHING, this.onMediaDetaching, this), h.off(y.Events.MANIFEST_LOADING, this.onManifestLoading, this), h.off(y.Events.MANIFEST_LOADED, this.onManifestLoaded, this), h.off(y.Events.SUBTITLE_TRACKS_UPDATED, this.onSubtitleTracksUpdated, this), h.off(y.Events.FRAG_LOADING, this.onFragLoading, this), h.off(y.Events.FRAG_LOADED, this.onFragLoaded, this), h.off(y.Events.FRAG_PARSING_USERDATA, this.onFragParsingUserdata, this), h.off(y.Events.FRAG_DECRYPTED, this.onFragDecrypted, this), h.off(y.Events.INIT_PTS_FOUND, this.onInitPtsFound, this), h.off(y.Events.SUBTITLE_TRACKS_CLEARED, this.onSubtitleTracksCleared, this), h.off(y.Events.BUFFER_FLUSHING, this.onBufferFlushing, this), this.hls = this.config = this.cea608Parser1 = this.cea608Parser2 = null;
}, t.addCues = function(h, i, r, e, f) {
for (var u = !1, m = f.length; m--; ) {
var s = f[m], v = E(s[0], s[1], i, r);
if (v >= 0 && (s[0] = Math.min(s[0], i), s[1] = Math.max(s[1], r), u = !0, v / (r - i) > 0.5))
return;
}
if (u || f.push([i, r]), this.config.renderTextTracksNatively) {
var c = this.captionsTracks[h];
this.Cues.newCue(c, i, r, e);
} else {
var o = this.Cues.newCue(null, i, r, e);
this.hls.trigger(y.Events.CUES_PARSED, {
type: "captions",
cues: o,
track: h
});
}
}, t.onInitPtsFound = function(h, i) {
var r = this, e = i.frag, f = i.id, u = i.initPTS, m = i.timescale, s = this.unparsedVttFrags;
f === "main" && (this.initPTS[e.cc] = u, this.timescale[e.cc] = m), s.length && (this.unparsedVttFrags = [], s.forEach(function(v) {
r.onFragLoaded(y.Events.FRAG_LOADED, v);
}));
}, t.getExistingTrack = function(h) {
var i = this.media;
if (i)
for (var r = 0; r < i.textTracks.length; r++) {
var e = i.textTracks[r];
if (e[h])
return e;
}
return null;
}, t.createCaptionsTrack = function(h) {
this.config.renderTextTracksNatively ? this.createNativeTrack(h) : this.createNonNativeTrack(h);
}, t.createNativeTrack = function(h) {
if (!this.captionsTracks[h]) {
var i = this.captionsProperties, r = this.captionsTracks, e = this.media, f = i[h], u = f.label, m = f.languageCode, s = this.getExistingTrack(h);
if (s)
r[h] = s, (0, R.clearCurrentCues)(r[h]), (0, R.sendAddTrackEvent)(r[h], e);
else {
var v = this.createTextTrack("captions", u, m);
v && (v[h] = !0, r[h] = v);
}
}
}, t.createNonNativeTrack = function(h) {
if (!this.nonNativeCaptionsTracks[h]) {
var i = this.captionsProperties[h];
if (!!i) {
var r = i.label, e = {
_id: h,
label: r,
kind: "captions",
default: i.media ? !!i.media.default : !1,
closedCaptions: i.media
};
this.nonNativeCaptionsTracks[h] = e, this.hls.trigger(y.Events.NON_NATIVE_TEXT_TRACKS_FOUND, {
tracks: [e]
});
}
}
}, t.createTextTrack = function(h, i, r) {
var e = this.media;
if (!!e)
return e.addTextTrack(h, i, r);
}, t.onMediaAttaching = function(h, i) {
this.media = i.media, this._cleanTracks();
}, t.onMediaDetaching = function() {
var h = this.captionsTracks;
Object.keys(h).forEach(function(i) {
(0, R.clearCurrentCues)(h[i]), delete h[i];
}), this.nonNativeCaptionsTracks = {};
}, t.onManifestLoading = function() {
this.lastSn = -1, this.lastPartIndex = -1, this.prevCC = -1, this.vttCCs = l(), this._cleanTracks(), this.tracks = [], this.captionsTracks = {}, this.nonNativeCaptionsTracks = {}, this.textTracks = [], this.unparsedVttFrags = this.unparsedVttFrags || [], this.initPTS = [], this.timescale = [], this.cea608Parser1 && this.cea608Parser2 && (this.cea608Parser1.reset(), this.cea608Parser2.reset());
}, t._cleanTracks = function() {
var h = this.media;
if (!!h) {
var i = h.textTracks;
if (i)
for (var r = 0; r < i.length; r++)
(0, R.clearCurrentCues)(i[r]);
}
}, t.onSubtitleTracksUpdated = function(h, i) {
var r = this;
this.textTracks = [];
var e = i.subtitleTracks || [], f = e.some(function(v) {
return v.textCodec === T.IMSC1_CODEC;
});
if (this.config.enableWebVTT || f && this.config.enableIMSC1) {
var u = this.tracks && e && this.tracks.length === e.length;
if (this.tracks = e || [], this.config.renderTextTracksNatively) {
var m = this.media ? this.media.textTracks : [];
this.tracks.forEach(function(v, c) {
var o;
if (c < m.length) {
for (var a = null, x = 0; x < m.length; x++)
if (_(m[x], v)) {
a = m[x];
break;
}
a && (o = a);
}
if (o)
(0, R.clearCurrentCues)(o);
else {
var k = r._captionsOrSubtitlesFromCharacteristics(v);
o = r.createTextTrack(k, v.name, v.lang), o && (o.mode = "disabled");
}
o && (o.groupId = v.groupId, r.textTracks.push(o));
});
} else if (!u && this.tracks && this.tracks.length) {
var s = this.tracks.map(function(v) {
return {
label: v.name,
kind: v.type.toLowerCase(),
default: v.default,
subtitleTrack: v
};
});
this.hls.trigger(y.Events.NON_NATIVE_TEXT_TRACKS_FOUND, {
tracks: s
});
}
}
}, t._captionsOrSubtitlesFromCharacteristics = function(h) {
var i;
if ((i = h.attrs) !== null && i !== void 0 && i.CHARACTERISTICS) {
var r = /transcribes-spoken-dialog/gi.test(h.attrs.CHARACTERISTICS), e = /describes-music-and-sound/gi.test(h.attrs.CHARACTERISTICS);
if (r && e)
return "captions";
}
return "subtitles";
}, t.onManifestLoaded = function(h, i) {
var r = this;
this.config.enableCEA708Captions && i.captions && i.captions.forEach(function(e) {
var f = /(?:CC|SERVICE)([1-4])/.exec(e.instreamId);
if (!!f) {
var u = "textTrack" + f[1], m = r.captionsProperties[u];
!m || (m.label = e.name, e.lang && (m.languageCode = e.lang), m.media = e);
}
});
}, t.closedCaptionsForLevel = function(h) {
var i = this.hls.levels[h.level];
return i == null ? void 0 : i.attrs["CLOSED-CAPTIONS"];
}, t.onFragLoading = function(h, i) {
var r = this.cea608Parser1, e = this.cea608Parser2, f = this.lastSn, u = this.lastPartIndex;
if (!(!this.enabled || !(r && e)) && i.frag.type === p.PlaylistLevelType.MAIN) {
var m, s, v = i.frag.sn, c = (m = i == null || (s = i.part) === null || s === void 0 ? void 0 : s.index) != null ? m : -1;
v === f + 1 || v === f && c === u + 1 || (r.reset(), e.reset()), this.lastSn = v, this.lastPartIndex = c;
}
}, t.onFragLoaded = function(h, i) {
var r = i.frag, e = i.payload, f = this.initPTS, u = this.unparsedVttFrags;
if (r.type === p.PlaylistLevelType.SUBTITLE)
if (e.byteLength) {
if (!(0, P.isFiniteNumber)(f[r.cc])) {
u.push(i), f.length && this.hls.trigger(y.Events.SUBTITLE_FRAG_PROCESSED, {
success: !1,
frag: r,
error: new Error("Missing initial subtitle PTS")
});
return;
}
var m = r.decryptdata, s = "stats" in i;
if (m == null || m.key == null || m.method !== "AES-128" || s) {
var v = this.tracks[r.level], c = this.vttCCs;
c[r.cc] || (c[r.cc] = {
start: r.start,
prevCC: this.prevCC,
new: !0
}, this.prevCC = r.cc), v && v.textCodec === T.IMSC1_CODEC ? this._parseIMSC1(r, e) : this._parseVTTs(r, e, c);
}
} else
this.hls.trigger(y.Events.SUBTITLE_FRAG_PROCESSED, {
success: !1,
frag: r,
error: new Error("Empty subtitle payload")
});
}, t._parseIMSC1 = function(h, i) {
var r = this, e = this.hls;
(0, T.parseIMSC1)(i, this.initPTS[h.cc], this.timescale[h.cc], function(f) {
r._appendCues(f, h.level), e.trigger(y.Events.SUBTITLE_FRAG_PROCESSED, {
success: !0,
frag: h
});
}, function(f) {
S.logger.log("Failed to parse IMSC1: " + f), e.trigger(y.Events.SUBTITLE_FRAG_PROCESSED, {
success: !1,
frag: h,
error: f
});
});
}, t._parseVTTs = function(h, i, r) {
var e, f = this, u = this.hls, m = (e = h.initSegment) !== null && e !== void 0 && e.data ? (0, D.appendUint8Array)(h.initSegment.data, new Uint8Array(i)) : i;
(0, F.parseWebVTT)(m, this.initPTS[h.cc], this.timescale[h.cc], r, h.cc, h.start, function(s) {
f._appendCues(s, h.level), u.trigger(y.Events.SUBTITLE_FRAG_PROCESSED, {
success: !0,
frag: h
});
}, function(s) {
f._fallbackToIMSC1(h, i), S.logger.log("Failed to parse VTT cue: " + s), u.trigger(y.Events.SUBTITLE_FRAG_PROCESSED, {
success: !1,
frag: h,
error: s
});
});
}, t._fallbackToIMSC1 = function(h, i) {
var r = this, e = this.tracks[h.level];
e.textCodec || (0, T.parseIMSC1)(i, this.initPTS[h.cc], this.timescale[h.cc], function() {
e.textCodec = T.IMSC1_CODEC, r._parseIMSC1(h, i);
}, function() {
e.textCodec = "wvtt";
});
}, t._appendCues = function(h, i) {
var r = this.hls;
if (this.config.renderTextTracksNatively) {
var e = this.textTracks[i];
if (!e || e.mode === "disabled")
return;
h.forEach(function(m) {
return (0, R.addCueToTrack)(e, m);
});
} else {
var f = this.tracks[i];
if (!f)
return;
var u = f.default ? "default" : "subtitles" + i;
r.trigger(y.Events.CUES_PARSED, {
type: "subtitles",
cues: h,
track: u
});
}
}, t.onFragDecrypted = function(h, i) {
var r = i.frag;
if (r.type === p.PlaylistLevelType.SUBTITLE) {
if (!(0, P.isFiniteNumber)(this.initPTS[r.cc])) {
this.unparsedVttFrags.push(i);
return;
}
this.onFragLoaded(y.Events.FRAG_LOADED, i);
}
}, t.onSubtitleTracksCleared = function() {
this.tracks = [], this.captionsTracks = {};
}, t.onFragParsingUserdata = function(h, i) {
var r = this.cea608Parser1, e = this.cea608Parser2;
if (!(!this.enabled || !(r && e))) {
var f = i.frag, u = i.samples;
if (!(f.type === p.PlaylistLevelType.MAIN && this.closedCaptionsForLevel(f) === "NONE"))
for (var m = 0; m < u.length; m++) {
var s = u[m].bytes;
if (s) {
var v = this.extractCea608Data(s);
r.addData(u[m].pts, v[0]), e.addData(u[m].pts, v[1]);
}
}
}
}, t.onBufferFlushing = function(h, i) {
var r = i.startOffset, e = i.endOffset, f = i.endOffsetSubtitles, u = i.type, m = this.media;
if (!(!m || m.currentTime < e)) {
if (!u || u === "video") {
var s = this.captionsTracks;
Object.keys(s).forEach(function(c) {
return (0, R.removeCuesInRange)(s[c], r, e);
});
}
if (this.config.renderTextTracksNatively && r === 0 && f !== void 0) {
var v = this.textTracks;
Object.keys(v).forEach(function(c) {
return (0, R.removeCuesInRange)(v[c], r, f);
});
}
}
}, t.extractCea608Data = function(h) {
for (var i = [[], []], r = h[0] & 31, e = 2, f = 0; f < r; f++) {
var u = h[e++], m = 127 & h[e++], s = 127 & h[e++];
if (!(m === 0 && s === 0)) {
var v = (4 & u) !== 0;
if (v) {
var c = 3 & u;
(c === 0 || c === 1) && (i[c].push(m), i[c].push(s));
}
}
}
return i;
}, n;
}();
function _(n, t) {
return n && n.label === t.name && !(n.textTrack1 || n.textTrack2);
}
function E(n, t, d, h) {
return Math.min(t, h) - Math.max(n, d);
}
function l() {
return {
ccOffset: 0,
presentationOffset: 0,
0: {
start: 0,
prevCC: -1,
new: !0
}
};
}
},
"./src/crypt/aes-crypto.ts": (U, M, g) => {
g.r(M), g.d(M, {
default: () => P
});
var P = /* @__PURE__ */ function() {
function y(C, F) {
this.subtle = void 0, this.aesIV = void 0, this.subtle = C, this.aesIV = F;
}
var O = y.prototype;
return O.decrypt = function(F, R) {
return this.subtle.decrypt({
name: "AES-CBC",
iv: this.aesIV
}, R, F);
}, y;
}();
},
"./src/crypt/aes-decryptor.ts": (U, M, g) => {
g.r(M), g.d(M, {
default: () => O,
removePadding: () => y
});
var P = g("./src/utils/typed-array.ts");
function y(C) {
var F = C.byteLength, R = F && new DataView(C.buffer).getUint8(F - 1);
return R ? (0, P.sliceUint8)(C, 0, F - R) : C;
}
var O = /* @__PURE__ */ function() {
function C() {
this.rcon = [0, 1, 2, 4, 8, 16, 32, 64, 128, 27, 54], this.subMix = [new Uint32Array(256), new Uint32Array(256), new Uint32Array(256), new Uint32Array(256)], this.invSubMix = [new Uint32Array(256), new Uint32Array(256), new Uint32Array(256), new Uint32Array(256)], this.sBox = new Uint32Array(256), this.invSBox = new Uint32Array(256), this.key = new Uint32Array(0), this.ksRows = 0, this.keySize = 0, this.keySchedule = void 0, this.invKeySchedule = void 0, this.initTable();
}
var F = C.prototype;
return F.uint8ArrayToUint32Array_ = function(T) {
for (var D = new DataView(T), p = new Uint32Array(4), S = 0; S < 4; S++)
p[S] = D.getUint32(S * 4);
return p;
}, F.initTable = function() {
var T = this.sBox, D = this.invSBox, p = this.subMix, S = p[0], b = p[1], _ = p[2], E = p[3], l = this.invSubMix, n = l[0], t = l[1], d = l[2], h = l[3], i = new Uint32Array(256), r = 0, e = 0, f = 0;
for (f = 0; f < 256; f++)
f < 128 ? i[f] = f << 1 : i[f] = f << 1 ^ 283;
for (f = 0; f < 256; f++) {
var u = e ^ e << 1 ^ e << 2 ^ e << 3 ^ e << 4;
u = u >>> 8 ^ u & 255 ^ 99, T[r] = u, D[u] = r;
var m = i[r], s = i[m], v = i[s], c = i[u] * 257 ^ u * 16843008;
S[r] = c << 24 | c >>> 8, b[r] = c << 16 | c >>> 16, _[r] = c << 8 | c >>> 24, E[r] = c, c = v * 16843009 ^ s * 65537 ^ m * 257 ^ r * 16843008, n[u] = c << 24 | c >>> 8, t[u] = c << 16 | c >>> 16, d[u] = c << 8 | c >>> 24, h[u] = c, r ? (r = m ^ i[i[i[v ^ m]]], e ^= i[i[e]]) : r = e = 1;
}
}, F.expandKey = function(T) {
for (var D = this.uint8ArrayToUint32Array_(T), p = !0, S = 0; S < D.length && p; )
p = D[S] === this.key[S], S++;
if (!p) {
this.key = D;
var b = this.keySize = D.length;
if (b !== 4 && b !== 6 && b !== 8)
throw new Error("Invalid aes key size=" + b);
var _ = this.ksRows = (b + 6 + 1) * 4, E, l, n = this.keySchedule = new Uint32Array(_), t = this.invKeySchedule = new Uint32Array(_), d = this.sBox, h = this.rcon, i = this.invSubMix, r = i[0], e = i[1], f = i[2], u = i[3], m, s;
for (E = 0; E < _; E++) {
if (E < b) {
m = n[E] = D[E];
continue;
}
s = m, E % b === 0 ? (s = s << 8 | s >>> 24, s = d[s >>> 24] << 24 | d[s >>> 16 & 255] << 16 | d[s >>> 8 & 255] << 8 | d[s & 255], s ^= h[E / b | 0] << 24) : b > 6 && E % b === 4 && (s = d[s >>> 24] << 24 | d[s >>> 16 & 255] << 16 | d[s >>> 8 & 255] << 8 | d[s & 255]), n[E] = m = (n[E - b] ^ s) >>> 0;
}
for (l = 0; l < _; l++)
E = _ - l, l & 3 ? s = n[E] : s = n[E - 4], l < 4 || E <= 4 ? t[l] = s : t[l] = r[d[s >>> 24]] ^ e[d[s >>> 16 & 255]] ^ f[d[s >>> 8 & 255]] ^ u[d[s & 255]], t[l] = t[l] >>> 0;
}
}, F.networkToHostOrderSwap = function(T) {
return T << 24 | (T & 65280) << 8 | (T & 16711680) >> 8 | T >>> 24;
}, F.decrypt = function(T, D, p) {
for (var S = this.keySize + 6, b = this.invKeySchedule, _ = this.invSBox, E = this.invSubMix, l = E[0], n = E[1], t = E[2], d = E[3], h = this.uint8ArrayToUint32Array_(p), i = h[0], r = h[1], e = h[2], f = h[3], u = new Int32Array(T), m = new Int32Array(u.length), s, v, c, o, a, x, k, K, w, W, z, H, j, Y, Z = this.networkToHostOrderSwap; D < u.length; ) {
for (w = Z(u[D]), W = Z(u[D + 1]), z = Z(u[D + 2]), H = Z(u[D + 3]), a = w ^ b[0], x = H ^ b[1], k = z ^ b[2], K = W ^ b[3], j = 4, Y = 1; Y < S; Y++)
s = l[a >>> 24] ^ n[x >> 16 & 255] ^ t[k >> 8 & 255] ^ d[K & 255] ^ b[j], v = l[x >>> 24] ^ n[k >> 16 & 255] ^ t[K >> 8 & 255] ^ d[a & 255] ^ b[j + 1], c = l[k >>> 24] ^ n[K >> 16 & 255] ^ t[a >> 8 & 255] ^ d[x & 255] ^ b[j + 2], o = l[K >>> 24] ^ n[a >> 16 & 255] ^ t[x >> 8 & 255] ^ d[k & 255] ^ b[j + 3], a = s, x = v, k = c, K = o, j = j + 4;
s = _[a >>> 24] << 24 ^ _[x >> 16 & 255] << 16 ^ _[k >> 8 & 255] << 8 ^ _[K & 255] ^ b[j], v = _[x >>> 24] << 24 ^ _[k >> 16 & 255] << 16 ^ _[K >> 8 & 255] << 8 ^ _[a & 255] ^ b[j + 1], c = _[k >>> 24] << 24 ^ _[K >> 16 & 255] << 16 ^ _[a >> 8 & 255] << 8 ^ _[x & 255] ^ b[j + 2], o = _[K >>> 24] << 24 ^ _[a >> 16 & 255] << 16 ^ _[x >> 8 & 255] << 8 ^ _[k & 255] ^ b[j + 3], m[D] = Z(s ^ i), m[D + 1] = Z(o ^ r), m[D + 2] = Z(c ^ e), m[D + 3] = Z(v ^ f), i = w, r = W, e = z, f = H, D = D + 4;
}
return m.buffer;
}, C;
}();
},
"./src/crypt/decrypter.ts": (U, M, g) => {
g.r(M), g.d(M, {
default: () => D
});
var P = g("./src/crypt/aes-crypto.ts"), y = g("./src/crypt/fast-aes-key.ts"), O = g("./src/crypt/aes-decryptor.ts"), C = g("./src/utils/logger.ts"), F = g("./src/utils/mp4-tools.ts"), R = g("./src/utils/typed-array.ts"), T = 16, D = /* @__PURE__ */ function() {
function p(b, _, E) {
var l = E === void 0 ? {} : E, n = l.removePKCS7Padding, t = n === void 0 ? !0 : n;
if (this.logEnabled = !0, this.observer = void 0, this.config = void 0, this.removePKCS7Padding = void 0, this.subtle = null, this.softwareDecrypter = null, this.key = null, this.fastAesKey = null, this.remainderData = null, this.currentIV = null, this.currentResult = null, this.observer = b, this.config = _, this.removePKCS7Padding = t, t)
try {
var d = self.crypto;
d && (this.subtle = d.subtle || d.webkitSubtle);
} catch {
}
this.subtle === null && (this.config.enableSoftwareAES = !0);
}
var S = p.prototype;
return S.destroy = function() {
this.observer = null;
}, S.isSync = function() {
return this.config.enableSoftwareAES;
}, S.flush = function() {
var _ = this.currentResult;
if (!_) {
this.reset();
return;
}
var E = new Uint8Array(_);
return this.reset(), this.removePKCS7Padding ? (0, O.removePadding)(E) : E;
}, S.reset = function() {
this.currentResult = null, this.currentIV = null, this.remainderData = null, this.softwareDecrypter && (this.softwareDecrypter = null);
}, S.decrypt = function(_, E, l, n) {
if (this.config.enableSoftwareAES) {
this.softwareDecrypt(new Uint8Array(_), E, l);
var t = this.flush();
t && n(t.buffer);
} else
this.webCryptoDecrypt(new Uint8Array(_), E, l).then(n);
}, S.softwareDecrypt = function(_, E, l) {
var n = this.currentIV, t = this.currentResult, d = this.remainderData;
this.logOnce("JS AES decrypt"), d && (_ = (0, F.appendUint8Array)(d, _), this.remainderData = null);
var h = this.getValidChunk(_);
if (!h.length)
return null;
n && (l = n);
var i = this.softwareDecrypter;
i || (i = this.softwareDecrypter = new O.default()), i.expandKey(E);
var r = t;
return this.currentResult = i.decrypt(h.buffer, 0, l), this.currentIV = (0, R.sliceUint8)(h, -16).buffer, r || null;
}, S.webCryptoDecrypt = function(_, E, l) {
var n = this, t = this.subtle;
return (this.key !== E || !this.fastAesKey) && (this.key = E, this.fastAesKey = new y.default(t, E)), this.fastAesKey.expandKey().then(function(d) {
if (!t)
return Promise.reject(new Error("web crypto not initialized"));
var h = new P.default(t, l);
return h.decrypt(_.buffer, d);
}).catch(function(d) {
return n.onWebCryptoError(d, _, E, l);
});
}, S.onWebCryptoError = function(_, E, l, n) {
return C.logger.warn("[decrypter.ts]: WebCrypto Error, disable WebCrypto API:", _), this.config.enableSoftwareAES = !0, this.logEnabled = !0, this.softwareDecrypt(E, l, n);
}, S.getValidChunk = function(_) {
var E = _, l = _.length - _.length % T;
return l !== _.length && (E = (0, R.sliceUint8)(_, 0, l), this.remainderData = (0, R.sliceUint8)(_, l)), E;
}, S.logOnce = function(_) {
!this.logEnabled || (C.logger.log("[decrypter.ts]: " + _), this.logEnabled = !1);
}, p;
}();
},
"./src/crypt/fast-aes-key.ts": (U, M, g) => {
g.r(M), g.d(M, {
default: () => P
});
var P = /* @__PURE__ */ function() {
function y(C, F) {
this.subtle = void 0, this.key = void 0, this.subtle = C, this.key = F;
}
var O = y.prototype;
return O.expandKey = function() {
return this.subtle.importKey("raw", this.key, {
name: "AES-CBC"
}, !1, ["encrypt", "decrypt"]);
}, y;
}();
},
"./src/demux/aacdemuxer.ts": (U, M, g) => {
g.r(M), g.d(M, {
default: () => D
});
var P = g("./src/demux/base-audio-demuxer.ts"), y = g("./src/demux/adts.ts"), O = g("./src/utils/logger.ts"), C = g("./src/demux/id3.ts");
function F(p, S) {
p.prototype = Object.create(S.prototype), p.prototype.constructor = p, R(p, S);
}
function R(p, S) {
return R = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(_, E) {
return _.__proto__ = E, _;
}, R(p, S);
}
var T = /* @__PURE__ */ function(p) {
F(S, p);
function S(_, E) {
var l;
return l = p.call(this) || this, l.observer = void 0, l.config = void 0, l.observer = _, l.config = E, l;
}
var b = S.prototype;
return b.resetInitSegment = function(E, l, n, t) {
p.prototype.resetInitSegment.call(this, E, l, n, t), this._audioTrack = {
container: "audio/adts",
type: "audio",
id: 2,
pid: -1,
sequenceNumber: 0,
segmentCodec: "aac",
samples: [],
manifestCodec: l,
duration: t,
inputTimeScale: 9e4,
dropped: 0
};
}, S.probe = function(E) {
if (!E)
return !1;
for (var l = C.getID3Data(E, 0) || [], n = l.length, t = E.length; n < t; n++)
if (y.probe(E, n))
return O.logger.log("ADTS sync word found !"), !0;
return !1;
}, b.canParse = function(E, l) {
return y.canParse(E, l);
}, b.appendFrame = function(E, l, n) {
y.initTrackConfig(E, this.observer, l, n, E.manifestCodec);
var t = y.appendFrame(E, l, n, this.basePTS, this.frameIndex);
if (t && t.missing === 0)
return t;
}, S;
}(P.default);
const D = T;
},
"./src/demux/adts.ts": (U, M, g) => {
g.r(M), g.d(M, {
appendFrame: () => n,
canGetFrameLength: () => D,
canParse: () => S,
getAudioConfig: () => C,
getFrameDuration: () => E,
getFullFrameLength: () => T,
getHeaderLength: () => R,
initTrackConfig: () => _,
isHeader: () => p,
isHeaderPattern: () => F,
parseFrameHeader: () => l,
probe: () => b
});
var P = g("./src/utils/logger.ts"), y = g("./src/errors.ts"), O = g("./src/events.ts");
function C(t, d, h, i) {
var r, e, f, u, m = navigator.userAgent.toLowerCase(), s = i, v = [96e3, 88200, 64e3, 48e3, 44100, 32e3, 24e3, 22050, 16e3, 12e3, 11025, 8e3, 7350];
r = ((d[h + 2] & 192) >>> 6) + 1;
var c = (d[h + 2] & 60) >>> 2;
if (c > v.length - 1) {
t.trigger(O.Events.ERROR, {
type: y.ErrorTypes.MEDIA_ERROR,
details: y.ErrorDetails.FRAG_PARSING_ERROR,
fatal: !0,
reason: "invalid ADTS sampling index:" + c
});
return;
}
return f = (d[h + 2] & 1) << 2, f |= (d[h + 3] & 192) >>> 6, P.logger.log("manifest codec:" + i + ", ADTS type:" + r + ", samplingIndex:" + c), /firefox/i.test(m) ? c >= 6 ? (r = 5, u = new Array(4), e = c - 3) : (r = 2, u = new Array(2), e = c) : m.indexOf("android") !== -1 ? (r = 2, u = new Array(2), e = c) : (r = 5, u = new Array(4), i && (i.indexOf("mp4a.40.29") !== -1 || i.indexOf("mp4a.40.5") !== -1) || !i && c >= 6 ? e = c - 3 : ((i && i.indexOf("mp4a.40.2") !== -1 && (c >= 6 && f === 1 || /vivaldi/i.test(m)) || !i && f === 1) && (r = 2, u = new Array(2)), e = c)), u[0] = r << 3, u[0] |= (c & 14) >> 1, u[1] |= (c & 1) << 7, u[1] |= f << 3, r === 5 && (u[1] |= (e & 14) >> 1, u[2] = (e & 1) << 7, u[2] |= 8, u[3] = 0), {
config: u,
samplerate: v[c],
channelCount: f,
codec: "mp4a.40." + r,
manifestCodec: s
};
}
function F(t, d) {
return t[d] === 255 && (t[d + 1] & 246) === 240;
}
function R(t, d) {
return t[d + 1] & 1 ? 7 : 9;
}
function T(t, d) {
return (t[d + 3] & 3) << 11 | t[d + 4] << 3 | (t[d + 5] & 224) >>> 5;
}
function D(t, d) {
return d + 5 < t.length;
}
function p(t, d) {
return d + 1 < t.length && F(t, d);
}
function S(t, d) {
return D(t, d) && F(t, d) && T(t, d) <= t.length - d;
}
function b(t, d) {
if (p(t, d)) {
var h = R(t, d);
if (d + h >= t.length)
return !1;
var i = T(t, d);
if (i <= h)
return !1;
var r = d + i;
return r === t.length || p(t, r);
}
return !1;
}
function _(t, d, h, i, r) {
if (!t.samplerate) {
var e = C(d, h, i, r);
if (!e)
return;
t.config = e.config, t.samplerate = e.samplerate, t.channelCount = e.channelCount, t.codec = e.codec, t.manifestCodec = e.manifestCodec, P.logger.log("parsed codec:" + t.codec + ", rate:" + e.samplerate + ", channels:" + e.channelCount);
}
}
function E(t) {
return 9216e4 / t;
}
function l(t, d) {
var h = R(t, d);
if (d + h <= t.length) {
var i = T(t, d) - h;
if (i > 0)
return {
headerLength: h,
frameLength: i
};
}
}
function n(t, d, h, i, r) {
var e = E(t.samplerate), f = i + r * e, u = l(d, h), m;
if (u) {
var s = u.frameLength, v = u.headerLength, c = v + s, o = Math.max(0, h + c - d.length);
o ? (m = new Uint8Array(c - v), m.set(d.subarray(h + v, d.length), 0)) : m = d.subarray(h + v, h + c);
var a = {
unit: m,
pts: f
};
return o || t.samples.push(a), {
sample: a,
length: c,
missing: o
};
}
var x = d.length - h;
m = new Uint8Array(x), m.set(d.subarray(h, d.length), 0);
var k = {
unit: m,
pts: f
};
return {
sample: k,
length: x,
missing: -1
};
}
},
"./src/demux/base-audio-demuxer.ts": (U, M, g) => {
g.r(M), g.d(M, {
default: () => p,
initPTSFn: () => D
});
var P = g("./src/polyfills/number.ts"), y = g("./src/demux/id3.ts"), O = g("./src/types/demuxer.ts"), C = g("./src/demux/dummy-demuxed-track.ts"), F = g("./src/utils/mp4-tools.ts"), R = g("./src/utils/typed-array.ts"), T = /* @__PURE__ */ function() {
function S() {
this._audioTrack = void 0, this._id3Track = void 0, this.frameIndex = 0, this.cachedData = null, this.basePTS = null, this.initPTS = null;
}
var b = S.prototype;
return b.resetInitSegment = function(E, l, n, t) {
this._id3Track = {
type: "id3",
id: 3,
pid: -1,
inputTimeScale: 9e4,
sequenceNumber: 0,
samples: [],
dropped: 0
};
}, b.resetTimeStamp = function(E) {
this.initPTS = E, this.resetContiguity();
}, b.resetContiguity = function() {
this.basePTS = null, this.frameIndex = 0;
}, b.canParse = function(E, l) {
return !1;
}, b.appendFrame = function(E, l, n) {
}, b.demux = function(E, l) {
this.cachedData && (E = (0, F.appendUint8Array)(this.cachedData, E), this.cachedData = null);
var n = y.getID3Data(E, 0), t = n ? n.length : 0, d, h, i = this._audioTrack, r = this._id3Track, e = n ? y.getTimeStamp(n) : void 0, f = E.length;
for ((this.basePTS === null || this.frameIndex === 0 && (0, P.isFiniteNumber)(e)) && (this.basePTS = D(e, l, this.initPTS)), n && n.length > 0 && r.samples.push({
pts: this.basePTS,
dts: this.basePTS,
data: n,
type: O.MetadataSchema.audioId3,
duration: Number.POSITIVE_INFINITY
}), h = this.basePTS; t < f; ) {
if (this.canParse(E, t)) {
var u = this.appendFrame(i, E, t);
u ? (this.frameIndex++, h = u.sample.pts, t += u.length, d = t) : t = f;
} else
y.canParse(E, t) ? (n = y.getID3Data(E, t), r.samples.push({
pts: h,
dts: h,
data: n,
type: O.MetadataSchema.audioId3,
duration: Number.POSITIVE_INFINITY
}), t += n.length, d = t) : t++;
if (t === f && d !== f) {
var m = (0, R.sliceUint8)(E, d);
this.cachedData ? this.cachedData = (0, F.appendUint8Array)(this.cachedData, m) : this.cachedData = m;
}
}
return {
audioTrack: i,
videoTrack: (0, C.dummyTrack)(),
id3Track: r,
textTrack: (0, C.dummyTrack)()
};
}, b.demuxSampleAes = function(E, l, n) {
return Promise.reject(new Error("[" + this + "] This demuxer does not support Sample-AES decryption"));
}, b.flush = function(E) {
var l = this.cachedData;
return l && (this.cachedData = null, this.demux(l, 0)), {
audioTrack: this._audioTrack,
videoTrack: (0, C.dummyTrack)(),
id3Track: this._id3Track,
textTrack: (0, C.dummyTrack)()
};
}, b.destroy = function() {
}, S;
}(), D = function(b, _, E) {
return (0, P.isFiniteNumber)(b) ? b * 90 : _ * 9e4 + (E || 0);
};
const p = T;
},
"./src/demux/chunk-cache.ts": (U, M, g) => {
g.r(M), g.d(M, {
default: () => P
});
var P = /* @__PURE__ */ function() {
function O() {
this.chunks = [], this.dataLength = 0;
}
var C = O.prototype;
return C.push = function(R) {
this.chunks.push(R), this.dataLength += R.length;
}, C.flush = function() {
var R = this.chunks, T = this.dataLength, D;
if (R.length)
R.length === 1 ? D = R[0] : D = y(R, T);
else
return new Uint8Array(0);
return this.reset(), D;
}, C.reset = function() {
this.chunks.length = 0, this.dataLength = 0;
}, O;
}();
function y(O, C) {
for (var F = new Uint8Array(C), R = 0, T = 0; T < O.length; T++) {
var D = O[T];
F.set(D, R), R += D.length;
}
return F;
}
},
"./src/demux/dummy-demuxed-track.ts": (U, M, g) => {
g.r(M), g.d(M, {
dummyTrack: () => P
});
function P(y, O) {
return y === void 0 && (y = ""), O === void 0 && (O = 9e4), {
type: y,
id: -1,
pid: -1,
inputTimeScale: O,
sequenceNumber: -1,
samples: [],
dropped: 0
};
}
},
"./src/demux/exp-golomb.ts": (U, M, g) => {
g.r(M), g.d(M, {
default: () => O
});
var P = g("./src/utils/logger.ts"), y = /* @__PURE__ */ function() {
function C(R) {
this.data = void 0, this.bytesAvailable = void 0, this.word = void 0, this.bitsAvailable = void 0, this.data = R, this.bytesAvailable = R.byteLength, this.word = 0, this.bitsAvailable = 0;
}
var F = C.prototype;
return F.loadWord = function() {
var T = this.data, D = this.bytesAvailable, p = T.byteLength - D, S = new Uint8Array(4), b = Math.min(4, D);
if (b === 0)
throw new Error("no bytes available");
S.set(T.subarray(p, p + b)), this.word = new DataView(S.buffer).getUint32(0), this.bitsAvailable = b * 8, this.bytesAvailable -= b;
}, F.skipBits = function(T) {
var D;
this.bitsAvailable > T ? (this.word <<= T, this.bitsAvailable -= T) : (T -= this.bitsAvailable, D = T >> 3, T -= D >> 3, this.bytesAvailable -= D, this.loadWord(), this.word <<= T, this.bitsAvailable -= T);
}, F.readBits = function(T) {
var D = Math.min(this.bitsAvailable, T), p = this.word >>> 32 - D;
return T > 32 && P.logger.error("Cannot read more than 32 bits at a time"), this.bitsAvailable -= D, this.bitsAvailable > 0 ? this.word <<= D : this.bytesAvailable > 0 && this.loadWord(), D = T - D, D > 0 && this.bitsAvailable ? p << D | this.readBits(D) : p;
}, F.skipLZ = function() {
var T;
for (T = 0; T < this.bitsAvailable; ++T)
if ((this.word & 2147483648 >>> T) !== 0)
return this.word <<= T, this.bitsAvailable -= T, T;
return this.loadWord(), T + this.skipLZ();
}, F.skipUEG = function() {
this.skipBits(1 + this.skipLZ());
}, F.skipEG = function() {
this.skipBits(1 + this.skipLZ());
}, F.readUEG = function() {
var T = this.skipLZ();
return this.readBits(T + 1) - 1;
}, F.readEG = function() {
var T = this.readUEG();
return 1 & T ? 1 + T >>> 1 : -1 * (T >>> 1);
}, F.readBoolean = function() {
return this.readBits(1) === 1;
}, F.readUByte = function() {
return this.readBits(8);
}, F.readUShort = function() {
return this.readBits(16);
}, F.readUInt = function() {
return this.readBits(32);
}, F.skipScalingList = function(T) {
for (var D = 8, p = 8, S, b = 0; b < T; b++)
p !== 0 && (S = this.readEG(), p = (D + S + 256) % 256), D = p === 0 ? D : p;
}, F.readSPS = function() {
var T = 0, D = 0, p = 0, S = 0, b, _, E, l = this.readUByte.bind(this), n = this.readBits.bind(this), t = this.readUEG.bind(this), d = this.readBoolean.bind(this), h = this.skipBits.bind(this), i = this.skipEG.bind(this), r = this.skipUEG.bind(this), e = this.skipScalingList.bind(this);
l();
var f = l();
if (n(5), h(3), l(), r(), f === 100 || f === 110 || f === 122 || f === 244 || f === 44 || f === 83 || f === 86 || f === 118 || f === 128) {
var u = t();
if (u === 3 && h(1), r(), r(), h(1), d())
for (_ = u !== 3 ? 8 : 12, E = 0; E < _; E++)
d() && (E < 6 ? e(16) : e(64));
}
r();
var m = t();
if (m === 0)
t();
else if (m === 1)
for (h(1), i(), i(), b = t(), E = 0; E < b; E++)
i();
r(), h(1);
var s = t(), v = t(), c = n(1);
c === 0 && h(1), h(1), d() && (T = t(), D = t(), p = t(), S = t());
var o = [1, 1];
if (d() && d()) {
var a = l();
switch (a) {
case 1:
o = [1, 1];
break;
case 2:
o = [12, 11];
break;
case 3:
o = [10, 11];
break;
case 4:
o = [16, 11];
break;
case 5:
o = [40, 33];
break;
case 6:
o = [24, 11];
break;
case 7:
o = [20, 11];
break;
case 8:
o = [32, 11];
break;
case 9:
o = [80, 33];
break;
case 10:
o = [18, 11];
break;
case 11:
o = [15, 11];
break;
case 12:
o = [64, 33];
break;
case 13:
o = [160, 99];
break;
case 14:
o = [4, 3];
break;
case 15:
o = [3, 2];
break;
case 16:
o = [2, 1];
break;
case 255: {
o = [l() << 8 | l(), l() << 8 | l()];
break;
}
}
}
return {
width: Math.ceil((s + 1) * 16 - T * 2 - D * 2),
height: (2 - c) * (v + 1) * 16 - (c ? 2 : 4) * (p + S),
pixelRatio: o
};
}, F.readSliceType = function() {
return this.readUByte(), this.readUEG(), this.readUEG();
}, C;
}();
const O = y;
},
"./src/demux/id3.ts": (U, M, g) => {
g.r(M), g.d(M, {
canParse: () => F,
decodeFrame: () => S,
getID3Data: () => O,
getID3Frames: () => p,
getTimeStamp: () => R,
isFooter: () => y,
isHeader: () => P,
isTimeStampFrame: () => T,
testables: () => t,
utf8ArrayToStr: () => n
});
var P = function(r, e) {
return e + 10 <= r.length && r[e] === 73 && r[e + 1] === 68 && r[e + 2] === 51 && r[e + 3] < 255 && r[e + 4] < 255 && r[e + 6] < 128 && r[e + 7] < 128 && r[e + 8] < 128 && r[e + 9] < 128;
}, y = function(r, e) {
return e + 10 <= r.length && r[e] === 51 && r[e + 1] === 68 && r[e + 2] === 73 && r[e + 3] < 255 && r[e + 4] < 255 && r[e + 6] < 128 && r[e + 7] < 128 && r[e + 8] < 128 && r[e + 9] < 128;
}, O = function(r, e) {
for (var f = e, u = 0; P(r, e); ) {
u += 10;
var m = C(r, e + 6);
u += m, y(r, e + 10) && (u += 10), e += u;
}
if (u > 0)
return r.subarray(f, f + u);
}, C = function(r, e) {
var f = 0;
return f = (r[e] & 127) << 21, f |= (r[e + 1] & 127) << 14, f |= (r[e + 2] & 127) << 7, f |= r[e + 3] & 127, f;
}, F = function(r, e) {
return P(r, e) && C(r, e + 6) + 10 <= r.length - e;
}, R = function(r) {
for (var e = p(r), f = 0; f < e.length; f++) {
var u = e[f];
if (T(u))
return l(u);
}
}, T = function(r) {
return r && r.key === "PRIV" && r.info === "com.apple.streaming.transportStreamTimestamp";
}, D = function(r) {
var e = String.fromCharCode(r[0], r[1], r[2], r[3]), f = C(r, 4), u = 10;
return {
type: e,
size: f,
data: r.subarray(u, u + f)
};
}, p = function(r) {
for (var e = 0, f = []; P(r, e); ) {
var u = C(r, e + 6);
e += 10;
for (var m = e + u; e + 8 < m; ) {
var s = D(r.subarray(e)), v = S(s);
v && f.push(v), e += s.size + 10;
}
y(r, e) && (e += 10);
}
return f;
}, S = function(r) {
return r.type === "PRIV" ? b(r) : r.type[0] === "W" ? E(r) : _(r);
}, b = function(r) {
if (!(r.size < 2)) {
var e = n(r.data, !0), f = new Uint8Array(r.data.subarray(e.length + 1));
return {
key: r.type,
info: e,
data: f.buffer
};
}
}, _ = function(r) {
if (!(r.size < 2)) {
if (r.type === "TXXX") {
var e = 1, f = n(r.data.subarray(e), !0);
e += f.length + 1;
var u = n(r.data.subarray(e));
return {
key: r.type,
info: f,
data: u
};
}
var m = n(r.data.subarray(1));
return {
key: r.type,
data: m
};
}
}, E = function(r) {
if (r.type === "WXXX") {
if (r.size < 2)
return;
var e = 1, f = n(r.data.subarray(e), !0);
e += f.length + 1;
var u = n(r.data.subarray(e));
return {
key: r.type,
info: f,
data: u
};
}
var m = n(r.data);
return {
key: r.type,
data: m
};
}, l = function(r) {
if (r.data.byteLength === 8) {
var e = new Uint8Array(r.data), f = e[3] & 1, u = (e[4] << 23) + (e[5] << 15) + (e[6] << 7) + e[7];
return u /= 45, f && (u += 4772185884e-2), Math.round(u);
}
}, n = function(r, e) {
e === void 0 && (e = !1);
var f = h();
if (f) {
var u = f.decode(r);
if (e) {
var m = u.indexOf("\0");
return m !== -1 ? u.substring(0, m) : u;
}
return u.replace(/\0/g, "");
}
for (var s = r.length, v, c, o, a = "", x = 0; x < s; ) {
if (v = r[x++], v === 0 && e)
return a;
if (v === 0 || v === 3)
continue;
switch (v >> 4) {
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
case 6:
case 7:
a += String.fromCharCode(v);
break;
case 12:
case 13:
c = r[x++], a += String.fromCharCode((v & 31) << 6 | c & 63);
break;
case 14:
c = r[x++], o = r[x++], a += String.fromCharCode((v & 15) << 12 | (c & 63) << 6 | (o & 63) << 0);
break;
}
}
return a;
}, t = {
decodeTextFrame: _
}, d;
function h() {
return !d && typeof self.TextDecoder < "u" && (d = new self.TextDecoder("utf-8")), d;
}
},
"./src/demux/mp3demuxer.ts": (U, M, g) => {
g.r(M), g.d(M, {
default: () => D
});
var P = g("./src/demux/base-audio-demuxer.ts"), y = g("./src/demux/id3.ts"), O = g("./src/utils/logger.ts"), C = g("./src/demux/mpegaudio.ts");
function F(p, S) {
p.prototype = Object.create(S.prototype), p.prototype.constructor = p, R(p, S);
}
function R(p, S) {
return R = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(_, E) {
return _.__proto__ = E, _;
}, R(p, S);
}
var T = /* @__PURE__ */ function(p) {
F(S, p);
function S() {
return p.apply(this, arguments) || this;
}
var b = S.prototype;
return b.resetInitSegment = function(E, l, n, t) {
p.prototype.resetInitSegment.call(this, E, l, n, t), this._audioTrack = {
container: "audio/mpeg",
type: "audio",
id: 2,
pid: -1,
sequenceNumber: 0,
segmentCodec: "mp3",
samples: [],
manifestCodec: l,
duration: t,
inputTimeScale: 9e4,
dropped: 0
};
}, S.probe = function(E) {
if (!E)
return !1;
for (var l = y.getID3Data(E, 0) || [], n = l.length, t = E.length; n < t; n++)
if (C.probe(E, n))
return O.logger.log("MPEG Audio sync word found !"), !0;
return !1;
}, b.canParse = function(E, l) {
return C.canParse(E, l);
}, b.appendFrame = function(E, l, n) {
if (this.basePTS !== null)
return C.appendFrame(E, l, n, this.basePTS, this.frameIndex);
}, S;
}(P.default);
const D = T;
},
"./src/demux/mp4demuxer.ts": (U, M, g) => {
g.r(M), g.d(M, {
default: () => T
});
var P = g("./src/polyfills/number.ts"), y = g("./src/types/demuxer.ts"), O = g("./src/utils/mp4-tools.ts"), C = g("./src/demux/dummy-demuxed-track.ts"), F = /\/emsg[-/]ID3/i, R = /* @__PURE__ */ function() {
function D(S, b) {
this.remainderData = null, this.timeOffset = 0, this.config = void 0, this.videoTrack = void 0, this.audioTrack = void 0, this.id3Track = void 0, this.txtTrack = void 0, this.config = b;
}
var p = D.prototype;
return p.resetTimeStamp = function() {
}, p.resetInitSegment = function(b, _, E, l) {
var n = (0, O.parseInitSegment)(b), t = this.videoTrack = (0, C.dummyTrack)("video", 1), d = this.audioTrack = (0, C.dummyTrack)("audio", 1), h = this.txtTrack = (0, C.dummyTrack)("text", 1);
if (this.id3Track = (0, C.dummyTrack)("id3", 1), this.timeOffset = 0, n.video) {
var i = n.video, r = i.id, e = i.timescale, f = i.codec;
t.id = r, t.timescale = h.timescale = e, t.codec = f;
}
if (n.audio) {
var u = n.audio, m = u.id, s = u.timescale, v = u.codec;
d.id = m, d.timescale = s, d.codec = v;
}
h.id = O.RemuxerTrackIdConfig.text, t.sampleDuration = 0, t.duration = d.duration = l;
}, p.resetContiguity = function() {
}, D.probe = function(b) {
return b = b.length > 16384 ? b.subarray(0, 16384) : b, (0, O.findBox)(b, ["moof"]).length > 0;
}, p.demux = function(b, _) {
this.timeOffset = _;
var E = b, l = this.videoTrack, n = this.txtTrack;
if (this.config.progressive) {
this.remainderData && (E = (0, O.appendUint8Array)(this.remainderData, b));
var t = (0, O.segmentValidRange)(E);
this.remainderData = t.remainder, l.samples = t.valid || new Uint8Array();
} else
l.samples = E;
var d = this.extractID3Track(l, _);
return n.samples = (0, O.parseSamples)(_, l), {
videoTrack: l,
audioTrack: this.audioTrack,
id3Track: d,
textTrack: this.txtTrack
};
}, p.flush = function() {
var b = this.timeOffset, _ = this.videoTrack, E = this.txtTrack;
_.samples = this.remainderData || new Uint8Array(), this.remainderData = null;
var l = this.extractID3Track(_, this.timeOffset);
return E.samples = (0, O.parseSamples)(b, _), {
videoTrack: _,
audioTrack: (0, C.dummyTrack)(),
id3Track: l,
textTrack: (0, C.dummyTrack)()
};
}, p.extractID3Track = function(b, _) {
var E = this.id3Track;
if (b.samples.length) {
var l = (0, O.findBox)(b.samples, ["emsg"]);
l && l.forEach(function(n) {
var t = (0, O.parseEmsg)(n);
if (F.test(t.schemeIdUri)) {
var d = (0, P.isFiniteNumber)(t.presentationTime) ? t.presentationTime / t.timeScale : _ + t.presentationTimeDelta / t.timeScale, h = t.eventDuration === 4294967295 ? Number.POSITIVE_INFINITY : t.eventDuration / t.timeScale;
h <= 1e-3 && (h = Number.POSITIVE_INFINITY);
var i = t.payload;
E.samples.push({
data: i,
len: i.byteLength,
dts: d,
pts: d,
type: y.MetadataSchema.emsg,
duration: h
});
}
});
}
return E;
}, p.demuxSampleAes = function(b, _, E) {
return Promise.reject(new Error("The MP4 demuxer does not support SAMPLE-AES decryption"));
}, p.destroy = function() {
}, D;
}();
const T = R;
},
"./src/demux/mpegaudio.ts": (U, M, g) => {
g.r(M), g.d(M, {
appendFrame: () => R,
canParse: () => S,
isHeader: () => p,
isHeaderPattern: () => D,
parseHeader: () => T,
probe: () => b
});
var P = null, y = [32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448, 32, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, 384, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, 32, 48, 56, 64, 80, 96, 112, 128, 144, 160, 176, 192, 224, 256, 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160], O = [44100, 48e3, 32e3, 22050, 24e3, 16e3, 11025, 12e3, 8e3], C = [
[
0,
72,
144,
12
],
[
0,
0,
0,
0
],
[
0,
72,
144,
12
],
[
0,
144,
144,
12
]
], F = [
0,
1,
1,
4
];
function R(_, E, l, n, t) {
if (!(l + 24 > E.length)) {
var d = T(E, l);
if (d && l + d.frameLength <= E.length) {
var h = d.samplesPerFrame * 9e4 / d.sampleRate, i = n + t * h, r = {
unit: E.subarray(l, l + d.frameLength),
pts: i,
dts: i
};
return _.config = [], _.channelCount = d.channelCount, _.samplerate = d.sampleRate, _.samples.push(r), {
sample: r,
length: d.frameLength,
missing: 0
};
}
}
}
function T(_, E) {
var l = _[E + 1] >> 3 & 3, n = _[E + 1] >> 1 & 3, t = _[E + 2] >> 4 & 15, d = _[E + 2] >> 2 & 3;
if (l !== 1 && t !== 0 && t !== 15 && d !== 3) {
var h = _[E + 2] >> 1 & 1, i = _[E + 3] >> 6, r = l === 3 ? 3 - n : n === 3 ? 3 : 4, e = y[r * 14 + t - 1] * 1e3, f = l === 3 ? 0 : l === 2 ? 1 : 2, u = O[f * 3 + d], m = i === 3 ? 1 : 2, s = C[l][n], v = F[n], c = s * 8 * v, o = Math.floor(s * e / u + h) * v;
if (P === null) {
var a = navigator.userAgent || "", x = a.match(/Chrome\/(\d+)/i);
P = x ? parseInt(x[1]) : 0;
}
var k = !!P && P <= 87;
return k && n === 2 && e >= 224e3 && i === 0 && (_[E + 3] = _[E + 3] | 128), {
sampleRate: u,
channelCount: m,
frameLength: o,
samplesPerFrame: c
};
}
}
function D(_, E) {
return _[E] === 255 && (_[E + 1] & 224) === 224 && (_[E + 1] & 6) !== 0;
}
function p(_, E) {
return E + 1 < _.length && D(_, E);
}
function S(_, E) {
var l = 4;
return D(_, E) && l <= _.length - E;
}
function b(_, E) {
if (E + 1 < _.length && D(_, E)) {
var l = 4, n = T(_, E), t = l;
n != null && n.frameLength && (t = n.frameLength);
var d = E + t;
return d === _.length || p(_, d);
}
return !1;
}
},
"./src/demux/sample-aes.ts": (U, M, g) => {
g.r(M), g.d(M, {
default: () => C
});
var P = g("./src/crypt/decrypter.ts"), y = g("./src/utils/mp4-tools.ts"), O = /* @__PURE__ */ function() {
function F(T, D, p) {
this.keyData = void 0, this.decrypter = void 0, this.keyData = p, this.decrypter = new P.default(T, D, {
removePKCS7Padding: !1
});
}
var R = F.prototype;
return R.decryptBuffer = function(D, p) {
this.decrypter.decrypt(D, this.keyData.key.buffer, this.keyData.iv.buffer, p);
}, R.decryptAacSample = function(D, p, S, b) {
var _ = D[p].unit;
if (!(_.length <= 16)) {
var E = _.subarray(16, _.length - _.length % 16), l = E.buffer.slice(E.byteOffset, E.byteOffset + E.length), n = this;
this.decryptBuffer(l, function(t) {
var d = new Uint8Array(t);
_.set(d, 16), b || n.decryptAacSamples(D, p + 1, S);
});
}
}, R.decryptAacSamples = function(D, p, S) {
for (; ; p++) {
if (p >= D.length) {
S();
return;
}
if (!(D[p].unit.length < 32)) {
var b = this.decrypter.isSync();
if (this.decryptAacSample(D, p, S, b), !b)
return;
}
}
}, R.getAvcEncryptedData = function(D) {
for (var p = Math.floor((D.length - 48) / 160) * 16 + 16, S = new Int8Array(p), b = 0, _ = 32; _ < D.length - 16; _ += 160, b += 16)
S.set(D.subarray(_, _ + 16), b);
return S;
}, R.getAvcDecryptedUnit = function(D, p) {
for (var S = new Uint8Array(p), b = 0, _ = 32; _ < D.length - 16; _ += 160, b += 16)
D.set(S.subarray(b, b + 16), _);
return D;
}, R.decryptAvcSample = function(D, p, S, b, _, E) {
var l = (0, y.discardEPB)(_.data), n = this.getAvcEncryptedData(l), t = this;
this.decryptBuffer(n.buffer, function(d) {
_.data = t.getAvcDecryptedUnit(l, d), E || t.decryptAvcSamples(D, p, S + 1, b);
});
}, R.decryptAvcSamples = function(D, p, S, b) {
if (D instanceof Uint8Array)
throw new Error("Cannot decrypt samples of type Uint8Array");
for (; ; p++, S = 0) {
if (p >= D.length) {
b();
return;
}
for (var _ = D[p].units; !(S >= _.length); S++) {
var E = _[S];
if (!(E.data.length <= 48 || E.type !== 1 && E.type !== 5)) {
var l = this.decrypter.isSync();
if (this.decryptAvcSample(D, p, S, b, E, l), !l)
return;
}
}
}
}, F;
}();
const C = O;
},
"./src/demux/transmuxer-interface.ts": (U, M, g) => {
g.r(M), g.d(M, {
default: () => p
});
var P = g("./src/demux/webworkify-webpack.js"), y = g("./src/events.ts"), O = g("./src/demux/transmuxer.ts"), C = g("./src/utils/logger.ts"), F = g("./src/errors.ts"), R = g("./src/utils/mediasource-helper.ts"), T = g("./node_modules/eventemitter3/index.js"), D = (0, R.getMediaSource)() || {
isTypeSupported: function() {
return !1;
}
}, p = /* @__PURE__ */ function() {
function S(_, E, l, n) {
var t = this;
this.hls = void 0, this.id = void 0, this.observer = void 0, this.frag = null, this.part = null, this.worker = void 0, this.onwmsg = void 0, this.transmuxer = null, this.onTransmuxComplete = void 0, this.onFlush = void 0, this.hls = _, this.id = E, this.onTransmuxComplete = l, this.onFlush = n;
var d = _.config, h = function(u, m) {
m = m || {}, m.frag = t.frag, m.id = t.id, _.trigger(u, m);
};
this.observer = new T.EventEmitter(), this.observer.on(y.Events.FRAG_DECRYPTED, h), this.observer.on(y.Events.ERROR, h);
var i = {
mp4: D.isTypeSupported("video/mp4"),
mpeg: D.isTypeSupported("audio/mpeg"),
mp3: D.isTypeSupported('audio/mp4; codecs="mp3"')
}, r = navigator.vendor;
if (d.enableWorker && typeof Worker < "u") {
C.logger.log("demuxing in webworker");
var e;
try {
e = this.worker = (0, P.default)("./src/demux/transmuxer-worker.ts"), this.onwmsg = this.onWorkerMessage.bind(this), e.addEventListener("message", this.onwmsg), e.onerror = function(f) {
_.trigger(y.Events.ERROR, {
type: F.ErrorTypes.OTHER_ERROR,
details: F.ErrorDetails.INTERNAL_EXCEPTION,
fatal: !0,
event: "demuxerWorker",
error: new Error(f.message + " (" + f.filename + ":" + f.lineno + ")")
});
}, e.postMessage({
cmd: "init",
typeSupported: i,
vendor: r,
id: E,
config: JSON.stringify(d)
});
} catch (f) {
C.logger.warn("Error in worker:", f), C.logger.error("Error while initializing DemuxerWorker, fallback to inline"), e && self.URL.revokeObjectURL(e.objectURL), this.transmuxer = new O.default(this.observer, i, d, r, E), this.worker = null;
}
} else
this.transmuxer = new O.default(this.observer, i, d, r, E);
}
var b = S.prototype;
return b.destroy = function() {
var E = this.worker;
if (E)
E.removeEventListener("message", this.onwmsg), E.terminate(), this.worker = null, this.onwmsg = void 0;
else {
var l = this.transmuxer;
l && (l.destroy(), this.transmuxer = null);
}
var n = this.observer;
n && n.removeAllListeners(), this.frag = null, this.observer = null, this.hls = null;
}, b.push = function(E, l, n, t, d, h, i, r, e, f) {
var u, m, s = this;
e.transmuxing.start = self.performance.now();
var v = this.transmuxer, c = this.worker, o = h ? h.start : d.start, a = d.decryptdata, x = this.frag, k = !(x && d.cc === x.cc), K = !(x && e.level === x.level), w = x ? e.sn - x.sn : -1, W = this.part ? e.part - this.part.index : -1, z = w === 0 && e.id > 1 && e.id === (x == null ? void 0 : x.stats.chunkCount), H = !K && (w === 1 || w === 0 && (W === 1 || z && W <= 0)), j = self.performance.now();
(K || w || d.stats.parsing.start === 0) && (d.stats.parsing.start = j), h && (W || !H) && (h.stats.parsing.start = j);
var Y = !(x && ((u = d.initSegment) === null || u === void 0 ? void 0 : u.url) === ((m = x.initSegment) === null || m === void 0 ? void 0 : m.url)), Z = new O.TransmuxState(k, H, r, K, o, Y);
if (!H || k || Y) {
C.logger.log("[transmuxer-interface, " + d.type + "]: Starting new transmux session for sn: " + e.sn + " p: " + e.part + " level: " + e.level + " id: " + e.id + `
discontinuity: ` + k + `
trackSwitch: ` + K + `
contiguous: ` + H + `
accurateTimeOffset: ` + r + `
timeOffset: ` + o + `
initSegmentChange: ` + Y);
var q = new O.TransmuxConfig(n, t, l, i, f);
this.configureTransmuxer(q);
}
if (this.frag = d, this.part = h, c)
c.postMessage({
cmd: "demux",
data: E,
decryptdata: a,
chunkMeta: e,
state: Z
}, E instanceof ArrayBuffer ? [E] : []);
else if (v) {
var ee = v.push(E, a, e, Z);
(0, O.isPromise)(ee) ? ee.then(function(te) {
s.handleTransmuxComplete(te);
}) : this.handleTransmuxComplete(ee);
}
}, b.flush = function(E) {
var l = this;
E.transmuxing.start = self.performance.now();
var n = this.transmuxer, t = this.worker;
if (t)
t.postMessage({
cmd: "flush",
chunkMeta: E
});
else if (n) {
var d = n.flush(E);
(0, O.isPromise)(d) ? d.then(function(h) {
l.handleFlushResult(h, E);
}) : this.handleFlushResult(d, E);
}
}, b.handleFlushResult = function(E, l) {
var n = this;
E.forEach(function(t) {
n.handleTransmuxComplete(t);
}), this.onFlush(l);
}, b.onWorkerMessage = function(E) {
var l = E.data, n = this.hls;
switch (l.event) {
case "init": {
self.URL.revokeObjectURL(this.worker.objectURL);
break;
}
case "transmuxComplete": {
this.handleTransmuxComplete(l.data);
break;
}
case "flush": {
this.onFlush(l.data);
break;
}
case "workerLog":
C.logger[l.data.logType] && C.logger[l.data.logType](l.data.message);
break;
default: {
l.data = l.data || {}, l.data.frag = this.frag, l.data.id = this.id, n.trigger(l.event, l.data);
break;
}
}
}, b.configureTransmuxer = function(E) {
var l = this.worker, n = this.transmuxer;
l ? l.postMessage({
cmd: "configure",
config: E
}) : n && n.configure(E);
}, b.handleTransmuxComplete = function(E) {
E.chunkMeta.transmuxing.end = self.performance.now(), this.onTransmuxComplete(E);
}, S;
}();
},
"./src/demux/transmuxer-worker.ts": (U, M, g) => {
g.r(M), g.d(M, {
default: () => F
});
var P = g("./src/demux/transmuxer.ts"), y = g("./src/events.ts"), O = g("./src/utils/logger.ts"), C = g("./node_modules/eventemitter3/index.js");
function F(S) {
var b = new C.EventEmitter(), _ = function(n, t) {
S.postMessage({
event: n,
data: t
});
};
b.on(y.Events.FRAG_DECRYPTED, _), b.on(y.Events.ERROR, _);
var E = function() {
var n = function(h) {
var i = function(e) {
_("workerLog", {
logType: h,
message: e
});
};
O.logger[h] = i;
};
for (var t in O.logger)
n(t);
};
S.addEventListener("message", function(l) {
var n = l.data;
switch (n.cmd) {
case "init": {
var t = JSON.parse(n.config);
S.transmuxer = new P.default(b, n.typeSupported, t, n.vendor, n.id), (0, O.enableLogs)(t.debug, n.id), E(), _("init", null);
break;
}
case "configure": {
S.transmuxer.configure(n.config);
break;
}
case "demux": {
var d = S.transmuxer.push(n.data, n.decryptdata, n.chunkMeta, n.state);
(0, P.isPromise)(d) ? d.then(function(r) {
R(S, r);
}) : R(S, d);
break;
}
case "flush": {
var h = n.chunkMeta, i = S.transmuxer.flush(h);
(0, P.isPromise)(i) ? i.then(function(r) {
D(S, r, h);
}) : D(S, i, h);
break;
}
}
});
}
function R(S, b) {
if (p(b.remuxResult))
return !1;
var _ = [], E = b.remuxResult, l = E.audio, n = E.video;
return l && T(_, l), n && T(_, n), S.postMessage({
event: "transmuxComplete",
data: b
}, _), !0;
}
function T(S, b) {
b.data1 && S.push(b.data1.buffer), b.data2 && S.push(b.data2.buffer);
}
function D(S, b, _) {
var E = b.reduce(function(l, n) {
return R(S, n) || l;
}, !1);
E || S.postMessage({
event: "transmuxComplete",
data: b[0]
}), S.postMessage({
event: "flush",
data: _
});
}
function p(S) {
return !S.audio && !S.video && !S.text && !S.id3 && !S.initSegment;
}
},
"./src/demux/transmuxer.ts": (U, M, g) => {
g.r(M), g.d(M, {
TransmuxConfig: () => d,
TransmuxState: () => h,
default: () => E,
isPromise: () => t
});
var P = g("./src/events.ts"), y = g("./src/errors.ts"), O = g("./src/crypt/decrypter.ts"), C = g("./src/demux/aacdemuxer.ts"), F = g("./src/demux/mp4demuxer.ts"), R = g("./src/demux/tsdemuxer.ts"), T = g("./src/demux/mp3demuxer.ts"), D = g("./src/remux/mp4-remuxer.ts"), p = g("./src/remux/passthrough-remuxer.ts"), S = g("./src/utils/logger.ts"), b;
try {
b = self.performance.now.bind(self.performance);
} catch {
S.logger.debug("Unable to use Performance API on this environment"), b = self.Date.now;
}
var _ = [{
demux: R.default,
remux: D.default
}, {
demux: F.default,
remux: p.default
}, {
demux: C.default,
remux: D.default
}, {
demux: T.default,
remux: D.default
}], E = /* @__PURE__ */ function() {
function i(e, f, u, m, s) {
this.observer = void 0, this.typeSupported = void 0, this.config = void 0, this.vendor = void 0, this.id = void 0, this.demuxer = void 0, this.remuxer = void 0, this.decrypter = void 0, this.probe = void 0, this.decryptionPromise = null, this.transmuxConfig = void 0, this.currentTransmuxState = void 0, this.observer = e, this.typeSupported = f, this.config = u, this.vendor = m, this.id = s;
}
var r = i.prototype;
return r.configure = function(f) {
this.transmuxConfig = f, this.decrypter && this.decrypter.reset();
}, r.push = function(f, u, m, s) {
var v = this, c = m.transmuxing;
c.executeStart = b();
var o = new Uint8Array(f), a = this.config, x = this.currentTransmuxState, k = this.transmuxConfig;
s && (this.currentTransmuxState = s);
var K = s || x, w = K.contiguous, W = K.discontinuity, z = K.trackSwitch, H = K.accurateTimeOffset, j = K.timeOffset, Y = K.initSegmentChange, Z = k.audioCodec, q = k.videoCodec, ee = k.defaultInitPts, te = k.duration, ne = k.initSegmentData;
(W || z || Y) && this.resetInitSegment(ne, Z, q, te), (W || Y) && this.resetInitialTimestamp(ee), w || this.resetContiguity();
var ie = l(o, u);
if (ie && ie.method === "AES-128") {
var oe = this.getDecrypter();
if (a.enableSoftwareAES) {
var de = oe.softwareDecrypt(o, ie.key.buffer, ie.iv.buffer);
if (!de)
return c.executeEnd = b(), n(m);
o = new Uint8Array(de);
} else
return this.decryptionPromise = oe.webCryptoDecrypt(o, ie.key.buffer, ie.iv.buffer).then(function(me) {
var ve = v.push(me, null, m);
return v.decryptionPromise = null, ve;
}), this.decryptionPromise;
}
this.needsProbing(o, W, z) && this.configureTransmuxer(o, k);
var re = this.transmux(o, ie, j, H, m), le = this.currentTransmuxState;
return le.contiguous = !0, le.discontinuity = !1, le.trackSwitch = !1, c.executeEnd = b(), re;
}, r.flush = function(f) {
var u = this, m = f.transmuxing;
m.executeStart = b();
var s = this.decrypter, v = this.currentTransmuxState, c = this.decryptionPromise;
if (c)
return c.then(function() {
return u.flush(f);
});
var o = [], a = v.timeOffset;
if (s) {
var x = s.flush();
x && o.push(this.push(x, null, f));
}
var k = this.demuxer, K = this.remuxer;
if (!k || !K)
return this.observer.emit(P.Events.ERROR, P.Events.ERROR, {
type: y.ErrorTypes.MEDIA_ERROR,
details: y.ErrorDetails.FRAG_PARSING_ERROR,
fatal: !0,
reason: "no demux matching with content found"
}), m.executeEnd = b(), [n(f)];
var w = k.flush(a);
return t(w) ? w.then(function(W) {
return u.flushRemux(o, W, f), o;
}) : (this.flushRemux(o, w, f), o);
}, r.flushRemux = function(f, u, m) {
var s = u.audioTrack, v = u.videoTrack, c = u.id3Track, o = u.textTrack, a = this.currentTransmuxState, x = a.accurateTimeOffset, k = a.timeOffset;
S.logger.log("[transmuxer.ts]: Flushed fragment " + m.sn + (m.part > -1 ? " p: " + m.part : "") + " of level " + m.level);
var K = this.remuxer.remux(s, v, c, o, k, x, !0, this.id);
f.push({
remuxResult: K,
chunkMeta: m
}), m.transmuxing.executeEnd = b();
}, r.resetInitialTimestamp = function(f) {
var u = this.demuxer, m = this.remuxer;
!u || !m || (u.resetTimeStamp(f), m.resetTimeStamp(f));
}, r.resetContiguity = function() {
var f = this.demuxer, u = this.remuxer;
!f || !u || (f.resetContiguity(), u.resetNextTimestamp());
}, r.resetInitSegment = function(f, u, m, s) {
var v = this.demuxer, c = this.remuxer;
!v || !c || (v.resetInitSegment(f, u, m, s), c.resetInitSegment(f, u, m));
}, r.destroy = function() {
this.demuxer && (this.demuxer.destroy(), this.demuxer = void 0), this.remuxer && (this.remuxer.destroy(), this.remuxer = void 0);
}, r.transmux = function(f, u, m, s, v) {
var c;
return u && u.method === "SAMPLE-AES" ? c = this.transmuxSampleAes(f, u, m, s, v) : c = this.transmuxUnencrypted(f, m, s, v), c;
}, r.transmuxUnencrypted = function(f, u, m, s) {
var v = this.demuxer.demux(f, u, !1, !this.config.progressive), c = v.audioTrack, o = v.videoTrack, a = v.id3Track, x = v.textTrack, k = this.remuxer.remux(c, o, a, x, u, m, !1, this.id);
return {
remuxResult: k,
chunkMeta: s
};
}, r.transmuxSampleAes = function(f, u, m, s, v) {
var c = this;
return this.demuxer.demuxSampleAes(f, u, m).then(function(o) {
var a = c.remuxer.remux(o.audioTrack, o.videoTrack, o.id3Track, o.textTrack, m, s, !1, c.id);
return {
remuxResult: a,
chunkMeta: v
};
});
}, r.configureTransmuxer = function(f, u) {
for (var m = this.config, s = this.observer, v = this.typeSupported, c = this.vendor, o = u.audioCodec, a = u.defaultInitPts, x = u.duration, k = u.initSegmentData, K = u.videoCodec, w, W = 0, z = _.length; W < z; W++)
if (_[W].demux.probe(f)) {
w = _[W];
break;
}
w || (S.logger.warn("Failed to find demuxer by probing frag, treating as mp4 passthrough"), w = {
demux: F.default,
remux: p.default
});
var H = this.demuxer, j = this.remuxer, Y = w.remux, Z = w.demux;
(!j || !(j instanceof Y)) && (this.remuxer = new Y(s, m, v, c)), (!H || !(H instanceof Z)) && (this.demuxer = new Z(s, m, v), this.probe = Z.probe), this.resetInitSegment(k, o, K, x), this.resetInitialTimestamp(a);
}, r.needsProbing = function(f, u, m) {
return !this.demuxer || !this.remuxer || u || m;
}, r.getDecrypter = function() {
var f = this.decrypter;
return f || (f = this.decrypter = new O.default(this.observer, this.config)), f;
}, i;
}();
function l(i, r) {
var e = null;
return i.byteLength > 0 && r != null && r.key != null && r.iv !== null && r.method != null && (e = r), e;
}
var n = function(r) {
return {
remuxResult: {},
chunkMeta: r
};
};
function t(i) {
return "then" in i && i.then instanceof Function;
}
var d = function(r, e, f, u, m) {
this.audioCodec = void 0, this.videoCodec = void 0, this.initSegmentData = void 0, this.duration = void 0, this.defaultInitPts = void 0, this.audioCodec = r, this.videoCodec = e, this.initSegmentData = f, this.duration = u, this.defaultInitPts = m;
}, h = function(r, e, f, u, m, s) {
this.discontinuity = void 0, this.contiguous = void 0, this.accurateTimeOffset = void 0, this.trackSwitch = void 0, this.timeOffset = void 0, this.initSegmentChange = void 0, this.discontinuity = r, this.contiguous = e, this.accurateTimeOffset = f, this.trackSwitch = u, this.timeOffset = m, this.initSegmentChange = s;
};
},
"./src/demux/tsdemuxer.ts": (U, M, g) => {
g.r(M), g.d(M, {
default: () => h
});
var P = g("./src/demux/adts.ts"), y = g("./src/demux/mpegaudio.ts"), O = g("./src/demux/exp-golomb.ts"), C = g("./src/demux/sample-aes.ts"), F = g("./src/events.ts"), R = g("./src/utils/mp4-tools.ts"), T = g("./src/utils/logger.ts"), D = g("./src/errors.ts"), p = g("./src/types/demuxer.ts");
function S() {
return S = Object.assign ? Object.assign.bind() : function(i) {
for (var r = 1; r < arguments.length; r++) {
var e = arguments[r];
for (var f in e)
Object.prototype.hasOwnProperty.call(e, f) && (i[f] = e[f]);
}
return i;
}, S.apply(this, arguments);
}
var b = 188, _ = /* @__PURE__ */ function() {
function i(e, f, u) {
this.observer = void 0, this.config = void 0, this.typeSupported = void 0, this.sampleAes = null, this.pmtParsed = !1, this.audioCodec = void 0, this.videoCodec = void 0, this._duration = 0, this._pmtId = -1, this._avcTrack = void 0, this._audioTrack = void 0, this._id3Track = void 0, this._txtTrack = void 0, this.aacOverFlow = null, this.avcSample = null, this.remainderData = null, this.observer = e, this.config = f, this.typeSupported = u;
}
i.probe = function(f) {
var u = i.syncOffset(f);
return u > 0 && T.logger.warn("MPEG2-TS detected but first sync word found @ offset " + u), u !== -1;
}, i.syncOffset = function(f) {
for (var u = Math.min(b * 5, f.length - b * 2) + 1, m = 0; m < u; ) {
if (f[m] === 71 && f[m + b] === 71)
return m;
m++;
}
return -1;
}, i.createTrack = function(f, u) {
return {
container: f === "video" || f === "audio" ? "video/mp2t" : void 0,
type: f,
id: R.RemuxerTrackIdConfig[f],
pid: -1,
inputTimeScale: 9e4,
sequenceNumber: 0,
samples: [],
dropped: 0,
duration: f === "audio" ? u : void 0
};
};
var r = i.prototype;
return r.resetInitSegment = function(f, u, m, s) {
this.pmtParsed = !1, this._pmtId = -1, this._avcTrack = i.createTrack("video"), this._audioTrack = i.createTrack("audio", s), this._id3Track = i.createTrack("id3"), this._txtTrack = i.createTrack("text"), this._audioTrack.segmentCodec = "aac", this.aacOverFlow = null, this.avcSample = null, this.remainderData = null, this.audioCodec = u, this.videoCodec = m, this._duration = s;
}, r.resetTimeStamp = function() {
}, r.resetContiguity = function() {
var f = this._audioTrack, u = this._avcTrack, m = this._id3Track;
f && (f.pesData = null), u && (u.pesData = null), m && (m.pesData = null), this.aacOverFlow = null, this.avcSample = null, this.remainderData = null;
}, r.demux = function(f, u, m, s) {
m === void 0 && (m = !1), s === void 0 && (s = !1), m || (this.sampleAes = null);
var v, c = this._avcTrack, o = this._audioTrack, a = this._id3Track, x = this._txtTrack, k = c.pid, K = c.pesData, w = o.pid, W = a.pid, z = o.pesData, H = a.pesData, j = null, Y = this.pmtParsed, Z = this._pmtId, q = f.length;
if (this.remainderData && (f = (0, R.appendUint8Array)(this.remainderData, f), q = f.length, this.remainderData = null), q < b && !s)
return this.remainderData = f, {
audioTrack: o,
videoTrack: c,
id3Track: a,
textTrack: x
};
var ee = Math.max(0, i.syncOffset(f));
q -= (q - ee) % b, q < f.byteLength && !s && (this.remainderData = new Uint8Array(f.buffer, q, f.buffer.byteLength - q));
for (var te = 0, ne = ee; ne < q; ne += b)
if (f[ne] === 71) {
var ie = !!(f[ne + 1] & 64), oe = ((f[ne + 1] & 31) << 8) + f[ne + 2], de = (f[ne + 3] & 48) >> 4, re = void 0;
if (de > 1) {
if (re = ne + 5 + f[ne + 4], re === ne + b)
continue;
} else
re = ne + 4;
switch (oe) {
case k:
ie && (K && (v = t(K)) && this.parseAVCPES(c, x, v, !1), K = {
data: [],
size: 0
}), K && (K.data.push(f.subarray(re, ne + b)), K.size += ne + b - re);
break;
case w:
if (ie) {
if (z && (v = t(z)))
switch (o.segmentCodec) {
case "aac":
this.parseAACPES(o, v);
break;
case "mp3":
this.parseMPEGPES(o, v);
break;
}
z = {
data: [],
size: 0
};
}
z && (z.data.push(f.subarray(re, ne + b)), z.size += ne + b - re);
break;
case W:
ie && (H && (v = t(H)) && this.parseID3PES(a, v), H = {
data: [],
size: 0
}), H && (H.data.push(f.subarray(re, ne + b)), H.size += ne + b - re);
break;
case 0:
ie && (re += f[re] + 1), Z = this._pmtId = l(f, re);
break;
case Z: {
ie && (re += f[re] + 1);
var le = n(f, re, this.typeSupported, m);
k = le.avc, k > 0 && (c.pid = k), w = le.audio, w > 0 && (o.pid = w, o.segmentCodec = le.segmentCodec), W = le.id3, W > 0 && (a.pid = W), j !== null && !Y && (T.logger.log("unknown PID '" + j + "' in TS found"), j = null, ne = ee - 188), Y = this.pmtParsed = !0;
break;
}
case 17:
case 8191:
break;
default:
j = oe;
break;
}
} else
te++;
te > 0 && this.observer.emit(F.Events.ERROR, F.Events.ERROR, {
type: D.ErrorTypes.MEDIA_ERROR,
details: D.ErrorDetails.FRAG_PARSING_ERROR,
fatal: !1,
reason: "Found " + te + " TS packet/s that do not start with 0x47"
}), c.pesData = K, o.pesData = z, a.pesData = H;
var me = {
audioTrack: o,
videoTrack: c,
id3Track: a,
textTrack: x
};
return s && this.extractRemainingSamples(me), me;
}, r.flush = function() {
var f = this.remainderData;
this.remainderData = null;
var u;
return f ? u = this.demux(f, -1, !1, !0) : u = {
videoTrack: this._avcTrack,
audioTrack: this._audioTrack,
id3Track: this._id3Track,
textTrack: this._txtTrack
}, this.extractRemainingSamples(u), this.sampleAes ? this.decrypt(u, this.sampleAes) : u;
}, r.extractRemainingSamples = function(f) {
var u = f.audioTrack, m = f.videoTrack, s = f.id3Track, v = f.textTrack, c = m.pesData, o = u.pesData, a = s.pesData, x;
if (c && (x = t(c)) ? (this.parseAVCPES(m, v, x, !0), m.pesData = null) : m.pesData = c, o && (x = t(o))) {
switch (u.segmentCodec) {
case "aac":
this.parseAACPES(u, x);
break;
case "mp3":
this.parseMPEGPES(u, x);
break;
}
u.pesData = null;
} else
o != null && o.size && T.logger.log("last AAC PES packet truncated,might overlap between fragments"), u.pesData = o;
a && (x = t(a)) ? (this.parseID3PES(s, x), s.pesData = null) : s.pesData = a;
}, r.demuxSampleAes = function(f, u, m) {
var s = this.demux(f, m, !0, !this.config.progressive), v = this.sampleAes = new C.default(this.observer, this.config, u);
return this.decrypt(s, v);
}, r.decrypt = function(f, u) {
return new Promise(function(m) {
var s = f.audioTrack, v = f.videoTrack;
s.samples && s.segmentCodec === "aac" ? u.decryptAacSamples(s.samples, 0, function() {
v.samples ? u.decryptAvcSamples(v.samples, 0, 0, function() {
m(f);
}) : m(f);
}) : v.samples && u.decryptAvcSamples(v.samples, 0, 0, function() {
m(f);
});
});
}, r.destroy = function() {
this._duration = 0;
}, r.parseAVCPES = function(f, u, m, s) {
var v = this, c = this.parseAVCNALu(f, m.data), o = this.avcSample, a, x = !1;
m.data = null, o && c.length && !f.audFound && (d(o, f), o = this.avcSample = E(!1, m.pts, m.dts, "")), c.forEach(function(k) {
switch (k.type) {
case 1: {
a = !0, o || (o = v.avcSample = E(!0, m.pts, m.dts, "")), o.frame = !0;
var K = k.data;
if (x && K.length > 4) {
var w = new O.default(K).readSliceType();
(w === 2 || w === 4 || w === 7 || w === 9) && (o.key = !0);
}
break;
}
case 5:
a = !0, o || (o = v.avcSample = E(!0, m.pts, m.dts, "")), o.key = !0, o.frame = !0;
break;
case 6: {
a = !0, (0, R.parseSEIMessageFromNALu)(k.data, 1, m.pts, u.samples);
break;
}
case 7:
if (a = !0, x = !0, !f.sps) {
var W = new O.default(k.data), z = W.readSPS();
f.width = z.width, f.height = z.height, f.pixelRatio = z.pixelRatio, f.sps = [k.data], f.duration = v._duration;
for (var H = k.data.subarray(1, 4), j = "avc1.", Y = 0; Y < 3; Y++) {
var Z = H[Y].toString(16);
Z.length < 2 && (Z = "0" + Z), j += Z;
}
f.codec = j;
}
break;
case 8:
a = !0, f.pps || (f.pps = [k.data]);
break;
case 9:
a = !1, f.audFound = !0, o && d(o, f), o = v.avcSample = E(!1, m.pts, m.dts, "");
break;
case 12:
a = !0;
break;
default:
a = !1, o && (o.debug += "unknown NAL " + k.type + " ");
break;
}
if (o && a) {
var q = o.units;
q.push(k);
}
}), s && o && (d(o, f), this.avcSample = null);
}, r.getLastNalUnit = function(f) {
var u, m = this.avcSample, s;
if ((!m || m.units.length === 0) && (m = f[f.length - 1]), (u = m) !== null && u !== void 0 && u.units) {
var v = m.units;
s = v[v.length - 1];
}
return s;
}, r.parseAVCNALu = function(f, u) {
var m = u.byteLength, s = f.naluState || 0, v = s, c = [], o = 0, a, x, k, K = -1, w = 0;
for (s === -1 && (K = 0, w = u[0] & 31, s = 0, o = 1); o < m; ) {
if (a = u[o++], !s) {
s = a ? 0 : 1;
continue;
}
if (s === 1) {
s = a ? 0 : 2;
continue;
}
if (!a)
s = 3;
else if (a === 1) {
if (K >= 0) {
var W = {
data: u.subarray(K, o - s - 1),
type: w
};
c.push(W);
} else {
var z = this.getLastNalUnit(f.samples);
if (z && (v && o <= 4 - v && z.state && (z.data = z.data.subarray(0, z.data.byteLength - v)), x = o - s - 1, x > 0)) {
var H = new Uint8Array(z.data.byteLength + x);
H.set(z.data, 0), H.set(u.subarray(0, x), z.data.byteLength), z.data = H, z.state = 0;
}
}
o < m ? (k = u[o] & 31, K = o, w = k, s = 0) : s = -1;
} else
s = 0;
}
if (K >= 0 && s >= 0) {
var j = {
data: u.subarray(K, m),
type: w,
state: s
};
c.push(j);
}
if (c.length === 0) {
var Y = this.getLastNalUnit(f.samples);
if (Y) {
var Z = new Uint8Array(Y.data.byteLength + u.byteLength);
Z.set(Y.data, 0), Z.set(u, Y.data.byteLength), Y.data = Z;
}
}
return f.naluState = s, c;
}, r.parseAACPES = function(f, u) {
var m = 0, s = this.aacOverFlow, v = u.data;
if (s) {
this.aacOverFlow = null;
var c = s.missing, o = s.sample.unit.byteLength;
if (c === -1) {
var a = new Uint8Array(o + v.byteLength);
a.set(s.sample.unit, 0), a.set(v, o), v = a;
} else {
var x = o - c;
s.sample.unit.set(v.subarray(0, c), x), f.samples.push(s.sample), m = s.missing;
}
}
var k, K;
for (k = m, K = v.length; k < K - 1 && !P.isHeader(v, k); k++)
;
if (k !== m) {
var w, W;
if (k < K - 1 ? (w = "AAC PES did not start with ADTS header,offset:" + k, W = !1) : (w = "no ADTS header found in AAC PES", W = !0), T.logger.warn("parsing error:" + w), this.observer.emit(F.Events.ERROR, F.Events.ERROR, {
type: D.ErrorTypes.MEDIA_ERROR,
details: D.ErrorDetails.FRAG_PARSING_ERROR,
fatal: W,
reason: w
}), W)
return;
}
P.initTrackConfig(f, this.observer, v, k, this.audioCodec);
var z;
if (u.pts !== void 0)
z = u.pts;
else if (s) {
var H = P.getFrameDuration(f.samplerate);
z = s.sample.pts + H;
} else {
T.logger.warn("[tsdemuxer]: AAC PES unknown PTS");
return;
}
for (var j = 0, Y; k < K; )
if (Y = P.appendFrame(f, v, k, z, j), k += Y.length, Y.missing) {
this.aacOverFlow = Y;
break;
} else
for (j++; k < K - 1 && !P.isHeader(v, k); k++)
;
}, r.parseMPEGPES = function(f, u) {
var m = u.data, s = m.length, v = 0, c = 0, o = u.pts;
if (o === void 0) {
T.logger.warn("[tsdemuxer]: MPEG PES unknown PTS");
return;
}
for (; c < s; )
if (y.isHeader(m, c)) {
var a = y.appendFrame(f, m, c, o, v);
if (a)
c += a.length, v++;
else
break;
} else
c++;
}, r.parseID3PES = function(f, u) {
if (u.pts === void 0) {
T.logger.warn("[tsdemuxer]: ID3 PES unknown PTS");
return;
}
var m = S({}, u, {
type: this._avcTrack ? p.MetadataSchema.emsg : p.MetadataSchema.audioId3,
duration: Number.POSITIVE_INFINITY
});
f.samples.push(m);
}, i;
}();
function E(i, r, e, f) {
return {
key: i,
frame: !1,
pts: r,
dts: e,
units: [],
debug: f,
length: 0
};
}
function l(i, r) {
return (i[r + 10] & 31) << 8 | i[r + 11];
}
function n(i, r, e, f) {
var u = {
audio: -1,
avc: -1,
id3: -1,
segmentCodec: "aac"
}, m = (i[r + 1] & 15) << 8 | i[r + 2], s = r + 3 + m - 4, v = (i[r + 10] & 15) << 8 | i[r + 11];
for (r += 12 + v; r < s; ) {
var c = (i[r + 1] & 31) << 8 | i[r + 2];
switch (i[r]) {
case 207:
if (!f) {
T.logger.log("ADTS AAC with AES-128-CBC frame encryption found in unencrypted stream");
break;
}
case 15:
u.audio === -1 && (u.audio = c);
break;
case 21:
u.id3 === -1 && (u.id3 = c);
break;
case 219:
if (!f) {
T.logger.log("H.264 with AES-128-CBC slice encryption found in unencrypted stream");
break;
}
case 27:
u.avc === -1 && (u.avc = c);
break;
case 3:
case 4:
e.mpeg !== !0 && e.mp3 !== !0 ? T.logger.log("MPEG audio found, not supported in this browser") : u.audio === -1 && (u.audio = c, u.segmentCodec = "mp3");
break;
case 36:
T.logger.warn("Unsupported HEVC stream type found");
break;
}
r += ((i[r + 3] & 15) << 8 | i[r + 4]) + 5;
}
return u;
}
function t(i) {
var r = 0, e, f, u, m, s, v = i.data;
if (!i || i.size === 0)
return null;
for (; v[0].length < 19 && v.length > 1; ) {
var c = new Uint8Array(v[0].length + v[1].length);
c.set(v[0]), c.set(v[1], v[0].length), v[0] = c, v.splice(1, 1);
}
e = v[0];
var o = (e[0] << 16) + (e[1] << 8) + e[2];
if (o === 1) {
if (f = (e[4] << 8) + e[5], f && f > i.size - 6)
return null;
var a = e[7];
a & 192 && (m = (e[9] & 14) * 536870912 + (e[10] & 255) * 4194304 + (e[11] & 254) * 16384 + (e[12] & 255) * 128 + (e[13] & 254) / 2, a & 64 ? (s = (e[14] & 14) * 536870912 + (e[15] & 255) * 4194304 + (e[16] & 254) * 16384 + (e[17] & 255) * 128 + (e[18] & 254) / 2, m - s > 54e5 && (T.logger.warn(Math.round((m - s) / 9e4) + "s delta between PTS and DTS, align them"), m = s)) : s = m), u = e[8];
var x = u + 9;
if (i.size <= x)
return null;
i.size -= x;
for (var k = new Uint8Array(i.size), K = 0, w = v.length; K < w; K++) {
e = v[K];
var W = e.byteLength;
if (x)
if (x > W) {
x -= W;
continue;
} else
e = e.subarray(x), W -= x, x = 0;
k.set(e, r), r += W;
}
return f && (f -= u + 3), {
data: k,
pts: m,
dts: s,
len: f
};
}
return null;
}
function d(i, r) {
if (i.units.length && i.frame) {
if (i.pts === void 0) {
var e = r.samples, f = e.length;
if (f) {
var u = e[f - 1];
i.pts = u.pts, i.dts = u.dts;
} else {
r.dropped++;
return;
}
}
r.samples.push(i);
}
i.debug.length && T.logger.log(i.pts + "/" + i.dts + ":" + i.debug);
}
const h = _;
},
"./src/demux/webworkify-webpack.js": (U, M, g) => {
g.r(M), g.d(M, {
default: () => S
});
var P = function() {
var _ = ENTRY_MODULE, E = {};
function l(t) {
var d = E[t];
if (d !== void 0)
return d.exports;
var h = E[t] = {
exports: {}
};
return _[t].call(h.exports, h, h.exports, l), h.exports;
}
l.m = _, function() {
l.n = function(t) {
var d = t && t.__esModule ? function() {
return t.default;
} : function() {
return t;
};
return l.d(d, {
a: d
}), d;
};
}(), function() {
l.d = function(t, d) {
for (var h in d)
l.o(d, h) && !l.o(t, h) && Object.defineProperty(t, h, {
enumerable: !0,
get: d[h]
});
};
}(), function() {
l.o = function(t, d) {
return Object.prototype.hasOwnProperty.call(t, d);
};
}(), function() {
l.r = function(t) {
typeof Symbol < "u" && Symbol.toStringTag && Object.defineProperty(t, Symbol.toStringTag, {
value: "Module"
}), Object.defineProperty(t, "__esModule", {
value: !0
});
};
}();
var n = l(ENTRY_MODULE);
return n.default || n;
};
P.toString();
var y = "[\\.|\\-|\\+|\\w|/|@]+", O = "\\(\\s*(/\\*.*?\\*/)?\\s*.*?(" + y + ").*?\\)";
function C(b) {
return (b + "").replace(/[.?*+^$[\]\\(){}|-]/g, "\\$&");
}
function F(b) {
return !isNaN(1 * b);
}
function R(b, _, E) {
var l = {};
l[E] = [];
var n = _.toString(), t = n.match(/^function\s?\w*\(\w+,\s*\w+,\s*(\w+)\)/) || n.match(/^\(\w+,\s*\w+,\s*(\w+)\)\s?\=\s?\>/);
if (!t)
return l;
for (var d = t[1], h = new RegExp("(\\\\n|\\W)" + C(d) + O, "g"), i; i = h.exec(n); )
i[3] !== "dll-reference" && l[E].push(i[3]);
for (h = new RegExp("\\(" + C(d) + '\\("(dll-reference\\s(' + y + '))"\\)\\)' + O, "g"); i = h.exec(n); )
b[i[2]] || (l[E].push(i[1]), b[i[2]] = g(i[1]).m), l[i[2]] = l[i[2]] || [], l[i[2]].push(i[4]);
for (var r = Object.keys(l), e = 0; e < r.length; e++)
for (var f = 0; f < l[r[e]].length; f++)
F(l[r[e]][f]) && (l[r[e]][f] = 1 * l[r[e]][f]);
return l;
}
function T(b) {
var _ = Object.keys(b);
return _.reduce(function(E, l) {
return E || b[l].length > 0;
}, !1);
}
function D(b, _) {
for (var E = {
main: [_]
}, l = {
main: []
}, n = {
main: {}
}; T(E); )
for (var t = Object.keys(E), d = 0; d < t.length; d++) {
var h = t[d], i = E[h], r = i.pop();
if (n[h] = n[h] || {}, !(n[h][r] || !b[h][r])) {
n[h][r] = !0, l[h] = l[h] || [], l[h].push(r);
for (var e = R(b, b[h][r], h), f = Object.keys(e), u = 0; u < f.length; u++)
E[f[u]] = E[f[u]] || [], E[f[u]] = E[f[u]].concat(e[f[u]]);
}
}
return l;
}
function p(b, _, E, l) {
var n = b[l].map(function(d) {
return '"' + d + '": ' + _[l][d].toString();
}).join(","), t = P.toString().split("ENTRY_MODULE");
return t[0] + "{" + n + "}" + t[1] + '"' + E + '"' + t[2];
}
function S(b, _) {
_ = _ || {};
var E = {
main: g.m
}, l = _.all ? {
main: Object.keys(E.main)
} : D(E, b), n = "";
Object.keys(l).filter(function(r) {
return r !== "main";
}).forEach(function(r) {
for (var e = 0; l[r][e]; )
e++;
l[r].push(e), E[r][e] = "(function(module, exports, __webpack_require__) { module.exports = __webpack_require__; })", n = n + ("var " + r + " = (" + p(l, E, e, modules) + `)();
`);
}), n = n + ("((" + p(l, E, b, "main") + ")())(self);");
var t = new window.Blob([n], {
type: "text/javascript"
}), d = window.URL || window.webkitURL || window.mozURL || window.msURL, h = d.createObjectURL(t), i = new window.Worker(h);
return i.objectURL = h, i;
}
},
"./src/errors.ts": (U, M, g) => {
g.r(M), g.d(M, {
ErrorDetails: () => y,
ErrorTypes: () => P
});
var P;
(function(O) {
O.NETWORK_ERROR = "networkError", O.MEDIA_ERROR = "mediaError", O.KEY_SYSTEM_ERROR = "keySystemError", O.MUX_ERROR = "muxError", O.OTHER_ERROR = "otherError";
})(P || (P = {}));
var y;
(function(O) {
O.KEY_SYSTEM_NO_KEYS = "keySystemNoKeys", O.KEY_SYSTEM_NO_ACCESS = "keySystemNoAccess", O.KEY_SYSTEM_NO_SESSION = "keySystemNoSession", O.KEY_SYSTEM_LICENSE_REQUEST_FAILED = "keySystemLicenseRequestFailed", O.KEY_SYSTEM_NO_INIT_DATA = "keySystemNoInitData", O.MANIFEST_LOAD_ERROR = "manifestLoadError", O.MANIFEST_LOAD_TIMEOUT = "manifestLoadTimeOut", O.MANIFEST_PARSING_ERROR = "manifestParsingError", O.MANIFEST_INCOMPATIBLE_CODECS_ERROR = "manifestIncompatibleCodecsError", O.LEVEL_EMPTY_ERROR = "levelEmptyError", O.LEVEL_LOAD_ERROR = "levelLoadError", O.LEVEL_LOAD_TIMEOUT = "levelLoadTimeOut", O.LEVEL_SWITCH_ERROR = "levelSwitchError", O.AUDIO_TRACK_LOAD_ERROR = "audioTrackLoadError", O.AUDIO_TRACK_LOAD_TIMEOUT = "audioTrackLoadTimeOut", O.SUBTITLE_LOAD_ERROR = "subtitleTrackLoadError", O.SUBTITLE_TRACK_LOAD_TIMEOUT = "subtitleTrackLoadTimeOut", O.FRAG_LOAD_ERROR = "fragLoadError", O.FRAG_LOAD_TIMEOUT = "fragLoadTimeOut", O.FRAG_DECRYPT_ERROR = "fragDecryptError", O.FRAG_PARSING_ERROR = "fragParsingError", O.REMUX_ALLOC_ERROR = "remuxAllocError", O.KEY_LOAD_ERROR = "keyLoadError", O.KEY_LOAD_TIMEOUT = "keyLoadTimeOut", O.BUFFER_ADD_CODEC_ERROR = "bufferAddCodecError", O.BUFFER_INCOMPATIBLE_CODECS_ERROR = "bufferIncompatibleCodecsError", O.BUFFER_APPEND_ERROR = "bufferAppendError", O.BUFFER_APPENDING_ERROR = "bufferAppendingError", O.BUFFER_STALLED_ERROR = "bufferStalledError", O.BUFFER_FULL_ERROR = "bufferFullError", O.BUFFER_SEEK_OVER_HOLE = "bufferSeekOverHole", O.BUFFER_NUDGE_ON_STALL = "bufferNudgeOnStall", O.INTERNAL_EXCEPTION = "internalException", O.INTERNAL_ABORTED = "aborted", O.UNKNOWN = "unknown";
})(y || (y = {}));
},
"./src/events.ts": (U, M, g) => {
g.r(M), g.d(M, {
Events: () => P
});
var P;
(function(y) {
y.MEDIA_ATTACHING = "hlsMediaAttaching", y.MEDIA_ATTACHED = "hlsMediaAttached", y.MEDIA_DETACHING = "hlsMediaDetaching", y.MEDIA_DETACHED = "hlsMediaDetached", y.BUFFER_RESET = "hlsBufferReset", y.BUFFER_CODECS = "hlsBufferCodecs", y.BUFFER_CREATED = "hlsBufferCreated", y.BUFFER_APPENDING = "hlsBufferAppending", y.BUFFER_APPENDED = "hlsBufferAppended", y.BUFFER_EOS = "hlsBufferEos", y.BUFFER_FLUSHING = "hlsBufferFlushing", y.BUFFER_FLUSHED = "hlsBufferFlushed", y.MANIFEST_LOADING = "hlsManifestLoading", y.MANIFEST_LOADED = "hlsManifestLoaded", y.MANIFEST_PARSED = "hlsManifestParsed", y.LEVEL_SWITCHING = "hlsLevelSwitching", y.LEVEL_SWITCHED = "hlsLevelSwitched", y.LEVEL_LOADING = "hlsLevelLoading", y.LEVEL_LOADED = "hlsLevelLoaded", y.LEVEL_UPDATED = "hlsLevelUpdated", y.LEVEL_PTS_UPDATED = "hlsLevelPtsUpdated", y.LEVELS_UPDATED = "hlsLevelsUpdated", y.AUDIO_TRACKS_UPDATED = "hlsAudioTracksUpdated", y.AUDIO_TRACK_SWITCHING = "hlsAudioTrackSwitching", y.AUDIO_TRACK_SWITCHED = "hlsAudioTrackSwitched", y.AUDIO_TRACK_LOADING = "hlsAudioTrackLoading", y.AUDIO_TRACK_LOADED = "hlsAudioTrackLoaded", y.SUBTITLE_TRACKS_UPDATED = "hlsSubtitleTracksUpdated", y.SUBTITLE_TRACKS_CLEARED = "hlsSubtitleTracksCleared", y.SUBTITLE_TRACK_SWITCH = "hlsSubtitleTrackSwitch", y.SUBTITLE_TRACK_LOADING = "hlsSubtitleTrackLoading", y.SUBTITLE_TRACK_LOADED = "hlsSubtitleTrackLoaded", y.SUBTITLE_FRAG_PROCESSED = "hlsSubtitleFragProcessed", y.CUES_PARSED = "hlsCuesParsed", y.NON_NATIVE_TEXT_TRACKS_FOUND = "hlsNonNativeTextTracksFound", y.INIT_PTS_FOUND = "hlsInitPtsFound", y.FRAG_LOADING = "hlsFragLoading", y.FRAG_LOAD_EMERGENCY_ABORTED = "hlsFragLoadEmergencyAborted", y.FRAG_LOADED = "hlsFragLoaded", y.FRAG_DECRYPTED = "hlsFragDecrypted", y.FRAG_PARSING_INIT_SEGMENT = "hlsFragParsingInitSegment", y.FRAG_PARSING_USERDATA = "hlsFragParsingUserdata", y.FRAG_PARSING_METADATA = "hlsFragParsingMetadata", y.FRAG_PARSED = "hlsFragParsed", y.FRAG_BUFFERED = "hlsFragBuffered", y.FRAG_CHANGED = "hlsFragChanged", y.FPS_DROP = "hlsFpsDrop", y.FPS_DROP_LEVEL_CAPPING = "hlsFpsDropLevelCapping", y.ERROR = "hlsError", y.DESTROYING = "hlsDestroying", y.KEY_LOADING = "hlsKeyLoading", y.KEY_LOADED = "hlsKeyLoaded", y.LIVE_BACK_BUFFER_REACHED = "hlsLiveBackBufferReached", y.BACK_BUFFER_REACHED = "hlsBackBufferReached";
})(P || (P = {}));
},
"./src/hls.ts": (U, M, g) => {
g.r(M), g.d(M, {
default: () => d
});
var P = g("./node_modules/url-toolkit/src/url-toolkit.js"), y = g("./src/loader/playlist-loader.ts"), O = g("./src/loader/key-loader.ts"), C = g("./src/controller/id3-track-controller.ts"), F = g("./src/controller/latency-controller.ts"), R = g("./src/controller/level-controller.ts"), T = g("./src/controller/fragment-tracker.ts"), D = g("./src/controller/stream-controller.ts"), p = g("./src/is-supported.ts"), S = g("./src/utils/logger.ts"), b = g("./src/config.ts"), _ = g("./node_modules/eventemitter3/index.js"), E = g("./src/events.ts"), l = g("./src/errors.ts");
function n(h, i) {
for (var r = 0; r < i.length; r++) {
var e = i[r];
e.enumerable = e.enumerable || !1, e.configurable = !0, "value" in e && (e.writable = !0), Object.defineProperty(h, e.key, e);
}
}
function t(h, i, r) {
return i && n(h.prototype, i), r && n(h, r), Object.defineProperty(h, "prototype", { writable: !1 }), h;
}
var d = /* @__PURE__ */ function() {
h.isSupported = function() {
return (0, p.isSupported)();
};
function h(r) {
r === void 0 && (r = {}), this.config = void 0, this.userConfig = void 0, this.coreComponents = void 0, this.networkControllers = void 0, this._emitter = new _.EventEmitter(), this._autoLevelCapping = void 0, this.abrController = void 0, this.bufferController = void 0, this.capLevelController = void 0, this.latencyController = void 0, this.levelController = void 0, this.streamController = void 0, this.audioTrackController = void 0, this.subtitleTrackController = void 0, this.emeController = void 0, this.cmcdController = void 0, this._media = null, this.url = null;
var e = this.config = (0, b.mergeConfig)(h.DefaultConfig, r);
this.userConfig = r, (0, S.enableLogs)(e.debug, "Hls instance"), this._autoLevelCapping = -1, e.progressive && (0, b.enableStreamingMode)(e);
var f = e.abrController, u = e.bufferController, m = e.capLevelController, s = e.fpsController, v = this.abrController = new f(this), c = this.bufferController = new u(this), o = this.capLevelController = new m(this), a = new s(this), x = new y.default(this), k = new O.default(this), K = new C.default(this), w = this.levelController = new R.default(this), W = new T.FragmentTracker(this), z = this.streamController = new D.default(this, W);
o.setStreamController(z), a.setStreamController(z);
var H = [x, k, w, z];
this.networkControllers = H;
var j = [v, c, o, a, K, W];
this.audioTrackController = this.createController(e.audioTrackController, null, H), this.createController(e.audioStreamController, W, H), this.subtitleTrackController = this.createController(e.subtitleTrackController, null, H), this.createController(e.subtitleStreamController, W, H), this.createController(e.timelineController, null, j), this.emeController = this.createController(e.emeController, null, j), this.cmcdController = this.createController(e.cmcdController, null, j), this.latencyController = this.createController(F.default, null, j), this.coreComponents = j;
}
var i = h.prototype;
return i.createController = function(e, f, u) {
if (e) {
var m = f ? new e(this, f) : new e(this);
return u && u.push(m), m;
}
return null;
}, i.on = function(e, f, u) {
u === void 0 && (u = this), this._emitter.on(e, f, u);
}, i.once = function(e, f, u) {
u === void 0 && (u = this), this._emitter.once(e, f, u);
}, i.removeAllListeners = function(e) {
this._emitter.removeAllListeners(e);
}, i.off = function(e, f, u, m) {
u === void 0 && (u = this), this._emitter.off(e, f, u, m);
}, i.listeners = function(e) {
return this._emitter.listeners(e);
}, i.emit = function(e, f, u) {
return this._emitter.emit(e, f, u);
}, i.trigger = function(e, f) {
if (this.config.debug)
return this.emit(e, e, f);
try {
return this.emit(e, e, f);
} catch (u) {
S.logger.error("An internal error happened while handling event " + e + '. Error message: "' + u.message + '". Here is a stacktrace:', u), this.trigger(E.Events.ERROR, {
type: l.ErrorTypes.OTHER_ERROR,
details: l.ErrorDetails.INTERNAL_EXCEPTION,
fatal: !1,
event: e,
error: u
});
}
return !1;
}, i.listenerCount = function(e) {
return this._emitter.listenerCount(e);
}, i.destroy = function() {
S.logger.log("destroy"), this.trigger(E.Events.DESTROYING, void 0), this.detachMedia(), this.removeAllListeners(), this._autoLevelCapping = -1, this.url = null, this.networkControllers.forEach(function(e) {
return e.destroy();
}), this.networkControllers.length = 0, this.coreComponents.forEach(function(e) {
return e.destroy();
}), this.coreComponents.length = 0;
}, i.attachMedia = function(e) {
S.logger.log("attachMedia"), this._media = e, this.trigger(E.Events.MEDIA_ATTACHING, {
media: e
});
}, i.detachMedia = function() {
S.logger.log("detachMedia"), this.trigger(E.Events.MEDIA_DETACHING, void 0), this._media = null;
}, i.loadSource = function(e) {
this.stopLoad();
var f = this.media, u = this.url, m = this.url = P.buildAbsoluteURL(self.location.href, e, {
alwaysNormalize: !0
});
S.logger.log("loadSource:" + m), f && u && u !== m && this.bufferController.hasSourceTypes() && (this.detachMedia(), this.attachMedia(f)), this.trigger(E.Events.MANIFEST_LOADING, {
url: e
});
}, i.startLoad = function(e) {
e === void 0 && (e = -1), S.logger.log("startLoad(" + e + ")"), this.networkControllers.forEach(function(f) {
f.startLoad(e);
});
}, i.stopLoad = function() {
S.logger.log("stopLoad"), this.networkControllers.forEach(function(e) {
e.stopLoad();
});
}, i.swapAudioCodec = function() {
S.logger.log("swapAudioCodec"), this.streamController.swapAudioCodec();
}, i.recoverMediaError = function() {
S.logger.log("recoverMediaError");
var e = this._media;
this.detachMedia(), e && this.attachMedia(e);
}, i.removeLevel = function(e, f) {
f === void 0 && (f = 0), this.levelController.removeLevel(e, f);
}, t(h, [{
key: "levels",
get: function() {
var e = this.levelController.levels;
return e || [];
}
}, {
key: "currentLevel",
get: function() {
return this.streamController.currentLevel;
},
set: function(e) {
S.logger.log("set currentLevel:" + e), this.loadLevel = e, this.abrController.clearTimer(), this.streamController.immediateLevelSwitch();
}
}, {
key: "nextLevel",
get: function() {
return this.streamController.nextLevel;
},
set: function(e) {
S.logger.log("set nextLevel:" + e), this.levelController.manualLevel = e, this.streamController.nextLevelSwitch();
}
}, {
key: "loadLevel",
get: function() {
return this.levelController.level;
},
set: function(e) {
S.logger.log("set loadLevel:" + e), this.levelController.manualLevel = e;
}
}, {
key: "nextLoadLevel",
get: function() {
return this.levelController.nextLoadLevel;
},
set: function(e) {
this.levelController.nextLoadLevel = e;
}
}, {
key: "firstLevel",
get: function() {
return Math.max(this.levelController.firstLevel, this.minAutoLevel);
},
set: function(e) {
S.logger.log("set firstLevel:" + e), this.levelController.firstLevel = e;
}
}, {
key: "startLevel",
get: function() {
return this.levelController.startLevel;
},
set: function(e) {
S.logger.log("set startLevel:" + e), e !== -1 && (e = Math.max(e, this.minAutoLevel)), this.levelController.startLevel = e;
}
}, {
key: "capLevelToPlayerSize",
get: function() {
return this.config.capLevelToPlayerSize;
},
set: function(e) {
var f = !!e;
f !== this.config.capLevelToPlayerSize && (f ? this.capLevelController.startCapping() : (this.capLevelController.stopCapping(), this.autoLevelCapping = -1, this.streamController.nextLevelSwitch()), this.config.capLevelToPlayerSize = f);
}
}, {
key: "autoLevelCapping",
get: function() {
return this._autoLevelCapping;
},
set: function(e) {
this._autoLevelCapping !== e && (S.logger.log("set autoLevelCapping:" + e), this._autoLevelCapping = e);
}
}, {
key: "bandwidthEstimate",
get: function() {
var e = this.abrController.bwEstimator;
return e ? e.getEstimate() : NaN;
}
}, {
key: "autoLevelEnabled",
get: function() {
return this.levelController.manualLevel === -1;
}
}, {
key: "manualLevel",
get: function() {
return this.levelController.manualLevel;
}
}, {
key: "minAutoLevel",
get: function() {
var e = this.levels, f = this.config.minAutoBitrate;
if (!e)
return 0;
for (var u = e.length, m = 0; m < u; m++)
if (e[m].maxBitrate >= f)
return m;
return 0;
}
}, {
key: "maxAutoLevel",
get: function() {
var e = this.levels, f = this.autoLevelCapping, u;
return f === -1 && e && e.length ? u = e.length - 1 : u = f, u;
}
}, {
key: "nextAutoLevel",
get: function() {
return Math.min(Math.max(this.abrController.nextAutoLevel, this.minAutoLevel), this.maxAutoLevel);
},
set: function(e) {
this.abrController.nextAutoLevel = Math.max(this.minAutoLevel, e);
}
}, {
key: "playingDate",
get: function() {
return this.streamController.currentProgramDateTime;
}
}, {
key: "mainForwardBufferInfo",
get: function() {
return this.streamController.getMainFwdBufferInfo();
}
}, {
key: "audioTracks",
get: function() {
var e = this.audioTrackController;
return e ? e.audioTracks : [];
}
}, {
key: "audioTrack",
get: function() {
var e = this.audioTrackController;
return e ? e.audioTrack : -1;
},
set: function(e) {
var f = this.audioTrackController;
f && (f.audioTrack = e);
}
}, {
key: "subtitleTracks",
get: function() {
var e = this.subtitleTrackController;
return e ? e.subtitleTracks : [];
}
}, {
key: "subtitleTrack",
get: function() {
var e = this.subtitleTrackController;
return e ? e.subtitleTrack : -1;
},
set: function(e) {
var f = this.subtitleTrackController;
f && (f.subtitleTrack = e);
}
}, {
key: "media",
get: function() {
return this._media;
}
}, {
key: "subtitleDisplay",
get: function() {
var e = this.subtitleTrackController;
return e ? e.subtitleDisplay : !1;
},
set: function(e) {
var f = this.subtitleTrackController;
f && (f.subtitleDisplay = e);
}
}, {
key: "lowLatencyMode",
get: function() {
return this.config.lowLatencyMode;
},
set: function(e) {
this.config.lowLatencyMode = e;
}
}, {
key: "liveSyncPosition",
get: function() {
return this.latencyController.liveSyncPosition;
}
}, {
key: "latency",
get: function() {
return this.latencyController.latency;
}
}, {
key: "maxLatency",
get: function() {
return this.latencyController.maxLatency;
}
}, {
key: "targetLatency",
get: function() {
return this.latencyController.targetLatency;
}
}, {
key: "drift",
get: function() {
return this.latencyController.drift;
}
}, {
key: "forceStartLoad",
get: function() {
return this.streamController.forceStartLoad;
}
}], [{
key: "version",
get: function() {
return "1.2.5";
}
}, {
key: "Events",
get: function() {
return E.Events;
}
}, {
key: "ErrorTypes",
get: function() {
return l.ErrorTypes;
}
}, {
key: "ErrorDetails",
get: function() {
return l.ErrorDetails;
}
}, {
key: "DefaultConfig",
get: function() {
return h.defaultConfig ? h.defaultConfig : b.hlsDefaultConfig;
},
set: function(e) {
h.defaultConfig = e;
}
}]), h;
}();
d.defaultConfig = void 0;
},
"./src/is-supported.ts": (U, M, g) => {
g.r(M), g.d(M, {
changeTypeSupported: () => C,
isSupported: () => O
});
var P = g("./src/utils/mediasource-helper.ts");
function y() {
return self.SourceBuffer || self.WebKitSourceBuffer;
}
function O() {
var F = (0, P.getMediaSource)();
if (!F)
return !1;
var R = y(), T = F && typeof F.isTypeSupported == "function" && F.isTypeSupported('video/mp4; codecs="avc1.42E01E,mp4a.40.2"'), D = !R || R.prototype && typeof R.prototype.appendBuffer == "function" && typeof R.prototype.remove == "function";
return !!T && !!D;
}
function C() {
var F, R = y();
return typeof (R == null || (F = R.prototype) === null || F === void 0 ? void 0 : F.changeType) == "function";
}
},
"./src/loader/date-range.ts": (U, M, g) => {
g.r(M), g.d(M, {
DateRange: () => D,
DateRangeAttribute: () => T
});
var P = g("./src/polyfills/number.ts"), y = g("./src/utils/attr-list.ts"), O = g("./src/utils/logger.ts");
function C() {
return C = Object.assign ? Object.assign.bind() : function(p) {
for (var S = 1; S < arguments.length; S++) {
var b = arguments[S];
for (var _ in b)
Object.prototype.hasOwnProperty.call(b, _) && (p[_] = b[_]);
}
return p;
}, C.apply(this, arguments);
}
function F(p, S) {
for (var b = 0; b < S.length; b++) {
var _ = S[b];
_.enumerable = _.enumerable || !1, _.configurable = !0, "value" in _ && (_.writable = !0), Object.defineProperty(p, _.key, _);
}
}
function R(p, S, b) {
return S && F(p.prototype, S), b && F(p, b), Object.defineProperty(p, "prototype", { writable: !1 }), p;
}
var T;
(function(p) {
p.ID = "ID", p.CLASS = "CLASS", p.START_DATE = "START-DATE", p.DURATION = "DURATION", p.END_DATE = "END-DATE", p.END_ON_NEXT = "END-ON-NEXT", p.PLANNED_DURATION = "PLANNED-DURATION", p.SCTE35_OUT = "SCTE35-OUT", p.SCTE35_IN = "SCTE35-IN";
})(T || (T = {}));
var D = /* @__PURE__ */ function() {
function p(S, b) {
if (this.attr = void 0, this._startDate = void 0, this._endDate = void 0, this._badValueForSameId = void 0, b) {
var _ = b.attr;
for (var E in _)
if (Object.prototype.hasOwnProperty.call(S, E) && S[E] !== _[E]) {
O.logger.warn('DATERANGE tag attribute: "' + E + '" does not match for tags with ID: "' + S.ID + '"'), this._badValueForSameId = E;
break;
}
S = C(new y.AttrList({}), _, S);
}
if (this.attr = S, this._startDate = new Date(S[T.START_DATE]), T.END_DATE in this.attr) {
var l = new Date(this.attr[T.END_DATE]);
(0, P.isFiniteNumber)(l.getTime()) && (this._endDate = l);
}
}
return R(p, [{
key: "id",
get: function() {
return this.attr.ID;
}
}, {
key: "class",
get: function() {
return this.attr.CLASS;
}
}, {
key: "startDate",
get: function() {
return this._startDate;
}
}, {
key: "endDate",
get: function() {
if (this._endDate)
return this._endDate;
var b = this.duration;
return b !== null ? new Date(this._startDate.getTime() + b * 1e3) : null;
}
}, {
key: "duration",
get: function() {
if (T.DURATION in this.attr) {
var b = this.attr.decimalFloatingPoint(T.DURATION);
if ((0, P.isFiniteNumber)(b))
return b;
} else if (this._endDate)
return (this._endDate.getTime() - this._startDate.getTime()) / 1e3;
return null;
}
}, {
key: "plannedDuration",
get: function() {
return T.PLANNED_DURATION in this.attr ? this.attr.decimalFloatingPoint(T.PLANNED_DURATION) : null;
}
}, {
key: "endOnNext",
get: function() {
return this.attr.bool(T.END_ON_NEXT);
}
}, {
key: "isValid",
get: function() {
return !!this.id && !this._badValueForSameId && (0, P.isFiniteNumber)(this.startDate.getTime()) && (this.duration === null || this.duration >= 0) && (!this.endOnNext || !!this.class);
}
}]), p;
}();
},
"./src/loader/fragment-loader.ts": (U, M, g) => {
g.r(M), g.d(M, {
LoadError: () => E,
default: () => b
});
var P = g("./src/polyfills/number.ts"), y = g("./src/errors.ts");
function O(l, n) {
l.prototype = Object.create(n.prototype), l.prototype.constructor = l, D(l, n);
}
function C(l) {
var n = typeof Map == "function" ? /* @__PURE__ */ new Map() : void 0;
return C = function(d) {
if (d === null || !T(d))
return d;
if (typeof d != "function")
throw new TypeError("Super expression must either be null or a function");
if (typeof n < "u") {
if (n.has(d))
return n.get(d);
n.set(d, h);
}
function h() {
return F(d, arguments, p(this).constructor);
}
return h.prototype = Object.create(d.prototype, { constructor: { value: h, enumerable: !1, writable: !0, configurable: !0 } }), D(h, d);
}, C(l);
}
function F(l, n, t) {
return R() ? F = Reflect.construct.bind() : F = function(h, i, r) {
var e = [null];
e.push.apply(e, i);
var f = Function.bind.apply(h, e), u = new f();
return r && D(u, r.prototype), u;
}, F.apply(null, arguments);
}
function R() {
if (typeof Reflect > "u" || !Reflect.construct || Reflect.construct.sham)
return !1;
if (typeof Proxy == "function")
return !0;
try {
return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {
})), !0;
} catch {
return !1;
}
}
function T(l) {
return Function.toString.call(l).indexOf("[native code]") !== -1;
}
function D(l, n) {
return D = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(d, h) {
return d.__proto__ = h, d;
}, D(l, n);
}
function p(l) {
return p = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function(t) {
return t.__proto__ || Object.getPrototypeOf(t);
}, p(l);
}
var S = Math.pow(2, 17), b = /* @__PURE__ */ function() {
function l(t) {
this.config = void 0, this.loader = null, this.partLoadTimeout = -1, this.config = t;
}
var n = l.prototype;
return n.destroy = function() {
this.loader && (this.loader.destroy(), this.loader = null);
}, n.abort = function() {
this.loader && this.loader.abort();
}, n.load = function(d, h) {
var i = this, r = d.url;
if (!r)
return Promise.reject(new E({
type: y.ErrorTypes.NETWORK_ERROR,
details: y.ErrorDetails.FRAG_LOAD_ERROR,
fatal: !1,
frag: d,
networkDetails: null
}, "Fragment does not have a " + (r ? "part list" : "url")));
this.abort();
var e = this.config, f = e.fLoader, u = e.loader;
return new Promise(function(m, s) {
i.loader && i.loader.destroy();
var v = i.loader = d.loader = f ? new f(e) : new u(e), c = _(d), o = {
timeout: e.fragLoadingTimeOut,
maxRetry: 0,
retryDelay: 0,
maxRetryDelay: e.fragLoadingMaxRetryTimeout,
highWaterMark: d.sn === "initSegment" ? 1 / 0 : S
};
d.stats = v.stats, v.load(c, o, {
onSuccess: function(x, k, K, w) {
i.resetLoader(d, v), m({
frag: d,
part: null,
payload: x.data,
networkDetails: w
});
},
onError: function(x, k, K) {
i.resetLoader(d, v), s(new E({
type: y.ErrorTypes.NETWORK_ERROR,
details: y.ErrorDetails.FRAG_LOAD_ERROR,
fatal: !1,
frag: d,
response: x,
networkDetails: K
}));
},
onAbort: function(x, k, K) {
i.resetLoader(d, v), s(new E({
type: y.ErrorTypes.NETWORK_ERROR,
details: y.ErrorDetails.INTERNAL_ABORTED,
fatal: !1,
frag: d,
networkDetails: K
}));
},
onTimeout: function(x, k, K) {
i.resetLoader(d, v), s(new E({
type: y.ErrorTypes.NETWORK_ERROR,
details: y.ErrorDetails.FRAG_LOAD_TIMEOUT,
fatal: !1,
frag: d,
networkDetails: K
}));
},
onProgress: function(x, k, K, w) {
h && h({
frag: d,
part: null,
payload: K,
networkDetails: w
});
}
});
});
}, n.loadPart = function(d, h, i) {
var r = this;
this.abort();
var e = this.config, f = e.fLoader, u = e.loader;
return new Promise(function(m, s) {
r.loader && r.loader.destroy();
var v = r.loader = d.loader = f ? new f(e) : new u(e), c = _(d, h), o = {
timeout: e.fragLoadingTimeOut,
maxRetry: 0,
retryDelay: 0,
maxRetryDelay: e.fragLoadingMaxRetryTimeout,
highWaterMark: S
};
h.stats = v.stats, v.load(c, o, {
onSuccess: function(x, k, K, w) {
r.resetLoader(d, v), r.updateStatsFromPart(d, h);
var W = {
frag: d,
part: h,
payload: x.data,
networkDetails: w
};
i(W), m(W);
},
onError: function(x, k, K) {
r.resetLoader(d, v), s(new E({
type: y.ErrorTypes.NETWORK_ERROR,
details: y.ErrorDetails.FRAG_LOAD_ERROR,
fatal: !1,
frag: d,
part: h,
response: x,
networkDetails: K
}));
},
onAbort: function(x, k, K) {
d.stats.aborted = h.stats.aborted, r.resetLoader(d, v), s(new E({
type: y.ErrorTypes.NETWORK_ERROR,
details: y.ErrorDetails.INTERNAL_ABORTED,
fatal: !1,
frag: d,
part: h,
networkDetails: K
}));
},
onTimeout: function(x, k, K) {
r.resetLoader(d, v), s(new E({
type: y.ErrorTypes.NETWORK_ERROR,
details: y.ErrorDetails.FRAG_LOAD_TIMEOUT,
fatal: !1,
frag: d,
part: h,
networkDetails: K
}));
}
});
});
}, n.updateStatsFromPart = function(d, h) {
var i = d.stats, r = h.stats, e = r.total;
if (i.loaded += r.loaded, e) {
var f = Math.round(d.duration / h.duration), u = Math.min(Math.round(i.loaded / e), f), m = f - u, s = m * Math.round(i.loaded / u);
i.total = i.loaded + s;
} else
i.total = Math.max(i.loaded, i.total);
var v = i.loading, c = r.loading;
v.start ? v.first += c.first - c.start : (v.start = c.start, v.first = c.first), v.end = c.end;
}, n.resetLoader = function(d, h) {
d.loader = null, this.loader === h && (self.clearTimeout(this.partLoadTimeout), this.loader = null), h.destroy();
}, l;
}();
function _(l, n) {
n === void 0 && (n = null);
var t = n || l, d = {
frag: l,
part: n,
responseType: "arraybuffer",
url: t.url,
headers: {},
rangeStart: 0,
rangeEnd: 0
}, h = t.byteRangeStartOffset, i = t.byteRangeEndOffset;
return (0, P.isFiniteNumber)(h) && (0, P.isFiniteNumber)(i) && (d.rangeStart = h, d.rangeEnd = i), d;
}
var E = /* @__PURE__ */ function(l) {
O(n, l);
function n(t) {
for (var d, h = arguments.length, i = new Array(h > 1 ? h - 1 : 0), r = 1; r < h; r++)
i[r - 1] = arguments[r];
return d = l.call.apply(l, [this].concat(i)) || this, d.data = void 0, d.data = t, d;
}
return n;
}(/* @__PURE__ */ C(Error));
},
"./src/loader/fragment.ts": (U, M, g) => {
g.r(M), g.d(M, {
BaseSegment: () => b,
ElementaryStreamTypes: () => S,
Fragment: () => _,
Part: () => E
});
var P = g("./src/polyfills/number.ts"), y = g("./node_modules/url-toolkit/src/url-toolkit.js"), O = g("./src/utils/logger.ts"), C = g("./src/loader/level-key.ts"), F = g("./src/loader/load-stats.ts");
function R(l, n) {
l.prototype = Object.create(n.prototype), l.prototype.constructor = l, T(l, n);
}
function T(l, n) {
return T = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(d, h) {
return d.__proto__ = h, d;
}, T(l, n);
}
function D(l, n) {
for (var t = 0; t < n.length; t++) {
var d = n[t];
d.enumerable = d.enumerable || !1, d.configurable = !0, "value" in d && (d.writable = !0), Object.defineProperty(l, d.key, d);
}
}
function p(l, n, t) {
return n && D(l.prototype, n), t && D(l, t), Object.defineProperty(l, "prototype", { writable: !1 }), l;
}
var S;
(function(l) {
l.AUDIO = "audio", l.VIDEO = "video", l.AUDIOVIDEO = "audiovideo";
})(S || (S = {}));
var b = /* @__PURE__ */ function() {
function l(t) {
var d;
this._byteRange = null, this._url = null, this.baseurl = void 0, this.relurl = void 0, this.elementaryStreams = (d = {}, d[S.AUDIO] = null, d[S.VIDEO] = null, d[S.AUDIOVIDEO] = null, d), this.baseurl = t;
}
var n = l.prototype;
return n.setByteRange = function(d, h) {
var i = d.split("@", 2), r = [];
i.length === 1 ? r[0] = h ? h.byteRangeEndOffset : 0 : r[0] = parseInt(i[1]), r[1] = parseInt(i[0]) + r[0], this._byteRange = r;
}, p(l, [{
key: "byteRange",
get: function() {
return this._byteRange ? this._byteRange : [];
}
}, {
key: "byteRangeStartOffset",
get: function() {
return this.byteRange[0];
}
}, {
key: "byteRangeEndOffset",
get: function() {
return this.byteRange[1];
}
}, {
key: "url",
get: function() {
return !this._url && this.baseurl && this.relurl && (this._url = (0, y.buildAbsoluteURL)(this.baseurl, this.relurl, {
alwaysNormalize: !0
})), this._url || "";
},
set: function(d) {
this._url = d;
}
}]), l;
}(), _ = /* @__PURE__ */ function(l) {
R(n, l);
function n(d, h) {
var i;
return i = l.call(this, h) || this, i._decryptdata = null, i.rawProgramDateTime = null, i.programDateTime = null, i.tagList = [], i.duration = 0, i.sn = 0, i.levelkey = void 0, i.type = void 0, i.loader = null, i.level = -1, i.cc = 0, i.startPTS = void 0, i.endPTS = void 0, i.appendedPTS = void 0, i.startDTS = void 0, i.endDTS = void 0, i.start = 0, i.deltaPTS = void 0, i.maxStartPTS = void 0, i.minEndPTS = void 0, i.stats = new F.LoadStats(), i.urlId = 0, i.data = void 0, i.bitrateTest = !1, i.title = null, i.initSegment = null, i.type = d, i;
}
var t = n.prototype;
return t.createInitializationVector = function(h) {
for (var i = new Uint8Array(16), r = 12; r < 16; r++)
i[r] = h >> 8 * (15 - r) & 255;
return i;
}, t.setDecryptDataFromLevelKey = function(h, i) {
var r = h;
return (h == null ? void 0 : h.method) === "AES-128" && h.uri && !h.iv && (r = C.LevelKey.fromURI(h.uri), r.method = h.method, r.iv = this.createInitializationVector(i), r.keyFormat = "identity"), r;
}, t.setElementaryStreamInfo = function(h, i, r, e, f, u) {
u === void 0 && (u = !1);
var m = this.elementaryStreams, s = m[h];
if (!s) {
m[h] = {
startPTS: i,
endPTS: r,
startDTS: e,
endDTS: f,
partial: u
};
return;
}
s.startPTS = Math.min(s.startPTS, i), s.endPTS = Math.max(s.endPTS, r), s.startDTS = Math.min(s.startDTS, e), s.endDTS = Math.max(s.endDTS, f);
}, t.clearElementaryStreamInfo = function() {
var h = this.elementaryStreams;
h[S.AUDIO] = null, h[S.VIDEO] = null, h[S.AUDIOVIDEO] = null;
}, p(n, [{
key: "decryptdata",
get: function() {
if (!this.levelkey && !this._decryptdata)
return null;
if (!this._decryptdata && this.levelkey) {
var h = this.sn;
typeof h != "number" && (this.levelkey && this.levelkey.method === "AES-128" && !this.levelkey.iv && O.logger.warn('missing IV for initialization segment with method="' + this.levelkey.method + '" - compliance issue'), h = 0), this._decryptdata = this.setDecryptDataFromLevelKey(this.levelkey, h);
}
return this._decryptdata;
}
}, {
key: "end",
get: function() {
return this.start + this.duration;
}
}, {
key: "endProgramDateTime",
get: function() {
if (this.programDateTime === null || !(0, P.isFiniteNumber)(this.programDateTime))
return null;
var h = (0, P.isFiniteNumber)(this.duration) ? this.duration : 0;
return this.programDateTime + h * 1e3;
}
}, {
key: "encrypted",
get: function() {
var h;
return !!((h = this.decryptdata) !== null && h !== void 0 && h.keyFormat && this.decryptdata.uri);
}
}]), n;
}(b), E = /* @__PURE__ */ function(l) {
R(n, l);
function n(t, d, h, i, r) {
var e;
e = l.call(this, h) || this, e.fragOffset = 0, e.duration = 0, e.gap = !1, e.independent = !1, e.relurl = void 0, e.fragment = void 0, e.index = void 0, e.stats = new F.LoadStats(), e.duration = t.decimalFloatingPoint("DURATION"), e.gap = t.bool("GAP"), e.independent = t.bool("INDEPENDENT"), e.relurl = t.enumeratedString("URI"), e.fragment = d, e.index = i;
var f = t.enumeratedString("BYTERANGE");
return f && e.setByteRange(f, r), r && (e.fragOffset = r.fragOffset + r.duration), e;
}
return p(n, [{
key: "start",
get: function() {
return this.fragment.start + this.fragOffset;
}
}, {
key: "end",
get: function() {
return this.start + this.duration;
}
}, {
key: "loaded",
get: function() {
var d = this.elementaryStreams;
return !!(d.audio || d.video || d.audiovideo);
}
}]), n;
}(b);
},
"./src/loader/key-loader.ts": (U, M, g) => {
g.r(M), g.d(M, {
default: () => C
});
var P = g("./src/events.ts"), y = g("./src/errors.ts"), O = g("./src/utils/logger.ts"), C = /* @__PURE__ */ function() {
function F(T) {
this.hls = void 0, this.loaders = {}, this.decryptkey = null, this.decrypturl = null, this.hls = T, this.registerListeners();
}
var R = F.prototype;
return R.startLoad = function(D) {
}, R.stopLoad = function() {
this.destroyInternalLoaders();
}, R.registerListeners = function() {
this.hls.on(P.Events.KEY_LOADING, this.onKeyLoading, this);
}, R.unregisterListeners = function() {
this.hls.off(P.Events.KEY_LOADING, this.onKeyLoading);
}, R.destroyInternalLoaders = function() {
for (var D in this.loaders) {
var p = this.loaders[D];
p && p.destroy();
}
this.loaders = {};
}, R.destroy = function() {
this.unregisterListeners(), this.destroyInternalLoaders();
}, R.onKeyLoading = function(D, p) {
var S = p.frag, b = S.type, _ = this.loaders[b];
if (!S.decryptdata) {
O.logger.warn("Missing decryption data on fragment in onKeyLoading");
return;
}
var E = S.decryptdata.uri;
if (E !== this.decrypturl || this.decryptkey === null) {
var l = this.hls.config;
if (_ && (O.logger.warn("abort previous key loader for type:" + b), _.abort()), !E) {
O.logger.warn("key uri is falsy");
return;
}
var n = l.loader, t = S.loader = this.loaders[b] = new n(l);
this.decrypturl = E, this.decryptkey = null;
var d = {
url: E,
frag: S,
responseType: "arraybuffer"
}, h = {
timeout: l.fragLoadingTimeOut,
maxRetry: 0,
retryDelay: l.fragLoadingRetryDelay,
maxRetryDelay: l.fragLoadingMaxRetryTimeout,
highWaterMark: 0
}, i = {
onSuccess: this.loadsuccess.bind(this),
onError: this.loaderror.bind(this),
onTimeout: this.loadtimeout.bind(this)
};
t.load(d, h, i);
} else
this.decryptkey && (S.decryptdata.key = this.decryptkey, this.hls.trigger(P.Events.KEY_LOADED, {
frag: S
}));
}, R.loadsuccess = function(D, p, S) {
var b = S.frag;
if (!b.decryptdata) {
O.logger.error("after key load, decryptdata unset");
return;
}
this.decryptkey = b.decryptdata.key = new Uint8Array(D.data), b.loader = null, delete this.loaders[b.type], this.hls.trigger(P.Events.KEY_LOADED, {
frag: b
});
}, R.loaderror = function(D, p) {
var S = p.frag, b = S.loader;
b && b.abort(), delete this.loaders[S.type], this.hls.trigger(P.Events.ERROR, {
type: y.ErrorTypes.NETWORK_ERROR,
details: y.ErrorDetails.KEY_LOAD_ERROR,
fatal: !1,
frag: S,
response: D
});
}, R.loadtimeout = function(D, p) {
var S = p.frag, b = S.loader;
b && b.abort(), delete this.loaders[S.type], this.hls.trigger(P.Events.ERROR, {
type: y.ErrorTypes.NETWORK_ERROR,
details: y.ErrorDetails.KEY_LOAD_TIMEOUT,
fatal: !1,
frag: S
});
}, F;
}();
},
"./src/loader/level-details.ts": (U, M, g) => {
g.r(M), g.d(M, {
LevelDetails: () => F
});
var P = g("./src/polyfills/number.ts");
function y(R, T) {
for (var D = 0; D < T.length; D++) {
var p = T[D];
p.enumerable = p.enumerable || !1, p.configurable = !0, "value" in p && (p.writable = !0), Object.defineProperty(R, p.key, p);
}
}
function O(R, T, D) {
return T && y(R.prototype, T), D && y(R, D), Object.defineProperty(R, "prototype", { writable: !1 }), R;
}
var C = 10, F = /* @__PURE__ */ function() {
function R(D) {
this.PTSKnown = !1, this.alignedSliding = !1, this.averagetargetduration = void 0, this.endCC = 0, this.endSN = 0, this.fragments = void 0, this.fragmentHint = void 0, this.partList = null, this.dateRanges = void 0, this.live = !0, this.ageHeader = 0, this.advancedDateTime = void 0, this.updated = !0, this.advanced = !0, this.availabilityDelay = void 0, this.misses = 0, this.needSidxRanges = !1, this.startCC = 0, this.startSN = 0, this.startTimeOffset = null, this.targetduration = 0, this.totalduration = 0, this.type = null, this.url = void 0, this.m3u8 = "", this.version = null, this.canBlockReload = !1, this.canSkipUntil = 0, this.canSkipDateRanges = !1, this.skippedSegments = 0, this.recentlyRemovedDateranges = void 0, this.partHoldBack = 0, this.holdBack = 0, this.partTarget = 0, this.preloadHint = void 0, this.renditionReports = void 0, this.tuneInGoal = 0, this.deltaUpdateFailed = void 0, this.driftStartTime = 0, this.driftEndTime = 0, this.driftStart = 0, this.driftEnd = 0, this.fragments = [], this.dateRanges = {}, this.url = D;
}
var T = R.prototype;
return T.reloaded = function(p) {
if (!p) {
this.advanced = !0, this.updated = !0;
return;
}
var S = this.lastPartSn - p.lastPartSn, b = this.lastPartIndex - p.lastPartIndex;
this.updated = this.endSN !== p.endSN || !!b || !!S, this.advanced = this.endSN > p.endSN || S > 0 || S === 0 && b > 0, this.updated || this.advanced ? this.misses = Math.floor(p.misses * 0.6) : this.misses = p.misses + 1, this.availabilityDelay = p.availabilityDelay;
}, O(R, [{
key: "hasProgramDateTime",
get: function() {
return this.fragments.length ? (0, P.isFiniteNumber)(this.fragments[this.fragments.length - 1].programDateTime) : !1;
}
}, {
key: "levelTargetDuration",
get: function() {
return this.averagetargetduration || this.targetduration || C;
}
}, {
key: "drift",
get: function() {
var p = this.driftEndTime - this.driftStartTime;
if (p > 0) {
var S = this.driftEnd - this.driftStart;
return S * 1e3 / p;
}
return 1;
}
}, {
key: "edge",
get: function() {
return this.partEnd || this.fragmentEnd;
}
}, {
key: "partEnd",
get: function() {
var p;
return (p = this.partList) !== null && p !== void 0 && p.length ? this.partList[this.partList.length - 1].end : this.fragmentEnd;
}
}, {
key: "fragmentEnd",
get: function() {
var p;
return (p = this.fragments) !== null && p !== void 0 && p.length ? this.fragments[this.fragments.length - 1].end : 0;
}
}, {
key: "age",
get: function() {
return this.advancedDateTime ? Math.max(Date.now() - this.advancedDateTime, 0) / 1e3 : 0;
}
}, {
key: "lastPartIndex",
get: function() {
var p;
return (p = this.partList) !== null && p !== void 0 && p.length ? this.partList[this.partList.length - 1].index : -1;
}
}, {
key: "lastPartSn",
get: function() {
var p;
return (p = this.partList) !== null && p !== void 0 && p.length ? this.partList[this.partList.length - 1].fragment.sn : this.endSN;
}
}]), R;
}();
},
"./src/loader/level-key.ts": (U, M, g) => {
g.r(M), g.d(M, {
LevelKey: () => C
});
var P = g("./node_modules/url-toolkit/src/url-toolkit.js");
function y(F, R) {
for (var T = 0; T < R.length; T++) {
var D = R[T];
D.enumerable = D.enumerable || !1, D.configurable = !0, "value" in D && (D.writable = !0), Object.defineProperty(F, D.key, D);
}
}
function O(F, R, T) {
return R && y(F.prototype, R), T && y(F, T), Object.defineProperty(F, "prototype", { writable: !1 }), F;
}
var C = /* @__PURE__ */ function() {
F.fromURL = function(T, D) {
return new F(T, D);
}, F.fromURI = function(T) {
return new F(T);
};
function F(R, T) {
this._uri = null, this.method = null, this.keyFormat = null, this.keyFormatVersions = null, this.keyID = null, this.key = null, this.iv = null, T ? this._uri = (0, P.buildAbsoluteURL)(R, T, {
alwaysNormalize: !0
}) : this._uri = R;
}
return O(F, [{
key: "uri",
get: function() {
return this._uri;
}
}]), F;
}();
},
"./src/loader/load-stats.ts": (U, M, g) => {
g.r(M), g.d(M, {
LoadStats: () => P
});
var P = function() {
this.aborted = !1, this.loaded = 0, this.retry = 0, this.total = 0, this.chunkCount = 0, this.bwEstimate = 0, this.loading = {
start: 0,
first: 0,
end: 0
}, this.parsing = {
start: 0,
end: 0
}, this.buffering = {
start: 0,
first: 0,
end: 0
};
};
},
"./src/loader/m3u8-parser.ts": (U, M, g) => {
g.r(M), g.d(M, {
default: () => t
});
var P = g("./src/polyfills/number.ts"), y = g("./node_modules/url-toolkit/src/url-toolkit.js"), O = g("./src/loader/date-range.ts"), C = g("./src/loader/fragment.ts"), F = g("./src/loader/level-details.ts"), R = g("./src/loader/level-key.ts"), T = g("./src/utils/attr-list.ts"), D = g("./src/utils/logger.ts"), p = g("./src/utils/codecs.ts"), S = /#EXT-X-STREAM-INF:([^\r\n]*)(?:[\r\n](?:#[^\r\n]*)?)*([^\r\n]+)|#EXT-X-SESSION-DATA:([^\r\n]*)[\r\n]+/g, b = /#EXT-X-MEDIA:(.*)/g, _ = new RegExp([
/#EXTINF:\s*(\d*(?:\.\d+)?)(?:,(.*)\s+)?/.source,
/(?!#) *(\S[\S ]*)/.source,
/#EXT-X-BYTERANGE:*(.+)/.source,
/#EXT-X-PROGRAM-DATE-TIME:(.+)/.source,
/#.*/.source
].join("|"), "g"), E = new RegExp([/#(EXTM3U)/.source, /#EXT-X-(DATERANGE|KEY|MAP|PART|PART-INF|PLAYLIST-TYPE|PRELOAD-HINT|RENDITION-REPORT|SERVER-CONTROL|SKIP|START):(.+)/.source, /#EXT-X-(BITRATE|DISCONTINUITY-SEQUENCE|MEDIA-SEQUENCE|TARGETDURATION|VERSION): *(\d+)/.source, /#EXT-X-(DISCONTINUITY|ENDLIST|GAP)/.source, /(#)([^:]*):(.*)/.source, /(#)(.*)(?:.*)\r?\n?/.source].join("|")), l = /\.(mp4|m4s|m4v|m4a)$/i;
function n(f) {
var u, m;
return l.test((u = (m = y.parseURL(f)) === null || m === void 0 ? void 0 : m.path) != null ? u : "");
}
var t = /* @__PURE__ */ function() {
function f() {
}
return f.findGroup = function(m, s) {
for (var v = 0; v < m.length; v++) {
var c = m[v];
if (c.id === s)
return c;
}
}, f.convertAVC1ToAVCOTI = function(m) {
var s = m.split(".");
if (s.length > 2) {
var v = s.shift() + ".";
return v += parseInt(s.shift()).toString(16), v += ("000" + parseInt(s.shift()).toString(16)).slice(-4), v;
}
return m;
}, f.resolve = function(m, s) {
return y.buildAbsoluteURL(s, m, {
alwaysNormalize: !0
});
}, f.parseMasterPlaylist = function(m, s) {
var v = [], c = [], o = {}, a = !1;
S.lastIndex = 0;
for (var x; (x = S.exec(m)) != null; )
if (x[1]) {
var k, K = new T.AttrList(x[1]), w = {
attrs: K,
bitrate: K.decimalInteger("AVERAGE-BANDWIDTH") || K.decimalInteger("BANDWIDTH"),
name: K.NAME,
url: f.resolve(x[2], s)
}, W = K.decimalResolution("RESOLUTION");
W && (w.width = W.width, w.height = W.height), d((K.CODECS || "").split(/[ ,]+/).filter(function(j) {
return j;
}), w), w.videoCodec && w.videoCodec.indexOf("avc1") !== -1 && (w.videoCodec = f.convertAVC1ToAVCOTI(w.videoCodec)), (k = w.unknownCodecs) !== null && k !== void 0 && k.length || c.push(w), v.push(w);
} else if (x[3]) {
var z = new T.AttrList(x[3]);
z["DATA-ID"] && (a = !0, o[z["DATA-ID"]] = z);
}
var H = c.length > 0 && c.length < v.length;
return {
levels: H ? c : v,
sessionData: a ? o : null
};
}, f.parseMasterPlaylistMedia = function(m, s, v, c) {
c === void 0 && (c = []);
var o, a = [], x = 0;
for (b.lastIndex = 0; (o = b.exec(m)) !== null; ) {
var k = new T.AttrList(o[1]);
if (k.TYPE === v) {
var K = {
attrs: k,
bitrate: 0,
id: x++,
groupId: k["GROUP-ID"],
instreamId: k["INSTREAM-ID"],
name: k.NAME || k.LANGUAGE || "",
type: v,
default: k.bool("DEFAULT"),
autoselect: k.bool("AUTOSELECT"),
forced: k.bool("FORCED"),
lang: k.LANGUAGE,
url: k.URI ? f.resolve(k.URI, s) : ""
};
if (c.length) {
var w = f.findGroup(c, K.groupId) || c[0];
h(K, w, "audioCodec"), h(K, w, "textCodec");
}
a.push(K);
}
}
return a;
}, f.parseLevelPlaylist = function(m, s, v, c, o) {
var a = new F.LevelDetails(s), x = a.fragments, k = null, K = 0, w = 0, W = 0, z = 0, H = null, j = new C.Fragment(c, s), Y, Z, q, ee = -1, te = !1;
for (_.lastIndex = 0, a.m3u8 = m; (Y = _.exec(m)) !== null; ) {
te && (te = !1, j = new C.Fragment(c, s), j.start = W, j.sn = K, j.cc = z, j.level = v, k && (j.initSegment = k, j.rawProgramDateTime = k.rawProgramDateTime, k.rawProgramDateTime = null));
var ne = Y[1];
if (ne) {
j.duration = parseFloat(ne);
var ie = (" " + Y[2]).slice(1);
j.title = ie || null, j.tagList.push(ie ? ["INF", ne, ie] : ["INF", ne]);
} else if (Y[3])
(0, P.isFiniteNumber)(j.duration) && (j.start = W, q && (j.levelkey = q), j.sn = K, j.level = v, j.cc = z, j.urlId = o, x.push(j), j.relurl = (" " + Y[3]).slice(1), r(j, H), H = j, W += j.duration, K++, w = 0, te = !0);
else if (Y[4]) {
var oe = (" " + Y[4]).slice(1);
H ? j.setByteRange(oe, H) : j.setByteRange(oe);
} else if (Y[5])
j.rawProgramDateTime = (" " + Y[5]).slice(1), j.tagList.push(["PROGRAM-DATE-TIME", j.rawProgramDateTime]), ee === -1 && (ee = x.length);
else {
if (Y = Y[0].match(E), !Y) {
D.logger.warn("No matches on slow regex match for level playlist!");
continue;
}
for (Z = 1; Z < Y.length && !(typeof Y[Z] < "u"); Z++)
;
var de = (" " + Y[Z]).slice(1), re = (" " + Y[Z + 1]).slice(1), le = Y[Z + 2] ? (" " + Y[Z + 2]).slice(1) : "";
switch (de) {
case "PLAYLIST-TYPE":
a.type = re.toUpperCase();
break;
case "MEDIA-SEQUENCE":
K = a.startSN = parseInt(re);
break;
case "SKIP": {
var me = new T.AttrList(re), ve = me.decimalInteger("SKIPPED-SEGMENTS");
if ((0, P.isFiniteNumber)(ve)) {
a.skippedSegments = ve;
for (var pe = ve; pe--; )
x.unshift(null);
K += ve;
}
var Pe = me.enumeratedString("RECENTLY-REMOVED-DATERANGES");
Pe && (a.recentlyRemovedDateranges = Pe.split(" "));
break;
}
case "TARGETDURATION":
a.targetduration = parseFloat(re);
break;
case "VERSION":
a.version = parseInt(re);
break;
case "EXTM3U":
break;
case "ENDLIST":
a.live = !1;
break;
case "#":
(re || le) && j.tagList.push(le ? [re, le] : [re]);
break;
case "DISCONTINUITY":
z++, j.tagList.push(["DIS"]);
break;
case "GAP":
j.tagList.push([de]);
break;
case "BITRATE":
j.tagList.push([de, re]);
break;
case "DATERANGE": {
var ye = new T.AttrList(re), Ce = new O.DateRange(ye, a.dateRanges[ye.ID]);
Ce.isValid || a.skippedSegments ? a.dateRanges[Ce.id] = Ce : D.logger.warn('Ignoring invalid DATERANGE tag: "' + re + '"'), j.tagList.push(["EXT-X-DATERANGE", re]);
break;
}
case "DISCONTINUITY-SEQUENCE":
z = parseInt(re);
break;
case "KEY": {
var Oe, Ae = new T.AttrList(re), Fe = Ae.enumeratedString("METHOD"), We = Ae.URI, He = Ae.hexadecimalInteger("IV"), Ge = Ae.enumeratedString("KEYFORMATVERSIONS"), we = Ae.enumeratedString("KEYID"), Be = (Oe = Ae.enumeratedString("KEYFORMAT")) != null ? Oe : "identity", Ee = [
"com.apple.streamingkeydelivery",
"com.microsoft.playready",
"urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed",
"com.widevine"
];
if (Ee.indexOf(Be) > -1) {
D.logger.warn("Keyformat " + Be + " is not supported from the manifest");
continue;
} else if (Be !== "identity")
continue;
Fe && (q = R.LevelKey.fromURL(s, We), We && ["AES-128", "SAMPLE-AES", "SAMPLE-AES-CENC"].indexOf(Fe) >= 0 && (q.method = Fe, q.keyFormat = Be, we && (q.keyID = we), Ge && (q.keyFormatVersions = Ge), q.iv = He));
break;
}
case "START": {
var rt = new T.AttrList(re), Le = rt.decimalFloatingPoint("TIME-OFFSET");
(0, P.isFiniteNumber)(Le) && (a.startTimeOffset = Le);
break;
}
case "MAP": {
var Me = new T.AttrList(re);
if (j.duration) {
var je = new C.Fragment(c, s);
e(je, Me, v, q), k = je, j.initSegment = k, k.rawProgramDateTime && !j.rawProgramDateTime && (j.rawProgramDateTime = k.rawProgramDateTime);
} else
e(j, Me, v, q), k = j, te = !0;
break;
}
case "SERVER-CONTROL": {
var be = new T.AttrList(re);
a.canBlockReload = be.bool("CAN-BLOCK-RELOAD"), a.canSkipUntil = be.optionalFloat("CAN-SKIP-UNTIL", 0), a.canSkipDateRanges = a.canSkipUntil > 0 && be.bool("CAN-SKIP-DATERANGES"), a.partHoldBack = be.optionalFloat("PART-HOLD-BACK", 0), a.holdBack = be.optionalFloat("HOLD-BACK", 0);
break;
}
case "PART-INF": {
var ke = new T.AttrList(re);
a.partTarget = ke.decimalFloatingPoint("PART-TARGET");
break;
}
case "PART": {
var ze = a.partList;
ze || (ze = a.partList = []);
var ot = w > 0 ? ze[ze.length - 1] : void 0, lt = w++, vt = new C.Part(new T.AttrList(re), j, s, lt, ot);
ze.push(vt), j.duration += vt.duration;
break;
}
case "PRELOAD-HINT": {
var Qe = new T.AttrList(re);
a.preloadHint = Qe;
break;
}
case "RENDITION-REPORT": {
var xt = new T.AttrList(re);
a.renditionReports = a.renditionReports || [], a.renditionReports.push(xt);
break;
}
default:
D.logger.warn("line parsed but not handled: " + Y);
break;
}
}
}
H && !H.relurl ? (x.pop(), W -= H.duration, a.partList && (a.fragmentHint = H)) : a.partList && (r(j, H), j.cc = z, a.fragmentHint = j);
var ut = x.length, it = x[0], gt = x[ut - 1];
if (W += a.skippedSegments * a.targetduration, W > 0 && ut && gt) {
a.averagetargetduration = W / ut;
var ft = gt.sn;
a.endSN = ft !== "initSegment" ? ft : 0, it && (a.startCC = it.cc, it.initSegment || a.fragments.every(function(yt) {
return yt.relurl && n(yt.relurl);
}) && (D.logger.warn("MP4 fragments found but no init segment (probably no MAP, incomplete M3U8), trying to fetch SIDX"), j = new C.Fragment(c, s), j.relurl = gt.relurl, j.level = v, j.sn = "initSegment", it.initSegment = j, a.needSidxRanges = !0));
} else
a.endSN = 0, a.startCC = 0;
return a.fragmentHint && (W += a.fragmentHint.duration), a.totalduration = W, a.endCC = z, ee > 0 && i(x, ee), a;
}, f;
}();
function d(f, u) {
["video", "audio", "text"].forEach(function(m) {
var s = f.filter(function(c) {
return (0, p.isCodecType)(c, m);
});
if (s.length) {
var v = s.filter(function(c) {
return c.lastIndexOf("avc1", 0) === 0 || c.lastIndexOf("mp4a", 0) === 0;
});
u[m + "Codec"] = v.length > 0 ? v[0] : s[0], f = f.filter(function(c) {
return s.indexOf(c) === -1;
});
}
}), u.unknownCodecs = f;
}
function h(f, u, m) {
var s = u[m];
s && (f[m] = s);
}
function i(f, u) {
for (var m = f[u], s = u; s--; ) {
var v = f[s];
if (!v)
return;
v.programDateTime = m.programDateTime - v.duration * 1e3, m = v;
}
}
function r(f, u) {
f.rawProgramDateTime ? f.programDateTime = Date.parse(f.rawProgramDateTime) : u != null && u.programDateTime && (f.programDateTime = u.endProgramDateTime), (0, P.isFiniteNumber)(f.programDateTime) || (f.programDateTime = null, f.rawProgramDateTime = null);
}
function e(f, u, m, s) {
f.relurl = u.URI, u.BYTERANGE && f.setByteRange(u.BYTERANGE), f.level = m, f.sn = "initSegment", s && (f.levelkey = s), f.initSegment = null;
}
},
"./src/loader/playlist-loader.ts": (U, M, g) => {
g.r(M), g.d(M, {
default: () => _
});
var P = g("./src/polyfills/number.ts"), y = g("./src/events.ts"), O = g("./src/errors.ts"), C = g("./src/utils/logger.ts"), F = g("./src/utils/mp4-tools.ts"), R = g("./src/loader/m3u8-parser.ts"), T = g("./src/types/loader.ts"), D = g("./src/utils/attr-list.ts");
function p(E) {
var l = E.type;
switch (l) {
case T.PlaylistContextType.AUDIO_TRACK:
return T.PlaylistLevelType.AUDIO;
case T.PlaylistContextType.SUBTITLE_TRACK:
return T.PlaylistLevelType.SUBTITLE;
default:
return T.PlaylistLevelType.MAIN;
}
}
function S(E, l) {
var n = E.url;
return (n === void 0 || n.indexOf("data:") === 0) && (n = l.url), n;
}
var b = /* @__PURE__ */ function() {
function E(n) {
this.hls = void 0, this.loaders = /* @__PURE__ */ Object.create(null), this.hls = n, this.registerListeners();
}
var l = E.prototype;
return l.startLoad = function(t) {
}, l.stopLoad = function() {
this.destroyInternalLoaders();
}, l.registerListeners = function() {
var t = this.hls;
t.on(y.Events.MANIFEST_LOADING, this.onManifestLoading, this), t.on(y.Events.LEVEL_LOADING, this.onLevelLoading, this), t.on(y.Events.AUDIO_TRACK_LOADING, this.onAudioTrackLoading, this), t.on(y.Events.SUBTITLE_TRACK_LOADING, this.onSubtitleTrackLoading, this);
}, l.unregisterListeners = function() {
var t = this.hls;
t.off(y.Events.MANIFEST_LOADING, this.onManifestLoading, this), t.off(y.Events.LEVEL_LOADING, this.onLevelLoading, this), t.off(y.Events.AUDIO_TRACK_LOADING, this.onAudioTrackLoading, this), t.off(y.Events.SUBTITLE_TRACK_LOADING, this.onSubtitleTrackLoading, this);
}, l.createInternalLoader = function(t) {
var d = this.hls.config, h = d.pLoader, i = d.loader, r = h || i, e = new r(d);
return t.loader = e, this.loaders[t.type] = e, e;
}, l.getInternalLoader = function(t) {
return this.loaders[t.type];
}, l.resetInternalLoader = function(t) {
this.loaders[t] && delete this.loaders[t];
}, l.destroyInternalLoaders = function() {
for (var t in this.loaders) {
var d = this.loaders[t];
d && d.destroy(), this.resetInternalLoader(t);
}
}, l.destroy = function() {
this.unregisterListeners(), this.destroyInternalLoaders();
}, l.onManifestLoading = function(t, d) {
var h = d.url;
this.load({
id: null,
groupId: null,
level: 0,
responseType: "text",
type: T.PlaylistContextType.MANIFEST,
url: h,
deliveryDirectives: null
});
}, l.onLevelLoading = function(t, d) {
var h = d.id, i = d.level, r = d.url, e = d.deliveryDirectives;
this.load({
id: h,
groupId: null,
level: i,
responseType: "text",
type: T.PlaylistContextType.LEVEL,
url: r,
deliveryDirectives: e
});
}, l.onAudioTrackLoading = function(t, d) {
var h = d.id, i = d.groupId, r = d.url, e = d.deliveryDirectives;
this.load({
id: h,
groupId: i,
level: null,
responseType: "text",
type: T.PlaylistContextType.AUDIO_TRACK,
url: r,
deliveryDirectives: e
});
}, l.onSubtitleTrackLoading = function(t, d) {
var h = d.id, i = d.groupId, r = d.url, e = d.deliveryDirectives;
this.load({
id: h,
groupId: i,
level: null,
responseType: "text",
type: T.PlaylistContextType.SUBTITLE_TRACK,
url: r,
deliveryDirectives: e
});
}, l.load = function(t) {
var d, h = this.hls.config, i = this.getInternalLoader(t);
if (i) {
var r = i.context;
if (r && r.url === t.url) {
C.logger.trace("[playlist-loader]: playlist request ongoing");
return;
}
C.logger.log("[playlist-loader]: aborting previous loader for type: " + t.type), i.abort();
}
var e, f, u, m;
switch (t.type) {
case T.PlaylistContextType.MANIFEST:
e = h.manifestLoadingMaxRetry, f = h.manifestLoadingTimeOut, u = h.manifestLoadingRetryDelay, m = h.manifestLoadingMaxRetryTimeout;
break;
case T.PlaylistContextType.LEVEL:
case T.PlaylistContextType.AUDIO_TRACK:
case T.PlaylistContextType.SUBTITLE_TRACK:
e = 0, f = h.levelLoadingTimeOut;
break;
default:
e = h.levelLoadingMaxRetry, f = h.levelLoadingTimeOut, u = h.levelLoadingRetryDelay, m = h.levelLoadingMaxRetryTimeout;
break;
}
if (i = this.createInternalLoader(t), (d = t.deliveryDirectives) !== null && d !== void 0 && d.part) {
var s;
if (t.type === T.PlaylistContextType.LEVEL && t.level !== null ? s = this.hls.levels[t.level].details : t.type === T.PlaylistContextType.AUDIO_TRACK && t.id !== null ? s = this.hls.audioTracks[t.id].details : t.type === T.PlaylistContextType.SUBTITLE_TRACK && t.id !== null && (s = this.hls.subtitleTracks[t.id].details), s) {
var v = s.partTarget, c = s.targetduration;
v && c && (f = Math.min(Math.max(v * 3, c * 0.8) * 1e3, f));
}
}
var o = {
timeout: f,
maxRetry: e,
retryDelay: u,
maxRetryDelay: m,
highWaterMark: 0
}, a = {
onSuccess: this.loadsuccess.bind(this),
onError: this.loaderror.bind(this),
onTimeout: this.loadtimeout.bind(this)
};
i.load(t, o, a);
}, l.loadsuccess = function(t, d, h, i) {
if (i === void 0 && (i = null), h.isSidxRequest) {
this.handleSidxRequest(t, h), this.handlePlaylistLoaded(t, d, h, i);
return;
}
this.resetInternalLoader(h.type);
var r = t.data;
if (r.indexOf("#EXTM3U") !== 0) {
this.handleManifestParsingError(t, h, "no EXTM3U delimiter", i);
return;
}
d.parsing.start = performance.now(), r.indexOf("#EXTINF:") > 0 || r.indexOf("#EXT-X-TARGETDURATION:") > 0 ? this.handleTrackOrLevelPlaylist(t, d, h, i) : this.handleMasterPlaylist(t, d, h, i);
}, l.loaderror = function(t, d, h) {
h === void 0 && (h = null), this.handleNetworkError(d, h, !1, t);
}, l.loadtimeout = function(t, d, h) {
h === void 0 && (h = null), this.handleNetworkError(d, h, !0);
}, l.handleMasterPlaylist = function(t, d, h, i) {
var r = this.hls, e = t.data, f = S(t, h), u = R.default.parseMasterPlaylist(e, f), m = u.levels, s = u.sessionData;
if (!m.length) {
this.handleManifestParsingError(t, h, "no level found in manifest", i);
return;
}
var v = m.map(function(K) {
return {
id: K.attrs.AUDIO,
audioCodec: K.audioCodec
};
}), c = m.map(function(K) {
return {
id: K.attrs.SUBTITLES,
textCodec: K.textCodec
};
}), o = R.default.parseMasterPlaylistMedia(e, f, "AUDIO", v), a = R.default.parseMasterPlaylistMedia(e, f, "SUBTITLES", c), x = R.default.parseMasterPlaylistMedia(e, f, "CLOSED-CAPTIONS");
if (o.length) {
var k = o.some(function(K) {
return !K.url;
});
!k && m[0].audioCodec && !m[0].attrs.AUDIO && (C.logger.log("[playlist-loader]: audio codec signaled in quality level, but no embedded audio track signaled, create one"), o.unshift({
type: "main",
name: "main",
default: !1,
autoselect: !1,
forced: !1,
id: -1,
attrs: new D.AttrList({}),
bitrate: 0,
url: ""
}));
}
r.trigger(y.Events.MANIFEST_LOADED, {
levels: m,
audioTracks: o,
subtitles: a,
captions: x,
url: f,
stats: d,
networkDetails: i,
sessionData: s
});
}, l.handleTrackOrLevelPlaylist = function(t, d, h, i) {
var r = this.hls, e = h.id, f = h.level, u = h.type, m = S(t, h), s = (0, P.isFiniteNumber)(e) ? e : 0, v = (0, P.isFiniteNumber)(f) ? f : s, c = p(h), o = R.default.parseLevelPlaylist(t.data, m, v, c, s);
if (!o.fragments.length) {
r.trigger(y.Events.ERROR, {
type: O.ErrorTypes.NETWORK_ERROR,
details: O.ErrorDetails.LEVEL_EMPTY_ERROR,
fatal: !1,
url: m,
reason: "no fragments found in level",
level: typeof h.level == "number" ? h.level : void 0
});
return;
}
if (u === T.PlaylistContextType.MANIFEST) {
var a = {
attrs: new D.AttrList({}),
bitrate: 0,
details: o,
name: "",
url: m
};
r.trigger(y.Events.MANIFEST_LOADED, {
levels: [a],
audioTracks: [],
url: m,
stats: d,
networkDetails: i,
sessionData: null
});
}
if (d.parsing.end = performance.now(), o.needSidxRanges) {
var x, k = (x = o.fragments[0].initSegment) === null || x === void 0 ? void 0 : x.url;
this.load({
url: k,
isSidxRequest: !0,
type: u,
level: f,
levelDetails: o,
id: e,
groupId: null,
rangeStart: 0,
rangeEnd: 2048,
responseType: "arraybuffer",
deliveryDirectives: null
});
return;
}
h.levelDetails = o, this.handlePlaylistLoaded(t, d, h, i);
}, l.handleSidxRequest = function(t, d) {
var h = new Uint8Array(t.data), i = (0, F.findBox)(h, ["sidx"])[0];
if (!!i) {
var r = (0, F.parseSegmentIndex)(i);
if (!!r) {
var e = r.references, f = d.levelDetails;
e.forEach(function(u, m) {
var s = u.info, v = f.fragments[m];
if (v.byteRange.length === 0 && v.setByteRange(String(1 + s.end - s.start) + "@" + String(s.start)), v.initSegment) {
var c = (0, F.findBox)(h, ["moov"])[0], o = c ? c.length : null;
v.initSegment.setByteRange(String(o) + "@0");
}
});
}
}
}, l.handleManifestParsingError = function(t, d, h, i) {
this.hls.trigger(y.Events.ERROR, {
type: O.ErrorTypes.NETWORK_ERROR,
details: O.ErrorDetails.MANIFEST_PARSING_ERROR,
fatal: d.type === T.PlaylistContextType.MANIFEST,
url: t.url,
reason: h,
response: t,
context: d,
networkDetails: i
});
}, l.handleNetworkError = function(t, d, h, i) {
h === void 0 && (h = !1), C.logger.warn("[playlist-loader]: A network " + (h ? "timeout" : "error") + " occurred while loading " + t.type + " level: " + t.level + " id: " + t.id + ' group-id: "' + t.groupId + '"');
var r = O.ErrorDetails.UNKNOWN, e = !1, f = this.getInternalLoader(t);
switch (t.type) {
case T.PlaylistContextType.MANIFEST:
r = h ? O.ErrorDetails.MANIFEST_LOAD_TIMEOUT : O.ErrorDetails.MANIFEST_LOAD_ERROR, e = !0;
break;
case T.PlaylistContextType.LEVEL:
r = h ? O.ErrorDetails.LEVEL_LOAD_TIMEOUT : O.ErrorDetails.LEVEL_LOAD_ERROR, e = !1;
break;
case T.PlaylistContextType.AUDIO_TRACK:
r = h ? O.ErrorDetails.AUDIO_TRACK_LOAD_TIMEOUT : O.ErrorDetails.AUDIO_TRACK_LOAD_ERROR, e = !1;
break;
case T.PlaylistContextType.SUBTITLE_TRACK:
r = h ? O.ErrorDetails.SUBTITLE_TRACK_LOAD_TIMEOUT : O.ErrorDetails.SUBTITLE_LOAD_ERROR, e = !1;
break;
}
f && this.resetInternalLoader(t.type);
var u = {
type: O.ErrorTypes.NETWORK_ERROR,
details: r,
fatal: e,
url: t.url,
loader: f,
context: t,
networkDetails: d
};
i && (u.response = i), this.hls.trigger(y.Events.ERROR, u);
}, l.handlePlaylistLoaded = function(t, d, h, i) {
var r = h.type, e = h.level, f = h.id, u = h.groupId, m = h.loader, s = h.levelDetails, v = h.deliveryDirectives;
if (!(s != null && s.targetduration)) {
this.handleManifestParsingError(t, h, "invalid target duration", i);
return;
}
if (!!m)
switch (s.live && (m.getCacheAge && (s.ageHeader = m.getCacheAge() || 0), (!m.getCacheAge || isNaN(s.ageHeader)) && (s.ageHeader = 0)), r) {
case T.PlaylistContextType.MANIFEST:
case T.PlaylistContextType.LEVEL:
this.hls.trigger(y.Events.LEVEL_LOADED, {
details: s,
level: e || 0,
id: f || 0,
stats: d,
networkDetails: i,
deliveryDirectives: v
});
break;
case T.PlaylistContextType.AUDIO_TRACK:
this.hls.trigger(y.Events.AUDIO_TRACK_LOADED, {
details: s,
id: f || 0,
groupId: u || "",
stats: d,
networkDetails: i,
deliveryDirectives: v
});
break;
case T.PlaylistContextType.SUBTITLE_TRACK:
this.hls.trigger(y.Events.SUBTITLE_TRACK_LOADED, {
details: s,
id: f || 0,
groupId: u || "",
stats: d,
networkDetails: i,
deliveryDirectives: v
});
break;
}
}, E;
}();
const _ = b;
},
"./src/polyfills/number.ts": (U, M, g) => {
g.r(M), g.d(M, {
MAX_SAFE_INTEGER: () => y,
isFiniteNumber: () => P
});
var P = Number.isFinite || function(O) {
return typeof O == "number" && isFinite(O);
}, y = Number.MAX_SAFE_INTEGER || 9007199254740991;
},
"./src/remux/aac-helper.ts": (U, M, g) => {
g.r(M), g.d(M, {
default: () => y
});
var P = /* @__PURE__ */ function() {
function O() {
}
return O.getSilentFrame = function(F, R) {
switch (F) {
case "mp4a.40.2":
if (R === 1)
return new Uint8Array([0, 200, 0, 128, 35, 128]);
if (R === 2)
return new Uint8Array([33, 0, 73, 144, 2, 25, 0, 35, 128]);
if (R === 3)
return new Uint8Array([0, 200, 0, 128, 32, 132, 1, 38, 64, 8, 100, 0, 142]);
if (R === 4)
return new Uint8Array([0, 200, 0, 128, 32, 132, 1, 38, 64, 8, 100, 0, 128, 44, 128, 8, 2, 56]);
if (R === 5)
return new Uint8Array([0, 200, 0, 128, 32, 132, 1, 38, 64, 8, 100, 0, 130, 48, 4, 153, 0, 33, 144, 2, 56]);
if (R === 6)
return new Uint8Array([0, 200, 0, 128, 32, 132, 1, 38, 64, 8, 100, 0, 130, 48, 4, 153, 0, 33, 144, 2, 0, 178, 0, 32, 8, 224]);
break;
default:
if (R === 1)
return new Uint8Array([1, 64, 34, 128, 163, 78, 230, 128, 186, 8, 0, 0, 0, 28, 6, 241, 193, 10, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 94]);
if (R === 2)
return new Uint8Array([1, 64, 34, 128, 163, 94, 230, 128, 186, 8, 0, 0, 0, 0, 149, 0, 6, 241, 161, 10, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 94]);
if (R === 3)
return new Uint8Array([1, 64, 34, 128, 163, 94, 230, 128, 186, 8, 0, 0, 0, 0, 149, 0, 6, 241, 161, 10, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 94]);
break;
}
}, O;
}();
const y = P;
},
"./src/remux/mp4-generator.ts": (U, M, g) => {
g.r(M), g.d(M, {
default: () => O
});
var P = Math.pow(2, 32) - 1, y = /* @__PURE__ */ function() {
function C() {
}
return C.init = function() {
C.types = {
avc1: [],
avcC: [],
btrt: [],
dinf: [],
dref: [],
esds: [],
ftyp: [],
hdlr: [],
mdat: [],
mdhd: [],
mdia: [],
mfhd: [],
minf: [],
moof: [],
moov: [],
mp4a: [],
".mp3": [],
mvex: [],
mvhd: [],
pasp: [],
sdtp: [],
stbl: [],
stco: [],
stsc: [],
stsd: [],
stsz: [],
stts: [],
tfdt: [],
tfhd: [],
traf: [],
trak: [],
trun: [],
trex: [],
tkhd: [],
vmhd: [],
smhd: []
};
var R;
for (R in C.types)
C.types.hasOwnProperty(R) && (C.types[R] = [R.charCodeAt(0), R.charCodeAt(1), R.charCodeAt(2), R.charCodeAt(3)]);
var T = new Uint8Array([
0,
0,
0,
0,
0,
0,
0,
0,
118,
105,
100,
101,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
86,
105,
100,
101,
111,
72,
97,
110,
100,
108,
101,
114,
0
]), D = new Uint8Array([
0,
0,
0,
0,
0,
0,
0,
0,
115,
111,
117,
110,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
83,
111,
117,
110,
100,
72,
97,
110,
100,
108,
101,
114,
0
]);
C.HDLR_TYPES = {
video: T,
audio: D
};
var p = new Uint8Array([
0,
0,
0,
0,
0,
0,
0,
1,
0,
0,
0,
12,
117,
114,
108,
32,
0,
0,
0,
1
]), S = new Uint8Array([
0,
0,
0,
0,
0,
0,
0,
0
]);
C.STTS = C.STSC = C.STCO = S, C.STSZ = new Uint8Array([
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0
]), C.VMHD = new Uint8Array([
0,
0,
0,
1,
0,
0,
0,
0,
0,
0,
0,
0
]), C.SMHD = new Uint8Array([
0,
0,
0,
0,
0,
0,
0,
0
]), C.STSD = new Uint8Array([
0,
0,
0,
0,
0,
0,
0,
1
]);
var b = new Uint8Array([105, 115, 111, 109]), _ = new Uint8Array([97, 118, 99, 49]), E = new Uint8Array([0, 0, 0, 1]);
C.FTYP = C.box(C.types.ftyp, b, E, b, _), C.DINF = C.box(C.types.dinf, C.box(C.types.dref, p));
}, C.box = function(R) {
for (var T = 8, D = arguments.length, p = new Array(D > 1 ? D - 1 : 0), S = 1; S < D; S++)
p[S - 1] = arguments[S];
for (var b = p.length, _ = b; b--; )
T += p[b].byteLength;
var E = new Uint8Array(T);
for (E[0] = T >> 24 & 255, E[1] = T >> 16 & 255, E[2] = T >> 8 & 255, E[3] = T & 255, E.set(R, 4), b = 0, T = 8; b < _; b++)
E.set(p[b], T), T += p[b].byteLength;
return E;
}, C.hdlr = function(R) {
return C.box(C.types.hdlr, C.HDLR_TYPES[R]);
}, C.mdat = function(R) {
return C.box(C.types.mdat, R);
}, C.mdhd = function(R, T) {
T *= R;
var D = Math.floor(T / (P + 1)), p = Math.floor(T % (P + 1));
return C.box(C.types.mdhd, new Uint8Array([
1,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
2,
0,
0,
0,
0,
0,
0,
0,
3,
R >> 24 & 255,
R >> 16 & 255,
R >> 8 & 255,
R & 255,
D >> 24,
D >> 16 & 255,
D >> 8 & 255,
D & 255,
p >> 24,
p >> 16 & 255,
p >> 8 & 255,
p & 255,
85,
196,
0,
0
]));
}, C.mdia = function(R) {
return C.box(C.types.mdia, C.mdhd(R.timescale, R.duration), C.hdlr(R.type), C.minf(R));
}, C.mfhd = function(R) {
return C.box(C.types.mfhd, new Uint8Array([
0,
0,
0,
0,
R >> 24,
R >> 16 & 255,
R >> 8 & 255,
R & 255
]));
}, C.minf = function(R) {
return R.type === "audio" ? C.box(C.types.minf, C.box(C.types.smhd, C.SMHD), C.DINF, C.stbl(R)) : C.box(C.types.minf, C.box(C.types.vmhd, C.VMHD), C.DINF, C.stbl(R));
}, C.moof = function(R, T, D) {
return C.box(C.types.moof, C.mfhd(R), C.traf(D, T));
}, C.moov = function(R) {
for (var T = R.length, D = []; T--; )
D[T] = C.trak(R[T]);
return C.box.apply(null, [C.types.moov, C.mvhd(R[0].timescale, R[0].duration)].concat(D).concat(C.mvex(R)));
}, C.mvex = function(R) {
for (var T = R.length, D = []; T--; )
D[T] = C.trex(R[T]);
return C.box.apply(null, [C.types.mvex].concat(D));
}, C.mvhd = function(R, T) {
T *= R;
var D = Math.floor(T / (P + 1)), p = Math.floor(T % (P + 1)), S = new Uint8Array([
1,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
2,
0,
0,
0,
0,
0,
0,
0,
3,
R >> 24 & 255,
R >> 16 & 255,
R >> 8 & 255,
R & 255,
D >> 24,
D >> 16 & 255,
D >> 8 & 255,
D & 255,
p >> 24,
p >> 16 & 255,
p >> 8 & 255,
p & 255,
0,
1,
0,
0,
1,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
1,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
1,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
64,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
255,
255,
255,
255
]);
return C.box(C.types.mvhd, S);
}, C.sdtp = function(R) {
var T = R.samples || [], D = new Uint8Array(4 + T.length), p, S;
for (p = 0; p < T.length; p++)
S = T[p].flags, D[p + 4] = S.dependsOn << 4 | S.isDependedOn << 2 | S.hasRedundancy;
return C.box(C.types.sdtp, D);
}, C.stbl = function(R) {
return C.box(C.types.stbl, C.stsd(R), C.box(C.types.stts, C.STTS), C.box(C.types.stsc, C.STSC), C.box(C.types.stsz, C.STSZ), C.box(C.types.stco, C.STCO));
}, C.avc1 = function(R) {
var T = [], D = [], p, S, b;
for (p = 0; p < R.sps.length; p++)
S = R.sps[p], b = S.byteLength, T.push(b >>> 8 & 255), T.push(b & 255), T = T.concat(Array.prototype.slice.call(S));
for (p = 0; p < R.pps.length; p++)
S = R.pps[p], b = S.byteLength, D.push(b >>> 8 & 255), D.push(b & 255), D = D.concat(Array.prototype.slice.call(S));
var _ = C.box(C.types.avcC, new Uint8Array([
1,
T[3],
T[4],
T[5],
255,
224 | R.sps.length
].concat(T).concat([
R.pps.length
]).concat(D))), E = R.width, l = R.height, n = R.pixelRatio[0], t = R.pixelRatio[1];
return C.box(
C.types.avc1,
new Uint8Array([
0,
0,
0,
0,
0,
0,
0,
1,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
E >> 8 & 255,
E & 255,
l >> 8 & 255,
l & 255,
0,
72,
0,
0,
0,
72,
0,
0,
0,
0,
0,
0,
0,
1,
18,
100,
97,
105,
108,
121,
109,
111,
116,
105,
111,
110,
47,
104,
108,
115,
46,
106,
115,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
24,
17,
17
]),
_,
C.box(C.types.btrt, new Uint8Array([
0,
28,
156,
128,
0,
45,
198,
192,
0,
45,
198,
192
])),
C.box(C.types.pasp, new Uint8Array([
n >> 24,
n >> 16 & 255,
n >> 8 & 255,
n & 255,
t >> 24,
t >> 16 & 255,
t >> 8 & 255,
t & 255
]))
);
}, C.esds = function(R) {
var T = R.config.length;
return new Uint8Array([
0,
0,
0,
0,
3,
23 + T,
0,
1,
0,
4,
15 + T,
64,
21,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
5
].concat([T]).concat(R.config).concat([6, 1, 2]));
}, C.mp4a = function(R) {
var T = R.samplerate;
return C.box(C.types.mp4a, new Uint8Array([
0,
0,
0,
0,
0,
0,
0,
1,
0,
0,
0,
0,
0,
0,
0,
0,
0,
R.channelCount,
0,
16,
0,
0,
0,
0,
T >> 8 & 255,
T & 255,
0,
0
]), C.box(C.types.esds, C.esds(R)));
}, C.mp3 = function(R) {
var T = R.samplerate;
return C.box(C.types[".mp3"], new Uint8Array([
0,
0,
0,
0,
0,
0,
0,
1,
0,
0,
0,
0,
0,
0,
0,
0,
0,
R.channelCount,
0,
16,
0,
0,
0,
0,
T >> 8 & 255,
T & 255,
0,
0
]));
}, C.stsd = function(R) {
return R.type === "audio" ? R.segmentCodec === "mp3" && R.codec === "mp3" ? C.box(C.types.stsd, C.STSD, C.mp3(R)) : C.box(C.types.stsd, C.STSD, C.mp4a(R)) : C.box(C.types.stsd, C.STSD, C.avc1(R));
}, C.tkhd = function(R) {
var T = R.id, D = R.duration * R.timescale, p = R.width, S = R.height, b = Math.floor(D / (P + 1)), _ = Math.floor(D % (P + 1));
return C.box(C.types.tkhd, new Uint8Array([
1,
0,
0,
7,
0,
0,
0,
0,
0,
0,
0,
2,
0,
0,
0,
0,
0,
0,
0,
3,
T >> 24 & 255,
T >> 16 & 255,
T >> 8 & 255,
T & 255,
0,
0,
0,
0,
b >> 24,
b >> 16 & 255,
b >> 8 & 255,
b & 255,
_ >> 24,
_ >> 16 & 255,
_ >> 8 & 255,
_ & 255,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
1,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
1,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
64,
0,
0,
0,
p >> 8 & 255,
p & 255,
0,
0,
S >> 8 & 255,
S & 255,
0,
0
]));
}, C.traf = function(R, T) {
var D = C.sdtp(R), p = R.id, S = Math.floor(T / (P + 1)), b = Math.floor(T % (P + 1));
return C.box(
C.types.traf,
C.box(C.types.tfhd, new Uint8Array([
0,
0,
0,
0,
p >> 24,
p >> 16 & 255,
p >> 8 & 255,
p & 255
])),
C.box(C.types.tfdt, new Uint8Array([
1,
0,
0,
0,
S >> 24,
S >> 16 & 255,
S >> 8 & 255,
S & 255,
b >> 24,
b >> 16 & 255,
b >> 8 & 255,
b & 255
])),
C.trun(R, D.length + 16 + 20 + 8 + 16 + 8 + 8),
D
);
}, C.trak = function(R) {
return R.duration = R.duration || 4294967295, C.box(C.types.trak, C.tkhd(R), C.mdia(R));
}, C.trex = function(R) {
var T = R.id;
return C.box(C.types.trex, new Uint8Array([
0,
0,
0,
0,
T >> 24,
T >> 16 & 255,
T >> 8 & 255,
T & 255,
0,
0,
0,
1,
0,
0,
0,
0,
0,
0,
0,
0,
0,
1,
0,
1
]));
}, C.trun = function(R, T) {
var D = R.samples || [], p = D.length, S = 12 + 16 * p, b = new Uint8Array(S), _, E, l, n, t, d;
for (T += 8 + S, b.set([
R.type === "video" ? 1 : 0,
0,
15,
1,
p >>> 24 & 255,
p >>> 16 & 255,
p >>> 8 & 255,
p & 255,
T >>> 24 & 255,
T >>> 16 & 255,
T >>> 8 & 255,
T & 255
], 0), _ = 0; _ < p; _++)
E = D[_], l = E.duration, n = E.size, t = E.flags, d = E.cts, b.set([
l >>> 24 & 255,
l >>> 16 & 255,
l >>> 8 & 255,
l & 255,
n >>> 24 & 255,
n >>> 16 & 255,
n >>> 8 & 255,
n & 255,
t.isLeading << 2 | t.dependsOn,
t.isDependedOn << 6 | t.hasRedundancy << 4 | t.paddingValue << 1 | t.isNonSync,
t.degradPrio & 240 << 8,
t.degradPrio & 15,
d >>> 24 & 255,
d >>> 16 & 255,
d >>> 8 & 255,
d & 255
], 12 + 16 * _);
return C.box(C.types.trun, b);
}, C.initSegment = function(R) {
C.types || C.init();
var T = C.moov(R), D = new Uint8Array(C.FTYP.byteLength + T.byteLength);
return D.set(C.FTYP), D.set(T, C.FTYP.byteLength), D;
}, C;
}();
y.types = void 0, y.HDLR_TYPES = void 0, y.STTS = void 0, y.STSC = void 0, y.STCO = void 0, y.STSZ = void 0, y.VMHD = void 0, y.SMHD = void 0, y.STSD = void 0, y.FTYP = void 0, y.DINF = void 0;
const O = y;
},
"./src/remux/mp4-remuxer.ts": (U, M, g) => {
g.r(M), g.d(M, {
default: () => n,
flushTextTrackMetadataCueSamples: () => h,
flushTextTrackUserdataCueSamples: () => i,
normalizePts: () => t
});
var P = g("./src/polyfills/number.ts"), y = g("./src/remux/aac-helper.ts"), O = g("./src/remux/mp4-generator.ts"), C = g("./src/events.ts"), F = g("./src/errors.ts"), R = g("./src/utils/logger.ts"), T = g("./src/types/loader.ts"), D = g("./src/utils/timescale-conversion.ts");
function p() {
return p = Object.assign ? Object.assign.bind() : function(f) {
for (var u = 1; u < arguments.length; u++) {
var m = arguments[u];
for (var s in m)
Object.prototype.hasOwnProperty.call(m, s) && (f[s] = m[s]);
}
return f;
}, p.apply(this, arguments);
}
var S = 10 * 1e3, b = 1024, _ = 1152, E = null, l = null, n = /* @__PURE__ */ function() {
function f(m, s, v, c) {
if (this.observer = void 0, this.config = void 0, this.typeSupported = void 0, this.ISGenerated = !1, this._initPTS = void 0, this._initDTS = void 0, this.nextAvcDts = null, this.nextAudioPts = null, this.videoSampleDuration = null, this.isAudioContiguous = !1, this.isVideoContiguous = !1, this.observer = m, this.config = s, this.typeSupported = v, this.ISGenerated = !1, E === null) {
var o = navigator.userAgent || "", a = o.match(/Chrome\/(\d+)/i);
E = a ? parseInt(a[1]) : 0;
}
if (l === null) {
var x = navigator.userAgent.match(/Safari\/(\d+)/i);
l = x ? parseInt(x[1]) : 0;
}
}
var u = f.prototype;
return u.destroy = function() {
}, u.resetTimeStamp = function(s) {
R.logger.log("[mp4-remuxer]: initPTS & initDTS reset"), this._initPTS = this._initDTS = s;
}, u.resetNextTimestamp = function() {
R.logger.log("[mp4-remuxer]: reset next timestamp"), this.isVideoContiguous = !1, this.isAudioContiguous = !1;
}, u.resetInitSegment = function() {
R.logger.log("[mp4-remuxer]: ISGenerated flag reset"), this.ISGenerated = !1;
}, u.getVideoStartPts = function(s) {
var v = !1, c = s.reduce(function(o, a) {
var x = a.pts - o;
return x < -4294967296 ? (v = !0, t(o, a.pts)) : x > 0 ? o : a.pts;
}, s[0].pts);
return v && R.logger.debug("PTS rollover detected"), c;
}, u.remux = function(s, v, c, o, a, x, k, K) {
var w, W, z, H, j, Y, Z = a, q = a, ee = s.pid > -1, te = v.pid > -1, ne = v.samples.length, ie = s.samples.length > 0, oe = k && ne > 0 || ne > 1, de = (!ee || ie) && (!te || oe) || this.ISGenerated || k;
if (de) {
this.ISGenerated || (z = this.generateIS(s, v, a));
var re = this.isVideoContiguous, le = -1, me;
if (oe && (le = d(v.samples), !re && this.config.forceKeyFrameOnDiscontinuity))
if (Y = !0, le > 0) {
R.logger.warn("[mp4-remuxer]: Dropped " + le + " out of " + ne + " video samples due to a missing keyframe");
var ve = this.getVideoStartPts(v.samples);
v.samples = v.samples.slice(le), v.dropped += le, q += (v.samples[0].pts - ve) / v.inputTimeScale, me = q;
} else
le === -1 && (R.logger.warn("[mp4-remuxer]: No keyframe found out of " + ne + " video samples"), Y = !1);
if (this.ISGenerated) {
if (ie && oe) {
var pe = this.getVideoStartPts(v.samples), Pe = t(s.samples[0].pts, pe) - pe, ye = Pe / v.inputTimeScale;
Z += Math.max(0, ye), q += Math.max(0, -ye);
}
if (ie) {
if (s.samplerate || (R.logger.warn("[mp4-remuxer]: regenerate InitSegment as audio detected"), z = this.generateIS(s, v, a)), W = this.remuxAudio(s, Z, this.isAudioContiguous, x, te || oe || K === T.PlaylistLevelType.AUDIO ? q : void 0), oe) {
var Ce = W ? W.endPTS - W.startPTS : 0;
v.inputTimeScale || (R.logger.warn("[mp4-remuxer]: regenerate InitSegment as video detected"), z = this.generateIS(s, v, a)), w = this.remuxVideo(v, q, re, Ce);
}
} else
oe && (w = this.remuxVideo(v, q, re, 0));
w && (w.firstKeyFrame = le, w.independent = le !== -1, w.firstKeyFramePTS = me);
}
}
return this.ISGenerated && (c.samples.length && (j = h(c, a, this._initPTS, this._initDTS)), o.samples.length && (H = i(o, a, this._initPTS))), {
audio: W,
video: w,
initSegment: z,
independent: Y,
text: H,
id3: j
};
}, u.generateIS = function(s, v, c) {
var o = s.samples, a = v.samples, x = this.typeSupported, k = {}, K = !(0, P.isFiniteNumber)(this._initPTS), w = "audio/mp4", W, z, H;
if (K && (W = z = 1 / 0), s.config && o.length) {
switch (s.timescale = s.samplerate, s.segmentCodec) {
case "mp3":
x.mpeg ? (w = "audio/mpeg", s.codec = "") : x.mp3 && (s.codec = "mp3");
break;
}
k.audio = {
id: "audio",
container: w,
codec: s.codec,
initSegment: s.segmentCodec === "mp3" && x.mpeg ? new Uint8Array(0) : O.default.initSegment([s]),
metadata: {
channelCount: s.channelCount
}
}, K && (H = s.inputTimeScale, W = z = o[0].pts - Math.round(H * c));
}
if (v.sps && v.pps && a.length && (v.timescale = v.inputTimeScale, k.video = {
id: "main",
container: "video/mp4",
codec: v.codec,
initSegment: O.default.initSegment([v]),
metadata: {
width: v.width,
height: v.height
}
}, K)) {
H = v.inputTimeScale;
var j = this.getVideoStartPts(a), Y = Math.round(H * c);
z = Math.min(z, t(a[0].dts, j) - Y), W = Math.min(W, j - Y);
}
if (Object.keys(k).length)
return this.ISGenerated = !0, K && (this._initPTS = W, this._initDTS = z), {
tracks: k,
initPTS: W,
timescale: H
};
}, u.remuxVideo = function(s, v, c, o) {
var a = s.inputTimeScale, x = s.samples, k = [], K = x.length, w = this._initPTS, W = this.nextAvcDts, z = 8, H = this.videoSampleDuration, j, Y, Z = Number.POSITIVE_INFINITY, q = Number.NEGATIVE_INFINITY, ee = !1;
if (!c || W === null) {
var te = v * a, ne = x[0].pts - t(x[0].dts, x[0].pts);
W = te - ne;
}
for (var ie = 0; ie < K; ie++) {
var oe = x[ie];
oe.pts = t(oe.pts - w, W), oe.dts = t(oe.dts - w, W), oe.dts < x[ie > 0 ? ie - 1 : ie].dts && (ee = !0);
}
ee && x.sort(function(Ut, Zt) {
var ai = Ut.dts - Zt.dts, si = Ut.pts - Zt.pts;
return ai || si;
}), j = x[0].dts, Y = x[x.length - 1].dts;
var de = Y - j, re = de ? Math.round(de / (K - 1)) : H || s.inputTimeScale / 30;
if (c) {
var le = j - W, me = le > re, ve = le < -1;
if ((me || ve) && (me ? R.logger.warn("AVC: " + (0, D.toMsFromMpegTsClock)(le, !0) + " ms (" + le + "dts) hole between fragments detected, filling it") : R.logger.warn("AVC: " + (0, D.toMsFromMpegTsClock)(-le, !0) + " ms (" + le + "dts) overlapping between fragments detected"), !ve || W > x[0].pts)) {
j = W;
var pe = x[0].pts - le;
x[0].dts = j, x[0].pts = pe, R.logger.log("Video: First PTS/DTS adjusted: " + (0, D.toMsFromMpegTsClock)(pe, !0) + "/" + (0, D.toMsFromMpegTsClock)(j, !0) + ", delta: " + (0, D.toMsFromMpegTsClock)(le, !0) + " ms");
}
}
j = Math.max(0, j);
for (var Pe = 0, ye = 0, Ce = 0; Ce < K; Ce++) {
for (var Oe = x[Ce], Ae = Oe.units, Fe = Ae.length, We = 0, He = 0; He < Fe; He++)
We += Ae[He].data.length;
ye += We, Pe += Fe, Oe.length = We, Oe.dts = Math.max(Oe.dts, j), Z = Math.min(Oe.pts, Z), q = Math.max(Oe.pts, q);
}
Y = x[K - 1].dts;
var Ge = ye + 4 * Pe + 8, we;
try {
we = new Uint8Array(Ge);
} catch {
this.observer.emit(C.Events.ERROR, C.Events.ERROR, {
type: F.ErrorTypes.MUX_ERROR,
details: F.ErrorDetails.REMUX_ALLOC_ERROR,
fatal: !1,
bytes: Ge,
reason: "fail allocating video mdat " + Ge
});
return;
}
var Be = new DataView(we.buffer);
Be.setUint32(0, Ge), we.set(O.default.types.mdat, 4);
for (var Ee = !1, rt = Number.POSITIVE_INFINITY, Le = Number.POSITIVE_INFINITY, Me = Number.NEGATIVE_INFINITY, je = Number.NEGATIVE_INFINITY, be = 0; be < K; be++) {
for (var ke = x[be], ze = ke.units, ot = 0, lt = 0, vt = ze.length; lt < vt; lt++) {
var Qe = ze[lt], xt = Qe.data, ut = Qe.data.byteLength;
Be.setUint32(z, ut), z += 4, we.set(xt, z), z += ut, ot += 4 + ut;
}
var it = void 0;
if (be < K - 1)
H = x[be + 1].dts - ke.dts, it = x[be + 1].pts - ke.pts;
else {
var gt = this.config, ft = be > 0 ? ke.dts - x[be - 1].dts : re;
if (it = be > 0 ? ke.pts - x[be - 1].pts : re, gt.stretchShortVideoTrack && this.nextAudioPts !== null) {
var yt = Math.floor(gt.maxBufferHole * a), Q = (o ? Z + o * a : this.nextAudioPts) - ke.pts;
Q > yt ? (H = Q - ft, H < 0 ? H = ft : Ee = !0, R.logger.log("[mp4-remuxer]: It is approximately " + Q / 90 + " ms to the next segment; using duration " + H / 90 + " ms for the last video frame.")) : H = ft;
} else
H = ft;
}
var ge = Math.round(ke.pts - ke.dts);
rt = Math.min(rt, H), Me = Math.max(Me, H), Le = Math.min(Le, it), je = Math.max(je, it), k.push(new r(ke.key, H, ot, ge));
}
if (k.length) {
if (E) {
if (E < 70) {
var Ue = k[0].flags;
Ue.dependsOn = 2, Ue.isNonSync = 0;
}
} else if (l && je - Le < Me - rt && re / Me < 0.025 && k[0].cts === 0) {
R.logger.warn("Found irregular gaps in sample duration. Using PTS instead of DTS to determine MP4 sample duration.");
for (var Xe = j, Ve = 0, Xt = k.length; Ve < Xt; Ve++) {
var Qt = Xe + k[Ve].duration, ei = Xe + k[Ve].cts;
if (Ve < Xt - 1) {
var ti = Qt + k[Ve + 1].cts;
k[Ve].duration = ti - ei;
} else
k[Ve].duration = Ve ? k[Ve - 1].duration : re;
k[Ve].cts = 0, Xe = Qt;
}
}
}
console.assert(H !== null, "mp4SampleDuration must be computed"), H = Ee || !H ? re : H, this.nextAvcDts = W = Y + H, this.videoSampleDuration = H, this.isVideoContiguous = !0;
var ri = O.default.moof(s.sequenceNumber++, j, p({}, s, {
samples: k
})), ii = "video", ni = {
data1: ri,
data2: we,
startPTS: Z / a,
endPTS: (q + H) / a,
startDTS: j / a,
endDTS: W / a,
type: ii,
hasAudio: !1,
hasVideo: !0,
nb: k.length,
dropped: s.dropped
};
return s.samples = [], s.dropped = 0, console.assert(we.length, "MDAT length must not be zero"), ni;
}, u.remuxAudio = function(s, v, c, o, a) {
var x = s.inputTimeScale, k = s.samplerate ? s.samplerate : x, K = x / k, w = s.segmentCodec === "aac" ? b : _, W = w * K, z = this._initPTS, H = s.segmentCodec === "mp3" && this.typeSupported.mpeg, j = [], Y = a !== void 0, Z = s.samples, q = H ? 0 : 8, ee = this.nextAudioPts || -1, te = v * x;
if (this.isAudioContiguous = c = c || Z.length && ee > 0 && (o && Math.abs(te - ee) < 9e3 || Math.abs(t(Z[0].pts - z, te) - ee) < 20 * W), Z.forEach(function(Qe) {
Qe.pts = t(Qe.pts - z, te);
}), !c || ee < 0) {
if (Z = Z.filter(function(Qe) {
return Qe.pts >= 0;
}), !Z.length)
return;
a === 0 ? ee = 0 : o && !Y ? ee = Math.max(0, te) : ee = Z[0].pts;
}
if (s.segmentCodec === "aac")
for (var ne = this.config.maxAudioFramesDrift, ie = 0, oe = ee; ie < Z.length; ie++) {
var de = Z[ie], re = de.pts, le = re - oe, me = Math.abs(1e3 * le / x);
if (le <= -ne * W && Y)
ie === 0 && (R.logger.warn("Audio frame @ " + (re / x).toFixed(3) + "s overlaps nextAudioPts by " + Math.round(1e3 * le / x) + " ms."), this.nextAudioPts = ee = oe = re);
else if (le >= ne * W && me < S && Y) {
var ve = Math.round(le / W);
oe = re - ve * W, oe < 0 && (ve--, oe += W), ie === 0 && (this.nextAudioPts = ee = oe), R.logger.warn("[mp4-remuxer]: Injecting " + ve + " audio frame @ " + (oe / x).toFixed(3) + "s due to " + Math.round(1e3 * le / x) + " ms gap.");
for (var pe = 0; pe < ve; pe++) {
var Pe = Math.max(oe, 0), ye = y.default.getSilentFrame(s.manifestCodec || s.codec, s.channelCount);
ye || (R.logger.log("[mp4-remuxer]: Unable to get silent frame for given audio codec; duplicating last frame instead."), ye = de.unit.subarray()), Z.splice(ie, 0, {
unit: ye,
pts: Pe
}), oe += W, ie++;
}
}
de.pts = oe, oe += W;
}
for (var Ce = null, Oe = null, Ae, Fe = 0, We = Z.length; We--; )
Fe += Z[We].unit.byteLength;
for (var He = 0, Ge = Z.length; He < Ge; He++) {
var we = Z[He], Be = we.unit, Ee = we.pts;
if (Oe !== null) {
var rt = j[He - 1];
rt.duration = Math.round((Ee - Oe) / K);
} else if (c && s.segmentCodec === "aac" && (Ee = ee), Ce = Ee, Fe > 0) {
Fe += q;
try {
Ae = new Uint8Array(Fe);
} catch {
this.observer.emit(C.Events.ERROR, C.Events.ERROR, {
type: F.ErrorTypes.MUX_ERROR,
details: F.ErrorDetails.REMUX_ALLOC_ERROR,
fatal: !1,
bytes: Fe,
reason: "fail allocating audio mdat " + Fe
});
return;
}
if (!H) {
var Le = new DataView(Ae.buffer);
Le.setUint32(0, Fe), Ae.set(O.default.types.mdat, 4);
}
} else
return;
Ae.set(Be, q);
var Me = Be.byteLength;
q += Me, j.push(new r(!0, w, Me, 0)), Oe = Ee;
}
var je = j.length;
if (!!je) {
var be = j[j.length - 1];
this.nextAudioPts = ee = Oe + K * be.duration;
var ke = H ? new Uint8Array(0) : O.default.moof(s.sequenceNumber++, Ce / K, p({}, s, {
samples: j
}));
s.samples = [];
var ze = Ce / x, ot = ee / x, lt = "audio", vt = {
data1: ke,
data2: Ae,
startPTS: ze,
endPTS: ot,
startDTS: ze,
endDTS: ot,
type: lt,
hasAudio: !0,
hasVideo: !1,
nb: je
};
return this.isAudioContiguous = !0, console.assert(Ae.length, "MDAT length must not be zero"), vt;
}
}, u.remuxEmptyAudio = function(s, v, c, o) {
var a = s.inputTimeScale, x = s.samplerate ? s.samplerate : a, k = a / x, K = this.nextAudioPts, w = (K !== null ? K : o.startDTS * a) + this._initDTS, W = o.endDTS * a + this._initDTS, z = k * b, H = Math.ceil((W - w) / z), j = y.default.getSilentFrame(s.manifestCodec || s.codec, s.channelCount);
if (R.logger.warn("[mp4-remuxer]: remux empty Audio"), !j) {
R.logger.trace("[mp4-remuxer]: Unable to remuxEmptyAudio since we were unable to get a silent frame for given audio codec");
return;
}
for (var Y = [], Z = 0; Z < H; Z++) {
var q = w + Z * z;
Y.push({
unit: j,
pts: q,
dts: q
});
}
return s.samples = Y, this.remuxAudio(s, v, c, !1);
}, f;
}();
function t(f, u) {
var m;
if (u === null)
return f;
for (u < f ? m = -8589934592 : m = 8589934592; Math.abs(f - u) > 4294967296; )
f += m;
return f;
}
function d(f) {
for (var u = 0; u < f.length; u++)
if (f[u].key)
return u;
return -1;
}
function h(f, u, m, s) {
var v = f.samples.length;
if (!!v) {
for (var c = f.inputTimeScale, o = 0; o < v; o++) {
var a = f.samples[o];
a.pts = t(a.pts - m, u * c) / c, a.dts = t(a.dts - s, u * c) / c;
}
var x = f.samples;
return f.samples = [], {
samples: x
};
}
}
function i(f, u, m) {
var s = f.samples.length;
if (!!s) {
for (var v = f.inputTimeScale, c = 0; c < s; c++) {
var o = f.samples[c];
o.pts = t(o.pts - m, u * v) / v;
}
f.samples.sort(function(x, k) {
return x.pts - k.pts;
});
var a = f.samples;
return f.samples = [], {
samples: a
};
}
}
var r = function(u, m, s, v) {
this.size = void 0, this.duration = void 0, this.cts = void 0, this.flags = void 0, this.duration = m, this.size = s, this.cts = v, this.flags = new e(u);
}, e = function(u) {
this.isLeading = 0, this.isDependedOn = 0, this.hasRedundancy = 0, this.degradPrio = 0, this.dependsOn = 1, this.isNonSync = 1, this.dependsOn = u ? 2 : 1, this.isNonSync = u ? 0 : 1;
};
},
"./src/remux/passthrough-remuxer.ts": (U, M, g) => {
g.r(M), g.d(M, {
default: () => D
});
var P = g("./src/polyfills/number.ts"), y = g("./src/remux/mp4-remuxer.ts"), O = g("./src/utils/mp4-tools.ts"), C = g("./src/loader/fragment.ts"), F = g("./src/utils/logger.ts"), R = /* @__PURE__ */ function() {
function p() {
this.emitInitSegment = !1, this.audioCodec = void 0, this.videoCodec = void 0, this.initData = void 0, this.initPTS = void 0, this.initTracks = void 0, this.lastEndTime = null;
}
var S = p.prototype;
return S.destroy = function() {
}, S.resetTimeStamp = function(_) {
this.initPTS = _, this.lastEndTime = null;
}, S.resetNextTimestamp = function() {
this.lastEndTime = null;
}, S.resetInitSegment = function(_, E, l) {
this.audioCodec = E, this.videoCodec = l, this.generateInitSegment(_), this.emitInitSegment = !0;
}, S.generateInitSegment = function(_) {
var E = this.audioCodec, l = this.videoCodec;
if (!_ || !_.byteLength) {
this.initTracks = void 0, this.initData = void 0;
return;
}
var n = this.initData = (0, O.parseInitSegment)(_);
E || (E = T(n.audio, C.ElementaryStreamTypes.AUDIO)), l || (l = T(n.video, C.ElementaryStreamTypes.VIDEO));
var t = {};
n.audio && n.video ? t.audiovideo = {
container: "video/mp4",
codec: E + "," + l,
initSegment: _,
id: "main"
} : n.audio ? t.audio = {
container: "audio/mp4",
codec: E,
initSegment: _,
id: "audio"
} : n.video ? t.video = {
container: "video/mp4",
codec: l,
initSegment: _,
id: "main"
} : F.logger.warn("[passthrough-remuxer.ts]: initSegment does not contain moov or trak boxes."), this.initTracks = t;
}, S.remux = function(_, E, l, n, t) {
var d, h = this.initPTS, i = this.lastEndTime, r = {
audio: void 0,
video: void 0,
text: n,
id3: l,
initSegment: void 0
};
(0, P.isFiniteNumber)(i) || (i = this.lastEndTime = t || 0);
var e = E.samples;
if (!e || !e.length)
return r;
var f = {
initPTS: void 0,
timescale: 1
}, u = this.initData;
if ((!u || !u.length) && (this.generateInitSegment(e), u = this.initData), !u || !u.length)
return F.logger.warn("[passthrough-remuxer.ts]: Failed to generate initSegment."), r;
this.emitInitSegment && (f.tracks = this.initTracks, this.emitInitSegment = !1);
var m = (0, O.getStartDTS)(u, e);
(0, P.isFiniteNumber)(h) || (this.initPTS = f.initPTS = h = m - t);
var s = (0, O.getDuration)(e, u), v = _ ? m - h : i, c = v + s;
(0, O.offsetStartDTS)(u, e, h), s > 0 ? this.lastEndTime = c : (F.logger.warn("Duration parsed from mp4 should be greater than zero"), this.resetNextTimestamp());
var o = !!u.audio, a = !!u.video, x = "";
o && (x += "audio"), a && (x += "video");
var k = {
data1: e,
startPTS: v,
startDTS: v,
endPTS: c,
endDTS: c,
type: x,
hasAudio: o,
hasVideo: a,
nb: 1,
dropped: 0
};
r.audio = k.type === "audio" ? k : void 0, r.video = k.type !== "audio" ? k : void 0, r.initSegment = f;
var K = (d = this.initPTS) != null ? d : 0;
return r.id3 = (0, y.flushTextTrackMetadataCueSamples)(l, t, K, K), n.samples.length && (r.text = (0, y.flushTextTrackUserdataCueSamples)(n, t, K)), r;
}, p;
}();
function T(p, S) {
var b = p == null ? void 0 : p.codec;
return b && b.length > 4 ? b : b === "hvc1" || b === "hev1" ? "hvc1.1.c.L120.90" : b === "av01" ? "av01.0.04M.08" : b === "avc1" || S === C.ElementaryStreamTypes.VIDEO ? "avc1.42e01e" : "mp4a.40.5";
}
const D = R;
},
"./src/task-loop.ts": (U, M, g) => {
g.r(M), g.d(M, {
default: () => P
});
var P = /* @__PURE__ */ function() {
function y() {
this._boundTick = void 0, this._tickTimer = null, this._tickInterval = null, this._tickCallCount = 0, this._boundTick = this.tick.bind(this);
}
var O = y.prototype;
return O.destroy = function() {
this.onHandlerDestroying(), this.onHandlerDestroyed();
}, O.onHandlerDestroying = function() {
this.clearNextTick(), this.clearInterval();
}, O.onHandlerDestroyed = function() {
}, O.hasInterval = function() {
return !!this._tickInterval;
}, O.hasNextTick = function() {
return !!this._tickTimer;
}, O.setInterval = function(F) {
return this._tickInterval ? !1 : (this._tickInterval = self.setInterval(this._boundTick, F), !0);
}, O.clearInterval = function() {
return this._tickInterval ? (self.clearInterval(this._tickInterval), this._tickInterval = null, !0) : !1;
}, O.clearNextTick = function() {
return this._tickTimer ? (self.clearTimeout(this._tickTimer), this._tickTimer = null, !0) : !1;
}, O.tick = function() {
this._tickCallCount++, this._tickCallCount === 1 && (this.doTick(), this._tickCallCount > 1 && this.tickImmediate(), this._tickCallCount = 0);
}, O.tickImmediate = function() {
this.clearNextTick(), this._tickTimer = self.setTimeout(this._boundTick, 0);
}, O.doTick = function() {
}, y;
}();
},
"./src/types/cmcd.ts": (U, M, g) => {
g.r(M), g.d(M, {
CMCDObjectType: () => y,
CMCDStreamType: () => C,
CMCDStreamingFormat: () => O,
CMCDVersion: () => P
});
var P = 1, y;
(function(F) {
F.MANIFEST = "m", F.AUDIO = "a", F.VIDEO = "v", F.MUXED = "av", F.INIT = "i", F.CAPTION = "c", F.TIMED_TEXT = "tt", F.KEY = "k", F.OTHER = "o";
})(y || (y = {}));
var O;
(function(F) {
F.DASH = "d", F.HLS = "h", F.SMOOTH = "s", F.OTHER = "o";
})(O || (O = {}));
var C;
(function(F) {
F.VOD = "v", F.LIVE = "l";
})(C || (C = {}));
},
"./src/types/demuxer.ts": (U, M, g) => {
g.r(M), g.d(M, {
MetadataSchema: () => P
});
var P;
(function(y) {
y.audioId3 = "org.id3", y.dateRange = "com.apple.quicktime.HLS", y.emsg = "https://aomedia.org/emsg/ID3";
})(P || (P = {}));
},
"./src/types/level.ts": (U, M, g) => {
g.r(M), g.d(M, {
HlsSkip: () => O,
HlsUrlParameters: () => F,
Level: () => R,
getSkipValue: () => C
});
function P(T, D) {
for (var p = 0; p < D.length; p++) {
var S = D[p];
S.enumerable = S.enumerable || !1, S.configurable = !0, "value" in S && (S.writable = !0), Object.defineProperty(T, S.key, S);
}
}
function y(T, D, p) {
return D && P(T.prototype, D), p && P(T, p), Object.defineProperty(T, "prototype", { writable: !1 }), T;
}
var O;
(function(T) {
T.No = "", T.Yes = "YES", T.v2 = "v2";
})(O || (O = {}));
function C(T, D) {
var p = T.canSkipUntil, S = T.canSkipDateRanges, b = T.endSN, _ = D !== void 0 ? D - b : 0;
return p && _ < p ? S ? O.v2 : O.Yes : O.No;
}
var F = /* @__PURE__ */ function() {
function T(p, S, b) {
this.msn = void 0, this.part = void 0, this.skip = void 0, this.msn = p, this.part = S, this.skip = b;
}
var D = T.prototype;
return D.addDirectives = function(S) {
var b = new self.URL(S);
return this.msn !== void 0 && b.searchParams.set("_HLS_msn", this.msn.toString()), this.part !== void 0 && b.searchParams.set("_HLS_part", this.part.toString()), this.skip && b.searchParams.set("_HLS_skip", this.skip), b.toString();
}, T;
}(), R = /* @__PURE__ */ function() {
function T(D) {
this.attrs = void 0, this.audioCodec = void 0, this.bitrate = void 0, this.codecSet = void 0, this.height = void 0, this.id = void 0, this.name = void 0, this.videoCodec = void 0, this.width = void 0, this.unknownCodecs = void 0, this.audioGroupIds = void 0, this.details = void 0, this.fragmentError = 0, this.loadError = 0, this.loaded = void 0, this.realBitrate = 0, this.textGroupIds = void 0, this.url = void 0, this._urlId = 0, this.url = [D.url], this.attrs = D.attrs, this.bitrate = D.bitrate, D.details && (this.details = D.details), this.id = D.id || 0, this.name = D.name, this.width = D.width || 0, this.height = D.height || 0, this.audioCodec = D.audioCodec, this.videoCodec = D.videoCodec, this.unknownCodecs = D.unknownCodecs, this.codecSet = [D.videoCodec, D.audioCodec].filter(function(p) {
return p;
}).join(",").replace(/\.[^.,]+/g, "");
}
return y(T, [{
key: "maxBitrate",
get: function() {
return Math.max(this.realBitrate, this.bitrate);
}
}, {
key: "uri",
get: function() {
return this.url[this._urlId] || "";
}
}, {
key: "urlId",
get: function() {
return this._urlId;
},
set: function(p) {
var S = p % this.url.length;
this._urlId !== S && (this.details = void 0, this._urlId = S);
}
}]), T;
}();
},
"./src/types/loader.ts": (U, M, g) => {
g.r(M), g.d(M, {
PlaylistContextType: () => P,
PlaylistLevelType: () => y
});
var P;
(function(O) {
O.MANIFEST = "manifest", O.LEVEL = "level", O.AUDIO_TRACK = "audioTrack", O.SUBTITLE_TRACK = "subtitleTrack";
})(P || (P = {}));
var y;
(function(O) {
O.MAIN = "main", O.AUDIO = "audio", O.SUBTITLE = "subtitle";
})(y || (y = {}));
},
"./src/types/transmuxer.ts": (U, M, g) => {
g.r(M), g.d(M, {
ChunkMetadata: () => P
});
var P = function(C, F, R, T, D, p) {
T === void 0 && (T = 0), D === void 0 && (D = -1), p === void 0 && (p = !1), this.level = void 0, this.sn = void 0, this.part = void 0, this.id = void 0, this.size = void 0, this.partial = void 0, this.transmuxing = y(), this.buffering = {
audio: y(),
video: y(),
audiovideo: y()
}, this.level = C, this.sn = F, this.id = R, this.size = T, this.part = D, this.partial = p;
};
function y() {
return {
start: 0,
executeStart: 0,
executeEnd: 0,
end: 0
};
}
},
"./src/utils/attr-list.ts": (U, M, g) => {
g.r(M), g.d(M, {
AttrList: () => O
});
var P = /^(\d+)x(\d+)$/, y = /\s*(.+?)\s*=((?:\".*?\")|.*?)(?:,|$)/g, O = /* @__PURE__ */ function() {
function C(R) {
typeof R == "string" && (R = C.parseAttrList(R));
for (var T in R)
R.hasOwnProperty(T) && (this[T] = R[T]);
}
var F = C.prototype;
return F.decimalInteger = function(T) {
var D = parseInt(this[T], 10);
return D > Number.MAX_SAFE_INTEGER ? 1 / 0 : D;
}, F.hexadecimalInteger = function(T) {
if (this[T]) {
var D = (this[T] || "0x").slice(2);
D = (D.length & 1 ? "0" : "") + D;
for (var p = new Uint8Array(D.length / 2), S = 0; S < D.length / 2; S++)
p[S] = parseInt(D.slice(S * 2, S * 2 + 2), 16);
return p;
} else
return null;
}, F.hexadecimalIntegerAsNumber = function(T) {
var D = parseInt(this[T], 16);
return D > Number.MAX_SAFE_INTEGER ? 1 / 0 : D;
}, F.decimalFloatingPoint = function(T) {
return parseFloat(this[T]);
}, F.optionalFloat = function(T, D) {
var p = this[T];
return p ? parseFloat(p) : D;
}, F.enumeratedString = function(T) {
return this[T];
}, F.bool = function(T) {
return this[T] === "YES";
}, F.decimalResolution = function(T) {
var D = P.exec(this[T]);
if (D !== null)
return {
width: parseInt(D[1], 10),
height: parseInt(D[2], 10)
};
}, C.parseAttrList = function(T) {
var D, p = {}, S = '"';
for (y.lastIndex = 0; (D = y.exec(T)) !== null; ) {
var b = D[2];
b.indexOf(S) === 0 && b.lastIndexOf(S) === b.length - 1 && (b = b.slice(1, -1)), p[D[1]] = b;
}
return p;
}, C;
}();
},
"./src/utils/binary-search.ts": (U, M, g) => {
g.r(M), g.d(M, {
default: () => y
});
var P = {
search: function(C, F) {
for (var R = 0, T = C.length - 1, D = null, p = null; R <= T; ) {
D = (R + T) / 2 | 0, p = C[D];
var S = F(p);
if (S > 0)
R = D + 1;
else if (S < 0)
T = D - 1;
else
return p;
}
return null;
}
};
const y = P;
},
"./src/utils/buffer-helper.ts": (U, M, g) => {
g.r(M), g.d(M, {
BufferHelper: () => O
});
var P = g("./src/utils/logger.ts"), y = {
length: 0,
start: function() {
return 0;
},
end: function() {
return 0;
}
}, O = /* @__PURE__ */ function() {
function C() {
}
return C.isBuffered = function(R, T) {
try {
if (R) {
for (var D = C.getBuffered(R), p = 0; p < D.length; p++)
if (T >= D.start(p) && T <= D.end(p))
return !0;
}
} catch {
}
return !1;
}, C.bufferInfo = function(R, T, D) {
try {
if (R) {
var p = C.getBuffered(R), S = [], b;
for (b = 0; b < p.length; b++)
S.push({
start: p.start(b),
end: p.end(b)
});
return this.bufferedInfo(S, T, D);
}
} catch {
}
return {
len: 0,
start: T,
end: T,
nextStart: void 0
};
}, C.bufferedInfo = function(R, T, D) {
T = Math.max(0, T), R.sort(function(r, e) {
var f = r.start - e.start;
return f || e.end - r.end;
});
var p = [];
if (D)
for (var S = 0; S < R.length; S++) {
var b = p.length;
if (b) {
var _ = p[b - 1].end;
R[S].start - _ < D ? R[S].end > _ && (p[b - 1].end = R[S].end) : p.push(R[S]);
} else
p.push(R[S]);
}
else
p = R;
for (var E = 0, l, n = T, t = T, d = 0; d < p.length; d++) {
var h = p[d].start, i = p[d].end;
if (T + D >= h && T < i)
n = h, t = i, E = t - T;
else if (T + D < h) {
l = h;
break;
}
}
return {
len: E,
start: n || 0,
end: t || 0,
nextStart: l
};
}, C.getBuffered = function(R) {
try {
return R.buffered;
} catch (T) {
return P.logger.log("failed to get media.buffered", T), y;
}
}, C;
}();
},
"./src/utils/cea-608-parser.ts": (U, M, g) => {
g.r(M), g.d(M, {
CaptionScreen: () => d,
Row: () => t,
default: () => u
});
var P = g("./src/utils/logger.ts"), y = {
42: 225,
92: 233,
94: 237,
95: 243,
96: 250,
123: 231,
124: 247,
125: 209,
126: 241,
127: 9608,
128: 174,
129: 176,
130: 189,
131: 191,
132: 8482,
133: 162,
134: 163,
135: 9834,
136: 224,
137: 32,
138: 232,
139: 226,
140: 234,
141: 238,
142: 244,
143: 251,
144: 193,
145: 201,
146: 211,
147: 218,
148: 220,
149: 252,
150: 8216,
151: 161,
152: 42,
153: 8217,
154: 9473,
155: 169,
156: 8480,
157: 8226,
158: 8220,
159: 8221,
160: 192,
161: 194,
162: 199,
163: 200,
164: 202,
165: 203,
166: 235,
167: 206,
168: 207,
169: 239,
170: 212,
171: 217,
172: 249,
173: 219,
174: 171,
175: 187,
176: 195,
177: 227,
178: 205,
179: 204,
180: 236,
181: 210,
182: 242,
183: 213,
184: 245,
185: 123,
186: 125,
187: 92,
188: 94,
189: 95,
190: 124,
191: 8764,
192: 196,
193: 228,
194: 214,
195: 246,
196: 223,
197: 165,
198: 164,
199: 9475,
200: 197,
201: 229,
202: 216,
203: 248,
204: 9487,
205: 9491,
206: 9495,
207: 9499
}, O = function(s) {
var v = s;
return y.hasOwnProperty(s) && (v = y[s]), String.fromCharCode(v);
}, C = 15, F = 100, R = {
17: 1,
18: 3,
21: 5,
22: 7,
23: 9,
16: 11,
19: 12,
20: 14
}, T = {
17: 2,
18: 4,
21: 6,
22: 8,
23: 10,
19: 13,
20: 15
}, D = {
25: 1,
26: 3,
29: 5,
30: 7,
31: 9,
24: 11,
27: 12,
28: 14
}, p = {
25: 2,
26: 4,
29: 6,
30: 8,
31: 10,
27: 13,
28: 15
}, S = ["white", "green", "blue", "cyan", "red", "yellow", "magenta", "black", "transparent"], b;
(function(m) {
m[m.ERROR = 0] = "ERROR", m[m.TEXT = 1] = "TEXT", m[m.WARNING = 2] = "WARNING", m[m.INFO = 2] = "INFO", m[m.DEBUG = 3] = "DEBUG", m[m.DATA = 3] = "DATA";
})(b || (b = {}));
var _ = /* @__PURE__ */ function() {
function m() {
this.time = null, this.verboseLevel = b.ERROR;
}
var s = m.prototype;
return s.log = function(c, o) {
this.verboseLevel >= c && P.logger.log(this.time + " [" + c + "] " + o);
}, m;
}(), E = function(s) {
for (var v = [], c = 0; c < s.length; c++)
v.push(s[c].toString(16));
return v;
}, l = /* @__PURE__ */ function() {
function m(v, c, o, a, x) {
this.foreground = void 0, this.underline = void 0, this.italics = void 0, this.background = void 0, this.flash = void 0, this.foreground = v || "white", this.underline = c || !1, this.italics = o || !1, this.background = a || "black", this.flash = x || !1;
}
var s = m.prototype;
return s.reset = function() {
this.foreground = "white", this.underline = !1, this.italics = !1, this.background = "black", this.flash = !1;
}, s.setStyles = function(c) {
for (var o = ["foreground", "underline", "italics", "background", "flash"], a = 0; a < o.length; a++) {
var x = o[a];
c.hasOwnProperty(x) && (this[x] = c[x]);
}
}, s.isDefault = function() {
return this.foreground === "white" && !this.underline && !this.italics && this.background === "black" && !this.flash;
}, s.equals = function(c) {
return this.foreground === c.foreground && this.underline === c.underline && this.italics === c.italics && this.background === c.background && this.flash === c.flash;
}, s.copy = function(c) {
this.foreground = c.foreground, this.underline = c.underline, this.italics = c.italics, this.background = c.background, this.flash = c.flash;
}, s.toString = function() {
return "color=" + this.foreground + ", underline=" + this.underline + ", italics=" + this.italics + ", background=" + this.background + ", flash=" + this.flash;
}, m;
}(), n = /* @__PURE__ */ function() {
function m(v, c, o, a, x, k) {
this.uchar = void 0, this.penState = void 0, this.uchar = v || " ", this.penState = new l(c, o, a, x, k);
}
var s = m.prototype;
return s.reset = function() {
this.uchar = " ", this.penState.reset();
}, s.setChar = function(c, o) {
this.uchar = c, this.penState.copy(o);
}, s.setPenState = function(c) {
this.penState.copy(c);
}, s.equals = function(c) {
return this.uchar === c.uchar && this.penState.equals(c.penState);
}, s.copy = function(c) {
this.uchar = c.uchar, this.penState.copy(c.penState);
}, s.isEmpty = function() {
return this.uchar === " " && this.penState.isDefault();
}, m;
}(), t = /* @__PURE__ */ function() {
function m(v) {
this.chars = void 0, this.pos = void 0, this.currPenState = void 0, this.cueStartTime = void 0, this.logger = void 0, this.chars = [];
for (var c = 0; c < F; c++)
this.chars.push(new n());
this.logger = v, this.pos = 0, this.currPenState = new l();
}
var s = m.prototype;
return s.equals = function(c) {
for (var o = !0, a = 0; a < F; a++)
if (!this.chars[a].equals(c.chars[a])) {
o = !1;
break;
}
return o;
}, s.copy = function(c) {
for (var o = 0; o < F; o++)
this.chars[o].copy(c.chars[o]);
}, s.isEmpty = function() {
for (var c = !0, o = 0; o < F; o++)
if (!this.chars[o].isEmpty()) {
c = !1;
break;
}
return c;
}, s.setCursor = function(c) {
this.pos !== c && (this.pos = c), this.pos < 0 ? (this.logger.log(b.DEBUG, "Negative cursor position " + this.pos), this.pos = 0) : this.pos > F && (this.logger.log(b.DEBUG, "Too large cursor position " + this.pos), this.pos = F);
}, s.moveCursor = function(c) {
var o = this.pos + c;
if (c > 1)
for (var a = this.pos + 1; a < o + 1; a++)
this.chars[a].setPenState(this.currPenState);
this.setCursor(o);
}, s.backSpace = function() {
this.moveCursor(-1), this.chars[this.pos].setChar(" ", this.currPenState);
}, s.insertChar = function(c) {
c >= 144 && this.backSpace();
var o = O(c);
if (this.pos >= F) {
this.logger.log(b.ERROR, "Cannot insert " + c.toString(16) + " (" + o + ") at position " + this.pos + ". Skipping it!");
return;
}
this.chars[this.pos].setChar(o, this.currPenState), this.moveCursor(1);
}, s.clearFromPos = function(c) {
var o;
for (o = c; o < F; o++)
this.chars[o].reset();
}, s.clear = function() {
this.clearFromPos(0), this.pos = 0, this.currPenState.reset();
}, s.clearToEndOfRow = function() {
this.clearFromPos(this.pos);
}, s.getTextString = function() {
for (var c = [], o = !0, a = 0; a < F; a++) {
var x = this.chars[a].uchar;
x !== " " && (o = !1), c.push(x);
}
return o ? "" : c.join("");
}, s.setPenStyles = function(c) {
this.currPenState.setStyles(c);
var o = this.chars[this.pos];
o.setPenState(this.currPenState);
}, m;
}(), d = /* @__PURE__ */ function() {
function m(v) {
this.rows = void 0, this.currRow = void 0, this.nrRollUpRows = void 0, this.lastOutputScreen = void 0, this.logger = void 0, this.rows = [];
for (var c = 0; c < C; c++)
this.rows.push(new t(v));
this.logger = v, this.currRow = C - 1, this.nrRollUpRows = null, this.lastOutputScreen = null, this.reset();
}
var s = m.prototype;
return s.reset = function() {
for (var c = 0; c < C; c++)
this.rows[c].clear();
this.currRow = C - 1;
}, s.equals = function(c) {
for (var o = !0, a = 0; a < C; a++)
if (!this.rows[a].equals(c.rows[a])) {
o = !1;
break;
}
return o;
}, s.copy = function(c) {
for (var o = 0; o < C; o++)
this.rows[o].copy(c.rows[o]);
}, s.isEmpty = function() {
for (var c = !0, o = 0; o < C; o++)
if (!this.rows[o].isEmpty()) {
c = !1;
break;
}
return c;
}, s.backSpace = function() {
var c = this.rows[this.currRow];
c.backSpace();
}, s.clearToEndOfRow = function() {
var c = this.rows[this.currRow];
c.clearToEndOfRow();
}, s.insertChar = function(c) {
var o = this.rows[this.currRow];
o.insertChar(c);
}, s.setPen = function(c) {
var o = this.rows[this.currRow];
o.setPenStyles(c);
}, s.moveCursor = function(c) {
var o = this.rows[this.currRow];
o.moveCursor(c);
}, s.setCursor = function(c) {
this.logger.log(b.INFO, "setCursor: " + c);
var o = this.rows[this.currRow];
o.setCursor(c);
}, s.setPAC = function(c) {
this.logger.log(b.INFO, "pacData = " + JSON.stringify(c));
var o = c.row - 1;
if (this.nrRollUpRows && o < this.nrRollUpRows - 1 && (o = this.nrRollUpRows - 1), this.nrRollUpRows && this.currRow !== o) {
for (var a = 0; a < C; a++)
this.rows[a].clear();
var x = this.currRow + 1 - this.nrRollUpRows, k = this.lastOutputScreen;
if (k) {
var K = k.rows[x].cueStartTime, w = this.logger.time;
if (K && w !== null && K < w)
for (var W = 0; W < this.nrRollUpRows; W++)
this.rows[o - this.nrRollUpRows + W + 1].copy(k.rows[x + W]);
}
}
this.currRow = o;
var z = this.rows[this.currRow];
if (c.indent !== null) {
var H = c.indent, j = Math.max(H - 1, 0);
z.setCursor(c.indent), c.color = z.chars[j].penState.foreground;
}
var Y = {
foreground: c.color,
underline: c.underline,
italics: c.italics,
background: "black",
flash: !1
};
this.setPen(Y);
}, s.setBkgData = function(c) {
this.logger.log(b.INFO, "bkgData = " + JSON.stringify(c)), this.backSpace(), this.setPen(c), this.insertChar(32);
}, s.setRollUpRows = function(c) {
this.nrRollUpRows = c;
}, s.rollUp = function() {
if (this.nrRollUpRows === null) {
this.logger.log(b.DEBUG, "roll_up but nrRollUpRows not set yet");
return;
}
this.logger.log(b.TEXT, this.getDisplayText());
var c = this.currRow + 1 - this.nrRollUpRows, o = this.rows.splice(c, 1)[0];
o.clear(), this.rows.splice(this.currRow, 0, o), this.logger.log(b.INFO, "Rolling up");
}, s.getDisplayText = function(c) {
c = c || !1;
for (var o = [], a = "", x = -1, k = 0; k < C; k++) {
var K = this.rows[k].getTextString();
K && (x = k + 1, c ? o.push("Row " + x + ": '" + K + "'") : o.push(K.trim()));
}
return o.length > 0 && (c ? a = "[" + o.join(" | ") + "]" : a = o.join(`
`)), a;
}, s.getTextAndFormat = function() {
return this.rows;
}, m;
}(), h = /* @__PURE__ */ function() {
function m(v, c, o) {
this.chNr = void 0, this.outputFilter = void 0, this.mode = void 0, this.verbose = void 0, this.displayedMemory = void 0, this.nonDisplayedMemory = void 0, this.lastOutputScreen = void 0, this.currRollUpRow = void 0, this.writeScreen = void 0, this.cueStartTime = void 0, this.logger = void 0, this.chNr = v, this.outputFilter = c, this.mode = null, this.verbose = 0, this.displayedMemory = new d(o), this.nonDisplayedMemory = new d(o), this.lastOutputScreen = new d(o), this.currRollUpRow = this.displayedMemory.rows[C - 1], this.writeScreen = this.displayedMemory, this.mode = null, this.cueStartTime = null, this.logger = o;
}
var s = m.prototype;
return s.reset = function() {
this.mode = null, this.displayedMemory.reset(), this.nonDisplayedMemory.reset(), this.lastOutputScreen.reset(), this.outputFilter.reset(), this.currRollUpRow = this.displayedMemory.rows[C - 1], this.writeScreen = this.displayedMemory, this.mode = null, this.cueStartTime = null;
}, s.getHandler = function() {
return this.outputFilter;
}, s.setHandler = function(c) {
this.outputFilter = c;
}, s.setPAC = function(c) {
this.writeScreen.setPAC(c);
}, s.setBkgData = function(c) {
this.writeScreen.setBkgData(c);
}, s.setMode = function(c) {
c !== this.mode && (this.mode = c, this.logger.log(b.INFO, "MODE=" + c), this.mode === "MODE_POP-ON" ? this.writeScreen = this.nonDisplayedMemory : (this.writeScreen = this.displayedMemory, this.writeScreen.reset()), this.mode !== "MODE_ROLL-UP" && (this.displayedMemory.nrRollUpRows = null, this.nonDisplayedMemory.nrRollUpRows = null), this.mode = c);
}, s.insertChars = function(c) {
for (var o = 0; o < c.length; o++)
this.writeScreen.insertChar(c[o]);
var a = this.writeScreen === this.displayedMemory ? "DISP" : "NON_DISP";
this.logger.log(b.INFO, a + ": " + this.writeScreen.getDisplayText(!0)), (this.mode === "MODE_PAINT-ON" || this.mode === "MODE_ROLL-UP") && (this.logger.log(b.TEXT, "DISPLAYED: " + this.displayedMemory.getDisplayText(!0)), this.outputDataUpdate());
}, s.ccRCL = function() {
this.logger.log(b.INFO, "RCL - Resume Caption Loading"), this.setMode("MODE_POP-ON");
}, s.ccBS = function() {
this.logger.log(b.INFO, "BS - BackSpace"), this.mode !== "MODE_TEXT" && (this.writeScreen.backSpace(), this.writeScreen === this.displayedMemory && this.outputDataUpdate());
}, s.ccAOF = function() {
}, s.ccAON = function() {
}, s.ccDER = function() {
this.logger.log(b.INFO, "DER- Delete to End of Row"), this.writeScreen.clearToEndOfRow(), this.outputDataUpdate();
}, s.ccRU = function(c) {
this.logger.log(b.INFO, "RU(" + c + ") - Roll Up"), this.writeScreen = this.displayedMemory, this.setMode("MODE_ROLL-UP"), this.writeScreen.setRollUpRows(c);
}, s.ccFON = function() {
this.logger.log(b.INFO, "FON - Flash On"), this.writeScreen.setPen({
flash: !0
});
}, s.ccRDC = function() {
this.logger.log(b.INFO, "RDC - Resume Direct Captioning"), this.setMode("MODE_PAINT-ON");
}, s.ccTR = function() {
this.logger.log(b.INFO, "TR"), this.setMode("MODE_TEXT");
}, s.ccRTD = function() {
this.logger.log(b.INFO, "RTD"), this.setMode("MODE_TEXT");
}, s.ccEDM = function() {
this.logger.log(b.INFO, "EDM - Erase Displayed Memory"), this.displayedMemory.reset(), this.outputDataUpdate(!0);
}, s.ccCR = function() {
this.logger.log(b.INFO, "CR - Carriage Return"), this.writeScreen.rollUp(), this.outputDataUpdate(!0);
}, s.ccENM = function() {
this.logger.log(b.INFO, "ENM - Erase Non-displayed Memory"), this.nonDisplayedMemory.reset();
}, s.ccEOC = function() {
if (this.logger.log(b.INFO, "EOC - End Of Caption"), this.mode === "MODE_POP-ON") {
var c = this.displayedMemory;
this.displayedMemory = this.nonDisplayedMemory, this.nonDisplayedMemory = c, this.writeScreen = this.nonDisplayedMemory, this.logger.log(b.TEXT, "DISP: " + this.displayedMemory.getDisplayText());
}
this.outputDataUpdate(!0);
}, s.ccTO = function(c) {
this.logger.log(b.INFO, "TO(" + c + ") - Tab Offset"), this.writeScreen.moveCursor(c);
}, s.ccMIDROW = function(c) {
var o = {
flash: !1
};
if (o.underline = c % 2 === 1, o.italics = c >= 46, o.italics)
o.foreground = "white";
else {
var a = Math.floor(c / 2) - 16, x = ["white", "green", "blue", "cyan", "red", "yellow", "magenta"];
o.foreground = x[a];
}
this.logger.log(b.INFO, "MIDROW: " + JSON.stringify(o)), this.writeScreen.setPen(o);
}, s.outputDataUpdate = function(c) {
c === void 0 && (c = !1);
var o = this.logger.time;
o !== null && this.outputFilter && (this.cueStartTime === null && !this.displayedMemory.isEmpty() ? this.cueStartTime = o : this.displayedMemory.equals(this.lastOutputScreen) || (this.outputFilter.newCue(this.cueStartTime, o, this.lastOutputScreen), c && this.outputFilter.dispatchCue && this.outputFilter.dispatchCue(), this.cueStartTime = this.displayedMemory.isEmpty() ? null : o), this.lastOutputScreen.copy(this.displayedMemory));
}, s.cueSplitAtTime = function(c) {
this.outputFilter && (this.displayedMemory.isEmpty() || (this.outputFilter.newCue && this.outputFilter.newCue(this.cueStartTime, c, this.displayedMemory), this.cueStartTime = c));
}, m;
}(), i = /* @__PURE__ */ function() {
function m(v, c, o) {
this.channels = void 0, this.currentChannel = 0, this.cmdHistory = void 0, this.logger = void 0;
var a = new _();
this.channels = [null, new h(v, c, a), new h(v + 1, o, a)], this.cmdHistory = f(), this.logger = a;
}
var s = m.prototype;
return s.getHandler = function(c) {
return this.channels[c].getHandler();
}, s.setHandler = function(c, o) {
this.channels[c].setHandler(o);
}, s.addData = function(c, o) {
var a, x, k, K = !1;
this.logger.time = c;
for (var w = 0; w < o.length; w += 2)
if (x = o[w] & 127, k = o[w + 1] & 127, !(x === 0 && k === 0)) {
if (this.logger.log(b.DATA, "[" + E([o[w], o[w + 1]]) + "] -> (" + E([x, k]) + ")"), a = this.parseCmd(x, k), a || (a = this.parseMidrow(x, k)), a || (a = this.parsePAC(x, k)), a || (a = this.parseBackgroundAttributes(x, k)), !a && (K = this.parseChars(x, k), K)) {
var W = this.currentChannel;
if (W && W > 0) {
var z = this.channels[W];
z.insertChars(K);
} else
this.logger.log(b.WARNING, "No channel found yet. TEXT-MODE?");
}
!a && !K && this.logger.log(b.WARNING, "Couldn't parse cleaned data " + E([x, k]) + " orig: " + E([o[w], o[w + 1]]));
}
}, s.parseCmd = function(c, o) {
var a = this.cmdHistory, x = (c === 20 || c === 28 || c === 21 || c === 29) && o >= 32 && o <= 47, k = (c === 23 || c === 31) && o >= 33 && o <= 35;
if (!(x || k))
return !1;
if (e(c, o, a))
return r(null, null, a), this.logger.log(b.DEBUG, "Repeated command (" + E([c, o]) + ") is dropped"), !0;
var K = c === 20 || c === 21 || c === 23 ? 1 : 2, w = this.channels[K];
return c === 20 || c === 21 || c === 28 || c === 29 ? o === 32 ? w.ccRCL() : o === 33 ? w.ccBS() : o === 34 ? w.ccAOF() : o === 35 ? w.ccAON() : o === 36 ? w.ccDER() : o === 37 ? w.ccRU(2) : o === 38 ? w.ccRU(3) : o === 39 ? w.ccRU(4) : o === 40 ? w.ccFON() : o === 41 ? w.ccRDC() : o === 42 ? w.ccTR() : o === 43 ? w.ccRTD() : o === 44 ? w.ccEDM() : o === 45 ? w.ccCR() : o === 46 ? w.ccENM() : o === 47 && w.ccEOC() : w.ccTO(o - 32), r(c, o, a), this.currentChannel = K, !0;
}, s.parseMidrow = function(c, o) {
var a = 0;
if ((c === 17 || c === 25) && o >= 32 && o <= 47) {
if (c === 17 ? a = 1 : a = 2, a !== this.currentChannel)
return this.logger.log(b.ERROR, "Mismatch channel in midrow parsing"), !1;
var x = this.channels[a];
return x ? (x.ccMIDROW(o), this.logger.log(b.DEBUG, "MIDROW (" + E([c, o]) + ")"), !0) : !1;
}
return !1;
}, s.parsePAC = function(c, o) {
var a, x = this.cmdHistory, k = (c >= 17 && c <= 23 || c >= 25 && c <= 31) && o >= 64 && o <= 127, K = (c === 16 || c === 24) && o >= 64 && o <= 95;
if (!(k || K))
return !1;
if (e(c, o, x))
return r(null, null, x), !0;
var w = c <= 23 ? 1 : 2;
o >= 64 && o <= 95 ? a = w === 1 ? R[c] : D[c] : a = w === 1 ? T[c] : p[c];
var W = this.channels[w];
return W ? (W.setPAC(this.interpretPAC(a, o)), r(c, o, x), this.currentChannel = w, !0) : !1;
}, s.interpretPAC = function(c, o) {
var a, x = {
color: null,
italics: !1,
indent: null,
underline: !1,
row: c
};
return o > 95 ? a = o - 96 : a = o - 64, x.underline = (a & 1) === 1, a <= 13 ? x.color = ["white", "green", "blue", "cyan", "red", "yellow", "magenta", "white"][Math.floor(a / 2)] : a <= 15 ? (x.italics = !0, x.color = "white") : x.indent = Math.floor((a - 16) / 2) * 4, x;
}, s.parseChars = function(c, o) {
var a, x = null, k = null;
if (c >= 25 ? (a = 2, k = c - 8) : (a = 1, k = c), k >= 17 && k <= 19) {
var K;
k === 17 ? K = o + 80 : k === 18 ? K = o + 112 : K = o + 144, this.logger.log(b.INFO, "Special char '" + O(K) + "' in channel " + a), x = [K];
} else
c >= 32 && c <= 127 && (x = o === 0 ? [c] : [c, o]);
if (x) {
var w = E(x);
this.logger.log(b.DEBUG, "Char codes = " + w.join(",")), r(c, o, this.cmdHistory);
}
return x;
}, s.parseBackgroundAttributes = function(c, o) {
var a = (c === 16 || c === 24) && o >= 32 && o <= 47, x = (c === 23 || c === 31) && o >= 45 && o <= 47;
if (!(a || x))
return !1;
var k, K = {};
c === 16 || c === 24 ? (k = Math.floor((o - 32) / 2), K.background = S[k], o % 2 === 1 && (K.background = K.background + "_semi")) : o === 45 ? K.background = "transparent" : (K.foreground = "black", o === 47 && (K.underline = !0));
var w = c <= 23 ? 1 : 2, W = this.channels[w];
return W.setBkgData(K), r(c, o, this.cmdHistory), !0;
}, s.reset = function() {
for (var c = 0; c < Object.keys(this.channels).length; c++) {
var o = this.channels[c];
o && o.reset();
}
this.cmdHistory = f();
}, s.cueSplitAtTime = function(c) {
for (var o = 0; o < this.channels.length; o++) {
var a = this.channels[o];
a && a.cueSplitAtTime(c);
}
}, m;
}();
function r(m, s, v) {
v.a = m, v.b = s;
}
function e(m, s, v) {
return v.a === m && v.b === s;
}
function f() {
return {
a: null,
b: null
};
}
const u = i;
},
"./src/utils/codecs.ts": (U, M, g) => {
g.r(M), g.d(M, {
isCodecSupportedInMp4: () => O,
isCodecType: () => y
});
var P = {
audio: {
a3ds: !0,
"ac-3": !0,
"ac-4": !0,
alac: !0,
alaw: !0,
dra1: !0,
"dts+": !0,
"dts-": !0,
dtsc: !0,
dtse: !0,
dtsh: !0,
"ec-3": !0,
enca: !0,
g719: !0,
g726: !0,
m4ae: !0,
mha1: !0,
mha2: !0,
mhm1: !0,
mhm2: !0,
mlpa: !0,
mp4a: !0,
"raw ": !0,
Opus: !0,
opus: !0,
samr: !0,
sawb: !0,
sawp: !0,
sevc: !0,
sqcp: !0,
ssmv: !0,
twos: !0,
ulaw: !0
},
video: {
avc1: !0,
avc2: !0,
avc3: !0,
avc4: !0,
avcp: !0,
av01: !0,
drac: !0,
dva1: !0,
dvav: !0,
dvh1: !0,
dvhe: !0,
encv: !0,
hev1: !0,
hvc1: !0,
mjp2: !0,
mp4v: !0,
mvc1: !0,
mvc2: !0,
mvc3: !0,
mvc4: !0,
resv: !0,
rv60: !0,
s263: !0,
svc1: !0,
svc2: !0,
"vc-1": !0,
vp08: !0,
vp09: !0
},
text: {
stpp: !0,
wvtt: !0
}
};
function y(C, F) {
var R = P[F];
return !!R && R[C.slice(0, 4)] === !0;
}
function O(C, F) {
return MediaSource.isTypeSupported((F || "video") + '/mp4;codecs="' + C + '"');
}
},
"./src/utils/cues.ts": (U, M, g) => {
g.r(M), g.d(M, {
default: () => R
});
var P = g("./src/utils/vttparser.ts"), y = g("./src/utils/webvtt-parser.ts"), O = g("./src/utils/texttrack-utils.ts"), C = /\s/, F = {
newCue: function(D, p, S, b) {
for (var _ = [], E, l, n, t, d, h = self.VTTCue || self.TextTrackCue, i = 0; i < b.rows.length; i++)
if (E = b.rows[i], n = !0, t = 0, d = "", !E.isEmpty()) {
for (var r = 0; r < E.chars.length; r++)
C.test(E.chars[r].uchar) && n ? t++ : (d += E.chars[r].uchar, n = !1);
E.cueStartTime = p, p === S && (S += 1e-4), t >= 16 ? t-- : t++;
var e = (0, P.fixLineBreaks)(d.trim()), f = (0, y.generateCueId)(p, S, e);
(!D || !D.cues || !D.cues.getCueById(f)) && (l = new h(p, S, e), l.id = f, l.line = i + 1, l.align = "left", l.position = 10 + Math.min(80, Math.floor(t * 8 / 32) * 10), _.push(l));
}
return D && _.length && (_.sort(function(u, m) {
return u.line === "auto" || m.line === "auto" ? 0 : u.line > 8 && m.line > 8 ? m.line - u.line : u.line - m.line;
}), _.forEach(function(u) {
return (0, O.addCueToTrack)(D, u);
})), _;
}
};
const R = F;
},
"./src/utils/discontinuities.ts": (U, M, g) => {
g.r(M), g.d(M, {
adjustSlidingStart: () => D,
alignMediaPlaylistByPDT: () => _,
alignPDT: () => b,
alignStream: () => p,
findDiscontinuousReferenceFrag: () => R,
findFirstFragWithCC: () => C,
shouldAlignOnDiscontinuities: () => F
});
var P = g("./src/polyfills/number.ts"), y = g("./src/utils/logger.ts"), O = g("./src/controller/level-helper.ts");
function C(E, l) {
for (var n = null, t = 0, d = E.length; t < d; t++) {
var h = E[t];
if (h && h.cc === l) {
n = h;
break;
}
}
return n;
}
function F(E, l, n) {
return !!(l.details && (n.endCC > n.startCC || E && E.cc < n.startCC));
}
function R(E, l, n) {
var t = E.fragments, d = l.fragments;
if (!d.length || !t.length) {
y.logger.log("No fragments to align");
return;
}
var h = C(t, d[0].cc);
if (!h || h && !h.startPTS) {
y.logger.log("No frag in previous level to align on");
return;
}
return h;
}
function T(E, l) {
if (E) {
var n = E.start + l;
E.start = E.startPTS = n, E.endPTS = n + E.duration;
}
}
function D(E, l) {
for (var n = l.fragments, t = 0, d = n.length; t < d; t++)
T(n[t], E);
l.fragmentHint && T(l.fragmentHint, E), l.alignedSliding = !0;
}
function p(E, l, n) {
!l || (S(E, n, l), !n.alignedSliding && l.details && b(n, l.details), !n.alignedSliding && l.details && !n.skippedSegments && (0, O.adjustSliding)(l.details, n));
}
function S(E, l, n) {
if (F(E, n, l)) {
var t = R(n.details, l);
t && (0, P.isFiniteNumber)(t.start) && (y.logger.log("Adjusting PTS using last level due to CC increase within current level " + l.url), D(t.start, l));
}
}
function b(E, l) {
if (!(!l.fragments.length || !E.hasProgramDateTime || !l.hasProgramDateTime)) {
var n = l.fragments[0].programDateTime, t = E.fragments[0].programDateTime, d = (t - n) / 1e3 + l.fragments[0].start;
d && (0, P.isFiniteNumber)(d) && (y.logger.log("Adjusting PTS using programDateTime delta " + (t - n) + "ms, sliding:" + d.toFixed(3) + " " + E.url + " "), D(d, E));
}
}
function _(E, l) {
if (!(!E.hasProgramDateTime || !l.hasProgramDateTime)) {
var n = E.fragments, t = l.fragments;
if (!(!n.length || !t.length)) {
var d = Math.round(t.length / 2) - 1, h = t[d], i = C(n, h.cc) || n[Math.round(n.length / 2) - 1], r = h.programDateTime, e = i.programDateTime;
if (!(r === null || e === null)) {
var f = (e - r) / 1e3 - (i.start - h.start);
D(f, E);
}
}
}
}
},
"./src/utils/ewma-bandwidth-estimator.ts": (U, M, g) => {
g.r(M), g.d(M, {
default: () => O
});
var P = g("./src/utils/ewma.ts"), y = /* @__PURE__ */ function() {
function C(R, T, D) {
this.defaultEstimate_ = void 0, this.minWeight_ = void 0, this.minDelayMs_ = void 0, this.slow_ = void 0, this.fast_ = void 0, this.defaultEstimate_ = D, this.minWeight_ = 1e-3, this.minDelayMs_ = 50, this.slow_ = new P.default(R), this.fast_ = new P.default(T);
}
var F = C.prototype;
return F.update = function(T, D) {
var p = this.slow_, S = this.fast_;
this.slow_.halfLife !== T && (this.slow_ = new P.default(T, p.getEstimate(), p.getTotalWeight())), this.fast_.halfLife !== D && (this.fast_ = new P.default(D, S.getEstimate(), S.getTotalWeight()));
}, F.sample = function(T, D) {
T = Math.max(T, this.minDelayMs_);
var p = 8 * D, S = T / 1e3, b = p / S;
this.fast_.sample(S, b), this.slow_.sample(S, b);
}, F.canEstimate = function() {
var T = this.fast_;
return T && T.getTotalWeight() >= this.minWeight_;
}, F.getEstimate = function() {
return this.canEstimate() ? Math.min(this.fast_.getEstimate(), this.slow_.getEstimate()) : this.defaultEstimate_;
}, F.destroy = function() {
}, C;
}();
const O = y;
},
"./src/utils/ewma.ts": (U, M, g) => {
g.r(M), g.d(M, {
default: () => y
});
var P = /* @__PURE__ */ function() {
function O(F, R, T) {
R === void 0 && (R = 0), T === void 0 && (T = 0), this.halfLife = void 0, this.alpha_ = void 0, this.estimate_ = void 0, this.totalWeight_ = void 0, this.halfLife = F, this.alpha_ = F ? Math.exp(Math.log(0.5) / F) : 0, this.estimate_ = R, this.totalWeight_ = T;
}
var C = O.prototype;
return C.sample = function(R, T) {
var D = Math.pow(this.alpha_, R);
this.estimate_ = T * (1 - D) + D * this.estimate_, this.totalWeight_ += R;
}, C.getTotalWeight = function() {
return this.totalWeight_;
}, C.getEstimate = function() {
if (this.alpha_) {
var R = 1 - Math.pow(this.alpha_, this.totalWeight_);
if (R)
return this.estimate_ / R;
}
return this.estimate_;
}, O;
}();
const y = P;
},
"./src/utils/fetch-loader.ts": (U, M, g) => {
g.r(M), g.d(M, {
default: () => d,
fetchSupported: () => _
});
var P = g("./src/polyfills/number.ts"), y = g("./src/loader/load-stats.ts"), O = g("./src/demux/chunk-cache.ts");
function C(h, i) {
h.prototype = Object.create(i.prototype), h.prototype.constructor = h, p(h, i);
}
function F(h) {
var i = typeof Map == "function" ? /* @__PURE__ */ new Map() : void 0;
return F = function(e) {
if (e === null || !D(e))
return e;
if (typeof e != "function")
throw new TypeError("Super expression must either be null or a function");
if (typeof i < "u") {
if (i.has(e))
return i.get(e);
i.set(e, f);
}
function f() {
return R(e, arguments, S(this).constructor);
}
return f.prototype = Object.create(e.prototype, { constructor: { value: f, enumerable: !1, writable: !0, configurable: !0 } }), p(f, e);
}, F(h);
}
function R(h, i, r) {
return T() ? R = Reflect.construct.bind() : R = function(f, u, m) {
var s = [null];
s.push.apply(s, u);
var v = Function.bind.apply(f, s), c = new v();
return m && p(c, m.prototype), c;
}, R.apply(null, arguments);
}
function T() {
if (typeof Reflect > "u" || !Reflect.construct || Reflect.construct.sham)
return !1;
if (typeof Proxy == "function")
return !0;
try {
return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {
})), !0;
} catch {
return !1;
}
}
function D(h) {
return Function.toString.call(h).indexOf("[native code]") !== -1;
}
function p(h, i) {
return p = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(e, f) {
return e.__proto__ = f, e;
}, p(h, i);
}
function S(h) {
return S = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function(r) {
return r.__proto__ || Object.getPrototypeOf(r);
}, S(h);
}
function b() {
return b = Object.assign ? Object.assign.bind() : function(h) {
for (var i = 1; i < arguments.length; i++) {
var r = arguments[i];
for (var e in r)
Object.prototype.hasOwnProperty.call(r, e) && (h[e] = r[e]);
}
return h;
}, b.apply(this, arguments);
}
function _() {
if (self.fetch && self.AbortController && self.ReadableStream && self.Request)
try {
return new self.ReadableStream({}), !0;
} catch {
}
return !1;
}
var E = /* @__PURE__ */ function() {
function h(r) {
this.fetchSetup = void 0, this.requestTimeout = void 0, this.request = void 0, this.response = void 0, this.controller = void 0, this.context = void 0, this.config = null, this.callbacks = null, this.stats = void 0, this.loader = null, this.fetchSetup = r.fetchSetup || n, this.controller = new self.AbortController(), this.stats = new y.LoadStats();
}
var i = h.prototype;
return i.destroy = function() {
this.loader = this.callbacks = null, this.abortInternal();
}, i.abortInternal = function() {
var e = this.response;
(!e || !e.ok) && (this.stats.aborted = !0, this.controller.abort());
}, i.abort = function() {
var e;
this.abortInternal(), (e = this.callbacks) !== null && e !== void 0 && e.onAbort && this.callbacks.onAbort(this.stats, this.context, this.response);
}, i.load = function(e, f, u) {
var m = this, s = this.stats;
if (s.loading.start)
throw new Error("Loader can only be used once.");
s.loading.start = self.performance.now();
var v = l(e, this.controller.signal), c = u.onProgress, o = e.responseType === "arraybuffer", a = o ? "byteLength" : "length";
this.context = e, this.config = f, this.callbacks = u, this.request = this.fetchSetup(e, v), self.clearTimeout(this.requestTimeout), this.requestTimeout = self.setTimeout(function() {
m.abortInternal(), u.onTimeout(s, e, m.response);
}, f.timeout), self.fetch(this.request).then(function(x) {
if (m.response = m.loader = x, !x.ok) {
var k = x.status, K = x.statusText;
throw new t(K || "fetch, bad network response", k, x);
}
return s.loading.first = Math.max(self.performance.now(), s.loading.start), s.total = parseInt(x.headers.get("Content-Length") || "0"), c && (0, P.isFiniteNumber)(f.highWaterMark) ? m.loadProgressively(x, s, e, f.highWaterMark, c) : o ? x.arrayBuffer() : x.text();
}).then(function(x) {
var k = m.response;
self.clearTimeout(m.requestTimeout), s.loading.end = Math.max(self.performance.now(), s.loading.first), s.loaded = s.total = x[a];
var K = {
url: k.url,
data: x
};
c && !(0, P.isFiniteNumber)(f.highWaterMark) && c(s, e, x, k), u.onSuccess(K, s, e, k);
}).catch(function(x) {
if (self.clearTimeout(m.requestTimeout), !s.aborted) {
var k = x && x.code || 0, K = x ? x.message : null;
u.onError({
code: k,
text: K
}, e, x ? x.details : null);
}
});
}, i.getCacheAge = function() {
var e = null;
if (this.response) {
var f = this.response.headers.get("age");
e = f ? parseFloat(f) : null;
}
return e;
}, i.loadProgressively = function(e, f, u, m, s) {
m === void 0 && (m = 0);
var v = new O.default(), c = e.body.getReader(), o = function a() {
return c.read().then(function(x) {
if (x.done)
return v.dataLength && s(f, u, v.flush(), e), Promise.resolve(new ArrayBuffer(0));
var k = x.value, K = k.length;
return f.loaded += K, K < m || v.dataLength ? (v.push(k), v.dataLength >= m && s(f, u, v.flush(), e)) : s(f, u, k, e), a();
}).catch(function() {
return Promise.reject();
});
};
return o();
}, h;
}();
function l(h, i) {
var r = {
method: "GET",
mode: "cors",
credentials: "same-origin",
signal: i,
headers: new self.Headers(b({}, h.headers))
};
return h.rangeEnd && r.headers.set("Range", "bytes=" + h.rangeStart + "-" + String(h.rangeEnd - 1)), r;
}
function n(h, i) {
return new self.Request(h.url, i);
}
var t = /* @__PURE__ */ function(h) {
C(i, h);
function i(r, e, f) {
var u;
return u = h.call(this, r) || this, u.code = void 0, u.details = void 0, u.code = e, u.details = f, u;
}
return i;
}(/* @__PURE__ */ F(Error));
const d = E;
},
"./src/utils/imsc1-ttml-parser.ts": (U, M, g) => {
g.r(M), g.d(M, {
IMSC1_CODEC: () => D,
parseIMSC1: () => _
});
var P = g("./src/utils/mp4-tools.ts"), y = g("./src/utils/vttparser.ts"), O = g("./src/utils/vttcue.ts"), C = g("./src/demux/id3.ts"), F = g("./src/utils/timescale-conversion.ts"), R = g("./src/utils/webvtt-parser.ts");
function T() {
return T = Object.assign ? Object.assign.bind() : function(u) {
for (var m = 1; m < arguments.length; m++) {
var s = arguments[m];
for (var v in s)
Object.prototype.hasOwnProperty.call(s, v) && (u[v] = s[v]);
}
return u;
}, T.apply(this, arguments);
}
var D = "stpp.ttml.im1t", p = /^(\d{2,}):(\d{2}):(\d{2}):(\d{2})\.?(\d+)?$/, S = /^(\d*(?:\.\d*)?)(h|m|s|ms|f|t)$/, b = {
left: "start",
center: "center",
right: "end",
start: "start",
end: "end"
};
function _(u, m, s, v, c) {
var o = (0, P.findBox)(new Uint8Array(u), ["mdat"]);
if (o.length === 0) {
c(new Error("Could not parse IMSC1 mdat"));
return;
}
var a = o.map(function(k) {
return (0, C.utf8ArrayToStr)(k);
}), x = (0, F.toTimescaleFromScale)(m, 1, s);
try {
a.forEach(function(k) {
return v(E(k, x));
});
} catch (k) {
c(k);
}
}
function E(u, m) {
var s = new DOMParser(), v = s.parseFromString(u, "text/xml"), c = v.getElementsByTagName("tt")[0];
if (!c)
throw new Error("Invalid ttml");
var o = {
frameRate: 30,
subFrameRate: 1,
frameRateMultiplier: 0,
tickRate: 0
}, a = Object.keys(o).reduce(function(W, z) {
return W[z] = c.getAttribute("ttp:" + z) || o[z], W;
}, {}), x = c.getAttribute("xml:space") !== "preserve", k = n(l(c, "styling", "style")), K = n(l(c, "layout", "region")), w = l(c, "body", "[begin]");
return [].map.call(w, function(W) {
var z = t(W, x);
if (!z || !W.hasAttribute("begin"))
return null;
var H = r(W.getAttribute("begin"), a), j = r(W.getAttribute("dur"), a), Y = r(W.getAttribute("end"), a);
if (H === null)
throw i(W);
if (Y === null) {
if (j === null)
throw i(W);
Y = H + j;
}
var Z = new O.default(H - m, Y - m, z);
Z.id = (0, R.generateCueId)(Z.startTime, Z.endTime, Z.text);
var q = K[W.getAttribute("region")], ee = k[W.getAttribute("style")];
Z.position = 10, Z.size = 80;
var te = d(q, ee, k), ne = te.textAlign;
if (ne) {
var ie = b[ne];
ie && (Z.lineAlign = ie), Z.align = ne;
}
return T(Z, te), Z;
}).filter(function(W) {
return W !== null;
});
}
function l(u, m, s) {
var v = u.getElementsByTagName(m)[0];
return v ? [].slice.call(v.querySelectorAll(s)) : [];
}
function n(u) {
return u.reduce(function(m, s) {
var v = s.getAttribute("xml:id");
return v && (m[v] = s), m;
}, {});
}
function t(u, m) {
return [].slice.call(u.childNodes).reduce(function(s, v, c) {
var o;
return v.nodeName === "br" && c ? s + `
` : (o = v.childNodes) !== null && o !== void 0 && o.length ? t(v, m) : m ? s + v.textContent.trim().replace(/\s+/g, " ") : s + v.textContent;
}, "");
}
function d(u, m, s) {
var v = "http://www.w3.org/ns/ttml#styling", c = null, o = [
"displayAlign",
"textAlign",
"color",
"backgroundColor",
"fontSize",
"fontFamily"
], a = u != null && u.hasAttribute("style") ? u.getAttribute("style") : null;
return a && s.hasOwnProperty(a) && (c = s[a]), o.reduce(function(x, k) {
var K = h(m, v, k) || h(u, v, k) || h(c, v, k);
return K && (x[k] = K), x;
}, {});
}
function h(u, m, s) {
return u && u.hasAttributeNS(m, s) ? u.getAttributeNS(m, s) : null;
}
function i(u) {
return new Error("Could not parse ttml timestamp " + u);
}
function r(u, m) {
if (!u)
return null;
var s = (0, y.parseTimeStamp)(u);
return s === null && (p.test(u) ? s = e(u, m) : S.test(u) && (s = f(u, m))), s;
}
function e(u, m) {
var s = p.exec(u), v = (s[4] | 0) + (s[5] | 0) / m.subFrameRate;
return (s[1] | 0) * 3600 + (s[2] | 0) * 60 + (s[3] | 0) + v / m.frameRate;
}
function f(u, m) {
var s = S.exec(u), v = Number(s[1]), c = s[2];
switch (c) {
case "h":
return v * 3600;
case "m":
return v * 60;
case "ms":
return v * 1e3;
case "f":
return v / m.frameRate;
case "t":
return v / m.tickRate;
}
return v;
}
},
"./src/utils/logger.ts": (U, M, g) => {
g.r(M), g.d(M, {
enableLogs: () => R,
logger: () => T
});
var P = function() {
}, y = {
trace: P,
debug: P,
log: P,
warn: P,
info: P,
error: P
}, O = y;
function C(D) {
var p = self.console[D];
return p ? p.bind(self.console, "[" + D + "] >") : P;
}
function F(D) {
for (var p = arguments.length, S = new Array(p > 1 ? p - 1 : 0), b = 1; b < p; b++)
S[b - 1] = arguments[b];
S.forEach(function(_) {
O[_] = D[_] ? D[_].bind(D) : C(_);
});
}
function R(D, p) {
if (self.console && D === !0 || typeof D == "object") {
F(
D,
"debug",
"log",
"info",
"warn",
"error"
);
try {
O.log('Debug logs enabled for "' + p + '"');
} catch {
O = y;
}
} else
O = y;
}
var T = O;
},
"./src/utils/mediakeys-helper.ts": (U, M, g) => {
g.r(M), g.d(M, {
KeySystems: () => P,
requestMediaKeySystemAccess: () => y
});
var P;
(function(O) {
O.WIDEVINE = "com.widevine.alpha", O.PLAYREADY = "com.microsoft.playready";
})(P || (P = {}));
var y = function() {
return typeof self < "u" && self.navigator && self.navigator.requestMediaKeySystemAccess ? self.navigator.requestMediaKeySystemAccess.bind(self.navigator) : null;
}();
},
"./src/utils/mediasource-helper.ts": (U, M, g) => {
g.r(M), g.d(M, {
getMediaSource: () => P
});
function P() {
return self.MediaSource || self.WebKitMediaSource;
}
},
"./src/utils/mp4-tools.ts": (U, M, g) => {
g.r(M), g.d(M, {
RemuxerTrackIdConfig: () => R,
appendUint8Array: () => r,
bin2str: () => T,
computeRawDurationFromSamples: () => d,
discardEPB: () => s,
findBox: () => _,
getDuration: () => t,
getStartDTS: () => n,
offsetStartDTS: () => h,
parseEmsg: () => v,
parseInitSegment: () => l,
parseSEIMessageFromNALu: () => m,
parseSamples: () => e,
parseSegmentIndex: () => E,
readSint32: () => S,
readUint16: () => D,
readUint32: () => p,
segmentValidRange: () => i,
writeUint32: () => b
});
var P = g("./src/utils/typed-array.ts"), y = g("./src/loader/fragment.ts"), O = g("./src/demux/id3.ts"), C = Math.pow(2, 32) - 1, F = [].push, R = {
video: 1,
audio: 2,
id3: 3,
text: 4
};
function T(c) {
return String.fromCharCode.apply(null, c);
}
function D(c, o) {
var a = c[o] << 8 | c[o + 1];
return a < 0 ? 65536 + a : a;
}
function p(c, o) {
var a = S(c, o);
return a < 0 ? 4294967296 + a : a;
}
function S(c, o) {
return c[o] << 24 | c[o + 1] << 16 | c[o + 2] << 8 | c[o + 3];
}
function b(c, o, a) {
c[o] = a >> 24, c[o + 1] = a >> 16 & 255, c[o + 2] = a >> 8 & 255, c[o + 3] = a & 255;
}
function _(c, o) {
var a = [];
if (!o.length)
return a;
for (var x = c.byteLength, k = 0; k < x; ) {
var K = p(c, k), w = T(c.subarray(k + 4, k + 8)), W = K > 1 ? k + K : x;
if (w === o[0])
if (o.length === 1)
a.push(c.subarray(k + 8, W));
else {
var z = _(c.subarray(k + 8, W), o.slice(1));
z.length && F.apply(a, z);
}
k = W;
}
return a;
}
function E(c) {
var o = [], a = c[0], x = 8, k = p(c, x);
x += 4;
var K = 0, w = 0;
a === 0 ? x += 8 : x += 16, x += 2;
var W = c.length + w, z = D(c, x);
x += 2;
for (var H = 0; H < z; H++) {
var j = x, Y = p(c, j);
j += 4;
var Z = Y & 2147483647, q = (Y & 2147483648) >>> 31;
if (q === 1)
return console.warn("SIDX has hierarchical references (not supported)"), null;
var ee = p(c, j);
j += 4, o.push({
referenceSize: Z,
subsegmentDuration: ee,
info: {
duration: ee / k,
start: W,
end: W + Z - 1
}
}), W += Z, j += 4, x = j;
}
return {
earliestPresentationTime: K,
timescale: k,
version: a,
referencesCount: z,
references: o
};
}
function l(c) {
for (var o = [], a = _(c, ["moov", "trak"]), x = 0; x < a.length; x++) {
var k = a[x], K = _(k, ["tkhd"])[0];
if (K) {
var w = K[0], W = w === 0 ? 12 : 20, z = p(K, W), H = _(k, ["mdia", "mdhd"])[0];
if (H) {
w = H[0], W = w === 0 ? 12 : 20;
var j = p(H, W), Y = _(k, ["mdia", "hdlr"])[0];
if (Y) {
var Z = T(Y.subarray(8, 12)), q = {
soun: y.ElementaryStreamTypes.AUDIO,
vide: y.ElementaryStreamTypes.VIDEO
}[Z];
if (q) {
var ee = _(k, ["mdia", "minf", "stbl", "stsd"])[0], te = void 0;
ee && (te = T(ee.subarray(12, 16))), o[z] = {
timescale: j,
type: q
}, o[q] = {
timescale: j,
id: z,
codec: te
};
}
}
}
}
}
var ne = _(c, ["moov", "mvex", "trex"]);
return ne.forEach(function(ie) {
var oe = p(ie, 4), de = o[oe];
de && (de.default = {
duration: p(ie, 12),
flags: p(ie, 20)
});
}), o;
}
function n(c, o) {
return _(o, ["moof", "traf"]).reduce(function(a, x) {
var k = _(x, ["tfdt"])[0], K = k[0], w = _(x, ["tfhd"]).reduce(function(W, z) {
var H = p(z, 4), j = c[H];
if (j) {
var Y = p(k, 4);
K === 1 && (Y *= Math.pow(2, 32), Y += p(k, 8));
var Z = j.timescale || 9e4, q = Y / Z;
if (isFinite(q) && (W === null || q < W))
return q;
}
return W;
}, null);
return w !== null && isFinite(w) && (a === null || w < a) ? w : a;
}, null) || 0;
}
function t(c, o) {
for (var a = 0, x = 0, k = 0, K = _(c, ["moof", "traf"]), w = 0; w < K.length; w++) {
var W = K[w], z = _(W, ["tfhd"])[0], H = p(z, 4), j = o[H];
if (!!j) {
var Y = j.default, Z = p(z, 0) | (Y == null ? void 0 : Y.flags), q = Y == null ? void 0 : Y.duration;
Z & 8 && (Z & 2 ? q = p(z, 12) : q = p(z, 8));
for (var ee = j.timescale || 9e4, te = _(W, ["trun"]), ne = 0; ne < te.length; ne++) {
if (a = d(te[ne]), !a && q) {
var ie = p(te[ne], 4);
a = q * ie;
}
j.type === y.ElementaryStreamTypes.VIDEO ? x += a / ee : j.type === y.ElementaryStreamTypes.AUDIO && (k += a / ee);
}
}
}
if (x === 0 && k === 0) {
for (var oe = 0, de = _(c, ["sidx"]), re = 0; re < de.length; re++) {
var le = E(de[re]);
le != null && le.references && (oe += le.references.reduce(function(me, ve) {
return me + ve.info.duration || 0;
}, 0));
}
return oe;
}
return x || k;
}
function d(c) {
var o = p(c, 0), a = 8;
o & 1 && (a += 4), o & 4 && (a += 4);
for (var x = 0, k = p(c, 4), K = 0; K < k; K++) {
if (o & 256) {
var w = p(c, a);
x += w, a += 4;
}
o & 512 && (a += 4), o & 1024 && (a += 4), o & 2048 && (a += 4);
}
return x;
}
function h(c, o, a) {
_(o, ["moof", "traf"]).forEach(function(x) {
_(x, ["tfhd"]).forEach(function(k) {
var K = p(k, 4), w = c[K];
if (!!w) {
var W = w.timescale || 9e4;
_(x, ["tfdt"]).forEach(function(z) {
var H = z[0], j = p(z, 4);
if (H === 0)
j -= a * W, j = Math.max(j, 0), b(z, 4, j);
else {
j *= Math.pow(2, 32), j += p(z, 8), j -= a * W, j = Math.max(j, 0);
var Y = Math.floor(j / (C + 1)), Z = Math.floor(j % (C + 1));
b(z, 4, Y), b(z, 8, Z);
}
});
}
});
});
}
function i(c) {
var o = {
valid: null,
remainder: null
}, a = _(c, ["moof"]);
if (a) {
if (a.length < 2)
return o.remainder = c, o;
} else
return o;
var x = a[a.length - 1];
return o.valid = (0, P.sliceUint8)(c, 0, x.byteOffset - 8), o.remainder = (0, P.sliceUint8)(c, x.byteOffset - 8), o;
}
function r(c, o) {
var a = new Uint8Array(c.length + o.length);
return a.set(c), a.set(o, c.length), a;
}
function e(c, o) {
var a = [], x = o.samples, k = o.timescale, K = o.id, w = !1, W = _(x, ["moof"]);
return W.map(function(z) {
var H = z.byteOffset - 8, j = _(z, ["traf"]);
j.map(function(Y) {
var Z = _(Y, ["tfdt"]).map(function(q) {
var ee = q[0], te = p(q, 4);
return ee === 1 && (te *= Math.pow(2, 32), te += p(q, 8)), te / k;
})[0];
return Z !== void 0 && (c = Z), _(Y, ["tfhd"]).map(function(q) {
var ee = p(q, 4), te = p(q, 0) & 16777215, ne = (te & 1) !== 0, ie = (te & 2) !== 0, oe = (te & 8) !== 0, de = 0, re = (te & 16) !== 0, le = 0, me = (te & 32) !== 0, ve = 8;
ee === K && (ne && (ve += 8), ie && (ve += 4), oe && (de = p(q, ve), ve += 4), re && (le = p(q, ve), ve += 4), me && (ve += 4), o.type === "video" && (w = f(o.codec)), _(Y, ["trun"]).map(function(pe) {
var Pe = pe[0], ye = p(pe, 0) & 16777215, Ce = (ye & 1) !== 0, Oe = 0, Ae = (ye & 4) !== 0, Fe = (ye & 256) !== 0, We = 0, He = (ye & 512) !== 0, Ge = 0, we = (ye & 1024) !== 0, Be = (ye & 2048) !== 0, Ee = 0, rt = p(pe, 4), Le = 8;
Ce && (Oe = p(pe, Le), Le += 4), Ae && (Le += 4);
for (var Me = Oe + H, je = 0; je < rt; je++) {
if (Fe ? (We = p(pe, Le), Le += 4) : We = de, He ? (Ge = p(pe, Le), Le += 4) : Ge = le, we && (Le += 4), Be && (Pe === 0 ? Ee = p(pe, Le) : Ee = S(pe, Le), Le += 4), o.type === y.ElementaryStreamTypes.VIDEO)
for (var be = 0; be < Ge; ) {
var ke = p(x, Me);
if (Me += 4, u(w, x[Me])) {
var ze = x.subarray(Me, Me + ke);
m(ze, w ? 2 : 1, c + Ee / k, a);
}
Me += ke, be += ke + 4;
}
c += We / k;
}
}));
});
});
}), a;
}
function f(c) {
if (!c)
return !1;
var o = c.indexOf("."), a = o < 0 ? c : c.substring(0, o);
return a === "hvc1" || a === "hev1" || a === "dvh1" || a === "dvhe";
}
function u(c, o) {
if (c) {
var a = o >> 1 & 63;
return a === 39 || a === 40;
} else {
var x = o & 31;
return x === 6;
}
}
function m(c, o, a, x) {
var k = s(c), K = 0;
K += o;
for (var w = 0, W = 0, z = !1, H = 0; K < k.length; ) {
w = 0;
do {
if (K >= k.length)
break;
H = k[K++], w += H;
} while (H === 255);
W = 0;
do {
if (K >= k.length)
break;
H = k[K++], W += H;
} while (H === 255);
var j = k.length - K;
if (!z && w === 4 && K < k.length) {
z = !0;
var Y = k[K++];
if (Y === 181) {
var Z = D(k, K);
if (K += 2, Z === 49) {
var q = p(k, K);
if (K += 4, q === 1195456820) {
var ee = k[K++];
if (ee === 3) {
var te = k[K++], ne = 31 & te, ie = 64 & te, oe = ie ? 2 + ne * 3 : 0, de = new Uint8Array(oe);
if (ie) {
de[0] = te;
for (var re = 1; re < oe; re++)
de[re] = k[K++];
}
x.push({
type: ee,
payloadType: w,
pts: a,
bytes: de
});
}
}
}
}
} else if (w === 5 && W < j) {
if (z = !0, W > 16) {
for (var le = [], me = 0; me < 16; me++) {
var ve = k[K++].toString(16);
le.push(ve.length == 1 ? "0" + ve : ve), (me === 3 || me === 5 || me === 7 || me === 9) && le.push("-");
}
for (var pe = W - 16, Pe = new Uint8Array(pe), ye = 0; ye < pe; ye++)
Pe[ye] = k[K++];
x.push({
payloadType: w,
pts: a,
uuid: le.join(""),
userData: (0, O.utf8ArrayToStr)(Pe),
userDataBytes: Pe
});
}
} else if (W < j)
K += W;
else if (W > j)
break;
}
}
function s(c) {
for (var o = c.byteLength, a = [], x = 1; x < o - 2; )
c[x] === 0 && c[x + 1] === 0 && c[x + 2] === 3 ? (a.push(x + 2), x += 2) : x++;
if (a.length === 0)
return c;
var k = o - a.length, K = new Uint8Array(k), w = 0;
for (x = 0; x < k; w++, x++)
w === a[0] && (w++, a.shift()), K[x] = c[w];
return K;
}
function v(c) {
var o = c[0], a = "", x = "", k = 0, K = 0, w = 0, W = 0, z = 0, H = 0;
if (o === 0) {
for (; T(c.subarray(H, H + 1)) !== "\0"; )
a += T(c.subarray(H, H + 1)), H += 1;
for (a += T(c.subarray(H, H + 1)), H += 1; T(c.subarray(H, H + 1)) !== "\0"; )
x += T(c.subarray(H, H + 1)), H += 1;
x += T(c.subarray(H, H + 1)), H += 1, k = p(c, 12), K = p(c, 16), W = p(c, 20), z = p(c, 24), H = 28;
} else if (o === 1) {
H += 4, k = p(c, H), H += 4;
var j = p(c, H);
H += 4;
var Y = p(c, H);
for (H += 4, w = Math.pow(2, 32) * j + Y, Number.isSafeInteger(w) || (w = Number.MAX_SAFE_INTEGER, console.warn("Presentation time exceeds safe integer limit and wrapped to max safe integer in parsing emsg box")), W = p(c, H), H += 4, z = p(c, H), H += 4; T(c.subarray(H, H + 1)) !== "\0"; )
a += T(c.subarray(H, H + 1)), H += 1;
for (a += T(c.subarray(H, H + 1)), H += 1; T(c.subarray(H, H + 1)) !== "\0"; )
x += T(c.subarray(H, H + 1)), H += 1;
x += T(c.subarray(H, H + 1)), H += 1;
}
var Z = c.subarray(H, c.byteLength);
return {
schemeIdUri: a,
value: x,
timeScale: k,
presentationTime: w,
presentationTimeDelta: K,
eventDuration: W,
id: z,
payload: Z
};
}
},
"./src/utils/output-filter.ts": (U, M, g) => {
g.r(M), g.d(M, {
default: () => P
});
var P = /* @__PURE__ */ function() {
function y(C, F) {
this.timelineController = void 0, this.cueRanges = [], this.trackName = void 0, this.startTime = null, this.endTime = null, this.screen = null, this.timelineController = C, this.trackName = F;
}
var O = y.prototype;
return O.dispatchCue = function() {
this.startTime !== null && (this.timelineController.addCues(this.trackName, this.startTime, this.endTime, this.screen, this.cueRanges), this.startTime = null);
}, O.newCue = function(F, R, T) {
(this.startTime === null || this.startTime > F) && (this.startTime = F), this.endTime = R, this.screen = T, this.timelineController.createCaptionsTrack(this.trackName);
}, O.reset = function() {
this.cueRanges = [], this.startTime = null;
}, y;
}();
},
"./src/utils/texttrack-utils.ts": (U, M, g) => {
g.r(M), g.d(M, {
addCueToTrack: () => O,
clearCurrentCues: () => C,
getCuesInRange: () => T,
removeCuesInRange: () => F,
sendAddTrackEvent: () => y
});
var P = g("./src/utils/logger.ts");
function y(D, p) {
var S;
try {
S = new Event("addtrack");
} catch {
S = document.createEvent("Event"), S.initEvent("addtrack", !1, !1);
}
S.track = D, p.dispatchEvent(S);
}
function O(D, p) {
var S = D.mode;
if (S === "disabled" && (D.mode = "hidden"), D.cues && !D.cues.getCueById(p.id))
try {
if (D.addCue(p), !D.cues.getCueById(p.id))
throw new Error("addCue is failed for: " + p);
} catch (_) {
P.logger.debug("[texttrack-utils]: " + _);
var b = new self.TextTrackCue(p.startTime, p.endTime, p.text);
b.id = p.id, D.addCue(b);
}
S === "disabled" && (D.mode = S);
}
function C(D) {
var p = D.mode;
if (p === "disabled" && (D.mode = "hidden"), D.cues)
for (var S = D.cues.length; S--; )
D.removeCue(D.cues[S]);
p === "disabled" && (D.mode = p);
}
function F(D, p, S, b) {
var _ = D.mode;
if (_ === "disabled" && (D.mode = "hidden"), D.cues && D.cues.length > 0)
for (var E = T(D.cues, p, S), l = 0; l < E.length; l++)
(!b || b(E[l])) && D.removeCue(E[l]);
_ === "disabled" && (D.mode = _);
}
function R(D, p) {
if (p < D[0].startTime)
return 0;
var S = D.length - 1;
if (p > D[S].endTime)
return -1;
for (var b = 0, _ = S; b <= _; ) {
var E = Math.floor((_ + b) / 2);
if (p < D[E].startTime)
_ = E - 1;
else if (p > D[E].startTime && b < S)
b = E + 1;
else
return E;
}
return D[b].startTime - p < p - D[_].startTime ? b : _;
}
function T(D, p, S) {
var b = [], _ = R(D, p);
if (_ > -1)
for (var E = _, l = D.length; E < l; E++) {
var n = D[E];
if (n.startTime >= p && n.endTime <= S)
b.push(n);
else if (n.startTime > S)
return b;
}
return b;
}
},
"./src/utils/time-ranges.ts": (U, M, g) => {
g.r(M), g.d(M, {
default: () => y
});
var P = {
toString: function(C) {
for (var F = "", R = C.length, T = 0; T < R; T++)
F += "[" + C.start(T).toFixed(3) + "," + C.end(T).toFixed(3) + "]";
return F;
}
};
const y = P;
},
"./src/utils/timescale-conversion.ts": (U, M, g) => {
g.r(M), g.d(M, {
toMpegTsClockFromTimescale: () => F,
toMsFromMpegTsClock: () => C,
toTimescaleFromBase: () => y,
toTimescaleFromScale: () => O
});
var P = 9e4;
function y(R, T, D, p) {
D === void 0 && (D = 1), p === void 0 && (p = !1);
var S = R * T * D;
return p ? Math.round(S) : S;
}
function O(R, T, D, p) {
return D === void 0 && (D = 1), p === void 0 && (p = !1), y(R, T, 1 / D, p);
}
function C(R, T) {
return T === void 0 && (T = !1), y(R, 1e3, 1 / P, T);
}
function F(R, T) {
return T === void 0 && (T = 1), y(R, P, 1 / T);
}
},
"./src/utils/typed-array.ts": (U, M, g) => {
g.r(M), g.d(M, {
sliceUint8: () => P
});
function P(y, O, C) {
return Uint8Array.prototype.slice ? y.slice(O, C) : new Uint8Array(Array.prototype.slice.call(y, O, C));
}
},
"./src/utils/vttcue.ts": (U, M, g) => {
g.r(M), g.d(M, {
default: () => P
});
const P = function() {
if (typeof self < "u" && self.VTTCue)
return self.VTTCue;
var y = ["", "lr", "rl"], O = ["start", "middle", "end", "left", "right"];
function C(p, S) {
if (typeof S != "string" || !Array.isArray(p))
return !1;
var b = S.toLowerCase();
return ~p.indexOf(b) ? b : !1;
}
function F(p) {
return C(y, p);
}
function R(p) {
return C(O, p);
}
function T(p) {
for (var S = arguments.length, b = new Array(S > 1 ? S - 1 : 0), _ = 1; _ < S; _++)
b[_ - 1] = arguments[_];
for (var E = 1; E < arguments.length; E++) {
var l = arguments[E];
for (var n in l)
p[n] = l[n];
}
return p;
}
function D(p, S, b) {
var _ = this, E = {
enumerable: !0
};
_.hasBeenReset = !1;
var l = "", n = !1, t = p, d = S, h = b, i = null, r = "", e = !0, f = "auto", u = "start", m = 50, s = "middle", v = 50, c = "middle";
Object.defineProperty(_, "id", T({}, E, {
get: function() {
return l;
},
set: function(a) {
l = "" + a;
}
})), Object.defineProperty(_, "pauseOnExit", T({}, E, {
get: function() {
return n;
},
set: function(a) {
n = !!a;
}
})), Object.defineProperty(_, "startTime", T({}, E, {
get: function() {
return t;
},
set: function(a) {
if (typeof a != "number")
throw new TypeError("Start time must be set to a number.");
t = a, this.hasBeenReset = !0;
}
})), Object.defineProperty(_, "endTime", T({}, E, {
get: function() {
return d;
},
set: function(a) {
if (typeof a != "number")
throw new TypeError("End time must be set to a number.");
d = a, this.hasBeenReset = !0;
}
})), Object.defineProperty(_, "text", T({}, E, {
get: function() {
return h;
},
set: function(a) {
h = "" + a, this.hasBeenReset = !0;
}
})), Object.defineProperty(_, "region", T({}, E, {
get: function() {
return i;
},
set: function(a) {
i = a, this.hasBeenReset = !0;
}
})), Object.defineProperty(_, "vertical", T({}, E, {
get: function() {
return r;
},
set: function(a) {
var x = F(a);
if (x === !1)
throw new SyntaxError("An invalid or illegal string was specified.");
r = x, this.hasBeenReset = !0;
}
})), Object.defineProperty(_, "snapToLines", T({}, E, {
get: function() {
return e;
},
set: function(a) {
e = !!a, this.hasBeenReset = !0;
}
})), Object.defineProperty(_, "line", T({}, E, {
get: function() {
return f;
},
set: function(a) {
if (typeof a != "number" && a !== "auto")
throw new SyntaxError("An invalid number or illegal string was specified.");
f = a, this.hasBeenReset = !0;
}
})), Object.defineProperty(_, "lineAlign", T({}, E, {
get: function() {
return u;
},
set: function(a) {
var x = R(a);
if (!x)
throw new SyntaxError("An invalid or illegal string was specified.");
u = x, this.hasBeenReset = !0;
}
})), Object.defineProperty(_, "position", T({}, E, {
get: function() {
return m;
},
set: function(a) {
if (a < 0 || a > 100)
throw new Error("Position must be between 0 and 100.");
m = a, this.hasBeenReset = !0;
}
})), Object.defineProperty(_, "positionAlign", T({}, E, {
get: function() {
return s;
},
set: function(a) {
var x = R(a);
if (!x)
throw new SyntaxError("An invalid or illegal string was specified.");
s = x, this.hasBeenReset = !0;
}
})), Object.defineProperty(_, "size", T({}, E, {
get: function() {
return v;
},
set: function(a) {
if (a < 0 || a > 100)
throw new Error("Size must be between 0 and 100.");
v = a, this.hasBeenReset = !0;
}
})), Object.defineProperty(_, "align", T({}, E, {
get: function() {
return c;
},
set: function(a) {
var x = R(a);
if (!x)
throw new SyntaxError("An invalid or illegal string was specified.");
c = x, this.hasBeenReset = !0;
}
})), _.displayState = void 0;
}
return D.prototype.getCueAsHTML = function() {
var p = self.WebVTT;
return p.convertCueToDOMTree(self, this.text);
}, D;
}();
},
"./src/utils/vttparser.ts": (U, M, g) => {
g.r(M), g.d(M, {
VTTParser: () => S,
fixLineBreaks: () => p,
parseTimeStamp: () => O
});
var P = g("./src/utils/vttcue.ts"), y = /* @__PURE__ */ function() {
function b() {
}
var _ = b.prototype;
return _.decode = function(l, n) {
if (!l)
return "";
if (typeof l != "string")
throw new Error("Error - expected string data.");
return decodeURIComponent(encodeURIComponent(l));
}, b;
}();
function O(b) {
function _(l, n, t, d) {
return (l | 0) * 3600 + (n | 0) * 60 + (t | 0) + parseFloat(d || 0);
}
var E = b.match(/^(?:(\d+):)?(\d{2}):(\d{2})(\.\d+)?/);
return E ? parseFloat(E[2]) > 59 ? _(E[2], E[3], 0, E[4]) : _(E[1], E[2], E[3], E[4]) : null;
}
var C = /* @__PURE__ */ function() {
function b() {
this.values = /* @__PURE__ */ Object.create(null);
}
var _ = b.prototype;
return _.set = function(l, n) {
!this.get(l) && n !== "" && (this.values[l] = n);
}, _.get = function(l, n, t) {
return t ? this.has(l) ? this.values[l] : n[t] : this.has(l) ? this.values[l] : n;
}, _.has = function(l) {
return l in this.values;
}, _.alt = function(l, n, t) {
for (var d = 0; d < t.length; ++d)
if (n === t[d]) {
this.set(l, n);
break;
}
}, _.integer = function(l, n) {
/^-?\d+$/.test(n) && this.set(l, parseInt(n, 10));
}, _.percent = function(l, n) {
if (/^([\d]{1,3})(\.[\d]*)?%$/.test(n)) {
var t = parseFloat(n);
if (t >= 0 && t <= 100)
return this.set(l, t), !0;
}
return !1;
}, b;
}();
function F(b, _, E, l) {
var n = l ? b.split(l) : [b];
for (var t in n)
if (typeof n[t] == "string") {
var d = n[t].split(E);
if (d.length === 2) {
var h = d[0], i = d[1];
_(h, i);
}
}
}
var R = new P.default(0, 0, ""), T = R.align === "middle" ? "middle" : "center";
function D(b, _, E) {
var l = b;
function n() {
var h = O(b);
if (h === null)
throw new Error("Malformed timestamp: " + l);
return b = b.replace(/^[^\sa-zA-Z-]+/, ""), h;
}
function t(h, i) {
var r = new C();
F(h, function(u, m) {
var s;
switch (u) {
case "region":
for (var v = E.length - 1; v >= 0; v--)
if (E[v].id === m) {
r.set(u, E[v].region);
break;
}
break;
case "vertical":
r.alt(u, m, ["rl", "lr"]);
break;
case "line":
s = m.split(","), r.integer(u, s[0]), r.percent(u, s[0]) && r.set("snapToLines", !1), r.alt(u, s[0], ["auto"]), s.length === 2 && r.alt("lineAlign", s[1], ["start", T, "end"]);
break;
case "position":
s = m.split(","), r.percent(u, s[0]), s.length === 2 && r.alt("positionAlign", s[1], ["start", T, "end", "line-left", "line-right", "auto"]);
break;
case "size":
r.percent(u, m);
break;
case "align":
r.alt(u, m, ["start", T, "end", "left", "right"]);
break;
}
}, /:/, /\s/), i.region = r.get("region", null), i.vertical = r.get("vertical", "");
var e = r.get("line", "auto");
e === "auto" && R.line === -1 && (e = -1), i.line = e, i.lineAlign = r.get("lineAlign", "start"), i.snapToLines = r.get("snapToLines", !0), i.size = r.get("size", 100), i.align = r.get("align", T);
var f = r.get("position", "auto");
f === "auto" && R.position === 50 && (f = i.align === "start" || i.align === "left" ? 0 : i.align === "end" || i.align === "right" ? 100 : 50), i.position = f;
}
function d() {
b = b.replace(/^\s+/, "");
}
if (d(), _.startTime = n(), d(), b.slice(0, 3) !== "-->")
throw new Error("Malformed time stamp (time stamps must be separated by '-->'): " + l);
b = b.slice(3), d(), _.endTime = n(), d(), t(b, _);
}
function p(b) {
return b.replace(/<br(?: \/)?>/gi, `
`);
}
var S = /* @__PURE__ */ function() {
function b() {
this.state = "INITIAL", this.buffer = "", this.decoder = new y(), this.regionList = [], this.cue = null, this.oncue = void 0, this.onparsingerror = void 0, this.onflush = void 0;
}
var _ = b.prototype;
return _.parse = function(l) {
var n = this;
l && (n.buffer += n.decoder.decode(l, {
stream: !0
}));
function t() {
var f = n.buffer, u = 0;
for (f = p(f); u < f.length && f[u] !== "\r" && f[u] !== `
`; )
++u;
var m = f.slice(0, u);
return f[u] === "\r" && ++u, f[u] === `
` && ++u, n.buffer = f.slice(u), m;
}
function d(f) {
F(f, function(u, m) {
}, /:/);
}
try {
var h = "";
if (n.state === "INITIAL") {
if (!/\r\n|\n/.test(n.buffer))
return this;
h = t();
var i = h.match(/^()?WEBVTT([ \t].*)?$/);
if (!i || !i[0])
throw new Error("Malformed WebVTT signature.");
n.state = "HEADER";
}
for (var r = !1; n.buffer; ) {
if (!/\r\n|\n/.test(n.buffer))
return this;
switch (r ? r = !1 : h = t(), n.state) {
case "HEADER":
/:/.test(h) ? d(h) : h || (n.state = "ID");
continue;
case "NOTE":
h || (n.state = "ID");
continue;
case "ID":
if (/^NOTE($|[ \t])/.test(h)) {
n.state = "NOTE";
break;
}
if (!h)
continue;
if (n.cue = new P.default(0, 0, ""), n.state = "CUE", h.indexOf("-->") === -1) {
n.cue.id = h;
continue;
}
case "CUE":
if (!n.cue) {
n.state = "BADCUE";
continue;
}
try {
D(h, n.cue, n.regionList);
} catch {
n.cue = null, n.state = "BADCUE";
continue;
}
n.state = "CUETEXT";
continue;
case "CUETEXT":
{
var e = h.indexOf("-->") !== -1;
if (!h || e && (r = !0)) {
n.oncue && n.cue && n.oncue(n.cue), n.cue = null, n.state = "ID";
continue;
}
if (n.cue === null)
continue;
n.cue.text && (n.cue.text += `
`), n.cue.text += h;
}
continue;
case "BADCUE":
h || (n.state = "ID");
}
}
} catch {
n.state === "CUETEXT" && n.cue && n.oncue && n.oncue(n.cue), n.cue = null, n.state = n.state === "INITIAL" ? "BADWEBVTT" : "BADCUE";
}
return this;
}, _.flush = function() {
var l = this;
try {
if ((l.cue || l.state === "HEADER") && (l.buffer += `
`, l.parse()), l.state === "INITIAL" || l.state === "BADWEBVTT")
throw new Error("Malformed WebVTT signature.");
} catch (n) {
l.onparsingerror && l.onparsingerror(n);
}
return l.onflush && l.onflush(), this;
}, b;
}();
},
"./src/utils/webvtt-parser.ts": (U, M, g) => {
g.r(M), g.d(M, {
generateCueId: () => S,
parseWebVTT: () => _
});
var P = g("./src/polyfills/number.ts"), y = g("./src/utils/vttparser.ts"), O = g("./src/demux/id3.ts"), C = g("./src/utils/timescale-conversion.ts"), F = g("./src/remux/mp4-remuxer.ts"), R = /\r\n|\n\r|\n|\r/g, T = function(l, n, t) {
return t === void 0 && (t = 0), l.slice(t, t + n.length) === n;
}, D = function(l) {
var n = parseInt(l.slice(-3)), t = parseInt(l.slice(-6, -4)), d = parseInt(l.slice(-9, -7)), h = l.length > 9 ? parseInt(l.substring(0, l.indexOf(":"))) : 0;
if (!(0, P.isFiniteNumber)(n) || !(0, P.isFiniteNumber)(t) || !(0, P.isFiniteNumber)(d) || !(0, P.isFiniteNumber)(h))
throw Error("Malformed X-TIMESTAMP-MAP: Local:" + l);
return n += 1e3 * t, n += 60 * 1e3 * d, n += 60 * 60 * 1e3 * h, n;
}, p = function(l) {
for (var n = 5381, t = l.length; t; )
n = n * 33 ^ l.charCodeAt(--t);
return (n >>> 0).toString();
};
function S(E, l, n) {
return p(E.toString()) + p(l.toString()) + p(n);
}
var b = function(l, n, t) {
var d = l[n], h = l[d.prevCC];
if (!h || !h.new && d.new) {
l.ccOffset = l.presentationOffset = d.start, d.new = !1;
return;
}
for (; (i = h) !== null && i !== void 0 && i.new; ) {
var i;
l.ccOffset += d.start - h.start, d.new = !1, d = h, h = l[d.prevCC];
}
l.presentationOffset = t;
};
function _(E, l, n, t, d, h, i, r) {
var e = new y.VTTParser(), f = (0, O.utf8ArrayToStr)(new Uint8Array(E)).trim().replace(R, `
`).split(`
`), u = [], m = (0, C.toMpegTsClockFromTimescale)(l, n), s = "00:00.000", v = 0, c = 0, o, a = !0;
e.oncue = function(x) {
var k = t[d], K = t.ccOffset, w = (v - m) / 9e4;
k != null && k.new && (c !== void 0 ? K = t.ccOffset = k.start : b(t, d, w)), w && (K = w - t.presentationOffset);
var W = x.endTime - x.startTime, z = (0, F.normalizePts)((x.startTime + K - c) * 9e4, h * 9e4) / 9e4;
x.startTime = Math.max(z, 0), x.endTime = Math.max(z + W, 0);
var H = x.text.trim();
x.text = decodeURIComponent(encodeURIComponent(H)), x.id || (x.id = S(x.startTime, x.endTime, H)), x.endTime > 0 && u.push(x);
}, e.onparsingerror = function(x) {
o = x;
}, e.onflush = function() {
if (o) {
r(o);
return;
}
i(u);
}, f.forEach(function(x) {
if (a)
if (T(x, "X-TIMESTAMP-MAP=")) {
a = !1, x.slice(16).split(",").forEach(function(k) {
T(k, "LOCAL:") ? s = k.slice(6) : T(k, "MPEGTS:") && (v = parseInt(k.slice(7)));
});
try {
c = D(s) / 1e3;
} catch (k) {
o = k;
}
return;
} else
x === "" && (a = !1);
e.parse(x + `
`);
}), e.flush();
}
},
"./src/utils/xhr-loader.ts": (U, M, g) => {
g.r(M), g.d(M, {
default: () => F
});
var P = g("./src/utils/logger.ts"), y = g("./src/loader/load-stats.ts"), O = /^age:\s*[\d.]+\s*$/m, C = /* @__PURE__ */ function() {
function R(D) {
this.xhrSetup = void 0, this.requestTimeout = void 0, this.retryTimeout = void 0, this.retryDelay = void 0, this.config = null, this.callbacks = null, this.context = void 0, this.loader = null, this.stats = void 0, this.xhrSetup = D ? D.xhrSetup : null, this.stats = new y.LoadStats(), this.retryDelay = 0;
}
var T = R.prototype;
return T.destroy = function() {
this.callbacks = null, this.abortInternal(), this.loader = null, this.config = null;
}, T.abortInternal = function() {
var p = this.loader;
self.clearTimeout(this.requestTimeout), self.clearTimeout(this.retryTimeout), p && (p.onreadystatechange = null, p.onprogress = null, p.readyState !== 4 && (this.stats.aborted = !0, p.abort()));
}, T.abort = function() {
var p;
this.abortInternal(), (p = this.callbacks) !== null && p !== void 0 && p.onAbort && this.callbacks.onAbort(this.stats, this.context, this.loader);
}, T.load = function(p, S, b) {
if (this.stats.loading.start)
throw new Error("Loader can only be used once.");
this.stats.loading.start = self.performance.now(), this.context = p, this.config = S, this.callbacks = b, this.retryDelay = S.retryDelay, this.loadInternal();
}, T.loadInternal = function() {
var p = this.config, S = this.context;
if (!!p) {
var b = this.loader = new self.XMLHttpRequest(), _ = this.stats;
_.loading.first = 0, _.loaded = 0;
var E = this.xhrSetup;
try {
if (E)
try {
E(b, S.url);
} catch {
b.open("GET", S.url, !0), E(b, S.url);
}
b.readyState || b.open("GET", S.url, !0);
var l = this.context.headers;
if (l)
for (var n in l)
b.setRequestHeader(n, l[n]);
} catch (t) {
this.callbacks.onError({
code: b.status,
text: t.message
}, S, b);
return;
}
S.rangeEnd && b.setRequestHeader("Range", "bytes=" + S.rangeStart + "-" + (S.rangeEnd - 1)), b.onreadystatechange = this.readystatechange.bind(this), b.onprogress = this.loadprogress.bind(this), b.responseType = S.responseType, self.clearTimeout(this.requestTimeout), this.requestTimeout = self.setTimeout(this.loadtimeout.bind(this), p.timeout), b.send();
}
}, T.readystatechange = function() {
var p = this.context, S = this.loader, b = this.stats;
if (!(!p || !S)) {
var _ = S.readyState, E = this.config;
if (!b.aborted && _ >= 2)
if (self.clearTimeout(this.requestTimeout), b.loading.first === 0 && (b.loading.first = Math.max(self.performance.now(), b.loading.start)), _ === 4) {
S.onreadystatechange = null, S.onprogress = null;
var l = S.status, n = S.responseType === "arraybuffer";
if (l >= 200 && l < 300 && (n && S.response || S.responseText !== null)) {
b.loading.end = Math.max(self.performance.now(), b.loading.first);
var t, d;
if (n ? (t = S.response, d = t.byteLength) : (t = S.responseText, d = t.length), b.loaded = b.total = d, !this.callbacks)
return;
var h = this.callbacks.onProgress;
if (h && h(b, p, t, S), !this.callbacks)
return;
var i = {
url: S.responseURL,
data: t
};
this.callbacks.onSuccess(i, b, p, S);
} else
b.retry >= E.maxRetry || l >= 400 && l < 499 ? (P.logger.error(l + " while loading " + p.url), this.callbacks.onError({
code: l,
text: S.statusText
}, p, S)) : (P.logger.warn(l + " while loading " + p.url + ", retrying in " + this.retryDelay + "..."), this.abortInternal(), this.loader = null, self.clearTimeout(this.retryTimeout), this.retryTimeout = self.setTimeout(this.loadInternal.bind(this), this.retryDelay), this.retryDelay = Math.min(2 * this.retryDelay, E.maxRetryDelay), b.retry++);
} else
self.clearTimeout(this.requestTimeout), this.requestTimeout = self.setTimeout(this.loadtimeout.bind(this), E.timeout);
}
}, T.loadtimeout = function() {
P.logger.warn("timeout while loading " + this.context.url);
var p = this.callbacks;
p && (this.abortInternal(), p.onTimeout(this.stats, this.context, this.loader));
}, T.loadprogress = function(p) {
var S = this.stats;
S.loaded = p.loaded, p.lengthComputable && (S.total = p.total);
}, T.getCacheAge = function() {
var p = null;
if (this.loader && O.test(this.loader.getAllResponseHeaders())) {
var S = this.loader.getResponseHeader("age");
p = S ? parseFloat(S) : null;
}
return p;
}, R;
}();
const F = C;
},
"./node_modules/eventemitter3/index.js": (U) => {
var M = Object.prototype.hasOwnProperty, g = "~";
function P() {
}
Object.create && (P.prototype = /* @__PURE__ */ Object.create(null), new P().__proto__ || (g = !1));
function y(R, T, D) {
this.fn = R, this.context = T, this.once = D || !1;
}
function O(R, T, D, p, S) {
if (typeof D != "function")
throw new TypeError("The listener must be a function");
var b = new y(D, p || R, S), _ = g ? g + T : T;
return R._events[_] ? R._events[_].fn ? R._events[_] = [R._events[_], b] : R._events[_].push(b) : (R._events[_] = b, R._eventsCount++), R;
}
function C(R, T) {
--R._eventsCount === 0 ? R._events = new P() : delete R._events[T];
}
function F() {
this._events = new P(), this._eventsCount = 0;
}
F.prototype.eventNames = function() {
var T = [], D, p;
if (this._eventsCount === 0)
return T;
for (p in D = this._events)
M.call(D, p) && T.push(g ? p.slice(1) : p);
return Object.getOwnPropertySymbols ? T.concat(Object.getOwnPropertySymbols(D)) : T;
}, F.prototype.listeners = function(T) {
var D = g ? g + T : T, p = this._events[D];
if (!p)
return [];
if (p.fn)
return [p.fn];
for (var S = 0, b = p.length, _ = new Array(b); S < b; S++)
_[S] = p[S].fn;
return _;
}, F.prototype.listenerCount = function(T) {
var D = g ? g + T : T, p = this._events[D];
return p ? p.fn ? 1 : p.length : 0;
}, F.prototype.emit = function(T, D, p, S, b, _) {
var E = g ? g + T : T;
if (!this._events[E])
return !1;
var l = this._events[E], n = arguments.length, t, d;
if (l.fn) {
switch (l.once && this.removeListener(T, l.fn, void 0, !0), n) {
case 1:
return l.fn.call(l.context), !0;
case 2:
return l.fn.call(l.context, D), !0;
case 3:
return l.fn.call(l.context, D, p), !0;
case 4:
return l.fn.call(l.context, D, p, S), !0;
case 5:
return l.fn.call(l.context, D, p, S, b), !0;
case 6:
return l.fn.call(l.context, D, p, S, b, _), !0;
}
for (d = 1, t = new Array(n - 1); d < n; d++)
t[d - 1] = arguments[d];
l.fn.apply(l.context, t);
} else {
var h = l.length, i;
for (d = 0; d < h; d++)
switch (l[d].once && this.removeListener(T, l[d].fn, void 0, !0), n) {
case 1:
l[d].fn.call(l[d].context);
break;
case 2:
l[d].fn.call(l[d].context, D);
break;
case 3:
l[d].fn.call(l[d].context, D, p);
break;
case 4:
l[d].fn.call(l[d].context, D, p, S);
break;
default:
if (!t)
for (i = 1, t = new Array(n - 1); i < n; i++)
t[i - 1] = arguments[i];
l[d].fn.apply(l[d].context, t);
}
}
return !0;
}, F.prototype.on = function(T, D, p) {
return O(this, T, D, p, !1);
}, F.prototype.once = function(T, D, p) {
return O(this, T, D, p, !0);
}, F.prototype.removeListener = function(T, D, p, S) {
var b = g ? g + T : T;
if (!this._events[b])
return this;
if (!D)
return C(this, b), this;
var _ = this._events[b];
if (_.fn)
_.fn === D && (!S || _.once) && (!p || _.context === p) && C(this, b);
else {
for (var E = 0, l = [], n = _.length; E < n; E++)
(_[E].fn !== D || S && !_[E].once || p && _[E].context !== p) && l.push(_[E]);
l.length ? this._events[b] = l.length === 1 ? l[0] : l : C(this, b);
}
return this;
}, F.prototype.removeAllListeners = function(T) {
var D;
return T ? (D = g ? g + T : T, this._events[D] && C(this, D)) : (this._events = new P(), this._eventsCount = 0), this;
}, F.prototype.off = F.prototype.removeListener, F.prototype.addListener = F.prototype.on, F.prefixed = g, F.EventEmitter = F, U.exports = F;
},
"./node_modules/url-toolkit/src/url-toolkit.js": function(U) {
(function(M) {
var g = /^(?=((?:[a-zA-Z0-9+\-.]+:)?))\1(?=((?:\/\/[^\/?#]*)?))\2(?=((?:(?:[^?#\/]*\/)*[^;?#\/]*)?))\3((?:;[^?#]*)?)(\?[^#]*)?(#[^]*)?$/, P = /^(?=([^\/?#]*))\1([^]*)$/, y = /(?:\/|^)\.(?=\/)/g, O = /(?:\/|^)\.\.\/(?!\.\.\/)[^\/]*(?=\/)/g, C = {
buildAbsoluteURL: function(F, R, T) {
if (T = T || {}, F = F.trim(), R = R.trim(), !R) {
if (!T.alwaysNormalize)
return F;
var D = C.parseURL(F);
if (!D)
throw new Error("Error trying to parse base URL.");
return D.path = C.normalizePath(
D.path
), C.buildURLFromParts(D);
}
var p = C.parseURL(R);
if (!p)
throw new Error("Error trying to parse relative URL.");
if (p.scheme)
return T.alwaysNormalize ? (p.path = C.normalizePath(p.path), C.buildURLFromParts(p)) : R;
var S = C.parseURL(F);
if (!S)
throw new Error("Error trying to parse base URL.");
if (!S.netLoc && S.path && S.path[0] !== "/") {
var b = P.exec(S.path);
S.netLoc = b[1], S.path = b[2];
}
S.netLoc && !S.path && (S.path = "/");
var _ = {
scheme: S.scheme,
netLoc: p.netLoc,
path: null,
params: p.params,
query: p.query,
fragment: p.fragment
};
if (!p.netLoc && (_.netLoc = S.netLoc, p.path[0] !== "/"))
if (!p.path)
_.path = S.path, p.params || (_.params = S.params, p.query || (_.query = S.query));
else {
var E = S.path, l = E.substring(0, E.lastIndexOf("/") + 1) + p.path;
_.path = C.normalizePath(l);
}
return _.path === null && (_.path = T.alwaysNormalize ? C.normalizePath(p.path) : p.path), C.buildURLFromParts(_);
},
parseURL: function(F) {
var R = g.exec(F);
return R ? {
scheme: R[1] || "",
netLoc: R[2] || "",
path: R[3] || "",
params: R[4] || "",
query: R[5] || "",
fragment: R[6] || ""
} : null;
},
normalizePath: function(F) {
for (F = F.split("").reverse().join("").replace(y, ""); F.length !== (F = F.replace(O, "")).length; )
;
return F.split("").reverse().join("");
},
buildURLFromParts: function(F) {
return F.scheme + F.netLoc + F.path + F.params + F.query + F.fragment;
}
};
U.exports = C;
})();
}
}, N = {};
function B(U) {
var M = N[U];
if (M !== void 0)
return M.exports;
var g = N[U] = {
exports: {}
};
return I[U].call(g.exports, g, g.exports, B), g.exports;
}
B.m = I, B.n = (U) => {
var M = U && U.__esModule ? () => U.default : () => U;
return B.d(M, { a: M }), M;
}, B.d = (U, M) => {
for (var g in M)
B.o(M, g) && !B.o(U, g) && Object.defineProperty(U, g, { enumerable: !0, get: M[g] });
}, B.o = (U, M) => Object.prototype.hasOwnProperty.call(U, M), B.r = (U) => {
typeof Symbol < "u" && Symbol.toStringTag && Object.defineProperty(U, Symbol.toStringTag, { value: "Module" }), Object.defineProperty(U, "__esModule", { value: !0 });
};
var G = B("./src/hls.ts");
return G = G.default, G;
})());
})($r);
const nt = /* @__PURE__ */ bi($r.exports);
function rr(L, A, I, N) {
var B, G = !1, U = 0;
function M() {
B && clearTimeout(B);
}
function g() {
M(), G = !0;
}
typeof A != "boolean" && (N = I, I = A, A = void 0);
function P() {
for (var y = arguments.length, O = new Array(y), C = 0; C < y; C++)
O[C] = arguments[C];
var F = this, R = Date.now() - U;
if (G)
return;
function T() {
U = Date.now(), I.apply(F, O);
}
function D() {
B = void 0;
}
N && !B && T(), M(), N === void 0 && R > L ? T() : A !== !0 && (B = setTimeout(N ? D : T, N === void 0 ? L - R : L));
}
return P.cancel = g, P;
}
function ir(L, A, I) {
return I === void 0 ? rr(L, A, !1) : rr(L, I, A !== !1);
}
const nr = (L) => `${parseInt("0x" + L.slice(1, 3))},${parseInt("0x" + L.slice(3, 5))},${parseInt(
"0x" + L.slice(5, 7)
)}`, Wt = (L) => {
let A = ~~(L / 3600), I = ~~(L % 3600 / 60), N = ~~(L % 60);
return A = A < 10 ? "0" + A : A, I = I < 10 ? "0" + I : I, N = N < 10 ? "0" + N : N, `${A}:${I}:${N}`;
}, dt = "ontouchstart" in window, Li = (L) => {
let A = document, I = A.webkitIsFullScreen || A.fullscreen;
return I ? (document.exitFullscreen || A.webkitExitFullScreen).call(A) : (L.requestFullscreen || (L == null ? void 0 : L.webkitRequestFullScreen)).call(L), !I;
}, mt = function(L, A, I, N = !1) {
L && A && I && L.addEventListener(A, I, N);
}, Ye = function(L, A, I, N = !1) {
L && A && I && L.removeEventListener(A, I, N);
};
function Ai(L) {
$e(L, "svelte-1ruaw7f", ".d-slider.svelte-1ruaw7f.svelte-1ruaw7f{position:relative}.d-slider.svelte-1ruaw7f .d-slider__runway.svelte-1ruaw7f{width:100%;background-color:#333333;position:relative;cursor:pointer;vertical-align:middle}.d-slider.svelte-1ruaw7f .d-slider__runway .d-slider__cursor.svelte-1ruaw7f,.d-slider.svelte-1ruaw7f .d-slider__runway .d-slider__preload.svelte-1ruaw7f,.d-slider.svelte-1ruaw7f .d-slider__runway .d-slider__bar.svelte-1ruaw7f{position:absolute;top:0;left:0;height:100%}.d-slider.svelte-1ruaw7f .d-slider__runway .d-slider__cursor.svelte-1ruaw7f{display:none;z-index:1;width:1px;background:#fff;pointer-events:none}.d-slider.svelte-1ruaw7f .d-slider__runway .d-slider__cursor .d-slider__tips.svelte-1ruaw7f{pointer-events:none;color:#fff;position:absolute;white-space:nowrap;z-index:2;bottom:14px;left:50%;padding:4px;box-sizing:border-box;display:block;font-size:12px;background:rgba(0, 0, 0, 0.6);border-radius:3px;transform:translateX(-50%)}.d-slider.svelte-1ruaw7f .d-slider__runway:hover .d-slider__cursor.svelte-1ruaw7f{display:block}.d-slider.svelte-1ruaw7f .d-slider__runway .d-slider__preload.svelte-1ruaw7f{background:#717171}.d-slider.svelte-1ruaw7f .d-slider__runway .d-slider__bar.svelte-1ruaw7f{background:linear-gradient(to right, var(--primary-color) 0%, var(--primary-color-end) 80%, var(--primary-color-end) 100%)}.d-slider.svelte-1ruaw7f .d-slider__runway .d-slider__bar.svelte-1ruaw7f::before{display:block;content:'';position:absolute;right:-6px;top:50%;width:12px;height:12px;transition:0.2s;transform:translateY(-50%) scale(1, 1);border-radius:50%;background:#fff;border:5px solid var(--primary-color)}.d-slider.is-vertical.svelte-1ruaw7f.svelte-1ruaw7f{height:100px;display:inline-block}.d-slider.is-vertical.svelte-1ruaw7f .d-slider__runway.svelte-1ruaw7f{position:relative;height:100%;margin:0 6px}.d-slider.is-vertical.svelte-1ruaw7f .d-slider__runway .d-slider__preload.svelte-1ruaw7f,.d-slider.is-vertical.svelte-1ruaw7f .d-slider__runway .d-slider__bar.svelte-1ruaw7f,.d-slider.is-vertical.svelte-1ruaw7f .d-slider__runway .d-slider__cursor.svelte-1ruaw7f{bottom:0;top:auto;width:100%}.d-slider.is-vertical.svelte-1ruaw7f .d-slider__runway .d-slider__cursor.svelte-1ruaw7f{height:1px}.d-slider.is-vertical.svelte-1ruaw7f .d-slider__runway .d-slider__bar.svelte-1ruaw7f::before{top:-6px;left:50%;width:12px;height:12px;transform:translateX(-50%) scale(1, 1)}.d-progress-bar.svelte-1ruaw7f.svelte-1ruaw7f{position:absolute;left:0;right:0;bottom:0;width:100%;transition:height 0.1s;height:3px;z-index:1}.d-progress-bar.svelte-1ruaw7f .d-slider__runway.svelte-1ruaw7f{transition:height 0.1s;height:100% !important}.d-progress-bar.svelte-1ruaw7f .d-slider__runway .d-slider__bar.svelte-1ruaw7f::before{transform:translateY(-50%) scale(0, 0)}.d-progress-bar.svelte-1ruaw7f.svelte-1ruaw7f:hover{height:100%}.d-progress-bar.svelte-1ruaw7f:hover .d-slider__bar.svelte-1ruaw7f::before{transform:translateY(-50%) scale(1, 1) !important}.d-player-filter-panel-item.svelte-1ruaw7f .d-slider__runway.svelte-1ruaw7f{background-color:#999}.d-player-filter-panel-item.svelte-1ruaw7f .d-slider__runway .d-slider__bar.svelte-1ruaw7f:before{width:8px;height:8px}.filter-panel-slider.svelte-1ruaw7f.svelte-1ruaw7f{width:100%}");
}
function Ii(L) {
let A, I, N, B, G, U, M, g, P, y, O, C, F, R, T;
return {
c() {
A = J("div"), I = J("div"), N = J("div"), B = J("div"), G = he(L[2]), g = ae(), P = J("div"), y = ae(), O = J("div"), V(B, "class", "d-slider__tips svelte-1ruaw7f"), V(B, "style", U = `left:${L[5].hoverTipsLeft};display:${L[2] ? "block" : "none"}`), V(N, "class", "d-slider__cursor svelte-1ruaw7f"), V(N, "style", M = `${L[8]}; display:${L[0] ? "block" : "none"}`), V(P, "class", "d-slider__preload svelte-1ruaw7f"), V(P, "style", L[9]), V(O, "class", "d-slider__bar svelte-1ruaw7f"), V(O, "style", L[10]), V(I, "class", "d-slider__runway svelte-1ruaw7f"), V(I, "style", C = L[1] ? "width:" + L[3] : "height:" + L[3]), V(A, "class", F = Re(`d-slider ${L[1] ? "is-vertical" : ""} ${L[4]}`) + " svelte-1ruaw7f");
},
m(D, p) {
fe(D, A, p), X(A, I), X(I, N), X(N, B), X(B, G), L[19](B), X(I, g), X(I, P), X(I, y), X(I, O), L[20](A), R || (T = [
ce(I, "mousemove", L[15]),
ce(I, "mouseleave", L[14]),
ce(I, "mouseenter", L[13]),
ce(A, "mousedown", Bt(L[12])),
ce(A, "contextmenu", L[11])
], R = !0);
},
p(D, [p]) {
p & 4 && _e(G, D[2]), p & 36 && U !== (U = `left:${D[5].hoverTipsLeft};display:${D[2] ? "block" : "none"}`) && V(B, "style", U), p & 257 && M !== (M = `${D[8]}; display:${D[0] ? "block" : "none"}`) && V(N, "style", M), p & 512 && V(P, "style", D[9]), p & 1024 && V(O, "style", D[10]), p & 10 && C !== (C = D[1] ? "width:" + D[3] : "height:" + D[3]) && V(I, "style", C), p & 18 && F !== (F = Re(`d-slider ${D[1] ? "is-vertical" : ""} ${D[4]}`) + " svelte-1ruaw7f") && V(A, "class", F);
},
i: De,
o: De,
d(D) {
D && ue(A), L[19](null), L[20](null), R = !1, at(T);
}
};
}
function Ri(L, A, I) {
let N, B, G;
const U = pt();
let { modelValue: M = 0 } = A, { disabled: g = !1 } = A, { vertical: P = !1 } = A, { hover: y = !1 } = A, { hoverText: O = "" } = A, { preload: C = 0 } = A, { size: F = "10px" } = A, { className: R = "" } = A;
const T = {
dragging: !1,
hoverPosition: 0,
hoverTipsLeft: "50%"
};
let D, p;
const S = (e) => {
e.preventDefault();
}, b = (e) => {
if (g) {
const f = t(e);
U("speedDisabled", f);
return;
}
e.preventDefault(), I(5, T.dragging = !0, T), n(e), mt(window, "mousemove", d), mt(window, "touchmove", d), mt(window, "mouseup", h), mt(window, "touchend", h);
}, _ = () => {
I(0, y = !0);
}, E = () => {
I(0, y = !1);
}, l = (e) => {
if (!y)
return;
let f = t(e);
if (U("onMousemove", { ev: e, val: f }), I(5, T.hoverPosition = f, T), P)
return;
let u = D, m = p.clientWidth / 2, s = e.clientX - u.getBoundingClientRect().left;
s < m ? I(5, T.hoverTipsLeft = m - s + "px", T) : u.clientWidth - s < m ? I(5, T.hoverTipsLeft = u.clientWidth - s - m + "px", T) : I(5, T.hoverTipsLeft = "50%", T);
}, n = (e) => {
let f = t(e);
U("update", f), U("change", { ev: e, value: f });
}, t = (e) => {
let f = D, u = 0;
if (P) {
let m = f.clientHeight;
u = (f.getBoundingClientRect().bottom - e.clientY) / m;
} else
u = (e.clientX - f.getBoundingClientRect().left) / f.clientWidth;
return u < 0 ? 0 : u > 1 ? 1 : u;
}, d = (e) => {
n(e);
}, h = (e) => {
T.dragging && (Ye(window, "mousemove", d), Ye(window, "touchmove", d), Ye(window, "mouseup", h), Ye(window, "touchend", h), Ye(window, "contextmenu", h), setTimeout(
() => {
I(5, T.dragging = !1, T);
},
0
));
};
function i(e) {
ct[e ? "unshift" : "push"](() => {
p = e, I(7, p);
});
}
function r(e) {
ct[e ? "unshift" : "push"](() => {
D = e, I(6, D);
});
}
return L.$$set = (e) => {
"modelValue" in e && I(16, M = e.modelValue), "disabled" in e && I(17, g = e.disabled), "vertical" in e && I(1, P = e.vertical), "hover" in e && I(0, y = e.hover), "hoverText" in e && I(2, O = e.hoverText), "preload" in e && I(18, C = e.preload), "size" in e && I(3, F = e.size), "className" in e && I(4, R = e.className);
}, L.$$.update = () => {
L.$$.dirty & 65538 && I(10, N = (() => {
let e = M < 0 ? 0 : M > 1 ? 1 : M;
return P ? `height:${e * 100}%` : `width:${e * 100}%`;
})()), L.$$.dirty & 262146 && I(9, B = (() => {
let e = C < 0 ? 0 : C > 1 ? 1 : C;
return P ? `height:${e * 100}%` : `width:${e * 100}%`;
})()), L.$$.dirty & 34 && I(8, G = (() => {
let e = T.hoverPosition < 0 ? 0 : T.hoverPosition > 1 ? 1 : T.hoverPosition;
return P ? `bottom:${e * 100}%` : `left:${e * 100}%`;
})());
}, [
y,
P,
O,
F,
R,
T,
D,
p,
G,
B,
N,
S,
b,
_,
E,
l,
M,
g,
C,
i,
r
];
}
class Lt extends tt {
constructor(A) {
super(), et(
this,
A,
Ri,
Ii,
qe,
{
modelValue: 16,
disabled: 17,
vertical: 1,
hover: 0,
hoverText: 2,
preload: 18,
size: 3,
className: 4
},
Ai
);
}
}
function Pi(L) {
$e(L, "svelte-4mlfkg", ".d-switch.svelte-4mlfkg.svelte-4mlfkg{position:relative;height:18px;transition:background 0.2s;background:#757575;border-radius:10px;display:inline-flex;align-items:center;vertical-align:middle}.d-switch.svelte-4mlfkg .d-switch__input.svelte-4mlfkg{position:relative;z-index:1;margin:0;width:100%;height:100%;opacity:0}.d-switch.svelte-4mlfkg .d-switch_action.svelte-4mlfkg{position:absolute;transition:0.2s;left:2px;top:2px;z-index:0;height:14px;width:14px;background:#fff;border-radius:50%}.d-switch.is-checked.svelte-4mlfkg.svelte-4mlfkg{background-color:var(--primary-color)}.d-switch.is-checked.svelte-4mlfkg .d-switch_action.svelte-4mlfkg{left:100%;background:#fff;margin-left:-18px}");
}
function Ci(L) {
let A, I, N, B, G, U, M, g;
return {
c() {
A = J("div"), I = J("input"), N = ae(), B = J("span"), V(I, "class", "d-switch__input svelte-4mlfkg"), V(I, "type", "checkbox"), I.checked = L[4], V(I, "true-value", L[1]), V(I, "false-value", L[2]), V(B, "class", "d-switch_action svelte-4mlfkg"), V(A, "class", G = Re(L[4] ? "is-checked d-switch" : "d-switch") + " svelte-4mlfkg"), V(A, "style", U = `width:${L[0]}`);
},
m(P, y) {
fe(P, A, y), X(A, I), L[8](I), X(A, N), X(A, B), M || (g = ce(I, "change", L[5]), M = !0);
},
p(P, [y]) {
y & 16 && (I.checked = P[4]), y & 2 && V(I, "true-value", P[1]), y & 4 && V(I, "false-value", P[2]), y & 16 && G !== (G = Re(P[4] ? "is-checked d-switch" : "d-switch") + " svelte-4mlfkg") && V(A, "class", G), y & 1 && U !== (U = `width:${P[0]}`) && V(A, "style", U);
},
i: De,
o: De,
d(P) {
P && ue(A), L[8](null), M = !1, g();
}
};
}
function Oi(L, A, I) {
let N;
const B = pt();
let { modelValue: G } = A, { width: U = "40px" } = A, { trueValue: M = !0 } = A, { falseValue: g = !0 } = A, { activeColor: P = "#409EFF" } = A, y;
const O = async () => {
await Ht();
const F = y.checked;
B("update", F), B("change", F);
};
function C(F) {
ct[F ? "unshift" : "push"](() => {
y = F, I(3, y);
});
}
return L.$$set = (F) => {
"modelValue" in F && I(6, G = F.modelValue), "width" in F && I(0, U = F.width), "trueValue" in F && I(1, M = F.trueValue), "falseValue" in F && I(2, g = F.falseValue), "activeColor" in F && I(7, P = F.activeColor);
}, L.$$.update = () => {
L.$$.dirty & 66 && I(4, N = (() => G === M)());
}, [
U,
M,
g,
y,
N,
O,
G,
P,
C
];
}
class Gt extends tt {
constructor(A) {
super(), et(
this,
A,
Oi,
Ci,
qe,
{
modelValue: 6,
width: 0,
trueValue: 1,
falseValue: 2,
activeColor: 7
},
Pi
);
}
}
function Mi(L) {
$e(L, "svelte-1ojdyss", "@import '../style/iconfont.css';.d-icon.svelte-1ojdyss{display:inline-block;cursor:pointer;overflow:hidden}.icon-play.svelte-1ojdyss{margin-left:5px}");
}
function ki(L) {
let A, I;
return {
c() {
A = J("i"), V(A, "class", I = Re(`${L[0]} d-icon iconfont ${L[1]}`) + " svelte-1ojdyss"), V(A, "style", L[2]);
},
m(N, B) {
fe(N, A, B);
},
p(N, [B]) {
B & 3 && I !== (I = Re(`${N[0]} d-icon iconfont ${N[1]}`) + " svelte-1ojdyss") && V(A, "class", I), B & 4 && V(A, "style", N[2]);
},
i: De,
o: De,
d(N) {
N && ue(A);
}
};
}
function Fi(L, A, I) {
let N, { icon: B } = A, { size: G } = A, { className: U = "" } = A;
return L.$$set = (M) => {
"icon" in M && I(0, B = M.icon), "size" in M && I(3, G = M.size), "className" in M && I(1, U = M.className);
}, L.$$.update = () => {
L.$$.dirty & 8 && I(2, N = (() => `font-size:${/^\d+$/.test(G + "") ? G + "px" : G}`)());
}, [B, U, N, G];
}
class Et extends tt {
constructor(A) {
super(), et(this, A, Fi, ki, qe, { icon: 0, size: 3, className: 1 }, Mi);
}
}
const ar = {
en: {
speed: "speed",
mirror: "mirror",
loop: "loop",
lightOff: "light off",
pictureInPicture: "picture in picture",
webFullScreen: "web fullscreen",
exitWebFullScreen: "exit web fullscreen",
fullScreen: "fullscreen(f)",
exitFullScreen: "exit fullscreen(f)",
colorAdjustment: "Color adjustment",
saturability: "saturability",
brightness: "brightness",
contrast: "contrast",
reset: "reset",
shortcutKeyInstructions: "Shortcut key instructions",
copyVideoUrl: "Copy the url address",
version: "Version",
loading: "loading",
replay: "replay",
playError: "play error",
playStuck: "play stuck",
progressError: "The progress bar cannot be dragged",
videoBlack: "The video is black but there is sound",
soundPictueAsync: "Sound and picture are out of sync",
feedbackTips: "Feedback success!",
playerFeedBack: "Player problem feedback",
other: "other",
feedbackPlaceHolder: "Description of the problem in 100 words or less",
confirm: "confirm"
},
"zh-cn": {
speed: "\u500D\u901F",
mirror: "\u955C\u50CF\u753B\u9762",
loop: "\u5FAA\u73AF\u64AD\u653E",
lightOff: "\u5173\u706F\u6A21\u5F0F",
pictureInPicture: "\u753B\u4E2D\u753B",
webFullScreen: "\u7F51\u9875\u5168\u5C4F",
exitWebFullScreen: "\u9000\u51FA\u7F51\u9875\u5168\u5C4F",
fullScreen: "\u5168\u5C4F(f)",
exitFullScreen: "\u9000\u51FA\u5168\u5C4F(f)",
colorAdjustment: "\u89C6\u9891\u8272\u5F69\u8C03\u6574",
saturability: "\u9971\u548C\u5EA6",
brightness: "\u4EAE\u5EA6",
contrast: "\u5BF9\u6BD4\u5EA6",
reset: "\u91CD\u7F6E",
shortcutKeyInstructions: "\u5FEB\u6377\u952E\u8BF4\u660E",
copyVideoUrl: "\u590D\u5236\u7F51\u5740\u89C6\u9891",
version: "\u7248\u672C",
loading: "\u6B63\u5728\u7F13\u51B2...",
replay: "\u91CD\u65B0\u64AD\u653E",
playError: "\u8BF7\u6C42\u9519\u8BEF",
playStuck: "\u64AD\u653E\u5361\u987F",
progressError: "\u8FDB\u5EA6\u6761\u65E0\u6CD5\u62D6\u52A8",
videoBlack: "\u89C6\u9891\u9ED1\u5C4F\u4F46\u6709\u58F0\u97F3",
soundPictueAsync: "\u97F3\u753B\u4E0D\u540C\u6B65",
feedbackTips: "\u53CD\u9988\u6210\u529F\uFF01",
playerFeedBack: "\u64AD\u653E\u5668\u95EE\u9898\u53CD\u9988",
other: "\u5176\u4ED6",
feedbackPlaceHolder: "\u95EE\u9898\u63CF\u8FF0\uFF0C\u9650100\u5B57\u5185",
confirm: "\u786E\u8BA4"
},
"zh-tw": {
speed: "\u500D\u901F",
mirror: "\u93E1\u50CF\u756B\u9762",
loop: "\u8FF4\u5708\u64AD\u653E",
lightOff: "\u95DC\u71C8\u6A21\u5F0F",
pictureInPicture: "\u756B\u4E2D\u756B",
webFullScreen: "\u7DB2\u9801\u5168\u5C4F",
exitWebFullScreen: "\u9000\u51FA\u7DB2\u9801\u5168\u5C4F",
fullScreen: "\u5168\u5C4F(f)",
exitFullScreen: "\u9000\u51FA\u5168\u5C4F(f)",
colorAdjustment: "\u8996\u983B\u8272\u5F69\u8ABF\u6574",
saturability: "\u98FD\u548C\u5EA6",
brightness: "\u4EAE\u5EA6",
contrast: "\u5C0D\u6BD4\u5EA6",
reset: "\u91CD\u7F6E",
shortcutKeyInstructions: "\u5FEB\u6377\u9375\u8AAA\u660E",
copyVideoUrl: "\u8907\u88FD\u7DB2\u5740\u8996\u983B",
version: "\u7248\u672C",
loading: "\u6B63\u5728\u7DE9\u885D...",
replay: "\u91CD\u65B0\u64AD\u653E",
playError: "\u8ACB\u6C42\u932F\u8AA4",
playStuck: "\u64AD\u653E\u5361\u9813",
progressError: "\u9032\u5EA6\u689D\u7121\u6CD5\u62D6\u52D5",
videoBlack: "\u8996\u983B\u9ED1\u5C4F\u4F46\u6709\u8072\u97F3",
soundPictueAsync: "\u97F3\u756B\u4E0D\u540C\u6B65",
feedbackTips: "\u56DE\u994B\u6210\u529F\uFF01",
playerFeedBack: "\u64AD\u653E\u5668\u554F\u984C\u56DE\u994B",
other: "\u5176\u4ED6",
feedbackPlaceHolder: "\u554F\u984C\u63CF\u8FF0\uFF0C\u9650100\u5B57\u5167",
confirm: "\u78BA\u8A8D"
}
};
function wi(L) {
$e(L, "svelte-1sesy3u", "div.svelte-1sesy3u.svelte-1sesy3u,span.svelte-1sesy3u.svelte-1sesy3u,h5.svelte-1sesy3u.svelte-1sesy3u,i.svelte-1sesy3u.svelte-1sesy3u,ul.svelte-1sesy3u.svelte-1sesy3u,li.svelte-1sesy3u.svelte-1sesy3u{margin:0;padding:0;border:0;font-size:100%;font:inherit;vertical-align:baseline}ul.svelte-1sesy3u.svelte-1sesy3u{list-style:none}@keyframes svelte-1sesy3u-rotating{100%{-webkit-transform:rotate(360deg)}}.d-player-contextmenu.svelte-1sesy3u.svelte-1sesy3u,.d-player-dialog.svelte-1sesy3u.svelte-1sesy3u{position:absolute;left:0;top:0;bottom:50px;width:100%;z-index:5}.d-player-contextmenu.svelte-1sesy3u .d-player-copyText.svelte-1sesy3u{opacity:0}.d-player-contextmenu.svelte-1sesy3u .d-player-contextmenu-body.svelte-1sesy3u{position:absolute;border-radius:5px;font-size:12px;background:rgba(0, 0, 0, 0.8);color:#efefef;padding:0;text-align:left;min-width:130px;box-sizing:border-box;padding:5px 0}.d-player-contextmenu.svelte-1sesy3u .d-player-contextmenu-body li.svelte-1sesy3u{padding:8px 20px;margin:0;cursor:pointer;transition:0.2s}.d-player-contextmenu.svelte-1sesy3u .d-player-contextmenu-body li.svelte-1sesy3u:hover{background-color:rgba(255, 255, 255, 0.1)}.d-player-dialog.svelte-1sesy3u.svelte-1sesy3u{display:flex;justify-content:center;align-items:center}.d-player-dialog.svelte-1sesy3u .d-player-dialog-body.svelte-1sesy3u{background-color:rgba(33, 33, 33, 0.9);border-radius:5px;color:#fff;min-width:200px;padding:0 0 10px}.d-player-dialog.svelte-1sesy3u .d-player-dialog-body .d-player-dialog-title.svelte-1sesy3u{text-align:center;position:relative;font-size:14px;font-weight:normal;margin:0;padding:12px 0px;border-bottom:1px solid rgba(255, 255, 255, 0.15);margin-bottom:10px}.d-player-dialog.svelte-1sesy3u .d-player-dialog-body .d-player-dialog-title .icon-close.svelte-1sesy3u{position:absolute;right:0px;top:0px;width:40px;height:40px;line-height:40px;text-align:center;cursor:pointer}.d-player-dialog.svelte-1sesy3u .d-player-dialog-body .d-player-hotkey-panel.svelte-1sesy3u{font-size:12px;color:#eee;padding-right:40px}.d-player-dialog.svelte-1sesy3u .d-player-dialog-body .d-player-hotkey-panel .d-player-hotkey-panel-item.svelte-1sesy3u{line-height:26px}.d-player-dialog.svelte-1sesy3u .d-player-dialog-body .d-player-hotkey-panel .d-player-hotkey-panel-item span.svelte-1sesy3u{text-align:center;display:inline-block;width:120px}.d-player-dialog.svelte-1sesy3u .d-player-dialog-body .d-player-hotkey-panel .d-player-hotkey-panel-item span.svelte-1sesy3u:nth-child(2){color:#999;width:160px}.d-player-dialog.svelte-1sesy3u .d-player-dialog-body .d-player-filter-panel.svelte-1sesy3u{width:320px;padding:0 20px;text-align:center}.d-player-dialog.svelte-1sesy3u .d-player-dialog-body .d-player-filter-panel .d-player-filter-reset.svelte-1sesy3u{text-align:center;cursor:pointer;margin-top:10px;padding:3px 20px;display:inline-block;border-radius:2px;font-size:12px;background:rgba(133, 133, 133, 0.5)}.d-player-dialog.svelte-1sesy3u .d-player-dialog-body .d-player-filter-panel .d-player-filter-reset.svelte-1sesy3u:hover{background:rgba(255, 255, 255, 0.3)}.d-player-dialog.svelte-1sesy3u .d-player-dialog-body .d-player-filter-panel .d-player-filter-panel-item.svelte-1sesy3u{height:32px;display:flex;align-items:center}.d-player-dialog.svelte-1sesy3u .d-player-dialog-body .d-player-filter-panel .d-player-filter-panel-item span.svelte-1sesy3u{font-size:12px;display:block;width:80px;text-align:center}");
}
function sr(L, A, I) {
const N = L.slice();
return N[17] = A[I], N;
}
function or(L, A, I) {
const N = L.slice();
return N[17] = A[I], N;
}
function lr(L) {
let A, I, N, B = L[1].dialogTitle + "", G, U, M, g, P, y, O, C, F, R = L[1].dialogType == "hotkey" && ur(L), T = L[1].dialogType == "filter" && dr(L);
return {
c() {
A = J("div"), I = J("div"), N = J("h5"), G = he(B), U = ae(), M = J("i"), M.textContent = "X", g = ae(), R && R.c(), P = ae(), T && T.c(), V(M, "class", "icon icon-close svelte-1sesy3u"), V(N, "class", "d-player-dialog-title svelte-1sesy3u"), V(I, "class", "d-player-dialog-body svelte-1sesy3u"), V(A, "class", "d-player-dialog svelte-1sesy3u");
},
m(D, p) {
fe(D, A, p), X(A, I), X(I, N), X(N, G), X(N, U), X(N, M), X(I, g), R && R.m(I, null), X(I, P), T && T.m(I, null), O = !0, C || (F = ce(M, "click", L[9]), C = !0);
},
p(D, p) {
(!O || p & 2) && B !== (B = D[1].dialogTitle + "") && _e(G, B), D[1].dialogType == "hotkey" ? R ? R.p(D, p) : (R = ur(D), R.c(), R.m(I, P)) : R && (R.d(1), R = null), D[1].dialogType == "filter" ? T ? (T.p(D, p), p & 2 && $(T, 1)) : (T = dr(D), T.c(), $(T, 1), T.m(I, null)) : T && (Ne(), se(T, 1, 1, () => {
T = null;
}), Ke());
},
i(D) {
O || ($(T), st(() => {
y || (y = Ze(A, Je, {}, !0)), y.run(1);
}), O = !0);
},
o(D) {
se(T), y || (y = Ze(A, Je, {}, !1)), y.run(0), O = !1;
},
d(D) {
D && ue(A), R && R.d(), T && T.d(), D && y && y.end(), C = !1, F();
}
};
}
function ur(L) {
let A, I = L[5], N = [];
for (let B = 0; B < I.length; B += 1)
N[B] = fr(or(L, I, B));
return {
c() {
A = J("ul");
for (let B = 0; B < N.length; B += 1)
N[B].c();
V(A, "class", "d-player-hotkey-panel svelte-1sesy3u");
},
m(B, G) {
fe(B, A, G);
for (let U = 0; U < N.length; U += 1)
N[U].m(A, null);
},
p(B, G) {
if (G & 32) {
I = B[5];
let U;
for (U = 0; U < I.length; U += 1) {
const M = or(B, I, U);
N[U] ? N[U].p(M, G) : (N[U] = fr(M), N[U].c(), N[U].m(A, null));
}
for (; U < N.length; U += 1)
N[U].d(1);
N.length = I.length;
}
},
d(B) {
B && ue(A), It(N, B);
}
};
}
function fr(L) {
let A, I, N = L[17].key + "", B, G, U, M = L[17].label + "", g, P;
return {
c() {
A = J("li"), I = J("span"), B = he(N), G = ae(), U = J("span"), g = he(M), P = ae(), V(I, "class", "svelte-1sesy3u"), V(U, "class", "svelte-1sesy3u"), V(A, "class", "d-player-hotkey-panel-item svelte-1sesy3u");
},
m(y, O) {
fe(y, A, O), X(A, I), X(I, B), X(A, G), X(A, U), X(U, g), X(A, P);
},
p: De,
d(y) {
y && ue(A);
}
};
}
function dr(L) {
let A, I, N, B = L[0].saturability + "", G, U, M, g, P, y = Math.round(L[2].saturate * 255) + "", O, C, F, R, T = L[0].brightness + "", D, p, S, b, _, E = Math.round(L[2].brightness * 255) + "", l, n, t, d, h = L[0].contrast + "", i, r, e, f, u, m = Math.round(L[2].contrast * 255) + "", s, v, c, o = L[0].reset + "", a, x, k, K;
return M = new Lt({
props: {
className: "d-player-filter-panel-item filter-panel-slider",
size: "5px",
modelValue: L[2].saturate
}
}), M.$on("update", L[10]), S = new Lt({
props: {
className: "d-player-filter-panel-item filter-panel-slider",
size: "5px",
modelValue: L[2].brightness
}
}), S.$on("update", L[11]), e = new Lt({
props: {
className: "d-player-filter-panel-item filter-panel-slider",
size: "5px",
modelValue: L[2].contrast
}
}), e.$on("update", L[12]), {
c() {
A = J("ul"), I = J("li"), N = J("span"), G = he(B), U = ae(), Se(M.$$.fragment), g = ae(), P = J("span"), O = he(y), C = ae(), F = J("li"), R = J("span"), D = he(T), p = ae(), Se(S.$$.fragment), b = ae(), _ = J("span"), l = he(E), n = ae(), t = J("li"), d = J("span"), i = he(h), r = ae(), Se(e.$$.fragment), f = ae(), u = J("span"), s = he(m), v = ae(), c = J("span"), a = he(o), V(N, "class", "svelte-1sesy3u"), V(P, "class", "svelte-1sesy3u"), V(I, "class", "d-player-filter-panel-item svelte-1sesy3u"), V(R, "class", "svelte-1sesy3u"), V(_, "class", "svelte-1sesy3u"), V(F, "class", "d-player-filter-panel-item svelte-1sesy3u"), V(d, "class", "svelte-1sesy3u"), V(u, "class", "svelte-1sesy3u"), V(t, "class", "d-player-filter-panel-item svelte-1sesy3u"), V(c, "title", "\u91CD\u7F6E"), V(c, "aria-label", "\u91CD\u7F6E"), V(c, "class", "d-player-filter-reset svelte-1sesy3u"), V(A, "class", "d-player-filter-panel svelte-1sesy3u");
},
m(w, W) {
fe(w, A, W), X(A, I), X(I, N), X(N, G), X(I, U), Te(M, I, null), X(I, g), X(I, P), X(P, O), X(A, C), X(A, F), X(F, R), X(R, D), X(F, p), Te(S, F, null), X(F, b), X(F, _), X(_, l), X(A, n), X(A, t), X(t, d), X(d, i), X(t, r), Te(e, t, null), X(t, f), X(t, u), X(u, s), X(A, v), X(A, c), X(c, a), x = !0, k || (K = ce(c, "click", L[6]), k = !0);
},
p(w, W) {
(!x || W & 1) && B !== (B = w[0].saturability + "") && _e(G, B);
const z = {};
W & 4 && (z.modelValue = w[2].saturate), M.$set(z), (!x || W & 4) && y !== (y = Math.round(w[2].saturate * 255) + "") && _e(O, y), (!x || W & 1) && T !== (T = w[0].brightness + "") && _e(D, T);
const H = {};
W & 4 && (H.modelValue = w[2].brightness), S.$set(H), (!x || W & 4) && E !== (E = Math.round(w[2].brightness * 255) + "") && _e(l, E), (!x || W & 1) && h !== (h = w[0].contrast + "") && _e(i, h);
const j = {};
W & 4 && (j.modelValue = w[2].contrast), e.$set(j), (!x || W & 4) && m !== (m = Math.round(w[2].contrast * 255) + "") && _e(s, m), (!x || W & 1) && o !== (o = w[0].reset + "") && _e(a, o);
},
i(w) {
x || ($(M.$$.fragment, w), $(S.$$.fragment, w), $(e.$$.fragment, w), x = !0);
},
o(w) {
se(M.$$.fragment, w), se(S.$$.fragment, w), se(e.$$.fragment, w), x = !1;
},
d(w) {
w && ue(A), xe(M), xe(S), xe(e), k = !1, K();
}
};
}
function cr(L) {
let A, I, N, B, G = L[4], U = [];
for (let M = 0; M < G.length; M += 1)
U[M] = hr(sr(L, G, M));
return {
c() {
A = J("div"), I = J("ul");
for (let M = 0; M < U.length; M += 1)
U[M].c();
N = ae(), B = J("input"), V(I, "class", "d-player-contextmenu-body svelte-1sesy3u"), V(I, "style", L[3]), V(B, "class", "d-player-copyText svelte-1sesy3u"), V(A, "class", "d-player-contextmenu svelte-1sesy3u");
},
m(M, g) {
fe(M, A, g), X(A, I);
for (let P = 0; P < U.length; P += 1)
U[P].m(I, null);
X(A, N), X(A, B);
},
p(M, g) {
if (g & 16) {
G = M[4];
let P;
for (P = 0; P < G.length; P += 1) {
const y = sr(M, G, P);
U[P] ? U[P].p(y, g) : (U[P] = hr(y), U[P].c(), U[P].m(I, null));
}
for (; P < U.length; P += 1)
U[P].d(1);
U.length = G.length;
}
g & 8 && V(I, "style", M[3]);
},
d(M) {
M && ue(A), It(U, M);
}
};
}
function hr(L) {
let A, I = L[17].label + "", N, B;
return {
c() {
A = J("li"), N = he(I), V(A, "dplayerkeycode", B = L[17].key), V(A, "class", "svelte-1sesy3u");
},
m(G, U) {
fe(G, A, U), X(A, N);
},
p(G, U) {
U & 16 && I !== (I = G[17].label + "") && _e(N, I), U & 16 && B !== (B = G[17].key) && V(A, "dplayerkeycode", B);
},
d(G) {
G && ue(A);
}
};
}
function Bi(L) {
let A, I, N, B = L[1].dialogType && lr(L), G = L[1].show && cr(L);
return {
c() {
A = J("div"), B && B.c(), I = ae(), G && G.c(), V(A, "class", "svelte-1sesy3u");
},
m(U, M) {
fe(U, A, M), B && B.m(A, null), X(A, I), G && G.m(A, null), N = !0;
},
p(U, [M]) {
U[1].dialogType ? B ? (B.p(U, M), M & 2 && $(B, 1)) : (B = lr(U), B.c(), $(B, 1), B.m(A, I)) : B && (Ne(), se(B, 1, 1, () => {
B = null;
}), Ke()), U[1].show ? G ? G.p(U, M) : (G = cr(U), G.c(), G.m(A, null)) : G && (G.d(1), G = null);
},
i(U) {
N || ($(B), N = !0);
},
o(U) {
se(B), N = !1;
},
d(U) {
U && ue(A), B && B.d(), G && G.d();
}
};
}
function Ui(L, A, I) {
let N, { version: B = "1.0.0" } = A, { nowLanguage: G } = A, { contextMenu: U = ["filter", "hotkey", "copy", "version"] } = A;
const M = {
version: B,
show: !1,
dialogType: "",
dialogTitle: "",
mouseX: 0,
mouseY: 0
}, g = [
{
label: G.colorAdjustment,
key: "filter"
},
{
label: G.shortcutKeyInstructions,
key: "hotkey"
},
{
label: G.copyVideoUrl,
key: "copy"
},
{
label: `${G.version}\uFF1A` + B,
key: "version"
}
], P = [
{ key: "Space", label: "\u64AD\u653E/\u6682\u505C" },
{ key: "\u2192", label: "\u5355\u6B21\u5FEB\u8FDB10s\uFF0C\u957F\u63095\u500D\u901F\u64AD\u653E" },
{ key: "\u2190", label: "\u5FEB\u900010s" },
{ key: "\u2191", label: "\u97F3\u91CF\u589E\u52A010%" },
{ key: "\u2193", label: "\u97F3\u91CF\u589E\u52A0\u964D\u4F4E10%" }
], y = {
saturate: 0.392,
brightness: 0.392,
contrast: 0.392
};
let O;
const C = () => {
I(2, y.saturate = 0.392, y), I(2, y.brightness = 0.392, y), I(2, y.contrast = 0.392, y);
}, F = (_) => {
_.key == "Escape" && T(0);
}, R = (_) => {
_.preventDefault(), mt(window, "keydown", F), mt(window, "click", T);
const E = document.querySelector("#refPlayerWrap");
mt(E, "click", T);
let l = E.clientWidth;
E.clientHeight, I(1, M.mouseX = _.clientX - E.getBoundingClientRect().left, M), l - M.mouseX < 130 && I(1, M.mouseX = M.mouseX + (l - M.mouseX - 130), M), I(1, M.mouseY = _.clientY - E.getBoundingClientRect().top, M), I(1, M.show = !0, M);
}, T = (_) => {
let E = _.path[0].tagName == "LI", l = _.path[0].attributes.dplayerKeyCode && _.path[0].attributes.dplayerKeyCode.value, n = N.map((d) => d.key);
if (E && n.includes(l))
if (I(1, M.dialogTitle = _.path[0].innerText, M), I(1, M.dialogType = l, M), l == "copy") {
let d = document.querySelector(".d-player-copyText");
d.value = window.location.href, d.select(), document.execCommand("copy"), I(1, M.dialogType = "", M);
} else
l == "version" && I(1, M.dialogType = "", M);
I(1, M.show = !1, M), Ye(window, "keydown", F), Ye(window, "click", T);
const t = document.querySelector("#refPlayerWrap");
Ye(t, "click", T);
};
Qr(() => {
const _ = document.querySelector("#refPlayerWrap");
Ye(window, "keydown", F), Ye(window, "click", T), Ye(_, "contextmenu", R), mt(_, "contextmenu", R);
}), Ei(() => {
const _ = document.querySelector("#refPlayerWrap");
Ye(window, "keydown", F), Ye(window, "click", T), Ye(_, "contextmenu", R);
});
const D = () => {
I(1, M.dialogType = !1, M);
}, p = (_) => {
I(2, y.saturate = _.detail, y);
}, S = (_) => {
I(2, y.brightness = _.detail, y);
}, b = (_) => {
I(2, y.contrast = _.detail, y);
};
return L.$$set = (_) => {
"version" in _ && I(7, B = _.version), "nowLanguage" in _ && I(0, G = _.nowLanguage), "contextMenu" in _ && I(8, U = _.contextMenu);
}, L.$$.update = () => {
if (L.$$.dirty & 256 && I(4, N = g.filter((_) => U.includes(_.key))), L.$$.dirty & 2 && I(3, O = `left: ${M.mouseX}px;top:${M.mouseY}px`), L.$$.dirty & 4) {
const _ = document.querySelector("#dPlayerVideo");
if (_) {
const E = (y.saturate * 2.55).toFixed(2), l = (y.brightness * 2.55).toFixed(2), n = (y.contrast * 2.55).toFixed(2);
_.style.filter = `saturate(${E}) brightness(${l}) contrast(${n})`, _.style["-webkit-filter"] = `saturate(${E}) brightness(${l}) contrast(${n})`;
}
}
}, [
G,
M,
y,
O,
N,
P,
C,
B,
U,
D,
p,
S,
b
];
}
class Ni extends tt {
constructor(A) {
super(), et(
this,
A,
Ui,
Bi,
qe,
{
version: 7,
nowLanguage: 0,
contextMenu: 8
},
wi
);
}
}
function Ki(L) {
$e(L, "svelte-1qnrxjl", "@import '../style/iconfont.css';div.svelte-1qnrxjl.svelte-1qnrxjl,span.svelte-1qnrxjl.svelte-1qnrxjl,p.svelte-1qnrxjl.svelte-1qnrxjl,img.svelte-1qnrxjl.svelte-1qnrxjl,i.svelte-1qnrxjl.svelte-1qnrxjl{margin:0;padding:0;border:0;font-size:100%;font:inherit;vertical-align:baseline}.iconfont.svelte-1qnrxjl.svelte-1qnrxjl{display:inline-block}.d-flex-x.svelte-1qnrxjl.svelte-1qnrxjl{display:flex}.d-flex-x.svelte-1qnrxjl.svelte-1qnrxjl{align-items:center}.mr5.svelte-1qnrxjl.svelte-1qnrxjl{margin-right:5px}.d-pointer.svelte-1qnrxjl.svelte-1qnrxjl{cursor:pointer}.rotating.svelte-1qnrxjl.svelte-1qnrxjl{animation:svelte-1qnrxjl-rotating 2s linear infinite}@keyframes svelte-1qnrxjl-rotating{100%{-webkit-transform:rotate(360deg)}}.f50.svelte-1qnrxjl.svelte-1qnrxjl{font-size:50px}.f24.svelte-1qnrxjl.svelte-1qnrxjl{font-size:24px}.d-loading.svelte-1qnrxjl.svelte-1qnrxjl{position:absolute;left:0;right:0;bottom:0px;top:0;display:flex;align-items:center;justify-content:center;background:rgba(0, 0, 0, 0.3);z-index:2;color:#efefef;text-align:center;font-size:13px}.loading-img.svelte-1qnrxjl.svelte-1qnrxjl{width:50px}.d-logo-loading.svelte-1qnrxjl.svelte-1qnrxjl{position:relative;width:100px;height:23px;overflow:hidden}.d-logo-loading.svelte-1qnrxjl .d-logo.svelte-1qnrxjl{width:100%;height:100%;background:url(https://s.thsi.cn/cd/ths-frontend-hxmui-container/front/thsc-hxmui/1.11.0/img/logo_light.ed78645a.png) 50%;background-size:cover}.d-logo-loading.svelte-1qnrxjl .d-light.svelte-1qnrxjl{position:absolute;left:0;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);width:32px;height:23px;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGIAAABaCAMAAAB0UnP8AAAAhFBMVEUAAAD///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8g2+bRAAAALHRSTlMABAgVDx4uDCU9ODMZKUJcRiFWYGZKt06ojpeJUq95bmqzo6CTfYRydaybgZ4JNUQAAAd9SURBVGjejNWNVtpAEIbhpoECGii/ojUCapEU7v/++s27ux23kMTxHH/O0Tx+Mzubb7eqsPquGo0Gg0FZllVVDYeLxVg1/VT6cbEYqqqqVOl3RyP7M/7+W2sV9gEhYARQBoDH/6Du9aFCWaBgOIFRtBqhsgwhAcD9p0KxaG4I8RhFWwqAIglEIAGPv7OaUPomMo440dUrD5FlCAHS4x2JxiIRg55peApCIDAGixD+/dlsNg+l76QIoV0YnqNzGP+HUJdcANiEckRBPIcTrRk8RIlABrVICXj8drutrfTVFBAZlqOqaFXPNAoqaxMZSABQ10vKEKLIULOmjDyLgdA3CQQyAITn/0wVFBnkwPBWdaZwgjZNp2QgQgBWoWQsZcQctMqJzhTXIciw2ZBgtVqnQhGiZmVGd6e8TwhVGISOknUpAgfVfr/XZynB2MzsXEEEA6JNcMJPUxBqBHv8iTJFSWQwDyc6O5UJEC5oCAL2+6bZhWqaE0hmiKi8U719KodD3RsQZFCTlEDC0UqIjJTDY1R9nYLwYVsIFw4C9PzLh9XlIqY5HQ6r1XL5L8aCgXenyE+sEZOJ2uSCgGdKyG5nORRju82JQSuRnyefRBIUQc9/okCOyag3ED/GGaFqSeFEnARtsgwXhN8qIWbYPAKh3fgKgaAaiAiT+EGIIGjOHwC/rEx5/mAca02DTokYc0+1EoUTPuxAqE3M4RkhGiJsHGEadAqi6iAYRTbs+3vbiZoQEizDr/P5XXU+C7EYx2a/XkMw70RgdBJcTyEEx8lCkAHhDYQcl6M6BTHvJ/Ijm/oUFpsQCAZQGEyDTtXajK+myM4Tk6gV4tQcLwgCHqlgcKhaCGbRsRUKARGHbSGeIBAwiGHE/hCISR9RXB9ZNrteatiEiMIfymKETt0g2ra7yAhWmxBGxEm8v5vw8vIiQsZtovxEFD2rzXlKfUohBFB/6FRG3OUperdiHIma8xT7pDbp6a+vbUR/CifoE0e2ZilsJ1KIVxXEW06k7ZbQmyKN4u4uHVkR9EmTQPgyUXRsBcRkPqdPzc6GbSEQMGzeELvG7loukOymbdmKIp+2H9mPZ44TxMPDA0RIYXuhC6SFKNoWr6riVtCndTxPCoGQEWy3EZzZzhTFrT5N0pG92LDfIAQ4wXaf1hAcqKsUvRfUtpN4zwh/d0v4SgqOrIg4iicRCBlh1yDvC3uxQkiAuH3PBiEjwpGFYBSEyImLESsRs0SUbYSfJ67ZeEHVSxHqk4hzIijbC12DTyJO/4g0CvrU/a5gt7nI2QobBXvnBKvH/cEbScRcxNVVfkO42gpu2RNbEUI48fjItEXYbjPtSAw8RRcxdYLFy0cBwShE7J0YQ9y+PopEIFTxDoxb0VyPgmmfbdp+fYjovz4gfPEi8bdSc1ttI4qh6ENbqKF1ZojBLZi0BOqG/P8HRmeNthVFntFknvy2kHS2rn5xVRghhcLTB/0HiCq8akUtRw/DT0u0UyhCeGpxXNs/QKyrAgRlG4Sr4kmhwAi+LDxrNxFeowoQqYMSwnIgofh1H/FfCIWi1TZ+CuE9UrYpeIQiCPZkibYhHqQKQ3wp0S5WpGgbwsu21QoQJRSoAoTq9tdAtKoAQQcVwst++q2i6pl8BoHwunIEgop3qgjlwFcQRPt8PoJoy1F0Bo4YqjiRAzMiiqoq3nlvUc0j3lEItF0QWXgHot1akUc89csgqHiOiFpBmj0tCYpod+UoI0LbSh9C0EPRlUt4F6miIgKwibgGgk9PlhYKxDRt+4kvDxZeLFRUQZAFIUh3JCg9WRC5M8hJcC8CgiPGuJob5rmqolphBCGOCcGLUk9Op8kkuWQPjcNpT7S2NFCGKog6WPCeeLKlHLVWZATiRnrPMR4xgXlN9VZToaBW7LPi8BFxG/I0R0YHJVUI0VhREai7TqqWn/BTWn7UJ9vHgsp9pYsS4zmM4MkK0aoCwj3E1taALFtG+p0IdEGO0trAGPYNAARN9IZQM5ubNCAN4gjCMoibwX7FCeYmjNC4rVqxJbwci5i48dRTXUMZwYxQsMNP9clWRF5+0B683FumuRF6T/2TLT2zth+YoZUgO8FYCa5tHbsdc906stgcDG02sYHFZvipZo/yZcSsnaCWpxYOg/BdiYMIUrZ6j2pFfVKB4NlaNB7/Eo5/BrHPAEG4xEIQRKiiWc++WwFr28+mXKtyA9gAGQQlj1RTy5eWgqGMSbvywYiF/x9swE0RCSHWrcjb+M9eLZoVM58QBEOeujHGWWE5vQDABOvPRlcgTRREdwab/W5xmMRIJyQDXC523Smnl3hPzd0Chm5503TmDhZnMAOYk4aXILCTCMKaKgridqY66JoXxzy/5mFDNaKzQoxv9qi4GMKoN8kBwAapLkSxaYWkERF3OwYkDqs6esoG3EQxam7Q9QLtJ+7V8/BigySRZLfjtCoGh3og+cgdhJlA7D9yw8BVYpizgORbvf4P8B0vJSPaU312lYXcPhgBsR9O4M8TEp1iLSvaRwUDyDyv/m8i2RCxLoCqjRwPvKW/f+j7KYAIDeIN31OsfyvZzREAAAAASUVORK5CYII=) 50%;background-size:cover;opacity:0.6;-webkit-animation:svelte-1qnrxjl-move 0.8s ease-in-out infinite;animation:svelte-1qnrxjl-move 0.8s ease-in-out infinite}@keyframes svelte-1qnrxjl-move{from{left:0}to{left:100%}}");
}
function vr(L) {
let A, I, N = ["loadstart", "waiting"].includes(L[1]), B, G, U = N && gr(L), M = L[1] == "ended" && mr(L), g = (L[1] == "error" || L[1] == "stalled") && pr(L);
return {
c() {
A = J("div"), I = J("div"), U && U.c(), B = ae(), M && M.c(), G = ae(), g && g.c(), V(I, "class", "svelte-1qnrxjl"), V(A, "class", "d-loading svelte-1qnrxjl"), V(A, "style", L[6]);
},
m(P, y) {
fe(P, A, y), X(A, I), U && U.m(I, null), X(I, B), M && M.m(I, null), X(I, G), g && g.m(I, null);
},
p(P, y) {
y & 2 && (N = ["loadstart", "waiting"].includes(P[1])), N ? U ? U.p(P, y) : (U = gr(P), U.c(), U.m(I, B)) : U && (U.d(1), U = null), P[1] == "ended" ? M ? M.p(P, y) : (M = mr(P), M.c(), M.m(I, G)) : M && (M.d(1), M = null), P[1] == "error" || P[1] == "stalled" ? g ? g.p(P, y) : (g = pr(P), g.c(), g.m(I, null)) : g && (g.d(1), g = null), y & 64 && V(A, "style", P[6]);
},
d(P) {
P && ue(A), U && U.d(), M && M.d(), g && g.d();
}
};
}
function gr(L) {
let A, I, N, B;
function G(g, P) {
return g[3] ? Hi : g[4] ? zi : g[5] === "ths" ? Gi : Wi;
}
let U = G(L), M = U(L);
return {
c() {
A = J("span"), M.c(), I = ae(), N = J("p"), B = he(L[2]), V(N, "class", "svelte-1qnrxjl"), V(A, "class", "svelte-1qnrxjl");
},
m(g, P) {
fe(g, A, P), M.m(A, null), X(A, I), X(A, N), X(N, B);
},
p(g, P) {
U === (U = G(g)) && M ? M.p(g, P) : (M.d(1), M = U(g), M && (M.c(), M.m(A, I))), P & 4 && _e(B, g[2]);
},
d(g) {
g && ue(A), M.d();
}
};
}
function Wi(L) {
let A;
return {
c() {
A = J("i"), V(A, "class", "rotating iconfont icon-loading f50 svelte-1qnrxjl");
},
m(I, N) {
fe(I, A, N);
},
p: De,
d(I) {
I && ue(A);
}
};
}
function Gi(L) {
let A;
return {
c() {
A = J("div"), A.innerHTML = `<div class="d-logo svelte-1qnrxjl"></div>
<div class="d-light svelte-1qnrxjl"></div>`, V(A, "class", "d-logo-loading svelte-1qnrxjl");
},
m(I, N) {
fe(I, A, N);
},
p: De,
d(I) {
I && ue(A);
}
};
}
function zi(L) {
let A, I;
return {
c() {
A = J("img"), Mt(A.src, I = L[4]) || V(A, "src", I), V(A, "alt", ""), V(A, "class", "rotating f50 loading-img svelte-1qnrxjl");
},
m(N, B) {
fe(N, A, B);
},
p(N, B) {
B & 16 && !Mt(A.src, I = N[4]) && V(A, "src", I);
},
d(N) {
N && ue(A);
}
};
}
function Hi(L) {
let A, I;
return {
c() {
A = new hi(!1), I = Tt(), A.a = I;
},
m(N, B) {
A.m(L[3], N, B), fe(N, I, B);
},
p(N, B) {
B & 8 && A.p(N[3]);
},
d(N) {
N && ue(I), N && A.d();
}
};
}
function mr(L) {
let A, I, N, B = L[0].replay + "", G, U, M;
return {
c() {
A = J("span"), I = J("p"), N = J("i"), G = he(B), V(N, "class", "iconfont icon-replay f24 mr5 svelte-1qnrxjl"), V(I, "class", "d-flex-x d-pointer svelte-1qnrxjl"), V(A, "class", "svelte-1qnrxjl");
},
m(g, P) {
fe(g, A, P), X(A, I), X(I, N), X(I, G), U || (M = ce(I, "click", L[8]), U = !0);
},
p(g, P) {
P & 1 && B !== (B = g[0].replay + "") && _e(G, B);
},
d(g) {
g && ue(A), U = !1, M();
}
};
}
function pr(L) {
let A, I, N, B = L[0].playError + "", G, U, M;
return {
c() {
A = J("span"), I = J("p"), N = J("i"), G = he(B), V(N, "class", "iconfont icon-replay f24 mr5 svelte-1qnrxjl"), V(I, "class", "d-flex-x d-pointer svelte-1qnrxjl"), V(A, "class", "svelte-1qnrxjl");
},
m(g, P) {
fe(g, A, P), X(A, I), X(I, N), X(I, G), U || (M = ce(I, "click", L[8]), U = !0);
},
p(g, P) {
P & 1 && B !== (B = g[0].playError + "") && _e(G, B);
},
d(g) {
g && ue(A), U = !1, M();
}
};
}
function ji(L) {
let A = L[7].includes(L[1]), I, N = A && vr(L);
return {
c() {
N && N.c(), I = Tt();
},
m(B, G) {
N && N.m(B, G), fe(B, I, G);
},
p(B, [G]) {
G & 2 && (A = B[7].includes(B[1])), A ? N ? N.p(B, G) : (N = vr(B), N.c(), N.m(I.parentNode, I)) : N && (N.d(1), N = null);
},
i: De,
o: De,
d(B) {
N && N.d(B), B && ue(I);
}
};
}
function Vi(L, A, I) {
const N = pt(), B = ["loadstart", "loadStateType", "waiting", "ended", "error", "stalled"];
let { nowLanguage: G } = A, { loadType: U = G.loading } = A, { loadingText: M = "" } = A, { loadingDom: g = "" } = A, { loadingImg: P = "" } = A, { loadingType: y = "" } = A, O = "";
const C = () => {
N("playHandle");
};
return L.$$set = (F) => {
"nowLanguage" in F && I(0, G = F.nowLanguage), "loadType" in F && I(1, U = F.loadType), "loadingText" in F && I(2, M = F.loadingText), "loadingDom" in F && I(3, g = F.loadingDom), "loadingImg" in F && I(4, P = F.loadingImg), "loadingType" in F && I(5, y = F.loadingType);
}, L.$$.update = () => {
if (L.$$.dirty & 2) {
let F = "background: rgba(0, 0, 0, .1);z-index:1";
U === "loadstart" && (F = "background: rgba(0, 0, 0, 1);;z-index:3"), I(6, O = F);
}
}, [
G,
U,
M,
g,
P,
y,
O,
B,
C
];
}
class Yi extends tt {
constructor(A) {
super(), et(
this,
A,
Vi,
ji,
qe,
{
nowLanguage: 0,
loadType: 1,
loadingText: 2,
loadingDom: 3,
loadingImg: 4,
loadingType: 5
},
Ki
);
}
}
function Xi(L) {
$e(L, "svelte-q8odyd", ".d-player-top.svelte-q8odyd{position:absolute;font-size:16px;left:0px;top:0;right:0px;color:#fff;display:flex;padding:0 20px;height:60px;background-image:linear-gradient(rgba(0, 0, 0, 0.6), transparent);justify-content:space-between;z-index:1}");
}
function Qi(L) {
let A, I, N = (L[0] || "") + "", B;
return {
c() {
A = J("div"), I = J("p"), B = he(N), V(I, "class", "top-title"), V(A, "class", "d-player-top svelte-q8odyd");
},
m(G, U) {
fe(G, A, U), X(A, I), X(I, B);
},
p(G, [U]) {
U & 1 && N !== (N = (G[0] || "") + "") && _e(B, N);
},
i: De,
o: De,
d(G) {
G && ue(A);
}
};
}
function Zi(L, A, I) {
let { title: N = "" } = A;
return L.$$set = (B) => {
"title" in B && I(0, N = B.title);
}, [N];
}
class Ji extends tt {
constructor(A) {
super(), et(this, A, Zi, Qi, qe, { title: 0 }, Xi);
}
}
function qi(L) {
$e(L, "svelte-o0d56g", ".d-flex-center.svelte-o0d56g{display:flex}.d-flex-center.svelte-o0d56g{justify-content:center;align-items:center}.d-status.svelte-o0d56g{text-align:center;font-size:14px;vertical-align:middle;background:rgba(0, 0, 0, 0.8);padding:0 8px;height:30px;border-radius:5px;display:flex;align-items:center;color:rgba(255, 255, 255, 0.95)}");
}
function Er(L) {
let A, I, N, B = L[0].handleType == "volume" && yr(L), G = (L[0].handleType === "playbackRate" || L[0].isMultiplesPlay) && _r();
return {
c() {
A = J("div"), B && B.c(), I = ae(), G && G.c(), V(A, "class", "d-status svelte-o0d56g");
},
m(U, M) {
fe(U, A, M), B && B.m(A, null), X(A, I), G && G.m(A, null), N = !0;
},
p(U, M) {
U[0].handleType == "volume" ? B ? (B.p(U, M), M & 1 && $(B, 1)) : (B = yr(U), B.c(), $(B, 1), B.m(A, I)) : B && (Ne(), se(B, 1, 1, () => {
B = null;
}), Ke()), U[0].handleType === "playbackRate" || U[0].isMultiplesPlay ? G || (G = _r(), G.c(), G.m(A, null)) : G && (G.d(1), G = null);
},
i(U) {
N || ($(B), N = !0);
},
o(U) {
se(B), N = !1;
},
d(U) {
U && ue(A), B && B.d(), G && G.d();
}
};
}
function yr(L) {
let A, I, N, B = ~~(L[0].volume * 100) + "", G, U, M;
return I = new Et({
props: {
size: "18",
className: "d-status-icon",
icon: `icon-volume-${L[0].volume == 0 ? "mute" : L[0].volume > 0.5 ? "up" : "down"}`
}
}), {
c() {
A = J("li"), Se(I.$$.fragment), N = ae(), G = he(B), U = he("%"), V(A, "class", "d-flex-center svelte-o0d56g");
},
m(g, P) {
fe(g, A, P), Te(I, A, null), X(A, N), X(A, G), X(A, U), M = !0;
},
p(g, P) {
const y = {};
P & 1 && (y.icon = `icon-volume-${g[0].volume == 0 ? "mute" : g[0].volume > 0.5 ? "up" : "down"}`), I.$set(y), (!M || P & 1) && B !== (B = ~~(g[0].volume * 100) + "") && _e(G, B);
},
i(g) {
M || ($(I.$$.fragment, g), M = !0);
},
o(g) {
se(I.$$.fragment, g), M = !1;
},
d(g) {
g && ue(A), xe(I);
}
};
}
function _r(L) {
let A;
return {
c() {
A = J("li"), A.innerHTML = `<d-icon size="12" icon="icon-play"></d-icon>
<d-icon size="12" icon="icon-play" style="margin-right:5px"></d-icon>5X\u901F\u64AD\u653E\u4E2D`, V(A, "class", "d-flex-center svelte-o0d56g");
},
m(I, N) {
fe(I, A, N);
},
d(I) {
I && ue(A);
}
};
}
function $i(L) {
let A, I, N = (L[0].handleType || L[0].isMultiplesPlay) && Er(L);
return {
c() {
N && N.c(), A = Tt();
},
m(B, G) {
N && N.m(B, G), fe(B, A, G), I = !0;
},
p(B, [G]) {
B[0].handleType || B[0].isMultiplesPlay ? N ? (N.p(B, G), G & 1 && $(N, 1)) : (N = Er(B), N.c(), $(N, 1), N.m(A.parentNode, A)) : N && (Ne(), se(N, 1, 1, () => {
N = null;
}), Ke());
},
i(B) {
I || ($(N), I = !0);
},
o(B) {
se(N), I = !1;
},
d(B) {
N && N.d(B), B && ue(A);
}
};
}
function en(L, A, I) {
let { state: N } = A;
return L.$$set = (B) => {
"state" in B && I(0, N = B.state);
}, [N];
}
class tn extends tt {
constructor(A) {
super(), et(this, A, en, $i, qe, { state: 0 }, qi);
}
}
function rn(L) {
$e(L, "svelte-1rv9n3y", ".d-radio.svelte-1rv9n3y{position:relative;display:inline-block;padding-left:20px;box-sizing:border-box;height:18px;line-height:18px;font-size:14px;margin-left:12px;margin-top:10px;cursor:pointer;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.d-radio.svelte-1rv9n3y::before{content:'';position:absolute;display:inline-block;top:2px;left:0;width:12px;height:12px;border:1px solid #ccc;border-radius:50%}.d-radio.d-radio-checked.svelte-1rv9n3y::before{content:'';border-color:#409eff;position:absolute;display:inline-block;top:2px;left:0;width:12px;height:12px;border:1px solid #409eff;border-radius:50%}.d-radio.d-radio-checked.svelte-1rv9n3y::after{content:'';position:absolute;top:5px;left:3px;display:inline-block;width:8px;height:8px;background-color:#00a1d6;border-radius:50%}");
}
function nn(L) {
let A, I, N, B, G;
return {
c() {
A = J("div"), I = he(L[0]), V(A, "title", L[0]), V(A, "class", "d-radio svelte-1rv9n3y"), V(A, "style", N = `width:${L[1]}`), $t(A, "d-radio-checked", L[2]);
},
m(U, M) {
fe(U, A, M), X(A, I), B || (G = ce(A, "click", Bt(L[3])), B = !0);
},
p(U, [M]) {
M & 1 && _e(I, U[0]), M & 1 && V(A, "title", U[0]), M & 2 && N !== (N = `width:${U[1]}`) && V(A, "style", N), M & 4 && $t(A, "d-radio-checked", U[2]);
},
i: De,
o: De,
d(U) {
U && ue(A), B = !1, G();
}
};
}
function an(L, A, I) {
const N = pt();
let { radioText: B = "" } = A, { width: G = "100%" } = A, U = !1;
const M = () => {
I(2, U = !U), N("checkRadio", { radioText: B, isChecked: U });
};
return L.$$set = (g) => {
"radioText" in g && I(0, B = g.radioText), "width" in g && I(1, G = g.width);
}, [B, G, U, M];
}
class sn extends tt {
constructor(A) {
super(), et(this, A, an, nn, qe, { radioText: 0, width: 1 }, rn);
}
}
function on(L) {
$e(L, "svelte-bbg92z", ".d-toast.svelte-bbg92z{position:fixed;top:50%;left:50%;transform:translate(-50%, -50%);background-color:rgba(40, 40, 40, 0.96);padding:0 18px;border-radius:10px}.d-toast-content.svelte-bbg92z{font-size:16px;line-height:1;word-break:break-all;color:#fefefe}");
}
function Tr(L) {
let A, I, N, B, G;
return {
c() {
A = J("div"), I = J("p"), V(I, "class", "d-toast-content svelte-bbg92z"), V(A, "class", "d-toast svelte-bbg92z"), V(A, "style", N = `z-index: ${L[1]}`);
},
m(U, M) {
fe(U, A, M), X(A, I), I.innerHTML = L[0], G = !0;
},
p(U, M) {
(!G || M & 1) && (I.innerHTML = U[0]), (!G || M & 2 && N !== (N = `z-index: ${U[1]}`)) && V(A, "style", N);
},
i(U) {
G || (st(() => {
B || (B = Ze(A, Je, {}, !0)), B.run(1);
}), G = !0);
},
o(U) {
B || (B = Ze(A, Je, {}, !1)), B.run(0), G = !1;
},
d(U) {
U && ue(A), U && B && B.end();
}
};
}
function ln(L) {
let A, I, N = L[2] && Tr(L);
return {
c() {
N && N.c(), A = Tt();
},
m(B, G) {
N && N.m(B, G), fe(B, A, G), I = !0;
},
p(B, [G]) {
B[2] ? N ? (N.p(B, G), G & 4 && $(N, 1)) : (N = Tr(B), N.c(), $(N, 1), N.m(A.parentNode, A)) : N && (Ne(), se(N, 1, 1, () => {
N = null;
}), Ke());
},
i(B) {
I || ($(N), I = !0);
},
o(B) {
se(N), I = !1;
},
d(B) {
N && N.d(B), B && ue(A);
}
};
}
function un(L, A, I) {
const N = pt();
let { content: B = "" } = A, { zIndex: G = 9999 } = A, { duration: U = 2e3 } = A, { isShow: M = !1 } = A;
return L.$$set = (g) => {
"content" in g && I(0, B = g.content), "zIndex" in g && I(1, G = g.zIndex), "duration" in g && I(3, U = g.duration), "isShow" in g && I(2, M = g.isShow);
}, L.$$.update = () => {
L.$$.dirty & 12 && M && setTimeout(
() => {
N("closeIsShow");
},
U
);
}, [B, G, M, U];
}
class fn extends tt {
constructor(A) {
super(), et(
this,
A,
un,
ln,
qe,
{
content: 0,
zIndex: 1,
duration: 3,
isShow: 2
},
on
);
}
}
function dn(L) {
$e(L, "svelte-bjqzkb", ".d-feedback-container.svelte-bjqzkb.svelte-bjqzkb{position:absolute;left:0;top:0;right:0;bottom:0;display:flex;justify-content:center;align-items:center;z-index:3}.d-feedback-container.svelte-bjqzkb .dialog.svelte-bjqzkb{width:400px;height:240px;background-color:rgba(33, 33, 33, 0.9);color:#ffffff}.d-feedback-container.svelte-bjqzkb .dialog .header.svelte-bjqzkb{width:100%;height:40px;display:flex;justify-content:center;align-items:center;font-size:16px;position:relative}.d-feedback-container.svelte-bjqzkb .dialog .header.svelte-bjqzkb::after{content:' ';position:absolute;width:100%;height:1px;bottom:0;left:0;background-color:hsla(0, 0%, 100%, 0.4)}.d-feedback-container.svelte-bjqzkb .dialog .header .icon-close.svelte-bjqzkb{position:absolute;right:0px;top:8px;width:40px;height:40px;line-height:40px;text-align:center;cursor:pointer;font:inherit}.d-feedback-container.svelte-bjqzkb .dialog .content.svelte-bjqzkb{position:relative;text-align:left}.d-feedback-container.svelte-bjqzkb .dialog .other.svelte-bjqzkb{font-size:14px;margin-left:12px}.d-feedback-container.svelte-bjqzkb .dialog #otherContent.svelte-bjqzkb{background-color:#191919;border:1px solid hsla(0, 0%, 100%, 0.4);resize:none;color:#ccc;margin-top:10px}.d-feedback-container.svelte-bjqzkb .dialog #otherContent.svelte-bjqzkb::-webkit-scrollbar{width:5px;background-color:rgba(255, 255, 255, 0.5)}.d-feedback-container.svelte-bjqzkb .dialog #otherContent.svelte-bjqzkb::-webkit-scrollbar-thumb{width:5px;height:5px;background-color:rgba(0, 0, 0, 0.5);border-radius:10px}.d-feedback-container.svelte-bjqzkb .dialog .footer.svelte-bjqzkb{text-align:center}.d-feedback-container.svelte-bjqzkb .dialog .footer .d-player-filter-reset.svelte-bjqzkb{cursor:pointer;margin-top:10px;padding:3px 20px;display:inline-block;border-radius:2px;font-size:12px;background:rgba(133, 133, 133, 0.5)}.d-feedback-container.svelte-bjqzkb .dialog .footer .d-player-filter-reset.svelte-bjqzkb:hover{background:rgba(255, 255, 255, 0.3)}");
}
function xr(L, A, I) {
const N = L.slice();
return N[13] = A[I], N;
}
function Sr(L) {
let A, I, N, B, G = L[1].playerFeedBack + "", U, M, g, P, y, O, C, F = L[1].other + "", R, T, D, p, S, b, _, E, l = L[1].confirm + "", n, t, d, h, i, r, e, f = L[8], u = [];
for (let s = 0; s < f.length; s += 1)
u[s] = Dr(xr(L, f, s));
const m = (s) => se(u[s], 1, 1, () => {
u[s] = null;
});
return {
c() {
A = J("div"), I = J("div"), N = J("div"), B = J("span"), U = he(G), M = ae(), g = J("i"), g.textContent = "X", P = ae(), y = J("div");
for (let s = 0; s < u.length; s += 1)
u[s].c();
O = ae(), C = J("span"), R = he(F), T = he("\uFF1A"), D = ae(), p = J("textarea"), b = ae(), _ = J("div"), E = J("span"), n = he(l), V(g, "class", "icon-close svelte-bjqzkb"), V(N, "class", "header svelte-bjqzkb"), V(C, "class", "other svelte-bjqzkb"), V(p, "name", "otherContent"), V(p, "id", "otherContent"), V(p, "cols", "36"), V(p, "rows", "3"), V(p, "placeholder", S = L[1].feedbackPlaceHolder), V(p, "class", "svelte-bjqzkb"), V(y, "class", "content svelte-bjqzkb"), V(E, "title", t = L[1].confirm), V(E, "aria-label", d = L[1].confirm), V(E, "class", "d-player-filter-reset svelte-bjqzkb"), V(_, "class", "footer svelte-bjqzkb"), V(I, "class", "dialog svelte-bjqzkb"), V(A, "class", "d-feedback-container svelte-bjqzkb");
},
m(s, v) {
fe(s, A, v), X(A, I), X(I, N), X(N, B), X(B, U), X(N, M), X(N, g), X(I, P), X(I, y);
for (let c = 0; c < u.length; c += 1)
u[c].m(y, null);
X(y, O), X(y, C), X(C, R), X(C, T), X(y, D), X(y, p), qt(p, L[2]), X(I, b), X(I, _), X(_, E), X(E, n), i = !0, r || (e = [
ce(g, "click", L[5]),
ce(p, "input", L[10]),
ce(E, "click", L[6]),
ce(I, "click", Bt(L[9]))
], r = !0);
},
p(s, v) {
if ((!i || v & 2) && G !== (G = s[1].playerFeedBack + "") && _e(U, G), v & 384) {
f = s[8];
let c;
for (c = 0; c < f.length; c += 1) {
const o = xr(s, f, c);
u[c] ? (u[c].p(o, v), $(u[c], 1)) : (u[c] = Dr(o), u[c].c(), $(u[c], 1), u[c].m(y, O));
}
for (Ne(), c = f.length; c < u.length; c += 1)
m(c);
Ke();
}
(!i || v & 2) && F !== (F = s[1].other + "") && _e(R, F), (!i || v & 2 && S !== (S = s[1].feedbackPlaceHolder)) && V(p, "placeholder", S), v & 4 && qt(p, s[2]), (!i || v & 2) && l !== (l = s[1].confirm + "") && _e(n, l), (!i || v & 2 && t !== (t = s[1].confirm)) && V(E, "title", t), (!i || v & 2 && d !== (d = s[1].confirm)) && V(E, "aria-label", d);
},
i(s) {
if (!i) {
for (let v = 0; v < f.length; v += 1)
$(u[v]);
st(() => {
h || (h = Ze(A, Je, {}, !0)), h.run(1);
}), i = !0;
}
},
o(s) {
u = u.filter(Boolean);
for (let v = 0; v < u.length; v += 1)
se(u[v]);
h || (h = Ze(A, Je, {}, !1)), h.run(0), i = !1;
},
d(s) {
s && ue(A), It(u, s), s && h && h.end(), r = !1, at(e);
}
};
}
function Dr(L) {
let A, I;
return A = new sn({
props: {
radioText: L[13],
width: "45%"
}
}), A.$on("checkRadio", L[7]), {
c() {
Se(A.$$.fragment);
},
m(N, B) {
Te(A, N, B), I = !0;
},
p: De,
i(N) {
I || ($(A.$$.fragment, N), I = !0);
},
o(N) {
se(A.$$.fragment, N), I = !1;
},
d(N) {
xe(A, N);
}
};
}
function cn(L) {
let A, I, N, B;
A = new fn({
props: {
isShow: L[3],
content: L[1].feedbackTips
}
}), A.$on("closeIsShow", L[4]);
let G = L[0] && Sr(L);
return {
c() {
Se(A.$$.fragment), I = ae(), G && G.c(), N = Tt();
},
m(U, M) {
Te(A, U, M), fe(U, I, M), G && G.m(U, M), fe(U, N, M), B = !0;
},
p(U, [M]) {
const g = {};
M & 8 && (g.isShow = U[3]), M & 2 && (g.content = U[1].feedbackTips), A.$set(g), U[0] ? G ? (G.p(U, M), M & 1 && $(G, 1)) : (G = Sr(U), G.c(), $(G, 1), G.m(N.parentNode, N)) : G && (Ne(), se(G, 1, 1, () => {
G = null;
}), Ke());
},
i(U) {
B || ($(A.$$.fragment, U), $(G), B = !0);
},
o(U) {
se(A.$$.fragment, U), se(G), B = !1;
},
d(U) {
xe(A, U), U && ue(I), G && G.d(U), U && ue(N);
}
};
}
function hn(L, A, I) {
const N = pt();
let { isShow: B = !1 } = A, { nowLanguage: G } = A;
const U = /* @__PURE__ */ new Set([]);
let M = "", g = !1;
const P = () => {
I(3, g = !1);
}, y = () => {
N("closeFeedBack");
}, O = () => {
I(3, g = !0), y(), N("feedbackConfirm", {
feedbackOptions: [...U],
feedbackValue: M
});
}, C = ({ detail: { isChecked: D, radioText: p } }) => {
D ? U.add(p) : U.delete(p);
}, F = [
G.playStuck,
G.progressError,
G.videoBlack,
G.soundPictueAsync
];
function R(D) {
yi.call(this, L, D);
}
function T() {
M = this.value, I(2, M);
}
return L.$$set = (D) => {
"isShow" in D && I(0, B = D.isShow), "nowLanguage" in D && I(1, G = D.nowLanguage);
}, [
B,
G,
M,
g,
P,
y,
O,
C,
F,
R,
T
];
}
class vn extends tt {
constructor(A) {
super(), et(this, A, hn, cn, qe, { isShow: 0, nowLanguage: 1 }, dn);
}
}
function gn(L) {
$e(L, "svelte-v622af", ".d-icon-feedback.svelte-v622af{position:absolute;width:15px;height:15px;top:20px;right:35px;z-index:2;cursor:pointer}");
}
function mn(L) {
let A, I, N, B, G, U, M;
return B = new vn({
props: {
nowLanguage: L[0],
isShow: L[1]
}
}), B.$on("closeFeedBack", L[3]), B.$on("feedbackConfirm", L[4]), {
c() {
A = J("div"), A.innerHTML = '<svg t="1669096469269" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5486" width="25" height="25"><path d="M514.048 54.272q95.232 0 178.688 36.352t145.92 98.304 98.304 145.408 35.84 178.688-35.84 178.176-98.304 145.408-145.92 98.304-178.688 35.84-178.176-35.84-145.408-98.304-98.304-145.408-35.84-178.176 35.84-178.688 98.304-145.408 145.408-98.304 178.176-36.352zM515.072 826.368q26.624 0 44.544-17.92t17.92-43.52q0-26.624-17.92-44.544t-44.544-17.92-44.544 17.92-17.92 44.544q0 25.6 17.92 43.52t44.544 17.92zM567.296 574.464q-1.024-16.384 20.48-34.816t48.128-40.96 49.152-50.688 24.576-65.024q2.048-39.936-8.192-74.752t-33.792-59.904-60.928-39.936-87.552-14.848q-62.464 0-103.936 22.016t-67.072 53.248-35.84 64.512-9.216 55.808q1.024 26.624 16.896 38.912t34.304 12.8 33.792-10.24 15.36-31.232q0-12.288 7.68-30.208t20.992-34.304 32.256-27.648 42.496-11.264q46.08 0 73.728 23.04t25.6 57.856q0 17.408-10.24 32.256t-26.112 28.672-33.792 27.648-33.792 28.672-26.624 32.256-11.776 37.888l1.024 38.912q0 15.36 14.336 29.184t37.888 14.848q23.552-1.024 37.376-15.36t12.8-32.768l0-24.576z" p-id="5487" fill="rgba(255,255,255,0.5)"></path></svg>', N = ae(), Se(B.$$.fragment), V(A, "class", "d-icon-feedback svelte-v622af");
},
m(g, P) {
fe(g, A, P), fe(g, N, P), Te(B, g, P), G = !0, U || (M = ce(A, "click", Bt(L[2])), U = !0);
},
p(g, [P]) {
const y = {};
P & 1 && (y.nowLanguage = g[0]), P & 2 && (y.isShow = g[1]), B.$set(y);
},
i(g) {
G || (st(() => {
I || (I = Ze(A, Je, {}, !0)), I.run(1);
}), $(B.$$.fragment, g), G = !0);
},
o(g) {
I || (I = Ze(A, Je, {}, !1)), I.run(0), se(B.$$.fragment, g), G = !1;
},
d(g) {
g && ue(A), g && I && I.end(), g && ue(N), xe(B, g), U = !1, M();
}
};
}
function pn(L, A, I) {
const N = pt();
let { nowLanguage: B } = A, G = !1;
const U = () => {
I(1, G = !0);
}, M = () => {
I(1, G = !1);
}, g = ({ detail: P }) => {
N("feedbackConfirm", P);
};
return L.$$set = (P) => {
"nowLanguage" in P && I(0, B = P.nowLanguage);
}, [B, G, U, M, g];
}
class En extends tt {
constructor(A) {
super(), et(this, A, pn, mn, qe, { nowLanguage: 0 }, gn);
}
}
const yn = [
"loadstart",
"durationchange",
"loadedmetadata",
"loadeddata",
"progress",
"canplay",
"canplaythrough",
"play",
"pause",
"playing",
"seeking",
"seeked",
"waiting",
"timeupdate",
"ended",
"error",
"stalled"
];
function _n(L) {
$e(L, "svelte-fbmaz8", "div.svelte-fbmaz8.svelte-fbmaz8,span.svelte-fbmaz8.svelte-fbmaz8,ul.svelte-fbmaz8.svelte-fbmaz8,li.svelte-fbmaz8.svelte-fbmaz8,video.svelte-fbmaz8.svelte-fbmaz8{margin:0;padding:0;border:0;font-size:100%;font:inherit;vertical-align:baseline}ul.svelte-fbmaz8.svelte-fbmaz8{list-style:none}.d-fade-in-enter-active.svelte-fbmaz8.svelte-fbmaz8,.d-fade-in-leave-active.svelte-fbmaz8.svelte-fbmaz8{transition:0.5s}.d-fade-in-enter-from.svelte-fbmaz8.svelte-fbmaz8,.d-fade-in-leave-to.svelte-fbmaz8.svelte-fbmaz8{opacity:0}.d-scale-out-enter-active.svelte-fbmaz8.svelte-fbmaz8,.d-scale-out-leave-active.svelte-fbmaz8.svelte-fbmaz8{transition:0.3s}.d-scale-out-leave-to.svelte-fbmaz8.svelte-fbmaz8{transform:scale(1.3);opacity:0}.rotateHover.svelte-fbmaz8.svelte-fbmaz8{transition:0.2s}.rotateHover.svelte-fbmaz8.svelte-fbmaz8:hover{transform:rotate(90deg)}.rotating.svelte-fbmaz8.svelte-fbmaz8{animation:svelte-fbmaz8-rotating 2s linear infinite}@keyframes svelte-fbmaz8-rotating{100%{-webkit-transform:rotate(360deg)}}.iconfont.svelte-fbmaz8.svelte-fbmaz8{display:inline-block}.d-flex-x.svelte-fbmaz8.svelte-fbmaz8,.d-flex-y.svelte-fbmaz8.svelte-fbmaz8,.d-flex-center.svelte-fbmaz8.svelte-fbmaz8{display:flex}.d-flex-x.svelte-fbmaz8.svelte-fbmaz8{align-items:center}.d-flex-y.svelte-fbmaz8.svelte-fbmaz8{justify-content:center}.d-flex-center.svelte-fbmaz8.svelte-fbmaz8{justify-content:center;align-items:center}.mr5.svelte-fbmaz8.svelte-fbmaz8{margin-right:5px}.mr10.svelte-fbmaz8.svelte-fbmaz8{margin-right:10px}.ml5.svelte-fbmaz8.svelte-fbmaz8{margin-left:5px}.ml10.svelte-fbmaz8.svelte-fbmaz8{margin-left:10px}.d-pointer.svelte-fbmaz8.svelte-fbmaz8{cursor:pointer}.d-player-wrap.svelte-fbmaz8.svelte-fbmaz8{position:relative;overflow:hidden;background-color:#000}.d-player-wrap.web-full-screen.svelte-fbmaz8.svelte-fbmaz8{z-index:9999999;position:fixed;left:0;top:0;width:100vw !important;height:100vh !important}.d-player-wrap.svelte-fbmaz8 .d-player-video.svelte-fbmaz8{position:relative;z-index:1;width:100%;height:100%}.d-player-wrap.svelte-fbmaz8 .d-player-video .d-player-video-poster.svelte-fbmaz8{position:absolute;height:100%;width:100%;top:0;left:0}.d-player-wrap.svelte-fbmaz8 .d-player-video .d-player-video-main.svelte-fbmaz8{width:100%;height:100%;transition:0.2s}.d-player-wrap.svelte-fbmaz8 .d-player-video .d-player-video-main.video-mirror.svelte-fbmaz8{transform:rotateY(180deg)}.d-player-wrap.svelte-fbmaz8 .d-player-control.svelte-fbmaz8{transition:0.1s;transform:translateY(40px);position:absolute;z-index:2;left:0;bottom:0;height:50px;width:100%;color:#fff}.d-player-wrap.svelte-fbmaz8 .d-player-control .d-control-progress.svelte-fbmaz8{width:100%;position:relative;height:10px;cursor:pointer}.d-player-wrap.svelte-fbmaz8 .d-player-control .d-control-progress .d-progress-bar.svelte-fbmaz8{position:absolute;left:0;right:0;bottom:0;width:100%;transition:height 0.1s;height:3px;z-index:1}.d-player-wrap.svelte-fbmaz8 .d-player-control .d-control-progress .d-progress-bar .d-slider__runway.svelte-fbmaz8{transition:height 0.1s;height:100%}.d-player-wrap.svelte-fbmaz8 .d-player-control .d-control-progress .d-progress-bar .d-slider__runway .d-slider__bar.svelte-fbmaz8::before{transform:translateY(-50%) scale(0, 0)}.d-player-wrap.svelte-fbmaz8 .d-player-control .d-control-progress:hover .d-progress-bar.svelte-fbmaz8{height:100%}.d-player-wrap.svelte-fbmaz8 .d-player-control .d-control-progress:hover .d-progress-bar .d-slider__bar.svelte-fbmaz8::before{transform:translateY(-50%) scale(1, 1) !important}.d-player-wrap.svelte-fbmaz8 .d-player-control .d-control-tool.svelte-fbmaz8{position:absolute;padding:0 10px;background:rgba(0, 0, 0, 0.8);display:flex;justify-content:space-between;align-items:center;top:10px;left:0;bottom:0;width:100%;box-sizing:border-box}.d-player-wrap.svelte-fbmaz8 .d-player-control .d-control-tool .d-tool-bar.svelte-fbmaz8{display:flex;height:100%}.d-player-wrap.svelte-fbmaz8 .d-player-control .d-control-tool .d-tool-bar .d-tool-item.svelte-fbmaz8{position:relative;height:100%;cursor:pointer;text-align:center;padding:0 8px;display:flex;align-items:center;font-size:13px}.d-player-wrap.svelte-fbmaz8 .d-player-control .d-control-tool .d-tool-bar .d-tool-item .d-tool-item-main.svelte-fbmaz8{position:absolute;white-space:nowrap;z-index:2;bottom:98%;left:50%;padding:6px 16px;box-sizing:border-box;display:none;background:rgba(0, 0, 0, 0.95);border-radius:5px;transform:translateX(-50%)}.d-player-wrap.svelte-fbmaz8 .d-player-control .d-control-tool .d-tool-bar .d-tool-item:hover .d-tool-item-main.svelte-fbmaz8{display:flex}.d-player-wrap.svelte-fbmaz8 .d-player-control .d-control-tool .d-tool-time.svelte-fbmaz8{font-size:12px;color:#fff;font-weight:300}.d-player-wrap.svelte-fbmaz8 .d-player-control .d-control-tool .d-tool-time .total-time.svelte-fbmaz8{color:rgba(255, 255, 255, 0.8)}.d-player-wrap.svelte-fbmaz8 .d-player-control .d-control-tool .volume-box.svelte-fbmaz8{height:160px;width:50px;display:flex;align-items:center;justify-content:center}.d-player-wrap.svelte-fbmaz8 .d-player-control .d-control-tool .volume-box .volume-main.svelte-fbmaz8{height:90%;display:flex;width:60px;flex-direction:column;align-items:center}.d-player-wrap.svelte-fbmaz8 .d-player-control .d-control-tool .volume-box .volume-main .volume-text-size.svelte-fbmaz8{margin-bottom:10px;font-size:12px;font-weight:400}.d-player-wrap.svelte-fbmaz8 .d-player-control .d-control-tool .volume-box .volume-main.is-muted .d-slider__bar.svelte-fbmaz8{height:0 !important}.d-player-wrap.svelte-fbmaz8 .d-player-control .d-control-tool .speed-main.svelte-fbmaz8{padding:0 10px}.d-player-wrap.svelte-fbmaz8 .d-player-control .d-control-tool .speed-main li.svelte-fbmaz8{cursor:pointer;line-height:34px;font-size:12px;color:#fff}.d-player-wrap.svelte-fbmaz8 .d-player-control .d-control-tool .speed-main li.svelte-fbmaz8:hover{opacity:0.8}.d-player-wrap.svelte-fbmaz8 .d-player-control .d-control-tool .speed-main li.speed-active.svelte-fbmaz8{color:var(--primary-color);font-weight:bold}.d-player-wrap.d-player-wrap-hover.svelte-fbmaz8 .d-player-control.svelte-fbmaz8{transform:translateY(0px)}.d-player-state.svelte-fbmaz8.svelte-fbmaz8,.d-player-input.svelte-fbmaz8.svelte-fbmaz8{position:absolute;left:0;top:0;right:0;bottom:40px;display:flex;justify-content:center;align-items:center;overflow:hidden;z-index:1}.d-player-input.svelte-fbmaz8.svelte-fbmaz8{width:100%;border:none;opacity:0;cursor:default}.d-play-btn.svelte-fbmaz8.svelte-fbmaz8{width:90px;height:90px;color:#fff;display:flex;align-items:center;justify-content:center;background-color:rgba(0, 0, 0, 0.7);border-radius:50%}.d-player-lightoff.svelte-fbmaz8.svelte-fbmaz8{position:fixed;left:0;top:0;width:100vw;height:100vh;background-color:rgba(0, 0, 0, 0.9)}.is-lightoff.svelte-fbmaz8.svelte-fbmaz8{z-index:999998}.d-left-0.svelte-fbmaz8.svelte-fbmaz8{left:0 !important}.d-player-state-top.svelte-fbmaz8.svelte-fbmaz8{position:absolute;left:0;top:0;right:0;bottom:40px px;display:flex;justify-content:center;align-items:flex-start;padding-top:5%;overflow:hidden;z-index:1}");
}
function br(L, A, I) {
const N = L.slice();
return N[86] = A[I], N;
}
function Lr(L, A, I) {
const N = L.slice();
return N[86] = A[I], N[90] = I, N;
}
function Ar(L) {
let A, I, N;
return {
c() {
A = J("div"), V(A, "class", "d-player-lightoff svelte-fbmaz8");
},
m(B, G) {
fe(B, A, G), N = !0;
},
i(B) {
N || (st(() => {
I || (I = Ze(A, Je, {}, !0)), I.run(1);
}), N = !0);
},
o(B) {
I || (I = Ze(A, Je, {}, !1)), I.run(0), N = !1;
},
d(B) {
B && ue(A), B && I && I.end();
}
};
}
function Ir(L) {
let A, I;
return A = new Ji({ props: { title: L[4] } }), {
c() {
Se(A.$$.fragment);
},
m(N, B) {
Te(A, N, B), I = !0;
},
p(N, B) {
const G = {};
B[0] & 16 && (G.title = N[4]), A.$set(G);
},
i(N) {
I || ($(A.$$.fragment, N), I = !0);
},
o(N) {
se(A.$$.fragment, N), I = !1;
},
d(N) {
xe(A, N);
}
};
}
function Tn(L) {
let A, I, N, B, G, U, M, g = L[15].playBtnState === "play" && Rr();
B = new tn({ props: { state: L[15] } });
let P = L[15].hasFeedBack && (L[15].playBtnState === "play" || L[15].isVideoHovering) && Pr(L);
return {
c() {
A = J("div"), g && g.c(), I = ae(), N = J("div"), Se(B.$$.fragment), G = ae(), P && P.c(), U = Tt(), V(A, "class", "d-player-state svelte-fbmaz8"), V(N, "class", "d-player-state-top svelte-fbmaz8");
},
m(y, O) {
fe(y, A, O), g && g.m(A, null), fe(y, I, O), fe(y, N, O), Te(B, N, null), fe(y, G, O), P && P.m(y, O), fe(y, U, O), M = !0;
},
p(y, O) {
y[15].playBtnState === "play" ? g ? O[0] & 32768 && $(g, 1) : (g = Rr(), g.c(), $(g, 1), g.m(A, null)) : g && (Ne(), se(g, 1, 1, () => {
g = null;
}), Ke());
const C = {};
O[0] & 32768 && (C.state = y[15]), B.$set(C), y[15].hasFeedBack && (y[15].playBtnState === "play" || y[15].isVideoHovering) ? P ? (P.p(y, O), O[0] & 32768 && $(P, 1)) : (P = Pr(y), P.c(), $(P, 1), P.m(U.parentNode, U)) : P && (Ne(), se(P, 1, 1, () => {
P = null;
}), Ke());
},
i(y) {
M || ($(g), $(B.$$.fragment, y), $(P), M = !0);
},
o(y) {
se(g), se(B.$$.fragment, y), se(P), M = !1;
},
d(y) {
y && ue(A), g && g.d(), y && ue(I), y && ue(N), xe(B), y && ue(G), P && P.d(y), y && ue(U);
}
};
}
function Rr(L) {
let A, I, N, B;
return I = new Et({ props: { icon: "icon-play", size: "30" } }), {
c() {
A = J("div"), Se(I.$$.fragment), V(A, "class", "d-play-btn svelte-fbmaz8");
},
m(G, U) {
fe(G, A, U), Te(I, A, null), B = !0;
},
i(G) {
B || ($(I.$$.fragment, G), st(() => {
N || (N = Ze(A, Je, {}, !0)), N.run(1);
}), B = !0);
},
o(G) {
se(I.$$.fragment, G), N || (N = Ze(A, Je, {}, !1)), N.run(0), B = !1;
},
d(G) {
G && ue(A), xe(I), G && N && N.end();
}
};
}
function Pr(L) {
let A, I;
return A = new En({
props: { nowLanguage: L[23] }
}), A.$on("feedbackConfirm", L[26]), {
c() {
Se(A.$$.fragment);
},
m(N, B) {
Te(A, N, B), I = !0;
},
p: De,
i(N) {
I || ($(A.$$.fragment, N), I = !0);
},
o(N) {
se(A.$$.fragment, N), I = !1;
},
d(N) {
xe(A, N);
}
};
}
function xn(L) {
let A, I, N;
return {
c() {
A = J("input"), V(A, "type", "input"), A.readOnly = !0, V(A, "class", "d-player-input svelte-fbmaz8"), V(A, "maxlength", "0");
},
m(B, G) {
fe(B, A, G), L[60](A), I || (N = [
ce(A, "dblclick", L[61]),
ce(A, "click", L[31]),
ce(A, "keyup", L[28]),
ce(A, "keydown", L[62])
], I = !0);
},
p: De,
d(B) {
B && ue(A), L[60](null), I = !1, at(N);
}
};
}
function Cr(L) {
let A, I = L[8].includes("progress"), N, B, G, U, M, g, P = L[8].includes("progressTime"), y, O, C = L[15].qualityLevels.length && L[8].includes("quality"), F, R = L[8].includes("speedRate"), T, D = L[8].includes("volume"), p, S = L[8].includes("setting"), b, _ = L[8].includes("pip") && document.pictureInPictureEnabled, E, l = L[8].includes("pageFullScreen"), n, t = L[8].includes("fullScreen"), d, h, i, r = I && Or(L);
M = new Et({
props: {
size: "24",
icon: `icon-${L[15].playBtnState}`
}
});
let e = P && Mr(L), f = C && kr(L), u = R && wr(L), m = D && Ur(L), s = S && Nr(L), v = _ && Kr(L), c = l && Wr(L), o = t && Gr(L);
return {
c() {
A = J("div"), r && r.c(), N = ae(), B = J("div"), G = J("div"), U = J("div"), Se(M.$$.fragment), g = ae(), e && e.c(), y = ae(), O = J("div"), f && f.c(), F = ae(), u && u.c(), T = ae(), m && m.c(), p = ae(), s && s.c(), b = ae(), v && v.c(), E = ae(), c && c.c(), n = ae(), o && o.c(), V(U, "class", "d-tool-item svelte-fbmaz8"), V(G, "class", "d-tool-bar svelte-fbmaz8"), V(O, "class", "d-tool-bar svelte-fbmaz8"), V(B, "class", "d-control-tool svelte-fbmaz8"), V(A, "class", "d-player-control svelte-fbmaz8");
},
m(a, x) {
fe(a, A, x), r && r.m(A, null), X(A, N), X(A, B), X(B, G), X(G, U), Te(M, U, null), X(G, g), e && e.m(G, null), X(B, y), X(B, O), f && f.m(O, null), X(O, F), u && u.m(O, null), X(O, T), m && m.m(O, null), X(O, p), s && s.m(O, null), X(O, b), v && v.m(O, null), X(O, E), c && c.m(O, null), X(O, n), o && o.m(O, null), L[72](A), d = !0, h || (i = [
ce(U, "click", L[31]),
ce(B, "click", L[29])
], h = !0);
},
p(a, x) {
x[0] & 256 && (I = a[8].includes("progress")), I ? r ? (r.p(a, x), x[0] & 256 && $(r, 1)) : (r = Or(a), r.c(), $(r, 1), r.m(A, N)) : r && (Ne(), se(r, 1, 1, () => {
r = null;
}), Ke());
const k = {};
x[0] & 32768 && (k.icon = `icon-${a[15].playBtnState}`), M.$set(k), x[0] & 256 && (P = a[8].includes("progressTime")), P ? e ? e.p(a, x) : (e = Mr(a), e.c(), e.m(G, null)) : e && (e.d(1), e = null), x[0] & 33024 && (C = a[15].qualityLevels.length && a[8].includes("quality")), C ? f ? f.p(a, x) : (f = kr(a), f.c(), f.m(O, F)) : f && (f.d(1), f = null), x[0] & 256 && (R = a[8].includes("speedRate")), R ? u ? u.p(a, x) : (u = wr(a), u.c(), u.m(O, T)) : u && (u.d(1), u = null), x[0] & 256 && (D = a[8].includes("volume")), D ? m ? (m.p(a, x), x[0] & 256 && $(m, 1)) : (m = Ur(a), m.c(), $(m, 1), m.m(O, p)) : m && (Ne(), se(m, 1, 1, () => {
m = null;
}), Ke()), x[0] & 256 && (S = a[8].includes("setting")), S ? s ? (s.p(a, x), x[0] & 256 && $(s, 1)) : (s = Nr(a), s.c(), $(s, 1), s.m(O, b)) : s && (Ne(), se(s, 1, 1, () => {
s = null;
}), Ke()), x[0] & 256 && (_ = a[8].includes("pip") && document.pictureInPictureEnabled), _ ? v ? (v.p(a, x), x[0] & 256 && $(v, 1)) : (v = Kr(a), v.c(), $(v, 1), v.m(O, E)) : v && (Ne(), se(v, 1, 1, () => {
v = null;
}), Ke()), x[0] & 256 && (l = a[8].includes("pageFullScreen")), l ? c ? (c.p(a, x), x[0] & 256 && $(c, 1)) : (c = Wr(a), c.c(), $(c, 1), c.m(O, n)) : c && (Ne(), se(c, 1, 1, () => {
c = null;
}), Ke()), x[0] & 256 && (t = a[8].includes("fullScreen")), t ? o ? (o.p(a, x), x[0] & 256 && $(o, 1)) : (o = Gr(a), o.c(), $(o, 1), o.m(O, null)) : o && (Ne(), se(o, 1, 1, () => {
o = null;
}), Ke());
},
i(a) {
d || ($(r), $(M.$$.fragment, a), $(m), $(s), $(v), $(c), $(o), d = !0);
},
o(a) {
se(r), se(M.$$.fragment, a), se(m), se(s), se(v), se(c), se(o), d = !1;
},
d(a) {
a && ue(A), r && r.d(), xe(M), e && e.d(), f && f.d(), u && u.d(), m && m.d(), s && s.d(), v && v.d(), c && c.d(), o && o.d(), L[72](null), h = !1, at(i);
}
};
}
function Or(L) {
let A, I, N;
return I = new Lt({
props: {
className: "d-progress-bar",
disabled: !L[15].canSpeed,
hoverText: L[15].progressCursorTime,
modelValue: L[15].playProgress,
preload: L[15].preloadBar
}
}), I.$on("onMousemove", L[34]), I.$on("change", L[33]), I.$on("update", L[63]), I.$on("speedDisabled", L[27]), {
c() {
A = J("div"), Se(I.$$.fragment), V(A, "class", "d-control-progress svelte-fbmaz8");
},
m(B, G) {
fe(B, A, G), Te(I, A, null), N = !0;
},
p(B, G) {
const U = {};
G[0] & 32768 && (U.disabled = !B[15].canSpeed), G[0] & 32768 && (U.hoverText = B[15].progressCursorTime), G[0] & 32768 && (U.modelValue = B[15].playProgress), G[0] & 32768 && (U.preload = B[15].preloadBar), I.$set(U);
},
i(B) {
N || ($(I.$$.fragment, B), N = !0);
},
o(B) {
se(I.$$.fragment, B), N = !1;
},
d(B) {
B && ue(A), xe(I);
}
};
}
function Mr(L) {
let A, I, N = L[15].currentTime + "", B, G, U, M, g, P = L[15].totalTime + "", y;
return {
c() {
A = J("div"), I = J("span"), B = he(N), G = ae(), U = J("span"), U.textContent = "/", M = ae(), g = J("span"), y = he(P), V(I, "class", "svelte-fbmaz8"), kt(U, "margin", "0 3px"), V(U, "class", "svelte-fbmaz8"), V(g, "class", "total-time svelte-fbmaz8"), V(A, "class", "d-tool-item d-tool-time audioTrack-btn svelte-fbmaz8");
},
m(O, C) {
fe(O, A, C), X(A, I), X(I, B), X(A, G), X(A, U), X(A, M), X(A, g), X(g, y);
},
p(O, C) {
C[0] & 32768 && N !== (N = O[15].currentTime + "") && _e(B, N), C[0] & 32768 && P !== (P = O[15].totalTime + "") && _e(y, P);
},
d(O) {
O && ue(A);
}
};
}
function kr(L) {
let A, I = (L[15].qualityLevels.length && (L[15].qualityLevels[L[15].currentLevel] || {}).height) + "", N, B, G, U, M = L[15].qualityLevels, g = [];
for (let P = 0; P < M.length; P += 1)
g[P] = Fr(Lr(L, M, P));
return {
c() {
A = J("div"), N = he(I), B = he(`P
`), G = J("div"), U = J("ul");
for (let P = 0; P < g.length; P += 1)
g[P].c();
V(U, "class", "speed-main svelte-fbmaz8"), kt(U, "text-align", "center"), V(G, "class", "d-tool-item-main svelte-fbmaz8"), V(A, "class", "d-tool-item quality-btn svelte-fbmaz8");
},
m(P, y) {
fe(P, A, y), X(A, N), X(A, B), X(A, G), X(G, U);
for (let O = 0; O < g.length; O += 1)
g[O].m(U, null);
},
p(P, y) {
if (y[0] & 32768 && I !== (I = (P[15].qualityLevels.length && (P[15].qualityLevels[P[15].currentLevel] || {}).height) + "") && _e(N, I), y[0] & 32768 | y[1] & 32) {
M = P[15].qualityLevels;
let O;
for (O = 0; O < M.length; O += 1) {
const C = Lr(P, M, O);
g[O] ? g[O].p(C, y) : (g[O] = Fr(C), g[O].c(), g[O].m(U, null));
}
for (; O < g.length; O += 1)
g[O].d(1);
g.length = M.length;
}
},
d(P) {
P && ue(A), It(g, P);
}
};
}
function Fr(L) {
let A, I = L[86].height + "", N, B, G, U, M;
function g() {
return L[64](L[86], L[90]);
}
return {
c() {
A = J("li"), N = he(I), B = he(`P
`), V(A, "class", G = Re(L[15].currentLevel == L[90] ? "speed-active" : "") + " svelte-fbmaz8");
},
m(P, y) {
fe(P, A, y), X(A, N), X(A, B), U || (M = ce(A, "click", g), U = !0);
},
p(P, y) {
L = P, y[0] & 32768 && I !== (I = L[86].height + "") && _e(N, I), y[0] & 32768 && G !== (G = Re(L[15].currentLevel == L[90] ? "speed-active" : "") + " svelte-fbmaz8") && V(A, "class", G);
},
d(P) {
P && ue(A), U = !1, M();
}
};
}
function wr(L) {
let A, I = (L[15].speedActive == "1.0" ? L[23].speed : L[15].speedActive + "x") + "", N, B, G, U, M = L[15].speedRate, g = [];
for (let P = 0; P < M.length; P += 1)
g[P] = Br(br(L, M, P));
return {
c() {
A = J("div"), N = he(I), B = ae(), G = J("div"), U = J("ul");
for (let P = 0; P < g.length; P += 1)
g[P].c();
V(U, "class", "speed-main svelte-fbmaz8"), V(G, "class", "d-tool-item-main svelte-fbmaz8"), V(A, "class", "d-tool-item speedRate-btn svelte-fbmaz8");
},
m(P, y) {
fe(P, A, y), X(A, N), X(A, B), X(A, G), X(G, U);
for (let O = 0; O < g.length; O += 1)
g[O].m(U, null);
},
p(P, y) {
if (y[0] & 32768 && I !== (I = (P[15].speedActive == "1.0" ? P[23].speed : P[15].speedActive + "x") + "") && _e(N, I), y[0] & 32768 | y[1] & 64) {
M = P[15].speedRate;
let O;
for (O = 0; O < M.length; O += 1) {
const C = br(P, M, O);
g[O] ? g[O].p(C, y) : (g[O] = Br(C), g[O].c(), g[O].m(U, null));
}
for (; O < g.length; O += 1)
g[O].d(1);
g.length = M.length;
}
},
d(P) {
P && ue(A), It(g, P);
}
};
}
function Br(L) {
let A, I = L[86] + "", N, B, G, U, M;
function g() {
return L[65](L[86]);
}
return {
c() {
A = J("li"), N = he(I), B = he(`x
`), V(A, "class", G = Re(L[15].speedActive == L[86] ? "speed-active" : "") + " svelte-fbmaz8");
},
m(P, y) {
fe(P, A, y), X(A, N), X(A, B), U || (M = ce(A, "click", g), U = !0);
},
p(P, y) {
L = P, y[0] & 32768 && I !== (I = L[86] + "") && _e(N, I), y[0] & 32768 && G !== (G = Re(L[15].speedActive == L[86] ? "speed-active" : "") + " svelte-fbmaz8") && V(A, "class", G);
},
d(P) {
P && ue(A), U = !1, M();
}
};
}
function Ur(L) {
let A, I, N, B, G = (L[15].muted ? 0 : ~~(L[15].volume * 100)) + "", U, M, g, P, y, O, C, F, R, T, D;
return P = new Lt({
props: {
hover: !1,
size: "5px",
vertical: !0,
modelValue: L[15].volume
}
}), P.$on("change", L[66]), P.$on("update", L[67]), F = new Et({
props: {
size: "20",
icon: `icon-volume-${L[15].volume == 0 || L[15].muted ? "mute" : L[15].volume > 0.5 ? "up" : "down"}`
}
}), {
c() {
A = J("div"), I = J("div"), N = J("div"), B = J("span"), U = he(G), M = he("%"), g = ae(), Se(P.$$.fragment), O = ae(), C = J("span"), Se(F.$$.fragment), V(B, "class", "volume-text-size svelte-fbmaz8"), V(N, "class", y = Re(`${L[15].muted ? "is-muted" : ""} volume-main`) + " svelte-fbmaz8"), V(I, "class", "d-tool-item-main volume-box svelte-fbmaz8"), kt(I, "width", "52px"), kt(C, "display", "flex"), V(C, "class", "svelte-fbmaz8"), V(A, "class", "d-tool-item volume-btn svelte-fbmaz8");
},
m(p, S) {
fe(p, A, S), X(A, I), X(I, N), X(N, B), X(B, U), X(B, M), X(N, g), Te(P, N, null), X(A, O), X(A, C), Te(F, C, null), R = !0, T || (D = ce(C, "click", L[32]), T = !0);
},
p(p, S) {
(!R || S[0] & 32768) && G !== (G = (p[15].muted ? 0 : ~~(p[15].volume * 100)) + "") && _e(U, G);
const b = {};
S[0] & 32768 && (b.modelValue = p[15].volume), P.$set(b), (!R || S[0] & 32768 && y !== (y = Re(`${p[15].muted ? "is-muted" : ""} volume-main`) + " svelte-fbmaz8")) && V(N, "class", y);
const _ = {};
S[0] & 32768 && (_.icon = `icon-volume-${p[15].volume == 0 || p[15].muted ? "mute" : p[15].volume > 0.5 ? "up" : "down"}`), F.$set(_);
},
i(p) {
R || ($(P.$$.fragment, p), $(F.$$.fragment, p), R = !0);
},
o(p) {
se(P.$$.fragment, p), se(F.$$.fragment, p), R = !1;
},
d(p) {
p && ue(A), xe(P), xe(F), T = !1, D();
}
};
}
function Nr(L) {
let A, I, N, B, G, U, M = L[23].mirror + "", g, P, y, O, C, F = L[23].loop + "", R, T, D, p, S, b = L[23].lightOff + "", _, E, l, n;
return I = new Et({
props: {
size: "20",
className: "rotateHover",
icon: "icon-settings"
}
}), y = new Gt({
props: { modelValue: L[15].mirror }
}), y.$on("change", L[38]), y.$on("update", L[68]), D = new Gt({
props: { modelValue: L[15].loop }
}), D.$on("change", L[39]), D.$on("update", L[69]), l = new Gt({
props: { modelValue: L[15].lightOff }
}), l.$on("change", L[40]), l.$on("update", L[70]), {
c() {
A = J("div"), Se(I.$$.fragment), N = ae(), B = J("div"), G = J("ul"), U = J("li"), g = he(M), P = ae(), Se(y.$$.fragment), O = ae(), C = J("li"), R = he(F), T = ae(), Se(D.$$.fragment), p = ae(), S = J("li"), _ = he(b), E = ae(), Se(l.$$.fragment), V(U, "class", "svelte-fbmaz8"), V(C, "class", "svelte-fbmaz8"), V(S, "class", "svelte-fbmaz8"), V(G, "class", "speed-main svelte-fbmaz8"), V(B, "class", "d-tool-item-main svelte-fbmaz8"), V(A, "class", "d-tool-item setting-btn svelte-fbmaz8");
},
m(t, d) {
fe(t, A, d), Te(I, A, null), X(A, N), X(A, B), X(B, G), X(G, U), X(U, g), X(U, P), Te(y, U, null), X(G, O), X(G, C), X(C, R), X(C, T), Te(D, C, null), X(G, p), X(G, S), X(S, _), X(S, E), Te(l, S, null), n = !0;
},
p(t, d) {
const h = {};
d[0] & 32768 && (h.modelValue = t[15].mirror), y.$set(h);
const i = {};
d[0] & 32768 && (i.modelValue = t[15].loop), D.$set(i);
const r = {};
d[0] & 32768 && (r.modelValue = t[15].lightOff), l.$set(r);
},
i(t) {
n || ($(I.$$.fragment, t), $(y.$$.fragment, t), $(D.$$.fragment, t), $(l.$$.fragment, t), n = !0);
},
o(t) {
se(I.$$.fragment, t), se(y.$$.fragment, t), se(D.$$.fragment, t), se(l.$$.fragment, t), n = !1;
},
d(t) {
t && ue(A), xe(I), xe(y), xe(D), xe(l);
}
};
}
function Kr(L) {
let A, I, N, B, G, U, M;
return I = new Et({ props: { size: "20", icon: "icon-pip" } }), {
c() {
A = J("div"), Se(I.$$.fragment), N = ae(), B = J("div"), B.textContent = `${L[23].pictureInPicture}`, V(B, "class", "d-tool-item-main svelte-fbmaz8"), V(A, "class", "d-tool-item pip-btn svelte-fbmaz8");
},
m(g, P) {
fe(g, A, P), Te(I, A, null), X(A, N), X(A, B), G = !0, U || (M = ce(A, "click", L[41]), U = !0);
},
p: De,
i(g) {
G || ($(I.$$.fragment, g), G = !0);
},
o(g) {
se(I.$$.fragment, g), G = !1;
},
d(g) {
g && ue(A), xe(I), U = !1, M();
}
};
}
function Wr(L) {
let A, I, N, B, G, U, M, g, P;
return I = new Et({
props: { size: "20", icon: "icon-web-screen" }
}), {
c() {
A = J("div"), Se(I.$$.fragment), N = ae(), B = J("div"), G = he(L[22]), V(B, "class", U = Re(`d-tool-item-main ${L[8].includes("fullScreen") ? "" : "d-left-0"}`) + " svelte-fbmaz8"), V(A, "class", "d-tool-item pip-btn svelte-fbmaz8");
},
m(y, O) {
fe(y, A, O), Te(I, A, null), X(A, N), X(A, B), X(B, G), M = !0, g || (P = ce(A, "click", L[71]), g = !0);
},
p(y, O) {
(!M || O[0] & 4194304) && _e(G, y[22]), (!M || O[0] & 256 && U !== (U = Re(`d-tool-item-main ${y[8].includes("fullScreen") ? "" : "d-left-0"}`) + " svelte-fbmaz8")) && V(B, "class", U);
},
i(y) {
M || ($(I.$$.fragment, y), M = !0);
},
o(y) {
se(I.$$.fragment, y), M = !1;
},
d(y) {
y && ue(A), xe(I), g = !1, P();
}
};
}
function Gr(L) {
let A, I, N, B, G, U, M, g, P;
return U = new Et({
props: { size: "20", icon: "icon-screen" }
}), {
c() {
A = J("div"), I = J("div"), N = he(L[21]), G = ae(), Se(U.$$.fragment), V(I, "class", B = Re(`d-tool-item-main ${L[15].fullScreen || L[0] === "en" ? "d-left-0" : ""}`) + " svelte-fbmaz8"), V(A, "class", "d-tool-item fullScreen-btn svelte-fbmaz8");
},
m(y, O) {
fe(y, A, O), X(A, I), X(I, N), X(A, G), Te(U, A, null), M = !0, g || (P = ce(A, "click", L[42]), g = !0);
},
p(y, O) {
(!M || O[0] & 2097152) && _e(N, y[21]), (!M || O[0] & 32769 && B !== (B = Re(`d-tool-item-main ${y[15].fullScreen || y[0] === "en" ? "d-left-0" : ""}`) + " svelte-fbmaz8")) && V(I, "class", B);
},
i(y) {
M || ($(U.$$.fragment, y), M = !0);
},
o(y) {
se(U.$$.fragment, y), M = !1;
},
d(y) {
y && ue(A), xe(U), g = !1, P();
}
};
}
function Sn(L) {
let A, I, N, B, G, U, M, g, P, y, O, C, F, R, T, D, p, S, b, _, E, l, n, t = L[15].lightOff && Ar(), d = L[15].fullScreen && L[4] && Ir(L), h = !dt && Tn(L), i = !dt && xn(L);
T = new Yi({
props: {
nowLanguage: L[23],
loadingText: L[14],
loadType: L[15].loadStateType,
loadingDom: L[12],
loadingImg: L[11],
loadingType: L[13]
}
}), T.$on("playHandle", L[30]), p = new Ni({
props: {
contextMenu: L[10],
nowLanguage: L[23],
version: Dn
}
});
let r = !dt && L[7] && Cr(L);
return {
c() {
t && t.c(), A = ae(), I = J("div"), N = J("div"), B = J("video"), G = he("\u60A8\u7684\u6D4F\u89C8\u5668\u4E0D\u652F\u6301Video\u6807\u7B7E\u3002"), O = ae(), d && d.c(), C = ae(), h && h.c(), F = ae(), i && i.c(), R = ae(), Se(T.$$.fragment), D = ae(), Se(p.$$.fragment), S = ae(), r && r.c(), V(B, "class", U = Re(`${L[15].mirror ? "video-mirror" : ""} d-player-video-main`) + " svelte-fbmaz8"), V(B, "id", "dPlayerVideoMain"), B.controls = M = dt && L[15].canSpeed, B.muted = g = L[15].muted, B.loop = P = L[15].loop, B.playsInline = L[6], Mt(B.src, y = L[3]) || V(B, "src", y), V(B, "poster", L[5]), V(B, "preload", L[9]), V(B, "webkit-playsinline", L[6]), V(B, "width", "100%"), V(B, "height", "100%"), V(N, "id", "dPlayerVideo"), V(N, "class", "d-player-video svelte-fbmaz8"), V(I, "id", "refPlayerWrap"), V(I, "style", b = `width:${L[1]};height:${L[2]};--primary-color:rgb(${L[24]});--primary-color-end:rgb(${L[25]})`), V(I, "class", _ = Re(`d-player-wrap ${L[15].webFullScreen ? "web-full-screen" : ""} ${L[15].lightOff ? "is-lightoff" : ""} ${L[15].playBtnState === "play" || L[15].isVideoHovering ? "d-player-wrap-hover" : ""}`) + " svelte-fbmaz8");
},
m(e, f) {
t && t.m(e, f), fe(e, A, f), fe(e, I, f), X(I, N), X(N, B), X(B, G), L[58](B), isNaN(L[15].volume) || (B.volume = L[15].volume), X(I, O), d && d.m(I, null), X(I, C), h && h.m(I, null), X(I, F), i && i.m(I, null), X(I, R), Te(T, I, null), X(I, D), Te(p, I, null), X(I, S), r && r.m(I, null), L[73](I), E = !0, l || (n = [
ce(B, "volumechange", L[59]),
ce(B, "loadstart", function() {
Ie(L[20].loadstart) && L[20].loadstart.apply(this, arguments);
}),
ce(B, "durationchange", function() {
Ie(L[20].durationchange) && L[20].durationchange.apply(this, arguments);
}),
ce(B, "loadedmetadata", function() {
Ie(L[20].loadedmetadata) && L[20].loadedmetadata.apply(this, arguments);
}),
ce(B, "loadeddata", function() {
Ie(L[20].loadeddata) && L[20].loadeddata.apply(this, arguments);
}),
ce(B, "progress", function() {
Ie(L[20].progress) && L[20].progress.apply(this, arguments);
}),
ce(B, "canplay", function() {
Ie(L[20].canplay) && L[20].canplay.apply(this, arguments);
}),
ce(B, "canplaythrough", function() {
Ie(L[20].canplaythrough) && L[20].canplaythrough.apply(this, arguments);
}),
ce(B, "ended", function() {
Ie(L[20].ended) && L[20].ended.apply(this, arguments);
}),
ce(B, "error", function() {
Ie(L[20].error) && L[20].error.apply(this, arguments);
}),
ce(B, "pause", function() {
Ie(L[20].pause) && L[20].pause.apply(this, arguments);
}),
ce(B, "play", function() {
Ie(L[20].play) && L[20].play.apply(this, arguments);
}),
ce(B, "playing", function() {
Ie(L[20].playing) && L[20].playing.apply(this, arguments);
}),
ce(B, "seeked", function() {
Ie(L[20].seeked) && L[20].seeked.apply(this, arguments);
}),
ce(B, "seeking", function() {
Ie(L[20].seeking) && L[20].seeking.apply(this, arguments);
}),
ce(B, "stalled", function() {
Ie(L[20].stalled) && L[20].stalled.apply(this, arguments);
}),
ce(B, "timeupdate", function() {
Ie(L[20].timeupdate) && L[20].timeupdate.apply(this, arguments);
}),
ce(B, "waiting", function() {
Ie(L[20].waiting) && L[20].waiting.apply(this, arguments);
}),
ce(I, "mousemove", L[35])
], l = !0);
},
p(e, f) {
L = e, L[15].lightOff ? t ? f[0] & 32768 && $(t, 1) : (t = Ar(), t.c(), $(t, 1), t.m(A.parentNode, A)) : t && (Ne(), se(t, 1, 1, () => {
t = null;
}), Ke()), (!E || f[0] & 32768 && U !== (U = Re(`${L[15].mirror ? "video-mirror" : ""} d-player-video-main`) + " svelte-fbmaz8")) && V(B, "class", U), (!E || f[0] & 32768 && M !== (M = dt && L[15].canSpeed)) && (B.controls = M), (!E || f[0] & 32768 && g !== (g = L[15].muted)) && (B.muted = g), (!E || f[0] & 32768 && P !== (P = L[15].loop)) && (B.loop = P), (!E || f[0] & 64) && (B.playsInline = L[6]), (!E || f[0] & 8 && !Mt(B.src, y = L[3])) && V(B, "src", y), (!E || f[0] & 32) && V(B, "poster", L[5]), (!E || f[0] & 512) && V(B, "preload", L[9]), (!E || f[0] & 64) && V(B, "webkit-playsinline", L[6]), f[0] & 32768 && !isNaN(L[15].volume) && (B.volume = L[15].volume), L[15].fullScreen && L[4] ? d ? (d.p(L, f), f[0] & 32784 && $(d, 1)) : (d = Ir(L), d.c(), $(d, 1), d.m(I, C)) : d && (Ne(), se(d, 1, 1, () => {
d = null;
}), Ke()), dt || h.p(L, f), dt || i.p(L, f);
const u = {};
f[0] & 16384 && (u.loadingText = L[14]), f[0] & 32768 && (u.loadType = L[15].loadStateType), f[0] & 4096 && (u.loadingDom = L[12]), f[0] & 2048 && (u.loadingImg = L[11]), f[0] & 8192 && (u.loadingType = L[13]), T.$set(u);
const m = {};
f[0] & 1024 && (m.contextMenu = L[10]), p.$set(m), !dt && L[7] ? r ? (r.p(L, f), f[0] & 128 && $(r, 1)) : (r = Cr(L), r.c(), $(r, 1), r.m(I, null)) : r && (Ne(), se(r, 1, 1, () => {
r = null;
}), Ke()), (!E || f[0] & 6 && b !== (b = `width:${L[1]};height:${L[2]};--primary-color:rgb(${L[24]});--primary-color-end:rgb(${L[25]})`)) && V(I, "style", b), (!E || f[0] & 32768 && _ !== (_ = Re(`d-player-wrap ${L[15].webFullScreen ? "web-full-screen" : ""} ${L[15].lightOff ? "is-lightoff" : ""} ${L[15].playBtnState === "play" || L[15].isVideoHovering ? "d-player-wrap-hover" : ""}`) + " svelte-fbmaz8")) && V(I, "class", _);
},
i(e) {
E || ($(t), $(d), $(h), $(T.$$.fragment, e), $(p.$$.fragment, e), $(r), E = !0);
},
o(e) {
se(t), se(d), se(h), se(T.$$.fragment, e), se(p.$$.fragment, e), se(r), E = !1;
},
d(e) {
t && t.d(e), e && ue(A), e && ue(I), L[58](null), d && d.d(), h && h.d(), i && i.d(), xe(T), xe(p), r && r.d(), L[73](null), l = !1, at(n);
}
};
}
const Dn = "1.0.0";
function bn(L, A, I) {
let N, B;
const G = pt();
let { languageType: U = "zh-cn" } = A;
const M = ar[U] || ar["zh-cn"];
let { width: g = "800px" } = A, { height: P = "450px" } = A, { color: y = "#E93030" } = A, { colorEnd: O = "#F06F6F" } = A, { src: C = "" } = A, { title: F = "" } = A, { type: R = "video/mp4" } = A, { poster: T = "" } = A, { webFullScreen: D = !1 } = A, { canSpeed: p = !0 } = A, { currentTime: S = 0 } = A, { playsinline: b = !1 } = A, { muted: _ = !1 } = A, { speedRate: E = ["2.0", "1.5", "1.25", "1.0", "0.75", "0.5"] } = A, { autoPlay: l = !1 } = A, { loop: n = !1 } = A, { mirror: t = !1 } = A, { lightOff: d = !1 } = A, { volume: h = 1 } = A, { control: i = !0 } = A, { controlBtns: r = [
"progress",
"progressTime",
"quality",
"speedRate",
"volume",
"setting",
"pip",
"pageFullScreen",
"fullScreen"
] } = A, { preload: e = "auto" } = A, { qualityLevels: f = [] } = A, { contextMenu: u = ["filter", "hotkey", "copy", "version"] } = A, { loadingImg: m = "" } = A, { loadingDom: s = "" } = A, { loadingType: v = "" } = A, { loadingText: c = M.loading } = A, { hasFeedBack: o = !1 } = A;
const a = {
width: g,
height: P,
color: y,
colorEnd: O,
src: C,
title: F,
type: R,
poster: T,
webFullScreen: D,
canSpeed: p,
playsinline: b,
muted: _,
speedRate: E,
autoPlay: l,
loop: n,
mirror: t,
lightOff: d,
volume: h,
control: i,
controlBtns: r,
preload: e,
qualityLevels: f,
hasFeedBack: o,
isShowFeedBack: !1,
currentTime: "",
dVideo: null,
playBtnState: l ? "pause" : "play",
loadStateType: "loadstart",
fullScreen: !1,
handleType: "",
preloadBar: 0,
totalTime: "00:00:00",
isVideoHovering: !0,
speedActive: "1.0",
playProgress: 0,
isMultiplesPlay: !1,
longPressTimeout: null,
progressCursorTime: "00:00:00",
currentLevel: 0
};
let x, k, K, w, W;
const z = nr(a.color), H = nr(a.colorEnd), j = ({ detail: Q }) => {
G("feedbackConfirm", Q);
}, Y = ({ detail: Q }) => {
G("speedDisabled", Q);
}, Z = ir(500, () => {
I(15, a.handleType = "", a);
}), q = (Q) => {
Q.preventDefault(), Q.code == "ArrowUp" ? I(15, a.volume = a.volume + 0.1 > 1 ? 1 : a.volume + 0.1, a) : I(15, a.volume = a.volume - 0.1 < 0 ? 0 : a.volume - 0.1, a), I(15, a.muted = !1, a), I(15, a.handleType = "volume", a), Z();
}, ee = (Q) => {
!p || (I(
15,
a.dVideo.currentTime = a.dVideo.currentTime < 10 ? 0.1 : a.dVideo.currentTime - 10,
a
), Ee.timeupdate(a.dVideo), oe());
}, te = (Q, ge) => {
Q.preventDefault();
const Ue = Q.type;
if (Q.keyCode === 39) {
if (oe(), Ue === "keyup") {
if (clearTimeout(a.longPressTimeout), !p && !a.longPressTimeout)
return;
a.isMultiplesPlay ? (I(15, a.dVideo.playbackRate = +a.speedActive, a), I(15, a.isMultiplesPlay = !1, a)) : (I(15, a.dVideo.currentTime = a.dVideo.currentTime + 10, a), Ee.timeupdate(a.dVideo));
} else if (Ue === "keydown") {
if (!p)
return;
a.isMultiplesPlay && clearTimeout(a.longPressTimeout), I(
15,
a.longPressTimeout = window.setTimeout(
() => {
I(15, a.isMultiplesPlay = !0, a), I(15, a.dVideo.playbackRate = 5, a), I(15, a.handleType = "playbackRate", a), Z();
},
500
),
a
);
}
}
if (ge === "keydown") {
switch (Q.keyCode) {
case 32:
re(Q);
break;
case 70:
r.includes("fullScreen") && we();
break;
case 37:
ee();
break;
case 38:
q(Q);
break;
case 40:
q(Q);
break;
}
Z();
}
}, ne = () => {
dt || W.focus();
}, ie = (Q) => {
const { code: ge, message: Ue, name: Xe } = Q;
Ue.includes("play() failed because the user didn't interact with the document first") && ge === 0 && Xe === "NotAllowedError" ? (I(15, a.muted = !0, a), Ht().then(() => {
oe();
})) : setTimeout(
() => {
I(15, a.playBtnState = "replay", a), I(15, a.loadStateType = "error", a);
},
500
);
}, oe = () => {
I(15, a.loadStateType = "play", a);
const Q = a.dVideo.play();
Q && Q.catch((ge) => {
ie(ge);
}), I(15, a.playBtnState = "pause", a);
}, de = () => {
I(15, a.loadStateType = "pause", a), a.dVideo.pause(), I(15, a.playBtnState = "play", a);
}, re = (Q) => {
Q && Q.preventDefault(), a.playBtnState == "play" || a.playBtnState == "replay" ? oe() : a.playBtnState == "pause" && de();
}, le = () => {
I(15, a.muted = !a.muted, a), a.volume === 0 && I(15, a.volume = 0.05, a);
}, me = ({ detail: { ev: Q, value: ge } }) => {
var Xe, Ve;
const Ue = a.dVideo.duration || ((Ve = (Xe = a == null ? void 0 : a.dVideo) == null ? void 0 : Xe.target) == null ? void 0 : Ve.duration);
I(15, a.dVideo.currentTime = Ue * ge, a), a.playBtnState === "play" && oe();
}, ve = ({ detail: { ev: Q, val: ge } }) => {
I(15, a.progressCursorTime = Wt(a.dVideo.duration * ge), a);
}, pe = ir(2500, () => {
I(15, a.isVideoHovering = !1, a);
}), Pe = (Q) => {
I(15, a.isVideoHovering = !0, a), pe();
}, ye = (Q, ge) => {
x && (x.currentLevel = ge), I(15, a.currentLevel = ge, a);
}, Ce = (Q) => {
I(15, a.speedActive = Q, a), I(15, a.dVideo.playbackRate = +Q, a);
}, Oe = (Q) => {
G("mirrorChange", {
mirrorStatus: Q.detail,
videoDom: a.dVideo
});
}, Ae = (Q) => {
G("loopChange", {
loopStatus: Q.detail,
videoDom: a.dVideo
});
}, Fe = (Q) => {
G("lightOffChange", {
lightOffStatus: Q.detail,
videoDom: a.dVideo
});
}, We = () => {
document.exitPictureInPicture();
}, He = () => {
a.dVideo.requestPictureInPicture();
}, Ge = () => {
document.pictureInPictureElement ? We() : He();
}, we = () => {
I(15, a.fullScreen = Li(k), a);
}, Be = (...Q) => (ge) => Q.reverse().reduce(
(Ue, Xe) => {
if (Xe)
return Xe(Ue);
},
ge
), Ee = yn.reduce(
(Q, ge) => (Q[ge] = (Ue) => {
["stalled", "error"].includes(ge) && I(15, a.playBtnState = "replay", a), I(15, a.loadStateType = ge, a), ["canplay", "durationchange", "progress", "timeupdate"].includes(ge) || G(ge, {
currentTime: a.dVideo.currentTime,
duration: a.dVideo.duration
});
}, Q),
{}
);
Ee.canplay = Be(Ee.canplay, (Q) => {
(a.playBtnState !== "play" || a.autoPlay) && oe(), G("canplay", {
videoDom: a.dVideo,
duration: a.dVideo.duration
});
}), Ee.ended = Be(Ee.ended, (Q) => {
I(15, a.playBtnState = "replay", a);
}), Ee.durationchange = (Q) => {
G("durationchange", { duration: a.dVideo.duration }), S !== 0 && I(15, a.dVideo.currentTime = S, a), Ee.timeupdate(Q);
}, Ee.progress = (Q) => {
const ge = Q.target.duration;
G("progress", {
duration: ge,
currentTime: a.dVideo.currentTime
});
const Ue = Q.target.buffered, Xe = Q.target.buffered.length && Q.target.buffered.end(Ue - 1);
I(15, a.preloadBar = Xe / ge, a);
}, Ee.timeupdate = (Q) => {
const ge = Q.duration || Q.target.duration || 0, Ue = Q.currentTime || Q.target.currentTime;
G("timeupdate", { currentTime: Ue, duration: ge }), I(15, a.playProgress = Ue / ge, a), I(15, a.currentTime = Wt(Ue), a), I(15, a.totalTime = Wt(ge), a);
}, Ee.playing = Be(Ee.playing, () => {
I(15, a.playBtnState = "pause", a);
}), Ee.pause = Be(Ee.pause, () => {
I(15, a.playBtnState = "play", a);
}), Ee.error = Be(Ee.error, (Q) => {
I(15, a.loadStateType = "error", a), I(15, a.playBtnState = "replay", a);
});
const rt = () => {
if (a.dVideo.canPlayType(R) || a.dVideo.canPlayType("application/vnd.apple.mpegurl")) {
x && (x.detachMedia(), I(15, a.qualityLevels = [], a)), Ce(a.speedActive || "1.0");
return;
}
nt.isSupported() && (x = new nt({ fragLoadingTimeOut: 2e3 }), x.detachMedia(), x.attachMedia(a.dVideo), x.on(nt.Events.MEDIA_ATTACHED, () => {
x.loadSource(C), x.on(nt.Events.MANIFEST_PARSED, (Q, ge) => {
I(15, a.qualityLevels = ge.levels || [], a);
});
}), x.on(nt.Events.ERROR, (Q, ge) => {
if (ge.fatal)
switch (ge.type) {
case nt.ErrorTypes.NETWORK_ERROR:
x.startLoad();
break;
case nt.ErrorTypes.MEDIA_ERROR:
x.recoverMediaError();
break;
default:
x.destroy();
break;
}
}), x.on(nt.Events.LEVEL_SWITCHING, (Q, ge) => {
G(nt.Events.LEVEL_SWITCHING, ge.level);
}), x.on(nt.Events.LEVEL_SWITCHED, (Q, ge) => {
I(15, a.currentLevel = ge.level, a), G(nt.Events.LEVEL_SWITCHED, a.currentLevel);
}));
};
Qr(() => {
I(15, a.dVideo = K, a), ne();
});
function Le(Q) {
ct[Q ? "unshift" : "push"](() => {
K = Q, I(17, K);
});
}
function Me() {
a.volume = this.volume, I(15, a);
}
function je(Q) {
ct[Q ? "unshift" : "push"](() => {
W = Q, I(19, W);
});
}
const be = () => {
r.includes("fullScreen") && we();
}, ke = (Q) => {
te(Q, "keydown");
}, ze = (Q) => {
I(15, a.playProgress = Q.detail, a);
}, ot = (Q, ge) => {
ye(Q, ge);
}, lt = (Q) => {
Ce(Q);
}, vt = () => {
I(15, a.muted = !1, a);
}, Qe = (Q) => {
I(15, a.volume = Q.detail, a);
}, xt = (Q) => {
I(15, a.mirror = Q.detail, a);
}, ut = (Q) => {
I(15, a.loop = Q.detail, a);
}, it = (Q) => {
I(15, a.lightOff = Q.detail, a);
}, gt = () => {
I(15, a.webFullScreen = !a.webFullScreen, a);
};
function ft(Q) {
ct[Q ? "unshift" : "push"](() => {
w = Q, I(18, w);
});
}
function yt(Q) {
ct[Q ? "unshift" : "push"](() => {
k = Q, I(16, k);
});
}
return L.$$set = (Q) => {
"languageType" in Q && I(0, U = Q.languageType), "width" in Q && I(1, g = Q.width), "height" in Q && I(2, P = Q.height), "color" in Q && I(43, y = Q.color), "colorEnd" in Q && I(44, O = Q.colorEnd), "src" in Q && I(3, C = Q.src), "title" in Q && I(4, F = Q.title), "type" in Q && I(45, R = Q.type), "poster" in Q && I(5, T = Q.poster), "webFullScreen" in Q && I(46, D = Q.webFullScreen), "canSpeed" in Q && I(47, p = Q.canSpeed), "currentTime" in Q && I(48, S = Q.currentTime), "playsinline" in Q && I(6, b = Q.playsinline), "muted" in Q && I(49, _ = Q.muted), "speedRate" in Q && I(50, E = Q.speedRate), "autoPlay" in Q && I(51, l = Q.autoPlay), "loop" in Q && I(52, n = Q.loop), "mirror" in Q && I(53, t = Q.mirror), "lightOff" in Q && I(54, d = Q.lightOff), "volume" in Q && I(55, h = Q.volume), "control" in Q && I(7, i = Q.control), "controlBtns" in Q && I(8, r = Q.controlBtns), "preload" in Q && I(9, e = Q.preload), "qualityLevels" in Q && I(56, f = Q.qualityLevels), "contextMenu" in Q && I(10, u = Q.contextMenu), "loadingImg" in Q && I(11, m = Q.loadingImg), "loadingDom" in Q && I(12, s = Q.loadingDom), "loadingType" in Q && I(13, v = Q.loadingType), "loadingText" in Q && I(14, c = Q.loadingText), "hasFeedBack" in Q && I(57, o = Q.hasFeedBack);
}, L.$$.update = () => {
L.$$.dirty[0] & 32768 && I(22, N = a.webFullScreen ? M.exitWebFullScreen : M.webFullScreen), L.$$.dirty[0] & 32768 && I(21, B = a.fullScreen ? M.exitFullScreen : M.fullScreen), L.$$.dirty[0] & 8 && C && Ht().then(() => {
rt();
});
}, [
U,
g,
P,
C,
F,
T,
b,
i,
r,
e,
u,
m,
s,
v,
c,
a,
k,
K,
w,
W,
Ee,
B,
N,
M,
z,
H,
j,
Y,
te,
ne,
oe,
re,
le,
me,
ve,
Pe,
ye,
Ce,
Oe,
Ae,
Fe,
Ge,
we,
y,
O,
R,
D,
p,
S,
_,
E,
l,
n,
t,
d,
h,
f,
o,
Le,
Me,
je,
be,
ke,
ze,
ot,
lt,
vt,
Qe,
xt,
ut,
it,
gt,
ft,
yt
];
}
class Ln extends tt {
constructor(A) {
super(), et(
this,
A,
bn,
Sn,
qe,
{
languageType: 0,
width: 1,
height: 2,
color: 43,
colorEnd: 44,
src: 3,
title: 4,
type: 45,
poster: 5,
webFullScreen: 46,
canSpeed: 47,
currentTime: 48,
playsinline: 6,
muted: 49,
speedRate: 50,
autoPlay: 51,
loop: 52,
mirror: 53,
lightOff: 54,
volume: 55,
control: 7,
controlBtns: 8,
preload: 9,
qualityLevels: 56,
contextMenu: 10,
loadingImg: 11,
loadingDom: 12,
loadingType: 13,
loadingText: 14,
hasFeedBack: 57
},
_n,
[-1, -1, -1]
);
}
}
export {
Ln as default
};