mirror of
https://github.com/dirtydishes/dreamio.git
synced 2026-06-06 21:38:15 +00:00
189 lines
No EOL
674 KiB
HTML
189 lines
No EOL
674 KiB
HTML
<!doctype html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
<title>Native Player Liquid Glass UX</title>
|
|
<style>
|
|
:root { color-scheme: dark; --bg:#06080b; --panel:rgba(17,24,32,.94); --line:rgba(255,255,255,.1); --text:#e6edf4; --muted:#90a0b2; --lavender:#bda7ff; --pink:#ff9bd2; --code:#0a0f14; }
|
|
* { box-sizing:border-box; } body { margin:0; background:radial-gradient(circle at top left, rgba(189,167,255,.18), transparent 32rem), linear-gradient(180deg,#06080b,#081017 45%,#05080c); color:var(--text); font:16px/1.6 system-ui,-apple-system,sans-serif; }
|
|
main { width:min(1080px, calc(100% - 32px)); margin:0 auto; padding:40px 0 64px; } header,section { border:1px solid var(--line); border-radius:14px; background:linear-gradient(180deg,var(--panel),rgba(13,20,27,.94)); } header { padding:28px; box-shadow:0 24px 70px rgba(0,0,0,.45); } section { padding:22px; margin-top:18px; }
|
|
.eyebrow,h2,.meta-chip,.diff-title { font-family:ui-monospace,SFMono-Regular,Menlo,monospace; } .eyebrow,h2 { color:var(--lavender); text-transform:uppercase; letter-spacing:.12em; font-size:.82rem; }
|
|
h1 { margin:0; max-width:18ch; font-size:clamp(2.1rem,4vw,4rem); line-height:1.04; text-transform:uppercase; letter-spacing:.05em; } .summary,p,li { max-width:76ch; } .summary,.note { color:var(--muted); }
|
|
.meta-row { display:flex; flex-wrap:wrap; gap:10px; margin-top:18px; } .meta-chip { padding:6px 10px; border:1px solid rgba(189,167,255,.28); border-radius:999px; background:rgba(189,167,255,.11); font-size:.74rem; text-transform:uppercase; }
|
|
code { color:#decfff; } .diff-shell { border:1px solid var(--line); border-radius:12px; overflow:hidden; background:rgba(8,12,17,.92); } .diff-title { margin:0; padding:12px 14px; border-bottom:1px solid var(--line); font-size:.76rem; text-transform:uppercase; } .diff-view { overflow-x:auto; } .diff-fallback { display:none; }
|
|
</style>
|
|
</head>
|
|
<body><main><header><p class="eyebrow">Dreamio turn document</p><h1>Native Player Liquid Glass UX</h1><p class="summary">The native VLC player received a fuller control experience: Liquid Glass-backed panels on iOS 26, larger controls, clearer loading and failure states, scrubbing feedback, double-tap seeking, menu polish, iPad width adaptation, and accessibility improvements.</p><div class="meta-row"><span class="meta-chip">2026-05-26</span><span class="meta-chip">Beads issue dreamio-060</span><span class="meta-chip">Native player UI</span></div></header>
|
|
<section><h2>Summary</h2><p>Implemented the remaining player UX plan in <code>Dreamio/NativePlayerViewController.swift</code>, keeping the VLC backend contract intact while improving the control surface and user feedback around playback.</p></section>
|
|
<section><h2>Changes Made</h2><ul><li>Added an availability-gated <code>UIGlassEffect</code> panel helper with blur fallback for older iOS versions.</li><li>Restructured overlay elements into bottom controls, centered transient play/pause feedback, glass loading pill, and glass failure card.</li><li>Raised touch targets to 44 points and made play/pause the dominant 56-point action.</li><li>Added scrub target bubble, larger active thumb, haptics, and double-tap left/right seek gestures.</li><li>Extended auto-hide timing, added a bottom contrast scrim, improved audio/subtitle menu labels, and added reset subtitle delay.</li><li>Added retry/close failure actions, iPad wider controls, reduced-motion-aware animation, accessibility hints, scrubber value, and custom accessibility jump actions.</li></ul></section>
|
|
<section><h2>Context</h2><p>The prior baseline was compact and functional but used a plain blur tray, small controls, a spinner-only loading state, and a text-only failure state. This pass keeps the same native playback architecture while making the player feel more intentional and touch-friendly.</p></section>
|
|
<section><h2>Important Implementation Details</h2><ul><li>Liquid Glass is gated behind <code>#available(iOS 26.0, *)</code>; older systems keep <code>systemUltraThinMaterialDark</code>.</li><li>No backend API changes were required; scrub previews are timestamp-only because the backend does not expose preview frames.</li><li>Auto-hide now avoids hiding during scrubbing, loading, or failure states and uses 4.5 seconds for more comfortable interaction.</li><li>Retry restarts the same native playback request and resets cached menu signatures.</li></ul></section>
|
|
<section><h2>Relevant Diff Snippets</h2><div class="diff-shell rendered"><p class="diff-title">Dreamio/NativePlayerViewController.swift · player controls UX pass</p><div class="diff-view"><svg data-icon-sprite aria-hidden="true" width="0" height="0">
|
|
<symbol id="diffs-icon-arrow-right-short" viewBox="0 0 16 16">
|
|
<path d="M8.47 4.22a.75.75 0 0 0 0 1.06l1.97 1.97H3.75a.75.75 0 0 0 0 1.5h6.69l-1.97 1.97a.75.75 0 1 0 1.06 1.06l3.25-3.25a.75.75 0 0 0 0-1.06L9.53 4.22a.75.75 0 0 0-1.06 0"/>
|
|
</symbol>
|
|
<symbol id="diffs-icon-brand-github" viewBox="0 0 16 16">
|
|
<path d="M8 0c4.42 0 8 3.58 8 8a8.01 8.01 0 0 1-5.45 7.59c-.4.08-.55-.17-.55-.38 0-.27.01-1.13.01-2.2 0-.75-.25-1.23-.54-1.48 1.78-.2 3.65-.88 3.65-3.95 0-.88-.31-1.59-.82-2.15.08-.2.36-1.02-.08-2.12 0 0-.67-.22-2.2.82-.64-.18-1.32-.27-2-.27s-1.36.09-2 .27c-1.53-1.03-2.2-.82-2.2-.82-.44 1.1-.16 1.92-.08 2.12-.51.56-.82 1.28-.82 2.15 0 3.06 1.86 3.75 3.64 3.95-.23.2-.44.55-.51 1.07-.46.21-1.61.55-2.33-.66-.15-.24-.6-.83-1.23-.82-.67.01-.27.38.01.53.34.19.73.9.82 1.13.16.45.68 1.31 2.69.94 0 .67.01 1.3.01 1.49 0 .21-.15.45-.55.38A7.995 7.995 0 0 1 0 8c0-4.42 3.58-8 8-8"/>
|
|
</symbol>
|
|
<symbol id="diffs-icon-chevron" viewBox="0 0 16 16">
|
|
<path d="M1.47 4.47a.75.75 0 0 1 1.06 0L8 9.94l5.47-5.47a.75.75 0 1 1 1.06 1.06l-6 6a.75.75 0 0 1-1.06 0l-6-6a.75.75 0 0 1 0-1.06"/>
|
|
</symbol>
|
|
<symbol id="diffs-icon-chevrons-narrow" viewBox="0 0 10 16">
|
|
<path d="M4.47 2.22a.75.75 0 0 1 1.06 0l3.25 3.25a.75.75 0 0 1-1.06 1.06L5 3.81 2.28 6.53a.75.75 0 0 1-1.06-1.06zM1.22 9.47a.75.75 0 0 1 1.06 0L5 12.19l2.72-2.72a.75.75 0 0 1 1.06 1.06l-3.25 3.25a.75.75 0 0 1-1.06 0l-3.25-3.25a.75.75 0 0 1 0-1.06"/>
|
|
</symbol>
|
|
<symbol id="diffs-icon-diff-split" viewBox="0 0 16 16">
|
|
<path d="M14 0H8.5v16H14a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2m-1.5 6.5v1h1a.5.5 0 0 1 0 1h-1v1a.5.5 0 0 1-1 0v-1h-1a.5.5 0 0 1 0-1h1v-1a.5.5 0 0 1 1 0"/><path d="M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h5.5V0zm.5 7.5h3a.5.5 0 0 1 0 1h-3a.5.5 0 0 1 0-1" opacity=".3"/>
|
|
</symbol>
|
|
<symbol id="diffs-icon-diff-unified" viewBox="0 0 16 16">
|
|
<path fill-rule="evenodd" d="M16 14a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V8.5h16zm-8-4a.5.5 0 0 0-.5.5v1h-1a.5.5 0 0 0 0 1h1v1a.5.5 0 0 0 1 0v-1h1a.5.5 0 0 0 0-1h-1v-1A.5.5 0 0 0 8 10" clip-rule="evenodd"/><path fill-rule="evenodd" d="M14 0a2 2 0 0 1 2 2v5.5H0V2a2 2 0 0 1 2-2zM6.5 3.5a.5.5 0 0 0 0 1h3a.5.5 0 0 0 0-1z" clip-rule="evenodd" opacity=".4"/>
|
|
</symbol>
|
|
<symbol id="diffs-icon-expand" viewBox="0 0 16 16">
|
|
<path d="M3.47 5.47a.75.75 0 0 1 1.06 0L8 8.94l3.47-3.47a.75.75 0 1 1 1.06 1.06l-4 4a.75.75 0 0 1-1.06 0l-4-4a.75.75 0 0 1 0-1.06"/>
|
|
</symbol>
|
|
<symbol id="diffs-icon-expand-all" viewBox="0 0 16 16">
|
|
<path d="M11.47 9.47a.75.75 0 1 1 1.06 1.06l-4 4a.75.75 0 0 1-1.06 0l-4-4a.75.75 0 1 1 1.06-1.06L8 12.94zM7.526 1.418a.75.75 0 0 1 1.004.052l4 4a.75.75 0 1 1-1.06 1.06L8 3.06 4.53 6.53a.75.75 0 1 1-1.06-1.06l4-4z"/>
|
|
</symbol>
|
|
<symbol id="diffs-icon-file-code" viewBox="0 0 16 16">
|
|
<path d="M10.75 0c.199 0 .39.08.53.22l3.5 3.5c.14.14.22.331.22.53v9A2.75 2.75 0 0 1 12.25 16h-8.5A2.75 2.75 0 0 1 1 13.25V2.75A2.75 2.75 0 0 1 3.75 0zm-7 1.5c-.69 0-1.25.56-1.25 1.25v10.5c0 .69.56 1.25 1.25 1.25h8.5c.69 0 1.25-.56 1.25-1.25V5h-1.25A2.25 2.25 0 0 1 10 2.75V1.5z"/><path d="M7.248 6.19a.75.75 0 0 1 .063 1.058L5.753 9l1.558 1.752a.75.75 0 0 1-1.122.996l-2-2.25a.75.75 0 0 1 0-.996l2-2.25a.75.75 0 0 1 1.06-.063M8.69 7.248a.75.75 0 1 1 1.12-.996l2 2.25a.75.75 0 0 1 0 .996l-2 2.25a.75.75 0 1 1-1.12-.996L10.245 9z"/>
|
|
</symbol>
|
|
<symbol id="diffs-icon-plus" viewBox="0 0 16 16">
|
|
<path d="M8 3a.75.75 0 0 1 .75.75v3.5h3.5a.75.75 0 0 1 0 1.5h-3.5v3.5a.75.75 0 0 1-1.5 0v-3.5h-3.5a.75.75 0 0 1 0-1.5h3.5v-3.5A.75.75 0 0 1 8 3"/>
|
|
</symbol>
|
|
<symbol id="diffs-icon-symbol-added" viewBox="0 0 16 16">
|
|
<path d="M8 4a.75.75 0 0 1 .75.75v2.5h2.5a.75.75 0 0 1 0 1.5h-2.5v2.5a.75.75 0 0 1-1.5 0v-2.5h-2.5a.75.75 0 0 1 0-1.5h2.5v-2.5A.75.75 0 0 1 8 4"/><path d="M1.788 4.296c.196-.88.478-1.381.802-1.706s.826-.606 1.706-.802C5.194 1.588 6.387 1.5 8 1.5s2.806.088 3.704.288c.88.196 1.381.478 1.706.802s.607.826.802 1.706c.2.898.288 2.091.288 3.704s-.088 2.806-.288 3.704c-.195.88-.478 1.381-.802 1.706s-.826.607-1.706.802c-.898.2-2.091.288-3.704.288s-2.806-.088-3.704-.288c-.88-.195-1.381-.478-1.706-.802s-.606-.826-.802-1.706C1.588 10.806 1.5 9.613 1.5 8s.088-2.806.288-3.704M8 0C1.412 0 0 1.412 0 8s1.412 8 8 8 8-1.412 8-8-1.412-8-8-8"/>
|
|
</symbol>
|
|
<symbol id="diffs-icon-symbol-deleted" viewBox="0 0 16 16">
|
|
<path d="M4 8a.75.75 0 0 1 .75-.75h6.5a.75.75 0 0 1 0 1.5h-6.5A.75.75 0 0 1 4 8"/><path d="M1.788 4.296c.196-.88.478-1.381.802-1.706s.826-.606 1.706-.802C5.194 1.588 6.387 1.5 8 1.5s2.806.088 3.704.288c.88.196 1.381.478 1.706.802s.607.826.802 1.706c.2.898.288 2.091.288 3.704s-.088 2.806-.288 3.704c-.195.88-.478 1.381-.802 1.706s-.826.607-1.706.802c-.898.2-2.091.288-3.704.288s-2.806-.088-3.704-.288c-.88-.195-1.381-.478-1.706-.802s-.606-.826-.802-1.706C1.588 10.806 1.5 9.613 1.5 8s.088-2.806.288-3.704M8 0C1.412 0 0 1.412 0 8s1.412 8 8 8 8-1.412 8-8-1.412-8-8-8"/>
|
|
</symbol>
|
|
<symbol id="diffs-icon-symbol-diffstat" viewBox="0 0 16 16">
|
|
<path d="M1.788 4.296c.196-.88.478-1.381.802-1.706s.826-.606 1.706-.802C5.194 1.588 6.387 1.5 8 1.5s2.806.088 3.704.288c.88.196 1.381.478 1.706.802s.607.826.802 1.706c.2.898.288 2.091.288 3.704s-.088 2.806-.288 3.704c-.195.88-.478 1.381-.802 1.706s-.826.607-1.706.802c-.898.2-2.091.288-3.704.288s-2.806-.088-3.704-.288c-.88-.195-1.381-.478-1.706-.802s-.606-.826-.802-1.706C1.588 10.806 1.5 9.613 1.5 8s.088-2.806.288-3.704M8 0C1.412 0 0 1.412 0 8s1.412 8 8 8 8-1.412 8-8-1.412-8-8-8"/><path d="M8.75 4.296a.75.75 0 0 0-1.5 0V6.25h-2a.75.75 0 0 0 0 1.5h2v1.5h1.5v-1.5h2a.75.75 0 0 0 0-1.5h-2zM5.25 10a.75.75 0 0 0 0 1.5h5.5a.75.75 0 0 0 0-1.5z"/>
|
|
</symbol>
|
|
<symbol id="diffs-icon-symbol-ignored" viewBox="0 0 16 16">
|
|
<path d="M1.5 8c0 1.613.088 2.806.288 3.704.196.88.478 1.381.802 1.706s.826.607 1.706.802c.898.2 2.091.288 3.704.288s2.806-.088 3.704-.288c.88-.195 1.381-.478 1.706-.802s.607-.826.802-1.706c.2-.898.288-2.091.288-3.704s-.088-2.806-.288-3.704c-.195-.88-.478-1.381-.802-1.706s-.826-.606-1.706-.802C10.806 1.588 9.613 1.5 8 1.5s-2.806.088-3.704.288c-.88.196-1.381.478-1.706.802s-.606.826-.802 1.706C1.588 5.194 1.5 6.387 1.5 8M0 8c0-6.588 1.412-8 8-8s8 1.412 8 8-1.412 8-8 8-8-1.412-8-8m11.53-2.47a.75.75 0 0 0-1.06-1.06l-6 6a.75.75 0 1 0 1.06 1.06z"/>
|
|
</symbol>
|
|
<symbol id="diffs-icon-symbol-modified" viewBox="0 0 16 16">
|
|
<path d="M1.5 8c0 1.613.088 2.806.288 3.704.196.88.478 1.381.802 1.706s.826.607 1.706.802c.898.2 2.091.288 3.704.288s2.806-.088 3.704-.288c.88-.195 1.381-.478 1.706-.802s.607-.826.802-1.706c.2-.898.288-2.091.288-3.704s-.088-2.806-.288-3.704c-.195-.88-.478-1.381-.802-1.706s-.826-.606-1.706-.802C10.806 1.588 9.613 1.5 8 1.5s-2.806.088-3.704.288c-.88.196-1.381.478-1.706.802s-.606.826-.802 1.706C1.588 5.194 1.5 6.387 1.5 8M0 8c0-6.588 1.412-8 8-8s8 1.412 8 8-1.412 8-8 8-8-1.412-8-8m8 3a3 3 0 1 0 0-6 3 3 0 0 0 0 6"/>
|
|
</symbol>
|
|
<symbol id="diffs-icon-symbol-moved" viewBox="0 0 16 16">
|
|
<path d="M1.788 4.296c.196-.88.478-1.381.802-1.706s.826-.606 1.706-.802C5.194 1.588 6.387 1.5 8 1.5s2.806.088 3.704.288c.88.196 1.381.478 1.706.802s.607.826.802 1.706c.2.898.288 2.091.288 3.704s-.088 2.806-.288 3.704c-.195.88-.478 1.381-.802 1.706s-.826.607-1.706.802c-.898.2-2.091.288-3.704.288s-2.806-.088-3.704-.288c-.88-.195-1.381-.478-1.706-.802s-.606-.826-.802-1.706C1.588 10.806 1.5 9.613 1.5 8s.088-2.806.288-3.704M8 0C1.412 0 0 1.412 0 8s1.412 8 8 8 8-1.412 8-8-1.412-8-8-8"/><path d="M8.495 4.695a.75.75 0 0 0-.05 1.06L10.486 8l-2.041 2.246a.75.75 0 0 0 1.11 1.008l2.5-2.75a.75.75 0 0 0 0-1.008l-2.5-2.75a.75.75 0 0 0-1.06-.051m-4 0a.75.75 0 0 0-.05 1.06l2.044 2.248-1.796 1.995a.75.75 0 0 0 1.114 1.004l2.25-2.5a.75.75 0 0 0-.002-1.007l-2.5-2.75a.75.75 0 0 0-1.06-.05"/>
|
|
</symbol>
|
|
<symbol id="diffs-icon-symbol-ref" viewBox="0 0 16 16">
|
|
<path d="M1.5 8c0 1.613.088 2.806.288 3.704.196.88.478 1.381.802 1.706.286.286.71.54 1.41.73V1.86c-.7.19-1.124.444-1.41.73-.324.325-.606.826-.802 1.706C1.588 5.194 1.5 6.387 1.5 8m4 6.397c.697.07 1.522.103 2.5.103 1.613 0 2.806-.088 3.704-.288.88-.195 1.381-.478 1.706-.802s.607-.826.802-1.706c.2-.898.288-2.091.288-3.704s-.088-2.806-.288-3.704c-.195-.88-.478-1.381-.802-1.706s-.826-.606-1.706-.802C10.806 1.588 9.613 1.5 8 1.5c-.978 0-1.803.033-2.5.103zM0 8c0-6.588 1.412-8 8-8s8 1.412 8 8-1.412 8-8 8-8-1.412-8-8m7-2a1 1 0 0 1 1-1h3a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H8a1 1 0 0 1-1-1z"/>
|
|
</symbol>
|
|
</svg><style data-core-css="">@layer base, theme, rendered, unsafe;
|
|
@layer base,theme,rendered,unsafe;@layer base{:host{--diffs-font-fallback:"SF Mono", Monaco, Consolas, "Ubuntu Mono", "Liberation Mono", "Courier New", monospace;--diffs-header-font-fallback:system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", "Liberation Sans", Arial, sans-serif;--diffs-mixer:light-dark(#000,#fff);--diffs-gap-fallback:8px;--diffs-scrollbar-gutter-fallback:6px;--diffs-scrollbar-gutter:var(--diffs-scrollbar-gutter-override,var(--diffs-scrollbar-gutter-measured,var(--diffs-scrollbar-gutter-fallback)));--diffs-added-light:#0dbe4e;--diffs-added-dark:#5ecc71;--diffs-modified-light:#009fff;--diffs-modified-dark:#69b1ff;--diffs-deleted-light:#ff2e3f;--diffs-deleted-dark:#ff6762;color-scheme:light dark;font-family:var(--diffs-header-font-family,var(--diffs-header-font-fallback));font-size:var(--diffs-font-size,13px);line-height:var(--diffs-line-height,20px);font-feature-settings:var(--diffs-font-features);--diffs-bg:light-dark(var(--diffs-light-bg,#fff),var(--diffs-dark-bg,#000));--diffs-bg-buffer:var(--diffs-bg-buffer-override,light-dark(color-mix(in lab, var(--diffs-bg) 92%, var(--diffs-mixer)),color-mix(in lab, var(--diffs-bg) 92%, var(--diffs-mixer))));--diffs-bg-context:var(--diffs-bg-context-override,light-dark(color-mix(in lab, var(--diffs-bg) 98.5%, var(--diffs-mixer)),color-mix(in lab, var(--diffs-bg) 92.5%, var(--diffs-mixer))));--diffs-bg-context-gutter:var(--diffs-bg-context-gutter-override,light-dark(color-mix(in lab, var(--diffs-bg-context) 90%, var(--diffs-bg)),color-mix(in lab, var(--diffs-bg-context) 45%, var(--diffs-bg))));--diffs-bg-separator:var(--diffs-bg-separator-override,light-dark(color-mix(in lab, var(--diffs-bg) 96%, var(--diffs-mixer)),color-mix(in lab, var(--diffs-bg) 85%, var(--diffs-mixer))));--diffs-fg:light-dark(var(--diffs-light,#000),var(--diffs-dark,#fff));--diffs-fg-number:var(--diffs-fg-number-override,light-dark(color-mix(in lab, var(--diffs-fg) 65%, var(--diffs-bg)),color-mix(in lab, var(--diffs-fg) 65%, var(--diffs-bg))));--diffs-fg-conflict-marker:var(--diffs-fg-conflict-marker-override,var(--diffs-fg-number));--diffs-deletion-base:var(--diffs-deletion-color-override,light-dark(var(--diffs-light-deletion-color,var(--diffs-deletion-color,var(--diffs-deleted-light))),var(--diffs-dark-deletion-color,var(--diffs-deletion-color,var(--diffs-deleted-dark)))));--diffs-addition-base:var(--diffs-addition-color-override,light-dark(var(--diffs-light-addition-color,var(--diffs-addition-color,var(--diffs-added-light))),var(--diffs-dark-addition-color,var(--diffs-addition-color,var(--diffs-added-dark)))));--diffs-modified-base:var(--diffs-modified-color-override,light-dark(var(--diffs-light-modified-color,var(--diffs-modified-color,var(--diffs-modified-light))),var(--diffs-dark-modified-color,var(--diffs-modified-color,var(--diffs-modified-dark)))));--diffs-bg-deletion:var(--diffs-bg-deletion-override,light-dark(color-mix(in lab, var(--diffs-bg) 88%, var(--diffs-deletion-base)),color-mix(in lab, var(--diffs-bg) 80%, var(--diffs-deletion-base))));--diffs-bg-deletion-emphasis:var(--diffs-bg-deletion-emphasis-override,light-dark(rgb(from var(--diffs-deletion-base) r g b / .15),rgb(from var(--diffs-deletion-base) r g b / .2)));--diffs-bg-addition:var(--diffs-bg-addition-override,light-dark(color-mix(in lab, var(--diffs-bg) 88%, var(--diffs-addition-base)),color-mix(in lab, var(--diffs-bg) 80%, var(--diffs-addition-base))));--diffs-bg-addition-emphasis:var(--diffs-bg-addition-emphasis-override,light-dark(rgb(from var(--diffs-addition-base) r g b / .15),rgb(from var(--diffs-addition-base) r g b / .2)));--diffs-selection-base:var(--diffs-modified-base);--diffs-selection-number-fg:light-dark(color-mix(in lab, var(--diffs-selection-base) 65%, var(--diffs-mixer)),color-mix(in lab, var(--diffs-selection-base) 75%, var(--diffs-mixer)));background-color:var(--diffs-bg);color:var(--diffs-fg);display:block}pre,code,[data-error-wrapper]{isolation:isolate;font-family:var(--diffs-font-family,var(--diffs-font-fallback));outline:none;margin:0;padding:0;display:block}pre,code{background-color:var(--diffs-bg)}code{contain:content}*,:before,:after{box-sizing:border-box}[data-icon-sprite]{display:none}[data-diffs-header],[data-separator]{font-family:var(--diffs-header-font-family,var(--diffs-header-font-fallback))}[data-diffs-header][data-sticky]{z-index:1;background-color:var(--diffs-bg);position:sticky;top:0}[data-file-info]{color:var(--fg);background-color:color-mix(in lab, var(--bg) 98%, var(--fg));border-block:1px solid color-mix(in lab, var(--bg) 95%, var(--fg));padding:10px;font-weight:700}[data-diff],[data-file]{--diffs-grid-number-column-width:minmax(min-content, max-content);--diffs-code-grid:var(--diffs-grid-number-column-width) 1fr}[data-dehydrated]:is([data-diff],[data-file]){--diffs-code-grid:var(--diffs-grid-number-column-width) minmax(0, 1fr)}:is([data-diff],[data-file]):hover [data-code]::-webkit-scrollbar-thumb{background-color:var(--diffs-bg-context)}@supports (-webkit-touch-callout:none){:host{--diffs-scrollbar-gutter-fallback:0px}}[data-line] span{color:light-dark(var(--diffs-token-light,var(--diffs-light)),var(--diffs-token-dark,var(--diffs-dark)));background-color:light-dark(var(--diffs-token-light-bg,inherit),var(--diffs-token-dark-bg,inherit));font-weight:light-dark(var(--diffs-token-light-font-weight,inherit),var(--diffs-token-dark-font-weight,inherit));font-style:light-dark(var(--diffs-token-light-font-style,inherit),var(--diffs-token-dark-font-style,inherit));-webkit-text-decoration:light-dark(var(--diffs-token-light-text-decoration,inherit),var(--diffs-token-dark-text-decoration,inherit));text-decoration:light-dark(var(--diffs-token-light-text-decoration,inherit),var(--diffs-token-dark-text-decoration,inherit))}[data-line],[data-gutter-buffer],[data-column-number],[data-line-annotation],[data-no-newline],[data-merge-conflict],[data-merge-conflict-actions]{--diffs-computed-decoration-bg:var(--diffs-bg);--diffs-computed-diff-line-bg:var(--diffs-bg);--diffs-computed-selected-line-bg:var(--diffs-bg);color:var(--diffs-fg);background-color:var(--diffs-line-bg,var(--diffs-bg))}@media (pointer:fine){:is([data-line],[data-gutter-buffer],[data-column-number],[data-line-annotation],[data-no-newline],[data-merge-conflict],[data-merge-conflict-actions]):where([data-hovered]){--diffs-computed-hovered-line-bg:light-dark(color-mix(in lab, var(--diffs-computed-selected-line-bg) 97%, var(--diffs-bg-hover-override,var(--diffs-mixer))),color-mix(in lab, var(--diffs-computed-selected-line-bg) 91%, var(--diffs-bg-hover-override,var(--diffs-mixer))));--diffs-line-bg:var(--diffs-computed-hovered-line-bg,inherit)}}[data-decoration-bg]:is([data-line],[data-no-newline]){--mix-deco-light:92%;--mix-deco-dark:85%}[data-decoration-bg][data-decoration-bg-depth="2"]:is([data-line],[data-no-newline]){--mix-deco-light:88%;--mix-deco-dark:80%}[data-decoration-bg][data-decoration-bg-depth="3"]:is([data-line],[data-no-newline]){--mix-deco-light:85%;--mix-deco-dark:78%}@media (pointer:fine){[data-decoration-bg][data-hovered]:is([data-line],[data-no-newline]):not([data-selected-line]){--mix-deco-light:85%;--mix-deco-dark:85%}[data-decoration-bg][data-hovered][data-decoration-bg-depth="2"]:is([data-line],[data-no-newline]):not([data-selected-line]){--mix-deco-light:83%;--mix-deco-dark:83%}[data-decoration-bg][data-hovered][data-decoration-bg-depth="3"]:is([data-line],[data-no-newline]):not([data-selected-line]){--mix-deco-light:81%;--mix-deco-dark:81%}}[data-decoration-bg]:is([data-line],[data-no-newline]){--diffs-computed-decoration-bg:light-dark(color-mix(in lab, var(--diffs-bg) var(--mix-deco-light), var(--diffs-decoration-bg)),color-mix(in lab, var(--diffs-bg) var(--mix-deco-dark), var(--diffs-decoration-bg)));--diffs-computed-diff-line-bg:var(--diffs-computed-decoration-bg);--diffs-computed-selected-line-bg:var(--diffs-computed-decoration-bg);--diffs-line-bg:var(--diffs-computed-decoration-bg)}[data-line-annotation],[data-gutter-buffer=annotation]{--diffs-annotation-bg:var(--diffs-bg-context);--diffs-computed-decoration-bg:var(--diffs-annotation-bg);--diffs-computed-diff-line-bg:var(--diffs-annotation-bg);--diffs-computed-selected-line-bg:var(--diffs-annotation-bg);--diffs-line-bg:var(--diffs-annotation-bg)}[data-merge-conflict-actions],[data-gutter-buffer=merge-conflict-action],[data-gutter-buffer=merge-conflict-marker-base],[data-gutter-buffer=merge-conflict-marker-separator],[data-merge-conflict=marker-base],[data-merge-conflict=marker-separator]{--diffs-computed-decoration-bg:var(--diffs-bg-context);--diffs-computed-diff-line-bg:var(--diffs-bg-context);--diffs-computed-selected-line-bg:var(--diffs-bg-context);--diffs-line-bg:var(--diffs-bg-context)}[data-gutter-buffer=merge-conflict-marker-start],[data-merge-conflict=marker-start]{--diffs-computed-decoration-bg:light-dark(color-mix(in lab, var(--diffs-bg) 78%, var(--conflict-bg-current-header-override,var(--diffs-addition-base))),color-mix(in lab, var(--diffs-bg) 68%, var(--conflict-bg-current-header-override,var(--diffs-addition-base))));--diffs-computed-diff-line-bg:var(--diffs-computed-decoration-bg);--diffs-computed-selected-line-bg:var(--diffs-computed-decoration-bg);--diffs-line-bg:var(--diffs-computed-decoration-bg)}[data-gutter-buffer=merge-conflict-marker-end],[data-merge-conflict=marker-end]{--diffs-computed-decoration-bg:light-dark(color-mix(in lab, var(--diffs-bg) 78%, var(--conflict-bg-incoming-header-override,var(--diffs-modified-base))),color-mix(in lab, var(--diffs-bg) 68%, var(--conflict-bg-incoming-header-override,var(--diffs-modified-base))));--diffs-computed-diff-line-bg:var(--diffs-computed-decoration-bg);--diffs-computed-selected-line-bg:var(--diffs-computed-decoration-bg);--diffs-line-bg:var(--diffs-computed-decoration-bg)}[data-has-merge-conflict] [data-line-annotation],[data-has-merge-conflict] [data-gutter-buffer=annotation]{--diffs-computed-decoration-bg:var(--diffs-bg);--diffs-computed-diff-line-bg:var(--diffs-bg);--diffs-computed-selected-line-bg:var(--diffs-bg);--diffs-line-bg:var(--diffs-bg)}:where([data-background]) [data-gutter-buffer],:where([data-background]) [data-column-number]{--mix-light:91%;--mix-dark:85%}:where([data-background]) [data-line],:where([data-background]) [data-no-newline]{--mix-light:88%;--mix-dark:80%}:where([data-background]) [data-gutter-buffer],:where([data-background]) [data-column-number],:where([data-background]) [data-line],:where([data-background]) [data-no-newline]{--diffs-diff-line-mix-target:var(--diffs-bg)}[data-line-type=change-deletion]:is(:where([data-background]) [data-gutter-buffer],:where([data-background]) [data-column-number],:where([data-background]) [data-line],:where([data-background]) [data-no-newline]){--diffs-diff-line-mix-target:var(--diffs-bg-deletion-override,var(--diffs-deletion-base))}@media (pointer:fine){[data-line-type=change-deletion][data-hovered]:is(:where([data-background]) [data-gutter-buffer],:where([data-background]) [data-column-number],:where([data-background]) [data-line],:where([data-background]) [data-no-newline]){--mix-light:80%;--mix-dark:75%}}[data-line-type=change-deletion]:is(:where([data-background]) [data-gutter-buffer],:where([data-background]) [data-column-number],:where([data-background]) [data-line],:where([data-background]) [data-no-newline]):where([data-gutter-buffer],[data-column-number]){color:var(--diffs-fg-number-deletion-override,var(--diffs-deletion-base));--diffs-diff-line-mix-target:var(--diffs-bg-deletion-number-override,var(--diffs-deletion-base))}[data-line-type=change-deletion]:is(:where([data-background]) [data-gutter-buffer],:where([data-background]) [data-column-number],:where([data-background]) [data-line],:where([data-background]) [data-no-newline]){--diffs-computed-diff-line-bg:light-dark(color-mix(in lab, var(--diffs-computed-decoration-bg) var(--mix-light), var(--diffs-diff-line-mix-target)),color-mix(in lab, var(--diffs-computed-decoration-bg) var(--mix-dark), var(--diffs-diff-line-mix-target)));--diffs-computed-selected-line-bg:var(--diffs-computed-diff-line-bg);--diffs-line-bg:var(--diffs-computed-diff-line-bg,inherit)}[data-line-type=change-addition]:is(:where([data-background]) [data-gutter-buffer],:where([data-background]) [data-column-number],:where([data-background]) [data-line],:where([data-background]) [data-no-newline]){--diffs-diff-line-mix-target:var(--diffs-bg-addition-override,var(--diffs-addition-base))}@media (pointer:fine){[data-line-type=change-addition][data-hovered]:is(:where([data-background]) [data-gutter-buffer],:where([data-background]) [data-column-number],:where([data-background]) [data-line],:where([data-background]) [data-no-newline]){--mix-light:80%;--mix-dark:70%}}[data-line-type=change-addition]:is(:where([data-background]) [data-gutter-buffer],:where([data-background]) [data-column-number],:where([data-background]) [data-line],:where([data-background]) [data-no-newline]):where([data-gutter-buffer],[data-column-number]){color:var(--diffs-fg-number-addition-override,var(--diffs-addition-base));--diffs-diff-line-mix-target:var(--diffs-bg-addition-number-override,var(--diffs-addition-base))}[data-line-type=change-addition]:is(:where([data-background]) [data-gutter-buffer],:where([data-background]) [data-column-number],:where([data-background]) [data-line],:where([data-background]) [data-no-newline]){--diffs-computed-diff-line-bg:light-dark(color-mix(in lab, var(--diffs-computed-decoration-bg) var(--mix-light), var(--diffs-diff-line-mix-target)),color-mix(in lab, var(--diffs-computed-decoration-bg) var(--mix-dark), var(--diffs-diff-line-mix-target)));--diffs-computed-selected-line-bg:var(--diffs-computed-diff-line-bg);--diffs-line-bg:var(--diffs-computed-diff-line-bg,inherit)}[data-merge-conflict=current]:is(:where([data-background]) [data-gutter-buffer],:where([data-background]) [data-column-number],:where([data-background]) [data-line],:where([data-background]) [data-no-newline]){--diffs-diff-line-mix-target:var(--conflict-bg-current-override,var(--diffs-addition-base))}[data-merge-conflict=current]:is(:where([data-background]) [data-gutter-buffer],:where([data-background]) [data-column-number],:where([data-background]) [data-line],:where([data-background]) [data-no-newline]):where([data-gutter-buffer],[data-column-number]){color:var(--diffs-fg-number-addition-override,var(--diffs-addition-base));--diffs-diff-line-mix-target:var(--conflict-bg-current-number-override,var(--diffs-addition-base))}@media (pointer:fine){[data-merge-conflict=current][data-hovered]:is(:where([data-background]) [data-gutter-buffer],:where([data-background]) [data-column-number],:where([data-background]) [data-line],:where([data-background]) [data-no-newline]){--mix-light:80%;--mix-dark:70%}}[data-merge-conflict=current]:is(:where([data-background]) [data-gutter-buffer],:where([data-background]) [data-column-number],:where([data-background]) [data-line],:where([data-background]) [data-no-newline]){--diffs-computed-diff-line-bg:light-dark(color-mix(in lab, var(--diffs-computed-decoration-bg) var(--mix-light), var(--diffs-diff-line-mix-target)),color-mix(in lab, var(--diffs-computed-decoration-bg) var(--mix-dark), var(--diffs-diff-line-mix-target)));--diffs-computed-selected-line-bg:var(--diffs-computed-diff-line-bg);--diffs-line-bg:var(--diffs-computed-diff-line-bg,inherit)}[data-merge-conflict=incoming]:is(:where([data-background]) [data-gutter-buffer],:where([data-background]) [data-column-number],:where([data-background]) [data-line],:where([data-background]) [data-no-newline]){--diffs-diff-line-mix-target:var(--conflict-bg-incoming-override,var(--diffs-modified-base))}[data-merge-conflict=incoming]:is(:where([data-background]) [data-gutter-buffer],:where([data-background]) [data-column-number],:where([data-background]) [data-line],:where([data-background]) [data-no-newline]):where([data-gutter-buffer],[data-column-number]){color:var(--diffs-modified-base);--diffs-diff-line-mix-target:var(--conflict-bg-incoming-number-override,var(--diffs-modified-base))}@media (pointer:fine){[data-merge-conflict=incoming][data-hovered]:is(:where([data-background]) [data-gutter-buffer],:where([data-background]) [data-column-number],:where([data-background]) [data-line],:where([data-background]) [data-no-newline]){--mix-light:80%;--mix-dark:70%}}[data-merge-conflict=incoming]:is(:where([data-background]) [data-gutter-buffer],:where([data-background]) [data-column-number],:where([data-background]) [data-line],:where([data-background]) [data-no-newline]){--diffs-computed-diff-line-bg:light-dark(color-mix(in lab, var(--diffs-computed-decoration-bg) var(--mix-light), var(--diffs-diff-line-mix-target)),color-mix(in lab, var(--diffs-computed-decoration-bg) var(--mix-dark), var(--diffs-diff-line-mix-target)));--diffs-computed-selected-line-bg:var(--diffs-computed-diff-line-bg);--diffs-line-bg:var(--diffs-computed-diff-line-bg,inherit)}[data-gutter-buffer],[data-column-number],[data-line],[data-line-annotation],[data-merge-conflict],[data-merge-conflict-actions],[data-no-newline]{--diffs-selection-mix-target:var(--diffs-bg-selection-override,var(--diffs-selection-base))}[data-selected-line]:is([data-gutter-buffer],[data-column-number],[data-line],[data-line-annotation],[data-merge-conflict],[data-merge-conflict-actions],[data-no-newline]):where([data-line],[data-line-annotation],[data-merge-conflict],[data-merge-conflict-actions],[data-no-newline]){--mix-selection-light:82%;--mix-selection-dark:75%}@media (pointer:fine){[data-selected-line][data-hovered]:is([data-gutter-buffer],[data-column-number],[data-line],[data-line-annotation],[data-merge-conflict],[data-merge-conflict-actions],[data-no-newline]):where([data-line],[data-line-annotation],[data-merge-conflict],[data-merge-conflict-actions],[data-no-newline]):not([data-merge-conflict],[data-line-type=change-addition],[data-line-type=change-deletion]){--mix-selection-light:75%;--mix-selection-dark:70%}}[data-selected-line]:is([data-gutter-buffer],[data-column-number],[data-line],[data-line-annotation],[data-merge-conflict],[data-merge-conflict-actions],[data-no-newline]):where([data-gutter-buffer],[data-column-number]){--mix-selection-light:75%;--mix-selection-dark:60%;--diffs-selection-mix-target:var(--diffs-bg-selection-number-override,var(--diffs-selection-base))}@media (pointer:fine){[data-selected-line][data-hovered]:is([data-gutter-buffer],[data-column-number],[data-line],[data-line-annotation],[data-merge-conflict],[data-merge-conflict-actions],[data-no-newline]):where([data-gutter-buffer],[data-column-number]):not([data-merge-conflict],[data-line-type=change-addition],[data-line-type=change-deletion]){--mix-selection-light:70%;--mix-selection-dark:55%}}[data-selected-line]:is([data-gutter-buffer],[data-column-number],[data-line],[data-line-annotation],[data-merge-conflict],[data-merge-conflict-actions],[data-no-newline]){--diffs-computed-selected-line-bg:light-dark(color-mix(in lab, var(--diffs-computed-diff-line-bg) var(--mix-selection-light), var(--diffs-selection-mix-target)),color-mix(in lab, var(--diffs-computed-diff-line-bg) var(--mix-selection-dark), var(--diffs-selection-mix-target)));--diffs-line-bg:var(--diffs-computed-selected-line-bg,inherit)}[data-selected-line]:is([data-gutter-buffer],[data-column-number]){color:var(--diffs-selection-number-fg)}[data-no-newline]{-webkit-user-select:none;user-select:none}[data-no-newline] span{opacity:.6}[data-diff-type=split][data-overflow=scroll]{grid-template-columns:1fr 1fr;display:grid}[data-diff-type=split][data-overflow=scroll] [data-additions]{border-left:1px solid var(--diffs-bg)}[data-diff-type=split][data-overflow=scroll] [data-deletions]{border-right:1px solid var(--diffs-bg)}[data-code]{grid-auto-flow:dense;grid-template-columns:var(--diffs-code-grid);overflow:var(--diffs-overflow-override,scroll) clip;overscroll-behavior-x:none;tab-size:var(--diffs-tab-size,2);padding-top:var(--diffs-gap-block,var(--diffs-gap-fallback));padding-bottom:max(0px, calc(var(--diffs-gap-block,var(--diffs-gap-fallback)) - var(--diffs-scrollbar-gutter)));scrollbar-gutter:stable;align-self:flex-start;display:grid}[data-diffs-scrollbar-measure]{opacity:0;pointer-events:none;scrollbar-gutter:auto;grid-template-columns:none;width:100px;height:100px;padding:0;position:absolute;top:-200px;left:-200px}[data-container-size]{container-type:inline-size}[data-code]::-webkit-scrollbar{width:0;height:var(--diffs-scrollbar-gutter)}[data-code]::-webkit-scrollbar-track{background:0 0}[data-code]::-webkit-scrollbar-thumb{background-color:#0000;background-clip:content-box;border:1px solid #0000;border-radius:3px}[data-code]::-webkit-scrollbar-corner{background-color:#0000}@supports ((-moz-appearance:none)){[data-code]{scrollbar-width:thin;scrollbar-color:var(--diffs-bg-context) transparent;padding-bottom:var(--diffs-gap-block,var(--diffs-gap-fallback))}}:is([data-diffs-header]~[data-diff],[data-diffs-header]~[data-file]) [data-code],[data-overflow=wrap]:is([data-diffs-header]~[data-diff],[data-diffs-header]~[data-file]){padding-top:0}[data-gutter]{grid-template-rows:subgrid;grid-template-columns:subgrid;z-index:3;background-color:var(--diffs-bg);grid-column:1;display:grid;position:relative}[data-gutter] [data-gutter-buffer],[data-gutter] [data-column-number]{border-right:var(--diffs-gap-style,2px solid var(--diffs-bg))}[data-content]{grid-template-rows:subgrid;grid-template-columns:subgrid;background-color:var(--diffs-bg);grid-column:2;min-width:0;display:grid}[data-diff-type=split][data-overflow=wrap]{grid-auto-flow:dense;grid-template-columns:repeat(2, var(--diffs-code-grid));padding-block:var(--diffs-gap-block,var(--diffs-gap-fallback));display:grid}[data-diff-type=split][data-overflow=wrap] [data-deletions]{display:contents}:is([data-diff-type=split][data-overflow=wrap] [data-deletions]) [data-gutter]{grid-column:1}:is([data-diff-type=split][data-overflow=wrap] [data-deletions]) [data-content]{border-right:1px solid var(--diffs-bg);grid-column:2}[data-diff-type=split][data-overflow=wrap] [data-additions]{display:contents}:is([data-diff-type=split][data-overflow=wrap] [data-additions]) [data-gutter]{border-left:1px solid var(--diffs-bg);grid-column:3}:is([data-diff-type=split][data-overflow=wrap] [data-additions]) [data-content]{grid-column:4}[data-overflow=scroll] [data-gutter]{position:sticky;left:0}[data-interactive-lines] [data-line]{cursor:pointer}[data-interactive-line-numbers] [data-column-number]{cursor:pointer;touch-action:none}[data-content-buffer],[data-gutter-buffer]{-webkit-user-select:none;user-select:none;min-height:1lh;position:relative}[data-gutter-buffer]{padding-left:2ch;padding-right:1ch}[data-gutter-buffer]:before{content:"";min-width:var(--diffs-min-number-column-width,var(--diffs-min-number-column-width-default,3ch));display:block}[data-gutter-buffer=annotation]{--diffs-annotation-bg:var(--diffs-bg-context-gutter);min-height:0}[data-gutter-buffer=buffer]{--diffs-line-bg:var(--diffs-bg-context-gutter)}[data-content-buffer]{background-position:5px 0;background-size:8px 8px;background-origin:border-box;background-image:repeating-linear-gradient(-45deg, transparent, transparent 4.242px, var(--diffs-bg-buffer) 4.242px, var(--diffs-bg-buffer) 5.656px);grid-column:1}[data-separator]{box-sizing:content-box;background-color:var(--diffs-bg)}[data-separator=simple]{min-height:4px}[data-separator=line-info],[data-separator=line-info-basic],[data-separator=metadata],[data-separator=simple]{background-color:var(--diffs-bg-separator)}[data-separator=line-info],[data-separator=line-info-basic],[data-separator=metadata]{height:32px;position:relative}[data-separator-wrapper]{-webkit-user-select:none;user-select:none;fill:currentColor;background-color:var(--diffs-bg);align-items:center;height:100%;display:flex;position:absolute;inset-inline:0}[data-content] [data-separator-wrapper]{display:none}[data-separator=metadata] [data-separator-wrapper]{background-color:var(--diffs-bg-separator);height:100%;color:var(--diffs-fg-number);white-space:nowrap;text-overflow:ellipsis;min-width:min-content;padding-inline:1ch;inset-inline:100% auto;overflow:hidden}[data-separator=line-info]{margin-block:var(--diffs-gap-block,var(--diffs-gap-fallback))}[data-separator=line-info] [data-separator-wrapper]{min-width:16px}[data-separator=line-info-basic],[data-separator=metadata]{margin-block:0}[data-separator=line-info][data-separator-first]{margin-top:0}[data-separator=line-info][data-separator-last]{margin-bottom:0}[data-expand-index] [data-separator-wrapper]{grid-template-columns:32px auto;display:grid}[data-expand-index] [data-separator-wrapper][data-separator-multi-button]{grid-template-columns:32px 32px auto}[data-expand-button],[data-separator-content]{background-color:var(--diffs-bg-separator);flex:none;align-items:center;display:flex}[data-expand-index] [data-separator-content]:hover{cursor:pointer;text-decoration:underline}[data-expand-button]{cursor:pointer;min-width:32px;color:var(--diffs-fg-number);border-right:2px solid var(--diffs-bg);flex-shrink:0;justify-content:center;align-self:stretch}[data-expand-button]:hover{color:var(--diffs-fg)}[data-expand-button][data-expand-all-button]{display:none}[data-expand-down] [data-icon]{transform:scaleY(-1)}[data-separator-content]{height:100%;color:var(--diffs-fg-number);flex:auto;justify-content:flex-start;padding:0 1ch;overflow:hidden}:is([data-separator=line-info],[data-separator=line-info-basic]) [data-separator-content]{-webkit-user-select:none;user-select:none;height:100%;overflow:clip}[data-unmodified-lines]{text-overflow:ellipsis;white-space:nowrap;flex:0 auto;min-width:0;display:block;overflow:hidden}@supports (width:1cqi){[data-unified] [data-separator=line-info] [data-separator-wrapper]{padding-inline:var(--diffs-gap-inline,var(--diffs-gap-fallback));width:100cqi}:is([data-unified] [data-separator=line-info] [data-separator-wrapper]) [data-separator-content]{border-radius:6px}[data-unified] [data-separator=line-info][data-expand-index] [data-separator-wrapper] [data-separator-content]{border-top-left-radius:unset;border-bottom-left-radius:unset}[data-gutter] [data-separator=line-info] [data-separator-wrapper]{padding-left:var(--diffs-gap-inline,var(--diffs-gap-fallback))}[data-gutter] [data-separator=line-info] [data-separator-content]{border-top-left-radius:6px;border-bottom-left-radius:6px}[data-gutter] [data-separator=line-info][data-expand-index] [data-separator-content]{border-top-left-radius:unset;border-bottom-left-radius:unset}[data-additions] [data-content] [data-separator=line-info]{background-color:var(--diffs-bg)}:is([data-additions] [data-content] [data-separator=line-info]) [data-separator-wrapper]{display:none}[data-additions] [data-gutter] [data-separator=line-info] [data-separator-wrapper]{background-color:var(--diffs-bg-separator);border-top-right-radius:6px;border-bottom-right-radius:6px;height:100%;display:block}:is([data-additions] [data-gutter] [data-separator=line-info] [data-separator-wrapper]) [data-separator-content],:is([data-additions] [data-gutter] [data-separator=line-info] [data-separator-wrapper]) [data-expand-button]{display:none}[data-overflow=scroll] [data-additions] [data-gutter] [data-separator=line-info] [data-separator-wrapper]{width:calc(100cqi - var(--diffs-gap-inline,var(--diffs-gap-fallback)))}[data-overflow=wrap] [data-additions] [data-content] [data-separator=line-info] [data-separator-wrapper]{background-color:var(--diffs-bg-separator);height:100%;margin-right:var(--diffs-gap-inline,var(--diffs-gap-fallback));border-top-right-radius:6px;border-bottom-right-radius:6px;display:block}:is([data-overflow=wrap] [data-additions] [data-content] [data-separator=line-info] [data-separator-wrapper]) [data-separator-content],:is([data-overflow=wrap] [data-additions] [data-content] [data-separator=line-info] [data-separator-wrapper]) [data-expand-button]{display:none}:is([data-separator=line-info] [data-separator-wrapper]) [data-expand-both],:is([data-separator=line-info] [data-separator-wrapper]) [data-expand-down],:is([data-separator=line-info] [data-separator-wrapper]) [data-expand-up]{border-top-left-radius:6px;border-bottom-left-radius:6px}@media (pointer:fine){[data-separator-multi-button]:is([data-separator=line-info] [data-separator-wrapper]) [data-expand-up]{border-top-left-radius:6px;border-bottom-left-radius:unset}[data-separator-multi-button]:is([data-separator=line-info] [data-separator-wrapper]) [data-expand-down]{border-bottom-left-radius:6px;border-top-left-radius:unset}}}@media (pointer:coarse){[data-separator=line-info-basic] [data-separator-wrapper][data-separator-multi-button]{grid-template-columns:34px 34px auto}:is([data-separator=line-info-basic] [data-separator-wrapper][data-separator-multi-button]) [data-separator-content]{grid-column:unset;grid-row:unset}@supports (width:1cqi){:is([data-separator=line-info] [data-separator-wrapper]) [data-expand-both],:is([data-separator=line-info] [data-separator-wrapper]) [data-expand-down],:is([data-separator=line-info] [data-separator-wrapper]) [data-expand-up],[data-separator-multi-button]:is([data-separator=line-info] [data-separator-wrapper]) [data-expand-up]{border-top-left-radius:6px;border-bottom-left-radius:6px}[data-separator-multi-button]:is([data-separator=line-info] [data-separator-wrapper]) [data-expand-down]{border-bottom-left-radius:unset;border-top-left-radius:unset}}}@media (pointer:fine){[data-separator-wrapper][data-separator-multi-button]{grid-template-rows:50% 50%;display:grid}[data-separator-wrapper][data-separator-multi-button] [data-separator-content]{grid-area:1/2/-1;min-width:min-content}[data-separator-wrapper][data-separator-multi-button] [data-expand-button]{grid-column:1}[data-separator=line-info] [data-separator-wrapper],[data-separator=line-info] [data-separator-wrapper][data-separator-multi-button]{grid-template-columns:34px auto}[data-separator=line-info-basic][data-expand-index] [data-separator-wrapper]{grid-template-columns:100% auto}:is(:is([data-separator=line-info],[data-separator=line-info-basic]) [data-separator-multi-button]) [data-expand-up]{border-bottom:1px solid var(--diffs-bg);border-right:2px solid var(--diffs-bg)}:is(:is([data-separator=line-info],[data-separator=line-info-basic]) [data-separator-multi-button]) [data-expand-down]{border-top:1px solid var(--diffs-bg);border-right:2px solid var(--diffs-bg)}}[data-additions] [data-gutter] [data-separator-wrapper],[data-additions] [data-separator=line-info-basic] [data-separator-wrapper],[data-content] [data-separator-wrapper]{display:none}[data-line-annotation]{min-height:var(--diffs-annotation-min-height,0);z-index:2}[data-merge-conflict-actions]{z-index:2}[data-separator=custom]{grid-template-columns:subgrid;display:grid}[data-line],[data-column-number],[data-no-newline]{padding-inline:1ch;position:relative}[data-indicators=classic] [data-line]{padding-inline-start:2ch}:is([data-no-newline]:is([data-indicators=classic] [data-line-type=change-addition],[data-indicators=classic] [data-line-type=change-deletion]),[data-line]:is([data-indicators=classic] [data-line-type=change-addition],[data-indicators=classic] [data-line-type=change-deletion])):before{-webkit-user-select:none;user-select:none;width:1ch;height:1lh;display:inline-block;position:absolute;top:0;left:0}:is([data-line]:is([data-indicators=classic] [data-line-type=change-addition]),[data-no-newline]:is([data-indicators=classic] [data-line-type=change-addition])):before{content:"+";color:var(--diffs-addition-base)}:is([data-line]:is([data-indicators=classic] [data-line-type=change-deletion]),[data-no-newline]:is([data-indicators=classic] [data-line-type=change-deletion])):before{content:"-";color:var(--diffs-deletion-base)}[data-column-number]:is([data-indicators=bars] [data-line-type=change-deletion],[data-indicators=bars] [data-line-type=change-addition]):before{content:"";-webkit-user-select:none;user-select:none;contain:strict;width:4px;height:100%;display:block;position:absolute;top:0;left:0}[data-column-number]:is([data-indicators=bars] [data-line-type=change-deletion]):before{background-image:linear-gradient(0deg, var(--diffs-bg-deletion) 50%, var(--diffs-deletion-base) 50%);background-repeat:repeat;background-size:2px 2px;background-size:calc(1lh/round(1lh / 2px)) calc(1lh/round(1lh / 2px))}[data-column-number]:is([data-indicators=bars] [data-line-type=change-addition]):before{background-color:var(--diffs-addition-base)}[data-overflow=wrap] [data-line],[data-overflow=wrap] [data-annotation-content]{white-space:pre-wrap;word-break:break-word}[data-overflow=scroll] [data-line]{white-space:pre;min-height:1lh}[data-column-number]{box-sizing:content-box;text-align:right;-webkit-user-select:none;user-select:none;color:var(--diffs-fg-number);padding-left:2ch}[data-line-number-content]{min-width:var(--diffs-min-number-column-width,var(--diffs-min-number-column-width-default,3ch));z-index:1;display:inline-block;position:relative}[data-disable-line-numbers] [data-gutter-buffer],[data-disable-line-numbers] [data-column-number]{min-width:4px;padding:0}:is([data-disable-line-numbers] [data-gutter-buffer],[data-disable-line-numbers] [data-column-number]):before{min-width:0}[data-disable-line-numbers] [data-line-number-content]{display:none}[data-disable-line-numbers] [data-gutter-utility-slot]{right:unset;justify-content:flex-start;left:0}[data-disable-line-numbers][data-indicators=bars] [data-gutter-utility-slot]{left:6px}[data-file][data-disable-line-numbers] [data-gutter-buffer],[data-file][data-disable-line-numbers] [data-column-number]{border-right:0;min-width:0}[data-diff-span]{-webkit-box-decoration-break:clone;box-decoration-break:clone;border-radius:3px}[data-line-type=change-addition] [data-diff-span]{background-color:var(--diffs-bg-addition-emphasis)}[data-line-type=change-deletion] [data-diff-span]{background-color:var(--diffs-bg-deletion-emphasis)}[data-merge-conflict=marker-start],[data-merge-conflict=marker-base],[data-merge-conflict=marker-separator],[data-merge-conflict=marker-end]{color:var(--diffs-fg);padding-left:1ch}[data-merge-conflict=marker-start],[data-merge-conflict=marker-end]{align-items:center;display:flex}:is([data-merge-conflict=marker-start],[data-merge-conflict=marker-end]):after{color:var(--diffs-fg-conflict-marker);font-size:.75rem;font-style:normal;line-height:1.25rem;font-family:var(--diffs-header-font-family,var(--diffs-header-font-fallback));padding-left:1ch}[data-merge-conflict=marker-start]:after{content:"(Current Change)"}[data-merge-conflict=marker-end]:after{content:"(Incoming Change)"}[data-merge-conflict-actions-content]{min-height:1.75rem;font-family:var(--diffs-header-font-family,var(--diffs-header-font-fallback));color:var(--diffs-fg);align-items:center;gap:.25rem;padding-inline:.5rem;font-size:.75rem;line-height:1.2;display:flex}[data-merge-conflict-action]{appearance:none;color:var(--diffs-fg-number);font:inherit;cursor:pointer;background:0 0;border:0;padding:0;font-style:normal}[data-merge-conflict-action]:hover{color:var(--diffs-fg)}[data-merge-conflict-action=current]:hover{color:var(--diffs-addition-base)}[data-merge-conflict-action=incoming]:hover{color:var(--diffs-modified-base)}[data-merge-conflict-action-separator]{color:var(--diffs-fg-number);opacity:.6;-webkit-user-select:none;user-select:none}[data-diffs-header=default]{background-color:var(--diffs-bg);justify-content:space-between;align-items:center;gap:var(--diffs-gap-inline,var(--diffs-gap-fallback));min-height:calc(1lh + var(--diffs-gap-block,var(--diffs-gap-fallback))*3);z-index:2;flex-direction:row;padding-inline:16px;display:flex;position:relative;top:0}[data-header-content]{align-items:center;gap:var(--diffs-gap-inline,var(--diffs-gap-fallback));white-space:nowrap;flex-direction:row;min-width:0;display:flex}[data-header-content] [data-prev-name],[data-header-content] [data-title]{text-overflow:ellipsis;white-space:nowrap;direction:rtl;min-width:0;overflow:hidden}[data-prev-name]{opacity:.7}[data-rename-icon]{fill:currentColor;flex-grow:0;flex-shrink:0}[data-diffs-header=default] [data-metadata]{white-space:nowrap;align-items:center;gap:1ch;display:flex}[data-diffs-header=default] [data-additions-count]{font-family:var(--diffs-font-family,var(--diffs-font-fallback));color:var(--diffs-addition-base)}[data-diffs-header=default] [data-deletions-count]{font-family:var(--diffs-font-family,var(--diffs-font-fallback));color:var(--diffs-deletion-base)}[data-change-icon]{fill:currentColor;flex-shrink:0}[data-change-icon=change],[data-change-icon=rename-pure],[data-change-icon=rename-changed]{color:var(--diffs-modified-base)}[data-change-icon=new]{color:var(--diffs-addition-base)}[data-change-icon=deleted]{color:var(--diffs-deletion-base)}[data-change-icon=file]{opacity:.6}[data-annotation-content]{z-index:2;isolation:isolate;align-self:flex-start;min-width:0;display:flow-root;position:relative}[data-overflow=scroll] [data-annotation-content],[data-overflow=scroll] [data-merge-conflict-actions-content]{width:var(--diffs-column-content-width,auto);left:var(--diffs-column-number-width,0);position:sticky}[data-annotation-slot]{text-wrap-mode:wrap;word-break:normal;white-space-collapse:collapse}[data-gutter-utility-slot]{touch-action:none;justify-content:flex-end;display:flex;position:absolute;top:0;bottom:0;right:0}[data-utility-button]{appearance:none;cursor:pointer;width:1lh;height:1lh;font-size:var(--diffs-font-size,13px);line-height:var(--diffs-line-height,20px);background-color:var(--diffs-modified-base);color:var(--diffs-bg);fill:currentColor;z-index:4;touch-action:none;border:none;border-radius:4px;justify-content:center;align-items:center;margin-right:calc(1ch - 1lh);padding:0;display:flex;position:relative}[data-utility-button]:before{content:"";display:block;position:absolute;inset:0 0 0 -4px}[data-decoration-bar-stack]{pointer-events:none;isolation:isolate;z-index:1;background-color:var(--diffs-decoration-bar-color,transparent);box-sizing:content-box;border-left:2px solid var(--diffs-bg);border-right:2px solid var(--diffs-bg);width:6px;position:absolute;top:0;bottom:0;right:-2px}[data-decoration-bar-depth="1"] [data-decoration-bar-stack]{background-color:color-mix(in lab, var(--diffs-bg) 20%, var(--diffs-decoration-bar-color,transparent))}[data-decoration-bar-depth="2"] [data-decoration-bar-stack]{background-color:color-mix(in lab, var(--diffs-bg) 45%, var(--diffs-decoration-bar-color,transparent))}[data-decoration-bar-depth="3"] [data-decoration-bar-stack]{background-color:color-mix(in lab, var(--diffs-bg) 65%, var(--diffs-decoration-bar-color,transparent))}[data-decoration-bar-start] [data-decoration-bar-stack]{border-top-left-radius:5px;border-top-right-radius:5px}[data-decoration-bar-end] [data-decoration-bar-stack]{z-index:3;border-bottom-right-radius:5px;border-bottom-left-radius:5px}[data-placeholder]{contain:strict}[data-error-wrapper]{padding:var(--diffs-gap-block,var(--diffs-gap-fallback)) var(--diffs-gap-inline,var(--diffs-gap-fallback));scrollbar-width:none;max-height:400px;overflow:auto}[data-error-wrapper] [data-error-message]{color:var(--diffs-deletion-base);font-size:18px;font-weight:700}[data-error-wrapper] [data-error-stack]{color:var(--diffs-fg-number)}}@layer theme,rendered,unsafe;
|
|
@layer theme {
|
|
|
|
}</style><style data-theme-css="">@layer base, theme, rendered, unsafe;
|
|
@layer rendered {
|
|
:host {
|
|
--diffs-scrollbar-gutter-measured: var(--diffs-scrollbar-gutter-fallback);
|
|
--diffs-dark:#fafafa;--diffs-dark-bg:#0a0a0a;--diffs-dark-addition-color:#07c480;--diffs-dark-deletion-color:#ff2e3f;--diffs-dark-modified-color:#009fff;--diffs-light:#0a0a0a;--diffs-light-bg:#ffffff;--diffs-light-addition-color:#18a46c;--diffs-light-deletion-color:#d52c36;--diffs-light-modified-color:#009fff;
|
|
}
|
|
}</style><div data-diffs-header="default" data-change-type="change"><div data-header-content=""><slot name="header-prefix"></slot><svg width="16" height="16" viewBox="0 0 16 16" data-change-icon="change"><use href="#diffs-icon-symbol-modified"></use></svg><div data-title=""><bdi>Dreamio/NativePlayerViewController.swift</bdi></div></div><div data-metadata=""><span data-deletions-count="">-60</span><span data-additions-count="">+341</span><slot name="header-metadata"></slot></div></div><pre data-diff="" data-diff-type="split" data-overflow="scroll" data-background="" data-indicators="bars" tabindex="0" style="--diffs-min-number-column-width-default:3ch;" data-dehydrated=""><code data-code="" data-container-size="" data-deletions=""><div data-gutter="" style="grid-row: span 595"><div data-separator="line-info" data-separator-first=""><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">10 unmodified lines</span></div></div></div><div data-line-type="context" data-column-number="11" data-line-index="10,10"><span data-line-number-content="">11</span></div><div data-line-type="context" data-column-number="12" data-line-index="11,11"><span data-line-number-content="">12</span></div><div data-line-type="context" data-column-number="13" data-line-index="12,12"><span data-line-number-content="">13</span></div><div data-gutter-buffer="buffer" data-buffer-size="2" style="grid-row: span 2;min-height:calc(2 * 1lh);"></div><div data-line-type="context" data-column-number="14" data-line-index="15,15"><span data-line-number-content="">14</span></div><div data-line-type="context" data-column-number="15" data-line-index="16,16"><span data-line-number-content="">15</span></div><div data-gutter-buffer="buffer" data-buffer-size="25" style="grid-row: span 25;min-height:calc(25 * 1lh);"></div><div data-line-type="context" data-column-number="16" data-line-index="42,42"><span data-line-number-content="">16</span></div><div data-line-type="context" data-column-number="17" data-line-index="43,43"><span data-line-number-content="">17</span></div><div data-line-type="context" data-column-number="18" data-line-index="44,44"><span data-line-number-content="">18</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">7 unmodified lines</span></div></div></div><div data-line-type="context" data-column-number="26" data-line-index="52,52"><span data-line-number-content="">26</span></div><div data-line-type="context" data-column-number="27" data-line-index="53,53"><span data-line-number-content="">27</span></div><div data-line-type="context" data-column-number="28" data-line-index="54,54"><span data-line-number-content="">28</span></div><div data-line-type="change-deletion" data-column-number="29" data-line-index="55,55"><span data-line-number-content="">29</span></div><div data-line-type="change-deletion" data-column-number="30" data-line-index="56,56"><span data-line-number-content="">30</span></div><div data-gutter-buffer="buffer" data-buffer-size="2" style="grid-row: span 2;min-height:calc(2 * 1lh);"></div><div data-line-type="context" data-column-number="31" data-line-index="61,59"><span data-line-number-content="">31</span></div><div data-gutter-buffer="buffer" data-buffer-size="1" style="grid-row: span 1;min-height:calc(1 * 1lh);"></div><div data-line-type="context" data-column-number="32" data-line-index="63,61"><span data-line-number-content="">32</span></div><div data-line-type="context" data-column-number="33" data-line-index="64,62"><span data-line-number-content="">33</span></div><div data-line-type="context" data-column-number="34" data-line-index="65,63"><span data-line-number-content="">34</span></div><div data-line-type="change-deletion" data-column-number="35" data-line-index="66,64"><span data-line-number-content="">35</span></div><div data-line-type="change-deletion" data-column-number="36" data-line-index="67,65"><span data-line-number-content="">36</span></div><div data-line-type="change-deletion" data-column-number="37" data-line-index="68,66"><span data-line-number-content="">37</span></div><div data-line-type="change-deletion" data-column-number="38" data-line-index="69,67"><span data-line-number-content="">38</span></div><div data-line-type="change-deletion" data-column-number="39" data-line-index="70,68"><span data-line-number-content="">39</span></div><div data-line-type="change-deletion" data-column-number="40" data-line-index="71,69"><span data-line-number-content="">40</span></div><div data-line-type="change-deletion" data-column-number="41" data-line-index="72,70"><span data-line-number-content="">41</span></div><div data-line-type="change-deletion" data-column-number="42" data-line-index="73,71"><span data-line-number-content="">42</span></div><div data-line-type="change-deletion" data-column-number="43" data-line-index="74,72"><span data-line-number-content="">43</span></div><div data-line-type="change-deletion" data-column-number="44" data-line-index="75,73"><span data-line-number-content="">44</span></div><div data-line-type="context" data-column-number="45" data-line-index="77,74"><span data-line-number-content="">45</span></div><div data-line-type="context" data-column-number="46" data-line-index="78,75"><span data-line-number-content="">46</span></div><div data-line-type="context" data-column-number="47" data-line-index="79,76"><span data-line-number-content="">47</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">2 unmodified lines</span></div></div></div><div data-line-type="context" data-column-number="50" data-line-index="82,79"><span data-line-number-content="">50</span></div><div data-line-type="context" data-column-number="51" data-line-index="83,80"><span data-line-number-content="">51</span></div><div data-line-type="context" data-column-number="52" data-line-index="84,81"><span data-line-number-content="">52</span></div><div data-line-type="change-deletion" data-column-number="53" data-line-index="85,82"><span data-line-number-content="">53</span></div><div data-line-type="context" data-column-number="54" data-line-index="87,83"><span data-line-number-content="">54</span></div><div data-line-type="context" data-column-number="55" data-line-index="88,84"><span data-line-number-content="">55</span></div><div data-line-type="change-deletion" data-column-number="56" data-line-index="89,85"><span data-line-number-content="">56</span></div><div data-line-type="change-deletion" data-column-number="57" data-line-index="90,86"><span data-line-number-content="">57</span></div><div data-gutter-buffer="buffer" data-buffer-size="2" style="grid-row: span 2;min-height:calc(2 * 1lh);"></div><div data-line-type="context" data-column-number="58" data-line-index="95,89"><span data-line-number-content="">58</span></div><div data-line-type="context" data-column-number="59" data-line-index="96,90"><span data-line-number-content="">59</span></div><div data-line-type="context" data-column-number="60" data-line-index="97,91"><span data-line-number-content="">60</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">27 unmodified lines</span></div></div></div><div data-line-type="context" data-column-number="88" data-line-index="125,119"><span data-line-number-content="">88</span></div><div data-line-type="context" data-column-number="89" data-line-index="126,120"><span data-line-number-content="">89</span></div><div data-line-type="context" data-column-number="90" data-line-index="127,121"><span data-line-number-content="">90</span></div><div data-line-type="change-deletion" data-column-number="91" data-line-index="128,122"><span data-line-number-content="">91</span></div><div data-line-type="context" data-column-number="92" data-line-index="130,123"><span data-line-number-content="">92</span></div><div data-line-type="context" data-column-number="93" data-line-index="131,124"><span data-line-number-content="">93</span></div><div data-line-type="context" data-column-number="94" data-line-index="132,125"><span data-line-number-content="">94</span></div><div data-line-type="context" data-column-number="95" data-line-index="133,126"><span data-line-number-content="">95</span></div><div data-gutter-buffer="buffer" data-buffer-size="30" style="grid-row: span 30;min-height:calc(30 * 1lh);"></div><div data-line-type="context" data-column-number="96" data-line-index="164,157"><span data-line-number-content="">96</span></div><div data-line-type="change-deletion" data-column-number="97" data-line-index="165,158"><span data-line-number-content="">97</span></div><div data-line-type="change-deletion" data-column-number="98" data-line-index="166,159"><span data-line-number-content="">98</span></div><div data-line-type="context" data-column-number="99" data-line-index="169,160"><span data-line-number-content="">99</span></div><div data-line-type="context" data-column-number="100" data-line-index="170,161"><span data-line-number-content="">100</span></div><div data-line-type="context" data-column-number="101" data-line-index="171,162"><span data-line-number-content="">101</span></div><div data-gutter-buffer="buffer" data-buffer-size="3" style="grid-row: span 3;min-height:calc(3 * 1lh);"></div><div data-line-type="context" data-column-number="102" data-line-index="175,166"><span data-line-number-content="">102</span></div><div data-line-type="context" data-column-number="103" data-line-index="176,167"><span data-line-number-content="">103</span></div><div data-line-type="context" data-column-number="104" data-line-index="177,168"><span data-line-number-content="">104</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">31 unmodified lines</span></div></div></div><div data-line-type="context" data-column-number="136" data-line-index="209,200"><span data-line-number-content="">136</span></div><div data-line-type="context" data-column-number="137" data-line-index="210,201"><span data-line-number-content="">137</span></div><div data-line-type="context" data-column-number="138" data-line-index="211,202"><span data-line-number-content="">138</span></div><div data-line-type="change-deletion" data-column-number="139" data-line-index="212,203"><span data-line-number-content="">139</span></div><div data-line-type="change-deletion" data-column-number="140" data-line-index="213,204"><span data-line-number-content="">140</span></div><div data-line-type="change-deletion" data-column-number="141" data-line-index="214,205"><span data-line-number-content="">141</span></div><div data-gutter-buffer="buffer" data-buffer-size="5" style="grid-row: span 5;min-height:calc(5 * 1lh);"></div><div data-line-type="context" data-column-number="142" data-line-index="223,211"><span data-line-number-content="">142</span></div><div data-line-type="context" data-column-number="143" data-line-index="224,212"><span data-line-number-content="">143</span></div><div data-line-type="context" data-column-number="144" data-line-index="225,213"><span data-line-number-content="">144</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">67 unmodified lines</span></div></div></div><div data-line-type="context" data-column-number="212" data-line-index="293,281"><span data-line-number-content="">212</span></div><div data-line-type="context" data-column-number="213" data-line-index="294,282"><span data-line-number-content="">213</span></div><div data-line-type="context" data-column-number="214" data-line-index="295,283"><span data-line-number-content="">214</span></div><div data-line-type="change-deletion" data-column-number="215" data-line-index="296,284"><span data-line-number-content="">215</span></div><div data-line-type="context" data-column-number="216" data-line-index="298,285"><span data-line-number-content="">216</span></div><div data-line-type="context" data-column-number="217" data-line-index="299,286"><span data-line-number-content="">217</span></div><div data-line-type="context" data-column-number="218" data-line-index="300,287"><span data-line-number-content="">218</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">22 unmodified lines</span></div></div></div><div data-line-type="context" data-column-number="241" data-line-index="323,310"><span data-line-number-content="">241</span></div><div data-line-type="context" data-column-number="242" data-line-index="324,311"><span data-line-number-content="">242</span></div><div data-line-type="context" data-column-number="243" data-line-index="325,312"><span data-line-number-content="">243</span></div><div data-gutter-buffer="buffer" data-buffer-size="10" style="grid-row: span 10;min-height:calc(10 * 1lh);"></div><div data-line-type="context" data-column-number="244" data-line-index="336,323"><span data-line-number-content="">244</span></div><div data-line-type="context" data-column-number="245" data-line-index="337,324"><span data-line-number-content="">245</span></div><div data-line-type="context" data-column-number="246" data-line-index="338,325"><span data-line-number-content="">246</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">4 unmodified lines</span></div></div></div><div data-line-type="context" data-column-number="251" data-line-index="343,330"><span data-line-number-content="">251</span></div><div data-line-type="context" data-column-number="252" data-line-index="344,331"><span data-line-number-content="">252</span></div><div data-line-type="context" data-column-number="253" data-line-index="345,332"><span data-line-number-content="">253</span></div><div data-gutter-buffer="buffer" data-buffer-size="1" style="grid-row: span 1;min-height:calc(1 * 1lh);"></div><div data-line-type="context" data-column-number="254" data-line-index="347,334"><span data-line-number-content="">254</span></div><div data-line-type="change-deletion" data-column-number="255" data-line-index="348,335"><span data-line-number-content="">255</span></div><div data-line-type="change-deletion" data-column-number="256" data-line-index="349,336"><span data-line-number-content="">256</span></div><div data-gutter-buffer="buffer" data-buffer-size="1" style="grid-row: span 1;min-height:calc(1 * 1lh);"></div><div data-line-type="context" data-column-number="257" data-line-index="353,338"><span data-line-number-content="">257</span></div><div data-gutter-buffer="buffer" data-buffer-size="1" style="grid-row: span 1;min-height:calc(1 * 1lh);"></div><div data-line-type="context" data-column-number="258" data-line-index="355,340"><span data-line-number-content="">258</span></div><div data-gutter-buffer="buffer" data-buffer-size="4" style="grid-row: span 4;min-height:calc(4 * 1lh);"></div><div data-line-type="context" data-column-number="259" data-line-index="360,345"><span data-line-number-content="">259</span></div><div data-line-type="context" data-column-number="260" data-line-index="361,346"><span data-line-number-content="">260</span></div><div data-gutter-buffer="buffer" data-buffer-size="1" style="grid-row: span 1;min-height:calc(1 * 1lh);"></div><div data-line-type="context" data-column-number="261" data-line-index="363,348"><span data-line-number-content="">261</span></div><div data-line-type="context" data-column-number="262" data-line-index="364,349"><span data-line-number-content="">262</span></div><div data-gutter-buffer="buffer" data-buffer-size="2" style="grid-row: span 2;min-height:calc(2 * 1lh);"></div><div data-line-type="context" data-column-number="263" data-line-index="367,352"><span data-line-number-content="">263</span></div><div data-line-type="context" data-column-number="264" data-line-index="368,353"><span data-line-number-content="">264</span></div><div data-line-type="change-deletion" data-column-number="265" data-line-index="369,354"><span data-line-number-content="">265</span></div><div data-gutter-buffer="buffer" data-buffer-size="2" style="grid-row: span 2;min-height:calc(2 * 1lh);"></div><div data-line-type="context" data-column-number="266" data-line-index="373,357"><span data-line-number-content="">266</span></div><div data-line-type="context" data-column-number="267" data-line-index="374,358"><span data-line-number-content="">267</span></div><div data-line-type="context" data-column-number="268" data-line-index="375,359"><span data-line-number-content="">268</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">1 unmodified line</span></div></div></div><div data-line-type="context" data-column-number="270" data-line-index="377,361"><span data-line-number-content="">270</span></div><div data-line-type="context" data-column-number="271" data-line-index="378,362"><span data-line-number-content="">271</span></div><div data-line-type="context" data-column-number="272" data-line-index="379,363"><span data-line-number-content="">272</span></div><div data-gutter-buffer="buffer" data-buffer-size="8" style="grid-row: span 8;min-height:calc(8 * 1lh);"></div><div data-line-type="context" data-column-number="273" data-line-index="388,372"><span data-line-number-content="">273</span></div><div data-line-type="context" data-column-number="274" data-line-index="389,373"><span data-line-number-content="">274</span></div><div data-line-type="context" data-column-number="275" data-line-index="390,374"><span data-line-number-content="">275</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">21 unmodified lines</span></div></div></div><div data-line-type="context" data-column-number="297" data-line-index="412,396"><span data-line-number-content="">297</span></div><div data-line-type="context" data-column-number="298" data-line-index="413,397"><span data-line-number-content="">298</span></div><div data-line-type="context" data-column-number="299" data-line-index="414,398"><span data-line-number-content="">299</span></div><div data-gutter-buffer="buffer" data-buffer-size="2" style="grid-row: span 2;min-height:calc(2 * 1lh);"></div><div data-line-type="context" data-column-number="300" data-line-index="417,401"><span data-line-number-content="">300</span></div><div data-line-type="context" data-column-number="301" data-line-index="418,402"><span data-line-number-content="">301</span></div><div data-line-type="context" data-column-number="302" data-line-index="419,403"><span data-line-number-content="">302</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">5 unmodified lines</span></div></div></div><div data-line-type="context" data-column-number="308" data-line-index="425,409"><span data-line-number-content="">308</span></div><div data-line-type="context" data-column-number="309" data-line-index="426,410"><span data-line-number-content="">309</span></div><div data-line-type="context" data-column-number="310" data-line-index="427,411"><span data-line-number-content="">310</span></div><div data-line-type="change-deletion" data-column-number="311" data-line-index="428,412"><span data-line-number-content="">311</span></div><div data-line-type="change-deletion" data-column-number="312" data-line-index="429,413"><span data-line-number-content="">312</span></div><div data-line-type="change-deletion" data-column-number="313" data-line-index="430,414"><span data-line-number-content="">313</span></div><div data-line-type="change-deletion" data-column-number="314" data-line-index="431,415"><span data-line-number-content="">314</span></div><div data-line-type="change-deletion" data-column-number="315" data-line-index="432,416"><span data-line-number-content="">315</span></div><div data-line-type="change-deletion" data-column-number="316" data-line-index="433,417"><span data-line-number-content="">316</span></div><div data-line-type="change-deletion" data-column-number="317" data-line-index="434,418"><span data-line-number-content="">317</span></div><div data-line-type="change-deletion" data-column-number="318" data-line-index="435,419"><span data-line-number-content="">318</span></div><div data-line-type="change-deletion" data-column-number="319" data-line-index="436,420"><span data-line-number-content="">319</span></div><div data-gutter-buffer="buffer" data-buffer-size="10" style="grid-row: span 10;min-height:calc(10 * 1lh);"></div><div data-line-type="context" data-column-number="320" data-line-index="456,431"><span data-line-number-content="">320</span></div><div data-line-type="context" data-column-number="321" data-line-index="457,432"><span data-line-number-content="">321</span></div><div data-line-type="context" data-column-number="322" data-line-index="458,433"><span data-line-number-content="">322</span></div><div data-line-type="context" data-column-number="323" data-line-index="459,434"><span data-line-number-content="">323</span></div><div data-line-type="context" data-column-number="324" data-line-index="460,435"><span data-line-number-content="">324</span></div><div data-line-type="change-deletion" data-column-number="325" data-line-index="461,436"><span data-line-number-content="">325</span></div><div data-line-type="context" data-column-number="326" data-line-index="463,437"><span data-line-number-content="">326</span></div><div data-line-type="context" data-column-number="327" data-line-index="464,438"><span data-line-number-content="">327</span></div><div data-line-type="context" data-column-number="328" data-line-index="465,439"><span data-line-number-content="">328</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">5 unmodified lines</span></div></div></div><div data-line-type="context" data-column-number="334" data-line-index="471,445"><span data-line-number-content="">334</span></div><div data-line-type="context" data-column-number="335" data-line-index="472,446"><span data-line-number-content="">335</span></div><div data-line-type="context" data-column-number="336" data-line-index="473,447"><span data-line-number-content="">336</span></div><div data-line-type="change-deletion" data-column-number="337" data-line-index="474,448"><span data-line-number-content="">337</span></div><div data-line-type="change-deletion" data-column-number="338" data-line-index="475,449"><span data-line-number-content="">338</span></div><div data-line-type="change-deletion" data-column-number="339" data-line-index="476,450"><span data-line-number-content="">339</span></div><div data-line-type="change-deletion" data-column-number="340" data-line-index="477,451"><span data-line-number-content="">340</span></div><div data-line-type="change-deletion" data-column-number="341" data-line-index="478,452"><span data-line-number-content="">341</span></div><div data-line-type="change-deletion" data-column-number="342" data-line-index="479,453"><span data-line-number-content="">342</span></div><div data-line-type="change-deletion" data-column-number="343" data-line-index="480,454"><span data-line-number-content="">343</span></div><div data-line-type="change-deletion" data-column-number="344" data-line-index="481,455"><span data-line-number-content="">344</span></div><div data-gutter-buffer="buffer" data-buffer-size="5" style="grid-row: span 5;min-height:calc(5 * 1lh);"></div><div data-line-type="context" data-column-number="345" data-line-index="495,461"><span data-line-number-content="">345</span></div><div data-line-type="change-deletion" data-column-number="346" data-line-index="496,462"><span data-line-number-content="">346</span></div><div data-line-type="change-deletion" data-column-number="347" data-line-index="497,463"><span data-line-number-content="">347</span></div><div data-line-type="context" data-column-number="348" data-line-index="500,464"><span data-line-number-content="">348</span></div><div data-line-type="context" data-column-number="349" data-line-index="501,465"><span data-line-number-content="">349</span></div><div data-line-type="context" data-column-number="350" data-line-index="502,466"><span data-line-number-content="">350</span></div><div data-line-type="context" data-column-number="351" data-line-index="503,467"><span data-line-number-content="">351</span></div><div data-gutter-buffer="buffer" data-buffer-size="1" style="grid-row: span 1;min-height:calc(1 * 1lh);"></div><div data-line-type="context" data-column-number="352" data-line-index="505,469"><span data-line-number-content="">352</span></div><div data-line-type="change-deletion" data-column-number="353" data-line-index="506,470"><span data-line-number-content="">353</span></div><div data-line-type="change-deletion" data-column-number="354" data-line-index="507,471"><span data-line-number-content="">354</span></div><div data-line-type="change-deletion" data-column-number="355" data-line-index="508,472"><span data-line-number-content="">355</span></div><div data-gutter-buffer="buffer" data-buffer-size="4" style="grid-row: span 4;min-height:calc(4 * 1lh);"></div><div data-line-type="context" data-column-number="356" data-line-index="516,477"><span data-line-number-content="">356</span></div><div data-line-type="context" data-column-number="357" data-line-index="517,478"><span data-line-number-content="">357</span></div><div data-line-type="context" data-column-number="358" data-line-index="518,479"><span data-line-number-content="">358</span></div><div data-line-type="context" data-column-number="359" data-line-index="519,480"><span data-line-number-content="">359</span></div><div data-line-type="context" data-column-number="360" data-line-index="520,481"><span data-line-number-content="">360</span></div><div data-gutter-buffer="buffer" data-buffer-size="8" style="grid-row: span 8;min-height:calc(8 * 1lh);"></div><div data-line-type="context" data-column-number="361" data-line-index="529,490"><span data-line-number-content="">361</span></div><div data-line-type="context" data-column-number="362" data-line-index="530,491"><span data-line-number-content="">362</span></div><div data-line-type="context" data-column-number="363" data-line-index="531,492"><span data-line-number-content="">363</span></div><div data-line-type="context" data-column-number="364" data-line-index="532,493"><span data-line-number-content="">364</span></div><div data-line-type="context" data-column-number="365" data-line-index="533,494"><span data-line-number-content="">365</span></div><div data-line-type="context" data-column-number="366" data-line-index="534,495"><span data-line-number-content="">366</span></div><div data-gutter-buffer="buffer" data-buffer-size="1" style="grid-row: span 1;min-height:calc(1 * 1lh);"></div><div data-line-type="context" data-column-number="367" data-line-index="536,497"><span data-line-number-content="">367</span></div><div data-line-type="context" data-column-number="368" data-line-index="537,498"><span data-line-number-content="">368</span></div><div data-line-type="context" data-column-number="369" data-line-index="538,499"><span data-line-number-content="">369</span></div><div data-line-type="context" data-column-number="370" data-line-index="539,500"><span data-line-number-content="">370</span></div><div data-line-type="context" data-column-number="371" data-line-index="540,501"><span data-line-number-content="">371</span></div><div data-gutter-buffer="buffer" data-buffer-size="1" style="grid-row: span 1;min-height:calc(1 * 1lh);"></div><div data-line-type="context" data-column-number="372" data-line-index="542,503"><span data-line-number-content="">372</span></div><div data-line-type="context" data-column-number="373" data-line-index="543,504"><span data-line-number-content="">373</span></div><div data-line-type="context" data-column-number="374" data-line-index="544,505"><span data-line-number-content="">374</span></div><div data-line-type="context" data-column-number="375" data-line-index="545,506"><span data-line-number-content="">375</span></div><div data-line-type="context" data-column-number="376" data-line-index="546,507"><span data-line-number-content="">376</span></div><div data-gutter-buffer="buffer" data-buffer-size="1" style="grid-row: span 1;min-height:calc(1 * 1lh);"></div><div data-line-type="context" data-column-number="377" data-line-index="548,509"><span data-line-number-content="">377</span></div><div data-line-type="context" data-column-number="378" data-line-index="549,510"><span data-line-number-content="">378</span></div><div data-line-type="context" data-column-number="379" data-line-index="550,511"><span data-line-number-content="">379</span></div><div data-line-type="context" data-column-number="380" data-line-index="551,512"><span data-line-number-content="">380</span></div><div data-line-type="context" data-column-number="381" data-line-index="552,513"><span data-line-number-content="">381</span></div><div data-line-type="context" data-column-number="382" data-line-index="553,514"><span data-line-number-content="">382</span></div><div data-gutter-buffer="buffer" data-buffer-size="7" style="grid-row: span 7;min-height:calc(7 * 1lh);"></div><div data-line-type="context" data-column-number="383" data-line-index="561,522"><span data-line-number-content="">383</span></div><div data-line-type="context" data-column-number="384" data-line-index="562,523"><span data-line-number-content="">384</span></div><div data-line-type="context" data-column-number="385" data-line-index="563,524"><span data-line-number-content="">385</span></div><div data-line-type="change-deletion" data-column-number="386" data-line-index="564,525"><span data-line-number-content="">386</span></div><div data-line-type="context" data-column-number="387" data-line-index="566,526"><span data-line-number-content="">387</span></div><div data-line-type="context" data-column-number="388" data-line-index="567,527"><span data-line-number-content="">388</span></div><div data-line-type="context" data-column-number="389" data-line-index="568,528"><span data-line-number-content="">389</span></div><div data-line-type="context" data-column-number="390" data-line-index="569,529"><span data-line-number-content="">390</span></div><div data-line-type="context" data-column-number="391" data-line-index="570,530"><span data-line-number-content="">391</span></div><div data-gutter-buffer="buffer" data-buffer-size="6" style="grid-row: span 6;min-height:calc(6 * 1lh);"></div><div data-line-type="context" data-column-number="392" data-line-index="577,537"><span data-line-number-content="">392</span></div><div data-line-type="context" data-column-number="393" data-line-index="578,538"><span data-line-number-content="">393</span></div><div data-line-type="context" data-column-number="394" data-line-index="579,539"><span data-line-number-content="">394</span></div><div data-gutter-buffer="buffer" data-buffer-size="10" style="grid-row: span 10;min-height:calc(10 * 1lh);"></div><div data-line-type="context" data-column-number="395" data-line-index="590,550"><span data-line-number-content="">395</span></div><div data-line-type="context" data-column-number="396" data-line-index="591,551"><span data-line-number-content="">396</span></div><div data-line-type="context" data-column-number="397" data-line-index="592,552"><span data-line-number-content="">397</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">30 unmodified lines</span></div></div></div><div data-line-type="context" data-column-number="428" data-line-index="623,583"><span data-line-number-content="">428</span></div><div data-line-type="context" data-column-number="429" data-line-index="624,584"><span data-line-number-content="">429</span></div><div data-line-type="context" data-column-number="430" data-line-index="625,585"><span data-line-number-content="">430</span></div><div data-line-type="change-deletion" data-column-number="431" data-line-index="626,586"><span data-line-number-content="">431</span></div><div data-line-type="context" data-column-number="432" data-line-index="628,587"><span data-line-number-content="">432</span></div><div data-line-type="context" data-column-number="433" data-line-index="629,588"><span data-line-number-content="">433</span></div><div data-line-type="context" data-column-number="434" data-line-index="630,589"><span data-line-number-content="">434</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">6 unmodified lines</span></div></div></div><div data-line-type="context" data-column-number="441" data-line-index="637,596"><span data-line-number-content="">441</span></div><div data-line-type="context" data-column-number="442" data-line-index="638,597"><span data-line-number-content="">442</span></div><div data-line-type="context" data-column-number="443" data-line-index="639,598"><span data-line-number-content="">443</span></div><div data-gutter-buffer="buffer" data-buffer-size="6" style="grid-row: span 6;min-height:calc(6 * 1lh);"></div><div data-line-type="context" data-column-number="444" data-line-index="646,605"><span data-line-number-content="">444</span></div><div data-line-type="context" data-column-number="445" data-line-index="647,606"><span data-line-number-content="">445</span></div><div data-line-type="context" data-column-number="446" data-line-index="648,607"><span data-line-number-content="">446</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">1 unmodified line</span></div></div></div><div data-line-type="context" data-column-number="448" data-line-index="650,609"><span data-line-number-content="">448</span></div><div data-line-type="context" data-column-number="449" data-line-index="651,610"><span data-line-number-content="">449</span></div><div data-line-type="context" data-column-number="450" data-line-index="652,611"><span data-line-number-content="">450</span></div><div data-line-type="change-deletion" data-column-number="451" data-line-index="653,612"><span data-line-number-content="">451</span></div><div data-line-type="context" data-column-number="452" data-line-index="655,613"><span data-line-number-content="">452</span></div><div data-line-type="context" data-column-number="453" data-line-index="656,614"><span data-line-number-content="">453</span></div><div data-line-type="context" data-column-number="454" data-line-index="657,615"><span data-line-number-content="">454</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">23 unmodified lines</span></div></div></div><div data-line-type="context" data-column-number="478" data-line-index="681,639"><span data-line-number-content="">478</span></div><div data-line-type="context" data-column-number="479" data-line-index="682,640"><span data-line-number-content="">479</span></div><div data-line-type="context" data-column-number="480" data-line-index="683,641"><span data-line-number-content="">480</span></div><div data-line-type="change-deletion" data-column-number="481" data-line-index="684,642"><span data-line-number-content="">481</span></div><div data-line-type="context" data-column-number="482" data-line-index="686,643"><span data-line-number-content="">482</span></div><div data-line-type="context" data-column-number="483" data-line-index="687,644"><span data-line-number-content="">483</span></div><div data-line-type="context" data-column-number="484" data-line-index="688,645"><span data-line-number-content="">484</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">14 unmodified lines</span></div></div></div><div data-line-type="context" data-column-number="499" data-line-index="703,660"><span data-line-number-content="">499</span></div><div data-line-type="context" data-column-number="500" data-line-index="704,661"><span data-line-number-content="">500</span></div><div data-line-type="context" data-column-number="501" data-line-index="705,662"><span data-line-number-content="">501</span></div><div data-gutter-buffer="buffer" data-buffer-size="1" style="grid-row: span 1;min-height:calc(1 * 1lh);"></div><div data-line-type="context" data-column-number="502" data-line-index="707,664"><span data-line-number-content="">502</span></div><div data-line-type="context" data-column-number="503" data-line-index="708,665"><span data-line-number-content="">503</span></div><div data-line-type="context" data-column-number="504" data-line-index="709,666"><span data-line-number-content="">504</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">9 unmodified lines</span></div></div></div><div data-line-type="context" data-column-number="514" data-line-index="719,676"><span data-line-number-content="">514</span></div><div data-line-type="context" data-column-number="515" data-line-index="720,677"><span data-line-number-content="">515</span></div><div data-line-type="context" data-column-number="516" data-line-index="721,678"><span data-line-number-content="">516</span></div><div data-gutter-buffer="buffer" data-buffer-size="1" style="grid-row: span 1;min-height:calc(1 * 1lh);"></div><div data-line-type="context" data-column-number="517" data-line-index="723,680"><span data-line-number-content="">517</span></div><div data-line-type="context" data-column-number="518" data-line-index="724,681"><span data-line-number-content="">518</span></div><div data-line-type="context" data-column-number="519" data-line-index="725,682"><span data-line-number-content="">519</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">14 unmodified lines</span></div></div></div><div data-line-type="context" data-column-number="534" data-line-index="740,697"><span data-line-number-content="">534</span></div><div data-line-type="context" data-column-number="535" data-line-index="741,698"><span data-line-number-content="">535</span></div><div data-line-type="context" data-column-number="536" data-line-index="742,699"><span data-line-number-content="">536</span></div><div data-gutter-buffer="buffer" data-buffer-size="2" style="grid-row: span 2;min-height:calc(2 * 1lh);"></div><div data-line-type="context" data-column-number="537" data-line-index="745,702"><span data-line-number-content="">537</span></div><div data-line-type="context" data-column-number="538" data-line-index="746,703"><span data-line-number-content="">538</span></div><div data-line-type="context" data-column-number="539" data-line-index="747,704"><span data-line-number-content="">539</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">27 unmodified lines</span></div></div></div><div data-line-type="context" data-column-number="567" data-line-index="775,732"><span data-line-number-content="">567</span></div><div data-line-type="context" data-column-number="568" data-line-index="776,733"><span data-line-number-content="">568</span></div><div data-line-type="context" data-column-number="569" data-line-index="777,734"><span data-line-number-content="">569</span></div><div data-line-type="change-deletion" data-column-number="570" data-line-index="778,735"><span data-line-number-content="">570</span></div><div data-line-type="context" data-column-number="571" data-line-index="780,736"><span data-line-number-content="">571</span></div><div data-line-type="context" data-column-number="572" data-line-index="781,737"><span data-line-number-content="">572</span></div><div data-gutter-buffer="buffer" data-buffer-size="7" style="grid-row: span 7;min-height:calc(7 * 1lh);"></div><div data-line-type="context" data-column-number="573" data-line-index="789,745"><span data-line-number-content="">573</span></div><div data-line-type="context" data-column-number="574" data-line-index="790,746"><span data-line-number-content="">574</span></div><div data-line-type="context" data-column-number="575" data-line-index="791,747"><span data-line-number-content="">575</span></div><div data-line-type="context" data-column-number="576" data-line-index="792,748"><span data-line-number-content="">576</span></div><div data-line-type="context" data-column-number="577" data-line-index="793,749"><span data-line-number-content="">577</span></div><div data-gutter-buffer="buffer" data-buffer-size="1" style="grid-row: span 1;min-height:calc(1 * 1lh);"></div><div data-line-type="context" data-column-number="578" data-line-index="795,751"><span data-line-number-content="">578</span></div><div data-line-type="context" data-column-number="579" data-line-index="796,752"><span data-line-number-content="">579</span></div><div data-line-type="change-deletion" data-column-number="580" data-line-index="797,753"><span data-line-number-content="">580</span></div><div data-line-type="context" data-column-number="581" data-line-index="799,754"><span data-line-number-content="">581</span></div><div data-line-type="context" data-column-number="582" data-line-index="800,755"><span data-line-number-content="">582</span></div><div data-line-type="context" data-column-number="583" data-line-index="801,756"><span data-line-number-content="">583</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">1 unmodified line</span></div></div></div><div data-line-type="context" data-column-number="585" data-line-index="803,758"><span data-line-number-content="">585</span></div><div data-line-type="context" data-column-number="586" data-line-index="804,759"><span data-line-number-content="">586</span></div><div data-line-type="context" data-column-number="587" data-line-index="805,760"><span data-line-number-content="">587</span></div><div data-line-type="change-deletion" data-column-number="588" data-line-index="806,761"><span data-line-number-content="">588</span></div><div data-line-type="context" data-column-number="589" data-line-index="808,762"><span data-line-number-content="">589</span></div><div data-line-type="context" data-column-number="590" data-line-index="809,763"><span data-line-number-content="">590</span></div><div data-line-type="change-deletion" data-column-number="591" data-line-index="810,764"><span data-line-number-content="">591</span></div><div data-line-type="context" data-column-number="592" data-line-index="812,765"><span data-line-number-content="">592</span></div><div data-line-type="context" data-column-number="593" data-line-index="813,766"><span data-line-number-content="">593</span></div><div data-line-type="context" data-column-number="594" data-line-index="814,767"><span data-line-number-content="">594</span></div><div data-line-type="context" data-column-number="595" data-line-index="815,768"><span data-line-number-content="">595</span></div><div data-line-type="change-deletion" data-column-number="596" data-line-index="816,769"><span data-line-number-content="">596</span></div><div data-gutter-buffer="buffer" data-buffer-size="101" style="grid-row: span 101;min-height:calc(101 * 1lh);"></div><div data-line-type="context" data-column-number="597" data-line-index="919,871"><span data-line-number-content="">597</span></div><div data-line-type="context" data-column-number="598" data-line-index="920,872"><span data-line-number-content="">598</span></div><div data-line-type="change-deletion" data-column-number="599" data-line-index="921,873"><span data-line-number-content="">599</span></div><div data-gutter-buffer="buffer" data-buffer-size="1" style="grid-row: span 1;min-height:calc(1 * 1lh);"></div><div data-line-type="context" data-column-number="600" data-line-index="924,875"><span data-line-number-content="">600</span></div><div data-line-type="change-deletion" data-column-number="601" data-line-index="925,876"><span data-line-number-content="">601</span></div><div data-line-type="change-deletion" data-column-number="602" data-line-index="926,877"><span data-line-number-content="">602</span></div><div data-line-type="context" data-column-number="603" data-line-index="929,878"><span data-line-number-content="">603</span></div><div data-line-type="context" data-column-number="604" data-line-index="930,879"><span data-line-number-content="">604</span></div><div data-line-type="context" data-column-number="605" data-line-index="931,880"><span data-line-number-content="">605</span></div><div data-line-type="context" data-column-number="606" data-line-index="932,881"><span data-line-number-content="">606</span></div><div data-line-type="context" data-column-number="607" data-line-index="933,882"><span data-line-number-content="">607</span></div><div data-line-type="context" data-column-number="608" data-line-index="934,883"><span data-line-number-content="">608</span></div><div data-gutter-buffer="buffer" data-buffer-size="14" style="grid-row: span 14;min-height:calc(14 * 1lh);"></div><div data-line-type="context" data-column-number="609" data-line-index="949,898"><span data-line-number-content="">609</span></div><div data-line-type="context" data-column-number="610" data-line-index="950,899"><span data-line-number-content="">610</span></div><div data-line-type="context" data-column-number="611" data-line-index="951,900"><span data-line-number-content="">611</span></div></div><div data-content="" style="grid-row: span 595"><div data-separator="line-info" data-separator-first=""><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">10 unmodified lines</span></div></div></div><div data-line="11" data-alt-line="11" data-line-type="context" data-line-index="10,10"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> var</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> attachedSubtitleURLs: </span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C">Set</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"><</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">URL</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">></span></div><div data-line="12" data-alt-line="12" data-line-type="context" data-line-index="11,11"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> var</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> audioMenuSignature: </span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C">String</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">?</span></div><div data-line="13" data-alt-line="13" data-line-type="context" data-line-index="12,12"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> var</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> captionsMenuSignature: </span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C">String</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">?</span></div><div data-content-buffer="" data-buffer-size="2" style="grid-row: span 2;min-height:calc(2 * 1lh)"></div><div data-line="14" data-alt-line="16" data-line-type="context" data-line-index="15,15"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> var</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> onDismiss: </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(()</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> -></span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C"> Void</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)?</span></div><div data-line="15" data-alt-line="17" data-line-type="context" data-line-index="16,16">
|
|
</div><div data-content-buffer="" data-buffer-size="25" style="grid-row: span 25;min-height:calc(25 * 1lh)"></div><div data-line="16" data-alt-line="43" data-line-type="context" data-line-index="42,42"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> loadingView: UIActivityIndicatorView </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-line="17" data-alt-line="44" data-line-type="context" data-line-index="43,43"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> view </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> UIActivityIndicatorView</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">style</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> .</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">large</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="18" data-alt-line="45" data-line-type="context" data-line-index="44,44"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> view.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">translatesAutoresizingMaskIntoConstraints</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> false</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">7 unmodified lines</span></div></div></div><div data-line="26" data-alt-line="53" data-line-type="context" data-line-index="52,52"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> button.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">translatesAutoresizingMaskIntoConstraints</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> false</span></div><div data-line="27" data-alt-line="54" data-line-type="context" data-line-index="53,53"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> button.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">setImage</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">UIImage</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">systemName</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "xmark"</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, for</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> .</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">normal</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="28" data-alt-line="55" data-line-type="context" data-line-index="54,54"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> button.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">tintColor</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> .</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">white</span></div><div data-line="29" data-line-type="change-deletion" data-line-index="55,55"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> button.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">backgroundColor</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> UIColor.</span><span data-diff-span=""><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">black</span></span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">withAlphaComponent</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7">0.</span><span data-diff-span=""><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7">45</span></span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="30" data-line-type="change-deletion" data-line-index="56,56"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> button.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">layer</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">cornerRadius</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> </span><span data-diff-span=""><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7">18</span></span></div><div data-content-buffer="" data-buffer-size="2" style="grid-row: span 2;min-height:calc(2 * 1lh)"></div><div data-line="31" data-alt-line="60" data-line-type="context" data-line-index="61,59"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> button.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">accessibilityLabel</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "Close"</span></div><div data-content-buffer="" data-buffer-size="1" style="grid-row: span 1;min-height:calc(1 * 1lh)"></div><div data-line="32" data-alt-line="62" data-line-type="context" data-line-index="63,61"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> return</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> button</span></div><div data-line="33" data-alt-line="63" data-line-type="context" data-line-index="64,62"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> }</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span></div><div data-line="34" data-alt-line="64" data-line-type="context" data-line-index="65,63">
|
|
</div><div data-line="35" data-line-type="change-deletion" data-line-index="66,64"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> controlsContainer</span><span data-diff-span=""><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">: UIVisualEffectView </span></span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> </span><span data-diff-span=""><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">{</span></span></div><div data-line="36" data-line-type="change-deletion" data-line-index="67,65"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> view </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> UIVisualEffectView</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">effect</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> UIBlurEffect</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">style</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> .</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">systemUltraThinMaterialDark</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">))</span></div><div data-line="37" data-line-type="change-deletion" data-line-index="68,66"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> view.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">translatesAutoresizingMaskIntoConstraints</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> false</span></div><div data-line="38" data-line-type="change-deletion" data-line-index="69,67"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> view.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">layer</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">cornerRadius</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 22</span></div><div data-line="39" data-line-type="change-deletion" data-line-index="70,68"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> view.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">clipsToBounds</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> true</span></div><div data-line="40" data-line-type="change-deletion" data-line-index="71,69"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> view.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">backgroundColor</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> UIColor.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">white</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">withAlphaComponent</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7">0.08</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="41" data-line-type="change-deletion" data-line-index="72,70"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> view.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">layer</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">borderColor</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> UIColor.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">white</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">withAlphaComponent</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7">0.18</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">cgColor</span></div><div data-line="42" data-line-type="change-deletion" data-line-index="73,71"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> view.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">layer</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">borderWidth</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 1</span></div><div data-line="43" data-line-type="change-deletion" data-line-index="74,72"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> return</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> view</span></div><div data-line="44" data-line-type="change-deletion" data-line-index="75,73"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }()</span></div><div data-line="45" data-alt-line="66" data-line-type="context" data-line-index="77,74">
|
|
</div><div data-line="46" data-alt-line="67" data-line-type="context" data-line-index="78,75"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> tapSurfaceView: UIView </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-line="47" data-alt-line="68" data-line-type="context" data-line-index="79,76"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> view </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> UIView</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">2 unmodified lines</span></div></div></div><div data-line="50" data-alt-line="71" data-line-type="context" data-line-index="82,79"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> return</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> view</span></div><div data-line="51" data-alt-line="72" data-line-type="context" data-line-index="83,80"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> }</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span></div><div data-line="52" data-alt-line="73" data-line-type="context" data-line-index="84,81">
|
|
</div><div data-line="53" data-line-type="change-deletion" data-line-index="85,82"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> playPauseButton </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> NativePlayerViewController.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">iconButton</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">systemName</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "pause.fill"</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, label</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "Play or Pause"</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="54" data-alt-line="75" data-line-type="context" data-line-index="87,83"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> jumpBackButton </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> NativePlayerViewController.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">iconButton</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">systemName</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "gobackward.15"</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, label</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "Jump Back 15 Seconds"</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="55" data-alt-line="76" data-line-type="context" data-line-index="88,84"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> jumpForwardButton </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> NativePlayerViewController.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">iconButton</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">systemName</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "goforward.15"</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, label</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "Jump Forward 15 Seconds"</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="56" data-line-type="change-deletion" data-line-index="89,85"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> audioButton </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> NativePlayerViewController.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">iconButton</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">systemName</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "waveform.circle"</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, label</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "Audio </span><span data-diff-span=""><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">Tracks</span></span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">"</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="57" data-line-type="change-deletion" data-line-index="90,86"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> captionsButton </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> NativePlayerViewController.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">iconButton</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">systemName</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "captions.bubble"</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, label</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "</span><span data-diff-span=""><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">Captions</span></span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">"</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-content-buffer="" data-buffer-size="2" style="grid-row: span 2;min-height:calc(2 * 1lh)"></div><div data-line="58" data-alt-line="81" data-line-type="context" data-line-index="95,89">
|
|
</div><div data-line="59" data-alt-line="82" data-line-type="context" data-line-index="96,90"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> elapsedLabel: UILabel </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-line="60" data-alt-line="83" data-line-type="context" data-line-index="97,91"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> label </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> UILabel</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">27 unmodified lines</span></div></div></div><div data-line="88" data-alt-line="111" data-line-type="context" data-line-index="125,119"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> return</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> slider</span></div><div data-line="89" data-alt-line="112" data-line-type="context" data-line-index="126,120"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> }</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span></div><div data-line="90" data-alt-line="113" data-line-type="context" data-line-index="127,121">
|
|
</div><div data-line="91" data-line-type="change-deletion" data-line-index="128,122"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> </span><span data-diff-span=""><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">failureLabel</span></span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">: UILabel </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-line="92" data-alt-line="115" data-line-type="context" data-line-index="130,123"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> label </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> UILabel</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span></div><div data-line="93" data-alt-line="116" data-line-type="context" data-line-index="131,124"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> label.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">translatesAutoresizingMaskIntoConstraints</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> false</span></div><div data-line="94" data-alt-line="117" data-line-type="context" data-line-index="132,125"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> label.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">textColor</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> .</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">white</span></div><div data-line="95" data-alt-line="118" data-line-type="context" data-line-index="133,126"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> label.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">textAlignment</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> .</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">center</span></div><div data-content-buffer="" data-buffer-size="30" style="grid-row: span 30;min-height:calc(30 * 1lh)"></div><div data-line="96" data-alt-line="149" data-line-type="context" data-line-index="164,157"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> label.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">numberOfLines</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 0</span></div><div data-line="97" data-line-type="change-deletion" data-line-index="165,158"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> label.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">font</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> .</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">preferredFont</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">forTextStyle</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> .</span><span data-diff-span=""><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">body</span></span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="98" data-line-type="change-deletion" data-line-index="166,159"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> label.</span><span data-diff-span=""><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">isHidden</span></span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> true</span></div><div data-line="99" data-alt-line="152" data-line-type="context" data-line-index="169,160"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> return</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> label</span></div><div data-line="100" data-alt-line="153" data-line-type="context" data-line-index="170,161"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }()</span></div><div data-line="101" data-alt-line="154" data-line-type="context" data-line-index="171,162">
|
|
</div><div data-content-buffer="" data-buffer-size="3" style="grid-row: span 3;min-height:calc(3 * 1lh)"></div><div data-line="102" data-alt-line="158" data-line-type="context" data-line-index="175,166"><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE"> init</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span></div><div data-line="103" data-alt-line="159" data-line-type="context" data-line-index="176,167"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> request</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">: NativePlaybackRequest,</span></div><div data-line="104" data-alt-line="160" data-line-type="context" data-line-index="177,168"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> backend</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">: NativePlaybackBackend </span><span style="--diffs-token-dark:#08C0EF;--diffs-token-light:#08C0EF">=</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> VLCNativePlaybackBackend</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">,</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">31 unmodified lines</span></div></div></div><div data-line="136" data-alt-line="192" data-line-type="context" data-line-index="209,200"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> view.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">backgroundColor</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> .</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">black</span></div><div data-line="137" data-alt-line="193" data-line-type="context" data-line-index="210,201"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> configureBackend</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span></div><div data-line="138" data-alt-line="194" data-line-type="context" data-line-index="211,202"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> configureLayout</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span></div><div data-line="139" data-line-type="change-deletion" data-line-index="212,203"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> </span><span data-diff-span=""><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">startStartupTimer</span></span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span></div><div data-line="140" data-line-type="change-deletion" data-line-index="213,204"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> </span><span data-diff-span=""><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">backend.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">play</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">request</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> request</span></span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="141" data-line-type="change-deletion" data-line-index="214,205"><span data-diff-span=""><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> addSubtitleCandidates</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">request.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">subtitleCandidates</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></span></div><div data-content-buffer="" data-buffer-size="5" style="grid-row: span 5;min-height:calc(5 * 1lh)"></div><div data-line="142" data-alt-line="203" data-line-type="context" data-line-index="223,211"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> }</span></div><div data-line="143" data-alt-line="204" data-line-type="context" data-line-index="224,212">
|
|
</div><div data-line="144" data-alt-line="205" data-line-type="context" data-line-index="225,213"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> @</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">discardableResult</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">67 unmodified lines</span></div></div></div><div data-line="212" data-alt-line="273" data-line-type="context" data-line-index="293,281"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> DispatchQueue.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">main</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">async</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-line="213" data-alt-line="274" data-line-type="context" data-line-index="294,282"><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C"> self</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">?</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">startupTimer</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">?</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">invalidate</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span></div><div data-line="214" data-alt-line="275" data-line-type="context" data-line-index="295,283"><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C"> self</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">?</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">loadingView</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">stopAnimating</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span></div><div data-line="215" data-line-type="change-deletion" data-line-index="296,284"><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C"> self</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">?</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span data-diff-span=""><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">loadingView</span></span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">isHidden</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> true</span></div><div data-line="216" data-alt-line="277" data-line-type="context" data-line-index="298,285"><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C"> self</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">?</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">startProgressUpdates</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span></div><div data-line="217" data-alt-line="278" data-line-type="context" data-line-index="299,286"><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C"> self</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">?</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">refreshControls</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span></div><div data-line="218" data-alt-line="279" data-line-type="context" data-line-index="300,287"><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C"> self</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">?</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">scheduleControlsHide</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">22 unmodified lines</span></div></div></div><div data-line="241" data-alt-line="302" data-line-type="context" data-line-index="323,310"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> }</span></div><div data-line="242" data-alt-line="303" data-line-type="context" data-line-index="324,311"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> }</span></div><div data-line="243" data-alt-line="304" data-line-type="context" data-line-index="325,312">
|
|
</div><div data-content-buffer="" data-buffer-size="10" style="grid-row: span 10;min-height:calc(10 * 1lh)"></div><div data-line="244" data-alt-line="315" data-line-type="context" data-line-index="336,323"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE"> func</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> startStartupTimer</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-line="245" data-alt-line="316" data-line-type="context" data-line-index="337,324"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> startupTimer</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">?</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">invalidate</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span></div><div data-line="246" data-alt-line="317" data-line-type="context" data-line-index="338,325"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> startupTimer </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> Timer.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">scheduledTimer</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">withTimeInterval</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 20</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, repeats</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> false</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> [</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">weak</span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C"> self</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">] _ </span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">in</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">4 unmodified lines</span></div></div></div><div data-line="251" data-alt-line="322" data-line-type="context" data-line-index="343,330">
|
|
</div><div data-line="252" data-alt-line="323" data-line-type="context" data-line-index="344,331"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE"> func</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> configureLayout</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-line="253" data-alt-line="324" data-line-type="context" data-line-index="345,332"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> view.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">addSubview</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">backend.view</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-content-buffer="" data-buffer-size="1" style="grid-row: span 1;min-height:calc(1 * 1lh)"></div><div data-line="254" data-alt-line="326" data-line-type="context" data-line-index="347,334"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> view.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">addSubview</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">tapSurfaceView</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="255" data-line-type="change-deletion" data-line-index="348,335"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> view.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">addSubview</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span data-diff-span=""><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">loadingView</span></span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="256" data-line-type="change-deletion" data-line-index="349,336"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> view.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">addSubview</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span data-diff-span=""><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">failureLabel</span></span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-content-buffer="" data-buffer-size="1" style="grid-row: span 1;min-height:calc(1 * 1lh)"></div><div data-line="257" data-alt-line="330" data-line-type="context" data-line-index="353,338"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> view.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">addSubview</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">controlsContainer</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-content-buffer="" data-buffer-size="1" style="grid-row: span 1;min-height:calc(1 * 1lh)"></div><div data-line="258" data-alt-line="332" data-line-type="context" data-line-index="355,340"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> view.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">addSubview</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">closeButton</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-content-buffer="" data-buffer-size="4" style="grid-row: span 4;min-height:calc(4 * 1lh)"></div><div data-line="259" data-alt-line="337" data-line-type="context" data-line-index="360,345"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> closeButton.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">addTarget</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C">self</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, action</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> #selector</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">close</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, for</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> .</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">touchUpInside</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="260" data-alt-line="338" data-line-type="context" data-line-index="361,346"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> playPauseButton.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">addTarget</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C">self</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, action</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> #selector</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">togglePlayPause</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, for</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> .</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">touchUpInside</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-content-buffer="" data-buffer-size="1" style="grid-row: span 1;min-height:calc(1 * 1lh)"></div><div data-line="261" data-alt-line="340" data-line-type="context" data-line-index="363,348"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> jumpBackButton.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">addTarget</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C">self</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, action</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> #selector</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">jumpBack</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, for</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> .</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">touchUpInside</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="262" data-alt-line="341" data-line-type="context" data-line-index="364,349"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> jumpForwardButton.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">addTarget</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C">self</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, action</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> #selector</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">jumpForward</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, for</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> .</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">touchUpInside</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-content-buffer="" data-buffer-size="2" style="grid-row: span 2;min-height:calc(2 * 1lh)"></div><div data-line="263" data-alt-line="344" data-line-type="context" data-line-index="367,352"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> audioButton.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">showsMenuAsPrimaryAction</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> true</span></div><div data-line="264" data-alt-line="345" data-line-type="context" data-line-index="368,353"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> captionsButton.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">showsMenuAsPrimaryAction</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> true</span></div><div data-line="265" data-line-type="change-deletion" data-line-index="369,354"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> playPauseButton.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">layer</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">cornerRadius</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> </span><span data-diff-span=""><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7">24</span></span></div><div data-content-buffer="" data-buffer-size="2" style="grid-row: span 2;min-height:calc(2 * 1lh)"></div><div data-line="266" data-alt-line="349" data-line-type="context" data-line-index="373,357"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> scrubber.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">addTarget</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C">self</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, action</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> #selector</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">scrubbingStarted</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, for</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> .</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">touchDown</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="267" data-alt-line="350" data-line-type="context" data-line-index="374,358"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> scrubber.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">addTarget</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C">self</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, action</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> #selector</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">scrubberChanged</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, for</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> .</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">valueChanged</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="268" data-alt-line="351" data-line-type="context" data-line-index="375,359"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> scrubber.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">addTarget</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C">self</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, action</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> #selector</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">scrubbingEnded</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, for</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> [.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">touchUpInside</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, .</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">touchUpOutside</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, .</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">touchCancel</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">]</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">1 unmodified line</span></div></div></div><div data-line="270" data-alt-line="353" data-line-type="context" data-line-index="377,361"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> tap </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> UITapGestureRecognizer</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">target</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C"> self</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, action</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> #selector</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">toggleControlsVisibility</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">))</span></div><div data-line="271" data-alt-line="354" data-line-type="context" data-line-index="378,362"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> tap.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">cancelsTouchesInView</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> false</span></div><div data-line="272" data-alt-line="355" data-line-type="context" data-line-index="379,363"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> tapSurfaceView.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">addGestureRecognizer</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">tap</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-content-buffer="" data-buffer-size="8" style="grid-row: span 8;min-height:calc(8 * 1lh)"></div><div data-line="273" data-alt-line="364" data-line-type="context" data-line-index="388,372">
|
|
</div><div data-line="274" data-alt-line="365" data-line-type="context" data-line-index="389,373"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> timeAndScrubRow </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> UIStackView</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">arrangedSubviews</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> [elapsedLabel, scrubber, remainingLabel]</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="275" data-alt-line="366" data-line-type="context" data-line-index="390,374"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> timeAndScrubRow.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">translatesAutoresizingMaskIntoConstraints</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> false</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">21 unmodified lines</span></div></div></div><div data-line="297" data-alt-line="388" data-line-type="context" data-line-index="412,396"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> stack.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">spacing</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 6</span></div><div data-line="298" data-alt-line="389" data-line-type="context" data-line-index="413,397"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> controlsContainer.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">contentView</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">addSubview</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">stack</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="299" data-alt-line="390" data-line-type="context" data-line-index="414,398">
|
|
</div><div data-content-buffer="" data-buffer-size="2" style="grid-row: span 2;min-height:calc(2 * 1lh)"></div><div data-line="300" data-alt-line="393" data-line-type="context" data-line-index="417,401"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> NSLayoutConstraint.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">activate</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">[</span></div><div data-line="301" data-alt-line="394" data-line-type="context" data-line-index="418,402"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> backend.view.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">leadingAnchor</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">.constraint</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">equalTo</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> view.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">leadingAnchor</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">,</span></div><div data-line="302" data-alt-line="395" data-line-type="context" data-line-index="419,403"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> backend.view.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">trailingAnchor</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">.constraint</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">equalTo</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> view.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">trailingAnchor</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">,</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">5 unmodified lines</span></div></div></div><div data-line="308" data-alt-line="401" data-line-type="context" data-line-index="425,409"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> tapSurfaceView.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">topAnchor</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">constraint</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">equalTo</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> view.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">topAnchor</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">,</span></div><div data-line="309" data-alt-line="402" data-line-type="context" data-line-index="426,410"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> tapSurfaceView.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">bottomAnchor</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">constraint</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">equalTo</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> view.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">bottomAnchor</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">,</span></div><div data-line="310" data-alt-line="403" data-line-type="context" data-line-index="427,411">
|
|
</div><div data-line="311" data-line-type="change-deletion" data-line-index="428,412"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> </span><span data-diff-span=""><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">loadingView</span></span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">centerXAnchor</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">constraint</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">equalTo</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> view.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">centerXAnchor</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">,</span></div><div data-line="312" data-line-type="change-deletion" data-line-index="429,413"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> </span><span data-diff-span=""><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">loadingView</span></span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">centerYAnchor</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">constraint</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">equalTo</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> view.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">centerYAnchor</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">,</span></div><div data-line="313" data-line-type="change-deletion" data-line-index="430,414">
|
|
</div><div data-line="314" data-line-type="change-deletion" data-line-index="431,415"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> </span><span data-diff-span=""><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">failureLabel.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">leadingAnchor</span></span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">constraint</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">equalTo</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> </span><span data-diff-span=""><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">view.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">safeAreaLayoutGuide</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">leadingAnchor</span></span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, constant</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> </span><span data-diff-span=""><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7">28</span></span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">,</span></div><div data-line="315" data-line-type="change-deletion" data-line-index="432,416"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> </span><span data-diff-span=""><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">failureLabel.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">trailingAnchor</span></span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">constraint</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">equalTo</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> </span><span data-diff-span=""><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">view.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">safeAreaLayoutGuide</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">trailingAnchor</span></span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, constant</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> </span><span data-diff-span=""><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7">-28</span></span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">,</span></div><div data-line="316" data-line-type="change-deletion" data-line-index="433,417"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> </span><span data-diff-span=""><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">failureLabel.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">centerYAnchor</span></span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">constraint</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">equalTo</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> </span><span data-diff-span=""><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">view.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">centerYAnchor</span></span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">,</span></div><div data-line="317" data-line-type="change-deletion" data-line-index="434,418">
|
|
</div><div data-line="318" data-line-type="change-deletion" data-line-index="435,419"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> </span><span data-diff-span=""><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">closeButton.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">widthAnchor</span></span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">constraint</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span data-diff-span=""><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">equalToConstant</span></span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> </span><span data-diff-span=""><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7">36</span></span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">,</span></div><div data-line="319" data-line-type="change-deletion" data-line-index="436,420"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> </span><span data-diff-span=""><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">closeButton.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">heightAnchor</span></span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">constraint</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span data-diff-span=""><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">equalToConstant</span></span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> </span><span data-diff-span=""><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7">36</span></span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">,</span></div><div data-content-buffer="" data-buffer-size="10" style="grid-row: span 10;min-height:calc(10 * 1lh)"></div><div data-line="320" data-alt-line="423" data-line-type="context" data-line-index="456,431"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> closeButton.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">topAnchor</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">constraint</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">equalTo</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> view.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">safeAreaLayoutGuide</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">topAnchor</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, constant</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 10</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">,</span></div><div data-line="321" data-alt-line="424" data-line-type="context" data-line-index="457,432"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> closeButton.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">trailingAnchor</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">constraint</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">equalTo</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> view.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">safeAreaLayoutGuide</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">trailingAnchor</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, constant</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> -10</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">,</span></div><div data-line="322" data-alt-line="425" data-line-type="context" data-line-index="458,433">
|
|
</div><div data-line="323" data-alt-line="426" data-line-type="context" data-line-index="459,434"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> controlsContainer.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">centerXAnchor</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">constraint</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">equalTo</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> view.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">safeAreaLayoutGuide</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">centerXAnchor</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">,</span></div><div data-line="324" data-alt-line="427" data-line-type="context" data-line-index="460,435"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> controlsContainer.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">widthAnchor</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">constraint</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">lessThanOrEqualTo</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> view.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">safeAreaLayoutGuide</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">widthAnchor</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, constant</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> -24</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">,</span></div><div data-line="325" data-line-type="change-deletion" data-line-index="461,436"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> </span><span data-diff-span=""><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">controlsContainer.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">widthAnchor</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">constraint</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">lessThanOrEqualToConstant</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 430</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">,</span></div><div data-line="326" data-alt-line="429" data-line-type="context" data-line-index="463,437"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> controlsContainer.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">bottomAnchor</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">constraint</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">equalTo</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> view.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">safeAreaLayoutGuide</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">bottomAnchor</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, constant</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> -12</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">,</span></div><div data-line="327" data-alt-line="430" data-line-type="context" data-line-index="464,438">
|
|
</div><div data-line="328" data-alt-line="431" data-line-type="context" data-line-index="465,439"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> stack.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">leadingAnchor</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">constraint</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">equalTo</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> controlsContainer.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">contentView</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">leadingAnchor</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, constant</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 12</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">,</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">5 unmodified lines</span></div></div></div><div data-line="334" data-alt-line="437" data-line-type="context" data-line-index="471,445"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> remainingLabel.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">widthAnchor</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">constraint</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">equalToConstant</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 42</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">,</span></div><div data-line="335" data-alt-line="438" data-line-type="context" data-line-index="472,446"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> scrubber.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">widthAnchor</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">constraint</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">greaterThanOrEqualToConstant</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 160</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">,</span></div><div data-line="336" data-alt-line="439" data-line-type="context" data-line-index="473,447">
|
|
</div><div data-line="337" data-line-type="change-deletion" data-line-index="474,448"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> </span><span data-diff-span=""><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">jumpBackButton.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">widthAnchor</span></span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">constraint</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span data-diff-span=""><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">equalToConstant</span></span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> </span><span data-diff-span=""><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7">36</span></span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">,</span></div><div data-line="338" data-line-type="change-deletion" data-line-index="475,449"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> </span><span data-diff-span=""><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">jumpBackButton.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">heightAnchor</span></span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">constraint</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span data-diff-span=""><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">equalToConstant</span></span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> </span><span data-diff-span=""><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7">36</span></span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">,</span></div><div data-line="339" data-line-type="change-deletion" data-line-index="476,450"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> </span><span data-diff-span=""><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">playPauseButton</span></span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">widthAnchor</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">constraint</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span data-diff-span=""><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">equalToConstant</span></span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> </span><span data-diff-span=""><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7">42</span></span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">,</span></div><div data-line="340" data-line-type="change-deletion" data-line-index="477,451"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> </span><span data-diff-span=""><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">playPauseButton</span></span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">heightAnchor</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">constraint</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">equalToConstant</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> </span><span data-diff-span=""><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7">42</span></span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">,</span></div><div data-line="341" data-line-type="change-deletion" data-line-index="478,452"><span data-diff-span=""><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> jumpForwardButton.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">widthAnchor</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">constraint</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">equalToConstant</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 36</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">,</span></span></div><div data-line="342" data-line-type="change-deletion" data-line-index="479,453"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> </span><span data-diff-span=""><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">jumpForwardButton.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">heightAnchor</span></span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">constraint</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">equalToConstant</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> </span><span data-diff-span=""><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7">36</span></span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">,</span></div><div data-line="343" data-line-type="change-deletion" data-line-index="480,454"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> </span><span data-diff-span=""><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">audioButton.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">widthAnchor</span></span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">constraint</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">equalToConstant</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> </span><span data-diff-span=""><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7">36</span></span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">,</span></div><div data-line="344" data-line-type="change-deletion" data-line-index="481,455"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> </span><span data-diff-span=""><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">audioButton.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">heightAnchor</span></span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">constraint</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">equalToConstant</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> </span><span data-diff-span=""><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7">36</span></span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">,</span></div><div data-content-buffer="" data-buffer-size="5" style="grid-row: span 5;min-height:calc(5 * 1lh)"></div><div data-line="345" data-alt-line="453" data-line-type="context" data-line-index="495,461"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> playbackCluster.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">centerXAnchor</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">constraint</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">equalTo</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> controlRow.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">centerXAnchor</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">,</span></div><div data-line="346" data-line-type="change-deletion" data-line-index="496,462"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> captionsButton.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">widthAnchor</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">constraint</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">equalToConstant</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> </span><span data-diff-span=""><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7">36</span></span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">,</span></div><div data-line="347" data-line-type="change-deletion" data-line-index="497,463"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> captionsButton.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">heightAnchor</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">constraint</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">equalToConstant</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> </span><span data-diff-span=""><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7">36</span></span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="348" data-alt-line="456" data-line-type="context" data-line-index="500,464"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> ])</span></div><div data-line="349" data-alt-line="457" data-line-type="context" data-line-index="501,465"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> }</span></div><div data-line="350" data-alt-line="458" data-line-type="context" data-line-index="502,466">
|
|
</div><div data-line="351" data-alt-line="459" data-line-type="context" data-line-index="503,467"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE"> func</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> showFailure</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">_</span><span style="--diffs-token-dark:#A3A3A3;--diffs-token-light:#636363"> error</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">: </span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C">Error</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-content-buffer="" data-buffer-size="1" style="grid-row: span 1;min-height:calc(1 * 1lh)"></div><div data-line="352" data-alt-line="461" data-line-type="context" data-line-index="505,469"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> loadingView.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">stopAnimating</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span></div><div data-line="353" data-line-type="change-deletion" data-line-index="506,470"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> </span><span data-diff-span=""><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">loadingView</span></span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">isHidden</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> true</span></div><div data-line="354" data-line-type="change-deletion" data-line-index="507,471"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> </span><span data-diff-span=""><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">failureLabel.text</span></span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> </span><span data-diff-span=""><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">"Native playback could not start.</span><span style="--diffs-token-dark:#61D5C0;--diffs-token-light:#16A994">\n</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">\(</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">error.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">localizedDescription</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">)</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">"</span></span></div><div data-line="355" data-line-type="change-deletion" data-line-index="508,472"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> </span><span data-diff-span=""><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">failureLabel.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">isHidden</span></span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> false</span></div><div data-content-buffer="" data-buffer-size="4" style="grid-row: span 4;min-height:calc(4 * 1lh)"></div><div data-line="356" data-alt-line="469" data-line-type="context" data-line-index="516,477"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">#</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">if</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> DEBUG</span></div><div data-line="357" data-alt-line="470" data-line-type="context" data-line-index="517,478"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> print</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">"[DreamioNativePlayer] error=</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">\(</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">URLRedactor.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">redactedURLString</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">error.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">localizedDescription</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">)</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">"</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="358" data-alt-line="471" data-line-type="context" data-line-index="518,479"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">#</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">endif</span></div><div data-line="359" data-alt-line="472" data-line-type="context" data-line-index="519,480"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-line="360" data-alt-line="473" data-line-type="context" data-line-index="520,481">
|
|
</div><div data-content-buffer="" data-buffer-size="8" style="grid-row: span 8;min-height:calc(8 * 1lh)"></div><div data-line="361" data-alt-line="482" data-line-type="context" data-line-index="529,490"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> @</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">objc</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE"> func</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> close</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-line="362" data-alt-line="483" data-line-type="context" data-line-index="530,491"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> dismiss</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">animated</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> true</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="363" data-alt-line="484" data-line-type="context" data-line-index="531,492"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-line="364" data-alt-line="485" data-line-type="context" data-line-index="532,493">
|
|
</div><div data-line="365" data-alt-line="486" data-line-type="context" data-line-index="533,494"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> @</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">objc</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE"> func</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> togglePlayPause</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-line="366" data-alt-line="487" data-line-type="context" data-line-index="534,495"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> backend.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">togglePlayPause</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span></div><div data-content-buffer="" data-buffer-size="1" style="grid-row: span 1;min-height:calc(1 * 1lh)"></div><div data-line="367" data-alt-line="489" data-line-type="context" data-line-index="536,497"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> revealControls</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span></div><div data-line="368" data-alt-line="490" data-line-type="context" data-line-index="537,498"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-line="369" data-alt-line="491" data-line-type="context" data-line-index="538,499">
|
|
</div><div data-line="370" data-alt-line="492" data-line-type="context" data-line-index="539,500"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> @</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">objc</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE"> func</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> jumpBack</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-line="371" data-alt-line="493" data-line-type="context" data-line-index="540,501"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> backend.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">jump</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">by</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> -15</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-content-buffer="" data-buffer-size="1" style="grid-row: span 1;min-height:calc(1 * 1lh)"></div><div data-line="372" data-alt-line="495" data-line-type="context" data-line-index="542,503"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> revealControls</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span></div><div data-line="373" data-alt-line="496" data-line-type="context" data-line-index="543,504"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-line="374" data-alt-line="497" data-line-type="context" data-line-index="544,505">
|
|
</div><div data-line="375" data-alt-line="498" data-line-type="context" data-line-index="545,506"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> @</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">objc</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE"> func</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> jumpForward</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-line="376" data-alt-line="499" data-line-type="context" data-line-index="546,507"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> backend.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">jump</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">by</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 15</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-content-buffer="" data-buffer-size="1" style="grid-row: span 1;min-height:calc(1 * 1lh)"></div><div data-line="377" data-alt-line="501" data-line-type="context" data-line-index="548,509"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> revealControls</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span></div><div data-line="378" data-alt-line="502" data-line-type="context" data-line-index="549,510"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-line="379" data-alt-line="503" data-line-type="context" data-line-index="550,511">
|
|
</div><div data-line="380" data-alt-line="504" data-line-type="context" data-line-index="551,512"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> @</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">objc</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE"> func</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> scrubbingStarted</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-line="381" data-alt-line="505" data-line-type="context" data-line-index="552,513"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> isScrubbing </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> true</span></div><div data-line="382" data-alt-line="506" data-line-type="context" data-line-index="553,514"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> controlsTimer</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">?</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">invalidate</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span></div><div data-content-buffer="" data-buffer-size="7" style="grid-row: span 7;min-height:calc(7 * 1lh)"></div><div data-line="383" data-alt-line="514" data-line-type="context" data-line-index="561,522"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-line="384" data-alt-line="515" data-line-type="context" data-line-index="562,523">
|
|
</div><div data-line="385" data-alt-line="516" data-line-type="context" data-line-index="563,524"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> @</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">objc</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE"> func</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> scrubberChanged</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-line="386" data-line-type="change-deletion" data-line-index="564,525"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> </span><span data-diff-span=""><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">elapsedLabel.text </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> PlaybackTimeFormatter.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">label</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">for</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> TimeInterval</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">scrubber.value</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></span><span data-diff-span=""><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> *</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> backend.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">duration</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></span></div><div data-line="387" data-alt-line="518" data-line-type="context" data-line-index="566,526"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-line="388" data-alt-line="519" data-line-type="context" data-line-index="567,527">
|
|
</div><div data-line="389" data-alt-line="520" data-line-type="context" data-line-index="568,528"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> @</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">objc</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE"> func</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> scrubbingEnded</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-line="390" data-alt-line="521" data-line-type="context" data-line-index="569,529"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> backend.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">seek</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">to</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> scrubber.value</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="391" data-alt-line="522" data-line-type="context" data-line-index="570,530"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> isScrubbing </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> false</span></div><div data-content-buffer="" data-buffer-size="6" style="grid-row: span 6;min-height:calc(6 * 1lh)"></div><div data-line="392" data-alt-line="529" data-line-type="context" data-line-index="577,537"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> revealControls</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span></div><div data-line="393" data-alt-line="530" data-line-type="context" data-line-index="578,538"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-line="394" data-alt-line="531" data-line-type="context" data-line-index="579,539">
|
|
</div><div data-content-buffer="" data-buffer-size="10" style="grid-row: span 10;min-height:calc(10 * 1lh)"></div><div data-line="395" data-alt-line="542" data-line-type="context" data-line-index="590,550"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> @</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">objc</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE"> func</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> toggleControlsVisibility</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-line="396" data-alt-line="543" data-line-type="context" data-line-index="591,551"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> if</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> controlsContainer.alpha </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"><</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 1</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-line="397" data-alt-line="544" data-line-type="context" data-line-index="592,552"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> revealControls</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">30 unmodified lines</span></div></div></div><div data-line="428" data-alt-line="575" data-line-type="context" data-line-index="623,583"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> }</span></div><div data-line="429" data-alt-line="576" data-line-type="context" data-line-index="624,584">
|
|
</div><div data-line="430" data-alt-line="577" data-line-type="context" data-line-index="625,585"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> delayActions </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> UIMenu</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span></div><div data-line="431" data-line-type="change-deletion" data-line-index="626,586"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> title</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "Delay"</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">,</span></div><div data-line="432" data-alt-line="579" data-line-type="context" data-line-index="628,587"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> options</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> .</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">displayInline</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">,</span></div><div data-line="433" data-alt-line="580" data-line-type="context" data-line-index="629,588"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> children</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> [</span></div><div data-line="434" data-alt-line="581" data-line-type="context" data-line-index="630,589"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> UIAction</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">title</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "Decrease 0.5s"</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> [</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">weak</span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C"> self</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">] _ </span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">in</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">6 unmodified lines</span></div></div></div><div data-line="441" data-alt-line="588" data-line-type="context" data-line-index="637,596"><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C"> self</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">?</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">captionsMenuSignature</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> nil</span></div><div data-line="442" data-alt-line="589" data-line-type="context" data-line-index="638,597"><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C"> self</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">?</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">refreshControls</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span></div><div data-line="443" data-alt-line="590" data-line-type="context" data-line-index="639,598"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> },</span></div><div data-content-buffer="" data-buffer-size="6" style="grid-row: span 6;min-height:calc(6 * 1lh)"></div><div data-line="444" data-alt-line="597" data-line-type="context" data-line-index="646,605"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> UIAction</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span></div><div data-line="445" data-alt-line="598" data-line-type="context" data-line-index="647,606"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> title</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "Current: </span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">\(</span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C">String</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">format</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "%.1fs"</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, backend.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">subtitleDelay</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">)</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">"</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">,</span></div><div data-line="446" data-alt-line="599" data-line-type="context" data-line-index="648,607"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> attributes</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> .</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">disabled</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">1 unmodified line</span></div></div></div><div data-line="448" data-alt-line="601" data-line-type="context" data-line-index="650,609"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> ]</span></div><div data-line="449" data-alt-line="602" data-line-type="context" data-line-index="651,610"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> )</span></div><div data-line="450" data-alt-line="603" data-line-type="context" data-line-index="652,611">
|
|
</div><div data-line="451" data-line-type="change-deletion" data-line-index="653,612"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> return</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> UIMenu</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">title</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "</span><span data-diff-span=""><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">Captions</span></span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">"</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, children</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> trackActions </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">+</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> [delayActions]</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="452" data-alt-line="605" data-line-type="context" data-line-index="655,613"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> }</span></div><div data-line="453" data-alt-line="606" data-line-type="context" data-line-index="656,614">
|
|
</div><div data-line="454" data-alt-line="607" data-line-type="context" data-line-index="657,615"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE"> func</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> audioMenu</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> -></span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> UIMenu </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">{</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">23 unmodified lines</span></div></div></div><div data-line="478" data-alt-line="631" data-line-type="context" data-line-index="681,639"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> }</span></div><div data-line="479" data-alt-line="632" data-line-type="context" data-line-index="682,640"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> }</span></div><div data-line="480" data-alt-line="633" data-line-type="context" data-line-index="683,641">
|
|
</div><div data-line="481" data-line-type="change-deletion" data-line-index="684,642"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> return</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> UIMenu</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">title</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "Audio"</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, children</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> trackActions</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="482" data-alt-line="635" data-line-type="context" data-line-index="686,643"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> }</span></div><div data-line="483" data-alt-line="636" data-line-type="context" data-line-index="687,644">
|
|
</div><div data-line="484" data-alt-line="637" data-line-type="context" data-line-index="688,645"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE"> func</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> startProgressUpdates</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">14 unmodified lines</span></div></div></div><div data-line="499" data-alt-line="652" data-line-type="context" data-line-index="703,660"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> updateCaptionsMenuIfNeeded</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">subtitleTracks</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> subtitleTracks</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="500" data-alt-line="653" data-line-type="context" data-line-index="704,661"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> elapsedLabel.text </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> PlaybackTimeFormatter.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">label</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">for</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> backend.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">currentTime</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="501" data-alt-line="654" data-line-type="context" data-line-index="705,662"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> remainingLabel.text </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "-</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">\(</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">PlaybackTimeFormatter.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">label</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">for</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> backend.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">remainingTime</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">)</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">"</span></div><div data-content-buffer="" data-buffer-size="1" style="grid-row: span 1;min-height:calc(1 * 1lh)"></div><div data-line="502" data-alt-line="656" data-line-type="context" data-line-index="707,664"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> if</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> !</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">isScrubbing </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">{</span></div><div data-line="503" data-alt-line="657" data-line-type="context" data-line-index="708,665"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> scrubber.value </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> backend.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">position</span></div><div data-line="504" data-alt-line="658" data-line-type="context" data-line-index="709,666"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">9 unmodified lines</span></div></div></div><div data-line="514" data-alt-line="668" data-line-type="context" data-line-index="719,676"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> hasSelectableTrack </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> AudioOptionMapper.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">options</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">from</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> audioTracks</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.count </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">></span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 1</span></div><div data-line="515" data-alt-line="669" data-line-type="context" data-line-index="720,677"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> audioButton.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">isEnabled</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> hasSelectableTrack</span></div><div data-line="516" data-alt-line="670" data-line-type="context" data-line-index="721,678"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> audioButton.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">alpha</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> hasSelectableTrack </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">?</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 1</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> :</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 0.45</span></div><div data-content-buffer="" data-buffer-size="1" style="grid-row: span 1;min-height:calc(1 * 1lh)"></div><div data-line="517" data-alt-line="672" data-line-type="context" data-line-index="723,680"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> guard</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> signature </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">!=</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> audioMenuSignature </span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">else</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-line="518" data-alt-line="673" data-line-type="context" data-line-index="724,681"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> return</span></div><div data-line="519" data-alt-line="674" data-line-type="context" data-line-index="725,682"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">14 unmodified lines</span></div></div></div><div data-line="534" data-alt-line="689" data-line-type="context" data-line-index="740,697"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> )</span></div><div data-line="535" data-alt-line="690" data-line-type="context" data-line-index="741,698"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> hasSelectableTrack </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> subtitleTracks.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">contains</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C"> $0</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">id</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> >=</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 0</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-line="536" data-alt-line="691" data-line-type="context" data-line-index="742,699"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> captionsButton.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">isEnabled</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> hasSelectableTrack</span></div><div data-content-buffer="" data-buffer-size="2" style="grid-row: span 2;min-height:calc(2 * 1lh)"></div><div data-line="537" data-alt-line="694" data-line-type="context" data-line-index="745,702"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> guard</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> signature </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">!=</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> captionsMenuSignature </span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">else</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-line="538" data-alt-line="695" data-line-type="context" data-line-index="746,703"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> return</span></div><div data-line="539" data-alt-line="696" data-line-type="context" data-line-index="747,704"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">27 unmodified lines</span></div></div></div><div data-line="567" data-alt-line="724" data-line-type="context" data-line-index="775,732"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE"> func</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> revealControls</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-line="568" data-alt-line="725" data-line-type="context" data-line-index="776,733"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> controlsContainer.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">isUserInteractionEnabled</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> true</span></div><div data-line="569" data-alt-line="726" data-line-type="context" data-line-index="777,734"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> closeButton.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">isUserInteractionEnabled</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> true</span></div><div data-line="570" data-line-type="change-deletion" data-line-index="778,735"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> </span><span data-diff-span=""><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">UIView.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">animate</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">withDuration</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 0.18</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> </span></span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">{</span></div><div data-line="571" data-alt-line="728" data-line-type="context" data-line-index="780,736"><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C"> self</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">controlsContainer</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">alpha</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 1</span></div><div data-line="572" data-alt-line="729" data-line-type="context" data-line-index="781,737"><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C"> self</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">closeButton</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">alpha</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 1</span></div><div data-content-buffer="" data-buffer-size="7" style="grid-row: span 7;min-height:calc(7 * 1lh)"></div><div data-line="573" data-alt-line="737" data-line-type="context" data-line-index="789,745"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-line="574" data-alt-line="738" data-line-type="context" data-line-index="790,746"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> scheduleControlsHide</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span></div><div data-line="575" data-alt-line="739" data-line-type="context" data-line-index="791,747"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-line="576" data-alt-line="740" data-line-type="context" data-line-index="792,748">
|
|
</div><div data-line="577" data-alt-line="741" data-line-type="context" data-line-index="793,749"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE"> func</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> hideControls</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-content-buffer="" data-buffer-size="1" style="grid-row: span 1;min-height:calc(1 * 1lh)"></div><div data-line="578" data-alt-line="743" data-line-type="context" data-line-index="795,751"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> controlsContainer.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">isUserInteractionEnabled</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> false</span></div><div data-line="579" data-alt-line="744" data-line-type="context" data-line-index="796,752"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> closeButton.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">isUserInteractionEnabled</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> false</span></div><div data-line="580" data-line-type="change-deletion" data-line-index="797,753"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> UIView.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">animate</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">withDuration</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 0.</span><span data-diff-span=""><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7">24</span></span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-line="581" data-alt-line="746" data-line-type="context" data-line-index="799,754"><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C"> self</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">controlsContainer</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">alpha</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 0</span></div><div data-line="582" data-alt-line="747" data-line-type="context" data-line-index="800,755"><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C"> self</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">closeButton</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">alpha</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 0</span></div><div data-line="583" data-alt-line="748" data-line-type="context" data-line-index="801,756"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">1 unmodified line</span></div></div></div><div data-line="585" data-alt-line="750" data-line-type="context" data-line-index="803,758">
|
|
</div><div data-line="586" data-alt-line="751" data-line-type="context" data-line-index="804,759"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE"> func</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> scheduleControlsHide</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-line="587" data-alt-line="752" data-line-type="context" data-line-index="805,760"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> controlsTimer</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">?</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">invalidate</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span></div><div data-line="588" data-line-type="change-deletion" data-line-index="806,761"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> guard</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> backend.isPlaying </span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">else</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-line="589" data-alt-line="754" data-line-type="context" data-line-index="808,762"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> return</span></div><div data-line="590" data-alt-line="755" data-line-type="context" data-line-index="809,763"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-line="591" data-line-type="change-deletion" data-line-index="810,764"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> controlsTimer </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> Timer.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">scheduledTimer</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">withTimeInterval</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> </span><span data-diff-span=""><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7">3</span></span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, repeats</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> false</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> [</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">weak</span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C"> self</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">] _ </span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">in</span></div><div data-line="592" data-alt-line="757" data-line-type="context" data-line-index="812,765"><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C"> self</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">?</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">hideControls</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span></div><div data-line="593" data-alt-line="758" data-line-type="context" data-line-index="813,766"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-line="594" data-alt-line="759" data-line-type="context" data-line-index="814,767"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-line="595" data-alt-line="760" data-line-type="context" data-line-index="815,768">
|
|
</div><div data-line="596" data-line-type="change-deletion" data-line-index="816,769"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> </span><span data-diff-span=""><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">static</span><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE"> </span></span><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE">func</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> </span><span data-diff-span=""><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">iconButton</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">systemName</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">: </span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C">String</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">, </span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">label</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">: </span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C">String</span></span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> </span><span data-diff-span=""><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">-></span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> UIButton </span></span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">{</span></div><div data-content-buffer="" data-buffer-size="101" style="grid-row: span 101;min-height:calc(101 * 1lh)"></div><div data-line="597" data-alt-line="863" data-line-type="context" data-line-index="919,871"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> button </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> UIButton</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">type</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> .</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">system</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="598" data-alt-line="864" data-line-type="context" data-line-index="920,872"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> button.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">translatesAutoresizingMaskIntoConstraints</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> false</span></div><div data-line="599" data-line-type="change-deletion" data-line-index="921,873"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> </span><span data-diff-span=""><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">button.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">setImage</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">UIImage</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">systemName</span></span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> </span><span data-diff-span=""><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">systemName</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, </span><span data-diff-span=""><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">for</span></span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> .</span><span data-diff-span=""><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">normal</span></span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-content-buffer="" data-buffer-size="1" style="grid-row: span 1;min-height:calc(1 * 1lh)"></div><div data-line="600" data-alt-line="867" data-line-type="context" data-line-index="924,875"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> button.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">tintColor</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> .</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">white</span></div><div data-line="601" data-line-type="change-deletion" data-line-index="925,876"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> button.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">backgroundColor</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> UIColor.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">white</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">withAlphaComponent</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7">0.</span><span data-diff-span=""><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7">12</span></span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="602" data-line-type="change-deletion" data-line-index="926,877"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> button.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">layer</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">cornerRadius</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> </span><span data-diff-span=""><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7">18</span></span></div><div data-line="603" data-alt-line="870" data-line-type="context" data-line-index="929,878"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> button.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">layer</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">borderColor</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> UIColor.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">white</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">withAlphaComponent</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7">0.16</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">cgColor</span></div><div data-line="604" data-alt-line="871" data-line-type="context" data-line-index="930,879"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> button.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">layer</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">borderWidth</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 1</span></div><div data-line="605" data-alt-line="872" data-line-type="context" data-line-index="931,880"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> button.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">accessibilityLabel</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> label</span></div><div data-line="606" data-alt-line="873" data-line-type="context" data-line-index="932,881"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> return</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> button</span></div><div data-line="607" data-alt-line="874" data-line-type="context" data-line-index="933,882"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-line="608" data-alt-line="875" data-line-type="context" data-line-index="934,883">
|
|
</div><div data-content-buffer="" data-buffer-size="14" style="grid-row: span 14;min-height:calc(14 * 1lh)"></div><div data-line="609" data-alt-line="890" data-line-type="context" data-line-index="949,898"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> static</span><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE"> func</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> scrubberThumbImage</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">diameter</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">: CGFloat</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> -></span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> UIImage </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">{</span></div><div data-line="610" data-alt-line="891" data-line-type="context" data-line-index="950,899"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> format </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> UIGraphicsImageRendererFormat</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span></div><div data-line="611" data-alt-line="892" data-line-type="context" data-line-index="951,900"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> format.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">scale</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> UIScreen.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">main</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">scale</span></div></div></code><code data-code="" data-container-size="" data-additions=""><div data-gutter="" style="grid-row: span 595"><div data-separator="line-info" data-separator-first=""><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">10 unmodified lines</span></div></div></div><div data-line-type="context" data-column-number="11" data-line-index="10,10"><span data-line-number-content="">11</span></div><div data-line-type="context" data-column-number="12" data-line-index="11,11"><span data-line-number-content="">12</span></div><div data-line-type="context" data-column-number="13" data-line-index="12,12"><span data-line-number-content="">13</span></div><div data-line-type="change-addition" data-column-number="14" data-line-index="13,13"><span data-line-number-content="">14</span></div><div data-line-type="change-addition" data-column-number="15" data-line-index="14,14"><span data-line-number-content="">15</span></div><div data-line-type="context" data-column-number="16" data-line-index="15,15"><span data-line-number-content="">16</span></div><div data-line-type="context" data-column-number="17" data-line-index="16,16"><span data-line-number-content="">17</span></div><div data-line-type="change-addition" data-column-number="18" data-line-index="17,17"><span data-line-number-content="">18</span></div><div data-line-type="change-addition" data-column-number="19" data-line-index="18,18"><span data-line-number-content="">19</span></div><div data-line-type="change-addition" data-column-number="20" data-line-index="19,19"><span data-line-number-content="">20</span></div><div data-line-type="change-addition" data-column-number="21" data-line-index="20,20"><span data-line-number-content="">21</span></div><div data-line-type="change-addition" data-column-number="22" data-line-index="21,21"><span data-line-number-content="">22</span></div><div data-line-type="change-addition" data-column-number="23" data-line-index="22,22"><span data-line-number-content="">23</span></div><div data-line-type="change-addition" data-column-number="24" data-line-index="23,23"><span data-line-number-content="">24</span></div><div data-line-type="change-addition" data-column-number="25" data-line-index="24,24"><span data-line-number-content="">25</span></div><div data-line-type="change-addition" data-column-number="26" data-line-index="25,25"><span data-line-number-content="">26</span></div><div data-line-type="change-addition" data-column-number="27" data-line-index="26,26"><span data-line-number-content="">27</span></div><div data-line-type="change-addition" data-column-number="28" data-line-index="27,27"><span data-line-number-content="">28</span></div><div data-line-type="change-addition" data-column-number="29" data-line-index="28,28"><span data-line-number-content="">29</span></div><div data-line-type="change-addition" data-column-number="30" data-line-index="29,29"><span data-line-number-content="">30</span></div><div data-line-type="change-addition" data-column-number="31" data-line-index="30,30"><span data-line-number-content="">31</span></div><div data-line-type="change-addition" data-column-number="32" data-line-index="31,31"><span data-line-number-content="">32</span></div><div data-line-type="change-addition" data-column-number="33" data-line-index="32,32"><span data-line-number-content="">33</span></div><div data-line-type="change-addition" data-column-number="34" data-line-index="33,33"><span data-line-number-content="">34</span></div><div data-line-type="change-addition" data-column-number="35" data-line-index="34,34"><span data-line-number-content="">35</span></div><div data-line-type="change-addition" data-column-number="36" data-line-index="35,35"><span data-line-number-content="">36</span></div><div data-line-type="change-addition" data-column-number="37" data-line-index="36,36"><span data-line-number-content="">37</span></div><div data-line-type="change-addition" data-column-number="38" data-line-index="37,37"><span data-line-number-content="">38</span></div><div data-line-type="change-addition" data-column-number="39" data-line-index="38,38"><span data-line-number-content="">39</span></div><div data-line-type="change-addition" data-column-number="40" data-line-index="39,39"><span data-line-number-content="">40</span></div><div data-line-type="change-addition" data-column-number="41" data-line-index="40,40"><span data-line-number-content="">41</span></div><div data-line-type="change-addition" data-column-number="42" data-line-index="41,41"><span data-line-number-content="">42</span></div><div data-line-type="context" data-column-number="43" data-line-index="42,42"><span data-line-number-content="">43</span></div><div data-line-type="context" data-column-number="44" data-line-index="43,43"><span data-line-number-content="">44</span></div><div data-line-type="context" data-column-number="45" data-line-index="44,44"><span data-line-number-content="">45</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">7 unmodified lines</span></div></div></div><div data-line-type="context" data-column-number="53" data-line-index="52,52"><span data-line-number-content="">53</span></div><div data-line-type="context" data-column-number="54" data-line-index="53,53"><span data-line-number-content="">54</span></div><div data-line-type="context" data-column-number="55" data-line-index="54,54"><span data-line-number-content="">55</span></div><div data-line-type="change-addition" data-column-number="56" data-line-index="57,55"><span data-line-number-content="">56</span></div><div data-line-type="change-addition" data-column-number="57" data-line-index="58,56"><span data-line-number-content="">57</span></div><div data-line-type="change-addition" data-column-number="58" data-line-index="59,57"><span data-line-number-content="">58</span></div><div data-line-type="change-addition" data-column-number="59" data-line-index="60,58"><span data-line-number-content="">59</span></div><div data-line-type="context" data-column-number="60" data-line-index="61,59"><span data-line-number-content="">60</span></div><div data-line-type="change-addition" data-column-number="61" data-line-index="62,60"><span data-line-number-content="">61</span></div><div data-line-type="context" data-column-number="62" data-line-index="63,61"><span data-line-number-content="">62</span></div><div data-line-type="context" data-column-number="63" data-line-index="64,62"><span data-line-number-content="">63</span></div><div data-line-type="context" data-column-number="64" data-line-index="65,63"><span data-line-number-content="">64</span></div><div data-line-type="change-addition" data-column-number="65" data-line-index="76,64"><span data-line-number-content="">65</span></div><div data-gutter-buffer="buffer" data-buffer-size="9" style="grid-row: span 9;min-height:calc(9 * 1lh);"></div><div data-line-type="context" data-column-number="66" data-line-index="77,74"><span data-line-number-content="">66</span></div><div data-line-type="context" data-column-number="67" data-line-index="78,75"><span data-line-number-content="">67</span></div><div data-line-type="context" data-column-number="68" data-line-index="79,76"><span data-line-number-content="">68</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">2 unmodified lines</span></div></div></div><div data-line-type="context" data-column-number="71" data-line-index="82,79"><span data-line-number-content="">71</span></div><div data-line-type="context" data-column-number="72" data-line-index="83,80"><span data-line-number-content="">72</span></div><div data-line-type="context" data-column-number="73" data-line-index="84,81"><span data-line-number-content="">73</span></div><div data-line-type="change-addition" data-column-number="74" data-line-index="86,82"><span data-line-number-content="">74</span></div><div data-line-type="context" data-column-number="75" data-line-index="87,83"><span data-line-number-content="">75</span></div><div data-line-type="context" data-column-number="76" data-line-index="88,84"><span data-line-number-content="">76</span></div><div data-line-type="change-addition" data-column-number="77" data-line-index="91,85"><span data-line-number-content="">77</span></div><div data-line-type="change-addition" data-column-number="78" data-line-index="92,86"><span data-line-number-content="">78</span></div><div data-line-type="change-addition" data-column-number="79" data-line-index="93,87"><span data-line-number-content="">79</span></div><div data-line-type="change-addition" data-column-number="80" data-line-index="94,88"><span data-line-number-content="">80</span></div><div data-line-type="context" data-column-number="81" data-line-index="95,89"><span data-line-number-content="">81</span></div><div data-line-type="context" data-column-number="82" data-line-index="96,90"><span data-line-number-content="">82</span></div><div data-line-type="context" data-column-number="83" data-line-index="97,91"><span data-line-number-content="">83</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">27 unmodified lines</span></div></div></div><div data-line-type="context" data-column-number="111" data-line-index="125,119"><span data-line-number-content="">111</span></div><div data-line-type="context" data-column-number="112" data-line-index="126,120"><span data-line-number-content="">112</span></div><div data-line-type="context" data-column-number="113" data-line-index="127,121"><span data-line-number-content="">113</span></div><div data-line-type="change-addition" data-column-number="114" data-line-index="129,122"><span data-line-number-content="">114</span></div><div data-line-type="context" data-column-number="115" data-line-index="130,123"><span data-line-number-content="">115</span></div><div data-line-type="context" data-column-number="116" data-line-index="131,124"><span data-line-number-content="">116</span></div><div data-line-type="context" data-column-number="117" data-line-index="132,125"><span data-line-number-content="">117</span></div><div data-line-type="context" data-column-number="118" data-line-index="133,126"><span data-line-number-content="">118</span></div><div data-line-type="change-addition" data-column-number="119" data-line-index="134,127"><span data-line-number-content="">119</span></div><div data-line-type="change-addition" data-column-number="120" data-line-index="135,128"><span data-line-number-content="">120</span></div><div data-line-type="change-addition" data-column-number="121" data-line-index="136,129"><span data-line-number-content="">121</span></div><div data-line-type="change-addition" data-column-number="122" data-line-index="137,130"><span data-line-number-content="">122</span></div><div data-line-type="change-addition" data-column-number="123" data-line-index="138,131"><span data-line-number-content="">123</span></div><div data-line-type="change-addition" data-column-number="124" data-line-index="139,132"><span data-line-number-content="">124</span></div><div data-line-type="change-addition" data-column-number="125" data-line-index="140,133"><span data-line-number-content="">125</span></div><div data-line-type="change-addition" data-column-number="126" data-line-index="141,134"><span data-line-number-content="">126</span></div><div data-line-type="change-addition" data-column-number="127" data-line-index="142,135"><span data-line-number-content="">127</span></div><div data-line-type="change-addition" data-column-number="128" data-line-index="143,136"><span data-line-number-content="">128</span></div><div data-line-type="change-addition" data-column-number="129" data-line-index="144,137"><span data-line-number-content="">129</span></div><div data-line-type="change-addition" data-column-number="130" data-line-index="145,138"><span data-line-number-content="">130</span></div><div data-line-type="change-addition" data-column-number="131" data-line-index="146,139"><span data-line-number-content="">131</span></div><div data-line-type="change-addition" data-column-number="132" data-line-index="147,140"><span data-line-number-content="">132</span></div><div data-line-type="change-addition" data-column-number="133" data-line-index="148,141"><span data-line-number-content="">133</span></div><div data-line-type="change-addition" data-column-number="134" data-line-index="149,142"><span data-line-number-content="">134</span></div><div data-line-type="change-addition" data-column-number="135" data-line-index="150,143"><span data-line-number-content="">135</span></div><div data-line-type="change-addition" data-column-number="136" data-line-index="151,144"><span data-line-number-content="">136</span></div><div data-line-type="change-addition" data-column-number="137" data-line-index="152,145"><span data-line-number-content="">137</span></div><div data-line-type="change-addition" data-column-number="138" data-line-index="153,146"><span data-line-number-content="">138</span></div><div data-line-type="change-addition" data-column-number="139" data-line-index="154,147"><span data-line-number-content="">139</span></div><div data-line-type="change-addition" data-column-number="140" data-line-index="155,148"><span data-line-number-content="">140</span></div><div data-line-type="change-addition" data-column-number="141" data-line-index="156,149"><span data-line-number-content="">141</span></div><div data-line-type="change-addition" data-column-number="142" data-line-index="157,150"><span data-line-number-content="">142</span></div><div data-line-type="change-addition" data-column-number="143" data-line-index="158,151"><span data-line-number-content="">143</span></div><div data-line-type="change-addition" data-column-number="144" data-line-index="159,152"><span data-line-number-content="">144</span></div><div data-line-type="change-addition" data-column-number="145" data-line-index="160,153"><span data-line-number-content="">145</span></div><div data-line-type="change-addition" data-column-number="146" data-line-index="161,154"><span data-line-number-content="">146</span></div><div data-line-type="change-addition" data-column-number="147" data-line-index="162,155"><span data-line-number-content="">147</span></div><div data-line-type="change-addition" data-column-number="148" data-line-index="163,156"><span data-line-number-content="">148</span></div><div data-line-type="context" data-column-number="149" data-line-index="164,157"><span data-line-number-content="">149</span></div><div data-line-type="change-addition" data-column-number="150" data-line-index="167,158"><span data-line-number-content="">150</span></div><div data-line-type="change-addition" data-column-number="151" data-line-index="168,159"><span data-line-number-content="">151</span></div><div data-line-type="context" data-column-number="152" data-line-index="169,160"><span data-line-number-content="">152</span></div><div data-line-type="context" data-column-number="153" data-line-index="170,161"><span data-line-number-content="">153</span></div><div data-line-type="context" data-column-number="154" data-line-index="171,162"><span data-line-number-content="">154</span></div><div data-line-type="change-addition" data-column-number="155" data-line-index="172,163"><span data-line-number-content="">155</span></div><div data-line-type="change-addition" data-column-number="156" data-line-index="173,164"><span data-line-number-content="">156</span></div><div data-line-type="change-addition" data-column-number="157" data-line-index="174,165"><span data-line-number-content="">157</span></div><div data-line-type="context" data-column-number="158" data-line-index="175,166"><span data-line-number-content="">158</span></div><div data-line-type="context" data-column-number="159" data-line-index="176,167"><span data-line-number-content="">159</span></div><div data-line-type="context" data-column-number="160" data-line-index="177,168"><span data-line-number-content="">160</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">31 unmodified lines</span></div></div></div><div data-line-type="context" data-column-number="192" data-line-index="209,200"><span data-line-number-content="">192</span></div><div data-line-type="context" data-column-number="193" data-line-index="210,201"><span data-line-number-content="">193</span></div><div data-line-type="context" data-column-number="194" data-line-index="211,202"><span data-line-number-content="">194</span></div><div data-line-type="change-addition" data-column-number="195" data-line-index="215,203"><span data-line-number-content="">195</span></div><div data-line-type="change-addition" data-column-number="196" data-line-index="216,204"><span data-line-number-content="">196</span></div><div data-line-type="change-addition" data-column-number="197" data-line-index="217,205"><span data-line-number-content="">197</span></div><div data-line-type="change-addition" data-column-number="198" data-line-index="218,206"><span data-line-number-content="">198</span></div><div data-line-type="change-addition" data-column-number="199" data-line-index="219,207"><span data-line-number-content="">199</span></div><div data-line-type="change-addition" data-column-number="200" data-line-index="220,208"><span data-line-number-content="">200</span></div><div data-line-type="change-addition" data-column-number="201" data-line-index="221,209"><span data-line-number-content="">201</span></div><div data-line-type="change-addition" data-column-number="202" data-line-index="222,210"><span data-line-number-content="">202</span></div><div data-line-type="context" data-column-number="203" data-line-index="223,211"><span data-line-number-content="">203</span></div><div data-line-type="context" data-column-number="204" data-line-index="224,212"><span data-line-number-content="">204</span></div><div data-line-type="context" data-column-number="205" data-line-index="225,213"><span data-line-number-content="">205</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">67 unmodified lines</span></div></div></div><div data-line-type="context" data-column-number="273" data-line-index="293,281"><span data-line-number-content="">273</span></div><div data-line-type="context" data-column-number="274" data-line-index="294,282"><span data-line-number-content="">274</span></div><div data-line-type="context" data-column-number="275" data-line-index="295,283"><span data-line-number-content="">275</span></div><div data-line-type="change-addition" data-column-number="276" data-line-index="297,284"><span data-line-number-content="">276</span></div><div data-line-type="context" data-column-number="277" data-line-index="298,285"><span data-line-number-content="">277</span></div><div data-line-type="context" data-column-number="278" data-line-index="299,286"><span data-line-number-content="">278</span></div><div data-line-type="context" data-column-number="279" data-line-index="300,287"><span data-line-number-content="">279</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">22 unmodified lines</span></div></div></div><div data-line-type="context" data-column-number="302" data-line-index="323,310"><span data-line-number-content="">302</span></div><div data-line-type="context" data-column-number="303" data-line-index="324,311"><span data-line-number-content="">303</span></div><div data-line-type="context" data-column-number="304" data-line-index="325,312"><span data-line-number-content="">304</span></div><div data-line-type="change-addition" data-column-number="305" data-line-index="326,313"><span data-line-number-content="">305</span></div><div data-line-type="change-addition" data-column-number="306" data-line-index="327,314"><span data-line-number-content="">306</span></div><div data-line-type="change-addition" data-column-number="307" data-line-index="328,315"><span data-line-number-content="">307</span></div><div data-line-type="change-addition" data-column-number="308" data-line-index="329,316"><span data-line-number-content="">308</span></div><div data-line-type="change-addition" data-column-number="309" data-line-index="330,317"><span data-line-number-content="">309</span></div><div data-line-type="change-addition" data-column-number="310" data-line-index="331,318"><span data-line-number-content="">310</span></div><div data-line-type="change-addition" data-column-number="311" data-line-index="332,319"><span data-line-number-content="">311</span></div><div data-line-type="change-addition" data-column-number="312" data-line-index="333,320"><span data-line-number-content="">312</span></div><div data-line-type="change-addition" data-column-number="313" data-line-index="334,321"><span data-line-number-content="">313</span></div><div data-line-type="change-addition" data-column-number="314" data-line-index="335,322"><span data-line-number-content="">314</span></div><div data-line-type="context" data-column-number="315" data-line-index="336,323"><span data-line-number-content="">315</span></div><div data-line-type="context" data-column-number="316" data-line-index="337,324"><span data-line-number-content="">316</span></div><div data-line-type="context" data-column-number="317" data-line-index="338,325"><span data-line-number-content="">317</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">4 unmodified lines</span></div></div></div><div data-line-type="context" data-column-number="322" data-line-index="343,330"><span data-line-number-content="">322</span></div><div data-line-type="context" data-column-number="323" data-line-index="344,331"><span data-line-number-content="">323</span></div><div data-line-type="context" data-column-number="324" data-line-index="345,332"><span data-line-number-content="">324</span></div><div data-line-type="change-addition" data-column-number="325" data-line-index="346,333"><span data-line-number-content="">325</span></div><div data-line-type="context" data-column-number="326" data-line-index="347,334"><span data-line-number-content="">326</span></div><div data-line-type="change-addition" data-column-number="327" data-line-index="350,335"><span data-line-number-content="">327</span></div><div data-line-type="change-addition" data-column-number="328" data-line-index="351,336"><span data-line-number-content="">328</span></div><div data-line-type="change-addition" data-column-number="329" data-line-index="352,337"><span data-line-number-content="">329</span></div><div data-line-type="context" data-column-number="330" data-line-index="353,338"><span data-line-number-content="">330</span></div><div data-line-type="change-addition" data-column-number="331" data-line-index="354,339"><span data-line-number-content="">331</span></div><div data-line-type="context" data-column-number="332" data-line-index="355,340"><span data-line-number-content="">332</span></div><div data-line-type="change-addition" data-column-number="333" data-line-index="356,341"><span data-line-number-content="">333</span></div><div data-line-type="change-addition" data-column-number="334" data-line-index="357,342"><span data-line-number-content="">334</span></div><div data-line-type="change-addition" data-column-number="335" data-line-index="358,343"><span data-line-number-content="">335</span></div><div data-line-type="change-addition" data-column-number="336" data-line-index="359,344"><span data-line-number-content="">336</span></div><div data-line-type="context" data-column-number="337" data-line-index="360,345"><span data-line-number-content="">337</span></div><div data-line-type="context" data-column-number="338" data-line-index="361,346"><span data-line-number-content="">338</span></div><div data-line-type="change-addition" data-column-number="339" data-line-index="362,347"><span data-line-number-content="">339</span></div><div data-line-type="context" data-column-number="340" data-line-index="363,348"><span data-line-number-content="">340</span></div><div data-line-type="context" data-column-number="341" data-line-index="364,349"><span data-line-number-content="">341</span></div><div data-line-type="change-addition" data-column-number="342" data-line-index="365,350"><span data-line-number-content="">342</span></div><div data-line-type="change-addition" data-column-number="343" data-line-index="366,351"><span data-line-number-content="">343</span></div><div data-line-type="context" data-column-number="344" data-line-index="367,352"><span data-line-number-content="">344</span></div><div data-line-type="context" data-column-number="345" data-line-index="368,353"><span data-line-number-content="">345</span></div><div data-line-type="change-addition" data-column-number="346" data-line-index="370,354"><span data-line-number-content="">346</span></div><div data-line-type="change-addition" data-column-number="347" data-line-index="371,355"><span data-line-number-content="">347</span></div><div data-line-type="change-addition" data-column-number="348" data-line-index="372,356"><span data-line-number-content="">348</span></div><div data-line-type="context" data-column-number="349" data-line-index="373,357"><span data-line-number-content="">349</span></div><div data-line-type="context" data-column-number="350" data-line-index="374,358"><span data-line-number-content="">350</span></div><div data-line-type="context" data-column-number="351" data-line-index="375,359"><span data-line-number-content="">351</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">1 unmodified line</span></div></div></div><div data-line-type="context" data-column-number="353" data-line-index="377,361"><span data-line-number-content="">353</span></div><div data-line-type="context" data-column-number="354" data-line-index="378,362"><span data-line-number-content="">354</span></div><div data-line-type="context" data-column-number="355" data-line-index="379,363"><span data-line-number-content="">355</span></div><div data-line-type="change-addition" data-column-number="356" data-line-index="380,364"><span data-line-number-content="">356</span></div><div data-line-type="change-addition" data-column-number="357" data-line-index="381,365"><span data-line-number-content="">357</span></div><div data-line-type="change-addition" data-column-number="358" data-line-index="382,366"><span data-line-number-content="">358</span></div><div data-line-type="change-addition" data-column-number="359" data-line-index="383,367"><span data-line-number-content="">359</span></div><div data-line-type="change-addition" data-column-number="360" data-line-index="384,368"><span data-line-number-content="">360</span></div><div data-line-type="change-addition" data-column-number="361" data-line-index="385,369"><span data-line-number-content="">361</span></div><div data-line-type="change-addition" data-column-number="362" data-line-index="386,370"><span data-line-number-content="">362</span></div><div data-line-type="change-addition" data-column-number="363" data-line-index="387,371"><span data-line-number-content="">363</span></div><div data-line-type="context" data-column-number="364" data-line-index="388,372"><span data-line-number-content="">364</span></div><div data-line-type="context" data-column-number="365" data-line-index="389,373"><span data-line-number-content="">365</span></div><div data-line-type="context" data-column-number="366" data-line-index="390,374"><span data-line-number-content="">366</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">21 unmodified lines</span></div></div></div><div data-line-type="context" data-column-number="388" data-line-index="412,396"><span data-line-number-content="">388</span></div><div data-line-type="context" data-column-number="389" data-line-index="413,397"><span data-line-number-content="">389</span></div><div data-line-type="context" data-column-number="390" data-line-index="414,398"><span data-line-number-content="">390</span></div><div data-line-type="change-addition" data-column-number="391" data-line-index="415,399"><span data-line-number-content="">391</span></div><div data-line-type="change-addition" data-column-number="392" data-line-index="416,400"><span data-line-number-content="">392</span></div><div data-line-type="context" data-column-number="393" data-line-index="417,401"><span data-line-number-content="">393</span></div><div data-line-type="context" data-column-number="394" data-line-index="418,402"><span data-line-number-content="">394</span></div><div data-line-type="context" data-column-number="395" data-line-index="419,403"><span data-line-number-content="">395</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">5 unmodified lines</span></div></div></div><div data-line-type="context" data-column-number="401" data-line-index="425,409"><span data-line-number-content="">401</span></div><div data-line-type="context" data-column-number="402" data-line-index="426,410"><span data-line-number-content="">402</span></div><div data-line-type="context" data-column-number="403" data-line-index="427,411"><span data-line-number-content="">403</span></div><div data-line-type="change-addition" data-column-number="404" data-line-index="437,412"><span data-line-number-content="">404</span></div><div data-line-type="change-addition" data-column-number="405" data-line-index="438,413"><span data-line-number-content="">405</span></div><div data-line-type="change-addition" data-column-number="406" data-line-index="439,414"><span data-line-number-content="">406</span></div><div data-line-type="change-addition" data-column-number="407" data-line-index="440,415"><span data-line-number-content="">407</span></div><div data-line-type="change-addition" data-column-number="408" data-line-index="441,416"><span data-line-number-content="">408</span></div><div data-line-type="change-addition" data-column-number="409" data-line-index="442,417"><span data-line-number-content="">409</span></div><div data-line-type="change-addition" data-column-number="410" data-line-index="443,418"><span data-line-number-content="">410</span></div><div data-line-type="change-addition" data-column-number="411" data-line-index="444,419"><span data-line-number-content="">411</span></div><div data-line-type="change-addition" data-column-number="412" data-line-index="445,420"><span data-line-number-content="">412</span></div><div data-line-type="change-addition" data-column-number="413" data-line-index="446,421"><span data-line-number-content="">413</span></div><div data-line-type="change-addition" data-column-number="414" data-line-index="447,422"><span data-line-number-content="">414</span></div><div data-line-type="change-addition" data-column-number="415" data-line-index="448,423"><span data-line-number-content="">415</span></div><div data-line-type="change-addition" data-column-number="416" data-line-index="449,424"><span data-line-number-content="">416</span></div><div data-line-type="change-addition" data-column-number="417" data-line-index="450,425"><span data-line-number-content="">417</span></div><div data-line-type="change-addition" data-column-number="418" data-line-index="451,426"><span data-line-number-content="">418</span></div><div data-line-type="change-addition" data-column-number="419" data-line-index="452,427"><span data-line-number-content="">419</span></div><div data-line-type="change-addition" data-column-number="420" data-line-index="453,428"><span data-line-number-content="">420</span></div><div data-line-type="change-addition" data-column-number="421" data-line-index="454,429"><span data-line-number-content="">421</span></div><div data-line-type="change-addition" data-column-number="422" data-line-index="455,430"><span data-line-number-content="">422</span></div><div data-line-type="context" data-column-number="423" data-line-index="456,431"><span data-line-number-content="">423</span></div><div data-line-type="context" data-column-number="424" data-line-index="457,432"><span data-line-number-content="">424</span></div><div data-line-type="context" data-column-number="425" data-line-index="458,433"><span data-line-number-content="">425</span></div><div data-line-type="context" data-column-number="426" data-line-index="459,434"><span data-line-number-content="">426</span></div><div data-line-type="context" data-column-number="427" data-line-index="460,435"><span data-line-number-content="">427</span></div><div data-line-type="change-addition" data-column-number="428" data-line-index="462,436"><span data-line-number-content="">428</span></div><div data-line-type="context" data-column-number="429" data-line-index="463,437"><span data-line-number-content="">429</span></div><div data-line-type="context" data-column-number="430" data-line-index="464,438"><span data-line-number-content="">430</span></div><div data-line-type="context" data-column-number="431" data-line-index="465,439"><span data-line-number-content="">431</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">5 unmodified lines</span></div></div></div><div data-line-type="context" data-column-number="437" data-line-index="471,445"><span data-line-number-content="">437</span></div><div data-line-type="context" data-column-number="438" data-line-index="472,446"><span data-line-number-content="">438</span></div><div data-line-type="context" data-column-number="439" data-line-index="473,447"><span data-line-number-content="">439</span></div><div data-line-type="change-addition" data-column-number="440" data-line-index="482,448"><span data-line-number-content="">440</span></div><div data-line-type="change-addition" data-column-number="441" data-line-index="483,449"><span data-line-number-content="">441</span></div><div data-line-type="change-addition" data-column-number="442" data-line-index="484,450"><span data-line-number-content="">442</span></div><div data-line-type="change-addition" data-column-number="443" data-line-index="485,451"><span data-line-number-content="">443</span></div><div data-line-type="change-addition" data-column-number="444" data-line-index="486,452"><span data-line-number-content="">444</span></div><div data-line-type="change-addition" data-column-number="445" data-line-index="487,453"><span data-line-number-content="">445</span></div><div data-line-type="change-addition" data-column-number="446" data-line-index="488,454"><span data-line-number-content="">446</span></div><div data-line-type="change-addition" data-column-number="447" data-line-index="489,455"><span data-line-number-content="">447</span></div><div data-line-type="change-addition" data-column-number="448" data-line-index="490,456"><span data-line-number-content="">448</span></div><div data-line-type="change-addition" data-column-number="449" data-line-index="491,457"><span data-line-number-content="">449</span></div><div data-line-type="change-addition" data-column-number="450" data-line-index="492,458"><span data-line-number-content="">450</span></div><div data-line-type="change-addition" data-column-number="451" data-line-index="493,459"><span data-line-number-content="">451</span></div><div data-line-type="change-addition" data-column-number="452" data-line-index="494,460"><span data-line-number-content="">452</span></div><div data-line-type="context" data-column-number="453" data-line-index="495,461"><span data-line-number-content="">453</span></div><div data-line-type="change-addition" data-column-number="454" data-line-index="498,462"><span data-line-number-content="">454</span></div><div data-line-type="change-addition" data-column-number="455" data-line-index="499,463"><span data-line-number-content="">455</span></div><div data-line-type="context" data-column-number="456" data-line-index="500,464"><span data-line-number-content="">456</span></div><div data-line-type="context" data-column-number="457" data-line-index="501,465"><span data-line-number-content="">457</span></div><div data-line-type="context" data-column-number="458" data-line-index="502,466"><span data-line-number-content="">458</span></div><div data-line-type="context" data-column-number="459" data-line-index="503,467"><span data-line-number-content="">459</span></div><div data-line-type="change-addition" data-column-number="460" data-line-index="504,468"><span data-line-number-content="">460</span></div><div data-line-type="context" data-column-number="461" data-line-index="505,469"><span data-line-number-content="">461</span></div><div data-line-type="change-addition" data-column-number="462" data-line-index="509,470"><span data-line-number-content="">462</span></div><div data-line-type="change-addition" data-column-number="463" data-line-index="510,471"><span data-line-number-content="">463</span></div><div data-line-type="change-addition" data-column-number="464" data-line-index="511,472"><span data-line-number-content="">464</span></div><div data-line-type="change-addition" data-column-number="465" data-line-index="512,473"><span data-line-number-content="">465</span></div><div data-line-type="change-addition" data-column-number="466" data-line-index="513,474"><span data-line-number-content="">466</span></div><div data-line-type="change-addition" data-column-number="467" data-line-index="514,475"><span data-line-number-content="">467</span></div><div data-line-type="change-addition" data-column-number="468" data-line-index="515,476"><span data-line-number-content="">468</span></div><div data-line-type="context" data-column-number="469" data-line-index="516,477"><span data-line-number-content="">469</span></div><div data-line-type="context" data-column-number="470" data-line-index="517,478"><span data-line-number-content="">470</span></div><div data-line-type="context" data-column-number="471" data-line-index="518,479"><span data-line-number-content="">471</span></div><div data-line-type="context" data-column-number="472" data-line-index="519,480"><span data-line-number-content="">472</span></div><div data-line-type="context" data-column-number="473" data-line-index="520,481"><span data-line-number-content="">473</span></div><div data-line-type="change-addition" data-column-number="474" data-line-index="521,482"><span data-line-number-content="">474</span></div><div data-line-type="change-addition" data-column-number="475" data-line-index="522,483"><span data-line-number-content="">475</span></div><div data-line-type="change-addition" data-column-number="476" data-line-index="523,484"><span data-line-number-content="">476</span></div><div data-line-type="change-addition" data-column-number="477" data-line-index="524,485"><span data-line-number-content="">477</span></div><div data-line-type="change-addition" data-column-number="478" data-line-index="525,486"><span data-line-number-content="">478</span></div><div data-line-type="change-addition" data-column-number="479" data-line-index="526,487"><span data-line-number-content="">479</span></div><div data-line-type="change-addition" data-column-number="480" data-line-index="527,488"><span data-line-number-content="">480</span></div><div data-line-type="change-addition" data-column-number="481" data-line-index="528,489"><span data-line-number-content="">481</span></div><div data-line-type="context" data-column-number="482" data-line-index="529,490"><span data-line-number-content="">482</span></div><div data-line-type="context" data-column-number="483" data-line-index="530,491"><span data-line-number-content="">483</span></div><div data-line-type="context" data-column-number="484" data-line-index="531,492"><span data-line-number-content="">484</span></div><div data-line-type="context" data-column-number="485" data-line-index="532,493"><span data-line-number-content="">485</span></div><div data-line-type="context" data-column-number="486" data-line-index="533,494"><span data-line-number-content="">486</span></div><div data-line-type="context" data-column-number="487" data-line-index="534,495"><span data-line-number-content="">487</span></div><div data-line-type="change-addition" data-column-number="488" data-line-index="535,496"><span data-line-number-content="">488</span></div><div data-line-type="context" data-column-number="489" data-line-index="536,497"><span data-line-number-content="">489</span></div><div data-line-type="context" data-column-number="490" data-line-index="537,498"><span data-line-number-content="">490</span></div><div data-line-type="context" data-column-number="491" data-line-index="538,499"><span data-line-number-content="">491</span></div><div data-line-type="context" data-column-number="492" data-line-index="539,500"><span data-line-number-content="">492</span></div><div data-line-type="context" data-column-number="493" data-line-index="540,501"><span data-line-number-content="">493</span></div><div data-line-type="change-addition" data-column-number="494" data-line-index="541,502"><span data-line-number-content="">494</span></div><div data-line-type="context" data-column-number="495" data-line-index="542,503"><span data-line-number-content="">495</span></div><div data-line-type="context" data-column-number="496" data-line-index="543,504"><span data-line-number-content="">496</span></div><div data-line-type="context" data-column-number="497" data-line-index="544,505"><span data-line-number-content="">497</span></div><div data-line-type="context" data-column-number="498" data-line-index="545,506"><span data-line-number-content="">498</span></div><div data-line-type="context" data-column-number="499" data-line-index="546,507"><span data-line-number-content="">499</span></div><div data-line-type="change-addition" data-column-number="500" data-line-index="547,508"><span data-line-number-content="">500</span></div><div data-line-type="context" data-column-number="501" data-line-index="548,509"><span data-line-number-content="">501</span></div><div data-line-type="context" data-column-number="502" data-line-index="549,510"><span data-line-number-content="">502</span></div><div data-line-type="context" data-column-number="503" data-line-index="550,511"><span data-line-number-content="">503</span></div><div data-line-type="context" data-column-number="504" data-line-index="551,512"><span data-line-number-content="">504</span></div><div data-line-type="context" data-column-number="505" data-line-index="552,513"><span data-line-number-content="">505</span></div><div data-line-type="context" data-column-number="506" data-line-index="553,514"><span data-line-number-content="">506</span></div><div data-line-type="change-addition" data-column-number="507" data-line-index="554,515"><span data-line-number-content="">507</span></div><div data-line-type="change-addition" data-column-number="508" data-line-index="555,516"><span data-line-number-content="">508</span></div><div data-line-type="change-addition" data-column-number="509" data-line-index="556,517"><span data-line-number-content="">509</span></div><div data-line-type="change-addition" data-column-number="510" data-line-index="557,518"><span data-line-number-content="">510</span></div><div data-line-type="change-addition" data-column-number="511" data-line-index="558,519"><span data-line-number-content="">511</span></div><div data-line-type="change-addition" data-column-number="512" data-line-index="559,520"><span data-line-number-content="">512</span></div><div data-line-type="change-addition" data-column-number="513" data-line-index="560,521"><span data-line-number-content="">513</span></div><div data-line-type="context" data-column-number="514" data-line-index="561,522"><span data-line-number-content="">514</span></div><div data-line-type="context" data-column-number="515" data-line-index="562,523"><span data-line-number-content="">515</span></div><div data-line-type="context" data-column-number="516" data-line-index="563,524"><span data-line-number-content="">516</span></div><div data-line-type="change-addition" data-column-number="517" data-line-index="565,525"><span data-line-number-content="">517</span></div><div data-line-type="context" data-column-number="518" data-line-index="566,526"><span data-line-number-content="">518</span></div><div data-line-type="context" data-column-number="519" data-line-index="567,527"><span data-line-number-content="">519</span></div><div data-line-type="context" data-column-number="520" data-line-index="568,528"><span data-line-number-content="">520</span></div><div data-line-type="context" data-column-number="521" data-line-index="569,529"><span data-line-number-content="">521</span></div><div data-line-type="context" data-column-number="522" data-line-index="570,530"><span data-line-number-content="">522</span></div><div data-line-type="change-addition" data-column-number="523" data-line-index="571,531"><span data-line-number-content="">523</span></div><div data-line-type="change-addition" data-column-number="524" data-line-index="572,532"><span data-line-number-content="">524</span></div><div data-line-type="change-addition" data-column-number="525" data-line-index="573,533"><span data-line-number-content="">525</span></div><div data-line-type="change-addition" data-column-number="526" data-line-index="574,534"><span data-line-number-content="">526</span></div><div data-line-type="change-addition" data-column-number="527" data-line-index="575,535"><span data-line-number-content="">527</span></div><div data-line-type="change-addition" data-column-number="528" data-line-index="576,536"><span data-line-number-content="">528</span></div><div data-line-type="context" data-column-number="529" data-line-index="577,537"><span data-line-number-content="">529</span></div><div data-line-type="context" data-column-number="530" data-line-index="578,538"><span data-line-number-content="">530</span></div><div data-line-type="context" data-column-number="531" data-line-index="579,539"><span data-line-number-content="">531</span></div><div data-line-type="change-addition" data-column-number="532" data-line-index="580,540"><span data-line-number-content="">532</span></div><div data-line-type="change-addition" data-column-number="533" data-line-index="581,541"><span data-line-number-content="">533</span></div><div data-line-type="change-addition" data-column-number="534" data-line-index="582,542"><span data-line-number-content="">534</span></div><div data-line-type="change-addition" data-column-number="535" data-line-index="583,543"><span data-line-number-content="">535</span></div><div data-line-type="change-addition" data-column-number="536" data-line-index="584,544"><span data-line-number-content="">536</span></div><div data-line-type="change-addition" data-column-number="537" data-line-index="585,545"><span data-line-number-content="">537</span></div><div data-line-type="change-addition" data-column-number="538" data-line-index="586,546"><span data-line-number-content="">538</span></div><div data-line-type="change-addition" data-column-number="539" data-line-index="587,547"><span data-line-number-content="">539</span></div><div data-line-type="change-addition" data-column-number="540" data-line-index="588,548"><span data-line-number-content="">540</span></div><div data-line-type="change-addition" data-column-number="541" data-line-index="589,549"><span data-line-number-content="">541</span></div><div data-line-type="context" data-column-number="542" data-line-index="590,550"><span data-line-number-content="">542</span></div><div data-line-type="context" data-column-number="543" data-line-index="591,551"><span data-line-number-content="">543</span></div><div data-line-type="context" data-column-number="544" data-line-index="592,552"><span data-line-number-content="">544</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">30 unmodified lines</span></div></div></div><div data-line-type="context" data-column-number="575" data-line-index="623,583"><span data-line-number-content="">575</span></div><div data-line-type="context" data-column-number="576" data-line-index="624,584"><span data-line-number-content="">576</span></div><div data-line-type="context" data-column-number="577" data-line-index="625,585"><span data-line-number-content="">577</span></div><div data-line-type="change-addition" data-column-number="578" data-line-index="627,586"><span data-line-number-content="">578</span></div><div data-line-type="context" data-column-number="579" data-line-index="628,587"><span data-line-number-content="">579</span></div><div data-line-type="context" data-column-number="580" data-line-index="629,588"><span data-line-number-content="">580</span></div><div data-line-type="context" data-column-number="581" data-line-index="630,589"><span data-line-number-content="">581</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">6 unmodified lines</span></div></div></div><div data-line-type="context" data-column-number="588" data-line-index="637,596"><span data-line-number-content="">588</span></div><div data-line-type="context" data-column-number="589" data-line-index="638,597"><span data-line-number-content="">589</span></div><div data-line-type="context" data-column-number="590" data-line-index="639,598"><span data-line-number-content="">590</span></div><div data-line-type="change-addition" data-column-number="591" data-line-index="640,599"><span data-line-number-content="">591</span></div><div data-line-type="change-addition" data-column-number="592" data-line-index="641,600"><span data-line-number-content="">592</span></div><div data-line-type="change-addition" data-column-number="593" data-line-index="642,601"><span data-line-number-content="">593</span></div><div data-line-type="change-addition" data-column-number="594" data-line-index="643,602"><span data-line-number-content="">594</span></div><div data-line-type="change-addition" data-column-number="595" data-line-index="644,603"><span data-line-number-content="">595</span></div><div data-line-type="change-addition" data-column-number="596" data-line-index="645,604"><span data-line-number-content="">596</span></div><div data-line-type="context" data-column-number="597" data-line-index="646,605"><span data-line-number-content="">597</span></div><div data-line-type="context" data-column-number="598" data-line-index="647,606"><span data-line-number-content="">598</span></div><div data-line-type="context" data-column-number="599" data-line-index="648,607"><span data-line-number-content="">599</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">1 unmodified line</span></div></div></div><div data-line-type="context" data-column-number="601" data-line-index="650,609"><span data-line-number-content="">601</span></div><div data-line-type="context" data-column-number="602" data-line-index="651,610"><span data-line-number-content="">602</span></div><div data-line-type="context" data-column-number="603" data-line-index="652,611"><span data-line-number-content="">603</span></div><div data-line-type="change-addition" data-column-number="604" data-line-index="654,612"><span data-line-number-content="">604</span></div><div data-line-type="context" data-column-number="605" data-line-index="655,613"><span data-line-number-content="">605</span></div><div data-line-type="context" data-column-number="606" data-line-index="656,614"><span data-line-number-content="">606</span></div><div data-line-type="context" data-column-number="607" data-line-index="657,615"><span data-line-number-content="">607</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">23 unmodified lines</span></div></div></div><div data-line-type="context" data-column-number="631" data-line-index="681,639"><span data-line-number-content="">631</span></div><div data-line-type="context" data-column-number="632" data-line-index="682,640"><span data-line-number-content="">632</span></div><div data-line-type="context" data-column-number="633" data-line-index="683,641"><span data-line-number-content="">633</span></div><div data-line-type="change-addition" data-column-number="634" data-line-index="685,642"><span data-line-number-content="">634</span></div><div data-line-type="context" data-column-number="635" data-line-index="686,643"><span data-line-number-content="">635</span></div><div data-line-type="context" data-column-number="636" data-line-index="687,644"><span data-line-number-content="">636</span></div><div data-line-type="context" data-column-number="637" data-line-index="688,645"><span data-line-number-content="">637</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">14 unmodified lines</span></div></div></div><div data-line-type="context" data-column-number="652" data-line-index="703,660"><span data-line-number-content="">652</span></div><div data-line-type="context" data-column-number="653" data-line-index="704,661"><span data-line-number-content="">653</span></div><div data-line-type="context" data-column-number="654" data-line-index="705,662"><span data-line-number-content="">654</span></div><div data-line-type="change-addition" data-column-number="655" data-line-index="706,663"><span data-line-number-content="">655</span></div><div data-line-type="context" data-column-number="656" data-line-index="707,664"><span data-line-number-content="">656</span></div><div data-line-type="context" data-column-number="657" data-line-index="708,665"><span data-line-number-content="">657</span></div><div data-line-type="context" data-column-number="658" data-line-index="709,666"><span data-line-number-content="">658</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">9 unmodified lines</span></div></div></div><div data-line-type="context" data-column-number="668" data-line-index="719,676"><span data-line-number-content="">668</span></div><div data-line-type="context" data-column-number="669" data-line-index="720,677"><span data-line-number-content="">669</span></div><div data-line-type="context" data-column-number="670" data-line-index="721,678"><span data-line-number-content="">670</span></div><div data-line-type="change-addition" data-column-number="671" data-line-index="722,679"><span data-line-number-content="">671</span></div><div data-line-type="context" data-column-number="672" data-line-index="723,680"><span data-line-number-content="">672</span></div><div data-line-type="context" data-column-number="673" data-line-index="724,681"><span data-line-number-content="">673</span></div><div data-line-type="context" data-column-number="674" data-line-index="725,682"><span data-line-number-content="">674</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">14 unmodified lines</span></div></div></div><div data-line-type="context" data-column-number="689" data-line-index="740,697"><span data-line-number-content="">689</span></div><div data-line-type="context" data-column-number="690" data-line-index="741,698"><span data-line-number-content="">690</span></div><div data-line-type="context" data-column-number="691" data-line-index="742,699"><span data-line-number-content="">691</span></div><div data-line-type="change-addition" data-column-number="692" data-line-index="743,700"><span data-line-number-content="">692</span></div><div data-line-type="change-addition" data-column-number="693" data-line-index="744,701"><span data-line-number-content="">693</span></div><div data-line-type="context" data-column-number="694" data-line-index="745,702"><span data-line-number-content="">694</span></div><div data-line-type="context" data-column-number="695" data-line-index="746,703"><span data-line-number-content="">695</span></div><div data-line-type="context" data-column-number="696" data-line-index="747,704"><span data-line-number-content="">696</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">27 unmodified lines</span></div></div></div><div data-line-type="context" data-column-number="724" data-line-index="775,732"><span data-line-number-content="">724</span></div><div data-line-type="context" data-column-number="725" data-line-index="776,733"><span data-line-number-content="">725</span></div><div data-line-type="context" data-column-number="726" data-line-index="777,734"><span data-line-number-content="">726</span></div><div data-line-type="change-addition" data-column-number="727" data-line-index="779,735"><span data-line-number-content="">727</span></div><div data-line-type="context" data-column-number="728" data-line-index="780,736"><span data-line-number-content="">728</span></div><div data-line-type="context" data-column-number="729" data-line-index="781,737"><span data-line-number-content="">729</span></div><div data-line-type="change-addition" data-column-number="730" data-line-index="782,738"><span data-line-number-content="">730</span></div><div data-line-type="change-addition" data-column-number="731" data-line-index="783,739"><span data-line-number-content="">731</span></div><div data-line-type="change-addition" data-column-number="732" data-line-index="784,740"><span data-line-number-content="">732</span></div><div data-line-type="change-addition" data-column-number="733" data-line-index="785,741"><span data-line-number-content="">733</span></div><div data-line-type="change-addition" data-column-number="734" data-line-index="786,742"><span data-line-number-content="">734</span></div><div data-line-type="change-addition" data-column-number="735" data-line-index="787,743"><span data-line-number-content="">735</span></div><div data-line-type="change-addition" data-column-number="736" data-line-index="788,744"><span data-line-number-content="">736</span></div><div data-line-type="context" data-column-number="737" data-line-index="789,745"><span data-line-number-content="">737</span></div><div data-line-type="context" data-column-number="738" data-line-index="790,746"><span data-line-number-content="">738</span></div><div data-line-type="context" data-column-number="739" data-line-index="791,747"><span data-line-number-content="">739</span></div><div data-line-type="context" data-column-number="740" data-line-index="792,748"><span data-line-number-content="">740</span></div><div data-line-type="context" data-column-number="741" data-line-index="793,749"><span data-line-number-content="">741</span></div><div data-line-type="change-addition" data-column-number="742" data-line-index="794,750"><span data-line-number-content="">742</span></div><div data-line-type="context" data-column-number="743" data-line-index="795,751"><span data-line-number-content="">743</span></div><div data-line-type="context" data-column-number="744" data-line-index="796,752"><span data-line-number-content="">744</span></div><div data-line-type="change-addition" data-column-number="745" data-line-index="798,753"><span data-line-number-content="">745</span></div><div data-line-type="context" data-column-number="746" data-line-index="799,754"><span data-line-number-content="">746</span></div><div data-line-type="context" data-column-number="747" data-line-index="800,755"><span data-line-number-content="">747</span></div><div data-line-type="context" data-column-number="748" data-line-index="801,756"><span data-line-number-content="">748</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">1 unmodified line</span></div></div></div><div data-line-type="context" data-column-number="750" data-line-index="803,758"><span data-line-number-content="">750</span></div><div data-line-type="context" data-column-number="751" data-line-index="804,759"><span data-line-number-content="">751</span></div><div data-line-type="context" data-column-number="752" data-line-index="805,760"><span data-line-number-content="">752</span></div><div data-line-type="change-addition" data-column-number="753" data-line-index="807,761"><span data-line-number-content="">753</span></div><div data-line-type="context" data-column-number="754" data-line-index="808,762"><span data-line-number-content="">754</span></div><div data-line-type="context" data-column-number="755" data-line-index="809,763"><span data-line-number-content="">755</span></div><div data-line-type="change-addition" data-column-number="756" data-line-index="811,764"><span data-line-number-content="">756</span></div><div data-line-type="context" data-column-number="757" data-line-index="812,765"><span data-line-number-content="">757</span></div><div data-line-type="context" data-column-number="758" data-line-index="813,766"><span data-line-number-content="">758</span></div><div data-line-type="context" data-column-number="759" data-line-index="814,767"><span data-line-number-content="">759</span></div><div data-line-type="context" data-column-number="760" data-line-index="815,768"><span data-line-number-content="">760</span></div><div data-line-type="change-addition" data-column-number="761" data-line-index="817,769"><span data-line-number-content="">761</span></div><div data-line-type="change-addition" data-column-number="762" data-line-index="818,770"><span data-line-number-content="">762</span></div><div data-line-type="change-addition" data-column-number="763" data-line-index="819,771"><span data-line-number-content="">763</span></div><div data-line-type="change-addition" data-column-number="764" data-line-index="820,772"><span data-line-number-content="">764</span></div><div data-line-type="change-addition" data-column-number="765" data-line-index="821,773"><span data-line-number-content="">765</span></div><div data-line-type="change-addition" data-column-number="766" data-line-index="822,774"><span data-line-number-content="">766</span></div><div data-line-type="change-addition" data-column-number="767" data-line-index="823,775"><span data-line-number-content="">767</span></div><div data-line-type="change-addition" data-column-number="768" data-line-index="824,776"><span data-line-number-content="">768</span></div><div data-line-type="change-addition" data-column-number="769" data-line-index="825,777"><span data-line-number-content="">769</span></div><div data-line-type="change-addition" data-column-number="770" data-line-index="826,778"><span data-line-number-content="">770</span></div><div data-line-type="change-addition" data-column-number="771" data-line-index="827,779"><span data-line-number-content="">771</span></div><div data-line-type="change-addition" data-column-number="772" data-line-index="828,780"><span data-line-number-content="">772</span></div><div data-line-type="change-addition" data-column-number="773" data-line-index="829,781"><span data-line-number-content="">773</span></div><div data-line-type="change-addition" data-column-number="774" data-line-index="830,782"><span data-line-number-content="">774</span></div><div data-line-type="change-addition" data-column-number="775" data-line-index="831,783"><span data-line-number-content="">775</span></div><div data-line-type="change-addition" data-column-number="776" data-line-index="832,784"><span data-line-number-content="">776</span></div><div data-line-type="change-addition" data-column-number="777" data-line-index="833,785"><span data-line-number-content="">777</span></div><div data-line-type="change-addition" data-column-number="778" data-line-index="834,786"><span data-line-number-content="">778</span></div><div data-line-type="change-addition" data-column-number="779" data-line-index="835,787"><span data-line-number-content="">779</span></div><div data-line-type="change-addition" data-column-number="780" data-line-index="836,788"><span data-line-number-content="">780</span></div><div data-line-type="change-addition" data-column-number="781" data-line-index="837,789"><span data-line-number-content="">781</span></div><div data-line-type="change-addition" data-column-number="782" data-line-index="838,790"><span data-line-number-content="">782</span></div><div data-line-type="change-addition" data-column-number="783" data-line-index="839,791"><span data-line-number-content="">783</span></div><div data-line-type="change-addition" data-column-number="784" data-line-index="840,792"><span data-line-number-content="">784</span></div><div data-line-type="change-addition" data-column-number="785" data-line-index="841,793"><span data-line-number-content="">785</span></div><div data-line-type="change-addition" data-column-number="786" data-line-index="842,794"><span data-line-number-content="">786</span></div><div data-line-type="change-addition" data-column-number="787" data-line-index="843,795"><span data-line-number-content="">787</span></div><div data-line-type="change-addition" data-column-number="788" data-line-index="844,796"><span data-line-number-content="">788</span></div><div data-line-type="change-addition" data-column-number="789" data-line-index="845,797"><span data-line-number-content="">789</span></div><div data-line-type="change-addition" data-column-number="790" data-line-index="846,798"><span data-line-number-content="">790</span></div><div data-line-type="change-addition" data-column-number="791" data-line-index="847,799"><span data-line-number-content="">791</span></div><div data-line-type="change-addition" data-column-number="792" data-line-index="848,800"><span data-line-number-content="">792</span></div><div data-line-type="change-addition" data-column-number="793" data-line-index="849,801"><span data-line-number-content="">793</span></div><div data-line-type="change-addition" data-column-number="794" data-line-index="850,802"><span data-line-number-content="">794</span></div><div data-line-type="change-addition" data-column-number="795" data-line-index="851,803"><span data-line-number-content="">795</span></div><div data-line-type="change-addition" data-column-number="796" data-line-index="852,804"><span data-line-number-content="">796</span></div><div data-line-type="change-addition" data-column-number="797" data-line-index="853,805"><span data-line-number-content="">797</span></div><div data-line-type="change-addition" data-column-number="798" data-line-index="854,806"><span data-line-number-content="">798</span></div><div data-line-type="change-addition" data-column-number="799" data-line-index="855,807"><span data-line-number-content="">799</span></div><div data-line-type="change-addition" data-column-number="800" data-line-index="856,808"><span data-line-number-content="">800</span></div><div data-line-type="change-addition" data-column-number="801" data-line-index="857,809"><span data-line-number-content="">801</span></div><div data-line-type="change-addition" data-column-number="802" data-line-index="858,810"><span data-line-number-content="">802</span></div><div data-line-type="change-addition" data-column-number="803" data-line-index="859,811"><span data-line-number-content="">803</span></div><div data-line-type="change-addition" data-column-number="804" data-line-index="860,812"><span data-line-number-content="">804</span></div><div data-line-type="change-addition" data-column-number="805" data-line-index="861,813"><span data-line-number-content="">805</span></div><div data-line-type="change-addition" data-column-number="806" data-line-index="862,814"><span data-line-number-content="">806</span></div><div data-line-type="change-addition" data-column-number="807" data-line-index="863,815"><span data-line-number-content="">807</span></div><div data-line-type="change-addition" data-column-number="808" data-line-index="864,816"><span data-line-number-content="">808</span></div><div data-line-type="change-addition" data-column-number="809" data-line-index="865,817"><span data-line-number-content="">809</span></div><div data-line-type="change-addition" data-column-number="810" data-line-index="866,818"><span data-line-number-content="">810</span></div><div data-line-type="change-addition" data-column-number="811" data-line-index="867,819"><span data-line-number-content="">811</span></div><div data-line-type="change-addition" data-column-number="812" data-line-index="868,820"><span data-line-number-content="">812</span></div><div data-line-type="change-addition" data-column-number="813" data-line-index="869,821"><span data-line-number-content="">813</span></div><div data-line-type="change-addition" data-column-number="814" data-line-index="870,822"><span data-line-number-content="">814</span></div><div data-line-type="change-addition" data-column-number="815" data-line-index="871,823"><span data-line-number-content="">815</span></div><div data-line-type="change-addition" data-column-number="816" data-line-index="872,824"><span data-line-number-content="">816</span></div><div data-line-type="change-addition" data-column-number="817" data-line-index="873,825"><span data-line-number-content="">817</span></div><div data-line-type="change-addition" data-column-number="818" data-line-index="874,826"><span data-line-number-content="">818</span></div><div data-line-type="change-addition" data-column-number="819" data-line-index="875,827"><span data-line-number-content="">819</span></div><div data-line-type="change-addition" data-column-number="820" data-line-index="876,828"><span data-line-number-content="">820</span></div><div data-line-type="change-addition" data-column-number="821" data-line-index="877,829"><span data-line-number-content="">821</span></div><div data-line-type="change-addition" data-column-number="822" data-line-index="878,830"><span data-line-number-content="">822</span></div><div data-line-type="change-addition" data-column-number="823" data-line-index="879,831"><span data-line-number-content="">823</span></div><div data-line-type="change-addition" data-column-number="824" data-line-index="880,832"><span data-line-number-content="">824</span></div><div data-line-type="change-addition" data-column-number="825" data-line-index="881,833"><span data-line-number-content="">825</span></div><div data-line-type="change-addition" data-column-number="826" data-line-index="882,834"><span data-line-number-content="">826</span></div><div data-line-type="change-addition" data-column-number="827" data-line-index="883,835"><span data-line-number-content="">827</span></div><div data-line-type="change-addition" data-column-number="828" data-line-index="884,836"><span data-line-number-content="">828</span></div><div data-line-type="change-addition" data-column-number="829" data-line-index="885,837"><span data-line-number-content="">829</span></div><div data-line-type="change-addition" data-column-number="830" data-line-index="886,838"><span data-line-number-content="">830</span></div><div data-line-type="change-addition" data-column-number="831" data-line-index="887,839"><span data-line-number-content="">831</span></div><div data-line-type="change-addition" data-column-number="832" data-line-index="888,840"><span data-line-number-content="">832</span></div><div data-line-type="change-addition" data-column-number="833" data-line-index="889,841"><span data-line-number-content="">833</span></div><div data-line-type="change-addition" data-column-number="834" data-line-index="890,842"><span data-line-number-content="">834</span></div><div data-line-type="change-addition" data-column-number="835" data-line-index="891,843"><span data-line-number-content="">835</span></div><div data-line-type="change-addition" data-column-number="836" data-line-index="892,844"><span data-line-number-content="">836</span></div><div data-line-type="change-addition" data-column-number="837" data-line-index="893,845"><span data-line-number-content="">837</span></div><div data-line-type="change-addition" data-column-number="838" data-line-index="894,846"><span data-line-number-content="">838</span></div><div data-line-type="change-addition" data-column-number="839" data-line-index="895,847"><span data-line-number-content="">839</span></div><div data-line-type="change-addition" data-column-number="840" data-line-index="896,848"><span data-line-number-content="">840</span></div><div data-line-type="change-addition" data-column-number="841" data-line-index="897,849"><span data-line-number-content="">841</span></div><div data-line-type="change-addition" data-column-number="842" data-line-index="898,850"><span data-line-number-content="">842</span></div><div data-line-type="change-addition" data-column-number="843" data-line-index="899,851"><span data-line-number-content="">843</span></div><div data-line-type="change-addition" data-column-number="844" data-line-index="900,852"><span data-line-number-content="">844</span></div><div data-line-type="change-addition" data-column-number="845" data-line-index="901,853"><span data-line-number-content="">845</span></div><div data-line-type="change-addition" data-column-number="846" data-line-index="902,854"><span data-line-number-content="">846</span></div><div data-line-type="change-addition" data-column-number="847" data-line-index="903,855"><span data-line-number-content="">847</span></div><div data-line-type="change-addition" data-column-number="848" data-line-index="904,856"><span data-line-number-content="">848</span></div><div data-line-type="change-addition" data-column-number="849" data-line-index="905,857"><span data-line-number-content="">849</span></div><div data-line-type="change-addition" data-column-number="850" data-line-index="906,858"><span data-line-number-content="">850</span></div><div data-line-type="change-addition" data-column-number="851" data-line-index="907,859"><span data-line-number-content="">851</span></div><div data-line-type="change-addition" data-column-number="852" data-line-index="908,860"><span data-line-number-content="">852</span></div><div data-line-type="change-addition" data-column-number="853" data-line-index="909,861"><span data-line-number-content="">853</span></div><div data-line-type="change-addition" data-column-number="854" data-line-index="910,862"><span data-line-number-content="">854</span></div><div data-line-type="change-addition" data-column-number="855" data-line-index="911,863"><span data-line-number-content="">855</span></div><div data-line-type="change-addition" data-column-number="856" data-line-index="912,864"><span data-line-number-content="">856</span></div><div data-line-type="change-addition" data-column-number="857" data-line-index="913,865"><span data-line-number-content="">857</span></div><div data-line-type="change-addition" data-column-number="858" data-line-index="914,866"><span data-line-number-content="">858</span></div><div data-line-type="change-addition" data-column-number="859" data-line-index="915,867"><span data-line-number-content="">859</span></div><div data-line-type="change-addition" data-column-number="860" data-line-index="916,868"><span data-line-number-content="">860</span></div><div data-line-type="change-addition" data-column-number="861" data-line-index="917,869"><span data-line-number-content="">861</span></div><div data-line-type="change-addition" data-column-number="862" data-line-index="918,870"><span data-line-number-content="">862</span></div><div data-line-type="context" data-column-number="863" data-line-index="919,871"><span data-line-number-content="">863</span></div><div data-line-type="context" data-column-number="864" data-line-index="920,872"><span data-line-number-content="">864</span></div><div data-line-type="change-addition" data-column-number="865" data-line-index="922,873"><span data-line-number-content="">865</span></div><div data-line-type="change-addition" data-column-number="866" data-line-index="923,874"><span data-line-number-content="">866</span></div><div data-line-type="context" data-column-number="867" data-line-index="924,875"><span data-line-number-content="">867</span></div><div data-line-type="change-addition" data-column-number="868" data-line-index="927,876"><span data-line-number-content="">868</span></div><div data-line-type="change-addition" data-column-number="869" data-line-index="928,877"><span data-line-number-content="">869</span></div><div data-line-type="context" data-column-number="870" data-line-index="929,878"><span data-line-number-content="">870</span></div><div data-line-type="context" data-column-number="871" data-line-index="930,879"><span data-line-number-content="">871</span></div><div data-line-type="context" data-column-number="872" data-line-index="931,880"><span data-line-number-content="">872</span></div><div data-line-type="context" data-column-number="873" data-line-index="932,881"><span data-line-number-content="">873</span></div><div data-line-type="context" data-column-number="874" data-line-index="933,882"><span data-line-number-content="">874</span></div><div data-line-type="context" data-column-number="875" data-line-index="934,883"><span data-line-number-content="">875</span></div><div data-line-type="change-addition" data-column-number="876" data-line-index="935,884"><span data-line-number-content="">876</span></div><div data-line-type="change-addition" data-column-number="877" data-line-index="936,885"><span data-line-number-content="">877</span></div><div data-line-type="change-addition" data-column-number="878" data-line-index="937,886"><span data-line-number-content="">878</span></div><div data-line-type="change-addition" data-column-number="879" data-line-index="938,887"><span data-line-number-content="">879</span></div><div data-line-type="change-addition" data-column-number="880" data-line-index="939,888"><span data-line-number-content="">880</span></div><div data-line-type="change-addition" data-column-number="881" data-line-index="940,889"><span data-line-number-content="">881</span></div><div data-line-type="change-addition" data-column-number="882" data-line-index="941,890"><span data-line-number-content="">882</span></div><div data-line-type="change-addition" data-column-number="883" data-line-index="942,891"><span data-line-number-content="">883</span></div><div data-line-type="change-addition" data-column-number="884" data-line-index="943,892"><span data-line-number-content="">884</span></div><div data-line-type="change-addition" data-column-number="885" data-line-index="944,893"><span data-line-number-content="">885</span></div><div data-line-type="change-addition" data-column-number="886" data-line-index="945,894"><span data-line-number-content="">886</span></div><div data-line-type="change-addition" data-column-number="887" data-line-index="946,895"><span data-line-number-content="">887</span></div><div data-line-type="change-addition" data-column-number="888" data-line-index="947,896"><span data-line-number-content="">888</span></div><div data-line-type="change-addition" data-column-number="889" data-line-index="948,897"><span data-line-number-content="">889</span></div><div data-line-type="context" data-column-number="890" data-line-index="949,898"><span data-line-number-content="">890</span></div><div data-line-type="context" data-column-number="891" data-line-index="950,899"><span data-line-number-content="">891</span></div><div data-line-type="context" data-column-number="892" data-line-index="951,900"><span data-line-number-content="">892</span></div></div><div data-content="" style="grid-row: span 595"><div data-separator="line-info" data-separator-first=""><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">10 unmodified lines</span></div></div></div><div data-line="11" data-alt-line="11" data-line-type="context" data-line-index="10,10"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> var</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> attachedSubtitleURLs: </span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C">Set</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"><</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">URL</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">></span></div><div data-line="12" data-alt-line="12" data-line-type="context" data-line-index="11,11"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> var</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> audioMenuSignature: </span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C">String</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">?</span></div><div data-line="13" data-alt-line="13" data-line-type="context" data-line-index="12,12"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> var</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> captionsMenuSignature: </span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C">String</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">?</span></div><div data-line="14" data-line-type="change-addition" data-line-index="13,13"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> var</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> controlsMaximumWidthConstraint: NSLayoutConstraint</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">?</span></div><div data-line="15" data-line-type="change-addition" data-line-index="14,14"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> bottomScrimLayer </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> CAGradientLayer</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span></div><div data-line="16" data-alt-line="14" data-line-type="context" data-line-index="15,15"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> var</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> onDismiss: </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(()</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> -></span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C"> Void</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)?</span></div><div data-line="17" data-alt-line="15" data-line-type="context" data-line-index="16,16">
|
|
</div><div data-line="18" data-line-type="change-addition" data-line-index="17,17"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> loadingContainer: UIVisualEffectView </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-line="19" data-line-type="change-addition" data-line-index="18,18"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> view </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> NativePlayerViewController.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">glassPanel</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">cornerRadius</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 24</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="20" data-line-type="change-addition" data-line-index="19,19"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> view.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">isHidden</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> false</span></div><div data-line="21" data-line-type="change-addition" data-line-index="20,20"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> return</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> view</span></div><div data-line="22" data-line-type="change-addition" data-line-index="21,21"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }()</span></div><div data-line="23" data-line-type="change-addition" data-line-index="22,22">
|
|
</div><div data-line="24" data-line-type="change-addition" data-line-index="23,23"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> loadingStack: UIStackView </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-line="25" data-line-type="change-addition" data-line-index="24,24"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> stack </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> UIStackView</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span></div><div data-line="26" data-line-type="change-addition" data-line-index="25,25"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> stack.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">translatesAutoresizingMaskIntoConstraints</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> false</span></div><div data-line="27" data-line-type="change-addition" data-line-index="26,26"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> stack.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">axis</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> .</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">horizontal</span></div><div data-line="28" data-line-type="change-addition" data-line-index="27,27"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> stack.alignment </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> .</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">center</span></div><div data-line="29" data-line-type="change-addition" data-line-index="28,28"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> stack.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">spacing</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 12</span></div><div data-line="30" data-line-type="change-addition" data-line-index="29,29"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> return</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> stack</span></div><div data-line="31" data-line-type="change-addition" data-line-index="30,30"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }()</span></div><div data-line="32" data-line-type="change-addition" data-line-index="31,31">
|
|
</div><div data-line="33" data-line-type="change-addition" data-line-index="32,32"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> loadingTextLabel: UILabel </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-line="34" data-line-type="change-addition" data-line-index="33,33"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> label </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> UILabel</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span></div><div data-line="35" data-line-type="change-addition" data-line-index="34,34"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> label.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">translatesAutoresizingMaskIntoConstraints</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> false</span></div><div data-line="36" data-line-type="change-addition" data-line-index="35,35"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> label.text </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "Opening stream…"</span></div><div data-line="37" data-line-type="change-addition" data-line-index="36,36"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> label.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">textColor</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> .</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">white</span></div><div data-line="38" data-line-type="change-addition" data-line-index="37,37"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> label.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">font</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> .</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">preferredFont</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">forTextStyle</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> .</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">subheadline</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="39" data-line-type="change-addition" data-line-index="38,38"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> label.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">adjustsFontForContentSizeCategory</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> true</span></div><div data-line="40" data-line-type="change-addition" data-line-index="39,39"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> return</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> label</span></div><div data-line="41" data-line-type="change-addition" data-line-index="40,40"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }()</span></div><div data-line="42" data-line-type="change-addition" data-line-index="41,41">
|
|
</div><div data-line="43" data-alt-line="16" data-line-type="context" data-line-index="42,42"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> loadingView: UIActivityIndicatorView </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-line="44" data-alt-line="17" data-line-type="context" data-line-index="43,43"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> view </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> UIActivityIndicatorView</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">style</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> .</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">large</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="45" data-alt-line="18" data-line-type="context" data-line-index="44,44"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> view.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">translatesAutoresizingMaskIntoConstraints</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> false</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">7 unmodified lines</span></div></div></div><div data-line="53" data-alt-line="26" data-line-type="context" data-line-index="52,52"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> button.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">translatesAutoresizingMaskIntoConstraints</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> false</span></div><div data-line="54" data-alt-line="27" data-line-type="context" data-line-index="53,53"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> button.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">setImage</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">UIImage</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">systemName</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "xmark"</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, for</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> .</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">normal</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="55" data-alt-line="28" data-line-type="context" data-line-index="54,54"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> button.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">tintColor</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> .</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">white</span></div><div data-line="56" data-line-type="change-addition" data-line-index="57,55"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> button.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">backgroundColor</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> UIColor.</span><span data-diff-span=""><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">white</span></span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">withAlphaComponent</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7">0.</span><span data-diff-span=""><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7">14</span></span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="57" data-line-type="change-addition" data-line-index="58,56"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> button.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">layer</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">cornerRadius</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> </span><span data-diff-span=""><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7">22</span></span></div><div data-line="58" data-line-type="change-addition" data-line-index="59,57"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> button.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">layer</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">borderColor</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> UIColor.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">white</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">withAlphaComponent</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7">0.22</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">cgColor</span></div><div data-line="59" data-line-type="change-addition" data-line-index="60,58"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> button.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">layer</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">borderWidth</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 1</span></div><div data-line="60" data-alt-line="31" data-line-type="context" data-line-index="61,59"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> button.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">accessibilityLabel</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "Close"</span></div><div data-line="61" data-line-type="change-addition" data-line-index="62,60"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> button.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">accessibilityHint</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "Closes native playback and returns to Stremio."</span></div><div data-line="62" data-alt-line="32" data-line-type="context" data-line-index="63,61"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> return</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> button</span></div><div data-line="63" data-alt-line="33" data-line-type="context" data-line-index="64,62"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> }</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span></div><div data-line="64" data-alt-line="34" data-line-type="context" data-line-index="65,63">
|
|
</div><div data-line="65" data-line-type="change-addition" data-line-index="76,64"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> controlsContainer </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> </span><span data-diff-span=""><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">NativePlayerViewController.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">glassPanel</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">cornerRadius</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 26</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></span></div><div data-content-buffer="" data-buffer-size="9" style="grid-row: span 9;min-height:calc(9 * 1lh)"></div><div data-line="66" data-alt-line="45" data-line-type="context" data-line-index="77,74">
|
|
</div><div data-line="67" data-alt-line="46" data-line-type="context" data-line-index="78,75"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> tapSurfaceView: UIView </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-line="68" data-alt-line="47" data-line-type="context" data-line-index="79,76"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> view </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> UIView</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">2 unmodified lines</span></div></div></div><div data-line="71" data-alt-line="50" data-line-type="context" data-line-index="82,79"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> return</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> view</span></div><div data-line="72" data-alt-line="51" data-line-type="context" data-line-index="83,80"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> }</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span></div><div data-line="73" data-alt-line="52" data-line-type="context" data-line-index="84,81">
|
|
</div><div data-line="74" data-line-type="change-addition" data-line-index="86,82"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> playPauseButton </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> NativePlayerViewController.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">iconButton</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">systemName</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "pause.fill"</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, label</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "Play or Pause"</span><span data-diff-span=""><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, pointSize</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 24</span></span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="75" data-alt-line="54" data-line-type="context" data-line-index="87,83"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> jumpBackButton </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> NativePlayerViewController.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">iconButton</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">systemName</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "gobackward.15"</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, label</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "Jump Back 15 Seconds"</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="76" data-alt-line="55" data-line-type="context" data-line-index="88,84"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> jumpForwardButton </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> NativePlayerViewController.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">iconButton</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">systemName</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "goforward.15"</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, label</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "Jump Forward 15 Seconds"</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="77" data-line-type="change-addition" data-line-index="91,85"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> audioButton </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> NativePlayerViewController.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">iconButton</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">systemName</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "waveform.circle"</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, label</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "Audio </span><span data-diff-span=""><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">Track</span></span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">"</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="78" data-line-type="change-addition" data-line-index="92,86"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> captionsButton </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> NativePlayerViewController.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">iconButton</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">systemName</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "captions.bubble"</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, label</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "</span><span data-diff-span=""><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">Subtitles</span></span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">"</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="79" data-line-type="change-addition" data-line-index="93,87">
|
|
</div><div data-line="80" data-line-type="change-addition" data-line-index="94,88"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> centerPlayPauseButton </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> NativePlayerViewController.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">iconButton</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">systemName</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "play.fill"</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, label</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "Toggle Playback"</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, pointSize</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 34</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="81" data-alt-line="58" data-line-type="context" data-line-index="95,89">
|
|
</div><div data-line="82" data-alt-line="59" data-line-type="context" data-line-index="96,90"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> elapsedLabel: UILabel </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-line="83" data-alt-line="60" data-line-type="context" data-line-index="97,91"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> label </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> UILabel</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">27 unmodified lines</span></div></div></div><div data-line="111" data-alt-line="88" data-line-type="context" data-line-index="125,119"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> return</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> slider</span></div><div data-line="112" data-alt-line="89" data-line-type="context" data-line-index="126,120"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> }</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span></div><div data-line="113" data-alt-line="90" data-line-type="context" data-line-index="127,121">
|
|
</div><div data-line="114" data-line-type="change-addition" data-line-index="129,122"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> </span><span data-diff-span=""><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">scrubTimeBubble</span></span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">: UILabel </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-line="115" data-alt-line="92" data-line-type="context" data-line-index="130,123"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> label </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> UILabel</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span></div><div data-line="116" data-alt-line="93" data-line-type="context" data-line-index="131,124"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> label.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">translatesAutoresizingMaskIntoConstraints</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> false</span></div><div data-line="117" data-alt-line="94" data-line-type="context" data-line-index="132,125"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> label.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">textColor</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> .</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">white</span></div><div data-line="118" data-alt-line="95" data-line-type="context" data-line-index="133,126"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> label.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">textAlignment</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> .</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">center</span></div><div data-line="119" data-line-type="change-addition" data-line-index="134,127"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> label.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">font</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> .</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">monospacedDigitSystemFont</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">ofSize</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 13</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, weight</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> .</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">bold</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="120" data-line-type="change-addition" data-line-index="135,128"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> label.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">backgroundColor</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> UIColor.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">black</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">withAlphaComponent</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7">0.56</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="121" data-line-type="change-addition" data-line-index="136,129"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> label.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">layer</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">cornerRadius</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 14</span></div><div data-line="122" data-line-type="change-addition" data-line-index="137,130"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> label.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">clipsToBounds</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> true</span></div><div data-line="123" data-line-type="change-addition" data-line-index="138,131"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> label.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">alpha</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 0</span></div><div data-line="124" data-line-type="change-addition" data-line-index="139,132"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> return</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> label</span></div><div data-line="125" data-line-type="change-addition" data-line-index="140,133"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }()</span></div><div data-line="126" data-line-type="change-addition" data-line-index="141,134">
|
|
</div><div data-line="127" data-line-type="change-addition" data-line-index="142,135"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> failureContainer: UIVisualEffectView </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-line="128" data-line-type="change-addition" data-line-index="143,136"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> view </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> NativePlayerViewController.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">glassPanel</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">cornerRadius</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 28</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="129" data-line-type="change-addition" data-line-index="144,137"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> view.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">isHidden</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> true</span></div><div data-line="130" data-line-type="change-addition" data-line-index="145,138"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> return</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> view</span></div><div data-line="131" data-line-type="change-addition" data-line-index="146,139"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }()</span></div><div data-line="132" data-line-type="change-addition" data-line-index="147,140">
|
|
</div><div data-line="133" data-line-type="change-addition" data-line-index="148,141"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> failureTitleLabel: UILabel </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-line="134" data-line-type="change-addition" data-line-index="149,142"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> label </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> UILabel</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span></div><div data-line="135" data-line-type="change-addition" data-line-index="150,143"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> label.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">translatesAutoresizingMaskIntoConstraints</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> false</span></div><div data-line="136" data-line-type="change-addition" data-line-index="151,144"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> label.text </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "Playback could not start"</span></div><div data-line="137" data-line-type="change-addition" data-line-index="152,145"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> label.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">textColor</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> .</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">white</span></div><div data-line="138" data-line-type="change-addition" data-line-index="153,146"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> label.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">textAlignment</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> .</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">center</span></div><div data-line="139" data-line-type="change-addition" data-line-index="154,147"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> label.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">font</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> .</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">preferredFont</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">forTextStyle</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> .</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">headline</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="140" data-line-type="change-addition" data-line-index="155,148"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> label.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">adjustsFontForContentSizeCategory</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> true</span></div><div data-line="141" data-line-type="change-addition" data-line-index="156,149"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> return</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> label</span></div><div data-line="142" data-line-type="change-addition" data-line-index="157,150"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }()</span></div><div data-line="143" data-line-type="change-addition" data-line-index="158,151">
|
|
</div><div data-line="144" data-line-type="change-addition" data-line-index="159,152"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> failureDetailLabel: UILabel </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-line="145" data-line-type="change-addition" data-line-index="160,153"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> label </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> UILabel</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span></div><div data-line="146" data-line-type="change-addition" data-line-index="161,154"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> label.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">translatesAutoresizingMaskIntoConstraints</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> false</span></div><div data-line="147" data-line-type="change-addition" data-line-index="162,155"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> label.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">textColor</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> UIColor.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">white</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">withAlphaComponent</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7">0.82</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="148" data-line-type="change-addition" data-line-index="163,156"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> label.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">textAlignment</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> .</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">center</span></div><div data-line="149" data-alt-line="96" data-line-type="context" data-line-index="164,157"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> label.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">numberOfLines</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 0</span></div><div data-line="150" data-line-type="change-addition" data-line-index="167,158"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> label.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">font</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> .</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">preferredFont</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">forTextStyle</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> .</span><span data-diff-span=""><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">subheadline</span></span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="151" data-line-type="change-addition" data-line-index="168,159"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> label.</span><span data-diff-span=""><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">adjustsFontForContentSizeCategory</span></span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> true</span></div><div data-line="152" data-alt-line="99" data-line-type="context" data-line-index="169,160"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> return</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> label</span></div><div data-line="153" data-alt-line="100" data-line-type="context" data-line-index="170,161"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }()</span></div><div data-line="154" data-alt-line="101" data-line-type="context" data-line-index="171,162">
|
|
</div><div data-line="155" data-line-type="change-addition" data-line-index="172,163"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> retryButton: UIButton </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> NativePlayerViewController.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">textButton</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">title</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "Retry"</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="156" data-line-type="change-addition" data-line-index="173,164"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> failureCloseButton: UIButton </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> NativePlayerViewController.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">textButton</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">title</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "Close"</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="157" data-line-type="change-addition" data-line-index="174,165">
|
|
</div><div data-line="158" data-alt-line="102" data-line-type="context" data-line-index="175,166"><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE"> init</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span></div><div data-line="159" data-alt-line="103" data-line-type="context" data-line-index="176,167"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> request</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">: NativePlaybackRequest,</span></div><div data-line="160" data-alt-line="104" data-line-type="context" data-line-index="177,168"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> backend</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">: NativePlaybackBackend </span><span style="--diffs-token-dark:#08C0EF;--diffs-token-light:#08C0EF">=</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> VLCNativePlaybackBackend</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">,</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">31 unmodified lines</span></div></div></div><div data-line="192" data-alt-line="136" data-line-type="context" data-line-index="209,200"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> view.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">backgroundColor</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> .</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">black</span></div><div data-line="193" data-alt-line="137" data-line-type="context" data-line-index="210,201"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> configureBackend</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span></div><div data-line="194" data-alt-line="138" data-line-type="context" data-line-index="211,202"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> configureLayout</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span></div><div data-line="195" data-line-type="change-addition" data-line-index="215,203"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> </span><span data-diff-span=""><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">configureAccessibility</span></span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span></div><div data-line="196" data-line-type="change-addition" data-line-index="216,204"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> </span><span data-diff-span=""><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">startPlayback</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span></span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="197" data-line-type="change-addition" data-line-index="217,205"><span data-diff-span=""><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> }</span></span></div><div data-line="198" data-line-type="change-addition" data-line-index="218,206">
|
|
</div><div data-line="199" data-line-type="change-addition" data-line-index="219,207"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> override</span><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE"> func</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> viewDidLayoutSubviews</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-line="200" data-line-type="change-addition" data-line-index="220,208"><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C"> super</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">viewDidLayoutSubviews</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span></div><div data-line="201" data-line-type="change-addition" data-line-index="221,209"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> bottomScrimLayer.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">frame</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> view.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">bounds</span></div><div data-line="202" data-line-type="change-addition" data-line-index="222,210"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> updateLayoutForCurrentSize</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span></div><div data-line="203" data-alt-line="142" data-line-type="context" data-line-index="223,211"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-line="204" data-alt-line="143" data-line-type="context" data-line-index="224,212">
|
|
</div><div data-line="205" data-alt-line="144" data-line-type="context" data-line-index="225,213"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> @</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">discardableResult</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">67 unmodified lines</span></div></div></div><div data-line="273" data-alt-line="212" data-line-type="context" data-line-index="293,281"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> DispatchQueue.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">main</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">async</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-line="274" data-alt-line="213" data-line-type="context" data-line-index="294,282"><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C"> self</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">?</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">startupTimer</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">?</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">invalidate</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span></div><div data-line="275" data-alt-line="214" data-line-type="context" data-line-index="295,283"><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C"> self</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">?</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">loadingView</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">stopAnimating</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span></div><div data-line="276" data-line-type="change-addition" data-line-index="297,284"><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C"> self</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">?</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span data-diff-span=""><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">loadingContainer</span></span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">isHidden</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> true</span></div><div data-line="277" data-alt-line="216" data-line-type="context" data-line-index="298,285"><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C"> self</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">?</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">startProgressUpdates</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span></div><div data-line="278" data-alt-line="217" data-line-type="context" data-line-index="299,286"><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C"> self</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">?</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">refreshControls</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span></div><div data-line="279" data-alt-line="218" data-line-type="context" data-line-index="300,287"><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C"> self</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">?</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">scheduleControlsHide</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">22 unmodified lines</span></div></div></div><div data-line="302" data-alt-line="241" data-line-type="context" data-line-index="323,310"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> }</span></div><div data-line="303" data-alt-line="242" data-line-type="context" data-line-index="324,311"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> }</span></div><div data-line="304" data-alt-line="243" data-line-type="context" data-line-index="325,312">
|
|
</div><div data-line="305" data-line-type="change-addition" data-line-index="326,313"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE"> func</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> startPlayback</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-line="306" data-line-type="change-addition" data-line-index="327,314"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> loadingContainer.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">isHidden</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> false</span></div><div data-line="307" data-line-type="change-addition" data-line-index="328,315"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> loadingView.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">startAnimating</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span></div><div data-line="308" data-line-type="change-addition" data-line-index="329,316"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> failureContainer.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">isHidden</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> true</span></div><div data-line="309" data-line-type="change-addition" data-line-index="330,317"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> startStartupTimer</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span></div><div data-line="310" data-line-type="change-addition" data-line-index="331,318"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> backend.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">play</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">request</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> request</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="311" data-line-type="change-addition" data-line-index="332,319"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> addSubtitleCandidates</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">request.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">subtitleCandidates</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="312" data-line-type="change-addition" data-line-index="333,320"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> revealControls</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span></div><div data-line="313" data-line-type="change-addition" data-line-index="334,321"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-line="314" data-line-type="change-addition" data-line-index="335,322">
|
|
</div><div data-line="315" data-alt-line="244" data-line-type="context" data-line-index="336,323"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE"> func</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> startStartupTimer</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-line="316" data-alt-line="245" data-line-type="context" data-line-index="337,324"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> startupTimer</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">?</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">invalidate</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span></div><div data-line="317" data-alt-line="246" data-line-type="context" data-line-index="338,325"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> startupTimer </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> Timer.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">scheduledTimer</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">withTimeInterval</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 20</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, repeats</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> false</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> [</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">weak</span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C"> self</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">] _ </span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">in</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">4 unmodified lines</span></div></div></div><div data-line="322" data-alt-line="251" data-line-type="context" data-line-index="343,330">
|
|
</div><div data-line="323" data-alt-line="252" data-line-type="context" data-line-index="344,331"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE"> func</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> configureLayout</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-line="324" data-alt-line="253" data-line-type="context" data-line-index="345,332"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> view.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">addSubview</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">backend.view</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="325" data-line-type="change-addition" data-line-index="346,333"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> configureBottomScrim</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span></div><div data-line="326" data-alt-line="254" data-line-type="context" data-line-index="347,334"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> view.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">addSubview</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">tapSurfaceView</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="327" data-line-type="change-addition" data-line-index="350,335"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> view.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">addSubview</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span data-diff-span=""><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">loadingContainer</span></span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="328" data-line-type="change-addition" data-line-index="351,336"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> view.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">addSubview</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span data-diff-span=""><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">failureContainer</span></span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="329" data-line-type="change-addition" data-line-index="352,337"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> view.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">addSubview</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">centerPlayPauseButton</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="330" data-alt-line="257" data-line-type="context" data-line-index="353,338"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> view.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">addSubview</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">controlsContainer</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="331" data-line-type="change-addition" data-line-index="354,339"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> view.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">addSubview</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">scrubTimeBubble</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="332" data-alt-line="258" data-line-type="context" data-line-index="355,340"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> view.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">addSubview</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">closeButton</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="333" data-line-type="change-addition" data-line-index="356,341"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> loadingStack.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">addArrangedSubview</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">loadingView</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="334" data-line-type="change-addition" data-line-index="357,342"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> loadingStack.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">addArrangedSubview</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">loadingTextLabel</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="335" data-line-type="change-addition" data-line-index="358,343"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> loadingContainer.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">contentView</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">addSubview</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">loadingStack</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="336" data-line-type="change-addition" data-line-index="359,344"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> configureFailureCard</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span></div><div data-line="337" data-alt-line="259" data-line-type="context" data-line-index="360,345"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> closeButton.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">addTarget</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C">self</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, action</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> #selector</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">close</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, for</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> .</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">touchUpInside</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="338" data-alt-line="260" data-line-type="context" data-line-index="361,346"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> playPauseButton.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">addTarget</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C">self</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, action</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> #selector</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">togglePlayPause</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, for</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> .</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">touchUpInside</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="339" data-line-type="change-addition" data-line-index="362,347"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> centerPlayPauseButton.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">addTarget</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C">self</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, action</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> #selector</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">togglePlayPause</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, for</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> .</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">touchUpInside</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="340" data-alt-line="261" data-line-type="context" data-line-index="363,348"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> jumpBackButton.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">addTarget</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C">self</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, action</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> #selector</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">jumpBack</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, for</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> .</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">touchUpInside</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="341" data-alt-line="262" data-line-type="context" data-line-index="364,349"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> jumpForwardButton.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">addTarget</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C">self</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, action</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> #selector</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">jumpForward</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, for</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> .</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">touchUpInside</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="342" data-line-type="change-addition" data-line-index="365,350"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> retryButton.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">addTarget</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C">self</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, action</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> #selector</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">retryPlayback</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, for</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> .</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">touchUpInside</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="343" data-line-type="change-addition" data-line-index="366,351"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> failureCloseButton.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">addTarget</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C">self</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, action</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> #selector</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">close</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, for</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> .</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">touchUpInside</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="344" data-alt-line="263" data-line-type="context" data-line-index="367,352"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> audioButton.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">showsMenuAsPrimaryAction</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> true</span></div><div data-line="345" data-alt-line="264" data-line-type="context" data-line-index="368,353"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> captionsButton.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">showsMenuAsPrimaryAction</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> true</span></div><div data-line="346" data-line-type="change-addition" data-line-index="370,354"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> playPauseButton.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">layer</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">cornerRadius</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> </span><span data-diff-span=""><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7">28</span></span></div><div data-line="347" data-line-type="change-addition" data-line-index="371,355"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> centerPlayPauseButton.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">layer</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">cornerRadius</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 34</span></div><div data-line="348" data-line-type="change-addition" data-line-index="372,356"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> centerPlayPauseButton.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">alpha</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 0</span></div><div data-line="349" data-alt-line="266" data-line-type="context" data-line-index="373,357"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> scrubber.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">addTarget</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C">self</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, action</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> #selector</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">scrubbingStarted</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, for</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> .</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">touchDown</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="350" data-alt-line="267" data-line-type="context" data-line-index="374,358"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> scrubber.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">addTarget</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C">self</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, action</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> #selector</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">scrubberChanged</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, for</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> .</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">valueChanged</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="351" data-alt-line="268" data-line-type="context" data-line-index="375,359"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> scrubber.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">addTarget</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C">self</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, action</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> #selector</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">scrubbingEnded</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, for</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> [.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">touchUpInside</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, .</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">touchUpOutside</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, .</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">touchCancel</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">]</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">1 unmodified line</span></div></div></div><div data-line="353" data-alt-line="270" data-line-type="context" data-line-index="377,361"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> tap </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> UITapGestureRecognizer</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">target</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C"> self</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, action</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> #selector</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">toggleControlsVisibility</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">))</span></div><div data-line="354" data-alt-line="271" data-line-type="context" data-line-index="378,362"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> tap.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">cancelsTouchesInView</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> false</span></div><div data-line="355" data-alt-line="272" data-line-type="context" data-line-index="379,363"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> tapSurfaceView.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">addGestureRecognizer</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">tap</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="356" data-line-type="change-addition" data-line-index="380,364"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> leftDoubleTap </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> UITapGestureRecognizer</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">target</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C"> self</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, action</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> #selector</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">handleLeftDoubleTap</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">))</span></div><div data-line="357" data-line-type="change-addition" data-line-index="381,365"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> leftDoubleTap.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">numberOfTapsRequired</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 2</span></div><div data-line="358" data-line-type="change-addition" data-line-index="382,366"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> rightDoubleTap </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> UITapGestureRecognizer</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">target</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C"> self</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, action</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> #selector</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">handleRightDoubleTap</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">))</span></div><div data-line="359" data-line-type="change-addition" data-line-index="383,367"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> rightDoubleTap.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">numberOfTapsRequired</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 2</span></div><div data-line="360" data-line-type="change-addition" data-line-index="384,368"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> tap.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">require</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">toFail</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> leftDoubleTap</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="361" data-line-type="change-addition" data-line-index="385,369"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> tap.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">require</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">toFail</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> rightDoubleTap</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="362" data-line-type="change-addition" data-line-index="386,370"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> tapSurfaceView.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">addGestureRecognizer</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">leftDoubleTap</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="363" data-line-type="change-addition" data-line-index="387,371"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> tapSurfaceView.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">addGestureRecognizer</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">rightDoubleTap</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="364" data-alt-line="273" data-line-type="context" data-line-index="388,372">
|
|
</div><div data-line="365" data-alt-line="274" data-line-type="context" data-line-index="389,373"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> timeAndScrubRow </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> UIStackView</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">arrangedSubviews</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> [elapsedLabel, scrubber, remainingLabel]</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="366" data-alt-line="275" data-line-type="context" data-line-index="390,374"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> timeAndScrubRow.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">translatesAutoresizingMaskIntoConstraints</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> false</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">21 unmodified lines</span></div></div></div><div data-line="388" data-alt-line="297" data-line-type="context" data-line-index="412,396"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> stack.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">spacing</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 6</span></div><div data-line="389" data-alt-line="298" data-line-type="context" data-line-index="413,397"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> controlsContainer.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">contentView</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">addSubview</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">stack</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="390" data-alt-line="299" data-line-type="context" data-line-index="414,398">
|
|
</div><div data-line="391" data-line-type="change-addition" data-line-index="415,399"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> controlsMaximumWidthConstraint </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> controlsContainer.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">widthAnchor</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">constraint</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">lessThanOrEqualToConstant</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 430</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="392" data-line-type="change-addition" data-line-index="416,400">
|
|
</div><div data-line="393" data-alt-line="300" data-line-type="context" data-line-index="417,401"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> NSLayoutConstraint.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">activate</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">[</span></div><div data-line="394" data-alt-line="301" data-line-type="context" data-line-index="418,402"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> backend.view.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">leadingAnchor</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">.constraint</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">equalTo</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> view.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">leadingAnchor</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">,</span></div><div data-line="395" data-alt-line="302" data-line-type="context" data-line-index="419,403"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> backend.view.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">trailingAnchor</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">.constraint</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">equalTo</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> view.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">trailingAnchor</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">,</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">5 unmodified lines</span></div></div></div><div data-line="401" data-alt-line="308" data-line-type="context" data-line-index="425,409"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> tapSurfaceView.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">topAnchor</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">constraint</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">equalTo</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> view.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">topAnchor</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">,</span></div><div data-line="402" data-alt-line="309" data-line-type="context" data-line-index="426,410"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> tapSurfaceView.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">bottomAnchor</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">constraint</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">equalTo</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> view.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">bottomAnchor</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">,</span></div><div data-line="403" data-alt-line="310" data-line-type="context" data-line-index="427,411">
|
|
</div><div data-line="404" data-line-type="change-addition" data-line-index="437,412"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> </span><span data-diff-span=""><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">loadingContainer</span></span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">centerXAnchor</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">constraint</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">equalTo</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> view.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">centerXAnchor</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">,</span></div><div data-line="405" data-line-type="change-addition" data-line-index="438,413"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> </span><span data-diff-span=""><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">loadingContainer</span></span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">centerYAnchor</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">constraint</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">equalTo</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> view.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">centerYAnchor</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">,</span></div><div data-line="406" data-line-type="change-addition" data-line-index="439,414"><span data-diff-span=""><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> loadingStack.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">leadingAnchor</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">constraint</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">equalTo</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> loadingContainer.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">contentView</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">leadingAnchor</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, constant</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 18</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">,</span></span></div><div data-line="407" data-line-type="change-addition" data-line-index="440,415"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> </span><span data-diff-span=""><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">loadingStack.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">trailingAnchor</span></span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">constraint</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">equalTo</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> </span><span data-diff-span=""><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">loadingContainer.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">contentView</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">trailingAnchor</span></span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, constant</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> </span><span data-diff-span=""><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7">-18</span></span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">,</span></div><div data-line="408" data-line-type="change-addition" data-line-index="441,416"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> </span><span data-diff-span=""><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">loadingStack.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">topAnchor</span></span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">constraint</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">equalTo</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> </span><span data-diff-span=""><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">loadingContainer.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">contentView</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">topAnchor</span></span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, constant</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> </span><span data-diff-span=""><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7">14</span></span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">,</span></div><div data-line="409" data-line-type="change-addition" data-line-index="442,417"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> </span><span data-diff-span=""><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">loadingStack.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">bottomAnchor</span></span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">constraint</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">equalTo</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> </span><span data-diff-span=""><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">loadingContainer.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">contentView</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">bottomAnchor</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, constant</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> -14</span></span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">,</span></div><div data-line="410" data-line-type="change-addition" data-line-index="443,418">
|
|
</div><div data-line="411" data-line-type="change-addition" data-line-index="444,419"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> </span><span data-diff-span=""><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">failureContainer.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">centerXAnchor</span></span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">constraint</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span data-diff-span=""><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">equalTo</span></span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> </span><span data-diff-span=""><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">view.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">safeAreaLayoutGuide</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">centerXAnchor</span></span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">,</span></div><div data-line="412" data-line-type="change-addition" data-line-index="445,420"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> </span><span data-diff-span=""><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">failureContainer.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">centerYAnchor</span></span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">constraint</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span data-diff-span=""><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">equalTo</span></span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> </span><span data-diff-span=""><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">view.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">safeAreaLayoutGuide</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">centerYAnchor</span></span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">,</span></div><div data-line="413" data-line-type="change-addition" data-line-index="446,421"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> failureContainer.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">widthAnchor</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">constraint</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">lessThanOrEqualTo</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> view.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">safeAreaLayoutGuide</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">widthAnchor</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, constant</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> -40</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">,</span></div><div data-line="414" data-line-type="change-addition" data-line-index="447,422"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> failureContainer.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">widthAnchor</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">constraint</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">lessThanOrEqualToConstant</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 420</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">,</span></div><div data-line="415" data-line-type="change-addition" data-line-index="448,423">
|
|
</div><div data-line="416" data-line-type="change-addition" data-line-index="449,424"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> centerPlayPauseButton.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">centerXAnchor</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">constraint</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">equalTo</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> view.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">centerXAnchor</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">,</span></div><div data-line="417" data-line-type="change-addition" data-line-index="450,425"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> centerPlayPauseButton.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">centerYAnchor</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">constraint</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">equalTo</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> view.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">centerYAnchor</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">,</span></div><div data-line="418" data-line-type="change-addition" data-line-index="451,426"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> centerPlayPauseButton.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">widthAnchor</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">constraint</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">equalToConstant</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 68</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">,</span></div><div data-line="419" data-line-type="change-addition" data-line-index="452,427"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> centerPlayPauseButton.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">heightAnchor</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">constraint</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">equalToConstant</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 68</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">,</span></div><div data-line="420" data-line-type="change-addition" data-line-index="453,428">
|
|
</div><div data-line="421" data-line-type="change-addition" data-line-index="454,429"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> closeButton.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">widthAnchor</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">constraint</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">equalToConstant</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 44</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">,</span></div><div data-line="422" data-line-type="change-addition" data-line-index="455,430"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> closeButton.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">heightAnchor</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">constraint</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">equalToConstant</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 44</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">,</span></div><div data-line="423" data-alt-line="320" data-line-type="context" data-line-index="456,431"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> closeButton.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">topAnchor</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">constraint</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">equalTo</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> view.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">safeAreaLayoutGuide</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">topAnchor</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, constant</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 10</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">,</span></div><div data-line="424" data-alt-line="321" data-line-type="context" data-line-index="457,432"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> closeButton.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">trailingAnchor</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">constraint</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">equalTo</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> view.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">safeAreaLayoutGuide</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">trailingAnchor</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, constant</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> -10</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">,</span></div><div data-line="425" data-alt-line="322" data-line-type="context" data-line-index="458,433">
|
|
</div><div data-line="426" data-alt-line="323" data-line-type="context" data-line-index="459,434"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> controlsContainer.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">centerXAnchor</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">constraint</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">equalTo</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> view.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">safeAreaLayoutGuide</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">centerXAnchor</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">,</span></div><div data-line="427" data-alt-line="324" data-line-type="context" data-line-index="460,435"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> controlsContainer.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">widthAnchor</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">constraint</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">lessThanOrEqualTo</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> view.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">safeAreaLayoutGuide</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">widthAnchor</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, constant</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> -24</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">,</span></div><div data-line="428" data-line-type="change-addition" data-line-index="462,436"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> </span><span data-diff-span=""><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">controlsMaximumWidthConstraint</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">!</span></span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">,</span></div><div data-line="429" data-alt-line="326" data-line-type="context" data-line-index="463,437"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> controlsContainer.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">bottomAnchor</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">constraint</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">equalTo</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> view.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">safeAreaLayoutGuide</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">bottomAnchor</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, constant</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> -12</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">,</span></div><div data-line="430" data-alt-line="327" data-line-type="context" data-line-index="464,438">
|
|
</div><div data-line="431" data-alt-line="328" data-line-type="context" data-line-index="465,439"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> stack.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">leadingAnchor</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">constraint</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">equalTo</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> controlsContainer.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">contentView</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">leadingAnchor</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, constant</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 12</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">,</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">5 unmodified lines</span></div></div></div><div data-line="437" data-alt-line="334" data-line-type="context" data-line-index="471,445"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> remainingLabel.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">widthAnchor</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">constraint</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">equalToConstant</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 42</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">,</span></div><div data-line="438" data-alt-line="335" data-line-type="context" data-line-index="472,446"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> scrubber.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">widthAnchor</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">constraint</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">greaterThanOrEqualToConstant</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 160</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">,</span></div><div data-line="439" data-alt-line="336" data-line-type="context" data-line-index="473,447">
|
|
</div><div data-line="440" data-line-type="change-addition" data-line-index="482,448"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> </span><span data-diff-span=""><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">scrubTimeBubble.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">centerXAnchor</span></span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">constraint</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span data-diff-span=""><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">equalTo</span></span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> </span><span data-diff-span=""><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">controlsContainer.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">centerXAnchor</span></span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">,</span></div><div data-line="441" data-line-type="change-addition" data-line-index="483,449"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> </span><span data-diff-span=""><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">scrubTimeBubble.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">bottomAnchor</span></span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">constraint</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span data-diff-span=""><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">equalTo</span></span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> </span><span data-diff-span=""><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">controlsContainer.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">topAnchor</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, constant</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> -8</span></span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">,</span></div><div data-line="442" data-line-type="change-addition" data-line-index="484,450"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> </span><span data-diff-span=""><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">scrubTimeBubble</span></span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">widthAnchor</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">constraint</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span data-diff-span=""><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">greaterThanOrEqualToConstant</span></span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> </span><span data-diff-span=""><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7">64</span></span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">,</span></div><div data-line="443" data-line-type="change-addition" data-line-index="485,451"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> </span><span data-diff-span=""><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">scrubTimeBubble</span></span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">heightAnchor</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">constraint</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">equalToConstant</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> </span><span data-diff-span=""><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7">28</span></span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">,</span></div><div data-line="444" data-line-type="change-addition" data-line-index="486,452">
|
|
</div><div data-line="445" data-line-type="change-addition" data-line-index="487,453"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> </span><span data-diff-span=""><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">jumpBackButton.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">widthAnchor</span></span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">constraint</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">equalToConstant</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> </span><span data-diff-span=""><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7">44</span></span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">,</span></div><div data-line="446" data-line-type="change-addition" data-line-index="488,454"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> </span><span data-diff-span=""><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">jumpBackButton.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">heightAnchor</span></span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">constraint</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">equalToConstant</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> </span><span data-diff-span=""><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7">44</span></span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">,</span></div><div data-line="447" data-line-type="change-addition" data-line-index="489,455"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> </span><span data-diff-span=""><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">playPauseButton.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">widthAnchor</span></span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">constraint</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">equalToConstant</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> </span><span data-diff-span=""><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7">56</span></span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">,</span></div><div data-line="448" data-line-type="change-addition" data-line-index="490,456"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> playPauseButton.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">heightAnchor</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">constraint</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">equalToConstant</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 56</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">,</span></div><div data-line="449" data-line-type="change-addition" data-line-index="491,457"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> jumpForwardButton.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">widthAnchor</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">constraint</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">equalToConstant</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 44</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">,</span></div><div data-line="450" data-line-type="change-addition" data-line-index="492,458"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> jumpForwardButton.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">heightAnchor</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">constraint</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">equalToConstant</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 44</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">,</span></div><div data-line="451" data-line-type="change-addition" data-line-index="493,459"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> audioButton.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">widthAnchor</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">constraint</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">equalToConstant</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 44</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">,</span></div><div data-line="452" data-line-type="change-addition" data-line-index="494,460"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> audioButton.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">heightAnchor</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">constraint</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">equalToConstant</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 44</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">,</span></div><div data-line="453" data-alt-line="345" data-line-type="context" data-line-index="495,461"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> playbackCluster.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">centerXAnchor</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">constraint</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">equalTo</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> controlRow.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">centerXAnchor</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">,</span></div><div data-line="454" data-line-type="change-addition" data-line-index="498,462"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> captionsButton.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">widthAnchor</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">constraint</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">equalToConstant</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> </span><span data-diff-span=""><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7">44</span></span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">,</span></div><div data-line="455" data-line-type="change-addition" data-line-index="499,463"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> captionsButton.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">heightAnchor</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">constraint</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">equalToConstant</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> </span><span data-diff-span=""><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7">44</span></span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="456" data-alt-line="348" data-line-type="context" data-line-index="500,464"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> ])</span></div><div data-line="457" data-alt-line="349" data-line-type="context" data-line-index="501,465"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> }</span></div><div data-line="458" data-alt-line="350" data-line-type="context" data-line-index="502,466">
|
|
</div><div data-line="459" data-alt-line="351" data-line-type="context" data-line-index="503,467"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE"> func</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> showFailure</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">_</span><span style="--diffs-token-dark:#A3A3A3;--diffs-token-light:#636363"> error</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">: </span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C">Error</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-line="460" data-line-type="change-addition" data-line-index="504,468"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> controlsTimer</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">?</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">invalidate</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span></div><div data-line="461" data-alt-line="352" data-line-type="context" data-line-index="505,469"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> loadingView.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">stopAnimating</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span></div><div data-line="462" data-line-type="change-addition" data-line-index="509,470"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> </span><span data-diff-span=""><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">loadingContainer</span></span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">isHidden</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> true</span></div><div data-line="463" data-line-type="change-addition" data-line-index="510,471"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> </span><span data-diff-span=""><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">controlsContainer.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">alpha</span></span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> </span><span data-diff-span=""><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7">0</span></span></div><div data-line="464" data-line-type="change-addition" data-line-index="511,472"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> </span><span data-diff-span=""><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">controlsContainer.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">isUserInteractionEnabled</span></span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> false</span></div><div data-line="465" data-line-type="change-addition" data-line-index="512,473"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> failureDetailLabel.text </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> error.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">localizedDescription</span></div><div data-line="466" data-line-type="change-addition" data-line-index="513,474"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> failureContainer.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">isHidden</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> false</span></div><div data-line="467" data-line-type="change-addition" data-line-index="514,475"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> closeButton.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">alpha</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 1</span></div><div data-line="468" data-line-type="change-addition" data-line-index="515,476"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> closeButton.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">isUserInteractionEnabled</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> true</span></div><div data-line="469" data-alt-line="356" data-line-type="context" data-line-index="516,477"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">#</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">if</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> DEBUG</span></div><div data-line="470" data-alt-line="357" data-line-type="context" data-line-index="517,478"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> print</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">"[DreamioNativePlayer] error=</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">\(</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">URLRedactor.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">redactedURLString</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">error.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">localizedDescription</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">)</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">"</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="471" data-alt-line="358" data-line-type="context" data-line-index="518,479"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">#</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">endif</span></div><div data-line="472" data-alt-line="359" data-line-type="context" data-line-index="519,480"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-line="473" data-alt-line="360" data-line-type="context" data-line-index="520,481">
|
|
</div><div data-line="474" data-line-type="change-addition" data-line-index="521,482"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> @</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">objc</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE"> func</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> retryPlayback</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-line="475" data-line-type="change-addition" data-line-index="522,483"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> backend.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">stop</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span></div><div data-line="476" data-line-type="change-addition" data-line-index="523,484"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> progressTimer</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">?</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">invalidate</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span></div><div data-line="477" data-line-type="change-addition" data-line-index="524,485"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> audioMenuSignature </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> nil</span></div><div data-line="478" data-line-type="change-addition" data-line-index="525,486"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> captionsMenuSignature </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> nil</span></div><div data-line="479" data-line-type="change-addition" data-line-index="526,487"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> startPlayback</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span></div><div data-line="480" data-line-type="change-addition" data-line-index="527,488"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-line="481" data-line-type="change-addition" data-line-index="528,489">
|
|
</div><div data-line="482" data-alt-line="361" data-line-type="context" data-line-index="529,490"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> @</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">objc</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE"> func</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> close</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-line="483" data-alt-line="362" data-line-type="context" data-line-index="530,491"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> dismiss</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">animated</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> true</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="484" data-alt-line="363" data-line-type="context" data-line-index="531,492"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-line="485" data-alt-line="364" data-line-type="context" data-line-index="532,493">
|
|
</div><div data-line="486" data-alt-line="365" data-line-type="context" data-line-index="533,494"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> @</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">objc</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE"> func</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> togglePlayPause</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-line="487" data-alt-line="366" data-line-type="context" data-line-index="534,495"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> backend.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">togglePlayPause</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span></div><div data-line="488" data-line-type="change-addition" data-line-index="535,496"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> flashCenterPlayPauseIcon</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span></div><div data-line="489" data-alt-line="367" data-line-type="context" data-line-index="536,497"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> revealControls</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span></div><div data-line="490" data-alt-line="368" data-line-type="context" data-line-index="537,498"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-line="491" data-alt-line="369" data-line-type="context" data-line-index="538,499">
|
|
</div><div data-line="492" data-alt-line="370" data-line-type="context" data-line-index="539,500"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> @</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">objc</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE"> func</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> jumpBack</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-line="493" data-alt-line="371" data-line-type="context" data-line-index="540,501"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> backend.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">jump</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">by</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> -15</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="494" data-line-type="change-addition" data-line-index="541,502"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> UIImpactFeedbackGenerator</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">style</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> .</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">light</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">impactOccurred</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span></div><div data-line="495" data-alt-line="372" data-line-type="context" data-line-index="542,503"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> revealControls</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span></div><div data-line="496" data-alt-line="373" data-line-type="context" data-line-index="543,504"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-line="497" data-alt-line="374" data-line-type="context" data-line-index="544,505">
|
|
</div><div data-line="498" data-alt-line="375" data-line-type="context" data-line-index="545,506"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> @</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">objc</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE"> func</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> jumpForward</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-line="499" data-alt-line="376" data-line-type="context" data-line-index="546,507"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> backend.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">jump</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">by</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 15</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="500" data-line-type="change-addition" data-line-index="547,508"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> UIImpactFeedbackGenerator</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">style</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> .</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">light</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">impactOccurred</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span></div><div data-line="501" data-alt-line="377" data-line-type="context" data-line-index="548,509"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> revealControls</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span></div><div data-line="502" data-alt-line="378" data-line-type="context" data-line-index="549,510"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-line="503" data-alt-line="379" data-line-type="context" data-line-index="550,511">
|
|
</div><div data-line="504" data-alt-line="380" data-line-type="context" data-line-index="551,512"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> @</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">objc</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE"> func</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> scrubbingStarted</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-line="505" data-alt-line="381" data-line-type="context" data-line-index="552,513"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> isScrubbing </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> true</span></div><div data-line="506" data-alt-line="382" data-line-type="context" data-line-index="553,514"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> controlsTimer</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">?</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">invalidate</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span></div><div data-line="507" data-line-type="change-addition" data-line-index="554,515"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> scrubber.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">setThumbImage</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">NativePlayerViewController.scrubberThumbImage</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">diameter</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 20</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, for</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> .</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">normal</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="508" data-line-type="change-addition" data-line-index="555,516"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> scrubber.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">setThumbImage</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">NativePlayerViewController.scrubberThumbImage</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">diameter</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 22</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, for</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> .</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">highlighted</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="509" data-line-type="change-addition" data-line-index="556,517"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> UISelectionFeedbackGenerator</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">selectionChanged</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span></div><div data-line="510" data-line-type="change-addition" data-line-index="557,518"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> updateScrubPreview</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span></div><div data-line="511" data-line-type="change-addition" data-line-index="558,519"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> UIView.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">animate</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">withDuration</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 0.16</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-line="512" data-line-type="change-addition" data-line-index="559,520"><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C"> self</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">scrubTimeBubble</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">alpha</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 1</span></div><div data-line="513" data-line-type="change-addition" data-line-index="560,521"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-line="514" data-alt-line="383" data-line-type="context" data-line-index="561,522"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-line="515" data-alt-line="384" data-line-type="context" data-line-index="562,523">
|
|
</div><div data-line="516" data-alt-line="385" data-line-type="context" data-line-index="563,524"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> @</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">objc</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE"> func</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> scrubberChanged</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-line="517" data-line-type="change-addition" data-line-index="565,525"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> </span><span data-diff-span=""><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">updateScrubPreview</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span></span></div><div data-line="518" data-alt-line="387" data-line-type="context" data-line-index="566,526"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-line="519" data-alt-line="388" data-line-type="context" data-line-index="567,527">
|
|
</div><div data-line="520" data-alt-line="389" data-line-type="context" data-line-index="568,528"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> @</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">objc</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE"> func</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> scrubbingEnded</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-line="521" data-alt-line="390" data-line-type="context" data-line-index="569,529"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> backend.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">seek</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">to</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> scrubber.value</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="522" data-alt-line="391" data-line-type="context" data-line-index="570,530"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> isScrubbing </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> false</span></div><div data-line="523" data-line-type="change-addition" data-line-index="571,531"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> scrubber.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">setThumbImage</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">NativePlayerViewController.scrubberThumbImage</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">diameter</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 14</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, for</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> .</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">normal</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="524" data-line-type="change-addition" data-line-index="572,532"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> scrubber.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">setThumbImage</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">NativePlayerViewController.scrubberThumbImage</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">diameter</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 18</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, for</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> .</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">highlighted</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="525" data-line-type="change-addition" data-line-index="573,533"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> UIImpactFeedbackGenerator</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">style</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> .</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">soft</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">impactOccurred</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span></div><div data-line="526" data-line-type="change-addition" data-line-index="574,534"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> UIView.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">animate</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">withDuration</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 0.18</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-line="527" data-line-type="change-addition" data-line-index="575,535"><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C"> self</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">scrubTimeBubble</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">alpha</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 0</span></div><div data-line="528" data-line-type="change-addition" data-line-index="576,536"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-line="529" data-alt-line="392" data-line-type="context" data-line-index="577,537"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> revealControls</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span></div><div data-line="530" data-alt-line="393" data-line-type="context" data-line-index="578,538"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-line="531" data-alt-line="394" data-line-type="context" data-line-index="579,539">
|
|
</div><div data-line="532" data-line-type="change-addition" data-line-index="580,540"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> @</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">objc</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE"> func</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> handleLeftDoubleTap</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">_</span><span style="--diffs-token-dark:#A3A3A3;--diffs-token-light:#636363"> recognizer</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">: UITapGestureRecognizer</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-line="533" data-line-type="change-addition" data-line-index="581,541"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> guard</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> recognizer.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">location</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">in</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> tapSurfaceView</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.x </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"><</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> tapSurfaceView.bounds.midX </span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">else</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> return</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-line="534" data-line-type="change-addition" data-line-index="582,542"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> jumpBack</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span></div><div data-line="535" data-line-type="change-addition" data-line-index="583,543"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-line="536" data-line-type="change-addition" data-line-index="584,544">
|
|
</div><div data-line="537" data-line-type="change-addition" data-line-index="585,545"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> @</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">objc</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE"> func</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> handleRightDoubleTap</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">_</span><span style="--diffs-token-dark:#A3A3A3;--diffs-token-light:#636363"> recognizer</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">: UITapGestureRecognizer</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-line="538" data-line-type="change-addition" data-line-index="586,546"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> guard</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> recognizer.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">location</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">in</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> tapSurfaceView</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.x </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">>=</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> tapSurfaceView.bounds.midX </span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">else</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> return</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-line="539" data-line-type="change-addition" data-line-index="587,547"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> jumpForward</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span></div><div data-line="540" data-line-type="change-addition" data-line-index="588,548"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-line="541" data-line-type="change-addition" data-line-index="589,549">
|
|
</div><div data-line="542" data-alt-line="395" data-line-type="context" data-line-index="590,550"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> @</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">objc</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE"> func</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> toggleControlsVisibility</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-line="543" data-alt-line="396" data-line-type="context" data-line-index="591,551"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> if</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> controlsContainer.alpha </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"><</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 1</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-line="544" data-alt-line="397" data-line-type="context" data-line-index="592,552"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> revealControls</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">30 unmodified lines</span></div></div></div><div data-line="575" data-alt-line="428" data-line-type="context" data-line-index="623,583"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> }</span></div><div data-line="576" data-alt-line="429" data-line-type="context" data-line-index="624,584">
|
|
</div><div data-line="577" data-alt-line="430" data-line-type="context" data-line-index="625,585"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> delayActions </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> UIMenu</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span></div><div data-line="578" data-line-type="change-addition" data-line-index="627,586"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> title</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "</span><span data-diff-span=""><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">Subtitle </span></span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">Delay"</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">,</span></div><div data-line="579" data-alt-line="432" data-line-type="context" data-line-index="628,587"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> options</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> .</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">displayInline</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">,</span></div><div data-line="580" data-alt-line="433" data-line-type="context" data-line-index="629,588"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> children</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> [</span></div><div data-line="581" data-alt-line="434" data-line-type="context" data-line-index="630,589"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> UIAction</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">title</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "Decrease 0.5s"</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> [</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">weak</span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C"> self</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">] _ </span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">in</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">6 unmodified lines</span></div></div></div><div data-line="588" data-alt-line="441" data-line-type="context" data-line-index="637,596"><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C"> self</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">?</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">captionsMenuSignature</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> nil</span></div><div data-line="589" data-alt-line="442" data-line-type="context" data-line-index="638,597"><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C"> self</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">?</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">refreshControls</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span></div><div data-line="590" data-alt-line="443" data-line-type="context" data-line-index="639,598"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> },</span></div><div data-line="591" data-line-type="change-addition" data-line-index="640,599"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> UIAction</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">title</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "Reset Delay"</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> [</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">weak</span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C"> self</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">] _ </span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">in</span></div><div data-line="592" data-line-type="change-addition" data-line-index="641,600"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> guard</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C"> self</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> else</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> return</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-line="593" data-line-type="change-addition" data-line-index="642,601"><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C"> self</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">backend</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">adjustSubtitleDelay</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">by</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> -</span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C">self</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">backend</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">subtitleDelay</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="594" data-line-type="change-addition" data-line-index="643,602"><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C"> self</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">captionsMenuSignature</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> nil</span></div><div data-line="595" data-line-type="change-addition" data-line-index="644,603"><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C"> self</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">refreshControls</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span></div><div data-line="596" data-line-type="change-addition" data-line-index="645,604"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">,</span></div><div data-line="597" data-alt-line="444" data-line-type="context" data-line-index="646,605"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> UIAction</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span></div><div data-line="598" data-alt-line="445" data-line-type="context" data-line-index="647,606"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> title</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "Current: </span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">\(</span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C">String</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">format</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "%.1fs"</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, backend.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">subtitleDelay</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">)</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">"</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">,</span></div><div data-line="599" data-alt-line="446" data-line-type="context" data-line-index="648,607"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> attributes</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> .</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">disabled</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">1 unmodified line</span></div></div></div><div data-line="601" data-alt-line="448" data-line-type="context" data-line-index="650,609"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> ]</span></div><div data-line="602" data-alt-line="449" data-line-type="context" data-line-index="651,610"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> )</span></div><div data-line="603" data-alt-line="450" data-line-type="context" data-line-index="652,611">
|
|
</div><div data-line="604" data-line-type="change-addition" data-line-index="654,612"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> return</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> UIMenu</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">title</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "</span><span data-diff-span=""><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">Subtitles</span></span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">"</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, children</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> trackActions </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">+</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> [delayActions]</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="605" data-alt-line="452" data-line-type="context" data-line-index="655,613"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> }</span></div><div data-line="606" data-alt-line="453" data-line-type="context" data-line-index="656,614">
|
|
</div><div data-line="607" data-alt-line="454" data-line-type="context" data-line-index="657,615"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE"> func</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> audioMenu</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> -></span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> UIMenu </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">{</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">23 unmodified lines</span></div></div></div><div data-line="631" data-alt-line="478" data-line-type="context" data-line-index="681,639"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> }</span></div><div data-line="632" data-alt-line="479" data-line-type="context" data-line-index="682,640"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> }</span></div><div data-line="633" data-alt-line="480" data-line-type="context" data-line-index="683,641">
|
|
</div><div data-line="634" data-line-type="change-addition" data-line-index="685,642"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> return</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> UIMenu</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">title</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "Audio</span><span data-diff-span=""><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> Track</span></span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">"</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, children</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> trackActions</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="635" data-alt-line="482" data-line-type="context" data-line-index="686,643"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> }</span></div><div data-line="636" data-alt-line="483" data-line-type="context" data-line-index="687,644">
|
|
</div><div data-line="637" data-alt-line="484" data-line-type="context" data-line-index="688,645"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE"> func</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> startProgressUpdates</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">14 unmodified lines</span></div></div></div><div data-line="652" data-alt-line="499" data-line-type="context" data-line-index="703,660"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> updateCaptionsMenuIfNeeded</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">subtitleTracks</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> subtitleTracks</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="653" data-alt-line="500" data-line-type="context" data-line-index="704,661"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> elapsedLabel.text </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> PlaybackTimeFormatter.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">label</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">for</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> backend.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">currentTime</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="654" data-alt-line="501" data-line-type="context" data-line-index="705,662"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> remainingLabel.text </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "-</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">\(</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">PlaybackTimeFormatter.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">label</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">for</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> backend.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">remainingTime</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">)</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">"</span></div><div data-line="655" data-line-type="change-addition" data-line-index="706,663"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> scrubber.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">accessibilityValue</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">\(</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">elapsedLabel.text </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">??</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "0:00"</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">)</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> elapsed, </span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">\(</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">remainingLabel.text </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">??</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "-0:00"</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">)</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> remaining"</span></div><div data-line="656" data-alt-line="502" data-line-type="context" data-line-index="707,664"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> if</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> !</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">isScrubbing </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">{</span></div><div data-line="657" data-alt-line="503" data-line-type="context" data-line-index="708,665"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> scrubber.value </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> backend.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">position</span></div><div data-line="658" data-alt-line="504" data-line-type="context" data-line-index="709,666"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">9 unmodified lines</span></div></div></div><div data-line="668" data-alt-line="514" data-line-type="context" data-line-index="719,676"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> hasSelectableTrack </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> AudioOptionMapper.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">options</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">from</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> audioTracks</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.count </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">></span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 1</span></div><div data-line="669" data-alt-line="515" data-line-type="context" data-line-index="720,677"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> audioButton.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">isEnabled</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> hasSelectableTrack</span></div><div data-line="670" data-alt-line="516" data-line-type="context" data-line-index="721,678"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> audioButton.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">alpha</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> hasSelectableTrack </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">?</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 1</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> :</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 0.45</span></div><div data-line="671" data-line-type="change-addition" data-line-index="722,679"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> audioButton.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">accessibilityHint</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> hasSelectableTrack </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">?</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "Opens available audio tracks."</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> :</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "Only one audio track is available."</span></div><div data-line="672" data-alt-line="517" data-line-type="context" data-line-index="723,680"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> guard</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> signature </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">!=</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> audioMenuSignature </span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">else</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-line="673" data-alt-line="518" data-line-type="context" data-line-index="724,681"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> return</span></div><div data-line="674" data-alt-line="519" data-line-type="context" data-line-index="725,682"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">14 unmodified lines</span></div></div></div><div data-line="689" data-alt-line="534" data-line-type="context" data-line-index="740,697"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> )</span></div><div data-line="690" data-alt-line="535" data-line-type="context" data-line-index="741,698"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> hasSelectableTrack </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> subtitleTracks.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">contains</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C"> $0</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">id</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> >=</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 0</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-line="691" data-alt-line="536" data-line-type="context" data-line-index="742,699"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> captionsButton.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">isEnabled</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> hasSelectableTrack</span></div><div data-line="692" data-line-type="change-addition" data-line-index="743,700"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> captionsButton.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">alpha</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> hasSelectableTrack </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">?</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 1</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> :</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 0.45</span></div><div data-line="693" data-line-type="change-addition" data-line-index="744,701"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> captionsButton.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">accessibilityHint</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> hasSelectableTrack </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">?</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "Opens subtitle tracks and delay controls."</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> :</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "No subtitle tracks are available yet."</span></div><div data-line="694" data-alt-line="537" data-line-type="context" data-line-index="745,702"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> guard</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> signature </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">!=</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> captionsMenuSignature </span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">else</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-line="695" data-alt-line="538" data-line-type="context" data-line-index="746,703"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> return</span></div><div data-line="696" data-alt-line="539" data-line-type="context" data-line-index="747,704"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">27 unmodified lines</span></div></div></div><div data-line="724" data-alt-line="567" data-line-type="context" data-line-index="775,732"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE"> func</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> revealControls</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-line="725" data-alt-line="568" data-line-type="context" data-line-index="776,733"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> controlsContainer.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">isUserInteractionEnabled</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> true</span></div><div data-line="726" data-alt-line="569" data-line-type="context" data-line-index="777,734"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> closeButton.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">isUserInteractionEnabled</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> true</span></div><div data-line="727" data-line-type="change-addition" data-line-index="779,735"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> </span><span data-diff-span=""><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> animations </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> </span></span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">{</span></div><div data-line="728" data-alt-line="571" data-line-type="context" data-line-index="780,736"><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C"> self</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">controlsContainer</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">alpha</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 1</span></div><div data-line="729" data-alt-line="572" data-line-type="context" data-line-index="781,737"><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C"> self</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">closeButton</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">alpha</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 1</span></div><div data-line="730" data-line-type="change-addition" data-line-index="782,738"><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C"> self</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">controlsContainer</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">transform</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> .identity</span></div><div data-line="731" data-line-type="change-addition" data-line-index="783,739"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-line="732" data-line-type="change-addition" data-line-index="784,740"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> if</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> UIAccessibility.isReduceMotionEnabled </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">{</span></div><div data-line="733" data-line-type="change-addition" data-line-index="785,741"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> animations</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span></div><div data-line="734" data-line-type="change-addition" data-line-index="786,742"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> else</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-line="735" data-line-type="change-addition" data-line-index="787,743"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> controlsContainer.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">transform</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> CGAffineTransform</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">translationX</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 0</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, y</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 8</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">scaledBy</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">x</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 0.98</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, y</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 0.98</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="736" data-line-type="change-addition" data-line-index="788,744"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> UIView.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">animate</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">withDuration</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 0.22</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, delay</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 0</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, options</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> [.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">curveEaseOut</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">], animations</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> animations</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="737" data-alt-line="573" data-line-type="context" data-line-index="789,745"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-line="738" data-alt-line="574" data-line-type="context" data-line-index="790,746"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> scheduleControlsHide</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span></div><div data-line="739" data-alt-line="575" data-line-type="context" data-line-index="791,747"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-line="740" data-alt-line="576" data-line-type="context" data-line-index="792,748">
|
|
</div><div data-line="741" data-alt-line="577" data-line-type="context" data-line-index="793,749"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE"> func</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> hideControls</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-line="742" data-line-type="change-addition" data-line-index="794,750"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> guard</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> !</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">isScrubbing, failureContainer.isHidden, loadingContainer.isHidden </span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">else</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> return</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-line="743" data-alt-line="578" data-line-type="context" data-line-index="795,751"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> controlsContainer.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">isUserInteractionEnabled</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> false</span></div><div data-line="744" data-alt-line="579" data-line-type="context" data-line-index="796,752"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> closeButton.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">isUserInteractionEnabled</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> false</span></div><div data-line="745" data-line-type="change-addition" data-line-index="798,753"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> UIView.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">animate</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">withDuration</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 0.</span><span data-diff-span=""><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7">28</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, delay</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 0</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, options</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> [.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">curveEaseInOut</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">]</span></span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-line="746" data-alt-line="581" data-line-type="context" data-line-index="799,754"><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C"> self</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">controlsContainer</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">alpha</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 0</span></div><div data-line="747" data-alt-line="582" data-line-type="context" data-line-index="800,755"><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C"> self</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">closeButton</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">alpha</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 0</span></div><div data-line="748" data-alt-line="583" data-line-type="context" data-line-index="801,756"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-separator="line-info"><div data-separator-wrapper=""><div data-separator-content=""><span data-unmodified-lines="">1 unmodified line</span></div></div></div><div data-line="750" data-alt-line="585" data-line-type="context" data-line-index="803,758">
|
|
</div><div data-line="751" data-alt-line="586" data-line-type="context" data-line-index="804,759"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE"> func</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> scheduleControlsHide</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-line="752" data-alt-line="587" data-line-type="context" data-line-index="805,760"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> controlsTimer</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">?</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">invalidate</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span></div><div data-line="753" data-line-type="change-addition" data-line-index="807,761"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> guard</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> backend.isPlaying</span><span data-diff-span=""><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">, </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">!</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">isScrubbing, failureContainer.isHidden, loadingContainer.isHidden </span></span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">else</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-line="754" data-alt-line="589" data-line-type="context" data-line-index="808,762"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> return</span></div><div data-line="755" data-alt-line="590" data-line-type="context" data-line-index="809,763"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-line="756" data-line-type="change-addition" data-line-index="811,764"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> controlsTimer </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> Timer.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">scheduledTimer</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">withTimeInterval</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> </span><span data-diff-span=""><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7">4.5</span></span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, repeats</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> false</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> [</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">weak</span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C"> self</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">] _ </span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">in</span></div><div data-line="757" data-alt-line="592" data-line-type="context" data-line-index="812,765"><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C"> self</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">?</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">hideControls</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span></div><div data-line="758" data-alt-line="593" data-line-type="context" data-line-index="813,766"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-line="759" data-alt-line="594" data-line-type="context" data-line-index="814,767"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-line="760" data-alt-line="595" data-line-type="context" data-line-index="815,768">
|
|
</div><div data-line="761" data-line-type="change-addition" data-line-index="817,769"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE"> func</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> </span><span data-diff-span=""><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">configureBottomScrim</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span></span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-line="762" data-line-type="change-addition" data-line-index="818,770"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> bottomScrimLayer.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">colors</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> [</span></div><div data-line="763" data-line-type="change-addition" data-line-index="819,771"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> UIColor.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">clear</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">cgColor</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">,</span></div><div data-line="764" data-line-type="change-addition" data-line-index="820,772"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> UIColor.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">black</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">withAlphaComponent</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7">0.12</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">cgColor</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">,</span></div><div data-line="765" data-line-type="change-addition" data-line-index="821,773"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> UIColor.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">black</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">withAlphaComponent</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7">0.48</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">cgColor</span></div><div data-line="766" data-line-type="change-addition" data-line-index="822,774"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> ]</span></div><div data-line="767" data-line-type="change-addition" data-line-index="823,775"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> bottomScrimLayer.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">locations</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> [</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7">0</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">, </span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7">0.58</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">, </span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7">1</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">]</span></div><div data-line="768" data-line-type="change-addition" data-line-index="824,776"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> view.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">layer</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">insertSublayer</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">bottomScrimLayer, above</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> backend.view.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">layer</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="769" data-line-type="change-addition" data-line-index="825,777"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-line="770" data-line-type="change-addition" data-line-index="826,778">
|
|
</div><div data-line="771" data-line-type="change-addition" data-line-index="827,779"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE"> func</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> configureFailureCard</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-line="772" data-line-type="change-addition" data-line-index="828,780"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> buttonRow </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> UIStackView</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">arrangedSubviews</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> [failureCloseButton, retryButton]</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="773" data-line-type="change-addition" data-line-index="829,781"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> buttonRow.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">translatesAutoresizingMaskIntoConstraints</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> false</span></div><div data-line="774" data-line-type="change-addition" data-line-index="830,782"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> buttonRow.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">axis</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> .</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">horizontal</span></div><div data-line="775" data-line-type="change-addition" data-line-index="831,783"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> buttonRow.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">distribution</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> .</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">fillEqually</span></div><div data-line="776" data-line-type="change-addition" data-line-index="832,784"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> buttonRow.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">spacing</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 10</span></div><div data-line="777" data-line-type="change-addition" data-line-index="833,785">
|
|
</div><div data-line="778" data-line-type="change-addition" data-line-index="834,786"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> stack </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> UIStackView</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">arrangedSubviews</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> [failureTitleLabel, failureDetailLabel, buttonRow]</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="779" data-line-type="change-addition" data-line-index="835,787"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> stack.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">translatesAutoresizingMaskIntoConstraints</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> false</span></div><div data-line="780" data-line-type="change-addition" data-line-index="836,788"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> stack.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">axis</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> .</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">vertical</span></div><div data-line="781" data-line-type="change-addition" data-line-index="837,789"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> stack.alignment </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> .</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">fill</span></div><div data-line="782" data-line-type="change-addition" data-line-index="838,790"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> stack.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">spacing</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 14</span></div><div data-line="783" data-line-type="change-addition" data-line-index="839,791"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> failureContainer.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">contentView</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">addSubview</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">stack</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="784" data-line-type="change-addition" data-line-index="840,792">
|
|
</div><div data-line="785" data-line-type="change-addition" data-line-index="841,793"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> NSLayoutConstraint.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">activate</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">[</span></div><div data-line="786" data-line-type="change-addition" data-line-index="842,794"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> stack.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">leadingAnchor</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">.constraint</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">equalTo</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> failureContainer.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">contentView</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">leadingAnchor</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, constant</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 20</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">,</span></div><div data-line="787" data-line-type="change-addition" data-line-index="843,795"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> stack.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">trailingAnchor</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">.constraint</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">equalTo</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> failureContainer.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">contentView</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">trailingAnchor</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, constant</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> -20</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">,</span></div><div data-line="788" data-line-type="change-addition" data-line-index="844,796"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> stack.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">topAnchor</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">.constraint</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">equalTo</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> failureContainer.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">contentView</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">topAnchor</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, constant</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 20</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">,</span></div><div data-line="789" data-line-type="change-addition" data-line-index="845,797"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> stack.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">bottomAnchor</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">.constraint</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">equalTo</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> failureContainer.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">contentView</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">bottomAnchor</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, constant</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> -20</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">,</span></div><div data-line="790" data-line-type="change-addition" data-line-index="846,798"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> retryButton.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">heightAnchor</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">.constraint</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">greaterThanOrEqualToConstant</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 44</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">,</span></div><div data-line="791" data-line-type="change-addition" data-line-index="847,799"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> failureCloseButton.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">heightAnchor</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">.constraint</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">greaterThanOrEqualToConstant</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 44</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="792" data-line-type="change-addition" data-line-index="848,800"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> ]</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="793" data-line-type="change-addition" data-line-index="849,801"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-line="794" data-line-type="change-addition" data-line-index="850,802">
|
|
</div><div data-line="795" data-line-type="change-addition" data-line-index="851,803"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE"> func</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> configureAccessibility</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-line="796" data-line-type="change-addition" data-line-index="852,804"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> scrubber.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">accessibilityLabel</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "Playback Position"</span></div><div data-line="797" data-line-type="change-addition" data-line-index="853,805"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> scrubber.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">accessibilityHint</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "Adjusts the playback position."</span></div><div data-line="798" data-line-type="change-addition" data-line-index="854,806"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> playPauseButton.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">accessibilityHint</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "Toggles playback."</span></div><div data-line="799" data-line-type="change-addition" data-line-index="855,807"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> jumpBackButton.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">accessibilityHint</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "Rewinds 15 seconds when seeking is available."</span></div><div data-line="800" data-line-type="change-addition" data-line-index="856,808"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> jumpForwardButton.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">accessibilityHint</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "Skips ahead 15 seconds when seeking is available."</span></div><div data-line="801" data-line-type="change-addition" data-line-index="857,809"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> view.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">accessibilityCustomActions</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> [</span></div><div data-line="802" data-line-type="change-addition" data-line-index="858,810"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> UIAccessibilityCustomAction</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">name</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "Jump Back 15 Seconds"</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, target</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C"> self</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, selector</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> #selector</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">accessibilityJumpBack</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">))</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">,</span></div><div data-line="803" data-line-type="change-addition" data-line-index="859,811"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> UIAccessibilityCustomAction</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">name</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "Jump Forward 15 Seconds"</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, target</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C"> self</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, selector</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> #selector</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">accessibilityJumpForward</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">))</span></div><div data-line="804" data-line-type="change-addition" data-line-index="860,812"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> ]</span></div><div data-line="805" data-line-type="change-addition" data-line-index="861,813"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-line="806" data-line-type="change-addition" data-line-index="862,814">
|
|
</div><div data-line="807" data-line-type="change-addition" data-line-index="863,815"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> @</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">objc</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE"> func</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> accessibilityJumpBack</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> -></span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C"> Bool</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-line="808" data-line-type="change-addition" data-line-index="864,816"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> jumpBack</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span></div><div data-line="809" data-line-type="change-addition" data-line-index="865,817"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> return</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> true</span></div><div data-line="810" data-line-type="change-addition" data-line-index="866,818"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-line="811" data-line-type="change-addition" data-line-index="867,819">
|
|
</div><div data-line="812" data-line-type="change-addition" data-line-index="868,820"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> @</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">objc</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE"> func</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> accessibilityJumpForward</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> -></span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C"> Bool</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-line="813" data-line-type="change-addition" data-line-index="869,821"><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> jumpForward</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span></div><div data-line="814" data-line-type="change-addition" data-line-index="870,822"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> return</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> true</span></div><div data-line="815" data-line-type="change-addition" data-line-index="871,823"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-line="816" data-line-type="change-addition" data-line-index="872,824">
|
|
</div><div data-line="817" data-line-type="change-addition" data-line-index="873,825"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE"> func</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> updateLayoutForCurrentSize</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-line="818" data-line-type="change-addition" data-line-index="874,826"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> controlsMaximumWidthConstraint</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">?</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">constant</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> traitCollection.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">horizontalSizeClass</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> ==</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> .</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">regular</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> ?</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 560</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> :</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 430</span></div><div data-line="819" data-line-type="change-addition" data-line-index="875,827"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-line="820" data-line-type="change-addition" data-line-index="876,828">
|
|
</div><div data-line="821" data-line-type="change-addition" data-line-index="877,829"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE"> func</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> updateScrubPreview</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-line="822" data-line-type="change-addition" data-line-index="878,830"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> target </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> TimeInterval</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">scrubber.value</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> *</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> backend.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">duration</span></div><div data-line="823" data-line-type="change-addition" data-line-index="879,831"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> label </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> PlaybackTimeFormatter.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">label</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">for</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> target</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="824" data-line-type="change-addition" data-line-index="880,832"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> elapsedLabel.text </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> label</span></div><div data-line="825" data-line-type="change-addition" data-line-index="881,833"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> scrubTimeBubble.text </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> " </span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">\(</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43">label</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">)</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "</span></div><div data-line="826" data-line-type="change-addition" data-line-index="882,834"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-line="827" data-line-type="change-addition" data-line-index="883,835">
|
|
</div><div data-line="828" data-line-type="change-addition" data-line-index="884,836"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE"> func</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> flashCenterPlayPauseIcon</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-line="829" data-line-type="change-addition" data-line-index="885,837"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> centerPlayPauseButton.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">setImage</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">UIImage</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">systemName</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> backend.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">isPlaying</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> ?</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "pause.fill"</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> :</span><span style="--diffs-token-dark:#5ECC71;--diffs-token-light:#199F43"> "play.fill"</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, for</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> .</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">normal</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="830" data-line-type="change-addition" data-line-index="886,838"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> guard</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> !</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">UIAccessibility.isReduceMotionEnabled </span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">else</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> return</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-line="831" data-line-type="change-addition" data-line-index="887,839"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> centerPlayPauseButton.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">transform</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> CGAffineTransform</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">scaleX</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 0.86</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, y</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 0.86</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="832" data-line-type="change-addition" data-line-index="888,840"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> UIView.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">animate</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">withDuration</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 0.16</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, animations</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-line="833" data-line-type="change-addition" data-line-index="889,841"><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C"> self</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">centerPlayPauseButton</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">alpha</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 1</span></div><div data-line="834" data-line-type="change-addition" data-line-index="890,842"><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C"> self</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">centerPlayPauseButton</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">transform</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> .identity</span></div><div data-line="835" data-line-type="change-addition" data-line-index="891,843"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> })</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> _ </span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">in</span></div><div data-line="836" data-line-type="change-addition" data-line-index="892,844"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> UIView.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">animate</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">withDuration</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 0.22</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, delay</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 0.28</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, options</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> [.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">curveEaseOut</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">]</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-line="837" data-line-type="change-addition" data-line-index="893,845"><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C"> self</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">centerPlayPauseButton</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">alpha</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 0</span></div><div data-line="838" data-line-type="change-addition" data-line-index="894,846"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-line="839" data-line-type="change-addition" data-line-index="895,847"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-line="840" data-line-type="change-addition" data-line-index="896,848"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-line="841" data-line-type="change-addition" data-line-index="897,849">
|
|
</div><div data-line="842" data-line-type="change-addition" data-line-index="898,850"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> static</span><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE"> func</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> glassPanel</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">cornerRadius</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">: CGFloat</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> -></span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> UIVisualEffectView </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">{</span></div><div data-line="843" data-line-type="change-addition" data-line-index="899,851"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> effect: UIVisualEffect</span></div><div data-line="844" data-line-type="change-addition" data-line-index="900,852"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> if</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> #available</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">iOS</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 26.0</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">, </span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">*</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-line="845" data-line-type="change-addition" data-line-index="901,853"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> glassEffect </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> UIGlassEffect</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span></div><div data-line="846" data-line-type="change-addition" data-line-index="902,854"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> glassEffect.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">tintColor</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> UIColor</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">red</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 0.64</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, green</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 0.48</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, blue</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 1.0</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, alpha</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 0.16</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="847" data-line-type="change-addition" data-line-index="903,855"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> glassEffect.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">isInteractive</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> true</span></div><div data-line="848" data-line-type="change-addition" data-line-index="904,856"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> effect </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> glassEffect</span></div><div data-line="849" data-line-type="change-addition" data-line-index="905,857"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> else</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> {</span></div><div data-line="850" data-line-type="change-addition" data-line-index="906,858"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> effect </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> UIBlurEffect</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">style</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> .</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">systemUltraThinMaterialDark</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="851" data-line-type="change-addition" data-line-index="907,859"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-line="852" data-line-type="change-addition" data-line-index="908,860"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> view </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> UIVisualEffectView</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">effect</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> effect</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="853" data-line-type="change-addition" data-line-index="909,861"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> view.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">translatesAutoresizingMaskIntoConstraints</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> false</span></div><div data-line="854" data-line-type="change-addition" data-line-index="910,862"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> view.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">layer</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">cornerRadius</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> cornerRadius</span></div><div data-line="855" data-line-type="change-addition" data-line-index="911,863"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> view.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">clipsToBounds</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> true</span></div><div data-line="856" data-line-type="change-addition" data-line-index="912,864"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> view.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">backgroundColor</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> UIColor.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">white</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">withAlphaComponent</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7">0.09</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="857" data-line-type="change-addition" data-line-index="913,865"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> view.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">layer</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">borderColor</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> UIColor.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">white</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">withAlphaComponent</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7">0.22</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">cgColor</span></div><div data-line="858" data-line-type="change-addition" data-line-index="914,866"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> view.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">layer</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">borderWidth</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 1</span></div><div data-line="859" data-line-type="change-addition" data-line-index="915,867"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> return</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> view</span></div><div data-line="860" data-line-type="change-addition" data-line-index="916,868"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-line="861" data-line-type="change-addition" data-line-index="917,869">
|
|
</div><div data-line="862" data-line-type="change-addition" data-line-index="918,870"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> static</span><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE"> func</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> iconButton</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">systemName</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">: </span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C">String</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">, </span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">label</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">: </span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C">String</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">, </span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">pointSize</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">: CGFloat </span><span style="--diffs-token-dark:#08C0EF;--diffs-token-light:#08C0EF">=</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 20</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> -></span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> UIButton </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">{</span></div><div data-line="863" data-alt-line="597" data-line-type="context" data-line-index="919,871"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> button </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> UIButton</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">type</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> .</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">system</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="864" data-alt-line="598" data-line-type="context" data-line-index="920,872"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> button.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">translatesAutoresizingMaskIntoConstraints</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> false</span></div><div data-line="865" data-line-type="change-addition" data-line-index="922,873"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> </span><span data-diff-span=""><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61">let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> configuration </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> UIImage.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">SymbolConfiguration</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">pointSize</span></span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> </span><span data-diff-span=""><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">pointSize</span></span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, </span><span data-diff-span=""><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">weight</span></span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> .</span><span data-diff-span=""><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">semibold</span></span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="866" data-line-type="change-addition" data-line-index="923,874"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> button.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">setImage</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">UIImage</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">systemName</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> systemName, withConfiguration</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> configuration</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, for</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> .</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">normal</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="867" data-alt-line="600" data-line-type="context" data-line-index="924,875"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> button.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">tintColor</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> .</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">white</span></div><div data-line="868" data-line-type="change-addition" data-line-index="927,876"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> button.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">backgroundColor</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> UIColor.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">white</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">withAlphaComponent</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7">0.</span><span data-diff-span=""><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7">14</span></span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="869" data-line-type="change-addition" data-line-index="928,877"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> button.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">layer</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">cornerRadius</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> </span><span data-diff-span=""><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7">22</span></span></div><div data-line="870" data-alt-line="603" data-line-type="context" data-line-index="929,878"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> button.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">layer</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">borderColor</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> UIColor.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">white</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">withAlphaComponent</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7">0.16</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">cgColor</span></div><div data-line="871" data-alt-line="604" data-line-type="context" data-line-index="930,879"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> button.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">layer</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">borderWidth</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 1</span></div><div data-line="872" data-alt-line="605" data-line-type="context" data-line-index="931,880"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> button.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">accessibilityLabel</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> label</span></div><div data-line="873" data-alt-line="606" data-line-type="context" data-line-index="932,881"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> return</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> button</span></div><div data-line="874" data-alt-line="607" data-line-type="context" data-line-index="933,882"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-line="875" data-alt-line="608" data-line-type="context" data-line-index="934,883">
|
|
</div><div data-line="876" data-line-type="change-addition" data-line-index="935,884"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> static</span><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE"> func</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> textButton</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">title</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">: </span><span style="--diffs-token-dark:#FFAB16;--diffs-token-light:#D5901C">String</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> -></span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> UIButton </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">{</span></div><div data-line="877" data-line-type="change-addition" data-line-index="936,885"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> button </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> UIButton</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">type</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> .</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">system</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="878" data-line-type="change-addition" data-line-index="937,886"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> button.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">translatesAutoresizingMaskIntoConstraints</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> false</span></div><div data-line="879" data-line-type="change-addition" data-line-index="938,887"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> button.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">setTitle</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">title, for</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> .</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">normal</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="880" data-line-type="change-addition" data-line-index="939,888"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> button.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">setTitleColor</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">white</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">, for</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> .</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">normal</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="881" data-line-type="change-addition" data-line-index="940,889"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> button.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">titleLabel</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">?</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">font</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> .</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">preferredFont</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">forTextStyle</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">:</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> .</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">headline</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="882" data-line-type="change-addition" data-line-index="941,890"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> button.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">titleLabel</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">?</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">adjustsFontForContentSizeCategory</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> true</span></div><div data-line="883" data-line-type="change-addition" data-line-index="942,891"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> button.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">backgroundColor</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> UIColor.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">white</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">withAlphaComponent</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7">0.16</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span></div><div data-line="884" data-line-type="change-addition" data-line-index="943,892"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> button.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">layer</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">cornerRadius</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 14</span></div><div data-line="885" data-line-type="change-addition" data-line-index="944,893"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> button.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">layer</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">borderColor</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> UIColor.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">white</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">withAlphaComponent</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7">0.18</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">cgColor</span></div><div data-line="886" data-line-type="change-addition" data-line-index="945,894"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> button.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">layer</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">borderWidth</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#68CDF2;--diffs-token-light:#1CA1C7"> 1</span></div><div data-line="887" data-line-type="change-addition" data-line-index="946,895"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> return</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> button</span></div><div data-line="888" data-line-type="change-addition" data-line-index="947,896"><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> }</span></div><div data-line="889" data-line-type="change-addition" data-line-index="948,897">
|
|
</div><div data-line="890" data-alt-line="609" data-line-type="context" data-line-index="949,898"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> private</span><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> static</span><span style="--diffs-token-dark:#D568EA;--diffs-token-light:#A631BE"> func</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> scrubberThumbImage</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">(</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF">diameter</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">: CGFloat</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">)</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> -></span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> UIImage </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">{</span></div><div data-line="891" data-alt-line="610" data-line-type="context" data-line-index="950,899"><span style="--diffs-token-dark:#FF678D;--diffs-token-light:#D32A61"> let</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> format </span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">=</span><span style="--diffs-token-dark:#9D6AFB;--diffs-token-light:#693ACF"> UIGraphicsImageRendererFormat</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363">()</span></div><div data-line="892" data-alt-line="611" data-line-type="context" data-line-index="951,900"><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> format.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">scale</span><span style="--diffs-token-dark:#636363;--diffs-token-light:#636363"> =</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A"> UIScreen.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">main</span><span style="--diffs-token-dark:#FAFAFA;--diffs-token-light:#0A0A0A">.</span><span style="--diffs-token-dark:#FFA359;--diffs-token-light:#D47628">scale</span></div></div></code></pre></div><pre class="diff-fallback"><code></code></pre></div><p class="note">Rendered with <code>@pierre/diffs/ssr</code>.</p></section>
|
|
<section><h2>Expected Impact for End-Users</h2><p>Users should see a more polished, readable, and forgiving native player with better touch ergonomics, clearer recovery from failures, more helpful loading feedback, and faster jump interactions.</p></section>
|
|
<section><h2>Validation</h2><ul><li>Ran <code>DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer xcodebuild -workspace Dreamio.xcworkspace -scheme Dreamio -configuration Debug -sdk iphonesimulator build</code>.</li><li>Build succeeded.</li></ul></section>
|
|
<section><h2>Issues, Limitations, and Mitigations</h2><ul><li>Manual real-device iOS 26 Liquid Glass visual validation is still recommended because simulator build validation cannot confirm material feel over live video.</li><li>Scrubbing previews are timestamp-only until the backend can provide frame thumbnails.</li></ul></section>
|
|
<section><h2>Follow-up Work</h2><ul><li>Manual QA on iPhone/iPad portrait and landscape with seekable/non-seekable streams, audio tracks, and captions.</li><li>Consider future backend support for thumbnail previews during scrubbing.</li></ul></section>
|
|
</main></body></html> |