authorgravatar for git@paperclover.netclover caruso <git@paperclover.net> 2026-07-05 13:22:48-07:00
committergravatar for git@paperclover.netclover caruso <git@paperclover.net> 2026-07-12 17:29:19-07:00
logeb97c459390bdb39eb6ecf071fd0932a8386edac
treeab8d9cc369a5c4248236460f0e27ef8c913728e0
parent05c31a411efd9c3268d7056a40c3314e00a0bc7c
signaturebadge-check Signed by SSH key SHA256:xbd+BjjhyBfwk7GVoURf9Yx0gzDerHbvYv7SddNWmAs

feat: yay


29 files changed, 13909 insertions(+), 262 deletions(-)

pitch/Package.swift created+13
......@@ -0,0 +1,13 @@
1// swift-tools-version:5.10
2import PackageDescription
3
4let package = Package(
5 name: "Pitch",
6 platforms: [.macOS(.v14)],
7 targets: [
8 .executableTarget(
9 name: "Pitch",
10 path: "Sources/Pitch"
11 )
12 ]
13)
pitch/Sources/Pitch/App.swift created+25
......@@ -0,0 +1,25 @@
1import SwiftUI
2import AppKit
3
4@main
5struct PitchApp: App {
6 @NSApplicationDelegateAdaptor(AppDelegate.self) private var delegate
7
8 var body: some Scene {
9 WindowGroup("Clover Pitch") {
10 ContentView()
11 .frame(minWidth: 300, minHeight: 340)
12 .navigationTitle("Clover Pitch")
13 }
14 .windowResizability(.contentMinSize)
15 .commands { CommandGroup(replacing: .newItem) {} }
16 }
17}
18
19final class AppDelegate: NSObject, NSApplicationDelegate {
20 func applicationDidFinishLaunching(_ notification: Notification) {
21 NSApp.setActivationPolicy(.regular)
22 NSApp.activate(ignoringOtherApps: true)
23 }
24 func applicationShouldTerminateAfterLastWindowClosed(_ sender: NSApplication) -> Bool { true }
25}
pitch/Sources/Pitch/AudioEngine.swift created+289
......@@ -0,0 +1,289 @@
1import AVFoundation
2import AudioToolbox
3import CoreAudio
4import QuartzCore
5import Combine
6
7/// One detected pitch point on the timeline.
8struct PitchSample {
9 let time: Double // seconds on the CACurrentMediaTime clock
10 let midi: Double // fractional MIDI note
11 let clarity: Double
12}
13
14/// The most recent live reading, for the big note readout / tuner.
15struct LivePitch {
16 let frequency: Double
17 let midi: Double
18 let clarity: Double
19 let level: Double
20}
21
22enum MicPermission {
23 case unknown, granted, denied
24}
25
26/// Captures microphone audio, runs the YIN detector at a fixed hop, and
27/// exposes both a rolling history (for the graph) and the latest reading.
28final class AudioEngine: ObservableObject, @unchecked Sendable {
29
30 // Published UI state (mutated on the main thread only). Deliberately
31 // low-frequency — the live pitch is NOT published, so per-frame detection
32 // never invalidates the SwiftUI tree. The graph reads it via currentLive().
33 @Published var devices: [AudioInputDevice] = []
34 @Published var selectedDeviceID: AudioDeviceID?
35 @Published var isRunning = false
36 @Published var permission: MicPermission = .unknown
37 @Published var statusMessage: String?
38
39 private let engine = AVAudioEngine()
40 // Sensitive settings: low RMS gate so quiet singing registers, and a
41 // slightly looser YIN threshold so less-perfectly-periodic tones are kept.
42 // Very low level gate so quiet singing registers; the clarity gate (not the
43 // level gate) is what rejects room noise, so lowering this is safe.
44 private var detector = YINDetector(sampleRate: 48000, windowSize: 2048,
45 threshold: 0.22, rmsGate: 0.0005, minClarity: 0.5)
46
47 private let windowSize = 2048
48 private let hop = 256 // ~5.3 ms between points at 48 kHz → dense, smooth trace
49
50 // Detection ring state (audio thread).
51 private var accumulator = [Float]()
52 private var framesProcessed: Int = 0
53 private var startHostTime: Double = 0
54 private var haveStart = false
55
56 // Small median window to reject single-frame octave/spike errors.
57 private var recentMidi = [Double]()
58
59 // History shared with the UI thread.
60 private let historyLock = NSLock()
61 private var history = [PitchSample]()
62 private let historyWindow: Double = 30 // seconds retained
63
64 // Latest reading, read lock-free-ish by the graph each display frame.
65 private let liveLock = NSLock()
66 private var latestLive: LivePitch?
67 private var latestLiveTime: Double = 0
68 private let liveHold: Double = 0.3 // keep showing the last note this long after silence
69
70 // MARK: - Lifecycle
71
72 func start() {
73 refreshDevices()
74 requestPermission { [weak self] granted in
75 guard let self else { return }
76 if granted {
77 self.selectedDeviceID = CoreAudioDevices.defaultInputDevice()
78 self.beginCapture()
79 }
80 }
81 }
82
83 func requestPermission(_ completion: @escaping (Bool) -> Void) {
84 switch AVCaptureDevice.authorizationStatus(for: .audio) {
85 case .authorized:
86 permission = .granted
87 completion(true)
88 case .notDetermined:
89 AVCaptureDevice.requestAccess(for: .audio) { [weak self] granted in
90 DispatchQueue.main.async {
91 self?.permission = granted ? .granted : .denied
92 completion(granted)
93 }
94 }
95 default:
96 permission = .denied
97 statusMessage = "Microphone access denied — enable it in System Settings ▸ Privacy & Security ▸ Microphone."
98 completion(false)
99 }
100 }
101
102 func refreshDevices() {
103 let list = CoreAudioDevices.inputDevices()
104 DispatchQueue.main.async {
105 self.devices = list
106 if let sel = self.selectedDeviceID, !list.contains(where: { $0.id == sel }) {
107 self.selectedDeviceID = list.first?.id
108 }
109 }
110 }
111
112 // MARK: - Device selection
113
114 func selectDevice(_ id: AudioDeviceID) {
115 selectedDeviceID = id
116 let wasRunning = isRunning
117 if wasRunning { stopCapture() }
118 applyDevice(id)
119 if wasRunning { beginCapture() }
120 }
121
122 private func applyDevice(_ id: AudioDeviceID) {
123 guard let unit = engine.inputNode.audioUnit else { return }
124 var dev = id
125 let status = AudioUnitSetProperty(
126 unit,
127 kAudioOutputUnitProperty_CurrentDevice,
128 kAudioUnitScope_Global,
129 0,
130 &dev,
131 UInt32(MemoryLayout<AudioDeviceID>.size))
132 if status != noErr {
133 DispatchQueue.main.async { self.statusMessage = "Couldn't switch input device (\(status))." }
134 }
135 }
136
137 // MARK: - Capture
138
139 private func beginCapture() {
140 if let id = selectedDeviceID { applyDevice(id) }
141
142 let input = engine.inputNode
143 let format = input.inputFormat(forBus: 0)
144 guard format.sampleRate > 0, format.channelCount > 0 else {
145 DispatchQueue.main.async { self.statusMessage = "No usable audio input." }
146 return
147 }
148
149 detector.sampleRate = format.sampleRate
150 resetDetectionState()
151
152 input.removeTap(onBus: 0)
153 input.installTap(onBus: 0, bufferSize: 1024, format: format) { [weak self] buffer, _ in
154 self?.process(buffer)
155 }
156
157 engine.prepare()
158 do {
159 try engine.start()
160 DispatchQueue.main.async {
161 self.isRunning = true
162 self.statusMessage = nil
163 }
164 } catch {
165 DispatchQueue.main.async {
166 self.statusMessage = "Audio engine failed to start: \(error.localizedDescription)"
167 }
168 }
169 }
170
171 private func stopCapture() {
172 engine.inputNode.removeTap(onBus: 0)
173 if engine.isRunning { engine.stop() }
174 DispatchQueue.main.async { self.isRunning = false }
175 }
176
177 private func resetDetectionState() {
178 accumulator.removeAll(keepingCapacity: true)
179 recentMidi.removeAll(keepingCapacity: true)
180 framesProcessed = 0
181 haveStart = false
182 }
183
184 // MARK: - Audio-thread processing
185
186 private func process(_ buffer: AVAudioPCMBuffer) {
187 guard let channelData = buffer.floatChannelData else { return }
188 let frames = Int(buffer.frameLength)
189 if frames == 0 { return }
190 let channels = Int(buffer.format.channelCount)
191
192 if !haveStart {
193 haveStart = true
194 startHostTime = CACurrentMediaTime()
195 framesProcessed = 0
196 }
197
198 // Down-mix to mono.
199 accumulator.reserveCapacity(accumulator.count + frames)
200 if channels == 1 {
201 let p = channelData[0]
202 for i in 0..<frames { accumulator.append(p[i]) }
203 } else {
204 for i in 0..<frames {
205 var sum: Float = 0
206 for c in 0..<channels { sum += channelData[c][i] }
207 accumulator.append(sum / Float(channels))
208 }
209 }
210
211 let sr = detector.sampleRate
212 var newSamples = [PitchSample]()
213
214 while accumulator.count >= windowSize {
215 var result: YINDetector.Result?
216 accumulator.withUnsafeBufferPointer { buf in
217 result = detector.detect(buf.baseAddress!, count: windowSize)
218 }
219 let windowStartTime = startHostTime + Double(framesProcessed) / sr
220
221 if let r = result {
222 let raw = Music.midi(fromFrequency: r.frequency)
223 let midi = smoothedMidi(raw)
224 let freq = Music.frequency(fromMidi: midi)
225 newSamples.append(PitchSample(time: windowStartTime, midi: midi, clarity: r.clarity))
226 setLive(LivePitch(frequency: freq, midi: midi, clarity: r.clarity, level: r.level),
227 at: windowStartTime)
228 } else {
229 recentMidi.removeAll(keepingCapacity: true)
230 }
231
232 accumulator.removeFirst(hop)
233 framesProcessed += hop
234 }
235
236 if !newSamples.isEmpty { appendHistory(newSamples) }
237 }
238
239 /// Median-of-3 over consecutive detections — removes lone octave/spike
240 /// errors while preserving vibrato and fast slides.
241 private func smoothedMidi(_ raw: Double) -> Double {
242 recentMidi.append(raw)
243 if recentMidi.count > 3 { recentMidi.removeFirst() }
244 if recentMidi.count < 3 { return raw }
245 return recentMidi.sorted()[1]
246 }
247
248 private func appendHistory(_ samples: [PitchSample]) {
249 historyLock.lock()
250 history.append(contentsOf: samples)
251 let cutoff = (samples.last?.time ?? 0) - historyWindow
252 if let first = history.first, first.time < cutoff {
253 history.removeAll { $0.time < cutoff }
254 }
255 historyLock.unlock()
256 }
257
258 private func setLive(_ value: LivePitch, at time: Double) {
259 liveLock.lock()
260 latestLive = value
261 latestLiveTime = time
262 liveLock.unlock()
263 }
264
265 /// The current reading, or nil once the note has been silent past `liveHold`.
266 /// Read every display frame by the graph — cheap and never touches @Published.
267 func currentLive() -> LivePitch? {
268 liveLock.lock()
269 defer { liveLock.unlock() }
270 guard let v = latestLive else { return nil }
271 if CACurrentMediaTime() - latestLiveTime > liveHold { return nil }
272 return v
273 }
274
275 // MARK: - Read access for the graph
276
277 /// Snapshot of samples with `time >= since`, oldest first.
278 func snapshot(since: Double) -> [PitchSample] {
279 historyLock.lock()
280 defer { historyLock.unlock() }
281 if history.isEmpty { return [] }
282 var start = history.count
283 for i in stride(from: history.count - 1, through: 0, by: -1) {
284 if history[i].time < since { break }
285 start = i
286 }
287 return Array(history[start...])
288 }
289}
pitch/Sources/Pitch/ContentView.swift created+41
......@@ -0,0 +1,41 @@
1import SwiftUI
2
3struct ContentView: View {
4 @StateObject private var engine = AudioEngine()
5 @StateObject private var settings = Settings()
6 @Environment(\.colorScheme) private var scheme
7
8 var body: some View {
9 let palette = Palette.make(scheme)
10 VStack(spacing: 0) {
11 TopBar(engine: engine, settings: settings)
12 ZStack {
13 PitchGraphView(engine: engine, settings: settings, palette: palette)
14 if engine.permission == .denied {
15 PermissionOverlay()
16 }
17 }
18 }
19 .background(palette.background)
20 .onAppear { engine.start() }
21 }
22}
23
24struct PermissionOverlay: View {
25 var body: some View {
26 VStack(spacing: 10) {
27 Image(systemName: "mic.slash.fill")
28 .font(.system(size: 34))
29 .foregroundColor(.secondary)
30 Text("Microphone access needed")
31 .font(.system(size: 15, weight: .semibold))
32 Text("Enable it in System Settings ▸ Privacy & Security ▸ Microphone,\nthen relaunch Clover Pitch.")
33 .font(.system(size: 12))
34 .multilineTextAlignment(.center)
35 .foregroundColor(.secondary)
36 }
37 .padding(28)
38 .frame(maxWidth: .infinity, maxHeight: .infinity)
39 .background(Color(nsColor: .windowBackgroundColor).opacity(0.9))
40 }
41}
pitch/Sources/Pitch/CoreAudioDevices.swift created+88
......@@ -0,0 +1,88 @@
1import Foundation
2import CoreAudio
3
4struct AudioInputDevice: Identifiable, Hashable {
5 let id: AudioDeviceID
6 let name: String
7}
8
9/// Thin wrapper over the CoreAudio HAL for enumerating and identifying
10/// hardware input devices.
11enum CoreAudioDevices {
12
13 static func inputDevices() -> [AudioInputDevice] {
14 var address = AudioObjectPropertyAddress(
15 mSelector: kAudioHardwarePropertyDevices,
16 mScope: kAudioObjectPropertyScopeGlobal,
17 mElement: kAudioObjectPropertyElementMain)
18
19 var dataSize: UInt32 = 0
20 guard AudioObjectGetPropertyDataSize(
21 AudioObjectID(kAudioObjectSystemObject), &address, 0, nil, &dataSize) == noErr
22 else { return [] }
23
24 let count = Int(dataSize) / MemoryLayout<AudioDeviceID>.size
25 var ids = [AudioDeviceID](repeating: 0, count: count)
26 guard AudioObjectGetPropertyData(
27 AudioObjectID(kAudioObjectSystemObject), &address, 0, nil, &dataSize, &ids) == noErr
28 else { return [] }
29
30 return ids.compactMap { id in
31 guard hasInputChannels(id) else { return nil }
32 return AudioInputDevice(id: id, name: name(of: id) ?? "Device \(id)")
33 }
34 }
35
36 static func defaultInputDevice() -> AudioDeviceID? {
37 var address = AudioObjectPropertyAddress(
38 mSelector: kAudioHardwarePropertyDefaultInputDevice,
39 mScope: kAudioObjectPropertyScopeGlobal,
40 mElement: kAudioObjectPropertyElementMain)
41 var deviceID: AudioDeviceID = 0
42 var size = UInt32(MemoryLayout<AudioDeviceID>.size)
43 guard AudioObjectGetPropertyData(
44 AudioObjectID(kAudioObjectSystemObject), &address, 0, nil, &size, &deviceID) == noErr,
45 deviceID != 0
46 else { return nil }
47 return deviceID
48 }
49
50 // MARK: - Helpers
51
52 private static func hasInputChannels(_ id: AudioDeviceID) -> Bool {
53 var address = AudioObjectPropertyAddress(
54 mSelector: kAudioDevicePropertyStreamConfiguration,
55 mScope: kAudioObjectPropertyScopeInput,
56 mElement: kAudioObjectPropertyElementMain)
57
58 var size: UInt32 = 0
59 guard AudioObjectGetPropertyDataSize(id, &address, 0, nil, &size) == noErr, size > 0
60 else { return false }
61
62 let bufferList = UnsafeMutableRawPointer.allocate(
63 byteCount: Int(size), alignment: MemoryLayout<AudioBufferList>.alignment)
64 defer { bufferList.deallocate() }
65
66 guard AudioObjectGetPropertyData(id, &address, 0, nil, &size, bufferList) == noErr
67 else { return false }
68
69 let list = UnsafeMutableAudioBufferListPointer(
70 bufferList.assumingMemoryBound(to: AudioBufferList.self))
71 var channels = 0
72 for buffer in list { channels += Int(buffer.mNumberChannels) }
73 return channels > 0
74 }
75
76 private static func name(of id: AudioDeviceID) -> String? {
77 var address = AudioObjectPropertyAddress(
78 mSelector: kAudioObjectPropertyName,
79 mScope: kAudioObjectPropertyScopeGlobal,
80 mElement: kAudioObjectPropertyElementMain)
81 var name: Unmanaged<CFString>?
82 var size = UInt32(MemoryLayout<Unmanaged<CFString>?>.size)
83 guard AudioObjectGetPropertyData(id, &address, 0, nil, &size, &name) == noErr,
84 let value = name?.takeRetainedValue()
85 else { return nil }
86 return value as String
87 }
88}
pitch/Sources/Pitch/Music.swift created+99
......@@ -0,0 +1,99 @@
1import SwiftUI
2
3// MARK: - Note naming systems
4
5enum NoteNaming: String, CaseIterable, Identifiable {
6 case sharps = "Sharps (C♯ D♯)"
7 case flats = "Flats (D♭ E♭)"
8 case solfege = "Solfège (Do Re)"
9 case german = "German (H / B)"
10
11 var id: String { rawValue }
12
13 var shortLabel: String {
14 switch self {
15 case .sharps: return "Sharps"
16 case .flats: return "Flats"
17 case .solfege: return "Solfège"
18 case .german: return "German"
19 }
20 }
21
22 /// Pitch-class names, index 0 == C.
23 var names: [String] {
24 switch self {
25 case .sharps:
26 return ["C", "C♯", "D", "D♯", "E", "F", "F♯", "G", "G♯", "A", "A♯", "B"]
27 case .flats:
28 return ["C", "D♭", "D", "E♭", "E", "F", "G♭", "G", "A♭", "A", "B♭", "B"]
29 case .solfege:
30 return ["Do", "Di", "Re", "Ri", "Mi", "Fa", "Fi", "Sol", "Si", "La", "Li", "Ti"]
31 case .german:
32 // German convention: A♯/B♭ is written "B", and B natural is "H".
33 return ["C", "C♯", "D", "D♯", "E", "F", "F♯", "G", "G♯", "A", "B", "H"]
34 }
35 }
36}
37
38// MARK: - Musical helpers
39
40enum Music {
41 /// MIDI note number (may be fractional) for a frequency in Hz. A4 (440) == 69.
42 static func midi(fromFrequency f: Double) -> Double {
43 69.0 + 12.0 * log2(f / 440.0)
44 }
45
46 static func frequency(fromMidi m: Double) -> Double {
47 440.0 * pow(2.0, (m - 69.0) / 12.0)
48 }
49
50 /// Pitch class 0–11 for an integer MIDI number.
51 static func pitchClass(_ midi: Int) -> Int {
52 ((midi % 12) + 12) % 12
53 }
54
55 /// True for the "black keys" — C♯ D♯ F♯ G♯ A♯.
56 static func isAccidental(_ midi: Int) -> Bool {
57 [1, 3, 6, 8, 10].contains(pitchClass(midi))
58 }
59
60 /// Scientific-pitch octave (C4 == middle C == MIDI 60).
61 static func octave(_ midi: Int) -> Int {
62 midi / 12 - 1
63 }
64
65 /// Name without octave, e.g. "F♯".
66 static func name(_ midi: Int, naming: NoteNaming) -> String {
67 naming.names[pitchClass(midi)]
68 }
69
70 /// Name with octave, e.g. "F♯4".
71 static func fullName(_ midi: Int, naming: NoteNaming) -> String {
72 "\(name(midi, naming: naming))\(octave(midi))"
73 }
74}
75
76// MARK: - Vocal / instrument ranges
77
78struct PitchRange: Identifiable, Hashable {
79 let name: String
80 let low: Int // MIDI (inclusive)
81 let high: Int // MIDI (inclusive)
82 var id: String { name }
83 var span: Int { high - low }
84}
85
86extension PitchRange {
87 static let presets: [PitchRange] = [
88 PitchRange(name: "Full (C1–C7)", low: 24, high: 96),
89 PitchRange(name: "Bass (E2–E4)", low: 40, high: 64),
90 PitchRange(name: "Baritone (A2–A4)", low: 45, high: 69),
91 PitchRange(name: "Tenor (C3–C5)", low: 48, high: 72),
92 PitchRange(name: "Alto (F3–F5)", low: 53, high: 77),
93 PitchRange(name: "Mezzo (A3–A5)", low: 57, high: 81),
94 PitchRange(name: "Soprano (C4–C6)", low: 60, high: 84),
95 PitchRange(name: "Wide (C2–C6)", low: 36, high: 84),
96 ]
97
98 static let `default` = presets[7] // Wide
99}
pitch/Sources/Pitch/PitchDetector.swift created+102
......@@ -0,0 +1,102 @@
1import Foundation
2
3/// Monophonic fundamental-frequency estimator using the YIN algorithm
4/// (de Cheveigné & Kawahara, 2002) with parabolic interpolation.
5final class YINDetector {
6 var sampleRate: Double
7 let windowSize: Int
8 private let threshold: Float
9 private let rmsGate: Float
10 private let minClarity: Double
11
12 // Scratch buffers reused across calls to avoid per-frame allocation.
13 private var diff: [Float]
14 private var cmnd: [Float]
15
16 init(sampleRate: Double, windowSize: Int = 2048, threshold: Float = 0.15,
17 rmsGate: Float = 0.006, minClarity: Double = 0.5) {
18 self.sampleRate = sampleRate
19 self.windowSize = windowSize
20 self.threshold = threshold
21 self.rmsGate = rmsGate
22 self.minClarity = minClarity
23 self.diff = [Float](repeating: 0, count: windowSize / 2)
24 self.cmnd = [Float](repeating: 1, count: windowSize / 2)
25 }
26
27 struct Result {
28 let frequency: Double
29 let clarity: Double // 0…1, higher == more periodic
30 let level: Double // RMS, 0…1
31 }
32
33 /// Returns a pitch estimate for `samples` (must be `windowSize` long) or nil
34 /// if the signal is too quiet or not periodic enough.
35 func detect(_ samples: UnsafePointer<Float>, count: Int) -> Result? {
36 guard count >= windowSize else { return nil }
37 let half = windowSize / 2
38
39 // --- RMS gate: ignore near-silence ---
40 var sumSq: Float = 0
41 for i in 0..<windowSize { let v = samples[i]; sumSq += v * v }
42 let rms = (sumSq / Float(windowSize)).squareRoot()
43 if rms < rmsGate { return nil }
44 let level = Double(min(1, rms * 6))
45
46 // --- Difference function ---
47 diff[0] = 0
48 for tau in 1..<half {
49 var sum: Float = 0
50 var j = 0
51 while j < half {
52 let d = samples[j] - samples[j + tau]
53 sum += d * d
54 j += 1
55 }
56 diff[tau] = sum
57 }
58
59 // --- Cumulative mean normalized difference ---
60 cmnd[0] = 1
61 var running: Float = 0
62 for tau in 1..<half {
63 running += diff[tau]
64 cmnd[tau] = running > 0 ? diff[tau] * Float(tau) / running : 1
65 }
66
67 // --- Absolute threshold ---
68 var tauEst = -1
69 var tau = 2
70 while tau < half - 1 {
71 if cmnd[tau] < threshold {
72 while tau + 1 < half && cmnd[tau + 1] < cmnd[tau] { tau += 1 }
73 tauEst = tau
74 break
75 }
76 tau += 1
77 }
78 guard tauEst > 0 else { return nil }
79
80 // --- Parabolic interpolation around the dip ---
81 let betterTau = parabolicRefine(tauEst)
82 guard betterTau > 0 else { return nil }
83 let freq = sampleRate / betterTau
84 guard freq >= 40, freq <= 2000 else { return nil }
85
86 let clarity = Double(max(0, min(1, 1 - cmnd[tauEst])))
87 guard clarity >= minClarity else { return nil }
88 return Result(frequency: freq, clarity: clarity, level: level)
89 }
90
91 private func parabolicRefine(_ tau: Int) -> Double {
92 let half = windowSize / 2
93 let x0 = tau > 1 ? tau - 1 : tau
94 let x2 = tau + 1 < half ? tau + 1 : tau
95 if x0 == tau { return Double(cmnd[tau] <= cmnd[x2] ? tau : x2) }
96 if x2 == tau { return Double(cmnd[tau] <= cmnd[x0] ? tau : x0) }
97 let s0 = cmnd[x0], s1 = cmnd[tau], s2 = cmnd[x2]
98 let denom = 2 * (2 * s1 - s2 - s0)
99 if denom == 0 { return Double(tau) }
100 return Double(tau) + Double(s2 - s0) / Double(denom)
101 }
102}
pitch/Sources/Pitch/PitchGraphView.swift created+174
......@@ -0,0 +1,174 @@
1import SwiftUI
2import QuartzCore
3
4/// pitchreader.com-style visualiser. Two layers:
5/// • `GridCanvas` — staff lines + right-hand labels. Redraws only when the
6/// range / naming / transpose / appearance change (never per frame).
7/// • `TraceCanvas` — the active-note band, the scrolling pitch trace, the dot
8/// and the note pill. Driven by `TimelineView(.animation)` so it advances at
9/// the display refresh rate.
10struct PitchGraphView: View {
11 @ObservedObject var engine: AudioEngine
12 @ObservedObject var settings: Settings
13 var palette: Palette
14
15 var body: some View {
16 ZStack {
17 palette.background
18 GridCanvas(settings: settings, palette: palette)
19 TraceCanvas(engine: engine, settings: settings, palette: palette)
20 }
21 }
22}
23
24/// Natural-note staff lines and labels, laid out on the right like pitchreader.
25private struct GridCanvas: View {
26 @ObservedObject var settings: Settings
27 var palette: Palette
28
29 var body: some View {
30 Canvas { ctx, size in
31 let layout = PitchLayout(size: size, range: settings.range)
32 let lineRight = layout.plotWidth - 2
33 let labelX = layout.plotWidth + 7
34
35 for midi in settings.range.low...settings.range.high {
36 let displayed = midi + settings.transpose
37 let accidental = Music.isAccidental(displayed)
38 let isC = Music.pitchClass(displayed) == 0
39 let yy = layout.y(Double(midi))
40
41 // Every semitone gets a line; sharps/flats are drawn fainter.
42 var line = Path()
43 line.move(to: CGPoint(x: 0, y: yy))
44 line.addLine(to: CGPoint(x: lineRight, y: yy))
45 let lineColor = accidental ? palette.accidentalLine : (isC ? palette.cLine : palette.naturalLine)
46 ctx.stroke(line, with: .color(lineColor), lineWidth: isC ? 1.4 : (accidental ? 0.75 : 1))
47
48 // Only naturals are labelled, to keep the gutter readable.
49 guard !accidental else { continue }
50 let color = isC ? palette.cLabel : palette.naturalLabel
51 let label = Text(Music.name(displayed, naming: settings.naming))
52 .font(.system(size: 11.5, weight: isC ? .bold : .semibold, design: .rounded))
53 .foregroundColor(color)
54 + Text(" \(Music.octave(displayed))")
55 .font(.system(size: 9.5, weight: isC ? .semibold : .regular, design: .rounded))
56 .foregroundColor(color.opacity(0.85))
57 ctx.draw(label, at: CGPoint(x: labelX, y: yy), anchor: .leading)
58 }
59 }
60 }
61}
62
63/// The moving parts: active band, pitch trace, current dot, and the note pill.
64private struct TraceCanvas: View {
65 @ObservedObject var engine: AudioEngine
66 @ObservedObject var settings: Settings
67 var palette: Palette
68
69 var body: some View {
70 TimelineView(.animation) { timeline in
71 // Capturing a per-frame value (the frame's timestamp) into the
72 // Canvas closure is what makes SwiftUI invalidate & redraw it every
73 // display frame — without it the Canvas is memoized and only
74 // repaints on geometry changes (e.g. a window resize).
75 let now = timeline.date.timeIntervalSinceReferenceDate + Self.clockOffset
76 Canvas { ctx, size in
77 let layout = PitchLayout(size: size, range: settings.range)
78 let visible = settings.visibleSeconds
79 let live = engine.currentLive()
80
81 drawBand(ctx: &ctx, size: size, layout: layout, live: live)
82 drawTrace(ctx: &ctx, layout: layout, now: now, visible: visible)
83 drawPill(ctx: &ctx, size: size, layout: layout, live: live)
84 }
85 }
86 }
87
88 /// Fixed offset between `Date` (reference-date epoch) and the
89 /// `CACurrentMediaTime` clock that sample timestamps use. Both advance at
90 /// real-time, so this difference is constant for the process lifetime.
91 private static let clockOffset: Double =
92 CACurrentMediaTime() - Date().timeIntervalSinceReferenceDate
93
94 // Thin solid coral line marking the nearest note — a couple of pixels
95 // thicker than a staff line.
96 private func drawBand(ctx: inout GraphicsContext, size: CGSize,
97 layout: PitchLayout, live: LivePitch?) {
98 guard let live else { return }
99 let nearest = Int(live.midi.rounded())
100 guard nearest >= settings.range.low, nearest <= settings.range.high else { return }
101 let yy = layout.y(Double(nearest))
102 let h: CGFloat = 3.5
103 let rect = CGRect(x: 0, y: yy - h / 2, width: size.width, height: h)
104 ctx.fill(Path(roundedRect: rect, cornerRadius: h / 2), with: .color(palette.pill))
105 }
106
107 // Thick, smoothed pitch line. Breaks into a new segment on a silence gap or
108 // an implausible pitch jump, so stray octave errors never draw as long
109 // vertical spikes.
110 private func drawTrace(ctx: inout GraphicsContext, layout: PitchLayout,
111 now: Double, visible: Double) {
112 let samples = engine.snapshot(since: now - visible)
113 guard samples.count > 1 else { return }
114
115 let gapLimit = 0.08 // seconds
116 let maxJump = 4.0 // semitones between adjacent ~5 ms frames
117 var run: [CGPoint] = []
118
119 func stroke() {
120 guard run.count > 1 else { run.removeAll(keepingCapacity: true); return }
121 var path = Path()
122 path.move(to: run[0])
123 // Quadratic smoothing through midpoints for a clean, hand-drawn line.
124 for i in 1..<run.count - 1 {
125 let mid = CGPoint(x: (run[i].x + run[i + 1].x) / 2,
126 y: (run[i].y + run[i + 1].y) / 2)
127 path.addQuadCurve(to: mid, control: run[i])
128 }
129 path.addLine(to: run[run.count - 1])
130 ctx.stroke(path, with: .color(palette.trace),
131 style: StrokeStyle(lineWidth: 4.2, lineCap: .round, lineJoin: .round))
132 run.removeAll(keepingCapacity: true)
133 }
134
135 var prev: PitchSample?
136 for s in samples {
137 if let p = prev, s.time - p.time > gapLimit || abs(s.midi - p.midi) > maxJump {
138 stroke()
139 }
140 run.append(CGPoint(x: layout.x(s.time, now: now, visible: visible), y: layout.y(s.midi)))
141 prev = s
142 }
143 stroke()
144
145 // Current dot at the leading edge (only while actively voiced).
146 if let last = samples.last, engine.currentLive() != nil {
147 let p = CGPoint(x: layout.x(last.time, now: now, visible: visible), y: layout.y(last.midi))
148 ctx.fill(Path(ellipseIn: CGRect(x: p.x - 4, y: p.y - 4, width: 8, height: 8)),
149 with: .color(palette.dot))
150 }
151 }
152
153 // Solid coral pill with the active note name, in the right-hand gutter.
154 private func drawPill(ctx: inout GraphicsContext, size: CGSize,
155 layout: PitchLayout, live: LivePitch?) {
156 guard let live else { return }
157 let nearest = Int(live.midi.rounded())
158 guard nearest >= settings.range.low, nearest <= settings.range.high else { return }
159 let displayed = nearest + settings.transpose
160 let yy = layout.y(Double(nearest))
161
162 let pillRect = CGRect(x: layout.plotWidth + 1, y: yy - 9,
163 width: layout.labelWidth - 3, height: 18)
164 ctx.fill(Path(roundedRect: pillRect, cornerRadius: 9), with: .color(palette.pill))
165
166 let label = Text(Music.name(displayed, naming: settings.naming))
167 .font(.system(size: 11.5, weight: .bold, design: .rounded))
168 .foregroundColor(palette.pillText)
169 + Text(" \(Music.octave(displayed))")
170 .font(.system(size: 9.5, weight: .semibold, design: .rounded))
171 .foregroundColor(palette.pillText.opacity(0.9))
172 ctx.draw(label, at: CGPoint(x: pillRect.minX + 6, y: yy), anchor: .leading)
173 }
174}
pitch/Sources/Pitch/Settings.swift created+18
......@@ -0,0 +1,18 @@
1import SwiftUI
2
3/// UI-side view settings driven by the top-bar dropdowns.
4final class Settings: ObservableObject {
5 @Published var transpose: Int = 0 // semitones added to displayed labels
6 @Published var naming: NoteNaming = .sharps
7 @Published var range: PitchRange = .default
8
9 /// How many seconds of history the graph shows.
10 @Published var visibleSeconds: Double = 6
11
12 static let transposeChoices = Array(-12...12)
13
14 func transposeLabel(_ n: Int) -> String {
15 if n == 0 { return "Transpose 0" }
16 return "Transpose \(n > 0 ? "+" : "")\(n)"
17 }
18}
pitch/Sources/Pitch/Theme.swift created+79
......@@ -0,0 +1,79 @@
1import SwiftUI
2
3/// A fully resolved colour set for one appearance (light or dark), styled after
4/// pitchreader.com: white/near-black staff, blue natural lines, a coral active
5/// band, and a heavy dark (or light) pitch trace.
6struct Palette {
7 var background: Color
8 var cLine: Color
9 var cLabel: Color
10 var naturalLine: Color
11 var naturalLabel: Color
12 var accidentalLine: Color
13 var band: Color
14 var pill: Color
15 var pillText: Color
16 var trace: Color
17 var dot: Color
18
19 static func make(_ scheme: ColorScheme) -> Palette {
20 scheme == .dark ? .dark : .light
21 }
22
23 static let light = Palette(
24 background: Color.white,
25 cLine: Color(red: 0.11, green: 0.12, blue: 0.14).opacity(0.9),
26 cLabel: Color(red: 0.10, green: 0.11, blue: 0.13),
27 naturalLine: Color(red: 0.42, green: 0.58, blue: 0.93).opacity(0.42),
28 naturalLabel: Color(red: 0.33, green: 0.50, blue: 0.90),
29 accidentalLine: Color(red: 0.55, green: 0.58, blue: 0.66).opacity(0.20),
30 band: Color(red: 0.95, green: 0.55, blue: 0.50).opacity(0.50),
31 pill: Color(red: 0.93, green: 0.49, blue: 0.45),
32 pillText: Color.white,
33 trace: Color(red: 0.20, green: 0.24, blue: 0.31),
34 dot: Color(red: 0.20, green: 0.24, blue: 0.31))
35
36 static let dark = Palette(
37 background: Color(red: 0.09, green: 0.10, blue: 0.12),
38 cLine: Color.white.opacity(0.85),
39 cLabel: Color.white.opacity(0.95),
40 naturalLine: Color(red: 0.46, green: 0.61, blue: 0.96).opacity(0.42),
41 naturalLabel: Color(red: 0.56, green: 0.69, blue: 0.99),
42 accidentalLine: Color.white.opacity(0.07),
43 band: Color(red: 0.90, green: 0.46, blue: 0.43).opacity(0.36),
44 pill: Color(red: 0.90, green: 0.47, blue: 0.44),
45 pillText: Color.white,
46 trace: Color(red: 0.93, green: 0.95, blue: 0.99),
47 dot: Color(red: 0.93, green: 0.95, blue: 0.99))
48}
49
50/// Shared plot geometry so the static grid layer and the animated trace layer
51/// map pitch → screen identically. Vertical axis is uniform per semitone —
52/// every semitone (naturals and sharps alike) gets an evenly-spaced row.
53struct PitchLayout {
54 let size: CGSize
55 let top: Double // MIDI at the top edge
56 let bot: Double // MIDI at the bottom edge
57 let labelWidth: CGFloat
58
59 init(size: CGSize, range: PitchRange, labelWidth: CGFloat = 44) {
60 self.size = size
61 self.top = Double(range.high) + 0.7
62 self.bot = Double(range.low) - 0.7
63 self.labelWidth = labelWidth
64 }
65
66 var plotWidth: CGFloat { size.width - labelWidth }
67
68 func y(_ midi: Double) -> CGFloat {
69 CGFloat((top - midi) / (top - bot)) * size.height
70 }
71
72 /// Screen x for a timestamp, with `now` at the right edge of the plot area.
73 func x(_ t: Double, now: Double, visible: Double) -> CGFloat {
74 plotWidth * CGFloat(1 - (now - t) / visible)
75 }
76
77 /// Height of one semitone row, in points.
78 var rowHeight: CGFloat { abs(y(0) - y(1)) }
79}
pitch/Sources/Pitch/TopBar.swift created+122
......@@ -0,0 +1,122 @@
1import SwiftUI
2import CoreAudio
3
4struct TopBar: View {
5 @ObservedObject var engine: AudioEngine
6 @ObservedObject var settings: Settings
7
8 var body: some View {
9 HStack(spacing: 14) {
10 // Microphone
11 Dropdown(icon: "mic.fill") {
12 Picker("", selection: micBinding) {
13 if engine.devices.isEmpty {
14 Text("No inputs").tag(AudioDeviceID?.none)
15 }
16 ForEach(engine.devices) { d in
17 Text(d.name).tag(AudioDeviceID?.some(d.id))
18 }
19 }
20 .labelsHidden()
21 }
22
23 // Transpose
24 Dropdown(icon: "arrow.up.arrow.down") {
25 Picker("", selection: $settings.transpose) {
26 ForEach(Settings.transposeChoices, id: \.self) { n in
27 Text(settings.transposeLabel(n)).tag(n)
28 }
29 }
30 .labelsHidden()
31 }
32
33 // Note labels
34 Dropdown(icon: "textformat") {
35 Picker("", selection: $settings.naming) {
36 ForEach(NoteNaming.allCases) { n in
37 Text(n.rawValue).tag(n)
38 }
39 }
40 .labelsHidden()
41 }
42
43 // Range
44 Dropdown(icon: "arrow.up.and.down") {
45 Picker("", selection: $settings.range) {
46 ForEach(PitchRange.presets) { r in
47 Text(r.name).tag(r)
48 }
49 }
50 .labelsHidden()
51 }
52
53 Spacer(minLength: 8)
54
55 StatusPill(engine: engine)
56 }
57 .padding(.horizontal, 16)
58 .padding(.vertical, 10)
59 .background(.bar)
60 .overlay(Rectangle().frame(height: 1).foregroundColor(Color(nsColor: .separatorColor)), alignment: .bottom)
61 }
62
63 private var micBinding: Binding<AudioDeviceID?> {
64 Binding(
65 get: { engine.selectedDeviceID },
66 set: { if let id = $0 { engine.selectDevice(id) } }
67 )
68 }
69}
70
71/// A pill-shaped container that gives each Picker a leading icon and a
72/// consistent dark style.
73private struct Dropdown<Content: View>: View {
74 let icon: String
75 @ViewBuilder var content: Content
76
77 var body: some View {
78 HStack(spacing: 6) {
79 Image(systemName: icon)
80 .font(.system(size: 11, weight: .semibold))
81 .foregroundColor(.secondary)
82 content
83 .tint(.primary)
84 }
85 .padding(.horizontal, 10)
86 .padding(.vertical, 5)
87 .background(
88 RoundedRectangle(cornerRadius: 8)
89 .fill(Color(nsColor: .controlBackgroundColor))
90 .overlay(RoundedRectangle(cornerRadius: 8).stroke(Color(nsColor: .separatorColor), lineWidth: 1))
91 )
92 }
93}
94
95private struct StatusPill: View {
96 @ObservedObject var engine: AudioEngine
97
98 var body: some View {
99 HStack(spacing: 7) {
100 Circle()
101 .fill(color)
102 .frame(width: 8, height: 8)
103 Text(text)
104 .font(.system(size: 11, weight: .medium))
105 .foregroundColor(.secondary)
106 .lineLimit(1)
107 }
108 .padding(.horizontal, 10)
109 .padding(.vertical, 5)
110 .help(engine.statusMessage ?? text)
111 }
112
113 private var color: Color {
114 if engine.permission == .denied { return .red }
115 return engine.isRunning ? Color(red: 0.3, green: 0.75, blue: 0.5) : .secondary
116 }
117
118 private var text: String {
119 if engine.permission == .denied { return "Mic denied" }
120 return engine.isRunning ? "Listening" : "Idle"
121 }
122}
pitch/build.sh created+103
......@@ -0,0 +1,103 @@
1#!/bin/sh
2set -e
3cd "$(dirname "$0")"
4
5CONFIG=release
6APP=Pitch.app
7BIN=Pitch
8
9# Signing identity. Override with: SIGN_ID="Some Identity" ./build.sh
10SIGN_ID="${SIGN_ID:-Pitch Dev}"
11LOGIN_KEYCHAIN="$HOME/Library/Keychains/login.keychain-db"
12
13# Create a self-signed code-signing identity named "$SIGN_ID" in the login
14# keychain, so codesign works on a machine that has no dev certificate.
15create_cert() {
16 name="$SIGN_ID"
17 echo "Creating self-signed code-signing identity \"$name\"…"
18 tmp=$(mktemp -d)
19 openssl req -x509 -newkey rsa:2048 -sha256 -days 3650 -nodes \
20 -keyout "$tmp/key.pem" -out "$tmp/cert.pem" \
21 -subj "/CN=$name" \
22 -addext "basicConstraints=critical,CA:false" \
23 -addext "keyUsage=critical,digitalSignature" \
24 -addext "extendedKeyUsage=critical,codeSigning" >/dev/null 2>&1
25 openssl pkcs12 -export -legacy -out "$tmp/id.p12" \
26 -inkey "$tmp/key.pem" -in "$tmp/cert.pem" -passout pass: >/dev/null 2>&1 \
27 || openssl pkcs12 -export -out "$tmp/id.p12" \
28 -inkey "$tmp/key.pem" -in "$tmp/cert.pem" -passout pass: >/dev/null 2>&1
29 security import "$tmp/id.p12" -k "$LOGIN_KEYCHAIN" -P "" \
30 -T /usr/bin/codesign -T /usr/bin/security
31 security add-trusted-cert -r trustRoot -p codeSign -k "$LOGIN_KEYCHAIN" \
32 "$tmp/cert.pem" >/dev/null 2>&1 || true
33 security set-key-partition-list -S apple-tool:,apple:,codesign: -s \
34 -k "" "$LOGIN_KEYCHAIN" >/dev/null 2>&1 || true
35 rm -rf "$tmp"
36}
37
38pick_identity() {
39 if security find-identity -v -p codesigning 2>/dev/null | grep -qF "\"$SIGN_ID\""; then
40 printf '%s' "$SIGN_ID"; return
41 fi
42 first=$(security find-identity -v -p codesigning 2>/dev/null \
43 | sed -n 's/^[[:space:]]*[0-9][0-9]*)[[:space:]]*[0-9A-Fa-f]*[[:space:]]*"\(.*\)"$/\1/p' \
44 | head -n1)
45 if [ -n "$first" ]; then
46 echo "Identity \"$SIGN_ID\" not found; using \"$first\"." >&2
47 printf '%s' "$first"; return
48 fi
49 echo "No code-signing identity found — using ad-hoc signing (-)." >&2
50 echo " Run './build.sh --create-cert' to make a reusable self-signed \"$SIGN_ID\"." >&2
51 printf '%s' "-"
52}
53
54if [ "$1" = "--create-cert" ]; then
55 create_cert
56 shift
57fi
58
59swift build -c "$CONFIG"
60
61rm -rf "$APP"
62mkdir -p "$APP/Contents/MacOS" "$APP/Contents/Resources"
63
64cp ".build/$CONFIG/$BIN" "$APP/Contents/MacOS/$BIN"
65
66cat > "$APP/Contents/Info.plist" <<'PLIST'
67<?xml version="1.0" encoding="UTF-8"?>
68<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
69<plist version="1.0">
70<dict>
71 <key>CFBundleName</key>
72 <string>Clover Pitch</string>
73 <key>CFBundleDisplayName</key>
74 <string>Clover Pitch</string>
75 <key>CFBundleExecutable</key>
76 <string>Pitch</string>
77 <key>CFBundleIdentifier</key>
78 <string>com.clover.Pitch</string>
79 <key>CFBundlePackageType</key>
80 <string>APPL</string>
81 <key>CFBundleShortVersionString</key>
82 <string>1.0</string>
83 <key>CFBundleVersion</key>
84 <string>1</string>
85 <key>LSMinimumSystemVersion</key>
86 <string>14.0</string>
87 <key>NSHighResolutionCapable</key>
88 <true/>
89 <key>NSPrincipalClass</key>
90 <string>NSApplication</string>
91 <key>NSMicrophoneUsageDescription</key>
92 <string>Pitch listens to your microphone to detect and visualise the pitch you sing or play. Audio is processed live and never recorded or sent anywhere.</string>
93</dict>
94</plist>
95PLIST
96
97printf 'APPL????' > "$APP/Contents/PkgInfo"
98
99IDENTITY=$(pick_identity)
100echo "Signing with: $IDENTITY"
101codesign --force --deep --sign "$IDENTITY" "$APP"
102
103echo "Built $APP"
pitch/readme.md created+52
......@@ -0,0 +1,52 @@
1# Clover Pitch
2
3A native macOS real-time pitch visualiser — a from-scratch clone of
4[pitchreader.com](https://pitchreader.com). It listens to a microphone, detects
5the fundamental frequency you sing or play, and scrolls it across a piano-roll
6timeline against note gridlines.
7
8Live only — there is no recording mode.
9
10## Features
11
12- **Live pitch-over-time graph** — a scrolling piano-roll where the last few
13 seconds of your pitch are drawn as a glowing trace, weighted by detection
14 confidence. Sharps/flats rows are shaded like piano keys; octave C lines are
15 emphasised and labelled.
16- **Active note readout** — a large current-note display with octave, exact Hz,
17 and a ±50-cent tuner needle ("in tune" when within 5¢).
18- **Top bar**
19 - **Microphone** — pick any CoreAudio input device; switching is live.
20 - **Transpose** — ±12 semitones; shifts every displayed label (like a capo).
21 - **Note labels** — Sharps, Flats, Solfège (fixed Do), or German (H/B).
22 - **Range** — vocal/instrument presets (Bass … Soprano, Wide, Full) that set
23 the visible vertical span.
24
25## How it works
26
27- `AudioEngine` captures mono audio via `AVAudioEngine`, down-mixes, and runs a
28 YIN pitch detector (`PitchDetector.swift`) at a 512-sample hop over a 2048
29 window. Detected samples land in a lock-guarded ring buffer.
30- `PitchGraphView` is a SwiftUI `Canvas` driven by `TimelineView(.animation)`;
31 each frame it snapshots the ring buffer and repaints the trace against the
32 note grid. The clock is `CACurrentMediaTime()` so the trace stays in sync
33 with the audio timeline.
34- Input-device enumeration/selection goes through the CoreAudio HAL
35 (`CoreAudioDevices.swift`), and the selected device is set on the input
36 AudioUnit via `kAudioOutputUnitProperty_CurrentDevice`.
37
38The detector is accurate to a fraction of a cent on synthetic tones across the
39full E2–A5 range (see the note-name test compiled from `PitchDetector.swift`).
40
41## Build & run
42
43```sh
44./run.sh # builds a signed Pitch.app and launches it
45./build.sh # just build Pitch.app
46```
47
48The app must be a signed `.app` bundle (not a bare binary) so the microphone
49TCC prompt appears — `NSMicrophoneUsageDescription` lives in the generated
50`Info.plist`. `build.sh` signs with the first available codesigning identity,
51or run `./build.sh --create-cert` once to mint a reusable self-signed
52`Pitch Dev` identity (same pattern as the Sequencer).
pitch/run.sh created+8
......@@ -0,0 +1,8 @@
1#!/bin/sh
2set -e
3cd "$(dirname "$0")"
4
5# Build a signed .app (needed so the microphone TCC prompt appears) then launch.
6SIGN_ID="${SIGN_ID:-Pitch Dev}" ./build.sh "$@"
7pkill -x Pitch 2>/dev/null || true
8open Pitch.app
readme.md+1
......@@ -7,3 +7,4 @@ The projects are independant, yet related:
77- [**Clover Control**](./control): Glue external input devices to creative software.
88- [**Clover Recorder**](./recorder): Capture multi-screen recordings.
99- [**Clover Sequencer**](./sequencer): Multi-track video synchronization.
10- [**Clover Pitch**](./pitch): Realtime microphone pitch visualiser.
sequencer/CLAUDE.md+5-3
......@@ -16,10 +16,12 @@ There is no test target in Package.swift. Verification instead happens through t
1616```sh
1717swift run Sequencer --selftest <mediafile> # headless pipeline check (see Selftest.swift)
1818swift run Sequencer --uitest # offscreen TimelineView harness (see UITest.swift)
19swift run Sequencer --perftest <file.sq> # offscreen draw-timing harness (see PerfTest.swift)
1920```
2021
2122- `--selftest` exercises the real media pipeline against a file you pass in: ffprobe, filmstrip/waveform generation, chunk-proxy building, AVFoundation playability of the built proxy, and prints sample Fusion Lua output. Useful when touching `MediaPipeline.swift` or `ChunkedProxy.swift`.
2223- `--uitest` hosts the real `TimelineView` in an offscreen window and drives it with synthetic `NSEvent`s (move, trim, slip, stretch, box select, split, links, storyboard split, comp parsing, fades, plus file-format migration/round-trip — ~100 assertions, PASS/FAIL printer). Useful when touching timeline gesture code.
24- `--perftest` loads a real `.sq` into an offscreen `TimelineView` and times `draw(_:)` while simulating a horizontal pan, at several zoom levels, in both full-detail and simplified (mid-scroll) modes, printing ms/frame and a per-section breakdown (`DrawProf`). Use it when touching timeline **drawing** — it's how the per-clip draw cost was found. The lesson baked into `TimelineView`: never build/tint an `NSImage(systemSymbolName:)` per clip/element per frame (SF-symbol tinting does a `lockFocus` composite) — bake once via `bakedSymbol(...)`. Clip labels and filmstrips are also gated to at-rest / wide-enough via the `isScrolling` simplified path.
2325
2426Requires `ffmpeg`/`ffprobe` on PATH for anything touching media (probing, filmstrips, proxies).
2527
......@@ -57,10 +59,10 @@ Each open project is a `ProjectDocument: NSDocument` owning a `DocumentContext`
5759This is the most complex subsystem — a three-stage pipeline. `ChunkManager` and `PlaybackController`/`PlayerManager` are per-document (`ctx.chunks`, `ctx.playback`, `ctx.players`); `MediaPipeline` is the one global (a shared content-addressed cache):
5860
59611. **`MediaPipeline`** (`MediaPipeline.swift`) — wraps ffprobe/ffmpeg. Probes media, generates filmstrips (thumbnail strips) and waveforms async, LRU content-addressed cache (default 50GB). Cache key = `SHA256(path|size|mtime)`, so moved/remounted files with identical content still hit cache.
602. **`ChunkManager`** (`ChunkedProxy.swift`) — demand-driven **30-second ProRes Proxy chunks** instead of whole-file transcodes. Builds chunks around the playhead and on-timeline clip ranges, three priority queues (urgent/background/failed). Adaptive quality (4 resolution/fps tiers) steps down/up based on measured encode wall-time vs. realtime ratio, and distinguishes network vs. encode bottlenecks. Composes ready chunks + original-file fallback into an `AVComposition`, versioned so playback only swaps when it's a strict upgrade (avoids black-frame flashes).
613. **`PlaybackController`** + `PlayerManager` (`PlaybackController.swift`) — master clock anchored to `CACurrentMediaTime()`; all players chase this one authoritative time at 60Hz. Supports reverse and J/K/L shuttle speeds (±1/2/4/8/16/32/64). One `AVPlayer` per video track, one per overlapping audio clip (audio gets looser sync tolerance since originals live on NAS). Seeks coalesce while one is in-flight.
622. **`ChunkManager`** (`ChunkedProxy.swift`) — demand-driven **30-second ProRes Proxy chunks** instead of whole-file transcodes. **Build order is the whole game** (`updateDemand` → `nextJob` → `pump`): every playback tick recomputes a best-first `demand` list from the playhead, playback direction, and visibility — for each video clip in a look-ahead window it scores the proxy chunks its source range needs (coverage before sharpening, visible/focused tracks before hidden, nearer the playhead in the playback direction before farther) so the frame you're about to see is always built first. Chunks outside the window fall to the whole-project background fill (`ensure`). Adaptive quality (4 resolution/fps tiers) steps down/up based on measured encode wall-time vs. realtime ratio and distinguishes network vs. encode bottlenecks; **imminent** coverage (uncovered, just ahead, visible) builds at that adaptive realtime quality so it lands in time, everything else at the full preview-quality target. Composes ready chunks + original-file fallback into a **per-media** `AVComposition` (`composition(for:)`), versioned so playback only swaps on a strict upgrade. Per-media (not per-track) is deliberate: only the clip under the playhead needs building, so the current frame is ready fast — a whole-track composition would have to assemble the entire timeline before it could show anything, which is far too slow for a big multicut project.
633. **`PlaybackController`** + `PlayerManager` (`PlaybackController.swift`) — master clock anchored to `CACurrentMediaTime()`; all players chase this one authoritative time at 60Hz. Supports reverse and J/K/L shuttle speeds (±1/2/4/8/16/32/64). Each video track is a **`VideoTrackPlayer`: two `AVPlayer`s (front/back) for gapless cuts.** The front shows the clip under the playhead (`currentTime` == source time, chasing at `rate × clip.speed`); as a cut to a *different media* approaches (~1.5 s out) the back is prerolled to the next clip's first frame — loaded, decoded, parked, muted — and at the cut the roles flip. The viewer's cell holds two `AVPlayerLayer`s (one bound to each sub-player, stable) and just toggles which is visible, so the flip is a layer swap with no `replaceCurrentItem` black-frame gap. Same-media continuations don't buffer (the front keeps its item and seeks). `tick()` runs `sync()` (which does the flip) *before* posting `.playheadChanged`, so the viewer reflects the flip on the same frame. Standalone `.audio` clips get one `AVPlayer` per clip (looser sync tolerance since originals live on NAS); a clip's player is **prerolled ~1 s before its cut and kept running (silent — its fade gain is 0 until reached)**, so crossing an audio cut is a seamless volume handover rather than a cold start — see `audioLookahead`/`audioLinger` in `syncAudio`. Item swaps hold the fresh item silent (`rate = 0`) until the immediately-following `syncTime` seeks it to the live position, so a swap never blips wrong content from t=0. `.projectChanged` forces a hard resync only while **paused** — during playback the 60 Hz tick already tracks, so edits away from the playhead don't stutter. Seeks coalesce while one is in-flight.
6264
63When working on playback bugs, the mental model is: `MediaPipeline` produces cached derived assets → `ChunkManager` decides what to build and assembles compositions → `PlaybackController` drives players against those compositions on a shared clock.
65When working on playback bugs, the mental model is: `MediaPipeline` produces cached derived assets → `ChunkManager` decides what to build (playhead/visibility-ordered) and assembles per-media compositions → `PlaybackController` drives the players (a double-buffered pair per video track, one per audio clip) against those compositions on a shared clock. Two levers make cuts gapless: the **build order** gets the next clip's proxy ready ahead of time, and the **double buffer** prerolls it and flips without an item swap.
6466
6567### Fusion integration (`FusionExport.swift`, `FusionComps.swift`)
6668
sequencer/Deltarune Ch5.sq/project.json created+11285
......@@ -0,0 +1,11285 @@
1{
2 "formatVersion" : 2,
3 "project" : {
4 "boardHeight" : 1080,
5 "boardWidth" : 1920,
6 "clips" : [
7 {
8 "duration" : 8.779661016949152,
9 "fadeIn" : 0,
10 "fadeOut" : 0,
11 "id" : "0856AA33-6A7E-4E96-BFB1-7B40DCC5C3E2",
12 "kind" : "video",
13 "linkId" : "E4929B8D-EE5B-4B9D-850D-B43F8A803E7A",
14 "mediaId" : "26CBEF77-6850-4D82-A5BD-A6A37587C040",
15 "muted" : false,
16 "newShot" : false,
17 "speed" : 1,
18 "srcIn" : 0.8026453438086703,
19 "start" : 0,
20 "track" : "v0"
21 },
22 {
23 "duration" : 8.779661016949152,
24 "fadeIn" : 0,
25 "fadeOut" : 0,
26 "id" : "F03A433A-DD0D-43A4-B2E0-77976661B8D5",
27 "kind" : "audio",
28 "linkId" : "E4929B8D-EE5B-4B9D-850D-B43F8A803E7A",
29 "mediaId" : "F676BA7D-A0E0-4603-AE13-B853D2F9F2BB",
30 "muted" : true,
31 "newShot" : false,
32 "speed" : 1,
33 "srcIn" : 0.9509002194553415,
34 "start" : 0,
35 "track" : "v1"
36 },
37 {
38 "duration" : 8.779661016949152,
39 "fadeIn" : 0,
40 "fadeOut" : 0,
41 "id" : "DDC04C1A-94A8-4F4D-9568-73F07B3E0304",
42 "kind" : "audio",
43 "linkId" : "E4929B8D-EE5B-4B9D-850D-B43F8A803E7A",
44 "mediaId" : "6FFA3786-8E51-4E69-A15D-D6A991C0CCAD",
45 "muted" : false,
46 "newShot" : false,
47 "speed" : 1,
48 "srcIn" : 1.2881355932203389,
49 "start" : 0,
50 "track" : "v2"
51 },
52 {
53 "duration" : 8.779661016949152,
54 "fadeIn" : 0,
55 "fadeOut" : 0,
56 "id" : "856D7E40-8EF3-4242-AB37-B26CBFD4B3F7",
57 "kind" : "video",
58 "linkId" : "E4929B8D-EE5B-4B9D-850D-B43F8A803E7A",
59 "mediaId" : "609E978E-5994-4757-A6C7-EAAE72818A49",
60 "muted" : false,
61 "newShot" : false,
62 "speed" : 1,
63 "srcIn" : 0.8603196774655755,
64 "start" : 0,
65 "track" : "v3"
66 },
67 {
68 "duration" : 8.779661016949152,
69 "fadeIn" : 0,
70 "fadeOut" : 0,
71 "id" : "ACBD774E-FC95-41F4-B5FB-037577828AD9",
72 "kind" : "video",
73 "linkId" : "E4929B8D-EE5B-4B9D-850D-B43F8A803E7A",
74 "mediaId" : "C0E05C14-2D32-4A55-9041-7A752A97F6B1",
75 "muted" : false,
76 "newShot" : false,
77 "speed" : 1,
78 "srcIn" : 0.8603078854665893,
79 "start" : 0,
80 "track" : "v4"
81 },
82 {
83 "duration" : 9.288135593220339,
84 "fadeIn" : 0,
85 "fadeOut" : 0,
86 "id" : "21E55168-059F-4CFC-AF14-FF43F7E7A9F8",
87 "kind" : "video",
88 "linkId" : "7ADB32D0-2D02-491A-8BF7-11F6A47A354E",
89 "mediaId" : "26CBEF77-6850-4D82-A5BD-A6A37587C040",
90 "muted" : false,
91 "newShot" : false,
92 "speed" : 1,
93 "srcIn" : 11.582306360757823,
94 "start" : 8.779661016949152,
95 "track" : "v0"
96 },
97 {
98 "duration" : 9.288135593220339,
99 "fadeIn" : 0,
100 "fadeOut" : 0,
101 "id" : "FA932A03-4AEE-428C-9593-EB3CFA09BEBE",
102 "kind" : "audio",
103 "linkId" : "7ADB32D0-2D02-491A-8BF7-11F6A47A354E",
104 "mediaId" : "F676BA7D-A0E0-4603-AE13-B853D2F9F2BB",
105 "muted" : true,
106 "newShot" : false,
107 "speed" : 1,
108 "srcIn" : 11.730561236404494,
109 "start" : 8.779661016949152,
110 "track" : "v1"
111 },
112 {
113 "duration" : 9.288135593220339,
114 "fadeIn" : 0,
115 "fadeOut" : 0,
116 "id" : "BDB5ABE0-71D2-457D-A7D4-21ADCC3B5743",
117 "kind" : "audio",
118 "linkId" : "7ADB32D0-2D02-491A-8BF7-11F6A47A354E",
119 "mediaId" : "6FFA3786-8E51-4E69-A15D-D6A991C0CCAD",
120 "muted" : false,
121 "newShot" : false,
122 "speed" : 1,
123 "srcIn" : 12.067796610169491,
124 "start" : 8.779661016949152,
125 "track" : "v2"
126 },
127 {
128 "duration" : 9.288135593220339,
129 "fadeIn" : 0,
130 "fadeOut" : 0,
131 "id" : "2A859930-C3F8-4E02-BD27-4CF36CF2138E",
132 "kind" : "video",
133 "linkId" : "7ADB32D0-2D02-491A-8BF7-11F6A47A354E",
134 "mediaId" : "609E978E-5994-4757-A6C7-EAAE72818A49",
135 "muted" : false,
136 "newShot" : false,
137 "speed" : 1,
138 "srcIn" : 11.639980694414728,
139 "start" : 8.779661016949152,
140 "track" : "v3"
141 },
142 {
143 "duration" : 9.288135593220339,
144 "fadeIn" : 0,
145 "fadeOut" : 0,
146 "id" : "197B76CD-FB1C-4DB5-BB64-B260CC9CC769",
147 "kind" : "video",
148 "linkId" : "7ADB32D0-2D02-491A-8BF7-11F6A47A354E",
149 "mediaId" : "C0E05C14-2D32-4A55-9041-7A752A97F6B1",
150 "muted" : false,
151 "newShot" : false,
152 "speed" : 1,
153 "srcIn" : 11.639968902415742,
154 "start" : 8.779661016949152,
155 "track" : "v4"
156 },
157 {
158 "duration" : 1.322033898305083,
159 "fadeIn" : 0,
160 "fadeOut" : 0,
161 "id" : "30FF8D20-D84E-4A9C-8303-F75C6D488959",
162 "kind" : "video",
163 "linkId" : "DE8705CE-9B40-487A-A252-50C469C56589",
164 "mediaId" : "26CBEF77-6850-4D82-A5BD-A6A37587C040",
165 "muted" : false,
166 "newShot" : false,
167 "speed" : 1,
168 "srcIn" : 86.02298432685951,
169 "start" : 18.067796610169495,
170 "track" : "v0"
171 },
172 {
173 "duration" : 1.322033898305083,
174 "fadeIn" : 0,
175 "fadeOut" : 0,
176 "id" : "28F8C52E-77E0-4886-9A6F-49E8524EFDB0",
177 "kind" : "audio",
178 "linkId" : "DE8705CE-9B40-487A-A252-50C469C56589",
179 "mediaId" : "F676BA7D-A0E0-4603-AE13-B853D2F9F2BB",
180 "muted" : true,
181 "newShot" : false,
182 "speed" : 1,
183 "srcIn" : 86.17123920250619,
184 "start" : 18.067796610169495,
185 "track" : "v1"
186 },
187 {
188 "duration" : 1.322033898305083,
189 "fadeIn" : 0,
190 "fadeOut" : 0,
191 "id" : "385FB864-B457-4585-A1E2-B07F0B398682",
192 "kind" : "audio",
193 "linkId" : "DE8705CE-9B40-487A-A252-50C469C56589",
194 "mediaId" : "6FFA3786-8E51-4E69-A15D-D6A991C0CCAD",
195 "muted" : false,
196 "newShot" : false,
197 "speed" : 1,
198 "srcIn" : 86.50847457627118,
199 "start" : 18.067796610169495,
200 "track" : "v2"
201 },
202 {
203 "duration" : 1.322033898305083,
204 "fadeIn" : 0,
205 "fadeOut" : 0,
206 "id" : "4703FBC9-8E06-4DE3-A460-19695096A67B",
207 "kind" : "video",
208 "linkId" : "DE8705CE-9B40-487A-A252-50C469C56589",
209 "mediaId" : "609E978E-5994-4757-A6C7-EAAE72818A49",
210 "muted" : false,
211 "newShot" : false,
212 "speed" : 1,
213 "srcIn" : 86.08065866051642,
214 "start" : 18.067796610169495,
215 "track" : "v3"
216 },
217 {
218 "duration" : 1.322033898305083,
219 "fadeIn" : 0,
220 "fadeOut" : 0,
221 "id" : "14297849-4D4F-41D8-A59A-15B5B1D60DF2",
222 "kind" : "video",
223 "linkId" : "DE8705CE-9B40-487A-A252-50C469C56589",
224 "mediaId" : "C0E05C14-2D32-4A55-9041-7A752A97F6B1",
225 "muted" : false,
226 "newShot" : false,
227 "speed" : 1,
228 "srcIn" : 86.08064686851743,
229 "start" : 18.067796610169495,
230 "track" : "v4"
231 },
232 {
233 "duration" : 1.1525423728813529,
234 "fadeIn" : 0,
235 "fadeOut" : 0,
236 "id" : "5EF423FA-AD82-4C89-8385-335325345015",
237 "kind" : "video",
238 "linkId" : "66157B6F-FF8D-490F-B510-26417942AA98",
239 "mediaId" : "26CBEF77-6850-4D82-A5BD-A6A37587C040",
240 "muted" : false,
241 "newShot" : false,
242 "speed" : 1,
243 "srcIn" : 113.98908602177477,
244 "start" : 19.389830508474578,
245 "track" : "v0"
246 },
247 {
248 "duration" : 1.1525423728813529,
249 "fadeIn" : 0,
250 "fadeOut" : 0,
251 "id" : "95F0F7BD-FA8B-48FE-A975-859CBDE2F60A",
252 "kind" : "audio",
253 "linkId" : "66157B6F-FF8D-490F-B510-26417942AA98",
254 "mediaId" : "F676BA7D-A0E0-4603-AE13-B853D2F9F2BB",
255 "muted" : true,
256 "newShot" : false,
257 "speed" : 1,
258 "srcIn" : 114.13734089742144,
259 "start" : 19.389830508474578,
260 "track" : "v1"
261 },
262 {
263 "duration" : 1.1525423728813529,
264 "fadeIn" : 0,
265 "fadeOut" : 0,
266 "id" : "236F5693-66F0-4DF2-9C6B-0FC10DC039A0",
267 "kind" : "audio",
268 "linkId" : "66157B6F-FF8D-490F-B510-26417942AA98",
269 "mediaId" : "6FFA3786-8E51-4E69-A15D-D6A991C0CCAD",
270 "muted" : false,
271 "newShot" : false,
272 "speed" : 1,
273 "srcIn" : 114.47457627118644,
274 "start" : 19.389830508474578,
275 "track" : "v2"
276 },
277 {
278 "duration" : 1.1525423728813529,
279 "fadeIn" : 0,
280 "fadeOut" : 0,
281 "id" : "08DF237F-434A-4ADB-B77C-F165BA3B9BAE",
282 "kind" : "video",
283 "linkId" : "66157B6F-FF8D-490F-B510-26417942AA98",
284 "mediaId" : "609E978E-5994-4757-A6C7-EAAE72818A49",
285 "muted" : false,
286 "newShot" : false,
287 "speed" : 1,
288 "srcIn" : 114.04676035543167,
289 "start" : 19.389830508474578,
290 "track" : "v3"
291 },
292 {
293 "duration" : 1.1525423728813529,
294 "fadeIn" : 0,
295 "fadeOut" : 0,
296 "id" : "6CEFB0C1-9FA6-4727-B291-AE95CBF63C1E",
297 "kind" : "video",
298 "linkId" : "66157B6F-FF8D-490F-B510-26417942AA98",
299 "mediaId" : "C0E05C14-2D32-4A55-9041-7A752A97F6B1",
300 "muted" : false,
301 "newShot" : false,
302 "speed" : 1,
303 "srcIn" : 114.04674856343269,
304 "start" : 19.389830508474578,
305 "track" : "v4"
306 },
307 {
308 "duration" : 5.220338983050851,
309 "fadeIn" : 0,
310 "fadeOut" : 0,
311 "id" : "CBC234E0-371D-4FDA-99B5-0BB7DE1737EB",
312 "kind" : "video",
313 "linkId" : "CEA52F0A-38E4-4F7B-AB96-117218501790",
314 "mediaId" : "26CBEF77-6850-4D82-A5BD-A6A37587C040",
315 "muted" : false,
316 "newShot" : false,
317 "speed" : 1,
318 "srcIn" : 397.9212894116052,
319 "start" : 20.54237288135596,
320 "track" : "v0"
321 },
322 {
323 "duration" : 5.220338983050851,
324 "fadeIn" : 0,
325 "fadeOut" : 0,
326 "id" : "A4F89301-A2DE-4597-AD9E-DC51F3507355",
327 "kind" : "audio",
328 "linkId" : "CEA52F0A-38E4-4F7B-AB96-117218501790",
329 "mediaId" : "F676BA7D-A0E0-4603-AE13-B853D2F9F2BB",
330 "muted" : true,
331 "newShot" : false,
332 "speed" : 1,
333 "srcIn" : 398.06954428725186,
334 "start" : 20.54237288135596,
335 "track" : "v1"
336 },
337 {
338 "duration" : 5.220338983050851,
339 "fadeIn" : 0,
340 "fadeOut" : 0,
341 "id" : "F00A71B2-649B-4BF6-9C0A-80270331C353",
342 "kind" : "audio",
343 "linkId" : "CEA52F0A-38E4-4F7B-AB96-117218501790",
344 "mediaId" : "6FFA3786-8E51-4E69-A15D-D6A991C0CCAD",
345 "muted" : false,
346 "newShot" : false,
347 "speed" : 1,
348 "srcIn" : 398.40677966101686,
349 "start" : 20.54237288135596,
350 "track" : "v2"
351 },
352 {
353 "duration" : 5.220338983050851,
354 "fadeIn" : 0,
355 "fadeOut" : 0,
356 "id" : "31A4F820-D7C2-4CAB-8A20-F52F615C6114",
357 "kind" : "video",
358 "linkId" : "CEA52F0A-38E4-4F7B-AB96-117218501790",
359 "mediaId" : "609E978E-5994-4757-A6C7-EAAE72818A49",
360 "muted" : false,
361 "newShot" : false,
362 "speed" : 1,
363 "srcIn" : 397.9789637452621,
364 "start" : 20.54237288135596,
365 "track" : "v3"
366 },
367 {
368 "duration" : 5.220338983050851,
369 "fadeIn" : 0,
370 "fadeOut" : 0,
371 "id" : "4B6EF408-0BAE-4495-885B-A0281AFD0B46",
372 "kind" : "video",
373 "linkId" : "CEA52F0A-38E4-4F7B-AB96-117218501790",
374 "mediaId" : "C0E05C14-2D32-4A55-9041-7A752A97F6B1",
375 "muted" : false,
376 "newShot" : false,
377 "speed" : 1,
378 "srcIn" : 397.9789519532631,
379 "start" : 20.54237288135596,
380 "track" : "v4"
381 },
382 {
383 "duration" : 14.57627118644065,
384 "fadeIn" : 0,
385 "fadeOut" : 0,
386 "id" : "B386A5EC-7B75-421C-941E-9A2E8FC4C303",
387 "kind" : "video",
388 "linkId" : "3688DE28-A2CB-4ED5-9666-9772A7FAF5FD",
389 "mediaId" : "26CBEF77-6850-4D82-A5BD-A6A37587C040",
390 "muted" : false,
391 "newShot" : false,
392 "speed" : 1,
393 "srcIn" : 422.73484873363907,
394 "start" : 25.76271186440681,
395 "track" : "v0"
396 },
397 {
398 "duration" : 14.57627118644065,
399 "fadeIn" : 0,
400 "fadeOut" : 0,
401 "id" : "78D95643-9E92-4665-A49E-1640916F222F",
402 "kind" : "audio",
403 "linkId" : "3688DE28-A2CB-4ED5-9666-9772A7FAF5FD",
404 "mediaId" : "F676BA7D-A0E0-4603-AE13-B853D2F9F2BB",
405 "muted" : true,
406 "newShot" : false,
407 "speed" : 1,
408 "srcIn" : 422.88310360928574,
409 "start" : 25.76271186440681,
410 "track" : "v1"
411 },
412 {
413 "duration" : 14.57627118644065,
414 "fadeIn" : 0,
415 "fadeOut" : 0,
416 "id" : "3EC46637-04E5-407D-90BD-BB290FB532C6",
417 "kind" : "audio",
418 "linkId" : "3688DE28-A2CB-4ED5-9666-9772A7FAF5FD",
419 "mediaId" : "6FFA3786-8E51-4E69-A15D-D6A991C0CCAD",
420 "muted" : false,
421 "newShot" : false,
422 "speed" : 1,
423 "srcIn" : 423.22033898305074,
424 "start" : 25.76271186440681,
425 "track" : "v2"
426 },
427 {
428 "duration" : 14.57627118644065,
429 "fadeIn" : 0,
430 "fadeOut" : 0,
431 "id" : "54D04272-5607-4E88-BBAB-A50A9FEAA953",
432 "kind" : "video",
433 "linkId" : "3688DE28-A2CB-4ED5-9666-9772A7FAF5FD",
434 "mediaId" : "609E978E-5994-4757-A6C7-EAAE72818A49",
435 "muted" : false,
436 "newShot" : false,
437 "speed" : 1,
438 "srcIn" : 422.792523067296,
439 "start" : 25.76271186440681,
440 "track" : "v3"
441 },
442 {
443 "duration" : 14.57627118644065,
444 "fadeIn" : 0,
445 "fadeOut" : 0,
446 "id" : "7B34B91A-3E53-4B21-A7C7-22172D7442EA",
447 "kind" : "video",
448 "linkId" : "3688DE28-A2CB-4ED5-9666-9772A7FAF5FD",
449 "mediaId" : "C0E05C14-2D32-4A55-9041-7A752A97F6B1",
450 "muted" : false,
451 "newShot" : false,
452 "speed" : 1,
453 "srcIn" : 422.792511275297,
454 "start" : 25.76271186440681,
455 "track" : "v4"
456 },
457 {
458 "duration" : 10.644067796610166,
459 "fadeIn" : 0,
460 "fadeOut" : 0,
461 "id" : "3EDF6E35-1C81-4706-878F-E685962438E7",
462 "kind" : "video",
463 "linkId" : "E6380C0A-8BCB-4E01-A3FF-4B6CE609EBA7",
464 "mediaId" : "26CBEF77-6850-4D82-A5BD-A6A37587C040",
465 "muted" : false,
466 "newShot" : false,
467 "speed" : 1,
468 "srcIn" : 447.0399334794017,
469 "start" : 40.33898305084746,
470 "track" : "v0"
471 },
472 {
473 "duration" : 10.644067796610166,
474 "fadeIn" : 0,
475 "fadeOut" : 0,
476 "id" : "5E3BFA57-DA8E-47B2-969D-026F31AD2A3C",
477 "kind" : "audio",
478 "linkId" : "E6380C0A-8BCB-4E01-A3FF-4B6CE609EBA7",
479 "mediaId" : "F676BA7D-A0E0-4603-AE13-B853D2F9F2BB",
480 "muted" : true,
481 "newShot" : false,
482 "speed" : 1,
483 "srcIn" : 447.1881883550484,
484 "start" : 40.33898305084746,
485 "track" : "v1"
486 },
487 {
488 "duration" : 10.644067796610166,
489 "fadeIn" : 0,
490 "fadeOut" : 0,
491 "id" : "8E2AD73C-7F9E-4F46-8D04-EF9087EE690A",
492 "kind" : "audio",
493 "linkId" : "E6380C0A-8BCB-4E01-A3FF-4B6CE609EBA7",
494 "mediaId" : "6FFA3786-8E51-4E69-A15D-D6A991C0CCAD",
495 "muted" : false,
496 "newShot" : false,
497 "speed" : 1,
498 "srcIn" : 447.5254237288134,
499 "start" : 40.33898305084746,
500 "track" : "v2"
501 },
502 {
503 "duration" : 10.644067796610166,
504 "fadeIn" : 0,
505 "fadeOut" : 0,
506 "id" : "F54DE68B-6E96-4BA9-BEB6-81E4B984892C",
507 "kind" : "video",
508 "linkId" : "E6380C0A-8BCB-4E01-A3FF-4B6CE609EBA7",
509 "mediaId" : "609E978E-5994-4757-A6C7-EAAE72818A49",
510 "muted" : false,
511 "newShot" : false,
512 "speed" : 1,
513 "srcIn" : 447.09760781305863,
514 "start" : 40.33898305084746,
515 "track" : "v3"
516 },
517 {
518 "duration" : 10.644067796610166,
519 "fadeIn" : 0,
520 "fadeOut" : 0,
521 "id" : "C77A294D-6278-4BAD-8BC5-F7BC3C372A00",
522 "kind" : "video",
523 "linkId" : "E6380C0A-8BCB-4E01-A3FF-4B6CE609EBA7",
524 "mediaId" : "C0E05C14-2D32-4A55-9041-7A752A97F6B1",
525 "muted" : false,
526 "newShot" : false,
527 "speed" : 1,
528 "srcIn" : 447.09759602105964,
529 "start" : 40.33898305084746,
530 "track" : "v4"
531 },
532 {
533 "duration" : 9.694915254237287,
534 "fadeIn" : 0,
535 "fadeOut" : 0,
536 "id" : "BA4DCFDD-E47E-4485-86C7-5D2F91DAD82A",
537 "kind" : "video",
538 "linkId" : "6CC9888B-E11F-41E5-BAC2-A15C7D015557",
539 "mediaId" : "26CBEF77-6850-4D82-A5BD-A6A37587C040",
540 "muted" : false,
541 "newShot" : false,
542 "speed" : 1,
543 "srcIn" : 495.4128148353339,
544 "start" : 50.983050847457626,
545 "track" : "v0"
546 },
547 {
548 "duration" : 9.694915254237287,
549 "fadeIn" : 0,
550 "fadeOut" : 0,
551 "id" : "F7D2760F-4578-4319-9C36-40A5E0C0554A",
552 "kind" : "audio",
553 "linkId" : "6CC9888B-E11F-41E5-BAC2-A15C7D015557",
554 "mediaId" : "F676BA7D-A0E0-4603-AE13-B853D2F9F2BB",
555 "muted" : true,
556 "newShot" : false,
557 "speed" : 1,
558 "srcIn" : 495.5610697109806,
559 "start" : 50.983050847457626,
560 "track" : "v1"
561 },
562 {
563 "duration" : 9.694915254237287,
564 "fadeIn" : 0,
565 "fadeOut" : 0,
566 "id" : "344797CD-1399-4A2F-B5D4-ED0DAFF921B2",
567 "kind" : "audio",
568 "linkId" : "6CC9888B-E11F-41E5-BAC2-A15C7D015557",
569 "mediaId" : "6FFA3786-8E51-4E69-A15D-D6A991C0CCAD",
570 "muted" : false,
571 "newShot" : false,
572 "speed" : 1,
573 "srcIn" : 495.8983050847456,
574 "start" : 50.983050847457626,
575 "track" : "v2"
576 },
577 {
578 "duration" : 9.694915254237287,
579 "fadeIn" : 0,
580 "fadeOut" : 0,
581 "id" : "436EE031-3821-460A-B1E6-362C6AC7DD15",
582 "kind" : "video",
583 "linkId" : "6CC9888B-E11F-41E5-BAC2-A15C7D015557",
584 "mediaId" : "609E978E-5994-4757-A6C7-EAAE72818A49",
585 "muted" : false,
586 "newShot" : false,
587 "speed" : 1,
588 "srcIn" : 495.4704891689908,
589 "start" : 50.983050847457626,
590 "track" : "v3"
591 },
592 {
593 "duration" : 9.694915254237287,
594 "fadeIn" : 0,
595 "fadeOut" : 0,
596 "id" : "DA7C94D5-26B6-465A-958E-DA029F1CEC3F",
597 "kind" : "video",
598 "linkId" : "6CC9888B-E11F-41E5-BAC2-A15C7D015557",
599 "mediaId" : "C0E05C14-2D32-4A55-9041-7A752A97F6B1",
600 "muted" : false,
601 "newShot" : false,
602 "speed" : 1,
603 "srcIn" : 495.4704773769918,
604 "start" : 50.983050847457626,
605 "track" : "v4"
606 },
607 {
608 "duration" : 12.440677966101696,
609 "fadeIn" : 0,
610 "fadeOut" : 0,
611 "id" : "EF8B18B2-7BEB-4520-9C17-903C1A223C06",
612 "kind" : "video",
613 "linkId" : "8D7F9D29-68E0-4E62-B7D7-B149575B3269",
614 "mediaId" : "26CBEF77-6850-4D82-A5BD-A6A37587C040",
615 "muted" : false,
616 "newShot" : false,
617 "speed" : 1,
618 "srcIn" : 511.0399334794017,
619 "start" : 60.67796610169491,
620 "track" : "v0"
621 },
622 {
623 "duration" : 12.440677966101696,
624 "fadeIn" : 0,
625 "fadeOut" : 0,
626 "id" : "65C8245D-4AA2-4534-BDAF-3D2841DC3F70",
627 "kind" : "audio",
628 "linkId" : "8D7F9D29-68E0-4E62-B7D7-B149575B3269",
629 "mediaId" : "F676BA7D-A0E0-4603-AE13-B853D2F9F2BB",
630 "muted" : true,
631 "newShot" : false,
632 "speed" : 1,
633 "srcIn" : 511.1881883550484,
634 "start" : 60.67796610169491,
635 "track" : "v1"
636 },
637 {
638 "duration" : 12.440677966101696,
639 "fadeIn" : 0,
640 "fadeOut" : 0,
641 "id" : "8ECF7044-2C74-43E6-9219-036DB453AA8E",
642 "kind" : "audio",
643 "linkId" : "8D7F9D29-68E0-4E62-B7D7-B149575B3269",
644 "mediaId" : "6FFA3786-8E51-4E69-A15D-D6A991C0CCAD",
645 "muted" : false,
646 "newShot" : false,
647 "speed" : 1,
648 "srcIn" : 511.5254237288134,
649 "start" : 60.67796610169491,
650 "track" : "v2"
651 },
652 {
653 "duration" : 12.440677966101696,
654 "fadeIn" : 0,
655 "fadeOut" : 0,
656 "id" : "E0691830-C2E3-4692-A443-C96E79034416",
657 "kind" : "video",
658 "linkId" : "8D7F9D29-68E0-4E62-B7D7-B149575B3269",
659 "mediaId" : "609E978E-5994-4757-A6C7-EAAE72818A49",
660 "muted" : false,
661 "newShot" : false,
662 "speed" : 1,
663 "srcIn" : 511.09760781305863,
664 "start" : 60.67796610169491,
665 "track" : "v3"
666 },
667 {
668 "duration" : 12.440677966101696,
669 "fadeIn" : 0,
670 "fadeOut" : 0,
671 "id" : "1DF28AA1-85FC-4AA6-8BCC-86CF38B06C1B",
672 "kind" : "video",
673 "linkId" : "8D7F9D29-68E0-4E62-B7D7-B149575B3269",
674 "mediaId" : "C0E05C14-2D32-4A55-9041-7A752A97F6B1",
675 "muted" : false,
676 "newShot" : false,
677 "speed" : 1,
678 "srcIn" : 511.09759602105964,
679 "start" : 60.67796610169491,
680 "track" : "v4"
681 },
682 {
683 "duration" : 2.0677966101694807,
684 "fadeIn" : 0,
685 "fadeOut" : 0,
686 "id" : "4937BF52-96D7-4AF0-B222-22E27B797A5C",
687 "kind" : "video",
688 "linkId" : "E5D93442-8B82-4040-8E5F-BD717FD75859",
689 "mediaId" : "26CBEF77-6850-4D82-A5BD-A6A37587C040",
690 "muted" : false,
691 "newShot" : false,
692 "speed" : 1,
693 "srcIn" : 539.9212894116051,
694 "start" : 73.11864406779661,
695 "track" : "v0"
696 },
697 {
698 "duration" : 2.0677966101694807,
699 "fadeIn" : 0,
700 "fadeOut" : 0,
701 "id" : "16FFB49E-AD0E-430F-BC1E-0E649D37B469",
702 "kind" : "audio",
703 "linkId" : "E5D93442-8B82-4040-8E5F-BD717FD75859",
704 "mediaId" : "F676BA7D-A0E0-4603-AE13-B853D2F9F2BB",
705 "muted" : true,
706 "newShot" : false,
707 "speed" : 1,
708 "srcIn" : 540.0695442872518,
709 "start" : 73.11864406779661,
710 "track" : "v1"
711 },
712 {
713 "duration" : 2.0677966101694807,
714 "fadeIn" : 0,
715 "fadeOut" : 0,
716 "id" : "3772DE62-3FC2-491B-9DBC-922F6DDC5BB1",
717 "kind" : "audio",
718 "linkId" : "E5D93442-8B82-4040-8E5F-BD717FD75859",
719 "mediaId" : "6FFA3786-8E51-4E69-A15D-D6A991C0CCAD",
720 "muted" : false,
721 "newShot" : false,
722 "speed" : 1,
723 "srcIn" : 540.4067796610168,
724 "start" : 73.11864406779661,
725 "track" : "v2"
726 },
727 {
728 "duration" : 2.0677966101694807,
729 "fadeIn" : 0,
730 "fadeOut" : 0,
731 "id" : "4A62F7EC-EFF6-4CE8-82FA-024FC1AE5421",
732 "kind" : "video",
733 "linkId" : "E5D93442-8B82-4040-8E5F-BD717FD75859",
734 "mediaId" : "609E978E-5994-4757-A6C7-EAAE72818A49",
735 "muted" : false,
736 "newShot" : false,
737 "speed" : 1,
738 "srcIn" : 539.978963745262,
739 "start" : 73.11864406779661,
740 "track" : "v3"
741 },
742 {
743 "duration" : 2.0677966101694807,
744 "fadeIn" : 0,
745 "fadeOut" : 0,
746 "id" : "7E5889B3-52E4-48AD-8E76-DCAC57E2F26C",
747 "kind" : "video",
748 "linkId" : "E5D93442-8B82-4040-8E5F-BD717FD75859",
749 "mediaId" : "C0E05C14-2D32-4A55-9041-7A752A97F6B1",
750 "muted" : false,
751 "newShot" : false,
752 "speed" : 1,
753 "srcIn" : 539.978951953263,
754 "start" : 73.11864406779661,
755 "track" : "v4"
756 },
757 {
758 "duration" : 4.542372881355931,
759 "fadeIn" : 0,
760 "fadeOut" : 0,
761 "id" : "779C851A-2F3C-4B84-8EDB-99C3D657B311",
762 "kind" : "video",
763 "linkId" : "DCA0DA82-D677-4F94-8ECD-EC2EE408A444",
764 "mediaId" : "26CBEF77-6850-4D82-A5BD-A6A37587C040",
765 "muted" : false,
766 "newShot" : false,
767 "speed" : 1,
768 "srcIn" : 552.0229843268594,
769 "start" : 75.18644067796609,
770 "track" : "v0"
771 },
772 {
773 "duration" : 4.542372881355931,
774 "fadeIn" : 0,
775 "fadeOut" : 0,
776 "id" : "6897606B-DA0A-4825-B6DB-325E170FC9B9",
777 "kind" : "audio",
778 "linkId" : "DCA0DA82-D677-4F94-8ECD-EC2EE408A444",
779 "mediaId" : "F676BA7D-A0E0-4603-AE13-B853D2F9F2BB",
780 "muted" : true,
781 "newShot" : false,
782 "speed" : 1,
783 "srcIn" : 552.1712392025061,
784 "start" : 75.18644067796609,
785 "track" : "v1"
786 },
787 {
788 "duration" : 4.542372881355931,
789 "fadeIn" : 0,
790 "fadeOut" : 0,
791 "id" : "07934764-AD42-4089-80B6-B244015447CF",
792 "kind" : "audio",
793 "linkId" : "DCA0DA82-D677-4F94-8ECD-EC2EE408A444",
794 "mediaId" : "6FFA3786-8E51-4E69-A15D-D6A991C0CCAD",
795 "muted" : false,
796 "newShot" : false,
797 "speed" : 1,
798 "srcIn" : 552.508474576271,
799 "start" : 75.18644067796609,
800 "track" : "v2"
801 },
802 {
803 "duration" : 4.542372881355931,
804 "fadeIn" : 0,
805 "fadeOut" : 0,
806 "id" : "EE2670C2-1AAA-40FC-A411-8CE33185992E",
807 "kind" : "video",
808 "linkId" : "DCA0DA82-D677-4F94-8ECD-EC2EE408A444",
809 "mediaId" : "609E978E-5994-4757-A6C7-EAAE72818A49",
810 "muted" : false,
811 "newShot" : false,
812 "speed" : 1,
813 "srcIn" : 552.0806586605163,
814 "start" : 75.18644067796609,
815 "track" : "v3"
816 },
817 {
818 "duration" : 4.542372881355931,
819 "fadeIn" : 0,
820 "fadeOut" : 0,
821 "id" : "83DC8C97-0117-495D-AB6F-488575028DF6",
822 "kind" : "video",
823 "linkId" : "DCA0DA82-D677-4F94-8ECD-EC2EE408A444",
824 "mediaId" : "C0E05C14-2D32-4A55-9041-7A752A97F6B1",
825 "muted" : false,
826 "newShot" : false,
827 "speed" : 1,
828 "srcIn" : 552.0806468685173,
829 "start" : 75.18644067796609,
830 "track" : "v4"
831 },
832 {
833 "duration" : 2.542372881355945,
834 "fadeIn" : 0,
835 "fadeOut" : 0,
836 "id" : "75DD8465-3E74-4576-A287-6F0B7A25885F",
837 "kind" : "video",
838 "linkId" : "B3514666-D79A-43F4-96AF-77F14857D9AE",
839 "mediaId" : "26CBEF77-6850-4D82-A5BD-A6A37587C040",
840 "muted" : false,
841 "newShot" : false,
842 "speed" : 1,
843 "srcIn" : 565.1077300895713,
844 "start" : 79.76271186440677,
845 "track" : "v0"
846 },
847 {
848 "duration" : 2.542372881355945,
849 "fadeIn" : 0,
850 "fadeOut" : 0,
851 "id" : "B5BC5C0D-5C8F-4616-954E-F0544734C4CC",
852 "kind" : "audio",
853 "linkId" : "B3514666-D79A-43F4-96AF-77F14857D9AE",
854 "mediaId" : "F676BA7D-A0E0-4603-AE13-B853D2F9F2BB",
855 "muted" : true,
856 "newShot" : false,
857 "speed" : 1,
858 "srcIn" : 565.255984965218,
859 "start" : 79.76271186440677,
860 "track" : "v1"
861 },
862 {
863 "duration" : 2.542372881355945,
864 "fadeIn" : 0,
865 "fadeOut" : 0,
866 "id" : "743266F1-8759-428D-8500-328A33B14EE7",
867 "kind" : "audio",
868 "linkId" : "B3514666-D79A-43F4-96AF-77F14857D9AE",
869 "mediaId" : "6FFA3786-8E51-4E69-A15D-D6A991C0CCAD",
870 "muted" : false,
871 "newShot" : false,
872 "speed" : 1,
873 "srcIn" : 565.593220338983,
874 "start" : 79.76271186440677,
875 "track" : "v2"
876 },
877 {
878 "duration" : 2.542372881355945,
879 "fadeIn" : 0,
880 "fadeOut" : 0,
881 "id" : "99C8EB5C-633C-407A-B29D-0F563C4A2A11",
882 "kind" : "video",
883 "linkId" : "B3514666-D79A-43F4-96AF-77F14857D9AE",
884 "mediaId" : "609E978E-5994-4757-A6C7-EAAE72818A49",
885 "muted" : false,
886 "newShot" : false,
887 "speed" : 1,
888 "srcIn" : 565.1654044232282,
889 "start" : 79.76271186440677,
890 "track" : "v3"
891 },
892 {
893 "duration" : 2.542372881355945,
894 "fadeIn" : 0,
895 "fadeOut" : 0,
896 "id" : "F5A5A67A-1C13-4920-94A3-D63379305184",
897 "kind" : "video",
898 "linkId" : "B3514666-D79A-43F4-96AF-77F14857D9AE",
899 "mediaId" : "C0E05C14-2D32-4A55-9041-7A752A97F6B1",
900 "muted" : false,
901 "newShot" : false,
902 "speed" : 1,
903 "srcIn" : 565.1653926312292,
904 "start" : 79.76271186440677,
905 "track" : "v4"
906 },
907 {
908 "duration" : 7.457627118644069,
909 "fadeIn" : 0,
910 "fadeOut" : 0,
911 "id" : "C4F9A637-30B0-4050-B75E-6C87C85699A8",
912 "kind" : "video",
913 "linkId" : "E6C60A60-B509-4E76-A1F1-797378C6C7EF",
914 "mediaId" : "26CBEF77-6850-4D82-A5BD-A6A37587C040",
915 "muted" : false,
916 "newShot" : false,
917 "speed" : 1,
918 "srcIn" : 792.0229843268595,
919 "start" : 82.30508474576271,
920 "track" : "v0"
921 },
922 {
923 "duration" : 7.457627118644069,
924 "fadeIn" : 0,
925 "fadeOut" : 0,
926 "id" : "D0EF66D9-DF73-4099-BAA1-CD7E3DC03441",
927 "kind" : "audio",
928 "linkId" : "E6C60A60-B509-4E76-A1F1-797378C6C7EF",
929 "mediaId" : "F676BA7D-A0E0-4603-AE13-B853D2F9F2BB",
930 "muted" : true,
931 "newShot" : false,
932 "speed" : 1,
933 "srcIn" : 792.1712392025062,
934 "start" : 82.30508474576271,
935 "track" : "v1"
936 },
937 {
938 "duration" : 7.457627118644069,
939 "fadeIn" : 0,
940 "fadeOut" : 0,
941 "id" : "FACBA48B-CB80-4E8C-AAF6-55705F37FDB8",
942 "kind" : "audio",
943 "linkId" : "E6C60A60-B509-4E76-A1F1-797378C6C7EF",
944 "mediaId" : "6FFA3786-8E51-4E69-A15D-D6A991C0CCAD",
945 "muted" : false,
946 "newShot" : false,
947 "speed" : 1,
948 "srcIn" : 792.5084745762712,
949 "start" : 82.30508474576271,
950 "track" : "v2"
951 },
952 {
953 "duration" : 7.457627118644069,
954 "fadeIn" : 0,
955 "fadeOut" : 0,
956 "id" : "24F56A9C-9D34-412D-AAFA-816D98E1BF4C",
957 "kind" : "video",
958 "linkId" : "E6C60A60-B509-4E76-A1F1-797378C6C7EF",
959 "mediaId" : "609E978E-5994-4757-A6C7-EAAE72818A49",
960 "muted" : false,
961 "newShot" : false,
962 "speed" : 1,
963 "srcIn" : 792.0806586605164,
964 "start" : 82.30508474576271,
965 "track" : "v3"
966 },
967 {
968 "duration" : 7.457627118644069,
969 "fadeIn" : 0,
970 "fadeOut" : 0,
971 "id" : "E8BDB4FD-1478-46C9-B2B9-4A995785C804",
972 "kind" : "video",
973 "linkId" : "E6C60A60-B509-4E76-A1F1-797378C6C7EF",
974 "mediaId" : "C0E05C14-2D32-4A55-9041-7A752A97F6B1",
975 "muted" : false,
976 "newShot" : false,
977 "speed" : 1,
978 "srcIn" : 792.0806468685174,
979 "start" : 82.30508474576271,
980 "track" : "v4"
981 },
982 {
983 "duration" : 5.7966101694915295,
984 "fadeIn" : 0,
985 "fadeOut" : 0,
986 "id" : "9F719822-EE9F-4D98-AE6F-95832502501D",
987 "kind" : "video",
988 "linkId" : "33DE57F6-49E9-47DA-971D-A7E3824D9B47",
989 "mediaId" : "40BBB768-793D-44DA-BBC9-B22F6591159D",
990 "muted" : false,
991 "newShot" : false,
992 "speed" : 1,
993 "srcIn" : 6.203389830508485,
994 "start" : 89.76271186440678,
995 "track" : "v0"
996 },
997 {
998 "duration" : 5.7966101694915295,
999 "fadeIn" : 0,
1000 "fadeOut" : 0,
1001 "id" : "4D903E13-8AAE-4EED-9E78-EB2D6201EE84",
1002 "kind" : "audio",
1003 "linkId" : "33DE57F6-49E9-47DA-971D-A7E3824D9B47",
1004 "mediaId" : "55C13A17-0423-4BC0-93A6-3FEFD02E7FC6",
1005 "muted" : true,
1006 "newShot" : false,
1007 "speed" : 1,
1008 "srcIn" : 6.1195182891674165,
1009 "start" : 89.76271186440678,
1010 "track" : "v1"
1011 },
1012 {
1013 "duration" : 5.7966101694915295,
1014 "fadeIn" : 0,
1015 "fadeOut" : 0,
1016 "id" : "0A6A0000-76C4-4F4F-A5EC-B9DB5AA10EE5",
1017 "kind" : "audio",
1018 "linkId" : "33DE57F6-49E9-47DA-971D-A7E3824D9B47",
1019 "mediaId" : "501034F8-09AC-44B1-8826-FCE9B36C68F9",
1020 "muted" : false,
1021 "newShot" : false,
1022 "speed" : 1,
1023 "srcIn" : 6.166194592398341,
1024 "start" : 89.76271186440678,
1025 "track" : "v2"
1026 },
1027 {
1028 "duration" : 5.7966101694915295,
1029 "fadeIn" : 0,
1030 "fadeOut" : 0,
1031 "id" : "91FC4279-5D23-44A0-BA93-5BC8CFB0775C",
1032 "kind" : "video",
1033 "linkId" : "33DE57F6-49E9-47DA-971D-A7E3824D9B47",
1034 "mediaId" : "D866E8BE-A5B1-4B51-B465-D3F753701CCE",
1035 "muted" : false,
1036 "newShot" : false,
1037 "speed" : 1,
1038 "srcIn" : 6.029587456170219,
1039 "start" : 89.76271186440678,
1040 "track" : "v3"
1041 },
1042 {
1043 "duration" : 5.7966101694915295,
1044 "fadeIn" : 0,
1045 "fadeOut" : 0,
1046 "id" : "51B251E0-3404-4CAC-B18A-37A29B9BF96B",
1047 "kind" : "video",
1048 "linkId" : "33DE57F6-49E9-47DA-971D-A7E3824D9B47",
1049 "mediaId" : "92E85F7F-CA8B-473D-82F6-C7A7418875B1",
1050 "muted" : false,
1051 "newShot" : false,
1052 "speed" : 1,
1053 "srcIn" : 6.029582872171403,
1054 "start" : 89.76271186440678,
1055 "track" : "v4"
1056 },
1057 {
1058 "duration" : 18.847457627118715,
1059 "fadeIn" : 0,
1060 "fadeOut" : 0,
1061 "id" : "E8DC76EC-C4D2-46AE-853A-A60F4F0D2E07",
1062 "kind" : "video",
1063 "linkId" : "C5B94050-9128-423F-8A3C-F610A15ECBE8",
1064 "mediaId" : "40BBB768-793D-44DA-BBC9-B22F6591159D",
1065 "muted" : false,
1066 "newShot" : false,
1067 "speed" : 1,
1068 "srcIn" : 153.08474576271186,
1069 "start" : 116.81355932203384,
1070 "track" : "v0"
1071 },
1072 {
1073 "duration" : 18.847457627118715,
1074 "fadeIn" : 0,
1075 "fadeOut" : 0,
1076 "id" : "4440B25F-48FC-49CC-9A78-207D16DDCCB7",
1077 "kind" : "audio",
1078 "linkId" : "C5B94050-9128-423F-8A3C-F610A15ECBE8",
1079 "mediaId" : "55C13A17-0423-4BC0-93A6-3FEFD02E7FC6",
1080 "muted" : true,
1081 "newShot" : false,
1082 "speed" : 1,
1083 "srcIn" : 153.0008742213708,
1084 "start" : 116.81355932203384,
1085 "track" : "v1"
1086 },
1087 {
1088 "duration" : 18.847457627118715,
1089 "fadeIn" : 0,
1090 "fadeOut" : 0,
1091 "id" : "6FEFD05B-C857-4EBE-9EE7-F0EAAA08569F",
1092 "kind" : "audio",
1093 "linkId" : "C5B94050-9128-423F-8A3C-F610A15ECBE8",
1094 "mediaId" : "501034F8-09AC-44B1-8826-FCE9B36C68F9",
1095 "muted" : false,
1096 "newShot" : false,
1097 "speed" : 1,
1098 "srcIn" : 153.04755052460172,
1099 "start" : 116.81355932203384,
1100 "track" : "v2"
1101 },
1102 {
1103 "duration" : 18.847457627118715,
1104 "fadeIn" : 0,
1105 "fadeOut" : 0,
1106 "id" : "E1C8762B-5477-4769-BD47-2DE3F3E7F08A",
1107 "kind" : "video",
1108 "linkId" : "C5B94050-9128-423F-8A3C-F610A15ECBE8",
1109 "mediaId" : "D866E8BE-A5B1-4B51-B465-D3F753701CCE",
1110 "muted" : false,
1111 "newShot" : false,
1112 "speed" : 1,
1113 "srcIn" : 152.9109433883736,
1114 "start" : 116.81355932203384,
1115 "track" : "v3"
1116 },
1117 {
1118 "duration" : 18.847457627118715,
1119 "fadeIn" : 0,
1120 "fadeOut" : 0,
1121 "id" : "6C90A7B0-6891-4C26-9ACE-E78062706047",
1122 "kind" : "video",
1123 "linkId" : "C5B94050-9128-423F-8A3C-F610A15ECBE8",
1124 "mediaId" : "92E85F7F-CA8B-473D-82F6-C7A7418875B1",
1125 "muted" : false,
1126 "newShot" : false,
1127 "speed" : 1,
1128 "srcIn" : 152.91093880437478,
1129 "start" : 116.81355932203384,
1130 "track" : "v4"
1131 },
1132 {
1133 "duration" : 13.220338983050851,
1134 "fadeIn" : 0,
1135 "fadeOut" : 0,
1136 "id" : "BE66E066-F241-46FE-8D9A-606DBA9554B7",
1137 "kind" : "video",
1138 "linkId" : "17FC9151-B113-420C-8754-353E10218637",
1139 "mediaId" : "40BBB768-793D-44DA-BBC9-B22F6591159D",
1140 "muted" : false,
1141 "newShot" : false,
1142 "speed" : 1,
1143 "srcIn" : 81.01694915254235,
1144 "start" : 103.59322033898304,
1145 "track" : "v0"
1146 },
1147 {
1148 "duration" : 13.220338983050851,
1149 "fadeIn" : 0,
1150 "fadeOut" : 0,
1151 "id" : "D10CE445-F3A3-46E4-B38D-B77AAB60F5FB",
1152 "kind" : "audio",
1153 "linkId" : "17FC9151-B113-420C-8754-353E10218637",
1154 "mediaId" : "55C13A17-0423-4BC0-93A6-3FEFD02E7FC6",
1155 "muted" : true,
1156 "newShot" : false,
1157 "speed" : 1,
1158 "srcIn" : 80.93307761120128,
1159 "start" : 103.59322033898304,
1160 "track" : "v1"
1161 },
1162 {
1163 "duration" : 13.220338983050851,
1164 "fadeIn" : 0,
1165 "fadeOut" : 0,
1166 "id" : "4F4DB6E2-2CC1-4696-8CE6-9B7119E8F034",
1167 "kind" : "audio",
1168 "linkId" : "17FC9151-B113-420C-8754-353E10218637",
1169 "mediaId" : "501034F8-09AC-44B1-8826-FCE9B36C68F9",
1170 "muted" : false,
1171 "newShot" : false,
1172 "speed" : 1,
1173 "srcIn" : 80.97975391443221,
1174 "start" : 103.59322033898304,
1175 "track" : "v2"
1176 },
1177 {
1178 "duration" : 13.220338983050851,
1179 "fadeIn" : 0,
1180 "fadeOut" : 0,
1181 "id" : "27A9D3E7-68B7-40B3-B332-244F8C0C1BF6",
1182 "kind" : "video",
1183 "linkId" : "17FC9151-B113-420C-8754-353E10218637",
1184 "mediaId" : "D866E8BE-A5B1-4B51-B465-D3F753701CCE",
1185 "muted" : false,
1186 "newShot" : false,
1187 "speed" : 1,
1188 "srcIn" : 80.84314677820409,
1189 "start" : 103.59322033898304,
1190 "track" : "v3"
1191 },
1192 {
1193 "duration" : 13.220338983050851,
1194 "fadeIn" : 0,
1195 "fadeOut" : 0,
1196 "id" : "5DB078BA-6259-4E90-9C12-E9642D920CED",
1197 "kind" : "video",
1198 "linkId" : "17FC9151-B113-420C-8754-353E10218637",
1199 "mediaId" : "92E85F7F-CA8B-473D-82F6-C7A7418875B1",
1200 "muted" : false,
1201 "newShot" : false,
1202 "speed" : 1,
1203 "srcIn" : 80.84314219420527,
1204 "start" : 103.59322033898304,
1205 "track" : "v4"
1206 },
1207 {
1208 "duration" : 2.6779661016949063,
1209 "fadeIn" : 0,
1210 "fadeOut" : 0,
1211 "id" : "5FE10E54-0DF5-4AE4-BD39-77E27BADC0B3",
1212 "kind" : "video",
1213 "linkId" : "557C472E-4AC3-4428-8BD4-7817D0701CAB",
1214 "mediaId" : "40BBB768-793D-44DA-BBC9-B22F6591159D",
1215 "muted" : false,
1216 "newShot" : false,
1217 "speed" : 1,
1218 "srcIn" : 22.40677966101694,
1219 "start" : 95.55932203389831,
1220 "track" : "v0"
1221 },
1222 {
1223 "duration" : 2.6779661016949063,
1224 "fadeIn" : 0,
1225 "fadeOut" : 0,
1226 "id" : "981061A0-98AF-4B09-9FEF-6DE942F56A18",
1227 "kind" : "audio",
1228 "linkId" : "557C472E-4AC3-4428-8BD4-7817D0701CAB",
1229 "mediaId" : "55C13A17-0423-4BC0-93A6-3FEFD02E7FC6",
1230 "muted" : true,
1231 "newShot" : false,
1232 "speed" : 1,
1233 "srcIn" : 22.322908119675873,
1234 "start" : 95.55932203389831,
1235 "track" : "v1"
1236 },
1237 {
1238 "duration" : 2.6779661016949063,
1239 "fadeIn" : 0,
1240 "fadeOut" : 0,
1241 "id" : "AD29D0F7-2863-42EA-BF7F-AB91267B34D1",
1242 "kind" : "audio",
1243 "linkId" : "557C472E-4AC3-4428-8BD4-7817D0701CAB",
1244 "mediaId" : "501034F8-09AC-44B1-8826-FCE9B36C68F9",
1245 "muted" : false,
1246 "newShot" : false,
1247 "speed" : 1,
1248 "srcIn" : 22.369584422906797,
1249 "start" : 95.55932203389831,
1250 "track" : "v2"
1251 },
1252 {
1253 "duration" : 2.6779661016949063,
1254 "fadeIn" : 0,
1255 "fadeOut" : 0,
1256 "id" : "665388F4-40AF-450A-9C85-EE082E1EE31F",
1257 "kind" : "video",
1258 "linkId" : "557C472E-4AC3-4428-8BD4-7817D0701CAB",
1259 "mediaId" : "D866E8BE-A5B1-4B51-B465-D3F753701CCE",
1260 "muted" : false,
1261 "newShot" : false,
1262 "speed" : 1,
1263 "srcIn" : 22.232977286678675,
1264 "start" : 95.55932203389831,
1265 "track" : "v3"
1266 },
1267 {
1268 "duration" : 2.6779661016949063,
1269 "fadeIn" : 0,
1270 "fadeOut" : 0,
1271 "id" : "3A784722-971F-44D4-B835-69C262B69DC7",
1272 "kind" : "video",
1273 "linkId" : "557C472E-4AC3-4428-8BD4-7817D0701CAB",
1274 "mediaId" : "92E85F7F-CA8B-473D-82F6-C7A7418875B1",
1275 "muted" : false,
1276 "newShot" : false,
1277 "speed" : 1,
1278 "srcIn" : 22.23297270267986,
1279 "start" : 95.55932203389831,
1280 "track" : "v4"
1281 },
1282 {
1283 "duration" : 5.355932203389827,
1284 "fadeIn" : 0,
1285 "fadeOut" : 0,
1286 "id" : "3101D12D-3956-4472-A689-AC25FAF6B2B3",
1287 "kind" : "video",
1288 "linkId" : "DD4C0E3A-C905-48F3-BA08-017781831163",
1289 "mediaId" : "40BBB768-793D-44DA-BBC9-B22F6591159D",
1290 "muted" : false,
1291 "newShot" : false,
1292 "speed" : 1,
1293 "srcIn" : 29.423728813559308,
1294 "start" : 98.23728813559322,
1295 "track" : "v0"
1296 },
1297 {
1298 "duration" : 5.355932203389827,
1299 "fadeIn" : 0,
1300 "fadeOut" : 0,
1301 "id" : "8AE89603-E830-41CB-98AA-FCE4DDB65200",
1302 "kind" : "audio",
1303 "linkId" : "DD4C0E3A-C905-48F3-BA08-017781831163",
1304 "mediaId" : "55C13A17-0423-4BC0-93A6-3FEFD02E7FC6",
1305 "muted" : true,
1306 "newShot" : false,
1307 "speed" : 1,
1308 "srcIn" : 29.33985727221824,
1309 "start" : 98.23728813559322,
1310 "track" : "v1"
1311 },
1312 {
1313 "duration" : 5.355932203389827,
1314 "fadeIn" : 0,
1315 "fadeOut" : 0,
1316 "id" : "30FEEB7F-94C6-4D85-98F3-9D56EFDEA6DB",
1317 "kind" : "audio",
1318 "linkId" : "DD4C0E3A-C905-48F3-BA08-017781831163",
1319 "mediaId" : "501034F8-09AC-44B1-8826-FCE9B36C68F9",
1320 "muted" : false,
1321 "newShot" : false,
1322 "speed" : 1,
1323 "srcIn" : 29.386533575449164,
1324 "start" : 98.23728813559322,
1325 "track" : "v2"
1326 },
1327 {
1328 "duration" : 5.355932203389827,
1329 "fadeIn" : 0,
1330 "fadeOut" : 0,
1331 "id" : "986FD34B-99B0-48E4-8AA8-EA9747E0F300",
1332 "kind" : "video",
1333 "linkId" : "DD4C0E3A-C905-48F3-BA08-017781831163",
1334 "mediaId" : "D866E8BE-A5B1-4B51-B465-D3F753701CCE",
1335 "muted" : false,
1336 "newShot" : false,
1337 "speed" : 1,
1338 "srcIn" : 29.249926439221042,
1339 "start" : 98.23728813559322,
1340 "track" : "v3"
1341 },
1342 {
1343 "duration" : 5.355932203389827,
1344 "fadeIn" : 0,
1345 "fadeOut" : 0,
1346 "id" : "847F33A9-CA10-4FA4-95E4-3B250E43146A",
1347 "kind" : "video",
1348 "linkId" : "DD4C0E3A-C905-48F3-BA08-017781831163",
1349 "mediaId" : "92E85F7F-CA8B-473D-82F6-C7A7418875B1",
1350 "muted" : false,
1351 "newShot" : false,
1352 "speed" : 1,
1353 "srcIn" : 29.249921855222226,
1354 "start" : 98.23728813559322,
1355 "track" : "v4"
1356 },
1357 {
1358 "duration" : 7.423728813559308,
1359 "fadeIn" : 0,
1360 "fadeOut" : 0,
1361 "id" : "11BBE731-6722-4267-9D42-9A793553DE06",
1362 "kind" : "video",
1363 "linkId" : "DA913126-892F-46B7-9A7A-51A2A1951521",
1364 "mediaId" : "40BBB768-793D-44DA-BBC9-B22F6591159D",
1365 "muted" : false,
1366 "newShot" : false,
1367 "speed" : 1,
1368 "srcIn" : 193.55932203389838,
1369 "start" : 135.66101694915255,
1370 "track" : "v0"
1371 },
1372 {
1373 "duration" : 7.423728813559308,
1374 "fadeIn" : 0,
1375 "fadeOut" : 0,
1376 "id" : "22421728-439D-4470-95A1-EC2EF0D21C81",
1377 "kind" : "audio",
1378 "linkId" : "DA913126-892F-46B7-9A7A-51A2A1951521",
1379 "mediaId" : "55C13A17-0423-4BC0-93A6-3FEFD02E7FC6",
1380 "muted" : true,
1381 "newShot" : false,
1382 "speed" : 1,
1383 "srcIn" : 193.47545049255731,
1384 "start" : 135.66101694915255,
1385 "track" : "v1"
1386 },
1387 {
1388 "duration" : 7.423728813559308,
1389 "fadeIn" : 0,
1390 "fadeOut" : 0,
1391 "id" : "AE02280F-55B2-4037-9D75-5CC083936FD1",
1392 "kind" : "audio",
1393 "linkId" : "DA913126-892F-46B7-9A7A-51A2A1951521",
1394 "mediaId" : "501034F8-09AC-44B1-8826-FCE9B36C68F9",
1395 "muted" : false,
1396 "newShot" : false,
1397 "speed" : 1,
1398 "srcIn" : 193.52212679578824,
1399 "start" : 135.66101694915255,
1400 "track" : "v2"
1401 },
1402 {
1403 "duration" : 7.423728813559308,
1404 "fadeIn" : 0,
1405 "fadeOut" : 0,
1406 "id" : "E2A5436F-D353-42DF-9A48-073C9FE6246F",
1407 "kind" : "video",
1408 "linkId" : "DA913126-892F-46B7-9A7A-51A2A1951521",
1409 "mediaId" : "D866E8BE-A5B1-4B51-B465-D3F753701CCE",
1410 "muted" : false,
1411 "newShot" : false,
1412 "speed" : 1,
1413 "srcIn" : 193.38551965956012,
1414 "start" : 135.66101694915255,
1415 "track" : "v3"
1416 },
1417 {
1418 "duration" : 7.423728813559308,
1419 "fadeIn" : 0,
1420 "fadeOut" : 0,
1421 "id" : "A1DA8F0A-B592-4DBD-9926-213A33E42749",
1422 "kind" : "video",
1423 "linkId" : "DA913126-892F-46B7-9A7A-51A2A1951521",
1424 "mediaId" : "92E85F7F-CA8B-473D-82F6-C7A7418875B1",
1425 "muted" : false,
1426 "newShot" : false,
1427 "speed" : 1,
1428 "srcIn" : 193.3855150755613,
1429 "start" : 135.66101694915255,
1430 "track" : "v4"
1431 },
1432 {
1433 "duration" : 2.3389830508474745,
1434 "fadeIn" : 0,
1435 "fadeOut" : 0,
1436 "id" : "0F625D10-4206-4D6D-8623-4F14529073E3",
1437 "kind" : "video",
1438 "linkId" : "E458F570-26D5-47DD-87C2-E11FF928A2CA",
1439 "mediaId" : "40BBB768-793D-44DA-BBC9-B22F6591159D",
1440 "muted" : false,
1441 "newShot" : false,
1442 "speed" : 1,
1443 "srcIn" : 214.9152542372882,
1444 "start" : 143.08474576271186,
1445 "track" : "v0"
1446 },
1447 {
1448 "duration" : 2.3389830508474745,
1449 "fadeIn" : 0,
1450 "fadeOut" : 0,
1451 "id" : "F69F71DF-6EEA-48C1-A1F0-F8EE77EE669C",
1452 "kind" : "audio",
1453 "linkId" : "E458F570-26D5-47DD-87C2-E11FF928A2CA",
1454 "mediaId" : "55C13A17-0423-4BC0-93A6-3FEFD02E7FC6",
1455 "muted" : true,
1456 "newShot" : false,
1457 "speed" : 1,
1458 "srcIn" : 214.83138269594713,
1459 "start" : 143.08474576271186,
1460 "track" : "v1"
1461 },
1462 {
1463 "duration" : 2.3389830508474745,
1464 "fadeIn" : 0,
1465 "fadeOut" : 0,
1466 "id" : "63619F12-6728-45D4-9664-77B370607EEB",
1467 "kind" : "audio",
1468 "linkId" : "E458F570-26D5-47DD-87C2-E11FF928A2CA",
1469 "mediaId" : "501034F8-09AC-44B1-8826-FCE9B36C68F9",
1470 "muted" : false,
1471 "newShot" : false,
1472 "speed" : 1,
1473 "srcIn" : 214.87805899917805,
1474 "start" : 143.08474576271186,
1475 "track" : "v2"
1476 },
1477 {
1478 "duration" : 2.3389830508474745,
1479 "fadeIn" : 0,
1480 "fadeOut" : 0,
1481 "id" : "4F7963B1-6583-494B-A319-8F2BF093C517",
1482 "kind" : "video",
1483 "linkId" : "E458F570-26D5-47DD-87C2-E11FF928A2CA",
1484 "mediaId" : "D866E8BE-A5B1-4B51-B465-D3F753701CCE",
1485 "muted" : false,
1486 "newShot" : false,
1487 "speed" : 1,
1488 "srcIn" : 214.74145186294993,
1489 "start" : 143.08474576271186,
1490 "track" : "v3"
1491 },
1492 {
1493 "duration" : 2.3389830508474745,
1494 "fadeIn" : 0,
1495 "fadeOut" : 0,
1496 "id" : "95B72825-D2B7-4D97-8C1F-63E1EB598DF9",
1497 "kind" : "video",
1498 "linkId" : "E458F570-26D5-47DD-87C2-E11FF928A2CA",
1499 "mediaId" : "92E85F7F-CA8B-473D-82F6-C7A7418875B1",
1500 "muted" : false,
1501 "newShot" : false,
1502 "speed" : 1,
1503 "srcIn" : 214.7414472789511,
1504 "start" : 143.08474576271186,
1505 "track" : "v4"
1506 },
1507 {
1508 "duration" : 6.135593220338961,
1509 "fadeIn" : 0,
1510 "fadeOut" : 0,
1511 "id" : "112CE6B8-BFDF-497C-9C69-CCE7802DB06C",
1512 "kind" : "video",
1513 "linkId" : "A28DCAA3-B061-4E38-8372-878AD7EF2060",
1514 "mediaId" : "40BBB768-793D-44DA-BBC9-B22F6591159D",
1515 "muted" : false,
1516 "newShot" : false,
1517 "speed" : 1,
1518 "srcIn" : 226.33898305084753,
1519 "start" : 145.42372881355934,
1520 "track" : "v0"
1521 },
1522 {
1523 "duration" : 6.135593220338961,
1524 "fadeIn" : 0,
1525 "fadeOut" : 0,
1526 "id" : "4040BC36-A9F4-4ED3-A653-1978DDDAF7C5",
1527 "kind" : "audio",
1528 "linkId" : "A28DCAA3-B061-4E38-8372-878AD7EF2060",
1529 "mediaId" : "55C13A17-0423-4BC0-93A6-3FEFD02E7FC6",
1530 "muted" : true,
1531 "newShot" : false,
1532 "speed" : 1,
1533 "srcIn" : 226.25511150950646,
1534 "start" : 145.42372881355934,
1535 "track" : "v1"
1536 },
1537 {
1538 "duration" : 6.135593220338961,
1539 "fadeIn" : 0,
1540 "fadeOut" : 0,
1541 "id" : "EFD116A1-EB5D-4CE3-B95D-14B73ECDE548",
1542 "kind" : "audio",
1543 "linkId" : "A28DCAA3-B061-4E38-8372-878AD7EF2060",
1544 "mediaId" : "501034F8-09AC-44B1-8826-FCE9B36C68F9",
1545 "muted" : false,
1546 "newShot" : false,
1547 "speed" : 1,
1548 "srcIn" : 226.3017878127374,
1549 "start" : 145.42372881355934,
1550 "track" : "v2"
1551 },
1552 {
1553 "duration" : 6.135593220338961,
1554 "fadeIn" : 0,
1555 "fadeOut" : 0,
1556 "id" : "0AE31757-C7B4-49BB-AB63-0641A6D83BC3",
1557 "kind" : "video",
1558 "linkId" : "A28DCAA3-B061-4E38-8372-878AD7EF2060",
1559 "mediaId" : "D866E8BE-A5B1-4B51-B465-D3F753701CCE",
1560 "muted" : false,
1561 "newShot" : false,
1562 "speed" : 1,
1563 "srcIn" : 226.16518067650927,
1564 "start" : 145.42372881355934,
1565 "track" : "v3"
1566 },
1567 {
1568 "duration" : 6.135593220338961,
1569 "fadeIn" : 0,
1570 "fadeOut" : 0,
1571 "id" : "9E1DFB7E-F165-4D38-AC11-812E55244554",
1572 "kind" : "video",
1573 "linkId" : "A28DCAA3-B061-4E38-8372-878AD7EF2060",
1574 "mediaId" : "92E85F7F-CA8B-473D-82F6-C7A7418875B1",
1575 "muted" : false,
1576 "newShot" : false,
1577 "speed" : 1,
1578 "srcIn" : 226.16517609251045,
1579 "start" : 145.42372881355934,
1580 "track" : "v4"
1581 },
1582 {
1583 "duration" : 8.508474576271198,
1584 "fadeIn" : 0,
1585 "fadeOut" : 0,
1586 "id" : "6C78F572-76AD-4191-822E-E127F9D580E4",
1587 "kind" : "video",
1588 "linkId" : "CBF9981A-DB5A-459B-96C0-CFDCEB644C78",
1589 "mediaId" : "40BBB768-793D-44DA-BBC9-B22F6591159D",
1590 "muted" : false,
1591 "newShot" : false,
1592 "speed" : 1,
1593 "srcIn" : 233.8305084745763,
1594 "start" : 151.5593220338983,
1595 "track" : "v0"
1596 },
1597 {
1598 "duration" : 8.508474576271198,
1599 "fadeIn" : 0,
1600 "fadeOut" : 0,
1601 "id" : "443C9738-2CD2-45FF-89ED-93D209FFBFCA",
1602 "kind" : "audio",
1603 "linkId" : "CBF9981A-DB5A-459B-96C0-CFDCEB644C78",
1604 "mediaId" : "55C13A17-0423-4BC0-93A6-3FEFD02E7FC6",
1605 "muted" : true,
1606 "newShot" : false,
1607 "speed" : 1,
1608 "srcIn" : 233.74663693323524,
1609 "start" : 151.5593220338983,
1610 "track" : "v1"
1611 },
1612 {
1613 "duration" : 8.508474576271198,
1614 "fadeIn" : 0,
1615 "fadeOut" : 0,
1616 "id" : "B28457F9-9054-461C-99E1-73E68152E679",
1617 "kind" : "audio",
1618 "linkId" : "CBF9981A-DB5A-459B-96C0-CFDCEB644C78",
1619 "mediaId" : "501034F8-09AC-44B1-8826-FCE9B36C68F9",
1620 "muted" : false,
1621 "newShot" : false,
1622 "speed" : 1,
1623 "srcIn" : 233.79331323646616,
1624 "start" : 151.5593220338983,
1625 "track" : "v2"
1626 },
1627 {
1628 "duration" : 8.508474576271198,
1629 "fadeIn" : 0,
1630 "fadeOut" : 0,
1631 "id" : "3D057A10-3381-4125-B50C-BC1998039A9D",
1632 "kind" : "video",
1633 "linkId" : "CBF9981A-DB5A-459B-96C0-CFDCEB644C78",
1634 "mediaId" : "D866E8BE-A5B1-4B51-B465-D3F753701CCE",
1635 "muted" : false,
1636 "newShot" : false,
1637 "speed" : 1,
1638 "srcIn" : 233.65670610023804,
1639 "start" : 151.5593220338983,
1640 "track" : "v3"
1641 },
1642 {
1643 "duration" : 8.508474576271198,
1644 "fadeIn" : 0,
1645 "fadeOut" : 0,
1646 "id" : "BDECC22C-1053-4191-B2F2-2EDBC4F3B5B5",
1647 "kind" : "video",
1648 "linkId" : "CBF9981A-DB5A-459B-96C0-CFDCEB644C78",
1649 "mediaId" : "92E85F7F-CA8B-473D-82F6-C7A7418875B1",
1650 "muted" : false,
1651 "newShot" : false,
1652 "speed" : 1,
1653 "srcIn" : 233.65670151623922,
1654 "start" : 151.5593220338983,
1655 "track" : "v4"
1656 },
1657 {
1658 "duration" : 9.050847457627128,
1659 "fadeIn" : 0,
1660 "fadeOut" : 0,
1661 "id" : "62014848-FAC6-4BBC-8E7A-14F0B28CC0E6",
1662 "kind" : "video",
1663 "linkId" : "4288CB77-E89F-42B1-927E-DEADACE56BA4",
1664 "mediaId" : "40BBB768-793D-44DA-BBC9-B22F6591159D",
1665 "muted" : false,
1666 "newShot" : false,
1667 "speed" : 1,
1668 "srcIn" : 279.6271186440679,
1669 "start" : 160.0677966101695,
1670 "track" : "v0"
1671 },
1672 {
1673 "duration" : 9.050847457627128,
1674 "fadeIn" : 0,
1675 "fadeOut" : 0,
1676 "id" : "59D15847-5750-41D0-84C8-63D08E771477",
1677 "kind" : "audio",
1678 "linkId" : "4288CB77-E89F-42B1-927E-DEADACE56BA4",
1679 "mediaId" : "55C13A17-0423-4BC0-93A6-3FEFD02E7FC6",
1680 "muted" : true,
1681 "newShot" : false,
1682 "speed" : 1,
1683 "srcIn" : 279.5432471027268,
1684 "start" : 160.0677966101695,
1685 "track" : "v1"
1686 },
1687 {
1688 "duration" : 9.050847457627128,
1689 "fadeIn" : 0,
1690 "fadeOut" : 0,
1691 "id" : "3404389F-7945-4513-A69B-1C428F1D90BE",
1692 "kind" : "audio",
1693 "linkId" : "4288CB77-E89F-42B1-927E-DEADACE56BA4",
1694 "mediaId" : "501034F8-09AC-44B1-8826-FCE9B36C68F9",
1695 "muted" : false,
1696 "newShot" : false,
1697 "speed" : 1,
1698 "srcIn" : 279.58992340595773,
1699 "start" : 160.0677966101695,
1700 "track" : "v2"
1701 },
1702 {
1703 "duration" : 9.050847457627128,
1704 "fadeIn" : 0,
1705 "fadeOut" : 0,
1706 "id" : "91B4872C-9861-4274-ADDC-E13CB1843662",
1707 "kind" : "video",
1708 "linkId" : "4288CB77-E89F-42B1-927E-DEADACE56BA4",
1709 "mediaId" : "D866E8BE-A5B1-4B51-B465-D3F753701CCE",
1710 "muted" : false,
1711 "newShot" : false,
1712 "speed" : 1,
1713 "srcIn" : 279.4533162697296,
1714 "start" : 160.0677966101695,
1715 "track" : "v3"
1716 },
1717 {
1718 "duration" : 9.050847457627128,
1719 "fadeIn" : 0,
1720 "fadeOut" : 0,
1721 "id" : "BA59E5A7-F140-4986-8E5B-E8994D035D5D",
1722 "kind" : "video",
1723 "linkId" : "4288CB77-E89F-42B1-927E-DEADACE56BA4",
1724 "mediaId" : "92E85F7F-CA8B-473D-82F6-C7A7418875B1",
1725 "muted" : false,
1726 "newShot" : false,
1727 "speed" : 1,
1728 "srcIn" : 279.4533116857308,
1729 "start" : 160.0677966101695,
1730 "track" : "v4"
1731 },
1732 {
1733 "duration" : 20.983050847457605,
1734 "fadeIn" : 0,
1735 "fadeOut" : 0,
1736 "id" : "D9CE7BC0-0A5C-4C90-A15A-7694E9E749B7",
1737 "kind" : "video",
1738 "linkId" : "1B8AA32F-8AAC-4699-91CD-75C5E92F7BA0",
1739 "mediaId" : "40BBB768-793D-44DA-BBC9-B22F6591159D",
1740 "muted" : false,
1741 "newShot" : false,
1742 "speed" : 1,
1743 "srcIn" : 341.42372881355936,
1744 "start" : 169.11864406779662,
1745 "track" : "v0"
1746 },
1747 {
1748 "duration" : 20.983050847457605,
1749 "fadeIn" : 0,
1750 "fadeOut" : 0,
1751 "id" : "6F77C3F0-E5FF-426F-99E1-AA28B988BB0A",
1752 "kind" : "audio",
1753 "linkId" : "1B8AA32F-8AAC-4699-91CD-75C5E92F7BA0",
1754 "mediaId" : "55C13A17-0423-4BC0-93A6-3FEFD02E7FC6",
1755 "muted" : true,
1756 "newShot" : false,
1757 "speed" : 1,
1758 "srcIn" : 341.3398572722183,
1759 "start" : 169.11864406779662,
1760 "track" : "v1"
1761 },
1762 {
1763 "duration" : 20.983050847457605,
1764 "fadeIn" : 0,
1765 "fadeOut" : 0,
1766 "id" : "DAF8FD62-8F36-4F73-94EE-5380D1E30401",
1767 "kind" : "audio",
1768 "linkId" : "1B8AA32F-8AAC-4699-91CD-75C5E92F7BA0",
1769 "mediaId" : "501034F8-09AC-44B1-8826-FCE9B36C68F9",
1770 "muted" : false,
1771 "newShot" : false,
1772 "speed" : 1,
1773 "srcIn" : 341.3865335754492,
1774 "start" : 169.11864406779662,
1775 "track" : "v2"
1776 },
1777 {
1778 "duration" : 20.983050847457605,
1779 "fadeIn" : 0,
1780 "fadeOut" : 0,
1781 "id" : "74FC2FC5-A8A4-469B-9482-73979D2C373D",
1782 "kind" : "video",
1783 "linkId" : "1B8AA32F-8AAC-4699-91CD-75C5E92F7BA0",
1784 "mediaId" : "D866E8BE-A5B1-4B51-B465-D3F753701CCE",
1785 "muted" : false,
1786 "newShot" : false,
1787 "speed" : 1,
1788 "srcIn" : 341.2499264392211,
1789 "start" : 169.11864406779662,
1790 "track" : "v3"
1791 },
1792 {
1793 "duration" : 20.983050847457605,
1794 "fadeIn" : 0,
1795 "fadeOut" : 0,
1796 "id" : "FFA5E7DE-E5C3-4ED5-9004-3201CD4A30DA",
1797 "kind" : "video",
1798 "linkId" : "1B8AA32F-8AAC-4699-91CD-75C5E92F7BA0",
1799 "mediaId" : "92E85F7F-CA8B-473D-82F6-C7A7418875B1",
1800 "muted" : false,
1801 "newShot" : false,
1802 "speed" : 1,
1803 "srcIn" : 341.2499218552223,
1804 "start" : 169.11864406779662,
1805 "track" : "v4"
1806 },
1807 {
1808 "duration" : 3.1525423728813564,
1809 "fadeIn" : 0,
1810 "fadeOut" : 0,
1811 "id" : "F7F6AF02-0DE4-4485-8590-753751DA656D",
1812 "kind" : "video",
1813 "linkId" : "1B2E5F19-8476-4AC4-B136-E5222F541298",
1814 "mediaId" : "40BBB768-793D-44DA-BBC9-B22F6591159D",
1815 "muted" : false,
1816 "newShot" : false,
1817 "speed" : 1,
1818 "srcIn" : 516.9830508474577,
1819 "start" : 190.10169491525423,
1820 "track" : "v0"
1821 },
1822 {
1823 "duration" : 3.1525423728813564,
1824 "fadeIn" : 0,
1825 "fadeOut" : 0,
1826 "id" : "0F29059A-7B58-4133-AA5B-F26BDD11FCEA",
1827 "kind" : "audio",
1828 "linkId" : "1B2E5F19-8476-4AC4-B136-E5222F541298",
1829 "mediaId" : "55C13A17-0423-4BC0-93A6-3FEFD02E7FC6",
1830 "muted" : true,
1831 "newShot" : false,
1832 "speed" : 1,
1833 "srcIn" : 516.8991793061166,
1834 "start" : 190.10169491525423,
1835 "track" : "v1"
1836 },
1837 {
1838 "duration" : 3.1525423728813564,
1839 "fadeIn" : 0,
1840 "fadeOut" : 0,
1841 "id" : "67E73C14-2908-4A77-83E5-6A8F38F25BF4",
1842 "kind" : "audio",
1843 "linkId" : "1B2E5F19-8476-4AC4-B136-E5222F541298",
1844 "mediaId" : "501034F8-09AC-44B1-8826-FCE9B36C68F9",
1845 "muted" : false,
1846 "newShot" : false,
1847 "speed" : 1,
1848 "srcIn" : 516.9458556093475,
1849 "start" : 190.10169491525423,
1850 "track" : "v2"
1851 },
1852 {
1853 "duration" : 3.1525423728813564,
1854 "fadeIn" : 0,
1855 "fadeOut" : 0,
1856 "id" : "DACD3C89-6F61-4E5A-BFF4-ABCB5013028B",
1857 "kind" : "video",
1858 "linkId" : "1B2E5F19-8476-4AC4-B136-E5222F541298",
1859 "mediaId" : "D866E8BE-A5B1-4B51-B465-D3F753701CCE",
1860 "muted" : false,
1861 "newShot" : false,
1862 "speed" : 1,
1863 "srcIn" : 516.8092484731194,
1864 "start" : 190.10169491525423,
1865 "track" : "v3"
1866 },
1867 {
1868 "duration" : 3.1525423728813564,
1869 "fadeIn" : 0,
1870 "fadeOut" : 0,
1871 "id" : "D85A8D17-5419-4FE8-A767-7886ACAD06D2",
1872 "kind" : "video",
1873 "linkId" : "1B2E5F19-8476-4AC4-B136-E5222F541298",
1874 "mediaId" : "92E85F7F-CA8B-473D-82F6-C7A7418875B1",
1875 "muted" : false,
1876 "newShot" : false,
1877 "speed" : 1,
1878 "srcIn" : 516.8092438891206,
1879 "start" : 190.10169491525423,
1880 "track" : "v4"
1881 },
1882 {
1883 "duration" : 3.0508474576271283,
1884 "fadeIn" : 0,
1885 "fadeOut" : 0,
1886 "id" : "22E40845-33D9-4113-9E6A-72ABDBAF556B",
1887 "kind" : "video",
1888 "linkId" : "3CC5F7F4-7A10-4825-BA22-58F0E5FA39EC",
1889 "mediaId" : "40BBB768-793D-44DA-BBC9-B22F6591159D",
1890 "muted" : false,
1891 "newShot" : false,
1892 "speed" : 1,
1893 "srcIn" : 526.0677966101696,
1894 "start" : 193.25423728813558,
1895 "track" : "v0"
1896 },
1897 {
1898 "duration" : 3.0508474576271283,
1899 "fadeIn" : 0,
1900 "fadeOut" : 0,
1901 "id" : "80104D35-A942-4197-BE85-9E999B164BD5",
1902 "kind" : "audio",
1903 "linkId" : "3CC5F7F4-7A10-4825-BA22-58F0E5FA39EC",
1904 "mediaId" : "55C13A17-0423-4BC0-93A6-3FEFD02E7FC6",
1905 "muted" : true,
1906 "newShot" : false,
1907 "speed" : 1,
1908 "srcIn" : 525.9839250688285,
1909 "start" : 193.25423728813558,
1910 "track" : "v1"
1911 },
1912 {
1913 "duration" : 3.0508474576271283,
1914 "fadeIn" : 0,
1915 "fadeOut" : 0,
1916 "id" : "98A4488E-8AFB-4DAF-AA4A-B6171B5BE4B0",
1917 "kind" : "audio",
1918 "linkId" : "3CC5F7F4-7A10-4825-BA22-58F0E5FA39EC",
1919 "mediaId" : "501034F8-09AC-44B1-8826-FCE9B36C68F9",
1920 "muted" : false,
1921 "newShot" : false,
1922 "speed" : 1,
1923 "srcIn" : 526.0306013720594,
1924 "start" : 193.25423728813558,
1925 "track" : "v2"
1926 },
1927 {
1928 "duration" : 3.0508474576271283,
1929 "fadeIn" : 0,
1930 "fadeOut" : 0,
1931 "id" : "31F9AFDE-F19F-4D52-8468-6E4FD6E73843",
1932 "kind" : "video",
1933 "linkId" : "3CC5F7F4-7A10-4825-BA22-58F0E5FA39EC",
1934 "mediaId" : "D866E8BE-A5B1-4B51-B465-D3F753701CCE",
1935 "muted" : false,
1936 "newShot" : false,
1937 "speed" : 1,
1938 "srcIn" : 525.8939942358313,
1939 "start" : 193.25423728813558,
1940 "track" : "v3"
1941 },
1942 {
1943 "duration" : 3.0508474576271283,
1944 "fadeIn" : 0,
1945 "fadeOut" : 0,
1946 "id" : "58C86E52-F741-4EAF-93E1-9AD9B238BEBC",
1947 "kind" : "video",
1948 "linkId" : "3CC5F7F4-7A10-4825-BA22-58F0E5FA39EC",
1949 "mediaId" : "92E85F7F-CA8B-473D-82F6-C7A7418875B1",
1950 "muted" : false,
1951 "newShot" : false,
1952 "speed" : 1,
1953 "srcIn" : 525.8939896518325,
1954 "start" : 193.25423728813558,
1955 "track" : "v4"
1956 },
1957 {
1958 "duration" : 12.101694915254257,
1959 "fadeIn" : 0,
1960 "fadeOut" : 0,
1961 "id" : "729D86A6-9A2B-4F18-97A2-9E4B8842705A",
1962 "kind" : "video",
1963 "linkId" : "96ED86B5-C0C4-427A-AB87-51061D1B6C02",
1964 "mediaId" : "40BBB768-793D-44DA-BBC9-B22F6591159D",
1965 "muted" : false,
1966 "newShot" : false,
1967 "speed" : 1,
1968 "srcIn" : 547.3898305084747,
1969 "start" : 196.3050847457627,
1970 "track" : "v0"
1971 },
1972 {
1973 "duration" : 12.101694915254257,
1974 "fadeIn" : 0,
1975 "fadeOut" : 0,
1976 "id" : "537BA6C3-FE42-41F7-AFD1-CCD1498FD164",
1977 "kind" : "audio",
1978 "linkId" : "96ED86B5-C0C4-427A-AB87-51061D1B6C02",
1979 "mediaId" : "55C13A17-0423-4BC0-93A6-3FEFD02E7FC6",
1980 "muted" : true,
1981 "newShot" : false,
1982 "speed" : 1,
1983 "srcIn" : 547.3059589671336,
1984 "start" : 196.3050847457627,
1985 "track" : "v1"
1986 },
1987 {
1988 "duration" : 12.101694915254257,
1989 "fadeIn" : 0,
1990 "fadeOut" : 0,
1991 "id" : "DF50C8A8-7061-47D8-9E3E-F76059F64F17",
1992 "kind" : "audio",
1993 "linkId" : "96ED86B5-C0C4-427A-AB87-51061D1B6C02",
1994 "mediaId" : "501034F8-09AC-44B1-8826-FCE9B36C68F9",
1995 "muted" : false,
1996 "newShot" : false,
1997 "speed" : 1,
1998 "srcIn" : 547.3526352703645,
1999 "start" : 196.3050847457627,
2000 "track" : "v2"
2001 },
2002 {
2003 "duration" : 12.101694915254257,
2004 "fadeIn" : 0,
2005 "fadeOut" : 0,
2006 "id" : "396149DF-84B8-447F-8A4F-6BC523F5F5C2",
2007 "kind" : "video",
2008 "linkId" : "96ED86B5-C0C4-427A-AB87-51061D1B6C02",
2009 "mediaId" : "D866E8BE-A5B1-4B51-B465-D3F753701CCE",
2010 "muted" : false,
2011 "newShot" : false,
2012 "speed" : 1,
2013 "srcIn" : 547.2160281341364,
2014 "start" : 196.3050847457627,
2015 "track" : "v3"
2016 },
2017 {
2018 "duration" : 12.101694915254257,
2019 "fadeIn" : 0,
2020 "fadeOut" : 0,
2021 "id" : "8BAC1614-CB12-4DC2-9F56-99B2DD91B028",
2022 "kind" : "video",
2023 "linkId" : "96ED86B5-C0C4-427A-AB87-51061D1B6C02",
2024 "mediaId" : "92E85F7F-CA8B-473D-82F6-C7A7418875B1",
2025 "muted" : false,
2026 "newShot" : false,
2027 "speed" : 1,
2028 "srcIn" : 547.2160235501376,
2029 "start" : 196.3050847457627,
2030 "track" : "v4"
2031 },
2032 {
2033 "duration" : 4.203389830508456,
2034 "fadeIn" : 0,
2035 "fadeOut" : 0,
2036 "id" : "C677D610-A145-44E9-A5DF-4F24EF105083",
2037 "kind" : "video",
2038 "linkId" : "61201D64-66C9-4C57-8602-97A96701E0BF",
2039 "mediaId" : "40BBB768-793D-44DA-BBC9-B22F6591159D",
2040 "muted" : false,
2041 "newShot" : false,
2042 "speed" : 1,
2043 "srcIn" : 566.3389830508476,
2044 "start" : 208.40677966101697,
2045 "track" : "v0"
2046 },
2047 {
2048 "duration" : 4.203389830508456,
2049 "fadeIn" : 0,
2050 "fadeOut" : 0,
2051 "id" : "2D9D8A03-3523-4FF8-A897-637F158C3C79",
2052 "kind" : "audio",
2053 "linkId" : "61201D64-66C9-4C57-8602-97A96701E0BF",
2054 "mediaId" : "55C13A17-0423-4BC0-93A6-3FEFD02E7FC6",
2055 "muted" : true,
2056 "newShot" : false,
2057 "speed" : 1,
2058 "srcIn" : 566.2551115095065,
2059 "start" : 208.40677966101697,
2060 "track" : "v1"
2061 },
2062 {
2063 "duration" : 4.203389830508456,
2064 "fadeIn" : 0,
2065 "fadeOut" : 0,
2066 "id" : "61480E1E-954B-45A2-9C3A-FF0F0BB690FC",
2067 "kind" : "audio",
2068 "linkId" : "61201D64-66C9-4C57-8602-97A96701E0BF",
2069 "mediaId" : "501034F8-09AC-44B1-8826-FCE9B36C68F9",
2070 "muted" : false,
2071 "newShot" : false,
2072 "speed" : 1,
2073 "srcIn" : 566.3017878127374,
2074 "start" : 208.40677966101697,
2075 "track" : "v2"
2076 },
2077 {
2078 "duration" : 4.203389830508456,
2079 "fadeIn" : 0,
2080 "fadeOut" : 0,
2081 "id" : "0501FE38-6C08-467C-9E1C-E41CA0498523",
2082 "kind" : "video",
2083 "linkId" : "61201D64-66C9-4C57-8602-97A96701E0BF",
2084 "mediaId" : "D866E8BE-A5B1-4B51-B465-D3F753701CCE",
2085 "muted" : false,
2086 "newShot" : false,
2087 "speed" : 1,
2088 "srcIn" : 566.1651806765093,
2089 "start" : 208.40677966101697,
2090 "track" : "v3"
2091 },
2092 {
2093 "duration" : 4.203389830508456,
2094 "fadeIn" : 0,
2095 "fadeOut" : 0,
2096 "id" : "74D8A914-BC66-4C84-BFFA-A0CA6639D704",
2097 "kind" : "video",
2098 "linkId" : "61201D64-66C9-4C57-8602-97A96701E0BF",
2099 "mediaId" : "92E85F7F-CA8B-473D-82F6-C7A7418875B1",
2100 "muted" : false,
2101 "newShot" : false,
2102 "speed" : 1,
2103 "srcIn" : 566.1651760925105,
2104 "start" : 208.40677966101697,
2105 "track" : "v4"
2106 },
2107 {
2108 "duration" : 6.406779661016941,
2109 "fadeIn" : 0,
2110 "fadeOut" : 0,
2111 "id" : "9B498BC6-78AB-44F5-B23B-25E8F7DDC89B",
2112 "kind" : "video",
2113 "linkId" : "02AB076D-1732-49F9-AA10-410FA9A3E78F",
2114 "mediaId" : "40BBB768-793D-44DA-BBC9-B22F6591159D",
2115 "muted" : false,
2116 "newShot" : false,
2117 "speed" : 1,
2118 "srcIn" : 571.35593220339,
2119 "start" : 212.61016949152543,
2120 "track" : "v0"
2121 },
2122 {
2123 "duration" : 6.406779661016941,
2124 "fadeIn" : 0,
2125 "fadeOut" : 0,
2126 "id" : "8C7D77E2-3FA1-41F1-884C-63C516C4AE33",
2127 "kind" : "audio",
2128 "linkId" : "02AB076D-1732-49F9-AA10-410FA9A3E78F",
2129 "mediaId" : "55C13A17-0423-4BC0-93A6-3FEFD02E7FC6",
2130 "muted" : true,
2131 "newShot" : false,
2132 "speed" : 1,
2133 "srcIn" : 571.272060662049,
2134 "start" : 212.61016949152543,
2135 "track" : "v1"
2136 },
2137 {
2138 "duration" : 6.406779661016941,
2139 "fadeIn" : 0,
2140 "fadeOut" : 0,
2141 "id" : "21A1243A-B2AF-4637-B9E4-3BA86980E892",
2142 "kind" : "audio",
2143 "linkId" : "02AB076D-1732-49F9-AA10-410FA9A3E78F",
2144 "mediaId" : "501034F8-09AC-44B1-8826-FCE9B36C68F9",
2145 "muted" : false,
2146 "newShot" : false,
2147 "speed" : 1,
2148 "srcIn" : 571.3187369652799,
2149 "start" : 212.61016949152543,
2150 "track" : "v2"
2151 },
2152 {
2153 "duration" : 6.406779661016941,
2154 "fadeIn" : 0,
2155 "fadeOut" : 0,
2156 "id" : "F361620E-6686-4423-BFBD-736FF93CDEC5",
2157 "kind" : "video",
2158 "linkId" : "02AB076D-1732-49F9-AA10-410FA9A3E78F",
2159 "mediaId" : "D866E8BE-A5B1-4B51-B465-D3F753701CCE",
2160 "muted" : false,
2161 "newShot" : false,
2162 "speed" : 1,
2163 "srcIn" : 571.1821298290517,
2164 "start" : 212.61016949152543,
2165 "track" : "v3"
2166 },
2167 {
2168 "duration" : 6.406779661016941,
2169 "fadeIn" : 0,
2170 "fadeOut" : 0,
2171 "id" : "2A763F6C-BEF9-435E-8F42-C72F8F08381A",
2172 "kind" : "video",
2173 "linkId" : "02AB076D-1732-49F9-AA10-410FA9A3E78F",
2174 "mediaId" : "92E85F7F-CA8B-473D-82F6-C7A7418875B1",
2175 "muted" : false,
2176 "newShot" : false,
2177 "speed" : 1,
2178 "srcIn" : 571.1821252450529,
2179 "start" : 212.61016949152543,
2180 "track" : "v4"
2181 },
2182 {
2183 "duration" : 4.610169491525454,
2184 "fadeIn" : 0,
2185 "fadeOut" : 0,
2186 "id" : "ADAD35C0-6E8C-4D37-B4E4-D2859B73BE27",
2187 "kind" : "video",
2188 "linkId" : "3473CFA9-BD18-42DA-AD05-6C5914B914B6",
2189 "mediaId" : "40BBB768-793D-44DA-BBC9-B22F6591159D",
2190 "muted" : false,
2191 "newShot" : false,
2192 "speed" : 1,
2193 "srcIn" : 584.813559322034,
2194 "start" : 222.06779661016947,
2195 "track" : "v0"
2196 },
2197 {
2198 "duration" : 4.610169491525454,
2199 "fadeIn" : 0,
2200 "fadeOut" : 0,
2201 "id" : "86415894-FDC6-4F60-A9B8-0954DBA0D01D",
2202 "kind" : "audio",
2203 "linkId" : "3473CFA9-BD18-42DA-AD05-6C5914B914B6",
2204 "mediaId" : "55C13A17-0423-4BC0-93A6-3FEFD02E7FC6",
2205 "muted" : true,
2206 "newShot" : false,
2207 "speed" : 1,
2208 "srcIn" : 584.729687780693,
2209 "start" : 222.06779661016947,
2210 "track" : "v1"
2211 },
2212 {
2213 "duration" : 4.610169491525454,
2214 "fadeIn" : 0,
2215 "fadeOut" : 0,
2216 "id" : "48CD7335-7777-4C44-A35A-17CFAA490549",
2217 "kind" : "audio",
2218 "linkId" : "3473CFA9-BD18-42DA-AD05-6C5914B914B6",
2219 "mediaId" : "501034F8-09AC-44B1-8826-FCE9B36C68F9",
2220 "muted" : false,
2221 "newShot" : false,
2222 "speed" : 1,
2223 "srcIn" : 584.7763640839239,
2224 "start" : 222.06779661016947,
2225 "track" : "v2"
2226 },
2227 {
2228 "duration" : 4.610169491525454,
2229 "fadeIn" : 0,
2230 "fadeOut" : 0,
2231 "id" : "54BD8C49-005E-4485-9DC1-7F916CF8BDD3",
2232 "kind" : "video",
2233 "linkId" : "3473CFA9-BD18-42DA-AD05-6C5914B914B6",
2234 "mediaId" : "D866E8BE-A5B1-4B51-B465-D3F753701CCE",
2235 "muted" : false,
2236 "newShot" : false,
2237 "speed" : 1,
2238 "srcIn" : 584.6397569476958,
2239 "start" : 222.06779661016947,
2240 "track" : "v3"
2241 },
2242 {
2243 "duration" : 4.610169491525454,
2244 "fadeIn" : 0,
2245 "fadeOut" : 0,
2246 "id" : "23AEC066-77D9-4BA3-8117-EE7A8161CBBD",
2247 "kind" : "video",
2248 "linkId" : "3473CFA9-BD18-42DA-AD05-6C5914B914B6",
2249 "mediaId" : "92E85F7F-CA8B-473D-82F6-C7A7418875B1",
2250 "muted" : false,
2251 "newShot" : false,
2252 "speed" : 1,
2253 "srcIn" : 584.639752363697,
2254 "start" : 222.06779661016947,
2255 "track" : "v4"
2256 },
2257 {
2258 "duration" : 2.237288135593218,
2259 "fadeIn" : 0,
2260 "fadeOut" : 0,
2261 "id" : "0991B547-CD7C-4CC3-87EC-AD16FF79CEEC",
2262 "kind" : "video",
2263 "linkId" : "02A86E0B-9E9F-4742-A7B2-44024A6F3E6B",
2264 "mediaId" : "40BBB768-793D-44DA-BBC9-B22F6591159D",
2265 "muted" : false,
2266 "newShot" : false,
2267 "speed" : 1,
2268 "srcIn" : 577.7627118644069,
2269 "start" : 219.01694915254237,
2270 "track" : "v0"
2271 },
2272 {
2273 "duration" : 2.237288135593218,
2274 "fadeIn" : 0,
2275 "fadeOut" : 0,
2276 "id" : "A7485496-22C3-4CB6-8034-93F5ACE90052",
2277 "kind" : "audio",
2278 "linkId" : "02A86E0B-9E9F-4742-A7B2-44024A6F3E6B",
2279 "mediaId" : "55C13A17-0423-4BC0-93A6-3FEFD02E7FC6",
2280 "muted" : true,
2281 "newShot" : false,
2282 "speed" : 1,
2283 "srcIn" : 577.6788403230659,
2284 "start" : 219.01694915254237,
2285 "track" : "v1"
2286 },
2287 {
2288 "duration" : 2.237288135593218,
2289 "fadeIn" : 0,
2290 "fadeOut" : 0,
2291 "id" : "A8426C1F-0305-45DF-A0C4-57CB7AD56360",
2292 "kind" : "audio",
2293 "linkId" : "02A86E0B-9E9F-4742-A7B2-44024A6F3E6B",
2294 "mediaId" : "501034F8-09AC-44B1-8826-FCE9B36C68F9",
2295 "muted" : false,
2296 "newShot" : false,
2297 "speed" : 1,
2298 "srcIn" : 577.7255166262968,
2299 "start" : 219.01694915254237,
2300 "track" : "v2"
2301 },
2302 {
2303 "duration" : 2.237288135593218,
2304 "fadeIn" : 0,
2305 "fadeOut" : 0,
2306 "id" : "F0053E8C-8FC8-47E2-8431-73026DBACEC8",
2307 "kind" : "video",
2308 "linkId" : "02A86E0B-9E9F-4742-A7B2-44024A6F3E6B",
2309 "mediaId" : "D866E8BE-A5B1-4B51-B465-D3F753701CCE",
2310 "muted" : false,
2311 "newShot" : false,
2312 "speed" : 1,
2313 "srcIn" : 577.5889094900687,
2314 "start" : 219.01694915254237,
2315 "track" : "v3"
2316 },
2317 {
2318 "duration" : 2.237288135593218,
2319 "fadeIn" : 0,
2320 "fadeOut" : 0,
2321 "id" : "EF04E82D-AA3C-41CA-B856-4A6914526EC1",
2322 "kind" : "video",
2323 "linkId" : "02A86E0B-9E9F-4742-A7B2-44024A6F3E6B",
2324 "mediaId" : "92E85F7F-CA8B-473D-82F6-C7A7418875B1",
2325 "muted" : false,
2326 "newShot" : false,
2327 "speed" : 1,
2328 "srcIn" : 577.5889049060698,
2329 "start" : 219.01694915254237,
2330 "track" : "v4"
2331 },
2332 {
2333 "duration" : 0.33898305084744607,
2334 "fadeIn" : 0,
2335 "fadeOut" : 0,
2336 "id" : "CABADC3E-FA59-4C65-87F2-13BFBE96E557",
2337 "kind" : "video",
2338 "linkId" : "00C998B7-CF37-4D26-B09F-6C36B9B32D82",
2339 "mediaId" : "40BBB768-793D-44DA-BBC9-B22F6591159D",
2340 "muted" : false,
2341 "newShot" : false,
2342 "speed" : 1,
2343 "srcIn" : 582.4067796610171,
2344 "start" : 221.25423728813558,
2345 "track" : "v0"
2346 },
2347 {
2348 "duration" : 0.33898305084744607,
2349 "fadeIn" : 0,
2350 "fadeOut" : 0,
2351 "id" : "FD19E6CE-504A-42B5-96A0-1CD953096F29",
2352 "kind" : "audio",
2353 "linkId" : "00C998B7-CF37-4D26-B09F-6C36B9B32D82",
2354 "mediaId" : "55C13A17-0423-4BC0-93A6-3FEFD02E7FC6",
2355 "muted" : true,
2356 "newShot" : false,
2357 "speed" : 1,
2358 "srcIn" : 582.3229081196761,
2359 "start" : 221.25423728813558,
2360 "track" : "v1"
2361 },
2362 {
2363 "duration" : 0.33898305084744607,
2364 "fadeIn" : 0,
2365 "fadeOut" : 0,
2366 "id" : "A112502F-0EDC-4D49-9AB8-9ACA09DFCDE5",
2367 "kind" : "audio",
2368 "linkId" : "00C998B7-CF37-4D26-B09F-6C36B9B32D82",
2369 "mediaId" : "501034F8-09AC-44B1-8826-FCE9B36C68F9",
2370 "muted" : false,
2371 "newShot" : false,
2372 "speed" : 1,
2373 "srcIn" : 582.369584422907,
2374 "start" : 221.25423728813558,
2375 "track" : "v2"
2376 },
2377 {
2378 "duration" : 0.33898305084744607,
2379 "fadeIn" : 0,
2380 "fadeOut" : 0,
2381 "id" : "F01A73DE-9729-484B-89E7-719D0391276E",
2382 "kind" : "video",
2383 "linkId" : "00C998B7-CF37-4D26-B09F-6C36B9B32D82",
2384 "mediaId" : "D866E8BE-A5B1-4B51-B465-D3F753701CCE",
2385 "muted" : false,
2386 "newShot" : false,
2387 "speed" : 1,
2388 "srcIn" : 582.2329772866789,
2389 "start" : 221.25423728813558,
2390 "track" : "v3"
2391 },
2392 {
2393 "duration" : 0.33898305084744607,
2394 "fadeIn" : 0,
2395 "fadeOut" : 0,
2396 "id" : "627B2BC3-48D0-4F6C-A129-90620B0EB3FD",
2397 "kind" : "video",
2398 "linkId" : "00C998B7-CF37-4D26-B09F-6C36B9B32D82",
2399 "mediaId" : "92E85F7F-CA8B-473D-82F6-C7A7418875B1",
2400 "muted" : false,
2401 "newShot" : false,
2402 "speed" : 1,
2403 "srcIn" : 582.2329727026801,
2404 "start" : 221.25423728813558,
2405 "track" : "v4"
2406 },
2407 {
2408 "duration" : 0.47457627118643586,
2409 "fadeIn" : 0,
2410 "fadeOut" : 0,
2411 "id" : "DC2DEF3C-5F2B-476E-AF27-8A22D6D9AED7",
2412 "kind" : "video",
2413 "linkId" : "699AF368-3D93-47C1-8338-C3D28F300CB5",
2414 "mediaId" : "40BBB768-793D-44DA-BBC9-B22F6591159D",
2415 "muted" : false,
2416 "newShot" : false,
2417 "speed" : 1,
2418 "srcIn" : 583.1864406779663,
2419 "start" : 221.59322033898303,
2420 "track" : "v0"
2421 },
2422 {
2423 "duration" : 0.47457627118643586,
2424 "fadeIn" : 0,
2425 "fadeOut" : 0,
2426 "id" : "F714792D-CAB4-45F1-9BD8-36A1DF081EB8",
2427 "kind" : "audio",
2428 "linkId" : "699AF368-3D93-47C1-8338-C3D28F300CB5",
2429 "mediaId" : "55C13A17-0423-4BC0-93A6-3FEFD02E7FC6",
2430 "muted" : true,
2431 "newShot" : false,
2432 "speed" : 1,
2433 "srcIn" : 583.1025691366252,
2434 "start" : 221.59322033898303,
2435 "track" : "v1"
2436 },
2437 {
2438 "duration" : 0.47457627118643586,
2439 "fadeIn" : 0,
2440 "fadeOut" : 0,
2441 "id" : "BA43BF71-4C54-4370-863D-D0B445C4A4DF",
2442 "kind" : "audio",
2443 "linkId" : "699AF368-3D93-47C1-8338-C3D28F300CB5",
2444 "mediaId" : "501034F8-09AC-44B1-8826-FCE9B36C68F9",
2445 "muted" : false,
2446 "newShot" : false,
2447 "speed" : 1,
2448 "srcIn" : 583.1492454398561,
2449 "start" : 221.59322033898303,
2450 "track" : "v2"
2451 },
2452 {
2453 "duration" : 0.47457627118643586,
2454 "fadeIn" : 0,
2455 "fadeOut" : 0,
2456 "id" : "4BAC786B-BDD8-4676-9B29-2A7AC95177F6",
2457 "kind" : "video",
2458 "linkId" : "699AF368-3D93-47C1-8338-C3D28F300CB5",
2459 "mediaId" : "D866E8BE-A5B1-4B51-B465-D3F753701CCE",
2460 "muted" : false,
2461 "newShot" : false,
2462 "speed" : 1,
2463 "srcIn" : 583.012638303628,
2464 "start" : 221.59322033898303,
2465 "track" : "v3"
2466 },
2467 {
2468 "duration" : 0.47457627118643586,
2469 "fadeIn" : 0,
2470 "fadeOut" : 0,
2471 "id" : "987F92AC-8229-449F-BA8F-BB01CA7CADC3",
2472 "kind" : "video",
2473 "linkId" : "699AF368-3D93-47C1-8338-C3D28F300CB5",
2474 "mediaId" : "92E85F7F-CA8B-473D-82F6-C7A7418875B1",
2475 "muted" : false,
2476 "newShot" : false,
2477 "speed" : 1,
2478 "srcIn" : 583.0126337196292,
2479 "start" : 221.59322033898303,
2480 "track" : "v4"
2481 },
2482 {
2483 "duration" : 4.813559322033882,
2484 "fadeIn" : 0,
2485 "fadeOut" : 0,
2486 "id" : "8B6B0536-EAC5-4272-9106-03B9E89E36AB",
2487 "kind" : "video",
2488 "linkId" : "0F2B0909-5C81-4A61-BBD8-6CD3ECC9563D",
2489 "mediaId" : "40BBB768-793D-44DA-BBC9-B22F6591159D",
2490 "muted" : false,
2491 "newShot" : false,
2492 "speed" : 1,
2493 "srcIn" : 589.6949152542375,
2494 "start" : 226.67796610169492,
2495 "track" : "v0"
2496 },
2497 {
2498 "duration" : 4.813559322033882,
2499 "fadeIn" : 0,
2500 "fadeOut" : 0,
2501 "id" : "DD50D9F8-4C08-47DA-AB75-382FE215D3C0",
2502 "kind" : "audio",
2503 "linkId" : "0F2B0909-5C81-4A61-BBD8-6CD3ECC9563D",
2504 "mediaId" : "55C13A17-0423-4BC0-93A6-3FEFD02E7FC6",
2505 "muted" : true,
2506 "newShot" : false,
2507 "speed" : 1,
2508 "srcIn" : 589.6110437128964,
2509 "start" : 226.67796610169492,
2510 "track" : "v1"
2511 },
2512 {
2513 "duration" : 4.813559322033882,
2514 "fadeIn" : 0,
2515 "fadeOut" : 0,
2516 "id" : "A2113A02-7099-45C4-990B-263F71229BAA",
2517 "kind" : "audio",
2518 "linkId" : "0F2B0909-5C81-4A61-BBD8-6CD3ECC9563D",
2519 "mediaId" : "501034F8-09AC-44B1-8826-FCE9B36C68F9",
2520 "muted" : false,
2521 "newShot" : false,
2522 "speed" : 1,
2523 "srcIn" : 589.6577200161273,
2524 "start" : 226.67796610169492,
2525 "track" : "v2"
2526 },
2527 {
2528 "duration" : 4.813559322033882,
2529 "fadeIn" : 0,
2530 "fadeOut" : 0,
2531 "id" : "72B5DADE-2448-445A-A7AB-6BA636E753FD",
2532 "kind" : "video",
2533 "linkId" : "0F2B0909-5C81-4A61-BBD8-6CD3ECC9563D",
2534 "mediaId" : "D866E8BE-A5B1-4B51-B465-D3F753701CCE",
2535 "muted" : false,
2536 "newShot" : false,
2537 "speed" : 1,
2538 "srcIn" : 589.5211128798992,
2539 "start" : 226.67796610169492,
2540 "track" : "v3"
2541 },
2542 {
2543 "duration" : 4.813559322033882,
2544 "fadeIn" : 0,
2545 "fadeOut" : 0,
2546 "id" : "8CC675CB-9ABE-45FF-B384-C7AC4D78F091",
2547 "kind" : "video",
2548 "linkId" : "0F2B0909-5C81-4A61-BBD8-6CD3ECC9563D",
2549 "mediaId" : "92E85F7F-CA8B-473D-82F6-C7A7418875B1",
2550 "muted" : false,
2551 "newShot" : false,
2552 "speed" : 1,
2553 "srcIn" : 589.5211082959004,
2554 "start" : 226.67796610169492,
2555 "track" : "v4"
2556 },
2557 {
2558 "duration" : 4.81355932203391,
2559 "fadeIn" : 0,
2560 "fadeOut" : 0,
2561 "id" : "EF0E9A54-F218-4203-8874-E267C94F96ED",
2562 "kind" : "video",
2563 "linkId" : "C9B743A1-0C1E-4522-9FAE-C8D05A31C193",
2564 "mediaId" : "40BBB768-793D-44DA-BBC9-B22F6591159D",
2565 "muted" : false,
2566 "newShot" : false,
2567 "speed" : 1,
2568 "srcIn" : 594.5084745762713,
2569 "start" : 231.4915254237288,
2570 "track" : "v0"
2571 },
2572 {
2573 "duration" : 4.81355932203391,
2574 "fadeIn" : 0,
2575 "fadeOut" : 0,
2576 "id" : "3E1A7EAE-EA47-443C-A5DF-51295361CA28",
2577 "kind" : "audio",
2578 "linkId" : "C9B743A1-0C1E-4522-9FAE-C8D05A31C193",
2579 "mediaId" : "55C13A17-0423-4BC0-93A6-3FEFD02E7FC6",
2580 "muted" : true,
2581 "newShot" : false,
2582 "speed" : 1,
2583 "srcIn" : 594.4246030349302,
2584 "start" : 231.4915254237288,
2585 "track" : "v1"
2586 },
2587 {
2588 "duration" : 4.81355932203391,
2589 "fadeIn" : 0,
2590 "fadeOut" : 0,
2591 "id" : "63928E72-332C-4FF0-AB20-7C4D9674F55F",
2592 "kind" : "audio",
2593 "linkId" : "C9B743A1-0C1E-4522-9FAE-C8D05A31C193",
2594 "mediaId" : "501034F8-09AC-44B1-8826-FCE9B36C68F9",
2595 "muted" : false,
2596 "newShot" : false,
2597 "speed" : 1,
2598 "srcIn" : 594.4712793381611,
2599 "start" : 231.4915254237288,
2600 "track" : "v2"
2601 },
2602 {
2603 "duration" : 4.81355932203391,
2604 "fadeIn" : 0,
2605 "fadeOut" : 0,
2606 "id" : "AF037655-401A-4032-866C-0E9B1BB6EAC8",
2607 "kind" : "video",
2608 "linkId" : "C9B743A1-0C1E-4522-9FAE-C8D05A31C193",
2609 "mediaId" : "D866E8BE-A5B1-4B51-B465-D3F753701CCE",
2610 "muted" : false,
2611 "newShot" : false,
2612 "speed" : 1,
2613 "srcIn" : 594.334672201933,
2614 "start" : 231.4915254237288,
2615 "track" : "v3"
2616 },
2617 {
2618 "duration" : 4.81355932203391,
2619 "fadeIn" : 0,
2620 "fadeOut" : 0,
2621 "id" : "AF0F661D-9868-49AB-9276-E20CC57DBC28",
2622 "kind" : "video",
2623 "linkId" : "C9B743A1-0C1E-4522-9FAE-C8D05A31C193",
2624 "mediaId" : "92E85F7F-CA8B-473D-82F6-C7A7418875B1",
2625 "muted" : false,
2626 "newShot" : false,
2627 "speed" : 1,
2628 "srcIn" : 594.3346676179342,
2629 "start" : 231.4915254237288,
2630 "track" : "v4"
2631 },
2632 {
2633 "duration" : 2.13559322033899,
2634 "fadeIn" : 0,
2635 "fadeOut" : 0,
2636 "id" : "EBA9BB70-0CEA-4170-9DBC-65B5D2FE9AD5",
2637 "kind" : "video",
2638 "linkId" : "4AAA7ABF-1577-4C2E-BF38-8705136C6450",
2639 "mediaId" : "40BBB768-793D-44DA-BBC9-B22F6591159D",
2640 "muted" : false,
2641 "newShot" : false,
2642 "speed" : 1,
2643 "srcIn" : 616.8813559322035,
2644 "start" : 236.3050847457627,
2645 "track" : "v0"
2646 },
2647 {
2648 "duration" : 2.13559322033899,
2649 "fadeIn" : 0,
2650 "fadeOut" : 0,
2651 "id" : "A8D715D7-2371-400B-A53A-90BFA9CA14E1",
2652 "kind" : "audio",
2653 "linkId" : "4AAA7ABF-1577-4C2E-BF38-8705136C6450",
2654 "mediaId" : "55C13A17-0423-4BC0-93A6-3FEFD02E7FC6",
2655 "muted" : true,
2656 "newShot" : false,
2657 "speed" : 1,
2658 "srcIn" : 616.7974843908625,
2659 "start" : 236.3050847457627,
2660 "track" : "v1"
2661 },
2662 {
2663 "duration" : 2.13559322033899,
2664 "fadeIn" : 0,
2665 "fadeOut" : 0,
2666 "id" : "1EC0AD88-9036-49C3-99E3-32F0047EB028",
2667 "kind" : "audio",
2668 "linkId" : "4AAA7ABF-1577-4C2E-BF38-8705136C6450",
2669 "mediaId" : "501034F8-09AC-44B1-8826-FCE9B36C68F9",
2670 "muted" : false,
2671 "newShot" : false,
2672 "speed" : 1,
2673 "srcIn" : 616.8441606940934,
2674 "start" : 236.3050847457627,
2675 "track" : "v2"
2676 },
2677 {
2678 "duration" : 2.13559322033899,
2679 "fadeIn" : 0,
2680 "fadeOut" : 0,
2681 "id" : "A1C1C0D1-CF81-42A4-8930-B00C4C02387B",
2682 "kind" : "video",
2683 "linkId" : "4AAA7ABF-1577-4C2E-BF38-8705136C6450",
2684 "mediaId" : "D866E8BE-A5B1-4B51-B465-D3F753701CCE",
2685 "muted" : false,
2686 "newShot" : false,
2687 "speed" : 1,
2688 "srcIn" : 616.7075535578653,
2689 "start" : 236.3050847457627,
2690 "track" : "v3"
2691 },
2692 {
2693 "duration" : 2.13559322033899,
2694 "fadeIn" : 0,
2695 "fadeOut" : 0,
2696 "id" : "9694A094-9FA8-4451-BBC8-3A505816AB5C",
2697 "kind" : "video",
2698 "linkId" : "4AAA7ABF-1577-4C2E-BF38-8705136C6450",
2699 "mediaId" : "92E85F7F-CA8B-473D-82F6-C7A7418875B1",
2700 "muted" : false,
2701 "newShot" : false,
2702 "speed" : 1,
2703 "srcIn" : 616.7075489738664,
2704 "start" : 236.3050847457627,
2705 "track" : "v4"
2706 },
2707 {
2708 "duration" : 2.2033898305084563,
2709 "fadeIn" : 0,
2710 "fadeOut" : 0,
2711 "id" : "2DFE5FB3-850C-408B-888E-1B117520E619",
2712 "kind" : "video",
2713 "linkId" : "20A4E34D-C55C-439E-9743-C91BA434CB07",
2714 "mediaId" : "40BBB768-793D-44DA-BBC9-B22F6591159D",
2715 "muted" : false,
2716 "newShot" : false,
2717 "speed" : 1,
2718 "srcIn" : 623.1864406779663,
2719 "start" : 238.4406779661017,
2720 "track" : "v0"
2721 },
2722 {
2723 "duration" : 2.2033898305084563,
2724 "fadeIn" : 0,
2725 "fadeOut" : 0,
2726 "id" : "1C5AFA4B-AB07-45EB-9012-D6817BCA669F",
2727 "kind" : "audio",
2728 "linkId" : "20A4E34D-C55C-439E-9743-C91BA434CB07",
2729 "mediaId" : "55C13A17-0423-4BC0-93A6-3FEFD02E7FC6",
2730 "muted" : true,
2731 "newShot" : false,
2732 "speed" : 1,
2733 "srcIn" : 623.1025691366252,
2734 "start" : 238.4406779661017,
2735 "track" : "v1"
2736 },
2737 {
2738 "duration" : 2.2033898305084563,
2739 "fadeIn" : 0,
2740 "fadeOut" : 0,
2741 "id" : "FA4004F4-5AA3-4F29-999B-41460017B48F",
2742 "kind" : "audio",
2743 "linkId" : "20A4E34D-C55C-439E-9743-C91BA434CB07",
2744 "mediaId" : "501034F8-09AC-44B1-8826-FCE9B36C68F9",
2745 "muted" : false,
2746 "newShot" : false,
2747 "speed" : 1,
2748 "srcIn" : 623.1492454398561,
2749 "start" : 238.4406779661017,
2750 "track" : "v2"
2751 },
2752 {
2753 "duration" : 2.2033898305084563,
2754 "fadeIn" : 0,
2755 "fadeOut" : 0,
2756 "id" : "F4539CE1-8350-4649-A8D5-75DEC9A85285",
2757 "kind" : "video",
2758 "linkId" : "20A4E34D-C55C-439E-9743-C91BA434CB07",
2759 "mediaId" : "D866E8BE-A5B1-4B51-B465-D3F753701CCE",
2760 "muted" : false,
2761 "newShot" : false,
2762 "speed" : 1,
2763 "srcIn" : 623.012638303628,
2764 "start" : 238.4406779661017,
2765 "track" : "v3"
2766 },
2767 {
2768 "duration" : 2.2033898305084563,
2769 "fadeIn" : 0,
2770 "fadeOut" : 0,
2771 "id" : "B9D12715-E647-49E2-A68A-393FDA9865DF",
2772 "kind" : "video",
2773 "linkId" : "20A4E34D-C55C-439E-9743-C91BA434CB07",
2774 "mediaId" : "92E85F7F-CA8B-473D-82F6-C7A7418875B1",
2775 "muted" : false,
2776 "newShot" : false,
2777 "speed" : 1,
2778 "srcIn" : 623.0126337196292,
2779 "start" : 238.4406779661017,
2780 "track" : "v4"
2781 },
2782 {
2783 "duration" : 6.27118644067798,
2784 "fadeIn" : 0,
2785 "fadeOut" : 0,
2786 "id" : "92455958-0ACB-484E-B1D9-19C02F73901A",
2787 "kind" : "video",
2788 "linkId" : "FB7680B4-9AF3-40EC-B7FB-010031D66837",
2789 "mediaId" : "40BBB768-793D-44DA-BBC9-B22F6591159D",
2790 "muted" : false,
2791 "newShot" : false,
2792 "speed" : 1,
2793 "srcIn" : 627.491525423729,
2794 "start" : 240.64406779661016,
2795 "track" : "v0"
2796 },
2797 {
2798 "duration" : 6.27118644067798,
2799 "fadeIn" : 0,
2800 "fadeOut" : 0,
2801 "id" : "DB167161-A9FA-4F64-92F8-79A205627364",
2802 "kind" : "audio",
2803 "linkId" : "FB7680B4-9AF3-40EC-B7FB-010031D66837",
2804 "mediaId" : "55C13A17-0423-4BC0-93A6-3FEFD02E7FC6",
2805 "muted" : true,
2806 "newShot" : false,
2807 "speed" : 1,
2808 "srcIn" : 627.4076538823879,
2809 "start" : 240.64406779661016,
2810 "track" : "v1"
2811 },
2812 {
2813 "duration" : 6.27118644067798,
2814 "fadeIn" : 0,
2815 "fadeOut" : 0,
2816 "id" : "D53DC51B-6ED3-43B5-90CF-F263E6A8EF0F",
2817 "kind" : "audio",
2818 "linkId" : "FB7680B4-9AF3-40EC-B7FB-010031D66837",
2819 "mediaId" : "501034F8-09AC-44B1-8826-FCE9B36C68F9",
2820 "muted" : false,
2821 "newShot" : false,
2822 "speed" : 1,
2823 "srcIn" : 627.4543301856188,
2824 "start" : 240.64406779661016,
2825 "track" : "v2"
2826 },
2827 {
2828 "duration" : 6.27118644067798,
2829 "fadeIn" : 0,
2830 "fadeOut" : 0,
2831 "id" : "0F96EE3E-4FE2-417F-9760-F24B131C949C",
2832 "kind" : "video",
2833 "linkId" : "FB7680B4-9AF3-40EC-B7FB-010031D66837",
2834 "mediaId" : "D866E8BE-A5B1-4B51-B465-D3F753701CCE",
2835 "muted" : false,
2836 "newShot" : false,
2837 "speed" : 1,
2838 "srcIn" : 627.3177230493907,
2839 "start" : 240.64406779661016,
2840 "track" : "v3"
2841 },
2842 {
2843 "duration" : 6.27118644067798,
2844 "fadeIn" : 0,
2845 "fadeOut" : 0,
2846 "id" : "473DAC6E-6B6F-4395-AA04-1D2A9448459F",
2847 "kind" : "video",
2848 "linkId" : "FB7680B4-9AF3-40EC-B7FB-010031D66837",
2849 "mediaId" : "92E85F7F-CA8B-473D-82F6-C7A7418875B1",
2850 "muted" : false,
2851 "newShot" : false,
2852 "speed" : 1,
2853 "srcIn" : 627.3177184653919,
2854 "start" : 240.64406779661016,
2855 "track" : "v4"
2856 },
2857 {
2858 "duration" : 5.288135593220346,
2859 "fadeIn" : 0,
2860 "fadeOut" : 0,
2861 "id" : "04295A05-E2E5-4A94-A70F-1C9DCC3ACF86",
2862 "kind" : "video",
2863 "linkId" : "EDE7F931-7884-4F1E-8EFB-E8B00DCB5A07",
2864 "mediaId" : "40BBB768-793D-44DA-BBC9-B22F6591159D",
2865 "muted" : false,
2866 "newShot" : false,
2867 "speed" : 1,
2868 "srcIn" : 641.220338983051,
2869 "start" : 246.91525423728814,
2870 "track" : "v0"
2871 },
2872 {
2873 "duration" : 5.288135593220346,
2874 "fadeIn" : 0,
2875 "fadeOut" : 0,
2876 "id" : "A4446EF1-6B91-4D7B-9285-3C4E42A475ED",
2877 "kind" : "audio",
2878 "linkId" : "EDE7F931-7884-4F1E-8EFB-E8B00DCB5A07",
2879 "mediaId" : "55C13A17-0423-4BC0-93A6-3FEFD02E7FC6",
2880 "muted" : true,
2881 "newShot" : false,
2882 "speed" : 1,
2883 "srcIn" : 641.1364674417099,
2884 "start" : 246.91525423728814,
2885 "track" : "v1"
2886 },
2887 {
2888 "duration" : 5.288135593220346,
2889 "fadeIn" : 0,
2890 "fadeOut" : 0,
2891 "id" : "37E22D5C-E179-4CD6-9C69-C6B281846229",
2892 "kind" : "audio",
2893 "linkId" : "EDE7F931-7884-4F1E-8EFB-E8B00DCB5A07",
2894 "mediaId" : "501034F8-09AC-44B1-8826-FCE9B36C68F9",
2895 "muted" : false,
2896 "newShot" : false,
2897 "speed" : 1,
2898 "srcIn" : 641.1831437449408,
2899 "start" : 246.91525423728814,
2900 "track" : "v2"
2901 },
2902 {
2903 "duration" : 5.288135593220346,
2904 "fadeIn" : 0,
2905 "fadeOut" : 0,
2906 "id" : "0D2B5334-E420-4746-B09A-110DA7EE6BA5",
2907 "kind" : "video",
2908 "linkId" : "EDE7F931-7884-4F1E-8EFB-E8B00DCB5A07",
2909 "mediaId" : "D866E8BE-A5B1-4B51-B465-D3F753701CCE",
2910 "muted" : false,
2911 "newShot" : false,
2912 "speed" : 1,
2913 "srcIn" : 641.0465366087127,
2914 "start" : 246.91525423728814,
2915 "track" : "v3"
2916 },
2917 {
2918 "duration" : 5.288135593220346,
2919 "fadeIn" : 0,
2920 "fadeOut" : 0,
2921 "id" : "95AA48BC-4C4B-4F4B-B29F-FB2E01943DE6",
2922 "kind" : "video",
2923 "linkId" : "EDE7F931-7884-4F1E-8EFB-E8B00DCB5A07",
2924 "mediaId" : "92E85F7F-CA8B-473D-82F6-C7A7418875B1",
2925 "muted" : false,
2926 "newShot" : false,
2927 "speed" : 1,
2928 "srcIn" : 641.0465320247139,
2929 "start" : 246.91525423728814,
2930 "track" : "v4"
2931 },
2932 {
2933 "duration" : 3.3898305084745743,
2934 "fadeIn" : 0,
2935 "fadeOut" : 0,
2936 "id" : "36A8E6B0-4985-4EBD-BD50-2621E6D840E5",
2937 "kind" : "video",
2938 "linkId" : "E1D1EEBE-B0FA-47B6-B02B-0D25E3E7C904",
2939 "mediaId" : "40BBB768-793D-44DA-BBC9-B22F6591159D",
2940 "muted" : false,
2941 "newShot" : false,
2942 "speed" : 1,
2943 "srcIn" : 649.4237288135594,
2944 "start" : 252.20338983050848,
2945 "track" : "v0"
2946 },
2947 {
2948 "duration" : 3.3898305084745743,
2949 "fadeIn" : 0,
2950 "fadeOut" : 0,
2951 "id" : "CDDA95CC-536D-4225-AAC3-470904596C1D",
2952 "kind" : "audio",
2953 "linkId" : "E1D1EEBE-B0FA-47B6-B02B-0D25E3E7C904",
2954 "mediaId" : "55C13A17-0423-4BC0-93A6-3FEFD02E7FC6",
2955 "muted" : true,
2956 "newShot" : false,
2957 "speed" : 1,
2958 "srcIn" : 649.3398572722183,
2959 "start" : 252.20338983050848,
2960 "track" : "v1"
2961 },
2962 {
2963 "duration" : 3.3898305084745743,
2964 "fadeIn" : 0,
2965 "fadeOut" : 0,
2966 "id" : "79AC6946-AD60-4D7C-9B74-BAF2C5043ED9",
2967 "kind" : "audio",
2968 "linkId" : "E1D1EEBE-B0FA-47B6-B02B-0D25E3E7C904",
2969 "mediaId" : "501034F8-09AC-44B1-8826-FCE9B36C68F9",
2970 "muted" : false,
2971 "newShot" : false,
2972 "speed" : 1,
2973 "srcIn" : 649.3865335754492,
2974 "start" : 252.20338983050848,
2975 "track" : "v2"
2976 },
2977 {
2978 "duration" : 3.3898305084745743,
2979 "fadeIn" : 0,
2980 "fadeOut" : 0,
2981 "id" : "266B1043-1A29-4485-85C8-9921E2D077FE",
2982 "kind" : "video",
2983 "linkId" : "E1D1EEBE-B0FA-47B6-B02B-0D25E3E7C904",
2984 "mediaId" : "D866E8BE-A5B1-4B51-B465-D3F753701CCE",
2985 "muted" : false,
2986 "newShot" : false,
2987 "speed" : 1,
2988 "srcIn" : 649.2499264392211,
2989 "start" : 252.20338983050848,
2990 "track" : "v3"
2991 },
2992 {
2993 "duration" : 3.3898305084745743,
2994 "fadeIn" : 0,
2995 "fadeOut" : 0,
2996 "id" : "F9D93C0A-48FD-4149-B214-E2648C026BB8",
2997 "kind" : "video",
2998 "linkId" : "E1D1EEBE-B0FA-47B6-B02B-0D25E3E7C904",
2999 "mediaId" : "92E85F7F-CA8B-473D-82F6-C7A7418875B1",
3000 "muted" : false,
3001 "newShot" : false,
3002 "speed" : 1,
3003 "srcIn" : 649.2499218552223,
3004 "start" : 252.20338983050848,
3005 "track" : "v4"
3006 },
3007 {
3008 "duration" : 8.9491525423729,
3009 "fadeIn" : 0,
3010 "fadeOut" : 0,
3011 "id" : "E13CDB86-D0E7-4219-891E-396AF72F7200",
3012 "kind" : "video",
3013 "linkId" : "E0DD6E6F-D7C7-4743-ADC2-D8787163B0C3",
3014 "mediaId" : "40BBB768-793D-44DA-BBC9-B22F6591159D",
3015 "muted" : false,
3016 "newShot" : false,
3017 "speed" : 1,
3018 "srcIn" : 664.1016949152543,
3019 "start" : 255.59322033898306,
3020 "track" : "v0"
3021 },
3022 {
3023 "duration" : 8.9491525423729,
3024 "fadeIn" : 0,
3025 "fadeOut" : 0,
3026 "id" : "CF093561-83EC-4803-9CD7-E1D07429E06C",
3027 "kind" : "audio",
3028 "linkId" : "E0DD6E6F-D7C7-4743-ADC2-D8787163B0C3",
3029 "mediaId" : "55C13A17-0423-4BC0-93A6-3FEFD02E7FC6",
3030 "muted" : true,
3031 "newShot" : false,
3032 "speed" : 1,
3033 "srcIn" : 664.0178233739132,
3034 "start" : 255.59322033898306,
3035 "track" : "v1"
3036 },
3037 {
3038 "duration" : 8.9491525423729,
3039 "fadeIn" : 0,
3040 "fadeOut" : 0,
3041 "id" : "D7A74DDC-3F2A-4E02-B350-45455C959B82",
3042 "kind" : "audio",
3043 "linkId" : "E0DD6E6F-D7C7-4743-ADC2-D8787163B0C3",
3044 "mediaId" : "501034F8-09AC-44B1-8826-FCE9B36C68F9",
3045 "muted" : false,
3046 "newShot" : false,
3047 "speed" : 1,
3048 "srcIn" : 664.0644996771441,
3049 "start" : 255.59322033898306,
3050 "track" : "v2"
3051 },
3052 {
3053 "duration" : 8.9491525423729,
3054 "fadeIn" : 0,
3055 "fadeOut" : 0,
3056 "id" : "95E67BFD-C59E-4F99-92B5-027C3BC13CC3",
3057 "kind" : "video",
3058 "linkId" : "E0DD6E6F-D7C7-4743-ADC2-D8787163B0C3",
3059 "mediaId" : "D866E8BE-A5B1-4B51-B465-D3F753701CCE",
3060 "muted" : false,
3061 "newShot" : false,
3062 "speed" : 1,
3063 "srcIn" : 663.927892540916,
3064 "start" : 255.59322033898306,
3065 "track" : "v3"
3066 },
3067 {
3068 "duration" : 8.9491525423729,
3069 "fadeIn" : 0,
3070 "fadeOut" : 0,
3071 "id" : "AE9DDFED-5BE9-44A5-8349-623A8C1F1587",
3072 "kind" : "video",
3073 "linkId" : "E0DD6E6F-D7C7-4743-ADC2-D8787163B0C3",
3074 "mediaId" : "92E85F7F-CA8B-473D-82F6-C7A7418875B1",
3075 "muted" : false,
3076 "newShot" : false,
3077 "speed" : 1,
3078 "srcIn" : 663.9278879569172,
3079 "start" : 255.59322033898306,
3080 "track" : "v4"
3081 },
3082 {
3083 "duration" : 2.4067796610169125,
3084 "fadeIn" : 0,
3085 "fadeOut" : 0,
3086 "id" : "6929AB44-D977-4A42-9DD4-69D4E759E4B7",
3087 "kind" : "video",
3088 "linkId" : "B1E3CEAB-46C9-4EF7-8BC4-F413D2FDD063",
3089 "mediaId" : "40BBB768-793D-44DA-BBC9-B22F6591159D",
3090 "muted" : false,
3091 "newShot" : false,
3092 "speed" : 1,
3093 "srcIn" : 676.7796610169491,
3094 "start" : 264.54237288135596,
3095 "track" : "v0"
3096 },
3097 {
3098 "duration" : 2.4067796610169125,
3099 "fadeIn" : 0,
3100 "fadeOut" : 0,
3101 "id" : "F6BA54DA-3AAD-48D5-A132-C946F6FF5BBE",
3102 "kind" : "audio",
3103 "linkId" : "B1E3CEAB-46C9-4EF7-8BC4-F413D2FDD063",
3104 "mediaId" : "55C13A17-0423-4BC0-93A6-3FEFD02E7FC6",
3105 "muted" : true,
3106 "newShot" : false,
3107 "speed" : 1,
3108 "srcIn" : 676.6957894756081,
3109 "start" : 264.54237288135596,
3110 "track" : "v1"
3111 },
3112 {
3113 "duration" : 2.4067796610169125,
3114 "fadeIn" : 0,
3115 "fadeOut" : 0,
3116 "id" : "95E0BF0A-76D3-4341-87C0-4C3855C6AD49",
3117 "kind" : "audio",
3118 "linkId" : "B1E3CEAB-46C9-4EF7-8BC4-F413D2FDD063",
3119 "mediaId" : "501034F8-09AC-44B1-8826-FCE9B36C68F9",
3120 "muted" : false,
3121 "newShot" : false,
3122 "speed" : 1,
3123 "srcIn" : 676.742465778839,
3124 "start" : 264.54237288135596,
3125 "track" : "v2"
3126 },
3127 {
3128 "duration" : 2.4067796610169125,
3129 "fadeIn" : 0,
3130 "fadeOut" : 0,
3131 "id" : "56B8138F-5F33-4EC1-A202-59403546D6C5",
3132 "kind" : "video",
3133 "linkId" : "B1E3CEAB-46C9-4EF7-8BC4-F413D2FDD063",
3134 "mediaId" : "D866E8BE-A5B1-4B51-B465-D3F753701CCE",
3135 "muted" : false,
3136 "newShot" : false,
3137 "speed" : 1,
3138 "srcIn" : 676.6058586426109,
3139 "start" : 264.54237288135596,
3140 "track" : "v3"
3141 },
3142 {
3143 "duration" : 2.4067796610169125,
3144 "fadeIn" : 0,
3145 "fadeOut" : 0,
3146 "id" : "7C722B8F-E78E-45E3-8A2E-F30FF2127283",
3147 "kind" : "video",
3148 "linkId" : "B1E3CEAB-46C9-4EF7-8BC4-F413D2FDD063",
3149 "mediaId" : "92E85F7F-CA8B-473D-82F6-C7A7418875B1",
3150 "muted" : false,
3151 "newShot" : false,
3152 "speed" : 1,
3153 "srcIn" : 676.6058540586121,
3154 "start" : 264.54237288135596,
3155 "track" : "v4"
3156 },
3157 {
3158 "duration" : 4.27118644067798,
3159 "fadeIn" : 0,
3160 "fadeOut" : 0,
3161 "id" : "74A4A856-856E-45BF-BF4B-60A6E5627D38",
3162 "kind" : "video",
3163 "linkId" : "4DA91130-EF31-48CE-9353-1BCA2F4D362F",
3164 "mediaId" : "40BBB768-793D-44DA-BBC9-B22F6591159D",
3165 "muted" : false,
3166 "newShot" : false,
3167 "speed" : 1,
3168 "srcIn" : 680.5084745762712,
3169 "start" : 266.9491525423729,
3170 "track" : "v0"
3171 },
3172 {
3173 "duration" : 4.27118644067798,
3174 "fadeIn" : 0,
3175 "fadeOut" : 0,
3176 "id" : "3DBBE8FE-AD87-457B-8670-E95DE832B26C",
3177 "kind" : "audio",
3178 "linkId" : "4DA91130-EF31-48CE-9353-1BCA2F4D362F",
3179 "mediaId" : "55C13A17-0423-4BC0-93A6-3FEFD02E7FC6",
3180 "muted" : true,
3181 "newShot" : false,
3182 "speed" : 1,
3183 "srcIn" : 680.4246030349301,
3184 "start" : 266.9491525423729,
3185 "track" : "v1"
3186 },
3187 {
3188 "duration" : 4.27118644067798,
3189 "fadeIn" : 0,
3190 "fadeOut" : 0,
3191 "id" : "5E2EC015-CDDC-45F6-BEF4-76E842BBC389",
3192 "kind" : "audio",
3193 "linkId" : "4DA91130-EF31-48CE-9353-1BCA2F4D362F",
3194 "mediaId" : "501034F8-09AC-44B1-8826-FCE9B36C68F9",
3195 "muted" : false,
3196 "newShot" : false,
3197 "speed" : 1,
3198 "srcIn" : 680.471279338161,
3199 "start" : 266.9491525423729,
3200 "track" : "v2"
3201 },
3202 {
3203 "duration" : 4.27118644067798,
3204 "fadeIn" : 0,
3205 "fadeOut" : 0,
3206 "id" : "1275A44B-DBDA-421C-9443-3923A7274D8D",
3207 "kind" : "video",
3208 "linkId" : "4DA91130-EF31-48CE-9353-1BCA2F4D362F",
3209 "mediaId" : "D866E8BE-A5B1-4B51-B465-D3F753701CCE",
3210 "muted" : false,
3211 "newShot" : false,
3212 "speed" : 1,
3213 "srcIn" : 680.3346722019329,
3214 "start" : 266.9491525423729,
3215 "track" : "v3"
3216 },
3217 {
3218 "duration" : 4.27118644067798,
3219 "fadeIn" : 0,
3220 "fadeOut" : 0,
3221 "id" : "15AE2513-D3F9-47C3-B4F7-61A351DAB004",
3222 "kind" : "video",
3223 "linkId" : "4DA91130-EF31-48CE-9353-1BCA2F4D362F",
3224 "mediaId" : "92E85F7F-CA8B-473D-82F6-C7A7418875B1",
3225 "muted" : false,
3226 "newShot" : false,
3227 "speed" : 1,
3228 "srcIn" : 680.3346676179341,
3229 "start" : 266.9491525423729,
3230 "track" : "v4"
3231 },
3232 {
3233 "duration" : 1.1186440677965948,
3234 "fadeIn" : 0,
3235 "fadeOut" : 0,
3236 "id" : "2077C05E-DE10-4841-AB24-8F92DE0579D1",
3237 "kind" : "video",
3238 "linkId" : "870FE72E-0830-4984-8A17-C8265B573862",
3239 "mediaId" : "40BBB768-793D-44DA-BBC9-B22F6591159D",
3240 "muted" : false,
3241 "newShot" : false,
3242 "speed" : 1,
3243 "srcIn" : 698.1016949152543,
3244 "start" : 271.22033898305085,
3245 "track" : "v0"
3246 },
3247 {
3248 "duration" : 1.1186440677965948,
3249 "fadeIn" : 0,
3250 "fadeOut" : 0,
3251 "id" : "1832EFCE-19F8-4EBA-B21A-88826F9AE7BF",
3252 "kind" : "audio",
3253 "linkId" : "870FE72E-0830-4984-8A17-C8265B573862",
3254 "mediaId" : "55C13A17-0423-4BC0-93A6-3FEFD02E7FC6",
3255 "muted" : true,
3256 "newShot" : false,
3257 "speed" : 1,
3258 "srcIn" : 698.0178233739132,
3259 "start" : 271.22033898305085,
3260 "track" : "v1"
3261 },
3262 {
3263 "duration" : 1.1186440677965948,
3264 "fadeIn" : 0,
3265 "fadeOut" : 0,
3266 "id" : "4823B8FA-4845-43E7-A4AD-95170EAE1A77",
3267 "kind" : "audio",
3268 "linkId" : "870FE72E-0830-4984-8A17-C8265B573862",
3269 "mediaId" : "501034F8-09AC-44B1-8826-FCE9B36C68F9",
3270 "muted" : false,
3271 "newShot" : false,
3272 "speed" : 1,
3273 "srcIn" : 698.0644996771441,
3274 "start" : 271.22033898305085,
3275 "track" : "v2"
3276 },
3277 {
3278 "duration" : 1.1186440677965948,
3279 "fadeIn" : 0,
3280 "fadeOut" : 0,
3281 "id" : "AB47B68B-4217-46FF-A1EA-D21122BC749F",
3282 "kind" : "video",
3283 "linkId" : "870FE72E-0830-4984-8A17-C8265B573862",
3284 "mediaId" : "D866E8BE-A5B1-4B51-B465-D3F753701CCE",
3285 "muted" : false,
3286 "newShot" : false,
3287 "speed" : 1,
3288 "srcIn" : 697.927892540916,
3289 "start" : 271.22033898305085,
3290 "track" : "v3"
3291 },
3292 {
3293 "duration" : 1.1186440677965948,
3294 "fadeIn" : 0,
3295 "fadeOut" : 0,
3296 "id" : "948310E4-F6E1-4C7B-8DFC-4B1EFE91D9F3",
3297 "kind" : "video",
3298 "linkId" : "870FE72E-0830-4984-8A17-C8265B573862",
3299 "mediaId" : "92E85F7F-CA8B-473D-82F6-C7A7418875B1",
3300 "muted" : false,
3301 "newShot" : false,
3302 "speed" : 1,
3303 "srcIn" : 697.9278879569172,
3304 "start" : 271.22033898305085,
3305 "track" : "v4"
3306 },
3307 {
3308 "duration" : 3.9661016949152668,
3309 "fadeIn" : 0,
3310 "fadeOut" : 0,
3311 "id" : "1841DCD7-E1AC-46F4-8BA9-65F76CE7F997",
3312 "kind" : "video",
3313 "linkId" : "8E3E2F7E-8CEA-4F62-AC48-EAD5610BBF7A",
3314 "mediaId" : "40BBB768-793D-44DA-BBC9-B22F6591159D",
3315 "muted" : false,
3316 "newShot" : false,
3317 "speed" : 1,
3318 "srcIn" : 706.1016949152543,
3319 "start" : 272.33898305084745,
3320 "track" : "v0"
3321 },
3322 {
3323 "duration" : 3.9661016949152668,
3324 "fadeIn" : 0,
3325 "fadeOut" : 0,
3326 "id" : "9F70CFD3-7AB7-4A6D-87AF-B53BEDECA24A",
3327 "kind" : "audio",
3328 "linkId" : "8E3E2F7E-8CEA-4F62-AC48-EAD5610BBF7A",
3329 "mediaId" : "55C13A17-0423-4BC0-93A6-3FEFD02E7FC6",
3330 "muted" : true,
3331 "newShot" : false,
3332 "speed" : 1,
3333 "srcIn" : 706.0178233739132,
3334 "start" : 272.33898305084745,
3335 "track" : "v1"
3336 },
3337 {
3338 "duration" : 3.9661016949152668,
3339 "fadeIn" : 0,
3340 "fadeOut" : 0,
3341 "id" : "6296E4FA-F3A8-4E9F-B5A6-21C104C11316",
3342 "kind" : "audio",
3343 "linkId" : "8E3E2F7E-8CEA-4F62-AC48-EAD5610BBF7A",
3344 "mediaId" : "501034F8-09AC-44B1-8826-FCE9B36C68F9",
3345 "muted" : false,
3346 "newShot" : false,
3347 "speed" : 1,
3348 "srcIn" : 706.0644996771441,
3349 "start" : 272.33898305084745,
3350 "track" : "v2"
3351 },
3352 {
3353 "duration" : 3.9661016949152668,
3354 "fadeIn" : 0,
3355 "fadeOut" : 0,
3356 "id" : "7DBC5BCC-4F01-497F-97A9-FD8E5FED80ED",
3357 "kind" : "video",
3358 "linkId" : "8E3E2F7E-8CEA-4F62-AC48-EAD5610BBF7A",
3359 "mediaId" : "D866E8BE-A5B1-4B51-B465-D3F753701CCE",
3360 "muted" : false,
3361 "newShot" : false,
3362 "speed" : 1,
3363 "srcIn" : 705.927892540916,
3364 "start" : 272.33898305084745,
3365 "track" : "v3"
3366 },
3367 {
3368 "duration" : 3.9661016949152668,
3369 "fadeIn" : 0,
3370 "fadeOut" : 0,
3371 "id" : "D22E7D29-E8F2-49FC-AE39-95140062ED4C",
3372 "kind" : "video",
3373 "linkId" : "8E3E2F7E-8CEA-4F62-AC48-EAD5610BBF7A",
3374 "mediaId" : "92E85F7F-CA8B-473D-82F6-C7A7418875B1",
3375 "muted" : false,
3376 "newShot" : false,
3377 "speed" : 1,
3378 "srcIn" : 705.9278879569172,
3379 "start" : 272.33898305084745,
3380 "track" : "v4"
3381 },
3382 {
3383 "duration" : 7.2542372881355845,
3384 "fadeIn" : 0,
3385 "fadeOut" : 0,
3386 "id" : "ADE6D5E2-A342-4F16-9FAB-2F40C2D1BCDD",
3387 "kind" : "video",
3388 "linkId" : "7AAFBE23-17BF-4AC0-B4E6-3D003AF75DF9",
3389 "mediaId" : "40BBB768-793D-44DA-BBC9-B22F6591159D",
3390 "muted" : false,
3391 "newShot" : false,
3392 "speed" : 1,
3393 "srcIn" : 710.0677966101696,
3394 "start" : 276.3050847457627,
3395 "track" : "v0"
3396 },
3397 {
3398 "duration" : 7.2542372881355845,
3399 "fadeIn" : 0,
3400 "fadeOut" : 0,
3401 "id" : "BFEEDB13-FCE4-473E-BA8B-BAA795862399",
3402 "kind" : "audio",
3403 "linkId" : "7AAFBE23-17BF-4AC0-B4E6-3D003AF75DF9",
3404 "mediaId" : "55C13A17-0423-4BC0-93A6-3FEFD02E7FC6",
3405 "muted" : true,
3406 "newShot" : false,
3407 "speed" : 1,
3408 "srcIn" : 709.9839250688285,
3409 "start" : 276.3050847457627,
3410 "track" : "v1"
3411 },
3412 {
3413 "duration" : 7.2542372881355845,
3414 "fadeIn" : 0,
3415 "fadeOut" : 0,
3416 "id" : "BC83D6FA-84FA-483B-8699-D1219DF29357",
3417 "kind" : "audio",
3418 "linkId" : "7AAFBE23-17BF-4AC0-B4E6-3D003AF75DF9",
3419 "mediaId" : "501034F8-09AC-44B1-8826-FCE9B36C68F9",
3420 "muted" : false,
3421 "newShot" : false,
3422 "speed" : 1,
3423 "srcIn" : 710.0306013720594,
3424 "start" : 276.3050847457627,
3425 "track" : "v2"
3426 },
3427 {
3428 "duration" : 7.2542372881355845,
3429 "fadeIn" : 0,
3430 "fadeOut" : 0,
3431 "id" : "58221FDA-00C6-45A1-9267-2AC4500070FE",
3432 "kind" : "video",
3433 "linkId" : "7AAFBE23-17BF-4AC0-B4E6-3D003AF75DF9",
3434 "mediaId" : "D866E8BE-A5B1-4B51-B465-D3F753701CCE",
3435 "muted" : false,
3436 "newShot" : false,
3437 "speed" : 1,
3438 "srcIn" : 709.8939942358313,
3439 "start" : 276.3050847457627,
3440 "track" : "v3"
3441 },
3442 {
3443 "duration" : 7.2542372881355845,
3444 "fadeIn" : 0,
3445 "fadeOut" : 0,
3446 "id" : "BC23C71D-81CD-40A8-8D4C-5728293351FB",
3447 "kind" : "video",
3448 "linkId" : "7AAFBE23-17BF-4AC0-B4E6-3D003AF75DF9",
3449 "mediaId" : "92E85F7F-CA8B-473D-82F6-C7A7418875B1",
3450 "muted" : false,
3451 "newShot" : false,
3452 "speed" : 1,
3453 "srcIn" : 709.8939896518325,
3454 "start" : 276.3050847457627,
3455 "track" : "v4"
3456 },
3457 {
3458 "duration" : 7.830508474576277,
3459 "fadeIn" : 0,
3460 "fadeOut" : 0,
3461 "id" : "5B448404-52D6-4D2E-83B3-DDABD2847728",
3462 "kind" : "video",
3463 "linkId" : "B6345D38-3912-4C07-BC43-685A4C767720",
3464 "mediaId" : "40BBB768-793D-44DA-BBC9-B22F6591159D",
3465 "muted" : false,
3466 "newShot" : false,
3467 "speed" : 1,
3468 "srcIn" : 721.6271186440679,
3469 "start" : 283.5593220338983,
3470 "track" : "v0"
3471 },
3472 {
3473 "duration" : 7.830508474576277,
3474 "fadeIn" : 0,
3475 "fadeOut" : 0,
3476 "id" : "EE73D2CB-10F9-47A3-B0A9-B077DC6C6B40",
3477 "kind" : "audio",
3478 "linkId" : "B6345D38-3912-4C07-BC43-685A4C767720",
3479 "mediaId" : "55C13A17-0423-4BC0-93A6-3FEFD02E7FC6",
3480 "muted" : true,
3481 "newShot" : false,
3482 "speed" : 1,
3483 "srcIn" : 721.5432471027268,
3484 "start" : 283.5593220338983,
3485 "track" : "v1"
3486 },
3487 {
3488 "duration" : 7.830508474576277,
3489 "fadeIn" : 0,
3490 "fadeOut" : 0,
3491 "id" : "BD06C153-DAD3-449C-B108-1A8130000941",
3492 "kind" : "audio",
3493 "linkId" : "B6345D38-3912-4C07-BC43-685A4C767720",
3494 "mediaId" : "501034F8-09AC-44B1-8826-FCE9B36C68F9",
3495 "muted" : false,
3496 "newShot" : false,
3497 "speed" : 1,
3498 "srcIn" : 721.5899234059577,
3499 "start" : 283.5593220338983,
3500 "track" : "v2"
3501 },
3502 {
3503 "duration" : 7.830508474576277,
3504 "fadeIn" : 0,
3505 "fadeOut" : 0,
3506 "id" : "9EFE24ED-F389-4DB3-945B-BF2F18D9915B",
3507 "kind" : "video",
3508 "linkId" : "B6345D38-3912-4C07-BC43-685A4C767720",
3509 "mediaId" : "D866E8BE-A5B1-4B51-B465-D3F753701CCE",
3510 "muted" : false,
3511 "newShot" : false,
3512 "speed" : 1,
3513 "srcIn" : 721.4533162697296,
3514 "start" : 283.5593220338983,
3515 "track" : "v3"
3516 },
3517 {
3518 "duration" : 7.830508474576277,
3519 "fadeIn" : 0,
3520 "fadeOut" : 0,
3521 "id" : "26D01EC2-D5AF-4693-809B-C57786F0F277",
3522 "kind" : "video",
3523 "linkId" : "B6345D38-3912-4C07-BC43-685A4C767720",
3524 "mediaId" : "92E85F7F-CA8B-473D-82F6-C7A7418875B1",
3525 "muted" : false,
3526 "newShot" : false,
3527 "speed" : 1,
3528 "srcIn" : 721.4533116857308,
3529 "start" : 283.5593220338983,
3530 "track" : "v4"
3531 },
3532 {
3533 "duration" : 6.27118644067798,
3534 "fadeIn" : 0,
3535 "fadeOut" : 0,
3536 "id" : "6ACBC2E5-88A0-48BD-ABE1-16D4214541B8",
3537 "kind" : "video",
3538 "linkId" : "9DBD3CAA-D3B8-40E4-9DAB-5C8025F8248C",
3539 "mediaId" : "40BBB768-793D-44DA-BBC9-B22F6591159D",
3540 "muted" : false,
3541 "newShot" : false,
3542 "speed" : 1,
3543 "srcIn" : 736.3389830508476,
3544 "start" : 291.3898305084746,
3545 "track" : "v0"
3546 },
3547 {
3548 "duration" : 6.27118644067798,
3549 "fadeIn" : 0,
3550 "fadeOut" : 0,
3551 "id" : "EBF24B46-FE81-45AB-97D4-6FD5E677B893",
3552 "kind" : "audio",
3553 "linkId" : "9DBD3CAA-D3B8-40E4-9DAB-5C8025F8248C",
3554 "mediaId" : "55C13A17-0423-4BC0-93A6-3FEFD02E7FC6",
3555 "muted" : true,
3556 "newShot" : false,
3557 "speed" : 1,
3558 "srcIn" : 736.2551115095065,
3559 "start" : 291.3898305084746,
3560 "track" : "v1"
3561 },
3562 {
3563 "duration" : 6.27118644067798,
3564 "fadeIn" : 0,
3565 "fadeOut" : 0,
3566 "id" : "DF4C7EBF-43A7-4CDE-837E-4995C5DE3EE7",
3567 "kind" : "audio",
3568 "linkId" : "9DBD3CAA-D3B8-40E4-9DAB-5C8025F8248C",
3569 "mediaId" : "501034F8-09AC-44B1-8826-FCE9B36C68F9",
3570 "muted" : false,
3571 "newShot" : false,
3572 "speed" : 1,
3573 "srcIn" : 736.3017878127374,
3574 "start" : 291.3898305084746,
3575 "track" : "v2"
3576 },
3577 {
3578 "duration" : 6.27118644067798,
3579 "fadeIn" : 0,
3580 "fadeOut" : 0,
3581 "id" : "F39E9B23-7810-4DA0-B17A-6D487A801159",
3582 "kind" : "video",
3583 "linkId" : "9DBD3CAA-D3B8-40E4-9DAB-5C8025F8248C",
3584 "mediaId" : "D866E8BE-A5B1-4B51-B465-D3F753701CCE",
3585 "muted" : false,
3586 "newShot" : false,
3587 "speed" : 1,
3588 "srcIn" : 736.1651806765093,
3589 "start" : 291.3898305084746,
3590 "track" : "v3"
3591 },
3592 {
3593 "duration" : 6.27118644067798,
3594 "fadeIn" : 0,
3595 "fadeOut" : 0,
3596 "id" : "D58A628D-522C-4267-BA46-9E4D55FE030E",
3597 "kind" : "video",
3598 "linkId" : "9DBD3CAA-D3B8-40E4-9DAB-5C8025F8248C",
3599 "mediaId" : "92E85F7F-CA8B-473D-82F6-C7A7418875B1",
3600 "muted" : false,
3601 "newShot" : false,
3602 "speed" : 1,
3603 "srcIn" : 736.1651760925105,
3604 "start" : 291.3898305084746,
3605 "track" : "v4"
3606 },
3607 {
3608 "duration" : 9.288135593220318,
3609 "fadeIn" : 0,
3610 "fadeOut" : 0,
3611 "id" : "8A9513E7-2C9C-4EB6-84AE-EDFF80DCF552",
3612 "kind" : "video",
3613 "linkId" : "2D759F83-E902-4851-A3CB-8D0088A77D2D",
3614 "mediaId" : "40BBB768-793D-44DA-BBC9-B22F6591159D",
3615 "muted" : false,
3616 "newShot" : false,
3617 "speed" : 1,
3618 "srcIn" : 747.2881355932204,
3619 "start" : 297.66101694915255,
3620 "track" : "v0"
3621 },
3622 {
3623 "duration" : 9.288135593220318,
3624 "fadeIn" : 0,
3625 "fadeOut" : 0,
3626 "id" : "D7CDE17B-5946-4F71-B09B-6983C216681E",
3627 "kind" : "audio",
3628 "linkId" : "2D759F83-E902-4851-A3CB-8D0088A77D2D",
3629 "mediaId" : "55C13A17-0423-4BC0-93A6-3FEFD02E7FC6",
3630 "muted" : true,
3631 "newShot" : false,
3632 "speed" : 1,
3633 "srcIn" : 747.2042640518794,
3634 "start" : 297.66101694915255,
3635 "track" : "v1"
3636 },
3637 {
3638 "duration" : 9.288135593220318,
3639 "fadeIn" : 0,
3640 "fadeOut" : 0,
3641 "id" : "CC586FEC-2BAB-4053-AC79-1FA59BD9BF45",
3642 "kind" : "audio",
3643 "linkId" : "2D759F83-E902-4851-A3CB-8D0088A77D2D",
3644 "mediaId" : "501034F8-09AC-44B1-8826-FCE9B36C68F9",
3645 "muted" : false,
3646 "newShot" : false,
3647 "speed" : 1,
3648 "srcIn" : 747.2509403551103,
3649 "start" : 297.66101694915255,
3650 "track" : "v2"
3651 },
3652 {
3653 "duration" : 9.288135593220318,
3654 "fadeIn" : 0,
3655 "fadeOut" : 0,
3656 "id" : "926C01C2-ADAD-4B46-BE04-CD6B4618CCC3",
3657 "kind" : "video",
3658 "linkId" : "2D759F83-E902-4851-A3CB-8D0088A77D2D",
3659 "mediaId" : "D866E8BE-A5B1-4B51-B465-D3F753701CCE",
3660 "muted" : false,
3661 "newShot" : false,
3662 "speed" : 1,
3663 "srcIn" : 747.1143332188822,
3664 "start" : 297.66101694915255,
3665 "track" : "v3"
3666 },
3667 {
3668 "duration" : 9.288135593220318,
3669 "fadeIn" : 0,
3670 "fadeOut" : 0,
3671 "id" : "0AB6F4F2-89CA-4D4B-A52E-765F89C40923",
3672 "kind" : "video",
3673 "linkId" : "2D759F83-E902-4851-A3CB-8D0088A77D2D",
3674 "mediaId" : "92E85F7F-CA8B-473D-82F6-C7A7418875B1",
3675 "muted" : false,
3676 "newShot" : false,
3677 "speed" : 1,
3678 "srcIn" : 747.1143286348833,
3679 "start" : 297.66101694915255,
3680 "track" : "v4"
3681 },
3682 {
3683 "duration" : 4.372881355932236,
3684 "fadeIn" : 0,
3685 "fadeOut" : 0,
3686 "id" : "E84D7CB3-1292-4241-AAD4-AA71BA97E643",
3687 "kind" : "video",
3688 "linkId" : "1F9BC1C6-8DE8-4750-ADF1-DBC052261B98",
3689 "mediaId" : "40BBB768-793D-44DA-BBC9-B22F6591159D",
3690 "muted" : false,
3691 "newShot" : false,
3692 "speed" : 1,
3693 "srcIn" : 763.2203389830509,
3694 "start" : 306.9491525423729,
3695 "track" : "v0"
3696 },
3697 {
3698 "duration" : 4.372881355932236,
3699 "fadeIn" : 0,
3700 "fadeOut" : 0,
3701 "id" : "48214E82-E8A7-45D1-A218-C6F71276D005",
3702 "kind" : "audio",
3703 "linkId" : "1F9BC1C6-8DE8-4750-ADF1-DBC052261B98",
3704 "mediaId" : "55C13A17-0423-4BC0-93A6-3FEFD02E7FC6",
3705 "muted" : true,
3706 "newShot" : false,
3707 "speed" : 1,
3708 "srcIn" : 763.1364674417098,
3709 "start" : 306.9491525423729,
3710 "track" : "v1"
3711 },
3712 {
3713 "duration" : 4.372881355932236,
3714 "fadeIn" : 0,
3715 "fadeOut" : 0,
3716 "id" : "5D3BAE7E-FE37-43FE-9E8C-945DB4037BD3",
3717 "kind" : "audio",
3718 "linkId" : "1F9BC1C6-8DE8-4750-ADF1-DBC052261B98",
3719 "mediaId" : "501034F8-09AC-44B1-8826-FCE9B36C68F9",
3720 "muted" : false,
3721 "newShot" : false,
3722 "speed" : 1,
3723 "srcIn" : 763.1831437449407,
3724 "start" : 306.9491525423729,
3725 "track" : "v2"
3726 },
3727 {
3728 "duration" : 4.372881355932236,
3729 "fadeIn" : 0,
3730 "fadeOut" : 0,
3731 "id" : "6B9196EE-5BAF-4BC6-A372-D785A26AB9B6",
3732 "kind" : "video",
3733 "linkId" : "1F9BC1C6-8DE8-4750-ADF1-DBC052261B98",
3734 "mediaId" : "D866E8BE-A5B1-4B51-B465-D3F753701CCE",
3735 "muted" : false,
3736 "newShot" : false,
3737 "speed" : 1,
3738 "srcIn" : 763.0465366087126,
3739 "start" : 306.9491525423729,
3740 "track" : "v3"
3741 },
3742 {
3743 "duration" : 4.372881355932236,
3744 "fadeIn" : 0,
3745 "fadeOut" : 0,
3746 "id" : "92FFAC2A-5A18-4CD5-A8E8-38A3237085FB",
3747 "kind" : "video",
3748 "linkId" : "1F9BC1C6-8DE8-4750-ADF1-DBC052261B98",
3749 "mediaId" : "92E85F7F-CA8B-473D-82F6-C7A7418875B1",
3750 "muted" : false,
3751 "newShot" : false,
3752 "speed" : 1,
3753 "srcIn" : 763.0465320247138,
3754 "start" : 306.9491525423729,
3755 "track" : "v4"
3756 },
3757 {
3758 "duration" : 6.203389830508456,
3759 "fadeIn" : 0,
3760 "fadeOut" : 0,
3761 "id" : "B4E35468-D60F-41C5-9DEB-00DF0D9AB8F0",
3762 "kind" : "video",
3763 "linkId" : "5C054F95-5ECF-452C-8B05-51B9272EC65B",
3764 "mediaId" : "40BBB768-793D-44DA-BBC9-B22F6591159D",
3765 "muted" : false,
3766 "newShot" : false,
3767 "speed" : 1,
3768 "srcIn" : 771.2203389830509,
3769 "start" : 311.3220338983051,
3770 "track" : "v0"
3771 },
3772 {
3773 "duration" : 6.203389830508456,
3774 "fadeIn" : 0,
3775 "fadeOut" : 0,
3776 "id" : "EE8E5E05-B61B-4960-ABF2-9C3490F03B65",
3777 "kind" : "audio",
3778 "linkId" : "5C054F95-5ECF-452C-8B05-51B9272EC65B",
3779 "mediaId" : "55C13A17-0423-4BC0-93A6-3FEFD02E7FC6",
3780 "muted" : true,
3781 "newShot" : false,
3782 "speed" : 1,
3783 "srcIn" : 771.1364674417098,
3784 "start" : 311.3220338983051,
3785 "track" : "v1"
3786 },
3787 {
3788 "duration" : 6.203389830508456,
3789 "fadeIn" : 0,
3790 "fadeOut" : 0,
3791 "id" : "41C6BBFA-FF1F-4336-8A02-CC2A7AD8D711",
3792 "kind" : "audio",
3793 "linkId" : "5C054F95-5ECF-452C-8B05-51B9272EC65B",
3794 "mediaId" : "501034F8-09AC-44B1-8826-FCE9B36C68F9",
3795 "muted" : false,
3796 "newShot" : false,
3797 "speed" : 1,
3798 "srcIn" : 771.1831437449407,
3799 "start" : 311.3220338983051,
3800 "track" : "v2"
3801 },
3802 {
3803 "duration" : 6.203389830508456,
3804 "fadeIn" : 0,
3805 "fadeOut" : 0,
3806 "id" : "01FAD5BD-4079-4B78-964E-021AB45FD327",
3807 "kind" : "video",
3808 "linkId" : "5C054F95-5ECF-452C-8B05-51B9272EC65B",
3809 "mediaId" : "D866E8BE-A5B1-4B51-B465-D3F753701CCE",
3810 "muted" : false,
3811 "newShot" : false,
3812 "speed" : 1,
3813 "srcIn" : 771.0465366087126,
3814 "start" : 311.3220338983051,
3815 "track" : "v3"
3816 },
3817 {
3818 "duration" : 6.203389830508456,
3819 "fadeIn" : 0,
3820 "fadeOut" : 0,
3821 "id" : "D05C5F7B-1439-48C3-A549-332D2965E644",
3822 "kind" : "video",
3823 "linkId" : "5C054F95-5ECF-452C-8B05-51B9272EC65B",
3824 "mediaId" : "92E85F7F-CA8B-473D-82F6-C7A7418875B1",
3825 "muted" : false,
3826 "newShot" : false,
3827 "speed" : 1,
3828 "srcIn" : 771.0465320247138,
3829 "start" : 311.3220338983051,
3830 "track" : "v4"
3831 },
3832 {
3833 "duration" : 4.033898305084733,
3834 "fadeIn" : 0,
3835 "fadeOut" : 0,
3836 "id" : "9ADC6EF4-01E6-44A2-A4E7-CE979C4216A6",
3837 "kind" : "video",
3838 "linkId" : "E7791304-08F7-4757-B49E-97BD758DF635",
3839 "mediaId" : "40BBB768-793D-44DA-BBC9-B22F6591159D",
3840 "muted" : false,
3841 "newShot" : false,
3842 "speed" : 1,
3843 "srcIn" : 780.271186440678,
3844 "start" : 317.52542372881356,
3845 "track" : "v0"
3846 },
3847 {
3848 "duration" : 4.033898305084733,
3849 "fadeIn" : 0,
3850 "fadeOut" : 0,
3851 "id" : "C83F690F-75F2-4F0E-9F44-2B3B64FC4D7D",
3852 "kind" : "audio",
3853 "linkId" : "E7791304-08F7-4757-B49E-97BD758DF635",
3854 "mediaId" : "55C13A17-0423-4BC0-93A6-3FEFD02E7FC6",
3855 "muted" : true,
3856 "newShot" : false,
3857 "speed" : 1,
3858 "srcIn" : 780.1873148993369,
3859 "start" : 317.52542372881356,
3860 "track" : "v1"
3861 },
3862 {
3863 "duration" : 4.033898305084733,
3864 "fadeIn" : 0,
3865 "fadeOut" : 0,
3866 "id" : "7F4D1569-EB2B-470A-A39D-4E27BB9631D3",
3867 "kind" : "audio",
3868 "linkId" : "E7791304-08F7-4757-B49E-97BD758DF635",
3869 "mediaId" : "501034F8-09AC-44B1-8826-FCE9B36C68F9",
3870 "muted" : false,
3871 "newShot" : false,
3872 "speed" : 1,
3873 "srcIn" : 780.2339912025678,
3874 "start" : 317.52542372881356,
3875 "track" : "v2"
3876 },
3877 {
3878 "duration" : 4.033898305084733,
3879 "fadeIn" : 0,
3880 "fadeOut" : 0,
3881 "id" : "F566D86E-6BCB-450B-B165-E742669968FE",
3882 "kind" : "video",
3883 "linkId" : "E7791304-08F7-4757-B49E-97BD758DF635",
3884 "mediaId" : "D866E8BE-A5B1-4B51-B465-D3F753701CCE",
3885 "muted" : false,
3886 "newShot" : false,
3887 "speed" : 1,
3888 "srcIn" : 780.0973840663397,
3889 "start" : 317.52542372881356,
3890 "track" : "v3"
3891 },
3892 {
3893 "duration" : 4.033898305084733,
3894 "fadeIn" : 0,
3895 "fadeOut" : 0,
3896 "id" : "397C4077-BE8E-46D8-9A26-4A85FB164ADD",
3897 "kind" : "video",
3898 "linkId" : "E7791304-08F7-4757-B49E-97BD758DF635",
3899 "mediaId" : "92E85F7F-CA8B-473D-82F6-C7A7418875B1",
3900 "muted" : false,
3901 "newShot" : false,
3902 "speed" : 1,
3903 "srcIn" : 780.0973794823409,
3904 "start" : 317.52542372881356,
3905 "track" : "v4"
3906 },
3907 {
3908 "duration" : 2.474576271186436,
3909 "fadeIn" : 0,
3910 "fadeOut" : 0,
3911 "id" : "3EA1AE5B-B71F-4DD3-BAB2-258343BC38E6",
3912 "kind" : "video",
3913 "linkId" : "9683EB9F-EC01-480F-8BE7-2201B247DE7E",
3914 "mediaId" : "40BBB768-793D-44DA-BBC9-B22F6591159D",
3915 "muted" : false,
3916 "newShot" : false,
3917 "speed" : 1,
3918 "srcIn" : 790.7118644067798,
3919 "start" : 321.5593220338983,
3920 "track" : "v0"
3921 },
3922 {
3923 "duration" : 2.474576271186436,
3924 "fadeIn" : 0,
3925 "fadeOut" : 0,
3926 "id" : "84190D3F-8FAE-46C1-8402-B9BE98C961DD",
3927 "kind" : "audio",
3928 "linkId" : "9683EB9F-EC01-480F-8BE7-2201B247DE7E",
3929 "mediaId" : "55C13A17-0423-4BC0-93A6-3FEFD02E7FC6",
3930 "muted" : true,
3931 "newShot" : false,
3932 "speed" : 1,
3933 "srcIn" : 790.6279928654387,
3934 "start" : 321.5593220338983,
3935 "track" : "v1"
3936 },
3937 {
3938 "duration" : 2.474576271186436,
3939 "fadeIn" : 0,
3940 "fadeOut" : 0,
3941 "id" : "BA726F72-FB82-4612-8EBA-361CFF5A177B",
3942 "kind" : "audio",
3943 "linkId" : "9683EB9F-EC01-480F-8BE7-2201B247DE7E",
3944 "mediaId" : "501034F8-09AC-44B1-8826-FCE9B36C68F9",
3945 "muted" : false,
3946 "newShot" : false,
3947 "speed" : 1,
3948 "srcIn" : 790.6746691686697,
3949 "start" : 321.5593220338983,
3950 "track" : "v2"
3951 },
3952 {
3953 "duration" : 2.474576271186436,
3954 "fadeIn" : 0,
3955 "fadeOut" : 0,
3956 "id" : "A2BD0CC2-F087-4B62-B210-2422E7CDA62E",
3957 "kind" : "video",
3958 "linkId" : "9683EB9F-EC01-480F-8BE7-2201B247DE7E",
3959 "mediaId" : "D866E8BE-A5B1-4B51-B465-D3F753701CCE",
3960 "muted" : false,
3961 "newShot" : false,
3962 "speed" : 1,
3963 "srcIn" : 790.5380620324415,
3964 "start" : 321.5593220338983,
3965 "track" : "v3"
3966 },
3967 {
3968 "duration" : 2.474576271186436,
3969 "fadeIn" : 0,
3970 "fadeOut" : 0,
3971 "id" : "CB9AED26-D860-4411-9D20-1B63F56F0BEC",
3972 "kind" : "video",
3973 "linkId" : "9683EB9F-EC01-480F-8BE7-2201B247DE7E",
3974 "mediaId" : "92E85F7F-CA8B-473D-82F6-C7A7418875B1",
3975 "muted" : false,
3976 "newShot" : false,
3977 "speed" : 1,
3978 "srcIn" : 790.5380574484427,
3979 "start" : 321.5593220338983,
3980 "track" : "v4"
3981 },
3982 {
3983 "duration" : 3.525423728813564,
3984 "fadeIn" : 0,
3985 "fadeOut" : 0,
3986 "id" : "5650BD3B-4BF5-4533-B873-6A89B355DBBD",
3987 "kind" : "video",
3988 "linkId" : "CABF546D-96A6-4629-8BD2-A6CED6EBD7E4",
3989 "mediaId" : "40BBB768-793D-44DA-BBC9-B22F6591159D",
3990 "muted" : false,
3991 "newShot" : false,
3992 "speed" : 1,
3993 "srcIn" : 794.7118644067798,
3994 "start" : 324.03389830508473,
3995 "track" : "v0"
3996 },
3997 {
3998 "duration" : 3.525423728813564,
3999 "fadeIn" : 0,
4000 "fadeOut" : 0,
4001 "id" : "3BA60039-3255-435B-90E4-738D94B13821",
4002 "kind" : "audio",
4003 "linkId" : "CABF546D-96A6-4629-8BD2-A6CED6EBD7E4",
4004 "mediaId" : "55C13A17-0423-4BC0-93A6-3FEFD02E7FC6",
4005 "muted" : true,
4006 "newShot" : false,
4007 "speed" : 1,
4008 "srcIn" : 794.6279928654387,
4009 "start" : 324.03389830508473,
4010 "track" : "v1"
4011 },
4012 {
4013 "duration" : 3.525423728813564,
4014 "fadeIn" : 0,
4015 "fadeOut" : 0,
4016 "id" : "1A07AF09-C783-4547-BB45-5671AD0A75E7",
4017 "kind" : "audio",
4018 "linkId" : "CABF546D-96A6-4629-8BD2-A6CED6EBD7E4",
4019 "mediaId" : "501034F8-09AC-44B1-8826-FCE9B36C68F9",
4020 "muted" : false,
4021 "newShot" : false,
4022 "speed" : 1,
4023 "srcIn" : 794.6746691686697,
4024 "start" : 324.03389830508473,
4025 "track" : "v2"
4026 },
4027 {
4028 "duration" : 3.525423728813564,
4029 "fadeIn" : 0,
4030 "fadeOut" : 0,
4031 "id" : "A656775F-4507-44FD-ADCB-E23AE9572BD6",
4032 "kind" : "video",
4033 "linkId" : "CABF546D-96A6-4629-8BD2-A6CED6EBD7E4",
4034 "mediaId" : "D866E8BE-A5B1-4B51-B465-D3F753701CCE",
4035 "muted" : false,
4036 "newShot" : false,
4037 "speed" : 1,
4038 "srcIn" : 794.5380620324415,
4039 "start" : 324.03389830508473,
4040 "track" : "v3"
4041 },
4042 {
4043 "duration" : 3.525423728813564,
4044 "fadeIn" : 0,
4045 "fadeOut" : 0,
4046 "id" : "F287E2E4-9B24-4928-9DF4-BE2A88C6F6E1",
4047 "kind" : "video",
4048 "linkId" : "CABF546D-96A6-4629-8BD2-A6CED6EBD7E4",
4049 "mediaId" : "92E85F7F-CA8B-473D-82F6-C7A7418875B1",
4050 "muted" : false,
4051 "newShot" : false,
4052 "speed" : 1,
4053 "srcIn" : 794.5380574484427,
4054 "start" : 324.03389830508473,
4055 "track" : "v4"
4056 },
4057 {
4058 "duration" : 11.694915254237287,
4059 "fadeIn" : 0,
4060 "fadeOut" : 0,
4061 "id" : "10BDB7F1-A97E-46B4-AA17-D5AA082F4FE5",
4062 "kind" : "video",
4063 "linkId" : "FE61ADB3-0C95-4A1A-B7F6-D3B4874BD0EA",
4064 "mediaId" : "40BBB768-793D-44DA-BBC9-B22F6591159D",
4065 "muted" : false,
4066 "newShot" : false,
4067 "speed" : 1,
4068 "srcIn" : 812.6440677966104,
4069 "start" : 327.5593220338983,
4070 "track" : "v0"
4071 },
4072 {
4073 "duration" : 11.694915254237287,
4074 "fadeIn" : 0,
4075 "fadeOut" : 0,
4076 "id" : "1A175E00-C9B8-4071-9395-B96E6BBC0766",
4077 "kind" : "audio",
4078 "linkId" : "FE61ADB3-0C95-4A1A-B7F6-D3B4874BD0EA",
4079 "mediaId" : "55C13A17-0423-4BC0-93A6-3FEFD02E7FC6",
4080 "muted" : true,
4081 "newShot" : false,
4082 "speed" : 1,
4083 "srcIn" : 812.5601962552694,
4084 "start" : 327.5593220338983,
4085 "track" : "v1"
4086 },
4087 {
4088 "duration" : 11.694915254237287,
4089 "fadeIn" : 0,
4090 "fadeOut" : 0,
4091 "id" : "9CDBFDAC-83C2-4F7B-AC48-618437D267F1",
4092 "kind" : "audio",
4093 "linkId" : "FE61ADB3-0C95-4A1A-B7F6-D3B4874BD0EA",
4094 "mediaId" : "501034F8-09AC-44B1-8826-FCE9B36C68F9",
4095 "muted" : false,
4096 "newShot" : false,
4097 "speed" : 1,
4098 "srcIn" : 812.6068725585003,
4099 "start" : 327.5593220338983,
4100 "track" : "v2"
4101 },
4102 {
4103 "duration" : 11.694915254237287,
4104 "fadeIn" : 0,
4105 "fadeOut" : 0,
4106 "id" : "F8DB026C-68E2-4110-8310-A4E77894383C",
4107 "kind" : "video",
4108 "linkId" : "FE61ADB3-0C95-4A1A-B7F6-D3B4874BD0EA",
4109 "mediaId" : "D866E8BE-A5B1-4B51-B465-D3F753701CCE",
4110 "muted" : false,
4111 "newShot" : false,
4112 "speed" : 1,
4113 "srcIn" : 812.4702654222722,
4114 "start" : 327.5593220338983,
4115 "track" : "v3"
4116 },
4117 {
4118 "duration" : 11.694915254237287,
4119 "fadeIn" : 0,
4120 "fadeOut" : 0,
4121 "id" : "2C6F6969-72A9-49A9-8A8D-A15D2D15A434",
4122 "kind" : "video",
4123 "linkId" : "FE61ADB3-0C95-4A1A-B7F6-D3B4874BD0EA",
4124 "mediaId" : "92E85F7F-CA8B-473D-82F6-C7A7418875B1",
4125 "muted" : false,
4126 "newShot" : false,
4127 "speed" : 1,
4128 "srcIn" : 812.4702608382734,
4129 "start" : 327.5593220338983,
4130 "track" : "v4"
4131 },
4132 {
4133 "duration" : 1.3898305084745743,
4134 "fadeIn" : 0,
4135 "fadeOut" : 0,
4136 "id" : "5D76FCCF-E20B-4E2B-B2BF-06D04D2EC873",
4137 "kind" : "video",
4138 "linkId" : "5A0236C5-2C98-4C5E-A570-96D211E7B3C6",
4139 "mediaId" : "40BBB768-793D-44DA-BBC9-B22F6591159D",
4140 "muted" : false,
4141 "newShot" : false,
4142 "speed" : 1,
4143 "srcIn" : 980.813559322034,
4144 "start" : 339.2542372881356,
4145 "track" : "v0"
4146 },
4147 {
4148 "duration" : 1.3898305084745743,
4149 "fadeIn" : 0,
4150 "fadeOut" : 0,
4151 "id" : "B834F191-B8D9-4288-A76C-5BC67BBEAA7E",
4152 "kind" : "audio",
4153 "linkId" : "5A0236C5-2C98-4C5E-A570-96D211E7B3C6",
4154 "mediaId" : "55C13A17-0423-4BC0-93A6-3FEFD02E7FC6",
4155 "muted" : true,
4156 "newShot" : false,
4157 "speed" : 1,
4158 "srcIn" : 980.729687780693,
4159 "start" : 339.2542372881356,
4160 "track" : "v1"
4161 },
4162 {
4163 "duration" : 1.3898305084745743,
4164 "fadeIn" : 0,
4165 "fadeOut" : 0,
4166 "id" : "EC711F21-C8A3-40C5-B230-A451B6878977",
4167 "kind" : "audio",
4168 "linkId" : "5A0236C5-2C98-4C5E-A570-96D211E7B3C6",
4169 "mediaId" : "501034F8-09AC-44B1-8826-FCE9B36C68F9",
4170 "muted" : false,
4171 "newShot" : false,
4172 "speed" : 1,
4173 "srcIn" : 980.7763640839239,
4174 "start" : 339.2542372881356,
4175 "track" : "v2"
4176 },
4177 {
4178 "duration" : 1.3898305084745743,
4179 "fadeIn" : 0,
4180 "fadeOut" : 0,
4181 "id" : "3BFC58C2-D801-45E4-8F01-5F94BDB9ED96",
4182 "kind" : "video",
4183 "linkId" : "5A0236C5-2C98-4C5E-A570-96D211E7B3C6",
4184 "mediaId" : "D866E8BE-A5B1-4B51-B465-D3F753701CCE",
4185 "muted" : false,
4186 "newShot" : false,
4187 "speed" : 1,
4188 "srcIn" : 980.6397569476958,
4189 "start" : 339.2542372881356,
4190 "track" : "v3"
4191 },
4192 {
4193 "duration" : 1.3898305084745743,
4194 "fadeIn" : 0,
4195 "fadeOut" : 0,
4196 "id" : "28885AEF-445D-47A2-88D3-550BBF692ADE",
4197 "kind" : "video",
4198 "linkId" : "5A0236C5-2C98-4C5E-A570-96D211E7B3C6",
4199 "mediaId" : "92E85F7F-CA8B-473D-82F6-C7A7418875B1",
4200 "muted" : false,
4201 "newShot" : false,
4202 "speed" : 1,
4203 "srcIn" : 980.639752363697,
4204 "start" : 339.2542372881356,
4205 "track" : "v4"
4206 },
4207 {
4208 "duration" : 0.6440677966101589,
4209 "fadeIn" : 0,
4210 "fadeOut" : 0,
4211 "id" : "EA534368-94B4-475D-8041-45696947070E",
4212 "kind" : "video",
4213 "linkId" : "B31B5062-B2A8-445B-A891-F2D2104E86E3",
4214 "mediaId" : "40BBB768-793D-44DA-BBC9-B22F6591159D",
4215 "muted" : false,
4216 "newShot" : false,
4217 "speed" : 1,
4218 "srcIn" : 983.1186440677968,
4219 "start" : 340.64406779661016,
4220 "track" : "v0"
4221 },
4222 {
4223 "duration" : 0.6440677966101589,
4224 "fadeIn" : 0,
4225 "fadeOut" : 0,
4226 "id" : "F6F6F9A9-8B8B-443A-B401-32205A74C093",
4227 "kind" : "audio",
4228 "linkId" : "B31B5062-B2A8-445B-A891-F2D2104E86E3",
4229 "mediaId" : "55C13A17-0423-4BC0-93A6-3FEFD02E7FC6",
4230 "muted" : true,
4231 "newShot" : false,
4232 "speed" : 1,
4233 "srcIn" : 983.0347725264558,
4234 "start" : 340.64406779661016,
4235 "track" : "v1"
4236 },
4237 {
4238 "duration" : 0.6440677966101589,
4239 "fadeIn" : 0,
4240 "fadeOut" : 0,
4241 "id" : "1176FB5D-D780-4273-9FCA-9695A04A100F",
4242 "kind" : "audio",
4243 "linkId" : "B31B5062-B2A8-445B-A891-F2D2104E86E3",
4244 "mediaId" : "501034F8-09AC-44B1-8826-FCE9B36C68F9",
4245 "muted" : false,
4246 "newShot" : false,
4247 "speed" : 1,
4248 "srcIn" : 983.0814488296867,
4249 "start" : 340.64406779661016,
4250 "track" : "v2"
4251 },
4252 {
4253 "duration" : 0.6440677966101589,
4254 "fadeIn" : 0,
4255 "fadeOut" : 0,
4256 "id" : "5DA60AD6-AC7E-4579-86CD-50F79A14150D",
4257 "kind" : "video",
4258 "linkId" : "B31B5062-B2A8-445B-A891-F2D2104E86E3",
4259 "mediaId" : "D866E8BE-A5B1-4B51-B465-D3F753701CCE",
4260 "muted" : false,
4261 "newShot" : false,
4262 "speed" : 1,
4263 "srcIn" : 982.9448416934586,
4264 "start" : 340.64406779661016,
4265 "track" : "v3"
4266 },
4267 {
4268 "duration" : 0.6440677966101589,
4269 "fadeIn" : 0,
4270 "fadeOut" : 0,
4271 "id" : "3DBD1518-ACEA-4CC3-9B85-FB6C1BFDDDE4",
4272 "kind" : "video",
4273 "linkId" : "B31B5062-B2A8-445B-A891-F2D2104E86E3",
4274 "mediaId" : "92E85F7F-CA8B-473D-82F6-C7A7418875B1",
4275 "muted" : false,
4276 "newShot" : false,
4277 "speed" : 1,
4278 "srcIn" : 982.9448371094597,
4279 "start" : 340.64406779661016,
4280 "track" : "v4"
4281 },
4282 {
4283 "duration" : 3.6271186440678207,
4284 "fadeIn" : 0,
4285 "fadeOut" : 0,
4286 "id" : "832B3ED1-5BC4-43EE-8FE6-717D93008C5A",
4287 "kind" : "video",
4288 "linkId" : "596C8323-127D-44C1-B319-7DF1FB8B1171",
4289 "mediaId" : "40BBB768-793D-44DA-BBC9-B22F6591159D",
4290 "muted" : false,
4291 "newShot" : false,
4292 "speed" : 1,
4293 "srcIn" : 1037.8305084745766,
4294 "start" : 341.2881355932203,
4295 "track" : "v0"
4296 },
4297 {
4298 "duration" : 3.6271186440678207,
4299 "fadeIn" : 0,
4300 "fadeOut" : 0,
4301 "id" : "00209D2F-08A1-4B49-96F2-91A8C5EF454D",
4302 "kind" : "audio",
4303 "linkId" : "596C8323-127D-44C1-B319-7DF1FB8B1171",
4304 "mediaId" : "55C13A17-0423-4BC0-93A6-3FEFD02E7FC6",
4305 "muted" : true,
4306 "newShot" : false,
4307 "speed" : 1,
4308 "srcIn" : 1037.7466369332355,
4309 "start" : 341.2881355932203,
4310 "track" : "v1"
4311 },
4312 {
4313 "duration" : 3.6271186440678207,
4314 "fadeIn" : 0,
4315 "fadeOut" : 0,
4316 "id" : "43AEF5F0-29EF-45AD-A7B6-893C574685CB",
4317 "kind" : "audio",
4318 "linkId" : "596C8323-127D-44C1-B319-7DF1FB8B1171",
4319 "mediaId" : "501034F8-09AC-44B1-8826-FCE9B36C68F9",
4320 "muted" : false,
4321 "newShot" : false,
4322 "speed" : 1,
4323 "srcIn" : 1037.7933132364665,
4324 "start" : 341.2881355932203,
4325 "track" : "v2"
4326 },
4327 {
4328 "duration" : 3.6271186440678207,
4329 "fadeIn" : 0,
4330 "fadeOut" : 0,
4331 "id" : "32BC4FE2-4816-49E7-80A0-2DA08DCC56A0",
4332 "kind" : "video",
4333 "linkId" : "596C8323-127D-44C1-B319-7DF1FB8B1171",
4334 "mediaId" : "D866E8BE-A5B1-4B51-B465-D3F753701CCE",
4335 "muted" : false,
4336 "newShot" : false,
4337 "speed" : 1,
4338 "srcIn" : 1037.6567061002384,
4339 "start" : 341.2881355932203,
4340 "track" : "v3"
4341 },
4342 {
4343 "duration" : 3.6271186440678207,
4344 "fadeIn" : 0,
4345 "fadeOut" : 0,
4346 "id" : "7C5CF291-4A7F-4BBD-809E-A9094B0B00E0",
4347 "kind" : "video",
4348 "linkId" : "596C8323-127D-44C1-B319-7DF1FB8B1171",
4349 "mediaId" : "92E85F7F-CA8B-473D-82F6-C7A7418875B1",
4350 "muted" : false,
4351 "newShot" : false,
4352 "speed" : 1,
4353 "srcIn" : 1037.6567015162395,
4354 "start" : 341.2881355932203,
4355 "track" : "v4"
4356 },
4357 {
4358 "duration" : 1.355932203389841,
4359 "fadeIn" : 0,
4360 "fadeOut" : 0,
4361 "id" : "0905362C-DE86-4A3A-B256-9FD740D3A19D",
4362 "kind" : "video",
4363 "linkId" : "E5D49AA9-6CD5-438D-8B96-6ADA7002033B",
4364 "mediaId" : "40BBB768-793D-44DA-BBC9-B22F6591159D",
4365 "muted" : false,
4366 "newShot" : false,
4367 "speed" : 1,
4368 "srcIn" : 1122.203389830509,
4369 "start" : 344.91525423728814,
4370 "track" : "v0"
4371 },
4372 {
4373 "duration" : 1.355932203389841,
4374 "fadeIn" : 0,
4375 "fadeOut" : 0,
4376 "id" : "48C76EE1-E83E-45E8-A767-47E35F66576F",
4377 "kind" : "audio",
4378 "linkId" : "E5D49AA9-6CD5-438D-8B96-6ADA7002033B",
4379 "mediaId" : "55C13A17-0423-4BC0-93A6-3FEFD02E7FC6",
4380 "muted" : true,
4381 "newShot" : false,
4382 "speed" : 1,
4383 "srcIn" : 1122.119518289168,
4384 "start" : 344.91525423728814,
4385 "track" : "v1"
4386 },
4387 {
4388 "duration" : 1.355932203389841,
4389 "fadeIn" : 0,
4390 "fadeOut" : 0,
4391 "id" : "2F82F324-00A9-48EC-BF8C-DAA85B8C9D73",
4392 "kind" : "audio",
4393 "linkId" : "E5D49AA9-6CD5-438D-8B96-6ADA7002033B",
4394 "mediaId" : "501034F8-09AC-44B1-8826-FCE9B36C68F9",
4395 "muted" : false,
4396 "newShot" : false,
4397 "speed" : 1,
4398 "srcIn" : 1122.1661945923988,
4399 "start" : 344.91525423728814,
4400 "track" : "v2"
4401 },
4402 {
4403 "duration" : 1.355932203389841,
4404 "fadeIn" : 0,
4405 "fadeOut" : 0,
4406 "id" : "5B27AC9E-88CF-4AB2-927D-A79412E95F09",
4407 "kind" : "video",
4408 "linkId" : "E5D49AA9-6CD5-438D-8B96-6ADA7002033B",
4409 "mediaId" : "D866E8BE-A5B1-4B51-B465-D3F753701CCE",
4410 "muted" : false,
4411 "newShot" : false,
4412 "speed" : 1,
4413 "srcIn" : 1122.0295874561707,
4414 "start" : 344.91525423728814,
4415 "track" : "v3"
4416 },
4417 {
4418 "duration" : 1.355932203389841,
4419 "fadeIn" : 0,
4420 "fadeOut" : 0,
4421 "id" : "6CC1FC2E-3809-4A37-87B2-3255B1430A3C",
4422 "kind" : "video",
4423 "linkId" : "E5D49AA9-6CD5-438D-8B96-6ADA7002033B",
4424 "mediaId" : "92E85F7F-CA8B-473D-82F6-C7A7418875B1",
4425 "muted" : false,
4426 "newShot" : false,
4427 "speed" : 1,
4428 "srcIn" : 1122.0295828721719,
4429 "start" : 344.91525423728814,
4430 "track" : "v4"
4431 },
4432 {
4433 "duration" : 5.0847457627118615,
4434 "fadeIn" : 0,
4435 "fadeOut" : 0,
4436 "id" : "F27B9C51-75DE-4E4F-8808-3BA889863CF9",
4437 "kind" : "video",
4438 "linkId" : "81F5C3C3-3A90-4A30-8056-87972464F37F",
4439 "mediaId" : "40BBB768-793D-44DA-BBC9-B22F6591159D",
4440 "muted" : false,
4441 "newShot" : false,
4442 "speed" : 1,
4443 "srcIn" : 1129.254237288136,
4444 "start" : 346.271186440678,
4445 "track" : "v0"
4446 },
4447 {
4448 "duration" : 5.0847457627118615,
4449 "fadeIn" : 0,
4450 "fadeOut" : 0,
4451 "id" : "D6CB9F93-3A96-4AD3-8448-52E45B33A28D",
4452 "kind" : "audio",
4453 "linkId" : "81F5C3C3-3A90-4A30-8056-87972464F37F",
4454 "mediaId" : "55C13A17-0423-4BC0-93A6-3FEFD02E7FC6",
4455 "muted" : true,
4456 "newShot" : false,
4457 "speed" : 1,
4458 "srcIn" : 1129.170365746795,
4459 "start" : 346.271186440678,
4460 "track" : "v1"
4461 },
4462 {
4463 "duration" : 5.0847457627118615,
4464 "fadeIn" : 0,
4465 "fadeOut" : 0,
4466 "id" : "34239B0B-3D34-4D29-9C48-D18A775FCDDB",
4467 "kind" : "audio",
4468 "linkId" : "81F5C3C3-3A90-4A30-8056-87972464F37F",
4469 "mediaId" : "501034F8-09AC-44B1-8826-FCE9B36C68F9",
4470 "muted" : false,
4471 "newShot" : false,
4472 "speed" : 1,
4473 "srcIn" : 1129.2170420500258,
4474 "start" : 346.271186440678,
4475 "track" : "v2"
4476 },
4477 {
4478 "duration" : 5.0847457627118615,
4479 "fadeIn" : 0,
4480 "fadeOut" : 0,
4481 "id" : "C0EC3471-CC80-448C-BA8B-6F565ED9EE06",
4482 "kind" : "video",
4483 "linkId" : "81F5C3C3-3A90-4A30-8056-87972464F37F",
4484 "mediaId" : "D866E8BE-A5B1-4B51-B465-D3F753701CCE",
4485 "muted" : false,
4486 "newShot" : false,
4487 "speed" : 1,
4488 "srcIn" : 1129.0804349137977,
4489 "start" : 346.271186440678,
4490 "track" : "v3"
4491 },
4492 {
4493 "duration" : 5.0847457627118615,
4494 "fadeIn" : 0,
4495 "fadeOut" : 0,
4496 "id" : "89A2AE13-B7C0-4138-B475-2D7ED7D1BEEA",
4497 "kind" : "video",
4498 "linkId" : "81F5C3C3-3A90-4A30-8056-87972464F37F",
4499 "mediaId" : "92E85F7F-CA8B-473D-82F6-C7A7418875B1",
4500 "muted" : false,
4501 "newShot" : false,
4502 "speed" : 1,
4503 "srcIn" : 1129.080430329799,
4504 "start" : 346.271186440678,
4505 "track" : "v4"
4506 },
4507 {
4508 "duration" : 4.711864406779625,
4509 "fadeIn" : 0,
4510 "fadeOut" : 0,
4511 "id" : "2E892202-DFC8-4722-848D-8ED956667E0D",
4512 "kind" : "video",
4513 "linkId" : "CD0169DB-72F4-4E7A-B27D-1D1C0A2437D9",
4514 "mediaId" : "40BBB768-793D-44DA-BBC9-B22F6591159D",
4515 "muted" : false,
4516 "newShot" : false,
4517 "speed" : 1,
4518 "srcIn" : 1278.2372881355936,
4519 "start" : 351.35593220338984,
4520 "track" : "v0"
4521 },
4522 {
4523 "duration" : 4.711864406779625,
4524 "fadeIn" : 0,
4525 "fadeOut" : 0,
4526 "id" : "43D45A86-49A1-449A-9E77-900F5D0ACC61",
4527 "kind" : "audio",
4528 "linkId" : "CD0169DB-72F4-4E7A-B27D-1D1C0A2437D9",
4529 "mediaId" : "55C13A17-0423-4BC0-93A6-3FEFD02E7FC6",
4530 "muted" : true,
4531 "newShot" : false,
4532 "speed" : 1,
4533 "srcIn" : 1278.1534165942526,
4534 "start" : 351.35593220338984,
4535 "track" : "v1"
4536 },
4537 {
4538 "duration" : 4.711864406779625,
4539 "fadeIn" : 0,
4540 "fadeOut" : 0,
4541 "id" : "9B4179AA-3FE3-4B93-B578-86F7BDFBAC59",
4542 "kind" : "audio",
4543 "linkId" : "CD0169DB-72F4-4E7A-B27D-1D1C0A2437D9",
4544 "mediaId" : "501034F8-09AC-44B1-8826-FCE9B36C68F9",
4545 "muted" : false,
4546 "newShot" : false,
4547 "speed" : 1,
4548 "srcIn" : 1278.2000928974835,
4549 "start" : 351.35593220338984,
4550 "track" : "v2"
4551 },
4552 {
4553 "duration" : 4.711864406779625,
4554 "fadeIn" : 0,
4555 "fadeOut" : 0,
4556 "id" : "84160650-3975-445E-9CCE-FE9A4B354DE4",
4557 "kind" : "video",
4558 "linkId" : "CD0169DB-72F4-4E7A-B27D-1D1C0A2437D9",
4559 "mediaId" : "D866E8BE-A5B1-4B51-B465-D3F753701CCE",
4560 "muted" : false,
4561 "newShot" : false,
4562 "speed" : 1,
4563 "srcIn" : 1278.0634857612554,
4564 "start" : 351.35593220338984,
4565 "track" : "v3"
4566 },
4567 {
4568 "duration" : 4.711864406779625,
4569 "fadeIn" : 0,
4570 "fadeOut" : 0,
4571 "id" : "EEE0A850-F637-47A2-A351-78A5E35E2E71",
4572 "kind" : "video",
4573 "linkId" : "CD0169DB-72F4-4E7A-B27D-1D1C0A2437D9",
4574 "mediaId" : "92E85F7F-CA8B-473D-82F6-C7A7418875B1",
4575 "muted" : false,
4576 "newShot" : false,
4577 "speed" : 1,
4578 "srcIn" : 1278.0634811772566,
4579 "start" : 351.35593220338984,
4580 "track" : "v4"
4581 },
4582 {
4583 "duration" : 12.27118644067798,
4584 "fadeIn" : 0,
4585 "fadeOut" : 0,
4586 "id" : "40E92BD1-0CD5-4846-B649-57DEE758C62A",
4587 "kind" : "video",
4588 "linkId" : "7D4C2DFB-52DA-48A5-B7A5-8C50DE99C254",
4589 "mediaId" : "40BBB768-793D-44DA-BBC9-B22F6591159D",
4590 "muted" : false,
4591 "newShot" : false,
4592 "speed" : 1,
4593 "srcIn" : 1283.4237288135596,
4594 "start" : 356.06779661016947,
4595 "track" : "v0"
4596 },
4597 {
4598 "duration" : 12.27118644067798,
4599 "fadeIn" : 0,
4600 "fadeOut" : 0,
4601 "id" : "A9E11104-5BA1-47B5-A29B-0DB9D895655D",
4602 "kind" : "audio",
4603 "linkId" : "7D4C2DFB-52DA-48A5-B7A5-8C50DE99C254",
4604 "mediaId" : "55C13A17-0423-4BC0-93A6-3FEFD02E7FC6",
4605 "muted" : true,
4606 "newShot" : false,
4607 "speed" : 1,
4608 "srcIn" : 1283.3398572722185,
4609 "start" : 356.06779661016947,
4610 "track" : "v1"
4611 },
4612 {
4613 "duration" : 12.27118644067798,
4614 "fadeIn" : 0,
4615 "fadeOut" : 0,
4616 "id" : "EB6EE9AD-7386-4D10-BFBF-E253B17F3431",
4617 "kind" : "audio",
4618 "linkId" : "7D4C2DFB-52DA-48A5-B7A5-8C50DE99C254",
4619 "mediaId" : "501034F8-09AC-44B1-8826-FCE9B36C68F9",
4620 "muted" : false,
4621 "newShot" : false,
4622 "speed" : 1,
4623 "srcIn" : 1283.3865335754494,
4624 "start" : 356.06779661016947,
4625 "track" : "v2"
4626 },
4627 {
4628 "duration" : 12.27118644067798,
4629 "fadeIn" : 0,
4630 "fadeOut" : 0,
4631 "id" : "438EA227-D2C5-4532-9A3A-252007721608",
4632 "kind" : "video",
4633 "linkId" : "7D4C2DFB-52DA-48A5-B7A5-8C50DE99C254",
4634 "mediaId" : "D866E8BE-A5B1-4B51-B465-D3F753701CCE",
4635 "muted" : false,
4636 "newShot" : false,
4637 "speed" : 1,
4638 "srcIn" : 1283.2499264392213,
4639 "start" : 356.06779661016947,
4640 "track" : "v3"
4641 },
4642 {
4643 "duration" : 12.27118644067798,
4644 "fadeIn" : 0,
4645 "fadeOut" : 0,
4646 "id" : "E7E7A787-8710-4FC3-8D04-8FB4A9808A63",
4647 "kind" : "video",
4648 "linkId" : "7D4C2DFB-52DA-48A5-B7A5-8C50DE99C254",
4649 "mediaId" : "92E85F7F-CA8B-473D-82F6-C7A7418875B1",
4650 "muted" : false,
4651 "newShot" : false,
4652 "speed" : 1,
4653 "srcIn" : 1283.2499218552225,
4654 "start" : 356.06779661016947,
4655 "track" : "v4"
4656 },
4657 {
4658 "duration" : 3.0508474576271283,
4659 "fadeIn" : 0,
4660 "fadeOut" : 0,
4661 "id" : "65671782-CE0B-49E2-AF2D-C5D2D41FFA24",
4662 "kind" : "video",
4663 "linkId" : "D50E12ED-A0DF-4078-95DE-6D5332CDFB62",
4664 "mediaId" : "40BBB768-793D-44DA-BBC9-B22F6591159D",
4665 "muted" : false,
4666 "newShot" : false,
4667 "speed" : 1,
4668 "srcIn" : 1304.271186440678,
4669 "start" : 368.33898305084745,
4670 "track" : "v0"
4671 },
4672 {
4673 "duration" : 3.0508474576271283,
4674 "fadeIn" : 0,
4675 "fadeOut" : 0,
4676 "id" : "B250A8E7-5DB5-463B-BC7E-2A985C554A48",
4677 "kind" : "audio",
4678 "linkId" : "D50E12ED-A0DF-4078-95DE-6D5332CDFB62",
4679 "mediaId" : "55C13A17-0423-4BC0-93A6-3FEFD02E7FC6",
4680 "muted" : true,
4681 "newShot" : false,
4682 "speed" : 1,
4683 "srcIn" : 1304.187314899337,
4684 "start" : 368.33898305084745,
4685 "track" : "v1"
4686 },
4687 {
4688 "duration" : 3.0508474576271283,
4689 "fadeIn" : 0,
4690 "fadeOut" : 0,
4691 "id" : "538F899C-5E20-49EC-8416-74178778FE07",
4692 "kind" : "audio",
4693 "linkId" : "D50E12ED-A0DF-4078-95DE-6D5332CDFB62",
4694 "mediaId" : "501034F8-09AC-44B1-8826-FCE9B36C68F9",
4695 "muted" : false,
4696 "newShot" : false,
4697 "speed" : 1,
4698 "srcIn" : 1304.233991202568,
4699 "start" : 368.33898305084745,
4700 "track" : "v2"
4701 },
4702 {
4703 "duration" : 3.0508474576271283,
4704 "fadeIn" : 0,
4705 "fadeOut" : 0,
4706 "id" : "AB06969E-2217-4DDA-B6A6-0537DB89EDD0",
4707 "kind" : "video",
4708 "linkId" : "D50E12ED-A0DF-4078-95DE-6D5332CDFB62",
4709 "mediaId" : "D866E8BE-A5B1-4B51-B465-D3F753701CCE",
4710 "muted" : false,
4711 "newShot" : false,
4712 "speed" : 1,
4713 "srcIn" : 1304.0973840663398,
4714 "start" : 368.33898305084745,
4715 "track" : "v3"
4716 },
4717 {
4718 "duration" : 3.0508474576271283,
4719 "fadeIn" : 0,
4720 "fadeOut" : 0,
4721 "id" : "84921634-8C3A-4FDC-9737-68D94154D037",
4722 "kind" : "video",
4723 "linkId" : "D50E12ED-A0DF-4078-95DE-6D5332CDFB62",
4724 "mediaId" : "92E85F7F-CA8B-473D-82F6-C7A7418875B1",
4725 "muted" : false,
4726 "newShot" : false,
4727 "speed" : 1,
4728 "srcIn" : 1304.097379482341,
4729 "start" : 368.33898305084745,
4730 "track" : "v4"
4731 },
4732 {
4733 "duration" : 6.610169491525426,
4734 "fadeIn" : 0,
4735 "fadeOut" : 0,
4736 "id" : "B2E2127E-A4B7-4682-BC09-FE4FBF53EC66",
4737 "kind" : "video",
4738 "linkId" : "4A3BE2AA-0118-46FB-9311-40602A8063DF",
4739 "mediaId" : "40BBB768-793D-44DA-BBC9-B22F6591159D",
4740 "muted" : false,
4741 "newShot" : false,
4742 "speed" : 1,
4743 "srcIn" : 1309.6610169491526,
4744 "start" : 371.3898305084746,
4745 "track" : "v0"
4746 },
4747 {
4748 "duration" : 6.610169491525426,
4749 "fadeIn" : 0,
4750 "fadeOut" : 0,
4751 "id" : "A2F9926B-983E-4F53-99C7-92BB9B023122",
4752 "kind" : "audio",
4753 "linkId" : "4A3BE2AA-0118-46FB-9311-40602A8063DF",
4754 "mediaId" : "55C13A17-0423-4BC0-93A6-3FEFD02E7FC6",
4755 "muted" : true,
4756 "newShot" : false,
4757 "speed" : 1,
4758 "srcIn" : 1309.5771454078115,
4759 "start" : 371.3898305084746,
4760 "track" : "v1"
4761 },
4762 {
4763 "duration" : 6.610169491525426,
4764 "fadeIn" : 0,
4765 "fadeOut" : 0,
4766 "id" : "D13D2198-79F9-4915-A5E0-AC690ADBC371",
4767 "kind" : "audio",
4768 "linkId" : "4A3BE2AA-0118-46FB-9311-40602A8063DF",
4769 "mediaId" : "501034F8-09AC-44B1-8826-FCE9B36C68F9",
4770 "muted" : false,
4771 "newShot" : false,
4772 "speed" : 1,
4773 "srcIn" : 1309.6238217110424,
4774 "start" : 371.3898305084746,
4775 "track" : "v2"
4776 },
4777 {
4778 "duration" : 6.610169491525426,
4779 "fadeIn" : 0,
4780 "fadeOut" : 0,
4781 "id" : "53651C3A-4919-49F0-ADED-34CDF520F07E",
4782 "kind" : "video",
4783 "linkId" : "4A3BE2AA-0118-46FB-9311-40602A8063DF",
4784 "mediaId" : "D866E8BE-A5B1-4B51-B465-D3F753701CCE",
4785 "muted" : false,
4786 "newShot" : false,
4787 "speed" : 1,
4788 "srcIn" : 1309.4872145748143,
4789 "start" : 371.3898305084746,
4790 "track" : "v3"
4791 },
4792 {
4793 "duration" : 6.610169491525426,
4794 "fadeIn" : 0,
4795 "fadeOut" : 0,
4796 "id" : "00F70279-9C4E-40AB-8D35-B686234D9CD2",
4797 "kind" : "video",
4798 "linkId" : "4A3BE2AA-0118-46FB-9311-40602A8063DF",
4799 "mediaId" : "92E85F7F-CA8B-473D-82F6-C7A7418875B1",
4800 "muted" : false,
4801 "newShot" : false,
4802 "speed" : 1,
4803 "srcIn" : 1309.4872099908155,
4804 "start" : 371.3898305084746,
4805 "track" : "v4"
4806 },
4807 {
4808 "duration" : 6.372881355932179,
4809 "fadeIn" : 0,
4810 "fadeOut" : 0,
4811 "id" : "3EB22ECC-5EAD-4107-9F24-6864C9464EAC",
4812 "kind" : "video",
4813 "linkId" : "346B7025-BD91-4339-98B4-DBE997BC1A27",
4814 "mediaId" : "40BBB768-793D-44DA-BBC9-B22F6591159D",
4815 "muted" : false,
4816 "newShot" : false,
4817 "speed" : 1,
4818 "srcIn" : 1319.1186440677966,
4819 "start" : 378,
4820 "track" : "v0"
4821 },
4822 {
4823 "duration" : 6.372881355932179,
4824 "fadeIn" : 0,
4825 "fadeOut" : 0,
4826 "id" : "2B2021EE-7138-45C6-A0CF-0D8BBAC1116A",
4827 "kind" : "audio",
4828 "linkId" : "346B7025-BD91-4339-98B4-DBE997BC1A27",
4829 "mediaId" : "55C13A17-0423-4BC0-93A6-3FEFD02E7FC6",
4830 "muted" : true,
4831 "newShot" : false,
4832 "speed" : 1,
4833 "srcIn" : 1319.0347725264555,
4834 "start" : 378,
4835 "track" : "v1"
4836 },
4837 {
4838 "duration" : 6.372881355932179,
4839 "fadeIn" : 0,
4840 "fadeOut" : 0,
4841 "id" : "4A8A3D03-F2FB-4651-A609-318676737F28",
4842 "kind" : "audio",
4843 "linkId" : "346B7025-BD91-4339-98B4-DBE997BC1A27",
4844 "mediaId" : "501034F8-09AC-44B1-8826-FCE9B36C68F9",
4845 "muted" : false,
4846 "newShot" : false,
4847 "speed" : 1,
4848 "srcIn" : 1319.0814488296865,
4849 "start" : 378,
4850 "track" : "v2"
4851 },
4852 {
4853 "duration" : 6.372881355932179,
4854 "fadeIn" : 0,
4855 "fadeOut" : 0,
4856 "id" : "196CB0CE-61ED-4852-A694-AB8B592CF510",
4857 "kind" : "video",
4858 "linkId" : "346B7025-BD91-4339-98B4-DBE997BC1A27",
4859 "mediaId" : "D866E8BE-A5B1-4B51-B465-D3F753701CCE",
4860 "muted" : false,
4861 "newShot" : false,
4862 "speed" : 1,
4863 "srcIn" : 1318.9448416934583,
4864 "start" : 378,
4865 "track" : "v3"
4866 },
4867 {
4868 "duration" : 6.372881355932179,
4869 "fadeIn" : 0,
4870 "fadeOut" : 0,
4871 "id" : "AB9E730D-3DB3-430E-92B1-8528951D9146",
4872 "kind" : "video",
4873 "linkId" : "346B7025-BD91-4339-98B4-DBE997BC1A27",
4874 "mediaId" : "92E85F7F-CA8B-473D-82F6-C7A7418875B1",
4875 "muted" : false,
4876 "newShot" : false,
4877 "speed" : 1,
4878 "srcIn" : 1318.9448371094595,
4879 "start" : 378,
4880 "track" : "v4"
4881 },
4882 {
4883 "duration" : 10.983050847457662,
4884 "fadeIn" : 0,
4885 "fadeOut" : 0,
4886 "id" : "59AB16D3-EBCD-438B-8B8C-88413E1E8D67",
4887 "kind" : "video",
4888 "linkId" : "8A7CFF6A-2FE9-4C3F-813E-9DDC903D1C26",
4889 "mediaId" : "40BBB768-793D-44DA-BBC9-B22F6591159D",
4890 "muted" : false,
4891 "newShot" : false,
4892 "speed" : 1,
4893 "srcIn" : 1327.1186440677966,
4894 "start" : 384.3728813559322,
4895 "track" : "v0"
4896 },
4897 {
4898 "duration" : 10.983050847457662,
4899 "fadeIn" : 0,
4900 "fadeOut" : 0,
4901 "id" : "77501D06-4929-403D-8FCB-6E79E9A296A4",
4902 "kind" : "audio",
4903 "linkId" : "8A7CFF6A-2FE9-4C3F-813E-9DDC903D1C26",
4904 "mediaId" : "55C13A17-0423-4BC0-93A6-3FEFD02E7FC6",
4905 "muted" : true,
4906 "newShot" : false,
4907 "speed" : 1,
4908 "srcIn" : 1327.0347725264555,
4909 "start" : 384.3728813559322,
4910 "track" : "v1"
4911 },
4912 {
4913 "duration" : 10.983050847457662,
4914 "fadeIn" : 0,
4915 "fadeOut" : 0,
4916 "id" : "A8B5D5C7-311F-4D71-BD19-7B1BAC7B047E",
4917 "kind" : "audio",
4918 "linkId" : "8A7CFF6A-2FE9-4C3F-813E-9DDC903D1C26",
4919 "mediaId" : "501034F8-09AC-44B1-8826-FCE9B36C68F9",
4920 "muted" : false,
4921 "newShot" : false,
4922 "speed" : 1,
4923 "srcIn" : 1327.0814488296865,
4924 "start" : 384.3728813559322,
4925 "track" : "v2"
4926 },
4927 {
4928 "duration" : 10.983050847457662,
4929 "fadeIn" : 0,
4930 "fadeOut" : 0,
4931 "id" : "F9DB0D5E-9113-4D5E-81AB-EAE9AF22C7FE",
4932 "kind" : "video",
4933 "linkId" : "8A7CFF6A-2FE9-4C3F-813E-9DDC903D1C26",
4934 "mediaId" : "D866E8BE-A5B1-4B51-B465-D3F753701CCE",
4935 "muted" : false,
4936 "newShot" : false,
4937 "speed" : 1,
4938 "srcIn" : 1326.9448416934583,
4939 "start" : 384.3728813559322,
4940 "track" : "v3"
4941 },
4942 {
4943 "duration" : 10.983050847457662,
4944 "fadeIn" : 0,
4945 "fadeOut" : 0,
4946 "id" : "D4A49349-31F4-41F7-91B5-682C810269F4",
4947 "kind" : "video",
4948 "linkId" : "8A7CFF6A-2FE9-4C3F-813E-9DDC903D1C26",
4949 "mediaId" : "92E85F7F-CA8B-473D-82F6-C7A7418875B1",
4950 "muted" : false,
4951 "newShot" : false,
4952 "speed" : 1,
4953 "srcIn" : 1326.9448371094595,
4954 "start" : 384.3728813559322,
4955 "track" : "v4"
4956 },
4957 {
4958 "duration" : 14.169491525423723,
4959 "fadeIn" : 0,
4960 "fadeOut" : 0,
4961 "id" : "3BEF9E6B-7901-407C-BEA3-7AFAB2A27DF5",
4962 "kind" : "video",
4963 "linkId" : "704CF8B0-3041-4053-9080-715DFE6B2D25",
4964 "mediaId" : "40BBB768-793D-44DA-BBC9-B22F6591159D",
4965 "muted" : false,
4966 "newShot" : false,
4967 "speed" : 1,
4968 "srcIn" : 1389.0169491525423,
4969 "start" : 395.35593220338984,
4970 "track" : "v0"
4971 },
4972 {
4973 "duration" : 14.169491525423723,
4974 "fadeIn" : 0,
4975 "fadeOut" : 0,
4976 "id" : "BC1D4D97-B973-4693-9B24-5823A5192FAA",
4977 "kind" : "audio",
4978 "linkId" : "704CF8B0-3041-4053-9080-715DFE6B2D25",
4979 "mediaId" : "55C13A17-0423-4BC0-93A6-3FEFD02E7FC6",
4980 "muted" : true,
4981 "newShot" : false,
4982 "speed" : 1,
4983 "srcIn" : 1388.9330776112013,
4984 "start" : 395.35593220338984,
4985 "track" : "v1"
4986 },
4987 {
4988 "duration" : 14.169491525423723,
4989 "fadeIn" : 0,
4990 "fadeOut" : 0,
4991 "id" : "DBBCAF21-55F8-44F0-9F8A-4EA556B8EB57",
4992 "kind" : "audio",
4993 "linkId" : "704CF8B0-3041-4053-9080-715DFE6B2D25",
4994 "mediaId" : "501034F8-09AC-44B1-8826-FCE9B36C68F9",
4995 "muted" : false,
4996 "newShot" : false,
4997 "speed" : 1,
4998 "srcIn" : 1388.9797539144322,
4999 "start" : 395.35593220338984,
5000 "track" : "v2"
5001 },
5002 {
5003 "duration" : 14.169491525423723,
5004 "fadeIn" : 0,
5005 "fadeOut" : 0,
5006 "id" : "6C7A0EB2-88FC-4404-B48D-AA7FE6269170",
5007 "kind" : "video",
5008 "linkId" : "704CF8B0-3041-4053-9080-715DFE6B2D25",
5009 "mediaId" : "D866E8BE-A5B1-4B51-B465-D3F753701CCE",
5010 "muted" : false,
5011 "newShot" : false,
5012 "speed" : 1,
5013 "srcIn" : 1388.843146778204,
5014 "start" : 395.35593220338984,
5015 "track" : "v3"
5016 },
5017 {
5018 "duration" : 14.169491525423723,
5019 "fadeIn" : 0,
5020 "fadeOut" : 0,
5021 "id" : "50068A9B-E7CF-4DD9-9917-7155FEEE9EA2",
5022 "kind" : "video",
5023 "linkId" : "704CF8B0-3041-4053-9080-715DFE6B2D25",
5024 "mediaId" : "92E85F7F-CA8B-473D-82F6-C7A7418875B1",
5025 "muted" : false,
5026 "newShot" : false,
5027 "speed" : 1,
5028 "srcIn" : 1388.8431421942053,
5029 "start" : 395.35593220338984,
5030 "track" : "v4"
5031 },
5032 {
5033 "duration" : 12.610169491525426,
5034 "fadeIn" : 0,
5035 "fadeOut" : 0,
5036 "id" : "EA7CF47C-E4D3-437C-B0E5-4275167856C5",
5037 "kind" : "video",
5038 "linkId" : "5E30C5A7-ECB1-41A5-9456-2F737C45E0C1",
5039 "mediaId" : "40BBB768-793D-44DA-BBC9-B22F6591159D",
5040 "muted" : false,
5041 "newShot" : false,
5042 "speed" : 1,
5043 "srcIn" : 1406.5762711864404,
5044 "start" : 409.52542372881356,
5045 "track" : "v0"
5046 },
5047 {
5048 "duration" : 12.610169491525426,
5049 "fadeIn" : 0,
5050 "fadeOut" : 0,
5051 "id" : "1E9A4B81-6D6C-4CEF-BCD9-A56D14BC12E5",
5052 "kind" : "audio",
5053 "linkId" : "5E30C5A7-ECB1-41A5-9456-2F737C45E0C1",
5054 "mediaId" : "55C13A17-0423-4BC0-93A6-3FEFD02E7FC6",
5055 "muted" : true,
5056 "newShot" : false,
5057 "speed" : 1,
5058 "srcIn" : 1406.4923996450993,
5059 "start" : 409.52542372881356,
5060 "track" : "v1"
5061 },
5062 {
5063 "duration" : 12.610169491525426,
5064 "fadeIn" : 0,
5065 "fadeOut" : 0,
5066 "id" : "1506A648-D35B-4619-A082-06FF4E3CBA5B",
5067 "kind" : "audio",
5068 "linkId" : "5E30C5A7-ECB1-41A5-9456-2F737C45E0C1",
5069 "mediaId" : "501034F8-09AC-44B1-8826-FCE9B36C68F9",
5070 "muted" : false,
5071 "newShot" : false,
5072 "speed" : 1,
5073 "srcIn" : 1406.5390759483303,
5074 "start" : 409.52542372881356,
5075 "track" : "v2"
5076 },
5077 {
5078 "duration" : 12.610169491525426,
5079 "fadeIn" : 0,
5080 "fadeOut" : 0,
5081 "id" : "9D08D70B-5627-48C7-873D-A8153FA5DA0E",
5082 "kind" : "video",
5083 "linkId" : "5E30C5A7-ECB1-41A5-9456-2F737C45E0C1",
5084 "mediaId" : "D866E8BE-A5B1-4B51-B465-D3F753701CCE",
5085 "muted" : false,
5086 "newShot" : false,
5087 "speed" : 1,
5088 "srcIn" : 1406.4024688121021,
5089 "start" : 409.52542372881356,
5090 "track" : "v3"
5091 },
5092 {
5093 "duration" : 12.610169491525426,
5094 "fadeIn" : 0,
5095 "fadeOut" : 0,
5096 "id" : "A6181FAE-7AFB-4D19-B593-91540501DC66",
5097 "kind" : "video",
5098 "linkId" : "5E30C5A7-ECB1-41A5-9456-2F737C45E0C1",
5099 "mediaId" : "92E85F7F-CA8B-473D-82F6-C7A7418875B1",
5100 "muted" : false,
5101 "newShot" : false,
5102 "speed" : 1,
5103 "srcIn" : 1406.4024642281033,
5104 "start" : 409.52542372881356,
5105 "track" : "v4"
5106 },
5107 {
5108 "duration" : 12.13559322033899,
5109 "fadeIn" : 0,
5110 "fadeOut" : 0,
5111 "id" : "4E3F3515-7F7B-447C-BC9F-E4220A2BA2A2",
5112 "kind" : "video",
5113 "linkId" : "226C31FD-B8DF-4F4A-A67B-DCB285B8B836",
5114 "mediaId" : "40BBB768-793D-44DA-BBC9-B22F6591159D",
5115 "muted" : false,
5116 "newShot" : false,
5117 "speed" : 1,
5118 "srcIn" : 1434.1694915254236,
5119 "start" : 428.271186440678,
5120 "track" : "v0"
5121 },
5122 {
5123 "duration" : 12.13559322033899,
5124 "fadeIn" : 0,
5125 "fadeOut" : 0,
5126 "id" : "635A9B0E-7D5C-4F08-BEB1-0D43CEB95071",
5127 "kind" : "audio",
5128 "linkId" : "226C31FD-B8DF-4F4A-A67B-DCB285B8B836",
5129 "mediaId" : "55C13A17-0423-4BC0-93A6-3FEFD02E7FC6",
5130 "muted" : true,
5131 "newShot" : false,
5132 "speed" : 1,
5133 "srcIn" : 1434.0856199840825,
5134 "start" : 428.271186440678,
5135 "track" : "v1"
5136 },
5137 {
5138 "duration" : 12.13559322033899,
5139 "fadeIn" : 0,
5140 "fadeOut" : 0,
5141 "id" : "B26C43CA-9142-4FF8-8DE6-5FB3CF02701F",
5142 "kind" : "audio",
5143 "linkId" : "226C31FD-B8DF-4F4A-A67B-DCB285B8B836",
5144 "mediaId" : "501034F8-09AC-44B1-8826-FCE9B36C68F9",
5145 "muted" : false,
5146 "newShot" : false,
5147 "speed" : 1,
5148 "srcIn" : 1434.1322962873135,
5149 "start" : 428.271186440678,
5150 "track" : "v2"
5151 },
5152 {
5153 "duration" : 12.13559322033899,
5154 "fadeIn" : 0,
5155 "fadeOut" : 0,
5156 "id" : "1D681666-828B-4516-905F-70C0B9927714",
5157 "kind" : "video",
5158 "linkId" : "226C31FD-B8DF-4F4A-A67B-DCB285B8B836",
5159 "mediaId" : "D866E8BE-A5B1-4B51-B465-D3F753701CCE",
5160 "muted" : false,
5161 "newShot" : false,
5162 "speed" : 1,
5163 "srcIn" : 1433.9956891510853,
5164 "start" : 428.271186440678,
5165 "track" : "v3"
5166 },
5167 {
5168 "duration" : 12.13559322033899,
5169 "fadeIn" : 0,
5170 "fadeOut" : 0,
5171 "id" : "14FFF5E0-4F74-4347-AEC2-714B77823B90",
5172 "kind" : "video",
5173 "linkId" : "226C31FD-B8DF-4F4A-A67B-DCB285B8B836",
5174 "mediaId" : "92E85F7F-CA8B-473D-82F6-C7A7418875B1",
5175 "muted" : false,
5176 "newShot" : false,
5177 "speed" : 1,
5178 "srcIn" : 1433.9956845670865,
5179 "start" : 428.271186440678,
5180 "track" : "v4"
5181 },
5182 {
5183 "duration" : 6.13559322033899,
5184 "fadeIn" : 0,
5185 "fadeOut" : 0,
5186 "id" : "651982BC-F62C-433E-9CA6-7F53FDD18AD2",
5187 "kind" : "video",
5188 "linkId" : "985611EC-FA7E-4535-BFEC-AECD319001B6",
5189 "mediaId" : "40BBB768-793D-44DA-BBC9-B22F6591159D",
5190 "muted" : false,
5191 "newShot" : false,
5192 "speed" : 1,
5193 "srcIn" : 1428.0338983050847,
5194 "start" : 422.135593220339,
5195 "track" : "v0"
5196 },
5197 {
5198 "duration" : 6.13559322033899,
5199 "fadeIn" : 0,
5200 "fadeOut" : 0,
5201 "id" : "011DD52B-7DF9-4AB2-9143-9249F293A98C",
5202 "kind" : "audio",
5203 "linkId" : "985611EC-FA7E-4535-BFEC-AECD319001B6",
5204 "mediaId" : "55C13A17-0423-4BC0-93A6-3FEFD02E7FC6",
5205 "muted" : true,
5206 "newShot" : false,
5207 "speed" : 1,
5208 "srcIn" : 1427.9500267637436,
5209 "start" : 422.135593220339,
5210 "track" : "v1"
5211 },
5212 {
5213 "duration" : 6.13559322033899,
5214 "fadeIn" : 0,
5215 "fadeOut" : 0,
5216 "id" : "9C6C77CE-A577-41A8-AF62-5B1AD22511CB",
5217 "kind" : "audio",
5218 "linkId" : "985611EC-FA7E-4535-BFEC-AECD319001B6",
5219 "mediaId" : "501034F8-09AC-44B1-8826-FCE9B36C68F9",
5220 "muted" : false,
5221 "newShot" : false,
5222 "speed" : 1,
5223 "srcIn" : 1427.9967030669745,
5224 "start" : 422.135593220339,
5225 "track" : "v2"
5226 },
5227 {
5228 "duration" : 6.13559322033899,
5229 "fadeIn" : 0,
5230 "fadeOut" : 0,
5231 "id" : "81445B0A-E2DC-4623-B61E-F78297F1AF9B",
5232 "kind" : "video",
5233 "linkId" : "985611EC-FA7E-4535-BFEC-AECD319001B6",
5234 "mediaId" : "D866E8BE-A5B1-4B51-B465-D3F753701CCE",
5235 "muted" : false,
5236 "newShot" : false,
5237 "speed" : 1,
5238 "srcIn" : 1427.8600959307464,
5239 "start" : 422.135593220339,
5240 "track" : "v3"
5241 },
5242 {
5243 "duration" : 6.13559322033899,
5244 "fadeIn" : 0,
5245 "fadeOut" : 0,
5246 "id" : "2FCF79AA-A233-43B0-924A-F22316673337",
5247 "kind" : "video",
5248 "linkId" : "985611EC-FA7E-4535-BFEC-AECD319001B6",
5249 "mediaId" : "92E85F7F-CA8B-473D-82F6-C7A7418875B1",
5250 "muted" : false,
5251 "newShot" : false,
5252 "speed" : 1,
5253 "srcIn" : 1427.8600913467476,
5254 "start" : 422.135593220339,
5255 "track" : "v4"
5256 },
5257 {
5258 "duration" : 9.45762711864404,
5259 "fadeIn" : 0,
5260 "fadeOut" : 0,
5261 "id" : "3226AEDC-71C8-4045-95AB-2938C4E153FF",
5262 "kind" : "video",
5263 "linkId" : "ABBC461D-6EED-494A-8B1A-7677A2E7D027",
5264 "mediaId" : "40BBB768-793D-44DA-BBC9-B22F6591159D",
5265 "muted" : false,
5266 "newShot" : false,
5267 "speed" : 1,
5268 "srcIn" : 1449.559322033898,
5269 "start" : 440.40677966101697,
5270 "track" : "v0"
5271 },
5272 {
5273 "duration" : 9.45762711864404,
5274 "fadeIn" : 0,
5275 "fadeOut" : 0,
5276 "id" : "FAF956D0-C01F-4926-93F2-49FA34A04E13",
5277 "kind" : "audio",
5278 "linkId" : "ABBC461D-6EED-494A-8B1A-7677A2E7D027",
5279 "mediaId" : "55C13A17-0423-4BC0-93A6-3FEFD02E7FC6",
5280 "muted" : true,
5281 "newShot" : false,
5282 "speed" : 1,
5283 "srcIn" : 1449.475450492557,
5284 "start" : 440.40677966101697,
5285 "track" : "v1"
5286 },
5287 {
5288 "duration" : 9.45762711864404,
5289 "fadeIn" : 0,
5290 "fadeOut" : 0,
5291 "id" : "3EB9B48B-CACE-4489-BAFE-59EB0F2E6305",
5292 "kind" : "audio",
5293 "linkId" : "ABBC461D-6EED-494A-8B1A-7677A2E7D027",
5294 "mediaId" : "501034F8-09AC-44B1-8826-FCE9B36C68F9",
5295 "muted" : false,
5296 "newShot" : false,
5297 "speed" : 1,
5298 "srcIn" : 1449.522126795788,
5299 "start" : 440.40677966101697,
5300 "track" : "v2"
5301 },
5302 {
5303 "duration" : 9.45762711864404,
5304 "fadeIn" : 0,
5305 "fadeOut" : 0,
5306 "id" : "4406B9FA-D633-49BC-BB25-FA2554A8FA6A",
5307 "kind" : "video",
5308 "linkId" : "ABBC461D-6EED-494A-8B1A-7677A2E7D027",
5309 "mediaId" : "D866E8BE-A5B1-4B51-B465-D3F753701CCE",
5310 "muted" : false,
5311 "newShot" : false,
5312 "speed" : 1,
5313 "srcIn" : 1449.3855196595598,
5314 "start" : 440.40677966101697,
5315 "track" : "v3"
5316 },
5317 {
5318 "duration" : 9.45762711864404,
5319 "fadeIn" : 0,
5320 "fadeOut" : 0,
5321 "id" : "99E4D7B0-8E74-4871-B79C-5EE9AE03E424",
5322 "kind" : "video",
5323 "linkId" : "ABBC461D-6EED-494A-8B1A-7677A2E7D027",
5324 "mediaId" : "92E85F7F-CA8B-473D-82F6-C7A7418875B1",
5325 "muted" : false,
5326 "newShot" : false,
5327 "speed" : 1,
5328 "srcIn" : 1449.385515075561,
5329 "start" : 440.40677966101697,
5330 "track" : "v4"
5331 },
5332 {
5333 "duration" : 6.677966101694949,
5334 "fadeIn" : 0,
5335 "fadeOut" : 0,
5336 "id" : "559361D5-9DB2-4B63-8E39-79DEB5DA658A",
5337 "kind" : "video",
5338 "linkId" : "F4E6AD2E-D33A-4B9D-9CC7-E85C4DF5F3C7",
5339 "mediaId" : "40BBB768-793D-44DA-BBC9-B22F6591159D",
5340 "muted" : false,
5341 "newShot" : false,
5342 "speed" : 1,
5343 "srcIn" : 1462.64406779661,
5344 "start" : 449.864406779661,
5345 "track" : "v0"
5346 },
5347 {
5348 "duration" : 6.677966101694949,
5349 "fadeIn" : 0,
5350 "fadeOut" : 0,
5351 "id" : "37884883-822C-45CA-B6E1-133027A1718A",
5352 "kind" : "audio",
5353 "linkId" : "F4E6AD2E-D33A-4B9D-9CC7-E85C4DF5F3C7",
5354 "mediaId" : "55C13A17-0423-4BC0-93A6-3FEFD02E7FC6",
5355 "muted" : true,
5356 "newShot" : false,
5357 "speed" : 1,
5358 "srcIn" : 1462.560196255269,
5359 "start" : 449.864406779661,
5360 "track" : "v1"
5361 },
5362 {
5363 "duration" : 6.677966101694949,
5364 "fadeIn" : 0,
5365 "fadeOut" : 0,
5366 "id" : "81675B52-F6A6-4C8A-997F-8AF4803A89E7",
5367 "kind" : "audio",
5368 "linkId" : "F4E6AD2E-D33A-4B9D-9CC7-E85C4DF5F3C7",
5369 "mediaId" : "501034F8-09AC-44B1-8826-FCE9B36C68F9",
5370 "muted" : false,
5371 "newShot" : false,
5372 "speed" : 1,
5373 "srcIn" : 1462.6068725584998,
5374 "start" : 449.864406779661,
5375 "track" : "v2"
5376 },
5377 {
5378 "duration" : 6.677966101694949,
5379 "fadeIn" : 0,
5380 "fadeOut" : 0,
5381 "id" : "4787230C-8C29-4CF7-854E-A3AB00759466",
5382 "kind" : "video",
5383 "linkId" : "F4E6AD2E-D33A-4B9D-9CC7-E85C4DF5F3C7",
5384 "mediaId" : "D866E8BE-A5B1-4B51-B465-D3F753701CCE",
5385 "muted" : false,
5386 "newShot" : false,
5387 "speed" : 1,
5388 "srcIn" : 1462.4702654222717,
5389 "start" : 449.864406779661,
5390 "track" : "v3"
5391 },
5392 {
5393 "duration" : 6.677966101694949,
5394 "fadeIn" : 0,
5395 "fadeOut" : 0,
5396 "id" : "CDA54502-AAC3-496A-B251-B43F1F744E11",
5397 "kind" : "video",
5398 "linkId" : "F4E6AD2E-D33A-4B9D-9CC7-E85C4DF5F3C7",
5399 "mediaId" : "92E85F7F-CA8B-473D-82F6-C7A7418875B1",
5400 "muted" : false,
5401 "newShot" : false,
5402 "speed" : 1,
5403 "srcIn" : 1462.470260838273,
5404 "start" : 449.864406779661,
5405 "track" : "v4"
5406 },
5407 {
5408 "duration" : 2.1016949152541997,
5409 "fadeIn" : 0,
5410 "fadeOut" : 0,
5411 "id" : "CEDDFF86-9747-4058-98DC-1EB7A4B1F572",
5412 "kind" : "video",
5413 "linkId" : "EDBE29AE-0AD9-452E-A93A-771CE2BE813D",
5414 "mediaId" : "40BBB768-793D-44DA-BBC9-B22F6591159D",
5415 "muted" : false,
5416 "newShot" : false,
5417 "speed" : 1,
5418 "srcIn" : 1471.6610169491523,
5419 "start" : 456.54237288135596,
5420 "track" : "v0"
5421 },
5422 {
5423 "duration" : 2.1016949152541997,
5424 "fadeIn" : 0,
5425 "fadeOut" : 0,
5426 "id" : "65DBD942-E0B7-428A-B955-F7C74957C7E7",
5427 "kind" : "audio",
5428 "linkId" : "EDBE29AE-0AD9-452E-A93A-771CE2BE813D",
5429 "mediaId" : "55C13A17-0423-4BC0-93A6-3FEFD02E7FC6",
5430 "muted" : true,
5431 "newShot" : false,
5432 "speed" : 1,
5433 "srcIn" : 1471.5771454078113,
5434 "start" : 456.54237288135596,
5435 "track" : "v1"
5436 },
5437 {
5438 "duration" : 2.1016949152541997,
5439 "fadeIn" : 0,
5440 "fadeOut" : 0,
5441 "id" : "F6898171-8F65-41C6-8518-DFF6DBBABC04",
5442 "kind" : "audio",
5443 "linkId" : "EDBE29AE-0AD9-452E-A93A-771CE2BE813D",
5444 "mediaId" : "501034F8-09AC-44B1-8826-FCE9B36C68F9",
5445 "muted" : false,
5446 "newShot" : false,
5447 "speed" : 1,
5448 "srcIn" : 1471.6238217110422,
5449 "start" : 456.54237288135596,
5450 "track" : "v2"
5451 },
5452 {
5453 "duration" : 2.1016949152541997,
5454 "fadeIn" : 0,
5455 "fadeOut" : 0,
5456 "id" : "D865CA10-5853-486F-82AD-02B05EE60EDB",
5457 "kind" : "video",
5458 "linkId" : "EDBE29AE-0AD9-452E-A93A-771CE2BE813D",
5459 "mediaId" : "D866E8BE-A5B1-4B51-B465-D3F753701CCE",
5460 "muted" : false,
5461 "newShot" : false,
5462 "speed" : 1,
5463 "srcIn" : 1471.487214574814,
5464 "start" : 456.54237288135596,
5465 "track" : "v3"
5466 },
5467 {
5468 "duration" : 2.1016949152541997,
5469 "fadeIn" : 0,
5470 "fadeOut" : 0,
5471 "id" : "0616F857-62D2-44F6-A078-21F47E1CD066",
5472 "kind" : "video",
5473 "linkId" : "EDBE29AE-0AD9-452E-A93A-771CE2BE813D",
5474 "mediaId" : "92E85F7F-CA8B-473D-82F6-C7A7418875B1",
5475 "muted" : false,
5476 "newShot" : false,
5477 "speed" : 1,
5478 "srcIn" : 1471.4872099908152,
5479 "start" : 456.54237288135596,
5480 "track" : "v4"
5481 },
5482 {
5483 "duration" : 8.101694915254257,
5484 "fadeIn" : 0,
5485 "fadeOut" : 0,
5486 "id" : "A734B468-A8AC-4E1B-BBFF-00BCD0D78390",
5487 "kind" : "video",
5488 "linkId" : "E9457961-D7DC-4D55-8C56-3E6D232AC821",
5489 "mediaId" : "40BBB768-793D-44DA-BBC9-B22F6591159D",
5490 "muted" : false,
5491 "newShot" : false,
5492 "speed" : 1,
5493 "srcIn" : 1478.3389830508472,
5494 "start" : 458.64406779661016,
5495 "track" : "v0"
5496 },
5497 {
5498 "duration" : 8.101694915254257,
5499 "fadeIn" : 0,
5500 "fadeOut" : 0,
5501 "id" : "0B521685-7B77-48BB-B145-8FC0FC1B8D14",
5502 "kind" : "audio",
5503 "linkId" : "E9457961-D7DC-4D55-8C56-3E6D232AC821",
5504 "mediaId" : "55C13A17-0423-4BC0-93A6-3FEFD02E7FC6",
5505 "muted" : true,
5506 "newShot" : false,
5507 "speed" : 1,
5508 "srcIn" : 1478.2551115095062,
5509 "start" : 458.64406779661016,
5510 "track" : "v1"
5511 },
5512 {
5513 "duration" : 8.101694915254257,
5514 "fadeIn" : 0,
5515 "fadeOut" : 0,
5516 "id" : "B79DCE82-D278-4E64-BF3E-DD1383DE9320",
5517 "kind" : "audio",
5518 "linkId" : "E9457961-D7DC-4D55-8C56-3E6D232AC821",
5519 "mediaId" : "501034F8-09AC-44B1-8826-FCE9B36C68F9",
5520 "muted" : false,
5521 "newShot" : false,
5522 "speed" : 1,
5523 "srcIn" : 1478.301787812737,
5524 "start" : 458.64406779661016,
5525 "track" : "v2"
5526 },
5527 {
5528 "duration" : 8.101694915254257,
5529 "fadeIn" : 0,
5530 "fadeOut" : 0,
5531 "id" : "C1373384-5CBC-48DA-AEEA-B1DC0A1277AB",
5532 "kind" : "video",
5533 "linkId" : "E9457961-D7DC-4D55-8C56-3E6D232AC821",
5534 "mediaId" : "D866E8BE-A5B1-4B51-B465-D3F753701CCE",
5535 "muted" : false,
5536 "newShot" : false,
5537 "speed" : 1,
5538 "srcIn" : 1478.165180676509,
5539 "start" : 458.64406779661016,
5540 "track" : "v3"
5541 },
5542 {
5543 "duration" : 8.101694915254257,
5544 "fadeIn" : 0,
5545 "fadeOut" : 0,
5546 "id" : "8B3DE2A2-8DE0-408E-96C4-669DAE9AD4A9",
5547 "kind" : "video",
5548 "linkId" : "E9457961-D7DC-4D55-8C56-3E6D232AC821",
5549 "mediaId" : "92E85F7F-CA8B-473D-82F6-C7A7418875B1",
5550 "muted" : false,
5551 "newShot" : false,
5552 "speed" : 1,
5553 "srcIn" : 1478.1651760925101,
5554 "start" : 458.64406779661016,
5555 "track" : "v4"
5556 },
5557 {
5558 "duration" : 2.13559322033899,
5559 "fadeIn" : 0,
5560 "fadeOut" : 0,
5561 "id" : "EFA97D54-119E-4829-9D03-E931F198D283",
5562 "kind" : "video",
5563 "linkId" : "8FAC32E3-47A3-49EC-A6FC-51E8FD39E2C8",
5564 "mediaId" : "40BBB768-793D-44DA-BBC9-B22F6591159D",
5565 "muted" : false,
5566 "newShot" : false,
5567 "speed" : 1,
5568 "srcIn" : 1491.2203389830506,
5569 "start" : 466.7457627118644,
5570 "track" : "v0"
5571 },
5572 {
5573 "duration" : 2.13559322033899,
5574 "fadeIn" : 0,
5575 "fadeOut" : 0,
5576 "id" : "D10DB1AB-A596-41C4-99D6-2874E01C4666",
5577 "kind" : "audio",
5578 "linkId" : "8FAC32E3-47A3-49EC-A6FC-51E8FD39E2C8",
5579 "mediaId" : "55C13A17-0423-4BC0-93A6-3FEFD02E7FC6",
5580 "muted" : true,
5581 "newShot" : false,
5582 "speed" : 1,
5583 "srcIn" : 1491.1364674417096,
5584 "start" : 466.7457627118644,
5585 "track" : "v1"
5586 },
5587 {
5588 "duration" : 2.13559322033899,
5589 "fadeIn" : 0,
5590 "fadeOut" : 0,
5591 "id" : "05FD9DBC-666B-4F86-98C5-B006D88468C8",
5592 "kind" : "audio",
5593 "linkId" : "8FAC32E3-47A3-49EC-A6FC-51E8FD39E2C8",
5594 "mediaId" : "501034F8-09AC-44B1-8826-FCE9B36C68F9",
5595 "muted" : false,
5596 "newShot" : false,
5597 "speed" : 1,
5598 "srcIn" : 1491.1831437449405,
5599 "start" : 466.7457627118644,
5600 "track" : "v2"
5601 },
5602 {
5603 "duration" : 2.13559322033899,
5604 "fadeIn" : 0,
5605 "fadeOut" : 0,
5606 "id" : "F8379F4E-716C-4AB7-A712-E90386ACAAF5",
5607 "kind" : "video",
5608 "linkId" : "8FAC32E3-47A3-49EC-A6FC-51E8FD39E2C8",
5609 "mediaId" : "D866E8BE-A5B1-4B51-B465-D3F753701CCE",
5610 "muted" : false,
5611 "newShot" : false,
5612 "speed" : 1,
5613 "srcIn" : 1491.0465366087124,
5614 "start" : 466.7457627118644,
5615 "track" : "v3"
5616 },
5617 {
5618 "duration" : 2.13559322033899,
5619 "fadeIn" : 0,
5620 "fadeOut" : 0,
5621 "id" : "0AE01210-BDC5-4A27-A1D9-447FB98CBD8C",
5622 "kind" : "video",
5623 "linkId" : "8FAC32E3-47A3-49EC-A6FC-51E8FD39E2C8",
5624 "mediaId" : "92E85F7F-CA8B-473D-82F6-C7A7418875B1",
5625 "muted" : false,
5626 "newShot" : false,
5627 "speed" : 1,
5628 "srcIn" : 1491.0465320247135,
5629 "start" : 466.7457627118644,
5630 "track" : "v4"
5631 },
5632 {
5633 "duration" : 12.13559322033899,
5634 "fadeIn" : 0,
5635 "fadeOut" : 0,
5636 "id" : "17C94894-CE9A-414A-99D9-983680DBF3C0",
5637 "kind" : "video",
5638 "linkId" : "BD0AA767-5E48-4364-B00E-41745729A942",
5639 "mediaId" : "40BBB768-793D-44DA-BBC9-B22F6591159D",
5640 "muted" : false,
5641 "newShot" : false,
5642 "speed" : 1,
5643 "srcIn" : 1493.3559322033896,
5644 "start" : 468.8813559322034,
5645 "track" : "v0"
5646 },
5647 {
5648 "duration" : 12.13559322033899,
5649 "fadeIn" : 0,
5650 "fadeOut" : 0,
5651 "id" : "517FEEE5-722F-4AF0-9739-D6C4CBFF13F7",
5652 "kind" : "audio",
5653 "linkId" : "BD0AA767-5E48-4364-B00E-41745729A942",
5654 "mediaId" : "55C13A17-0423-4BC0-93A6-3FEFD02E7FC6",
5655 "muted" : true,
5656 "newShot" : false,
5657 "speed" : 1,
5658 "srcIn" : 1493.2720606620485,
5659 "start" : 468.8813559322034,
5660 "track" : "v1"
5661 },
5662 {
5663 "duration" : 12.13559322033899,
5664 "fadeIn" : 0,
5665 "fadeOut" : 0,
5666 "id" : "66CDAA10-44F3-4B54-AE2E-76150ACC9CD0",
5667 "kind" : "audio",
5668 "linkId" : "BD0AA767-5E48-4364-B00E-41745729A942",
5669 "mediaId" : "501034F8-09AC-44B1-8826-FCE9B36C68F9",
5670 "muted" : false,
5671 "newShot" : false,
5672 "speed" : 1,
5673 "srcIn" : 1493.3187369652794,
5674 "start" : 468.8813559322034,
5675 "track" : "v2"
5676 },
5677 {
5678 "duration" : 12.13559322033899,
5679 "fadeIn" : 0,
5680 "fadeOut" : 0,
5681 "id" : "A6487CCD-4DF5-4DD5-BFE5-2536683FBC19",
5682 "kind" : "video",
5683 "linkId" : "BD0AA767-5E48-4364-B00E-41745729A942",
5684 "mediaId" : "D866E8BE-A5B1-4B51-B465-D3F753701CCE",
5685 "muted" : false,
5686 "newShot" : false,
5687 "speed" : 1,
5688 "srcIn" : 1493.1821298290513,
5689 "start" : 468.8813559322034,
5690 "track" : "v3"
5691 },
5692 {
5693 "duration" : 12.13559322033899,
5694 "fadeIn" : 0,
5695 "fadeOut" : 0,
5696 "id" : "3E4AB4B8-236F-4408-8452-95DFA2ED6598",
5697 "kind" : "video",
5698 "linkId" : "BD0AA767-5E48-4364-B00E-41745729A942",
5699 "mediaId" : "92E85F7F-CA8B-473D-82F6-C7A7418875B1",
5700 "muted" : false,
5701 "newShot" : false,
5702 "speed" : 1,
5703 "srcIn" : 1493.1821252450525,
5704 "start" : 468.8813559322034,
5705 "track" : "v4"
5706 },
5707 {
5708 "duration" : 2.7796610169491487,
5709 "fadeIn" : 0,
5710 "fadeOut" : 0,
5711 "id" : "D2B2B51E-C0F9-43FA-A96C-FF04E0956544",
5712 "kind" : "video",
5713 "linkId" : "F6AD378F-5CCF-4E64-988D-88B2876624B9",
5714 "mediaId" : "40BBB768-793D-44DA-BBC9-B22F6591159D",
5715 "muted" : false,
5716 "newShot" : false,
5717 "speed" : 1,
5718 "srcIn" : 1537.8644067796606,
5719 "start" : 481.0169491525424,
5720 "track" : "v0"
5721 },
5722 {
5723 "duration" : 2.7796610169491487,
5724 "fadeIn" : 0,
5725 "fadeOut" : 0,
5726 "id" : "6F365D36-DA75-4DAC-875E-2799D7405B79",
5727 "kind" : "audio",
5728 "linkId" : "F6AD378F-5CCF-4E64-988D-88B2876624B9",
5729 "mediaId" : "55C13A17-0423-4BC0-93A6-3FEFD02E7FC6",
5730 "muted" : true,
5731 "newShot" : false,
5732 "speed" : 1,
5733 "srcIn" : 1537.7805352383195,
5734 "start" : 481.0169491525424,
5735 "track" : "v1"
5736 },
5737 {
5738 "duration" : 2.7796610169491487,
5739 "fadeIn" : 0,
5740 "fadeOut" : 0,
5741 "id" : "6086A913-26DD-4E7A-8DA8-5B7FF6C55700",
5742 "kind" : "audio",
5743 "linkId" : "F6AD378F-5CCF-4E64-988D-88B2876624B9",
5744 "mediaId" : "501034F8-09AC-44B1-8826-FCE9B36C68F9",
5745 "muted" : false,
5746 "newShot" : false,
5747 "speed" : 1,
5748 "srcIn" : 1537.8272115415505,
5749 "start" : 481.0169491525424,
5750 "track" : "v2"
5751 },
5752 {
5753 "duration" : 2.7796610169491487,
5754 "fadeIn" : 0,
5755 "fadeOut" : 0,
5756 "id" : "2F29A3B0-A10F-4DB4-B9E2-B76DBFA73359",
5757 "kind" : "video",
5758 "linkId" : "F6AD378F-5CCF-4E64-988D-88B2876624B9",
5759 "mediaId" : "D866E8BE-A5B1-4B51-B465-D3F753701CCE",
5760 "muted" : false,
5761 "newShot" : false,
5762 "speed" : 1,
5763 "srcIn" : 1537.6906044053223,
5764 "start" : 481.0169491525424,
5765 "track" : "v3"
5766 },
5767 {
5768 "duration" : 2.7796610169491487,
5769 "fadeIn" : 0,
5770 "fadeOut" : 0,
5771 "id" : "1684BBB7-47B4-4BFA-B8C1-058C3FAC9CED",
5772 "kind" : "video",
5773 "linkId" : "F6AD378F-5CCF-4E64-988D-88B2876624B9",
5774 "mediaId" : "92E85F7F-CA8B-473D-82F6-C7A7418875B1",
5775 "muted" : false,
5776 "newShot" : false,
5777 "speed" : 1,
5778 "srcIn" : 1537.6905998213235,
5779 "start" : 481.0169491525424,
5780 "track" : "v4"
5781 },
5782 {
5783 "duration" : 1.0847457627118615,
5784 "fadeIn" : 0,
5785 "fadeOut" : 0,
5786 "id" : "A7680D68-6BCD-4F79-A28F-858D96D4A6E2",
5787 "kind" : "video",
5788 "linkId" : "A3087F67-EF84-47FF-B3BE-7F42F50669A0",
5789 "mediaId" : "40BBB768-793D-44DA-BBC9-B22F6591159D",
5790 "muted" : false,
5791 "newShot" : false,
5792 "speed" : 1,
5793 "srcIn" : 1540.6440677966098,
5794 "start" : 483.79661016949154,
5795 "track" : "v0"
5796 },
5797 {
5798 "duration" : 1.0847457627118615,
5799 "fadeIn" : 0,
5800 "fadeOut" : 0,
5801 "id" : "3854E595-101A-4295-A1B3-5765E651A0AF",
5802 "kind" : "audio",
5803 "linkId" : "A3087F67-EF84-47FF-B3BE-7F42F50669A0",
5804 "mediaId" : "55C13A17-0423-4BC0-93A6-3FEFD02E7FC6",
5805 "muted" : true,
5806 "newShot" : false,
5807 "speed" : 1,
5808 "srcIn" : 1540.5601962552687,
5809 "start" : 483.79661016949154,
5810 "track" : "v1"
5811 },
5812 {
5813 "duration" : 1.0847457627118615,
5814 "fadeIn" : 0,
5815 "fadeOut" : 0,
5816 "id" : "D256891E-1C5E-4D56-9CA9-3638EDDF53E4",
5817 "kind" : "audio",
5818 "linkId" : "A3087F67-EF84-47FF-B3BE-7F42F50669A0",
5819 "mediaId" : "501034F8-09AC-44B1-8826-FCE9B36C68F9",
5820 "muted" : false,
5821 "newShot" : false,
5822 "speed" : 1,
5823 "srcIn" : 1540.6068725584996,
5824 "start" : 483.79661016949154,
5825 "track" : "v2"
5826 },
5827 {
5828 "duration" : 1.0847457627118615,
5829 "fadeIn" : 0,
5830 "fadeOut" : 0,
5831 "id" : "B12D34EF-C8C7-49A2-8C6F-04B3A3068BC7",
5832 "kind" : "video",
5833 "linkId" : "A3087F67-EF84-47FF-B3BE-7F42F50669A0",
5834 "mediaId" : "D866E8BE-A5B1-4B51-B465-D3F753701CCE",
5835 "muted" : false,
5836 "newShot" : false,
5837 "speed" : 1,
5838 "srcIn" : 1540.4702654222715,
5839 "start" : 483.79661016949154,
5840 "track" : "v3"
5841 },
5842 {
5843 "duration" : 1.0847457627118615,
5844 "fadeIn" : 0,
5845 "fadeOut" : 0,
5846 "id" : "D07A239B-1D03-40C0-82F5-BF4EE984E137",
5847 "kind" : "video",
5848 "linkId" : "A3087F67-EF84-47FF-B3BE-7F42F50669A0",
5849 "mediaId" : "92E85F7F-CA8B-473D-82F6-C7A7418875B1",
5850 "muted" : false,
5851 "newShot" : false,
5852 "speed" : 1,
5853 "srcIn" : 1540.4702608382727,
5854 "start" : 483.79661016949154,
5855 "track" : "v4"
5856 },
5857 {
5858 "duration" : 3.5932203389830306,
5859 "fadeIn" : 0,
5860 "fadeOut" : 0,
5861 "id" : "B7BE7F5F-53C9-40B3-9F12-7DF7A2D9685A",
5862 "kind" : "video",
5863 "linkId" : "F9AD2997-81A6-4EF6-BD27-5B43EE87F75A",
5864 "mediaId" : "40BBB768-793D-44DA-BBC9-B22F6591159D",
5865 "muted" : false,
5866 "newShot" : false,
5867 "speed" : 1,
5868 "srcIn" : 1630.745762711864,
5869 "start" : 484.8813559322034,
5870 "track" : "v0"
5871 },
5872 {
5873 "duration" : 3.5932203389830306,
5874 "fadeIn" : 0,
5875 "fadeOut" : 0,
5876 "id" : "B0F7D729-54ED-422A-B202-11DF2760B5F3",
5877 "kind" : "audio",
5878 "linkId" : "F9AD2997-81A6-4EF6-BD27-5B43EE87F75A",
5879 "mediaId" : "55C13A17-0423-4BC0-93A6-3FEFD02E7FC6",
5880 "muted" : true,
5881 "newShot" : false,
5882 "speed" : 1,
5883 "srcIn" : 1630.661891170523,
5884 "start" : 484.8813559322034,
5885 "track" : "v1"
5886 },
5887 {
5888 "duration" : 3.5932203389830306,
5889 "fadeIn" : 0,
5890 "fadeOut" : 0,
5891 "id" : "905A3ACC-296C-4843-B9D9-B86F50F5BA5F",
5892 "kind" : "audio",
5893 "linkId" : "F9AD2997-81A6-4EF6-BD27-5B43EE87F75A",
5894 "mediaId" : "501034F8-09AC-44B1-8826-FCE9B36C68F9",
5895 "muted" : false,
5896 "newShot" : false,
5897 "speed" : 1,
5898 "srcIn" : 1630.7085674737539,
5899 "start" : 484.8813559322034,
5900 "track" : "v2"
5901 },
5902 {
5903 "duration" : 3.5932203389830306,
5904 "fadeIn" : 0,
5905 "fadeOut" : 0,
5906 "id" : "0B7D26CE-983C-4362-B1CD-AC3A40378E3B",
5907 "kind" : "video",
5908 "linkId" : "F9AD2997-81A6-4EF6-BD27-5B43EE87F75A",
5909 "mediaId" : "D866E8BE-A5B1-4B51-B465-D3F753701CCE",
5910 "muted" : false,
5911 "newShot" : false,
5912 "speed" : 1,
5913 "srcIn" : 1630.5719603375258,
5914 "start" : 484.8813559322034,
5915 "track" : "v3"
5916 },
5917 {
5918 "duration" : 3.5932203389830306,
5919 "fadeIn" : 0,
5920 "fadeOut" : 0,
5921 "id" : "AFE6D697-39D5-420E-BD1B-A64E0A13DC41",
5922 "kind" : "video",
5923 "linkId" : "F9AD2997-81A6-4EF6-BD27-5B43EE87F75A",
5924 "mediaId" : "92E85F7F-CA8B-473D-82F6-C7A7418875B1",
5925 "muted" : false,
5926 "newShot" : false,
5927 "speed" : 1,
5928 "srcIn" : 1630.571955753527,
5929 "start" : 484.8813559322034,
5930 "track" : "v4"
5931 },
5932 {
5933 "duration" : 5.525423728813564,
5934 "fadeIn" : 0,
5935 "fadeOut" : 0,
5936 "id" : "FFF0A0F3-132A-4462-A828-0FAEB88BBC4D",
5937 "kind" : "video",
5938 "linkId" : "0DB5CF0D-9192-4B84-94D8-6B5373F51616",
5939 "mediaId" : "40BBB768-793D-44DA-BBC9-B22F6591159D",
5940 "muted" : false,
5941 "newShot" : false,
5942 "speed" : 1,
5943 "srcIn" : 1690.881355932203,
5944 "start" : 488.47457627118644,
5945 "track" : "v0"
5946 },
5947 {
5948 "duration" : 5.525423728813564,
5949 "fadeIn" : 0,
5950 "fadeOut" : 0,
5951 "id" : "8C1B2FDC-C8A5-44ED-9F1E-CA222B045C32",
5952 "kind" : "audio",
5953 "linkId" : "0DB5CF0D-9192-4B84-94D8-6B5373F51616",
5954 "mediaId" : "55C13A17-0423-4BC0-93A6-3FEFD02E7FC6",
5955 "muted" : true,
5956 "newShot" : false,
5957 "speed" : 1,
5958 "srcIn" : 1690.7974843908619,
5959 "start" : 488.47457627118644,
5960 "track" : "v1"
5961 },
5962 {
5963 "duration" : 5.525423728813564,
5964 "fadeIn" : 0,
5965 "fadeOut" : 0,
5966 "id" : "630C64EC-19AC-4FC2-B36B-5B8934D80D33",
5967 "kind" : "audio",
5968 "linkId" : "0DB5CF0D-9192-4B84-94D8-6B5373F51616",
5969 "mediaId" : "501034F8-09AC-44B1-8826-FCE9B36C68F9",
5970 "muted" : false,
5971 "newShot" : false,
5972 "speed" : 1,
5973 "srcIn" : 1690.8441606940928,
5974 "start" : 488.47457627118644,
5975 "track" : "v2"
5976 },
5977 {
5978 "duration" : 5.525423728813564,
5979 "fadeIn" : 0,
5980 "fadeOut" : 0,
5981 "id" : "234A86B0-ECCC-4314-9B52-A58DB3C619BB",
5982 "kind" : "video",
5983 "linkId" : "0DB5CF0D-9192-4B84-94D8-6B5373F51616",
5984 "mediaId" : "D866E8BE-A5B1-4B51-B465-D3F753701CCE",
5985 "muted" : false,
5986 "newShot" : false,
5987 "speed" : 1,
5988 "srcIn" : 1690.7075535578647,
5989 "start" : 488.47457627118644,
5990 "track" : "v3"
5991 },
5992 {
5993 "duration" : 5.525423728813564,
5994 "fadeIn" : 0,
5995 "fadeOut" : 0,
5996 "id" : "02321509-9B22-45BA-884A-BFB975074D08",
5997 "kind" : "video",
5998 "linkId" : "0DB5CF0D-9192-4B84-94D8-6B5373F51616",
5999 "mediaId" : "92E85F7F-CA8B-473D-82F6-C7A7418875B1",
6000 "muted" : false,
6001 "newShot" : false,
6002 "speed" : 1,
6003 "srcIn" : 1690.7075489738659,
6004 "start" : 488.47457627118644,
6005 "track" : "v4"
6006 },
6007 {
6008 "duration" : 3.9661016949152668,
6009 "fadeIn" : 0,
6010 "fadeOut" : 0,
6011 "id" : "A8D392D7-E60E-4189-B7D6-B1C2B5E6927D",
6012 "kind" : "video",
6013 "linkId" : "A50B7D21-1369-498E-A893-10D9266DA682",
6014 "mediaId" : "40BBB768-793D-44DA-BBC9-B22F6591159D",
6015 "muted" : false,
6016 "newShot" : false,
6017 "speed" : 1,
6018 "srcIn" : 1703.5254237288132,
6019 "start" : 494,
6020 "track" : "v0"
6021 },
6022 {
6023 "duration" : 3.9661016949152668,
6024 "fadeIn" : 0,
6025 "fadeOut" : 0,
6026 "id" : "79B92814-E4D4-422A-B414-FEC1D42BABF8",
6027 "kind" : "audio",
6028 "linkId" : "A50B7D21-1369-498E-A893-10D9266DA682",
6029 "mediaId" : "55C13A17-0423-4BC0-93A6-3FEFD02E7FC6",
6030 "muted" : true,
6031 "newShot" : false,
6032 "speed" : 1,
6033 "srcIn" : 1703.441552187472,
6034 "start" : 494,
6035 "track" : "v1"
6036 },
6037 {
6038 "duration" : 3.9661016949152668,
6039 "fadeIn" : 0,
6040 "fadeOut" : 0,
6041 "id" : "154F32D0-7DAB-433B-833A-86D9F7B2B99E",
6042 "kind" : "audio",
6043 "linkId" : "A50B7D21-1369-498E-A893-10D9266DA682",
6044 "mediaId" : "501034F8-09AC-44B1-8826-FCE9B36C68F9",
6045 "muted" : false,
6046 "newShot" : false,
6047 "speed" : 1,
6048 "srcIn" : 1703.488228490703,
6049 "start" : 494,
6050 "track" : "v2"
6051 },
6052 {
6053 "duration" : 3.9661016949152668,
6054 "fadeIn" : 0,
6055 "fadeOut" : 0,
6056 "id" : "C57B1520-E9CD-43AB-ABB5-AA9F59B97CE5",
6057 "kind" : "video",
6058 "linkId" : "A50B7D21-1369-498E-A893-10D9266DA682",
6059 "mediaId" : "D866E8BE-A5B1-4B51-B465-D3F753701CCE",
6060 "muted" : false,
6061 "newShot" : false,
6062 "speed" : 1,
6063 "srcIn" : 1703.351621354475,
6064 "start" : 494,
6065 "track" : "v3"
6066 },
6067 {
6068 "duration" : 3.9661016949152668,
6069 "fadeIn" : 0,
6070 "fadeOut" : 0,
6071 "id" : "72ECB107-E625-47A0-91F5-4B07C84F9D01",
6072 "kind" : "video",
6073 "linkId" : "A50B7D21-1369-498E-A893-10D9266DA682",
6074 "mediaId" : "92E85F7F-CA8B-473D-82F6-C7A7418875B1",
6075 "muted" : false,
6076 "newShot" : false,
6077 "speed" : 1,
6078 "srcIn" : 1703.351616770476,
6079 "start" : 494,
6080 "track" : "v4"
6081 },
6082 {
6083 "duration" : 3.322033898305051,
6084 "fadeIn" : 0,
6085 "fadeOut" : 0,
6086 "id" : "592BF8E8-84BB-4D68-ACAF-C5250A378311",
6087 "kind" : "video",
6088 "linkId" : "2F16524C-A3E5-4EC3-B918-2C0107EB5F71",
6089 "mediaId" : "40BBB768-793D-44DA-BBC9-B22F6591159D",
6090 "muted" : false,
6091 "newShot" : false,
6092 "speed" : 1,
6093 "srcIn" : 1714.4067796610166,
6094 "start" : 497.96610169491527,
6095 "track" : "v0"
6096 },
6097 {
6098 "duration" : 3.322033898305051,
6099 "fadeIn" : 0,
6100 "fadeOut" : 0,
6101 "id" : "6A420F63-349C-490A-AEF2-A9A23B8F5911",
6102 "kind" : "audio",
6103 "linkId" : "2F16524C-A3E5-4EC3-B918-2C0107EB5F71",
6104 "mediaId" : "55C13A17-0423-4BC0-93A6-3FEFD02E7FC6",
6105 "muted" : true,
6106 "newShot" : false,
6107 "speed" : 1,
6108 "srcIn" : 1714.3229081196755,
6109 "start" : 497.96610169491527,
6110 "track" : "v1"
6111 },
6112 {
6113 "duration" : 3.322033898305051,
6114 "fadeIn" : 0,
6115 "fadeOut" : 0,
6116 "id" : "9BFFE86E-C803-440C-A23A-27946EB8F38E",
6117 "kind" : "audio",
6118 "linkId" : "2F16524C-A3E5-4EC3-B918-2C0107EB5F71",
6119 "mediaId" : "501034F8-09AC-44B1-8826-FCE9B36C68F9",
6120 "muted" : false,
6121 "newShot" : false,
6122 "speed" : 1,
6123 "srcIn" : 1714.3695844229064,
6124 "start" : 497.96610169491527,
6125 "track" : "v2"
6126 },
6127 {
6128 "duration" : 3.322033898305051,
6129 "fadeIn" : 0,
6130 "fadeOut" : 0,
6131 "id" : "507C5A42-E790-48A6-8DE6-F867042AD251",
6132 "kind" : "video",
6133 "linkId" : "2F16524C-A3E5-4EC3-B918-2C0107EB5F71",
6134 "mediaId" : "D866E8BE-A5B1-4B51-B465-D3F753701CCE",
6135 "muted" : false,
6136 "newShot" : false,
6137 "speed" : 1,
6138 "srcIn" : 1714.2329772866783,
6139 "start" : 497.96610169491527,
6140 "track" : "v3"
6141 },
6142 {
6143 "duration" : 3.322033898305051,
6144 "fadeIn" : 0,
6145 "fadeOut" : 0,
6146 "id" : "1255A12C-C270-451F-B9E7-2C3827620218",
6147 "kind" : "video",
6148 "linkId" : "2F16524C-A3E5-4EC3-B918-2C0107EB5F71",
6149 "mediaId" : "92E85F7F-CA8B-473D-82F6-C7A7418875B1",
6150 "muted" : false,
6151 "newShot" : false,
6152 "speed" : 1,
6153 "srcIn" : 1714.2329727026795,
6154 "start" : 497.96610169491527,
6155 "track" : "v4"
6156 },
6157 {
6158 "duration" : 5.491525423728831,
6159 "fadeIn" : 0,
6160 "fadeOut" : 0,
6161 "id" : "FAF25F24-F13A-4DE0-9CF8-7D2584531C9E",
6162 "kind" : "video",
6163 "linkId" : "EE183339-F801-4116-A9EF-D64A77C5996D",
6164 "mediaId" : "40BBB768-793D-44DA-BBC9-B22F6591159D",
6165 "muted" : false,
6166 "newShot" : false,
6167 "speed" : 1,
6168 "srcIn" : 1722.372881355932,
6169 "start" : 501.2881355932203,
6170 "track" : "v0"
6171 },
6172 {
6173 "duration" : 5.491525423728831,
6174 "fadeIn" : 0,
6175 "fadeOut" : 0,
6176 "id" : "E764AB44-88DC-41E9-A83E-E32A15AD06C5",
6177 "kind" : "audio",
6178 "linkId" : "EE183339-F801-4116-A9EF-D64A77C5996D",
6179 "mediaId" : "55C13A17-0423-4BC0-93A6-3FEFD02E7FC6",
6180 "muted" : true,
6181 "newShot" : false,
6182 "speed" : 1,
6183 "srcIn" : 1722.2890098145908,
6184 "start" : 501.2881355932203,
6185 "track" : "v1"
6186 },
6187 {
6188 "duration" : 5.491525423728831,
6189 "fadeIn" : 0,
6190 "fadeOut" : 0,
6191 "id" : "A156F3B8-0CDE-4ADF-8CA0-BA16EF901769",
6192 "kind" : "audio",
6193 "linkId" : "EE183339-F801-4116-A9EF-D64A77C5996D",
6194 "mediaId" : "501034F8-09AC-44B1-8826-FCE9B36C68F9",
6195 "muted" : false,
6196 "newShot" : false,
6197 "speed" : 1,
6198 "srcIn" : 1722.3356861178218,
6199 "start" : 501.2881355932203,
6200 "track" : "v2"
6201 },
6202 {
6203 "duration" : 5.491525423728831,
6204 "fadeIn" : 0,
6205 "fadeOut" : 0,
6206 "id" : "60A808DE-37D0-4C45-925D-276CA1D59EB7",
6207 "kind" : "video",
6208 "linkId" : "EE183339-F801-4116-A9EF-D64A77C5996D",
6209 "mediaId" : "D866E8BE-A5B1-4B51-B465-D3F753701CCE",
6210 "muted" : false,
6211 "newShot" : false,
6212 "speed" : 1,
6213 "srcIn" : 1722.1990789815936,
6214 "start" : 501.2881355932203,
6215 "track" : "v3"
6216 },
6217 {
6218 "duration" : 5.491525423728831,
6219 "fadeIn" : 0,
6220 "fadeOut" : 0,
6221 "id" : "C8564707-EE02-4CAD-BFA6-0089C454CE2A",
6222 "kind" : "video",
6223 "linkId" : "EE183339-F801-4116-A9EF-D64A77C5996D",
6224 "mediaId" : "92E85F7F-CA8B-473D-82F6-C7A7418875B1",
6225 "muted" : false,
6226 "newShot" : false,
6227 "speed" : 1,
6228 "srcIn" : 1722.1990743975948,
6229 "start" : 501.2881355932203,
6230 "track" : "v4"
6231 },
6232 {
6233 "duration" : 7.627118644067764,
6234 "fadeIn" : 0,
6235 "fadeOut" : 0,
6236 "id" : "BB4F9A82-C969-4E01-BDBE-E481B17343CF",
6237 "kind" : "video",
6238 "linkId" : "DFDDB477-FE81-42F4-A11E-389F9E0A1439",
6239 "mediaId" : "40BBB768-793D-44DA-BBC9-B22F6591159D",
6240 "muted" : false,
6241 "newShot" : false,
6242 "speed" : 1,
6243 "srcIn" : 1729.050847457627,
6244 "start" : 506.77966101694915,
6245 "track" : "v0"
6246 },
6247 {
6248 "duration" : 7.627118644067764,
6249 "fadeIn" : 0,
6250 "fadeOut" : 0,
6251 "id" : "D539326D-CFC6-4F6B-A59C-770061337CBD",
6252 "kind" : "audio",
6253 "linkId" : "DFDDB477-FE81-42F4-A11E-389F9E0A1439",
6254 "mediaId" : "55C13A17-0423-4BC0-93A6-3FEFD02E7FC6",
6255 "muted" : true,
6256 "newShot" : false,
6257 "speed" : 1,
6258 "srcIn" : 1728.966975916286,
6259 "start" : 506.77966101694915,
6260 "track" : "v1"
6261 },
6262 {
6263 "duration" : 7.627118644067764,
6264 "fadeIn" : 0,
6265 "fadeOut" : 0,
6266 "id" : "28F991A4-9D42-4CBC-BE96-E89FEBFAF96C",
6267 "kind" : "audio",
6268 "linkId" : "DFDDB477-FE81-42F4-A11E-389F9E0A1439",
6269 "mediaId" : "501034F8-09AC-44B1-8826-FCE9B36C68F9",
6270 "muted" : false,
6271 "newShot" : false,
6272 "speed" : 1,
6273 "srcIn" : 1729.0136522195169,
6274 "start" : 506.77966101694915,
6275 "track" : "v2"
6276 },
6277 {
6278 "duration" : 7.627118644067764,
6279 "fadeIn" : 0,
6280 "fadeOut" : 0,
6281 "id" : "D4D4B878-3981-44A7-9435-B6B607F17D8E",
6282 "kind" : "video",
6283 "linkId" : "DFDDB477-FE81-42F4-A11E-389F9E0A1439",
6284 "mediaId" : "D866E8BE-A5B1-4B51-B465-D3F753701CCE",
6285 "muted" : false,
6286 "newShot" : false,
6287 "speed" : 1,
6288 "srcIn" : 1728.8770450832887,
6289 "start" : 506.77966101694915,
6290 "track" : "v3"
6291 },
6292 {
6293 "duration" : 7.627118644067764,
6294 "fadeIn" : 0,
6295 "fadeOut" : 0,
6296 "id" : "BFB922A9-8931-4826-A5AE-4A8F51627F00",
6297 "kind" : "video",
6298 "linkId" : "DFDDB477-FE81-42F4-A11E-389F9E0A1439",
6299 "mediaId" : "92E85F7F-CA8B-473D-82F6-C7A7418875B1",
6300 "muted" : false,
6301 "newShot" : false,
6302 "speed" : 1,
6303 "srcIn" : 1728.87704049929,
6304 "start" : 506.77966101694915,
6305 "track" : "v4"
6306 },
6307 {
6308 "duration" : 7.491525423728831,
6309 "fadeIn" : 0,
6310 "fadeOut" : 0,
6311 "id" : "08360F23-5B06-4769-94DC-42A31CD3BD46",
6312 "kind" : "video",
6313 "linkId" : "2C7554F2-E73F-41CD-85CB-697100DCD6C1",
6314 "mediaId" : "40BBB768-793D-44DA-BBC9-B22F6591159D",
6315 "muted" : false,
6316 "newShot" : false,
6317 "speed" : 1,
6318 "srcIn" : 1747.593220338983,
6319 "start" : 514.4067796610169,
6320 "track" : "v0"
6321 },
6322 {
6323 "duration" : 7.491525423728831,
6324 "fadeIn" : 0,
6325 "fadeOut" : 0,
6326 "id" : "8BCF92B0-D87A-42BB-A168-F889F41CD1AB",
6327 "kind" : "audio",
6328 "linkId" : "2C7554F2-E73F-41CD-85CB-697100DCD6C1",
6329 "mediaId" : "55C13A17-0423-4BC0-93A6-3FEFD02E7FC6",
6330 "muted" : true,
6331 "newShot" : false,
6332 "speed" : 1,
6333 "srcIn" : 1747.509348797642,
6334 "start" : 514.4067796610169,
6335 "track" : "v1"
6336 },
6337 {
6338 "duration" : 7.491525423728831,
6339 "fadeIn" : 0,
6340 "fadeOut" : 0,
6341 "id" : "2753AF8E-8B68-4B0D-A289-CCF8ABFA4EA6",
6342 "kind" : "audio",
6343 "linkId" : "2C7554F2-E73F-41CD-85CB-697100DCD6C1",
6344 "mediaId" : "501034F8-09AC-44B1-8826-FCE9B36C68F9",
6345 "muted" : false,
6346 "newShot" : false,
6347 "speed" : 1,
6348 "srcIn" : 1747.5560251008728,
6349 "start" : 514.4067796610169,
6350 "track" : "v2"
6351 },
6352 {
6353 "duration" : 7.491525423728831,
6354 "fadeIn" : 0,
6355 "fadeOut" : 0,
6356 "id" : "913D7AB9-49C1-4FEE-B538-D81313C8CDAA",
6357 "kind" : "video",
6358 "linkId" : "2C7554F2-E73F-41CD-85CB-697100DCD6C1",
6359 "mediaId" : "D866E8BE-A5B1-4B51-B465-D3F753701CCE",
6360 "muted" : false,
6361 "newShot" : false,
6362 "speed" : 1,
6363 "srcIn" : 1747.4194179646447,
6364 "start" : 514.4067796610169,
6365 "track" : "v3"
6366 },
6367 {
6368 "duration" : 7.491525423728831,
6369 "fadeIn" : 0,
6370 "fadeOut" : 0,
6371 "id" : "A4078960-1488-4073-A3C0-10A87E8A55C7",
6372 "kind" : "video",
6373 "linkId" : "2C7554F2-E73F-41CD-85CB-697100DCD6C1",
6374 "mediaId" : "92E85F7F-CA8B-473D-82F6-C7A7418875B1",
6375 "muted" : false,
6376 "newShot" : false,
6377 "speed" : 1,
6378 "srcIn" : 1747.419413380646,
6379 "start" : 514.4067796610169,
6380 "track" : "v4"
6381 },
6382 {
6383 "duration" : 10.677966101694892,
6384 "fadeIn" : 0,
6385 "fadeOut" : 0,
6386 "id" : "B0A75210-7D43-4E54-906B-32BFB4856787",
6387 "kind" : "video",
6388 "linkId" : "68BA82C2-1D37-4341-BBD5-0BE799A2C6FA",
6389 "mediaId" : "40BBB768-793D-44DA-BBC9-B22F6591159D",
6390 "muted" : false,
6391 "newShot" : false,
6392 "speed" : 1,
6393 "srcIn" : 1755.084745762712,
6394 "start" : 521.8983050847457,
6395 "track" : "v0"
6396 },
6397 {
6398 "duration" : 10.677966101694892,
6399 "fadeIn" : 0,
6400 "fadeOut" : 0,
6401 "id" : "581E6DD4-D543-4188-9C1B-BC9D2F1F908C",
6402 "kind" : "audio",
6403 "linkId" : "68BA82C2-1D37-4341-BBD5-0BE799A2C6FA",
6404 "mediaId" : "55C13A17-0423-4BC0-93A6-3FEFD02E7FC6",
6405 "muted" : true,
6406 "newShot" : false,
6407 "speed" : 1,
6408 "srcIn" : 1755.0008742213709,
6409 "start" : 521.8983050847457,
6410 "track" : "v1"
6411 },
6412 {
6413 "duration" : 10.677966101694892,
6414 "fadeIn" : 0,
6415 "fadeOut" : 0,
6416 "id" : "B8BFF2A6-3F9E-4D5E-8DFE-EDF5101E1AE5",
6417 "kind" : "audio",
6418 "linkId" : "68BA82C2-1D37-4341-BBD5-0BE799A2C6FA",
6419 "mediaId" : "501034F8-09AC-44B1-8826-FCE9B36C68F9",
6420 "muted" : false,
6421 "newShot" : false,
6422 "speed" : 1,
6423 "srcIn" : 1755.0475505246018,
6424 "start" : 521.8983050847457,
6425 "track" : "v2"
6426 },
6427 {
6428 "duration" : 10.677966101694892,
6429 "fadeIn" : 0,
6430 "fadeOut" : 0,
6431 "id" : "6669C09D-E39D-46DE-A862-6BA3B20F558E",
6432 "kind" : "video",
6433 "linkId" : "68BA82C2-1D37-4341-BBD5-0BE799A2C6FA",
6434 "mediaId" : "D866E8BE-A5B1-4B51-B465-D3F753701CCE",
6435 "muted" : false,
6436 "newShot" : false,
6437 "speed" : 1,
6438 "srcIn" : 1754.9109433883737,
6439 "start" : 521.8983050847457,
6440 "track" : "v3"
6441 },
6442 {
6443 "duration" : 10.677966101694892,
6444 "fadeIn" : 0,
6445 "fadeOut" : 0,
6446 "id" : "C6619902-8ED4-46F4-907C-4F6DF342850B",
6447 "kind" : "video",
6448 "linkId" : "68BA82C2-1D37-4341-BBD5-0BE799A2C6FA",
6449 "mediaId" : "92E85F7F-CA8B-473D-82F6-C7A7418875B1",
6450 "muted" : false,
6451 "newShot" : false,
6452 "speed" : 1,
6453 "srcIn" : 1754.9109388043748,
6454 "start" : 521.8983050847457,
6455 "track" : "v4"
6456 },
6457 {
6458 "duration" : 3.152542372881385,
6459 "fadeIn" : 0,
6460 "fadeOut" : 0,
6461 "id" : "1E1F6B29-A2BC-44CA-BC6B-B2DA54F93FE5",
6462 "kind" : "video",
6463 "linkId" : "F2447BC6-DF74-439E-8FD2-0FBAC39A205C",
6464 "mediaId" : "40BBB768-793D-44DA-BBC9-B22F6591159D",
6465 "muted" : false,
6466 "newShot" : false,
6467 "speed" : 1,
6468 "srcIn" : 1766.6101694915255,
6469 "start" : 532.5762711864406,
6470 "track" : "v0"
6471 },
6472 {
6473 "duration" : 3.152542372881385,
6474 "fadeIn" : 0,
6475 "fadeOut" : 0,
6476 "id" : "97A49AEA-492D-4D8E-A171-E4F0831755E7",
6477 "kind" : "audio",
6478 "linkId" : "F2447BC6-DF74-439E-8FD2-0FBAC39A205C",
6479 "mediaId" : "55C13A17-0423-4BC0-93A6-3FEFD02E7FC6",
6480 "muted" : true,
6481 "newShot" : false,
6482 "speed" : 1,
6483 "srcIn" : 1766.5262979501845,
6484 "start" : 532.5762711864406,
6485 "track" : "v1"
6486 },
6487 {
6488 "duration" : 3.152542372881385,
6489 "fadeIn" : 0,
6490 "fadeOut" : 0,
6491 "id" : "C0542DA4-D2C3-4854-B510-3701574E9CD1",
6492 "kind" : "audio",
6493 "linkId" : "F2447BC6-DF74-439E-8FD2-0FBAC39A205C",
6494 "mediaId" : "501034F8-09AC-44B1-8826-FCE9B36C68F9",
6495 "muted" : false,
6496 "newShot" : false,
6497 "speed" : 1,
6498 "srcIn" : 1766.5729742534154,
6499 "start" : 532.5762711864406,
6500 "track" : "v2"
6501 },
6502 {
6503 "duration" : 3.152542372881385,
6504 "fadeIn" : 0,
6505 "fadeOut" : 0,
6506 "id" : "85D95CB3-B6F4-4DFA-9F00-55E80014D2B2",
6507 "kind" : "video",
6508 "linkId" : "F2447BC6-DF74-439E-8FD2-0FBAC39A205C",
6509 "mediaId" : "D866E8BE-A5B1-4B51-B465-D3F753701CCE",
6510 "muted" : false,
6511 "newShot" : false,
6512 "speed" : 1,
6513 "srcIn" : 1766.4363671171873,
6514 "start" : 532.5762711864406,
6515 "track" : "v3"
6516 },
6517 {
6518 "duration" : 3.152542372881385,
6519 "fadeIn" : 0,
6520 "fadeOut" : 0,
6521 "id" : "3AD412AE-C961-4FE7-B65F-3266A0980B36",
6522 "kind" : "video",
6523 "linkId" : "F2447BC6-DF74-439E-8FD2-0FBAC39A205C",
6524 "mediaId" : "92E85F7F-CA8B-473D-82F6-C7A7418875B1",
6525 "muted" : false,
6526 "newShot" : false,
6527 "speed" : 1,
6528 "srcIn" : 1766.4363625331885,
6529 "start" : 532.5762711864406,
6530 "track" : "v4"
6531 },
6532 {
6533 "duration" : 5.491525423728831,
6534 "fadeIn" : 0,
6535 "fadeOut" : 0,
6536 "id" : "1F116DEE-E2FC-4C19-B84E-F62E8C7FB58E",
6537 "kind" : "video",
6538 "linkId" : "CC83DD13-876C-4795-A07C-8A9F20E0FCD4",
6539 "mediaId" : "40BBB768-793D-44DA-BBC9-B22F6591159D",
6540 "muted" : false,
6541 "newShot" : false,
6542 "speed" : 1,
6543 "srcIn" : 1771.898305084746,
6544 "start" : 535.728813559322,
6545 "track" : "v0"
6546 },
6547 {
6548 "duration" : 5.491525423728831,
6549 "fadeIn" : 0,
6550 "fadeOut" : 0,
6551 "id" : "26F01770-1063-4614-838E-9C7408CB8EA7",
6552 "kind" : "audio",
6553 "linkId" : "CC83DD13-876C-4795-A07C-8A9F20E0FCD4",
6554 "mediaId" : "55C13A17-0423-4BC0-93A6-3FEFD02E7FC6",
6555 "muted" : true,
6556 "newShot" : false,
6557 "speed" : 1,
6558 "srcIn" : 1771.814433543405,
6559 "start" : 535.728813559322,
6560 "track" : "v1"
6561 },
6562 {
6563 "duration" : 5.491525423728831,
6564 "fadeIn" : 0,
6565 "fadeOut" : 0,
6566 "id" : "E27B6F72-E807-4B80-B045-EF94CBEAE518",
6567 "kind" : "audio",
6568 "linkId" : "CC83DD13-876C-4795-A07C-8A9F20E0FCD4",
6569 "mediaId" : "501034F8-09AC-44B1-8826-FCE9B36C68F9",
6570 "muted" : false,
6571 "newShot" : false,
6572 "speed" : 1,
6573 "srcIn" : 1771.8611098466358,
6574 "start" : 535.728813559322,
6575 "track" : "v2"
6576 },
6577 {
6578 "duration" : 5.491525423728831,
6579 "fadeIn" : 0,
6580 "fadeOut" : 0,
6581 "id" : "780E91E1-D956-46CE-AD94-132F9146FF16",
6582 "kind" : "video",
6583 "linkId" : "CC83DD13-876C-4795-A07C-8A9F20E0FCD4",
6584 "mediaId" : "D866E8BE-A5B1-4B51-B465-D3F753701CCE",
6585 "muted" : false,
6586 "newShot" : false,
6587 "speed" : 1,
6588 "srcIn" : 1771.7245027104077,
6589 "start" : 535.728813559322,
6590 "track" : "v3"
6591 },
6592 {
6593 "duration" : 5.491525423728831,
6594 "fadeIn" : 0,
6595 "fadeOut" : 0,
6596 "id" : "502017FB-B15D-472A-92CD-864B01FA9D5A",
6597 "kind" : "video",
6598 "linkId" : "CC83DD13-876C-4795-A07C-8A9F20E0FCD4",
6599 "mediaId" : "92E85F7F-CA8B-473D-82F6-C7A7418875B1",
6600 "muted" : false,
6601 "newShot" : false,
6602 "speed" : 1,
6603 "srcIn" : 1771.724498126409,
6604 "start" : 535.728813559322,
6605 "track" : "v4"
6606 },
6607 {
6608 "duration" : 4.0677966101694665,
6609 "fadeIn" : 0,
6610 "fadeOut" : 0,
6611 "id" : "C08F7E72-3AD4-4B1D-8250-1512128E7940",
6612 "kind" : "video",
6613 "linkId" : "A2118321-9E02-4656-BCE9-0E3980E8372E",
6614 "mediaId" : "40BBB768-793D-44DA-BBC9-B22F6591159D",
6615 "muted" : false,
6616 "newShot" : false,
6617 "speed" : 1,
6618 "srcIn" : 1779.5593220338988,
6619 "start" : 541.2203389830509,
6620 "track" : "v0"
6621 },
6622 {
6623 "duration" : 4.0677966101694665,
6624 "fadeIn" : 0,
6625 "fadeOut" : 0,
6626 "id" : "B58ABDEF-6C61-45A8-95FF-6445D0C0EABC",
6627 "kind" : "audio",
6628 "linkId" : "A2118321-9E02-4656-BCE9-0E3980E8372E",
6629 "mediaId" : "55C13A17-0423-4BC0-93A6-3FEFD02E7FC6",
6630 "muted" : true,
6631 "newShot" : false,
6632 "speed" : 1,
6633 "srcIn" : 1779.4754504925577,
6634 "start" : 541.2203389830509,
6635 "track" : "v1"
6636 },
6637 {
6638 "duration" : 4.0677966101694665,
6639 "fadeIn" : 0,
6640 "fadeOut" : 0,
6641 "id" : "141D7901-0677-44F5-8296-15BC113C1EBE",
6642 "kind" : "audio",
6643 "linkId" : "A2118321-9E02-4656-BCE9-0E3980E8372E",
6644 "mediaId" : "501034F8-09AC-44B1-8826-FCE9B36C68F9",
6645 "muted" : false,
6646 "newShot" : false,
6647 "speed" : 1,
6648 "srcIn" : 1779.5221267957886,
6649 "start" : 541.2203389830509,
6650 "track" : "v2"
6651 },
6652 {
6653 "duration" : 4.0677966101694665,
6654 "fadeIn" : 0,
6655 "fadeOut" : 0,
6656 "id" : "BADB3830-CF8B-4208-A04F-439958ACADDA",
6657 "kind" : "video",
6658 "linkId" : "A2118321-9E02-4656-BCE9-0E3980E8372E",
6659 "mediaId" : "D866E8BE-A5B1-4B51-B465-D3F753701CCE",
6660 "muted" : false,
6661 "newShot" : false,
6662 "speed" : 1,
6663 "srcIn" : 1779.3855196595605,
6664 "start" : 541.2203389830509,
6665 "track" : "v3"
6666 },
6667 {
6668 "duration" : 4.0677966101694665,
6669 "fadeIn" : 0,
6670 "fadeOut" : 0,
6671 "id" : "83BD9C59-2FC5-4F64-9963-A86B647F6F52",
6672 "kind" : "video",
6673 "linkId" : "A2118321-9E02-4656-BCE9-0E3980E8372E",
6674 "mediaId" : "92E85F7F-CA8B-473D-82F6-C7A7418875B1",
6675 "muted" : false,
6676 "newShot" : false,
6677 "speed" : 1,
6678 "srcIn" : 1779.3855150755617,
6679 "start" : 541.2203389830509,
6680 "track" : "v4"
6681 },
6682 {
6683 "duration" : 1.661016949152554,
6684 "fadeIn" : 0,
6685 "fadeOut" : 0,
6686 "id" : "81042DC7-94FE-4359-959F-C9E29D4F9461",
6687 "kind" : "video",
6688 "linkId" : "CDF46AA7-2655-4344-81E6-6C7AB4F4B303",
6689 "mediaId" : "40BBB768-793D-44DA-BBC9-B22F6591159D",
6690 "muted" : false,
6691 "newShot" : false,
6692 "speed" : 1,
6693 "srcIn" : 1815.5932203389834,
6694 "start" : 545.2881355932203,
6695 "track" : "v0"
6696 },
6697 {
6698 "duration" : 1.661016949152554,
6699 "fadeIn" : 0,
6700 "fadeOut" : 0,
6701 "id" : "EB5D9E21-E9FF-430D-B90A-143FFFC161D0",
6702 "kind" : "audio",
6703 "linkId" : "CDF46AA7-2655-4344-81E6-6C7AB4F4B303",
6704 "mediaId" : "55C13A17-0423-4BC0-93A6-3FEFD02E7FC6",
6705 "muted" : true,
6706 "newShot" : false,
6707 "speed" : 1,
6708 "srcIn" : 1815.5093487976424,
6709 "start" : 545.2881355932203,
6710 "track" : "v1"
6711 },
6712 {
6713 "duration" : 1.661016949152554,
6714 "fadeIn" : 0,
6715 "fadeOut" : 0,
6716 "id" : "E5C8677F-212F-43D4-95D6-F86D218562F5",
6717 "kind" : "audio",
6718 "linkId" : "CDF46AA7-2655-4344-81E6-6C7AB4F4B303",
6719 "mediaId" : "501034F8-09AC-44B1-8826-FCE9B36C68F9",
6720 "muted" : false,
6721 "newShot" : false,
6722 "speed" : 1,
6723 "srcIn" : 1815.5560251008733,
6724 "start" : 545.2881355932203,
6725 "track" : "v2"
6726 },
6727 {
6728 "duration" : 1.661016949152554,
6729 "fadeIn" : 0,
6730 "fadeOut" : 0,
6731 "id" : "899CE36B-86FD-4463-ACF9-64EFDF419140",
6732 "kind" : "video",
6733 "linkId" : "CDF46AA7-2655-4344-81E6-6C7AB4F4B303",
6734 "mediaId" : "D866E8BE-A5B1-4B51-B465-D3F753701CCE",
6735 "muted" : false,
6736 "newShot" : false,
6737 "speed" : 1,
6738 "srcIn" : 1815.4194179646452,
6739 "start" : 545.2881355932203,
6740 "track" : "v3"
6741 },
6742 {
6743 "duration" : 1.661016949152554,
6744 "fadeIn" : 0,
6745 "fadeOut" : 0,
6746 "id" : "B0B393DE-7AAD-46D0-8783-D2E08335DC13",
6747 "kind" : "video",
6748 "linkId" : "CDF46AA7-2655-4344-81E6-6C7AB4F4B303",
6749 "mediaId" : "92E85F7F-CA8B-473D-82F6-C7A7418875B1",
6750 "muted" : false,
6751 "newShot" : false,
6752 "speed" : 1,
6753 "srcIn" : 1815.4194133806463,
6754 "start" : 545.2881355932203,
6755 "track" : "v4"
6756 },
6757 {
6758 "duration" : 1.1525423728813848,
6759 "fadeIn" : 0,
6760 "fadeOut" : 0,
6761 "id" : "18E9C9F7-AA69-4D86-9DD9-5278392186CD",
6762 "kind" : "video",
6763 "linkId" : "2426D580-BCAA-49B5-BF7C-9DCE2A558605",
6764 "mediaId" : "40BBB768-793D-44DA-BBC9-B22F6591159D",
6765 "muted" : false,
6766 "newShot" : false,
6767 "speed" : 1,
6768 "srcIn" : 1817.5593220338988,
6769 "start" : 546.9491525423729,
6770 "track" : "v0"
6771 },
6772 {
6773 "duration" : 1.1525423728813848,
6774 "fadeIn" : 0,
6775 "fadeOut" : 0,
6776 "id" : "098E9E68-8FCE-4C2E-8A24-81EFEECCD127",
6777 "kind" : "audio",
6778 "linkId" : "2426D580-BCAA-49B5-BF7C-9DCE2A558605",
6779 "mediaId" : "55C13A17-0423-4BC0-93A6-3FEFD02E7FC6",
6780 "muted" : true,
6781 "newShot" : false,
6782 "speed" : 1,
6783 "srcIn" : 1817.4754504925577,
6784 "start" : 546.9491525423729,
6785 "track" : "v1"
6786 },
6787 {
6788 "duration" : 1.1525423728813848,
6789 "fadeIn" : 0,
6790 "fadeOut" : 0,
6791 "id" : "3A68B520-1B13-4837-98C7-4715D6250B50",
6792 "kind" : "audio",
6793 "linkId" : "2426D580-BCAA-49B5-BF7C-9DCE2A558605",
6794 "mediaId" : "501034F8-09AC-44B1-8826-FCE9B36C68F9",
6795 "muted" : false,
6796 "newShot" : false,
6797 "speed" : 1,
6798 "srcIn" : 1817.5221267957886,
6799 "start" : 546.9491525423729,
6800 "track" : "v2"
6801 },
6802 {
6803 "duration" : 1.1525423728813848,
6804 "fadeIn" : 0,
6805 "fadeOut" : 0,
6806 "id" : "3D51136D-FC09-46D4-A29C-C1E8B7022D04",
6807 "kind" : "video",
6808 "linkId" : "2426D580-BCAA-49B5-BF7C-9DCE2A558605",
6809 "mediaId" : "D866E8BE-A5B1-4B51-B465-D3F753701CCE",
6810 "muted" : false,
6811 "newShot" : false,
6812 "speed" : 1,
6813 "srcIn" : 1817.3855196595605,
6814 "start" : 546.9491525423729,
6815 "track" : "v3"
6816 },
6817 {
6818 "duration" : 1.1525423728813848,
6819 "fadeIn" : 0,
6820 "fadeOut" : 0,
6821 "id" : "879B5431-78D7-4E34-98CD-811F0D7D8D2B",
6822 "kind" : "video",
6823 "linkId" : "2426D580-BCAA-49B5-BF7C-9DCE2A558605",
6824 "mediaId" : "92E85F7F-CA8B-473D-82F6-C7A7418875B1",
6825 "muted" : false,
6826 "newShot" : false,
6827 "speed" : 1,
6828 "srcIn" : 1817.3855150755617,
6829 "start" : 546.9491525423729,
6830 "track" : "v4"
6831 },
6832 {
6833 "duration" : 11.525423728813507,
6834 "fadeIn" : 0,
6835 "fadeOut" : 0,
6836 "id" : "B6AD6E92-A164-48D3-962D-8D5472AC5ED8",
6837 "kind" : "video",
6838 "linkId" : "5F7B4F1D-CE0A-49F1-A14C-6C7D1809E682",
6839 "mediaId" : "40BBB768-793D-44DA-BBC9-B22F6591159D",
6840 "muted" : false,
6841 "newShot" : false,
6842 "speed" : 1,
6843 "srcIn" : 1823.5593220338988,
6844 "start" : 548.1016949152543,
6845 "track" : "v0"
6846 },
6847 {
6848 "duration" : 11.525423728813507,
6849 "fadeIn" : 0,
6850 "fadeOut" : 0,
6851 "id" : "15310F42-B66D-4DDB-B571-28824E2AA8F2",
6852 "kind" : "audio",
6853 "linkId" : "5F7B4F1D-CE0A-49F1-A14C-6C7D1809E682",
6854 "mediaId" : "55C13A17-0423-4BC0-93A6-3FEFD02E7FC6",
6855 "muted" : true,
6856 "newShot" : false,
6857 "speed" : 1,
6858 "srcIn" : 1823.4754504925577,
6859 "start" : 548.1016949152543,
6860 "track" : "v1"
6861 },
6862 {
6863 "duration" : 11.525423728813507,
6864 "fadeIn" : 0,
6865 "fadeOut" : 0,
6866 "id" : "60DB4DB9-D800-414F-8313-D3C0C9CF620C",
6867 "kind" : "audio",
6868 "linkId" : "5F7B4F1D-CE0A-49F1-A14C-6C7D1809E682",
6869 "mediaId" : "501034F8-09AC-44B1-8826-FCE9B36C68F9",
6870 "muted" : false,
6871 "newShot" : false,
6872 "speed" : 1,
6873 "srcIn" : 1823.5221267957886,
6874 "start" : 548.1016949152543,
6875 "track" : "v2"
6876 },
6877 {
6878 "duration" : 11.525423728813507,
6879 "fadeIn" : 0,
6880 "fadeOut" : 0,
6881 "id" : "66EBCF41-7ABC-4B4F-B3D6-670B5DE5FF4B",
6882 "kind" : "video",
6883 "linkId" : "5F7B4F1D-CE0A-49F1-A14C-6C7D1809E682",
6884 "mediaId" : "D866E8BE-A5B1-4B51-B465-D3F753701CCE",
6885 "muted" : false,
6886 "newShot" : false,
6887 "speed" : 1,
6888 "srcIn" : 1823.3855196595605,
6889 "start" : 548.1016949152543,
6890 "track" : "v3"
6891 },
6892 {
6893 "duration" : 11.525423728813507,
6894 "fadeIn" : 0,
6895 "fadeOut" : 0,
6896 "id" : "74B48312-8BD1-4CF9-967A-E7EED8D50E2A",
6897 "kind" : "video",
6898 "linkId" : "5F7B4F1D-CE0A-49F1-A14C-6C7D1809E682",
6899 "mediaId" : "92E85F7F-CA8B-473D-82F6-C7A7418875B1",
6900 "muted" : false,
6901 "newShot" : false,
6902 "speed" : 1,
6903 "srcIn" : 1823.3855150755617,
6904 "start" : 548.1016949152543,
6905 "track" : "v4"
6906 },
6907 {
6908 "duration" : 3.6271186440678775,
6909 "fadeIn" : 0,
6910 "fadeOut" : 0,
6911 "id" : "7E495919-B008-4616-BB9C-17E3BDE688A9",
6912 "kind" : "video",
6913 "linkId" : "9769E036-22A2-4F7C-95DD-F0F9F243A183",
6914 "mediaId" : "40BBB768-793D-44DA-BBC9-B22F6591159D",
6915 "muted" : false,
6916 "newShot" : false,
6917 "speed" : 1,
6918 "srcIn" : 1836.474576271187,
6919 "start" : 559.6271186440678,
6920 "track" : "v0"
6921 },
6922 {
6923 "duration" : 3.6271186440678775,
6924 "fadeIn" : 0,
6925 "fadeOut" : 0,
6926 "id" : "7E503A80-A896-4D03-9DC1-896D78C0F03A",
6927 "kind" : "audio",
6928 "linkId" : "9769E036-22A2-4F7C-95DD-F0F9F243A183",
6929 "mediaId" : "55C13A17-0423-4BC0-93A6-3FEFD02E7FC6",
6930 "muted" : true,
6931 "newShot" : false,
6932 "speed" : 1,
6933 "srcIn" : 1836.390704729846,
6934 "start" : 559.6271186440678,
6935 "track" : "v1"
6936 },
6937 {
6938 "duration" : 3.6271186440678775,
6939 "fadeIn" : 0,
6940 "fadeOut" : 0,
6941 "id" : "37A7F54D-1185-4016-9C07-149400B154B8",
6942 "kind" : "audio",
6943 "linkId" : "9769E036-22A2-4F7C-95DD-F0F9F243A183",
6944 "mediaId" : "501034F8-09AC-44B1-8826-FCE9B36C68F9",
6945 "muted" : false,
6946 "newShot" : false,
6947 "speed" : 1,
6948 "srcIn" : 1836.437381033077,
6949 "start" : 559.6271186440678,
6950 "track" : "v2"
6951 },
6952 {
6953 "duration" : 3.6271186440678775,
6954 "fadeIn" : 0,
6955 "fadeOut" : 0,
6956 "id" : "12B7D82E-9520-4486-82BA-A1EFA3443CC5",
6957 "kind" : "video",
6958 "linkId" : "9769E036-22A2-4F7C-95DD-F0F9F243A183",
6959 "mediaId" : "D866E8BE-A5B1-4B51-B465-D3F753701CCE",
6960 "muted" : false,
6961 "newShot" : false,
6962 "speed" : 1,
6963 "srcIn" : 1836.3007738968488,
6964 "start" : 559.6271186440678,
6965 "track" : "v3"
6966 },
6967 {
6968 "duration" : 3.6271186440678775,
6969 "fadeIn" : 0,
6970 "fadeOut" : 0,
6971 "id" : "467D66A4-ABC0-4A30-B666-EC09C21670C2",
6972 "kind" : "video",
6973 "linkId" : "9769E036-22A2-4F7C-95DD-F0F9F243A183",
6974 "mediaId" : "92E85F7F-CA8B-473D-82F6-C7A7418875B1",
6975 "muted" : false,
6976 "newShot" : false,
6977 "speed" : 1,
6978 "srcIn" : 1836.30076931285,
6979 "start" : 559.6271186440678,
6980 "track" : "v4"
6981 },
6982 {
6983 "duration" : 5.118644067796595,
6984 "fadeIn" : 0,
6985 "fadeOut" : 0,
6986 "id" : "F7C9CC46-173D-4CEA-B84A-F83B2D94A2CE",
6987 "kind" : "video",
6988 "linkId" : "B85938EF-37B5-4F22-B0B6-0C3F5749452C",
6989 "mediaId" : "40BBB768-793D-44DA-BBC9-B22F6591159D",
6990 "muted" : false,
6991 "newShot" : false,
6992 "speed" : 1,
6993 "srcIn" : 1849.1186440677973,
6994 "start" : 563.2542372881356,
6995 "track" : "v0"
6996 },
6997 {
6998 "duration" : 5.118644067796595,
6999 "fadeIn" : 0,
7000 "fadeOut" : 0,
7001 "id" : "AA8C606C-3D23-4965-B5D1-E17B4413C421",
7002 "kind" : "audio",
7003 "linkId" : "B85938EF-37B5-4F22-B0B6-0C3F5749452C",
7004 "mediaId" : "55C13A17-0423-4BC0-93A6-3FEFD02E7FC6",
7005 "muted" : true,
7006 "newShot" : false,
7007 "speed" : 1,
7008 "srcIn" : 1849.0347725264562,
7009 "start" : 563.2542372881356,
7010 "track" : "v1"
7011 },
7012 {
7013 "duration" : 5.118644067796595,
7014 "fadeIn" : 0,
7015 "fadeOut" : 0,
7016 "id" : "FB4942C0-5842-419B-A4CA-242596D7CF03",
7017 "kind" : "audio",
7018 "linkId" : "B85938EF-37B5-4F22-B0B6-0C3F5749452C",
7019 "mediaId" : "501034F8-09AC-44B1-8826-FCE9B36C68F9",
7020 "muted" : false,
7021 "newShot" : false,
7022 "speed" : 1,
7023 "srcIn" : 1849.0814488296871,
7024 "start" : 563.2542372881356,
7025 "track" : "v2"
7026 },
7027 {
7028 "duration" : 5.118644067796595,
7029 "fadeIn" : 0,
7030 "fadeOut" : 0,
7031 "id" : "8D875994-D892-44D9-A74C-9AE0403A1240",
7032 "kind" : "video",
7033 "linkId" : "B85938EF-37B5-4F22-B0B6-0C3F5749452C",
7034 "mediaId" : "D866E8BE-A5B1-4B51-B465-D3F753701CCE",
7035 "muted" : false,
7036 "newShot" : false,
7037 "speed" : 1,
7038 "srcIn" : 1848.944841693459,
7039 "start" : 563.2542372881356,
7040 "track" : "v3"
7041 },
7042 {
7043 "duration" : 5.118644067796595,
7044 "fadeIn" : 0,
7045 "fadeOut" : 0,
7046 "id" : "D7122A1E-0F1A-4EDA-BA83-5032DCB51740",
7047 "kind" : "video",
7048 "linkId" : "B85938EF-37B5-4F22-B0B6-0C3F5749452C",
7049 "mediaId" : "92E85F7F-CA8B-473D-82F6-C7A7418875B1",
7050 "muted" : false,
7051 "newShot" : false,
7052 "speed" : 1,
7053 "srcIn" : 1848.9448371094602,
7054 "start" : 563.2542372881356,
7055 "track" : "v4"
7056 },
7057 {
7058 "duration" : 8.2033898305084,
7059 "fadeIn" : 0,
7060 "fadeOut" : 0,
7061 "id" : "54B76DE8-2057-470C-97CB-916B91B32B1C",
7062 "kind" : "video",
7063 "linkId" : "65CA1374-003F-413C-9F77-8A22B7EECDC3",
7064 "mediaId" : "40BBB768-793D-44DA-BBC9-B22F6591159D",
7065 "muted" : false,
7066 "newShot" : false,
7067 "speed" : 1,
7068 "srcIn" : 1854.9830508474583,
7069 "start" : 568.3728813559322,
7070 "track" : "v0"
7071 },
7072 {
7073 "duration" : 8.2033898305084,
7074 "fadeIn" : 0,
7075 "fadeOut" : 0,
7076 "id" : "12851101-B365-4F9E-BFB3-FDEABAE1453A",
7077 "kind" : "audio",
7078 "linkId" : "65CA1374-003F-413C-9F77-8A22B7EECDC3",
7079 "mediaId" : "55C13A17-0423-4BC0-93A6-3FEFD02E7FC6",
7080 "muted" : true,
7081 "newShot" : false,
7082 "speed" : 1,
7083 "srcIn" : 1854.8991793061173,
7084 "start" : 568.3728813559322,
7085 "track" : "v1"
7086 },
7087 {
7088 "duration" : 8.2033898305084,
7089 "fadeIn" : 0,
7090 "fadeOut" : 0,
7091 "id" : "38DCBA3E-C18E-447C-B319-9E3A3DE4DC21",
7092 "kind" : "audio",
7093 "linkId" : "65CA1374-003F-413C-9F77-8A22B7EECDC3",
7094 "mediaId" : "501034F8-09AC-44B1-8826-FCE9B36C68F9",
7095 "muted" : false,
7096 "newShot" : false,
7097 "speed" : 1,
7098 "srcIn" : 1854.9458556093482,
7099 "start" : 568.3728813559322,
7100 "track" : "v2"
7101 },
7102 {
7103 "duration" : 8.2033898305084,
7104 "fadeIn" : 0,
7105 "fadeOut" : 0,
7106 "id" : "FE05A76D-4FB5-43E6-9960-DE92DC23FD6C",
7107 "kind" : "video",
7108 "linkId" : "65CA1374-003F-413C-9F77-8A22B7EECDC3",
7109 "mediaId" : "D866E8BE-A5B1-4B51-B465-D3F753701CCE",
7110 "muted" : false,
7111 "newShot" : false,
7112 "speed" : 1,
7113 "srcIn" : 1854.80924847312,
7114 "start" : 568.3728813559322,
7115 "track" : "v3"
7116 },
7117 {
7118 "duration" : 8.2033898305084,
7119 "fadeIn" : 0,
7120 "fadeOut" : 0,
7121 "id" : "35C17BC8-29A1-44B4-A655-A1AF25C6D713",
7122 "kind" : "video",
7123 "linkId" : "65CA1374-003F-413C-9F77-8A22B7EECDC3",
7124 "mediaId" : "92E85F7F-CA8B-473D-82F6-C7A7418875B1",
7125 "muted" : false,
7126 "newShot" : false,
7127 "speed" : 1,
7128 "srcIn" : 1854.8092438891213,
7129 "start" : 568.3728813559322,
7130 "track" : "v4"
7131 },
7132 {
7133 "duration" : 5.559322033898297,
7134 "fadeIn" : 0,
7135 "fadeOut" : 0,
7136 "id" : "ED705251-681D-4EEE-81C8-D077FBB072B5",
7137 "kind" : "video",
7138 "linkId" : "FD6E0C12-08F2-474C-B889-10F178952804",
7139 "mediaId" : "40BBB768-793D-44DA-BBC9-B22F6591159D",
7140 "muted" : false,
7141 "newShot" : false,
7142 "speed" : 1,
7143 "srcIn" : 1865.525423728814,
7144 "start" : 576.5762711864406,
7145 "track" : "v0"
7146 },
7147 {
7148 "duration" : 5.559322033898297,
7149 "fadeIn" : 0,
7150 "fadeOut" : 0,
7151 "id" : "A57F8B52-605A-4BB2-8B24-0CBC8B78EBAB",
7152 "kind" : "audio",
7153 "linkId" : "FD6E0C12-08F2-474C-B889-10F178952804",
7154 "mediaId" : "55C13A17-0423-4BC0-93A6-3FEFD02E7FC6",
7155 "muted" : true,
7156 "newShot" : false,
7157 "speed" : 1,
7158 "srcIn" : 1865.441552187473,
7159 "start" : 576.5762711864406,
7160 "track" : "v1"
7161 },
7162 {
7163 "duration" : 5.559322033898297,
7164 "fadeIn" : 0,
7165 "fadeOut" : 0,
7166 "id" : "93D09BC6-1947-40D5-82BA-E6E1035452E2",
7167 "kind" : "audio",
7168 "linkId" : "FD6E0C12-08F2-474C-B889-10F178952804",
7169 "mediaId" : "501034F8-09AC-44B1-8826-FCE9B36C68F9",
7170 "muted" : false,
7171 "newShot" : false,
7172 "speed" : 1,
7173 "srcIn" : 1865.488228490704,
7174 "start" : 576.5762711864406,
7175 "track" : "v2"
7176 },
7177 {
7178 "duration" : 5.559322033898297,
7179 "fadeIn" : 0,
7180 "fadeOut" : 0,
7181 "id" : "48D771B8-EC5B-45CD-842D-CFC4F85FC9D3",
7182 "kind" : "video",
7183 "linkId" : "FD6E0C12-08F2-474C-B889-10F178952804",
7184 "mediaId" : "D866E8BE-A5B1-4B51-B465-D3F753701CCE",
7185 "muted" : false,
7186 "newShot" : false,
7187 "speed" : 1,
7188 "srcIn" : 1865.3516213544758,
7189 "start" : 576.5762711864406,
7190 "track" : "v3"
7191 },
7192 {
7193 "duration" : 5.559322033898297,
7194 "fadeIn" : 0,
7195 "fadeOut" : 0,
7196 "id" : "6F0B9EDA-F628-4403-9AC9-D23443721AA7",
7197 "kind" : "video",
7198 "linkId" : "FD6E0C12-08F2-474C-B889-10F178952804",
7199 "mediaId" : "92E85F7F-CA8B-473D-82F6-C7A7418875B1",
7200 "muted" : false,
7201 "newShot" : false,
7202 "speed" : 1,
7203 "srcIn" : 1865.351616770477,
7204 "start" : 576.5762711864406,
7205 "track" : "v4"
7206 },
7207 {
7208 "duration" : 18.881355932203405,
7209 "fadeIn" : 0,
7210 "fadeOut" : 0,
7211 "id" : "B0DF95C7-AB53-4E4B-B365-DA47C88E233F",
7212 "kind" : "video",
7213 "linkId" : "17C6BBA2-9064-425D-8592-73511CF2CF98",
7214 "mediaId" : "40BBB768-793D-44DA-BBC9-B22F6591159D",
7215 "muted" : false,
7216 "newShot" : false,
7217 "speed" : 1,
7218 "srcIn" : 1938.101694915255,
7219 "start" : 582.1355932203389,
7220 "track" : "v0"
7221 },
7222 {
7223 "duration" : 18.881355932203405,
7224 "fadeIn" : 0,
7225 "fadeOut" : 0,
7226 "id" : "10C2DDB7-13BF-4707-A836-146E1C1DF546",
7227 "kind" : "audio",
7228 "linkId" : "17C6BBA2-9064-425D-8592-73511CF2CF98",
7229 "mediaId" : "55C13A17-0423-4BC0-93A6-3FEFD02E7FC6",
7230 "muted" : true,
7231 "newShot" : false,
7232 "speed" : 1,
7233 "srcIn" : 1938.0178233739139,
7234 "start" : 582.1355932203389,
7235 "track" : "v1"
7236 },
7237 {
7238 "duration" : 18.881355932203405,
7239 "fadeIn" : 0,
7240 "fadeOut" : 0,
7241 "id" : "D426D540-67E5-4B2C-8355-17C9D9356D6E",
7242 "kind" : "audio",
7243 "linkId" : "17C6BBA2-9064-425D-8592-73511CF2CF98",
7244 "mediaId" : "501034F8-09AC-44B1-8826-FCE9B36C68F9",
7245 "muted" : false,
7246 "newShot" : false,
7247 "speed" : 1,
7248 "srcIn" : 1938.0644996771448,
7249 "start" : 582.1355932203389,
7250 "track" : "v2"
7251 },
7252 {
7253 "duration" : 18.881355932203405,
7254 "fadeIn" : 0,
7255 "fadeOut" : 0,
7256 "id" : "4270D3EC-C6D9-44CD-BAEF-E087D96DEE47",
7257 "kind" : "video",
7258 "linkId" : "17C6BBA2-9064-425D-8592-73511CF2CF98",
7259 "mediaId" : "D866E8BE-A5B1-4B51-B465-D3F753701CCE",
7260 "muted" : false,
7261 "newShot" : false,
7262 "speed" : 1,
7263 "srcIn" : 1937.9278925409167,
7264 "start" : 582.1355932203389,
7265 "track" : "v3"
7266 },
7267 {
7268 "duration" : 18.881355932203405,
7269 "fadeIn" : 0,
7270 "fadeOut" : 0,
7271 "id" : "4D883F8E-FE22-4FD7-80D8-05BB6DF23E69",
7272 "kind" : "video",
7273 "linkId" : "17C6BBA2-9064-425D-8592-73511CF2CF98",
7274 "mediaId" : "92E85F7F-CA8B-473D-82F6-C7A7418875B1",
7275 "muted" : false,
7276 "newShot" : false,
7277 "speed" : 1,
7278 "srcIn" : 1937.9278879569179,
7279 "start" : 582.1355932203389,
7280 "track" : "v4"
7281 },
7282 {
7283 "duration" : 6.237288135593303,
7284 "fadeIn" : 0,
7285 "fadeOut" : 0,
7286 "id" : "73E5F742-AA2F-4AD8-89B1-D1CD80D854E7",
7287 "kind" : "video",
7288 "linkId" : "338C9A6C-870B-46F8-8240-2067335F8F8A",
7289 "mediaId" : "40BBB768-793D-44DA-BBC9-B22F6591159D",
7290 "muted" : false,
7291 "newShot" : false,
7292 "speed" : 1,
7293 "srcIn" : 1956.9830508474583,
7294 "start" : 601.0169491525423,
7295 "track" : "v0"
7296 },
7297 {
7298 "duration" : 6.237288135593303,
7299 "fadeIn" : 0,
7300 "fadeOut" : 0,
7301 "id" : "01D1EA2C-B8BB-4B95-8C2F-716EE57867DE",
7302 "kind" : "audio",
7303 "linkId" : "338C9A6C-870B-46F8-8240-2067335F8F8A",
7304 "mediaId" : "55C13A17-0423-4BC0-93A6-3FEFD02E7FC6",
7305 "muted" : true,
7306 "newShot" : false,
7307 "speed" : 1,
7308 "srcIn" : 1956.8991793061173,
7309 "start" : 601.0169491525423,
7310 "track" : "v1"
7311 },
7312 {
7313 "duration" : 6.237288135593303,
7314 "fadeIn" : 0,
7315 "fadeOut" : 0,
7316 "id" : "588AAA62-D950-4167-88E1-3A7E9016735E",
7317 "kind" : "audio",
7318 "linkId" : "338C9A6C-870B-46F8-8240-2067335F8F8A",
7319 "mediaId" : "501034F8-09AC-44B1-8826-FCE9B36C68F9",
7320 "muted" : false,
7321 "newShot" : false,
7322 "speed" : 1,
7323 "srcIn" : 1956.9458556093482,
7324 "start" : 601.0169491525423,
7325 "track" : "v2"
7326 },
7327 {
7328 "duration" : 6.237288135593303,
7329 "fadeIn" : 0,
7330 "fadeOut" : 0,
7331 "id" : "5F41A84E-E3E3-417E-B7E8-82995513D4E2",
7332 "kind" : "video",
7333 "linkId" : "338C9A6C-870B-46F8-8240-2067335F8F8A",
7334 "mediaId" : "D866E8BE-A5B1-4B51-B465-D3F753701CCE",
7335 "muted" : false,
7336 "newShot" : false,
7337 "speed" : 1,
7338 "srcIn" : 1956.80924847312,
7339 "start" : 601.0169491525423,
7340 "track" : "v3"
7341 },
7342 {
7343 "duration" : 6.237288135593303,
7344 "fadeIn" : 0,
7345 "fadeOut" : 0,
7346 "id" : "06DE79D5-6984-41FF-8120-821047F987C5",
7347 "kind" : "video",
7348 "linkId" : "338C9A6C-870B-46F8-8240-2067335F8F8A",
7349 "mediaId" : "92E85F7F-CA8B-473D-82F6-C7A7418875B1",
7350 "muted" : false,
7351 "newShot" : false,
7352 "speed" : 1,
7353 "srcIn" : 1956.8092438891213,
7354 "start" : 601.0169491525423,
7355 "track" : "v4"
7356 },
7357 {
7358 "duration" : 10.677966101694892,
7359 "fadeIn" : 0,
7360 "fadeOut" : 0,
7361 "id" : "F7574C8D-473A-44C7-BB33-CA9C31856531",
7362 "kind" : "video",
7363 "linkId" : "5715D6B2-69B7-4806-A021-82A001C82B8D",
7364 "mediaId" : "40BBB768-793D-44DA-BBC9-B22F6591159D",
7365 "muted" : false,
7366 "newShot" : false,
7367 "speed" : 1,
7368 "srcIn" : 2022.8474576271192,
7369 "start" : 607.2542372881356,
7370 "track" : "v0"
7371 },
7372 {
7373 "duration" : 10.677966101694892,
7374 "fadeIn" : 0,
7375 "fadeOut" : 0,
7376 "id" : "6F7C3CE2-9238-415C-A314-90B677ECAE17",
7377 "kind" : "audio",
7378 "linkId" : "5715D6B2-69B7-4806-A021-82A001C82B8D",
7379 "mediaId" : "55C13A17-0423-4BC0-93A6-3FEFD02E7FC6",
7380 "muted" : true,
7381 "newShot" : false,
7382 "speed" : 1,
7383 "srcIn" : 2022.7635860857781,
7384 "start" : 607.2542372881356,
7385 "track" : "v1"
7386 },
7387 {
7388 "duration" : 10.677966101694892,
7389 "fadeIn" : 0,
7390 "fadeOut" : 0,
7391 "id" : "BC1D7F8D-872D-4749-97D4-9CBF947EB008",
7392 "kind" : "audio",
7393 "linkId" : "5715D6B2-69B7-4806-A021-82A001C82B8D",
7394 "mediaId" : "501034F8-09AC-44B1-8826-FCE9B36C68F9",
7395 "muted" : false,
7396 "newShot" : false,
7397 "speed" : 1,
7398 "srcIn" : 2022.810262389009,
7399 "start" : 607.2542372881356,
7400 "track" : "v2"
7401 },
7402 {
7403 "duration" : 10.677966101694892,
7404 "fadeIn" : 0,
7405 "fadeOut" : 0,
7406 "id" : "5AC16FB7-ABB0-462A-926D-6657645660DB",
7407 "kind" : "video",
7408 "linkId" : "5715D6B2-69B7-4806-A021-82A001C82B8D",
7409 "mediaId" : "D866E8BE-A5B1-4B51-B465-D3F753701CCE",
7410 "muted" : false,
7411 "newShot" : false,
7412 "speed" : 1,
7413 "srcIn" : 2022.673655252781,
7414 "start" : 607.2542372881356,
7415 "track" : "v3"
7416 },
7417 {
7418 "duration" : 10.677966101694892,
7419 "fadeIn" : 0,
7420 "fadeOut" : 0,
7421 "id" : "7EC1D808-B244-481D-AEED-29FBAD17A539",
7422 "kind" : "video",
7423 "linkId" : "5715D6B2-69B7-4806-A021-82A001C82B8D",
7424 "mediaId" : "92E85F7F-CA8B-473D-82F6-C7A7418875B1",
7425 "muted" : false,
7426 "newShot" : false,
7427 "speed" : 1,
7428 "srcIn" : 2022.673650668782,
7429 "start" : 607.2542372881356,
7430 "track" : "v4"
7431 },
7432 {
7433 "duration" : 3.627118644067764,
7434 "fadeIn" : 0,
7435 "fadeOut" : 0,
7436 "id" : "60AAA140-4B79-4568-92FB-E8B2070677B4",
7437 "kind" : "video",
7438 "linkId" : "7A62ADBD-0427-472A-880B-89AAE3A2A8F4",
7439 "mediaId" : "40BBB768-793D-44DA-BBC9-B22F6591159D",
7440 "muted" : false,
7441 "newShot" : false,
7442 "speed" : 1,
7443 "srcIn" : 2045.2881355932209,
7444 "start" : 617.9322033898305,
7445 "track" : "v0"
7446 },
7447 {
7448 "duration" : 3.627118644067764,
7449 "fadeIn" : 0,
7450 "fadeOut" : 0,
7451 "id" : "AA1ADCAE-DA36-4FF1-A7CC-6C3B75A693B7",
7452 "kind" : "audio",
7453 "linkId" : "7A62ADBD-0427-472A-880B-89AAE3A2A8F4",
7454 "mediaId" : "55C13A17-0423-4BC0-93A6-3FEFD02E7FC6",
7455 "muted" : true,
7456 "newShot" : false,
7457 "speed" : 1,
7458 "srcIn" : 2045.2042640518798,
7459 "start" : 617.9322033898305,
7460 "track" : "v1"
7461 },
7462 {
7463 "duration" : 3.627118644067764,
7464 "fadeIn" : 0,
7465 "fadeOut" : 0,
7466 "id" : "C3588EA8-F756-402E-B6EC-A9C9772EB504",
7467 "kind" : "audio",
7468 "linkId" : "7A62ADBD-0427-472A-880B-89AAE3A2A8F4",
7469 "mediaId" : "501034F8-09AC-44B1-8826-FCE9B36C68F9",
7470 "muted" : false,
7471 "newShot" : false,
7472 "speed" : 1,
7473 "srcIn" : 2045.2509403551107,
7474 "start" : 617.9322033898305,
7475 "track" : "v2"
7476 },
7477 {
7478 "duration" : 3.627118644067764,
7479 "fadeIn" : 0,
7480 "fadeOut" : 0,
7481 "id" : "8A86F818-17D6-4DA6-806A-BD6E61EDD16A",
7482 "kind" : "video",
7483 "linkId" : "7A62ADBD-0427-472A-880B-89AAE3A2A8F4",
7484 "mediaId" : "D866E8BE-A5B1-4B51-B465-D3F753701CCE",
7485 "muted" : false,
7486 "newShot" : false,
7487 "speed" : 1,
7488 "srcIn" : 2045.1143332188826,
7489 "start" : 617.9322033898305,
7490 "track" : "v3"
7491 },
7492 {
7493 "duration" : 3.627118644067764,
7494 "fadeIn" : 0,
7495 "fadeOut" : 0,
7496 "id" : "DF8175BF-3E2D-4B78-8761-2798CBEEB331",
7497 "kind" : "video",
7498 "linkId" : "7A62ADBD-0427-472A-880B-89AAE3A2A8F4",
7499 "mediaId" : "92E85F7F-CA8B-473D-82F6-C7A7418875B1",
7500 "muted" : false,
7501 "newShot" : false,
7502 "speed" : 1,
7503 "srcIn" : 2045.1143286348838,
7504 "start" : 617.9322033898305,
7505 "track" : "v4"
7506 },
7507 {
7508 "duration" : 2.4067796610169125,
7509 "fadeIn" : 0,
7510 "fadeOut" : 0,
7511 "id" : "0079348D-917B-4B45-A779-BE7BDA967808",
7512 "kind" : "video",
7513 "linkId" : "B5A3F4FE-CCAA-45AE-A6FB-0579F3BF1536",
7514 "mediaId" : "40BBB768-793D-44DA-BBC9-B22F6591159D",
7515 "muted" : false,
7516 "newShot" : false,
7517 "speed" : 1,
7518 "srcIn" : 2050.542372881356,
7519 "start" : 621.5593220338983,
7520 "track" : "v0"
7521 },
7522 {
7523 "duration" : 2.4067796610169125,
7524 "fadeIn" : 0,
7525 "fadeOut" : 0,
7526 "id" : "2D8FE96C-46AE-4C66-B4A5-30D8857C61FB",
7527 "kind" : "audio",
7528 "linkId" : "B5A3F4FE-CCAA-45AE-A6FB-0579F3BF1536",
7529 "mediaId" : "55C13A17-0423-4BC0-93A6-3FEFD02E7FC6",
7530 "muted" : true,
7531 "newShot" : false,
7532 "speed" : 1,
7533 "srcIn" : 2050.458501340015,
7534 "start" : 621.5593220338983,
7535 "track" : "v1"
7536 },
7537 {
7538 "duration" : 2.4067796610169125,
7539 "fadeIn" : 0,
7540 "fadeOut" : 0,
7541 "id" : "B675F446-CEBF-4F4A-B344-F62184FADF3B",
7542 "kind" : "audio",
7543 "linkId" : "B5A3F4FE-CCAA-45AE-A6FB-0579F3BF1536",
7544 "mediaId" : "501034F8-09AC-44B1-8826-FCE9B36C68F9",
7545 "muted" : false,
7546 "newShot" : false,
7547 "speed" : 1,
7548 "srcIn" : 2050.505177643246,
7549 "start" : 621.5593220338983,
7550 "track" : "v2"
7551 },
7552 {
7553 "duration" : 2.4067796610169125,
7554 "fadeIn" : 0,
7555 "fadeOut" : 0,
7556 "id" : "C21A6286-77CE-4A32-B617-2710BCE8CBD9",
7557 "kind" : "video",
7558 "linkId" : "B5A3F4FE-CCAA-45AE-A6FB-0579F3BF1536",
7559 "mediaId" : "D866E8BE-A5B1-4B51-B465-D3F753701CCE",
7560 "muted" : false,
7561 "newShot" : false,
7562 "speed" : 1,
7563 "srcIn" : 2050.368570507018,
7564 "start" : 621.5593220338983,
7565 "track" : "v3"
7566 },
7567 {
7568 "duration" : 2.4067796610169125,
7569 "fadeIn" : 0,
7570 "fadeOut" : 0,
7571 "id" : "64279978-B9D7-4E8D-AFED-D7913E1B9532",
7572 "kind" : "video",
7573 "linkId" : "B5A3F4FE-CCAA-45AE-A6FB-0579F3BF1536",
7574 "mediaId" : "92E85F7F-CA8B-473D-82F6-C7A7418875B1",
7575 "muted" : false,
7576 "newShot" : false,
7577 "speed" : 1,
7578 "srcIn" : 2050.368565923019,
7579 "start" : 621.5593220338983,
7580 "track" : "v4"
7581 },
7582 {
7583 "duration" : 3.4237288135593644,
7584 "fadeIn" : 0,
7585 "fadeOut" : 0,
7586 "id" : "A040FD6A-EC96-415F-8D28-7B4691F99BF3",
7587 "kind" : "video",
7588 "linkId" : "0F6F0554-6C53-4419-B9B3-D9C2EE7D2267",
7589 "mediaId" : "40BBB768-793D-44DA-BBC9-B22F6591159D",
7590 "muted" : false,
7591 "newShot" : false,
7592 "speed" : 1,
7593 "srcIn" : 2052.949152542373,
7594 "start" : 623.9661016949152,
7595 "track" : "v0"
7596 },
7597 {
7598 "duration" : 3.4237288135593644,
7599 "fadeIn" : 0,
7600 "fadeOut" : 0,
7601 "id" : "6AC76567-F75D-4A33-B204-A10F431BBFDD",
7602 "kind" : "audio",
7603 "linkId" : "0F6F0554-6C53-4419-B9B3-D9C2EE7D2267",
7604 "mediaId" : "55C13A17-0423-4BC0-93A6-3FEFD02E7FC6",
7605 "muted" : true,
7606 "newShot" : false,
7607 "speed" : 1,
7608 "srcIn" : 2052.865281001032,
7609 "start" : 623.9661016949152,
7610 "track" : "v1"
7611 },
7612 {
7613 "duration" : 3.4237288135593644,
7614 "fadeIn" : 0,
7615 "fadeOut" : 0,
7616 "id" : "FA9C2797-0EB0-4B75-A617-5D4CF590AC43",
7617 "kind" : "audio",
7618 "linkId" : "0F6F0554-6C53-4419-B9B3-D9C2EE7D2267",
7619 "mediaId" : "501034F8-09AC-44B1-8826-FCE9B36C68F9",
7620 "muted" : false,
7621 "newShot" : false,
7622 "speed" : 1,
7623 "srcIn" : 2052.911957304263,
7624 "start" : 623.9661016949152,
7625 "track" : "v2"
7626 },
7627 {
7628 "duration" : 3.4237288135593644,
7629 "fadeIn" : 0,
7630 "fadeOut" : 0,
7631 "id" : "429309C1-5820-4F55-97F5-8FBD04302BA5",
7632 "kind" : "video",
7633 "linkId" : "0F6F0554-6C53-4419-B9B3-D9C2EE7D2267",
7634 "mediaId" : "D866E8BE-A5B1-4B51-B465-D3F753701CCE",
7635 "muted" : false,
7636 "newShot" : false,
7637 "speed" : 1,
7638 "srcIn" : 2052.775350168035,
7639 "start" : 623.9661016949152,
7640 "track" : "v3"
7641 },
7642 {
7643 "duration" : 3.4237288135593644,
7644 "fadeIn" : 0,
7645 "fadeOut" : 0,
7646 "id" : "89C2D014-50A7-43ED-AE56-0AA708FA28ED",
7647 "kind" : "video",
7648 "linkId" : "0F6F0554-6C53-4419-B9B3-D9C2EE7D2267",
7649 "mediaId" : "92E85F7F-CA8B-473D-82F6-C7A7418875B1",
7650 "muted" : false,
7651 "newShot" : false,
7652 "speed" : 1,
7653 "srcIn" : 2052.775345584036,
7654 "start" : 623.9661016949152,
7655 "track" : "v4"
7656 },
7657 {
7658 "duration" : 5.69491525423723,
7659 "fadeIn" : 0,
7660 "fadeOut" : 0,
7661 "id" : "01E331DE-F3BA-42B2-B95C-4FA7802600C4",
7662 "kind" : "video",
7663 "linkId" : "681599CE-614B-4D54-9956-0A2F59A0C020",
7664 "mediaId" : "40BBB768-793D-44DA-BBC9-B22F6591159D",
7665 "muted" : false,
7666 "newShot" : false,
7667 "speed" : 1,
7668 "srcIn" : 2114.6779661016953,
7669 "start" : 627.3898305084746,
7670 "track" : "v0"
7671 },
7672 {
7673 "duration" : 5.69491525423723,
7674 "fadeIn" : 0,
7675 "fadeOut" : 0,
7676 "id" : "602A3DDB-AB74-45B5-8FAE-A660E6CA2700",
7677 "kind" : "audio",
7678 "linkId" : "681599CE-614B-4D54-9956-0A2F59A0C020",
7679 "mediaId" : "55C13A17-0423-4BC0-93A6-3FEFD02E7FC6",
7680 "muted" : true,
7681 "newShot" : false,
7682 "speed" : 1,
7683 "srcIn" : 2114.5940945603543,
7684 "start" : 627.3898305084746,
7685 "track" : "v1"
7686 },
7687 {
7688 "duration" : 5.69491525423723,
7689 "fadeIn" : 0,
7690 "fadeOut" : 0,
7691 "id" : "0BA636D9-34A5-47E7-9BC5-0BDD5579680E",
7692 "kind" : "audio",
7693 "linkId" : "681599CE-614B-4D54-9956-0A2F59A0C020",
7694 "mediaId" : "501034F8-09AC-44B1-8826-FCE9B36C68F9",
7695 "muted" : false,
7696 "newShot" : false,
7697 "speed" : 1,
7698 "srcIn" : 2114.640770863585,
7699 "start" : 627.3898305084746,
7700 "track" : "v2"
7701 },
7702 {
7703 "duration" : 5.69491525423723,
7704 "fadeIn" : 0,
7705 "fadeOut" : 0,
7706 "id" : "4E01905E-2230-4C63-9855-875F6C89C92B",
7707 "kind" : "video",
7708 "linkId" : "681599CE-614B-4D54-9956-0A2F59A0C020",
7709 "mediaId" : "D866E8BE-A5B1-4B51-B465-D3F753701CCE",
7710 "muted" : false,
7711 "newShot" : false,
7712 "speed" : 1,
7713 "srcIn" : 2114.504163727357,
7714 "start" : 627.3898305084746,
7715 "track" : "v3"
7716 },
7717 {
7718 "duration" : 5.69491525423723,
7719 "fadeIn" : 0,
7720 "fadeOut" : 0,
7721 "id" : "78183D76-36AF-4F77-8481-6336BB1F1340",
7722 "kind" : "video",
7723 "linkId" : "681599CE-614B-4D54-9956-0A2F59A0C020",
7724 "mediaId" : "92E85F7F-CA8B-473D-82F6-C7A7418875B1",
7725 "muted" : false,
7726 "newShot" : false,
7727 "speed" : 1,
7728 "srcIn" : 2114.5041591433583,
7729 "start" : 627.3898305084746,
7730 "track" : "v4"
7731 },
7732 {
7733 "duration" : 15.76271186440681,
7734 "fadeIn" : 0,
7735 "fadeOut" : 0,
7736 "id" : "581AB06A-CA87-43B3-9083-3BF4CA1B488F",
7737 "kind" : "video",
7738 "linkId" : "54C20EBF-C3C2-46DA-929B-9C51CBA0B7D6",
7739 "mediaId" : "40BBB768-793D-44DA-BBC9-B22F6591159D",
7740 "muted" : false,
7741 "newShot" : false,
7742 "speed" : 1,
7743 "srcIn" : 2230.1694915254243,
7744 "start" : 633.0847457627118,
7745 "track" : "v0"
7746 },
7747 {
7748 "duration" : 15.76271186440681,
7749 "fadeIn" : 0,
7750 "fadeOut" : 0,
7751 "id" : "39BA14C0-0C38-4545-B0B0-C33EB72363EF",
7752 "kind" : "audio",
7753 "linkId" : "54C20EBF-C3C2-46DA-929B-9C51CBA0B7D6",
7754 "mediaId" : "55C13A17-0423-4BC0-93A6-3FEFD02E7FC6",
7755 "muted" : true,
7756 "newShot" : false,
7757 "speed" : 1,
7758 "srcIn" : 2230.085619984083,
7759 "start" : 633.0847457627118,
7760 "track" : "v1"
7761 },
7762 {
7763 "duration" : 15.76271186440681,
7764 "fadeIn" : 0,
7765 "fadeOut" : 0,
7766 "id" : "2161011F-CC8E-4C61-8661-7A947C751069",
7767 "kind" : "audio",
7768 "linkId" : "54C20EBF-C3C2-46DA-929B-9C51CBA0B7D6",
7769 "mediaId" : "501034F8-09AC-44B1-8826-FCE9B36C68F9",
7770 "muted" : false,
7771 "newShot" : false,
7772 "speed" : 1,
7773 "srcIn" : 2230.132296287314,
7774 "start" : 633.0847457627118,
7775 "track" : "v2"
7776 },
7777 {
7778 "duration" : 15.76271186440681,
7779 "fadeIn" : 0,
7780 "fadeOut" : 0,
7781 "id" : "7265B315-57C1-47FB-A27C-3AB7B8CA1004",
7782 "kind" : "video",
7783 "linkId" : "54C20EBF-C3C2-46DA-929B-9C51CBA0B7D6",
7784 "mediaId" : "D866E8BE-A5B1-4B51-B465-D3F753701CCE",
7785 "muted" : false,
7786 "newShot" : false,
7787 "speed" : 1,
7788 "srcIn" : 2229.995689151086,
7789 "start" : 633.0847457627118,
7790 "track" : "v3"
7791 },
7792 {
7793 "duration" : 15.76271186440681,
7794 "fadeIn" : 0,
7795 "fadeOut" : 0,
7796 "id" : "EFC80E51-0F05-4B16-8596-E78F73CB045F",
7797 "kind" : "video",
7798 "linkId" : "54C20EBF-C3C2-46DA-929B-9C51CBA0B7D6",
7799 "mediaId" : "92E85F7F-CA8B-473D-82F6-C7A7418875B1",
7800 "muted" : false,
7801 "newShot" : false,
7802 "speed" : 1,
7803 "srcIn" : 2229.995684567087,
7804 "start" : 633.0847457627118,
7805 "track" : "v4"
7806 },
7807 {
7808 "duration" : 3.3898305084745743,
7809 "fadeIn" : 0,
7810 "fadeOut" : 0,
7811 "id" : "8BD87ADB-1AA9-4B14-9370-4DF20E448896",
7812 "kind" : "video",
7813 "linkId" : "C2740056-FAEB-4E91-9E00-112253797C46",
7814 "mediaId" : "40BBB768-793D-44DA-BBC9-B22F6591159D",
7815 "muted" : false,
7816 "newShot" : false,
7817 "speed" : 1,
7818 "srcIn" : 2256.372881355933,
7819 "start" : 648.8474576271186,
7820 "track" : "v0"
7821 },
7822 {
7823 "duration" : 3.3898305084745743,
7824 "fadeIn" : 0,
7825 "fadeOut" : 0,
7826 "id" : "7A48AFF3-E08F-437C-AC57-92133246569E",
7827 "kind" : "audio",
7828 "linkId" : "C2740056-FAEB-4E91-9E00-112253797C46",
7829 "mediaId" : "55C13A17-0423-4BC0-93A6-3FEFD02E7FC6",
7830 "muted" : true,
7831 "newShot" : false,
7832 "speed" : 1,
7833 "srcIn" : 2256.2890098145917,
7834 "start" : 648.8474576271186,
7835 "track" : "v1"
7836 },
7837 {
7838 "duration" : 3.3898305084745743,
7839 "fadeIn" : 0,
7840 "fadeOut" : 0,
7841 "id" : "E427E26F-1FDB-4742-A1E4-015E32255D38",
7842 "kind" : "audio",
7843 "linkId" : "C2740056-FAEB-4E91-9E00-112253797C46",
7844 "mediaId" : "501034F8-09AC-44B1-8826-FCE9B36C68F9",
7845 "muted" : false,
7846 "newShot" : false,
7847 "speed" : 1,
7848 "srcIn" : 2256.3356861178227,
7849 "start" : 648.8474576271186,
7850 "track" : "v2"
7851 },
7852 {
7853 "duration" : 3.3898305084745743,
7854 "fadeIn" : 0,
7855 "fadeOut" : 0,
7856 "id" : "107EE1C9-66CC-4E8E-9743-C6900E649621",
7857 "kind" : "video",
7858 "linkId" : "C2740056-FAEB-4E91-9E00-112253797C46",
7859 "mediaId" : "D866E8BE-A5B1-4B51-B465-D3F753701CCE",
7860 "muted" : false,
7861 "newShot" : false,
7862 "speed" : 1,
7863 "srcIn" : 2256.1990789815945,
7864 "start" : 648.8474576271186,
7865 "track" : "v3"
7866 },
7867 {
7868 "duration" : 3.3898305084745743,
7869 "fadeIn" : 0,
7870 "fadeOut" : 0,
7871 "id" : "D7AAC444-EA58-4486-9341-92E3C325D17F",
7872 "kind" : "video",
7873 "linkId" : "C2740056-FAEB-4E91-9E00-112253797C46",
7874 "mediaId" : "92E85F7F-CA8B-473D-82F6-C7A7418875B1",
7875 "muted" : false,
7876 "newShot" : false,
7877 "speed" : 1,
7878 "srcIn" : 2256.1990743975957,
7879 "start" : 648.8474576271186,
7880 "track" : "v4"
7881 },
7882 {
7883 "duration" : 15.423728813559364,
7884 "fadeIn" : 0,
7885 "fadeOut" : 0,
7886 "id" : "4754E275-63E9-4C43-8DBD-3771650BDEB8",
7887 "kind" : "video",
7888 "linkId" : "FF0D729E-3013-4F28-A488-DBD70296587F",
7889 "mediaId" : "40BBB768-793D-44DA-BBC9-B22F6591159D",
7890 "muted" : false,
7891 "newShot" : false,
7892 "speed" : 1,
7893 "srcIn" : 2280.9491525423737,
7894 "start" : 652.2372881355932,
7895 "track" : "v0"
7896 },
7897 {
7898 "duration" : 15.423728813559364,
7899 "fadeIn" : 0,
7900 "fadeOut" : 0,
7901 "id" : "A8BCA6E8-0804-4D39-8229-30DF2DFBF320",
7902 "kind" : "audio",
7903 "linkId" : "FF0D729E-3013-4F28-A488-DBD70296587F",
7904 "mediaId" : "55C13A17-0423-4BC0-93A6-3FEFD02E7FC6",
7905 "muted" : true,
7906 "newShot" : false,
7907 "speed" : 1,
7908 "srcIn" : 2280.8652810010326,
7909 "start" : 652.2372881355932,
7910 "track" : "v1"
7911 },
7912 {
7913 "duration" : 15.423728813559364,
7914 "fadeIn" : 0,
7915 "fadeOut" : 0,
7916 "id" : "2A8D5833-B3BC-4A82-A7E7-6319DFF51DC3",
7917 "kind" : "audio",
7918 "linkId" : "FF0D729E-3013-4F28-A488-DBD70296587F",
7919 "mediaId" : "501034F8-09AC-44B1-8826-FCE9B36C68F9",
7920 "muted" : false,
7921 "newShot" : false,
7922 "speed" : 1,
7923 "srcIn" : 2280.9119573042635,
7924 "start" : 652.2372881355932,
7925 "track" : "v2"
7926 },
7927 {
7928 "duration" : 15.423728813559364,
7929 "fadeIn" : 0,
7930 "fadeOut" : 0,
7931 "id" : "B8963AE1-23D3-4C35-B241-00A5396F4DD7",
7932 "kind" : "video",
7933 "linkId" : "FF0D729E-3013-4F28-A488-DBD70296587F",
7934 "mediaId" : "D866E8BE-A5B1-4B51-B465-D3F753701CCE",
7935 "muted" : false,
7936 "newShot" : false,
7937 "speed" : 1,
7938 "srcIn" : 2280.7753501680354,
7939 "start" : 652.2372881355932,
7940 "track" : "v3"
7941 },
7942 {
7943 "duration" : 15.423728813559364,
7944 "fadeIn" : 0,
7945 "fadeOut" : 0,
7946 "id" : "1FC80A57-7A45-4C7D-9200-0C1A48A3D6F5",
7947 "kind" : "video",
7948 "linkId" : "FF0D729E-3013-4F28-A488-DBD70296587F",
7949 "mediaId" : "92E85F7F-CA8B-473D-82F6-C7A7418875B1",
7950 "muted" : false,
7951 "newShot" : false,
7952 "speed" : 1,
7953 "srcIn" : 2280.7753455840366,
7954 "start" : 652.2372881355932,
7955 "track" : "v4"
7956 },
7957 {
7958 "duration" : 12.745762711864359,
7959 "fadeIn" : 0,
7960 "fadeOut" : 0,
7961 "id" : "0CA818E8-62B3-474A-8050-49368421A90E",
7962 "kind" : "video",
7963 "linkId" : "C5B9230A-8789-4FD4-B107-6702F012D99A",
7964 "mediaId" : "40BBB768-793D-44DA-BBC9-B22F6591159D",
7965 "muted" : false,
7966 "newShot" : false,
7967 "speed" : 1,
7968 "srcIn" : 2296.372881355933,
7969 "start" : 667.6610169491526,
7970 "track" : "v0"
7971 },
7972 {
7973 "duration" : 12.745762711864359,
7974 "fadeIn" : 0,
7975 "fadeOut" : 0,
7976 "id" : "EB3722EC-6C38-40B2-B519-694180267E3A",
7977 "kind" : "audio",
7978 "linkId" : "C5B9230A-8789-4FD4-B107-6702F012D99A",
7979 "mediaId" : "55C13A17-0423-4BC0-93A6-3FEFD02E7FC6",
7980 "muted" : true,
7981 "newShot" : false,
7982 "speed" : 1,
7983 "srcIn" : 2296.2890098145917,
7984 "start" : 667.6610169491526,
7985 "track" : "v1"
7986 },
7987 {
7988 "duration" : 12.745762711864359,
7989 "fadeIn" : 0,
7990 "fadeOut" : 0,
7991 "id" : "A797E488-873A-4FC3-816A-D61A73E2F1D9",
7992 "kind" : "audio",
7993 "linkId" : "C5B9230A-8789-4FD4-B107-6702F012D99A",
7994 "mediaId" : "501034F8-09AC-44B1-8826-FCE9B36C68F9",
7995 "muted" : false,
7996 "newShot" : false,
7997 "speed" : 1,
7998 "srcIn" : 2296.3356861178227,
7999 "start" : 667.6610169491526,
8000 "track" : "v2"
8001 },
8002 {
8003 "duration" : 12.745762711864359,
8004 "fadeIn" : 0,
8005 "fadeOut" : 0,
8006 "id" : "75FC92A1-B149-4AB0-A366-35F476711F59",
8007 "kind" : "video",
8008 "linkId" : "C5B9230A-8789-4FD4-B107-6702F012D99A",
8009 "mediaId" : "D866E8BE-A5B1-4B51-B465-D3F753701CCE",
8010 "muted" : false,
8011 "newShot" : false,
8012 "speed" : 1,
8013 "srcIn" : 2296.1990789815945,
8014 "start" : 667.6610169491526,
8015 "track" : "v3"
8016 },
8017 {
8018 "duration" : 12.745762711864359,
8019 "fadeIn" : 0,
8020 "fadeOut" : 0,
8021 "id" : "5B3388A0-5AC5-481F-8DD8-BED12840C1D9",
8022 "kind" : "video",
8023 "linkId" : "C5B9230A-8789-4FD4-B107-6702F012D99A",
8024 "mediaId" : "92E85F7F-CA8B-473D-82F6-C7A7418875B1",
8025 "muted" : false,
8026 "newShot" : false,
8027 "speed" : 1,
8028 "srcIn" : 2296.1990743975957,
8029 "start" : 667.6610169491526,
8030 "track" : "v4"
8031 },
8032 {
8033 "duration" : 4.677966101695006,
8034 "fadeIn" : 0,
8035 "fadeOut" : 0,
8036 "id" : "5A8649A2-00AB-447F-BC8C-3085E8695184",
8037 "kind" : "video",
8038 "linkId" : "2782DABC-F157-44FA-B15C-F2D70A28D22C",
8039 "mediaId" : "40BBB768-793D-44DA-BBC9-B22F6591159D",
8040 "muted" : false,
8041 "newShot" : false,
8042 "speed" : 1,
8043 "srcIn" : 2313.254237288136,
8044 "start" : 680.4067796610169,
8045 "track" : "v0"
8046 },
8047 {
8048 "duration" : 4.677966101695006,
8049 "fadeIn" : 0,
8050 "fadeOut" : 0,
8051 "id" : "EAC07860-D644-40FF-9A4D-08BD56F332C4",
8052 "kind" : "audio",
8053 "linkId" : "2782DABC-F157-44FA-B15C-F2D70A28D22C",
8054 "mediaId" : "55C13A17-0423-4BC0-93A6-3FEFD02E7FC6",
8055 "muted" : true,
8056 "newShot" : false,
8057 "speed" : 1,
8058 "srcIn" : 2313.170365746795,
8059 "start" : 680.4067796610169,
8060 "track" : "v1"
8061 },
8062 {
8063 "duration" : 4.677966101695006,
8064 "fadeIn" : 0,
8065 "fadeOut" : 0,
8066 "id" : "0950EA6E-C41F-453A-9C62-F24BC14CD76E",
8067 "kind" : "audio",
8068 "linkId" : "2782DABC-F157-44FA-B15C-F2D70A28D22C",
8069 "mediaId" : "501034F8-09AC-44B1-8826-FCE9B36C68F9",
8070 "muted" : false,
8071 "newShot" : false,
8072 "speed" : 1,
8073 "srcIn" : 2313.217042050026,
8074 "start" : 680.4067796610169,
8075 "track" : "v2"
8076 },
8077 {
8078 "duration" : 4.677966101695006,
8079 "fadeIn" : 0,
8080 "fadeOut" : 0,
8081 "id" : "C0EBCCE6-06A8-4958-8643-35B908EA7C98",
8082 "kind" : "video",
8083 "linkId" : "2782DABC-F157-44FA-B15C-F2D70A28D22C",
8084 "mediaId" : "D866E8BE-A5B1-4B51-B465-D3F753701CCE",
8085 "muted" : false,
8086 "newShot" : false,
8087 "speed" : 1,
8088 "srcIn" : 2313.080434913798,
8089 "start" : 680.4067796610169,
8090 "track" : "v3"
8091 },
8092 {
8093 "duration" : 4.677966101695006,
8094 "fadeIn" : 0,
8095 "fadeOut" : 0,
8096 "id" : "7D753BA0-2851-4A2B-B1AB-52234E029F7C",
8097 "kind" : "video",
8098 "linkId" : "2782DABC-F157-44FA-B15C-F2D70A28D22C",
8099 "mediaId" : "92E85F7F-CA8B-473D-82F6-C7A7418875B1",
8100 "muted" : false,
8101 "newShot" : false,
8102 "speed" : 1,
8103 "srcIn" : 2313.080430329799,
8104 "start" : 680.4067796610169,
8105 "track" : "v4"
8106 },
8107 {
8108 "duration" : 19.186440677966175,
8109 "fadeIn" : 0,
8110 "fadeOut" : 0,
8111 "id" : "B4AB14C4-4491-499A-8505-0934B993F07B",
8112 "kind" : "video",
8113 "linkId" : "028E7FFC-FA84-47CF-8683-266C5E78C890",
8114 "mediaId" : "40BBB768-793D-44DA-BBC9-B22F6591159D",
8115 "muted" : false,
8116 "newShot" : false,
8117 "speed" : 1,
8118 "srcIn" : 2414.6440677966107,
8119 "start" : 685.0847457627119,
8120 "track" : "v0"
8121 },
8122 {
8123 "duration" : 19.186440677966175,
8124 "fadeIn" : 0,
8125 "fadeOut" : 0,
8126 "id" : "36653084-A594-47D9-82C7-05282A42CE6C",
8127 "kind" : "audio",
8128 "linkId" : "028E7FFC-FA84-47CF-8683-266C5E78C890",
8129 "mediaId" : "55C13A17-0423-4BC0-93A6-3FEFD02E7FC6",
8130 "muted" : true,
8131 "newShot" : false,
8132 "speed" : 1,
8133 "srcIn" : 2414.5601962552696,
8134 "start" : 685.0847457627119,
8135 "track" : "v1"
8136 },
8137 {
8138 "duration" : 19.186440677966175,
8139 "fadeIn" : 0,
8140 "fadeOut" : 0,
8141 "id" : "5A23146F-8246-498B-AC51-C4FE4B6C4DDA",
8142 "kind" : "audio",
8143 "linkId" : "028E7FFC-FA84-47CF-8683-266C5E78C890",
8144 "mediaId" : "501034F8-09AC-44B1-8826-FCE9B36C68F9",
8145 "muted" : false,
8146 "newShot" : false,
8147 "speed" : 1,
8148 "srcIn" : 2414.6068725585005,
8149 "start" : 685.0847457627119,
8150 "track" : "v2"
8151 },
8152 {
8153 "duration" : 19.186440677966175,
8154 "fadeIn" : 0,
8155 "fadeOut" : 0,
8156 "id" : "C7D8CAF3-5789-4F76-924A-24654359FD7F",
8157 "kind" : "video",
8158 "linkId" : "028E7FFC-FA84-47CF-8683-266C5E78C890",
8159 "mediaId" : "D866E8BE-A5B1-4B51-B465-D3F753701CCE",
8160 "muted" : false,
8161 "newShot" : false,
8162 "speed" : 1,
8163 "srcIn" : 2414.4702654222724,
8164 "start" : 685.0847457627119,
8165 "track" : "v3"
8166 },
8167 {
8168 "duration" : 19.186440677966175,
8169 "fadeIn" : 0,
8170 "fadeOut" : 0,
8171 "id" : "DFB2B3EE-B824-4672-A351-269C20BF2ADE",
8172 "kind" : "video",
8173 "linkId" : "028E7FFC-FA84-47CF-8683-266C5E78C890",
8174 "mediaId" : "92E85F7F-CA8B-473D-82F6-C7A7418875B1",
8175 "muted" : false,
8176 "newShot" : false,
8177 "speed" : 1,
8178 "srcIn" : 2414.4702608382736,
8179 "start" : 685.0847457627119,
8180 "track" : "v4"
8181 },
8182 {
8183 "duration" : 5.694915254237344,
8184 "fadeIn" : 0,
8185 "fadeOut" : 0,
8186 "id" : "EB2F9D36-DD5F-468C-9DA8-90D56D42E0A9",
8187 "kind" : "video",
8188 "linkId" : "DDA38179-F497-4A55-8BF0-09672B42936C",
8189 "mediaId" : "40BBB768-793D-44DA-BBC9-B22F6591159D",
8190 "muted" : false,
8191 "newShot" : false,
8192 "speed" : 1,
8193 "srcIn" : 2446.1355932203396,
8194 "start" : 704.2711864406781,
8195 "track" : "v0"
8196 },
8197 {
8198 "duration" : 5.694915254237344,
8199 "fadeIn" : 0,
8200 "fadeOut" : 0,
8201 "id" : "D07C45CE-44A0-4FEF-8F34-54E4FD3F7D39",
8202 "kind" : "audio",
8203 "linkId" : "DDA38179-F497-4A55-8BF0-09672B42936C",
8204 "mediaId" : "55C13A17-0423-4BC0-93A6-3FEFD02E7FC6",
8205 "muted" : true,
8206 "newShot" : false,
8207 "speed" : 1,
8208 "srcIn" : 2446.0517216789985,
8209 "start" : 704.2711864406781,
8210 "track" : "v1"
8211 },
8212 {
8213 "duration" : 5.694915254237344,
8214 "fadeIn" : 0,
8215 "fadeOut" : 0,
8216 "id" : "A22E3A44-8F76-4713-9D7F-7948A74D9CCC",
8217 "kind" : "audio",
8218 "linkId" : "DDA38179-F497-4A55-8BF0-09672B42936C",
8219 "mediaId" : "501034F8-09AC-44B1-8826-FCE9B36C68F9",
8220 "muted" : false,
8221 "newShot" : false,
8222 "speed" : 1,
8223 "srcIn" : 2446.0983979822295,
8224 "start" : 704.2711864406781,
8225 "track" : "v2"
8226 },
8227 {
8228 "duration" : 5.694915254237344,
8229 "fadeIn" : 0,
8230 "fadeOut" : 0,
8231 "id" : "15C53598-6F8F-4C89-B6EE-8BEAEA74F23A",
8232 "kind" : "video",
8233 "linkId" : "DDA38179-F497-4A55-8BF0-09672B42936C",
8234 "mediaId" : "D866E8BE-A5B1-4B51-B465-D3F753701CCE",
8235 "muted" : false,
8236 "newShot" : false,
8237 "speed" : 1,
8238 "srcIn" : 2445.9617908460013,
8239 "start" : 704.2711864406781,
8240 "track" : "v3"
8241 },
8242 {
8243 "duration" : 5.694915254237344,
8244 "fadeIn" : 0,
8245 "fadeOut" : 0,
8246 "id" : "FB595553-A66D-4B22-8173-3AAE10CB58D0",
8247 "kind" : "video",
8248 "linkId" : "DDA38179-F497-4A55-8BF0-09672B42936C",
8249 "mediaId" : "92E85F7F-CA8B-473D-82F6-C7A7418875B1",
8250 "muted" : false,
8251 "newShot" : false,
8252 "speed" : 1,
8253 "srcIn" : 2445.9617862620025,
8254 "start" : 704.2711864406781,
8255 "track" : "v4"
8256 },
8257 {
8258 "duration" : 9.59322033898286,
8259 "fadeIn" : 0,
8260 "fadeOut" : 0,
8261 "id" : "815EF8E2-F1E8-4B38-829B-D2C6971FDCD7",
8262 "kind" : "video",
8263 "linkId" : "1D15D7CC-5494-459C-BAF8-DD757B81547D",
8264 "mediaId" : "40BBB768-793D-44DA-BBC9-B22F6591159D",
8265 "muted" : false,
8266 "newShot" : false,
8267 "speed" : 1,
8268 "srcIn" : 2454.1355932203396,
8269 "start" : 709.9661016949154,
8270 "track" : "v0"
8271 },
8272 {
8273 "duration" : 9.59322033898286,
8274 "fadeIn" : 0,
8275 "fadeOut" : 0,
8276 "id" : "6599B7E9-8BC7-4339-8544-580C7E40A6B3",
8277 "kind" : "audio",
8278 "linkId" : "1D15D7CC-5494-459C-BAF8-DD757B81547D",
8279 "mediaId" : "55C13A17-0423-4BC0-93A6-3FEFD02E7FC6",
8280 "muted" : true,
8281 "newShot" : false,
8282 "speed" : 1,
8283 "srcIn" : 2454.0517216789985,
8284 "start" : 709.9661016949154,
8285 "track" : "v1"
8286 },
8287 {
8288 "duration" : 9.59322033898286,
8289 "fadeIn" : 0,
8290 "fadeOut" : 0,
8291 "id" : "913AD485-580A-4CF5-832E-3A866323A594",
8292 "kind" : "audio",
8293 "linkId" : "1D15D7CC-5494-459C-BAF8-DD757B81547D",
8294 "mediaId" : "501034F8-09AC-44B1-8826-FCE9B36C68F9",
8295 "muted" : false,
8296 "newShot" : false,
8297 "speed" : 1,
8298 "srcIn" : 2454.0983979822295,
8299 "start" : 709.9661016949154,
8300 "track" : "v2"
8301 },
8302 {
8303 "duration" : 9.59322033898286,
8304 "fadeIn" : 0,
8305 "fadeOut" : 0,
8306 "id" : "3F04DEF9-CD7C-486B-913A-989ECE77DE57",
8307 "kind" : "video",
8308 "linkId" : "1D15D7CC-5494-459C-BAF8-DD757B81547D",
8309 "mediaId" : "D866E8BE-A5B1-4B51-B465-D3F753701CCE",
8310 "muted" : false,
8311 "newShot" : false,
8312 "speed" : 1,
8313 "srcIn" : 2453.9617908460013,
8314 "start" : 709.9661016949154,
8315 "track" : "v3"
8316 },
8317 {
8318 "duration" : 9.59322033898286,
8319 "fadeIn" : 0,
8320 "fadeOut" : 0,
8321 "id" : "715FA793-E1B3-4C26-B441-31D597B1938B",
8322 "kind" : "video",
8323 "linkId" : "1D15D7CC-5494-459C-BAF8-DD757B81547D",
8324 "mediaId" : "92E85F7F-CA8B-473D-82F6-C7A7418875B1",
8325 "muted" : false,
8326 "newShot" : false,
8327 "speed" : 1,
8328 "srcIn" : 2453.9617862620025,
8329 "start" : 709.9661016949154,
8330 "track" : "v4"
8331 },
8332 {
8333 "duration" : 14.474576271186379,
8334 "fadeIn" : 0,
8335 "fadeOut" : 0,
8336 "id" : "40CCDD9D-5568-40CA-AEF5-90D94B8580BB",
8337 "kind" : "video",
8338 "linkId" : "F3271449-9FF2-4A35-8582-579E52CA2EFC",
8339 "mediaId" : "40BBB768-793D-44DA-BBC9-B22F6591159D",
8340 "muted" : false,
8341 "newShot" : false,
8342 "speed" : 1,
8343 "srcIn" : 2526.6779661016953,
8344 "start" : 723.7627118644068,
8345 "track" : "v0"
8346 },
8347 {
8348 "duration" : 14.474576271186379,
8349 "fadeIn" : 0,
8350 "fadeOut" : 0,
8351 "id" : "C9DD81B8-F688-49A6-8638-2A626AF597C9",
8352 "kind" : "audio",
8353 "linkId" : "F3271449-9FF2-4A35-8582-579E52CA2EFC",
8354 "mediaId" : "55C13A17-0423-4BC0-93A6-3FEFD02E7FC6",
8355 "muted" : true,
8356 "newShot" : false,
8357 "speed" : 1,
8358 "srcIn" : 2526.5940945603543,
8359 "start" : 723.7627118644068,
8360 "track" : "v1"
8361 },
8362 {
8363 "duration" : 14.474576271186379,
8364 "fadeIn" : 0,
8365 "fadeOut" : 0,
8366 "id" : "BC7A036D-1FA0-4738-A7F4-AD8EC3488B82",
8367 "kind" : "audio",
8368 "linkId" : "F3271449-9FF2-4A35-8582-579E52CA2EFC",
8369 "mediaId" : "501034F8-09AC-44B1-8826-FCE9B36C68F9",
8370 "muted" : false,
8371 "newShot" : false,
8372 "speed" : 1,
8373 "srcIn" : 2526.640770863585,
8374 "start" : 723.7627118644068,
8375 "track" : "v2"
8376 },
8377 {
8378 "duration" : 14.474576271186379,
8379 "fadeIn" : 0,
8380 "fadeOut" : 0,
8381 "id" : "A34F945B-0445-4497-9DD0-1E68E72ADA27",
8382 "kind" : "video",
8383 "linkId" : "F3271449-9FF2-4A35-8582-579E52CA2EFC",
8384 "mediaId" : "D866E8BE-A5B1-4B51-B465-D3F753701CCE",
8385 "muted" : false,
8386 "newShot" : false,
8387 "speed" : 1,
8388 "srcIn" : 2526.504163727357,
8389 "start" : 723.7627118644068,
8390 "track" : "v3"
8391 },
8392 {
8393 "duration" : 14.474576271186379,
8394 "fadeIn" : 0,
8395 "fadeOut" : 0,
8396 "id" : "E2ECA174-0D6E-4E40-961D-0804BCB7E988",
8397 "kind" : "video",
8398 "linkId" : "F3271449-9FF2-4A35-8582-579E52CA2EFC",
8399 "mediaId" : "92E85F7F-CA8B-473D-82F6-C7A7418875B1",
8400 "muted" : false,
8401 "newShot" : false,
8402 "speed" : 1,
8403 "srcIn" : 2526.5041591433583,
8404 "start" : 723.7627118644068,
8405 "track" : "v4"
8406 },
8407 {
8408 "duration" : 12.372881355932236,
8409 "fadeIn" : 0,
8410 "fadeOut" : 0,
8411 "id" : "793A00B4-D559-495E-BF6E-23E5FF440C18",
8412 "kind" : "video",
8413 "linkId" : "57734964-46B6-4D2E-8D3E-63DAA6A4B487",
8414 "mediaId" : "40BBB768-793D-44DA-BBC9-B22F6591159D",
8415 "muted" : false,
8416 "newShot" : false,
8417 "speed" : 1,
8418 "srcIn" : 2542.203389830509,
8419 "start" : 738.2372881355932,
8420 "track" : "v0"
8421 },
8422 {
8423 "duration" : 12.372881355932236,
8424 "fadeIn" : 0,
8425 "fadeOut" : 0,
8426 "id" : "C4AC4AF2-ACA7-4B5B-B85A-13CC8E338B0C",
8427 "kind" : "audio",
8428 "linkId" : "57734964-46B6-4D2E-8D3E-63DAA6A4B487",
8429 "mediaId" : "55C13A17-0423-4BC0-93A6-3FEFD02E7FC6",
8430 "muted" : true,
8431 "newShot" : false,
8432 "speed" : 1,
8433 "srcIn" : 2542.119518289168,
8434 "start" : 738.2372881355932,
8435 "track" : "v1"
8436 },
8437 {
8438 "duration" : 12.372881355932236,
8439 "fadeIn" : 0,
8440 "fadeOut" : 0,
8441 "id" : "0A904774-EBBE-42E8-BC32-42DDB4E21185",
8442 "kind" : "audio",
8443 "linkId" : "57734964-46B6-4D2E-8D3E-63DAA6A4B487",
8444 "mediaId" : "501034F8-09AC-44B1-8826-FCE9B36C68F9",
8445 "muted" : false,
8446 "newShot" : false,
8447 "speed" : 1,
8448 "srcIn" : 2542.166194592399,
8449 "start" : 738.2372881355932,
8450 "track" : "v2"
8451 },
8452 {
8453 "duration" : 12.372881355932236,
8454 "fadeIn" : 0,
8455 "fadeOut" : 0,
8456 "id" : "8CA5857B-2D5B-4E8A-90EB-7BE589C6785D",
8457 "kind" : "video",
8458 "linkId" : "57734964-46B6-4D2E-8D3E-63DAA6A4B487",
8459 "mediaId" : "D866E8BE-A5B1-4B51-B465-D3F753701CCE",
8460 "muted" : false,
8461 "newShot" : false,
8462 "speed" : 1,
8463 "srcIn" : 2542.0295874561707,
8464 "start" : 738.2372881355932,
8465 "track" : "v3"
8466 },
8467 {
8468 "duration" : 12.372881355932236,
8469 "fadeIn" : 0,
8470 "fadeOut" : 0,
8471 "id" : "A1354766-A4E2-423C-A148-D457C645DEED",
8472 "kind" : "video",
8473 "linkId" : "57734964-46B6-4D2E-8D3E-63DAA6A4B487",
8474 "mediaId" : "92E85F7F-CA8B-473D-82F6-C7A7418875B1",
8475 "muted" : false,
8476 "newShot" : false,
8477 "speed" : 1,
8478 "srcIn" : 2542.029582872172,
8479 "start" : 738.2372881355932,
8480 "track" : "v4"
8481 },
8482 {
8483 "duration" : 15112.237288,
8484 "fadeIn" : 0,
8485 "fadeOut" : 0,
8486 "id" : "1EDE863A-2897-4FFD-A49E-B943B438866F",
8487 "kind" : "video",
8488 "linkId" : "FD2B233D-ADAA-43D0-86FE-BD93A20C9129",
8489 "mediaId" : "CC300C55-7090-4A6E-81FA-55CB6644FAC9",
8490 "muted" : false,
8491 "newShot" : false,
8492 "speed" : 1,
8493 "srcIn" : 0,
8494 "start" : 4193.627118644067,
8495 "track" : "v0"
8496 },
8497 {
8498 "duration" : 15112.106667,
8499 "fadeIn" : 0,
8500 "fadeOut" : 0,
8501 "id" : "A3D2A572-1789-4532-9D15-1312C8312A41",
8502 "kind" : "audio",
8503 "linkId" : "FD2B233D-ADAA-43D0-86FE-BD93A20C9129",
8504 "mediaId" : "2613683E-12E6-402E-BF4D-6D9ACD7C1491",
8505 "muted" : true,
8506 "newShot" : false,
8507 "speed" : 1,
8508 "srcIn" : 0,
8509 "start" : 4193.710543352058,
8510 "track" : "v1"
8511 },
8512 {
8513 "duration" : 15112.213333,
8514 "fadeIn" : 0,
8515 "fadeOut" : 0,
8516 "id" : "387BD48F-5D42-4795-A2FE-DA7340E094B2",
8517 "kind" : "audio",
8518 "linkId" : "FD2B233D-ADAA-43D0-86FE-BD93A20C9129",
8519 "mediaId" : "7889E9EC-F67A-491B-81C0-0CF8338965A3",
8520 "muted" : false,
8521 "newShot" : false,
8522 "speed" : 1,
8523 "srcIn" : 0,
8524 "start" : 4193.660488258577,
8525 "track" : "v2"
8526 },
8527 {
8528 "duration" : 15112.066667,
8529 "fadeIn" : 0,
8530 "fadeOut" : 0,
8531 "id" : "15742468-AF06-408A-B0E3-DE8D543186D0",
8532 "kind" : "video",
8533 "linkId" : "FD2B233D-ADAA-43D0-86FE-BD93A20C9129",
8534 "mediaId" : "BC4E74C5-4C45-4633-B31A-3CAA58D4B2BF",
8535 "muted" : false,
8536 "newShot" : false,
8537 "speed" : 1,
8538 "srcIn" : 0,
8539 "start" : 4193.796015394061,
8540 "track" : "v3"
8541 },
8542 {
8543 "duration" : 15111.366667,
8544 "fadeIn" : 0,
8545 "fadeOut" : 0,
8546 "id" : "14D49BF0-68EB-4A4B-A627-9A55600AD1C2",
8547 "kind" : "video",
8548 "linkId" : "FD2B233D-ADAA-43D0-86FE-BD93A20C9129",
8549 "mediaId" : "98882264-A2ED-477B-A7B8-B63E54EDEACE",
8550 "muted" : false,
8551 "newShot" : false,
8552 "speed" : 1,
8553 "srcIn" : 0,
8554 "start" : 4193.796020644072,
8555 "track" : "v4"
8556 },
8557 {
8558 "duration" : 10045.254237,
8559 "fadeIn" : 0,
8560 "fadeOut" : 0,
8561 "id" : "82C83010-6BFE-4B26-81BC-CB291FAEB910",
8562 "kind" : "video",
8563 "linkId" : "F0D0664C-0131-446A-9354-CEB5E8E228DE",
8564 "mediaId" : "2D5EED57-87EB-44B4-9623-2CF48314C5F9",
8565 "muted" : false,
8566 "newShot" : false,
8567 "speed" : 1,
8568 "srcIn" : 0,
8569 "start" : 19305.864406779656,
8570 "track" : "v0"
8571 },
8572 {
8573 "duration" : 10045.162667,
8574 "fadeIn" : 0,
8575 "fadeOut" : 0,
8576 "id" : "83C1AFB5-E771-4D3A-8092-30A98A34B026",
8577 "kind" : "audio",
8578 "linkId" : "F0D0664C-0131-446A-9354-CEB5E8E228DE",
8579 "mediaId" : "0ECB1F4F-9065-432F-B0B1-7F47BD31FDCC",
8580 "muted" : false,
8581 "newShot" : false,
8582 "speed" : 1,
8583 "srcIn" : 0,
8584 "start" : 19305.9261039463,
8585 "track" : "v1"
8586 },
8587 {
8588 "duration" : 10045.248,
8589 "fadeIn" : 0,
8590 "fadeOut" : 0,
8591 "id" : "BD5B3686-815E-483F-8CDF-DC040625A81F",
8592 "kind" : "audio",
8593 "linkId" : "F0D0664C-0131-446A-9354-CEB5E8E228DE",
8594 "mediaId" : "02A5DFB3-9348-4102-BD13-F1856B431A70",
8595 "muted" : false,
8596 "newShot" : false,
8597 "speed" : 1,
8598 "srcIn" : 0,
8599 "start" : 19305.87683716514,
8600 "track" : "v2"
8601 },
8602 {
8603 "duration" : 10045.133333,
8604 "fadeIn" : 0,
8605 "fadeOut" : 0,
8606 "id" : "7C227E93-B4B2-44BB-81C4-0621CFA85F4E",
8607 "kind" : "video",
8608 "linkId" : "F0D0664C-0131-446A-9354-CEB5E8E228DE",
8609 "mediaId" : "9CA51332-5865-4C3D-9972-E781BDE75ECD",
8610 "muted" : false,
8611 "newShot" : false,
8612 "speed" : 1,
8613 "srcIn" : 0,
8614 "start" : 19306.0080157373,
8615 "track" : "v3"
8616 },
8617 {
8618 "duration" : 10045.166667,
8619 "fadeIn" : 0,
8620 "fadeOut" : 0,
8621 "id" : "472EB6D0-EF6A-469B-83F3-955C5C672361",
8622 "kind" : "video",
8623 "linkId" : "F0D0664C-0131-446A-9354-CEB5E8E228DE",
8624 "mediaId" : "0DEB0D7E-0C1E-49DA-9911-7773FB2158DE",
8625 "muted" : false,
8626 "newShot" : false,
8627 "speed" : 1,
8628 "srcIn" : 0,
8629 "start" : 19306.00801794631,
8630 "track" : "v4"
8631 },
8632 {
8633 "duration" : 11597.966102,
8634 "fadeIn" : 0,
8635 "fadeOut" : 0,
8636 "id" : "CE776B50-2A67-4285-9707-01DA14BBB04E",
8637 "kind" : "video",
8638 "linkId" : "F27C213D-566E-46A3-AF60-6D581EE67217",
8639 "mediaId" : "F06DF483-F96F-4DD1-8602-53609FA888F1",
8640 "muted" : false,
8641 "newShot" : false,
8642 "speed" : 1,
8643 "srcIn" : 0,
8644 "start" : 29351.18644067796,
8645 "track" : "v0"
8646 },
8647 {
8648 "duration" : 11598.101333,
8649 "fadeIn" : 0,
8650 "fadeOut" : 0,
8651 "id" : "7DB3CB28-8BB6-48ED-9B76-4FC6A5B2A106",
8652 "kind" : "audio",
8653 "linkId" : "F27C213D-566E-46A3-AF60-6D581EE67217",
8654 "mediaId" : "59213540-870A-4795-BD44-B3AFBC9F14E3",
8655 "muted" : false,
8656 "newShot" : false,
8657 "speed" : 1,
8658 "srcIn" : 0,
8659 "start" : 29351.035369510933,
8660 "track" : "v1"
8661 },
8662 {
8663 "duration" : 11598.464,
8664 "fadeIn" : 0,
8665 "fadeOut" : 0,
8666 "id" : "7941E3BC-CC88-41DB-A7BB-7C7519B8B9D6",
8667 "kind" : "audio",
8668 "linkId" : "F27C213D-566E-46A3-AF60-6D581EE67217",
8669 "mediaId" : "F4DB0AF3-2C74-4501-A58A-A519C046E3D6",
8670 "muted" : false,
8671 "newShot" : false,
8672 "speed" : 1,
8673 "srcIn" : 0,
8674 "start" : 29350.707797367297,
8675 "track" : "v2"
8676 },
8677 {
8678 "duration" : 11598.033333,
8679 "fadeIn" : 0,
8680 "fadeOut" : 0,
8681 "id" : "C6613E59-9E23-4934-B5DC-E224214F74D9",
8682 "kind" : "video",
8683 "linkId" : "F27C213D-566E-46A3-AF60-6D581EE67217",
8684 "mediaId" : "9F95D76B-EAB2-49AA-897A-C3C9A265E0CC",
8685 "muted" : false,
8686 "newShot" : false,
8687 "speed" : 1,
8688 "srcIn" : 0,
8689 "start" : 29351.122484093936,
8690 "track" : "v3"
8691 },
8692 {
8693 "duration" : 11598,
8694 "fadeIn" : 0,
8695 "fadeOut" : 0,
8696 "id" : "628E46F4-79BD-44D7-A964-903FBD21DD0F",
8697 "kind" : "video",
8698 "linkId" : "F27C213D-566E-46A3-AF60-6D581EE67217",
8699 "mediaId" : "CC497E03-E3E7-4283-A96C-F076D9F154A1",
8700 "muted" : false,
8701 "newShot" : false,
8702 "speed" : 1,
8703 "srcIn" : 0,
8704 "start" : 29351.12248226092,
8705 "track" : "v4"
8706 },
8707 {
8708 "duration" : 4.203389830508513,
8709 "fadeIn" : 0,
8710 "fadeOut" : 0,
8711 "id" : "5D2DD96A-1D28-4583-A85D-DDD1286F3EC1",
8712 "kind" : "video",
8713 "linkId" : "B7F43758-3B67-4E4D-8D71-152570BCA4AF",
8714 "mediaId" : "40BBB768-793D-44DA-BBC9-B22F6591159D",
8715 "muted" : false,
8716 "newShot" : false,
8717 "speed" : 1,
8718 "srcIn" : 2491.0847457627124,
8719 "start" : 719.5593220338983,
8720 "track" : "v0"
8721 },
8722 {
8723 "duration" : 4.203389830508513,
8724 "fadeIn" : 0,
8725 "fadeOut" : 0,
8726 "id" : "B7181073-3D61-47D2-A83E-A7C19C246D68",
8727 "kind" : "audio",
8728 "linkId" : "B7F43758-3B67-4E4D-8D71-152570BCA4AF",
8729 "mediaId" : "55C13A17-0423-4BC0-93A6-3FEFD02E7FC6",
8730 "muted" : true,
8731 "newShot" : false,
8732 "speed" : 1,
8733 "srcIn" : 2491.0008742213713,
8734 "start" : 719.5593220338983,
8735 "track" : "v1"
8736 },
8737 {
8738 "duration" : 4.203389830508513,
8739 "fadeIn" : 0,
8740 "fadeOut" : 0,
8741 "id" : "DF6474FD-D698-4232-9E94-EBE39BBB8545",
8742 "kind" : "audio",
8743 "linkId" : "B7F43758-3B67-4E4D-8D71-152570BCA4AF",
8744 "mediaId" : "501034F8-09AC-44B1-8826-FCE9B36C68F9",
8745 "muted" : false,
8746 "newShot" : false,
8747 "speed" : 1,
8748 "srcIn" : 2491.0475505246022,
8749 "start" : 719.5593220338983,
8750 "track" : "v2"
8751 },
8752 {
8753 "duration" : 4.203389830508513,
8754 "fadeIn" : 0,
8755 "fadeOut" : 0,
8756 "id" : "D06A7AA2-0BC5-4031-9EDA-7A81673249DF",
8757 "kind" : "video",
8758 "linkId" : "B7F43758-3B67-4E4D-8D71-152570BCA4AF",
8759 "mediaId" : "D866E8BE-A5B1-4B51-B465-D3F753701CCE",
8760 "muted" : false,
8761 "newShot" : false,
8762 "speed" : 1,
8763 "srcIn" : 2490.910943388374,
8764 "start" : 719.5593220338983,
8765 "track" : "v3"
8766 },
8767 {
8768 "duration" : 4.203389830508513,
8769 "fadeIn" : 0,
8770 "fadeOut" : 0,
8771 "id" : "39DCC5F4-B663-454C-BD55-6E675B931DBA",
8772 "kind" : "video",
8773 "linkId" : "B7F43758-3B67-4E4D-8D71-152570BCA4AF",
8774 "mediaId" : "92E85F7F-CA8B-473D-82F6-C7A7418875B1",
8775 "muted" : false,
8776 "newShot" : false,
8777 "speed" : 1,
8778 "srcIn" : 2490.9109388043753,
8779 "start" : 719.5593220338983,
8780 "track" : "v4"
8781 },
8782 {
8783 "duration" : 15.152542372881271,
8784 "fadeIn" : 0,
8785 "fadeOut" : 0,
8786 "id" : "F4373D19-EA06-4C7F-A620-FC8FD1BD6AE3",
8787 "kind" : "video",
8788 "linkId" : "DF0D7986-17C5-4CB7-B683-DD878723E8C7",
8789 "mediaId" : "40BBB768-793D-44DA-BBC9-B22F6591159D",
8790 "muted" : false,
8791 "newShot" : false,
8792 "speed" : 1,
8793 "srcIn" : 2557.3898305084754,
8794 "start" : 750.6101694915254,
8795 "track" : "v0"
8796 },
8797 {
8798 "duration" : 15.152542372881271,
8799 "fadeIn" : 0,
8800 "fadeOut" : 0,
8801 "id" : "84DE87BB-60F8-41DF-933A-3B41704FE3D2",
8802 "kind" : "audio",
8803 "linkId" : "DF0D7986-17C5-4CB7-B683-DD878723E8C7",
8804 "mediaId" : "55C13A17-0423-4BC0-93A6-3FEFD02E7FC6",
8805 "muted" : true,
8806 "newShot" : false,
8807 "speed" : 1,
8808 "srcIn" : 2557.3059589671343,
8809 "start" : 750.6101694915254,
8810 "track" : "v1"
8811 },
8812 {
8813 "duration" : 15.152542372881271,
8814 "fadeIn" : 0,
8815 "fadeOut" : 0,
8816 "id" : "F6A29700-D4EE-4106-AA51-21C13AD34CA4",
8817 "kind" : "audio",
8818 "linkId" : "DF0D7986-17C5-4CB7-B683-DD878723E8C7",
8819 "mediaId" : "501034F8-09AC-44B1-8826-FCE9B36C68F9",
8820 "muted" : false,
8821 "newShot" : false,
8822 "speed" : 1,
8823 "srcIn" : 2557.352635270365,
8824 "start" : 750.6101694915254,
8825 "track" : "v2"
8826 },
8827 {
8828 "duration" : 15.152542372881271,
8829 "fadeIn" : 0,
8830 "fadeOut" : 0,
8831 "id" : "353D8752-627E-40D9-8D76-BFB4084F392D",
8832 "kind" : "video",
8833 "linkId" : "DF0D7986-17C5-4CB7-B683-DD878723E8C7",
8834 "mediaId" : "D866E8BE-A5B1-4B51-B465-D3F753701CCE",
8835 "muted" : false,
8836 "newShot" : false,
8837 "speed" : 1,
8838 "srcIn" : 2557.216028134137,
8839 "start" : 750.6101694915254,
8840 "track" : "v3"
8841 },
8842 {
8843 "duration" : 15.152542372881271,
8844 "fadeIn" : 0,
8845 "fadeOut" : 0,
8846 "id" : "901CEC11-981C-4F2C-8857-98E171F95538",
8847 "kind" : "video",
8848 "linkId" : "DF0D7986-17C5-4CB7-B683-DD878723E8C7",
8849 "mediaId" : "92E85F7F-CA8B-473D-82F6-C7A7418875B1",
8850 "muted" : false,
8851 "newShot" : false,
8852 "speed" : 1,
8853 "srcIn" : 2557.2160235501383,
8854 "start" : 750.6101694915254,
8855 "track" : "v4"
8856 },
8857 {
8858 "duration" : 5.661016949152554,
8859 "fadeIn" : 0,
8860 "fadeOut" : 0,
8861 "id" : "E259582D-FC1C-4FA5-BE66-998C83FEC210",
8862 "kind" : "video",
8863 "linkId" : "9A0BE697-0A09-4342-804A-A10695A5765B",
8864 "mediaId" : "40BBB768-793D-44DA-BBC9-B22F6591159D",
8865 "muted" : false,
8866 "newShot" : false,
8867 "speed" : 1,
8868 "srcIn" : 2575.42372881356,
8869 "start" : 765.7627118644068,
8870 "track" : "v0"
8871 },
8872 {
8873 "duration" : 5.661016949152554,
8874 "fadeIn" : 0,
8875 "fadeOut" : 0,
8876 "id" : "FB4E9075-64CB-4C65-A7BE-659E4788FCF8",
8877 "kind" : "audio",
8878 "linkId" : "9A0BE697-0A09-4342-804A-A10695A5765B",
8879 "mediaId" : "55C13A17-0423-4BC0-93A6-3FEFD02E7FC6",
8880 "muted" : true,
8881 "newShot" : false,
8882 "speed" : 1,
8883 "srcIn" : 2575.339857272219,
8884 "start" : 765.7627118644068,
8885 "track" : "v1"
8886 },
8887 {
8888 "duration" : 5.661016949152554,
8889 "fadeIn" : 0,
8890 "fadeOut" : 0,
8891 "id" : "A6714A57-F046-4DE6-805C-A525B611FBD7",
8892 "kind" : "audio",
8893 "linkId" : "9A0BE697-0A09-4342-804A-A10695A5765B",
8894 "mediaId" : "501034F8-09AC-44B1-8826-FCE9B36C68F9",
8895 "muted" : false,
8896 "newShot" : false,
8897 "speed" : 1,
8898 "srcIn" : 2575.38653357545,
8899 "start" : 765.7627118644068,
8900 "track" : "v2"
8901 },
8902 {
8903 "duration" : 5.661016949152554,
8904 "fadeIn" : 0,
8905 "fadeOut" : 0,
8906 "id" : "DB4E1C97-4EDB-41E2-966E-057D14890226",
8907 "kind" : "video",
8908 "linkId" : "9A0BE697-0A09-4342-804A-A10695A5765B",
8909 "mediaId" : "D866E8BE-A5B1-4B51-B465-D3F753701CCE",
8910 "muted" : false,
8911 "newShot" : false,
8912 "speed" : 1,
8913 "srcIn" : 2575.249926439222,
8914 "start" : 765.7627118644068,
8915 "track" : "v3"
8916 },
8917 {
8918 "duration" : 5.661016949152554,
8919 "fadeIn" : 0,
8920 "fadeOut" : 0,
8921 "id" : "E9D9C86D-9ED7-4309-8C45-79EE9034CFD1",
8922 "kind" : "video",
8923 "linkId" : "9A0BE697-0A09-4342-804A-A10695A5765B",
8924 "mediaId" : "92E85F7F-CA8B-473D-82F6-C7A7418875B1",
8925 "muted" : false,
8926 "newShot" : false,
8927 "speed" : 1,
8928 "srcIn" : 2575.249921855223,
8929 "start" : 765.7627118644068,
8930 "track" : "v4"
8931 },
8932 {
8933 "duration" : 65.15254237288138,
8934 "fadeIn" : 0,
8935 "fadeOut" : 0,
8936 "id" : "864CC0F8-B363-4CE4-B255-61F2E32173FE",
8937 "kind" : "video",
8938 "linkId" : "FAD43732-5E8B-4F4A-AF1A-5F977F88D803",
8939 "mediaId" : "40BBB768-793D-44DA-BBC9-B22F6591159D",
8940 "muted" : false,
8941 "newShot" : false,
8942 "speed" : 1,
8943 "srcIn" : 2581.0847457627124,
8944 "start" : 778.0677966101695,
8945 "track" : "v0"
8946 },
8947 {
8948 "duration" : 65.15254237288138,
8949 "fadeIn" : 0,
8950 "fadeOut" : 0,
8951 "id" : "F19656B8-AD96-45A9-AB45-41E84163B720",
8952 "kind" : "audio",
8953 "linkId" : "FAD43732-5E8B-4F4A-AF1A-5F977F88D803",
8954 "mediaId" : "55C13A17-0423-4BC0-93A6-3FEFD02E7FC6",
8955 "muted" : true,
8956 "newShot" : false,
8957 "speed" : 1,
8958 "srcIn" : 2581.0008742213713,
8959 "start" : 778.0677966101695,
8960 "track" : "v1"
8961 },
8962 {
8963 "duration" : 65.15254237288138,
8964 "fadeIn" : 0,
8965 "fadeOut" : 0,
8966 "id" : "D40E7E5C-E58F-4D04-8A61-4C5A0AFE2C2C",
8967 "kind" : "audio",
8968 "linkId" : "FAD43732-5E8B-4F4A-AF1A-5F977F88D803",
8969 "mediaId" : "501034F8-09AC-44B1-8826-FCE9B36C68F9",
8970 "muted" : false,
8971 "newShot" : false,
8972 "speed" : 1,
8973 "srcIn" : 2581.0475505246022,
8974 "start" : 778.0677966101695,
8975 "track" : "v2"
8976 },
8977 {
8978 "duration" : 65.15254237288138,
8979 "fadeIn" : 0,
8980 "fadeOut" : 0,
8981 "id" : "0AEACF86-70AC-4999-8D26-F9BDE6003C4F",
8982 "kind" : "video",
8983 "linkId" : "FAD43732-5E8B-4F4A-AF1A-5F977F88D803",
8984 "mediaId" : "D866E8BE-A5B1-4B51-B465-D3F753701CCE",
8985 "muted" : false,
8986 "newShot" : false,
8987 "speed" : 1,
8988 "srcIn" : 2580.910943388374,
8989 "start" : 778.0677966101695,
8990 "track" : "v3"
8991 },
8992 {
8993 "duration" : 65.15254237288138,
8994 "fadeIn" : 0,
8995 "fadeOut" : 0,
8996 "id" : "8566FA67-6A70-4CFF-9C03-5DED0AE5F620",
8997 "kind" : "video",
8998 "linkId" : "FAD43732-5E8B-4F4A-AF1A-5F977F88D803",
8999 "mediaId" : "92E85F7F-CA8B-473D-82F6-C7A7418875B1",
9000 "muted" : false,
9001 "newShot" : false,
9002 "speed" : 1,
9003 "srcIn" : 2580.9109388043753,
9004 "start" : 778.0677966101695,
9005 "track" : "v4"
9006 },
9007 {
9008 "duration" : 2.135593220338933,
9009 "fadeIn" : 0,
9010 "fadeOut" : 0,
9011 "id" : "0FAA1CB7-A092-406F-B1FD-828EE4768B07",
9012 "kind" : "video",
9013 "linkId" : "FC57D67A-F7BF-448D-985C-05D71447DD0A",
9014 "mediaId" : "40BBB768-793D-44DA-BBC9-B22F6591159D",
9015 "muted" : false,
9016 "newShot" : false,
9017 "speed" : 1,
9018 "srcIn" : 2646.2372881355936,
9019 "start" : 843.2203389830509,
9020 "track" : "v0"
9021 },
9022 {
9023 "duration" : 2.135593220338933,
9024 "fadeIn" : 0,
9025 "fadeOut" : 0,
9026 "id" : "AC5A9D19-E998-4CC0-B033-5C9AF84326C4",
9027 "kind" : "audio",
9028 "linkId" : "FC57D67A-F7BF-448D-985C-05D71447DD0A",
9029 "mediaId" : "55C13A17-0423-4BC0-93A6-3FEFD02E7FC6",
9030 "muted" : true,
9031 "newShot" : false,
9032 "speed" : 1,
9033 "srcIn" : 2646.1534165942526,
9034 "start" : 843.2203389830509,
9035 "track" : "v1"
9036 },
9037 {
9038 "duration" : 2.135593220338933,
9039 "fadeIn" : 0,
9040 "fadeOut" : 0,
9041 "id" : "BF2AE534-1A06-4009-B825-8C1570D790C7",
9042 "kind" : "audio",
9043 "linkId" : "FC57D67A-F7BF-448D-985C-05D71447DD0A",
9044 "mediaId" : "501034F8-09AC-44B1-8826-FCE9B36C68F9",
9045 "muted" : false,
9046 "newShot" : false,
9047 "speed" : 1,
9048 "srcIn" : 2646.2000928974835,
9049 "start" : 843.2203389830509,
9050 "track" : "v2"
9051 },
9052 {
9053 "duration" : 2.135593220338933,
9054 "fadeIn" : 0,
9055 "fadeOut" : 0,
9056 "id" : "10E9AD27-80E1-4F3C-BD87-414A1B6617A8",
9057 "kind" : "video",
9058 "linkId" : "FC57D67A-F7BF-448D-985C-05D71447DD0A",
9059 "mediaId" : "D866E8BE-A5B1-4B51-B465-D3F753701CCE",
9060 "muted" : false,
9061 "newShot" : false,
9062 "speed" : 1,
9063 "srcIn" : 2646.0634857612554,
9064 "start" : 843.2203389830509,
9065 "track" : "v3"
9066 },
9067 {
9068 "duration" : 2.135593220338933,
9069 "fadeIn" : 0,
9070 "fadeOut" : 0,
9071 "id" : "3EE49ACC-C52A-4ADF-86BE-884CE4259D4B",
9072 "kind" : "video",
9073 "linkId" : "FC57D67A-F7BF-448D-985C-05D71447DD0A",
9074 "mediaId" : "92E85F7F-CA8B-473D-82F6-C7A7418875B1",
9075 "muted" : false,
9076 "newShot" : false,
9077 "speed" : 1,
9078 "srcIn" : 2646.0634811772566,
9079 "start" : 843.2203389830509,
9080 "track" : "v4"
9081 },
9082 {
9083 "duration" : 2.1355932203390466,
9084 "fadeIn" : 0,
9085 "fadeOut" : 0,
9086 "id" : "6F6DB3B3-42CE-4046-9988-087B5847CE7F",
9087 "kind" : "video",
9088 "linkId" : "28EA7312-79F0-4C9C-A37D-04E32716FA29",
9089 "mediaId" : "40BBB768-793D-44DA-BBC9-B22F6591159D",
9090 "muted" : false,
9091 "newShot" : false,
9092 "speed" : 1,
9093 "srcIn" : 2650.203389830509,
9094 "start" : 845.3559322033898,
9095 "track" : "v0"
9096 },
9097 {
9098 "duration" : 2.1355932203390466,
9099 "fadeIn" : 0,
9100 "fadeOut" : 0,
9101 "id" : "96066F14-B10E-4826-890D-95FE249BB166",
9102 "kind" : "audio",
9103 "linkId" : "28EA7312-79F0-4C9C-A37D-04E32716FA29",
9104 "mediaId" : "55C13A17-0423-4BC0-93A6-3FEFD02E7FC6",
9105 "muted" : true,
9106 "newShot" : false,
9107 "speed" : 1,
9108 "srcIn" : 2650.119518289168,
9109 "start" : 845.3559322033898,
9110 "track" : "v1"
9111 },
9112 {
9113 "duration" : 2.1355932203390466,
9114 "fadeIn" : 0,
9115 "fadeOut" : 0,
9116 "id" : "B07978FC-00CF-41C2-8657-665D128435D0",
9117 "kind" : "audio",
9118 "linkId" : "28EA7312-79F0-4C9C-A37D-04E32716FA29",
9119 "mediaId" : "501034F8-09AC-44B1-8826-FCE9B36C68F9",
9120 "muted" : false,
9121 "newShot" : false,
9122 "speed" : 1,
9123 "srcIn" : 2650.166194592399,
9124 "start" : 845.3559322033898,
9125 "track" : "v2"
9126 },
9127 {
9128 "duration" : 2.1355932203390466,
9129 "fadeIn" : 0,
9130 "fadeOut" : 0,
9131 "id" : "4FAD2B83-A8E8-4692-9360-C2F908C32F76",
9132 "kind" : "video",
9133 "linkId" : "28EA7312-79F0-4C9C-A37D-04E32716FA29",
9134 "mediaId" : "D866E8BE-A5B1-4B51-B465-D3F753701CCE",
9135 "muted" : false,
9136 "newShot" : false,
9137 "speed" : 1,
9138 "srcIn" : 2650.0295874561707,
9139 "start" : 845.3559322033898,
9140 "track" : "v3"
9141 },
9142 {
9143 "duration" : 2.1355932203390466,
9144 "fadeIn" : 0,
9145 "fadeOut" : 0,
9146 "id" : "DF197166-8983-45B6-A285-54D45DECCFFB",
9147 "kind" : "video",
9148 "linkId" : "28EA7312-79F0-4C9C-A37D-04E32716FA29",
9149 "mediaId" : "92E85F7F-CA8B-473D-82F6-C7A7418875B1",
9150 "muted" : false,
9151 "newShot" : false,
9152 "speed" : 1,
9153 "srcIn" : 2650.029582872172,
9154 "start" : 845.3559322033898,
9155 "track" : "v4"
9156 },
9157 {
9158 "duration" : 0.7118644067796822,
9159 "fadeIn" : 0,
9160 "fadeOut" : 0,
9161 "id" : "A6D0B507-6A36-4A23-B415-3888A8D66CEE",
9162 "kind" : "video",
9163 "linkId" : "E3D0D877-F5B9-4B99-B94B-44E5E47BEAE8",
9164 "mediaId" : "40BBB768-793D-44DA-BBC9-B22F6591159D",
9165 "muted" : false,
9166 "newShot" : false,
9167 "speed" : 1,
9168 "srcIn" : 2653.118644067797,
9169 "start" : 847.4915254237288,
9170 "track" : "v0"
9171 },
9172 {
9173 "duration" : 0.7118644067796822,
9174 "fadeIn" : 0,
9175 "fadeOut" : 0,
9176 "id" : "AEBE3D73-9EE9-42F3-80FF-AF4E272C5BF5",
9177 "kind" : "audio",
9178 "linkId" : "E3D0D877-F5B9-4B99-B94B-44E5E47BEAE8",
9179 "mediaId" : "55C13A17-0423-4BC0-93A6-3FEFD02E7FC6",
9180 "muted" : true,
9181 "newShot" : false,
9182 "speed" : 1,
9183 "srcIn" : 2653.034772526456,
9184 "start" : 847.4915254237288,
9185 "track" : "v1"
9186 },
9187 {
9188 "duration" : 0.7118644067796822,
9189 "fadeIn" : 0,
9190 "fadeOut" : 0,
9191 "id" : "A3B22B00-BA4B-4A40-91A3-F3E3C884C9BA",
9192 "kind" : "audio",
9193 "linkId" : "E3D0D877-F5B9-4B99-B94B-44E5E47BEAE8",
9194 "mediaId" : "501034F8-09AC-44B1-8826-FCE9B36C68F9",
9195 "muted" : false,
9196 "newShot" : false,
9197 "speed" : 1,
9198 "srcIn" : 2653.081448829687,
9199 "start" : 847.4915254237288,
9200 "track" : "v2"
9201 },
9202 {
9203 "duration" : 0.7118644067796822,
9204 "fadeIn" : 0,
9205 "fadeOut" : 0,
9206 "id" : "7B3ADFE8-7F47-4800-B8D6-77B5B07AFA99",
9207 "kind" : "video",
9208 "linkId" : "E3D0D877-F5B9-4B99-B94B-44E5E47BEAE8",
9209 "mediaId" : "D866E8BE-A5B1-4B51-B465-D3F753701CCE",
9210 "muted" : false,
9211 "newShot" : false,
9212 "speed" : 1,
9213 "srcIn" : 2652.944841693459,
9214 "start" : 847.4915254237288,
9215 "track" : "v3"
9216 },
9217 {
9218 "duration" : 0.7118644067796822,
9219 "fadeIn" : 0,
9220 "fadeOut" : 0,
9221 "id" : "BC37902D-B6DE-4EE5-9996-467DEC167330",
9222 "kind" : "video",
9223 "linkId" : "E3D0D877-F5B9-4B99-B94B-44E5E47BEAE8",
9224 "mediaId" : "92E85F7F-CA8B-473D-82F6-C7A7418875B1",
9225 "muted" : false,
9226 "newShot" : false,
9227 "speed" : 1,
9228 "srcIn" : 2652.94483710946,
9229 "start" : 847.4915254237288,
9230 "track" : "v4"
9231 },
9232 {
9233 "duration" : 0.7796610169491487,
9234 "fadeIn" : 0,
9235 "fadeOut" : 0,
9236 "id" : "8C61A3D8-55F3-4CCD-A02E-859B57EDA9CD",
9237 "kind" : "video",
9238 "linkId" : "86F71C9D-4CC8-49AE-85D6-08C4B076CE87",
9239 "mediaId" : "40BBB768-793D-44DA-BBC9-B22F6591159D",
9240 "muted" : false,
9241 "newShot" : false,
9242 "speed" : 1,
9243 "srcIn" : 2658.71186440678,
9244 "start" : 848.2033898305085,
9245 "track" : "v0"
9246 },
9247 {
9248 "duration" : 0.7796610169491487,
9249 "fadeIn" : 0,
9250 "fadeOut" : 0,
9251 "id" : "25E99D83-FDE9-4E70-BBD3-A76D726F2D15",
9252 "kind" : "audio",
9253 "linkId" : "86F71C9D-4CC8-49AE-85D6-08C4B076CE87",
9254 "mediaId" : "55C13A17-0423-4BC0-93A6-3FEFD02E7FC6",
9255 "muted" : true,
9256 "newShot" : false,
9257 "speed" : 1,
9258 "srcIn" : 2658.627992865439,
9259 "start" : 848.2033898305085,
9260 "track" : "v1"
9261 },
9262 {
9263 "duration" : 0.7796610169491487,
9264 "fadeIn" : 0,
9265 "fadeOut" : 0,
9266 "id" : "5FD3B500-E4B2-4AE8-B37D-DE251B465DBD",
9267 "kind" : "audio",
9268 "linkId" : "86F71C9D-4CC8-49AE-85D6-08C4B076CE87",
9269 "mediaId" : "501034F8-09AC-44B1-8826-FCE9B36C68F9",
9270 "muted" : false,
9271 "newShot" : false,
9272 "speed" : 1,
9273 "srcIn" : 2658.67466916867,
9274 "start" : 848.2033898305085,
9275 "track" : "v2"
9276 },
9277 {
9278 "duration" : 0.7796610169491487,
9279 "fadeIn" : 0,
9280 "fadeOut" : 0,
9281 "id" : "7BE9FE0B-5C6E-49DC-ACD3-613EE443EF5B",
9282 "kind" : "video",
9283 "linkId" : "86F71C9D-4CC8-49AE-85D6-08C4B076CE87",
9284 "mediaId" : "D866E8BE-A5B1-4B51-B465-D3F753701CCE",
9285 "muted" : false,
9286 "newShot" : false,
9287 "speed" : 1,
9288 "srcIn" : 2658.5380620324418,
9289 "start" : 848.2033898305085,
9290 "track" : "v3"
9291 },
9292 {
9293 "duration" : 0.7796610169491487,
9294 "fadeIn" : 0,
9295 "fadeOut" : 0,
9296 "id" : "E51F2531-CEDB-4175-A047-516CD3142C93",
9297 "kind" : "video",
9298 "linkId" : "86F71C9D-4CC8-49AE-85D6-08C4B076CE87",
9299 "mediaId" : "92E85F7F-CA8B-473D-82F6-C7A7418875B1",
9300 "muted" : false,
9301 "newShot" : false,
9302 "speed" : 1,
9303 "srcIn" : 2658.538057448443,
9304 "start" : 848.2033898305085,
9305 "track" : "v4"
9306 },
9307 {
9308 "duration" : 4.881355932203405,
9309 "fadeIn" : 0,
9310 "fadeOut" : 0,
9311 "id" : "352DB16B-39D1-475A-8C95-A0D712C61DA1",
9312 "kind" : "video",
9313 "linkId" : "3EABBA0E-4C24-4221-9E58-79D35BC9B08D",
9314 "mediaId" : "40BBB768-793D-44DA-BBC9-B22F6591159D",
9315 "muted" : false,
9316 "newShot" : false,
9317 "speed" : 1,
9318 "srcIn" : 2672.77966101695,
9319 "start" : 848.9830508474577,
9320 "track" : "v0"
9321 },
9322 {
9323 "duration" : 4.881355932203405,
9324 "fadeIn" : 0,
9325 "fadeOut" : 0,
9326 "id" : "8904F908-4ED1-49D6-A064-B85CD9585F94",
9327 "kind" : "audio",
9328 "linkId" : "3EABBA0E-4C24-4221-9E58-79D35BC9B08D",
9329 "mediaId" : "55C13A17-0423-4BC0-93A6-3FEFD02E7FC6",
9330 "muted" : true,
9331 "newShot" : false,
9332 "speed" : 1,
9333 "srcIn" : 2672.6957894756088,
9334 "start" : 848.9830508474577,
9335 "track" : "v1"
9336 },
9337 {
9338 "duration" : 4.881355932203405,
9339 "fadeIn" : 0,
9340 "fadeOut" : 0,
9341 "id" : "F88FC5BF-C07B-4659-96CD-F0C6423F09A3",
9342 "kind" : "audio",
9343 "linkId" : "3EABBA0E-4C24-4221-9E58-79D35BC9B08D",
9344 "mediaId" : "501034F8-09AC-44B1-8826-FCE9B36C68F9",
9345 "muted" : false,
9346 "newShot" : false,
9347 "speed" : 1,
9348 "srcIn" : 2672.7424657788397,
9349 "start" : 848.9830508474577,
9350 "track" : "v2"
9351 },
9352 {
9353 "duration" : 4.881355932203405,
9354 "fadeIn" : 0,
9355 "fadeOut" : 0,
9356 "id" : "319CEC14-6215-4445-8F0D-91C308A3420E",
9357 "kind" : "video",
9358 "linkId" : "3EABBA0E-4C24-4221-9E58-79D35BC9B08D",
9359 "mediaId" : "D866E8BE-A5B1-4B51-B465-D3F753701CCE",
9360 "muted" : false,
9361 "newShot" : false,
9362 "speed" : 1,
9363 "srcIn" : 2672.6058586426116,
9364 "start" : 848.9830508474577,
9365 "track" : "v3"
9366 },
9367 {
9368 "duration" : 4.881355932203405,
9369 "fadeIn" : 0,
9370 "fadeOut" : 0,
9371 "id" : "EE17ADAE-984B-467F-8219-EC6C5F5D962B",
9372 "kind" : "video",
9373 "linkId" : "3EABBA0E-4C24-4221-9E58-79D35BC9B08D",
9374 "mediaId" : "92E85F7F-CA8B-473D-82F6-C7A7418875B1",
9375 "muted" : false,
9376 "newShot" : false,
9377 "speed" : 1,
9378 "srcIn" : 2672.6058540586127,
9379 "start" : 848.9830508474577,
9380 "track" : "v4"
9381 },
9382 {
9383 "duration" : 4.101694915254257,
9384 "fadeIn" : 0,
9385 "fadeOut" : 0,
9386 "id" : "FCB1D834-DEAA-473C-A554-9F80416158C2",
9387 "kind" : "video",
9388 "linkId" : "3B4E4A04-CB5C-4738-B65E-F7076495C9D8",
9389 "mediaId" : "40BBB768-793D-44DA-BBC9-B22F6591159D",
9390 "muted" : false,
9391 "newShot" : false,
9392 "speed" : 1,
9393 "srcIn" : 2710.7118644067805,
9394 "start" : 853.8644067796611,
9395 "track" : "v0"
9396 },
9397 {
9398 "duration" : 4.101694915254257,
9399 "fadeIn" : 0,
9400 "fadeOut" : 0,
9401 "id" : "881E7DB1-B037-40A9-9296-A99F279D7B54",
9402 "kind" : "audio",
9403 "linkId" : "3B4E4A04-CB5C-4738-B65E-F7076495C9D8",
9404 "mediaId" : "55C13A17-0423-4BC0-93A6-3FEFD02E7FC6",
9405 "muted" : true,
9406 "newShot" : false,
9407 "speed" : 1,
9408 "srcIn" : 2710.6279928654394,
9409 "start" : 853.8644067796611,
9410 "track" : "v1"
9411 },
9412 {
9413 "duration" : 4.101694915254257,
9414 "fadeIn" : 0,
9415 "fadeOut" : 0,
9416 "id" : "5D38E6BE-385D-45A3-9AF3-30FF2BB3F39B",
9417 "kind" : "audio",
9418 "linkId" : "3B4E4A04-CB5C-4738-B65E-F7076495C9D8",
9419 "mediaId" : "501034F8-09AC-44B1-8826-FCE9B36C68F9",
9420 "muted" : false,
9421 "newShot" : false,
9422 "speed" : 1,
9423 "srcIn" : 2710.6746691686703,
9424 "start" : 853.8644067796611,
9425 "track" : "v2"
9426 },
9427 {
9428 "duration" : 4.101694915254257,
9429 "fadeIn" : 0,
9430 "fadeOut" : 0,
9431 "id" : "7B349858-7AE2-48A3-991E-DB25F74D2807",
9432 "kind" : "video",
9433 "linkId" : "3B4E4A04-CB5C-4738-B65E-F7076495C9D8",
9434 "mediaId" : "D866E8BE-A5B1-4B51-B465-D3F753701CCE",
9435 "muted" : false,
9436 "newShot" : false,
9437 "speed" : 1,
9438 "srcIn" : 2710.538062032442,
9439 "start" : 853.8644067796611,
9440 "track" : "v3"
9441 },
9442 {
9443 "duration" : 4.101694915254257,
9444 "fadeIn" : 0,
9445 "fadeOut" : 0,
9446 "id" : "58E4F08F-1403-43B7-B93B-C6BFA5127F8D",
9447 "kind" : "video",
9448 "linkId" : "3B4E4A04-CB5C-4738-B65E-F7076495C9D8",
9449 "mediaId" : "92E85F7F-CA8B-473D-82F6-C7A7418875B1",
9450 "muted" : false,
9451 "newShot" : false,
9452 "speed" : 1,
9453 "srcIn" : 2710.5380574484434,
9454 "start" : 853.8644067796611,
9455 "track" : "v4"
9456 },
9457 {
9458 "duration" : 30.27118644067798,
9459 "fadeIn" : 0,
9460 "fadeOut" : 0,
9461 "id" : "52F2190F-1C89-44EA-94D3-8A7085B8172A",
9462 "kind" : "video",
9463 "linkId" : "AE414DA9-138E-4B31-BCEA-EBD522E81175",
9464 "mediaId" : "40BBB768-793D-44DA-BBC9-B22F6591159D",
9465 "muted" : false,
9466 "newShot" : false,
9467 "speed" : 1,
9468 "srcIn" : 2721.322033898306,
9469 "start" : 857.9661016949152,
9470 "track" : "v0"
9471 },
9472 {
9473 "duration" : 30.27118644067798,
9474 "fadeIn" : 0,
9475 "fadeOut" : 0,
9476 "id" : "369AF7CA-F05E-4BAF-B4DA-92398E680470",
9477 "kind" : "audio",
9478 "linkId" : "AE414DA9-138E-4B31-BCEA-EBD522E81175",
9479 "mediaId" : "55C13A17-0423-4BC0-93A6-3FEFD02E7FC6",
9480 "muted" : true,
9481 "newShot" : false,
9482 "speed" : 1,
9483 "srcIn" : 2721.238162356965,
9484 "start" : 857.9661016949152,
9485 "track" : "v1"
9486 },
9487 {
9488 "duration" : 30.27118644067798,
9489 "fadeIn" : 0,
9490 "fadeOut" : 0,
9491 "id" : "E0C2832B-D290-4F69-B311-6CCB13D81611",
9492 "kind" : "audio",
9493 "linkId" : "AE414DA9-138E-4B31-BCEA-EBD522E81175",
9494 "mediaId" : "501034F8-09AC-44B1-8826-FCE9B36C68F9",
9495 "muted" : false,
9496 "newShot" : false,
9497 "speed" : 1,
9498 "srcIn" : 2721.284838660196,
9499 "start" : 857.9661016949152,
9500 "track" : "v2"
9501 },
9502 {
9503 "duration" : 30.27118644067798,
9504 "fadeIn" : 0,
9505 "fadeOut" : 0,
9506 "id" : "435A5598-D5FB-4880-AF72-ACF1883BA634",
9507 "kind" : "video",
9508 "linkId" : "AE414DA9-138E-4B31-BCEA-EBD522E81175",
9509 "mediaId" : "D866E8BE-A5B1-4B51-B465-D3F753701CCE",
9510 "muted" : false,
9511 "newShot" : false,
9512 "speed" : 1,
9513 "srcIn" : 2721.1482315239678,
9514 "start" : 857.9661016949152,
9515 "track" : "v3"
9516 },
9517 {
9518 "duration" : 30.27118644067798,
9519 "fadeIn" : 0,
9520 "fadeOut" : 0,
9521 "id" : "E1A300BD-01C6-44F8-A372-7EDEAAA3407A",
9522 "kind" : "video",
9523 "linkId" : "AE414DA9-138E-4B31-BCEA-EBD522E81175",
9524 "mediaId" : "92E85F7F-CA8B-473D-82F6-C7A7418875B1",
9525 "muted" : false,
9526 "newShot" : false,
9527 "speed" : 1,
9528 "srcIn" : 2721.148226939969,
9529 "start" : 857.9661016949152,
9530 "track" : "v4"
9531 },
9532 {
9533 "duration" : 2.8135593220339388,
9534 "fadeIn" : 0,
9535 "fadeOut" : 0,
9536 "id" : "F79BA8C9-1EEA-4EAD-9408-BEB36A06F6EC",
9537 "kind" : "video",
9538 "linkId" : "4045FA44-3B4D-4BFC-A67F-515E3C553BA0",
9539 "mediaId" : "40BBB768-793D-44DA-BBC9-B22F6591159D",
9540 "muted" : false,
9541 "newShot" : false,
9542 "speed" : 1,
9543 "srcIn" : 2760.915254237289,
9544 "start" : 888.2372881355932,
9545 "track" : "v0"
9546 },
9547 {
9548 "duration" : 2.8135593220339388,
9549 "fadeIn" : 0,
9550 "fadeOut" : 0,
9551 "id" : "E4CC2092-0AFA-454F-A056-DC1D4B96EAE3",
9552 "kind" : "audio",
9553 "linkId" : "4045FA44-3B4D-4BFC-A67F-515E3C553BA0",
9554 "mediaId" : "55C13A17-0423-4BC0-93A6-3FEFD02E7FC6",
9555 "muted" : true,
9556 "newShot" : false,
9557 "speed" : 1,
9558 "srcIn" : 2760.831382695948,
9559 "start" : 888.2372881355932,
9560 "track" : "v1"
9561 },
9562 {
9563 "duration" : 2.8135593220339388,
9564 "fadeIn" : 0,
9565 "fadeOut" : 0,
9566 "id" : "C6569D08-E232-40FD-AD5E-38A850503FDF",
9567 "kind" : "audio",
9568 "linkId" : "4045FA44-3B4D-4BFC-A67F-515E3C553BA0",
9569 "mediaId" : "501034F8-09AC-44B1-8826-FCE9B36C68F9",
9570 "muted" : false,
9571 "newShot" : false,
9572 "speed" : 1,
9573 "srcIn" : 2760.878058999179,
9574 "start" : 888.2372881355932,
9575 "track" : "v2"
9576 },
9577 {
9578 "duration" : 2.8135593220339388,
9579 "fadeIn" : 0,
9580 "fadeOut" : 0,
9581 "id" : "5D424C43-D60A-4A52-A33B-BBEB380053F2",
9582 "kind" : "video",
9583 "linkId" : "4045FA44-3B4D-4BFC-A67F-515E3C553BA0",
9584 "mediaId" : "D866E8BE-A5B1-4B51-B465-D3F753701CCE",
9585 "muted" : false,
9586 "newShot" : false,
9587 "speed" : 1,
9588 "srcIn" : 2760.7414518629507,
9589 "start" : 888.2372881355932,
9590 "track" : "v3"
9591 },
9592 {
9593 "duration" : 2.8135593220339388,
9594 "fadeIn" : 0,
9595 "fadeOut" : 0,
9596 "id" : "C9ECC1B1-1D5A-4D84-9012-9864635A322A",
9597 "kind" : "video",
9598 "linkId" : "4045FA44-3B4D-4BFC-A67F-515E3C553BA0",
9599 "mediaId" : "92E85F7F-CA8B-473D-82F6-C7A7418875B1",
9600 "muted" : false,
9601 "newShot" : false,
9602 "speed" : 1,
9603 "srcIn" : 2760.741447278952,
9604 "start" : 888.2372881355932,
9605 "track" : "v4"
9606 },
9607 {
9608 "duration" : 5.288135593220318,
9609 "fadeIn" : 0,
9610 "fadeOut" : 0,
9611 "id" : "1B56AEBA-0FE3-40D6-A485-407844047F55",
9612 "kind" : "video",
9613 "linkId" : "F572F9CE-FD52-495A-A477-9D6D62AC1086",
9614 "mediaId" : "40BBB768-793D-44DA-BBC9-B22F6591159D",
9615 "muted" : false,
9616 "newShot" : false,
9617 "speed" : 1,
9618 "srcIn" : 2783.186440677967,
9619 "start" : 891.0508474576271,
9620 "track" : "v0"
9621 },
9622 {
9623 "duration" : 5.288135593220318,
9624 "fadeIn" : 0,
9625 "fadeOut" : 0,
9626 "id" : "47F3B364-BE6C-473E-85C4-AD4A9DADF041",
9627 "kind" : "audio",
9628 "linkId" : "F572F9CE-FD52-495A-A477-9D6D62AC1086",
9629 "mediaId" : "55C13A17-0423-4BC0-93A6-3FEFD02E7FC6",
9630 "muted" : true,
9631 "newShot" : false,
9632 "speed" : 1,
9633 "srcIn" : 2783.102569136626,
9634 "start" : 891.0508474576271,
9635 "track" : "v1"
9636 },
9637 {
9638 "duration" : 5.288135593220318,
9639 "fadeIn" : 0,
9640 "fadeOut" : 0,
9641 "id" : "E99A647D-A1D7-4937-883D-517D2AB47C45",
9642 "kind" : "audio",
9643 "linkId" : "F572F9CE-FD52-495A-A477-9D6D62AC1086",
9644 "mediaId" : "501034F8-09AC-44B1-8826-FCE9B36C68F9",
9645 "muted" : false,
9646 "newShot" : false,
9647 "speed" : 1,
9648 "srcIn" : 2783.1492454398567,
9649 "start" : 891.0508474576271,
9650 "track" : "v2"
9651 },
9652 {
9653 "duration" : 5.288135593220318,
9654 "fadeIn" : 0,
9655 "fadeOut" : 0,
9656 "id" : "68CBC79C-1130-4411-9396-AF8D0501E229",
9657 "kind" : "video",
9658 "linkId" : "F572F9CE-FD52-495A-A477-9D6D62AC1086",
9659 "mediaId" : "D866E8BE-A5B1-4B51-B465-D3F753701CCE",
9660 "muted" : false,
9661 "newShot" : false,
9662 "speed" : 1,
9663 "srcIn" : 2783.0126383036286,
9664 "start" : 891.0508474576271,
9665 "track" : "v3"
9666 },
9667 {
9668 "duration" : 5.288135593220318,
9669 "fadeIn" : 0,
9670 "fadeOut" : 0,
9671 "id" : "B4AEE7C6-2A5A-4B03-B760-5FB897266EB9",
9672 "kind" : "video",
9673 "linkId" : "F572F9CE-FD52-495A-A477-9D6D62AC1086",
9674 "mediaId" : "92E85F7F-CA8B-473D-82F6-C7A7418875B1",
9675 "muted" : false,
9676 "newShot" : false,
9677 "speed" : 1,
9678 "srcIn" : 2783.01263371963,
9679 "start" : 891.0508474576271,
9680 "track" : "v4"
9681 },
9682 {
9683 "duration" : 25.96610169491521,
9684 "fadeIn" : 0,
9685 "fadeOut" : 0,
9686 "id" : "3A767D55-B04B-4029-9717-1C032BD7E834",
9687 "kind" : "video",
9688 "linkId" : "B52B0E53-2FA8-47CD-B126-B2D828808856",
9689 "mediaId" : "40BBB768-793D-44DA-BBC9-B22F6591159D",
9690 "muted" : false,
9691 "newShot" : false,
9692 "speed" : 1,
9693 "srcIn" : 2807.152542372882,
9694 "start" : 896.3389830508474,
9695 "track" : "v0"
9696 },
9697 {
9698 "duration" : 25.96610169491521,
9699 "fadeIn" : 0,
9700 "fadeOut" : 0,
9701 "id" : "CF8D639C-6FA9-4562-BF86-A28192C1D6C3",
9702 "kind" : "audio",
9703 "linkId" : "B52B0E53-2FA8-47CD-B126-B2D828808856",
9704 "mediaId" : "55C13A17-0423-4BC0-93A6-3FEFD02E7FC6",
9705 "muted" : true,
9706 "newShot" : false,
9707 "speed" : 1,
9708 "srcIn" : 2807.068670831541,
9709 "start" : 896.3389830508474,
9710 "track" : "v1"
9711 },
9712 {
9713 "duration" : 25.96610169491521,
9714 "fadeIn" : 0,
9715 "fadeOut" : 0,
9716 "id" : "304BEE54-6B93-44B2-BF5C-F5E0F8864DBB",
9717 "kind" : "audio",
9718 "linkId" : "B52B0E53-2FA8-47CD-B126-B2D828808856",
9719 "mediaId" : "501034F8-09AC-44B1-8826-FCE9B36C68F9",
9720 "muted" : false,
9721 "newShot" : false,
9722 "speed" : 1,
9723 "srcIn" : 2807.115347134772,
9724 "start" : 896.3389830508474,
9725 "track" : "v2"
9726 },
9727 {
9728 "duration" : 25.96610169491521,
9729 "fadeIn" : 0,
9730 "fadeOut" : 0,
9731 "id" : "7DAAE3B6-0D4A-4029-9891-8A2D9DD41EB6",
9732 "kind" : "video",
9733 "linkId" : "B52B0E53-2FA8-47CD-B126-B2D828808856",
9734 "mediaId" : "D866E8BE-A5B1-4B51-B465-D3F753701CCE",
9735 "muted" : false,
9736 "newShot" : false,
9737 "speed" : 1,
9738 "srcIn" : 2806.978739998544,
9739 "start" : 896.3389830508474,
9740 "track" : "v3"
9741 },
9742 {
9743 "duration" : 25.96610169491521,
9744 "fadeIn" : 0,
9745 "fadeOut" : 0,
9746 "id" : "A7EC127B-861B-436B-973A-566A7282AB56",
9747 "kind" : "video",
9748 "linkId" : "B52B0E53-2FA8-47CD-B126-B2D828808856",
9749 "mediaId" : "92E85F7F-CA8B-473D-82F6-C7A7418875B1",
9750 "muted" : false,
9751 "newShot" : false,
9752 "speed" : 1,
9753 "srcIn" : 2806.978735414545,
9754 "start" : 896.3389830508474,
9755 "track" : "v4"
9756 },
9757 {
9758 "duration" : 1.9322033898305335,
9759 "fadeIn" : 0,
9760 "fadeOut" : 0,
9761 "id" : "B9DADEF6-8878-42FB-BD66-05228CB67D3F",
9762 "kind" : "video",
9763 "linkId" : "6C868D02-D8F5-470C-891B-B0D8A8F52B42",
9764 "mediaId" : "40BBB768-793D-44DA-BBC9-B22F6591159D",
9765 "muted" : false,
9766 "newShot" : false,
9767 "speed" : 1,
9768 "srcIn" : 2833.1186440677975,
9769 "start" : 922.3050847457627,
9770 "track" : "v0"
9771 },
9772 {
9773 "duration" : 1.9322033898305335,
9774 "fadeIn" : 0,
9775 "fadeOut" : 0,
9776 "id" : "43CC1239-2AD4-4790-8627-80441483FA43",
9777 "kind" : "audio",
9778 "linkId" : "6C868D02-D8F5-470C-891B-B0D8A8F52B42",
9779 "mediaId" : "55C13A17-0423-4BC0-93A6-3FEFD02E7FC6",
9780 "muted" : true,
9781 "newShot" : false,
9782 "speed" : 1,
9783 "srcIn" : 2833.0347725264564,
9784 "start" : 922.3050847457627,
9785 "track" : "v1"
9786 },
9787 {
9788 "duration" : 1.9322033898305335,
9789 "fadeIn" : 0,
9790 "fadeOut" : 0,
9791 "id" : "3E10D3AF-E56C-4B77-B15A-7A6A433E78B5",
9792 "kind" : "audio",
9793 "linkId" : "6C868D02-D8F5-470C-891B-B0D8A8F52B42",
9794 "mediaId" : "501034F8-09AC-44B1-8826-FCE9B36C68F9",
9795 "muted" : false,
9796 "newShot" : false,
9797 "speed" : 1,
9798 "srcIn" : 2833.0814488296874,
9799 "start" : 922.3050847457627,
9800 "track" : "v2"
9801 },
9802 {
9803 "duration" : 1.9322033898305335,
9804 "fadeIn" : 0,
9805 "fadeOut" : 0,
9806 "id" : "0AE9423C-B5CA-40D7-A25F-1D5950077D5C",
9807 "kind" : "video",
9808 "linkId" : "6C868D02-D8F5-470C-891B-B0D8A8F52B42",
9809 "mediaId" : "D866E8BE-A5B1-4B51-B465-D3F753701CCE",
9810 "muted" : false,
9811 "newShot" : false,
9812 "speed" : 1,
9813 "srcIn" : 2832.9448416934592,
9814 "start" : 922.3050847457627,
9815 "track" : "v3"
9816 },
9817 {
9818 "duration" : 1.9322033898305335,
9819 "fadeIn" : 0,
9820 "fadeOut" : 0,
9821 "id" : "FA6C223A-7F5A-4150-A5F4-D2B4B445D9C0",
9822 "kind" : "video",
9823 "linkId" : "6C868D02-D8F5-470C-891B-B0D8A8F52B42",
9824 "mediaId" : "92E85F7F-CA8B-473D-82F6-C7A7418875B1",
9825 "muted" : false,
9826 "newShot" : false,
9827 "speed" : 1,
9828 "srcIn" : 2832.9448371094604,
9829 "start" : 922.3050847457627,
9830 "track" : "v4"
9831 },
9832 {
9833 "duration" : 7.186440677966175,
9834 "fadeIn" : 0,
9835 "fadeOut" : 0,
9836 "id" : "934F79A8-575E-43F0-AD6C-F24F5199B7CB",
9837 "kind" : "video",
9838 "linkId" : "851CBD5D-70B1-429E-9236-7ECFEDAAA252",
9839 "mediaId" : "40BBB768-793D-44DA-BBC9-B22F6591159D",
9840 "muted" : false,
9841 "newShot" : false,
9842 "speed" : 1,
9843 "srcIn" : 2838.7118644067805,
9844 "start" : 924.2372881355932,
9845 "track" : "v0"
9846 },
9847 {
9848 "duration" : 7.186440677966175,
9849 "fadeIn" : 0,
9850 "fadeOut" : 0,
9851 "id" : "A6FAE2FB-6564-42B5-ACC5-56029B3331BE",
9852 "kind" : "audio",
9853 "linkId" : "851CBD5D-70B1-429E-9236-7ECFEDAAA252",
9854 "mediaId" : "55C13A17-0423-4BC0-93A6-3FEFD02E7FC6",
9855 "muted" : true,
9856 "newShot" : false,
9857 "speed" : 1,
9858 "srcIn" : 2838.6279928654394,
9859 "start" : 924.2372881355932,
9860 "track" : "v1"
9861 },
9862 {
9863 "duration" : 7.186440677966175,
9864 "fadeIn" : 0,
9865 "fadeOut" : 0,
9866 "id" : "EE147F25-D8F4-43EB-B6A4-DE05CB21BB12",
9867 "kind" : "audio",
9868 "linkId" : "851CBD5D-70B1-429E-9236-7ECFEDAAA252",
9869 "mediaId" : "501034F8-09AC-44B1-8826-FCE9B36C68F9",
9870 "muted" : false,
9871 "newShot" : false,
9872 "speed" : 1,
9873 "srcIn" : 2838.6746691686703,
9874 "start" : 924.2372881355932,
9875 "track" : "v2"
9876 },
9877 {
9878 "duration" : 7.186440677966175,
9879 "fadeIn" : 0,
9880 "fadeOut" : 0,
9881 "id" : "4890D002-161D-4D3E-A662-D441F2232FFF",
9882 "kind" : "video",
9883 "linkId" : "851CBD5D-70B1-429E-9236-7ECFEDAAA252",
9884 "mediaId" : "D866E8BE-A5B1-4B51-B465-D3F753701CCE",
9885 "muted" : false,
9886 "newShot" : false,
9887 "speed" : 1,
9888 "srcIn" : 2838.538062032442,
9889 "start" : 924.2372881355932,
9890 "track" : "v3"
9891 },
9892 {
9893 "duration" : 7.186440677966175,
9894 "fadeIn" : 0,
9895 "fadeOut" : 0,
9896 "id" : "9BAE233F-FFA4-4044-A029-3B4EC16018C3",
9897 "kind" : "video",
9898 "linkId" : "851CBD5D-70B1-429E-9236-7ECFEDAAA252",
9899 "mediaId" : "92E85F7F-CA8B-473D-82F6-C7A7418875B1",
9900 "muted" : false,
9901 "newShot" : false,
9902 "speed" : 1,
9903 "srcIn" : 2838.5380574484434,
9904 "start" : 924.2372881355932,
9905 "track" : "v4"
9906 },
9907 {
9908 "duration" : 3.830508474576277,
9909 "fadeIn" : 0,
9910 "fadeOut" : 0,
9911 "id" : "FB84EAA1-5B89-4489-89B4-D080098A1CD8",
9912 "kind" : "video",
9913 "linkId" : "6206B630-2FC1-4084-9937-5E08F99F118D",
9914 "mediaId" : "40BBB768-793D-44DA-BBC9-B22F6591159D",
9915 "muted" : false,
9916 "newShot" : false,
9917 "speed" : 1,
9918 "srcIn" : 2890.5084745762715,
9919 "start" : 931.4237288135594,
9920 "track" : "v0"
9921 },
9922 {
9923 "duration" : 3.830508474576277,
9924 "fadeIn" : 0,
9925 "fadeOut" : 0,
9926 "id" : "EE6692DD-2585-4607-A46A-C6A25FB86B72",
9927 "kind" : "audio",
9928 "linkId" : "6206B630-2FC1-4084-9937-5E08F99F118D",
9929 "mediaId" : "55C13A17-0423-4BC0-93A6-3FEFD02E7FC6",
9930 "muted" : true,
9931 "newShot" : false,
9932 "speed" : 1,
9933 "srcIn" : 2890.4246030349304,
9934 "start" : 931.4237288135594,
9935 "track" : "v1"
9936 },
9937 {
9938 "duration" : 3.830508474576277,
9939 "fadeIn" : 0,
9940 "fadeOut" : 0,
9941 "id" : "78A13F6F-DCA5-491A-8B52-0FC2409760AB",
9942 "kind" : "audio",
9943 "linkId" : "6206B630-2FC1-4084-9937-5E08F99F118D",
9944 "mediaId" : "501034F8-09AC-44B1-8826-FCE9B36C68F9",
9945 "muted" : false,
9946 "newShot" : false,
9947 "speed" : 1,
9948 "srcIn" : 2890.4712793381614,
9949 "start" : 931.4237288135594,
9950 "track" : "v2"
9951 },
9952 {
9953 "duration" : 3.830508474576277,
9954 "fadeIn" : 0,
9955 "fadeOut" : 0,
9956 "id" : "629569A0-6C4A-466A-AFA1-918C22E2E018",
9957 "kind" : "video",
9958 "linkId" : "6206B630-2FC1-4084-9937-5E08F99F118D",
9959 "mediaId" : "D866E8BE-A5B1-4B51-B465-D3F753701CCE",
9960 "muted" : false,
9961 "newShot" : false,
9962 "speed" : 1,
9963 "srcIn" : 2890.3346722019332,
9964 "start" : 931.4237288135594,
9965 "track" : "v3"
9966 },
9967 {
9968 "duration" : 3.830508474576277,
9969 "fadeIn" : 0,
9970 "fadeOut" : 0,
9971 "id" : "55E9F328-E350-4B59-ACEA-6C4EF5E5A345",
9972 "kind" : "video",
9973 "linkId" : "6206B630-2FC1-4084-9937-5E08F99F118D",
9974 "mediaId" : "92E85F7F-CA8B-473D-82F6-C7A7418875B1",
9975 "muted" : false,
9976 "newShot" : false,
9977 "speed" : 1,
9978 "srcIn" : 2890.3346676179344,
9979 "start" : 931.4237288135594,
9980 "track" : "v4"
9981 },
9982 {
9983 "duration" : 3.016949152542338,
9984 "fadeIn" : 0,
9985 "fadeOut" : 0,
9986 "id" : "61D97AD3-FA77-4D5E-85F2-0D8E088424D8",
9987 "kind" : "video",
9988 "linkId" : "03409808-1CF1-4E22-8CFC-D7F337CA20C0",
9989 "mediaId" : "40BBB768-793D-44DA-BBC9-B22F6591159D",
9990 "muted" : false,
9991 "newShot" : false,
9992 "speed" : 1,
9993 "srcIn" : 2897.593220338983,
9994 "start" : 935.2542372881356,
9995 "track" : "v0"
9996 },
9997 {
9998 "duration" : 3.016949152542338,
9999 "fadeIn" : 0,
10000 "fadeOut" : 0,
10001 "id" : "A4B63EE7-142A-4568-B3A3-9BD1DFE06CE5",
10002 "kind" : "audio",
10003 "linkId" : "03409808-1CF1-4E22-8CFC-D7F337CA20C0",
10004 "mediaId" : "55C13A17-0423-4BC0-93A6-3FEFD02E7FC6",
10005 "muted" : true,
10006 "newShot" : false,
10007 "speed" : 1,
10008 "srcIn" : 2897.509348797642,
10009 "start" : 935.2542372881356,
10010 "track" : "v1"
10011 },
10012 {
10013 "duration" : 3.016949152542338,
10014 "fadeIn" : 0,
10015 "fadeOut" : 0,
10016 "id" : "2195C3FF-C478-48A3-B480-A8D661ECF7EF",
10017 "kind" : "audio",
10018 "linkId" : "03409808-1CF1-4E22-8CFC-D7F337CA20C0",
10019 "mediaId" : "501034F8-09AC-44B1-8826-FCE9B36C68F9",
10020 "muted" : false,
10021 "newShot" : false,
10022 "speed" : 1,
10023 "srcIn" : 2897.556025100873,
10024 "start" : 935.2542372881356,
10025 "track" : "v2"
10026 },
10027 {
10028 "duration" : 3.016949152542338,
10029 "fadeIn" : 0,
10030 "fadeOut" : 0,
10031 "id" : "12215B20-BCE9-4ED2-BEC6-1EF6791F42B1",
10032 "kind" : "video",
10033 "linkId" : "03409808-1CF1-4E22-8CFC-D7F337CA20C0",
10034 "mediaId" : "D866E8BE-A5B1-4B51-B465-D3F753701CCE",
10035 "muted" : false,
10036 "newShot" : false,
10037 "speed" : 1,
10038 "srcIn" : 2897.4194179646447,
10039 "start" : 935.2542372881356,
10040 "track" : "v3"
10041 },
10042 {
10043 "duration" : 3.016949152542338,
10044 "fadeIn" : 0,
10045 "fadeOut" : 0,
10046 "id" : "416FCED0-3BEE-4052-95C4-0D4395DF944A",
10047 "kind" : "video",
10048 "linkId" : "03409808-1CF1-4E22-8CFC-D7F337CA20C0",
10049 "mediaId" : "92E85F7F-CA8B-473D-82F6-C7A7418875B1",
10050 "muted" : false,
10051 "newShot" : false,
10052 "speed" : 1,
10053 "srcIn" : 2897.419413380646,
10054 "start" : 935.2542372881356,
10055 "track" : "v4"
10056 },
10057 {
10058 "duration" : 0.8135593220338251,
10059 "fadeIn" : 0,
10060 "fadeOut" : 0,
10061 "id" : "3D695665-26AC-4ECE-B055-5ED89B2AEF2E",
10062 "kind" : "video",
10063 "linkId" : "D7000904-0663-4407-824B-32447EFF33F6",
10064 "mediaId" : "40BBB768-793D-44DA-BBC9-B22F6591159D",
10065 "muted" : false,
10066 "newShot" : false,
10067 "speed" : 1,
10068 "srcIn" : 2904.5423728813553,
10069 "start" : 938.271186440678,
10070 "track" : "v0"
10071 },
10072 {
10073 "duration" : 0.8135593220338251,
10074 "fadeIn" : 0,
10075 "fadeOut" : 0,
10076 "id" : "1895810B-430E-4DE6-8E5B-653139F5FBEE",
10077 "kind" : "audio",
10078 "linkId" : "D7000904-0663-4407-824B-32447EFF33F6",
10079 "mediaId" : "55C13A17-0423-4BC0-93A6-3FEFD02E7FC6",
10080 "muted" : true,
10081 "newShot" : false,
10082 "speed" : 1,
10083 "srcIn" : 2904.458501340014,
10084 "start" : 938.271186440678,
10085 "track" : "v1"
10086 },
10087 {
10088 "duration" : 0.8135593220338251,
10089 "fadeIn" : 0,
10090 "fadeOut" : 0,
10091 "id" : "0E102FE5-7926-4A40-9B94-CF405C37EB75",
10092 "kind" : "audio",
10093 "linkId" : "D7000904-0663-4407-824B-32447EFF33F6",
10094 "mediaId" : "501034F8-09AC-44B1-8826-FCE9B36C68F9",
10095 "muted" : false,
10096 "newShot" : false,
10097 "speed" : 1,
10098 "srcIn" : 2904.505177643245,
10099 "start" : 938.271186440678,
10100 "track" : "v2"
10101 },
10102 {
10103 "duration" : 0.8135593220338251,
10104 "fadeIn" : 0,
10105 "fadeOut" : 0,
10106 "id" : "222B3055-014A-4379-98CD-69EC43A35470",
10107 "kind" : "video",
10108 "linkId" : "D7000904-0663-4407-824B-32447EFF33F6",
10109 "mediaId" : "D866E8BE-A5B1-4B51-B465-D3F753701CCE",
10110 "muted" : false,
10111 "newShot" : false,
10112 "speed" : 1,
10113 "srcIn" : 2904.368570507017,
10114 "start" : 938.271186440678,
10115 "track" : "v3"
10116 },
10117 {
10118 "duration" : 0.8135593220338251,
10119 "fadeIn" : 0,
10120 "fadeOut" : 0,
10121 "id" : "28CA102D-CDC8-46C5-988E-86F0EEF5EEDC",
10122 "kind" : "video",
10123 "linkId" : "D7000904-0663-4407-824B-32447EFF33F6",
10124 "mediaId" : "92E85F7F-CA8B-473D-82F6-C7A7418875B1",
10125 "muted" : false,
10126 "newShot" : false,
10127 "speed" : 1,
10128 "srcIn" : 2904.368565923018,
10129 "start" : 938.271186440678,
10130 "track" : "v4"
10131 },
10132 {
10133 "duration" : 16.169491525423723,
10134 "fadeIn" : 0,
10135 "fadeOut" : 0,
10136 "id" : "1BBD2846-8898-43ED-B9EF-51ABB977D172",
10137 "kind" : "video",
10138 "linkId" : "441E27DB-C392-40BA-85B8-B3F421EF14E8",
10139 "mediaId" : "40BBB768-793D-44DA-BBC9-B22F6591159D",
10140 "muted" : false,
10141 "newShot" : false,
10142 "speed" : 1,
10143 "srcIn" : 2905.3559322033893,
10144 "start" : 939.0847457627119,
10145 "track" : "v0"
10146 },
10147 {
10148 "duration" : 16.169491525423723,
10149 "fadeIn" : 0,
10150 "fadeOut" : 0,
10151 "id" : "0238A063-2A08-4FDB-920C-7372B455BCB8",
10152 "kind" : "audio",
10153 "linkId" : "441E27DB-C392-40BA-85B8-B3F421EF14E8",
10154 "mediaId" : "55C13A17-0423-4BC0-93A6-3FEFD02E7FC6",
10155 "muted" : true,
10156 "newShot" : false,
10157 "speed" : 1,
10158 "srcIn" : 2905.2720606620483,
10159 "start" : 939.0847457627119,
10160 "track" : "v1"
10161 },
10162 {
10163 "duration" : 16.169491525423723,
10164 "fadeIn" : 0,
10165 "fadeOut" : 0,
10166 "id" : "CAF3113A-611A-4A6B-9A03-3539D6A0E4B1",
10167 "kind" : "audio",
10168 "linkId" : "441E27DB-C392-40BA-85B8-B3F421EF14E8",
10169 "mediaId" : "501034F8-09AC-44B1-8826-FCE9B36C68F9",
10170 "muted" : false,
10171 "newShot" : false,
10172 "speed" : 1,
10173 "srcIn" : 2905.318736965279,
10174 "start" : 939.0847457627119,
10175 "track" : "v2"
10176 },
10177 {
10178 "duration" : 16.169491525423723,
10179 "fadeIn" : 0,
10180 "fadeOut" : 0,
10181 "id" : "19424805-E973-46BC-BD0D-3547754230B4",
10182 "kind" : "video",
10183 "linkId" : "441E27DB-C392-40BA-85B8-B3F421EF14E8",
10184 "mediaId" : "D866E8BE-A5B1-4B51-B465-D3F753701CCE",
10185 "muted" : false,
10186 "newShot" : false,
10187 "speed" : 1,
10188 "srcIn" : 2905.182129829051,
10189 "start" : 939.0847457627119,
10190 "track" : "v3"
10191 },
10192 {
10193 "duration" : 16.169491525423723,
10194 "fadeIn" : 0,
10195 "fadeOut" : 0,
10196 "id" : "D38B18BD-6C89-4507-A1EF-9B817B8E10CA",
10197 "kind" : "video",
10198 "linkId" : "441E27DB-C392-40BA-85B8-B3F421EF14E8",
10199 "mediaId" : "92E85F7F-CA8B-473D-82F6-C7A7418875B1",
10200 "muted" : false,
10201 "newShot" : false,
10202 "speed" : 1,
10203 "srcIn" : 2905.1821252450522,
10204 "start" : 939.0847457627119,
10205 "track" : "v4"
10206 },
10207 {
10208 "duration" : 32.4406779661017,
10209 "fadeIn" : 0,
10210 "fadeOut" : 0,
10211 "id" : "92828BED-54D1-43DA-ADCC-A2784A7E60A8",
10212 "kind" : "video",
10213 "linkId" : "C90940D8-882F-4CBD-839A-3F097CE89ED2",
10214 "mediaId" : "40BBB768-793D-44DA-BBC9-B22F6591159D",
10215 "muted" : false,
10216 "newShot" : false,
10217 "speed" : 1,
10218 "srcIn" : 2950.3389830508468,
10219 "start" : 955.2542372881356,
10220 "track" : "v0"
10221 },
10222 {
10223 "duration" : 32.4406779661017,
10224 "fadeIn" : 0,
10225 "fadeOut" : 0,
10226 "id" : "64CCF21E-AA71-4C5F-9CB3-EAE93F031C97",
10227 "kind" : "audio",
10228 "linkId" : "C90940D8-882F-4CBD-839A-3F097CE89ED2",
10229 "mediaId" : "55C13A17-0423-4BC0-93A6-3FEFD02E7FC6",
10230 "muted" : true,
10231 "newShot" : false,
10232 "speed" : 1,
10233 "srcIn" : 2950.2551115095057,
10234 "start" : 955.2542372881356,
10235 "track" : "v1"
10236 },
10237 {
10238 "duration" : 32.4406779661017,
10239 "fadeIn" : 0,
10240 "fadeOut" : 0,
10241 "id" : "0EF2F1D8-B27D-425B-A77E-024D9E8ED834",
10242 "kind" : "audio",
10243 "linkId" : "C90940D8-882F-4CBD-839A-3F097CE89ED2",
10244 "mediaId" : "501034F8-09AC-44B1-8826-FCE9B36C68F9",
10245 "muted" : false,
10246 "newShot" : false,
10247 "speed" : 1,
10248 "srcIn" : 2950.3017878127366,
10249 "start" : 955.2542372881356,
10250 "track" : "v2"
10251 },
10252 {
10253 "duration" : 32.4406779661017,
10254 "fadeIn" : 0,
10255 "fadeOut" : 0,
10256 "id" : "7F966B3B-7499-46E3-A145-F4F6CB9899E5",
10257 "kind" : "video",
10258 "linkId" : "C90940D8-882F-4CBD-839A-3F097CE89ED2",
10259 "mediaId" : "D866E8BE-A5B1-4B51-B465-D3F753701CCE",
10260 "muted" : false,
10261 "newShot" : false,
10262 "speed" : 1,
10263 "srcIn" : 2950.1651806765085,
10264 "start" : 955.2542372881356,
10265 "track" : "v3"
10266 },
10267 {
10268 "duration" : 32.4406779661017,
10269 "fadeIn" : 0,
10270 "fadeOut" : 0,
10271 "id" : "869C0AAC-694F-4A83-ACBD-BA02B2F1EBCA",
10272 "kind" : "video",
10273 "linkId" : "C90940D8-882F-4CBD-839A-3F097CE89ED2",
10274 "mediaId" : "92E85F7F-CA8B-473D-82F6-C7A7418875B1",
10275 "muted" : false,
10276 "newShot" : false,
10277 "speed" : 1,
10278 "srcIn" : 2950.1651760925097,
10279 "start" : 955.2542372881356,
10280 "track" : "v4"
10281 },
10282 {
10283 "duration" : 2.5762711864406356,
10284 "fadeIn" : 0,
10285 "fadeOut" : 0,
10286 "id" : "25EDDE61-86BB-4F70-A496-23BF74AE9006",
10287 "kind" : "video",
10288 "linkId" : "9D7E5089-781D-46B7-83D2-8B95043855FA",
10289 "mediaId" : "40BBB768-793D-44DA-BBC9-B22F6591159D",
10290 "muted" : false,
10291 "newShot" : false,
10292 "speed" : 1,
10293 "srcIn" : 2983.661016949152,
10294 "start" : 987.6949152542373,
10295 "track" : "v0"
10296 },
10297 {
10298 "duration" : 2.5762711864406356,
10299 "fadeIn" : 0,
10300 "fadeOut" : 0,
10301 "id" : "AAAAE9EC-5D0B-4491-B3AE-40D47947A105",
10302 "kind" : "audio",
10303 "linkId" : "9D7E5089-781D-46B7-83D2-8B95043855FA",
10304 "mediaId" : "55C13A17-0423-4BC0-93A6-3FEFD02E7FC6",
10305 "muted" : true,
10306 "newShot" : false,
10307 "speed" : 1,
10308 "srcIn" : 2983.577145407811,
10309 "start" : 987.6949152542373,
10310 "track" : "v1"
10311 },
10312 {
10313 "duration" : 2.5762711864406356,
10314 "fadeIn" : 0,
10315 "fadeOut" : 0,
10316 "id" : "A75BBCB8-738D-4750-B235-F5EC59113946",
10317 "kind" : "audio",
10318 "linkId" : "9D7E5089-781D-46B7-83D2-8B95043855FA",
10319 "mediaId" : "501034F8-09AC-44B1-8826-FCE9B36C68F9",
10320 "muted" : false,
10321 "newShot" : false,
10322 "speed" : 1,
10323 "srcIn" : 2983.6238217110417,
10324 "start" : 987.6949152542373,
10325 "track" : "v2"
10326 },
10327 {
10328 "duration" : 2.5762711864406356,
10329 "fadeIn" : 0,
10330 "fadeOut" : 0,
10331 "id" : "71F23B1C-6343-4637-9DFC-DF10EEE27AD4",
10332 "kind" : "video",
10333 "linkId" : "9D7E5089-781D-46B7-83D2-8B95043855FA",
10334 "mediaId" : "D866E8BE-A5B1-4B51-B465-D3F753701CCE",
10335 "muted" : false,
10336 "newShot" : false,
10337 "speed" : 1,
10338 "srcIn" : 2983.4872145748136,
10339 "start" : 987.6949152542373,
10340 "track" : "v3"
10341 },
10342 {
10343 "duration" : 2.5762711864406356,
10344 "fadeIn" : 0,
10345 "fadeOut" : 0,
10346 "id" : "BFF6C236-F0FD-45E2-B714-265E9B8F2102",
10347 "kind" : "video",
10348 "linkId" : "9D7E5089-781D-46B7-83D2-8B95043855FA",
10349 "mediaId" : "92E85F7F-CA8B-473D-82F6-C7A7418875B1",
10350 "muted" : false,
10351 "newShot" : false,
10352 "speed" : 1,
10353 "srcIn" : 2983.487209990815,
10354 "start" : 987.6949152542373,
10355 "track" : "v4"
10356 },
10357 {
10358 "duration" : 14.101694915254257,
10359 "fadeIn" : 0,
10360 "fadeOut" : 0,
10361 "id" : "2B6D6836-A007-4343-9775-70DD28CB6EB9",
10362 "kind" : "video",
10363 "linkId" : "EFD99B70-8810-42EC-8F2B-5AA76217327E",
10364 "mediaId" : "40BBB768-793D-44DA-BBC9-B22F6591159D",
10365 "muted" : false,
10366 "newShot" : false,
10367 "speed" : 1,
10368 "srcIn" : 2986.542372881355,
10369 "start" : 990.271186440678,
10370 "track" : "v0"
10371 },
10372 {
10373 "duration" : 14.101694915254257,
10374 "fadeIn" : 0,
10375 "fadeOut" : 0,
10376 "id" : "7E48882C-AD53-4651-90D8-9CBDFEF95F0C",
10377 "kind" : "audio",
10378 "linkId" : "EFD99B70-8810-42EC-8F2B-5AA76217327E",
10379 "mediaId" : "55C13A17-0423-4BC0-93A6-3FEFD02E7FC6",
10380 "muted" : true,
10381 "newShot" : false,
10382 "speed" : 1,
10383 "srcIn" : 2986.4585013400138,
10384 "start" : 990.271186440678,
10385 "track" : "v1"
10386 },
10387 {
10388 "duration" : 14.101694915254257,
10389 "fadeIn" : 0,
10390 "fadeOut" : 0,
10391 "id" : "BA449FE2-AFB9-4E77-8799-8FE2429251A7",
10392 "kind" : "audio",
10393 "linkId" : "EFD99B70-8810-42EC-8F2B-5AA76217327E",
10394 "mediaId" : "501034F8-09AC-44B1-8826-FCE9B36C68F9",
10395 "muted" : false,
10396 "newShot" : false,
10397 "speed" : 1,
10398 "srcIn" : 2986.5051776432447,
10399 "start" : 990.271186440678,
10400 "track" : "v2"
10401 },
10402 {
10403 "duration" : 14.101694915254257,
10404 "fadeIn" : 0,
10405 "fadeOut" : 0,
10406 "id" : "A3C307CE-4B58-4DB3-B763-3452763F1277",
10407 "kind" : "video",
10408 "linkId" : "EFD99B70-8810-42EC-8F2B-5AA76217327E",
10409 "mediaId" : "D866E8BE-A5B1-4B51-B465-D3F753701CCE",
10410 "muted" : false,
10411 "newShot" : false,
10412 "speed" : 1,
10413 "srcIn" : 2986.3685705070166,
10414 "start" : 990.271186440678,
10415 "track" : "v3"
10416 },
10417 {
10418 "duration" : 14.101694915254257,
10419 "fadeIn" : 0,
10420 "fadeOut" : 0,
10421 "id" : "322BFB74-8CE6-4C2F-950C-898A113AB445",
10422 "kind" : "video",
10423 "linkId" : "EFD99B70-8810-42EC-8F2B-5AA76217327E",
10424 "mediaId" : "92E85F7F-CA8B-473D-82F6-C7A7418875B1",
10425 "muted" : false,
10426 "newShot" : false,
10427 "speed" : 1,
10428 "srcIn" : 2986.3685659230177,
10429 "start" : 990.271186440678,
10430 "track" : "v4"
10431 },
10432 {
10433 "duration" : 41.18644067796606,
10434 "fadeIn" : 0,
10435 "fadeOut" : 0,
10436 "id" : "1C0BB1B6-1862-4A8E-B78B-26DBECD3F37B",
10437 "kind" : "video",
10438 "linkId" : "9F7D047B-0DE6-4655-9D6E-5B8ADDD0267B",
10439 "mediaId" : "40BBB768-793D-44DA-BBC9-B22F6591159D",
10440 "muted" : false,
10441 "newShot" : false,
10442 "speed" : 1,
10443 "srcIn" : 3016.4745762711855,
10444 "start" : 1004.3728813559322,
10445 "track" : "v0"
10446 },
10447 {
10448 "duration" : 41.18644067796606,
10449 "fadeIn" : 0,
10450 "fadeOut" : 0,
10451 "id" : "3DF07444-8948-4073-A7B7-DCD022163D06",
10452 "kind" : "audio",
10453 "linkId" : "9F7D047B-0DE6-4655-9D6E-5B8ADDD0267B",
10454 "mediaId" : "55C13A17-0423-4BC0-93A6-3FEFD02E7FC6",
10455 "muted" : true,
10456 "newShot" : false,
10457 "speed" : 1,
10458 "srcIn" : 3016.3907047298444,
10459 "start" : 1004.3728813559322,
10460 "track" : "v1"
10461 },
10462 {
10463 "duration" : 41.18644067796606,
10464 "fadeIn" : 0,
10465 "fadeOut" : 0,
10466 "id" : "17518456-794B-46AE-8B57-11535384C6DD",
10467 "kind" : "audio",
10468 "linkId" : "9F7D047B-0DE6-4655-9D6E-5B8ADDD0267B",
10469 "mediaId" : "501034F8-09AC-44B1-8826-FCE9B36C68F9",
10470 "muted" : false,
10471 "newShot" : false,
10472 "speed" : 1,
10473 "srcIn" : 3016.4373810330753,
10474 "start" : 1004.3728813559322,
10475 "track" : "v2"
10476 },
10477 {
10478 "duration" : 41.18644067796606,
10479 "fadeIn" : 0,
10480 "fadeOut" : 0,
10481 "id" : "D83C6190-0569-4756-B034-B56F5EA95C6A",
10482 "kind" : "video",
10483 "linkId" : "9F7D047B-0DE6-4655-9D6E-5B8ADDD0267B",
10484 "mediaId" : "D866E8BE-A5B1-4B51-B465-D3F753701CCE",
10485 "muted" : false,
10486 "newShot" : false,
10487 "speed" : 1,
10488 "srcIn" : 3016.300773896847,
10489 "start" : 1004.3728813559322,
10490 "track" : "v3"
10491 },
10492 {
10493 "duration" : 41.18644067796606,
10494 "fadeIn" : 0,
10495 "fadeOut" : 0,
10496 "id" : "04909166-A121-49EA-B441-2498FB853E8E",
10497 "kind" : "video",
10498 "linkId" : "9F7D047B-0DE6-4655-9D6E-5B8ADDD0267B",
10499 "mediaId" : "92E85F7F-CA8B-473D-82F6-C7A7418875B1",
10500 "muted" : false,
10501 "newShot" : false,
10502 "speed" : 1,
10503 "srcIn" : 3016.3007693128484,
10504 "start" : 1004.3728813559322,
10505 "track" : "v4"
10506 },
10507 {
10508 "duration" : 1.661016949152554,
10509 "fadeIn" : 0,
10510 "fadeOut" : 0,
10511 "id" : "AB7E6E67-21DC-473D-A4F5-32C751A46EE1",
10512 "kind" : "video",
10513 "linkId" : "0B407464-C16F-4EE0-8709-4530856B5481",
10514 "mediaId" : "40BBB768-793D-44DA-BBC9-B22F6591159D",
10515 "muted" : false,
10516 "newShot" : false,
10517 "speed" : 1,
10518 "srcIn" : 3065.593220338982,
10519 "start" : 1045.5593220338983,
10520 "track" : "v0"
10521 },
10522 {
10523 "duration" : 1.661016949152554,
10524 "fadeIn" : 0,
10525 "fadeOut" : 0,
10526 "id" : "3945B5C6-C770-47E5-BF52-BC27D9ABFAE0",
10527 "kind" : "audio",
10528 "linkId" : "0B407464-C16F-4EE0-8709-4530856B5481",
10529 "mediaId" : "55C13A17-0423-4BC0-93A6-3FEFD02E7FC6",
10530 "muted" : true,
10531 "newShot" : false,
10532 "speed" : 1,
10533 "srcIn" : 3065.509348797641,
10534 "start" : 1045.5593220338983,
10535 "track" : "v1"
10536 },
10537 {
10538 "duration" : 1.661016949152554,
10539 "fadeIn" : 0,
10540 "fadeOut" : 0,
10541 "id" : "D21DCFAE-885B-46AB-BBCD-46F5F68A4841",
10542 "kind" : "audio",
10543 "linkId" : "0B407464-C16F-4EE0-8709-4530856B5481",
10544 "mediaId" : "501034F8-09AC-44B1-8826-FCE9B36C68F9",
10545 "muted" : false,
10546 "newShot" : false,
10547 "speed" : 1,
10548 "srcIn" : 3065.556025100872,
10549 "start" : 1045.5593220338983,
10550 "track" : "v2"
10551 },
10552 {
10553 "duration" : 1.661016949152554,
10554 "fadeIn" : 0,
10555 "fadeOut" : 0,
10556 "id" : "09CE071F-2BC1-44E9-80B4-A3B494754324",
10557 "kind" : "video",
10558 "linkId" : "0B407464-C16F-4EE0-8709-4530856B5481",
10559 "mediaId" : "D866E8BE-A5B1-4B51-B465-D3F753701CCE",
10560 "muted" : false,
10561 "newShot" : false,
10562 "speed" : 1,
10563 "srcIn" : 3065.419417964644,
10564 "start" : 1045.5593220338983,
10565 "track" : "v3"
10566 },
10567 {
10568 "duration" : 1.661016949152554,
10569 "fadeIn" : 0,
10570 "fadeOut" : 0,
10571 "id" : "E59CB212-BAFB-4792-9E87-27750E214AFF",
10572 "kind" : "video",
10573 "linkId" : "0B407464-C16F-4EE0-8709-4530856B5481",
10574 "mediaId" : "92E85F7F-CA8B-473D-82F6-C7A7418875B1",
10575 "muted" : false,
10576 "newShot" : false,
10577 "speed" : 1,
10578 "srcIn" : 3065.419413380645,
10579 "start" : 1045.5593220338983,
10580 "track" : "v4"
10581 },
10582 {
10583 "duration" : 4.745762711864472,
10584 "fadeIn" : 0,
10585 "fadeOut" : 0,
10586 "id" : "E92C9D2B-F806-42DF-BBBD-6444CED9CFA0",
10587 "kind" : "video",
10588 "linkId" : "BBA33081-9695-4391-B23B-D376880D264E",
10589 "mediaId" : "40BBB768-793D-44DA-BBC9-B22F6591159D",
10590 "muted" : false,
10591 "newShot" : false,
10592 "speed" : 1,
10593 "srcIn" : 3070.203389830507,
10594 "start" : 1047.2203389830509,
10595 "track" : "v0"
10596 },
10597 {
10598 "duration" : 4.745762711864472,
10599 "fadeIn" : 0,
10600 "fadeOut" : 0,
10601 "id" : "C13910BD-C1D5-42AA-B25A-F4AFA7E0807E",
10602 "kind" : "audio",
10603 "linkId" : "BBA33081-9695-4391-B23B-D376880D264E",
10604 "mediaId" : "55C13A17-0423-4BC0-93A6-3FEFD02E7FC6",
10605 "muted" : true,
10606 "newShot" : false,
10607 "speed" : 1,
10608 "srcIn" : 3070.119518289166,
10609 "start" : 1047.2203389830509,
10610 "track" : "v1"
10611 },
10612 {
10613 "duration" : 4.745762711864472,
10614 "fadeIn" : 0,
10615 "fadeOut" : 0,
10616 "id" : "6A6D3754-91FF-45E9-9A9C-EC342D95E136",
10617 "kind" : "audio",
10618 "linkId" : "BBA33081-9695-4391-B23B-D376880D264E",
10619 "mediaId" : "501034F8-09AC-44B1-8826-FCE9B36C68F9",
10620 "muted" : false,
10621 "newShot" : false,
10622 "speed" : 1,
10623 "srcIn" : 3070.166194592397,
10624 "start" : 1047.2203389830509,
10625 "track" : "v2"
10626 },
10627 {
10628 "duration" : 4.745762711864472,
10629 "fadeIn" : 0,
10630 "fadeOut" : 0,
10631 "id" : "122D9228-98AA-4877-A0C4-2DFD8CAE845B",
10632 "kind" : "video",
10633 "linkId" : "BBA33081-9695-4391-B23B-D376880D264E",
10634 "mediaId" : "D866E8BE-A5B1-4B51-B465-D3F753701CCE",
10635 "muted" : false,
10636 "newShot" : false,
10637 "speed" : 1,
10638 "srcIn" : 3070.029587456169,
10639 "start" : 1047.2203389830509,
10640 "track" : "v3"
10641 },
10642 {
10643 "duration" : 4.745762711864472,
10644 "fadeIn" : 0,
10645 "fadeOut" : 0,
10646 "id" : "9124C8F4-A9B8-40C9-A87D-03794D9BFD5B",
10647 "kind" : "video",
10648 "linkId" : "BBA33081-9695-4391-B23B-D376880D264E",
10649 "mediaId" : "92E85F7F-CA8B-473D-82F6-C7A7418875B1",
10650 "muted" : false,
10651 "newShot" : false,
10652 "speed" : 1,
10653 "srcIn" : 3070.02958287217,
10654 "start" : 1047.2203389830509,
10655 "track" : "v4"
10656 },
10657 {
10658 "duration" : 11.93220338983042,
10659 "fadeIn" : 0,
10660 "fadeOut" : 0,
10661 "id" : "28D0F5F8-073A-4EB4-ABCD-C489AF0CA087",
10662 "kind" : "video",
10663 "linkId" : "318B4FD4-E1D7-41FD-B760-CA9E5DAB9B1F",
10664 "mediaId" : "40BBB768-793D-44DA-BBC9-B22F6591159D",
10665 "muted" : false,
10666 "newShot" : false,
10667 "speed" : 1,
10668 "srcIn" : 3082.271186440677,
10669 "start" : 1051.9661016949153,
10670 "track" : "v0"
10671 },
10672 {
10673 "duration" : 11.93220338983042,
10674 "fadeIn" : 0,
10675 "fadeOut" : 0,
10676 "id" : "2B967FFC-3967-43AC-B348-992E7603AE2C",
10677 "kind" : "audio",
10678 "linkId" : "318B4FD4-E1D7-41FD-B760-CA9E5DAB9B1F",
10679 "mediaId" : "55C13A17-0423-4BC0-93A6-3FEFD02E7FC6",
10680 "muted" : true,
10681 "newShot" : false,
10682 "speed" : 1,
10683 "srcIn" : 3082.187314899336,
10684 "start" : 1051.9661016949153,
10685 "track" : "v1"
10686 },
10687 {
10688 "duration" : 11.93220338983042,
10689 "fadeIn" : 0,
10690 "fadeOut" : 0,
10691 "id" : "5DCE6786-7E43-4D1A-9415-C2E364A3C1E5",
10692 "kind" : "audio",
10693 "linkId" : "318B4FD4-E1D7-41FD-B760-CA9E5DAB9B1F",
10694 "mediaId" : "501034F8-09AC-44B1-8826-FCE9B36C68F9",
10695 "muted" : false,
10696 "newShot" : false,
10697 "speed" : 1,
10698 "srcIn" : 3082.233991202567,
10699 "start" : 1051.9661016949153,
10700 "track" : "v2"
10701 },
10702 {
10703 "duration" : 11.93220338983042,
10704 "fadeIn" : 0,
10705 "fadeOut" : 0,
10706 "id" : "CCB5A926-E4B6-4AA9-9EF3-2E8A78E7B2F2",
10707 "kind" : "video",
10708 "linkId" : "318B4FD4-E1D7-41FD-B760-CA9E5DAB9B1F",
10709 "mediaId" : "D866E8BE-A5B1-4B51-B465-D3F753701CCE",
10710 "muted" : false,
10711 "newShot" : false,
10712 "speed" : 1,
10713 "srcIn" : 3082.0973840663387,
10714 "start" : 1051.9661016949153,
10715 "track" : "v3"
10716 },
10717 {
10718 "duration" : 11.93220338983042,
10719 "fadeIn" : 0,
10720 "fadeOut" : 0,
10721 "id" : "296DECA8-17FA-4732-85F9-E7E62AB4390E",
10722 "kind" : "video",
10723 "linkId" : "318B4FD4-E1D7-41FD-B760-CA9E5DAB9B1F",
10724 "mediaId" : "92E85F7F-CA8B-473D-82F6-C7A7418875B1",
10725 "muted" : false,
10726 "newShot" : false,
10727 "speed" : 1,
10728 "srcIn" : 3082.09737948234,
10729 "start" : 1051.9661016949153,
10730 "track" : "v4"
10731 },
10732 {
10733 "duration" : 2.7118644067795685,
10734 "fadeIn" : 0,
10735 "fadeOut" : 0,
10736 "id" : "F118809D-1E6F-4E06-9DD8-59627D7FD31E",
10737 "kind" : "video",
10738 "linkId" : "D27F02ED-F905-4600-B733-AF4B73B5174F",
10739 "mediaId" : "40BBB768-793D-44DA-BBC9-B22F6591159D",
10740 "muted" : false,
10741 "newShot" : false,
10742 "speed" : 1,
10743 "srcIn" : 3097.559322033897,
10744 "start" : 1063.8983050847457,
10745 "track" : "v0"
10746 },
10747 {
10748 "duration" : 2.7118644067795685,
10749 "fadeIn" : 0,
10750 "fadeOut" : 0,
10751 "id" : "4A2040D0-20BE-429F-AD73-5B3ED24C0A6D",
10752 "kind" : "audio",
10753 "linkId" : "D27F02ED-F905-4600-B733-AF4B73B5174F",
10754 "mediaId" : "55C13A17-0423-4BC0-93A6-3FEFD02E7FC6",
10755 "muted" : true,
10756 "newShot" : false,
10757 "speed" : 1,
10758 "srcIn" : 3097.475450492556,
10759 "start" : 1063.8983050847457,
10760 "track" : "v1"
10761 },
10762 {
10763 "duration" : 2.7118644067795685,
10764 "fadeIn" : 0,
10765 "fadeOut" : 0,
10766 "id" : "3D418272-0D62-4126-A9C7-71E7D7FC255D",
10767 "kind" : "audio",
10768 "linkId" : "D27F02ED-F905-4600-B733-AF4B73B5174F",
10769 "mediaId" : "501034F8-09AC-44B1-8826-FCE9B36C68F9",
10770 "muted" : false,
10771 "newShot" : false,
10772 "speed" : 1,
10773 "srcIn" : 3097.522126795787,
10774 "start" : 1063.8983050847457,
10775 "track" : "v2"
10776 },
10777 {
10778 "duration" : 2.7118644067795685,
10779 "fadeIn" : 0,
10780 "fadeOut" : 0,
10781 "id" : "B50F2156-B9AC-4F52-B362-40B0B0D732A4",
10782 "kind" : "video",
10783 "linkId" : "D27F02ED-F905-4600-B733-AF4B73B5174F",
10784 "mediaId" : "D866E8BE-A5B1-4B51-B465-D3F753701CCE",
10785 "muted" : false,
10786 "newShot" : false,
10787 "speed" : 1,
10788 "srcIn" : 3097.3855196595587,
10789 "start" : 1063.8983050847457,
10790 "track" : "v3"
10791 },
10792 {
10793 "duration" : 2.7118644067795685,
10794 "fadeIn" : 0,
10795 "fadeOut" : 0,
10796 "id" : "8C35ED3F-0857-4157-9DDF-8937A65375E5",
10797 "kind" : "video",
10798 "linkId" : "D27F02ED-F905-4600-B733-AF4B73B5174F",
10799 "mediaId" : "92E85F7F-CA8B-473D-82F6-C7A7418875B1",
10800 "muted" : false,
10801 "newShot" : false,
10802 "speed" : 1,
10803 "srcIn" : 3097.38551507556,
10804 "start" : 1063.8983050847457,
10805 "track" : "v4"
10806 },
10807 {
10808 "duration" : 29.864406779661067,
10809 "fadeIn" : 0,
10810 "fadeOut" : 0,
10811 "id" : "5F3F6F18-5791-47A8-BCA4-A9790558A314",
10812 "kind" : "video",
10813 "linkId" : "0F08CC53-E7F9-4A91-9D1E-F73D91D3ECB9",
10814 "mediaId" : "40BBB768-793D-44DA-BBC9-B22F6591159D",
10815 "muted" : false,
10816 "newShot" : false,
10817 "speed" : 1,
10818 "srcIn" : 3101.3559322033884,
10819 "start" : 1066.6101694915253,
10820 "track" : "v0"
10821 },
10822 {
10823 "duration" : 29.864406779661067,
10824 "fadeIn" : 0,
10825 "fadeOut" : 0,
10826 "id" : "CF1D8F7D-26D5-4CD2-8D99-2370B29915C0",
10827 "kind" : "audio",
10828 "linkId" : "0F08CC53-E7F9-4A91-9D1E-F73D91D3ECB9",
10829 "mediaId" : "55C13A17-0423-4BC0-93A6-3FEFD02E7FC6",
10830 "muted" : true,
10831 "newShot" : false,
10832 "speed" : 1,
10833 "srcIn" : 3101.2720606620474,
10834 "start" : 1066.6101694915253,
10835 "track" : "v1"
10836 },
10837 {
10838 "duration" : 29.864406779661067,
10839 "fadeIn" : 0,
10840 "fadeOut" : 0,
10841 "id" : "A1160BCB-0740-4FC5-BEA2-A90D6030BFA6",
10842 "kind" : "audio",
10843 "linkId" : "0F08CC53-E7F9-4A91-9D1E-F73D91D3ECB9",
10844 "mediaId" : "501034F8-09AC-44B1-8826-FCE9B36C68F9",
10845 "muted" : false,
10846 "newShot" : false,
10847 "speed" : 1,
10848 "srcIn" : 3101.3187369652783,
10849 "start" : 1066.6101694915253,
10850 "track" : "v2"
10851 },
10852 {
10853 "duration" : 29.864406779661067,
10854 "fadeIn" : 0,
10855 "fadeOut" : 0,
10856 "id" : "8E323D18-4C84-4AFA-B90D-264EE10DBF94",
10857 "kind" : "video",
10858 "linkId" : "0F08CC53-E7F9-4A91-9D1E-F73D91D3ECB9",
10859 "mediaId" : "D866E8BE-A5B1-4B51-B465-D3F753701CCE",
10860 "muted" : false,
10861 "newShot" : false,
10862 "speed" : 1,
10863 "srcIn" : 3101.18212982905,
10864 "start" : 1066.6101694915253,
10865 "track" : "v3"
10866 },
10867 {
10868 "duration" : 29.864406779661067,
10869 "fadeIn" : 0,
10870 "fadeOut" : 0,
10871 "id" : "A1E18A2B-C2ED-4F4F-B090-2F04AB1EAB86",
10872 "kind" : "video",
10873 "linkId" : "0F08CC53-E7F9-4A91-9D1E-F73D91D3ECB9",
10874 "mediaId" : "92E85F7F-CA8B-473D-82F6-C7A7418875B1",
10875 "muted" : false,
10876 "newShot" : false,
10877 "speed" : 1,
10878 "srcIn" : 3101.1821252450513,
10879 "start" : 1066.6101694915253,
10880 "track" : "v4"
10881 },
10882 {
10883 "duration" : 3046.474576440677,
10884 "fadeIn" : 0,
10885 "fadeOut" : 0,
10886 "id" : "77231674-DFD4-469D-8BD3-B0384766ED44",
10887 "kind" : "video",
10888 "linkId" : "06145E01-F314-4D25-9F5A-C1D23472B857",
10889 "mediaId" : "40BBB768-793D-44DA-BBC9-B22F6591159D",
10890 "muted" : false,
10891 "newShot" : false,
10892 "speed" : 1,
10893 "srcIn" : 3175.7288135593208,
10894 "start" : 1096.4745762711864,
10895 "track" : "v0"
10896 },
10897 {
10898 "duration" : 3046.477724982019,
10899 "fadeIn" : 0,
10900 "fadeOut" : 0,
10901 "id" : "46D41482-2761-4F49-8714-E482340928D2",
10902 "kind" : "audio",
10903 "linkId" : "06145E01-F314-4D25-9F5A-C1D23472B857",
10904 "mediaId" : "55C13A17-0423-4BC0-93A6-3FEFD02E7FC6",
10905 "muted" : true,
10906 "newShot" : false,
10907 "speed" : 1,
10908 "srcIn" : 3175.6449420179797,
10909 "start" : 1096.4745762711864,
10910 "track" : "v1"
10911 },
10912 {
10913 "duration" : 3046.516381678787,
10914 "fadeIn" : 0,
10915 "fadeOut" : 0,
10916 "id" : "6655D05A-2F89-4E98-A2C0-475D1908D6DB",
10917 "kind" : "audio",
10918 "linkId" : "06145E01-F314-4D25-9F5A-C1D23472B857",
10919 "mediaId" : "501034F8-09AC-44B1-8826-FCE9B36C68F9",
10920 "muted" : false,
10921 "newShot" : false,
10922 "speed" : 1,
10923 "srcIn" : 3175.6916183212106,
10924 "start" : 1096.4745762711864,
10925 "track" : "v2"
10926 },
10927 {
10928 "duration" : 3046.5116558150157,
10929 "fadeIn" : 0,
10930 "fadeOut" : 0,
10931 "id" : "0BA9AB3D-B156-466B-A477-DD6CBCC6D5D0",
10932 "kind" : "video",
10933 "linkId" : "06145E01-F314-4D25-9F5A-C1D23472B857",
10934 "mediaId" : "D866E8BE-A5B1-4B51-B465-D3F753701CCE",
10935 "muted" : false,
10936 "newShot" : false,
10937 "speed" : 1,
10938 "srcIn" : 3175.5550111849825,
10939 "start" : 1096.4745762711864,
10940 "track" : "v3"
10941 },
10942 {
10943 "duration" : 3046.5116603990145,
10944 "fadeIn" : 0,
10945 "fadeOut" : 0,
10946 "id" : "FA5C83A2-F1FC-4E94-B0A3-D12DF73B9D65",
10947 "kind" : "video",
10948 "linkId" : "06145E01-F314-4D25-9F5A-C1D23472B857",
10949 "mediaId" : "92E85F7F-CA8B-473D-82F6-C7A7418875B1",
10950 "muted" : false,
10951 "newShot" : false,
10952 "speed" : 1,
10953 "srcIn" : 3175.5550066009837,
10954 "start" : 1096.4745762711864,
10955 "track" : "v4"
10956 }
10957 ],
10958 "fps" : 29.5,
10959 "markers" : [
10960
10961 ],
10962 "media" : [
10963 {
10964 "cacheKey" : "cb2b0cb1418eb04f",
10965 "duration" : 812.745763,
10966 "fps" : 29.5,
10967 "hasAudio" : false,
10968 "height" : 720,
10969 "id" : "26CBEF77-6850-4D82-A5BD-A6A37587C040",
10970 "isAudio" : false,
10971 "path" : "\/Volumes\/clover\/Archive\/2026\/Journal\/2026-07-03_13.49\/cam.mov",
10972 "width" : 1280
10973 },
10974 {
10975 "cacheKey" : "49108ecb3168df5a",
10976 "duration" : 812.885333,
10977 "fps" : 30,
10978 "hasAudio" : true,
10979 "height" : 0,
10980 "id" : "F676BA7D-A0E0-4603-AE13-B853D2F9F2BB",
10981 "isAudio" : true,
10982 "path" : "\/Volumes\/clover\/Archive\/2026\/Journal\/2026-07-03_13.49\/desktop.m4a",
10983 "width" : 0
10984 },
10985 {
10986 "cacheKey" : "9f6621781616504d",
10987 "duration" : 813.269333,
10988 "fps" : 30,
10989 "hasAudio" : true,
10990 "height" : 0,
10991 "id" : "6FFA3786-8E51-4E69-A15D-D6A991C0CCAD",
10992 "isAudio" : true,
10993 "path" : "\/Volumes\/clover\/Archive\/2026\/Journal\/2026-07-03_13.49\/mic.m4a",
10994 "width" : 0
10995 },
10996 {
10997 "cacheKey" : "fbe623fb3a0f34ba",
10998 "duration" : 812.833333,
10999 "fps" : 30,
11000 "hasAudio" : false,
11001 "height" : 2160,
11002 "id" : "609E978E-5994-4757-A6C7-EAAE72818A49",
11003 "isAudio" : false,
11004 "path" : "\/Volumes\/clover\/Archive\/2026\/Journal\/2026-07-03_13.49\/screen-1.mov",
11005 "width" : 3840
11006 },
11007 {
11008 "cacheKey" : "1be7aaff98d7b0ff",
11009 "duration" : 812.833333,
11010 "fps" : 30,
11011 "hasAudio" : false,
11012 "height" : 2160,
11013 "id" : "C0E05C14-2D32-4A55-9041-7A752A97F6B1",
11014 "isAudio" : false,
11015 "path" : "\/Volumes\/clover\/Archive\/2026\/Journal\/2026-07-03_13.49\/screen-2.mov",
11016 "width" : 3840
11017 },
11018 {
11019 "cacheKey" : "bc4651748a6b1673",
11020 "duration" : 6222.20339,
11021 "fps" : 29.5,
11022 "hasAudio" : false,
11023 "height" : 720,
11024 "id" : "40BBB768-793D-44DA-BBC9-B22F6591159D",
11025 "isAudio" : false,
11026 "path" : "\/Volumes\/clover\/Archive\/2026\/Journal\/2026-07-03_14.03\/cam.mov",
11027 "width" : 1280
11028 },
11029 {
11030 "cacheKey" : "27d4dedeccdacecc",
11031 "duration" : 6222.122667,
11032 "fps" : 30,
11033 "hasAudio" : true,
11034 "height" : 0,
11035 "id" : "55C13A17-0423-4BC0-93A6-3FEFD02E7FC6",
11036 "isAudio" : true,
11037 "path" : "\/Volumes\/clover\/Archive\/2026\/Journal\/2026-07-03_14.03\/desktop.m4a",
11038 "width" : 0
11039 },
11040 {
11041 "cacheKey" : "103551fc583e9882",
11042 "duration" : 6222.208,
11043 "fps" : 30,
11044 "hasAudio" : true,
11045 "height" : 0,
11046 "id" : "501034F8-09AC-44B1-8826-FCE9B36C68F9",
11047 "isAudio" : true,
11048 "path" : "\/Volumes\/clover\/Archive\/2026\/Journal\/2026-07-03_14.03\/mic.m4a",
11049 "width" : 0
11050 },
11051 {
11052 "cacheKey" : "5bfa7a15f159568d",
11053 "duration" : 6222.066667,
11054 "fps" : 30,
11055 "hasAudio" : false,
11056 "height" : 2160,
11057 "id" : "D866E8BE-A5B1-4B51-B465-D3F753701CCE",
11058 "isAudio" : false,
11059 "path" : "\/Volumes\/clover\/Archive\/2026\/Journal\/2026-07-03_14.03\/screen-1.mov",
11060 "width" : 3840
11061 },
11062 {
11063 "cacheKey" : "8cea14167c6e9778",
11064 "duration" : 6222.066667,
11065 "fps" : 30,
11066 "hasAudio" : false,
11067 "height" : 2160,
11068 "id" : "92E85F7F-CA8B-473D-82F6-C7A7418875B1",
11069 "isAudio" : false,
11070 "path" : "\/Volumes\/clover\/Archive\/2026\/Journal\/2026-07-03_14.03\/screen-2.mov",
11071 "width" : 3840
11072 },
11073 {
11074 "cacheKey" : "b966487289885ec1",
11075 "duration" : 15112.237288,
11076 "fps" : 29.5,
11077 "hasAudio" : false,
11078 "height" : 720,
11079 "id" : "CC300C55-7090-4A6E-81FA-55CB6644FAC9",
11080 "isAudio" : false,
11081 "path" : "\/Volumes\/clover\/Archive\/2026\/Journal\/2026-07-03_16.36\/cam.mov",
11082 "width" : 1280
11083 },
11084 {
11085 "cacheKey" : "9044d1d53bcf480f",
11086 "duration" : 15112.106667,
11087 "fps" : 30,
11088 "hasAudio" : true,
11089 "height" : 0,
11090 "id" : "2613683E-12E6-402E-BF4D-6D9ACD7C1491",
11091 "isAudio" : true,
11092 "path" : "\/Volumes\/clover\/Archive\/2026\/Journal\/2026-07-03_16.36\/desktop.m4a",
11093 "width" : 0
11094 },
11095 {
11096 "cacheKey" : "36fc42c715b64632",
11097 "duration" : 15112.213333,
11098 "fps" : 30,
11099 "hasAudio" : true,
11100 "height" : 0,
11101 "id" : "7889E9EC-F67A-491B-81C0-0CF8338965A3",
11102 "isAudio" : true,
11103 "path" : "\/Volumes\/clover\/Archive\/2026\/Journal\/2026-07-03_16.36\/mic.m4a",
11104 "width" : 0
11105 },
11106 {
11107 "cacheKey" : "0308132cb01a092a",
11108 "duration" : 15112.066667,
11109 "fps" : 30,
11110 "hasAudio" : false,
11111 "height" : 2160,
11112 "id" : "BC4E74C5-4C45-4633-B31A-3CAA58D4B2BF",
11113 "isAudio" : false,
11114 "path" : "\/Volumes\/clover\/Archive\/2026\/Journal\/2026-07-03_16.36\/screen-1.mov",
11115 "width" : 3840
11116 },
11117 {
11118 "cacheKey" : "270afa9f16a6fb41",
11119 "duration" : 15111.366667,
11120 "fps" : 30,
11121 "hasAudio" : false,
11122 "height" : 2160,
11123 "id" : "98882264-A2ED-477B-A7B8-B63E54EDEACE",
11124 "isAudio" : false,
11125 "path" : "\/Volumes\/clover\/Archive\/2026\/Journal\/2026-07-03_16.36\/screen-2.mov",
11126 "width" : 3840
11127 },
11128 {
11129 "cacheKey" : "02a6eb97d64d4630",
11130 "duration" : 10045.254237,
11131 "fps" : 29.5,
11132 "hasAudio" : false,
11133 "height" : 720,
11134 "id" : "2D5EED57-87EB-44B4-9623-2CF48314C5F9",
11135 "isAudio" : false,
11136 "path" : "\/Volumes\/clover\/Archive\/2026\/Journal\/2026-07-03_22.54\/cam.mov",
11137 "width" : 1280
11138 },
11139 {
11140 "cacheKey" : "cc655edd968d5060",
11141 "duration" : 10045.162667,
11142 "fps" : 30,
11143 "hasAudio" : true,
11144 "height" : 0,
11145 "id" : "0ECB1F4F-9065-432F-B0B1-7F47BD31FDCC",
11146 "isAudio" : true,
11147 "path" : "\/Volumes\/clover\/Archive\/2026\/Journal\/2026-07-03_22.54\/desktop.m4a",
11148 "width" : 0
11149 },
11150 {
11151 "cacheKey" : "4a0d44fc07d2db63",
11152 "duration" : 10045.248,
11153 "fps" : 30,
11154 "hasAudio" : true,
11155 "height" : 0,
11156 "id" : "02A5DFB3-9348-4102-BD13-F1856B431A70",
11157 "isAudio" : true,
11158 "path" : "\/Volumes\/clover\/Archive\/2026\/Journal\/2026-07-03_22.54\/mic.m4a",
11159 "width" : 0
11160 },
11161 {
11162 "cacheKey" : "edc26bd451155492",
11163 "duration" : 10045.133333,
11164 "fps" : 30,
11165 "hasAudio" : false,
11166 "height" : 2160,
11167 "id" : "9CA51332-5865-4C3D-9972-E781BDE75ECD",
11168 "isAudio" : false,
11169 "path" : "\/Volumes\/clover\/Archive\/2026\/Journal\/2026-07-03_22.54\/screen-1.mov",
11170 "width" : 3840
11171 },
11172 {
11173 "cacheKey" : "3c45ae09f47beeae",
11174 "duration" : 10045.166667,
11175 "fps" : 30,
11176 "hasAudio" : false,
11177 "height" : 2160,
11178 "id" : "0DEB0D7E-0C1E-49DA-9911-7773FB2158DE",
11179 "isAudio" : false,
11180 "path" : "\/Volumes\/clover\/Archive\/2026\/Journal\/2026-07-03_22.54\/screen-2.mov",
11181 "width" : 3840
11182 },
11183 {
11184 "cacheKey" : "81f385d21caafc19",
11185 "duration" : 11597.966102,
11186 "fps" : 29.5,
11187 "hasAudio" : false,
11188 "height" : 720,
11189 "id" : "F06DF483-F96F-4DD1-8602-53609FA888F1",
11190 "isAudio" : false,
11191 "path" : "\/Volumes\/clover\/Archive\/2026\/Journal\/2026-07-04_17.30\/cam.mov",
11192 "width" : 1280
11193 },
11194 {
11195 "cacheKey" : "88621a686d385fe8",
11196 "duration" : 11598.101333,
11197 "fps" : 30,
11198 "hasAudio" : true,
11199 "height" : 0,
11200 "id" : "59213540-870A-4795-BD44-B3AFBC9F14E3",
11201 "isAudio" : true,
11202 "path" : "\/Volumes\/clover\/Archive\/2026\/Journal\/2026-07-04_17.30\/desktop.m4a",
11203 "width" : 0
11204 },
11205 {
11206 "cacheKey" : "3ee60110dd18110c",
11207 "duration" : 11598.464,
11208 "fps" : 30,
11209 "hasAudio" : true,
11210 "height" : 0,
11211 "id" : "F4DB0AF3-2C74-4501-A58A-A519C046E3D6",
11212 "isAudio" : true,
11213 "path" : "\/Volumes\/clover\/Archive\/2026\/Journal\/2026-07-04_17.30\/mic.m4a",
11214 "width" : 0
11215 },
11216 {
11217 "cacheKey" : "290f82433dd61a4c",
11218 "duration" : 11598.033333,
11219 "fps" : 30,
11220 "hasAudio" : false,
11221 "height" : 2160,
11222 "id" : "9F95D76B-EAB2-49AA-897A-C3C9A265E0CC",
11223 "isAudio" : false,
11224 "path" : "\/Volumes\/clover\/Archive\/2026\/Journal\/2026-07-04_17.30\/screen-1.mov",
11225 "width" : 3840
11226 },
11227 {
11228 "cacheKey" : "12165002971af6ff",
11229 "duration" : 11598,
11230 "fps" : 30,
11231 "hasAudio" : false,
11232 "height" : 2160,
11233 "id" : "CC497E03-E3E7-4283-A96C-F076D9F154A1",
11234 "isAudio" : false,
11235 "path" : "\/Volumes\/clover\/Archive\/2026\/Journal\/2026-07-04_17.30\/screen-2.mov",
11236 "width" : 3840
11237 }
11238 ],
11239 "preferredTakes" : [
11240
11241 ],
11242 "tracks" : [
11243 {
11244 "hue" : 0
11245 },
11246 {
11247 "hue" : 0.6180339887498949
11248 },
11249 {
11250 "hue" : 0.2360679774997898
11251 },
11252 {
11253 "hue" : 0.8541019662496847
11254 },
11255 {
11256 "hue" : 0.4721359549995796
11257 }
11258 ]
11259 },
11260 "view" : {
11261 "focusedTracks" : [
11262
11263 ],
11264 "fusionFocus" : false,
11265 "fusionHidden" : false,
11266 "hiddenTracks" : [
11267
11268 ],
11269 "laneScale" : 1.5562744140625,
11270 "previewsOnLeft" : false,
11271 "priorityPane" : "v4",
11272 "showFilmstrips" : true,
11273 "snapping" : true,
11274 "trackHeights" : [
11275 {
11276 "factor" : 0.99639892578125,
11277 "track" : "v0"
11278 },
11279 {
11280 "factor" : 1,
11281 "track" : "v4"
11282 }
11283 ]
11284 }
11285}
\ No newline at end of file
sequencer/Sources/Sequencer/AppDelegate.swift+11-2
......@@ -171,9 +171,11 @@ final class AppDelegate: NSObject, NSApplicationDelegate {
171171 clip.addItem(item("Link Clips", #selector(SequencerWindowController.linkClips), key: "g", mods: []))
172172 clip.addItem(item("Unlink Clips", #selector(SequencerWindowController.unlinkClips), key: "g", mods: [.option]))
173173 clip.addItem(.separator())
174 clip.addItem(item("Delete", #selector(SequencerWindowController.deleteSelected), key: "\u{8}", mods: []))
174 // X deletes, ⇧X ripple-deletes; ⌫ / ⌥⌫ remain aliases (handled in
175 // TimelineView.keyDown, so they keep working without a menu equivalent).
176 clip.addItem(item("Delete", #selector(SequencerWindowController.deleteSelected), key: "x", mods: []))
175177 clip.addItem(item("Ripple Delete", #selector(SequencerWindowController.rippleDeleteSelected),
176 key: "\u{8}", mods: [.option]))
178 key: "X", mods: [.shift]))
177179 clip.addItem(item("Close Gap at Playhead", #selector(SequencerWindowController.closeGapAtPlayhead)))
178180 clip.addItem(.separator())
179181 clip.addItem(item("Ripple Trim Start to Playhead", #selector(SequencerWindowController.rippleTrimLeft),
......@@ -315,4 +317,11 @@ final class AppDelegate: NSObject, NSApplicationDelegate {
315317 ("59.94 fps", 60000.0 / 1001.0), ("60 fps", 60),
316318 ]
317319
320 /// Normal-play speed presets for the transport's speed dropdown. These set
321 /// the forward speed Space plays at; J/K/L shuttle is independent.
322 static let playbackSpeeds: [(String, Double)] = [
323 ("0.25×", 0.25), ("0.5×", 0.5), ("0.75×", 0.75), ("1×", 1),
324 ("1.25×", 1.25), ("1.5×", 1.5), ("2×", 2), ("4×", 4),
325 ]
326
318327}
sequencer/Sources/Sequencer/ChunkedProxy.swift+260-41
......@@ -16,20 +16,43 @@ final class ChunkManager {
1616 unowned var ctx: DocumentContext!
1717 static let chunkSeconds: Double = 30
1818
19 /// Adaptive proxy quality. Proxies are encoded at the highest quality the
20 /// machine can still produce FASTER than real time, so playback never
21 /// outruns the render queue. Each step trades resolution (and, lower down,
22 /// frame rate) for encode speed. Level 0 is the original full quality.
23 struct Quality { let maxWidth: Int; let fpsDivisor: Int }
19 /// Adaptive proxy quality *ladder*, expressed as a fraction of a build
20 /// target width rather than an absolute size. Level 0 is the target itself;
21 /// lower levels trade resolution (and, further down, frame rate) for encode
22 /// speed so realtime playback keeps up even when the target is large. The
23 /// target width itself comes from the preview size (`previewTargetWidth`) —
24 /// a big preview asks for sharper proxies, a small one isn't over-rendered.
25 struct Quality { let widthFraction: Double; let fpsDivisor: Int }
2426 static let qualities: [Quality] = [
25 Quality(maxWidth: 960, fpsDivisor: 1), // full — matches the old fixed proxy
26 Quality(maxWidth: 640, fpsDivisor: 1), // reduced
27 Quality(maxWidth: 480, fpsDivisor: 2), // low
28 Quality(maxWidth: 320, fpsDivisor: 2), // minimum
27 Quality(widthFraction: 1.0, fpsDivisor: 1), // full target
28 Quality(widthFraction: 0.66, fpsDivisor: 1), // reduced
29 Quality(widthFraction: 0.5, fpsDivisor: 2), // low
30 Quality(widthFraction: 0.33, fpsDivisor: 2), // minimum
2931 ]
3032
33 /// Largest on-screen preview width in device pixels, reported by the viewer
34 /// (`setPreviewTargetWidth`). Background optimisation targets this so the
35 /// proxy is as sharp as the preview it's displayed in. Defaults to the old
36 /// fixed 960 until the viewer measures itself.
37 private(set) var previewTargetWidth = 960
38
39 /// The width a fresh proxy for this media should reach — the preview target,
40 /// never upscaled past the source.
41 private func targetWidth(for media: MediaItem) -> Int {
42 let native = media.width > 0 ? media.width : previewTargetWidth
43 return min(native, previewTargetWidth)
44 }
45
46 /// Effective encode width at `level` for this media (even, ffmpeg-friendly).
47 private func buildWidth(level: Int, media: MediaItem) -> Int {
48 let q = Self.qualities[min(max(0, level), Self.qualities.count - 1)]
49 let w = Int((Double(targetWidth(for: media)) * q.widthFraction).rounded())
50 return max(160, w - (w % 2))
51 }
52
3153 private struct MediaState {
32 var built: Set<Int> = []
54 var built: [Int: Int] = [:] // chunk index → effective width on disk
55 var attempted: [Int: Int] = [:] // chunk index → width of the last attempt
3356 var inFlight: Set<Int> = []
3457 var failed: Set<Int> = []
3558 var urgent: [Int] = []
......@@ -67,11 +90,34 @@ final class ChunkManager {
6790 /// Playback started: while paused, resume building the chunks it needs.
6891 func playbackDidStart() { pump() }
6992
93 /// The viewer reports its largest preview cell's width in device pixels so
94 /// optimisation can target a proxy that's actually sharp at that size.
95 /// Quantised to a ladder so layout jitter of a few pixels doesn't churn the
96 /// target; growing it opens fresh upgrade work.
97 func setPreviewTargetWidth(_ pixels: Int) {
98 let steps = [640, 960, 1280, 1600, 1920, 2560, 3200, 3840]
99 let q = steps.first { $0 >= pixels } ?? steps.last!
100 guard q != previewTargetWidth else { return }
101 let grew = q > previewTargetWidth
102 previewTargetWidth = q
103 if grew { pump() } // below-target chunks are now upgrade candidates
104 }
105
106 /// Serialises the tiny per-media width manifests (index → built width) so
107 /// upgrades survive relaunch and a larger preview knows what to re-render.
108 private let manifestQueue = DispatchQueue(label: "sequencer.chunk.manifest")
109
70110 init() {
71111 NotificationCenter.default.addObserver(
72112 forName: .projectChanged, object: nil, queue: .main) { [weak self] _ in
73113 guard let self else { return }
74114 self.ensure(for: self.ctx.store.project)
115 self.updateDemand(force: true)
116 }
117 // Hiding/focusing a track changes what to optimize first.
118 NotificationCenter.default.addObserver(
119 forName: .viewOptionsChanged, object: nil, queue: .main) { [weak self] _ in
120 self?.updateDemand(force: true)
75121 }
76122 }
77123
......@@ -89,6 +135,33 @@ final class ChunkManager {
89135 private func chunkURL(key: String, index: Int) -> URL {
90136 chunksDir(key).appendingPathComponent(String(format: "c%06d.mov", index))
91137 }
138 private func manifestURL(_ key: String) -> URL {
139 chunksDir(key).appendingPathComponent("widths.json")
140 }
141
142 /// Legacy width assumed for a chunk on disk with no manifest entry — the
143 /// old fixed proxy size. Correct enough that a normal-sized preview won't
144 /// pointlessly re-render old caches, while a bigger one still upgrades them.
145 private static let legacyWidth = 960
146
147 private func loadWidths(_ key: String) -> [Int: Int] {
148 guard let data = try? Data(contentsOf: manifestURL(key)),
149 let obj = try? JSONSerialization.jsonObject(with: data) as? [String: Int]
150 else { return [:] }
151 return Dictionary(uniqueKeysWithValues: obj.compactMap { k, v in
152 Int(k).map { ($0, v) }
153 })
154 }
155 private func persistWidths(key: String) {
156 let widths = states[key]?.built ?? [:]
157 let url = manifestURL(key)
158 manifestQueue.async {
159 let obj = Dictionary(uniqueKeysWithValues: widths.map { (String($0.key), $0.value) })
160 if let data = try? JSONSerialization.data(withJSONObject: obj) {
161 try? data.write(to: url)
162 }
163 }
164 }
92165 static func chunkIndex(forSource t: Double) -> Int { max(0, Int(t / chunkSeconds)) }
93166 static func chunkCount(duration: Double) -> Int {
94167 max(1, Int(ceil(duration / chunkSeconds)))
......@@ -99,10 +172,13 @@ final class ChunkManager {
99172 var s = states[media.cacheKey] ?? MediaState()
100173 if !s.scanned {
101174 s.scanned = true
175 let widths = loadWidths(media.cacheKey)
102176 if let names = try? FileManager.default
103177 .contentsOfDirectory(atPath: chunksDir(media.cacheKey).path) {
104178 for n in names where n.hasPrefix("c") && n.hasSuffix(".mov") {
105 if let i = Int(n.dropFirst().dropLast(4)) { s.built.insert(i) }
179 if let i = Int(n.dropFirst().dropLast(4)) {
180 s.built[i] = widths[i] ?? Self.legacyWidth
181 }
106182 }
107183 }
108184 states[media.cacheKey] = s
......@@ -124,7 +200,7 @@ final class ChunkManager {
124200 let n = Self.chunkCount(duration: media.duration)
125201 let i = min(n - 1, Self.chunkIndex(forSource: sourceTime))
126202 let wanted = [i, i + 1].filter {
127 $0 < n && !s.built.contains($0) && !s.inFlight.contains($0) && !s.failed.contains($0)
203 $0 < n && s.built[$0] == nil && !s.inFlight.contains($0) && !s.failed.contains($0)
128204 }
129205 guard s.urgent != wanted else { return }
130206 s.urgent = wanted
......@@ -151,13 +227,98 @@ final class ChunkManager {
151227 pump()
152228 }
153229
230 // MARK: - Prefetch demand (what to optimize first)
231
232 private struct DemandKey: Hashable { let key: String; let index: Int }
233 /// Chunks to build first, best-first. Recomputed from the playhead, playback
234 /// direction, and visibility — supersedes the crude current+next `urgent`.
235 private var demand: [DemandKey] = []
236 /// The subset close enough ahead that playback will hit it imminently — these
237 /// build at the adaptive realtime quality so they land in time; everything
238 /// else builds at the full preview-quality target.
239 private var demandImminent: Set<DemandKey> = []
240 private var lastDemandPlayhead = -1e9
241 private var lastDemandSign = 0.0
242
243 /// How far ahead of the playhead (in the playback direction) to prefetch, and
244 /// how far behind to keep. Ahead is generous so a run of playback never
245 /// out-paces the encoder; behind is small (for a quick reverse / re-view).
246 private static let prefetchAhead = 120.0
247 private static let prefetchBehind = 20.0
248 /// Uncovered chunks within this many seconds ahead are "imminent".
249 private static let imminentAhead = 45.0
250
251 /// Recompute the build order — the heart of "optimize the right thing first."
252 /// For every video clip near the playhead we score the proxy chunks its
253 /// source range needs and sort them: coverage before sharpening, visible
254 /// (and focused) tracks before hidden, and nearer the playhead in the
255 /// playback direction before farther. Chunks outside the window fall through
256 /// to the whole-project background queue (`ensure`). Cheap; safe to call as
257 /// the playhead moves (self-throttled).
258 func updateDemand(force: Bool = false) {
259 guard ctx != nil else { return }
260 let ph = ctx.playback.playhead
261 let sign = ctx.playback.rate < 0 ? -1.0 : 1.0
262 guard force || abs(ph - lastDemandPlayhead) > 1.5 || sign != lastDemandSign else { return }
263 lastDemandPlayhead = ph
264 lastDemandSign = sign
265
266 let project = ctx.store.project
267 let dir = sign
268 let anyFocused = !ctx.session.focusedTracks.isEmpty
269
270 struct Cand { let key: DemandKey; let score: Double; let imminent: Bool }
271 var cands: [Cand] = []
272 for clip in project.clips where clip.kind == .video {
273 guard let media = project.media(clip.mediaId), media.duration > 0,
274 !media.isAudio, !hasFullProxy(media) else { continue }
275 let visible = !ctx.session.hiddenTracks.contains(clip.track)
276 let focused = ctx.session.focusedTracks.contains(clip.track)
277 let lo = ph - (dir > 0 ? Self.prefetchBehind : Self.prefetchAhead)
278 let hi = ph + (dir > 0 ? Self.prefetchAhead : Self.prefetchBehind)
279 let a = max(clip.start, lo), b = min(clip.end, hi)
280 guard b > a else { continue }
281 let n = Self.chunkCount(duration: media.duration)
282 let s = state(for: media)
283 let target = targetWidth(for: media)
284 let srcA = clip.srcIn + (a - clip.start) * clip.speed
285 let srcB = clip.srcIn + (b - clip.start) * clip.speed
286 let ci = min(n - 1, Self.chunkIndex(forSource: min(srcA, srcB)))
287 let cj = min(n - 1, Self.chunkIndex(forSource: max(srcA, srcB) - 1e-6))
288 for idx in ci...max(ci, cj) {
289 if (s.built[idx] ?? 0) >= target { continue } // already good enough
290 let covered = s.built[idx] != nil
291 // Timeline moment this chunk's content plays inside this clip.
292 let tl = clip.start
293 + (Double(idx) * Self.chunkSeconds - clip.srcIn) / max(1e-4, clip.speed)
294 let signed = (min(max(tl, a), b) - ph) * dir // >0 = ahead
295 var score = signed >= 0 ? signed : -signed * 4 // behind costs 4×
296 if covered { score += 10_000 } // coverage beats sharpening
297 if !visible { score += 100_000 } // hidden tracks last
298 else if anyFocused && !focused { score += 1_000 } // the enlarged pane first
299 let imminent = visible && !covered && signed >= 0 && signed < Self.imminentAhead
300 cands.append(Cand(key: DemandKey(key: media.cacheKey, index: idx),
301 score: score, imminent: imminent))
302 }
303 }
304 cands.sort { $0.score < $1.score }
305 demand.removeAll(keepingCapacity: true)
306 demandImminent.removeAll(keepingCapacity: true)
307 var seen = Set<DemandKey>()
308 for c in cands where seen.insert(c.key).inserted {
309 demand.append(c.key)
310 if c.imminent { demandImminent.insert(c.key) }
311 }
312 pump()
313 }
314
154315 // MARK: - Status queries
155316
156317 func isCovered(media: MediaItem, sourceTime: Double) -> Bool {
157318 if media.isAudio { return true } // audio plays the original directly
158319 if hasFullProxy(media) { return true }
159320 let s = state(for: media)
160 return s.built.contains(Self.chunkIndex(forSource: sourceTime))
321 return s.built[Self.chunkIndex(forSource: sourceTime)] != nil
161322 }
162323
163324 /// Last known answer; unknown kicks the async composition build (which
......@@ -170,38 +331,79 @@ final class ChunkManager {
170331 }
171332
172333 /// (building now, waiting in queue) across all media — for the status bar.
334 /// A chunk counts as queued while it's either missing OR still below the
335 /// preview-quality target (i.e. an upgrade is pending).
173336 func queueSummary() -> (building: Int, queued: Int) {
174337 var building = 0, queued = 0
175 for s in states.values {
338 for (key, s) in states {
176339 building += s.inFlight.count
177 let pending = Set(s.urgent + s.background)
178 .subtracting(s.built).subtracting(s.inFlight).subtracting(s.failed)
179 queued += pending.count
340 let target = mediaByKey[key].map { targetWidth(for: $0) } ?? previewTargetWidth
341 for i in Set(s.urgent + s.background)
342 where !s.inFlight.contains(i) && !s.failed.contains(i) {
343 if (s.built[i] ?? 0) < target { queued += 1 }
344 }
180345 }
181346 return (building, queued)
182347 }
183348
184 /// The proxy-backed chunk set right now (players record this at item-swap
185 /// time to judge whether a later swap upgrades anything).
186 func builtChunks(media: MediaItem) -> Set<Int> {
349 /// Per-chunk proxy width right now (players record this at item-swap time
350 /// to judge whether a later swap upgrades the frame under the playhead).
351 func builtWidths(media: MediaItem) -> [Int: Int] {
187352 state(for: media).built
188353 }
189354
190355 func builtChunkURL(media: MediaItem, index: Int) -> URL? {
191 state(for: media).built.contains(index)
356 state(for: media).built[index] != nil
192357 ? chunkURL(key: media.cacheKey, index: index) : nil
193358 }
194359
195360 // MARK: - Build queue
196361
197 private func nextJob() -> (MediaItem, Int)? {
198 for pass in 0..<2 {
199 for (key, s) in states {
200 guard let media = mediaByKey[key] else { continue }
201 let list = pass == 0 ? s.urgent : s.background
202 for i in list where !s.built.contains(i) && !s.inFlight.contains(i)
203 && !s.failed.contains(i) {
204 return (media, i)
362 /// Next chunk to build, in priority order:
363 /// 0. urgent — coverage the playhead needs NOW, at any quality;
364 /// 1. missing — background chunks not yet built at all (coverage first);
365 /// 2. upgrade — background chunks built below the preview-quality target.
366 /// Coverage always beats sharpening, so playback never stalls waiting on a
367 /// quality upgrade of a frame that's already visible.
368 private func nextJob() -> (media: MediaItem, index: Int, urgent: Bool)? {
369 // 1. Prefetch demand — already ordered best-first (visible/focused, near,
370 // coverage before sharpening). Coverage rides the adaptive realtime
371 // quality when imminent; an upgrade goes for the full target.
372 for dk in demand {
373 guard let media = mediaByKey[dk.key] else { continue }
374 let s = states[dk.key] ?? state(for: media)
375 guard !s.inFlight.contains(dk.index), !s.failed.contains(dk.index) else { continue }
376 let target = targetWidth(for: media)
377 if let have = s.built[dk.index] {
378 if have < target, (s.attempted[dk.index] ?? 0) < target {
379 return (media, dk.index, false) // upgrade → target
380 }
381 } else {
382 return (media, dk.index, demandImminent.contains(dk)) // coverage
383 }
384 }
385 // 2. Legacy urgent (headless `want`) then the whole-project background
386 // fill for chunks off-screen of the prefetch window.
387 for (key, s) in states {
388 guard let media = mediaByKey[key] else { continue }
389 for i in s.urgent where s.built[i] == nil
390 && !s.inFlight.contains(i) && !s.failed.contains(i) {
391 return (media, i, true)
392 }
393 }
394 for (key, s) in states {
395 guard let media = mediaByKey[key] else { continue }
396 for i in s.background where s.built[i] == nil
397 && !s.inFlight.contains(i) && !s.failed.contains(i) {
398 return (media, i, false)
399 }
400 }
401 for (key, s) in states {
402 guard let media = mediaByKey[key] else { continue }
403 let target = targetWidth(for: media)
404 for i in s.background where !s.inFlight.contains(i) {
405 if let have = s.built[i], have < target, (s.attempted[i] ?? 0) < target {
406 return (media, i, false)
205407 }
206408 }
207409 }
......@@ -212,26 +414,45 @@ final class ChunkManager {
212414 // Paused stops idle background fill, but playback still optimizes the
213415 // chunks it's about to need.
214416 while (!isPaused || ctx.playback.isPlaying),
215 activeBuilds < maxBuilds, let (media, index) = nextJob() {
417 activeBuilds < maxBuilds, let job = nextJob() {
418 // During playback keep one slot free for urgent coverage so a slow
419 // background quality-upgrade can't stall the frames being played.
420 if !job.urgent, ctx.playback.isPlaying, activeBuilds >= maxBuilds - 1 { break }
421 let (media, index, urgent) = job
422 // Urgent builds ride the adaptive realtime level; background builds
423 // go for the full preview-quality target.
424 let level = urgent ? (states[media.cacheKey]?.qualityIndex ?? 0) : 0
425 let width = buildWidth(level: level, media: media)
426 let fpsDiv = Self.qualities[min(max(0, level), Self.qualities.count - 1)].fpsDivisor
427 let fps = max(1, Int((media.fps / Double(fpsDiv)).rounded()))
216428 states[media.cacheKey]?.inFlight.insert(index)
217 let level = states[media.cacheKey]?.qualityIndex ?? 0
429 states[media.cacheKey]?.attempted[index] = width
218430 activeBuilds += 1
219431 DispatchQueue.global(qos: .userInitiated).async { [self] in
220 let r = buildChunk(media: media, index: index, level: level)
432 let r = buildChunk(media: media, index: index, width: width, fps: fps)
221433 DispatchQueue.main.async {
222434 self.activeBuilds -= 1
223435 var s = self.states[media.cacheKey] ?? MediaState()
224436 s.inFlight.remove(index)
225437 if r.ok {
226 s.built.insert(index)
438 s.built[index] = width
439 s.failed.remove(index)
227440 s.version += 1
228 } else {
441 } else if s.built[index] == nil {
442 // Only a hard failure when we have NOTHING; a failed
443 // upgrade just keeps the existing lower-quality chunk.
229444 s.failed.insert(index)
230445 }
231446 self.states[media.cacheKey] = s
232447 if r.ok {
233 self.adaptQuality(key: media.cacheKey, level: level,
234 wall: r.wall, dur: r.dur, isNetwork: r.isNetwork)
448 self.persistWidths(key: media.cacheKey)
449 // Only realtime (urgent) builds inform the realtime
450 // controller — a slow, quality-first background build
451 // would falsely make it think the box can't keep up.
452 if urgent {
453 self.adaptQuality(key: media.cacheKey, level: level,
454 wall: r.wall, dur: r.dur, isNetwork: r.isNetwork)
455 }
235456 }
236457 NotificationCenter.default.post(name: .mediaStatusChanged, object: nil)
237458 MediaPipeline.shared.evictIfNeeded()
......@@ -243,7 +464,7 @@ final class ChunkManager {
243464
244465 struct BuildResult { var ok: Bool; var wall: Double; var dur: Double; var isNetwork: Bool }
245466
246 private func buildChunk(media: MediaItem, index: Int, level: Int) -> BuildResult {
467 private func buildChunk(media: MediaItem, index: Int, width: Int, fps: Int) -> BuildResult {
247468 let isNet = Self.isNetworkPath(media.path)
248469 func fail(_ wall: Double = 0, _ dur: Double = 0) -> BuildResult {
249470 BuildResult(ok: false, wall: wall, dur: dur, isNetwork: isNet)
......@@ -257,8 +478,6 @@ final class ChunkManager {
257478 let start = Double(index) * Self.chunkSeconds
258479 let dur = min(Self.chunkSeconds, media.duration - start)
259480 guard dur > 0.01 else { return fail() }
260 let q = Self.qualities[min(max(0, level), Self.qualities.count - 1)]
261 let fps = max(1, Int((media.fps / Double(q.fpsDivisor)).rounded()))
262481
263482 func args(encoder: String) -> [String] {
264483 var a = ["-y", "-hwaccel", "videotoolbox",
......@@ -266,7 +485,7 @@ final class ChunkManager {
266485 "-i", media.path,
267486 "-t", String(format: "%.3f", dur),
268487 "-map", "0:v:0",
269 "-vf", "scale='min(\(q.maxWidth),iw)':-2,fps=\(fps)",
488 "-vf", "scale='min(\(width),iw)':-2,fps=\(fps)",
270489 "-c:v", encoder, "-profile:v", "proxy"]
271490 if media.hasAudio { a += ["-map", "0:a:0", "-c:a", "pcm_s16le"] }
272491 a.append(tmp.path)
......@@ -399,7 +618,7 @@ final class ChunkManager {
399618 let s = state(for: media)
400619 let version = s.version
401620 let chunkURLs = Dictionary(uniqueKeysWithValues:
402 s.built.map { ($0, chunkURL(key: key, index: $0)) })
621 s.built.keys.map { ($0, chunkURL(key: key, index: $0)) })
403622 Task.detached(priority: .userInitiated) {
404623 let (comp, playable) = await Self.assemble(media: media, chunkURLs: chunkURLs)
405624 await MainActor.run { [self] in
sequencer/Sources/Sequencer/Document.swift+51
......@@ -1,5 +1,56 @@
11import AppKit
22
3/// Document controller that reliably opens `.sq` project *packages*.
4///
5/// A `.sq` is a directory bundle. The app exports a UTType conforming to
6/// `com.apple.package`, but LaunchServices doesn't always know about it (a dev
7/// build rebuilt in place, or another app claiming `.sq`). When it doesn't, the
8/// system types a `.sq` as a plain `public.folder`: the stock Open panel won't
9/// let you choose it, and even if you could, `NSDocumentController` fails with
10/// "cannot open files in the folder format" because no document handles a
11/// folder. We fix both ends: run our own Open panel that makes `.sq` choosable,
12/// and force the document type for any `.sq` URL — regardless of what
13/// LaunchServices believes — so opening always resolves to `ProjectDocument`.
14final class ProjectDocumentController: NSDocumentController {
15 private static let projectType = "com.clover.sequencer.project"
16 private let sqPanelDelegate = SQOpenPanelDelegate()
17
18 /// Pin the document type for `.sq` URLs so it never resolves to a folder,
19 /// whatever LaunchServices thinks. Covers the Open panel, Open Recent, and
20 /// drag-drop paths alike (they all route through here).
21 override func typeForContents(of url: URL) throws -> String {
22 if url.pathExtension.lowercased() == "sq" { return Self.projectType }
23 return try super.typeForContents(of: url)
24 }
25
26 /// Drive the Open panel ourselves so a `.sq` bundle is always selectable —
27 /// the stock panel greys it out when the type reads as a plain folder.
28 override func openDocument(_ sender: Any?) {
29 let panel = NSOpenPanel()
30 panel.canChooseFiles = true
31 panel.canChooseDirectories = true // a `.sq` may read as a folder
32 panel.allowsMultipleSelection = true
33 panel.treatsFilePackagesAsDirectories = false
34 panel.delegate = sqPanelDelegate
35 panel.begin { [weak self] response in
36 guard response == .OK, let self else { return }
37 for url in panel.urls {
38 self.openDocument(withContentsOf: url, display: true) { _, _, error in
39 if let error { self.presentError(error) }
40 }
41 }
42 }
43 }
44}
45
46/// Enables only `.sq` items (package directories or legacy flat files) in the
47/// Open panel; other folders remain navigable but not choosable.
48final class SQOpenPanelDelegate: NSObject, NSOpenSavePanelDelegate {
49 func panel(_ sender: Any, shouldEnable url: URL) -> Bool {
50 url.pathExtension.lowercased() == "sq"
51 }
52}
53
354/// One open `.sq` project. The on-disk format is a **document package** (a
455/// directory Finder shows as one file):
556/// ```
sequencer/Sources/Sequencer/PerfTest.swift created+109
......@@ -0,0 +1,109 @@
1import AppKit
2
3/// Headless draw-performance harness: `sequencer --perftest <file.sq>`.
4/// Loads a real project into an offscreen `TimelineView` and times `draw(_:)`
5/// while simulating a horizontal pan, at a few zoom levels, in both full-detail
6/// and simplified (mid-scroll) modes. Reports milliseconds per frame so timeline
7/// rendering changes can be judged against real numbers instead of feel.
8@MainActor
9func runPerfTest(path: String) {
10 let url = URL(fileURLWithPath: path)
11 var isDir: ObjCBool = false
12 FileManager.default.fileExists(atPath: url.path, isDirectory: &isDir)
13 let jsonURL = isDir.boolValue ? url.appendingPathComponent("project.json") : url
14 guard let data = try? Data(contentsOf: jsonURL),
15 let doc = try? JSONDecoder().decode(SequencerDocument.self, from: data) else {
16 print("perftest: could not read \(jsonURL.path)")
17 exit(1)
18 }
19
20 let ctx = DocumentContext.headless
21 ctx.session.apply(doc.view)
22 ctx.store.replaceForTest(doc.project)
23
24 let W: CGFloat = 2000, H: CGFloat = 600
25 let timeline = TimelineView(frame: NSRect(x: 0, y: 0, width: W, height: H))
26 let window = NSWindow(contentRect: NSRect(x: 0, y: 0, width: W, height: H),
27 styleMask: [.borderless], backing: .buffered, defer: false)
28 window.contentView = timeline
29
30 // Persistent bitmap-backed context: set current ONCE so we time draw(), not
31 // per-frame bitmap allocation.
32 let rep = timeline.bitmapImageRepForCachingDisplay(in: timeline.bounds)!
33 let gctx = NSGraphicsContext(bitmapImageRep: rep)!
34
35 let dur = timeline.testTimelineDuration
36 print(String(format: "project: %d clips, %.0f s span, view %.0f×%.0f",
37 doc.project.clips.count, dur, W, H))
38
39 let panSpan = max(1, dur * 0.5)
40
41 // filmstripImage loads thumbnails ASYNC on the main queue, so a tight draw
42 // loop that never spins the runloop measures the thumbnail-LESS path. Warm
43 // the cache: draw across the pan range at the current zoom and pump the
44 // runloop until the loads land, so we then measure real thumbnail blits.
45 func warmThumbnails() {
46 ctx.session.showFilmstrips = true
47 timeline.testSetScrolling(false)
48 NSGraphicsContext.saveGraphicsState()
49 NSGraphicsContext.current = gctx
50 for _ in 0..<5 {
51 for i in 0..<40 {
52 timeline.testSetOrigin(panSpan * Double(i) / 40)
53 timeline.testRedraw()
54 }
55 RunLoop.current.run(until: Date().addingTimeInterval(0.2))
56 }
57 NSGraphicsContext.restoreGraphicsState()
58 }
59
60 // Pan across the first half of the timeline over `frames` steps, timing each
61 // direct draw. Returns mean ms/frame.
62 func measure(scrolling: Bool, frames: Int = 120) -> Double {
63 timeline.testSetScrolling(scrolling)
64 NSGraphicsContext.saveGraphicsState()
65 NSGraphicsContext.current = gctx
66 defer { NSGraphicsContext.restoreGraphicsState() }
67 for _ in 0..<3 { timeline.testRedraw() } // warm up
68 let t0 = Date()
69 for i in 0..<frames {
70 timeline.testSetOrigin(panSpan * Double(i) / Double(frames))
71 timeline.testRedraw()
72 }
73 return Date().timeIntervalSince(t0) / Double(frames) * 1000
74 }
75
76 // pxPerSecond values: fit-all (everything on screen at once) up through
77 // progressively tighter section zooms; `empty` isolates fixed per-frame
78 // overhead (chrome + machinery) with ~no clips on screen.
79 let fitPps = max(0.05, Double(W - 26) / max(1, dur))
80 let zooms: [(String, Double)] = [
81 ("fit-all", fitPps),
82 ("section", 6),
83 ("tight", 30),
84 ("empty", 4000),
85 ]
86 ctx.session.showFilmstrips = true
87 print("mode zoom px/s visible ms/frame (fps) thumbs/frame")
88 for (name, pps) in zooms {
89 timeline.testSetPxPerSecond(pps)
90 timeline.testSetOrigin(0)
91 let visible = timeline.testVisibleClipCount
92 warmThumbnails()
93 // Count thumbnails actually blitted over one profiled pan pass.
94 DrawProf.on = true; DrawProf.thumbHits = 0
95 NSGraphicsContext.saveGraphicsState(); NSGraphicsContext.current = gctx
96 timeline.testSetScrolling(false)
97 for i in 0..<60 { timeline.testSetOrigin(panSpan * Double(i) / 60); timeline.testRedraw() }
98 NSGraphicsContext.restoreGraphicsState()
99 let thumbsPerFrame = DrawProf.thumbHits / 60
100 DrawProf.on = false
101 for (mode, scrolling) in [("detail ", false), ("scrolling", true)] {
102 let ms = measure(scrolling: scrolling)
103 print(String(format: "%@ %-9@ %7.2f %7d %8.2f %5.0f %6d",
104 mode, name as NSString, pps, visible, ms, 1000 / max(0.001, ms),
105 scrolling ? 0 : thumbsPerFrame))
106 }
107 }
108 exit(0)
109}
sequencer/Sources/Sequencer/PlaybackController.swift+228-45
......@@ -13,9 +13,18 @@ final class PlaybackController {
1313 /// speed you left off — including a J/K/L shuttle speed. J/L themselves
1414 /// ignore this and always start from ±1x.
1515 private var lastRate: Double = 1
16 /// The normal forward speed Space / play uses, settable from the transport's
17 /// speed dropdown (default 1×). This is separate from the J/K/L shuttle,
18 /// which always walks its own 1,2,4…64 ladder — so choosing, say, 1.5× normal
19 /// playback leaves scrubbing untouched.
20 private(set) var playSpeed: Double = 1
1621 private var anchorHost: Double = 0
1722 private var anchorTime: Double = 0
1823 private var pausedPlayhead: Double = 0
24 /// Where the playhead sat when the CURRENT continuous playback run began,
25 /// so Escape can snap it back. Captured on the 0→moving transition (so a
26 /// mid-run shuttle speed change doesn't move it) and cleared on stop.
27 private var playbackStartPlayhead: Double?
1928 private var timer: Timer?
2029
2130 /// Loop (cycle) range. Non-undoable session state, so it lives here rather
......@@ -51,8 +60,10 @@ final class PlaybackController {
5160 } else if rate < 0, playhead <= 0 {
5261 setRate(0); seek(to: 0)
5362 }
54 ctx.notify.post(name: .playheadChanged, object: nil)
63 // Sync (which flips the double buffer at a cut) BEFORE the redraw, so the
64 // viewer reflects the flip on the same frame — no 1-tick lag at a cut.
5565 ctx.players.sync()
66 ctx.notify.post(name: .playheadChanged, object: nil)
5667 }
5768
5869 /// Wrap the playhead back into the cycle range when it runs off the far
......@@ -68,10 +79,13 @@ final class PlaybackController {
6879
6980 func setRate(_ newRate: Double) {
7081 let now = playhead
82 let wasStopped = rate == 0
7183 rate = newRate
7284 if newRate == 0 {
7385 pausedPlayhead = now
86 playbackStartPlayhead = nil
7487 } else {
88 if wasStopped { playbackStartPlayhead = now }
7589 lastRate = newRate
7690 anchorHost = CACurrentMediaTime()
7791 anchorTime = now
......@@ -83,6 +97,34 @@ final class PlaybackController {
8397
8498 func togglePlay() { setRate(isPlaying ? 0 : lastRate) }
8599
100 /// Escape while playing: stop and snap the playhead back to where this
101 /// playback run began. Returns false when already paused (nothing to revert),
102 /// so the caller can fall back to a plain stop.
103 @discardableResult
104 func stopAndRevert() -> Bool {
105 guard isPlaying, let origin = playbackStartPlayhead else { return false }
106 setRate(0)
107 seek(to: origin)
108 return true
109 }
110
111 /// Set the normal play speed (from the transport dropdown). Applies live if
112 /// already playing — keeping the current direction — otherwise it becomes the
113 /// speed the next Space starts at. Clamped to a sane 0.1×–64× range.
114 func setPlaySpeed(_ speed: Double) {
115 playSpeed = max(0.1, min(64, speed))
116 if rate != 0 {
117 setRate(rate < 0 ? -playSpeed : playSpeed) // live; also updates lastRate
118 } else {
119 lastRate = playSpeed // so the next Space uses it
120 ctx.notify.post(name: .playheadChanged, object: nil)
121 }
122 let text = playSpeed == playSpeed.rounded()
123 ? String(format: "%.0f×", playSpeed) : String(format: "%g×", playSpeed)
124 NotificationCenter.default.post(name: .transientStatus, object: nil,
125 userInfo: ["text": "Playback speed: \(text)"])
126 }
127
86128 /// J/K/L: each press in the moving direction doubles the rate (capped at
87129 /// 64x); pressing the opposite direction halves it until it stops.
88130 func shuttle(_ direction: Double) {
......@@ -111,6 +153,19 @@ final class PlaybackController {
111153 seek(to: playhead + seconds)
112154 }
113155
156 /// Shift the playhead by `delta` seconds, preserving playback continuity.
157 /// Unlike `seek`, this re-anchors WITHOUT forcing a hard resync — used by
158 /// ripple edits where content slides under the playhead by the same amount,
159 /// so every player is already on the right frame and must not hiccup.
160 func shift(by delta: Double) {
161 let target = max(0, playhead + delta)
162 pausedPlayhead = target
163 anchorHost = CACurrentMediaTime()
164 anchorTime = target
165 ctx.notify.post(name: .playheadChanged, object: nil)
166 ctx.players.sync(force: false)
167 }
168
114169 // MARK: - Loop / cycle range (I / O / C)
115170
116171 /// Mark the in point at the playhead. A collapsed range (out ≤ in) drops
......@@ -197,10 +252,10 @@ final class TrackPlayer {
197252 }
198253
199254 private var currentMediaKey: String?
200 /// Chunk indices that were proxy-backed in the CURRENT item's composition
201 /// (an item swap mid-playback is only worth its hiccup when it upgrades
202 /// the frames under the playhead).
203 private var itemChunks: Set<Int> = []
255 /// Per-chunk proxy width baked into the CURRENT item's composition. A swap
256 /// is only worth its hiccup when it improves the frame UNDER THE PLAYHEAD —
257 /// either newly covered, or a sharper proxy than this item already has.
258 private var itemChunkWidths: [Int: Int] = [:]
204259
205260 func setClip(_ clip: Clip?, media: MediaItem?, sourceTime: Double = 0) {
206261 guard let clip, let media else {
......@@ -234,27 +289,49 @@ final class TrackPlayer {
234289 } else {
235290 let (asset, version) = ctx.chunks.composition(for: media)
236291 let now = CACurrentMediaTime()
292 let ready = version != -2 // the real composition has assembled
237293 let sameAsset = currentMediaKey == media.cacheKey && currentSourceURL == nil
238294 && player.currentItem != nil
239 var swap = !sameAsset
240 if !swap, currentChunkVersion != version {
241 if player.rate == 0 || currentChunkVersion == -2 {
242 // Paused/scrubbing, or still on the placeholder while the
243 // first real composition assembled: swap freely.
244 swap = true
295 var swap = false
296 if !ready {
297 // Composition still assembling: do NOT install the empty
298 // placeholder item — it shows black, can go .failed, and then
299 // the failure-retry below flashes it every couple of seconds.
300 // Leave the current item; the viewer stands in meanwhile.
301 swap = false
302 } else if !sameAsset {
303 swap = true // first real item, or the media changed
304 } else if currentChunkVersion != version {
305 // Same media, composition upgraded. Only reload when the frame
306 // UNDER THE PLAYHEAD actually changes what we can show — a chunk
307 // finishing elsewhere must not reset (and flash) the item.
308 let idx = ChunkManager.chunkIndex(forSource: sourceTime)
309 let have = ctx.chunks.builtWidths(media: media)[idx]
310 let had = itemChunkWidths[idx]
311 let sharperProxy = have != nil && (had ?? 0) < have!
312 if player.rate == 0 {
313 // PAUSED: a swap is a pure visual flash with no playback
314 // benefit, so swap only to REVEAL a frame we otherwise
315 // can't show at all — an unplayable original (DNx) whose
316 // covering chunk has just landed. Never swap to merely
317 // sharpen a still, and never trade a playable original
318 // (crisper than any proxy for a still) down to a proxy.
319 // Pending quality upgrades take effect on the next play/seek.
320 swap = sharperProxy && had == nil
321 && !ctx.chunks.originalPlayable(media: media)
245322 } else {
246 // Mid-playback, only swap when it UPGRADES the frames
247 // under the playhead (original/empty → rendered proxy).
248 let idx = ChunkManager.chunkIndex(forSource: sourceTime)
249 swap = !itemChunks.contains(idx)
250 && ctx.chunks.isCovered(media: media, sourceTime: sourceTime)
251 && now - lastChunkSwap > 3
323 // PLAYING: adopt the proxy the moment it covers the playhead
324 // (a NAS original may stutter), throttled so rapid
325 // completions don't hiccup the stream.
326 swap = sharperProxy && now - lastChunkSwap > 3
252327 }
253328 }
254 if itemFailed { swap = now - lastChunkSwap > 2 }
329 // A failed stream is only worth re-swapping to recover DURING
330 // playback; while paused the retry just flashes with nothing gained.
331 if itemFailed, ready, player.rate != 0 { swap = now - lastChunkSwap > 2 }
255332 if swap {
256333 replaceItem(AVPlayerItem(asset: asset), media: media, url: nil, version: version)
257 itemChunks = ctx.chunks.builtChunks(media: media)
334 itemChunkWidths = ctx.chunks.builtWidths(media: media)
258335 lastChunkSwap = now
259336 }
260337 }
......@@ -264,11 +341,21 @@ final class TrackPlayer {
264341 }
265342
266343 private func replaceItem(_ item: AVPlayerItem, media: MediaItem, url: URL?, version: Int) {
267 item.preferredForwardBufferDuration = lenientSync ? 8 : 1
268 player.replaceCurrentItem(with: item)
344 installItem(item)
269345 currentSourceURL = url
270346 currentMediaKey = media.cacheKey
271347 currentChunkVersion = version
348 }
349
350 /// Install a fresh item, holding it silent if we're mid-playback. A new item
351 /// starts at t=0; the syncTime call that always follows a swap (same sync
352 /// pass) seeks it to the live position and resumes. Without the hold it
353 /// blips wrong content from the file's head — audibly so on the audio track.
354 private func installItem(_ item: AVPlayerItem) {
355 item.preferredForwardBufferDuration = lenientSync ? 8 : 1
356 let wasPlaying = player.rate != 0
357 player.replaceCurrentItem(with: item)
358 if wasPlaying { player.rate = 0 }
272359 itemFailed = false
273360 seekInFlight = false
274361 pendingSeek = nil
......@@ -329,10 +416,92 @@ final class TrackPlayer {
329416 }
330417}
331418
419/// Double-buffered video track: two `TrackPlayer`s so a cut to a DIFFERENT clip
420/// is gapless. The **front** player shows the clip under the playhead; as a cut
421/// approaches, the **back** player is prerolled to the next clip's first frame
422/// (loaded, decoded, parked, muted). At the cut the roles flip — the viewer just
423/// swaps which of its two layers is visible, and the already-warm back player
424/// resumes instantly, so there's no `replaceCurrentItem` black-frame / audio gap.
425///
426/// Only cuts to a different *media* need this; crossing into another clip of the
427/// same media keeps the item and just seeks (already gapless), so the back
428/// buffer is only spun up for a genuine media change.
429final class VideoTrackPlayer {
430 unowned var ctx: DocumentContext! {
431 didSet { a.ctx = ctx; b.ctx = ctx }
432 }
433 let a = TrackPlayer()
434 let b = TrackPlayer()
435 private(set) var frontIsA = true
436 var front: TrackPlayer { frontIsA ? a : b }
437 var back: TrackPlayer { frontIsA ? b : a }
438 var currentClipId: UUID? { front.currentClipId }
439
440 /// Spin up the next clip's buffer this many seconds before its cut — enough
441 /// to load + decode the first frame even off a NAS original.
442 private static let preroll = 1.5
443
444 func sync(ref: TrackRef, playhead: Double, rate: Double,
445 playheadMoved: Bool, force: Bool) {
446 let project = ctx.store.project
447 let cur = project.clipAt(track: ref, time: playhead, kind: .video)
448 let media = cur.flatMap { project.media($0.mediaId) }
449
450 // FLIP: the front is showing the wrong (previous) clip, but the back was
451 // prerolled to exactly the clip now under the playhead → hand over.
452 if let cur, front.currentClipId != cur.id, back.currentClipId == cur.id {
453 frontIsA.toggle()
454 }
455
456 // FRONT: the clip under the playhead, audible.
457 front.setClip(cur, media: media, sourceTime: cur?.sourceTime(at: playhead) ?? 0)
458 if let cur, media != nil {
459 let expected = cur.sourceTime(at: playhead)
460 if rate != 0 || playheadMoved || force {
461 front.syncTime(expected: expected, rate: rate * cur.speed, force: force)
462 }
463 }
464
465 // BACK: preroll the next different-media clip when its cut is imminent,
466 // parked (rate 0) and muted at its first frame. Forward playback only —
467 // a reverse/scrub cut falls back to the plain (tiny-gap) swap.
468 var buffering = false
469 if rate >= 0, let next = nextDifferentClip(on: ref, after: playhead, current: cur),
470 next.start - playhead <= Self.preroll,
471 let nextMedia = project.media(next.mediaId) {
472 if back.currentClipId != next.id {
473 back.setClip(next, media: nextMedia, sourceTime: next.srcIn)
474 }
475 back.player.isMuted = true
476 back.syncTime(expected: next.srcIn, rate: 0, force: false)
477 buffering = true
478 }
479 if !buffering, back.currentClipId != nil {
480 back.setClip(nil, media: nil) // release the idle buffer
481 }
482 }
483
484 /// The next clip on this track (in time) whose media differs from `current`
485 /// — i.e. the next cut that would otherwise flash. Same-media continuations
486 /// don't need a buffer.
487 private func nextDifferentClip(on ref: TrackRef, after t: Double,
488 current: Clip?) -> Clip? {
489 ctx.store.project.clips
490 .filter { $0.track == ref && $0.kind == .video && $0.start > t + 1e-6
491 && $0.mediaId != current?.mediaId }
492 .min { $0.start < $1.start }
493 }
494
495 func clear() {
496 a.player.replaceCurrentItem(with: nil)
497 b.player.replaceCurrentItem(with: nil)
498 }
499}
500
332501final class PlayerManager {
333502 /// The document context that owns this manager. Set at construction.
334503 unowned var ctx: DocumentContext!
335 private(set) var players: [TrackRef: TrackPlayer] = [:]
504 private(set) var players: [TrackRef: VideoTrackPlayer] = [:]
336505 /// Audio clips get one player per CLIP (not per track) so overlapping
337506 /// audio layers all sound at once.
338507 private(set) var audioPlayers: [UUID: TrackPlayer] = [:]
......@@ -343,7 +512,13 @@ final class PlayerManager {
343512 // and finished proxies should replace original/filmstrip playback.
344513 NotificationCenter.default.addObserver(
345514 forName: .projectChanged, object: nil, queue: .main) { [weak self] _ in
346 self?.sync(force: true)
515 guard let self else { return }
516 // While playing, the 60 Hz tick already keeps players synced. Forcing
517 // a hard resync on every edit reseeks every player and audibly stutters
518 // the audio; only edits that actually move content under the playhead
519 // then drift into a normal (throttled) resync. Force only when paused,
520 // where nothing else refreshes the frame under the playhead.
521 self.sync(force: self.ctx.playback.rate == 0)
347522 }
348523 NotificationCenter.default.addObserver(
349524 forName: .mediaStatusChanged, object: nil, queue: .main) { [weak self] _ in
......@@ -352,9 +527,9 @@ final class PlayerManager {
352527 }
353528 }
354529
355 func player(for ref: TrackRef) -> TrackPlayer {
530 func videoTrack(for ref: TrackRef) -> VideoTrackPlayer {
356531 if let p = players[ref] { return p }
357 let p = TrackPlayer()
532 let p = VideoTrackPlayer()
358533 p.ctx = ctx
359534 players[ref] = p
360535 return p
......@@ -370,7 +545,7 @@ final class PlayerManager {
370545 // Drop players for removed tracks.
371546 let liveRefs = Set(project.tracks.indices.map { TrackRef.video($0) })
372547 for (ref, p) in players where !liveRefs.contains(ref) {
373 p.player.replaceCurrentItem(with: nil)
548 p.clear()
374549 players.removeValue(forKey: ref)
375550 }
376551
......@@ -379,37 +554,43 @@ final class PlayerManager {
379554
380555 for i in project.tracks.indices {
381556 let ref = TrackRef.video(i)
382 let tp = player(for: ref)
383 let clip = project.clipAt(track: ref, time: playhead, kind: .video)
384 let media = clip.flatMap { project.media($0.mediaId) }
385 tp.setClip(clip, media: media,
386 sourceTime: clip?.sourceTime(at: playhead) ?? 0)
387 guard let clip, let media else { continue }
388 let expected = clip.sourceTime(at: playhead)
389 ctx.chunks.want(media: media, sourceTime: expected)
390 if rate != 0 || playheadMoved || force {
391 // Time-stretched clips chase the clock at a scaled rate.
392 tp.syncTime(expected: expected, rate: rate * clip.speed, force: force)
393 }
557 videoTrack(for: ref).sync(ref: ref, playhead: playhead, rate: rate,
558 playheadMoved: playheadMoved, force: force)
394559 }
395560
561 // Recompute the proxy build order from the (moved) playhead + direction;
562 // self-throttled, so calling it every tick is cheap.
563 ctx.chunks.updateDemand()
564
396565 syncAudio(project: project, playhead: playhead, rate: rate,
397566 playheadMoved: playheadMoved, force: force)
398567 }
399568
400 /// Layered audio: every audio clip under the playhead plays through its
401 /// own player, with the fade envelope applied as volume.
569 /// How far ahead of a clip's start we spin up (and preroll) its player, and
570 /// how long we keep a just-ended one. The lookahead is the key to gapless
571 /// audio cuts: the next clip is already playing (silently — its fade gain is
572 /// 0 until the playhead reaches it) and synced to the master clock BEFORE its
573 /// cut, so crossing the boundary is a pure volume handover with no cold-start
574 /// gap. The linger avoids tearing a player down the instant it ends.
575 private static let audioLookahead = 1.0
576 private static let audioLinger = 0.5
577
578 /// Layered audio: every audio clip near the playhead plays through its own
579 /// player, with the fade envelope applied as volume. Players for clips just
580 /// ahead of the playhead are kept running (silent) so cuts are seamless.
402581 private func syncAudio(project: ProjectModel, playhead: Double, rate: Double,
403582 playheadMoved: Bool, force: Bool) {
404 let active = project.clips.filter {
405 $0.kind == .audio && playhead >= $0.start && playhead < $0.end
583 let windowed = project.clips.filter {
584 $0.kind == .audio
585 && playhead + Self.audioLookahead >= $0.start
586 && playhead - Self.audioLinger < $0.end
406587 }
407 let activeIds = Set(active.map(\.id))
408 for (id, p) in audioPlayers where !activeIds.contains(id) {
588 let windowedIds = Set(windowed.map(\.id))
589 for (id, p) in audioPlayers where !windowedIds.contains(id) {
409590 p.player.replaceCurrentItem(with: nil)
410591 audioPlayers.removeValue(forKey: id)
411592 }
412 for clip in active {
593 for clip in windowed {
413594 guard let media = project.media(clip.mediaId) else { continue }
414595 let ap: TrackPlayer
415596 if let existing = audioPlayers[clip.id] {
......@@ -422,6 +603,8 @@ final class PlayerManager {
422603 }
423604 let expected = clip.srcIn + (playhead - clip.start)
424605 ap.setClip(clip, media: media, sourceTime: expected)
606 // audioGain is 0 outside [start, end], so a prerolled upcoming clip
607 // stays silent until its cut, then hands over with no gap.
425608 ap.player.volume = Float(audioGain(clip, at: playhead))
426609 if rate != 0 || playheadMoved || force {
427610 ap.syncTime(expected: expected, rate: rate, force: force)
sequencer/Sources/Sequencer/Store.swift+45-22
......@@ -26,23 +26,47 @@ final class Store {
2626 didSet { if selection != oldValue { post(.selectionChanged) } }
2727 }
2828
29 private var undoStack: [ProjectModel] = []
30 private var redoStack: [ProjectModel] = []
31 private var gestureBase: ProjectModel?
29 /// An undo entry is the model plus the ephemeral cursor state (selection
30 /// and playhead) as it stood before the edit. Restoring one puts the
31 /// selection and playhead back too, so undo steps backward in time rather
32 /// than just reverting clip geometry.
33 private struct Snapshot {
34 var model: ProjectModel
35 var selection: Set<UUID>
36 var playhead: Double
37 }
38
39 private var undoStack: [Snapshot] = []
40 private var redoStack: [Snapshot] = []
41 private var gestureBase: Snapshot?
3242
3343 var canUndo: Bool { !undoStack.isEmpty || gestureBase != nil }
3444 var canRedo: Bool { !redoStack.isEmpty }
3545
46 private func snapshot() -> Snapshot {
47 Snapshot(model: project, selection: selection, playhead: ctx.playback.playhead)
48 }
49
50 /// Restore a snapshot wholesale: model, selection (dropping any clips that
51 /// no longer exist), and playhead.
52 private func restore(_ s: Snapshot) {
53 project = s.model
54 selection = s.selection.intersection(Set(project.clips.map(\.id)))
55 ctx.playback.seek(to: s.playhead)
56 changed()
57 }
58
3659 // MARK: - Mutation
3760
3861 /// One-shot undoable mutation.
3962 func mutate(_ body: (inout ProjectModel) -> Void) {
4063 precondition(gestureBase == nil, "mutate() during an open gesture")
64 let before = snapshot()
4165 var copy = project
4266 body(&copy)
4367 copy.normalizeStoryboards()
4468 guard copy != project else { return }
45 pushUndo(project)
69 pushUndo(before)
4670 project = copy
4771 pruneSelection()
4872 changed()
......@@ -53,13 +77,13 @@ final class Store {
5377 /// so there is no accumulation error.
5478 func beginGesture() {
5579 precondition(gestureBase == nil)
56 gestureBase = project
80 gestureBase = snapshot()
5781 }
5882
59 var gestureBaseModel: ProjectModel? { gestureBase }
83 var gestureBaseModel: ProjectModel? { gestureBase?.model }
6084
6185 func updateGesture(_ body: (inout ProjectModel) -> Void) {
62 guard let base = gestureBase else { return }
86 guard let base = gestureBase?.model else { return }
6387 var copy = base
6488 body(&copy)
6589 copy.normalizeStoryboards()
......@@ -84,7 +108,7 @@ final class Store {
84108 post(.projectChanged)
85109 }
86110 gestureBase = nil
87 if project != base {
111 if project != base.model {
88112 pushUndo(base)
89113 pruneSelection()
90114 changed()
......@@ -99,10 +123,13 @@ final class Store {
99123 post(.projectChanged)
100124 }
101125
102 /// Commit a finished preview as ONE undo step, given the pre-preview snapshot.
103 func commitPreview(from snapshot: ProjectModel) {
104 guard project != snapshot else { return }
105 pushUndo(snapshot)
126 /// Commit a finished preview as ONE undo step, given the pre-preview model.
127 /// A preview (e.g. the colour picker) doesn't touch selection or playhead,
128 /// so the current cursor state is also the pre-preview cursor state.
129 func commitPreview(from model: ProjectModel) {
130 guard project != model else { return }
131 pushUndo(Snapshot(model: model, selection: selection,
132 playhead: ctx.playback.playhead))
106133 pruneSelection()
107134 changed()
108135 }
......@@ -110,28 +137,24 @@ final class Store {
110137 func cancelGesture() {
111138 guard let base = gestureBase else { return }
112139 gestureBase = nil
113 project = base
140 project = base.model
114141 post(.projectChanged)
115142 }
116143
117144 func undo() {
118145 if gestureBase != nil { cancelGesture(); return }
119146 guard let prev = undoStack.popLast() else { return }
120 redoStack.append(project)
121 project = prev
122 pruneSelection()
123 changed()
147 redoStack.append(snapshot())
148 restore(prev)
124149 }
125150
126151 func redo() {
127152 guard let next = redoStack.popLast() else { return }
128 undoStack.append(project)
129 project = next
130 pruneSelection()
131 changed()
153 undoStack.append(snapshot())
154 restore(next)
132155 }
133156
134 private func pushUndo(_ snapshot: ProjectModel) {
157 private func pushUndo(_ snapshot: Snapshot) {
135158 undoStack.append(snapshot)
136159 if undoStack.count > 500 { undoStack.removeFirst() }
137160 redoStack.removeAll()
sequencer/Sources/Sequencer/TimelineView.swift+408-102
......@@ -1,5 +1,30 @@
11import AppKit
22
3/// Dev-only per-section draw profiler (enabled by the `--perftest` harness).
4/// Zero overhead when `on` is false.
5enum DrawProf {
6 static var on = false
7 static var acc: [String: Double] = [:]
8 static var order: [String] = []
9 static var thumbHits = 0 // filmstrip images actually blitted (cache hits)
10 @inline(__always) static func t<T>(_ label: String, _ body: () -> T) -> T {
11 if !on { return body() }
12 let t0 = DispatchTime.now().uptimeNanoseconds
13 let r = body()
14 let dt = Double(DispatchTime.now().uptimeNanoseconds - t0) / 1e6
15 if acc[label] == nil { order.append(label) }
16 acc[label, default: 0] += dt
17 return r
18 }
19 static func reset() { acc = [:]; order = [] }
20 static func report(frames: Int) {
21 for k in order {
22 print(String(format: " %-12@ %7.3f ms/frame", k as NSString,
23 acc[k]! / Double(frames)))
24 }
25 }
26}
27
328/// The timeline: ruler, Fusion comps band, track lanes, clips, playhead.
429/// Tracks are unnamed and color-coded; new tracks appear dynamically when a
530/// clip is dragged below the last lane (two rows down = two new tracks).
......@@ -27,6 +52,9 @@ final class TimelineView: NSView {
2752 oldValue.notify.removeObserver(self, name: .playheadChanged, object: nil)
2853 ctx.notify.addObserver(self, selector: #selector(playheadMoved),
2954 name: .playheadChanged, object: nil)
55 // New document ⇒ new model; the scene cache must rebuild even though
56 // no `.projectChanged` fires for the context swap itself.
57 sceneDirty = true
3058 }
3159 }
3260 private var store: Store { ctx.store }
......@@ -60,7 +88,7 @@ final class TimelineView: NSView {
6088
6189 required init?(coder: NSCoder) { fatalError() }
6290
63 @objc private func redraw() { needsDisplay = true }
91 @objc private func redraw() { sceneDirty = true; needsDisplay = true }
6492
6593 @objc private func playheadMoved() {
6694 // Auto-follow while playing.
......@@ -192,19 +220,172 @@ final class TimelineView: NSView {
192220
193221 private var panelNamesCache: [UUID: String] = [:]
194222 private var linkedSelectionCache: Set<UUID> = []
223 // Per-lane clips (sorted by start) and overlap ranges, grouped ONCE per
224 // model change rather than re-filtered/re-sorted for every lane on every
225 // frame. Rebuilt lazily when `sceneDirty` is set — which `redraw()` does on
226 // any model/selection/media/view/comps change. Scrolling, zooming and the
227 // 60 Hz playhead only set `needsDisplay` (not `sceneDirty`), so a pan over a
228 // large project is now a redraw of cached geometry, not a full recompute.
229 private var clipsByLane: [TrackRef: [Clip]] = [:]
230 private var overlapsByLane: [TrackRef: [ClipOverlap]] = [:]
231 private var mediaById: [UUID: MediaItem] = [:]
232 private var sceneDirty = true
233
234 /// Clip-title text attributes — hoisted out of the per-clip loop so we
235 /// don't rebuild the dictionary (and re-resolve the font) for every clip on
236 /// every frame.
237 private static let titleAttrs: [NSAttributedString.Key: Any] = [
238 .font: NSFont.systemFont(ofSize: 9.5, weight: .medium),
239 .foregroundColor: NSColor(calibratedWhite: 0.92, alpha: 1),
240 ]
195241
196 override func draw(_ dirtyRect: NSRect) {
197 Theme.timelineBg.setFill()
198 bounds.fill()
199
242 /// SF Symbols, tinted and baked into flat bitmaps, cached by `key`. Building
243 /// an SF Symbol and tinting it (`tinted` does a `lockFocus` composite) *per
244 /// draw* was the single biggest timeline draw cost: nearly every clip is
245 /// linked, so the link/mute badges alone ran hundreds of times a frame, and
246 /// the track-header buttons re-baked every frame too. Cached, drawing a badge
247 /// is a plain blit. Main-thread only (all drawing is).
248 private static var symbolCache: [String: NSImage] = [:]
249 static func bakedSymbol(_ name: String, pointSize: CGFloat = 0,
250 weight: NSFont.Weight = .regular,
251 tint: NSColor, key: String) -> NSImage? {
252 if let img = symbolCache[key] { return img }
253 var base = NSImage(systemSymbolName: name, accessibilityDescription: name)
254 if pointSize > 0 {
255 base = base?.withSymbolConfiguration(.init(pointSize: pointSize, weight: weight))
256 }
257 guard let tinted = base?.tinted(tint) else { return nil }
258 // Bake into a 2× bitmap so the flattened badge stays crisp on Retina
259 // (a plain `lockFocus` would capture at whatever scale is current).
260 let size = tinted.size
261 guard size.width > 0, size.height > 0,
262 let rep = NSBitmapImageRep(
263 bitmapDataPlanes: nil, pixelsWide: Int(size.width * 2),
264 pixelsHigh: Int(size.height * 2), bitsPerSample: 8, samplesPerPixel: 4,
265 hasAlpha: true, isPlanar: false, colorSpaceName: .deviceRGB,
266 bytesPerRow: 0, bitsPerPixel: 0) else { return nil }
267 rep.size = size
268 NSGraphicsContext.saveGraphicsState()
269 NSGraphicsContext.current = NSGraphicsContext(bitmapImageRep: rep)
270 tinted.draw(in: NSRect(origin: .zero, size: size))
271 NSGraphicsContext.restoreGraphicsState()
272 let baked = NSImage(size: size)
273 baked.addRepresentation(rep)
274 symbolCache[key] = baked
275 return baked
276 }
277 private static var mutedBadge: NSImage? {
278 bakedSymbol("speaker.slash.fill", tint: .white, key: "badge.muted")
279 }
280 private static var linkBadge: NSImage? {
281 bakedSymbol("link", tint: .white, key: "badge.link")
282 }
283
284 /// True while the user is actively scrolling/zooming (cleared ~120 ms after
285 /// the last scroll event, which triggers one full-detail redraw). On its own
286 /// it changes nothing — clips draw at full detail while scrolling. It only
287 /// gates the `lightScroll` fallback: a *very dense* frame (see
288 /// `denseScrollClips`) sheds the heavy filmstrip/waveform pass mid-scroll so
289 /// a pathological timeline can't stall, restoring detail the moment it settles.
290 private var isScrolling = false
291 private var scrollSettleToken = 0
292
293 /// Mark a scroll/zoom in progress and schedule the settle redraw.
294 private func noteScrolling() {
295 isScrolling = true
296 scrollSettleToken &+= 1
297 let token = scrollSettleToken
298 DispatchQueue.main.asyncAfter(deadline: .now() + 0.12) { [weak self] in
299 guard let self, self.scrollSettleToken == token else { return }
300 self.isScrolling = false
301 self.needsDisplay = true
302 }
303 }
304
305 private func rebuildSceneIfNeeded() {
306 guard sceneDirty else { return }
200307 panelNamesCache = project.panelNames()
201308 // Link-mates of the selection get an aqua outline (they act selected).
202309 linkedSelectionCache = project.expandLinks(store.selection)
203310 .subtracting(store.selection)
311 clipsByLane = Dictionary(grouping: project.clips, by: \.track)
312 for ref in clipsByLane.keys {
313 clipsByLane[ref]?.sort { $0.start < $1.start }
314 }
315 // `overlaps()` (no arg) computes every lane in one pass; grouping by
316 // track yields the same per-lane arrays `overlaps(on:)` returned.
317 overlapsByLane = Dictionary(grouping: project.overlaps(), by: \.track)
318 mediaById = Dictionary(project.media.map { ($0.id, $0) },
319 uniquingKeysWith: { a, _ in a })
320 // Per-lane colours: the track colour and its black-blended body/strip
321 // shades depend only on the lane's hue, but were re-derived (an NSColor
322 // alloc + two colour-space `blended()` conversions) for every clip every
323 // frame. Compute them once per lane here.
324 laneColorCache = [:]
325 for ref in project.laneRefs {
326 let base = trackColor(ref)
327 laneColorCache[ref] = LaneColors(
328 base: base,
329 videoBody: base.blended(withFraction: 0.75, of: .black) ?? base,
330 audioBody: base.blended(withFraction: 0.82, of: .black) ?? base,
331 strip: (base.blended(withFraction: 0.5, of: .black) ?? base)
332 .withAlphaComponent(0.85))
333 }
334 sceneDirty = false
335 }
336
337 private struct LaneColors {
338 let base: NSColor // borders, waveform, filmstrip tint
339 let videoBody: NSColor // video clip body fill
340 let audioBody: NSColor // audio clip body fill
341 let strip: NSColor // title-strip fill
342 }
343 private var laneColorCache: [TrackRef: LaneColors] = [:]
344 private func laneColors(_ ref: TrackRef) -> LaneColors {
345 if let c = laneColorCache[ref] { return c }
346 let base = trackColor(ref)
347 return LaneColors(base: base,
348 videoBody: base.blended(withFraction: 0.75, of: .black) ?? base,
349 audioBody: base.blended(withFraction: 0.82, of: .black) ?? base,
350 strip: (base.blended(withFraction: 0.5, of: .black) ?? base)
351 .withAlphaComponent(0.85))
352 }
353
354 /// Clips intersecting the visible time window, across all lanes. Cheap: the
355 /// per-lane arrays are sorted, so it culls the same way the draw loop does.
356 private func visibleClipCount() -> Int {
357 let left = originSecond
358 let right = originSecond + Double(bounds.width - headerW) / pxPerSecond
359 var n = 0
360 for ref in project.laneRefs {
361 for c in clipsByLane[ref] ?? [] {
362 if c.start > right { break }
363 if c.end < left { continue }
364 n += 1
365 }
366 }
367 return n
368 }
369
370 /// While actively scrolling a *very dense* frame, shed the heavy filmstrip/
371 /// waveform pass so the pan stays fluid; it returns the instant the scroll
372 /// settles. Ordinary-density views keep full detail — thumbnails, waveforms
373 /// and labels — even mid-scroll, so nothing visibly "drops out" in normal use.
374 private var lightScroll = false
375 private static let denseScrollClips = 350
376
377 override func draw(_ dirtyRect: NSRect) {
378 Theme.timelineBg.setFill()
379 bounds.fill()
380
381 DrawProf.t("scene") { rebuildSceneIfNeeded() }
382 lightScroll = isScrolling && visibleClipCount() > Self.denseScrollClips
204383 scrollY = min(scrollY, maxScrollY)
205384 let rows = project.laneRefs
206 for row in 0..<rows.count {
207 drawLane(row: row, ref: rows[row])
385 DrawProf.t("lanes") {
386 for row in 0..<rows.count {
387 drawLane(row: row, ref: rows[row])
388 }
208389 }
209390 drawDragHintLanes()
210391 drawFileDropPreview()
......@@ -212,9 +393,11 @@ final class TimelineView: NSView {
212393 // Opaque header column so clips never show behind the buttons.
213394 Theme.timelineBg.setFill()
214395 NSRect(x: 0, y: rulerH, width: headerW, height: bounds.height - rulerH).fill()
215 drawFusionHeader()
216 for row in 0..<rows.count {
217 drawTrackHeader(row: row, ref: rows[row], lane: laneRect(row: row))
396 DrawProf.t("headers") {
397 drawFusionHeader()
398 for row in 0..<rows.count {
399 drawTrackHeader(row: row, ref: rows[row], lane: laneRect(row: row))
400 }
218401 }
219402 drawRuler()
220403 drawInOut()
......@@ -314,11 +497,21 @@ final class TimelineView: NSView {
314497 (ref == .storyboard ? Theme.storyboardLaneBg : Theme.laneBg).setFill()
315498 NSBezierPath(roundedRect: lane, xRadius: 4, yRadius: 4).fill()
316499
317 let overlaps = project.overlaps(on: ref)
500 let overlaps = overlapsByLane[ref] ?? []
318501 let overlappingIds = Set(overlaps.flatMap { [$0.a.id, $0.b.id] })
319502
320 for clip in project.clips(on: ref) {
321 drawClip(clip, row: row, ref: ref, overlapping: overlappingIds.contains(clip.id))
503 // Horizontal culling: clips are sorted by start, so once one starts past
504 // the right edge every later clip does too — stop. Clips ending before
505 // the left edge are skipped. Keeps the loop proportional to what's
506 // on-screen, not to the whole (possibly huge) lane.
507 let leftSec = originSecond
508 let rightSec = originSecond + Double(bounds.width - headerW) / pxPerSecond
509 let colors = laneColors(ref)
510 for clip in clipsByLane[ref] ?? [] {
511 if clip.start > rightSec { break }
512 if clip.end < leftSec { continue }
513 drawClip(clip, row: row, ref: ref, colors: colors,
514 overlapping: overlappingIds.contains(clip.id))
322515 }
323516
324517 // Bright red overlap ranges on top of the clip bodies.
......@@ -343,9 +536,9 @@ final class TimelineView: NSView {
343536 private func drawHeaderButton(_ symbolName: String, in r: NSRect, on: Bool) {
344537 (on ? NSColor.white : NSColor.black.withAlphaComponent(0.35)).setFill()
345538 NSBezierPath(ovalIn: r).fill()
346 guard let base = NSImage(systemSymbolName: symbolName, accessibilityDescription: nil)?
347 .withSymbolConfiguration(.init(pointSize: 9, weight: .bold)) else { return }
348 let img = base.tinted(on ? .black : NSColor(calibratedWhite: 0.95, alpha: 0.9))
539 let tint = on ? NSColor.black : NSColor(calibratedWhite: 0.95, alpha: 0.9)
540 guard let img = Self.bakedSymbol(symbolName, pointSize: 9, weight: .bold,
541 tint: tint, key: "hdr.\(symbolName).\(on)") else { return }
349542 let s = img.size
350543 img.draw(in: NSRect(x: r.midX - s.width / 2, y: r.midY - s.height / 2,
351544 width: s.width, height: s.height),
......@@ -479,11 +672,12 @@ final class TimelineView: NSView {
479672 }
480673 }
481674
482 private func drawClip(_ clip: Clip, row: Int, ref: TrackRef, overlapping: Bool) {
675 private func drawClip(_ clip: Clip, row: Int, ref: TrackRef, colors: LaneColors,
676 overlapping: Bool) {
483677 let rect = clipRect(clip, row: row)
484678 guard rect.maxX > headerW, rect.minX < bounds.width else { return }
485 let media = project.media(clip.mediaId)
486 let color = trackColor(ref)
679 let media = clip.mediaId.flatMap { mediaById[$0] }
680 let color = colors.base
487681 let selected = store.selection.contains(clip.id)
488682
489683 // Storyboard panels tile edge-to-edge (they're gapless) so the track
......@@ -499,25 +693,31 @@ final class TimelineView: NSView {
499693 case .storyboard:
500694 NSColor(calibratedWhite: 0.88, alpha: 1).setFill()
501695 case .audio:
502 (color.blended(withFraction: 0.82, of: .black) ?? color).setFill()
696 colors.audioBody.setFill()
503697 case .video:
504 (media == nil ? NSColor(calibratedWhite: 0.25, alpha: 1)
505 : color.blended(withFraction: 0.75, of: .black) ?? color).setFill()
698 (media == nil ? NSColor(calibratedWhite: 0.25, alpha: 1) : colors.videoBody).setFill()
506699 }
507700 body.fill()
508701
509 NSGraphicsContext.current?.saveGraphicsState()
510 body.addClip()
511 switch clip.kind {
512 case .video:
513 if let media, session.showFilmstrips { drawFilmstrip(clip, media: media, rect: rect) }
514 case .audio:
515 if let media { drawWaveform(clip, media: media, rect: rect, color: color) }
516 drawFades(clip, rect: rect, selected: selected)
517 case .storyboard:
518 drawBoardThumb(clip, rect: rect)
702 // Full detail (thumbnails, waveforms, labels) normally — including while
703 // scrolling. Only a very dense frame mid-scroll drops to bodies + strip +
704 // border (see `lightScroll`), and only until the pan settles.
705 let detail = !lightScroll
706
707 if detail {
708 NSGraphicsContext.current?.saveGraphicsState()
709 body.addClip()
710 switch clip.kind {
711 case .video:
712 if let media, session.showFilmstrips { drawFilmstrip(clip, media: media, rect: rect) }
713 case .audio:
714 if let media { drawWaveform(clip, media: media, rect: rect, color: color) }
715 drawFades(clip, rect: rect, selected: selected)
716 case .storyboard:
717 drawBoardThumb(clip, rect: rect)
718 }
719 NSGraphicsContext.current?.restoreGraphicsState()
519720 }
520 NSGraphicsContext.current?.restoreGraphicsState()
521721
522722 let linkedSel = !selected && linkedSelectionCache.contains(clip.id)
523723
......@@ -527,53 +727,48 @@ final class TimelineView: NSView {
527727 ? (panelNamesCache[clip.id] ?? "Panel") : "missing media")
528728 if clip.kind != .storyboard && media == nil { title = "⚠︎ " + title }
529729 if clip.kind == .audio { title = "♪ " + title }
530 let attrs: [NSAttributedString.Key: Any] = [
531 .font: NSFont.systemFont(ofSize: 9.5, weight: .medium),
532 .foregroundColor: NSColor(calibratedWhite: 0.92, alpha: 1),
533 ]
534 NSGraphicsContext.current?.saveGraphicsState()
535 body.addClip()
536 color.blended(withFraction: 0.5, of: .black)?.withAlphaComponent(0.85).setFill()
730 // The label is drawn only at rest and only when the clip is wide enough
731 // to read; a clip narrower than this shows no legible text anyway.
732 let showLabel = detail && rect.width >= 22
733 if detail { NSGraphicsContext.current?.saveGraphicsState(); body.addClip() }
734 colors.strip.setFill()
537735 NSRect(x: rect.minX, y: rect.minY, width: rect.width, height: 13).fill()
538 title.draw(at: NSPoint(x: max(rect.minX, headerW) + 5, y: rect.minY + 1),
539 withAttributes: attrs)
540
541 var badgeX = rect.maxX - 16
542 if clip.speed != 1 {
543 let s = String(format: "×%.4g", clip.speed)
544 let sAttrs: [NSAttributedString.Key: Any] = [
545 .font: NSFont.monospacedDigitSystemFont(ofSize: 8.5, weight: .semibold),
546 .foregroundColor: FusionComps.yellow,
547 ]
548 let w = s.size(withAttributes: sAttrs).width
549 badgeX -= w
550 s.draw(at: NSPoint(x: badgeX, y: rect.minY + 1.5), withAttributes: sAttrs)
551 badgeX -= 5
552 }
553 if clip.muted, let img = NSImage(systemSymbolName: "speaker.slash.fill",
554 accessibilityDescription: "muted") {
555 img.tinted(.white).draw(
556 in: NSRect(x: badgeX, y: rect.minY + 2, width: 10, height: 10),
557 from: .zero, operation: .sourceOver, fraction: 0.9)
558 badgeX -= 13
559 }
560 if clip.linkId != nil, let img = NSImage(systemSymbolName: "link",
561 accessibilityDescription: "linked") {
562 img.tinted(.white).draw(
563 in: NSRect(x: badgeX, y: rect.minY + 2, width: 10, height: 10),
564 from: .zero, operation: .sourceOver, fraction: 0.7)
565 }
566 NSGraphicsContext.current?.restoreGraphicsState()
736 if showLabel {
737 title.draw(at: NSPoint(x: max(rect.minX, headerW) + 5, y: rect.minY + 1),
738 withAttributes: Self.titleAttrs)
739
740 var badgeX = rect.maxX - 16
741 if clip.speed != 1 {
742 let s = String(format: "×%.4g", clip.speed)
743 let sAttrs: [NSAttributedString.Key: Any] = [
744 .font: NSFont.monospacedDigitSystemFont(ofSize: 8.5, weight: .semibold),
745 .foregroundColor: FusionComps.yellow,
746 ]
747 let w = s.size(withAttributes: sAttrs).width
748 badgeX -= w
749 s.draw(at: NSPoint(x: badgeX, y: rect.minY + 1.5), withAttributes: sAttrs)
750 badgeX -= 5
751 }
752 if clip.muted, let img = Self.mutedBadge {
753 img.draw(in: NSRect(x: badgeX, y: rect.minY + 2, width: 10, height: 10),
754 from: .zero, operation: .sourceOver, fraction: 0.9)
755 badgeX -= 13
756 }
757 if clip.linkId != nil, let img = Self.linkBadge {
758 img.draw(in: NSRect(x: badgeX, y: rect.minY + 2, width: 10, height: 10),
759 from: .zero, operation: .sourceOver, fraction: 0.7)
760 }
761 }
762 if detail { NSGraphicsContext.current?.restoreGraphicsState() }
567763
568764 // Selection reads as a full-card tint, not just an outline. Link-mates
569765 // of the selection (they act selected) tint aqua.
570766 if selected || linkedSel {
571 NSGraphicsContext.current?.saveGraphicsState()
572 body.addClip()
767 if detail { NSGraphicsContext.current?.saveGraphicsState(); body.addClip() }
573768 (selected ? NSColor.controlAccentColor : NSColor.systemCyan)
574769 .withAlphaComponent(selected ? 0.34 : 0.20).setFill()
575 rect.fill()
576 NSGraphicsContext.current?.restoreGraphicsState()
770 (detail ? rect : bodyRect).fill()
771 if detail { NSGraphicsContext.current?.restoreGraphicsState() }
577772 }
578773
579774 // Border LAST, on top of the tint: overlap = red, selection = accent
......@@ -624,6 +819,7 @@ final class TimelineView: NSView {
624819 let tlSec = secondsFor(x + thumbW / 2)
625820 let srcSec = clip.sourceTime(at: tlSec)
626821 if let img = MediaPipeline.shared.filmstripImage(for: media, at: max(0, srcSec)) {
822 if DrawProf.on { DrawProf.thumbHits += 1 }
627823 img.draw(in: NSRect(x: x, y: rect.minY + 14, width: thumbW, height: thumbH),
628824 from: .zero, operation: .sourceOver, fraction: 0.9)
629825 }
......@@ -996,6 +1192,17 @@ final class TimelineView: NSView {
9961192 var collapseTo: UUID? // click-on-selected: reduce to this clip if no drag
9971193 }
9981194 private var drag = DragState()
1195
1196 // Middle-button drag grabs the timeline and hand-pans it in both axes
1197 // (time horizontally, tracks vertically), independent of any clip edit.
1198 private struct PanDrag {
1199 var active = false
1200 var start = NSPoint.zero
1201 var origOrigin = 0.0
1202 var origScrollY: CGFloat = 0
1203 }
1204 private var panDrag = PanDrag()
1205
9991206 private var activeSnapTarget: Double?
10001207 private var dragHintRow: Int?
10011208 private var lastMousePoint = NSPoint.zero
......@@ -1265,6 +1472,12 @@ final class TimelineView: NSView {
12651472 session.trackHeights[ref] = min(4, max(0.35, factor))
12661473 }
12671474 }
1475 // Dragging the floating scrollbars is a scroll/zoom — simplify while it
1476 // moves, like the wheel and pinch paths.
1477 if [.hBarPan, .hBarLeft, .hBarRight,
1478 .vBarPan, .vBarTop, .vBarBottom].contains(drag.mode) {
1479 noteScrolling()
1480 }
12681481 drag.moved = true
12691482 autoscroll(with: event)
12701483 needsDisplay = true
......@@ -1287,6 +1500,33 @@ final class TimelineView: NSView {
12871500 needsDisplay = true
12881501 }
12891502
1503 // MARK: - Middle-mouse pan
1504
1505 override func otherMouseDown(with event: NSEvent) {
1506 guard event.buttonNumber == 2 else { return }
1507 window?.makeFirstResponder(self)
1508 let p = convert(event.locationInWindow, from: nil)
1509 panDrag = PanDrag(active: true, start: p,
1510 origOrigin: originSecond, origScrollY: scrollY)
1511 }
1512
1513 override func otherMouseDragged(with event: NSEvent) {
1514 guard panDrag.active else { return }
1515 let p = convert(event.locationInWindow, from: nil)
1516 originSecond = clampOrigin(panDrag.origOrigin
1517 - Double(p.x - panDrag.start.x) / pxPerSecond)
1518 if maxScrollY > 0 {
1519 scrollY = min(max(0, panDrag.origScrollY - (p.y - panDrag.start.y)), maxScrollY)
1520 }
1521 noteScrolling()
1522 needsDisplay = true
1523 }
1524
1525 override func otherMouseUp(with event: NSEvent) {
1526 guard event.buttonNumber == 2 else { return }
1527 panDrag.active = false
1528 }
1529
12901530 private func dragMove(p: NSPoint, dSec: Double) {
12911531 guard let orig = drag.origClip else { return }
12921532 // Vertical retracking only for a lone unlinked clip.
......@@ -1693,6 +1933,19 @@ final class TimelineView: NSView {
16931933 if event.modifierFlags.contains(.option) { unlinkSelection() }
16941934 else { linkSelection() }
16951935 case "b": splitStoryboardAtPlayhead(newShot: event.modifierFlags.contains(.shift))
1936 case "x": // X delete / ⇧X ripple (same as ⌫)
1937 if store.selection.isEmpty {
1938 closeBlankSpace(at: quantize(pc.playhead))
1939 } else if event.modifierFlags.contains(.shift) {
1940 rippleDelete()
1941 } else {
1942 deleteSelection()
1943 }
1944 case "\\": rippleDelete() // documented default ripple-delete key (also ⌥⌫)
1945 case "a" where !event.modifierFlags.contains(.command): // ripple trim left (also ⌥←)
1946 rippleTrimToPlayhead(deleteLeft: true)
1947 case "d" where !event.modifierFlags.contains(.command): // ripple trim right (also ⌥→)
1948 rippleTrimToPlayhead(deleteLeft: false)
16961949 case "[":
16971950 if event.modifierFlags.contains(.option) { goToPrevMarker() }
16981951 else if event.modifierFlags.contains(.command) { goToPrevStoryboardPanel() }
......@@ -2022,9 +2275,19 @@ final class TimelineView: NSView {
20222275 }
20232276 model.pruneTrailingEmptyTracks()
20242277 }
2025 // Park the playhead where the gap closed, so it follows the content
2026 // that just slid left instead of hanging over the removed span.
2027 if let start { playback.seek(to: start) }
2278 // Keep the cursor on the same logical content rather than jumping it to
2279 // the cut. If it sat after the removed span, slide it left by the gap so
2280 // the exact frame under it is unchanged — a playing stream keeps rolling
2281 // with no reseek. Inside the span, land on the close point; before it,
2282 // leave it be.
2283 if let start, let end, end > start {
2284 let ph = playback.playhead
2285 if ph >= end - 1e-9 {
2286 playback.shift(by: -(end - start))
2287 } else if ph > start {
2288 playback.seek(to: start)
2289 }
2290 }
20282291 }
20292292
20302293 /// ⌥← / ⌥→ — split the clip(s) under the playhead and ripple-delete the
......@@ -2033,40 +2296,71 @@ final class TimelineView: NSView {
20332296 /// under the playhead (so multicam stays in sync).
20342297 func rippleTrimToPlayhead(deleteLeft: Bool) {
20352298 let t = quantize(playback.playhead)
2036 let intersects: (Clip) -> Bool = {
2037 $0.kind != .storyboard && $0.start + 1e-6 < t && $0.end - 1e-6 > t
2299 let eps = 1e-6
2300 let straddles: (Clip) -> Bool = {
2301 $0.kind != .storyboard && $0.start + eps < t && $0.end - eps > t
20382302 }
20392303 let sel = project.expandLinks(store.selection)
20402304 let hadSelection = !store.selection.isEmpty
2041 var targets = project.clips.filter { sel.contains($0.id) && intersects($0) }
2042 if targets.isEmpty { targets = project.clips.filter(intersects) }
2043 guard !targets.isEmpty else { return }
2044 let gapStart = deleteLeft ? targets.map(\.start).min()! : t
2045 let gapEnd = deleteLeft ? t : targets.map(\.end).max()!
2046 let gap = gapEnd - gapStart
2047 guard gap > 1e-6 else { return }
2048 let ids = Set(targets.map(\.id))
2049 store.mutate { model in
2050 for tgt in model.clips where ids.contains(tgt.id) {
2051 guard let i = model.clips.firstIndex(where: { $0.id == tgt.id }) else { continue }
2052 if deleteLeft {
2053 model.clips[i].srcIn = tgt.srcIn + (t - tgt.start) * tgt.speed
2054 model.clips[i].start = t
2055 model.clips[i].duration = tgt.end - t
2056 } else {
2057 model.clips[i].duration = t - tgt.start
2305 // Prefer the selected/linked clips the playhead crosses; fall back to
2306 // every angle under it (so multicam stays in sync).
2307 func pick(_ p: @escaping (Clip) -> Bool) -> [Clip] {
2308 let inSel = project.clips.filter { sel.contains($0.id) && p($0) }
2309 return inSel.isEmpty ? project.clips.filter(p) : inSel
2310 }
2311
2312 let crossing = pick(straddles)
2313 if !crossing.isEmpty {
2314 let gapStart = deleteLeft ? crossing.map(\.start).min()! : t
2315 let gapEnd = deleteLeft ? t : crossing.map(\.end).max()!
2316 let gap = gapEnd - gapStart
2317 guard gap > eps else { return }
2318 let ids = Set(crossing.map(\.id))
2319 store.mutate { model in
2320 for tgt in model.clips where ids.contains(tgt.id) {
2321 guard let i = model.clips.firstIndex(where: { $0.id == tgt.id }) else { continue }
2322 if deleteLeft {
2323 model.clips[i].srcIn = tgt.srcIn + (t - tgt.start) * tgt.speed
2324 model.clips[i].start = t
2325 model.clips[i].duration = tgt.end - t
2326 } else {
2327 model.clips[i].duration = t - tgt.start
2328 }
2329 }
2330 // Close the gap on EVERY track (the kept right pieces start at
2331 // gapEnd, so they ride left with everything else).
2332 for i in model.clips.indices where model.clips[i].start >= gapEnd - 1e-9 {
2333 model.clips[i].start = max(0, model.clips[i].start - gap)
20582334 }
2335 model.pruneTrailingEmptyTracks()
20592336 }
2060 // Close the gap on EVERY track (the kept right pieces start at
2061 // gapEnd, so they ride left with everything else).
2337 // The kept piece keeps its id, so a trim that started from a
2338 // selection leaves that resulting clip selected.
2339 if hadSelection { store.selection = ids }
2340 playback.seek(to: gapStart)
2341 return
2342 }
2343
2344 // Nothing straddles the playhead — it's sitting exactly on a cut (e.g.
2345 // right after S). There's nothing to split, so ripple-delete the whole
2346 // clip butting the playhead on the side being trimmed, closing the gap.
2347 let abuts: (Clip) -> Bool = deleteLeft
2348 ? { $0.kind != .storyboard && abs($0.end - t) < eps }
2349 : { $0.kind != .storyboard && abs($0.start - t) < eps }
2350 let adjacent = pick(abuts)
2351 guard !adjacent.isEmpty else { return }
2352 let gapStart = adjacent.map(\.start).min()!
2353 let gapEnd = adjacent.map(\.end).max()!
2354 let gap = gapEnd - gapStart
2355 guard gap > eps else { return }
2356 let ids = Set(adjacent.map(\.id))
2357 store.mutate { model in
2358 model.clips.removeAll { ids.contains($0.id) }
20622359 for i in model.clips.indices where model.clips[i].start >= gapEnd - 1e-9 {
20632360 model.clips[i].start = max(0, model.clips[i].start - gap)
20642361 }
20652362 model.pruneTrailingEmptyTracks()
20662363 }
2067 // The kept piece keeps its id, so a trim that started from a selection
2068 // leaves that resulting clip selected.
2069 if hadSelection { store.selection = ids }
20702364 playback.seek(to: gapStart)
20712365 }
20722366
......@@ -2104,7 +2398,9 @@ final class TimelineView: NSView {
21042398 override func cancelOperation(_ sender: Any?) {
21052399 if store.gestureBaseModel != nil { store.cancelGesture() }
21062400 store.selection = []
2107 playback.setRate(0)
2401 // Escape during playback rewinds to where playback started; otherwise
2402 // it's a plain stop.
2403 if !playback.stopAndRevert() { playback.setRate(0) }
21082404 needsDisplay = true
21092405 }
21102406
......@@ -2495,7 +2791,7 @@ final class TimelineView: NSView {
24952791 add("Copy", #selector(ctxCopy))
24962792 menu.addItem(.separator())
24972793 add("Delete", #selector(ctxDelete), key: "\u{8}")
2498 add("Ripple Delete", #selector(ctxRippleDelete), key: "\u{8}", mods: .option)
2794 add("Ripple Delete", #selector(ctxRippleDelete), key: "\\")
24992795 return menu
25002796 }
25012797
......@@ -2609,10 +2905,12 @@ final class TimelineView: NSView {
26092905 originSecond = clampOrigin(originSecond - Double(dx) / pxPerSecond)
26102906 }
26112907 }
2908 noteScrolling()
26122909 needsDisplay = true
26132910 }
26142911
26152912 override func magnify(with event: NSEvent) {
2913 noteScrolling()
26162914 zoom(by: 1 + event.magnification, anchorX: convert(event.locationInWindow, from: nil).x)
26172915 }
26182916
......@@ -2867,6 +3165,14 @@ final class TimelineView: NSView {
28673165 var testPxPerSecond: Double { pxPerSecond }
28683166 func testHThumb() -> NSRect { hThumbRect() }
28693167 func testVThumb() -> NSRect { vThumbRect() }
3168 func testSetOrigin(_ sec: Double) { originSecond = sec }
3169 func testSetPxPerSecond(_ p: Double) { pxPerSecond = p }
3170 func testSetScrolling(_ b: Bool) { isScrolling = b }
3171 /// Draw straight into the current graphics context (set by the harness),
3172 /// bypassing `cacheDisplay`'s per-call bitmap allocation so we time `draw`.
3173 func testRedraw() { draw(bounds) }
3174 var testTimelineDuration: Double { project.timelineDuration }
3175 var testVisibleClipCount: Int { rebuildSceneIfNeeded(); return visibleClipCount() }
28703176
28713177 // MARK: - Colors
28723178
sequencer/Sources/Sequencer/TransportBar.swift+100-8
......@@ -77,7 +77,9 @@ final class TransportBar: NSView {
7777 private let fpsButton = InstantButton(title: "", target: nil, action: nil)
7878 private let customFpsField = NSTextField()
7979 private weak var fpsMenu: NSMenu?
80 private let rateField = NSTextField(labelWithString: "⏸")
80 private let rateField = NSTextField(labelWithString: "1x")
81 private let customSpeedField = NSTextField()
82 private weak var speedMenu: NSMenu?
8183 private let status = NSTextField(labelWithString: "")
8284 private let jobs = NSTextField(labelWithString: "")
8385 private let netWarn = NSTextField(labelWithString: "")
......@@ -202,6 +204,14 @@ final class TransportBar: NSView {
202204 fpsButton.tipText = "Frame Rate"
203205 rateField.font = .monospacedDigitSystemFont(ofSize: 11, weight: .regular)
204206 rateField.textColor = Theme.subtleLabel
207 rateField.toolTip = "Playback speed — click or right-click to change"
208 // Both buttons open the same speed editor: right-click is what was asked
209 // for, left-click makes it discoverable (like the frame-rate readout).
210 let speedLeftClick = NSClickGestureRecognizer(target: self, action: #selector(speedClicked))
211 rateField.addGestureRecognizer(speedLeftClick)
212 let speedRightClick = NSClickGestureRecognizer(target: self, action: #selector(speedClicked))
213 speedRightClick.buttonMask = 0x2
214 rateField.addGestureRecognizer(speedRightClick)
205215 let centerStack = NSStackView(views: [timecode, fpsButton, rateField])
206216 centerStack.orientation = .horizontal
207217 centerStack.spacing = 8
......@@ -486,6 +496,77 @@ final class TransportBar: NSView {
486496 userInfo: ["text": "Project frame rate: \(text)"])
487497 }
488498
499 // MARK: - Playback speed dropdown
500
501 @objc private func speedClicked() {
502 let menu = NSMenu()
503 menu.delegate = self
504 speedMenu = menu
505 let speed = playback.playSpeed
506
507 // Editable entry first, auto-focused and pre-selected so you can just
508 // type a custom speed — mirrors the frame-rate dropdown.
509 customSpeedField.stringValue = Self.speedString(speed)
510 menu.addItem(makeCustomSpeedItem())
511 menu.addItem(.separator())
512
513 for (title, v) in AppDelegate.playbackSpeeds {
514 let mi = NSMenuItem(title: title, action: #selector(speedPicked(_:)),
515 keyEquivalent: "")
516 mi.target = self
517 mi.representedObject = v
518 mi.state = abs(speed - v) < 0.001 ? .on : .off
519 menu.addItem(mi)
520 }
521
522 menu.popUp(positioning: menu.items.first,
523 at: NSPoint(x: -12, y: rateField.bounds.maxY + 9), in: rateField)
524 }
525
526 /// A menu item hosting the editable speed field, laid out like the fps one.
527 private func makeCustomSpeedItem() -> NSMenuItem {
528 let item = NSMenuItem()
529 let field = customSpeedField
530 field.isEditable = true
531 field.isBordered = true
532 field.bezelStyle = .roundedBezel
533 field.font = .monospacedDigitSystemFont(ofSize: 13, weight: .regular)
534 field.alignment = .left
535 field.placeholderString = "Custom speed"
536 field.target = self
537 field.action = #selector(customSpeedEntered(_:))
538 field.delegate = self
539 field.translatesAutoresizingMaskIntoConstraints = false
540
541 let container = NSView(frame: NSRect(x: 0, y: 0, width: 210, height: 28))
542 container.addSubview(field)
543 NSLayoutConstraint.activate([
544 field.leadingAnchor.constraint(equalTo: container.leadingAnchor, constant: 11),
545 field.trailingAnchor.constraint(equalTo: container.trailingAnchor, constant: -11),
546 field.centerYAnchor.constraint(equalTo: container.centerYAnchor),
547 ])
548 item.view = container
549 return item
550 }
551
552 @objc private func speedPicked(_ sender: NSMenuItem) {
553 guard let v = sender.representedObject as? Double else { return }
554 playback.setPlaySpeed(v)
555 }
556
557 @objc private func customSpeedEntered(_ sender: NSTextField) {
558 let raw = sender.stringValue.trimmingCharacters(in: .whitespaces)
559 // Accept a bare number or a "1.5x"/"1.5×" string.
560 let scanned = raw.split(whereSeparator: { $0 == "x" || $0 == "×" || $0 == " " })
561 .first.map(String.init) ?? raw
562 guard let v = Double(scanned), v >= 0.1, v <= 64 else {
563 NSSound.beep()
564 return
565 }
566 speedMenu?.cancelTracking()
567 playback.setPlaySpeed(v)
568 }
569
489570 @objc private func heightChanged() {
490571 session.laneScale = CGFloat(heightSlider.doubleValue)
491572 }
......@@ -551,8 +632,17 @@ final class TransportBar: NSView {
551632 string: fpsText,
552633 attributes: [.font: NSFont.monospacedDigitSystemFont(ofSize: 10, weight: .regular),
553634 .foregroundColor: Theme.subtleLabel])
554 rateField.stringValue = pc.rate == 0 ? "⏸"
555 : String(format: "%@%.0fx", pc.rate < 0 ? "◀︎ " : "▶︎ ", abs(pc.rate))
635 // Always show a speed. Stopped → the set play speed with no arrow (that
636 // absence is the "paused" cue); playing → a direction arrow + the live
637 // rate. %g keeps fractional speeds like 1.5x / 1.25x readable.
638 rateField.stringValue = pc.rate == 0
639 ? Self.speedString(pc.playSpeed)
640 : (pc.rate < 0 ? "◀︎ " : "▶︎ ") + Self.speedString(abs(pc.rate))
641 }
642
643 /// Format a speed magnitude as "1x" / "1.5x" (whole numbers drop the decimal).
644 private static func speedString(_ v: Double) -> String {
645 v == v.rounded() ? String(format: "%.0fx", v) : String(format: "%gx", v)
556646 }
557647
558648 @objc private func updateJobs() {
......@@ -617,14 +707,16 @@ extension TransportBar: NSTextFieldDelegate {
617707
618708extension TransportBar: NSMenuDelegate {
619709 func menuWillOpen(_ menu: NSMenu) {
620 guard menu === fpsMenu else { return }
710 let field: NSTextField? = menu === fpsMenu ? customFpsField
711 : menu === speedMenu ? customSpeedField : nil
712 guard let field else { return }
621713 // The menu runs its own modal tracking loop, so focus has to be handed
622714 // to the field in that run-loop mode — a plain async dispatch would sit
623715 // idle until the menu closed.
624 RunLoop.current.perform(inModes: [.eventTracking]) { [weak self] in
625 guard let self, let window = self.customFpsField.window else { return }
626 window.makeFirstResponder(self.customFpsField)
627 self.customFpsField.currentEditor()?.selectAll(nil)
716 RunLoop.current.perform(inModes: [.eventTracking]) {
717 guard let window = field.window else { return }
718 window.makeFirstResponder(field)
719 field.currentEditor()?.selectAll(nil)
628720 }
629721 }
630722}
sequencer/Sources/Sequencer/UITest.swift+19-2
......@@ -531,15 +531,32 @@ func runUITest() {
531531 "linked group moves vertically as one")
532532 store.undo()
533533
534 // 31. Ripple delete closes the gap on every track.
534 // 31. Ripple delete closes the gap on every track. The playhead slides with
535 // the content it sat on: it was at 80 (after the removed [10,30) span), so
536 // removing that 20s gap carries it to 60 — same frame, not parked at the cut.
535537 store.selection = [la.id] // linked pair [10,30) — ripple shifts solo 40→20
536538 DocumentContext.headless.playback.seek(to: 80)
537539 timeline.rippleDelete()
538540 check(store.project.clips.count == 1
539541 && abs(store.project.clip(solo.id)!.start - 20) < 1e-9,
540542 "ripple delete closes the gap across tracks (got \(store.project.clip(solo.id)?.start ?? -1))")
543 check(abs(DocumentContext.headless.playback.playhead - 60) < 1e-6,
544 "ripple delete slides the playhead with the content (got \(DocumentContext.headless.playback.playhead))")
545 store.undo()
546
547 // 31a. A playhead BEFORE the removed span is left untouched (content there
548 // didn't move); one INSIDE the span lands on the close point.
549 store.selection = [la.id]
550 DocumentContext.headless.playback.seek(to: 5)
551 timeline.rippleDelete()
552 check(abs(DocumentContext.headless.playback.playhead - 5) < 1e-6,
553 "ripple delete leaves an earlier playhead put (got \(DocumentContext.headless.playback.playhead))")
554 store.undo()
555 store.selection = [la.id]
556 DocumentContext.headless.playback.seek(to: 25)
557 timeline.rippleDelete()
541558 check(abs(DocumentContext.headless.playback.playhead - 10) < 1e-6,
542 "ripple delete parks the playhead at the closed gap (got \(DocumentContext.headless.playback.playhead))")
559 "ripple delete inside the span lands on the close point (got \(DocumentContext.headless.playback.playhead))")
543560 store.undo()
544561
545562 // 31b. Trailing empty tracks collapse to the last used lane; interior and
sequencer/Sources/Sequencer/ViewerGridView.swift+107-36
......@@ -15,6 +15,11 @@ final class ViewerGridView: NSView {
1515 oldValue.notify.removeObserver(self, name: .playheadChanged, object: nil)
1616 ctx.notify.addObserver(self, selector: #selector(sync),
1717 name: .playheadChanged, object: nil)
18 // Forward the new context into cells already built against the old
19 // one — otherwise they keep reading the previous (or headless) store
20 // and render nothing but the black cell background.
21 for c in cells.values { c.ctx = ctx }
22 fusionCell?.ctx = ctx
1823 }
1924 }
2025 private var store: Store { ctx.store }
......@@ -190,6 +195,7 @@ final class ViewerGridView: NSView {
190195 var newPanes: [NSView] = []
191196 for ref in tracks where cells[ref] == nil {
192197 let cell = ViewerCell(ref: ref)
198 cell.ctx = ctx
193199 cell.alphaValue = 0
194200 cells[ref] = cell
195201 // Below the settled grid so it grows in UNDER its neighbours.
......@@ -198,6 +204,7 @@ final class ViewerGridView: NSView {
198204 }
199205 if fusion, fusionCell == nil {
200206 let cell = FusionViewerCell()
207 cell.ctx = ctx
201208 cell.alphaValue = 0
202209 fusionCell = cell
203210 addSubview(cell, positioned: .below, relativeTo: nil)
......@@ -325,6 +332,18 @@ final class ViewerGridView: NSView {
325332 frames = justifiedFrames(aspects: aspects, in: bounds)
326333 }
327334
335 // Tell optimisation how sharp the proxies need to be: the largest video
336 // cell on screen, in device pixels. A big preview asks for sharper
337 // background proxies; a small one avoids over-rendering.
338 let scale = window?.backingScaleFactor ?? NSScreen.main?.backingScaleFactor ?? 2
339 let maxVideoWidth = zip(panes, frames)
340 .filter { $0.0 is ViewerCell }
341 .map { $0.1.width }
342 .max() ?? 0
343 if maxVideoWidth > 0 {
344 ctx.chunks.setPreviewTargetWidth(Int((maxVideoWidth * scale).rounded()))
345 }
346
328347 NSAnimationContext.runAnimationGroup({ ctx in
329348 ctx.duration = animated ? 0.16 : 0
330349 ctx.allowsImplicitAnimation = animated
......@@ -442,8 +461,9 @@ final class ViewerGridView: NSView {
442461 /// or top+bottom — then run the normal justified layout in whatever space is
443462 /// left over. The strip's axis is dictated by that maximization, not chosen:
444463 /// a full-width priority leaves a band underneath, a full-height one leaves a
445 /// band to the side. Because the two regions tile `rect` exactly and each
446 /// centres its own contents, the composite reads as centred.
464 /// band to the side. The priority pane and the secondaries' strip are laid
465 /// flush against each other and the combined block is centred in `rect`, so
466 /// there's no gap between the two panels and the whole reads as centred.
447467 ///
448468 /// The lone knob is a 100pt floor on the strip (clamped on tiny viewers): when
449469 /// the priority's aspect nearly matches the container's, the natural leftover
......@@ -462,19 +482,26 @@ final class ViewerGridView: NSView {
462482 let freeBelow = rect.height - full.height // priority is full-width
463483 let freeSide = rect.width - full.width // priority is full-height
464484
485 // The clamp on the strip's thickness (and any width/height limit on the
486 // priority pane) can leave the pane smaller than its region, so it floats
487 // with dead space toward the strip. Size the pane first, then lay pane +
488 // strip flush against each other and centre that combined block in `rect`
489 // along the split axis — no gap between the two panels, group centred.
465490 let priRegion: NSRect, strip: NSRect
466491 if freeBelow >= freeSide {
467492 let t = min(max(freeBelow, 100), rect.height * 0.5)
468 priRegion = NSRect(x: rect.minX, y: rect.minY,
469 width: rect.width, height: rect.height - t)
470 strip = NSRect(x: rect.minX, y: rect.maxY - t,
471 width: rect.width, height: t)
493 let pane = aspectFit(aspects[p], in: NSRect(x: rect.minX, y: rect.minY,
494 width: rect.width, height: rect.height - t))
495 let y0 = rect.minY + (rect.height - (pane.height + t)) / 2
496 priRegion = NSRect(x: rect.minX, y: y0, width: rect.width, height: pane.height)
497 strip = NSRect(x: rect.minX, y: y0 + pane.height, width: rect.width, height: t)
472498 } else {
473499 let t = min(max(freeSide, 100), rect.width * 0.5)
474 priRegion = NSRect(x: rect.minX, y: rect.minY,
475 width: rect.width - t, height: rect.height)
476 strip = NSRect(x: rect.maxX - t, y: rect.minY,
477 width: t, height: rect.height)
500 let pane = aspectFit(aspects[p], in: NSRect(x: rect.minX, y: rect.minY,
501 width: rect.width - t, height: rect.height))
502 let x0 = rect.minX + (rect.width - (pane.width + t)) / 2
503 priRegion = NSRect(x: x0, y: rect.minY, width: pane.width, height: rect.height)
504 strip = NSRect(x: x0 + pane.width, y: rect.minY, width: t, height: rect.height)
478505 }
479506 frames[p] = aspectFit(aspects[p], in: priRegion)
480507 let otherFrames = justifiedFrames(aspects: others.map { aspects[$0] }, in: strip)
......@@ -799,9 +826,15 @@ class ViewerCellBase: NSView {
799826
800827final class ViewerCell: ViewerCellBase {
801828 let ref: TrackRef
829 // Two layers for the double-buffered track player: `playerLayer` shows sub-
830 // player A, `playerLayerB` shows sub-player B. `update()` reveals whichever
831 // is the front buffer and hides the other — so a gapless cut is just a layer
832 // visibility flip (both already hold the right frame), never a rebind flash.
802833 private let playerLayer = AVPlayerLayer()
834 private let playerLayerB = AVPlayerLayer()
803835 private let imageLayer = CALayer()
804836 private var readyObs: NSKeyValueObservation?
837 private var readyObsB: NSKeyValueObservation?
805838
806839 // "Loading Media…" overlay — a clear, frame-scaled not-rendered state
807840 // shown when there's neither live video NOR a filmstrip stand-in to show
......@@ -823,8 +856,11 @@ final class ViewerCell: ViewerCellBase {
823856 // fills it edge to edge WITHOUT the inward crop fill would risk.
824857 imageLayer.contentsGravity = .resizeAspect
825858 playerLayer.videoGravity = .resizeAspect
859 playerLayerB.videoGravity = .resizeAspect
860 playerLayerB.isHidden = true
826861 layer?.insertSublayer(imageLayer, at: 0)
827862 layer?.insertSublayer(playerLayer, above: imageLayer)
863 layer?.insertSublayer(playerLayerB, above: playerLayer)
828864
829865 // Overlay sits above the video/image layers (but below the chrome
830866 // subviews). Hidden until update() decides there's nothing to show.
......@@ -846,6 +882,9 @@ final class ViewerCell: ViewerCellBase {
846882 readyObs = playerLayer.observe(\.isReadyForDisplay) { [weak self] _, _ in
847883 DispatchQueue.main.async { self?.update() }
848884 }
885 readyObsB = playerLayerB.observe(\.isReadyForDisplay) { [weak self] _, _ in
886 DispatchQueue.main.async { self?.update() }
887 }
849888 focusButton.onClick = { [weak self] in guard let self else { return }
850889 session.toggleFocus(self.ref) }
851890 hideButton.onClick = { [weak self] in guard let self else { return }
......@@ -892,6 +931,7 @@ final class ViewerCell: ViewerCellBase {
892931
893932 override func layoutContentLayers(in target: CGRect) {
894933 playerLayer.frame = target
934 playerLayerB.frame = target
895935 imageLayer.frame = target
896936 layoutOverlay(in: target)
897937 }
......@@ -921,6 +961,27 @@ final class ViewerCell: ViewerCellBase {
921961 width: bounds.width - 8, height: textH)
922962 }
923963
964 /// Pending debounced spinner. The empty state (no live frame AND no
965 /// filmstrip stand-in) is often just a brief transient — an item swap or a
966 /// seek that lands within a few frames. Showing the spinner instantly makes
967 /// those flash; instead we wait out a short grace period and only reveal it
968 /// if the cell is still empty. Any resolved frame cancels it.
969 private var pendingSpinner: DispatchWorkItem?
970 private func scheduleLoadingOverlay() {
971 guard !overlayVisible, pendingSpinner == nil else { return }
972 let work = DispatchWorkItem { [weak self] in
973 self?.pendingSpinner = nil
974 self?.showLoadingOverlay(true)
975 }
976 pendingSpinner = work
977 DispatchQueue.main.asyncAfter(deadline: .now() + 0.25, execute: work)
978 }
979 private func cancelLoadingOverlay() {
980 pendingSpinner?.cancel()
981 pendingSpinner = nil
982 showLoadingOverlay(false)
983 }
984
924985 private func showLoadingOverlay(_ show: Bool) {
925986 if show { layoutOverlay(in: bounds) }
926987 guard overlayVisible != show else { return }
......@@ -1166,8 +1227,16 @@ final class ViewerCell: ViewerCellBase {
11661227 defer { CATransaction.commit() }
11671228 let project = store.project
11681229 let playhead = playback.playhead
1169 let tp = players.player(for: ref)
1170 if playerLayer.player !== tp.player { playerLayer.player = tp.player }
1230 // Double-buffered: bind each layer to its sub-player once, then show only
1231 // the front buffer's layer. The back buffer (a prerolled upcoming clip)
1232 // stays hidden until a cut flips the roles.
1233 let vt = players.videoTrack(for: ref)
1234 if playerLayer.player !== vt.a.player { playerLayer.player = vt.a.player }
1235 if playerLayerB.player !== vt.b.player { playerLayerB.player = vt.b.player }
1236 let frontLayer = vt.frontIsA ? playerLayer : playerLayerB
1237 let backLayer = vt.frontIsA ? playerLayerB : playerLayer
1238 let front = vt.front
1239 backLayer.isHidden = true
11711240 focusButton.active = session.focusedTracks.contains(ref)
11721241 hideButton.active = session.hiddenTracks.contains(ref)
11731242
......@@ -1176,12 +1245,12 @@ final class ViewerCell: ViewerCellBase {
11761245 if let panel = project.clipAt(track: ref, time: playhead, kind: .storyboard),
11771246 let board = panel.board {
11781247 currentClipId = panel.id
1179 playerLayer.isHidden = true
1248 frontLayer.isHidden = true
11801249 imageLayer.isHidden = false
11811250 imageLayer.contents = boards.composite(for: board)
11821251 setTopLeft(project.panelNames()[panel.id] ?? "", hoverOnly: false)
11831252 setStatus("")
1184 showLoadingOverlay(false)
1253 cancelLoadingOverlay()
11851254 return
11861255 }
11871256
......@@ -1189,12 +1258,12 @@ final class ViewerCell: ViewerCellBase {
11891258 guard let clip = project.clipAt(track: ref, time: playhead, kind: .video),
11901259 let media = project.media(clip.mediaId) else {
11911260 currentClipId = nil
1192 playerLayer.isHidden = true
1261 frontLayer.isHidden = true
11931262 imageLayer.isHidden = true
11941263 imageLayer.contents = nil
11951264 setTopLeft("", hoverOnly: true)
11961265 setStatus("")
1197 showLoadingOverlay(false)
1266 cancelLoadingOverlay()
11981267 return
11991268 }
12001269 currentClipId = clip.id
......@@ -1208,32 +1277,34 @@ final class ViewerCell: ViewerCellBase {
12081277 // parked near the expected source time; otherwise the filmstrip (a
12091278 // real frame at this moment) stands in — so the transition is
12101279 // filmstrip → video, never black.
1211 let cur = tp.player.currentTime().seconds
1280 let cur = front.player.currentTime().seconds
12121281 let onTime = cur.isFinite && abs(cur - src) < 0.5
1213 let itemOK = tp.player.currentItem != nil && !tp.itemFailed
1214 && tp.player.currentItem?.status != .failed
1282 let itemOK = front.player.currentItem != nil && !front.itemFailed
1283 && front.player.currentItem?.status != .failed
12151284 && (covered || chunks.originalPlayable(media: media))
1216 && playerLayer.isReadyForDisplay
1285 && frontLayer.isReadyForDisplay
12171286 && onTime
1218 playerLayer.isHidden = !itemOK
1219 imageLayer.isHidden = itemOK
1220
12211287 var status = covered ? "" : "processing…"
12221288 if itemOK {
1223 showLoadingOverlay(false)
1224 } else {
1225 let strip = MediaPipeline.shared.filmstripImage(for: media, at: src)
1289 frontLayer.isHidden = false
1290 imageLayer.isHidden = true
1291 cancelLoadingOverlay()
1292 } else if let strip = MediaPipeline.shared.filmstripImage(for: media, at: src) {
1293 // A filmstrip is a real frame for this moment: stand in with it so
1294 // the transition is filmstrip → video, never black.
1295 frontLayer.isHidden = true
1296 imageLayer.isHidden = false
12261297 imageLayer.contents = strip
1227 // No live video AND no thumbnail stand-in: make "not rendered"
1228 // unmistakable with the framed spinner + "Loading Media…" instead
1229 // of a near-black cell. A filmstrip, when present, is a real frame
1230 // for this moment, so it still stands in.
1231 if strip == nil {
1232 showLoadingOverlay(true)
1233 status = ""
1234 } else {
1235 showLoadingOverlay(false)
1236 }
1298 cancelLoadingOverlay()
1299 } else {
1300 // No live video AND no stand-in. This is usually just a transient
1301 // (an item swap or a seek that lands within a few frames), so do
1302 // NOT blank the cell or flash the spinner immediately — hold what's
1303 // on screen and only escalate to the framed "Loading Media…"
1304 // overlay if the empty state actually persists (see
1305 // scheduleLoadingOverlay). That kills the paused spinner flashes.
1306 scheduleLoadingOverlay()
1307 status = ""
12371308 }
12381309 setStatus(status)
12391310 }
sequencer/Sources/Sequencer/main.swift+9
......@@ -11,8 +11,17 @@ if CommandLine.arguments.contains("--uitest") {
1111 MainActor.assumeIsolated { runUITest() }
1212}
1313
14if CommandLine.arguments.count >= 3, CommandLine.arguments[1] == "--perftest" {
15 _ = NSApplication.shared
16 MainActor.assumeIsolated { runPerfTest(path: CommandLine.arguments[2]) }
17}
18
1419let app = SeqApplication.shared
1520let delegate = AppDelegate()
1621app.delegate = delegate
22// Instantiate our controller before anything opens a document: the first
23// NSDocumentController created becomes the shared instance. Retained here so it
24// stays the shared controller for the app's lifetime.
25let documentController = ProjectDocumentController()
1726app.setActivationPolicy(.regular)
1827app.run()
sequencer/build.sh+58-1
......@@ -6,6 +6,61 @@ CONFIG=release
66APP=Sequencer.app
77BIN=Sequencer
88
9# Signing identity. Override with: SIGN_ID="Some Identity" ./build.sh
10SIGN_ID="${SIGN_ID:-Sequencer Dev}"
11LOGIN_KEYCHAIN="$HOME/Library/Keychains/login.keychain-db"
12
13# Create a self-signed code-signing identity named "$SIGN_ID" in the login
14# keychain, so codesign works on a machine that has no dev certificate.
15create_cert() {
16 name="$SIGN_ID"
17 echo "Creating self-signed code-signing identity \"$name\"…"
18 tmp=$(mktemp -d)
19 openssl req -x509 -newkey rsa:2048 -sha256 -days 3650 -nodes \
20 -keyout "$tmp/key.pem" -out "$tmp/cert.pem" \
21 -subj "/CN=$name" \
22 -addext "basicConstraints=critical,CA:false" \
23 -addext "keyUsage=critical,digitalSignature" \
24 -addext "extendedKeyUsage=critical,codeSigning" >/dev/null 2>&1
25 openssl pkcs12 -export -legacy -out "$tmp/id.p12" \
26 -inkey "$tmp/key.pem" -in "$tmp/cert.pem" -passout pass: >/dev/null 2>&1 \
27 || openssl pkcs12 -export -out "$tmp/id.p12" \
28 -inkey "$tmp/key.pem" -in "$tmp/cert.pem" -passout pass: >/dev/null 2>&1
29 security import "$tmp/id.p12" -k "$LOGIN_KEYCHAIN" -P "" \
30 -T /usr/bin/codesign -T /usr/bin/security
31 # Trust it for signing, and let codesign use the key without a GUI prompt.
32 # Both are best-effort (may need the keychain password); a one-time
33 # "codesign wants to sign" prompt on first build is harmless — click Always Allow.
34 security add-trusted-cert -r trustRoot -p codeSign -k "$LOGIN_KEYCHAIN" \
35 "$tmp/cert.pem" >/dev/null 2>&1 || true
36 security set-key-partition-list -S apple-tool:,apple:,codesign: -s \
37 -k "" "$LOGIN_KEYCHAIN" >/dev/null 2>&1 || true
38 rm -rf "$tmp"
39}
40
41# Choose a signing identity: honour $SIGN_ID if present, else the first available
42# codesigning identity, else fall back to ad-hoc ("-", no certificate needed).
43pick_identity() {
44 if security find-identity -v -p codesigning 2>/dev/null | grep -qF "\"$SIGN_ID\""; then
45 printf '%s' "$SIGN_ID"; return
46 fi
47 first=$(security find-identity -v -p codesigning 2>/dev/null \
48 | sed -n 's/^[[:space:]]*[0-9][0-9]*)[[:space:]]*[0-9A-Fa-f]*[[:space:]]*"\(.*\)"$/\1/p' \
49 | head -n1)
50 if [ -n "$first" ]; then
51 echo "Identity \"$SIGN_ID\" not found; using \"$first\"." >&2
52 printf '%s' "$first"; return
53 fi
54 echo "No code-signing identity found — using ad-hoc signing (-)." >&2
55 echo " Run './build.sh --create-cert' to make a reusable self-signed \"$SIGN_ID\"." >&2
56 printf '%s' "-"
57}
58
59if [ "$1" = "--create-cert" ]; then
60 create_cert
61 shift
62fi
63
964swift build -c "$CONFIG"
1065
1166# (Re)build the .app bundle from scratch so stale files never linger.
......@@ -89,6 +144,8 @@ PLIST
89144# Mark the bundle as an app package for Finder/Launch Services.
90145printf 'APPL????' > "$APP/Contents/PkgInfo"
91146
92codesign --force --deep --sign "Sequencer Dev" "$APP"
147IDENTITY=$(pick_identity)
148echo "Signing with: $IDENTITY"
149codesign --force --deep --sign "$IDENTITY" "$APP"
93150
94151echo "Built $APP"