From 46d170c0714cbd4110e6172f31cc9105862d0c41 Mon Sep 17 00:00:00 2001 From: Kyle Howells Date: Thu, 5 Mar 2026 13:04:49 +0000 Subject: [PATCH 01/33] Add DeepFilterNet Swift model + CLI integration --- README.md | 3 +- Sources/MLXAudioCore/ModelUtils.swift | 5 +- .../DeepFilterNet/DeepFilterNetConfig.swift | 103 +++ .../DeepFilterNet/DeepFilterNetModel.swift | 791 ++++++++++++++++++ .../Models/DeepFilterNet/README.md | 19 + Sources/MLXAudioSTS/STSModel.swift | 54 ++ Sources/Tools/mlx-audio-swift-sts/App.swift | 51 ++ Sources/Tools/mlx-audio-swift-sts/README.md | 22 + Tests/MLXAudioSTSTests.swift | 86 ++ 9 files changed, 1132 insertions(+), 2 deletions(-) create mode 100644 Sources/MLXAudioSTS/Models/DeepFilterNet/DeepFilterNetConfig.swift create mode 100644 Sources/MLXAudioSTS/Models/DeepFilterNet/DeepFilterNetModel.swift create mode 100644 Sources/MLXAudioSTS/Models/DeepFilterNet/README.md diff --git a/README.md b/README.md index de1cc1a0..4ba32f70 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,7 @@ MLXAudio follows a modular design allowing you to import only what you need: - **MLXAudioTTS**: Text-to-Speech models (Qwen3-TTS, Fish Audio S2 Pro, Soprano, VyvoTTS, Orpheus, Marvis TTS, Pocket TTS) - **MLXAudioSTT**: Speech-to-Text models (Qwen3-ASR, Voxtral Realtime, Parakeet, GLMASR) - **MLXAudioVAD**: Voice Activity Detection & Speaker Diarization (Sortformer, SmartTurn) -- **MLXAudioSTS**: Speech-to-Speech models (LFM2.5-Audio, SAM-Audio, MossFormer2-SE) +- **MLXAudioSTS**: Speech-to-Speech models (LFM2.5-Audio, SAM-Audio, MossFormer2-SE, DeepFilterNet) - **MLXAudioUI**: SwiftUI components for audio interfaces ## Installation @@ -143,6 +143,7 @@ for try await event in model.generateStream(text: text, parameters: parameters) | LFM2.5-Audio | [LFM Audio README](Sources/MLXAudioSTS/Models/LFMAudio/README.md) | [mlx-community/LFM2.5-Audio-1.5B-6bit](https://huggingface.co/mlx-community/LFM2.5-Audio-1.5B-6bit) | | SAM-Audio | [SAM Audio README](Sources/MLXAudioSTS/Models/SAMAudio/README.md) | [mlx-community/sam-audio-large-fp16](https://huggingface.co/mlx-community/sam-audio-large-fp16) | | MossFormer2-SE | — | [starkdmi/MossFormer2-SE-fp16](https://huggingface.co/starkdmi/MossFormer2-SE-fp16) | +| DeepFilterNet | [DeepFilterNet README](Sources/MLXAudioSTS/Models/DeepFilterNet/README.md) | Local model path or compatible Hugging Face repo | ### VAD / Speaker Diarization Models diff --git a/Sources/MLXAudioCore/ModelUtils.swift b/Sources/MLXAudioCore/ModelUtils.swift index 4b12ba2e..78708ecc 100644 --- a/Sources/MLXAudioCore/ModelUtils.swift +++ b/Sources/MLXAudioCore/ModelUtils.swift @@ -16,7 +16,10 @@ public enum ModelUtils { ) let configJSON = try JSONSerialization.jsonObject(with: Data(contentsOf: modelURL.appendingPathComponent("config.json"))) if let config = configJSON as? [String: Any] { - return (config["model_type"] as? String) ?? (config["architecture"] as? String) ?? modelNameComponents?.first?.lowercased() + return (config["model_type"] as? String) + ?? (config["architecture"] as? String) + ?? (config["model_version"] as? String) + ?? modelNameComponents?.first?.lowercased() } return nil } diff --git a/Sources/MLXAudioSTS/Models/DeepFilterNet/DeepFilterNetConfig.swift b/Sources/MLXAudioSTS/Models/DeepFilterNet/DeepFilterNetConfig.swift new file mode 100644 index 00000000..3079c529 --- /dev/null +++ b/Sources/MLXAudioSTS/Models/DeepFilterNet/DeepFilterNetConfig.swift @@ -0,0 +1,103 @@ +import Foundation + +public struct DeepFilterNetConfig: Codable, Sendable { + public var sampleRate: Int = 48_000 + public var fftSize: Int = 960 + public var hopSize: Int = 480 + + public var nbErb: Int = 32 + public var nbDf: Int = 96 + public var dfOrder: Int = 5 + public var dfLookahead: Int = 2 + public var convLookahead: Int = 2 + + public var convCh: Int = 64 + public var embHiddenDim: Int = 256 + public var embNumLayers: Int = 3 + public var dfHiddenDim: Int = 256 + public var dfNumLayers: Int = 2 + public var linearGroups: Int = 16 + public var encLinearGroups: Int = 32 + public var encConcat: Bool = false + public var dfGruSkip: String = "groupedlinear" + + public var convKernel: [Int] = [1, 3] + public var convtKernel: [Int] = [1, 3] + public var convKernelInp: [Int] = [3, 3] + public var dfPathwayKernelSizeT: Int = 5 + + public var lsnrMax: Int = 35 + public var lsnrMin: Int = -15 + public var modelVersion: String = "DeepFilterNet3" + + public var freqBins: Int { fftSize / 2 + 1 } + + public var modelType: String { + switch modelVersion.lowercased() { + case "deepfilternet": + return "deepfilternet" + case "deepfilternet2": + return "deepfilternet2" + default: + return "deepfilternet3" + } + } + + enum CodingKeys: String, CodingKey { + case sampleRate + case fftSize + case hopSize + case nbErb + case nbDf + case dfOrder + case dfLookahead + case convLookahead + case convCh + case embHiddenDim + case embNumLayers + case dfHiddenDim + case dfNumLayers + case linearGroups + case encLinearGroups + case encConcat + case dfGruSkip + case convKernel + case convtKernel + case convKernelInp + case dfPathwayKernelSizeT + case lsnrMax + case lsnrMin + case modelVersion + } + + public init() {} + + public init(from decoder: Decoder) throws { + let c = try decoder.container(keyedBy: CodingKeys.self) + sampleRate = try c.decodeIfPresent(Int.self, forKey: .sampleRate) ?? sampleRate + fftSize = try c.decodeIfPresent(Int.self, forKey: .fftSize) ?? fftSize + hopSize = try c.decodeIfPresent(Int.self, forKey: .hopSize) ?? hopSize + nbErb = try c.decodeIfPresent(Int.self, forKey: .nbErb) ?? nbErb + nbDf = try c.decodeIfPresent(Int.self, forKey: .nbDf) ?? nbDf + dfOrder = try c.decodeIfPresent(Int.self, forKey: .dfOrder) ?? dfOrder + dfLookahead = try c.decodeIfPresent(Int.self, forKey: .dfLookahead) ?? dfLookahead + convLookahead = try c.decodeIfPresent(Int.self, forKey: .convLookahead) ?? convLookahead + convCh = try c.decodeIfPresent(Int.self, forKey: .convCh) ?? convCh + embHiddenDim = try c.decodeIfPresent(Int.self, forKey: .embHiddenDim) ?? embHiddenDim + embNumLayers = try c.decodeIfPresent(Int.self, forKey: .embNumLayers) ?? embNumLayers + dfHiddenDim = try c.decodeIfPresent(Int.self, forKey: .dfHiddenDim) ?? dfHiddenDim + dfNumLayers = try c.decodeIfPresent(Int.self, forKey: .dfNumLayers) ?? dfNumLayers + linearGroups = try c.decodeIfPresent(Int.self, forKey: .linearGroups) ?? linearGroups + encLinearGroups = try c.decodeIfPresent(Int.self, forKey: .encLinearGroups) ?? encLinearGroups + encConcat = try c.decodeIfPresent(Bool.self, forKey: .encConcat) ?? encConcat + dfGruSkip = try c.decodeIfPresent(String.self, forKey: .dfGruSkip) ?? dfGruSkip + convKernel = try c.decodeIfPresent([Int].self, forKey: .convKernel) ?? convKernel + convtKernel = try c.decodeIfPresent([Int].self, forKey: .convtKernel) ?? convtKernel + convKernelInp = try c.decodeIfPresent([Int].self, forKey: .convKernelInp) ?? convKernelInp + dfPathwayKernelSizeT = + try c.decodeIfPresent(Int.self, forKey: .dfPathwayKernelSizeT) ?? dfPathwayKernelSizeT + lsnrMax = try c.decodeIfPresent(Int.self, forKey: .lsnrMax) ?? lsnrMax + lsnrMin = try c.decodeIfPresent(Int.self, forKey: .lsnrMin) ?? lsnrMin + modelVersion = try c.decodeIfPresent(String.self, forKey: .modelVersion) ?? modelVersion + } +} diff --git a/Sources/MLXAudioSTS/Models/DeepFilterNet/DeepFilterNetModel.swift b/Sources/MLXAudioSTS/Models/DeepFilterNet/DeepFilterNetModel.swift new file mode 100644 index 00000000..5253f71f --- /dev/null +++ b/Sources/MLXAudioSTS/Models/DeepFilterNet/DeepFilterNetModel.swift @@ -0,0 +1,791 @@ +import Foundation +import HuggingFace +import MLX +import MLXAudioCore +import MLXNN + +public enum DeepFilterNetError: Error, LocalizedError, CustomStringConvertible { + case invalidRepoID(String) + case modelPathNotFound(String) + case missingConfig(URL) + case missingWeights(URL) + case missingWeightKey(String) + case invalidAudioShape([Int]) + + public var errorDescription: String? { description } + + public var description: String { + switch self { + case .invalidRepoID(let value): + return "Invalid Hugging Face model repo ID: \(value)" + case .modelPathNotFound(let path): + return "Model path not found: \(path)" + case .missingConfig(let directory): + return "Missing config.json in model directory: \(directory.path)" + case .missingWeights(let directory): + return "Missing .safetensors weights in model directory: \(directory.path)" + case .missingWeightKey(let key): + return "Missing DeepFilterNet weight key: \(key)" + case .invalidAudioShape(let shape): + return "Expected mono 1D audio array, got shape: \(shape)" + } + } +} + +public final class DeepFilterNetModel: STSModel { + public static let defaultRepo = "kylehowells/DeepFilterNet3-MLX" + + public let config: DeepFilterNetConfig + public let modelDirectory: URL + public let modelVersion: String + public var sampleRate: Int { config.sampleRate } + + private let weights: [String: MLXArray] + private let erbFB: MLXArray + private let erbInvFB: MLXArray + private let erbBandWidths: [Int] + private let vorbisWindow: MLXArray + private let wnorm: Float + private let j: MLXArray = MLXArray(real: Float(0.0), imaginary: Float(1.0)) + + private init( + config: DeepFilterNetConfig, + modelDirectory: URL, + weights: [String: MLXArray] + ) throws { + self.config = config + self.modelDirectory = modelDirectory + self.modelVersion = config.modelVersion + self.weights = weights + + guard let erbFB = weights["erb_fb"], let erbInvFB = weights["mask.erb_inv_fb"] else { + throw DeepFilterNetError.missingWeightKey("erb_fb / mask.erb_inv_fb") + } + self.erbFB = erbFB + self.erbInvFB = erbInvFB + self.erbBandWidths = Self.computeErbBandWidths(erbFB: erbFB) + self.vorbisWindow = Self.vorbisWindow(size: config.fftSize) + self.wnorm = 1.0 / Float(config.fftSize * config.fftSize) * Float(2 * config.hopSize) + } + + // MARK: - Loading + + public static func fromPretrained( + _ modelPathOrRepo: String = defaultRepo, + hfToken: String? = nil, + cache: HubCache = .default + ) async throws -> DeepFilterNetModel { + let local = URL(fileURLWithPath: modelPathOrRepo).standardizedFileURL + if FileManager.default.fileExists(atPath: local.path) { + if local.hasDirectoryPath { + return try fromLocal(local) + } + return try fromLocal(local.deletingLastPathComponent()) + } + + guard let repoID = Repo.ID(rawValue: modelPathOrRepo) else { + throw DeepFilterNetError.invalidRepoID(modelPathOrRepo) + } + let modelDir = try await ModelUtils.resolveOrDownloadModel( + repoID: repoID, + requiredExtension: "safetensors", + hfToken: hfToken, + cache: cache + ) + return try fromLocal(modelDir) + } + + public static func fromLocal(_ directory: URL) throws -> DeepFilterNetModel { + let configURL = directory.appendingPathComponent("config.json") + guard FileManager.default.fileExists(atPath: configURL.path) else { + throw DeepFilterNetError.missingConfig(directory) + } + + let decoder = JSONDecoder() + decoder.keyDecodingStrategy = .convertFromSnakeCase + let configData = try Data(contentsOf: configURL) + var config = try decoder.decode(DeepFilterNetConfig.self, from: configData) + if config.modelVersion.isEmpty { + config.modelVersion = "DeepFilterNet3" + } + + let files = try FileManager.default.contentsOfDirectory(at: directory, includingPropertiesForKeys: nil) + .filter { $0.pathExtension.lowercased() == "safetensors" } + .sorted { $0.lastPathComponent < $1.lastPathComponent } + guard let weightsURL = files.first(where: { $0.lastPathComponent == "model.safetensors" }) ?? files.first else { + throw DeepFilterNetError.missingWeights(directory) + } + + let weights = try MLX.loadArrays(url: weightsURL) + return try DeepFilterNetModel(config: config, modelDirectory: directory, weights: weights) + } + + // MARK: - Public API + + public func enhance(_ audioInput: MLXArray) throws -> MLXArray { + guard audioInput.ndim == 1 else { + throw DeepFilterNetError.invalidAudioShape(audioInput.shape) + } + + let x = audioInput.asType(.float32) + let origLen = x.shape[0] + let padded = MLX.concatenated([ + MLXArray.zeros([config.hopSize], type: Float.self), + x, + MLXArray.zeros([config.fftSize], type: Float.self), + ], axis: 0) + + let specComplex = MossFormer2DSP.stft( + audio: padded, + fftLen: config.fftSize, + hopLength: config.hopSize, + winLen: config.fftSize, + window: vorbisWindow, + center: false + ) + let spec = specComplex * MLXArray(wnorm) + let specRe = spec.realPart() + let specIm = spec.imaginaryPart() + + let specMagSq = specRe.square() + specIm.square() + let erb = MLX.matmul(specMagSq, erbFB) + let erbDB = MLXArray(Float(10.0)) * (erb + MLXArray(Float(1e-10))).log10() + let featErb2D = bandMeanNorm(erbDB) + + let dfRe = specRe[0..., 0.. (MLXArray, MLXArray, MLXArray, MLXArray) { + let featSpec = featSpec5D + .squeezed(axis: 1) + .transposed(0, 3, 1, 2) + + let featErbShift = applyLookahead(feature: featErb, lookahead: config.convLookahead) + let featSpecShift = applyLookahead(feature: featSpec, lookahead: config.convLookahead) + + let (e0, e1, e2, e3, emb, c0, lsnr) = try encode(featErb: featErbShift, featSpec: featSpecShift) + + let mask = try decodeErb(emb: emb, e3: e3, e2: e2, e1: e1, e0: e0) + let specMasked = applyMask(spec: spec, mask: mask) + + let dfCoefs = try decodeDf(emb: emb, c0: c0) + let b = dfCoefs.shape[0] + let t = dfCoefs.shape[1] + let dfCoefs5 = dfCoefs + .reshaped([b, t, config.nbDf, config.dfOrder, 2]) + .transposed(0, 3, 1, 2, 4) + + let specEnhanced: MLXArray + if config.encConcat { + specEnhanced = deepFilter(spec: specMasked, coefs: dfCoefs5) + } else { + let specDf = deepFilter(spec: spec, coefs: dfCoefs5) + let low = specDf[0..., 0..., 0..., 0.. (MLXArray, MLXArray, MLXArray, MLXArray, MLXArray, MLXArray, MLXArray) + { + let e0 = try applyEncoderConv(featErb, prefix: "enc.erb_conv0", main: 1, pointwise: nil, bn: 2, fstride: 1) + let e1 = try applyEncoderConv(e0, prefix: "enc.erb_conv1", main: 0, pointwise: 1, bn: 2, fstride: 2) + let e2 = try applyEncoderConv(e1, prefix: "enc.erb_conv2", main: 0, pointwise: 1, bn: 2, fstride: 2) + let e3 = try applyEncoderConv(e2, prefix: "enc.erb_conv3", main: 0, pointwise: 1, bn: 2, fstride: 1) + + let c0 = try applyEncoderConv(featSpec, prefix: "enc.df_conv0", main: 1, pointwise: 2, bn: 3, fstride: 1) + let c1 = try applyEncoderConv(c0, prefix: "enc.df_conv1", main: 0, pointwise: 1, bn: 2, fstride: 2) + + let b = c1.shape[0] + let t = c1.shape[2] + var cemb = c1.transposed(0, 2, 3, 1).reshaped([b, t, -1]) + cemb = relu(groupedLinear(cemb, weight: try w("enc.df_fc_emb.0.weight"))) + + var emb = e3.transposed(0, 2, 3, 1).reshaped([b, t, -1]) + emb = config.encConcat ? MLX.concatenated([emb, cemb], axis: -1) : (emb + cemb) + + emb = try squeezedGRU( + emb, + prefix: "enc.emb_gru", + hiddenSize: config.embHiddenDim, + linearOut: true + ) + + let lsnr = sigmoid(linear( + emb, + weight: try w("enc.lsnr_fc.0.weight"), + bias: try w("enc.lsnr_fc.0.bias") + )) * MLXArray(Float(config.lsnrMax - config.lsnrMin)) + MLXArray(Float(config.lsnrMin)) + + return (e0, e1, e2, e3, emb, c0, lsnr) + } + + private func decodeErb( + emb: MLXArray, + e3: MLXArray, + e2: MLXArray, + e1: MLXArray, + e0: MLXArray + ) throws -> MLXArray { + var embDec = try squeezedGRU( + emb, + prefix: "erb_dec.emb_gru", + hiddenSize: config.embHiddenDim, + linearOut: true + ) + + let b = embDec.shape[0] + let t = embDec.shape[1] + let f8 = e3.shape[3] + embDec = embDec.reshaped([b, t, f8, -1]).transposed(0, 3, 1, 2) + + var d3 = relu(try applyPathwayConv(e3, prefix: "erb_dec.conv3p")) + embDec + // Matches MLX/PyTorch DF decoder: convt3 is a regular conv block, not transposed. + d3 = relu(try applyRegularBlock(d3, prefix: "erb_dec.convt3")) + var d2 = relu(try applyPathwayConv(e2, prefix: "erb_dec.conv2p")) + d3 + d2 = relu(try applyTransposeBlock(d2, prefix: "erb_dec.convt2", fstride: 2)) + var d1 = relu(try applyPathwayConv(e1, prefix: "erb_dec.conv1p")) + d2 + d1 = relu(try applyTransposeBlock(d1, prefix: "erb_dec.convt1", fstride: 2)) + let d0 = relu(try applyPathwayConv(e0, prefix: "erb_dec.conv0p")) + d1 + let out = try applyOutputConv(d0, prefix: "erb_dec.conv0_out") + return sigmoid(out) + } + + private func decodeDf(emb: MLXArray, c0: MLXArray) throws -> MLXArray { + var c = try squeezedGRU( + emb, + prefix: "df_dec.df_gru", + hiddenSize: config.dfHiddenDim, + linearOut: false + ) + + if weights["df_dec.df_skip.weight"] != nil { + c = c + groupedLinear(emb, weight: try w("df_dec.df_skip.weight")) + } + + var c0p = try conv2dLayer( + c0, + weight: try w("df_dec.df_convp.1.weight"), + bias: nil, + fstride: 1, + lookahead: 0 + ) + c0p = try conv2dLayer( + c0p, + weight: try w("df_dec.df_convp.2.weight"), + bias: nil, + fstride: 1, + lookahead: 0 + ) + c0p = relu(try batchNorm(c0p, prefix: "df_dec.df_convp.3")) + c0p = c0p.transposed(0, 2, 3, 1) + + let b = c.shape[0] + let t = c.shape[1] + let dfOut = tanh(groupedLinear(c, weight: try w("df_dec.df_out.0.weight"))) + .reshaped([b, t, config.nbDf, config.dfOrder * 2]) + + return dfOut + c0p + } + + private func applyMask(spec: MLXArray, mask: MLXArray) -> MLXArray { + let b = mask.shape[0] + let t = mask.shape[2] + let e = mask.shape[3] + let flat = mask.reshaped([b * t, e]) + let gains = MLX.matmul(flat, erbInvFB).reshaped([b, 1, t, config.freqBins, 1]) + return spec * gains + } + + private func deepFilter(spec: MLXArray, coefs: MLXArray) -> MLXArray { + let t = spec.shape[2] + let padLeft = config.dfOrder - 1 - config.dfLookahead + let padRight = config.dfLookahead + + let specLow = spec[0..., 0, 0..., 0.. MLXArray { + var y = try conv2dLayer( + x, + weight: w("\(prefix).\(main).weight"), + bias: nil, + fstride: fstride, + lookahead: 0 + ) + if let pointwise { + y = try conv2dLayer( + y, + weight: w("\(prefix).\(pointwise).weight"), + bias: nil, + fstride: 1, + lookahead: 0 + ) + } + y = try batchNorm(y, prefix: "\(prefix).\(bn)") + return relu(y) + } + + private func applyPathwayConv(_ x: MLXArray, prefix: String) throws -> MLXArray { + var y = try conv2dLayer( + x, + weight: w("\(prefix).0.weight"), + bias: nil, + fstride: 1, + lookahead: 0 + ) + y = try batchNorm(y, prefix: "\(prefix).1") + return relu(y) + } + + private func applyTransposeBlock(_ x: MLXArray, prefix: String, fstride: Int) throws -> MLXArray { + var y = try convTranspose2dLayer( + x, + weight: w("\(prefix).0.weight"), + fstride: fstride, + groups: config.convCh + ) + y = try conv2dLayer( + y, + weight: w("\(prefix).1.weight"), + bias: nil, + fstride: 1, + lookahead: 0 + ) + return try batchNorm(y, prefix: "\(prefix).2") + } + + private func applyRegularBlock(_ x: MLXArray, prefix: String) throws -> MLXArray { + var y = try conv2dLayer( + x, + weight: w("\(prefix).0.weight"), + bias: nil, + fstride: 1, + lookahead: 0 + ) + y = try conv2dLayer( + y, + weight: w("\(prefix).1.weight"), + bias: nil, + fstride: 1, + lookahead: 0 + ) + return try batchNorm(y, prefix: "\(prefix).2") + } + + private func applyOutputConv(_ x: MLXArray, prefix: String) throws -> MLXArray { + var y = try conv2dLayer( + x, + weight: w("\(prefix).0.weight"), + bias: nil, + fstride: 1, + lookahead: 0 + ) + y = try batchNorm(y, prefix: "\(prefix).1") + return y + } + + private func conv2dLayer( + _ xBCHW: MLXArray, + weight: MLXArray, + bias: MLXArray?, + fstride: Int, + lookahead: Int + ) throws -> MLXArray { + let kT = weight.shape[2] + let kF = weight.shape[3] + let inPerGroup = weight.shape[1] + let inChannels = xBCHW.shape[1] + let groups = max(1, inChannels / max(1, inPerGroup)) + + let rawLeft = kT - 1 - lookahead + let timeCrop = max(0, -rawLeft) + let timePadLeft = max(0, rawLeft) + let timePadRight = max(0, lookahead) + let freqPad = kF / 2 + + var x = xBCHW.transposed(0, 2, 3, 1) // NHWC + if timeCrop > 0, x.shape[1] > timeCrop { + x = x[0..., timeCrop..., 0..., 0...] + } + x = MLX.padded( + x, + widths: [ + .init(0), + .init((timePadLeft, timePadRight)), + .init((freqPad, freqPad)), + .init(0), + ], + mode: .constant + ) + + let wOHWI = weight.transposed(0, 2, 3, 1) + var y = try groupedConv2d(input: x, weight: wOHWI, strideW: fstride, groups: groups) + if let bias { + y = y + bias.reshaped([1, 1, 1, bias.shape[0]]) + } + return y.transposed(0, 3, 1, 2) + } + + private func convTranspose2dLayer( + _ xBCHW: MLXArray, + weight: MLXArray, + fstride: Int, + groups: Int + ) throws -> MLXArray { + var x = xBCHW.transposed(0, 2, 3, 1) // NHWC + let kT = weight.shape[2] + let kF = weight.shape[3] + let padding = IntOrPair((kT - 1, kF / 2)) + let outputPadding = IntOrPair((0, kF / 2)) + + if groups <= 1 { + let w = weight.transposed(1, 2, 3, 0) + x = MLX.convTransposed2d( + x, + w, + stride: [1, fstride], + padding: padding, + outputPadding: outputPadding, + groups: 1 + ) + return x.transposed(0, 3, 1, 2) + } + + let inPerGroup = max(1, x.shape[3] / groups) + let outPerGroup = weight.shape[1] + var ys = [MLXArray]() + ys.reserveCapacity(groups) + + for g in 0.. MLXArray { + if groups <= 1 { + return MLX.conv2d(input, weight, stride: [1, strideW], padding: [0, 0], groups: 1) + } + + let inPerGroup = weight.shape[3] + let outChannels = weight.shape[0] + let outPerGroup = max(1, outChannels / groups) + var ys = [MLXArray]() + ys.reserveCapacity(groups) + for g in 0.. MLXArray { + let gamma = try w("\(prefix).weight") + let beta = try w("\(prefix).bias") + let mean = try w("\(prefix).running_mean") + let variance = try w("\(prefix).running_var") + + var y = x.transposed(0, 2, 3, 1) + y = (y - mean) / MLX.sqrt(variance + MLXArray(Float(1e-5))) + y = y * gamma + beta + return y.transposed(0, 3, 1, 2) + } + + private func squeezedGRU( + _ x: MLXArray, + prefix: String, + hiddenSize: Int, + linearOut: Bool + ) throws -> MLXArray { + var y = relu(groupedLinear(x, weight: try w("\(prefix).linear_in.0.weight"))) + + var layer = 0 + while weights["\(prefix).gru.weight_ih_l\(layer)"] != nil { + y = try pytorchGRULayer(y, prefix: "\(prefix).gru", layer: layer, hiddenSize: hiddenSize) + layer += 1 + } + + if linearOut, weights["\(prefix).linear_out.0.weight"] != nil { + y = relu(groupedLinear(y, weight: try w("\(prefix).linear_out.0.weight"))) + } + return y + } + + private func groupedLinear(_ x: MLXArray, weight: MLXArray) -> MLXArray { + let groups = weight.shape[0] + let ws = weight.shape[1] + let hs = weight.shape[2] + let b = x.shape[0] + let t = x.shape[1] + let reshaped = x.reshaped([b, t, groups, ws]) + let out = MLX.einsum("btgi,gih->btgh", reshaped, weight) + return out.reshaped([b, t, groups * hs]) + } + + private func pytorchGRULayer( + _ x: MLXArray, + prefix: String, + layer: Int, + hiddenSize: Int + ) throws -> MLXArray { + let wih = try w("\(prefix).weight_ih_l\(layer)") + let whh = try w("\(prefix).weight_hh_l\(layer)") + let bih = try w("\(prefix).bias_ih_l\(layer)") + let bhh = try w("\(prefix).bias_hh_l\(layer)") + + let b = x.shape[0] + let t = x.shape[1] + + var h = MLXArray.zeros([b, hiddenSize], type: Float.self) + var states = [MLXArray]() + states.reserveCapacity(t) + + for i in 0.. MLXArray { + let b = x.shape[0] + let t = x.shape[1] + let x2 = x.reshaped([b * t, x.shape[2]]) + var y = MLX.matmul(x2, weight.transposed()) + y = y + bias + return y.reshaped([b, t, weight.shape[0]]) + } + + // MARK: - Feature Helpers + + private func bandMeanNorm(_ x: MLXArray) -> MLXArray { + let frames = x.shape[0] + let bands = x.shape[1] + let a = normAlpha() + let oneMinusA = Float(1.0) - a + + let input = x.asArray(Float.self) + var state = Self.linspace(start: -60.0, end: -90.0, count: bands) + var out = [Float](repeating: 0, count: input.count) + + for t in 0.. (MLXArray, MLXArray) { + let frames = real.shape[0] + let bins = real.shape[1] + let a = normAlpha() + let oneMinusA = Float(1.0) - a + + let re = real.asArray(Float.self) + let im = imag.asArray(Float.self) + var state = Self.linspace(start: 0.001, end: 0.0001, count: bins) + var outRe = [Float](repeating: 0, count: re.count) + var outIm = [Float](repeating: 0, count: im.count) + + for t in 0.. Float { + let aRaw = exp(-Float(config.hopSize) / Float(config.sampleRate)) + var precision = 3 + var a: Float = 1.0 + while a >= 1.0 { + let scale = powf(10, Float(precision)) + a = (aRaw * scale).rounded() / scale + precision += 1 + } + return a + } + + private func applyLookahead(feature: MLXArray, lookahead: Int) -> MLXArray { + guard lookahead > 0 else { return feature } + let t = feature.shape[2] + guard t > lookahead else { return feature } + let shifted = feature[0..., 0..., lookahead.. [Int] { + let matrix = erbFB.asArray(Float.self) + let freq = erbFB.shape[0] + let bands = erbFB.shape[1] + var widths = [Int](repeating: 0, count: bands) + for f in 0.. 0 { + widths[b] += 1 + } + } + return widths + } + + private static func vorbisWindow(size: Int) -> MLXArray { + let half = max(1, size / 2) + var window = [Float](repeating: 0, count: size) + for i in 0.. [Float] { + guard count > 1 else { return [start] } + let step = (end - start) / Float(count - 1) + return (0.. MLXArray { + guard let value = weights[key] else { + throw DeepFilterNetError.missingWeightKey(key) + } + return value + } +} diff --git a/Sources/MLXAudioSTS/Models/DeepFilterNet/README.md b/Sources/MLXAudioSTS/Models/DeepFilterNet/README.md new file mode 100644 index 00000000..a5b0d1e7 --- /dev/null +++ b/Sources/MLXAudioSTS/Models/DeepFilterNet/README.md @@ -0,0 +1,19 @@ +# DeepFilterNet (Swift / MLX) + +Native Swift MLX inference runtime for DeepFilterNet speech enhancement. + +## Model Files + +Use a model directory containing: + +- `config.json` +- `model.safetensors` (or any `.safetensors` file) + +## Usage + +```swift +let model = try await DeepFilterNetModel.fromPretrained("/path/to/DeepFilterNet3") +let enhanced = try model.enhance(audio) +``` + +`audio` is a mono `MLXArray` of shape `[samples]` in `[-1, 1]`. diff --git a/Sources/MLXAudioSTS/STSModel.swift b/Sources/MLXAudioSTS/STSModel.swift index e0b244e3..4dd8c7b4 100644 --- a/Sources/MLXAudioSTS/STSModel.swift +++ b/Sources/MLXAudioSTS/STSModel.swift @@ -15,12 +15,14 @@ public enum LoadedSTSModel { case samAudio(SAMAudio) case lfmAudio(LFM2AudioModel) case mossFormer2SE(MossFormer2SEModel) + case deepFilterNet(DeepFilterNetModel) public var model: any STSModel { switch self { case .samAudio(let m): return m case .lfmAudio(let m): return m case .mossFormer2SE(let m): return m + case .deepFilterNet(let m): return m } } @@ -55,6 +57,19 @@ public enum STS { strict: Bool = false, cache: HubCache = .default ) async throws -> LoadedSTSModel { + // Local directory path support (primarily for enhancement models). + let localURL = URL(fileURLWithPath: modelRepo).standardizedFileURL + if FileManager.default.fileExists(atPath: localURL.path) { + let modelType = try resolveLocalModelType(localURL) + return try await loadModel( + modelRepo: modelRepo, + modelType: modelType, + hfToken: hfToken, + strict: strict, + cache: cache + ) + } + guard let repoID = Repo.ID(rawValue: modelRepo) else { throw STSModelError.invalidRepositoryID(modelRepo) } @@ -103,6 +118,14 @@ public enum STS { let model = try await MossFormer2SEModel.fromPretrained(modelRepo, cache: cache) return .mossFormer2SE(model) + case "deepfilternet", "deepfilternet2", "deepfilternet3", "dfn": + let model = try await DeepFilterNetModel.fromPretrained( + modelRepo, + hfToken: hfToken, + cache: cache + ) + return .deepFilterNet(model) + default: throw STSModelError.unsupportedModelType(resolved) } @@ -125,9 +148,40 @@ public enum STS { if lower.contains("mossformer") { return "mossformer2_se" } + if lower.contains("deepfilter") || lower.contains("dfn") { + return "deepfilternet3" + } if lower.contains("sam") || lower.contains("source-separation") { return "sam_audio" } return nil } + + private static func resolveLocalModelType(_ path: URL) throws -> String? { + let configURL: URL + if path.hasDirectoryPath { + configURL = path.appendingPathComponent("config.json") + } else if path.lastPathComponent == "config.json" { + configURL = path + } else { + configURL = path.deletingLastPathComponent().appendingPathComponent("config.json") + } + guard FileManager.default.fileExists(atPath: configURL.path) else { + return inferModelType(from: path.path) + } + let data = try Data(contentsOf: configURL) + guard let json = try JSONSerialization.jsonObject(with: data) as? [String: Any] else { + return inferModelType(from: path.path) + } + if let modelType = json["model_type"] as? String { + return modelType.lowercased() + } + if let arch = json["architecture"] as? String { + return arch.lowercased() + } + if let version = json["model_version"] as? String { + return version.lowercased() + } + return inferModelType(from: path.path) + } } diff --git a/Sources/Tools/mlx-audio-swift-sts/App.swift b/Sources/Tools/mlx-audio-swift-sts/App.swift index 017a57f8..2b1e4000 100644 --- a/Sources/Tools/mlx-audio-swift-sts/App.swift +++ b/Sources/Tools/mlx-audio-swift-sts/App.swift @@ -72,6 +72,8 @@ enum App { try await runSAMAudio(model: model, args: args) case .mossFormer2SE(let model): try await runMossFormer2SE(model: model, args: args) + case .deepFilterNet(let model): + try await runDeepFilterNet(model: model, args: args) } } catch { fputs("Error: \(error)\n", stderr) @@ -456,6 +458,47 @@ enum App { print(String(format: "Done. Elapsed: %.2fs", elapsed)) } + // MARK: - DeepFilterNet Speech Enhancement + + private static func runDeepFilterNet(model: DeepFilterNetModel, args: CLI) async throws { + guard let audioPath = args.audioPath else { + throw AppError.enhanceRequiresAudio + } + + let inputURL = resolveURL(path: audioPath) + guard FileManager.default.fileExists(atPath: inputURL.path) else { + throw AppError.inputFileNotFound(inputURL.path) + } + + let (inputSampleRate, rawAudio) = try loadAudioArray(from: inputURL) + let audioData = try resampleIfNeeded(rawAudio, from: inputSampleRate, to: model.sampleRate) + + print("Enhancing audio with \(model.modelVersion)") + let started = CFAbsoluteTimeGetCurrent() + + let enhanced = try model.enhance(audioData) + eval(enhanced) + let samples = enhanced.asArray(Float.self) + + let duration = Double(samples.count) / Double(model.sampleRate) + print(String(format: "Enhanced %d samples (%.1fs at %dHz)", samples.count, duration, model.sampleRate)) + + let outputURL: URL + if let path = args.outputTargetPath { + outputURL = resolveURL(path: path) + } else { + let stem = inputURL.deletingPathExtension().lastPathComponent + outputURL = inputURL.deletingLastPathComponent() + .appendingPathComponent("\(stem).deepfilternet.wav") + } + + try AudioUtils.writeWavFile(samples: samples, sampleRate: Double(model.sampleRate), fileURL: outputURL) + print("Wrote WAV to \(outputURL.path)") + + let elapsed = CFAbsoluteTimeGetCurrent() - started + print(String(format: "Done. Elapsed: %.2fs", elapsed)) + } + // MARK: - Helpers private static func resolveURL(path: String) -> URL { @@ -752,12 +795,14 @@ struct CLI { - LFM2.5-Audio: multimodal generation (t2t, tts, stt, sts) - SAM Audio: source separation - MossFormer2-SE: speech enhancement + - DeepFilterNet: speech enhancement (local or HF model directory) Model Selection: --model Model repo or local path (auto-detected). SAM Audio default: \(SAMAudio.defaultRepo) LFM example: mlx-community/LFM2.5-Audio-1.5B-6bit MossFormer2 example: starkdmi/MossFormer2-SE-fp16 + DeepFilterNet local example: /path/to/DeepFilterNet3 LFM2.5-Audio Options: --mode LFM generation mode. @@ -796,6 +841,12 @@ struct CLI { -i, --audio Input audio file (required) -o, --output-target Enhanced WAV output. Default: .enhanced.wav + DeepFilterNet Options: + --model Local model dir with config.json + model.safetensors, + or Hugging Face repo. + -i, --audio Input audio file (required) + -o, --output-target Enhanced WAV output. Default: .deepfilternet.wav + Common: --hf-token Hugging Face token (or set HF_TOKEN env var) -h, --help Show this help diff --git a/Sources/Tools/mlx-audio-swift-sts/README.md b/Sources/Tools/mlx-audio-swift-sts/README.md index 885ffa3e..681fc722 100644 --- a/Sources/Tools/mlx-audio-swift-sts/README.md +++ b/Sources/Tools/mlx-audio-swift-sts/README.md @@ -5,6 +5,7 @@ Command-line tool for Speech-to-Speech tasks using models from the `MLXAudioSTS` Supports two model families: - **LFM2.5-Audio**: Multimodal generation (text-to-text, text-to-speech, speech-to-text, speech-to-speech) - **SAM Audio**: Source separation +- **MossFormer2-SE / DeepFilterNet**: Speech enhancement ## Build and Run @@ -12,6 +13,13 @@ Supports two model families: swift run mlx-audio-swift-sts --help ``` +For model inference on macOS, build with Xcode so `mlx-swift_Cmlx.bundle/Contents/Resources/default.metallib` +is generated and loaded: + +```bash +xcodebuild build -scheme mlx-audio-swift-sts -destination 'platform=macOS' CODE_SIGNING_ALLOWED=NO +``` + ## LFM2.5-Audio Examples ### Text-to-Text @@ -72,6 +80,15 @@ swift run mlx-audio-swift-sts \ --overlap-seconds 3 ``` +## DeepFilterNet Example + +```bash +swift run mlx-audio-swift-sts \ + --model /path/to/DeepFilterNet3 \ + --audio /path/to/noisy.wav \ + --output-target /tmp/deepfilternet.wav +``` + ## Options ### LFM2.5-Audio @@ -104,6 +121,11 @@ swift run mlx-audio-swift-sts \ - `--anchor`: Anchor rule (`+|-:start:end`), repeatable, `short` mode only - `--strict`: Strict weight loading +### DeepFilterNet +- `--model`: Local model directory (or HF repo) containing `config.json` and `model.safetensors` +- `--audio`, `-i`: Input audio path (required) +- `--output-target`, `-o`: Enhanced output wav path (default: `.deepfilternet.wav`) + ### Common - `--hf-token`: Hugging Face token (or use `HF_TOKEN` env var) - `--help`, `-h`: Show help diff --git a/Tests/MLXAudioSTSTests.swift b/Tests/MLXAudioSTSTests.swift index 5e2f947f..149b09a6 100644 --- a/Tests/MLXAudioSTSTests.swift +++ b/Tests/MLXAudioSTSTests.swift @@ -158,6 +158,91 @@ struct MossFormer2SEConfigTests { } } +struct DeepFilterNetConfigTests { + @Test func deepFilterNetConfigDefaults() { + let config = DeepFilterNetConfig() + + #expect(config.sampleRate == 48_000) + #expect(config.fftSize == 960) + #expect(config.hopSize == 480) + #expect(config.nbErb == 32) + #expect(config.nbDf == 96) + #expect(config.dfOrder == 5) + #expect(config.dfLookahead == 2) + #expect(config.modelType == "deepfilternet3") + } + + @Test func deepFilterNetConfigDecoding() throws { + let json = """ + { + "sample_rate": 48000, + "fft_size": 960, + "hop_size": 480, + "nb_erb": 32, + "nb_df": 96, + "df_order": 5, + "df_lookahead": 2, + "model_version": "DeepFilterNet3" + } + """ + let decoder = JSONDecoder() + decoder.keyDecodingStrategy = .convertFromSnakeCase + let config = try decoder.decode(DeepFilterNetConfig.self, from: Data(json.utf8)) + #expect(config.modelVersion == "DeepFilterNet3") + #expect(config.modelType == "deepfilternet3") + #expect(config.freqBins == 481) + } +} + +struct DeepFilterNetLoadingTests { + @Test func deepFilterNetFromLocalRejectsMissingConfig() throws { + let tempDir = FileManager.default.temporaryDirectory + .appendingPathComponent("deepfilternet-empty-\(UUID().uuidString)", isDirectory: true) + try FileManager.default.createDirectory(at: tempDir, withIntermediateDirectories: true) + defer { try? FileManager.default.removeItem(at: tempDir) } + + do { + _ = try DeepFilterNetModel.fromLocal(tempDir) + Issue.record("Expected fromLocal to throw for missing config.json") + } catch let error as DeepFilterNetError { + switch error { + case .missingConfig(let directory): + #expect(directory.path == tempDir.path) + default: + Issue.record("Expected missingConfig, got \(error)") + } + } catch { + Issue.record("Expected DeepFilterNetError, got \(error)") + } + } + + @Test func deepFilterNetFromLocalRejectsMissingWeights() throws { + let tempDir = FileManager.default.temporaryDirectory + .appendingPathComponent("deepfilternet-noweights-\(UUID().uuidString)", isDirectory: true) + try FileManager.default.createDirectory(at: tempDir, withIntermediateDirectories: true) + defer { try? FileManager.default.removeItem(at: tempDir) } + + let configURL = tempDir.appendingPathComponent("config.json") + try """ + { "model_version": "DeepFilterNet3" } + """.write(to: configURL, atomically: true, encoding: .utf8) + + do { + _ = try DeepFilterNetModel.fromLocal(tempDir) + Issue.record("Expected fromLocal to throw for missing .safetensors") + } catch let error as DeepFilterNetError { + switch error { + case .missingWeights(let directory): + #expect(directory.path == tempDir.path) + default: + Issue.record("Expected missingWeights, got \(error)") + } + } catch { + Issue.record("Expected DeepFilterNetError, got \(error)") + } + } +} + struct MossFormer2SELayerTests { @Test func scaleNormShape() { @@ -1456,3 +1541,4 @@ struct LFMAudioModuleSetupTests { #expect(depthformer.layersCount == config.layers) } } + From 747a579ddada0a78972f720d9cb3bb9eb5e46d46 Mon Sep 17 00:00:00 2001 From: Kyle Howells Date: Thu, 5 Mar 2026 13:18:21 +0000 Subject: [PATCH 02/33] Match libDF ERB band feature extraction in DeepFilterNet Swift --- .../DeepFilterNet/DeepFilterNetConfig.swift | 3 + .../DeepFilterNet/DeepFilterNetModel.swift | 86 ++++++++++++++++--- 2 files changed, 78 insertions(+), 11 deletions(-) diff --git a/Sources/MLXAudioSTS/Models/DeepFilterNet/DeepFilterNetConfig.swift b/Sources/MLXAudioSTS/Models/DeepFilterNet/DeepFilterNetConfig.swift index 3079c529..2a48c9fd 100644 --- a/Sources/MLXAudioSTS/Models/DeepFilterNet/DeepFilterNetConfig.swift +++ b/Sources/MLXAudioSTS/Models/DeepFilterNet/DeepFilterNetConfig.swift @@ -29,6 +29,7 @@ public struct DeepFilterNetConfig: Codable, Sendable { public var lsnrMax: Int = 35 public var lsnrMin: Int = -15 public var modelVersion: String = "DeepFilterNet3" + public var erbWidths: [Int]? = nil public var freqBins: Int { fftSize / 2 + 1 } @@ -68,6 +69,7 @@ public struct DeepFilterNetConfig: Codable, Sendable { case lsnrMax case lsnrMin case modelVersion + case erbWidths } public init() {} @@ -99,5 +101,6 @@ public struct DeepFilterNetConfig: Codable, Sendable { lsnrMax = try c.decodeIfPresent(Int.self, forKey: .lsnrMax) ?? lsnrMax lsnrMin = try c.decodeIfPresent(Int.self, forKey: .lsnrMin) ?? lsnrMin modelVersion = try c.decodeIfPresent(String.self, forKey: .modelVersion) ?? modelVersion + erbWidths = try c.decodeIfPresent([Int].self, forKey: .erbWidths) ?? erbWidths } } diff --git a/Sources/MLXAudioSTS/Models/DeepFilterNet/DeepFilterNetModel.swift b/Sources/MLXAudioSTS/Models/DeepFilterNet/DeepFilterNetModel.swift index 5253f71f..5e49762f 100644 --- a/Sources/MLXAudioSTS/Models/DeepFilterNet/DeepFilterNetModel.swift +++ b/Sources/MLXAudioSTS/Models/DeepFilterNet/DeepFilterNetModel.swift @@ -63,7 +63,17 @@ public final class DeepFilterNetModel: STSModel { } self.erbFB = erbFB self.erbInvFB = erbInvFB - self.erbBandWidths = Self.computeErbBandWidths(erbFB: erbFB) + let widthsFromConfig = config.erbWidths + if let widthsFromConfig, widthsFromConfig.reduce(0, +) == config.freqBins { + self.erbBandWidths = widthsFromConfig + } else { + self.erbBandWidths = Self.libdfErbBandWidths( + sampleRate: config.sampleRate, + fftSize: config.fftSize, + nbBands: config.nbErb, + minNbFreqs: 1 + ) + } self.vorbisWindow = Self.vorbisWindow(size: config.fftSize) self.wnorm = 1.0 / Float(config.fftSize * config.fftSize) * Float(2 * config.hopSize) } @@ -148,7 +158,7 @@ public final class DeepFilterNetModel: STSModel { let specIm = spec.imaginaryPart() let specMagSq = specRe.square() + specIm.square() - let erb = MLX.matmul(specMagSq, erbFB) + let erb = erbEnergies(specMagSq) let erbDB = MLXArray(Float(10.0)) * (erb + MLXArray(Float(1e-10))).log10() let featErb2D = bandMeanNorm(erbDB) @@ -752,16 +762,70 @@ public final class DeepFilterNetModel: STSModel { // MARK: - Utility - private static func computeErbBandWidths(erbFB: MLXArray) -> [Int] { - let matrix = erbFB.asArray(Float.self) - let freq = erbFB.shape[0] - let bands = erbFB.shape[1] - var widths = [Int](repeating: 0, count: bands) - for f in 0.. 0 { - widths[b] += 1 + private func erbEnergies(_ specMagSq: MLXArray) -> MLXArray { + var bands = [MLXArray]() + bands.reserveCapacity(erbBandWidths.count) + var start = 0 + for width in erbBandWidths { + let stop = min(start + width, config.freqBins) + if stop > start { + bands.append(MLX.mean(specMagSq[0..., start.. Float { + 9.265 * log1p(freqHz / (24.7 * 9.265)) + } + + private static func libdfErbToFreq(_ erb: Float) -> Float { + 24.7 * 9.265 * (exp(erb / 9.265) - 1.0) + } + + private static func libdfErbBandWidths( + sampleRate: Int, + fftSize: Int, + nbBands: Int, + minNbFreqs: Int + ) -> [Int] { + guard sampleRate > 0, fftSize > 0, nbBands > 0 else { return [] } + + let nyq = sampleRate / 2 + let freqWidth = Float(sampleRate) / Float(fftSize) + let erbLow = libdfFreqToErb(0) + let erbHigh = libdfFreqToErb(Float(nyq)) + let step = (erbHigh - erbLow) / Float(nbBands) + + var widths = [Int](repeating: 0, count: nbBands) + var prevFreq = 0 + var freqOver = 0 + let minBins = max(1, minNbFreqs) + + for i in 1...nbBands { + let f = libdfErbToFreq(erbLow + Float(i) * step) + let fb = Int((f / freqWidth).rounded()) + var nbFreqs = fb - prevFreq - freqOver + if nbFreqs < minBins { + freqOver = minBins - nbFreqs + nbFreqs = minBins + } else { + freqOver = 0 } + widths[i - 1] = max(1, nbFreqs) + prevFreq = fb + } + + widths[nbBands - 1] += 1 // fft_size/2 + 1 bins + let target = fftSize / 2 + 1 + let total = widths.reduce(0, +) + if total > target { + widths[nbBands - 1] -= (total - target) + } else if total < target { + widths[nbBands - 1] += (target - total) } return widths } From 8274dd65e5143ff74a8fdcbf39eb1a5c8dafdff8 Mon Sep 17 00:00:00 2001 From: Kyle Howells Date: Thu, 5 Mar 2026 20:38:34 +0000 Subject: [PATCH 03/33] DeepFilterNet Swift: low-latency streaming refactor and offline fast path --- .../DeepFilterNet/DeepFilterNetModel.swift | 775 +++++++++++++++++- .../Models/DeepFilterNet/README.md | 12 + Sources/Tools/mlx-audio-swift-sts/App.swift | 74 +- Sources/Tools/mlx-audio-swift-sts/README.md | 13 + Tests/MLXAudioSTSTests.swift | 18 +- 5 files changed, 845 insertions(+), 47 deletions(-) diff --git a/Sources/MLXAudioSTS/Models/DeepFilterNet/DeepFilterNetModel.swift b/Sources/MLXAudioSTS/Models/DeepFilterNet/DeepFilterNetModel.swift index 5e49762f..2fec1dc1 100644 --- a/Sources/MLXAudioSTS/Models/DeepFilterNet/DeepFilterNetModel.swift +++ b/Sources/MLXAudioSTS/Models/DeepFilterNet/DeepFilterNetModel.swift @@ -32,6 +32,25 @@ public enum DeepFilterNetError: Error, LocalizedError, CustomStringConvertible { } } +public struct DeepFilterNetStreamingConfig: Sendable { + public var padEndFrames: Int + public var compensateDelay: Bool + + public init( + padEndFrames: Int = 3, + compensateDelay: Bool = true + ) { + self.padEndFrames = padEndFrames + self.compensateDelay = compensateDelay + } +} + +public struct DeepFilterNetStreamingChunk: @unchecked Sendable { + public let audio: MLXArray + public let chunkIndex: Int + public let isLastChunk: Bool +} + public final class DeepFilterNetModel: STSModel { public static let defaultRepo = "kylehowells/DeepFilterNet3-MLX" @@ -46,6 +65,8 @@ public final class DeepFilterNetModel: STSModel { private let erbBandWidths: [Int] private let vorbisWindow: MLXArray private let wnorm: Float + private let normAlphaValue: Float + private let inferenceDType: DType private let j: MLXArray = MLXArray(real: Float(0.0), imaginary: Float(1.0)) private init( @@ -76,6 +97,8 @@ public final class DeepFilterNetModel: STSModel { } self.vorbisWindow = Self.vorbisWindow(size: config.fftSize) self.wnorm = 1.0 / Float(config.fftSize * config.fftSize) * Float(2 * config.hopSize) + self.normAlphaValue = Self.computeNormAlpha(hopSize: config.hopSize, sampleRate: config.sampleRate) + self.inferenceDType = weights["enc.erb_conv0.1.weight"]?.dtype ?? .float32 } // MARK: - Loading @@ -174,7 +197,11 @@ public final class DeepFilterNetModel: STSModel { .expandedDimensions(axis: 0) .expandedDimensions(axis: 0) - let (specEnhanced, _, _, _) = try forward(spec: specIn, featErb: featErb, featSpec5D: featDf) + let (specEnhanced, _, _, _) = try forward( + spec: specIn.asType(inferenceDType), + featErb: featErb.asType(inferenceDType), + featSpec5D: featDf.asType(inferenceDType) + ) var enh = specEnhanced[0, 0, 0..., 0..., 0] + j * specEnhanced[0, 0, 0..., 0..., 1] enh = enh / MLXArray(wnorm) @@ -198,6 +225,694 @@ public final class DeepFilterNetModel: STSModel { return MLX.clip(audioOut, min: -1.0, max: 1.0) } + public func createStreamer( + config: DeepFilterNetStreamingConfig = DeepFilterNetStreamingConfig() + ) -> DeepFilterNetStreamer { + DeepFilterNetStreamer(model: self, config: config) + } + + public func enhanceStreaming( + _ audioInput: MLXArray, + chunkSamples: Int? = nil, + config: DeepFilterNetStreamingConfig = DeepFilterNetStreamingConfig() + ) throws -> MLXArray { + guard audioInput.ndim == 1 else { + throw DeepFilterNetError.invalidAudioShape(audioInput.shape) + } + let samples = audioInput.asType(.float32) + if samples.shape[0] == 0 { + return MLXArray.zeros([0], type: Float.self) + } + + let streamer = createStreamer(config: config) + // Default to true low-latency chunking: one hop (10ms at 48kHz). + let frameChunk = max(self.config.hopSize, chunkSamples ?? self.config.hopSize) + var outputChunks = [MLXArray]() + outputChunks.reserveCapacity(max(1, samples.shape[0] / frameChunk)) + + var start = 0 + while start < samples.shape[0] { + let end = min(start + frameChunk, samples.shape[0]) + let chunk = samples[start.. 0 { + outputChunks.append(out) + } + start = end + } + let tail = try streamer.flushMLX() + if tail.shape[0] > 0 { + outputChunks.append(tail) + } + if outputChunks.isEmpty { + return MLXArray.zeros([0], type: Float.self) + } + return MLX.clip(MLX.concatenated(outputChunks, axis: 0), min: -1.0, max: 1.0) + } + + public func enhanceStreaming( + _ audioInput: MLXArray, + chunkSamples: Int? = nil, + config: DeepFilterNetStreamingConfig = DeepFilterNetStreamingConfig() + ) -> AsyncThrowingStream { + AsyncThrowingStream { continuation in + do { + guard audioInput.ndim == 1 else { + throw DeepFilterNetError.invalidAudioShape(audioInput.shape) + } + let samples = audioInput.asType(.float32) + let streamer = createStreamer(config: config) + // Default to true low-latency chunking: one hop (10ms at 48kHz). + let frameChunk = max(self.config.hopSize, chunkSamples ?? self.config.hopSize) + + var chunkIndex = 0 + var start = 0 + while start < samples.shape[0] { + let end = min(start + frameChunk, samples.shape[0]) + let chunk = samples[start.. 0 { + continuation.yield( + DeepFilterNetStreamingChunk( + audio: out, + chunkIndex: chunkIndex, + isLastChunk: false + ) + ) + chunkIndex += 1 + } + start = end + } + + let tail = try streamer.flushMLX() + if tail.shape[0] > 0 { + continuation.yield( + DeepFilterNetStreamingChunk( + audio: tail, + chunkIndex: chunkIndex, + isLastChunk: true + ) + ) + } + continuation.finish() + } catch { + continuation.finish(throwing: error) + } + } + } + + // MARK: - Streaming + + public final class DeepFilterNetStreamer { + private let model: DeepFilterNetModel + public let config: DeepFilterNetStreamingConfig + + private let fftSize: Int + private let hopSize: Int + private let freqBins: Int + private let nbDf: Int + private let nbErb: Int + private let dfOrder: Int + private let dfLookahead: Int + private let convLookahead: Int + + private let alphaArray: MLXArray + private let oneMinusAlphaArray: MLXArray + private let fftScaleArray: MLXArray + private let vorbisWindow: MLXArray + private let wnormArray: MLXArray + private let inferenceDType: DType + private let epsEnergy = MLXArray(Float(1e-10)) + private let epsNorm = MLXArray(Float(1e-12)) + private let tenArray = MLXArray(Float(10.0)) + private let fortyArray = MLXArray(Float(40.0)) + private let zeroSpecFrame: MLXArray + private let analysisMemCount: Int + private let synthMemCount: Int + + private var pendingSamples = MLXArray.zeros([0], type: Float.self) + private var analysisMem: MLXArray + private var synthMem: MLXArray + private var erbState: MLXArray + private var dfState: MLXArray + + private var specQueue: [MLXArray] = [] + private var specPast: [MLXArray] = [] + private var frameCount = 0 + + private var encErb0In: [MLXArray] = [] + private var encDf0In: [MLXArray] = [] + private var dfConvpIn: [MLXArray] = [] + + private var encEmbState: [MLXArray]? + private var erbDecState: [MLXArray]? + private var dfDecState: [MLXArray]? + + private var delayDropped = 0 + private var skipCounter = 0 + + public init(model: DeepFilterNetModel, config: DeepFilterNetStreamingConfig = DeepFilterNetStreamingConfig()) { + self.model = model + self.config = config + + self.fftSize = model.config.fftSize + self.hopSize = model.config.hopSize + self.freqBins = model.config.freqBins + self.nbDf = model.config.nbDf + self.nbErb = model.config.nbErb + self.dfOrder = model.config.dfOrder + self.dfLookahead = model.config.dfLookahead + self.convLookahead = model.config.convLookahead + + let alpha = model.normAlpha() + self.alphaArray = MLXArray(alpha) + self.oneMinusAlphaArray = MLXArray(Float(1.0) - alpha) + self.fftScaleArray = MLXArray(Float(model.config.fftSize)) + self.vorbisWindow = model.vorbisWindow.asType(.float32) + self.wnormArray = MLXArray(model.wnorm) + self.inferenceDType = model.inferenceDType + self.analysisMemCount = max(0, model.config.fftSize - model.config.hopSize) + self.synthMemCount = max(0, model.config.fftSize - model.config.hopSize) + self.zeroSpecFrame = MLXArray.zeros([model.config.freqBins, 2], type: Float.self) + + self.analysisMem = MLXArray.zeros([analysisMemCount], type: Float.self) + self.synthMem = MLXArray.zeros([synthMemCount], type: Float.self) + self.erbState = MLXArray(Self.linspace(start: -60.0, end: -90.0, count: model.config.nbErb)) + self.dfState = MLXArray(Self.linspace(start: 0.001, end: 0.0001, count: model.config.nbDf)) + } + + public func reset() { + pendingSamples = MLXArray.zeros([0], type: Float.self) + analysisMem = MLXArray.zeros([analysisMemCount], type: Float.self) + synthMem = MLXArray.zeros([synthMemCount], type: Float.self) + erbState = MLXArray(Self.linspace(start: -60.0, end: -90.0, count: nbErb)) + dfState = MLXArray(Self.linspace(start: 0.001, end: 0.0001, count: nbDf)) + specQueue.removeAll(keepingCapacity: true) + specPast.removeAll(keepingCapacity: true) + frameCount = 0 + encErb0In.removeAll(keepingCapacity: true) + encDf0In.removeAll(keepingCapacity: true) + dfConvpIn.removeAll(keepingCapacity: true) + encEmbState = nil + erbDecState = nil + dfDecState = nil + delayDropped = 0 + skipCounter = 0 + } + + public func processChunk(_ chunk: MLXArray, isLast: Bool = false) throws -> MLXArray { + guard chunk.ndim == 1 else { + throw DeepFilterNetError.invalidAudioShape(chunk.shape) + } + let chunkF32 = chunk.asType(.float32) + if chunkF32.shape[0] > 0 { + if pendingSamples.shape[0] == 0 { + pendingSamples = chunkF32 + } else { + pendingSamples = MLX.concatenated([pendingSamples, chunkF32], axis: 0) + } + } + + var outs = [MLXArray]() + while pendingSamples.shape[0] >= hopSize { + let hop = pendingSamples[0.. 0 { + let pad = MLXArray.zeros([config.padEndFrames * hopSize], type: Float.self) + if pendingSamples.shape[0] == 0 { + pendingSamples = pad + } else { + pendingSamples = MLX.concatenated([pendingSamples, pad], axis: 0) + } + } + while pendingSamples.shape[0] >= hopSize { + let hop = pendingSamples[0.. 0 { + y = y[toDrop.. [Float] { + guard !chunk.isEmpty || isLast else { return [] } + let y = try processChunk(MLXArray(chunk), isLast: isLast) + if y.shape[0] == 0 { + return [] + } + return y.asArray(Float.self) + } + + public func flush() throws -> [Float] { + try processChunk([], isLast: true) + } + + public func flushMLX() throws -> MLXArray { + try processChunk(MLXArray.zeros([0], type: Float.self), isLast: true) + } + + private func processHop(_ hopTD: MLXArray) throws -> MLXArray? { + let rms = MLX.mean(hopTD * hopTD, axis: 0).asArray(Float.self).first ?? 0 + if rms < 1e-7 { + skipCounter += 1 + } else { + skipCounter = 0 + } + if skipCounter > 5 { + return MLXArray.zeros([hopSize], type: Float.self) + } + + let spec = analysisFrame(hopTD) + let (featErb, featDf) = featuresFrame(spec) + specQueue.append(spec) + frameCount += 1 + + if frameCount <= convLookahead { + return nil + } + + let specT = specQueue.removeFirst() + let specEnhanced = try inferFrame(spec: specT, featErb: featErb, featDf: featDf) + let out = synthesisFrame(specEnhanced.asType(.float32)) + materializeStreamingState(output: out) + return out + } + + private func analysisFrame(_ hopTD: MLXArray) -> MLXArray { + let frame = analysisMemCount > 0 + ? MLX.concatenated([analysisMem, hopTD], axis: 0) + : hopTD + let frameWin = frame * vorbisWindow + let specComplex = MLXFFT.rfft(frameWin, axis: 0) * wnormArray + let spec = MLX.stacked([specComplex.realPart(), specComplex.imaginaryPart()], axis: -1) + updateAnalysisMemory(with: hopTD) + return spec + } + + private func synthesisFrame(_ specNorm: MLXArray) -> MLXArray { + let complex = specNorm[0..., 0] + model.j * specNorm[0..., 1] + var time = MLXFFT.irfft(complex, axis: 0) + time = time * fftScaleArray + time = time * vorbisWindow + + let out = time[0.. 0 else { return } + if analysisMemCount > hopSize { + let split = analysisMemCount - hopSize + let rotated = MLX.concatenated([ + analysisMem[hopSize.. 0 else { return } + let xSecond = time[hopSize.. hopSize { + let split = synthMemCount - hopSize + let rotated = MLX.concatenated([ + synthMem[hopSize.. (MLXArray, MLXArray) { + let re = spec[0..., 0] + let im = spec[0..., 1] + let magSq = re.square() + im.square() + + var erbBands = [MLXArray]() + erbBands.reserveCapacity(nbErb) + var start = 0 + for width in model.erbBandWidths { + let stop = min(start + width, freqBins) + if stop > start { + erbBands.append(MLX.mean(magSq[start.. MLXArray { + let specMX = spec + .expandedDimensions(axis: 0) + .expandedDimensions(axis: 0) + .expandedDimensions(axis: 0) + .asType(inferenceDType) + let featErbMX = featErb.asType(inferenceDType) + let featDfMX = featDf.asType(inferenceDType) + appendWithLimit(&encErb0In, featErbMX, maxLen: 3) + appendWithLimit(&encDf0In, featDfMX, maxLen: 3) + + let e0 = try applyConvLast(inputs: encErb0In, prefix: "enc.erb_conv0", main: 1, pointwise: nil, bn: 2, fstride: 1) + let e1 = try applyConvLast(inputs: [e0], prefix: "enc.erb_conv1", main: 0, pointwise: 1, bn: 2, fstride: 2) + let e2 = try applyConvLast(inputs: [e1], prefix: "enc.erb_conv2", main: 0, pointwise: 1, bn: 2, fstride: 2) + let e3 = try applyConvLast(inputs: [e2], prefix: "enc.erb_conv3", main: 0, pointwise: 1, bn: 2, fstride: 1) + + let c0 = try applyConvLast(inputs: encDf0In, prefix: "enc.df_conv0", main: 1, pointwise: 2, bn: 3, fstride: 1) + let c1 = try applyConvLast(inputs: [c0], prefix: "enc.df_conv1", main: 0, pointwise: 1, bn: 2, fstride: 2) + + var cemb = c1.transposed(0, 2, 3, 1).reshaped([1, 1, -1]) + cemb = relu(model.groupedLinear(cemb, weight: try model.w("enc.df_fc_emb.0.weight"))) + + var emb = e3.transposed(0, 2, 3, 1).reshaped([1, 1, -1]) + emb = model.config.encConcat ? MLX.concatenated([emb, cemb], axis: -1) : (emb + cemb) + + emb = try squeezedGRUStep( + emb, + prefix: "enc.emb_gru", + hiddenSize: model.config.embHiddenDim, + linearOut: true, + state: &encEmbState + ) + + let mask = try erbDecoderStep(emb: emb, e3: e3, e2: e2, e1: e1, e0: e0) + let specMasked = applyMask(spec: specMX, mask: mask) + + var dfCoefs = try dfDecoderStep(emb: emb, c0: c0) + dfCoefs = dfCoefs.reshaped([1, 1, nbDf, dfOrder, 2]).transposed(0, 3, 1, 2, 4) + + let specEnhanced = try deepFilterAssign(spec: specMX, specMasked: specMasked, dfCoefs: dfCoefs, currentSpec: spec) + return specEnhanced[0, 0, 0, 0..., 0...] + } + + private func applyConvLast( + inputs: [MLXArray], + prefix: String, + main: Int, + pointwise: Int?, + bn: Int, + fstride: Int + ) throws -> MLXArray { + var y = MLX.concatenated(inputs, axis: 2) + y = try model.conv2dLayer( + y, + weight: model.w("\(prefix).\(main).weight"), + bias: nil, + fstride: fstride, + lookahead: 0 + ) + if let pointwise { + y = try model.conv2dLayer( + y, + weight: model.w("\(prefix).\(pointwise).weight"), + bias: nil, + fstride: 1, + lookahead: 0 + ) + } + y = try model.batchNorm(y, prefix: "\(prefix).\(bn)") + y = relu(y) + let t = y.shape[2] + return y[0..., 0..., (t - 1).. MLXArray { + var y = relu(model.groupedLinear(x, weight: try model.w("\(prefix).linear_in.0.weight"))) + var nextState = [MLXArray]() + var layer = 0 + + while model.weights["\(prefix).gru.weight_ih_l\(layer)"] != nil { + let prevState: MLXArray + if let state, layer < state.count { + prevState = state[layer] + } else { + prevState = MLXArray.zeros([y.shape[0], hiddenSize], type: Float.self) + } + let h = try gruLayerStep(y, prefix: "\(prefix).gru", layer: layer, hiddenSize: hiddenSize, prevState: prevState) + nextState.append(h) + y = h.expandedDimensions(axis: 1) + layer += 1 + } + + state = nextState + if linearOut, model.weights["\(prefix).linear_out.0.weight"] != nil { + y = relu(model.groupedLinear(y, weight: try model.w("\(prefix).linear_out.0.weight"))) + } + return y + } + + private func gruLayerStep( + _ x: MLXArray, + prefix: String, + layer: Int, + hiddenSize: Int, + prevState: MLXArray + ) throws -> MLXArray { + let wih = try model.w("\(prefix).weight_ih_l\(layer)") + let whh = try model.w("\(prefix).weight_hh_l\(layer)") + let bih = try model.w("\(prefix).bias_ih_l\(layer)") + let bhh = try model.w("\(prefix).bias_hh_l\(layer)") + + let xt = x[0..., 0, 0...] + let gx = MLX.addMM(bih, xt, wih.transposed()) + let gh = MLX.addMM(bhh, prevState, whh.transposed()) + + let xr = gx[0..., 0.. MLXArray { + var embDec = try squeezedGRUStep( + emb, + prefix: "erb_dec.emb_gru", + hiddenSize: model.config.embHiddenDim, + linearOut: true, + state: &erbDecState + ) + let f8 = e3.shape[3] + embDec = embDec.reshaped([1, 1, f8, -1]).transposed(0, 3, 1, 2) + + var d3 = relu(try model.applyPathwayConv(e3, prefix: "erb_dec.conv3p")) + embDec + d3 = relu(try model.applyRegularBlock(d3, prefix: "erb_dec.convt3")) + var d2 = relu(try model.applyPathwayConv(e2, prefix: "erb_dec.conv2p")) + d3 + d2 = relu(try model.applyTransposeBlock(d2, prefix: "erb_dec.convt2", fstride: 2)) + var d1 = relu(try model.applyPathwayConv(e1, prefix: "erb_dec.conv1p")) + d2 + d1 = relu(try model.applyTransposeBlock(d1, prefix: "erb_dec.convt1", fstride: 2)) + let d0 = relu(try model.applyPathwayConv(e0, prefix: "erb_dec.conv0p")) + d1 + let out = try model.applyOutputConv(d0, prefix: "erb_dec.conv0_out") + return sigmoid(out) + } + + private func dfDecoderStep(emb: MLXArray, c0: MLXArray) throws -> MLXArray { + var c = try squeezedGRUStep( + emb, + prefix: "df_dec.df_gru", + hiddenSize: model.config.dfHiddenDim, + linearOut: false, + state: &dfDecState + ) + if model.weights["df_dec.df_skip.weight"] != nil { + c = c + model.groupedLinear(emb, weight: try model.w("df_dec.df_skip.weight")) + } + + appendWithLimit(&dfConvpIn, c0, maxLen: model.config.dfPathwayKernelSizeT) + let c0Seq = MLX.concatenated(dfConvpIn, axis: 2) + var c0p = try model.conv2dLayer( + c0Seq, + weight: model.w("df_dec.df_convp.1.weight"), + bias: nil, + fstride: 1, + lookahead: 0 + ) + c0p = try model.conv2dLayer( + c0p, + weight: model.w("df_dec.df_convp.2.weight"), + bias: nil, + fstride: 1, + lookahead: 0 + ) + c0p = relu(try model.batchNorm(c0p, prefix: "df_dec.df_convp.3")) + let t = c0p.shape[2] + c0p = c0p[0..., 0..., (t - 1).. MLXArray { + let b = mask.shape[0] + let t = mask.shape[2] + let e = mask.shape[3] + let flat = mask.reshaped([b * t, e]) + let gains = MLX.matmul(flat, model.erbInvFB).reshaped([b, 1, t, model.config.freqBins, 1]) + return spec * gains + } + + private func deepFilterAssign( + spec: MLXArray, + specMasked: MLXArray, + dfCoefs: MLXArray, + currentSpec: MLXArray + ) throws -> MLXArray { + appendWithLimit(&specPast, currentSpec, maxLen: dfOrder) + let left = dfOrder - dfLookahead - 1 + + let past = Array(specPast.dropLast()) + let needPast = max(0, left - past.count) + var specWindow = [MLXArray]() + specWindow.reserveCapacity(dfOrder) + for _ in 0.. 0 { + specWindow.append(contentsOf: past.suffix(left)) + } + specWindow.append(currentSpec) + + let futureAvailable = min(dfLookahead, specQueue.count) + if futureAvailable > 0 { + specWindow.append(contentsOf: specQueue.prefix(futureAvailable)) + } + for _ in futureAvailable..(_ buffer: inout [T], _ value: T, maxLen: Int) { + buffer.append(value) + if buffer.count > maxLen { + buffer.removeFirst(buffer.count - maxLen) + } + } + + // Materialize recurrent tensors each hop so MLX does not keep growing a long lazy graph. + private func materializeStreamingState(output: MLXArray) { + eval(output, analysisMem, synthMem, erbState, dfState) + if let encEmbState { + for x in encEmbState { eval(x) } + } + if let erbDecState { + for x in erbDecState { eval(x) } + } + if let dfDecState { + for x in dfDecState { eval(x) } + } + } + + private static func linspace(start: Float, end: Float, count: Int) -> [Float] { + guard count > 1 else { return [start] } + let step = (end - start) / Float(count - 1) + return (0.. MLXArray { let frames = x.shape[0] - let bands = x.shape[1] let a = normAlpha() let oneMinusA = Float(1.0) - a + let time = MLXArray.arange(frames).asType(.float32) + let powers = MLX.pow(MLXArray(a), time) // [T] + let invPowers = MLXArray(Float(1.0)) / powers - let input = x.asArray(Float.self) - var state = Self.linspace(start: -60.0, end: -90.0, count: bands) - var out = [Float](repeating: 0, count: input.count) + let scaled = x * invPowers.expandedDimensions(axis: 1) + let accum = cumsum(scaled, axis: 0) - for t in 0.. (MLXArray, MLXArray) { let frames = real.shape[0] - let bins = real.shape[1] let a = normAlpha() let oneMinusA = Float(1.0) - a + let time = MLXArray.arange(frames).asType(.float32) + let powers = MLX.pow(MLXArray(a), time) // [T] + let invPowers = MLXArray(Float(1.0)) / powers - let re = real.asArray(Float.self) - let im = imag.asArray(Float.self) - var state = Self.linspace(start: 0.001, end: 0.0001, count: bins) - var outRe = [Float](repeating: 0, count: re.count) - var outIm = [Float](repeating: 0, count: im.count) - - for t in 0.. Float { - let aRaw = exp(-Float(config.hopSize) / Float(config.sampleRate)) + normAlphaValue + } + + private static func computeNormAlpha(hopSize: Int, sampleRate: Int) -> Float { + let aRaw = exp(-Float(hopSize) / Float(sampleRate)) var precision = 3 var a: Float = 1.0 while a >= 1.0 { diff --git a/Sources/MLXAudioSTS/Models/DeepFilterNet/README.md b/Sources/MLXAudioSTS/Models/DeepFilterNet/README.md index a5b0d1e7..80277332 100644 --- a/Sources/MLXAudioSTS/Models/DeepFilterNet/README.md +++ b/Sources/MLXAudioSTS/Models/DeepFilterNet/README.md @@ -17,3 +17,15 @@ let enhanced = try model.enhance(audio) ``` `audio` is a mono `MLXArray` of shape `[samples]` in `[-1, 1]`. + +Streaming API: + +```swift +let streamer = model.createStreamer( + config: DeepFilterNetStreamingConfig(padEndFrames: 3, compensateDelay: true) +) + +let outA = try streamer.processChunk(chunkA) +let outB = try streamer.processChunk(chunkB) +let tail = try streamer.flush() +``` diff --git a/Sources/Tools/mlx-audio-swift-sts/App.swift b/Sources/Tools/mlx-audio-swift-sts/App.swift index 2b1e4000..827237db 100644 --- a/Sources/Tools/mlx-audio-swift-sts/App.swift +++ b/Sources/Tools/mlx-audio-swift-sts/App.swift @@ -473,16 +473,6 @@ enum App { let (inputSampleRate, rawAudio) = try loadAudioArray(from: inputURL) let audioData = try resampleIfNeeded(rawAudio, from: inputSampleRate, to: model.sampleRate) - print("Enhancing audio with \(model.modelVersion)") - let started = CFAbsoluteTimeGetCurrent() - - let enhanced = try model.enhance(audioData) - eval(enhanced) - let samples = enhanced.asArray(Float.self) - - let duration = Double(samples.count) / Double(model.sampleRate) - print(String(format: "Enhanced %d samples (%.1fs at %dHz)", samples.count, duration, model.sampleRate)) - let outputURL: URL if let path = args.outputTargetPath { outputURL = resolveURL(path: path) @@ -492,8 +482,66 @@ enum App { .appendingPathComponent("\(stem).deepfilternet.wav") } - try AudioUtils.writeWavFile(samples: samples, sampleRate: Double(model.sampleRate), fileURL: outputURL) - print("Wrote WAV to \(outputURL.path)") + let started = CFAbsoluteTimeGetCurrent() + switch args.mode { + case .stream: + print("Enhancing audio with \(model.modelVersion) (mode=stream)") + let streamer = model.createStreamer( + config: DeepFilterNetStreamingConfig( + padEndFrames: 3, + compensateDelay: true + ) + ) + let writer = try StreamingWAVWriter(url: outputURL, sampleRate: Double(model.sampleRate)) + let requestedChunkSamples = max(Int(Float(model.sampleRate) * args.chunkSeconds), model.config.hopSize) + let usingDefaultChunk = abs(args.chunkSeconds - 10.0) < 0.000_001 + let chunkSamples = usingDefaultChunk ? model.config.hopSize : requestedChunkSamples + if usingDefaultChunk { + print("Using hop-by-hop streaming chunk (\(chunkSamples) samples) for low-latency mode") + } + + var chunkCount = 0 + var writtenSamples = 0 + var start = 0 + let totalSamples = audioData.shape[0] + while start < totalSamples { + let end = min(start + chunkSamples, totalSamples) + let outChunk = try streamer.processChunk(audioData[start.. 0 { + let outSamples = outChunk.asArray(Float.self) + try writer.writeChunk(outSamples) + writtenSamples += outSamples.count + chunkCount += 1 + } + start = end + } + + let tail = try streamer.flushMLX() + if tail.shape[0] > 0 { + let tailSamples = tail.asArray(Float.self) + try writer.writeChunk(tailSamples) + writtenSamples += tailSamples.count + chunkCount += 1 + } + _ = writer.finalize() + print("Wrote WAV to \(outputURL.path)") + print("Streamed \(chunkCount) chunk(s)") + let duration = Double(writtenSamples) / Double(model.sampleRate) + print(String(format: "Enhanced %d samples (%.1fs at %dHz)", writtenSamples, duration, model.sampleRate)) + + case .short, .long: + if args.mode == .long { + print("DeepFilterNet --mode long currently uses full-context offline enhancement.") + } + print("Enhancing audio with \(model.modelVersion) (mode=offline)") + let enhanced = try model.enhance(audioData) + eval(enhanced) + let samples = enhanced.asArray(Float.self) + try AudioUtils.writeWavFile(samples: samples, sampleRate: Double(model.sampleRate), fileURL: outputURL) + print("Wrote WAV to \(outputURL.path)") + let duration = Double(samples.count) / Double(model.sampleRate) + print(String(format: "Enhanced %d samples (%.1fs at %dHz)", samples.count, duration, model.sampleRate)) + } let elapsed = CFAbsoluteTimeGetCurrent() - started print(String(format: "Done. Elapsed: %.2fs", elapsed)) @@ -845,6 +893,8 @@ struct CLI { --model Local model dir with config.json + model.safetensors, or Hugging Face repo. -i, --audio Input audio file (required) + --mode short = offline enhance, stream = stateful chunked enhance + --chunk-seconds Chunk duration in stream mode. Default: 10.0 -o, --output-target Enhanced WAV output. Default: .deepfilternet.wav Common: diff --git a/Sources/Tools/mlx-audio-swift-sts/README.md b/Sources/Tools/mlx-audio-swift-sts/README.md index 681fc722..3a58553d 100644 --- a/Sources/Tools/mlx-audio-swift-sts/README.md +++ b/Sources/Tools/mlx-audio-swift-sts/README.md @@ -89,6 +89,17 @@ swift run mlx-audio-swift-sts \ --output-target /tmp/deepfilternet.wav ``` +### DeepFilterNet Streaming Example + +```bash +swift run mlx-audio-swift-sts \ + --model /path/to/DeepFilterNet3 \ + --audio /path/to/noisy.wav \ + --mode stream \ + --chunk-seconds 0.48 \ + --output-target /tmp/deepfilternet_stream.wav +``` + ## Options ### LFM2.5-Audio @@ -124,6 +135,8 @@ swift run mlx-audio-swift-sts \ ### DeepFilterNet - `--model`: Local model directory (or HF repo) containing `config.json` and `model.safetensors` - `--audio`, `-i`: Input audio path (required) +- `--mode`: `short | stream` (`short` uses offline full-context enhancement) +- `--chunk-seconds`: Chunk length for `stream` mode. If omitted, DeepFilterNet defaults to 1 hop (10ms at 48kHz) for low-latency realtime behavior. - `--output-target`, `-o`: Enhanced output wav path (default: `.deepfilternet.wav`) ### Common diff --git a/Tests/MLXAudioSTSTests.swift b/Tests/MLXAudioSTSTests.swift index 149b09a6..e19a4597 100644 --- a/Tests/MLXAudioSTSTests.swift +++ b/Tests/MLXAudioSTSTests.swift @@ -194,6 +194,23 @@ struct DeepFilterNetConfigTests { } } +struct DeepFilterNetStreamingConfigTests { + @Test func deepFilterNetStreamingConfigDefaults() { + let config = DeepFilterNetStreamingConfig() + #expect(config.padEndFrames == 3) + #expect(config.compensateDelay) + } + + @Test func deepFilterNetStreamingConfigOverride() { + let config = DeepFilterNetStreamingConfig( + padEndFrames: 1, + compensateDelay: false + ) + #expect(config.padEndFrames == 1) + #expect(config.compensateDelay == false) + } +} + struct DeepFilterNetLoadingTests { @Test func deepFilterNetFromLocalRejectsMissingConfig() throws { let tempDir = FileManager.default.temporaryDirectory @@ -1541,4 +1558,3 @@ struct LFMAudioModuleSetupTests { #expect(depthformer.layersCount == config.layers) } } - From e4afad096c314eac92ad9bb0545ecf3f68cf2d2f Mon Sep 17 00:00:00 2001 From: Kyle Howells Date: Thu, 5 Mar 2026 21:45:55 +0000 Subject: [PATCH 04/33] DeepFilterNet Swift: optimize streaming grouped conv path and parity-safe tuning --- .../DeepFilterNet/DeepFilterNetModel.swift | 151 ++++++++++++------ 1 file changed, 101 insertions(+), 50 deletions(-) diff --git a/Sources/MLXAudioSTS/Models/DeepFilterNet/DeepFilterNetModel.swift b/Sources/MLXAudioSTS/Models/DeepFilterNet/DeepFilterNetModel.swift index 2fec1dc1..167e7aad 100644 --- a/Sources/MLXAudioSTS/Models/DeepFilterNet/DeepFilterNetModel.swift +++ b/Sources/MLXAudioSTS/Models/DeepFilterNet/DeepFilterNetModel.swift @@ -35,13 +35,25 @@ public enum DeepFilterNetError: Error, LocalizedError, CustomStringConvertible { public struct DeepFilterNetStreamingConfig: Sendable { public var padEndFrames: Int public var compensateDelay: Bool + public var enableStageSkipping: Bool + public var minDbThresh: Float + public var maxDbErbThresh: Float + public var maxDbDfThresh: Float public init( padEndFrames: Int = 3, - compensateDelay: Bool = true + compensateDelay: Bool = true, + enableStageSkipping: Bool = false, + minDbThresh: Float = -10.0, + maxDbErbThresh: Float = 30.0, + maxDbDfThresh: Float = 20.0 ) { self.padEndFrames = padEndFrames self.compensateDelay = compensateDelay + self.enableStageSkipping = enableStageSkipping + self.minDbThresh = minDbThresh + self.maxDbErbThresh = maxDbErbThresh + self.maxDbDfThresh = maxDbDfThresh } } @@ -347,8 +359,14 @@ public final class DeepFilterNetModel: STSModel { private let tenArray = MLXArray(Float(10.0)) private let fortyArray = MLXArray(Float(40.0)) private let zeroSpecFrame: MLXArray + private let zeroMaskFrame: MLXArray private let analysisMemCount: Int private let synthMemCount: Int + private let erbFBFrame: MLXArray? + private let lsnrWeight: MLXArray + private let lsnrBias: MLXArray + private let lsnrScale: MLXArray + private let lsnrOffset: MLXArray private var pendingSamples = MLXArray.zeros([0], type: Float.self) private var analysisMem: MLXArray @@ -369,7 +387,7 @@ public final class DeepFilterNetModel: STSModel { private var dfDecState: [MLXArray]? private var delayDropped = 0 - private var skipCounter = 0 + private var hopsSinceMaterialize = 0 public init(model: DeepFilterNetModel, config: DeepFilterNetStreamingConfig = DeepFilterNetStreamingConfig()) { self.model = model @@ -394,6 +412,19 @@ public final class DeepFilterNetModel: STSModel { self.analysisMemCount = max(0, model.config.fftSize - model.config.hopSize) self.synthMemCount = max(0, model.config.fftSize - model.config.hopSize) self.zeroSpecFrame = MLXArray.zeros([model.config.freqBins, 2], type: Float.self) + self.zeroMaskFrame = MLXArray.zeros([1, 1, 1, model.config.nbErb], type: Float.self) + if model.erbFB.shape.count == 2, + model.erbFB.shape[0] == model.config.freqBins, + model.erbFB.shape[1] == model.config.nbErb + { + self.erbFBFrame = model.erbFB.asType(.float32) + } else { + self.erbFBFrame = nil + } + self.lsnrWeight = (try? model.w("enc.lsnr_fc.0.weight")) ?? MLXArray.zeros([1, model.config.embHiddenDim], type: Float.self) + self.lsnrBias = (try? model.w("enc.lsnr_fc.0.bias")) ?? MLXArray.zeros([1], type: Float.self) + self.lsnrScale = MLXArray(Float(model.config.lsnrMax - model.config.lsnrMin)) + self.lsnrOffset = MLXArray(Float(model.config.lsnrMin)) self.analysisMem = MLXArray.zeros([analysisMemCount], type: Float.self) self.synthMem = MLXArray.zeros([synthMemCount], type: Float.self) @@ -417,7 +448,7 @@ public final class DeepFilterNetModel: STSModel { erbDecState = nil dfDecState = nil delayDropped = 0 - skipCounter = 0 + hopsSinceMaterialize = 0 } public func processChunk(_ chunk: MLXArray, isLast: Bool = false) throws -> MLXArray { @@ -494,16 +525,6 @@ public final class DeepFilterNetModel: STSModel { } private func processHop(_ hopTD: MLXArray) throws -> MLXArray? { - let rms = MLX.mean(hopTD * hopTD, axis: 0).asArray(Float.self).first ?? 0 - if rms < 1e-7 { - skipCounter += 1 - } else { - skipCounter = 0 - } - if skipCounter > 5 { - return MLXArray.zeros([hopSize], type: Float.self) - } - let spec = analysisFrame(hopTD) let (featErb, featDf) = featuresFrame(spec) specQueue.append(spec) @@ -516,7 +537,11 @@ public final class DeepFilterNetModel: STSModel { let specT = specQueue.removeFirst() let specEnhanced = try inferFrame(spec: specT, featErb: featErb, featDf: featDf) let out = synthesisFrame(specEnhanced.asType(.float32)) - materializeStreamingState(output: out) + hopsSinceMaterialize += 1 + if hopsSinceMaterialize >= 8 { + materializeStreamingState(output: out) + hopsSinceMaterialize = 0 + } return out } @@ -578,19 +603,24 @@ public final class DeepFilterNetModel: STSModel { let im = spec[0..., 1] let magSq = re.square() + im.square() - var erbBands = [MLXArray]() - erbBands.reserveCapacity(nbErb) - var start = 0 - for width in model.erbBandWidths { - let stop = min(start + width, freqBins) - if stop > start { - erbBands.append(MLX.mean(magSq[start.. start { + erbBands.append(MLX.mean(magSq[start.. (Bool, Bool, Bool) { + if lsnr < config.minDbThresh { + // Only noise detected: apply zero ERB mask and skip DF. + return (false, true, false) + } + if lsnr > config.maxDbErbThresh { + // Clean speech detected: skip ERB and DF. + return (false, false, false) + } + if lsnr > config.maxDbDfThresh { + // Mild noise: apply ERB gains only. + return (true, false, false) + } + // Regular noisy speech: apply both stages. + return (true, false, true) + } + private func applyConvLast( inputs: [MLXArray], prefix: String, @@ -833,7 +902,6 @@ public final class DeepFilterNetModel: STSModel { dfCoefs: MLXArray, currentSpec: MLXArray ) throws -> MLXArray { - appendWithLimit(&specPast, currentSpec, maxLen: dfOrder) let left = dfOrder - dfLookahead - 1 let past = Array(specPast.dropLast()) @@ -1292,25 +1360,7 @@ public final class DeepFilterNetModel: STSModel { strideW: Int, groups: Int ) throws -> MLXArray { - if groups <= 1 { - return MLX.conv2d(input, weight, stride: [1, strideW], padding: [0, 0], groups: 1) - } - - let inPerGroup = weight.shape[3] - let outChannels = weight.shape[0] - let outPerGroup = max(1, outChannels / groups) - var ys = [MLXArray]() - ys.reserveCapacity(groups) - for g in 0.. MLXArray { @@ -1319,10 +1369,11 @@ public final class DeepFilterNetModel: STSModel { let mean = try w("\(prefix).running_mean") let variance = try w("\(prefix).running_var") - var y = x.transposed(0, 2, 3, 1) - y = (y - mean) / MLX.sqrt(variance + MLXArray(Float(1e-5))) - y = y * gamma + beta - return y.transposed(0, 3, 1, 2) + let gammaR = gamma.reshaped([1, gamma.shape[0], 1, 1]) + let betaR = beta.reshaped([1, beta.shape[0], 1, 1]) + let meanR = mean.reshaped([1, mean.shape[0], 1, 1]) + let varianceR = variance.reshaped([1, variance.shape[0], 1, 1]) + return ((x - meanR) / MLX.sqrt(varianceR + MLXArray(Float(1e-5)))) * gammaR + betaR } private func squeezedGRU( From 579d2f3f40465b555fed91782bab03efa65cf731 Mon Sep 17 00:00:00 2001 From: Kyle Howells Date: Thu, 5 Mar 2026 23:15:02 +0000 Subject: [PATCH 05/33] Checkpoint before DeepFilterNet streaming profiling From a6b442fae169b84b1c646d40dfa2eac48c9ac21a Mon Sep 17 00:00:00 2001 From: Kyle Howells Date: Thu, 5 Mar 2026 23:44:10 +0000 Subject: [PATCH 06/33] DeepFilterNet Swift: add stream profiling and reduce host-copy overhead --- Sources/MLXAudioCore/AudioUtils.swift | 74 ++++++++++++++-- .../DeepFilterNet/DeepFilterNetModel.swift | 88 ++++++++++++++++++- Sources/Tools/mlx-audio-swift-sts/App.swift | 46 ++++++++-- 3 files changed, 190 insertions(+), 18 deletions(-) diff --git a/Sources/MLXAudioCore/AudioUtils.swift b/Sources/MLXAudioCore/AudioUtils.swift index 27ee6d40..2f8a4c93 100644 --- a/Sources/MLXAudioCore/AudioUtils.swift +++ b/Sources/MLXAudioCore/AudioUtils.swift @@ -233,6 +233,8 @@ public class StreamingWAVWriter { private let sampleRate: Double private var audioFile: AVAudioFile? private let format: AVAudioFormat + private var reusableBuffer: AVAudioPCMBuffer? + private var reusableCapacity: Int = 0 public private(set) var framesWritten: Int = 0 public init(url: URL, sampleRate: Double) throws { @@ -252,6 +254,24 @@ public class StreamingWAVWriter { /// Write a chunk of audio samples to the file. public func writeChunk(_ samples: [Float]) throws { + try samples.withUnsafeBytes { raw in + let data = Data(raw) + try writeChunkData(data, sampleCount: samples.count) + } + } + + /// Write a chunk of audio samples from an MLX array directly. + /// Expects a 1D float32 tensor. + public func writeChunk(_ samples: MLXArray) throws { + let f32 = samples.dtype == .float32 ? samples : samples.asType(.float32) + let sampleCount = f32.size + guard sampleCount > 0 else { return } + let data = f32.asData(access: .noCopyIfContiguous).data + try writeChunkData(data, sampleCount: sampleCount) + } + + /// Write a chunk of float32 samples from a byte buffer. + public func writeChunkData(_ samplesData: Data, sampleCount: Int) throws { guard let audioFile else { throw NSError( domain: "StreamingWAVWriter", @@ -259,32 +279,70 @@ public class StreamingWAVWriter { userInfo: [NSLocalizedDescriptionKey: "Audio file not initialized or already finalized"] ) } + guard sampleCount >= 0 else { + throw NSError( + domain: "StreamingWAVWriter", + code: 4, + userInfo: [NSLocalizedDescriptionKey: "Invalid negative sample count: \(sampleCount)"] + ) + } + guard sampleCount > 0 else { return } - let frameCount = AVAudioFrameCount(samples.count) - guard let buffer = AVAudioPCMBuffer(pcmFormat: format, frameCapacity: frameCount) else { + let expectedBytes = sampleCount * MemoryLayout.size + guard samplesData.count >= expectedBytes else { throw NSError( domain: "StreamingWAVWriter", - code: 3, - userInfo: [NSLocalizedDescriptionKey: "Failed to create audio buffer"] + code: 5, + userInfo: [NSLocalizedDescriptionKey: "Insufficient sample data bytes (\(samplesData.count) < \(expectedBytes))"] ) } + let frameCount = AVAudioFrameCount(sampleCount) + let buffer = try getReusableBuffer(minFrameCapacity: sampleCount) buffer.frameLength = frameCount - if let channelData = buffer.floatChannelData { - for i in 0 ..< samples.count { - channelData[0][i] = samples[i] + guard let channelData = buffer.floatChannelData else { + throw NSError( + domain: "StreamingWAVWriter", + code: 6, + userInfo: [NSLocalizedDescriptionKey: "Failed to access output channel data"] + ) + } + samplesData.withUnsafeBytes { src in + if let srcBase = src.baseAddress { + memcpy(channelData[0], srcBase, expectedBytes) } } try audioFile.write(from: buffer) - framesWritten += samples.count + framesWritten += sampleCount } /// Finalize the WAV file and return the URL. /// After calling this method, no more chunks can be written. public func finalize() -> URL { audioFile = nil // Close the file by releasing the reference + reusableBuffer = nil + reusableCapacity = 0 return url } + + private func getReusableBuffer(minFrameCapacity: Int) throws -> AVAudioPCMBuffer { + if let reusableBuffer, reusableCapacity >= minFrameCapacity { + return reusableBuffer + } + guard let newBuffer = AVAudioPCMBuffer( + pcmFormat: format, + frameCapacity: AVAudioFrameCount(minFrameCapacity) + ) else { + throw NSError( + domain: "StreamingWAVWriter", + code: 3, + userInfo: [NSLocalizedDescriptionKey: "Failed to create audio buffer"] + ) + } + reusableBuffer = newBuffer + reusableCapacity = minFrameCapacity + return newBuffer + } } diff --git a/Sources/MLXAudioSTS/Models/DeepFilterNet/DeepFilterNetModel.swift b/Sources/MLXAudioSTS/Models/DeepFilterNet/DeepFilterNetModel.swift index 167e7aad..7a6c4c1a 100644 --- a/Sources/MLXAudioSTS/Models/DeepFilterNet/DeepFilterNetModel.swift +++ b/Sources/MLXAudioSTS/Models/DeepFilterNet/DeepFilterNetModel.swift @@ -39,6 +39,8 @@ public struct DeepFilterNetStreamingConfig: Sendable { public var minDbThresh: Float public var maxDbErbThresh: Float public var maxDbDfThresh: Float + public var enableProfiling: Bool + public var materializeEveryHops: Int public init( padEndFrames: Int = 3, @@ -46,7 +48,9 @@ public struct DeepFilterNetStreamingConfig: Sendable { enableStageSkipping: Bool = false, minDbThresh: Float = -10.0, maxDbErbThresh: Float = 30.0, - maxDbDfThresh: Float = 20.0 + maxDbDfThresh: Float = 20.0, + enableProfiling: Bool = false, + materializeEveryHops: Int = 32 ) { self.padEndFrames = padEndFrames self.compensateDelay = compensateDelay @@ -54,6 +58,8 @@ public struct DeepFilterNetStreamingConfig: Sendable { self.minDbThresh = minDbThresh self.maxDbErbThresh = maxDbErbThresh self.maxDbDfThresh = maxDbDfThresh + self.enableProfiling = enableProfiling + self.materializeEveryHops = materializeEveryHops } } @@ -388,10 +394,18 @@ public final class DeepFilterNetModel: STSModel { private var delayDropped = 0 private var hopsSinceMaterialize = 0 + private let enableProfiling: Bool + private var profHopCount = 0 + private var profAnalysisSeconds = 0.0 + private var profFeaturesSeconds = 0.0 + private var profInferSeconds = 0.0 + private var profSynthesisSeconds = 0.0 + private var profMaterializeSeconds = 0.0 public init(model: DeepFilterNetModel, config: DeepFilterNetStreamingConfig = DeepFilterNetStreamingConfig()) { self.model = model self.config = config + self.enableProfiling = config.enableProfiling self.fftSize = model.config.fftSize self.hopSize = model.config.hopSize @@ -449,6 +463,12 @@ public final class DeepFilterNetModel: STSModel { dfDecState = nil delayDropped = 0 hopsSinceMaterialize = 0 + profHopCount = 0 + profAnalysisSeconds = 0.0 + profFeaturesSeconds = 0.0 + profInferSeconds = 0.0 + profSynthesisSeconds = 0.0 + profMaterializeSeconds = 0.0 } public func processChunk(_ chunk: MLXArray, isLast: Bool = false) throws -> MLXArray { @@ -491,7 +511,14 @@ public final class DeepFilterNetModel: STSModel { } } - var y = outs.isEmpty ? MLXArray.zeros([0], type: Float.self) : MLX.concatenated(outs, axis: 0) + var y: MLXArray + if outs.isEmpty { + y = MLXArray.zeros([0], type: Float.self) + } else if outs.count == 1, let first = outs.first { + y = first + } else { + y = MLX.concatenated(outs, axis: 0) + } if config.compensateDelay { let totalDelay = fftSize - hopSize @@ -524,9 +551,48 @@ public final class DeepFilterNetModel: STSModel { try processChunk(MLXArray.zeros([0], type: Float.self), isLast: true) } + public func profilingSummary() -> String? { + guard enableProfiling else { return nil } + let hops = max(profHopCount, 1) + let total = profAnalysisSeconds + profFeaturesSeconds + profInferSeconds + profSynthesisSeconds + profMaterializeSeconds + let perHopMs = (total / Double(hops)) * 1000.0 + func pct(_ v: Double) -> Double { + guard total > 0 else { return 0.0 } + return (v / total) * 100.0 + } + return String( + format: + """ + Stream profile: hops=%d total=%.3fs perHop=%.3fms + analysis: %.3fs (%.1f%%) + features: %.3fs (%.1f%%) + infer: %.3fs (%.1f%%) + synthesis: %.3fs (%.1f%%) + materialize: %.3fs (%.1f%%) + """, + profHopCount, + total, + perHopMs, + profAnalysisSeconds, pct(profAnalysisSeconds), + profFeaturesSeconds, pct(profFeaturesSeconds), + profInferSeconds, pct(profInferSeconds), + profSynthesisSeconds, pct(profSynthesisSeconds), + profMaterializeSeconds, pct(profMaterializeSeconds) + ) + } + private func processHop(_ hopTD: MLXArray) throws -> MLXArray? { + let tAnalysis0 = enableProfiling ? CFAbsoluteTimeGetCurrent() : 0 let spec = analysisFrame(hopTD) + if enableProfiling { + profAnalysisSeconds += CFAbsoluteTimeGetCurrent() - tAnalysis0 + } + + let tFeatures0 = enableProfiling ? CFAbsoluteTimeGetCurrent() : 0 let (featErb, featDf) = featuresFrame(spec) + if enableProfiling { + profFeaturesSeconds += CFAbsoluteTimeGetCurrent() - tFeatures0 + } specQueue.append(spec) frameCount += 1 @@ -535,13 +601,29 @@ public final class DeepFilterNetModel: STSModel { } let specT = specQueue.removeFirst() + let tInfer0 = enableProfiling ? CFAbsoluteTimeGetCurrent() : 0 let specEnhanced = try inferFrame(spec: specT, featErb: featErb, featDf: featDf) + if enableProfiling { + profInferSeconds += CFAbsoluteTimeGetCurrent() - tInfer0 + } + + let tSynth0 = enableProfiling ? CFAbsoluteTimeGetCurrent() : 0 let out = synthesisFrame(specEnhanced.asType(.float32)) + if enableProfiling { + profSynthesisSeconds += CFAbsoluteTimeGetCurrent() - tSynth0 + } hopsSinceMaterialize += 1 - if hopsSinceMaterialize >= 8 { + if config.materializeEveryHops > 0, hopsSinceMaterialize >= config.materializeEveryHops { + let tMat0 = enableProfiling ? CFAbsoluteTimeGetCurrent() : 0 materializeStreamingState(output: out) + if enableProfiling { + profMaterializeSeconds += CFAbsoluteTimeGetCurrent() - tMat0 + } hopsSinceMaterialize = 0 } + if enableProfiling { + profHopCount += 1 + } return out } diff --git a/Sources/Tools/mlx-audio-swift-sts/App.swift b/Sources/Tools/mlx-audio-swift-sts/App.swift index 827237db..53b878b5 100644 --- a/Sources/Tools/mlx-audio-swift-sts/App.swift +++ b/Sources/Tools/mlx-audio-swift-sts/App.swift @@ -486,10 +486,12 @@ enum App { switch args.mode { case .stream: print("Enhancing audio with \(model.modelVersion) (mode=stream)") + let streamProfiling = ProcessInfo.processInfo.environment["DFN_STREAM_PROFILE"] == "1" let streamer = model.createStreamer( config: DeepFilterNetStreamingConfig( padEndFrames: 3, - compensateDelay: true + compensateDelay: true, + enableProfiling: streamProfiling ) ) let writer = try StreamingWAVWriter(url: outputURL, sampleRate: Double(model.sampleRate)) @@ -502,25 +504,39 @@ enum App { var chunkCount = 0 var writtenSamples = 0 + var processSeconds = 0.0 + var emitSeconds = 0.0 var start = 0 let totalSamples = audioData.shape[0] while start < totalSamples { let end = min(start + chunkSamples, totalSamples) + let tProcess0 = CFAbsoluteTimeGetCurrent() let outChunk = try streamer.processChunk(audioData[start.. 0 { + eval(outChunk) + } + processSeconds += CFAbsoluteTimeGetCurrent() - tProcess0 if outChunk.shape[0] > 0 { - let outSamples = outChunk.asArray(Float.self) - try writer.writeChunk(outSamples) - writtenSamples += outSamples.count + let tEmit0 = CFAbsoluteTimeGetCurrent() + try writer.writeChunk(outChunk) + emitSeconds += CFAbsoluteTimeGetCurrent() - tEmit0 + writtenSamples += outChunk.shape[0] chunkCount += 1 } start = end } + let tTail0 = CFAbsoluteTimeGetCurrent() let tail = try streamer.flushMLX() + if streamProfiling, tail.shape[0] > 0 { + eval(tail) + } + processSeconds += CFAbsoluteTimeGetCurrent() - tTail0 if tail.shape[0] > 0 { - let tailSamples = tail.asArray(Float.self) - try writer.writeChunk(tailSamples) - writtenSamples += tailSamples.count + let tTailEmit0 = CFAbsoluteTimeGetCurrent() + try writer.writeChunk(tail) + emitSeconds += CFAbsoluteTimeGetCurrent() - tTailEmit0 + writtenSamples += tail.shape[0] chunkCount += 1 } _ = writer.finalize() @@ -528,6 +544,22 @@ enum App { print("Streamed \(chunkCount) chunk(s)") let duration = Double(writtenSamples) / Double(model.sampleRate) print(String(format: "Enhanced %d samples (%.1fs at %dHz)", writtenSamples, duration, model.sampleRate)) + if streamProfiling { + let loopTotal = processSeconds + emitSeconds + print( + String( + format: + "Stream loop profile: process=%.3fs (%.1f%%), emit(mlx->host+wav)=%.3fs (%.1f%%)", + processSeconds, + loopTotal > 0 ? (processSeconds / loopTotal) * 100.0 : 0.0, + emitSeconds, + loopTotal > 0 ? (emitSeconds / loopTotal) * 100.0 : 0.0 + ) + ) + if let summary = streamer.profilingSummary() { + print(summary) + } + } case .short, .long: if args.mode == .long { From dbdc10bd1f3ff9d783742eab6566f03d136c257c Mon Sep 17 00:00:00 2001 From: Kyle Howells Date: Fri, 6 Mar 2026 20:08:06 +0000 Subject: [PATCH 07/33] Optimize DeepFilterNet Swift hot path with parity-safe conv caching --- .../DeepFilterNet/DeepFilterNetModel.swift | 314 ++++++++++++++++-- Sources/Tools/mlx-audio-swift-sts/App.swift | 179 ++++++---- 2 files changed, 394 insertions(+), 99 deletions(-) diff --git a/Sources/MLXAudioSTS/Models/DeepFilterNet/DeepFilterNetModel.swift b/Sources/MLXAudioSTS/Models/DeepFilterNet/DeepFilterNetModel.swift index 7a6c4c1a..a9f495ad 100644 --- a/Sources/MLXAudioSTS/Models/DeepFilterNet/DeepFilterNetModel.swift +++ b/Sources/MLXAudioSTS/Models/DeepFilterNet/DeepFilterNetModel.swift @@ -40,6 +40,7 @@ public struct DeepFilterNetStreamingConfig: Sendable { public var maxDbErbThresh: Float public var maxDbDfThresh: Float public var enableProfiling: Bool + public var profilingForceEvalPerStage: Bool public var materializeEveryHops: Int public init( @@ -50,7 +51,8 @@ public struct DeepFilterNetStreamingConfig: Sendable { maxDbErbThresh: Float = 30.0, maxDbDfThresh: Float = 20.0, enableProfiling: Bool = false, - materializeEveryHops: Int = 32 + profilingForceEvalPerStage: Bool = false, + materializeEveryHops: Int = 256 ) { self.padEndFrames = padEndFrames self.compensateDelay = compensateDelay @@ -59,6 +61,7 @@ public struct DeepFilterNetStreamingConfig: Sendable { self.maxDbErbThresh = maxDbErbThresh self.maxDbDfThresh = maxDbDfThresh self.enableProfiling = enableProfiling + self.profilingForceEvalPerStage = profilingForceEvalPerStage self.materializeEveryHops = materializeEveryHops } } @@ -85,6 +88,11 @@ public final class DeepFilterNetModel: STSModel { private let wnorm: Float private let normAlphaValue: Float private let inferenceDType: DType + private let bnScale: [String: MLXArray] + private let bnBias: [String: MLXArray] + private let conv2dWeightsOHWI: [String: MLXArray] + private let convTransposeDenseWeights: [String: MLXArray] + private let convTransposeGroupWeights: [String: [MLXArray]] private let j: MLXArray = MLXArray(real: Float(0.0), imaginary: Float(1.0)) private init( @@ -117,6 +125,18 @@ public final class DeepFilterNetModel: STSModel { self.wnorm = 1.0 / Float(config.fftSize * config.fftSize) * Float(2 * config.hopSize) self.normAlphaValue = Self.computeNormAlpha(hopSize: config.hopSize, sampleRate: config.sampleRate) self.inferenceDType = weights["enc.erb_conv0.1.weight"]?.dtype ?? .float32 + let (bnScale, bnBias) = Self.buildBatchNormAffine(weights: weights) + self.bnScale = bnScale + self.bnBias = bnBias + self.conv2dWeightsOHWI = Self.buildConv2dWeightCache(weights: weights) + self.convTransposeDenseWeights = Self.buildDenseTransposeWeights( + weights: weights, + groups: max(1, config.convCh) + ) + self.convTransposeGroupWeights = Self.buildGroupedTransposeWeights( + weights: weights, + groups: max(1, config.convCh) + ) } // MARK: - Loading @@ -401,11 +421,13 @@ public final class DeepFilterNetModel: STSModel { private var profInferSeconds = 0.0 private var profSynthesisSeconds = 0.0 private var profMaterializeSeconds = 0.0 + private let profilingForceEvalPerStage: Bool public init(model: DeepFilterNetModel, config: DeepFilterNetStreamingConfig = DeepFilterNetStreamingConfig()) { self.model = model self.config = config self.enableProfiling = config.enableProfiling + self.profilingForceEvalPerStage = config.profilingForceEvalPerStage self.fftSize = model.config.fftSize self.hopSize = model.config.hopSize @@ -584,12 +606,18 @@ public final class DeepFilterNetModel: STSModel { private func processHop(_ hopTD: MLXArray) throws -> MLXArray? { let tAnalysis0 = enableProfiling ? CFAbsoluteTimeGetCurrent() : 0 let spec = analysisFrame(hopTD) + if enableProfiling, profilingForceEvalPerStage { + eval(spec) + } if enableProfiling { profAnalysisSeconds += CFAbsoluteTimeGetCurrent() - tAnalysis0 } let tFeatures0 = enableProfiling ? CFAbsoluteTimeGetCurrent() : 0 let (featErb, featDf) = featuresFrame(spec) + if enableProfiling, profilingForceEvalPerStage { + eval(featErb, featDf) + } if enableProfiling { profFeaturesSeconds += CFAbsoluteTimeGetCurrent() - tFeatures0 } @@ -603,12 +631,18 @@ public final class DeepFilterNetModel: STSModel { let specT = specQueue.removeFirst() let tInfer0 = enableProfiling ? CFAbsoluteTimeGetCurrent() : 0 let specEnhanced = try inferFrame(spec: specT, featErb: featErb, featDf: featDf) + if enableProfiling, profilingForceEvalPerStage { + eval(specEnhanced) + } if enableProfiling { profInferSeconds += CFAbsoluteTimeGetCurrent() - tInfer0 } let tSynth0 = enableProfiling ? CFAbsoluteTimeGetCurrent() : 0 let out = synthesisFrame(specEnhanced.asType(.float32)) + if enableProfiling, profilingForceEvalPerStage { + eval(out) + } if enableProfiling { profSynthesisSeconds += CFAbsoluteTimeGetCurrent() - tSynth0 } @@ -820,10 +854,16 @@ public final class DeepFilterNetModel: STSModel { bn: Int, fstride: Int ) throws -> MLXArray { - var y = MLX.concatenated(inputs, axis: 2) + let merged: MLXArray + if inputs.count == 1, let only = inputs.first { + merged = only + } else { + merged = MLX.concatenated(inputs, axis: 2) + } + var y = merged y = try model.conv2dLayer( y, - weight: model.w("\(prefix).\(main).weight"), + weightKey: "\(prefix).\(main).weight", bias: nil, fstride: fstride, lookahead: 0 @@ -831,7 +871,7 @@ public final class DeepFilterNetModel: STSModel { if let pointwise { y = try model.conv2dLayer( y, - weight: model.w("\(prefix).\(pointwise).weight"), + weightKey: "\(prefix).\(pointwise).weight", bias: nil, fstride: 1, lookahead: 0 @@ -944,17 +984,22 @@ public final class DeepFilterNetModel: STSModel { } appendWithLimit(&dfConvpIn, c0, maxLen: model.config.dfPathwayKernelSizeT) - let c0Seq = MLX.concatenated(dfConvpIn, axis: 2) + let c0Seq: MLXArray + if dfConvpIn.count == 1, let only = dfConvpIn.first { + c0Seq = only + } else { + c0Seq = MLX.concatenated(dfConvpIn, axis: 2) + } var c0p = try model.conv2dLayer( c0Seq, - weight: model.w("df_dec.df_convp.1.weight"), + weightKey: "df_dec.df_convp.1.weight", bias: nil, fstride: 1, lookahead: 0 ) c0p = try model.conv2dLayer( c0p, - weight: model.w("df_dec.df_convp.2.weight"), + weightKey: "df_dec.df_convp.2.weight", bias: nil, fstride: 1, lookahead: 0 @@ -986,15 +1031,21 @@ public final class DeepFilterNetModel: STSModel { ) throws -> MLXArray { let left = dfOrder - dfLookahead - 1 - let past = Array(specPast.dropLast()) - let needPast = max(0, left - past.count) + let pastCount = max(0, specPast.count - 1) + let needPast = max(0, left - pastCount) var specWindow = [MLXArray]() specWindow.reserveCapacity(dfOrder) for _ in 0.. 0 { - specWindow.append(contentsOf: past.suffix(left)) + let copyCount = min(left, pastCount) + let start = pastCount - copyCount + if copyCount > 0 { + for i in start..(_ buffer: inout [T], _ value: T, maxLen: Int) { + guard maxLen > 0 else { + buffer.removeAll(keepingCapacity: true) + return + } buffer.append(value) if buffer.count > maxLen { - buffer.removeFirst(buffer.count - maxLen) + buffer.removeFirst() } } @@ -1182,14 +1237,14 @@ public final class DeepFilterNetModel: STSModel { var c0p = try conv2dLayer( c0, - weight: try w("df_dec.df_convp.1.weight"), + weightKey: "df_dec.df_convp.1.weight", bias: nil, fstride: 1, lookahead: 0 ) c0p = try conv2dLayer( c0p, - weight: try w("df_dec.df_convp.2.weight"), + weightKey: "df_dec.df_convp.2.weight", bias: nil, fstride: 1, lookahead: 0 @@ -1264,7 +1319,7 @@ public final class DeepFilterNetModel: STSModel { ) throws -> MLXArray { var y = try conv2dLayer( x, - weight: w("\(prefix).\(main).weight"), + weightKey: "\(prefix).\(main).weight", bias: nil, fstride: fstride, lookahead: 0 @@ -1272,7 +1327,7 @@ public final class DeepFilterNetModel: STSModel { if let pointwise { y = try conv2dLayer( y, - weight: w("\(prefix).\(pointwise).weight"), + weightKey: "\(prefix).\(pointwise).weight", bias: nil, fstride: 1, lookahead: 0 @@ -1285,7 +1340,7 @@ public final class DeepFilterNetModel: STSModel { private func applyPathwayConv(_ x: MLXArray, prefix: String) throws -> MLXArray { var y = try conv2dLayer( x, - weight: w("\(prefix).0.weight"), + weightKey: "\(prefix).0.weight", bias: nil, fstride: 1, lookahead: 0 @@ -1297,13 +1352,13 @@ public final class DeepFilterNetModel: STSModel { private func applyTransposeBlock(_ x: MLXArray, prefix: String, fstride: Int) throws -> MLXArray { var y = try convTranspose2dLayer( x, - weight: w("\(prefix).0.weight"), + weightKey: "\(prefix).0.weight", fstride: fstride, groups: config.convCh ) y = try conv2dLayer( y, - weight: w("\(prefix).1.weight"), + weightKey: "\(prefix).1.weight", bias: nil, fstride: 1, lookahead: 0 @@ -1314,14 +1369,14 @@ public final class DeepFilterNetModel: STSModel { private func applyRegularBlock(_ x: MLXArray, prefix: String) throws -> MLXArray { var y = try conv2dLayer( x, - weight: w("\(prefix).0.weight"), + weightKey: "\(prefix).0.weight", bias: nil, fstride: 1, lookahead: 0 ) y = try conv2dLayer( y, - weight: w("\(prefix).1.weight"), + weightKey: "\(prefix).1.weight", bias: nil, fstride: 1, lookahead: 0 @@ -1332,7 +1387,7 @@ public final class DeepFilterNetModel: STSModel { private func applyOutputConv(_ x: MLXArray, prefix: String) throws -> MLXArray { var y = try conv2dLayer( x, - weight: w("\(prefix).0.weight"), + weightKey: "\(prefix).0.weight", bias: nil, fstride: 1, lookahead: 0 @@ -1341,6 +1396,31 @@ public final class DeepFilterNetModel: STSModel { return y } + private func conv2dLayer( + _ xBCHW: MLXArray, + weightKey: String, + bias: MLXArray?, + fstride: Int, + lookahead: Int + ) throws -> MLXArray { + if let wOHWI = conv2dWeightsOHWI[weightKey] { + return conv2dLayer( + xBCHW, + weightOHWI: wOHWI, + bias: bias, + fstride: fstride, + lookahead: lookahead + ) + } + return try conv2dLayer( + xBCHW, + weight: w(weightKey), + bias: bias, + fstride: fstride, + lookahead: lookahead + ) + } + private func conv2dLayer( _ xBCHW: MLXArray, weight: MLXArray, @@ -1348,9 +1428,25 @@ public final class DeepFilterNetModel: STSModel { fstride: Int, lookahead: Int ) throws -> MLXArray { - let kT = weight.shape[2] - let kF = weight.shape[3] - let inPerGroup = weight.shape[1] + conv2dLayer( + xBCHW, + weightOHWI: weight.transposed(0, 2, 3, 1), + bias: bias, + fstride: fstride, + lookahead: lookahead + ) + } + + private func conv2dLayer( + _ xBCHW: MLXArray, + weightOHWI: MLXArray, + bias: MLXArray?, + fstride: Int, + lookahead: Int + ) -> MLXArray { + let kT = weightOHWI.shape[1] + let kF = weightOHWI.shape[2] + let inPerGroup = weightOHWI.shape[3] let inChannels = xBCHW.shape[1] let groups = max(1, inChannels / max(1, inPerGroup)) @@ -1375,14 +1471,50 @@ public final class DeepFilterNetModel: STSModel { mode: .constant ) - let wOHWI = weight.transposed(0, 2, 3, 1) - var y = try groupedConv2d(input: x, weight: wOHWI, strideW: fstride, groups: groups) + var y = MLX.conv2d(x, weightOHWI, stride: [1, fstride], padding: [0, 0], groups: groups) if let bias { y = y + bias.reshaped([1, 1, 1, bias.shape[0]]) } return y.transposed(0, 3, 1, 2) } + private func convTranspose2dLayer( + _ xBCHW: MLXArray, + weightKey: String, + fstride: Int, + groups: Int + ) throws -> MLXArray { + if groups > 1, let denseWeight = convTransposeDenseWeights[weightKey] { + var x = xBCHW.transposed(0, 2, 3, 1) // NHWC + let kT = denseWeight.shape[1] + let kF = denseWeight.shape[2] + let padding = IntOrPair((kT - 1, kF / 2)) + let outputPadding = IntOrPair((0, kF / 2)) + x = MLX.convTransposed2d( + x, + denseWeight, + stride: [1, fstride], + padding: padding, + outputPadding: outputPadding, + groups: 1 + ) + return x.transposed(0, 3, 1, 2) + } + if groups > 1, let groupedWeights = convTransposeGroupWeights[weightKey], groupedWeights.count == groups { + return convTranspose2dLayer( + xBCHW, + groupedWeights: groupedWeights, + fstride: fstride + ) + } + return try convTranspose2dLayer( + xBCHW, + weight: w(weightKey), + fstride: fstride, + groups: groups + ) + } + private func convTranspose2dLayer( _ xBCHW: MLXArray, weight: MLXArray, @@ -1436,6 +1568,39 @@ public final class DeepFilterNetModel: STSModel { return y.transposed(0, 3, 1, 2) } + private func convTranspose2dLayer( + _ xBCHW: MLXArray, + groupedWeights: [MLXArray], + fstride: Int + ) -> MLXArray { + let groups = groupedWeights.count + var x = xBCHW.transposed(0, 2, 3, 1) // NHWC + let kT = groupedWeights[0].shape[1] + let kF = groupedWeights[0].shape[2] + let padding = IntOrPair((kT - 1, kF / 2)) + let outputPadding = IntOrPair((0, kF / 2)) + let inPerGroup = max(1, x.shape[3] / groups) + + var ys = [MLXArray]() + ys.reserveCapacity(groups) + for (g, wT) in groupedWeights.enumerated() { + let inStart = g * inPerGroup + let inEnd = inStart + inPerGroup + let xg = x[0..., 0..., 0..., inStart.. MLXArray { + if let scale = bnScale[prefix], let bias = bnBias[prefix] { + return x * scale + bias + } + let gamma = try w("\(prefix).weight") let beta = try w("\(prefix).bias") let mean = try w("\(prefix).running_mean") let variance = try w("\(prefix).running_var") - - let gammaR = gamma.reshaped([1, gamma.shape[0], 1, 1]) - let betaR = beta.reshaped([1, beta.shape[0], 1, 1]) - let meanR = mean.reshaped([1, mean.shape[0], 1, 1]) - let varianceR = variance.reshaped([1, variance.shape[0], 1, 1]) - return ((x - meanR) / MLX.sqrt(varianceR + MLXArray(Float(1e-5)))) * gammaR + betaR + let scale = (gamma / MLX.sqrt(variance + MLXArray(Float(1e-5)))) + .reshaped([1, gamma.shape[0], 1, 1]) + let shift = (beta - mean * (gamma / MLX.sqrt(variance + MLXArray(Float(1e-5))))) + .reshaped([1, beta.shape[0], 1, 1]) + return x * scale + shift } private func squeezedGRU( @@ -1686,6 +1854,88 @@ public final class DeepFilterNetModel: STSModel { return (0.. ([String: MLXArray], [String: MLXArray]) { + var scaleByPrefix = [String: MLXArray]() + var biasByPrefix = [String: MLXArray]() + + for (key, mean) in weights where key.hasSuffix(".running_mean") { + let prefix = String(key.dropLast(".running_mean".count)) + guard let gamma = weights["\(prefix).weight"], + let beta = weights["\(prefix).bias"], + let variance = weights["\(prefix).running_var"] + else { + continue + } + let scale = gamma / MLX.sqrt(variance + MLXArray(Float(1e-5))) + let shift = beta - mean * scale + scaleByPrefix[prefix] = scale.reshaped([1, scale.shape[0], 1, 1]) + biasByPrefix[prefix] = shift.reshaped([1, shift.shape[0], 1, 1]) + } + + return (scaleByPrefix, biasByPrefix) + } + + private static func buildConv2dWeightCache(weights: [String: MLXArray]) -> [String: MLXArray] { + var cache = [String: MLXArray]() + for (key, weight) in weights where key.hasSuffix(".weight") && weight.ndim == 4 { + cache[key] = weight.transposed(0, 2, 3, 1) + } + return cache + } + + private static func buildGroupedTransposeWeights( + weights: [String: MLXArray], + groups: Int + ) -> [String: [MLXArray]] { + guard groups > 1 else { return [:] } + var cache = [String: [MLXArray]]() + for (key, weight) in weights where key.hasSuffix(".0.weight") && weight.ndim == 4 { + guard weight.shape[0] % groups == 0 else { continue } + let inPerGroup = weight.shape[0] / groups + var grouped = [MLXArray]() + grouped.reserveCapacity(groups) + for g in 0.. [String: MLXArray] { + guard groups > 1 else { return [:] } + var cache = [String: MLXArray]() + for (key, weight) in weights where key.hasSuffix(".0.weight") && weight.ndim == 4 { + guard weight.shape[0] % groups == 0 else { continue } + let inPerGroup = weight.shape[0] / groups + let outPerGroup = weight.shape[1] + let kT = weight.shape[2] + let kF = weight.shape[3] + let totalIn = inPerGroup * groups + + var outBlocks = [MLXArray]() + outBlocks.reserveCapacity(groups) + for g in 0.. MLXArray { guard let value = weights[key] else { throw DeepFilterNetError.missingWeightKey(key) diff --git a/Sources/Tools/mlx-audio-swift-sts/App.swift b/Sources/Tools/mlx-audio-swift-sts/App.swift index 53b878b5..686a9bac 100644 --- a/Sources/Tools/mlx-audio-swift-sts/App.swift +++ b/Sources/Tools/mlx-audio-swift-sts/App.swift @@ -483,82 +483,127 @@ enum App { } let started = CFAbsoluteTimeGetCurrent() + let env = ProcessInfo.processInfo.environment + let forcedDevice = env["DFN_DEVICE"]?.lowercased() + if let forcedDevice { + print("Using MLX device override: \(forcedDevice)") + } switch args.mode { case .stream: print("Enhancing audio with \(model.modelVersion) (mode=stream)") - let streamProfiling = ProcessInfo.processInfo.environment["DFN_STREAM_PROFILE"] == "1" - let streamer = model.createStreamer( - config: DeepFilterNetStreamingConfig( - padEndFrames: 3, - compensateDelay: true, - enableProfiling: streamProfiling - ) - ) - let writer = try StreamingWAVWriter(url: outputURL, sampleRate: Double(model.sampleRate)) - let requestedChunkSamples = max(Int(Float(model.sampleRate) * args.chunkSeconds), model.config.hopSize) - let usingDefaultChunk = abs(args.chunkSeconds - 10.0) < 0.000_001 - let chunkSamples = usingDefaultChunk ? model.config.hopSize : requestedChunkSamples - if usingDefaultChunk { - print("Using hop-by-hop streaming chunk (\(chunkSamples) samples) for low-latency mode") - } + let streamProfiling = env["DFN_STREAM_PROFILE"] == "1" + let forceStageEval = env["DFN_STREAM_PROFILE_STAGE_EVAL"] == "1" + let materializeEveryHops = max(Int(env["DFN_STREAM_MAT_EVERY"] ?? "") ?? 256, 0) + let enableStageSkipping = env["DFN_STREAM_STAGE_SKIP"] == "1" + let bypassModel = env["DFN_STREAM_BYPASS"] == "1" + + let runStream = { + let streamer = bypassModel + ? nil + : model.createStreamer( + config: DeepFilterNetStreamingConfig( + padEndFrames: 3, + compensateDelay: true, + enableStageSkipping: enableStageSkipping, + enableProfiling: streamProfiling, + profilingForceEvalPerStage: forceStageEval, + materializeEveryHops: materializeEveryHops + ) + ) + let writer = try StreamingWAVWriter(url: outputURL, sampleRate: Double(model.sampleRate)) + let requestedChunkSamples = max(Int(Float(model.sampleRate) * args.chunkSeconds), model.config.hopSize) + let usingDefaultChunk = abs(args.chunkSeconds - 10.0) < 0.000_001 + let chunkSamples = usingDefaultChunk ? model.config.hopSize : requestedChunkSamples + if usingDefaultChunk { + print("Using hop-by-hop streaming chunk (\(chunkSamples) samples) for low-latency mode") + } + if bypassModel { + print("Bypass mode enabled: measuring stream harness overhead only") + } + if streamProfiling { + print( + "Stream profiling enabled (stageEval=\(forceStageEval), materializeEveryHops=\(materializeEveryHops), stageSkip=\(enableStageSkipping))" + ) + } - var chunkCount = 0 - var writtenSamples = 0 - var processSeconds = 0.0 - var emitSeconds = 0.0 - var start = 0 - let totalSamples = audioData.shape[0] - while start < totalSamples { - let end = min(start + chunkSamples, totalSamples) - let tProcess0 = CFAbsoluteTimeGetCurrent() - let outChunk = try streamer.processChunk(audioData[start.. 0 { - eval(outChunk) + var chunkCount = 0 + var writtenSamples = 0 + var processSeconds = 0.0 + var emitSeconds = 0.0 + var start = 0 + let totalSamples = audioData.shape[0] + while start < totalSamples { + let end = min(start + chunkSamples, totalSamples) + let tProcess0 = CFAbsoluteTimeGetCurrent() + let outChunk: MLXArray + if let streamer { + outChunk = try streamer.processChunk(audioData[start.. 0 { + eval(outChunk) + } + processSeconds += CFAbsoluteTimeGetCurrent() - tProcess0 + if outChunk.shape[0] > 0 { + let tEmit0 = CFAbsoluteTimeGetCurrent() + try writer.writeChunk(outChunk) + emitSeconds += CFAbsoluteTimeGetCurrent() - tEmit0 + writtenSamples += outChunk.shape[0] + chunkCount += 1 + } + start = end } - processSeconds += CFAbsoluteTimeGetCurrent() - tProcess0 - if outChunk.shape[0] > 0 { - let tEmit0 = CFAbsoluteTimeGetCurrent() - try writer.writeChunk(outChunk) - emitSeconds += CFAbsoluteTimeGetCurrent() - tEmit0 - writtenSamples += outChunk.shape[0] - chunkCount += 1 + + if let streamer { + let tTail0 = CFAbsoluteTimeGetCurrent() + let tail = try streamer.flushMLX() + if streamProfiling, tail.shape[0] > 0 { + eval(tail) + } + processSeconds += CFAbsoluteTimeGetCurrent() - tTail0 + if tail.shape[0] > 0 { + let tTailEmit0 = CFAbsoluteTimeGetCurrent() + try writer.writeChunk(tail) + emitSeconds += CFAbsoluteTimeGetCurrent() - tTailEmit0 + writtenSamples += tail.shape[0] + chunkCount += 1 + } + } + _ = writer.finalize() + print("Wrote WAV to \(outputURL.path)") + print("Streamed \(chunkCount) chunk(s)") + let duration = Double(writtenSamples) / Double(model.sampleRate) + print(String(format: "Enhanced %d samples (%.1fs at %dHz)", writtenSamples, duration, model.sampleRate)) + if streamProfiling { + let loopTotal = processSeconds + emitSeconds + print( + String( + format: + "Stream loop profile: process=%.3fs (%.1f%%), emit(mlx->host+wav)=%.3fs (%.1f%%)", + processSeconds, + loopTotal > 0 ? (processSeconds / loopTotal) * 100.0 : 0.0, + emitSeconds, + loopTotal > 0 ? (emitSeconds / loopTotal) * 100.0 : 0.0 + ) + ) + if let streamer, let summary = streamer.profilingSummary() { + print(summary) + } } - start = end } - let tTail0 = CFAbsoluteTimeGetCurrent() - let tail = try streamer.flushMLX() - if streamProfiling, tail.shape[0] > 0 { - eval(tail) - } - processSeconds += CFAbsoluteTimeGetCurrent() - tTail0 - if tail.shape[0] > 0 { - let tTailEmit0 = CFAbsoluteTimeGetCurrent() - try writer.writeChunk(tail) - emitSeconds += CFAbsoluteTimeGetCurrent() - tTailEmit0 - writtenSamples += tail.shape[0] - chunkCount += 1 - } - _ = writer.finalize() - print("Wrote WAV to \(outputURL.path)") - print("Streamed \(chunkCount) chunk(s)") - let duration = Double(writtenSamples) / Double(model.sampleRate) - print(String(format: "Enhanced %d samples (%.1fs at %dHz)", writtenSamples, duration, model.sampleRate)) - if streamProfiling { - let loopTotal = processSeconds + emitSeconds - print( - String( - format: - "Stream loop profile: process=%.3fs (%.1f%%), emit(mlx->host+wav)=%.3fs (%.1f%%)", - processSeconds, - loopTotal > 0 ? (processSeconds / loopTotal) * 100.0 : 0.0, - emitSeconds, - loopTotal > 0 ? (emitSeconds / loopTotal) * 100.0 : 0.0 - ) - ) - if let summary = streamer.profilingSummary() { - print(summary) + switch forcedDevice { + case "cpu": + try Device.withDefaultDevice(.cpu) { + try runStream() + } + case "gpu": + try Device.withDefaultDevice(.gpu) { + try runStream() } + default: + try runStream() } case .short, .long: From bb0b1624ce3fbf377dc9a86fa3de26bbb4e59d21 Mon Sep 17 00:00:00 2001 From: Kyle Howells Date: Fri, 6 Mar 2026 23:55:00 +0000 Subject: [PATCH 08/33] DeepFilterNet Swift: pre-transpose GRU weights and cache streamer lookups Cache transposed GRU weights at model init to avoid per-step transpositions. Extract StreamGRU/StreamGRULayer structs so the streamer holds pre-resolved weight references instead of dictionary lookups each frame. Pre-cache additional hot-path weights (enc_df_fc_emb, df_dec_skip, df_dec_out). Add inference sub-stage profiling (encode/emb/erb/df) and a fast path that bypasses sample accumulation for exact hop-size chunks. Co-Authored-By: Claude Opus 4.6 --- .../DeepFilterNet/DeepFilterNetModel.swift | 199 ++++++++++++++---- 1 file changed, 161 insertions(+), 38 deletions(-) diff --git a/Sources/MLXAudioSTS/Models/DeepFilterNet/DeepFilterNetModel.swift b/Sources/MLXAudioSTS/Models/DeepFilterNet/DeepFilterNetModel.swift index a9f495ad..634f5df7 100644 --- a/Sources/MLXAudioSTS/Models/DeepFilterNet/DeepFilterNetModel.swift +++ b/Sources/MLXAudioSTS/Models/DeepFilterNet/DeepFilterNetModel.swift @@ -93,6 +93,7 @@ public final class DeepFilterNetModel: STSModel { private let conv2dWeightsOHWI: [String: MLXArray] private let convTransposeDenseWeights: [String: MLXArray] private let convTransposeGroupWeights: [String: [MLXArray]] + private let gruTransposedWeights: [String: MLXArray] private let j: MLXArray = MLXArray(real: Float(0.0), imaginary: Float(1.0)) private init( @@ -137,6 +138,7 @@ public final class DeepFilterNetModel: STSModel { weights: weights, groups: max(1, config.convCh) ) + self.gruTransposedWeights = Self.buildGRUTransposedWeightCache(weights: weights) } // MARK: - Loading @@ -362,6 +364,19 @@ public final class DeepFilterNetModel: STSModel { // MARK: - Streaming public final class DeepFilterNetStreamer { + private struct StreamGRULayer { + let wihT: MLXArray + let whhT: MLXArray + let bih: MLXArray + let bhh: MLXArray + } + + private struct StreamGRU { + let linearInWeight: MLXArray + let layers: [StreamGRULayer] + let linearOutWeight: MLXArray? + } + private let model: DeepFilterNetModel public let config: DeepFilterNetStreamingConfig @@ -393,6 +408,12 @@ public final class DeepFilterNetModel: STSModel { private let lsnrBias: MLXArray private let lsnrScale: MLXArray private let lsnrOffset: MLXArray + private let encDfFcEmbWeight: MLXArray + private let dfDecSkipWeight: MLXArray? + private let dfDecOutWeight: MLXArray + private let encEmbGRU: StreamGRU + private let erbDecEmbGRU: StreamGRU + private let dfDecGRU: StreamGRU private var pendingSamples = MLXArray.zeros([0], type: Float.self) private var analysisMem: MLXArray @@ -419,6 +440,10 @@ public final class DeepFilterNetModel: STSModel { private var profAnalysisSeconds = 0.0 private var profFeaturesSeconds = 0.0 private var profInferSeconds = 0.0 + private var profInferEncodeSeconds = 0.0 + private var profInferEmbSeconds = 0.0 + private var profInferErbSeconds = 0.0 + private var profInferDfSeconds = 0.0 private var profSynthesisSeconds = 0.0 private var profMaterializeSeconds = 0.0 private let profilingForceEvalPerStage: Bool @@ -461,6 +486,12 @@ public final class DeepFilterNetModel: STSModel { self.lsnrBias = (try? model.w("enc.lsnr_fc.0.bias")) ?? MLXArray.zeros([1], type: Float.self) self.lsnrScale = MLXArray(Float(model.config.lsnrMax - model.config.lsnrMin)) self.lsnrOffset = MLXArray(Float(model.config.lsnrMin)) + self.encDfFcEmbWeight = Self.requireWeight(model, key: "enc.df_fc_emb.0.weight") + self.dfDecSkipWeight = model.weights["df_dec.df_skip.weight"] + self.dfDecOutWeight = Self.requireWeight(model, key: "df_dec.df_out.0.weight") + self.encEmbGRU = Self.buildStreamGRU(model: model, prefix: "enc.emb_gru") + self.erbDecEmbGRU = Self.buildStreamGRU(model: model, prefix: "erb_dec.emb_gru") + self.dfDecGRU = Self.buildStreamGRU(model: model, prefix: "df_dec.df_gru") self.analysisMem = MLXArray.zeros([analysisMemCount], type: Float.self) self.synthMem = MLXArray.zeros([synthMemCount], type: Float.self) @@ -468,6 +499,33 @@ public final class DeepFilterNetModel: STSModel { self.dfState = MLXArray(Self.linspace(start: 0.001, end: 0.0001, count: model.config.nbDf)) } + private static func requireWeight(_ model: DeepFilterNetModel, key: String) -> MLXArray { + guard let weight = model.weights[key] else { + preconditionFailure("Missing required DeepFilterNet weight: \(key)") + } + return weight + } + + private static func buildStreamGRU(model: DeepFilterNetModel, prefix: String) -> StreamGRU { + let linearIn = requireWeight(model, key: "\(prefix).linear_in.0.weight") + let linearOut = model.weights["\(prefix).linear_out.0.weight"] + + var layers = [StreamGRULayer]() + var layer = 0 + while model.weights["\(prefix).gru.weight_ih_l\(layer)"] != nil { + let wihKey = "\(prefix).gru.weight_ih_l\(layer)" + let whhKey = "\(prefix).gru.weight_hh_l\(layer)" + let wihT = model.gruTransposedWeights[wihKey] ?? requireWeight(model, key: wihKey).transposed() + let whhT = model.gruTransposedWeights[whhKey] ?? requireWeight(model, key: whhKey).transposed() + let bih = requireWeight(model, key: "\(prefix).gru.bias_ih_l\(layer)") + let bhh = requireWeight(model, key: "\(prefix).gru.bias_hh_l\(layer)") + layers.append(StreamGRULayer(wihT: wihT, whhT: whhT, bih: bih, bhh: bhh)) + layer += 1 + } + + return StreamGRU(linearInWeight: linearIn, layers: layers, linearOutWeight: linearOut) + } + public func reset() { pendingSamples = MLXArray.zeros([0], type: Float.self) analysisMem = MLXArray.zeros([analysisMemCount], type: Float.self) @@ -489,6 +547,10 @@ public final class DeepFilterNetModel: STSModel { profAnalysisSeconds = 0.0 profFeaturesSeconds = 0.0 profInferSeconds = 0.0 + profInferEncodeSeconds = 0.0 + profInferEmbSeconds = 0.0 + profInferErbSeconds = 0.0 + profInferDfSeconds = 0.0 profSynthesisSeconds = 0.0 profMaterializeSeconds = 0.0 } @@ -498,6 +560,22 @@ public final class DeepFilterNetModel: STSModel { throw DeepFilterNetError.invalidAudioShape(chunk.shape) } let chunkF32 = chunk.asType(.float32) + if !isLast, pendingSamples.shape[0] == 0, chunkF32.shape[0] == hopSize { + if var out = try processHop(chunkF32) { + if config.compensateDelay { + let totalDelay = fftSize - hopSize + if delayDropped < totalDelay { + let toDrop = min(totalDelay - delayDropped, out.shape[0]) + if toDrop > 0 { + out = out[toDrop.. 0 { if pendingSamples.shape[0] == 0 { pendingSamples = chunkF32 @@ -589,6 +667,10 @@ public final class DeepFilterNetModel: STSModel { analysis: %.3fs (%.1f%%) features: %.3fs (%.1f%%) infer: %.3fs (%.1f%%) + infer.enc: %.3fs (%.1f%% infer) + infer.emb: %.3fs (%.1f%% infer) + infer.erb: %.3fs (%.1f%% infer) + infer.df: %.3fs (%.1f%% infer) synthesis: %.3fs (%.1f%%) materialize: %.3fs (%.1f%%) """, @@ -598,6 +680,10 @@ public final class DeepFilterNetModel: STSModel { profAnalysisSeconds, pct(profAnalysisSeconds), profFeaturesSeconds, pct(profFeaturesSeconds), profInferSeconds, pct(profInferSeconds), + profInferEncodeSeconds, profInferSeconds > 0 ? (profInferEncodeSeconds / profInferSeconds) * 100.0 : 0.0, + profInferEmbSeconds, profInferSeconds > 0 ? (profInferEmbSeconds / profInferSeconds) * 100.0 : 0.0, + profInferErbSeconds, profInferSeconds > 0 ? (profInferErbSeconds / profInferSeconds) * 100.0 : 0.0, + profInferDfSeconds, profInferSeconds > 0 ? (profInferDfSeconds / profInferSeconds) * 100.0 : 0.0, profSynthesisSeconds, pct(profSynthesisSeconds), profMaterializeSeconds, pct(profMaterializeSeconds) ) @@ -765,6 +851,7 @@ public final class DeepFilterNetModel: STSModel { featErb: MLXArray, featDf: MLXArray ) throws -> MLXArray { + let tEncode0 = enableProfiling ? CFAbsoluteTimeGetCurrent() : 0 let specMX = spec .expandedDimensions(axis: 0) .expandedDimensions(axis: 0) @@ -785,16 +872,22 @@ public final class DeepFilterNetModel: STSModel { let c1 = try applyConvLast(inputs: [c0], prefix: "enc.df_conv1", main: 0, pointwise: 1, bn: 2, fstride: 2) var cemb = c1.transposed(0, 2, 3, 1).reshaped([1, 1, -1]) - cemb = relu(model.groupedLinear(cemb, weight: try model.w("enc.df_fc_emb.0.weight"))) + cemb = relu(model.groupedLinear(cemb, weight: encDfFcEmbWeight)) var emb = e3.transposed(0, 2, 3, 1).reshaped([1, 1, -1]) emb = model.config.encConcat ? MLX.concatenated([emb, cemb], axis: -1) : (emb + cemb) + if enableProfiling, profilingForceEvalPerStage { + eval(e3, c1, emb) + } + if enableProfiling { + profInferEncodeSeconds += CFAbsoluteTimeGetCurrent() - tEncode0 + } - emb = try squeezedGRUStep( + let tEmb0 = enableProfiling ? CFAbsoluteTimeGetCurrent() : 0 + emb = squeezedGRUStep( emb, - prefix: "enc.emb_gru", + gru: encEmbGRU, hiddenSize: model.config.embHiddenDim, - linearOut: true, state: &encEmbState ) @@ -808,8 +901,15 @@ public final class DeepFilterNetModel: STSModel { } else { (applyGains, applyGainZeros, applyDf) = (true, false, true) } + if enableProfiling, profilingForceEvalPerStage { + eval(emb) + } + if enableProfiling { + profInferEmbSeconds += CFAbsoluteTimeGetCurrent() - tEmb0 + } let mask: MLXArray + let tErb0 = enableProfiling ? CFAbsoluteTimeGetCurrent() : 0 if applyGains { mask = try erbDecoderStep(emb: emb, e3: e3, e2: e2, e1: e1, e0: e0) } else if applyGainZeros { @@ -818,14 +918,27 @@ public final class DeepFilterNetModel: STSModel { return specMX[0, 0, 0, 0..., 0...] } let specMasked = applyMask(spec: specMX, mask: mask) + if enableProfiling, profilingForceEvalPerStage { + eval(mask, specMasked) + } + if enableProfiling { + profInferErbSeconds += CFAbsoluteTimeGetCurrent() - tErb0 + } if !applyDf { return specMasked[0, 0, 0, 0..., 0...] } + let tDf0 = enableProfiling ? CFAbsoluteTimeGetCurrent() : 0 var dfCoefs = try dfDecoderStep(emb: emb, c0: c0) dfCoefs = dfCoefs.reshaped([1, 1, nbDf, dfOrder, 2]).transposed(0, 3, 1, 2, 4) let specEnhanced = try deepFilterAssign(spec: specMX, specMasked: specMasked, dfCoefs: dfCoefs, currentSpec: spec) + if enableProfiling, profilingForceEvalPerStage { + eval(dfCoefs, specEnhanced) + } + if enableProfiling { + profInferDfSeconds += CFAbsoluteTimeGetCurrent() - tDf0 + } return specEnhanced[0, 0, 0, 0..., 0...] } @@ -885,50 +998,41 @@ public final class DeepFilterNetModel: STSModel { private func squeezedGRUStep( _ x: MLXArray, - prefix: String, + gru: StreamGRU, hiddenSize: Int, - linearOut: Bool, state: inout [MLXArray]? - ) throws -> MLXArray { - var y = relu(model.groupedLinear(x, weight: try model.w("\(prefix).linear_in.0.weight"))) + ) -> MLXArray { + var y = relu(model.groupedLinear(x, weight: gru.linearInWeight)) var nextState = [MLXArray]() - var layer = 0 - - while model.weights["\(prefix).gru.weight_ih_l\(layer)"] != nil { + nextState.reserveCapacity(gru.layers.count) + for (layer, layerDef) in gru.layers.enumerated() { let prevState: MLXArray if let state, layer < state.count { prevState = state[layer] } else { prevState = MLXArray.zeros([y.shape[0], hiddenSize], type: Float.self) } - let h = try gruLayerStep(y, prefix: "\(prefix).gru", layer: layer, hiddenSize: hiddenSize, prevState: prevState) + let h = gruLayerStep(y, layer: layerDef, hiddenSize: hiddenSize, prevState: prevState) nextState.append(h) y = h.expandedDimensions(axis: 1) - layer += 1 } state = nextState - if linearOut, model.weights["\(prefix).linear_out.0.weight"] != nil { - y = relu(model.groupedLinear(y, weight: try model.w("\(prefix).linear_out.0.weight"))) + if let linearOut = gru.linearOutWeight { + y = relu(model.groupedLinear(y, weight: linearOut)) } return y } private func gruLayerStep( _ x: MLXArray, - prefix: String, - layer: Int, + layer: StreamGRULayer, hiddenSize: Int, prevState: MLXArray - ) throws -> MLXArray { - let wih = try model.w("\(prefix).weight_ih_l\(layer)") - let whh = try model.w("\(prefix).weight_hh_l\(layer)") - let bih = try model.w("\(prefix).bias_ih_l\(layer)") - let bhh = try model.w("\(prefix).bias_hh_l\(layer)") - + ) -> MLXArray { let xt = x[0..., 0, 0...] - let gx = MLX.addMM(bih, xt, wih.transposed()) - let gh = MLX.addMM(bhh, prevState, whh.transposed()) + let gx = MLX.addMM(layer.bih, xt, layer.wihT) + let gh = MLX.addMM(layer.bhh, prevState, layer.whhT) let xr = gx[0..., 0.. MLXArray { - var embDec = try squeezedGRUStep( + var embDec = squeezedGRUStep( emb, - prefix: "erb_dec.emb_gru", + gru: erbDecEmbGRU, hiddenSize: model.config.embHiddenDim, - linearOut: true, state: &erbDecState ) let f8 = e3.shape[3] @@ -972,15 +1075,14 @@ public final class DeepFilterNetModel: STSModel { } private func dfDecoderStep(emb: MLXArray, c0: MLXArray) throws -> MLXArray { - var c = try squeezedGRUStep( + var c = squeezedGRUStep( emb, - prefix: "df_dec.df_gru", + gru: dfDecGRU, hiddenSize: model.config.dfHiddenDim, - linearOut: false, state: &dfDecState ) - if model.weights["df_dec.df_skip.weight"] != nil { - c = c + model.groupedLinear(emb, weight: try model.w("df_dec.df_skip.weight")) + if let dfDecSkipWeight { + c = c + model.groupedLinear(emb, weight: dfDecSkipWeight) } appendWithLimit(&dfConvpIn, c0, maxLen: model.config.dfPathwayKernelSizeT) @@ -1009,7 +1111,7 @@ public final class DeepFilterNetModel: STSModel { c0p = c0p[0..., 0..., (t - 1).. MLXArray { - let wih = try w("\(prefix).weight_ih_l\(layer)") - let whh = try w("\(prefix).weight_hh_l\(layer)") + let wihKey = "\(prefix).weight_ih_l\(layer)" + let whhKey = "\(prefix).weight_hh_l\(layer)" + let wihT: MLXArray + if let cached = gruTransposedWeights[wihKey] { + wihT = cached + } else { + wihT = try w(wihKey).transposed() + } + let whhT: MLXArray + if let cached = gruTransposedWeights[whhKey] { + whhT = cached + } else { + whhT = try w(whhKey).transposed() + } let bih = try w("\(prefix).bias_ih_l\(layer)") let bhh = try w("\(prefix).bias_hh_l\(layer)") @@ -1677,8 +1791,8 @@ public final class DeepFilterNetModel: STSModel { for i in 0.. [String: MLXArray] { + var cache = [String: MLXArray]() + cache.reserveCapacity(24) + for (key, weight) in weights where key.contains(".gru.weight_") && weight.ndim == 2 { + cache[key] = weight.transposed() + } + return cache + } + private static func buildGroupedTransposeWeights( weights: [String: MLXArray], groups: Int From 6392034166c1e85e13e8e05aee76ee1d890f0e52 Mon Sep 17 00:00:00 2001 From: Kyle Howells Date: Sat, 7 Mar 2026 05:33:52 +0000 Subject: [PATCH 09/33] DeepFilterNet: test compiled streaming infer path (regressed) Add an opt-in compiled infer path for Swift DeepFilterNet streaming (DFN_STREAM_COMPILE=1) and plumb streamer config support. Result: parity was unchanged (identical output / same PyTorch metrics), but performance regressed on 10s/10ms-hop streaming runs. Measured mean: compile off 3.63s (RTF 0.36) vs compile on 6.14s (RTF 0.61), ~1.69x slower with compile. Likely causes: compile setup overhead, extra per-hop state packing/unpacking for functionalized state, and insufficient kernel fusion for this graph shape. --- .../DeepFilterNet/DeepFilterNetModel.swift | 514 +++++++++++++++--- Sources/Tools/mlx-audio-swift-sts/App.swift | 4 +- 2 files changed, 444 insertions(+), 74 deletions(-) diff --git a/Sources/MLXAudioSTS/Models/DeepFilterNet/DeepFilterNetModel.swift b/Sources/MLXAudioSTS/Models/DeepFilterNet/DeepFilterNetModel.swift index 634f5df7..2b7b869e 100644 --- a/Sources/MLXAudioSTS/Models/DeepFilterNet/DeepFilterNetModel.swift +++ b/Sources/MLXAudioSTS/Models/DeepFilterNet/DeepFilterNetModel.swift @@ -36,6 +36,7 @@ public struct DeepFilterNetStreamingConfig: Sendable { public var padEndFrames: Int public var compensateDelay: Bool public var enableStageSkipping: Bool + public var enableCompiledInfer: Bool public var minDbThresh: Float public var maxDbErbThresh: Float public var maxDbDfThresh: Float @@ -47,6 +48,7 @@ public struct DeepFilterNetStreamingConfig: Sendable { padEndFrames: Int = 3, compensateDelay: Bool = true, enableStageSkipping: Bool = false, + enableCompiledInfer: Bool = false, minDbThresh: Float = -10.0, maxDbErbThresh: Float = 30.0, maxDbDfThresh: Float = 20.0, @@ -57,6 +59,7 @@ public struct DeepFilterNetStreamingConfig: Sendable { self.padEndFrames = padEndFrames self.compensateDelay = compensateDelay self.enableStageSkipping = enableStageSkipping + self.enableCompiledInfer = enableCompiledInfer self.minDbThresh = minDbThresh self.maxDbErbThresh = maxDbErbThresh self.maxDbDfThresh = maxDbDfThresh @@ -73,6 +76,11 @@ public struct DeepFilterNetStreamingChunk: @unchecked Sendable { } public final class DeepFilterNetModel: STSModel { + private struct FoldedConv2D { + let weightOHWI: MLXArray + let bias: MLXArray + } + public static let defaultRepo = "kylehowells/DeepFilterNet3-MLX" public let config: DeepFilterNetConfig @@ -91,6 +99,7 @@ public final class DeepFilterNetModel: STSModel { private let bnScale: [String: MLXArray] private let bnBias: [String: MLXArray] private let conv2dWeightsOHWI: [String: MLXArray] + private let conv2dBnFoldedOHWIBias: [String: FoldedConv2D] private let convTransposeDenseWeights: [String: MLXArray] private let convTransposeGroupWeights: [String: [MLXArray]] private let gruTransposedWeights: [String: MLXArray] @@ -130,6 +139,11 @@ public final class DeepFilterNetModel: STSModel { self.bnScale = bnScale self.bnBias = bnBias self.conv2dWeightsOHWI = Self.buildConv2dWeightCache(weights: weights) + self.conv2dBnFoldedOHWIBias = Self.buildConv2dBatchNormFoldCache( + weights: weights, + bnScale: bnScale, + bnBias: bnBias + ) self.convTransposeDenseWeights = Self.buildDenseTransposeWeights( weights: weights, groups: max(1, config.convCh) @@ -428,6 +442,7 @@ public final class DeepFilterNetModel: STSModel { private var encErb0In: [MLXArray] = [] private var encDf0In: [MLXArray] = [] private var dfConvpIn: [MLXArray] = [] + private var dfConvpPast: MLXArray private var encEmbState: [MLXArray]? private var erbDecState: [MLXArray]? @@ -447,12 +462,16 @@ public final class DeepFilterNetModel: STSModel { private var profSynthesisSeconds = 0.0 private var profMaterializeSeconds = 0.0 private let profilingForceEvalPerStage: Bool + private let enableCompiledInfer: Bool + private let dfConvpPastLen: Int + private let dfConvpChannels: Int public init(model: DeepFilterNetModel, config: DeepFilterNetStreamingConfig = DeepFilterNetStreamingConfig()) { self.model = model self.config = config self.enableProfiling = config.enableProfiling self.profilingForceEvalPerStage = config.profilingForceEvalPerStage + self.enableCompiledInfer = config.enableCompiledInfer && !config.enableStageSkipping self.fftSize = model.config.fftSize self.hopSize = model.config.hopSize @@ -489,6 +508,8 @@ public final class DeepFilterNetModel: STSModel { self.encDfFcEmbWeight = Self.requireWeight(model, key: "enc.df_fc_emb.0.weight") self.dfDecSkipWeight = model.weights["df_dec.df_skip.weight"] self.dfDecOutWeight = Self.requireWeight(model, key: "df_dec.df_out.0.weight") + self.dfConvpChannels = Self.requireWeight(model, key: "enc.df_conv0.2.weight").shape[0] + self.dfConvpPastLen = max(0, model.config.dfPathwayKernelSizeT - 1) self.encEmbGRU = Self.buildStreamGRU(model: model, prefix: "enc.emb_gru") self.erbDecEmbGRU = Self.buildStreamGRU(model: model, prefix: "erb_dec.emb_gru") self.dfDecGRU = Self.buildStreamGRU(model: model, prefix: "df_dec.df_gru") @@ -497,6 +518,10 @@ public final class DeepFilterNetModel: STSModel { self.synthMem = MLXArray.zeros([synthMemCount], type: Float.self) self.erbState = MLXArray(Self.linspace(start: -60.0, end: -90.0, count: model.config.nbErb)) self.dfState = MLXArray(Self.linspace(start: 0.001, end: 0.0001, count: model.config.nbDf)) + self.dfConvpPast = MLXArray.zeros( + [1, dfConvpChannels, max(1, dfConvpPastLen), nbDf], + type: Float.self + ) } private static func requireWeight(_ model: DeepFilterNetModel, key: String) -> MLXArray { @@ -526,6 +551,89 @@ public final class DeepFilterNetModel: STSModel { return StreamGRU(linearInWeight: linearIn, layers: layers, linearOutWeight: linearOut) } + private lazy var compiledInferNoSkip: (([MLXArray]) -> [MLXArray])? = { + guard enableCompiledInfer else { return nil } + let encStateCount = encEmbGRU.layers.count + let erbStateCount = erbDecEmbGRU.layers.count + let dfStateCount = dfDecGRU.layers.count + return compile(shapeless: false) { inputs in + let encErbSeq = inputs[0] + let encDfSeq = inputs[1] + let specMX = inputs[2] + let specLowHistory = inputs[3] + let c0Past = inputs[4] + + var index = 5 + let encPrev = Array(inputs[index..<(index + encStateCount)]) + index += encStateCount + let erbPrev = Array(inputs[index..<(index + erbStateCount)]) + index += erbStateCount + let dfPrev = Array(inputs[index..<(index + dfStateCount)]) + + let e0 = try! self.applyConvLast( + inputs: [encErbSeq], + prefix: "enc.erb_conv0", + main: 1, + pointwise: nil, + bn: 2, + fstride: 1 + ) + let e1 = try! self.applyConvLast(inputs: [e0], prefix: "enc.erb_conv1", main: 0, pointwise: 1, bn: 2, fstride: 2) + let e2 = try! self.applyConvLast(inputs: [e1], prefix: "enc.erb_conv2", main: 0, pointwise: 1, bn: 2, fstride: 2) + let e3 = try! self.applyConvLast(inputs: [e2], prefix: "enc.erb_conv3", main: 0, pointwise: 1, bn: 2, fstride: 1) + + let c0 = try! self.applyConvLast(inputs: [encDfSeq], prefix: "enc.df_conv0", main: 1, pointwise: 2, bn: 3, fstride: 1) + let c1 = try! self.applyConvLast(inputs: [c0], prefix: "enc.df_conv1", main: 0, pointwise: 1, bn: 2, fstride: 2) + + var cemb = c1.transposed(0, 2, 3, 1).reshaped([1, 1, -1]) + cemb = relu(self.model.groupedLinear(cemb, weight: self.encDfFcEmbWeight)) + + var emb = e3.transposed(0, 2, 3, 1).reshaped([1, 1, -1]) + emb = self.model.config.encConcat ? MLX.concatenated([emb, cemb], axis: -1) : (emb + cemb) + + let (embNext, encNext) = self.squeezedGRUStepPure( + emb, + gru: self.encEmbGRU, + hiddenSize: self.model.config.embHiddenDim, + prevState: encPrev + ) + let (mask, erbNext) = try! self.erbDecoderStepPure( + emb: embNext, + e3: e3, + e2: e2, + e1: e1, + e0: e0, + prevState: erbPrev + ) + let specMasked = self.applyMask(spec: specMX, mask: mask) + + let (dfCoefsRaw, dfNext, c0PastNext) = try! self.dfDecoderStepPure( + emb: embNext, + c0: c0, + prevState: dfPrev, + c0Past: c0Past + ) + let dfCoefs = dfCoefsRaw + .reshaped([1, 1, self.nbDf, self.dfOrder, 2]) + .transposed(0, 3, 1, 2, 4) + let specEnhanced = self.deepFilterAssign( + spec: specMX, + specMasked: specMasked, + dfCoefs: dfCoefs, + specLowHistory: specLowHistory + ) + + var outputs = [MLXArray]() + outputs.reserveCapacity(2 + encNext.count + erbNext.count + dfNext.count) + outputs.append(specEnhanced) + outputs.append(c0PastNext) + outputs.append(contentsOf: encNext) + outputs.append(contentsOf: erbNext) + outputs.append(contentsOf: dfNext) + return outputs + } + }() + public func reset() { pendingSamples = MLXArray.zeros([0], type: Float.self) analysisMem = MLXArray.zeros([analysisMemCount], type: Float.self) @@ -538,6 +646,10 @@ public final class DeepFilterNetModel: STSModel { encErb0In.removeAll(keepingCapacity: true) encDf0In.removeAll(keepingCapacity: true) dfConvpIn.removeAll(keepingCapacity: true) + dfConvpPast = MLXArray.zeros( + [1, dfConvpChannels, max(1, dfConvpPastLen), nbDf], + type: Float.self + ) encEmbState = nil erbDecState = nil dfDecState = nil @@ -863,6 +975,51 @@ public final class DeepFilterNetModel: STSModel { appendWithLimit(&encDf0In, featDfMX, maxLen: 3) appendWithLimit(&specPast, spec, maxLen: dfOrder) + if !config.enableStageSkipping, let compiledInferNoSkip { + let encErbSeq = mergeSequence(encErb0In) + let encDfSeq = mergeSequence(encDf0In) + let specLowHistory = buildSpecLowHistory(currentSpec: spec) + let encPrev = normalizedState( + encEmbState, + count: encEmbGRU.layers.count, + hiddenSize: model.config.embHiddenDim + ) + let erbPrev = normalizedState( + erbDecState, + count: erbDecEmbGRU.layers.count, + hiddenSize: model.config.embHiddenDim + ) + let dfPrev = normalizedState( + dfDecState, + count: dfDecGRU.layers.count, + hiddenSize: model.config.dfHiddenDim + ) + + var compiledInputs = [MLXArray]() + compiledInputs.reserveCapacity(5 + encPrev.count + erbPrev.count + dfPrev.count) + compiledInputs.append(encErbSeq) + compiledInputs.append(encDfSeq) + compiledInputs.append(specMX) + compiledInputs.append(specLowHistory) + compiledInputs.append(dfConvpPast) + compiledInputs.append(contentsOf: encPrev) + compiledInputs.append(contentsOf: erbPrev) + compiledInputs.append(contentsOf: dfPrev) + + let compiledOut = compiledInferNoSkip(compiledInputs) + var outIndex = 0 + let specEnhanced = compiledOut[outIndex] + outIndex += 1 + dfConvpPast = compiledOut[outIndex] + outIndex += 1 + encEmbState = Array(compiledOut[outIndex..<(outIndex + encEmbGRU.layers.count)]) + outIndex += encEmbGRU.layers.count + erbDecState = Array(compiledOut[outIndex..<(outIndex + erbDecEmbGRU.layers.count)]) + outIndex += erbDecEmbGRU.layers.count + dfDecState = Array(compiledOut[outIndex..<(outIndex + dfDecGRU.layers.count)]) + return specEnhanced[0, 0, 0, 0..., 0...] + } + let e0 = try applyConvLast(inputs: encErb0In, prefix: "enc.erb_conv0", main: 1, pointwise: nil, bn: 2, fstride: 1) let e1 = try applyConvLast(inputs: [e0], prefix: "enc.erb_conv1", main: 0, pointwise: 1, bn: 2, fstride: 2) let e2 = try applyConvLast(inputs: [e1], prefix: "enc.erb_conv2", main: 0, pointwise: 1, bn: 2, fstride: 2) @@ -973,29 +1130,86 @@ public final class DeepFilterNetModel: STSModel { } else { merged = MLX.concatenated(inputs, axis: 2) } - var y = merged - y = try model.conv2dLayer( - y, - weightKey: "\(prefix).\(main).weight", - bias: nil, - fstride: fstride, - lookahead: 0 - ) + let bnPrefix = "\(prefix).\(bn)" + var y: MLXArray if let pointwise { y = try model.conv2dLayer( + merged, + weightKey: "\(prefix).\(main).weight", + bias: nil, + fstride: fstride, + lookahead: 0 + ) + y = try model.conv2dThenBatchNorm( y, weightKey: "\(prefix).\(pointwise).weight", - bias: nil, + bnPrefix: bnPrefix, fstride: 1, lookahead: 0 ) + } else { + y = try model.conv2dThenBatchNorm( + merged, + weightKey: "\(prefix).\(main).weight", + bnPrefix: bnPrefix, + fstride: fstride, + lookahead: 0 + ) } - y = try model.batchNorm(y, prefix: "\(prefix).\(bn)") y = relu(y) let t = y.shape[2] return y[0..., 0..., (t - 1).. MLXArray { + if inputs.count == 1, let only = inputs.first { + return only + } + return MLX.concatenated(inputs, axis: 2) + } + + private func normalizedState(_ state: [MLXArray]?, count: Int, hiddenSize: Int) -> [MLXArray] { + if let state, state.count == count { + return state + } + return (0.. MLXArray { + let left = dfOrder - dfLookahead - 1 + let pastCount = max(0, specPast.count - 1) + let needPast = max(0, left - pastCount) + + var specWindow = [MLXArray]() + specWindow.reserveCapacity(dfOrder) + for _ in 0.. 0 { + let copyCount = min(left, pastCount) + if copyCount > 0 { + let start = pastCount - copyCount + for i in start.. 0 { + specWindow.append(contentsOf: specQueue.prefix(futureAvailable)) + } + for _ in futureAvailable.. (MLXArray, [MLXArray]) { + var y = relu(model.groupedLinear(x, weight: gru.linearInWeight)) + var nextState = [MLXArray]() + nextState.reserveCapacity(gru.layers.count) + for (layer, layerDef) in gru.layers.enumerated() { + let prev = layer < prevState.count + ? prevState[layer] + : MLXArray.zeros([1, hiddenSize], type: Float.self).asType(inferenceDType) + let h = gruLayerStep(y, layer: layerDef, hiddenSize: hiddenSize, prevState: prev) + nextState.append(h) + y = h.expandedDimensions(axis: 1) + } + if let linearOut = gru.linearOutWeight { + y = relu(model.groupedLinear(y, weight: linearOut)) + } + return (y, nextState) + } + private func gruLayerStep( _ x: MLXArray, layer: StreamGRULayer, @@ -1074,6 +1311,34 @@ public final class DeepFilterNetModel: STSModel { return sigmoid(out) } + private func erbDecoderStepPure( + emb: MLXArray, + e3: MLXArray, + e2: MLXArray, + e1: MLXArray, + e0: MLXArray, + prevState: [MLXArray] + ) throws -> (MLXArray, [MLXArray]) { + var (embDec, nextState) = squeezedGRUStepPure( + emb, + gru: erbDecEmbGRU, + hiddenSize: model.config.embHiddenDim, + prevState: prevState + ) + let f8 = e3.shape[3] + embDec = embDec.reshaped([1, 1, f8, -1]).transposed(0, 3, 1, 2) + + var d3 = relu(try model.applyPathwayConv(e3, prefix: "erb_dec.conv3p")) + embDec + d3 = relu(try model.applyRegularBlock(d3, prefix: "erb_dec.convt3")) + var d2 = relu(try model.applyPathwayConv(e2, prefix: "erb_dec.conv2p")) + d3 + d2 = relu(try model.applyTransposeBlock(d2, prefix: "erb_dec.convt2", fstride: 2)) + var d1 = relu(try model.applyPathwayConv(e1, prefix: "erb_dec.conv1p")) + d2 + d1 = relu(try model.applyTransposeBlock(d1, prefix: "erb_dec.convt1", fstride: 2)) + let d0 = relu(try model.applyPathwayConv(e0, prefix: "erb_dec.conv0p")) + d1 + let out = try model.applyOutputConv(d0, prefix: "erb_dec.conv0_out") + return (sigmoid(out), nextState) + } + private func dfDecoderStep(emb: MLXArray, c0: MLXArray) throws -> MLXArray { var c = squeezedGRUStep( emb, @@ -1099,21 +1364,70 @@ public final class DeepFilterNetModel: STSModel { fstride: 1, lookahead: 0 ) - c0p = try model.conv2dLayer( + c0p = relu(try model.conv2dThenBatchNorm( c0p, weightKey: "df_dec.df_convp.2.weight", + bnPrefix: "df_dec.df_convp.3", + fstride: 1, + lookahead: 0 + )) + let t = c0p.shape[2] + c0p = c0p[0..., 0..., (t - 1).. (MLXArray, [MLXArray], MLXArray) { + var (c, nextState) = squeezedGRUStepPure( + emb, + gru: dfDecGRU, + hiddenSize: model.config.dfHiddenDim, + prevState: prevState + ) + if let dfDecSkipWeight { + c = c + model.groupedLinear(emb, weight: dfDecSkipWeight) + } + + let c0Seq: MLXArray + let nextPast: MLXArray + if dfConvpPastLen > 0 { + let pastSlice = c0Past[0..., 0..., 0.. MLXArray { @@ -1131,45 +1445,33 @@ public final class DeepFilterNetModel: STSModel { dfCoefs: MLXArray, currentSpec: MLXArray ) throws -> MLXArray { - let left = dfOrder - dfLookahead - 1 - - let pastCount = max(0, specPast.count - 1) - let needPast = max(0, left - pastCount) - var specWindow = [MLXArray]() - specWindow.reserveCapacity(dfOrder) - for _ in 0.. 0 { - let copyCount = min(left, pastCount) - let start = pastCount - copyCount - if copyCount > 0 { - for i in start.. 0 { - specWindow.append(contentsOf: specQueue.prefix(futureAvailable)) - } - for _ in futureAvailable.. MLXArray { + let specLow = specLowHistory let coef = dfCoefs[0, 0..., 0, 0.. MLXArray { - var y = try conv2dLayer( - x, - weightKey: "\(prefix).\(main).weight", - bias: nil, - fstride: fstride, - lookahead: 0 - ) + let bnPrefix = "\(prefix).\(bn)" + var y: MLXArray if let pointwise { y = try conv2dLayer( + x, + weightKey: "\(prefix).\(main).weight", + bias: nil, + fstride: fstride, + lookahead: 0 + ) + y = try conv2dThenBatchNorm( y, weightKey: "\(prefix).\(pointwise).weight", - bias: nil, + bnPrefix: bnPrefix, fstride: 1, lookahead: 0 ) + } else { + y = try conv2dThenBatchNorm( + x, + weightKey: "\(prefix).\(main).weight", + bnPrefix: bnPrefix, + fstride: fstride, + lookahead: 0 + ) } - y = try batchNorm(y, prefix: "\(prefix).\(bn)") return relu(y) } private func applyPathwayConv(_ x: MLXArray, prefix: String) throws -> MLXArray { - var y = try conv2dLayer( + let y = try conv2dThenBatchNorm( x, weightKey: "\(prefix).0.weight", - bias: nil, + bnPrefix: "\(prefix).1", fstride: 1, lookahead: 0 ) - y = try batchNorm(y, prefix: "\(prefix).1") return relu(y) } @@ -1458,14 +1769,14 @@ public final class DeepFilterNetModel: STSModel { fstride: fstride, groups: config.convCh ) - y = try conv2dLayer( + y = try conv2dThenBatchNorm( y, weightKey: "\(prefix).1.weight", - bias: nil, + bnPrefix: "\(prefix).2", fstride: 1, lookahead: 0 ) - return try batchNorm(y, prefix: "\(prefix).2") + return y } private func applyRegularBlock(_ x: MLXArray, prefix: String) throws -> MLXArray { @@ -1476,25 +1787,24 @@ public final class DeepFilterNetModel: STSModel { fstride: 1, lookahead: 0 ) - y = try conv2dLayer( + y = try conv2dThenBatchNorm( y, weightKey: "\(prefix).1.weight", - bias: nil, + bnPrefix: "\(prefix).2", fstride: 1, lookahead: 0 ) - return try batchNorm(y, prefix: "\(prefix).2") + return y } private func applyOutputConv(_ x: MLXArray, prefix: String) throws -> MLXArray { - var y = try conv2dLayer( + let y = try conv2dThenBatchNorm( x, weightKey: "\(prefix).0.weight", - bias: nil, + bnPrefix: "\(prefix).1", fstride: 1, lookahead: 0 ) - y = try batchNorm(y, prefix: "\(prefix).1") return y } @@ -1712,6 +2022,33 @@ public final class DeepFilterNetModel: STSModel { MLX.conv2d(input, weight, stride: [1, strideW], padding: [0, 0], groups: groups) } + private func conv2dThenBatchNorm( + _ xBCHW: MLXArray, + weightKey: String, + bnPrefix: String, + fstride: Int, + lookahead: Int + ) throws -> MLXArray { + let cacheKey = "\(weightKey)|\(bnPrefix)" + if let folded = conv2dBnFoldedOHWIBias[cacheKey] { + return conv2dLayer( + xBCHW, + weightOHWI: folded.weightOHWI, + bias: folded.bias, + fstride: fstride, + lookahead: lookahead + ) + } + let y = try conv2dLayer( + xBCHW, + weightKey: weightKey, + bias: nil, + fstride: fstride, + lookahead: lookahead + ) + return try batchNorm(y, prefix: bnPrefix) + } + private func batchNorm(_ x: MLXArray, prefix: String) throws -> MLXArray { if let scale = bnScale[prefix], let bias = bnBias[prefix] { return x * scale + bias @@ -1997,6 +2334,37 @@ public final class DeepFilterNetModel: STSModel { return cache } + private static func buildConv2dBatchNormFoldCache( + weights: [String: MLXArray], + bnScale: [String: MLXArray], + bnBias: [String: MLXArray] + ) -> [String: FoldedConv2D] { + var cache = [String: FoldedConv2D]() + cache.reserveCapacity(48) + + for (bnPrefix, scale4D) in bnScale { + guard let shift4D = bnBias[bnPrefix] else { continue } + let parts = bnPrefix.split(separator: ".") + guard let lastPart = parts.last, let bnIndex = Int(lastPart), bnIndex > 0 else { continue } + let base = parts.dropLast().joined(separator: ".") + let weightKey = "\(base).\(bnIndex - 1).weight" + guard let weightOIHW = weights[weightKey], weightOIHW.ndim == 4 else { continue } + + let outChannels = weightOIHW.shape[0] + let scale = scale4D.reshaped([outChannels]) + let shift = shift4D.reshaped([outChannels]) + + let foldedOIHW = weightOIHW * scale.reshaped([outChannels, 1, 1, 1]) + let foldedOHWI = foldedOIHW.transposed(0, 2, 3, 1) + + cache["\(weightKey)|\(bnPrefix)"] = FoldedConv2D( + weightOHWI: foldedOHWI, + bias: shift + ) + } + return cache + } + private static func buildGRUTransposedWeightCache(weights: [String: MLXArray]) -> [String: MLXArray] { var cache = [String: MLXArray]() cache.reserveCapacity(24) diff --git a/Sources/Tools/mlx-audio-swift-sts/App.swift b/Sources/Tools/mlx-audio-swift-sts/App.swift index 686a9bac..dd482ea4 100644 --- a/Sources/Tools/mlx-audio-swift-sts/App.swift +++ b/Sources/Tools/mlx-audio-swift-sts/App.swift @@ -495,6 +495,7 @@ enum App { let forceStageEval = env["DFN_STREAM_PROFILE_STAGE_EVAL"] == "1" let materializeEveryHops = max(Int(env["DFN_STREAM_MAT_EVERY"] ?? "") ?? 256, 0) let enableStageSkipping = env["DFN_STREAM_STAGE_SKIP"] == "1" + let enableCompiledInfer = env["DFN_STREAM_COMPILE"] == "1" let bypassModel = env["DFN_STREAM_BYPASS"] == "1" let runStream = { @@ -505,6 +506,7 @@ enum App { padEndFrames: 3, compensateDelay: true, enableStageSkipping: enableStageSkipping, + enableCompiledInfer: enableCompiledInfer, enableProfiling: streamProfiling, profilingForceEvalPerStage: forceStageEval, materializeEveryHops: materializeEveryHops @@ -522,7 +524,7 @@ enum App { } if streamProfiling { print( - "Stream profiling enabled (stageEval=\(forceStageEval), materializeEveryHops=\(materializeEveryHops), stageSkip=\(enableStageSkipping))" + "Stream profiling enabled (stageEval=\(forceStageEval), materializeEveryHops=\(materializeEveryHops), stageSkip=\(enableStageSkipping), compile=\(enableCompiledInfer))" ) } From 2507857237479b173505c6d0b2631fb5b81a22c3 Mon Sep 17 00:00:00 2001 From: Kyle Howells Date: Sat, 7 Mar 2026 05:34:25 +0000 Subject: [PATCH 10/33] DeepFilterNet: remove compiled streaming flag and experiment path Revert the compiled streaming infer experiment and restore the eager streaming fast path as the only mode. Reason: compile mode was parity-safe but consistently slower in benchmark runs, so keeping it adds complexity with no runtime benefit. --- .../DeepFilterNet/DeepFilterNetModel.swift | 514 +++--------------- Sources/Tools/mlx-audio-swift-sts/App.swift | 4 +- 2 files changed, 74 insertions(+), 444 deletions(-) diff --git a/Sources/MLXAudioSTS/Models/DeepFilterNet/DeepFilterNetModel.swift b/Sources/MLXAudioSTS/Models/DeepFilterNet/DeepFilterNetModel.swift index 2b7b869e..634f5df7 100644 --- a/Sources/MLXAudioSTS/Models/DeepFilterNet/DeepFilterNetModel.swift +++ b/Sources/MLXAudioSTS/Models/DeepFilterNet/DeepFilterNetModel.swift @@ -36,7 +36,6 @@ public struct DeepFilterNetStreamingConfig: Sendable { public var padEndFrames: Int public var compensateDelay: Bool public var enableStageSkipping: Bool - public var enableCompiledInfer: Bool public var minDbThresh: Float public var maxDbErbThresh: Float public var maxDbDfThresh: Float @@ -48,7 +47,6 @@ public struct DeepFilterNetStreamingConfig: Sendable { padEndFrames: Int = 3, compensateDelay: Bool = true, enableStageSkipping: Bool = false, - enableCompiledInfer: Bool = false, minDbThresh: Float = -10.0, maxDbErbThresh: Float = 30.0, maxDbDfThresh: Float = 20.0, @@ -59,7 +57,6 @@ public struct DeepFilterNetStreamingConfig: Sendable { self.padEndFrames = padEndFrames self.compensateDelay = compensateDelay self.enableStageSkipping = enableStageSkipping - self.enableCompiledInfer = enableCompiledInfer self.minDbThresh = minDbThresh self.maxDbErbThresh = maxDbErbThresh self.maxDbDfThresh = maxDbDfThresh @@ -76,11 +73,6 @@ public struct DeepFilterNetStreamingChunk: @unchecked Sendable { } public final class DeepFilterNetModel: STSModel { - private struct FoldedConv2D { - let weightOHWI: MLXArray - let bias: MLXArray - } - public static let defaultRepo = "kylehowells/DeepFilterNet3-MLX" public let config: DeepFilterNetConfig @@ -99,7 +91,6 @@ public final class DeepFilterNetModel: STSModel { private let bnScale: [String: MLXArray] private let bnBias: [String: MLXArray] private let conv2dWeightsOHWI: [String: MLXArray] - private let conv2dBnFoldedOHWIBias: [String: FoldedConv2D] private let convTransposeDenseWeights: [String: MLXArray] private let convTransposeGroupWeights: [String: [MLXArray]] private let gruTransposedWeights: [String: MLXArray] @@ -139,11 +130,6 @@ public final class DeepFilterNetModel: STSModel { self.bnScale = bnScale self.bnBias = bnBias self.conv2dWeightsOHWI = Self.buildConv2dWeightCache(weights: weights) - self.conv2dBnFoldedOHWIBias = Self.buildConv2dBatchNormFoldCache( - weights: weights, - bnScale: bnScale, - bnBias: bnBias - ) self.convTransposeDenseWeights = Self.buildDenseTransposeWeights( weights: weights, groups: max(1, config.convCh) @@ -442,7 +428,6 @@ public final class DeepFilterNetModel: STSModel { private var encErb0In: [MLXArray] = [] private var encDf0In: [MLXArray] = [] private var dfConvpIn: [MLXArray] = [] - private var dfConvpPast: MLXArray private var encEmbState: [MLXArray]? private var erbDecState: [MLXArray]? @@ -462,16 +447,12 @@ public final class DeepFilterNetModel: STSModel { private var profSynthesisSeconds = 0.0 private var profMaterializeSeconds = 0.0 private let profilingForceEvalPerStage: Bool - private let enableCompiledInfer: Bool - private let dfConvpPastLen: Int - private let dfConvpChannels: Int public init(model: DeepFilterNetModel, config: DeepFilterNetStreamingConfig = DeepFilterNetStreamingConfig()) { self.model = model self.config = config self.enableProfiling = config.enableProfiling self.profilingForceEvalPerStage = config.profilingForceEvalPerStage - self.enableCompiledInfer = config.enableCompiledInfer && !config.enableStageSkipping self.fftSize = model.config.fftSize self.hopSize = model.config.hopSize @@ -508,8 +489,6 @@ public final class DeepFilterNetModel: STSModel { self.encDfFcEmbWeight = Self.requireWeight(model, key: "enc.df_fc_emb.0.weight") self.dfDecSkipWeight = model.weights["df_dec.df_skip.weight"] self.dfDecOutWeight = Self.requireWeight(model, key: "df_dec.df_out.0.weight") - self.dfConvpChannels = Self.requireWeight(model, key: "enc.df_conv0.2.weight").shape[0] - self.dfConvpPastLen = max(0, model.config.dfPathwayKernelSizeT - 1) self.encEmbGRU = Self.buildStreamGRU(model: model, prefix: "enc.emb_gru") self.erbDecEmbGRU = Self.buildStreamGRU(model: model, prefix: "erb_dec.emb_gru") self.dfDecGRU = Self.buildStreamGRU(model: model, prefix: "df_dec.df_gru") @@ -518,10 +497,6 @@ public final class DeepFilterNetModel: STSModel { self.synthMem = MLXArray.zeros([synthMemCount], type: Float.self) self.erbState = MLXArray(Self.linspace(start: -60.0, end: -90.0, count: model.config.nbErb)) self.dfState = MLXArray(Self.linspace(start: 0.001, end: 0.0001, count: model.config.nbDf)) - self.dfConvpPast = MLXArray.zeros( - [1, dfConvpChannels, max(1, dfConvpPastLen), nbDf], - type: Float.self - ) } private static func requireWeight(_ model: DeepFilterNetModel, key: String) -> MLXArray { @@ -551,89 +526,6 @@ public final class DeepFilterNetModel: STSModel { return StreamGRU(linearInWeight: linearIn, layers: layers, linearOutWeight: linearOut) } - private lazy var compiledInferNoSkip: (([MLXArray]) -> [MLXArray])? = { - guard enableCompiledInfer else { return nil } - let encStateCount = encEmbGRU.layers.count - let erbStateCount = erbDecEmbGRU.layers.count - let dfStateCount = dfDecGRU.layers.count - return compile(shapeless: false) { inputs in - let encErbSeq = inputs[0] - let encDfSeq = inputs[1] - let specMX = inputs[2] - let specLowHistory = inputs[3] - let c0Past = inputs[4] - - var index = 5 - let encPrev = Array(inputs[index..<(index + encStateCount)]) - index += encStateCount - let erbPrev = Array(inputs[index..<(index + erbStateCount)]) - index += erbStateCount - let dfPrev = Array(inputs[index..<(index + dfStateCount)]) - - let e0 = try! self.applyConvLast( - inputs: [encErbSeq], - prefix: "enc.erb_conv0", - main: 1, - pointwise: nil, - bn: 2, - fstride: 1 - ) - let e1 = try! self.applyConvLast(inputs: [e0], prefix: "enc.erb_conv1", main: 0, pointwise: 1, bn: 2, fstride: 2) - let e2 = try! self.applyConvLast(inputs: [e1], prefix: "enc.erb_conv2", main: 0, pointwise: 1, bn: 2, fstride: 2) - let e3 = try! self.applyConvLast(inputs: [e2], prefix: "enc.erb_conv3", main: 0, pointwise: 1, bn: 2, fstride: 1) - - let c0 = try! self.applyConvLast(inputs: [encDfSeq], prefix: "enc.df_conv0", main: 1, pointwise: 2, bn: 3, fstride: 1) - let c1 = try! self.applyConvLast(inputs: [c0], prefix: "enc.df_conv1", main: 0, pointwise: 1, bn: 2, fstride: 2) - - var cemb = c1.transposed(0, 2, 3, 1).reshaped([1, 1, -1]) - cemb = relu(self.model.groupedLinear(cemb, weight: self.encDfFcEmbWeight)) - - var emb = e3.transposed(0, 2, 3, 1).reshaped([1, 1, -1]) - emb = self.model.config.encConcat ? MLX.concatenated([emb, cemb], axis: -1) : (emb + cemb) - - let (embNext, encNext) = self.squeezedGRUStepPure( - emb, - gru: self.encEmbGRU, - hiddenSize: self.model.config.embHiddenDim, - prevState: encPrev - ) - let (mask, erbNext) = try! self.erbDecoderStepPure( - emb: embNext, - e3: e3, - e2: e2, - e1: e1, - e0: e0, - prevState: erbPrev - ) - let specMasked = self.applyMask(spec: specMX, mask: mask) - - let (dfCoefsRaw, dfNext, c0PastNext) = try! self.dfDecoderStepPure( - emb: embNext, - c0: c0, - prevState: dfPrev, - c0Past: c0Past - ) - let dfCoefs = dfCoefsRaw - .reshaped([1, 1, self.nbDf, self.dfOrder, 2]) - .transposed(0, 3, 1, 2, 4) - let specEnhanced = self.deepFilterAssign( - spec: specMX, - specMasked: specMasked, - dfCoefs: dfCoefs, - specLowHistory: specLowHistory - ) - - var outputs = [MLXArray]() - outputs.reserveCapacity(2 + encNext.count + erbNext.count + dfNext.count) - outputs.append(specEnhanced) - outputs.append(c0PastNext) - outputs.append(contentsOf: encNext) - outputs.append(contentsOf: erbNext) - outputs.append(contentsOf: dfNext) - return outputs - } - }() - public func reset() { pendingSamples = MLXArray.zeros([0], type: Float.self) analysisMem = MLXArray.zeros([analysisMemCount], type: Float.self) @@ -646,10 +538,6 @@ public final class DeepFilterNetModel: STSModel { encErb0In.removeAll(keepingCapacity: true) encDf0In.removeAll(keepingCapacity: true) dfConvpIn.removeAll(keepingCapacity: true) - dfConvpPast = MLXArray.zeros( - [1, dfConvpChannels, max(1, dfConvpPastLen), nbDf], - type: Float.self - ) encEmbState = nil erbDecState = nil dfDecState = nil @@ -975,51 +863,6 @@ public final class DeepFilterNetModel: STSModel { appendWithLimit(&encDf0In, featDfMX, maxLen: 3) appendWithLimit(&specPast, spec, maxLen: dfOrder) - if !config.enableStageSkipping, let compiledInferNoSkip { - let encErbSeq = mergeSequence(encErb0In) - let encDfSeq = mergeSequence(encDf0In) - let specLowHistory = buildSpecLowHistory(currentSpec: spec) - let encPrev = normalizedState( - encEmbState, - count: encEmbGRU.layers.count, - hiddenSize: model.config.embHiddenDim - ) - let erbPrev = normalizedState( - erbDecState, - count: erbDecEmbGRU.layers.count, - hiddenSize: model.config.embHiddenDim - ) - let dfPrev = normalizedState( - dfDecState, - count: dfDecGRU.layers.count, - hiddenSize: model.config.dfHiddenDim - ) - - var compiledInputs = [MLXArray]() - compiledInputs.reserveCapacity(5 + encPrev.count + erbPrev.count + dfPrev.count) - compiledInputs.append(encErbSeq) - compiledInputs.append(encDfSeq) - compiledInputs.append(specMX) - compiledInputs.append(specLowHistory) - compiledInputs.append(dfConvpPast) - compiledInputs.append(contentsOf: encPrev) - compiledInputs.append(contentsOf: erbPrev) - compiledInputs.append(contentsOf: dfPrev) - - let compiledOut = compiledInferNoSkip(compiledInputs) - var outIndex = 0 - let specEnhanced = compiledOut[outIndex] - outIndex += 1 - dfConvpPast = compiledOut[outIndex] - outIndex += 1 - encEmbState = Array(compiledOut[outIndex..<(outIndex + encEmbGRU.layers.count)]) - outIndex += encEmbGRU.layers.count - erbDecState = Array(compiledOut[outIndex..<(outIndex + erbDecEmbGRU.layers.count)]) - outIndex += erbDecEmbGRU.layers.count - dfDecState = Array(compiledOut[outIndex..<(outIndex + dfDecGRU.layers.count)]) - return specEnhanced[0, 0, 0, 0..., 0...] - } - let e0 = try applyConvLast(inputs: encErb0In, prefix: "enc.erb_conv0", main: 1, pointwise: nil, bn: 2, fstride: 1) let e1 = try applyConvLast(inputs: [e0], prefix: "enc.erb_conv1", main: 0, pointwise: 1, bn: 2, fstride: 2) let e2 = try applyConvLast(inputs: [e1], prefix: "enc.erb_conv2", main: 0, pointwise: 1, bn: 2, fstride: 2) @@ -1130,86 +973,29 @@ public final class DeepFilterNetModel: STSModel { } else { merged = MLX.concatenated(inputs, axis: 2) } - let bnPrefix = "\(prefix).\(bn)" - var y: MLXArray + var y = merged + y = try model.conv2dLayer( + y, + weightKey: "\(prefix).\(main).weight", + bias: nil, + fstride: fstride, + lookahead: 0 + ) if let pointwise { y = try model.conv2dLayer( - merged, - weightKey: "\(prefix).\(main).weight", - bias: nil, - fstride: fstride, - lookahead: 0 - ) - y = try model.conv2dThenBatchNorm( y, weightKey: "\(prefix).\(pointwise).weight", - bnPrefix: bnPrefix, + bias: nil, fstride: 1, lookahead: 0 ) - } else { - y = try model.conv2dThenBatchNorm( - merged, - weightKey: "\(prefix).\(main).weight", - bnPrefix: bnPrefix, - fstride: fstride, - lookahead: 0 - ) } + y = try model.batchNorm(y, prefix: "\(prefix).\(bn)") y = relu(y) let t = y.shape[2] return y[0..., 0..., (t - 1).. MLXArray { - if inputs.count == 1, let only = inputs.first { - return only - } - return MLX.concatenated(inputs, axis: 2) - } - - private func normalizedState(_ state: [MLXArray]?, count: Int, hiddenSize: Int) -> [MLXArray] { - if let state, state.count == count { - return state - } - return (0.. MLXArray { - let left = dfOrder - dfLookahead - 1 - let pastCount = max(0, specPast.count - 1) - let needPast = max(0, left - pastCount) - - var specWindow = [MLXArray]() - specWindow.reserveCapacity(dfOrder) - for _ in 0.. 0 { - let copyCount = min(left, pastCount) - if copyCount > 0 { - let start = pastCount - copyCount - for i in start.. 0 { - specWindow.append(contentsOf: specQueue.prefix(futureAvailable)) - } - for _ in futureAvailable.. (MLXArray, [MLXArray]) { - var y = relu(model.groupedLinear(x, weight: gru.linearInWeight)) - var nextState = [MLXArray]() - nextState.reserveCapacity(gru.layers.count) - for (layer, layerDef) in gru.layers.enumerated() { - let prev = layer < prevState.count - ? prevState[layer] - : MLXArray.zeros([1, hiddenSize], type: Float.self).asType(inferenceDType) - let h = gruLayerStep(y, layer: layerDef, hiddenSize: hiddenSize, prevState: prev) - nextState.append(h) - y = h.expandedDimensions(axis: 1) - } - if let linearOut = gru.linearOutWeight { - y = relu(model.groupedLinear(y, weight: linearOut)) - } - return (y, nextState) - } - private func gruLayerStep( _ x: MLXArray, layer: StreamGRULayer, @@ -1311,34 +1074,6 @@ public final class DeepFilterNetModel: STSModel { return sigmoid(out) } - private func erbDecoderStepPure( - emb: MLXArray, - e3: MLXArray, - e2: MLXArray, - e1: MLXArray, - e0: MLXArray, - prevState: [MLXArray] - ) throws -> (MLXArray, [MLXArray]) { - var (embDec, nextState) = squeezedGRUStepPure( - emb, - gru: erbDecEmbGRU, - hiddenSize: model.config.embHiddenDim, - prevState: prevState - ) - let f8 = e3.shape[3] - embDec = embDec.reshaped([1, 1, f8, -1]).transposed(0, 3, 1, 2) - - var d3 = relu(try model.applyPathwayConv(e3, prefix: "erb_dec.conv3p")) + embDec - d3 = relu(try model.applyRegularBlock(d3, prefix: "erb_dec.convt3")) - var d2 = relu(try model.applyPathwayConv(e2, prefix: "erb_dec.conv2p")) + d3 - d2 = relu(try model.applyTransposeBlock(d2, prefix: "erb_dec.convt2", fstride: 2)) - var d1 = relu(try model.applyPathwayConv(e1, prefix: "erb_dec.conv1p")) + d2 - d1 = relu(try model.applyTransposeBlock(d1, prefix: "erb_dec.convt1", fstride: 2)) - let d0 = relu(try model.applyPathwayConv(e0, prefix: "erb_dec.conv0p")) + d1 - let out = try model.applyOutputConv(d0, prefix: "erb_dec.conv0_out") - return (sigmoid(out), nextState) - } - private func dfDecoderStep(emb: MLXArray, c0: MLXArray) throws -> MLXArray { var c = squeezedGRUStep( emb, @@ -1364,70 +1099,21 @@ public final class DeepFilterNetModel: STSModel { fstride: 1, lookahead: 0 ) - c0p = relu(try model.conv2dThenBatchNorm( + c0p = try model.conv2dLayer( c0p, weightKey: "df_dec.df_convp.2.weight", - bnPrefix: "df_dec.df_convp.3", - fstride: 1, - lookahead: 0 - )) - let t = c0p.shape[2] - c0p = c0p[0..., 0..., (t - 1).. (MLXArray, [MLXArray], MLXArray) { - var (c, nextState) = squeezedGRUStepPure( - emb, - gru: dfDecGRU, - hiddenSize: model.config.dfHiddenDim, - prevState: prevState - ) - if let dfDecSkipWeight { - c = c + model.groupedLinear(emb, weight: dfDecSkipWeight) - } - - let c0Seq: MLXArray - let nextPast: MLXArray - if dfConvpPastLen > 0 { - let pastSlice = c0Past[0..., 0..., 0.. MLXArray { @@ -1445,33 +1131,45 @@ public final class DeepFilterNetModel: STSModel { dfCoefs: MLXArray, currentSpec: MLXArray ) throws -> MLXArray { - let specLow = buildSpecLowHistory(currentSpec: currentSpec) - return deepFilterAssign( - spec: spec, - specMasked: specMasked, - dfCoefs: dfCoefs, - specLowHistory: specLow - ) - } + let left = dfOrder - dfLookahead - 1 - private func deepFilterAssign( - spec: MLXArray, - specMasked: MLXArray, - dfCoefs: MLXArray, - specLowHistory: MLXArray - ) -> MLXArray { - let specLow = specLowHistory + let pastCount = max(0, specPast.count - 1) + let needPast = max(0, left - pastCount) + var specWindow = [MLXArray]() + specWindow.reserveCapacity(dfOrder) + for _ in 0.. 0 { + let copyCount = min(left, pastCount) + let start = pastCount - copyCount + if copyCount > 0 { + for i in start.. 0 { + specWindow.append(contentsOf: specQueue.prefix(futureAvailable)) + } + for _ in futureAvailable.. MLXArray { - let bnPrefix = "\(prefix).\(bn)" - var y: MLXArray + var y = try conv2dLayer( + x, + weightKey: "\(prefix).\(main).weight", + bias: nil, + fstride: fstride, + lookahead: 0 + ) if let pointwise { y = try conv2dLayer( - x, - weightKey: "\(prefix).\(main).weight", - bias: nil, - fstride: fstride, - lookahead: 0 - ) - y = try conv2dThenBatchNorm( y, weightKey: "\(prefix).\(pointwise).weight", - bnPrefix: bnPrefix, + bias: nil, fstride: 1, lookahead: 0 ) - } else { - y = try conv2dThenBatchNorm( - x, - weightKey: "\(prefix).\(main).weight", - bnPrefix: bnPrefix, - fstride: fstride, - lookahead: 0 - ) } + y = try batchNorm(y, prefix: "\(prefix).\(bn)") return relu(y) } private func applyPathwayConv(_ x: MLXArray, prefix: String) throws -> MLXArray { - let y = try conv2dThenBatchNorm( + var y = try conv2dLayer( x, weightKey: "\(prefix).0.weight", - bnPrefix: "\(prefix).1", + bias: nil, fstride: 1, lookahead: 0 ) + y = try batchNorm(y, prefix: "\(prefix).1") return relu(y) } @@ -1769,14 +1458,14 @@ public final class DeepFilterNetModel: STSModel { fstride: fstride, groups: config.convCh ) - y = try conv2dThenBatchNorm( + y = try conv2dLayer( y, weightKey: "\(prefix).1.weight", - bnPrefix: "\(prefix).2", + bias: nil, fstride: 1, lookahead: 0 ) - return y + return try batchNorm(y, prefix: "\(prefix).2") } private func applyRegularBlock(_ x: MLXArray, prefix: String) throws -> MLXArray { @@ -1787,24 +1476,25 @@ public final class DeepFilterNetModel: STSModel { fstride: 1, lookahead: 0 ) - y = try conv2dThenBatchNorm( + y = try conv2dLayer( y, weightKey: "\(prefix).1.weight", - bnPrefix: "\(prefix).2", + bias: nil, fstride: 1, lookahead: 0 ) - return y + return try batchNorm(y, prefix: "\(prefix).2") } private func applyOutputConv(_ x: MLXArray, prefix: String) throws -> MLXArray { - let y = try conv2dThenBatchNorm( + var y = try conv2dLayer( x, weightKey: "\(prefix).0.weight", - bnPrefix: "\(prefix).1", + bias: nil, fstride: 1, lookahead: 0 ) + y = try batchNorm(y, prefix: "\(prefix).1") return y } @@ -2022,33 +1712,6 @@ public final class DeepFilterNetModel: STSModel { MLX.conv2d(input, weight, stride: [1, strideW], padding: [0, 0], groups: groups) } - private func conv2dThenBatchNorm( - _ xBCHW: MLXArray, - weightKey: String, - bnPrefix: String, - fstride: Int, - lookahead: Int - ) throws -> MLXArray { - let cacheKey = "\(weightKey)|\(bnPrefix)" - if let folded = conv2dBnFoldedOHWIBias[cacheKey] { - return conv2dLayer( - xBCHW, - weightOHWI: folded.weightOHWI, - bias: folded.bias, - fstride: fstride, - lookahead: lookahead - ) - } - let y = try conv2dLayer( - xBCHW, - weightKey: weightKey, - bias: nil, - fstride: fstride, - lookahead: lookahead - ) - return try batchNorm(y, prefix: bnPrefix) - } - private func batchNorm(_ x: MLXArray, prefix: String) throws -> MLXArray { if let scale = bnScale[prefix], let bias = bnBias[prefix] { return x * scale + bias @@ -2334,37 +1997,6 @@ public final class DeepFilterNetModel: STSModel { return cache } - private static func buildConv2dBatchNormFoldCache( - weights: [String: MLXArray], - bnScale: [String: MLXArray], - bnBias: [String: MLXArray] - ) -> [String: FoldedConv2D] { - var cache = [String: FoldedConv2D]() - cache.reserveCapacity(48) - - for (bnPrefix, scale4D) in bnScale { - guard let shift4D = bnBias[bnPrefix] else { continue } - let parts = bnPrefix.split(separator: ".") - guard let lastPart = parts.last, let bnIndex = Int(lastPart), bnIndex > 0 else { continue } - let base = parts.dropLast().joined(separator: ".") - let weightKey = "\(base).\(bnIndex - 1).weight" - guard let weightOIHW = weights[weightKey], weightOIHW.ndim == 4 else { continue } - - let outChannels = weightOIHW.shape[0] - let scale = scale4D.reshaped([outChannels]) - let shift = shift4D.reshaped([outChannels]) - - let foldedOIHW = weightOIHW * scale.reshaped([outChannels, 1, 1, 1]) - let foldedOHWI = foldedOIHW.transposed(0, 2, 3, 1) - - cache["\(weightKey)|\(bnPrefix)"] = FoldedConv2D( - weightOHWI: foldedOHWI, - bias: shift - ) - } - return cache - } - private static func buildGRUTransposedWeightCache(weights: [String: MLXArray]) -> [String: MLXArray] { var cache = [String: MLXArray]() cache.reserveCapacity(24) diff --git a/Sources/Tools/mlx-audio-swift-sts/App.swift b/Sources/Tools/mlx-audio-swift-sts/App.swift index dd482ea4..686a9bac 100644 --- a/Sources/Tools/mlx-audio-swift-sts/App.swift +++ b/Sources/Tools/mlx-audio-swift-sts/App.swift @@ -495,7 +495,6 @@ enum App { let forceStageEval = env["DFN_STREAM_PROFILE_STAGE_EVAL"] == "1" let materializeEveryHops = max(Int(env["DFN_STREAM_MAT_EVERY"] ?? "") ?? 256, 0) let enableStageSkipping = env["DFN_STREAM_STAGE_SKIP"] == "1" - let enableCompiledInfer = env["DFN_STREAM_COMPILE"] == "1" let bypassModel = env["DFN_STREAM_BYPASS"] == "1" let runStream = { @@ -506,7 +505,6 @@ enum App { padEndFrames: 3, compensateDelay: true, enableStageSkipping: enableStageSkipping, - enableCompiledInfer: enableCompiledInfer, enableProfiling: streamProfiling, profilingForceEvalPerStage: forceStageEval, materializeEveryHops: materializeEveryHops @@ -524,7 +522,7 @@ enum App { } if streamProfiling { print( - "Stream profiling enabled (stageEval=\(forceStageEval), materializeEveryHops=\(materializeEveryHops), stageSkip=\(enableStageSkipping), compile=\(enableCompiledInfer))" + "Stream profiling enabled (stageEval=\(forceStageEval), materializeEveryHops=\(materializeEveryHops), stageSkip=\(enableStageSkipping))" ) } From 712905462ee9d588257fba7848fae0225c69d5fd Mon Sep 17 00:00:00 2001 From: Kyle Howells Date: Sat, 7 Mar 2026 09:58:14 +0000 Subject: [PATCH 11/33] DeepFilterNet Swift: static streaming histories and materialization tuning - Replace per-hop ring-history reconstruction with fixed rolling tensor histories for encoder/DF paths\n- Add rolling DF low-band spec history update in streamer\n- Keep streaming parity to PyTorch streaming reference\n- Set default stream materialization interval to 512 hops (env override still supported) --- .../DeepFilterNet/DeepFilterNetModel.swift | 215 +++++++++++------- Sources/Tools/mlx-audio-swift-sts/App.swift | 2 +- 2 files changed, 130 insertions(+), 87 deletions(-) diff --git a/Sources/MLXAudioSTS/Models/DeepFilterNet/DeepFilterNetModel.swift b/Sources/MLXAudioSTS/Models/DeepFilterNet/DeepFilterNetModel.swift index 634f5df7..4778996d 100644 --- a/Sources/MLXAudioSTS/Models/DeepFilterNet/DeepFilterNetModel.swift +++ b/Sources/MLXAudioSTS/Models/DeepFilterNet/DeepFilterNetModel.swift @@ -52,7 +52,7 @@ public struct DeepFilterNetStreamingConfig: Sendable { maxDbDfThresh: Float = 20.0, enableProfiling: Bool = false, profilingForceEvalPerStage: Bool = false, - materializeEveryHops: Int = 256 + materializeEveryHops: Int = 512 ) { self.padEndFrames = padEndFrames self.compensateDelay = compensateDelay @@ -377,6 +377,43 @@ public final class DeepFilterNetModel: STSModel { let linearOutWeight: MLXArray? } + private struct StaticRing { + private(set) var values: [MLXArray] + private(set) var totalWritten: Int = 0 + + var capacity: Int { values.count } + var count: Int { min(totalWritten, capacity) } + var oldestAbsoluteIndex: Int { max(0, totalWritten - capacity) } + + init(capacity: Int, initial: MLXArray) { + precondition(capacity > 0, "StaticRing capacity must be > 0") + values = Array(repeating: initial, count: capacity) + } + + mutating func reset() { + totalWritten = 0 + } + + mutating func push(_ value: MLXArray) { + values[totalWritten % capacity] = value + totalWritten += 1 + } + + func get(absoluteIndex: Int) -> MLXArray? { + guard absoluteIndex >= oldestAbsoluteIndex, absoluteIndex < totalWritten else { + return nil + } + return values[absoluteIndex % capacity] + } + + func orderedLast(_ n: Int) -> [MLXArray] { + let k = min(max(0, n), totalWritten) + guard k > 0 else { return [] } + let start = totalWritten - k + return (start..<(start + k)).compactMap { get(absoluteIndex: $0) } + } + } + private let model: DeepFilterNetModel public let config: DeepFilterNetStreamingConfig @@ -400,7 +437,14 @@ public final class DeepFilterNetModel: STSModel { private let tenArray = MLXArray(Float(10.0)) private let fortyArray = MLXArray(Float(40.0)) private let zeroSpecFrame: MLXArray + private let zeroSpecLowFrame: MLXArray private let zeroMaskFrame: MLXArray + private let zeroEncErbFrame: MLXArray + private let zeroEncDfFrame: MLXArray + private let zeroDfConvpFrame: MLXArray + private let specRingCapacity: Int + private let dfConvpKernelSizeT: Int + private let dfSpecLeft: Int private let analysisMemCount: Int private let synthMemCount: Int private let erbFBFrame: MLXArray? @@ -421,13 +465,12 @@ public final class DeepFilterNetModel: STSModel { private var erbState: MLXArray private var dfState: MLXArray - private var specQueue: [MLXArray] = [] - private var specPast: [MLXArray] = [] - private var frameCount = 0 - - private var encErb0In: [MLXArray] = [] - private var encDf0In: [MLXArray] = [] - private var dfConvpIn: [MLXArray] = [] + private var specRing: StaticRing + private var encErbHistory: MLXArray + private var encDfHistory: MLXArray + private var dfConvpHistory: MLXArray + private var dfSpecHistory: MLXArray + private var dfSpecHistoryInitialized = false private var encEmbState: [MLXArray]? private var erbDecState: [MLXArray]? @@ -473,7 +516,15 @@ public final class DeepFilterNetModel: STSModel { self.analysisMemCount = max(0, model.config.fftSize - model.config.hopSize) self.synthMemCount = max(0, model.config.fftSize - model.config.hopSize) self.zeroSpecFrame = MLXArray.zeros([model.config.freqBins, 2], type: Float.self) + self.zeroSpecLowFrame = zeroSpecFrame[0.. MLXArray { @@ -532,12 +588,12 @@ public final class DeepFilterNetModel: STSModel { synthMem = MLXArray.zeros([synthMemCount], type: Float.self) erbState = MLXArray(Self.linspace(start: -60.0, end: -90.0, count: nbErb)) dfState = MLXArray(Self.linspace(start: 0.001, end: 0.0001, count: nbDf)) - specQueue.removeAll(keepingCapacity: true) - specPast.removeAll(keepingCapacity: true) - frameCount = 0 - encErb0In.removeAll(keepingCapacity: true) - encDf0In.removeAll(keepingCapacity: true) - dfConvpIn.removeAll(keepingCapacity: true) + specRing.reset() + encErbHistory = MLX.repeated(zeroEncErbFrame, count: 3, axis: 2) + encDfHistory = MLX.repeated(zeroEncDfFrame, count: 3, axis: 2) + dfConvpHistory = MLX.repeated(zeroDfConvpFrame, count: dfConvpKernelSizeT, axis: 2) + dfSpecHistory = MLX.repeated(zeroSpecLowFrame.expandedDimensions(axis: 0), count: dfOrder, axis: 0) + dfSpecHistoryInitialized = false encEmbState = nil erbDecState = nil dfDecState = nil @@ -707,16 +763,20 @@ public final class DeepFilterNetModel: STSModel { if enableProfiling { profFeaturesSeconds += CFAbsoluteTimeGetCurrent() - tFeatures0 } - specQueue.append(spec) - frameCount += 1 + specRing.push(spec) + encErbHistory = appendHistoryFrame(encErbHistory, frame: featErb.asType(inferenceDType)) + encDfHistory = appendHistoryFrame(encDfHistory, frame: featDf.asType(inferenceDType)) - if frameCount <= convLookahead { + if specRing.totalWritten <= convLookahead { return nil } - - let specT = specQueue.removeFirst() + let targetFrameIndex = specRing.totalWritten - 1 - convLookahead + guard let specT = specRing.get(absoluteIndex: targetFrameIndex) else { + return nil + } + updateDfSpecHistory(targetFrameIndex: targetFrameIndex) let tInfer0 = enableProfiling ? CFAbsoluteTimeGetCurrent() : 0 - let specEnhanced = try inferFrame(spec: specT, featErb: featErb, featDf: featDf) + let specEnhanced = try inferFrame(spec: specT, targetFrameIndex: targetFrameIndex) if enableProfiling, profilingForceEvalPerStage { eval(specEnhanced) } @@ -848,8 +908,7 @@ public final class DeepFilterNetModel: STSModel { private func inferFrame( spec: MLXArray, - featErb: MLXArray, - featDf: MLXArray + targetFrameIndex: Int ) throws -> MLXArray { let tEncode0 = enableProfiling ? CFAbsoluteTimeGetCurrent() : 0 let specMX = spec @@ -857,19 +916,17 @@ public final class DeepFilterNetModel: STSModel { .expandedDimensions(axis: 0) .expandedDimensions(axis: 0) .asType(inferenceDType) - let featErbMX = featErb.asType(inferenceDType) - let featDfMX = featDf.asType(inferenceDType) - appendWithLimit(&encErb0In, featErbMX, maxLen: 3) - appendWithLimit(&encDf0In, featDfMX, maxLen: 3) - appendWithLimit(&specPast, spec, maxLen: dfOrder) - let e0 = try applyConvLast(inputs: encErb0In, prefix: "enc.erb_conv0", main: 1, pointwise: nil, bn: 2, fstride: 1) - let e1 = try applyConvLast(inputs: [e0], prefix: "enc.erb_conv1", main: 0, pointwise: 1, bn: 2, fstride: 2) - let e2 = try applyConvLast(inputs: [e1], prefix: "enc.erb_conv2", main: 0, pointwise: 1, bn: 2, fstride: 2) - let e3 = try applyConvLast(inputs: [e2], prefix: "enc.erb_conv3", main: 0, pointwise: 1, bn: 2, fstride: 1) + let encErbSeq = encErbHistory + let encDfSeq = encDfHistory + + let e0 = try applyConvLast(input: encErbSeq, prefix: "enc.erb_conv0", main: 1, pointwise: nil, bn: 2, fstride: 1) + let e1 = try applyConvLast(input: e0, prefix: "enc.erb_conv1", main: 0, pointwise: 1, bn: 2, fstride: 2) + let e2 = try applyConvLast(input: e1, prefix: "enc.erb_conv2", main: 0, pointwise: 1, bn: 2, fstride: 2) + let e3 = try applyConvLast(input: e2, prefix: "enc.erb_conv3", main: 0, pointwise: 1, bn: 2, fstride: 1) - let c0 = try applyConvLast(inputs: encDf0In, prefix: "enc.df_conv0", main: 1, pointwise: 2, bn: 3, fstride: 1) - let c1 = try applyConvLast(inputs: [c0], prefix: "enc.df_conv1", main: 0, pointwise: 1, bn: 2, fstride: 2) + let c0 = try applyConvLast(input: encDfSeq, prefix: "enc.df_conv0", main: 1, pointwise: 2, bn: 3, fstride: 1) + let c1 = try applyConvLast(input: c0, prefix: "enc.df_conv1", main: 0, pointwise: 1, bn: 2, fstride: 2) var cemb = c1.transposed(0, 2, 3, 1).reshaped([1, 1, -1]) cemb = relu(model.groupedLinear(cemb, weight: encDfFcEmbWeight)) @@ -932,7 +989,12 @@ public final class DeepFilterNetModel: STSModel { var dfCoefs = try dfDecoderStep(emb: emb, c0: c0) dfCoefs = dfCoefs.reshaped([1, 1, nbDf, dfOrder, 2]).transposed(0, 3, 1, 2, 4) - let specEnhanced = try deepFilterAssign(spec: specMX, specMasked: specMasked, dfCoefs: dfCoefs, currentSpec: spec) + let specEnhanced = try deepFilterAssign( + spec: specMX, + specMasked: specMasked, + dfCoefs: dfCoefs, + targetFrameIndex: targetFrameIndex + ) if enableProfiling, profilingForceEvalPerStage { eval(dfCoefs, specEnhanced) } @@ -960,20 +1022,14 @@ public final class DeepFilterNetModel: STSModel { } private func applyConvLast( - inputs: [MLXArray], + input: MLXArray, prefix: String, main: Int, pointwise: Int?, bn: Int, fstride: Int ) throws -> MLXArray { - let merged: MLXArray - if inputs.count == 1, let only = inputs.first { - merged = only - } else { - merged = MLX.concatenated(inputs, axis: 2) - } - var y = merged + var y = input y = try model.conv2dLayer( y, weightKey: "\(prefix).\(main).weight", @@ -1085,13 +1141,8 @@ public final class DeepFilterNetModel: STSModel { c = c + model.groupedLinear(emb, weight: dfDecSkipWeight) } - appendWithLimit(&dfConvpIn, c0, maxLen: model.config.dfPathwayKernelSizeT) - let c0Seq: MLXArray - if dfConvpIn.count == 1, let only = dfConvpIn.first { - c0Seq = only - } else { - c0Seq = MLX.concatenated(dfConvpIn, axis: 2) - } + dfConvpHistory = appendHistoryFrame(dfConvpHistory, frame: c0) + let c0Seq = dfConvpHistory var c0p = try model.conv2dLayer( c0Seq, weightKey: "df_dec.df_convp.1.weight", @@ -1129,38 +1180,9 @@ public final class DeepFilterNetModel: STSModel { spec: MLXArray, specMasked: MLXArray, dfCoefs: MLXArray, - currentSpec: MLXArray + targetFrameIndex _: Int ) throws -> MLXArray { - let left = dfOrder - dfLookahead - 1 - - let pastCount = max(0, specPast.count - 1) - let needPast = max(0, left - pastCount) - var specWindow = [MLXArray]() - specWindow.reserveCapacity(dfOrder) - for _ in 0.. 0 { - let copyCount = min(left, pastCount) - let start = pastCount - copyCount - if copyCount > 0 { - for i in start.. 0 { - specWindow.append(contentsOf: specQueue.prefix(futureAvailable)) - } - for _ in futureAvailable..(_ buffer: inout [T], _ value: T, maxLen: Int) { - guard maxLen > 0 else { - buffer.removeAll(keepingCapacity: true) + private func appendHistoryFrame(_ history: MLXArray, frame: MLXArray) -> MLXArray { + let t = history.shape[2] + guard t > 1 else { return frame } + return MLX.concatenated([history[0..., 0..., 1.. maxLen { - buffer.removeFirst() + let newRightIndex = targetFrameIndex - dfSpecLeft + dfOrder - 1 + let nextLow: MLXArray + if let frame = specRing.get(absoluteIndex: newRightIndex) { + nextLow = frame[0.. Date: Sat, 7 Mar 2026 10:15:24 +0000 Subject: [PATCH 12/33] DeepFilterNet Swift: speed up offline filter path - Vectorize deep-filter assignment across time (loop over DF order only)\n- Use ERB filterbank matmul in offline features path (same as streaming)\n- Preserve streaming behavior and parity\n- Improves offline runtime while increasing offline parity vs PyTorch reference --- .../DeepFilterNet/DeepFilterNetModel.swift | 26 ++++++++++++------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/Sources/MLXAudioSTS/Models/DeepFilterNet/DeepFilterNetModel.swift b/Sources/MLXAudioSTS/Models/DeepFilterNet/DeepFilterNetModel.swift index 4778996d..76f6528c 100644 --- a/Sources/MLXAudioSTS/Models/DeepFilterNet/DeepFilterNetModel.swift +++ b/Sources/MLXAudioSTS/Models/DeepFilterNet/DeepFilterNetModel.swift @@ -1431,23 +1431,23 @@ public final class DeepFilterNetModel: STSModel { mode: .constant ) - var outFrames = [MLXArray]() - outFrames.reserveCapacity(t) - for i in 0.. MLXArray { + if erbFB.shape.count == 2, + erbFB.shape[0] == config.freqBins, + erbFB.shape[1] == config.nbErb + { + // Use learned ERB filterbank projection (same operation as streaming path). + return MLX.matmul(specMagSq, erbFB.asType(specMagSq.dtype)) + } + var bands = [MLXArray]() bands.reserveCapacity(erbBandWidths.count) var start = 0 From 6619c650d0d268b2e4d9052c5ae68b98b20acd43 Mon Sep 17 00:00:00 2001 From: Kyle Howells Date: Sat, 7 Mar 2026 17:55:11 +0000 Subject: [PATCH 13/33] PR cleanup: add DeepFilterNet CI coverage and ignore local artifacts --- .github/workflows/tests.yaml | 22 ++++++++++++++++++++++ .gitignore | 2 ++ 2 files changed, 24 insertions(+) diff --git a/.github/workflows/tests.yaml b/.github/workflows/tests.yaml index 13a4a3a4..b5256cd5 100644 --- a/.github/workflows/tests.yaml +++ b/.github/workflows/tests.yaml @@ -36,3 +36,25 @@ jobs: run: xcodebuild build-for-testing -scheme MLXAudio-Package -destination 'platform=macOS' MACOSX_DEPLOYMENT_TARGET=14.0 CODE_SIGNING_ALLOWED=NO - name: Run ${{ matrix.name }} tests run: xcodebuild test-without-building -scheme MLXAudio-Package -destination 'platform=macOS' -only-testing:${{ matrix.suite }} CODE_SIGNING_ALLOWED=NO + + sts-deepfilternet: + runs-on: macos-latest + steps: + - uses: actions/checkout@v4 + - name: Select Xcode version + uses: maxim-lobanov/setup-xcode@v1 + with: + xcode-version: 'latest' + - name: Install Metal toolchain + run: xcodebuild -downloadComponent MetalToolchain + - name: Build + run: xcodebuild build-for-testing -scheme MLXAudio-Package -destination 'platform=macOS' MACOSX_DEPLOYMENT_TARGET=14.0 CODE_SIGNING_ALLOWED=NO + - name: Run STS DeepFilterNet tests + run: | + xcodebuild test-without-building \ + -scheme MLXAudio-Package \ + -destination 'platform=macOS' \ + -only-testing:MLXAudioTests/DeepFilterNetConfigTests \ + -only-testing:MLXAudioTests/DeepFilterNetStreamingConfigTests \ + -only-testing:MLXAudioTests/DeepFilterNetLoadingTests \ + CODE_SIGNING_ALLOWED=NO diff --git a/.gitignore b/.gitignore index 0e76298a..66591d4b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,7 @@ .build .swiftpm +.scratch +.xcodebuild .DS_Store .xcbkptlist .claude From 2a339392802e0cb18e92765e94bc6761c86a5d58 Mon Sep 17 00:00:00 2001 From: Kyle Howells Date: Sat, 7 Mar 2026 18:01:29 +0000 Subject: [PATCH 14/33] Add DeepFilterNet STS model-routing regression test --- Tests/MLXAudioSTSTests.swift | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/Tests/MLXAudioSTSTests.swift b/Tests/MLXAudioSTSTests.swift index e19a4597..82cfacdb 100644 --- a/Tests/MLXAudioSTSTests.swift +++ b/Tests/MLXAudioSTSTests.swift @@ -258,6 +258,32 @@ struct DeepFilterNetLoadingTests { Issue.record("Expected DeepFilterNetError, got \(error)") } } + + @Test func stsLoadModelRoutesLocalDeepFilterNet() async throws { + let tempDir = FileManager.default.temporaryDirectory + .appendingPathComponent("deepfilternet-sts-local-\(UUID().uuidString)", isDirectory: true) + try FileManager.default.createDirectory(at: tempDir, withIntermediateDirectories: true) + defer { try? FileManager.default.removeItem(at: tempDir) } + + let configURL = tempDir.appendingPathComponent("config.json") + try """ + { "model_type": "deepfilternet3" } + """.write(to: configURL, atomically: true, encoding: .utf8) + + do { + _ = try await STS.loadModel(modelRepo: tempDir.path) + Issue.record("Expected STS.loadModel to fail due to missing weights") + } catch let error as DeepFilterNetError { + switch error { + case .missingWeights(let directory): + #expect(directory.path == tempDir.path) + default: + Issue.record("Expected missingWeights, got \(error)") + } + } catch { + Issue.record("Expected DeepFilterNetError, got \(error)") + } + } } struct MossFormer2SELayerTests { From 02b3a8d4e8ecfca9881fbeef2441920f72ae97cd Mon Sep 17 00:00:00 2001 From: Kyle Howells Date: Sun, 8 Mar 2026 07:03:57 +0000 Subject: [PATCH 15/33] Add DeepFilterNet golden-audio regression test with spectral comparison --- Tests/MLXAudioSTSTests.swift | 92 +++++++++++++++++++++++++++++ Tests/media/noisy_audio.wav | Bin 0 -> 960044 bytes Tests/media/noisy_audio_target.wav | Bin 0 -> 960044 bytes 3 files changed, 92 insertions(+) create mode 100644 Tests/media/noisy_audio.wav create mode 100644 Tests/media/noisy_audio_target.wav diff --git a/Tests/MLXAudioSTSTests.swift b/Tests/MLXAudioSTSTests.swift index 82cfacdb..c2a6994e 100644 --- a/Tests/MLXAudioSTSTests.swift +++ b/Tests/MLXAudioSTSTests.swift @@ -284,6 +284,98 @@ struct DeepFilterNetLoadingTests { Issue.record("Expected DeepFilterNetError, got \(error)") } } + + @Test func deepFilterNetDenoiseMatchesGoldenSpectrogram() throws { + let env = ProcessInfo.processInfo.environment + guard let modelDir = env["MLXAUDIO_DFN_MODEL_DIR"], !modelDir.isEmpty else { + print("Skipping DeepFilterNet golden test. Set MLXAUDIO_DFN_MODEL_DIR to enable.") + return + } + + let noisyURL = Bundle.module.url( + forResource: "noisy_audio", + withExtension: "wav", + subdirectory: "media" + )! + let targetURL = Bundle.module.url( + forResource: "noisy_audio_target", + withExtension: "wav", + subdirectory: "media" + )! + + let (noisySR, noisyAudio) = try loadAudioArray(from: noisyURL, sampleRate: 48_000) + let (targetSR, targetAudio) = try loadAudioArray(from: targetURL, sampleRate: 48_000) + #expect(noisySR == 48_000) + #expect(targetSR == 48_000) + + let model = try DeepFilterNetModel.fromLocal(URL(fileURLWithPath: modelDir)) + let enhanced = try model.enhance(noisyAudio) + + let minLen = min(enhanced.shape[0], targetAudio.shape[0]) + let enhancedTrim = enhanced[0.. 0.96, "Expected waveform correlation > 0.96, got \(corr)") + #expect(specMae < 4.0, "Expected log-spectrogram MAE < 4.0 dB, got \(specMae)") + } + + private static func waveformCorrelation(lhs: MLXArray, rhs: MLXArray) -> Float { + let x = lhs.asArray(Float.self) + let y = rhs.asArray(Float.self) + let n = min(x.count, y.count) + if n == 0 { return 0 } + + let xn = Array(x.prefix(n)) + let yn = Array(y.prefix(n)) + let meanX = xn.reduce(0, +) / Float(n) + let meanY = yn.reduce(0, +) / Float(n) + + var num: Float = 0 + var denX: Float = 0 + var denY: Float = 0 + for i in 0.. Float { + let window = MossFormer2DSP.hammingWindow(size: fftLen, periodic: false) + let lhsSpec = MossFormer2DSP.stft( + audio: lhs, + fftLen: fftLen, + hopLength: hopLen, + winLen: fftLen, + window: window, + center: false + ) + let rhsSpec = MossFormer2DSP.stft( + audio: rhs, + fftLen: fftLen, + hopLength: hopLen, + winLen: fftLen, + window: window, + center: false + ) + + let eps = MLXArray(Float(1e-10)) + let lhsPow = lhsSpec.realPart().square() + lhsSpec.imaginaryPart().square() + let rhsPow = rhsSpec.realPart().square() + rhsSpec.imaginaryPart().square() + let lhsDb = MLXArray(Float(10.0)) * (lhsPow + eps).log10() + let rhsDb = MLXArray(Float(10.0)) * (rhsPow + eps).log10() + + let delta = MLX.abs(lhsDb - rhsDb).asArray(Float.self) + guard !delta.isEmpty else { return .infinity } + return delta.reduce(0, +) / Float(delta.count) + } } struct MossFormer2SELayerTests { diff --git a/Tests/media/noisy_audio.wav b/Tests/media/noisy_audio.wav new file mode 100644 index 0000000000000000000000000000000000000000..7225f67bb0d04020df3401f3bcd7731fe591b98a GIT binary patch literal 960044 zcmW(-1$5iU7M0{A#u$<^bGO|x)0UZ;nR$y_X69|XWoBk(X4o<_CQTf(r6K9x{l_P* zZAl}|%)|TcbIS&G>*m|(l-kv3Tc_`kQMufbB*}P9J%=}AWJ!_SQtuw4dPq3u087Uv zvv`)7?V{&tUpk#$q?_nT`hv!=gLEohP3c;apY$Yo$vy3jmZII$E^9Nj!P*sVmevmM ze`@bFg?!RfZ9Dl&eiD^DB>CwDnv0rAWs;Z9rt@fj>LrJXjXG#v+L#sQ5--Eo@$q~D zpUQ)XiIeW4 zV=-=BN=bh@oMqwpxXL~=jb-3w9?Q$&4h497-j%oE&G<)lnZ@(BOt9VjBoFZ{Vi%i3 zQ|M26g#N-DKan#ene3o>n8b>+S}cV=r~l$e4t9^Or8{T``VZCV2ddK1bR$_vo3i#a zk(QtfNOSTB)+Ui&C1uGvGLeiXjI1HM$Uw~a7->s?;+y3ppl#QRlUgJjsfe>rktlgY zW{{y|J()}Dk&E` zd&o_iM8DBqtRp*5|D?BQKh~SQrxtdLHQ{^sB|el_!+Q3`Doo`6U?r;YN<14chX2d) zseBio!!PsKdymBpn%vwVXrl6Nz@DGiep<^Bnpctq)nMf!&`^ z`jWwxOfHc3WHxDq9cfO!Xz58ol0Zg~ z^W-w*G>u%xnF~lWj534lCIhiQKS*!LLQRsHBoYtNwQM+hFsVZt<6ghxJTnPuB}h5a zn@lBnNF}lwM-p-5gLY2)owUKbni$VPm{t?l^(EbL<_PR<7mU#ZyW5tO#D2HJ``wU& zNtojm@(fS=7OP?qGv?Tg7Nr__1IZXbCX;34FS3FtG&j{rSvrh%p|hZ$JLw8KgARgZ zo}tI+b$l8?_tI!0Z}ngRO$nx3V9(ed;n z4bvxdE1g0w)1%Py4b;uN^c?hc1je39JL7K(T|i$_AKgzU(!=y7?!N>(GJv*bAJ|9Q z6}r)lx*+TKNf<9b$xM?-UAmj~<~II{{SL{gMxPKnTh2PMf~*O>Mbgpl)Lm!cG(4~*ih$&<(cJdAENe0M6XFTHptVUZp zgl5GvmSV+NJ4jwj`hZxVnHeD~ouNH;T8~b`SJ{d{ zkQRe}51@Up2GcR-HLT@Wd^?&(Xh(JpcIFbTMLXfzc60(AgZ00HRs8{r@d~@Qk1oTV z2~7_jD8$^X1gp=gV$IL68|*w@huKQZyejL@I&$FHqFCol)-8QnU@X3%I#v?u!kjZ)e2UR)r4(Su+LVuhd!m**?oG4)?-c< zOPfM(vS9C8(Z<-5732jePd}4Gkn^V`8!bSy(cyFyj@8G}0+@3)S`{;`j=Arr$EgdN znhd*l5$kjWtCI$6Q=QeoQzp@dn8P%73D0$f{lKh_u&rzr%gAT&n*0DOz#_1XE3sy) zutp8A+N0k-Azp?Wwk28>vmyx@zmRhgvnQmNp+AtRyW%n?st4&=&MI-3@(j3H=!gd3*wC z*T^m6C0%JvIt{Y8o%Vq&b%cibVbc@XY%)#rkV9HkZI{+Z6RKZLR!eBpwL98X&7rMR z1L|dMC~T5XlgSP3uy$5ktew=ZX^*siWFah{rX`ZDWDuTl9_a(U8bs_Q2f3+P$tpZW zZ90Vu_L5|TZ^=Z@L-JO$Jp3E>x+HJJ>+(8$H!mjM!*A^6pSel=%a8J}{3ZVgZ~7A7 z__#}0!~7n-=JXV$-nBcdyB#l5^I zck#}+HbEaJN{c<>9*<>DNq3qC*&hmfmP?e?FY>#P#MjX2-gF!yl_8MAmarKA!0+s1 zADNZEVC|tJRiKRx*a%jMwPn9!U3;=E>?E}N1I-92smUzN4mo*)&+BO_EyB*wvg|n< z0PpskC-EOVztG?jEAX|f2)-SJh@c!KD>I~W5$nT;h)XO7u3ZI>A0??I2mHkg5@khr z46TR}Z<4C8N9CYt`QX!rz?zT4ZWcpK^%r)yC$y~vbZr@YIf3mdfzkhhW%(0&GZ9CR z(bAaBcfdS>?N@Ykw6PWp zH%Z&#UE%wd);(=YTG=#vT8j6uw|iQXv?<;_X_M2IdB23e>CEV(k2ccbHOmNzZKApU zQv54ch#KOf7$-*YrM$D~rq9*WL?*q8{zE9bRX>Wk=GAxW+x5-5Uytaw@ouGlQGcit zy?~LbJB?0838NgWTAJ=Q%&=+sjG+Eb&uio{Y(^X`-Z-O$k=@8_IE@^}b-k0mPG60C zywUgQbM)c*3ef~lGFU8tX1o@+#5eI%P!Sf-vC{j+8m#?1F z*AUT`<5l=m#JyGd2X>d8MZ{GEa&sIpU{#*V81wK#{5^K`35&94EC4+z!4-Tngm=dn zclcba_DVj0AA~MvK@2#RpJXjXtg%r)qkqt6=udRBzLH6_EM)pQsSHW#MyK))(nqPW z^j^9ueU(bcTcsP)6j{i9mCA}!$*b&?>&t`Wnet+Jp1favC?Ayf$j#+fl1VNpH;@zL zw$f~=u%wIY;x}Wn-dN9Ibk-}28KN%M^phTE)HQzT{q^j|3@IwDlA1|AW4rOy$RX8~ zMoE>Wh!Hlf87qxvhDF+LOgE}a&86!`UL-fgj0wg?W0%ofnkV&)Og<}rmhZ~%<=b)rIZ4VUCt}9a zQ%$F z^YOWcoDOT&R{lfICl{An$-l|hrB?FqrnNCuV*WLy#*~WvVLEE65i>64x7hZvxnpBv z7b#neN5*!&G%cd_(i*8b)QZ|Ob-y~0{7ua?mTb~KX%nC~v$gTsN3|;XjmS$z+ZxB--g=Kxt8tJ>m4?b127d7>&kdPmUC-U%_h%b5|){N36>=Mt- zXR?Z7pos9&Vh;PohUpJ^5B86EArizakx4|kUDSef@8@gSNs_8vglyM`=Z({E@u#rK z_en24Nl!xbu$C8~qeuomh3BMi)alxIL|!+vx>`&F|myo74M+Iaj={hMJ2qeE)Mhgur$>$ ztBqn4pAH=#E|P>{IropD zk#_3`^)!9HK1k1_8=}45QZJ=<)m!P~^rd=wy^^s@E+Z?(OTDjA&!}vCfz3(AYrp;y zd)EP4mcw9p|5JYi8#Gwoq;J$G;N2#S_g>r)H^qAVJr~!+K3M)L`W=j4P_F!YL>B|Gb~9mtIL`Yj-eYd( zM01f|yh0wl2651G#7L>I)KmEwc<*0Wk7V|fyh?!`1D$O?=}Imz2#3t zc5#h2gM_u=&*>5^2lCARB%WqtEm#Vx#^#gtS`MwYwo}`$y+Y*KNL!$N)yk79MAd2| zXU;&<6Th|27SV15NT>_p%KX>=|fhP;0s>4&U%1KCgevX_X8 z|72f~0o_GjG@dnKKj~Cv=Cfe23bLEDJzL4girRWnBgrTtrIT_(Are}pwU~ZC^eMINJXR_ zQf_I8VKpA`Kj|G}Xvx|w;1chFO1#$mS|##R%ZopPY#^$((`J!&$ea?17nwk1(v8$6 z@noI0OgpMw)S_BuqL8=1?uy}fCuG*=aK}hRe74@_?>J~Mp)?d4%*3b@;Sn4OgBd@g3o!EIBtpw~MA0l5X@W3hL zvQ`&(#{zN{NKh?On4AFa5eDXS3fRa%3)cYc=LXE%|hHAIX;`D8Bh z82*Vyk)t#L7P*#uBSF%cs-z5Z++NU*pR^_LmpwoX&cdgBA=MCPHwSvwg;t{vfi*-S zH#g{J;3egd1#hM0;Yl(fA6ScMemn4wS)>6lxg<>@ABY?I>>!p#JJF4Jw~6M0OkD;3 zQ3^Rh4`dztfmeJ%J~AAcT5;r#d#QmKJ|nx1tSFVgL#`P`UU~^A&Q>6Lb4UeJlvIVL zlm|9c7HHrFEjzrh3&*b$jVuQ`vl@s@Yj~uq^e#QXj_^XT5IaOEaar8qm4Vvir44{- z<)gF7JlcX?#yicv^ZROqjYh2Rkq^e2Ze)db6mE1Yml$1TGbJEA3W0HL-`%-VD7V=j0o=KgV zn&6G~F2}#4yw6gzr1nl-=e_5x;GOO5=#BTz@)q)J z@GbVHr0(#}K-_)EYxZ{XF7kd)4X3V8t(`I^x&{tG^zueLv3I z{^o)C{}-@~8D-_-B(zw^)YbbTL#l^pD@`s~`Lt@CMEX-ut%&?)k?D}f&oP+x4ImG8Pg5U3gq1qTM!_*(d?`iuIerN#O3rJeDO@MrV2_f_y^_5GdpFfHi2 z>$~7H`s-O~5fm)95Z{pD-v>lR4z_3#bx?MzXBz5Mkw z$(wp6@O!Xta7Ey=zn_1zFW}qYJLVhc&l0E`7zo)|05z&{{~P1>kx+&3>d?#3lTgoavBp(WD zAEKpAQ#_g6_Z1Igh;{cO8a0T_jv-1WJQK?dH0uCW|I11AZoEH9&lb^iz$HIvJG39# zDdbZ3wbAhP|KXCcxZi8?OzRunqFzypX&<$g>J;^rx>Y@)HHQB@tjg+c)vh(u9HhH? zJ=$Kopmxd+F^M(TXEOLR;$ zt6DWWJai;jCK8O?jP6v6;K>fEvw-PHTC&jNJ830M8X3ck>iPHC@4%O5sCBe$-gxOkkz#W4M!@e4e7>c`$&CtOr&~bWTbuMZnP@q zd{mXm5E|CvNdd$zv9vWA5B%N>>~K0gg2-kTVwT11Dcis;x&Ss>jlEavYqQA(?U*(| z8w$j_fc8N902wJtpQ7^ePV1@`&~}olnoa$w&QWqcfwQBAuf3)F$ezXkYw4R2{5djUEdw^}h{TL$8B^Zo0O^Toh> zzDe`=Q+%(}Jig)n)q!4q$=4a)^Mx`9?2VA<3Ag0iTizm^&S>=shJ|)=&T5V zEol&mQ}0GLgzKtZ)TU}6S}^(;_ zvXLR-n$V_7kqp6OzLLI`z8--cp~OHJ9}P4L9Plp*O!W2hCHsd5W(8XK4+k8G_vb9d z6-eD2j$^BMF0mK*{YZL<<>tT9&XBP^h{3n;RU)HU%;$+CYzXqp)sYqc_(*BmTKhdb zGBh=GBbYz3*S|2Wn))F$KeAMW16v}K_3yrh!O46vtEwN4K2K}uTbJ6yKOlMp+W9NA zS?$A%v!T2r+rW}hyRnM9obz191ra0mvuemFoctA6X<_n5B!A#^^rqO4S*3~?!y|^H zI{t5@NBBP51=Qm*aM`@bx7rw!_#-yO$RNEnipcAvtHw+tvou0V)t4drN;BpgNA#S? z;w$QLzy*c^*Y@&1s0I!6(EQ{Sv(cj3N#0h>q$`k%zojktA>=mHpKOR zkxsz;A0RKiPml00&;hOwF&YA0$fBngPf>3O!!IKz#wuhy^K~e)Sj65O@G(a zoN3RKlYW->wh3kR@uWmwxj+T42;@+AM@K{sMGB}Jqd%f2)oA2eWLuE3CJ2@$+1)lm}2779KwFc3E_D^JXO8ul- z$(xgo|B6W~d>V%;R4ZY9B%IM@9v-MlPI)4%n!Nto{GOUU3(I2qyz@CO$0H^?RbM*XXdXld*P2c|ojpw$9C6e62-oAF$q>*xC;OqjZ-(TuuwGi$V(d_hy)-(D7(y}&kE&5UIsz#!Rq9-C% zBK4!|q75SHBIhFuBFiG{5I6LQJP3OrU6mu7A~zx(!Y{+qqYkx~dOCU|;!+2p7TQ7^ zp}kcLsi)KrT4!wpaPDT>8O?_^J)*WJv80i9O7kI7sD_Gh10Wk&QEj!cd|)LEKwZuT z9H0nY2E5}RGKuB@V`K%biF#iO?SdJ<*EB5+b?53}Ewvz*5dF*s^XVv}ktOP}=!fVA ztt;ZIp+LRrAdc7oTzx7kxZMyjltX+~5}3g|`Ux0SEBcBk+6;9lYQhJ#fXdXiKmzJu zyt>+Cc-u996tpd2&!D*8d|PPd|N|A=kkI$H?d z&S+TZ>D17=GL`?uV}Nds5s9LiXvBTsA*Im%z*4`UKHeVn*opiF5UbFQT4-@x*|9%ofU`g(YMaD4rj~e=QRB*cKDiG`6Q9H||FGlV6j3@@|lZdJMNIi>Q z#K>h#gau6HdqjStsoq@t05-Y;HMLuOBK<+)P@nC~7%-ush}s4K6WW8?aRs3K>49=K z($@&a*9fOx{r`1FD&~mSs2C0r25M(vo{X}@R1z;yYx_s^#a*-Mi$ze($GrCGV=!h%<1Fm`F}*iFOVU}XJ#fA8Mg;iaeq*p) zQn`=XPc11C7OCGpI=BB{0rf%!Z15`c2UlDDM@10a*JPURM+nTlpe>9Tn|rVxkBDb6*GM zLuu)6lcq4`jcLEBv8ldkreagZDRxxt4l5g#TZ+fDNtvURiCL_?F)Atn#iG1ZmMF)S z1k*;Pxw0JZvMKwON6L8AtQsoolTWs6iu?qS-d%u?Pfqm)z1Ii-!Ms_B$+P|2+% zDmii8Y~`lX+LYTAQ06K9m7~f9CAVp(vPRLB@=6w^lOid3l)@&PX|j^dFl%Pp+u-VQARmo-gE~m&DOe>W>%3`IT(nuMr z3^ApeCYa`!+%a;@H`901A=6hAGrcg4Hu;psrgo-6rq-qo$_S;sDQdLgFZB^htZAmQ+iO%&ET+>+NGWaFWNK=vVd`S)XfhP9GRd^q zG!yR^ng*MSV3+DC&mlFBB~1=1gH6>;u`!EHW99m$*(Qhbx3X7xsf>{q$^Deg(lf~? z7gTB}Jxr>}XF4CVTOv~Z*cWNiQHRZ?Mw!$+<|f zR-CrdUa1YD9#UG`fKdm?@y2R>yi`GYYMhd~$+A&_)F+z_mn=)wqU%ZC)*xGYUoCM$#GDLT_XD_fL0(3^g8PDN8184LL^ zJ*Qz3H&JEUgx5JRK77OlHdHA_X$5fTT7n@4t_(d6SHW5z8f}F(mP7ErLNLv zYP5qpoxgEQ7DcM8g4|z))ioDmb%@cqv{_`xJC5vn`eV8PcI zufU0Ws%xke7Q`5xz>`~IJkl!~=XJ!&@KKzeCO>&qv5)0|Z_XiR3NPvjJFq(IPfIK6Xl?Gp`G%6g^P|*m`Kfr-&%C^yN;7Sc=-Ngb_q|zDx zWi;ufTgDyaI}5~L;5mJ9W!U{KW8 zGl9?26ug*m`eXehFOTY6XX>T@Rc>3Lrgs(hxeeCXWwr=w?}bF=MQ;w#x3cJ=@4zop=xY+{AkF}6}PKrQaEQB1PSt)Z_yQOh18 zuaHdAc8N=Q<;H->qNNxm()a_&%23EaYrQPAJx(qqsm5627vhF1q7EVy3ANiVsPR5PHMfACTc3(b z^E_eKWA$%{8Z=Z^2cvo$s~cbyU|Idx6 z>8JQ2G9x0Yt9L_;u?X2@bJX(>>TC4ndKbMP*hN0wWaPt$vk-?U`X1vYq@jv*LY|Mx zUt77Bd_wwH3K*?$eN|+wON@Tfb7KKC?5EKT8Ei(Qsc{O-O6-bJLNXAmWRs)P0i%m? z)o70TV#uf?EtK|2QzZ>+b{_dbqBPfdu9wh%Lv~yp8RuKQv;I{43kFkD@M1hhU+I`s z!8oK>HhSy-aS{Fy@uHMo6jD1L5z}qd#J7SgZW4#Uz0b>6@Ml=L9MH76h)5=)x_wIY zLL@d5QOOPPyVml;;5GcajUZa{i@72TV$Lq$3S0zhq^pRCvAB;7wfIrs zkCa50z)fBTjGaD+@_vYN;1#b#&0pnDQHj5V7_J>y0Hsi&uPmVJxMmRIoc_#DBS5$= zq86^x!ic)&aFv%8S$G`Z4X)=tJd1=o{Da8qGNQ0Y;F#`YmH21cgyqKf=lLo22m4LT z0^6#qK9B4Qk0HOn7!C1D;J(D6zu+|_b~yV3Jo`-GW94Fr(Au)FIv2S6|NN|3U|wxt z4Olw=gxJnoVfJ0cI;_oUShYoB zDmW!eu}Zzb{F(y>$#d+@V8~_?;=P{WLv+SjClHgTf+f+4$B9;u+K=KUV)NDFl_)4G z!xoNbIvBKq{oubaZVDp9|JW)oSvH~F9S-LN8ipvgI)|C_)fTh1;* z5BsqLybWxl#G4}rSPnkLWpFhg^9EoOoW%TJq3ZshrA$WsvkNec53D6G3@!f(gd~|I zgN4?CpT?Ehap#L*U~Iy7Js~Y^P*3g7zOnlJA{dHSQKyyICfM5rKz71WRm&jy^Ri&A zHD|eLc6D*MQDnZVqt~Rk_B-;u?Z9j2X}PsIWEjm1-uiK5Nt?9Zq#$^#mykJAtqu6u z94zt?z(1~%Qefz30VAO#DT3;AUGhRJN_ro(8uH=Seh-sFRjQ9h`GjhFejR@0dy6MMNh;kX>9EC z*io^1Y}UBdap_|77?WsvVK;q`O^F>B`^t0%-ad=6AD=hGmXA3b+c|Dej44)+xnQ~+ zvoJ=AnHoD$I!1EqMConh(zhC8kt;;?HhQZ59U6SzsBIiJ+DXg65O`wbl=32eduYT+ z^9>nHLsh>FX5tWJS?i&7HT673AFv7v8y;{F&x6T#T0aHG+YP;(5dm+ph9O~;wMGTw z0Wht7kfPE02)!9zyY=z+rScJh4Kf z&$FeFx8J}&9m-CC>2d}-7UZkJ?OFjAIA!ng*O!mvz4-}nTnm7s)e5YD%h106n8zV_ zk!HZ!ijrC6A~{HFfW_F0pW>IWONnBT*bVIC6?#YVLQfadFgpsS=PbRD(N<&yyX-7) zMZ1CrRDsr^^Z9lCjWHHXvWBopUX};!om#vUm?}SMO)zV&@mR10w}D;z-xIV#e%1wi zI0KBs(EjZ-R` zZYyEsrs;Q6N2QALSjlcmRyvy$Q+{O-;_l;!(JjhmQ=`~=ruj+~IBss`q_WJ^HYNu$ ztYfC7F~OL{F~7%jjhSUCWeOli*{$3&JvGfxwqwkS$O&_rR3*{0#3Y;kikT3bgsknb z=`Yin*iz<9u{P5^BQNq)ALd_J?+(UVZ_y7N?~Y(>bl?WN!%ia(yNRBx{9uLm#Ib*P zb+KGz)NhEIkP0g1gG<#B9I7qw6DIKC-T)m=6NSZR?iJbLgC-;IE)TE!L;NBBMvlB* zbQd8oBGO@nPhs_Yp?mBSW@NC&g&71YWtn2*DSp!GCYTX9v9cd0+xpL^*vj(151841Qa7$ap8c5;!}b!C7kt zoc0ms_%DBkd;iI2gE?y!vA`u>Ko0znj3PiD9wKia2+pz{JyI0*ZVz|E(pN!;K_;-Y zZo$uZLY_1Pps5pGn zDBcZR@i}0M<$y<6#Tv4QtRt@npLhK=M zo(*)PB0e_->o`4pHs_OtB4&c$bA)Has2#;0uwtFC`%Mu?#Q}pE3f3V(1ds*s=W49j zAZXV*V4hdu`}QFU*#$e}frUy3&SNbw%-iW(;T_w7_vS=p;3b~f1(sV8F#>$)Kd=(N zVI>BltDyuUQ^In=Pd#S^@aZwG^(o@z9-m4I-)F<>qY(va_15arN z%F+NMZH6@NfIRd9|L!55$*1FtZJ3vf4*-L{KD!P}c7!bie`x_2**d#T_rfpTL;urz zAcglxUHF=Dv@;}g54s8(gM-zAO`{{hR4UEd^PR9VC-Cnnp!Z+Frp)(W)CXL41)`n) zV8z~pg>1pc!N)87Fe?VGTrI>c=fS4R27b^Hpnb&=#jJuazK5MGj3{k3u>Mrm3i6l^ z9yuc{GKbaOg$|}F$mnD?58l5zKf)G34v&FnwVSSiZ@q%r;8Ec6@#Lfy)Pm@5dx)yv zL+v{aF)R2`8*%TW7~=*j$g`3dQjO21l9rvelf;q5Gr0onvOjN#&e6)rzZgNOg3OtUw*QAkcCLEetN-c`(u5 zYww~wT3vmi&d_qB7MuzFOWDDj%YeA(Ivo#L%#Kdl?(hS<(H~Zu^rVHLCo}mL)(sh~ z7k5oXC)6bL#O~6Xljg`;uY$SvjQoMlySrdCCTm&Ifw_`orjZZnphg5xy9%=?1BiKBQjWvdiYwz ztB+_EwgWqJ18np$=-2szE?OJgNq?Z1?gSkSYq|p5;Kx|StgwV_A*Dk_Us#ho$Z#vd z5}IIlZbRPI05fl;m(x$7TGx^n6sPr7;yy2}-_=4eZ-hz+q;vD9w%Bcmw@TAFw6p z-C4?tqbqGE`kQN^8}AhVg=qdXkO>3*X6dX^4G zEaHIw&`_7@fGp6BxG)htWNlz2WpsMZM}4IaD=L<-_hcV>Vsiiy=>qxifphtRCh=pK zd0{ZDTL_!}hRfnlmRDUxsTa8N3P;Dlp zbtYL$onXtCgS6iR|b;h)<6$>9r&}F=!ZN7 zeLf0%kq5chB*YK%#TIl8<4jCV5Bx_5LU9jq|6@^4e+7i$0Q6wCo`6aZ zy2bQFba359CKZposUUF48^Fa5>A8$s@H4ltJ9&*)&?%R((RhK3YmUAEYrGfzVM~q6 zz(5+Ab zUZ4}=!cFW7U4Tg9KJ3N7|EhgBG6{M28Xz8x!SjJf<8i2~wbln4ch$tmzic>fjgIBJ z;4tUsrI67tV~0>%TZ_otB-+D5Tmf!z0i5N7@El*@gU{hRljx0j=so|)#`AcC>g)CG z1~Gn=s&1<=Ac`kK^C${OU17z z)Tdd|xxNIx@G)yl{{-4R9$k_Lkkg02J$I09;9W=2e_4-|*IH{r3!}$>KbZhsEQU<* z8h%CLDmd=vwd&|YsEQ-wNmg{-r)eFuc4QTPry?`E2sXQnYI{8DpmEwG{J)6I1;3mz zr&7__K^w8pB%bxu(XmZy=)<99YxKJ4PMFMp>Dh&iT}AKEasS@5OMx+IMZMpH8Awt1 z5f@uSVdc;XF;c5Si1rwD@2B9Pjn(F=h4Bj-HP98@0W7wx@NuV!m2}oJ{Pzn1G{6t> zIrwdaGw7+#fYnb2-Te=h-NlA6JG9{f&x@Y=(};Dm=@0aBViEGqtk9H~u#N^#K|jZ1 z*#8*Fa2H-4_M;Bsp#8wqf6q(*Aw#*YgNyA_bFEpPtwVK-95u~-`(Av*(o{G#sBLtIs3f9sH#IlY{IOX6WqGtUu^BjJ>%rpK9JNoeW`dWffy zXQC&!XOjD}Tf@q=cK^5c)cGrZol|%IaAtRvbro}MaEkad&Xz8pvo7{tTW?J4Q` z<}T?v zWv&F*VrO}09cM#lap%(beU7>D!r8(($JxmzZp;U4S0=r(z#yB(g{o+Nj9kAZKBdkVSlx{4;|N*_x1EZvEOZ*Hq+kh`CI zs%M0!lV^n|JI<<#xmNOI_9&i_9?8=dvMIZkIBz&NxT?6^F5+tFe&8zPig$H)?RL(M zFB+fhNR00upX3NRTE{~_3&ba6~^EQlWypW?V2-_z-j&*bdxv^hV=UyuLI`Odk< zIT_NP)j7y{-I*MJIzBD_c6>_wmiWH$_v7nXt}f>+>D=cW?|K4l=;fU2%;5CJ`{H-RuZ^!7KRrHVH^ohe`EGq;_t-qP z9=5Z#`F7R5%RbSz)t1d(&sNs4#Cg~8$^OQ1!g0m%)?U?i($>>n$zIN$Xs>U7W%FBa z+P2th+n3u{IEKVmj&I?3VP-rm6eDR#2nN-AP`Y#VPYYrkyEWvhg{ z~Yj{%y5ixq<0*!r`m5i<~b@lhB*e>ciAf0tJ`8QvNVVG?y)o`_yVK#dFSBK| zr+55eA7-!S_}6~izQsPo{>*+K*UxoKu&3IN+GpDhTXXwi`+55qdwF{|`%t^rR^8Ux zmS7)_tJ>KWJGT|K=eBRM7j~Sqx3o90-?05-%WThNKW_VBTWUXuGlI4S82JSLezT9p zpW8OU*1=ZT`q|ps_RD(LR^4v3m$c8emBcHH?Xzv6rE+Xv%TjyLy3cmV-qK1e?QP?1 zdu{b?SFICm&upV{{V!Wf-2I%rgkz6=iG728o2`PqM|>e?1!&v~M`?Ra+bipDwrSSV zR)J@&VV!LCTPs+p^_7iShglPCr)+0zHEdU`s&$v`vo(u#sBN`njH#umZtPOj_HV}= zG3_wDjBzMMMQ2_?zY4760MJVZA`uT8uTQq*u-CSBu(h?-woSAbvj4Ef*`MHEPaKmR#~h^`3+#yw*-;9TWnj-8_UE?O zcvZ%?c1JqLN{7V}z<%Vl=d;hWM{IlSkL@dM7j18C(`{MovGyUhHnw86v({wGWa}Q= zC~H}(Y~O3UV7+T?Xf1DTWj$|kSV~yhTOU|%m=9T2Se{!d#?~Ppwfu3{EM+VcZ3)Ii z?Qo36_9GSkxC^4Pq`oZGxLt`N@5Z+2O#nd`-UH?KCojC*8m zYj&D#mWGxSmKf_uOEybM%M{BxOT-eeX0y3%Ic+Yh&05Cx$-3D(3VS@+deoA`n$tGd zw$8TCdfoEK+QhcX`q6sY>ao?|FPDvUbn{ER$8xGFIwkWGhx(GxNCD;UfW&EPHR8w9}=-T1dfY18E?8Px##$4sDdq%>wbA+rV;8n9cNDM-OW5|# zk{A<=%VW=qwcH6A&0y6nQw8UGhWAq%h?$)N3UzSaHmQmI* z)(+M!)-kXv9iRc!veq)nYPAL|X4?*{#aaf}ceB2+rnfe;thThUN|xhs)vW_91C`pQ zfTgB2Y~E*ywSBk$vNyEHIHo~*F58z|pIG+VF4@XKMtehN^4s=Xo?7zStoB~EL)Iep zJ@$vzfi}ORkmH7JN&GrjLFZ;?5tltayQ8jcwDq#XZNANB7?&(T^YFN;mSNc0Lzd%~ z36`FgmzLs|W9BWELYBGaujZBJhL!~D7|RPw9jj)kVXbRzYF%t?W)0zr?Uu~enz+tw zon+o>E@C-r9$<->x0{DqNZhx$f|l~;!In9eGvEickJ05Zak{OfrH{F%^|09!*WUcb zyvtn15-{&I4>fmeqxZ2| z7rzI`Ng;F-*I{jFIWmFPz;C8SXb@3(5S^y~{g#RcRhlB?vvv%8&FsLLYLbOOj;3i9 z>1YxM)GV{QNUtqBBH7fV@+#D|r^{Kz82y$sOFnK<><{Dinm1SqnG0AhSxQ?TSSDI! z>u;8AmeSVS7OS{Ty=vvl_S3T*&-K+`72x z=APzF_&XAp)x5-<42jrhUKuyne8PMu_OtoV*pFDbwAk&I%I5Xf*_I#Xde&Oz50=l) zq3+3uK0CYexvRK`yG-r_?!E4*Zi_qM+JSHLyMJ^0T(O?#Zq0QVaZ*wDdiOSW5qExf zW_Mx4(`hc3yNNr8`-AJ9>xFByE5>yn(cC)3$sb+s5lz@#Wn6Eaum8uHc}0OIEpI>=fu}{fhf~Th?HTC zk@c(Gk%B}KU-X}Nljsb+h#ADF;mks21Jjdf$D9N2ZWH*#X-pXN7CeO=%t6M35z?dR zI0k`xdW@Nm{jC3t+F%A7&W#`h#5J-bSHV3)+6f^~%v~q&kkg(D$vv4u-rg(I=c430 zZ@kpzRl(z~fSwmzJpSXIA#5&XdvM(~iV-T+; zx*G3}p99t3Z!8;IhbLl7a1GWJ`vtnjo!E3-fS@9z~{Ilda6YW{zIa8M8>6AOvA#p@5k%G0v(})A)KJqwumRv>7CijqU$VBc9-hI-8XhX`$ zEkr2Eq8tmxJxO0;CRU62;OU^X)Dm@s3LA@0zJ^(A+58@U+Qj2W<= zi2J3;U zL2Ek-=C@hsA7m${Mc1L9Fcf`{s8KQEO|J2n?YT`FEL$$WDkJ4JvQ$~Ne3e`zALwb6 zd&_UjQO_#5OSV;Jm#^_eJ$*b=2mC`?A47uLgisXx7$UN0FgUoPt{^O6sjkCP`!w@LTNdP-RjPgzr0 ze_58yAX_gV<#|=!&7-|&kSGM~tU)|d+)Tt12}A`Vnb;<(g*EtRkq&ZYZi&Z8JYjC} z@DRaD{WSdSm83|LCEq+YNfe?C*xC6c3KQiqTG2i69?@`7IrD@G6is99Gk%f)$sky9 z&ysu*x0X1^p5>1HV*{ozsXFG*s#%?d;J^+FahxV>7*pw$kgUBUEpg^;R(P z^cI-yp3*CsTH1>q#c)I?VD??j^rFYptzj-6PsIyeLJs|!S;`!RnRNvG-iKX)*D#}8 z7XE@=h9?5GFj4T57(jF-R}pu~?Zh>#C9Gyv5k2rpht`-s>*M8?m*-W^M+O%h}77aJjgc_>9jaI*}7_J`q6_;dWv$UWqx#_DEvQ z{>s_KkIYXU*Q=jY4yZ`2JW=}DzQrC~^sVT7+0CjJRa0taSA2K!%70h*R5p}9b^U~F zwPp5l=kdxg`;MX@M@;ekih|k&6{jjYS9d7&b?$eu&gV|PYo4>e^SNtqso7cLNO$yi zP6A?rstT{SRoI=Wu5)G5niil>{88&ujnyoJNJg{zR}F80lro@xaQ#zIzkaP>(-2uR zxKdr!w(>>!sOqh?hPoZ~_UZ=6X?|T@Q)Q~!S^WaCrV^_M)ikY2uIvQ)lsl`NRer44 zUGoVzr77S6kF4rc{-dH1GNE);#Z}{~a%&5KvfCPByrb$nfWl-MC}P^y*ENiF>p+ze z2ho>b4GaFQ0#&E#Uw-3%KU0`it zUAvl2kP&~ukzZEX_^XarwYXtGy|~V&p{TrBsk&w+r~<^beO)KY%l~b1ht$8TeqEJR zao5$mdK~8lC?@7|>Oil!zwUsu$l11LXH7`;+Nz538I?@s^@_$S?@Ddu_G(@6?4q63 zy4tYnD-B6ChKfOT18c`sMc4RMf2b_4K2$v)a=Q6dt*XhIjB2KKdrf%tdB_=jTD=tZ z$(Pm?K;DxF?32gVtbw)1BT(iM5Iw91BJXnGrVId*YB|K#uzD4I`g+xmihxS8@+#!% zM_1gd+*|do@mUVS~E^Y2=S8@WF4RgzWS4k^=mspEC zId+$HD#lz!$p0Tz#;<5v8eTNG_>dEIe0Llz-(DkXm|fXhe=S{;*_e4DBTCac^I7`* z%pRE|Ge>9M)2zt}(45G=QD`WCQy%P0uyit!<|Vp=xi}SmUHHRCJ)PN z^D1+D%Wd-%bAZ`t&aqCi_?uT*_M1mrmK#HI3iI>K9R1*eb^1c>3awn%O}k2WPd83C zO`oS5rGKM8pqr=Ptna2P)R}Zob#C1%U2pvfy_ar>ZmTX@8=ynAc?EZM<8=>ozu~Ce{JqkxYl@4-`n`w(8V~=SZ&Z7*66eK-HbVg2*Y^86a5u^k$xfE$K%EV z!yGurP2&{fOXGY~b9gk-JOs{k%=FZ>+}z7N+|(D^I>T6L$}#C;ckDO;>M_8Z)$;bS-pe3-%b-Smv7+!*!+@_8L7+Hw`oOb9Jxs&*nBO=%sy_ z-&`*@WaKLgf(zQ_Ovo!L_?=&p=bvlK9bRC~N!E&&LK>01#1{+i8?bz@9>R9Hwfyu{{SENiyS(NlH`B3t>q+`i7iS3eeQrjm#NI9RfHKA{YKL2f2 z&zv8+&ejI7I4vuGRBtO^fhWk3o;;`DXiqcwH5-U$uJgT@+ ze!q;UmRFCgtgKv7Ijo|_K1we#5wXl;hqe5kovyR)iWMRM8d;zU~~`>LYBg&O;s;@5UV zN!N-^4O#BT?w6cI$T&cex$fzWA?|4nbv6Ih)VE40LN^4o1$&3x$|~6~wjax|J}jU0W4&3M!luYj#46N^0{Ht_@m>+F zNK|}LMj;??is-_L({R}4}3C>ALa ze-BYSRD>u{^#Lc#alK-(T-gV z-`=dqQB*20)~UeRAa)#lCl_4*2gP57LlMtPl%cGGoy#s`J1LJSdn*xT75j_b%-&)6rkAhs3TjBU$i!zcE!cUfO$ka7ci5!wxBTeD4B0b8M9*zar=JDc6ao`&aD z(7t1oXW2YOokFFsD<-nP*(kUxFW3-v2fK~k$F64g!vE*M`vuBV?0vRf)Kt}s%&^p* znVwlA(oCfz{CjrObePhqB*-VIP1jYOw|B<6T02E_UfD&}d0E$+U2L6KbSdq0v~%0e zje(syHVx_=B96HLBONqW^e_&&WxWMZj{{}YgxUS=$!1sY;0@DK8bd2xVy5rrB=Q?HwuJ1Uz zwpA|2}}<7)?U+YssADW)@^6EY2Nm5+b?Z@w!zvqYo}|&w!Pf$ zX)8_3_ibX@3jNF5_GuH)?nT?PZ8o&M()vSNlYf5mkfwLr`nTWaPqYhbk>BiDvzvaU zO&2#$ZGNJacdOdw!7YchJlDKWi}02~t^8XqZt<+S(^utF)BIk`6U_!UOKbMH`EhvE z&PVT4=`+H+)cd&)<16=j(g&dya3V z&oIB|ey4pG`xbg%^+{^-SiDm@w&@U`&R#2gW!^l`U!LjW!NN4j5#P&xb9_v`hx~$l z89%At1z*&!!Y9!8vEO{(XrB$ftj`$VTHi6gI^R0q|9t*=ul8B&6X~2pVL0yyF5Z8dVBTu)LLary z5+8+68=t@4{d_4uzMt7Q#7FG2%=fu(d*4!@)85J^-QlQ3KC^uDeMb2V^F8ak!l%~T z;p6Z3*Y~)Om+u6>dS9Cl&u1t+uJbwPYw=6+9pJOhx2<1)-$Br_YQKrTZr`qcWj-x^ zt9=>YnLbXRRlZ~W?0$26Grafv6#B$_JH5yGmHVyn9SKJY@Sfx?_L=GZs|n%l?W6ME z(Bzi)6rV-jh_BhV-sg_*IN!d$iN3>qe)(+o>C+^_H^?g)X{dZs*B%u0JUNSeOy-gE@QY|COpfItU9gMT z!}`fJLc&eIIQ9>{LRn@gdrLZM(u6l9pfvP{Xfka=y zLjfWP;cpQL1Thdvnjt(x^%9bFd)Xr|Rz6$2OV|n`dcUa&OeK{F(b1E92mBQAS?W8v zpsr2Tx_>6Rnb!bWv{XksiEhH(+#U5zP*QlAzaOH--VmqB)u z2&V8aaGUYVct!B(Uc9{!*AVb_!;a!yZZ^aczmnzT3GRAs2}Bq=b7Q!k`~-ea!4pAC z-gx2)$>F{uSMsXKOd=Q}QwxMyR40KQqS4(sThOM|d|?Hzl>mdN@D=`Jo*&#hBY!pj zBX1I~ikrz>E~w`Z6(k8}^MfH;Stsa3#Rz<S5m z`6Mb7!A=c5m#(0X3OuOCv`Mgx_Vc(Vk%*$`Zp>^Zn;K0^L?MhGqVm(|{i2Ja)}V&y z$gE+s^b7tX{shoxIQipwr+8Vs5fF{(Cs-^TA$Y(~hgdTu@Z~4+f(25_Bs2<|3vW{G zXuWWuZ~*87`oO+JvM^UTUf5r#qV7{Cgk@9>6(PJyC($c}T`8L01h3{%L#Q*6ZBSib_{4P;)J6Ff&5PVZo;?JWx*x>E@}|dgc-=#A-XVyxliw*BOwYs zn%TlkhPbp+cuTMgBFKjXqv0r?bay6_-pK3|2a7f^IH*64LNvihp9T#?73|S0p!!p{ zsFw5|p$|3Mqd~gavN_3G~(+vL30 zRPO?>i=OvAe@Qf=Invz{U%D&Br8dy_#l57xN`ve$bx;_k{wHLiCTR zXExJZ>JNNlu5i0xJC#gTLY%pZ`pFcF)-boJcu^P0eNmctgd~^ohm_{E)O2B#5M@G` zBUG7?q4TKOpt|6SPKX~$?ue^I?M>5RgrpHnbk#w5}Avqw~d1d$vB<<%4M70_r+0AlBd;|KM6`(l-T%~9= z>@7}(J6$lkE54hzE!!Fwqn)Di?={mq@xXGRazbndk(aO|@adLbNs6r|n6hi|9Uj-EXSNMezGsCDoQ~|`9Hesu!SoG?VZIh6i}yqO^%TE_o!8D{MABX?6o*P|pi0~#S>+K7db~~I zHlRLiB@v15fEJAumr3HGx6SsrEE+5Ekmh=fkPh|0JiI~Q7AAQsDH0tMErdAc39+Zg zd5`JRu2PGn5{@(w_IsyEqCnG^B|1unQP&{qc7`!C#dNl4uS5;%C_CuK*1^8-C6OE= zqg;_wG)Xj;-YHrs4uBY9G-%t}(GzLd8>Yw6LfVhs%UoxEiAGZG1@q~Jl!AUM8cu(s z7tjgR9f-rNriao}I)>^g>_u@Ir*NRKH*KLV3NxW!T%jgF8|tv*l(RI*w0T9*6};=4hd#b8{ryGfK~ek3W%k`k@Ofw zK~>ONx|cu;ijI9eC+N3&2(-K%JYV5Wp&uxQ5p!7^S9SK$$iHv~5~J8DB1ZC15~>B;oHRi^vcBNU+|0 zsBwZx{6170x~s6BFA;8qz3TgPSLQr515{iG1u4QmLam@3*!M4jy+SqU%HBaMwgn|r z3+j)c4ezY*4805#L{i}fiecu0T^9=t{P9A6`X6!NpqhFn94_=1To;TM zo)YXA7SgY%snjg`6qP_75$+az6;2U07tW=|GiO8(K~I+t>ekIne~4gRU*@Zi)98hL$7g~ief=$9SY9dt+>Z#9ybm4cZnkf}Er7K~c z)WTi)0Pl(wcB7UE`wJLhA8Hx2?iXekJ%VY$aOoGIM(hajbRooW!^kW}uK=PamP?f+le})0C-)IDItTf_V?$>lO8d9!a}}pQ+_^8{sa#jz3=TjvvPB z$gdQ9fGEOg>a_3|=$$_CgZKk^iQE!$A~}!zOeT?I$ue>;ub%f2^cun3W2A(f1=QA35Rco%sic`JEqc?=KX8@PpBLa>{k&fg2YObyDOPSi)R(T&u2x=~Qf_Z3VK z%oA+nv;3!^x|+z(g)8bM_$hb}!Z^&edz;1knUT~J0N6n{P5PxY4 z`p!#KEAUwy;B&MBE1F787WNa25snlTLY%k@Zx*))f3UC{e<^n{H=O)I%D7_gX|4x1 zjU3CJL%xHkuAEp8QRn&G`P}=&0Pbksd~!Fri%7!e66=YPcmsY6AA(mBe6p6{^4f#m z&)xHj{rYCjC+ndi@Zm~l7-xr+)_|Dyy6~))y@dK z6w5|$qZ=_d`I)Q0KN0CfAikaulaqPF1l@U$c~)K&Hwsi=&qytIDqQDz-bC(3?p@*p zK9wNI9AYpLL5}7wC0~(dh=9vL^OZ{u;CAB8gB3zkXuacH2hWRmjBB__+_{3yV4Ipy zBZaHUgZOxIIJ`EC8b{&KJ63V`lP82m;VS5Jz4#%5;lenfytlkm&~85E z9p;_pD!Hd%^(5rB;!fmt<1XatL1DF@3?>4Jv4kBb$>HP<&}qCRO!#i%8IeTvCMFU4 z$OQZ!nu;m#P<%6JLPlaEfGBkfI|_Yc4)z4&0>f-0b`AJv-Qe#_XzfuzifWIFfD?8X zGV;y9CR-1*v~TED&?&?Ljcgk_2)&MAz%=_GmFWSRf{KBzb_<@BVomWhY#%-rpM`ZK zDu}C~)Hsi;ffE*v7|~-`N1!&{M+Tu`SRQ&F8$pP1FU$|d^fhcU+8R3t?5to+4TP_g zD1%^7nc^CfgM34t0V_&}rNjD_B$|>fiGIW?yeYO255xc96Nw7=_ZL13v>g+PDWG&Y zj8nvUP}|(Y%dtoJ1iU9Y09k;HLARncP`x6TGZFa#8p0~19=^+KY&oz3#^60j4ZaTV zP9)=h@iiD1VK_(JCifWN@{HmP1-9B%sOa~KQvsB%7H~Ipxtb_X^5TK57E`p}B0qKl-qd$SKHXR5Ct$}5*7no=pK|$1r z?7=ReR?Y{g8#N4Sb+|a65H9e&YJj~bKss_pat44(A{D4!`=BmTZ)6y<6+w_pplf9y zJ>i%ikt}2fvW(M;)11=_2xKLiJCMgN!d(wUNhF&y3OIA)klUPfNK3emBOHG;A6i+DFT$nxb>a!} z0`x?7d?LPrcu2$m-(x@43wi84HxTHyT2e0 zA;(MZUgmy^v_>Z*Yk^y~1FCfOMaH2f{Qv`>; zI~rLBjIs-;3+;&Y1H#>6v>514IA*~Xpe!)i_Q26<(UVvRjIZse3P#s9Gy+=Q1N1P{ z(OyV7kdTs*&Y;%vLZ1N_Z!X0Uz_E?Jn#=#9_EEVz*a-nz-eqVa0*-FQ}Hq^8FY4ku{&Tf z?_mdl26zj;O=pac#i1l9{T5?CFdCna=inAl0FJ^=!SSQ8_gDnl1MJ)oVhUmbqgN1gYUbqLAiS)x>V5y*yGh^Y9zc7thLrj2u zv)(}5ae(5@o7_f>2mRd_cs7Ro3Z9~d2qt2I%M%P9(+FZEKAU(zZX%x%27DMk2k!uP zd;q=`^ojkjR=5n*Y*|{swH11jfNBU^iZd+HX$O3>-{87K$E+QS=?Cic_JITX)bUictzZ z1U4rJ$ZrGOO@OGYayLOTV2(cp47~}!7_@MPaN2PWAbOy3b_81IIczl^gx|%s;U;`E zZi9a5L2Q85kHx#;8}N_#7T|eCV?!_xxHIpu5G)5P#1>-HuvJ(pwi&(;AD;mf%~tp| z{3!k!7%(0rMH;boK#_R{^Wbk#LN3NH%)zHSvP=(Kz(*+oeB|zJ&apwXV3FAnB6W0OW>vHb^%H?*b z`xN3H4wcdxfw^|SF{^PmkOXH!o^lY(V4aX4n6ayoo5)AR4V1-3q#fE1#o?M|Xc^3p zwNTk_39=pP0=7oRAtym&uSV*i&Y=;pf}Va8C^i>Ek3S4O`Zj1v?_f)?{VY z49JF#bl-1?xSH-x<8*iLaVwFxoH$@x zmU8@&Mt5({c}}f+Gte=g197MrI5!?{)Exs^zQMrix&jrzvK!^_j?0bD8izxV?F%{P zBOA9vrN0HxmoppZx$V%Z<2WAfOTaq$*?1ecm>ARrT-|uAQSUAQBF<6wd!PjzH40C{K_sKmF9SYpo=~x3skjIE5=v5Kmop^!oI2n9f z9x;h2)!E>VYX(1b1zHKr%ACfx?nWS} zxj7Obebt~=lt7cu#bI zc{BqQ-?NBAuu}3Tni8Hw1|Er5K-;$_!tfTvTVfb75PaVo_veaUdm(u474Wlz(;G&^8ctKra?UXDF%-atE=RXw%fMdd zfzPlR{Dlfw1FV4c*Ac80_8vyoQ#2X)WxL^?9{^i;4d##USPiuDLKxq(u#2!h8jemv zhX6(TC{S>ZfH$-Wyv7nZUMkp*cJQni`gb4n8oCp^1oreG=827fzZK{XtOU-Kgpv3% zun85|K=9{}0}BnoPeR-O#r!ZKHUU;9*Wpt_xTCwV*_aM~S79yjKNt@zhz3=`-S&hz zFdOv&TYnwC!BETs7NZ0BL06#?DfLbvg=7$Av$AUQBV1AwkRdor@J@;4`)#EvzVCM3J z%DY>DYOxKt!h1Mhkd24{If;bBnru9HIlB=B(g0^~0yBFjn1^SAH{%a?p9@sro6sYI zfyDhk<}?bPdNs^5LC|luAcLUa-iKbh9IkFI)KW~~JcN3_cVYIggf*NN9tCpd!LgdS z4>s;}7r58B|GKYm;(^nA17_;Iko}ei%;!~5bND;*nbQbf{%Us&tXD(brNA5>1>^4! zIu}-zGmuNL-W`gZg3r9?BtsK2G2PiRvFjeik1V%SP6vZZyW+%lOt9*@>qEP zA>=FaA36u~2M+i!SXpGd`+*m74_N~wXDiq{1Stitr5xC;t>E>^;17C1kBovA^#-5b z2IpN3E2JtQmg`|hrUBMUFTkf@;otl4%0Bpe8#MpJ!Ry|Hg`@QdiJn6mVFl(7yF1>< zEvN;&818B-SoIn?0}vY$h}5{rq z$!X+B!Gn6_?#Ag1)se?Q73cA=sviq`2y*Cohuon+%wNFCY5X5k@dFU?^iWZEGSDOk z0P{}(?9&ndw2j}PpZqkO6P;bp38n3BRaEfR!->YGe0>ZX>>MT3a@p+O2ps5x zK!ctJ%--H^ZR0nf>tr=X00A$nu?NiH$H2F0Xgurg=iUf}&UEl)CxFK_1={Z~Fj;D# znv6dOn8842nGM9Ar9kdn-Ixq)*fby*9{e{EDtUJWu5cBQ^sJ44;FIZYGti%oa>~H7 zD1o}$+Qxgphu#O3Z@Rg|;OG~DQ@j@FpSRqn8$JJtpe|4=IPN6gKSD+1p4YnWvo z!R+D-BlZiZ{q6%Rs3p+){sZbxDBMZyzy82Wz74dsBaJj?F4WO}$higetj9u+fc+fk zHAx&#PJ1d3A!Yk(YgXV@hu0`55<+XlNYU$Jr+1q)#>rxa}k zUfN8^Bl?aq*grG`KaJ;LP4LN>FZ^tP?AioQR~V1c?uS6&e^hES{U|(F^wl`muo!gP zw~cPoZBsK-Rgr(O(md04r*JGNdsB@*MuEL~$swDtu+sX`_Ohg_eR|=ZlDQ?_>_@Cq zjTzSYMMq5A&7TXCY@#C1qP5oeqWBVr{d=*wSWxt+aK7!gk+~6>{nkqJ zXY&`!ILju>Q|Ku3ZIL!XVMgKR!bOECg()_!tvJ#a&9)-LU7OLFXZdFoTV`06+ub&`)lqWMHrqO` zaDUE-yzzy%a;9Z$wGAk?6;_mF+6NZTam=z8+tZ3e?4OH6?Z1oW6sOpm+4tGI*jL+o z*hkn??8oe>#cxZ76b~!TuzTADC69`;3eyTF79A*@Z4=wt6>@Jepuhn454Zz9C^_LcfGrX>QHboUEMa z?2{V1TAutNfk|GMJTb|hRFkwb>0?q=QkP_Rk|_Cm@`U7p$){7;l;J5oQ?QiQDa})E zrS8daWbw1!Wh_^(R5O|VG!HY+WK2+Jrrk>$lC~tRd)kxK_G#BuOESi54rHpJ2uQyy zMdpo+JoU`15e1gK)!FYg$237%%JhJ=C#r3#gJ}!X3)2s%Lei$CeND?xJFW`P=$ScM zJxm>?cBvMtpQ}Erc4zW5{nh5QQL0y}qZ#FzxXkexK^dm>ap^bIsp{|P?bWJOSE_&7 zhO{rL$}}o%v1+qwP1=mKqEt3joR*PlNzF-JlsYDDwQ5@0_tb9cmFcwVW!e<=4^;lg{sGC{Zu^FM%4-RJhJ92G=^xUE!=v5l3)Q1kOVo?gC#ezDY}H0} zwYpwiqyC|;R$W$wsP3z5>X8{Y;azW3Qq@USH}!Ybb=6Y!BXyywo9eczO#LgpZ~85@ zH2qb2i}X2g?nml}>QCx98J98_W%SADk!el83&(S+ebN`CUsuPdKV|&N+?YY8&qzO= zekEOz@hIa$`lF1Wng?0o8g1s2thd?UH4+U^(>ueO?#^hJ*)_8~<6uTW=9A2R8C%lZ zYPi{-GTXvE>zWynu`O$hW>ycHV3C$Xv)irBx*6}P;)|H&X+`&1ynlGC0?4Z1bIY%{( zIrH+z|R-OG;WPGD=Pbac1_latZSNr%&8jRtk^6z>uA=h z?339Svuc{E^>t<_L=WooL zmtUCQD_>o(LBCet333%Gb#n~EjUoA%_HI#*qfc>C@x_wvCCSCV>|}|)WNPtf$4}?! zlE034=aZ5Nj=7Hd;^U6bj?Rwd&fAU`j&NsZM_1714|aOHM6O;ARml=ZcjpY}BF9?C z0|)CE;auT3R`RQ4DpWPCax`%scSSnBm!vxTIRy?IR0#g-401dxzTr6LT;SN`c;l>d z`am7w3$9(xKPBf~-HYd2UfXZE?mN~v?9SoNr;Z{A?dV&wtmJ($V8%+qiWihv9c@bR z;-N(jo5W#v-E|Chv@G^4PH||g9gGj{SDl4W%{18c+)0(nU8RmL4nO!VBb}E@80Syd z5Z7MUUT0CsH^*FOfKvpOSeHXZKY3|*>GaZlt|6tpN~e?-KwZYBW!KBwlx;76RX(w_ zPx*S6sjyk`J$st`DOM5$cPEF}?=V#}E z(p}EeP6AZxZWj+~^)_)OIl8)9x^B3lN+XJ$&dsG?3%=!cEnZ#RzvySl=%N(+CTC5_ zC1qEzF+UCm3W(vz-%&ULP8SFh4k0`vXzyB037O*fVlr5elfck31>T~977;ug=h<(Bp=Ut4;r z@T9q?Yf))uTUT9m!Az^xiWeVqm8c)YHF2a?f5_J+ltd1Sd=-sF=S0h6KE^agH;Mcd zSsuA3a`qomsZtJ!2#c~DB%=HDZ+AL4GtCC2`Y zy&88kmi>DvZg~9MgbA^{uyYDY=-0^SaqZ*Y#qN$DmEcU$Bt1{qmSju(FL6&Yn_x}s zl6*I2XRIXEnlv}5TS|}Q*c2k=UgGBD+~m$lpAt&r;^REy2gcJ0s}g1<9EkrA*CKvK z{K5o7;_}3I32hTP#$)ll_Bj6az?J^N_pu5{nj$FVDt)}$1v-{rXy zhp}|%5M}jm8t&A0#W+^XVr+L-%8r3tgBk2V(B2PXCnzJ8(X2JS%Xp( zHd)y|G*PK$dnma|m-0$zHM=SFZ}fjrM<7pNf2f1q%}PVZE34TGWf_~to>Lxy906JA zLsl2nD(PE9lENo6SeeBBU|+K}>|55vK4i<`JG4{c%E8J@Y$1z;5}}{j2g zicm!ZJ3_ggjbJy21%)pR{ZF}tT?5%857~)IM<}ZN#@+~xg1)W^^9~&zdL(RXXlQ7B zXo0dx`0Mcfq07UThdoyYhV2ep9vTeadM(>5d~W!qu$$qPN%e)CH!32iSShsJHy9@_x@8J+9&LNSg>+f=Q}$D~U@t1ka6{OV&{N99&>??#e~yJM|C1Ey8`(7SRAj`TPZ6T%B6yS? zSsKwV^7NnOf38I9BX5UykNEj#cBCaTF}xt9hryh2KJsCNKH_^sMby~H#}R#^u&5r9 zf`~m4JtC^YZSnq@$C506CPWU7?DXenWL@OENZ+Vlk!vEmMV^Sb6nQh^VeG7|l7c7s zU9^J=uIFj<^m)YvH3ft7@8yrmTbB1QKQKQ;JH6m+!7bCt?7XD)IfU+4uB~8NUi$)p zaYas2-Z5RDRIaK<&nY;a^F-H6Ta`BH&-0k_oU{3nc}@s#Pm9Tk?UxXmnyANZNm-lY zAIEq`-;TK+vorGh-;=RRqo$_r%)gVDRDkIexy^J+Q%HVf+L%OtRcTIx)<>U}dpU=r z|E_PZZK3V2_18HH_=Y9c$Jw^{6PZTSE1gh%G3}$}x&zPL86EQ17~>V|9dC=t{d+%t zTKw_2nCLN)iYQss_}CL_t9otxz_^f%Z!+n|7NXoBWMg`bnmD<{_3MlTMEqCmC0mcG>*Q>83|E zQJziJtl*RRr1_sY)s$d54Y`1+CND!9SXubwR+Y3`O^Ck0w zg4MdEmbsQd>psYfJZwB_5SjXz-dK(qkjz;+mwj&b(v*LO^To+}w_%!HQry-WQqa#d z)bY<8nqHIARQtdZVrXhSZ>%#WY47R=4hO@ZLQp;}hN>fMUH~m&v zU$r%kF=v=i>o4;meZHkz?%Ax9`njp6vpSYc(cV>uX+Gyi=A73hIlo$DnU~U@YQE-; z$v#|g-V{~1x@1P-k)ruFk*%q{(yFs{vUanbwTBlDDy}PBXuWIeYHLw+-4~9%fClT(zt% zk{JeRw^|Nb?m*UXS4&IVeQSg5sdc9wj^2#i? zlo&UfURv#@Ehe)?VIFGQWo&2qW^qEl=nU^ZX{ODsO(v7t^3giS{K4q5hUq8f{xo;B z=}kG7_0|=I$8Db05#|GyX7&lj^V+k<)_MP>PK+yo{<0>XOY}+W?4Z}0*je^j;db`er7hfxhwjVS8f^QtIdu3p( zzs;$(f5q#pA%&U6J+p6SzJjXvb2Z5c1qpOQbb>7DWAcjR4oM%9eG~r1Z%tYg|0D5! z;^l;8DW=5nNzGDrB@Id`P0}ZfPVSRBGPPaG_9SuI0Chs5B7434TTVryA$3qntJLQy zp~;g{XC|RZW0TLSgEF?HOwMU$?x??I$ToI^4DDpo4bv^7)?hV{vo1BiHN}{^n3F9^ zb5q-cLZkMMcA>4iZLzhrsh>^+Inw=&R?{C#iM_GprS4H~q4~DuwCRBPZEkP1GsoA| z#;~uzv*2!Sa&DNmHv4_%zk=quuACx^$hcXvFXgeSXZoEKm!VBzsAi;Ua%R`Ene~rz zTcsYz5Nky0mpQkc2My=a^Yf2r^w|boJ5^p>Nt{>OcjI(Ruu)&MyQIO{&Z)A8mW;61 z7f*7vDBa;w7OyLPX$j3-kULgY5c4)}ZM-G^XYxYbA!nL%A5_FX;L3Lipc=Qlc)Uwg zHUNCtAcx#>&$Yl2>#B9lcOG=%u3+bvQbkokb|wwsT{{#mr7fg z_btzMb*ea7KDcyexwKqgYApR*<}CYA&a1c#eDTZW;lLX1RhK>@j%=N4#AxWBoF~|FLif!+q%1M-DSIVcekx?yY+6}UAA7T6yomo z{on7&lMuOg?#!7pXYLH=oS*%;ZNDSmp|JOGbhL%d>uhTsqipN!Vo=OiIHx;uUB8^& zoHJdW-KCyJ?g7rWj>cfJezI?HoOdj-t+0Kz&vDeX9dwvnzwA1@(lOGzB+$+=#zt|P z?7cuF-(#O>``xz8-p01vcEo11u^bN^dqF$aIrlnufZ^+RHFei_^|a4(esVcnb3Gi_ zC}*BKXtX`Q{CVdn$nFc8^C zxjP5P1XSK;;O_PJEkSPN>Fz3LzGIK=i*=^0f#Z|)cS}#?t=R7n+Rs}z+lSgx%rT}E z>pSZ*(*k2}6W?esSj_cJOv6vZn%bc?Z}mTP<+|_s7TP7cDq}%yN_Ca4gKfHPX^mD( zIzF53>TcIA)jqTA&^@V{Z_?}b>vtLM)E+QvYL5L^=f?pPwRVHPt1k0bC+(J+!8#)> z*UgGXPh{bU)5EEu1C&E4Zob>00uW{24$a^Lp!a`m#U@Yf3- z@Llrn@vcC&_uig)?u+(W4ykvI_pJM%!(f*>74CYT^Nx0o{cfJ;t-HIYooA7&i#yW$ z#5UBH>ML|FcARhpO!Exytjmq(_5Ygc8GaZp8z&n2n3fq^8vB}ArU=7C{W!yILw|iU z-RW9(?TT7DEGg6UoAJCZUhmPCYCGswXbH?6b!z{uc~JAI=0t6-_GwKQeY!rowz0mT zb~#p1yQ{R{_hEOhwSIwagD#}&X(+8Jd|`N4{ix_c!ynzv-M$>EZe$vy|72LK&%w&N zuYRi0s$Zg;pkJpyqEFP78lD<-x`W06h7mk+tx_e-MCUWL2ESVjdJrT!vp z+Z;oJn`ukdtv24(_s~B!kCY)P1DVBruW7prUr<--)E(pubAeUR~Qc&vWyAFMaJI7t453IqOpzf zmO-q~F`m?W4J|CazjpgrZCr1P(O)pXHng?}`a4^7Jq*YxN09=+SpNq1Q9)UVgRu~1wRGf!8n zFS2a(o(uTBQOI^(&o>~v%Ox>vbcKV5u>0OWu-i>Brs@xw#u+0`M~qrs$oSA~H6)rm zmTJp7%Rb9$i^Ou#)WLki5@VTUnQhr@9$~(SJ&roqH?UdqY+}n;+Yf84^{!=;wu82{ zd6Fe)$}vmLYST_rx#^hcyxD9xZqE!HvY8E9^G@SdQ&;mFQk7^T>nV-*l<%nU3XibU}%p0+P!+azKx-q zJ_+wq_0#lI4T}vl!(e@teuZJIL1uWbf2HrNKLw3`2YFvL6d7k2x*28~Rv5;iEyae` z#=ng|!wlGuR{9L&bIdZlHZ(S!FjgDYCZ%z_>Ab0@;euhJakp`~alU??;e>Im!ES77 z5bDLImwJo#n*Nd2t4-3UYTILH`K4B3dEhQ{Zng+b3k}_j&x|pqhogUvA-o*51qVhp1UhmB(mQO0*BoneuFhJKko*Pzm0)V07U;N$pRhCdDK z^w$h(<8woM;|JYQ!%`c~Qe`-3`e{6C`h^+nuyKgFC1ydP>5l1x*=cTtS?ri;JnGfS z{L7qRPBBk6-!X?R9BYB)PxE$D&^*n$)i_JLOdF%~V$Xh7ZH2bGZh%gwouoaft=6XL zw(A<|4(K}RN9tPZvUD(gG=)iJEp*Xo+;75eV_)4Ipn&)D-ntgWlf!mj#N?YG(m zT9$sHE=|`(e?&J=>(TObmAV*1xpAnje{GHSoOY>pk(SgtbtColEvw9V)f(4jZn~#k z&2c?d>#iNA&(a398+41X1Mk%C(hb!bYrklVwL5ed^n-O{u|MBj_gNakycO zaS5_FT(Z`&y|(^l-DiDcHCaYk##k;|Vyt%T8fIFLS}t03wrRF_+gz*0y3F#Qxw~bc zWrJmbg@L=3#@1<;D$4_m+(#CWPX^jq~h{e5WsG<_e8w-iHHLy{@aRLAgL-@q{05O18RKcX$vpD^w; zwKuggo6TFz9WAMbJvA~z7xM(%c}z05GWW3<%@@tz%^ve;bG0eg5^3dHZ&;q0JDSVQ z*USkPkws|rS*}>ht*O=?Ryx{q)pFV#Wocr&VIN`NZTn~+=BQ_XY|FFhtVS!_def3? zJ!}1JRoa@^C)!)uPuX&8Gi)twz3toWkE{%Pnq#`Xg@fhz4R;aE?WY~3j$U?$U1mRN zJ7XW{cwrxAueH!F0*2wd^tu=5^*e*q8iiQkgfHC!0$xmDsC%Y;I#tHkVjBo0)ihZa!q*W*K80 zW?gRCWs#s&hpdfkkF9@LHE2U`tJ_MqpS3lzUAL9nSJ+?MXW6HtrgrN*+ittUo@xJN z-))bwjj?{S-mwm`mE!YH$56*$2g`X3IhgzosUr*bM(rIeYmRP#o-p?_cQt#l8%&t? z8lM_F>q*^L{2ytNVZC7{)>Jd}OR*Du*Jw00Fh4i%HFY$Pvc9kxtlwcHx|l)^m@kr(?jn6S;kAKMl<9F&6@`#iiaG@tU4v7X(F#tcpgO{8yQB-3`o|MGuv19xao zXjkxlJ#7drpE?TOV5O1Q;6?TfenC_k7nvSgM0TP!gx~8ic(6TyckeJ{rYxYw(T4@< zS{;_2*1s(WY@cj)>pklto6pw7cFnfaKFF@OeY6GbCcDIzY#VCznQvPs*oIlV+e)pi z&5N<~Y_vSJj5mL^?yz;W4R@s571n@NV#~5Eusad=D`Ax)@9z}L zISbR$1G;g++QMsc##^kmJ(l*Scb0NXx+Q4-WcFc?zNJ}W839{YWu9OzHfNeYo4w|n z=5yw2mK(Oqc8$YjdvEE0^+Xrz8(XBUzwMx{zHOF`Vq0jNXb;%bwj;0$zrh|TtTfEG z1s1ktiKPrB&9Lk?Pc$#E9JQ>n+_JQSRgj`Zd`CT}(Gg)6*dp!s?7tv~bB;z%w?p7m zIp#UOI9ECX)?t>h(Dk;KEXxgx*?Qmh7%eWc#abI$vSE9ESX$O^UVBT4+zTud>gv&$e}N9&v4QE%iKewRIFa>N_2oKv08 zp!>%hLB}k|Ijl|YII^Al90JEkr_$Bdx!w85xyu>vayh?(in7A70z8xx&ZEw-V}oO> zZJ+g>ZI5k{jbSUdJ$5{|*I3WnMq4LfHT2YCv;1Mnu{=Q!AGDmcbipWWWlwNiv_G@= zLjE+h>!Itm>$NlFSYYSbn>hxf9*Z0&?0?zkJ8VvhOY1o9nB!>Ucav%>k# zal+|xesbo!bU2sd+V1M=>gD>~b-?w_MRy-}EpRP#nViwCQCPkB(B^S2tE;W6mCNgD z;S#z0PKxuca~aO~g(EqxEv}1BmGheud8A#xJTKhE?vd^Y_bK;mtS$8}kt6I7cn`UB zSXE7PQe7*ZVrPy^?ewFCU+ra%eU41WVyx3XJ8n9qu8FR(uAsA}>z->M)^v+tg{mDf z&gu52_79F+`#(0n{T9Z~J4Xca!3At4dvALi`!{=g#~kMk=YI~JqqQr^o#LcBjysz; zYaKf0amRhT+dkR8+}SR?vOjbTcP?|hvtM(}MX&F0=Xn3|^!AK$Tb#Yn?vQhxOXdpWn6FMXjuSx& zOP%+e4P9Tb>g$R+R65!2%kJCGGtQ7x?J|2*zHvU9znSN_bEdl$2vyfSbv$!D7u+Mj zoVn~cYAdmmSoa=uoU>6NpGEdtjyLZ1o-FqncT>+nci24}>-UwOHel&?be(m4bp40b zdyQ+4bGGw?>$%p(! z#10SA!0W6Ib^=9xTBtSrJ$T``kS?eL<tYA_|V8J;m|p^d?2fph-d!O!q~Sqlc+-calCA&_xzgU7TibT6_221IgkKy0#mHH0)7yAZ#+W6K4TKHMMkKm)d0*`Q}mqbQI zF^E%V13$s>JsnDl@I*=|iQs(cLGxY%HaM>nrso`zk%Xyi)&qFtAnxB9R;SU&t~T z+5ibQgvYQ!8w7|e+n7A{3R!o^U(2t(vnctg@6 zb|4D#B;s;%A`}tJDOC8sF9R2hOW6-EuQuU4@Z6qNV|chHQ^;@!ctrBTV}k84Hdcbj<_L0e{h6TB z^$yj5L6`-0?3mEbz#iWm5aK%dy7{LD`hi2I2!#V1{kwcGeB0p57Y*LwSkMi-`M3IH zz94vydqIJ$@@@u|eJ}{CUT_|}`E%0IYfsd;-59C*E848_y^3 zSV#H}AfM=5Uk#4#>LYxcy^FoKy?cBkk)N&-tWTkDsXrl5(4R-?P}W z%To`O%0?ckcQ|sA9`N?^cK4`3alPt0;{EI^^RM%z`0f6-0k8kMzdzWMpFsXw4AO63 z9}Tso1!ntBduveQ5%8`bfW)~E6ufz`Om%SGgMLB41y1epfHp8IumnqPncO1szRc{g)bH9Tk zS?hoAyXDIRXZ8>9H2;KmWHZR?imxeXivz*E?FQDYDljB)CQtzq>!H9Pzt-0-APnw< z1bTx__Rhc6JIG7;#`)U>X8Lm=o4fuueo62G?#gq55t!AYA5zDM}ENqu-oo~>Ur0< z0QPSHxE1fcL%cL!Z&->iV8=D^F839I|F{Nh(DT0MUaec`+2-x-6??~en|bcKuX@^g zYr$!4?DKku`X2gsVh%X~HZ1{i-oO5zz9z``JI5FB4MNWvK`(y}68tJZ8*Q)hJN%Ua zoo}80Civ0ykrVg_=(Tzf+AamE!EbH``t))CeP0ZGMQi>?2?m+B2tKK)AkHoV&-uM? z7FeD=L1^9xCb1f%&nkaiP+<@IfB6-GWr24Acc6RlbkGdl7YDuu?t%Lz4s--7b}yKq z8=>{v!2PR%KJk2NZ<6=1XRjyDtHZds0vhOV7?nJK8ThBg-b?Nj{ALEvL+qirgD#f4 z0{356a6h>mTGP?<%Wn#P3cLtB!pyw`rlyD^~}q0@Fc&cSD-R!CTO|SBU0n8w{cR ze!>5Ol#n|Z1P8MiE3M3sJop*Cy9KiA41VKeFs(0v6j~TK00}&RMfU|>f$qC6*aVD4 z4tUXHVbxDzj$Ikfg-`ns_zl0Jw4&_B+HW>&>OR=5#~~Jco>x(ZAWmfgytn;`hnX3% zpJJrA;B$I}(i<@gR(PCWqs)o8hd8u9!|CBl%y+Lr9XTJq1dI43_(!M@VyYtG7hW44 ziYr{Dyn(;?2>2gYBWhasz(Q`@#bF!SADVhrhBD$Gye3w_$I0QD)#? z=M?f~K8Hts&xoz`3|b}PsRtptdlBdFs7A;Wa*ub3^NQC1nLK3t%iPh(qtPC@ObS5p zV#cmVhIW7K!r0Wr6^WMxN4YHI70BQn<__S!X((k3Fk)e0%tP;n&QnCOJodF-w*jZ zwsE>4gO!Wj0Bo=R$Z;3XUnz)){ueB<7Tix92lpj+C2tR}5w|UOEq5o+#r?s)#k<0< z<{aS(_zk&lk&ovIcP=lJdynhnUFWQ1U1YuBjzwOYI>>r*nl+tM%74mz#MN@za?AK_ zc*}T``LFo)XQf)$q`XcF(IF47&>_pm41lRU+) zE4r+oJHMa#$*3jp{{(^2<)=pv5!DzvQ z=*!U!q7HCxa@o9NAYj?R4QtPnBb$q!W8$>qo@FoO5PUgZ9%xIQ!`;OkOL^z>dqlw$ z+A+|bI zV`ep?AkR<<+Ba$z;<2t#+fojJ+TJ9%EcDpD%s?6<%`Xj7!$wQM{nn*29@l$KKMb3+ z3hgj`P@Akva^zauRegF#e606TT6O+I)w`0a79Y=kSo?+gd0Ex{Z_}z&Rlhzq`QZ7u z_;tfK?Y^{mRr7pR&0$Nr;lZyyU*}b)>nHyDqxQBj+xXH@$MBo6okeIFf_3p=3(MBs za=_fwUTtNX+nNtxmvXM9rM1**vrIA{G1fPU3_m~4e(>mC>Ej7czCC&Rc;j0Rys=Mx z-SG3Yjp6BvHThp|zRTxig<2p-$i~QV;pT{$ZW8G3yFi&89vO^}_#>E!-K|c6PQf?9 z_mt_BJE5Gw2pKvt*8Wb1Y+spsmG}S#BwDf_C19@l)j!mi9Qi@nBNhb zO`$mu1=WrAFXDGEP)8t!Sb_`_>p&ejMMctF#A*E=c@8nrQbgRfMlJbZxOAfpMpRWN z#9&T9i4q!%c0TeB^&@=^awgPL=OEHHiFyPvB6TRy5uNFD+J?|BN-FIkqN4M|b3Lov zokN+l`t)hE0kl9w6Zaltft6-2H+t<7%Jd-N++f*dJ>{<#IS&!jeW8V;S&6LQL14L! z2l!J-=EEUEu$@G&DoZJ%%?44>sK5d2R~ZU_|-JP zOgCGdmx5CQ4}1>X|DFK@;B8=esJnl;^B>=}Kzr90&oJLt_h68*j!`3m>)lQLn`wKP zCz)S7pTEuidBL#smsmSXtEfKfSQemL7>-J+F0wCZv&$*ra3sY^6-BHGkD~N;9kt)W zJ=rRsD_9te3vt4o{dLZ$&*A)<#$4-7HMd8>X5U@KgosUmr5!5l&q<edVQ^?c`pCp&+SvEaB8#RLm?L zQu?B}yy#!qRavQMYA&@PreIdCRJ2ptQGBNOvocaSSouTsLcvlP6n&Mqm5IuE3a;`` zosW_sHRn1mTS5nmn)D4uUN~4vVmA#cml`j>|@Lf;k{nB~LtIAo5QHmQ1 znX0q8P_;toRUTB9s^sdEsyx*=RbAC-#=}qexcp6=4NinW|JP4=7%!GRm~dfhw^&Q8hz7K>b;D zwY)`nWcf6*J&~;LqCQamqdc+fi_)m1a6 ztYm;{n(~Z%tMo(RA4O}FiN!DSiVDX`U&u!*YZN3>xJb(oTaNL zM=C3eZWRAiBq&QtmzN|Jy+O|B@43ecT1fX56LMP7rUFr6FUj^IwKT5KBHAMvQ81=J zSxDw}FR)5@QhA{@rz~e&ZdZv``K;(|*4KjlMf=1pk)QgRbZzmn!leaTd7+#qJu1I1 z?;=~J*jchl+OGJjyl=@*xw3d-@pzd}I$6q>4iq1kOcXy7?Jiy|NzLCS)fay*ye1YD zf0s;@JQQ<9PEo03mm~|>wFec7#UBe!7i=y3k?$`&CUF$p%@;@{lF@}tMT;b>Btg*< zQLZ>Fnj$_av59{bg!0QJuO+qlTO_|q*NXMo?Fzq(yNP;r4)%%{6)H@ z=(1$L^lS03qQ*soiSZI^#7VwYMgV#s=$>hcciU&^`_8jV%? zNVT-Al~P_7saaVzQFEF6k0`Ay)5K}wD&Lkw7PJyAC>)b7%V*{U^94oSB!7#QVxH)_ z^p>=X=(DJwh%M5Jn~Gl}!}vB)Q^_vz_xxoA6UD`nfcQ_bTg(=J&AX7xD)^ZHGoK+E zC;CgY9N)he_bce1wIg?cq>1Q#!FTDzVpdV3;%>4@#dnL^6|-cP;wRFXg_6R8;(8_N z#Zt*EX{kI@_P3;0iK*g^W|PK1OeM|}46+e%kjNwDWNX-52YCthG@6`GG|+S*YLK2c zhZsh@CK5;*F-&8q7*sKlI8Ev`cFhA~Jh2^?cC|)KJSS!l)5)pCqKbK%W`tE!M06&q zh%nKI7((nLI*=2I&E=Cdbt_L+1j{Fr=88A!VHF=Vf0wr{>rhdNs}3RlAnp(v@&lpM ztRT9P8RT=~UqVIBA#2EA#8Oq1d`ZdLlAlHGi?$Wjl}?aqC8I=}rIXde$VbF`SZpC_ z#91oL8X9sMIi1`}3?NRS&Ns=%G|3%|B!+(Sc}7L}*eg7Hh_l400!-CNoi^MPxnVm?nj2 zLeeqEOhOxbq5aXs-iq@Y51}F+YhG)rHA>>E#;18k+$XLO>5yhfbBJ&fn~0l40cj!j z6DKiy94CZiGtx>t#rX$`Tf`G$5`LdV_8`9!?}${gE?VLzXOrST+>lw)^sO&5@U#d=>5?|cVaHeTu;m-mJ-K^y%<+ZA<1sU3h4DZ;tVkb z@6HmdiLa3Re!_&_yP_#0J`g`4iD*(sTt|Hsq!<#AkZVyVCt)V)kTUdcAxTzrFCV0V z^HI59vyh~dw~1Kt6;VPgCK{7e@=szVkwI?6{YWQG9uYt}$M8rZe`w+=25FKo=QhOH zu0g9`5O4lp3Zv1=qv#g_sYSmhkxVj*3_$lhgqQe?{;Nj4Fmlju5;8?Y;F_(;`@~4n ziKElWGthUwa(QGT*q_$UVBS%16 zCqP?AV+3X5&h7v?lN>|FlU`ynsUY7F^>L3^3H?!F{4K@ZUJqzuKWK^&vN(*sJVxAw zM5bZHY=nI05D(E~Q=ui>G)fJLQ9K(mI#0AA2I4zAQI{+uhm&o|l{jZ0G;S!loU{=) zU{RM;q-y4pKghx4P$Gh05LYU4G=FKfmf6&eH4&&yt)`#mB3heDj6*Hc$m3)&{!W36 z7LxgB-+Xc&F;R0sbG71EMMq8B3W~-Ly;%b57_VswyH=&iBKnZu$ou3TTz?1gH!%t| zk&rDg5~LW3apWChEAfD+OOz3E)a)J69a@$N=|w`CcZi`VLqh%o&3{Fd!giX_!v<*R zSF~#lY{n6ckSL5|A4bblSe_M_3&!D9PIf{Ga@3YXM#Eaw;*5hBNqaCB_7MwU69>V1 zj)47af^qc+uCtf;6D1zQxo2SG4nTTmFiKAoy9qsJio=AT_=0hJfmlMsKu#_2?jx+? z2OM(^Gr?B;y^W*q=F=eu3AO|P&~I2Bej zjU0v=+``BYz&a3kG{e<9;@AW-0;5og7V}}D%b~|vI7@{yNHPa=R|bx4j&f~~b34c* z37-?ugY8iQ1=ceSy%XBayJh+UZ51Sro3{T+{^M?e<`;ON${=N(bM=fn_l6WYFnya5?) zf#h8nt@}t(oA8R4OauDm9h;D?3(-EBB$kapXfXqVfrO9(~)K{7meCMJghD!n!A;?x~PRE9gTJ zbiqcjA)%QV6Pe^Q^!8)&C7#ihd(bnT$r7}<4*FeO8BzHIGuj=@u}v|Kx?)yc1M8gz z$;aULby#!WMUPH}O^L<`o`t^L0{v)&x-7?iQeE_Z9HblzP1yvAoPjj8L~|T94w}&& zpH4v&PoO?qDl#h4D_)i#EsrRRDbLX?uSnKRg@*S+{eCBdusF%+vjWVL3DAx0WF+yp zd~kVuMMcGp@}!EAijU>z%6pe@D<{ggm%T3&m#tUND!W|%t$bBErQ&M2pggNQul!({ zQ_U}HP?lWQtE{5zjk=_4NSRmtQ2j|QEn8fsSMO2#)j!nivaou+x{tb^y1u$l-9f!o zJwYv14^bQN+h?^yoml2puT`~F^;2i5uc`d1ovK__g^Hz`r%b|{?4V+of~k0{*r4pH z%u#+*%v6+==9gS9nNm_EKULx=p_Z1EJ}zlk+M~2V=^%x_v`gs;#aqQZ#eC%}#l2FO zB3*e{(OB6|`M2`3a*}c%R(;Ksy_D687{%Mtj|!f$O0iOTN%@EJjdG6amMTqMM}1G# zTfJZ1Q_WJ(RW(!>tG_63D0HRW6l+TxmNY2w$p@BfE6FNpS8}z)U1BY1q;M;bs@kbd zsz^1X%&bcTvJ>xJy|-nbYe+$Nw}mJ1sZMSIU>mPsm5eEwZih z8u=jk6uD2MYk_w75iY-Mii~cIADN+=jlFpL8mbfKnq-4=FsYyIX zJW$+O91w@ah2pm2W#W&bdg4*yRibC2-@#sbD~c3PmHs8&D!w2Jh-Qe>MVW=;MA@Rb zh5bdV3j+m5M9oF?f?)*_qGN^k3rY&JL`MoU3vTA`D@ZH6UZ5;ER`8=RLKG>=6tN23 zg*B2U(y@{i60?{kzAZj0X&_0GgvI;COC{GNBP1?Kxg=N8S!$6;A=~ZZQGf=%V!Z;tevj zY^Lmh>>pWI`5XCD`6T&O$Zf3bsO&rB(-pm1DPN5~Jubf~pD3R$&zAR+*GKPF$!8W9 z7afw_lGT-^%b&`g$sDp}vVF40vfZ-vvVO7yMLub-;`T+^()rSWD|321)Nr7fP>6RunZaDk?SvCkyWt21NOVnRzR6`sO^& zd69iTM_Nb~&lUwmapHxd4x%Qa`Gwg9Eeo~c5#r0DyXeO)B9YiA`XIU_`cHITEENA+ z_^5ECh$}uV{wlsMUX5ODAo?QuSIm?g7Hh<8$!5tmalCkqSSNlej>f095{;yeEa{eS>j6ZanT`>Qv6t)FJX%7iC&5Zi9Qyt5VaToCGHI_*Cv$FLEJ`M zE7FMLCAY;hCI1x7E*dGJiyMlbih78@ix!BDSV%Tq!R&&m z1^e>*)p@t`qw^Z%4aw`8$I1Ja`ysC? zkDKSst;k!N*CQ`6Z*|_?yp?&2@($+R&-!d`guipzT88(=W}E7 z?&a>wrRGWUKIPWW)#TRZYEZ)M-0itJxeao@WpBvomeV17RL=3-skv`+GxAFFBJ!5x zw9VO>tIbW$otKl4J2v-R4ku?&juE8}&K2a2$vK(URGbcLdzwGxp9dg>`w9gry zvk?5T@?2?l&&)R&^)fqVw$Dn+UX`7bQ<}3bN1Jmq$CV?@?U!>a`+oL=YvJ11f zWPQz?oz)@xOxDaSVRm}fQgF#$=GMtule-yhT9DH-J1g6oH9m`;7nE)J4>E9E3|H|x!<5y?2 z&(LQ$GU%Dy%-qb;nJqKJ8UJNG%2<^#He++fn2f0zWf{-YJ7ownQZkaWstEY8SZp%`r~v~M&k@dMxTr+8G&?7#*B;|>F3kVrS(jE zof@A;OJr6i>>ml(8v?Q#vDk z!JCv}DfLpG2-~M9Q=SS3r`#6aPWd}MFLQq8qx83Fv(xj_=BKaC%uZjGb|C%lbTPjF zmXVoxD`RKIp^VCm+>DWsQ%%Ooj4gO3Wc*BDm2o~JF=KUl%e2p_t<#%i+{w6|(Ht$D znb9O8E8|o8_q5R|GliQ{9;T$E3R0;l^+9Iirrb}NmQq)^AEdMvDG!8V;ql~0$;M>9 zaC-8Aq&vxe;TNG(ctSWrI9R9=-WOgIwh-PB#-ub#>6WqwEx0Y*F5D;FnM?>r2{$KK z3d@95$rpw1g_DKbg#QX>2$O_-At5{@90zICPw5HHoHpfh%FC2d!W3a*%50%p=oM}f zMhRD;l+D5^DeY6H2m`{dDIbI%g*{RX!l%i7Qd*{K)BjEXEuEQuDE(G?t8{N#Y5M5& zt7#w8{Aq2{{!Zhi_e|fB&Po@iSEb!dt4_;LjZe8Qye(9x4NUi^$wgTB6LWX_~YFX`z%u$;_0j z)HlL+DU7tSsnb*Uq-s+?rOr>4fkD?R^>?uFo(s36Zb;!no;6V4^l6aP%`Bn(g7m3S+$DsgtwlccM79!VOIBuHA6v?qy^_#pm#e6xh& zgemdCgp}kakkjd;Pf26&E|4ThE=bNzE={hV^eN$2Vsui|_+Xqner}vTHX?ph{G<5h z2`}P%CMc55CH6}gmbfVCSE4DQOCl%fd}09oOC}CTOilD9Y)ULn3@7js{Rs;bOA~Vw z|4B?rFgQ^j75IT|-2 zp){dWLY;(@@u~3xV_U}vV*|0&__hfx5)AQE5|$?nO<0-Wjo%WljgLzxO5otVHvUxn zhxq03$?*m8_2ZrKC*s$}b%~oF^F%Nj^sR2uf5wc7DU7L%86MLnc5<98Zf4y0xX-b@ zW1?f<#|mP1#SV*`8h1I45nmktJT4=CSKQ0!4}!TMeu-ii#GQ%V6Ma&!FnV0#Q-@qFk72>r3+c3<2!(GZ70_s&h_af&oHzjIf z%-a}V?6sIB;HPEt!fY9Ti+~!nN$@OoIO@X3^@a-W3xb07f^+<>{ISs$v5#ZQW278>5m1|3>YOy3OCh8^ycM+s|JcwTi!$r{y;jbdM7ACh|B@)A_&iHBlY- z<3aSf!XFnE%Wuk@$vhv`CgxnU5Zs}R=sMs*4&rfm7H$!*3)c^x)eq2Z{^b^P|K>CY zW2zqaJ?AlNE@+1X7{lp)dMRTMV;y}NV-x!b2p$Ty9884KYrr%@xL3I$CBhXl6-{OHPP zWz=xqZr%qz8>KG;splyFgJ8B`0{18ASQK6|FOtWNY7sSqV`aDD9^fvI8WOFG`p%!j z-^1U9o{uf=!ywCWHxq~yF!)C5vG-uuct79~>@n3|@ z6pW#q8$2)fJi94p7;g&bMcF(jq<)+0g)Gm)x2GxZEtkrB&&%X@3-Kgc`Hs{`Mrw){F#NBGfT6wTqE;Qz%paUOw$)Qq*Ay@k_|)0#7Y)1P+| zj3z(tUrvCj;(!Rm(eZjjt%+(C<>x&Hk!uxK%I8MS=CeS5+{Y`8%8AnQWl=3q-fcXc z{42QP1AYz0&3CYz^t}CGCmH$Gcy5Nb)g1mT@P0P4ZR|_Dv;0{YK`VKEc?9aiiYkfH z;q3jqRXj6)GcOlpxK{ja{32-R1O7^04A^s0PG>fieVEmWqvv$wWN_phANvz$D!*=& zDryTDQ+=WequTPT_%2YVCZes9s0SQ6XDhgAtwEnG=9ln!ph#BmRZ)NQT63PThO+7G z=d5J*R@OmQOV)kXKcEMtu>-6UMjzxmo=Sht?9MT8H}f*Mm)SGerR+R5i_Ks!WG`ml zV2xtASaG05&R~CKN!a=9V~m6Jj-W8r2WjOhxE}`@Wz47aAghGeh;3s^SVLL!xwp7g z;CBAU_{A8{?9aTy5VMwWo-set$FuLSM=-gp_bBN<&JwWT&hkolh1{m_KFi=OLSIM0 zhd`O-N=hVwNzkvuI9W>%(8qZx067Cccfokl&f_;w|Al;VtAv@P>0Exc#^bxDUCr zxhgKf`^Y`PoyQx*P3KPHQs4u3gms_3iS?b+m|f0_V7+3tho9Imb|xp8{TDo4-cS!k zj-cjJn^U7`Wz=)Xz5R_^N|l0(QA4eVeD)tB%V^gX!~-F@-5$MT6vJV+xsc*rSyo z{#4U*nD?1ZMjH@+4l_o8d~%w81ing3=nv@>hJ>MFG+;;>eHbo=lko~9D;=W+ykB}S zvzb2`TNuYcy^UdBVBBVOV^-0h(bh2Xm}3~18EY9ujBTL1_GWIUccT9URic(LfaB%F zLid~;J9ufAxl6grxiuhI&E@>TIm~&*`M`P1VRAKG0XN9ug77zuI~rbvZMhw|J-Mye z)y$4ysb;a>Fg2{{Obv54V->Doq2FLmm* z4|3@oF6S~xOG7w6mB6Bg z?$84ClOSr`WbnbSt-}~b??~5zfYXdVgMNoTfOQaKb{)sa?!YeOB!S8%m@jAQr3KygVloFlx+sRkAu+| z$!^Is<18ve!J5tf!Fs}K$KJ^5&Z=g0VyW4K*(UJ9hO_5_EnCSdU|naeXQi+sz|xhl zU98g}qlHo0S=I~I4p4JlYzpf!J)JoO`W0dtS?k!(nClp4S&u-w>W#AYuo|&a*|XS{ z>@s#M5EU=5Ygi|kdze00c;K_ZH2cc>ll2#4I)h{dnThZP?FV*NOICNrK?Va?Zo$$p zH!?cY9n|CW)6DhItwzwq<4hf+2Ux&h{4oAtEMu-_o@3r+?51s^4`rTYtj65XkTD6_ zzt7VCM=ptGd}f?slrj1?Jm zqDM0)A@)?lcun63B0_uc4>m>q2Ts$G(6!)W@B_AlcjFidy$D3LA@pMU8+v1UESM7i z&_2?tX`iT_A|oQ^!B_bj@^ufUMzAy3V^|gJ3!n|9ut%|qSOn`6qk`3+-I?``HIv0- z)@5#HOkw=P%w$H=GpH{kd&2K;4z&%{itM{j5C{7f*`{NtEkPlv52i>lZ6xh0HIDWL zdDJIUA4X&_`m>iXPr*= zZ^lg4D%KTn`@S-#GoLZDp<8U$YV^zr@Rz?Z)-u~LBQfGzL;9l`X&|&+pxf!SjN^S3%B4gP9)0TG7W8e*2z*tI`(_7HH(SA}l zz-#g>Z7N+uUr9eqZ$lqLe@cH$&!*3#E{*&^T}pe7-0iDD+`3D@0H0Vb{Wfe-31dIL zNo4$hKcb#~9{t*p!D6H^7z{eYNWVpQ(K+xI`wD0~o7m zk&#QO@9CH5!|40zqv+Q$Qdd*w(7w?J!!NWDT!z(Pncap(tEDdho3JZ1ej?)(qntSt zWW1(~3J`a?F&@#oGW?MIOop1CL(PIdv*}alG>~|v!qbvRzYL1NpS1Sy4LwQi4Ug3W zwC^BH^as&q0Q^h4(_Ye4^d58}Z9Irx6C!s3kSlw@Nh(4 zy^b6~dqQ1JJ47{uVbGe|moBC~qQ0YT1a)E*SSgJ_3#y^H(8A8NNwl$%y(507EDT;n z3{$sIeDGzUT`(%RD>R1k3whW%l-1!@;nWZv5s`VpCV|Y*Ke+nPuqvF0h_Ek#M}BKS z8hR7>;y(eB&C39MQN!`!6XAzpZ+KgHQdmaGpt!?IWcgQ8*c2{uVf(^SpuzN~#Dfwu z9eLY_BkT5F%23c37|4i!6bzWJh#%`m8GtR8QkV=Cgd`zVXnv?RcrFwZ*@8MgQU#jJ?Z}PD zvb{FqTWApKRu<6$WCT|vAKZjFAR?TEt)*@T|^vKWI9vvv03$+3$)Fyj7h;ZS4WDH(?HOnuu^=100nMQ=^*#7(PeGXZ z7wj21NFS>}_|j58gW~dcu5b}n%q27!99(kD>PhA{Y0Z-?9U{WcmG5EeA#_LDW zwD@5744_U2A!I1BjMpH`cy|!I+JP?=6Hyi>!=FJ(+Zk~?@^|R%3s8Y(f}_<9zVj8Z z(Uo8~Erh@He-W?3SHnR_{A~Cjg8z9qj$)?T^@@sffnBs^4-DiB-M%^T(QdOmwDc^F=ew~2SC zw=K#Zf#|B2o_8KSuDuVj&^*r^)S;objdvfi?4QEx6z@Gmb*}fm^6v1C_WHd)ymh=K zxZ)c`*!>?z*8nER(nV)xW82oowr#%Hwr%Idwr#%HwzIaqqjptSb@%)y|F>VVvok%- zs#_Q5o+HpYdLI26ji7n;$NC%gksW8{(U&%iUt=kHDSa>LLu~p#x=7dQgJ?|>MSJNH zoLwQbk0=_hC$`AQ$@{`w+151rGO&_kM2@5f8>b2LAC-uBWAvYNcn%1}Fc0Eg!&Y=)g9M2P~VB(%98p#)|4+|3Fw}z%^tE`Y#VyxD)JS44OiGd+=+WI z0zKS~jNe92qpF$ApU_EkfS$od@rSg7Uf#HYr@V`c&|E0NHn0c0Hb2US;ao=R{^Y2Z zT~A=qD!u& zdCm|FfAbc)LT{n_FM)e`58N9MA7@?f_rXeycx-xz+@xNCmp zwXE7u^;l>Rv?ZBkjX(UDF%6vrwTv{QCSR)m{z><~oP4Jb*b}rj<-z@a*P4hjn--Hs+7w8)9g=K$dpAKctp7x*imhj=C z>;e=SsyhZaX4p31yc?Q#jM8Qn-x*6ZDw>~-A^aUbWCWnMG`ls&*TF}uVNhqBW=q28 z>tN2{)o3NM9rH0Kzrp8W%+y2Q}1wOcX${65ATL?(2URE>sU`Vo{u*t`KJ8s z@$=0yQuKoS9Pi1;@Rr=mB1j>{sjLN0Mh2bFrt)(}D!Zv~LwDj?^i($Gx4A!WK|E@E z@*Z=1r}{`8trb&S$*1IE%6Hi(d*u+hio#@39;Osj`htP5pWIr`A&-}D%kgqKC072T zUT3AvH%5K)kI~!6XAa~w_1a9($J1}L3Vo%yNjQ3SIlTkhxEgaJMBkwgVuRUm_8pci z2fxd0{5PA-o8x@P@9T5Zam{pztCe`7IvQ&*wezmR#?I0zk=o3+)iW*Tl9R3L=TnfVu4J zVEYQKsQ-L7p@-H6+J|H96QP4s4n1c1p^>-VCxL-r5mZ2K`@nMmJ<$y4y9mCC=u<{IYD)}TW=L2rPr^a92=^ml*c#f_@QCagx6jU`qlG*g`BTT{STR`q0G6LM!?W#x-=TPa z3`T{(EW97b*6{57lU@>A72^AG7Mqz9o!nXQ{wvIb`{?C9%T2zNbJmX!;$8Rv-k5jd zBVlW{@bdqsh zm^s_{fpxzS>i~9$%IG1^2kZH_zkVe;wp*i9`6hqBbMU?VIIcDr{rH5JGqy21`o`O^ zZ0t83Oc&8DM55?X!oui2VM)>NBWp%}h?*QRF{WnflFY2G(V0_m)#keu_9wq#;tTC{fzUQ^KyD@+Um4*DJ3$!N=X(;57HFU3EVwg z`;R*Gf3<4rbvn#gg!xnwbL^A(h7}-0O;%lMTX2PThj%kn|Hw`mzsxbLDAD9b8U5n> zCDc#6kgzB5bV8+sRS6ToecdCjbKLo4mb5K?Nn-nin3x-}t7AvTOpYxZpPZ1MV8u)E zz2k=^tVk-K^fvKF!h!e;i9Ep*^C;$POh|OjST*`V)PvaVaSx+AL#)xC=PXW<+N!0Y~wHw6bZ% z)ApzDORt;0EN)ni%RXJ>R|jSpp+GtB_+k4O_q`yCl^WyPwbLd zGI4s`%Q#`u=jD-6R$;`3%eG1KH_<(5Pm2m@ki7T z|9~NZLxS1`{R&h9#eg0`U4r`tlnC?>R{vOkiiCU&ITSiB%nJGubT+(A#OAQ5FnjR6 z-~EE>g?EeS9u*vOI<9QYvk(^CHas)EHVE4jni67#9gY|X#UBIjH48OEhTy*S30WL^G?avF z2(^bT3i}q86t+G5dw8{oI}y9WD}`r9T#Y;yxjoVoUNF2bbcGVa%SX%!cZHt~?;id$ z{9yQ-@X`?n!gGY54BrDKn0Mi^5rZS1hMfuB9C|eDS=je5En-#V=I{gIXTryX%?R%w zek!z5xFe!S_{H!c;rGJ+!Csn$_YChC);(0jsA&V`d>=aQy;!=bfu`}X(xPQd6h<_vcM}&rt4v)o|c8E-ls2?dt7KsW5 zG~sYmuc&@eO`=9bDv_9t>sN+$|QSQiuNPFbd@KzDWBQ}M{hp&(9 z5NV5i6wxGNROE|@F%dLkLD=f>^r&wU>0zD2_l30yZx>M@;z)!P;fZ*Pb0`xzIHGIV zqln0;4v|WDaQLgpuQ6@n{=^N84~Q)q3nD#NtqpQcrQIBIb#+WfrV@Acq#}{==(A~jfsg_5tA7+FQ!6l@A#Doo8liP1|*ei|6TOMC5u4qjDXd(K1)a9rt zQ9r{ulzwi;^p6RP+K~j4616xwIyxoldGyQZ%F(By+C}k*H<9^ZDVs!}h`1V8BPBSg zTXLV|gGr~8?wO#h_v$!Fs$B<)QK zj`PKjPkNlVD1j%OPDqbymv}9yP}1t;J<0o%pC*MS)=s{kq$D1}ss> zi(eP_AyH0#4c&rVsm)VPrZr0YH^Gy6-2EkCbn2wku8F-;Iwvg8nB#q(QYJ-D?vzwE zd3~ZU>1(oo%Ey#|q#{Xs6XTNdryPhn`)&D$6Q8?(ocuB66MI|o-GleXURQio=B@O) z-^()J>O^l!uqOiioj5e5K=Pubd5OE?TP5X4>6BDHAxmOFa+}2Ru~!prq~uC|nX)PU zXIl9TA?-lw<&0wKc~gF*yiE>D9G>h=otru_Wl_q7WN-4klwC=kli#M)j75&H0GRXtx^u9WTZr= zW~7%&|DN74<5&9UjP@Bb(l(_Jb8_dZjJ-+slbU4oNdKMMJ#ACQ6HiBBgy)N^l@KO2 zcE9svlV%HXo=cvIp7EaQ;xVt{$|m?cPWNc<3-<}nY;SE>LH7^A&%H5I^=RJC;4s`N zOc4{jJv?rqs+?aeD3tJ?&kS;|ao=}_yJvX5xeJ5i_pb06YDqHqOEq-6CwlCj0+OGS zF0PlU)CC-+FXe_x7Ws=5t&Lnpy&uRB=m*^bi_H)B? zkT!^=u)hGQi2O;20t56ZZ>&47C!gpBpYLH|wa`uU_xARd_4aoic7Jxyb>?@jaV~Za z%IuTTF!OijlFaMwo5Bxwa_0I>cgC~~d*-do_{^1_JK&^Dm3oLHJ;#LZa!WZ`-iQeB zyAlTu_`~8|u?q46qm@KyCU^_)K{+eC_l8H88>;`w)zwbo68CX;TlY8DVy9o`#*Af| z$DJ`5-7~Ic_H>504bLi9t&BQpg`877mooRHZAx2}RwgZfdLlT$hqhBMso|O8Zsp!4C}KWg zv(QEu3STgrcaEpOYe(j(jH)i;s+T@3bE7mLDqC5_KHz>%^+bD@NTJdQ`6ZZcCrM1) zEv)z2#CgKM&duO*ZtL1DQu&O~TN)zUM5jl|Tmr`SeHr627i5N}-^&m)PdlrE$$B~% zsNXuzIbEKO;(5<0&ss6a)zUdeI4!+VnoCz)Up%p3Dxd6GB6Sg0iu0ss;eq5tUgw-P zR6QnjSC-0o#Jpe$StHuKwcMYDR`M%lh;#?s*Jq){bw+xvbX2RW^Oc+;bMNwIdf#}~ zdgln|MDPZ?6xR`OPT%qvo&@h=VWto*+!95ps@z1KKt8Ki!J0Wn9;-A|^2k?|E9!1_ zw3@8MtFP3R0&(5-zVudxzQJ@MpLd6MkNdV~q~fPE6n;rdwWG=~$zQDJz2^DpZ7)!F zS$A{qE%!Fp758S>3*o6!+Z*b->)DTazF&OpO>-Cb+y$$9J?~xb7U8vfnY*IU1+1`L z#S35to&~1jx8iDPq{nbYfpc}XE024pXO`zP*yyKuA9zbZvu&a)IyJZRiCEt(38HJMRl2NE$0=NWp^L)7t&a{miw=`vE+j_vJcbn$TaF zE9MnuihiEy?( z-HYyuo>s1U9F-v{wZfl5wcA==aHSaJ!jn4!MpEqE%CTL zH(hVsU)=j#>xD*29AvBdde;jP(lPn9v=%CGr@YhMON2h)m~ASrl45g;@LijB;g@VN{`MuOZehqf%>C%3AEw1?~ zteHmXM+N{_507;xdrEmWda8R)xfXezOB;}FEvxQRCMry6Bkl3Z!XNpnbjWkqTS%zyejzAQ zR?LBK;t()f-xs>6TWElmsm-Uq=yct#FG0S(6TM77QZH#tz1nHTrZ!UhD3z2pidSg~ z4%Kez0;Pk}ObL-c$OGiwibq~6C|C~?Tz*(huu6d)XtJ_O)szZQ-^ivm#mp?Iwp1p8 zy?3;dq_#&rVzpLBovOT0f-n+Nlp0zUB4|YO{H*Qn;4%l3h#hGd|rK<4WYZJC&9eX83O4-C;p8Qg* z`im?iqtyx6vb0hR8Xv`!CSac3pxskfE27d4qh+PI-#bg%BW(d+czbz>l1pap9PXBG zw^Me-c)kfKVoo_xc4LgplSWI5R8Cs%33XL*Kl3#5RB%h)<>Ga*f)M4(C;XDv$)A*e zlwxvz`MDS)loNIc9mKuDa`CU`Cq6<2$zp~_BW9PUCrEm51THq>h3 z|L)pH?LTdTR-24f9}Dq{K?d{>#MMyiw4kIGMQDbFFf=p(I#HdxuI-k=+m zjY5Xnml@i6bu@{@`*tEyFn(zzNfA0gbCRA~QNbm2Q1(EtagQ=gelD3x9rcrVSuCZV zPzy*UycJ=i7f3hM)pUdw>1{3iCR14$*bpb_edstX7pYE9sArWpEtrfZ_p}+>HuW)b zF!O19a14J2uX8>5y0F~qC#b?Iu`Cp77C}$4N9GpiZqGrX9DIQHP>(sPhN>HondwZ< zt8LWxssi5MkGLNdNEFm%hG_5PO@hDtN1ditR9|WbNPxOeP0>oIC8e{NLr3Ks%1Usi zTkflzM`rLP*PR8k#kcjcBGC@)lMD_NDM%3?W-GEDIo+j++cwS~=Ir!ZgIFMX0; zNM7L(EY2kFWpA)I-qX!nL$r&Vyb<0wuh;Wk=q62v-_uhVE0mUZ;Q35c2Z8r@2Yp0} z(}lD#?Wsr5W#kSyM=B5*yu(vaH7iNyYwy(=cy_n6v+4~Y!1KxDbGyC0#XizUsifFI znj)p_3Q=I&Ho%06|Bx*lBMf0@Pai%~+F zw~@D{@LnmeJ%P2}B)pS;O2veh(tYWjm?kZiLs9QZ0fYQN-k+7=L)c_SkZ--oCb2sV zjLYEmypOC~VOmQoOS;j5Y9a9XH;~7wA5i64k4noHx{^H9ve22Z6Zf_A7@|C+Vf%S5`^Sm7;1(d7xYY{N*=MQ^-zN(rqLQN!AK! zIrS{`kldR5%YN%k!0ww1xzd706Qdup`?<}#Y`w1QW!VK(We4eVXgaE7H5T*V4njp`(Y9H%X5X(;jR(9V+VdP%Lm_Kd!uXLK)n z#wH@yor51^C)q7zjBWfns+mn#b9P=AQ9aJiqEPMa1NO;{^Z?j~pR&dJW7ggX=exlf zx!hQ9{xN^+Ur8VC276`B7?aFPzTZ|}!!Sd9lguID3O!`Z;aS;jeIyt$hogE@gUv;)t}E`fhaF|R zSx$CY&&Lh+j$K3+{X6)Gf3Qucb2l;)_~V%XRhmL1?E|S#gUEGqg(TCqY!RxZ8?fi>tO=@&x!EaJpH*YO zStPTesxX@!K}~1?uFI?6)CIjJ&R`Q*I-Bx=+=sftQT~%{X5Em-Ux=)J4P>^P8VA7` znrwVTh2$)+Xbdq1^Go1iy@*WsC)Sa1WXJ0oL(HGZr0+&OHo^!r{J`{i%=l@%0$b@> zREF%x%V#w%qq1C_yKycP!3Mj85j_+&spa}lpbrMJLa5H-{PmmQVIHhc23KsF9tPgr zTEG|N2WzuQTcKJyNFRWE_e!rvV`)~Fs+ZF{lAYQJ+=cntYi&QOp|wd}_&ROrI64CC z<+W*bysAZe(|aU9D*>+C&NPCYB!9>!GLmki^)U~Y<7Wx&PcPC*q@-qQN!oF&;j^@k zqz5^u6~Onhke;M9nNQAW&$TwhpR6O>$t`k}+#mtuH|a~aV;+ss65*$OQom^z$RF^^ z-_pjC%jy)Rhq^?~q6R7rvw5!>T-3kya;PwU3G@~QZ1&vB%xY8 zb*)-c{U|S0lC&ix7Tol!QSU8EkD=Zhs-=<1)T!s;^Y8?Rg26gi_hUcwSd708sPfcf zhxA4IH2p8{@EFwZ8nMs1PtS`=%_e+aoE2uh*lA!BqV(e!nJQ|1Df%JIzCo-qFT*Rc z#TctK`9josy7S!p0ct&~copLXe+wSjUi=`hW84LAZFNJy*hoXYZw6{F(|H&_$+v@f z_7G3x*$oNvs)w-!Jg*<{)K{YFG#^NSXS@lo4<6vLtUW3w)7cc%mabxyuSeC&p9i9v zloRtGLTaoqk6}OYw;T1#cdP*Kfr^TZ*Voy7_L8Nt8>mOUVdpR#eXJ$07{}Rv*jF=D zu)e@b?O<*6Z*(mxRt<5Cj;O^v0XuIu`b*!eQ+iEL15%}#u3+4s)4u^vQBdEhztyV% zb21uelYA^g-vkR0C9r{=xUls!Qati$HdGtTJom~O4CjiKtR9aL&iL3Mj#%3_EJAbeS{=)T)LS4Cz zo?Cy7RWyzEq7C#1w7GIk)S#wRUC4_#Hn$um7La;LMWO4`R2nJukx$E2<>vAjtZ19$ z&+=yZq~wpk{`wY`=jo^ucUAg z=jM|qDFd}stf%?qZ-Pgj3$Hd+`79KbH!8~{87c_b)y;^af2lv!v1)JiCMsUP#CGBr zd9ivCE4HC#*IuXvwPH|)xT%%WBGi)F0r-(`@b_(PsQ#UD-svUFs2Puat-!N*Di{vU9h*hr@eL@4U3Q{W4-}EKyib9J4 zrE?dSr~%zT&Oys!DydHPYNNC&+FETbn6|HIb}gqG3{8!5N}$?~G$zG~g7chDau7eQ z6FkB5BrEdvtr6)I^rg$cKv?j2SuL#$Ql1XF)sR_^OG+3!yk`zr> z9I_-0MJjOu&ZvYo0LRIIhuIvl#SS8om81@$x4y96f1pURm87b1SVfMDtHs&sQ7K;9 zq>WMDD6!-W@Xl7t7nM0$dEhDt*{-{^o6>jn zAsMNrlTEBKiBtE`No*8QWTSv~yQAz;ZjeAR(>-0xis)j!_EJ8JD66h_n)D4SBqr`( zb*YKxm%F7{1`(x(s5wrmAiJR6INvkPy~i~b%6U0m1-*5koO4p>BK#3H2t$Q+LRKNW z*hwrQG!eH8shN*be`M?yo(s90$1_G{zD)0t{xz+3S}CXIm4p?-NMQzapGFCg!-BHU zLvKE)aTP}-`5c-$#e_TFcxXxW6-Eo(I~6&lZbAX!^%EVmUN_m}@l^9n zPWPq`bSfD}ij+D%T4*qERjDe<TT?`*7^<`b$r=v^L*>=irLgC1-x!PTcm9{ zaHn~U1R%wFv+cf5cBqErSz6>=p~b~L*#~QSuFxXCeS7p8#x`na8}z;;o1UM(CMom+ zi6A{_dFqB`tVh>S6SK%pMv+7G4`$^6dX284P3Z?R8@_o~%z#z7d=O_BKuK9 z?}?w^IO;XJRG+0s)0413)eygR*FRx>+d?x~S!=w}iG@&+_~=*CPMbs0;6YU+dz6=Q zeJw(}s%_IcYKyc6+6Qfw)?Z#Fr@&$~hLD(E!*-XnPq02Sk>OmU7Jx--rEXN_!wTNf?rF71 z0aB0jC%woNSc+)U5Kp2jFlzBYS{B!e!b;uKYQW0hgB2SN^`Az>K}wPbWP$ctz9#jT z|G|1xTT!)h#6c&}BcvIu?gsKN8Kd1*o|4@B46Ckp(7MVA(oHF=G)sCaRm0lW0(psX z(1yJ!Z1UU0k^N_(LF7Nbx>(zP`4Wc&AE==NrLVj?~U}@kY$LF zRsv;qMSdW(N3Q6GS4GbBK0X^LbQkgoy@WXLS!hyC72ALxxVd+~_Z#vtX{eQq6?%wu zkim`i=5fu<%p!zBWpAe1OUfpU72AvRaaW3Y+BqvblU+_4iigD z(W0MNTd+a5ZB7!_0g;-M*0&yksf4s_%~j|9M1jded2|FR7sMb zbk|}uf_1GT#$#EmkZ-jR?IK3uVklsJB8_;P|04=-@m4@H5mSBR-Jw&V@pi@=?BgU~%%=b+RgTZ%FX03KWGmotpX9UQT{q;7 z_+enga`VitnQ6N8K5UDLelokX8ZUEGnrkTaf8s;uD4v4)x=0vC|bT;Pz$5-0S z3Otcwyumj0p|vr=>}^IGUf@ZG0v*>4Xy9z-7NZr^92!95p{LmoSl+va8@f+nP_X!7 zGzGej7@y6@rrk*8w~eDf`u*TDfpPAq=jVp89@-N=W3iDJ8W~TZ@R81Mve|qM5UX3w zljd;4hD^XRbDXskNWdS9a^8mKJYkoBE;qz#yHQhCvTC$m7`ddrP`OvfR z;uEKt9Xd@4vJ0Wm(-{JEb0cdh^!|pMg`jsc37Qe(tv2XDXaJ10W~Si`Yg@_KLl*0k z83^>%QZp60D6?=!GN3q9$mGU#qaQHaN1-6KAK2-sKzmL%J{WruE%z}h8M%#2Jj*Ij zF_AECa^uN;!ggV9bWzN*eS-1|cp7?hRU3eT|jId&KCE@lIZ& zkWn9FUf~%$8&G!Tp`KL$h~4|RXGMYk4lt`)O{`4d$Dae88ErPUI$Ke|oIM9V+yT`g zVjAWujFDjTHGV|Ao{gMAe%zUd#wQw2#?ax2ULGQPK14#`Eq~G;t7oBNmJMF%Txf~4 zATvk}c!Y1T%9JJXh?N(SAgr`HGK*uCN2)-wlOgH_dA8I{t}ow3{iM8nLmDcNl)~iR znC)+6msCnFBju33Nw-m-sG$y1R!Y&zb}d=1C2vw&5K7*VG2{t(M6QvaWD7DT0*NEV zXj|G0>-=?mGK|ioRZ%gBC)tp_3MKc*BAjguDT7u07`7=!Eqt4jTJQnhVs&W)DdJXi z0Zl_3kQXayJ>&4RC*qhyU6m{sD~`1%czUIz}^Z_ z7qV@S$vd(PUhpGa1tB$PL1aYdVFfHeKjXKB`+bAdqy^}A?C&0~{XF8Lvp9A#d5!f^ zfeKhCBA`yt!K zVeQykBOKPEB4*e<^A1$nnq%H|wvJhGur0aG>gIa$CFbD{%)?2rFx=>c-lYQ8e4svi z!utp#6UYL35bj9wTyjB4y8JgbM$PUy(0bDix3 zQgt4?j!eh_SXkoTR zPsCj7ocYVFZIy;bO@?s_-21gL>Sy8#24Xg>HMT=ts3YcS3*#ni(@V_UQf3zOEfA(_ zq23dZez3x3Uf71FQRI-ZuPD6XUdqS^Ewubxa1Hn87{aO=!xuJrZ40{(3mAz1NqwSBQ zqa&Lmr{841Ykt9wnYQuxrq3!46#g%3FZ$F9S`%Oymg9KMtgY64U#Rb2>nZTwv9JQ8 ztt+O$k7C`4G4h)4jXTCPV-GU0yYNixW)IwB2ULJOuuoBZxpC2GW4uQ`X`9*5n5jpi z?v+A+BRh5lQR)%WlK3O?^Ju5YZDh+!(o}V_G6q%iYN$k}N*(1~Y9rE=6ecpZTtV6( zXI6rtYQ1HMdkkzNGY4(j~7PDL2&G=xddd(tEL`R9sIW zqtttR93QDKXA-@EymTeK3{Tt$6%C{NNG19i`KLVS0s0M_^Bwi01<2{&LqF3b`d*EO25ySn7<~eD&?9n4>8wSg zHgpPE2Y>CbG62<{O)^n>0VNWEev~DsKE9F1DM|7W`MjJWPglmG@|RC3tK?QL%EM$$ zZmgcrYHR-R$MdRl zYYVg>wH#t$ovcE>wHuJe(Xb{T$Pw7$W3b)VRmvLWU!{vuSotM)QO+v6aLt#bTXIW8hM#c7cHQi!ud)W zu1-PSski!6xvu!2sVqw)<$s}Ad?nk{$c~h9~eu zo(WI3D^{6HQjoMunvZ`(oCPK1p;CWI6FW#=v5QR9OLALrgxC9kr zK=rwxG*${1J4)r@i|guOWsq8gOhgQ}5?P)?WTti$b)v=EKUz~nRlSju`J{DG6>*gK zLYyr9k_sbl^;6m)ZIi}GU-9aPv=-O83L4BMP~lo2=akpTBjqTm8<0?UaaNzCsWQX* zc^%hzLVkqn^pm$qOO))Wg%wgu0Cln&5$YKFm{!vT=zEnTn^5n|K`N6AWCg0~J(1%& zLYx>4KS^&IOU7c`46LK;QH7{L8S*Q8up0iNEvS#|LDs83orUUAR#aoQ;^{BL%9H~Y zjGq|)iBKB*j4J&lMAIHpgbYP(s0I4ovgv2(b>z+}=tt4@R7oF;6|6Q^!~wKD=FD_j zoED}H!ql(oKjM zhM^0wJhHcS^dacAn};m$F?18I!pgD{oqvP$73e^mj1GWjv?Fq+cjzd@)c(97I#A1? zt2Y{JSWojkEZcSHF*byjSQg)Os1eqNg?B+U%x4w$g~0-rwl-T6t&LVYbgh1YcIgqU zGOMi)=o$Hr?OOOUEXgVbjmE!SQUTUq&BQ#u%lO77YoA%nS^>L$&x*00VkKwSx7SBdqmScH~zC(`EfK&-0$>fq9F*j%B`GR#D$vUprq5 zXsd=npL7cJo-}hG*0IOdLaQ8BjPJN}|Ki+};Jd#vds%IKcd!DrfClOT-&Jb`y!YMK z4jf@7zMB(ANH!aq+xZ_@-QK*cdCu$wFX9mtLkD2*6yC*RXs5ohqR`XpLO;#FmS8z? z|Cix@Hih>ZWOeZ!#R_-hUez*r5YBg1TpYR+9Vjb%TozDx_S@0fAgX-rv z>$tVn3byL`3i_6!;#e*m?KoDz$vA(9RUNwGt+8^S z#+l^v{q4+bX&r$V9g8bkXjQP@LG^A1{En^gOTwX(cLR6#5_Cp4LIw$PqqzWpO^5ncbmD)TVliTbLx>F@pc3~lx`6iZ-H0GYBQBVLDC{#d z__|_sPUHKHJjN_kG)(qJKS*j@9Nx0a&bMvmyGCL{BFN1KUt#6U)Q z6uGWd({>}5+zxq-yV_RmG9vEf$acR5er7k+tZQn$kQ;iUz0;~;b#6plY7}Y=BjrER zQRE8tis@oqtW{CccKn?to)sqnJy{)y&S?1eOnQ#&LSd|Ph2-3@a=lP(=qrzdiuG#w zKUld%u*km<8Jv)p0|n6*s?8OVGkyWftiUd+zz)Vsr|@1c`7Mx3;qnBzxI98`Chx`C zP!blggPd13kdOF{%tRBpx>8*kq25u}Lm_#O@)$jQTje*>A}POIPO6OaS%fo-mflLW z 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%0D*fxhDi->peR6Lj zyocJX)pOw)Oaae$1hVSG!EL*(kE*ZF=T)0#rRx}Z8o zLMd)PxMhpIa^zlq1OIoLuMMJ6bD>x_5;eiI1M8uFk&L*op81BzetX2Vm%*3p92f&F zjSkTLnhYQH8dDaC#plzYHuV?t8+WKN(ie9Ca>0Q3(`gE~tDVp+49vtZ5lMn+#P<|N*|8Q2cLl7-*A6s=hR zrsE;7upfb;M}j-^zliEW+&LdwTJQb0u|{qqxA6@!jlBMYxRb}<9Ff;J^pp?2@b^GI z^b?1|%Y2F7t`DDe0+@IGaK%CV#skE7!;zIB2Ai-ZvIa{0{{#-={^|IWBW}6h-veiZ z512>w!L1*JJjap9JROA7M=$>o`2Gz8naK2X`nur17o$(EgL#<+jg!rYAGbs#I2v={ zEqEbmY$5ZA*~cCO7xz4C154x+lLe0N>Od#ve~LH#(I4LfR@9m2GwYzArbn-I29vfa z*dFmX3rOIV3y`@r0ePB3kUiK0qdf>YfNOAvBWT4%75C@H5nn7`<8MsiFp%4_t`~g-$5HiuGVP&jCyXS+4(Gt&FAN-JoIDOn?&Ouw} zAWkJsm=1{I5}2LAXvHebhHv1|oWW^uFtQ*oF$8;o`GE|{ZQ##bV6=#Y&J8p`UfVLv z><3VvDZ|++9t^Ac=(#_b#b6aZ1@CGZlY}w2h*8L9_ON`Wv}&ez5o3m;4ukl#hS`eI z-+(;Z!^mPwg@W57oFaGl|EKA%24D6mc_)7+94F5ta6Hw>cAkQH)(WS={{nf)-+1)@9Oe{o{Qm;CH3JzG3&8NEF#isLIeQc} zp0^?=;WqR#J0ch6IoQwxuqsM1Y7;RxF5-TFAQP{`zaa1ioP_EAJ{UC`ik+trK|c+v zaujFU0z}An1~LOLpy3ycQ}Q4@ml_PA+qn8Z=17%)G4f<~`NsNYq2~BfWUr*-^kwi5 z1AF=poB=-jDBn?kH6rVSF;6ceAKe5+oMrx-SWmC9QjdcJ(FZndBcA-SzYa2W+h7G$ z1g<0NWHz#T-ubs;{_hCXMqYRZ-t7hzo^{wo{-;E^9(fSI{hz^yJA{>(hsp_R|6JT} zH`Z$pT+L-8w?idrx^FZxgs%C&Lo2mq zU^?;{&Hg3+4X}0BU^_?So;-i4e-~!eJKs>O__aO?EuM@Wb&{_`U<=b18cMC0`>;)W z!O32PbM>IWT&O$!Z?5IRW}b%XhzzIQvB<(HhEYC!kdO47#TOQxB}| z--`XO4fq1NJ}u7osknL+xEDh)57skWU>4BU$u1yd>C3wG(8Jo>*!*g?|aCRc{$w3Zp4@5Rca3>%a zxHB`udxwqZ)y3LJwnOzxe?xCrWeaF3-mW;~?Z;ipSq!$pb`H&Hj-1-@91kae2x$xC z)!ybgk(oT5%;2=HZtuOsc}U!b_b~;EU6p||tcuC3R{I_yXS*k}3LKB+$ja`_rXV+< z8eA-ef17t+faJ_%b_I5^=c=3iZdxt#$0HjcpV`7WzOVx(AO;G{f zOnxC{;8#;DmB|^;&h(G*ZpVK0Gq8!*5?q8O)N|fS)*ZOdkeoT}Y4#=m1$~u&o?nZ5 z-P@viK68c>%3DQlWT#gy{H3e>6HJ)4l}nfufq?U&S{T?u3?cuZm3$E~!GD*1PA*2j z%|@I%7FpP_ygcp!-WpO%4#9cf%=hqn(E^+uZB#RIATJia@m#u$&O=;YLcii4-SLKMw&=BIgn}c`==Myx9U)J8{c&Qd+vX@;}ZTkUJtSX zspS>%C$a-8AF!{y}<{DbrZwCltbvqKCA=O~jL1o^;~xd0&{`Nx zrn235WB7}CQl8sCyy_~G0ruK@vZsI0Zyi?QDn`j0%$y?9=sWah0mEAW#P5{%ntu+p zfY0Z5<+Oc&%DTy!>{*n*I{&!yx?Sfo<K8O&s^}|Wptd4Y!;Y-C4qY24ju?p!VU?T!$e(ne!xxq#Tfuk zb8+As82Pt+P2lYXv+wa&&YlX)M#feJD}&v|?iLVn_Ea?cQ2MUn*IC}F{<7*ASlRE; z+PIDyIy_`julG*^^UDuEXRxogKLhz9pOBZ>KG3GRomcrgv#j%%VZSbZd;alr$-<94 zISIybCROlKBWY-)f1_V&*rH#pd8=t<=w#@nZy)qBxVve%xl_=M;Kv4&{HS!2EI~C! zehp)B54lr!s;2~uY_6|=APj1zTPlA3xKw@F|Ezkue+29HwffL2zjaAjL22RNrN@iX zi-QsCol$b4G~->3k{!j$((}c?%ZT>_KUh8{zKi<2>BHfIF~yfY|G}PBO$>Uk-=r4m zB}TrnwegW|oPL$DeQ<@Alvl~@;+_(PY?-7$x=AuZwoGA^6-e4i#!5Fz)<~Nvk`xij zld@3RQQ2AXXbB^3CaI9lml&kSrBaDp{6xH4%9G!eu9Oh+L$Ys@ENQa5pFB~TCaDr- zNFU1<3MYw_;zU_p)kKw49af$5Nx+%O8AuIOmn+(8=c)fwbW=-|QJNHOhW3j3jjWC; zUKOuMQT0?dQyx%uR0%YzRdW~wa36ivzT#!zaoiM1RY3nYBL~(!J!V zqLmV}c&j)=ykAsPHbPb`xhk12*&z8Wc`BJ9O_x59T#!GMt`k>E1+q`_3-VHFBbh+b zNjy$Oi9*HKMSaDT7-1mE09^4wJYKw1oGSe-6H5u#TCURv7xf>&+kx3Xi&YVYK%7v9%?Qzz+aBKBGhF$b_<~(tKH>aspa4NVZ*?D=owdSRtAw%fOhZ<-z*<09VI<2>>wzSHI*Ne-j@Z$vEp)Z4e=xYRL}60Ql6;Yl zS0u@8n3HFz?~>+*2-SV{ZGAv8-mm%?{UbtnP*Ny9tV~t8Wj~}}WcMYnrBd~I{R;h9 z`7aq)6!ImlC{Vs7&`LO4-%OjRS)-||OjobfBx_=oU6l&WMfpI*Q^_V;qH?L`DSm0T z%BCu``T}(womN{UpP-(qt*uk&GL?%|8qIR8P`_MNscNYmtlF!rq1>*1rwLZgkk{dv zy}NmQ#cj=5)j;JP)n?U0%@*x_RfUSDX{1;rQ7Y2ZZ{&YSZipwywkUqfrLrs1E3&I1 zQd~=MR%(}BSA@%4$~4&v!474nc7S4m1YilB&i^NHr+OAQgvw@?csB;5)Kc>Fx2Z0Z z>qNmI_c4#Q@VU$Ae(Uk)4=>o_`snFc=x_(+m*&ShkK0`KT${=^#PQbN+TO-7-(G6( z?4ZC&I_oOIdw1 zTWgFr6|2nebdJybYf$Prwo9w1&LpzBhX`8m`X z%0-<75^fSwf-3$r`Zixd?h}@X?$Wfdzo0e055FD%2EV?b89kqBCTvWVQqxpF-1NHDuUXYHwR6jugV^WUo>>5+mHjmnwIhgb7%6_@$2(TsD1Q7 z#B>HzH+gsX7l_Z*3rK_JR#=CK_a=AvGt*F6qIz6(YHV!us%U3qy_jDy+oK1>`eHVQ z*ADGw$x1krd@w0KH7Ip&Vo1C%mKXmuQJdT)=~2@1#G!G;vHfB%#~Kp%C1obRPU)Rg zmXMdQDgIM@VgeO=I{I?#=-BnKviQoF^jKBG;JC{%En)}8isP>1-BWR{SUNT`u5SFC zxQ;QMVj9JMjcFAd9Xm7D61OroIBsL?zcEy7X>@pOzxY>iHR8v_eTq2{OUKQK-5Gs6 zs!w#M=#eqv7Jq zC&whl^@+J?&J5{h4vHETMMX`GniVxCYHrl3=#uE_C~st9WO3B@=-p9wqn6^+^U)PC z%c3_#R!5{q42a1~9g#LKd13N_L|MYSl&l&rlRKs8QxB$mt6@#$CjFOmF}Yh(WK!Ft zKa&E98x!gzE>7~rSHxY2&x?H(e=O-zVra^}8kQQ@QrD!utMNXqYx>!ms+u#?U#GQA z9iBQi?P?l`*{OR|r`Bkn`Ze)Z0w-}xB9+`I*`7ovdz0!UJxc7B1M*a&$_YIQ*^1_)4rwOOCOTfC{3GwHhok2vKp&XqtZ9l zypR@@ey*k`?Lzv>TDtW0=?`nZO>2@qDLpCa@xdnZ`!09 zpVB|noLtjbYfbv0bh=hb%|7XU(si|(){d;TzUJff>@-gLziH!YEUEFV#)H(v8l7q+ zrVgy}Pnt5VZt9t&xhcnMMAo>Ux*(--N@8lg)Y++DQs*UWa$@7vHCv8n!lHf=%Cap|bkytx%Ktfi$HnCk&Sn|1~%B081 zlBB_jS&8ivI>$5dFXBJOEsXCI|2*zY{Jq#2QDpSanB6fMF*jl+#x9E0#XU;cnvfjd zI-z@fulTd^cVc(Mw@=s`w>f@Q{IvK>@f+e};-|+d;-2gsO!95+W0JCL|;*ic`e*jc*v25O*l9SKR*C;jx!u7RMZp-4$CuwmsHz zMeNB~MQlM#Ol*_5O|kJY{bTw^&xraR{VV!%^zoQ((GR0|(Osif#`KCi7kdt$U5oA% zvp1$oY>(KRF)Jf;EDgegBFZB7M}LRy36Aa^H8hfn+KttEHF|xdAaZ)-;>a~oEu*(a z?}!{2{?pRJGRD%!k`(TVAR?H@^;T9$IAi7Fr%M)7-~0 zHe#x!j(L%VXK5Dh41aAYH@CLTGxvz7msl%4HKHQoM#R+cPv&Ivbjv%-C_Gg{#OX*P zQWkkQ;zYPIf(dUK;YLf_Ml_G;9YID6iWnF%C*pX-kZ@i2iEy{&j%B4~oylQ3X#UUi zuc?M;H1mFw(|pR7B)WeOw>zL6LT8c z>M^}AbvEA)``c7xjYk~ zo?-c9d2M-S*${r+tTv}v3QX3B=Fz9kH_Qja|1#Gy&oNIj*SD;)RGN>PKbWtYgyvOd zTbSC^&~(DYGp`TJF-4i@m`GMP`CH<^x@ykS>NR&!}s z->`k5%|g3`X+mA0Elk$1zf8-*Vog`f2GgCe&ZaYA{Y|OnX67%ZNnr=WmRU+IN#>{K zpXPLPw)r2lO<|d2`6K*ecv{4Oh<@RJgpUe;Z|R4zdt-iPo@{<6Izn z{M%e*zF?kb-fsF8HqkWRJk1uc%D5O#4jB!=zzj!@|N=hqeuk3#CHehB!hJLyw2f4eM<>WLjhT!*nm~ zRM^F^u3@^c+F|{}3c?zhR)%>)`-aUA>lxN8?C;Q!kl>KC(7~a1LP|qiAx%O&A?2Y} zVTtA$rsS}PVdF7ccg*d~m8K-jrMl*>rpBh>VZ}ko!39B&RJ|3kI$F=-ycMPUr5mbS ztQ%!mtzM*@t{BuMal-(w8U~-r%y3 zs!&~M`>?N}u|~OZsNsULv4#nm5^^iJ$aL1!IxH*fRoFvw$8eu{uz9S>9r`nr4XqLO zDRgV_{h+$RUyS_>ZS;lu20?K_RzrrdZcv|~55{Wa`QXyv%R%>ph6P0gZ3_|vfjVsb z$H*GL8_yWe1YHZ-6SO^Oxv_1KFnF?29#j@$3VRe{47zNb9^^NK7zX3-tfADf*pO!! zXh<|XFzhh+4O-(4!%|~ABiGZ z${1zLH?%c~48x5XL3fQe4YiHUgB}}S8yXs(>z^C08oL|68B>DR8?Ob83?346+W6e? z+fX-XKhF1SgKh*33DO63HEuIT1${M62&xs#30@F1CFoXA-=HbR9OIjyskoO7pN})v z4>}e!D5!bRd85g=&{*5p!m!H_WPDqe?xazcV4g8+jRkbLw$dJrv9_GQrkseqHC;^>58;!-3(m|T^n7I zu8ls-@P}a(e*L}vgYK5@zV4W=seZivitZ15{!wStZ`ZZciw!OH27L+U&K7+-o*>9j zj`4b+KV(cbrlALS8R{DD>0jwapsfuJq~W`6kbaf^s_wl`Yp@u4=)P-}`aImRLYJ-E zrcKs&Hnh^WGw=+Z^p6b{`uTdfAxOVQe@1^sw_7(vSFCGq_-LqO5a=s)O8t8stDB}H z^oSUU`dT_lZ`S@$W@_GO>Z%v&vUK;f6ZIYSz4Zs@AGg zN|B0I%~IL%{$!O=B~-uEe$qzkE@+RbmTLNGt5rPhpBkQOiQ1^SsM)2NrCFj)(>B%i z)NEAm)vVX})w5MHm0h(;wMebkd{dXGm#HskoSK^|M$u9=L!-gjc$4O|=7{FEs+D@K z`l)i3GDt}%`zd2pDvd?+PIUs;&r$YKe}lDYtoSM)qfIUfy`Y+nUT7_YS{-V~do3Hb0dAcU*?W#C+JM|4s zxaO3)wOXipuH3F@r<|!Ws1D-SbgHKKMVGRLGDNvsIbC^9IYIeK@kHKEu9ml!hbzX( zLlu3LGZkjVJ;h+vePu_*S=Ad&xc0iHSbb2rRgtEduj!|*&@5HoSD(@}QAevS%E5}7 zs&~rYN=lWcOj5noq-(pWjwnB>DD_o!Z%tFpJWVIf7xgU7S+z*h~(W>ahBdx>_|%eNs+JcgqT;HfdeiP045}E4?b+B~6yfWW9h* zIHfJ6L!{@V&!sJ7-DCopR@Ovjm1?DgG)cBqc2w$;j+SkdO$2H(O?E{VEo&(a$FJU& zy_S_rA4+@5Z9tK>%8p1^Nq!?Ev*9tr;|*lx~43V?UP%TyOhbwU#f6*UBw#t zF-5t2kD?iRX}Wrq(yMZ5^qNAoLoHCBQgu;PD?6!ds&#ngWYq}Od6iH3TS2KD=+#;H ztUu<-Rpnu&R{cShjx#4x@L@Osxn(?P`%eY(T-IwR3BD%(4=clD0{0usopEYl?UaF z;)?Q9S8+(OSh-Sl2JO6MH2oQl}(d z+C(~D`bN4CSZYtn6JVDsB?{?0=`D#wdO}(#ZYL?1_LhW8{*Xoif6Nm%kQ|b{lFXG( zlqe-FB&2wdh$kK)X(rh&iWR%08)U~NjU|cFe{hE(m_Zqm|A2hf#jo^{q>3-02ab!E zN_L|K<0YLW?<6Hat!IlTOTLN*i&glwkK!?+tD^4mX3_+qOC%Dv5p@yo6#W)Wml!02 zBu4a_UwmH7lPr*279SV)6$eB+Me{^Y(fb304Ml52VWRq?NYOfxO#B$_Iw#sLvcw=K@o0FNwpj~KN_0GO;zGT!>U3Kfa&iT()brIDF)erR+WhvDXO@B>B z(##~arfG7zhEp<0QBceR_oYp?Zbtf?B5f03G5EdK4?*dse+oovJ#aI<7jas-X5Ob5%<$~CM^ zm8|)tUa0n~4k&B0KbcePd$z4|qpGlKs&bk#o&CyoQm%xOb`q;*)A4TzQ-rlMU)eLN z`l@-V)~XXw4C)yVGf=r6YS>N63aSdqz3g@NoARJ4OZgO<)~P7dR?26}X6#S;F0-0x z1Kq61tYlZHiYV*S1(|dvKXj;Fn1*agr3g*r5;jf;6<_JL$~sC8JBSt7WTrj4UMb;R zUJn4L3LK$Th&bUOYNeg)GyT`Z3x7EK;U+QaSX)0^lp+~5g^iY$h+N`Rq zYNG0=LFF?Vu{Nyi%i7vt^hglm-sjz z0KMrSsNFioOQ%yLGn4(Bu|rpSlJZkusWJ3%T2PcykW>xoZ|W42$LzxU9Hj#ChERas zg3j?7wS@jcAE5K_F`w>>pIxUO(_g3_il>Utipo%KW-3P0#TYphj}-M@UJ@?+$@1dV zQGEB9YC)HyS5s@Li_~*yKn+w^CIR*79i}v6p~Fy)UZ=0XC*GZ2z;tAk%myZiJK7EU z&)alAW-K1*29)u_5bEvP1yOe?+N+m&gx|e!R{i479=gfz@ z-mdT}%FvbA7xX>FRB9HTOaG#?XcB&cAJl!i3Er&%ou7HeJf~~Y{IeNuzX15j3!;wE(ea;SIDLy6rSn(%w{aOMHZzBY8%CzvwKRq6zM@YCrt%mmz-zU*P< z3lnD!v&-0g%n$k0whWy98yFMSh5nP#ur=6YOgSjWuR@#(PszXnv7t$x_p->Q4#_z6E3#klhEb2l&w8t}a3!0@i zDN0h~zzKMvxJu2Xljxs{O{hcrK|@G}26;W*l==<2?t`E^G*Yl|n``7lL11VH)oens zPVpYfgDmK94}vZ*P@#mHe5PWke7HPAZkP90tWf-}XrkCAF9~nD0#t!!)I=((*r<>c z1E}86OKex{QLvPndJFf(54lVJN^uD+2dBI^{OM=l%%~2Q#&r1G3(C97Co3FK3NKJ} zke7f%zLVmEd@i)U7C8Z@dsW46iV6z3;wxTtQn5;L1@BrBT7AUg&3j4E6d8RwQYRAlE`Y?Y(KhlH|>B39{W+<~3eOVrzNf(7b zB?(@W4fGzA=M;JZRMu~BzpB#*C^JR9iVJJgVye+-qWYSomh>2M-9zPHJYPx;0ee2(wWR; z<`}NCAzgs(fYOlDAE3VuhQ9qd#n5qR!}lomQGcM8ltrB>LirUnsV|D5s2L|Iw<4&>rA|@n(O;2t zD&F@4)t?ShsW^T+oIOD+C@cDk;?x-QM|!BZ>p|IF1B&rea2)Ievt++wENbs+#T&&Z zD8YGneDd&pAB7y;gczI+_hs`zJV}uKWF6r~s0UL2d~iXUgW)hw)kQ7qRq_WpNmfHPTIQDRm8HpT@*W_n zG?nj=MadnqR_uJ=L6AmexcH-ZWuGJfhDsN9I0PqOW9K7 zGWcW#ao?w*Cp=C?;b5AgP@~pur%U2Kr9*pPgBnF0L47)ok>?Zoq$imBbfq6qPvAO` z({G^Z_knx&mpli|kHbi9IE`e5`D6~!4VtnaIx|xp3WS zh*rdFVlVMgN(E=?6=+gr!Bc7ia*kV;L(awdbs}kUCV8K1isXqtvM)%X2oZISyLVvcx%PWiLRPTSS@#9@kEyAmNe%iDyWW-Up&qmqdPIDe_{P>-4c6^M3XLKwy z@UNn5>?V}a#o)1Pg+%ZoiF5Jv1W9@l$6}4aRl1RAD-BItjMpdbp(Q4f_mM-r3EJk? z#2k159+SJtD#Uha0#Sw3gRORnXilsm${@@7CTJ@6$phpb5?LeQ_*Emnfj0G$2tw;S z6nUL@pr(GC7>{)9Htn0N}Uet~#i zj6e$P+xUq@8R8i}=a+tfcRdVAI6a^|TMn)Ie+f5dz|d;~1?^feEJxv0SK}FpW>D1? zmi8nzgEzJs-iZH5nsvcwY==6)gWGrxJgvRZtKE@apk@l-*gcS@g9tZPstHzFP^v-H zMM*sYTjw44RbNq(y`d89gf@|n_=#FJ0=4lhh=eb|1k40=@Rd{8=2$JrKV(IvIO#DS|YWkIYHnIdq`K~u~-rqU|pn6L~rQ=wCMHzbEHCL?~}F= ze<%7%Z;0B&Y+?_wNyWOcI`CaOb{_-YVEWHUo2y0_NSLy-wV>+^ZE`sn=2;9RQ@Fzz~U!*YVlufz@mYRY{ zB8KA~N)V|ioqM1Gagrf14)re&EKC#bK~FF{18_l)mm*N>uf}^$Krglfzng|k*h^&ZiNYI%IwXa5c z4DZVT>9JG}_opN3N>Dlss#7_Ty!(R0sg#Z+^5Q+fAIt|A_4v3DtD7i}yZR@3>PvAM z^yzKj*g8wbWm|}PAOfxcYqbEe3XI2(7(3dN9Z=FoaM%AJjEOOXTvmm=3HL|_(VonQ zT2c$7#+Br8xLk%2twECPD}9d*O4KA+sXQ@`oRJt5TLkaMaMaPZ;5c?ChschC-S`(d zo5+`-!PIYvgp5|mcPkvDkP%ccRt(Dd>(O7J;4cP+dr)+B?0D=%w6T;fn+i@<2U%-m z6}d11ev%)SEsz<(rg}&6piX6j82^OqE9>#!D2G(2V)6#^y2z7SEEBxx#OWL1}qMjIW0%%w`mWU`}H{6pL#|3(`w4<6P%at;W?sq(e5 z$EbhT&~x=A>VpcYA&Y=!*bl79ig@K}D9$Iz(q*mWzmQJFfx|XV)=kz2Q!;2 zvK?k)56J4k@?Qrjvk#cFGsyn3WVspZ0X6kY-bc0<_pb$xbc);xI$s)QJ5I6+_;BCg zJMT`6#?M|8?NLkrtEpE(vuj2;abL!xJ(ecBW3G@y76R$g1|sTR;t^WoG_a~xfmL|{ zb+|SdrNt!$TF#Ng1JF1l3H04$AE^p=k zMU)|1NT;M0B!?Qj7WA`8 zuQ&l3HNuFri4VkE;!mlttX6zjAU*OA7zS)S zkm!&|iZ_Ujh-ZQ(>xbv4JJ<`Q(K1KD?KT=${0uXhhD3vS_t5RIG4=^wzeP1P#Qj7oI1yIkE_uI;(saa zH{x>>TQQ68g_5WNA5LefHbzhab!P)c?!I6*d*K0nmDml!b*dDJAHp%`pyc~v?wlL1 znb?cb@fAqZ`;k;w5_PpZD8iSdDImz+!uCM8GSXdf~nOI)puoRGnf}Hz1 z7|8xaVUUb-5>>&aUJK7%Pqc)}sLfe$3|)u+E`bz@;t3sml^;?2iesKQ7Ctf`=prBC z;i?9=+TO&U@wu^!@npEveuG!45?oT>;oC}!7mlk?yeMKVW`Khcph5KG}NEn7@4QxPVP@AabAaTyo|);|NCd%$j!Kj^NS;I@>$#m zAK5Fks1&rcU-856270l=$wD2J!#CMH@eN+kvhaA7h4*h?d@|-HyD&zMPRy6~5QDKQ z3MMw7Ro=(DeUf}A$(N|xHQC&NF`H_LS<3`apdaD=eDEbbz?|g|%=~+TojVnblbN_fbHOuD zCPsjleGojvmf%@uB*eHr@fJOz4NUAclAXu~t@Sv$oxFgRY-?~8n5mJ8t!9^)GExnJAu^QAFkzF$iXZ{43f?# z9!YZ&KVqLj6JISwFwdPU4aIn}4d-!3DvEX8I6_8DMOsV`sU7A=Ev4aLq%V{nNyjkP zdx#qG5dG!41dX0^FbMn|(e_7!?p-8)1@7rNaNGfr6mN@J)k3%%KgW|2MUkvC3pFDX zD-IcY%tZV+oL}Sc(^qg>ZvxF{6Z+zciACV*)=DgmFFu>MdcPNAnR zgB40DYR0tq9AtM6gL}3kj$0poyb_=quf*!-8s4)hYC>bUi)*0%4u`jK9Q>xvSUtE9 zqcIv;3V(qZjhvA9dAM!0NGW<8nHVJ#g^{Z88Y#Z#!BN=&@2D3!Y&1N01<_U(#-7Jq z$mseOYZ0r9p1mV__R{g)NUrULT&OSb9>0mz#F6X3hq)Z<=cgbFrNU?X2D3*y+=$;} zB--2W@tLv0XuU7vV)EFatf}^8VqX+SIJUS$r7X2PA3Cd1A_#&Ic z{))OIWnwq5hU*J|=4YJSsd#1VfEd8NHpFr^y2ESCQ=tm?*; zIQJj$N0-N0UqpMlfDvN}yrwPV-;fU66uwXe+Wk5lVJZ^f^szL&P8%B>D-l}~odO3? z>sW8Jj%D!-aLV<_b?FNSJ$*SROqe!vX8~Yfoh5dpa(ep6^ z_3$_Jg;y|I3`)EQ;eTqhYxH!ySt1wC{w8qS=Ein{$7jD1L4 zP-As^FJ25D$wP3^r-K{2Dsc+etVV6fA0Gi%qc6p|8f);5mcmwH8p`9gj!pp1M1A3r_u6?4av zq*Hbc`$#>&PS=s6r5Uj@Af5~GwHjlW;c#9Km+>6FfXh zT8>^~4t6uDV-6jZ21>kC3`FXF*!^_ME6dlD&BzwyL-e385{;#^AXpC}o|C&}xRu!ngV`^J^2sfu=T z0c(nuiVO0-a)+!V7`j%_bJyS*#C$yC_>V7Thw~teYz`hI-8*syxhXIH+atujvLI*h z?4hNs9}&mg@(+w_^%GyD7BVY&hny{IK_0_;)Q*{KeeD1IgBgAitP4*|`A82a@KZ=I z-=!PaRlI;*hdW4MRvt5c`NmnE$uLu23QJDN&5Li0p_P#BeelUd@T*cqHIgTbu4B3L1fDtwaJ^oFkA)LdE5&bsiz2?N<7!6usr=dHkBY($=VX_pC zzlTr16IyRN)_hx}M^Syemed7#@IB&hq+G1m=8~pAJH=72hXCR!QpFBywv2^ zG*R@FO2!*TMg@H#YrHSnhg!zWmB-1$a)DeZOO~BYWDs`~3!?3*5#%fv6_(4i0WbyB z#|cV4CQZeN!Ncga$^{Qg1(g3{hrP1ms?;p5jg*W%#J>A@a;NG${UmZeaV6fwdn-65 z{x!5NzFr}Lp^!wUDwfJGu-(X+(U$TwS(|t^*)%@e-!PVsycOlbRfr@!XHKJ%m=xkb zq;ULMXp3(J667yOE|A};hm@At%h<`EXsPMpTfvvnX5c9tBvQ$F(p=dx#;9Dt){@nY z)()<95999%yWHyoN%Bw0lalYK^-Ny8dWZ}p`v%7fGN+YC)uL*fVgNBE_Q*fQ{mh;2 z?;c$(Q`0pFPi!|aFqRp37!E|H5E7ik40&I%i+CKeg@y*shpW@+cnX+LwVu#~(gQX5 zBGy!oEc8_hsoHBy>XxblvitGlNIg9ePm=Yg%D_!Ki_9O{>gyXY1*Z|G*!C)_#JzIe z*zt+{vG2L6jQQGb+1~;ashGS&fdxg+sphha=tJ^XtX=Md3-yYh;I?orokb&@qHhve zaAr!DjEG8}g|234#z>FLE&=c-?64Yt*f z%D8DP;6FkaFC>-vyM#GqiF`6~iz=Ahx4`8>E%S5q#^5N2MkwvD`i4rInEuKTV~}+V z@AMw_O!iz3)Wry{C&tRlAR)Rn*&Z&XY;ga#vZK}0q28&b>>(==FC1gy6Qv)r2IxDc z$vjAxX+r1|2SDVw4w}HnmuuT)J!8`a`H?;{KP9q#;M**P$F&R}jUmv*524<@kklDZHJaKxin4<7|VWKnz= z-u0_g9J$u}h??l%W5hYKB3%AIL*JJ1$pBwECK z#_AE2VzQzzSsF72>{nrr;JxAuGk`vdCuUn@Be3ILjeIE^FK;C4g8i3XvH{3rNt4=R zl~P115?4yU%UY86<8$F1UKKqaE1GaiE{qIjX%SZXB`|BaDD?tK{W94C&*1FX_5Fku zd>K54Ajsy(20u@Jk)B|Vk`>L0kg?8~J@`PGD1=c~jLnQ{B6q-))BAtj; zi|)nTyBOx}L5amoIS5VyMPh@3X(JHVP;kx^QCe~skn<({yD6}L^dMtGbvIxVh5M0Sfp8`PoyKV znkOS6v|V&Io@bPfO#+W;4$@}>(Z6HuLB+X^m31M^4w{24^&RAwj?pLh-RbC$Xk{du zzQK`ykA9EzMkc8biLGD52P2h`a(52YBr5tHsoPH@O~Ie357x^$tbIF51#rKXC2C<8 zo+iE_Md>I$s!Fr4KhOc(i(fHI+?iO873wGKQI?OHqrKr3ABx>;7P&V?5@L)6CFOCv zbhL5AkT^|z!Ai0~JYQ@nW>8CFMX-y)A-U%p)|O3TH={M9*TV70uh=Z)Z4lCbj35SV zr-qYGi8b*N zk&(gb!Gpoxp~=w*h(aCX2cvXoLa0(iip+@xFtgD`7a$$m6Z|*yFRs3FWMBMhWMsHT ztT4D#9P)iX#GglR2YQ8Gfu?XU`UxDF((z%@7}Cg#BE8azWXb9gfB0$SOmubR5g1r% zchPV=yiii8Y-o8X5^52)Az8Z`NMj1ra!Ql*!M z3Lw`|8@?EpA*F9nXcy8n=Y=wZr2~xu+k$mMTY~XG2?0Lp4LCLcNd^e*ih0rcnP-x8RsyyYSz^EB*_Cxq)+m2SIDF zC6XE+1)m}n@jxIDs2?!>LV;|2;B_`0^1*0ENdeK|jg%jekcl5ty%HH{t3JI$pm5BXkBo4CjM%e~99 z)3cnvX_{v3!cDWcuz$9VwZ1Sl%3GH!=7h5QW$(zD1x|72yrss1rlyu>)>r18wj{BD zXmx2M+pfAa{P3JCHjmm&yIpST<*_ZduMAQyp_Vi^|H|RH9cDxe?r9p%dT3 zGSPT3Z&A)(LuyWgJRxU=e!i};p-r|fdvNZR>>Jt@db_c%wXJoHHNU+fALDoOxx7cX zDr9rRc#~k{PI4E7#Wvo!%sk$lZR%^U%vFx-?wN|&ZuvWB9w)8jGGTHKmnm(C+=Jm}j zp0hr8M_$+LCV2{bNy{kX9qTaLKbD@BgXR;~_qO`h8up_6MsAE)(7oML$=ApGyK9y! z>gnov;wt1W>k#Z;grn}LE9f}unB*GmE#f`pI^wG5`O6#foOG{qRdx<`E^@0pTRntN zq+yD_1JN&*S-esEw-avX}%=CQh3St7c7ohVgaFqC<%8(wd0t$#C66q+&#&)*0sa+L7ZZr zY=6Ry;o6B`a2Dg8PQ1T~@6Y{a|I@DK44jkSEA$gTI!kz#d3Jebc{X@vdmcFc<-a@D zxcj(!c~*HAxHDW$olj93Yh9b2rCgm{r5v>Acbs;59ot-wJYT(qeFeR%J)J$%+&kSD z-P_zz_ebOhsNGc^nDo?Q1s*F0ATm(_L7)k3UkUuOAao@9H) z_ZJ5{o{ML>=e7~{ANF+nZaZhM&i4?;3oV2vd<)^F=oZ=ugyV+LgqzA;w@tA;wiK|A zwC%L_wU6YCcGmvXZm>MCmU6JdM=NU+Ox-O4Z{~|TS9ww#?ZnBBJ-m^xEwtxy?Fu`^ z&Eu1~bKKwDTCSgKgm-}Zm%E9(8(OQ} z8~WgDg5=N6!J6R%A;1g$9#0qV7SBA-+Q963RP=Ei? zz@@;|K=a6%*sEAH+C17VT+6%CQQUEZUu(BfKHGLjtm}T{y27ut7jt%SGp^f?gWOM^bMz3pIZC<9JBFbD-st=!G~ru{ zQ=GLOGhCdfoadGIo5$mP;vVb1})?xXkXtE~gX88Tw!?x zuH{_3Q=H*c@E7cB#Mi<$?hRj9=*hppV%27Km~+r)&NR2R$gKzMv`|c-Y-6*6?^nLj zy;$&k{mb=_8bA5x^Mo(1592;Je6jm}j|Z>rX1{Q2zZ$w}Z|G;}ESaOT3hH+L9QbzH z>z?nfzaIK_>Dwl64L`bR|NSY;td~h-EYU92{gX9A8wC5`o>3~}W7Y?qT{~XiTi;U` z*WJ{0)c4c3)9%s!sVktP49E0?GLwF;`>y>y^5^1=MwvyjT*%vq{Mz<2^!>t*gFn_1FDOa3xttj$DNiS-PxWS^mu4+A~Nf_?cNHYb)3ne`MXuOv|d5CD&Ha z2lbB(t8-Fv))-O^H*_Dg*Y%qXgsy*9Rc(^CUshMGUt2|+nblW&UfWT-2}v<|NOd@p zwOeLHGQsbl#WND(15HWIKzeb>)P5O z+H2Z0-C3;dJXtqhw+&}gOutm;(yDaFv|+G8=4AEH zO3Nyo^)u^HR=2F1_`XQin5>3bceAc*tLtXyr|L~wjc&0vkl8?6O+VYvEPJ(H&{ont z)Na?hwHjauA>c44IKenug;}=qd$-L(&T)|UWGDJ=nc9}dNrw$c)pfUZ6?6l1mG!6f#SQ25%?&ehG@yvR%zl@>C8vMRs_cyH z-*Up)eY3k8{xXa+tU;2}HvL7tS^r$WOy5J_N1v|mq|dJ(uXpP_I-8zGiHnA(*`;%L z=Gl$sO&5$O^Csmz&iyC1be=9ZmU|}8lXoERY3{Y$)Vx8tn{(#n?9E|wjk%SKT}@h3 z74sI;6ysQ9lJR`*0HkKD%&TZzZrpFYX3RA9Fs;A`Wu9n0Zk}XrU^-$vXKZhD8&{dK zj89Az%nIX3;|TL|WOj@<%{673YM6JK+MBK#ALp&jYn=BnSIixf*T*=*^w@OObjP&M ze84i+LRqrSZOnDdEzFmVNqNWeg2qpnqc1YfFka5l5%T254@e=IX&P)gWtwExntz)6o4c4-mcZBzT{=*wKt|1o8{%@F2St5Ox_>HpQh>NX66Q#4Hn7N*L2jZwC=GC z!TO@4wZG+rxd)E?%k#+r&~^2c#F%@$Wq7B$z0r6z`V&C%yVWhH5ImAHXF>%EM3iOOkGTs%@Ok+^APh| z^Lq1b^A_`DbCPA0Ws2p#WrD?O7RQ2hEp|{ItVT!d%}}4(Gk!w7_)JblP;$ zRMRrkvK{48*nG*PHVrkFHa;~fOxsK^%)=}PEL|**%qk0S9&Da&o@Xv?`D)o_DUDg< zYpklgmZp}NMQd4MYHBKFX3PUE6|6viivtaSF8Ni%D%VA*C}YO8Kj*c#dPS!Y>ag_Wbq{ zwx8DJ);_izTV>l@o5$W1C7WrhWt(KHY5!?!ijpx~zFYJbqh+OaCQRo++yT*g)54m& zpkB?k9JREwjJF1Ca_$?KV;^iAZ-2`*;96rfJAl8yowB#GE-^Q?Y_@i>U9tUXOR=@K zJ+{tUzjF9Urwd!F~KV*Wq8Rx&_3FB+j_vd%eupQ%R1Ngx1HtkbLre>POxvcU$Z6Iw%A_T zp5Wbg*{9kUa2@!ocpr~_yuCfQom1J5*&5rTmON`idlq&rWSDu+5T9~m?0)_ex8FWp zn8h!%jj~7VYwdCScy2ylO_;}D=VsU&+S*tLnX^nrv)&xFEVeJj>TkI4T$nHJ6)pT; z?sqQFR>%6tGQe8ICbL)O1g<;(o1hVo34imY`2t)!)Um^l9=K6?r7`W=ZFbIg)dwJ zZP;xu$ysnF9r%lQpV9nQVK3j4+lo5QVD&tc%d|h^O7R=G=BRx>`(Xa5;1TW!O~uCI zL|$({WKXdlwS7h{sAD^CBRLuFa3`TI&b>F^gjewMxz2nyf#b{Zn{b3#oSECpmk?T` zwB8E$`CHH9WHQx&REAx5DKE(dY{>Xj> zb>;&1nr|vx$I5F7&+u#bFjt;$BD57o3pY^b-tjiR9>1T{@P|>_B3Db8CbZ$J@;;Pa z4%%bDevRX~+h~bJxgKak<@nG14WWZ*7d(7Rejn;(U3(R7B3}sKCkZ{pvW_caPqC2r zL0B&I;D6&ba)bHDd^us8;1fEE5wV7Ig|ne!3s%*8ag`=+Bd-uT2(3hi_)Rp4O2;{o z6Ltw1!c<`rj^CMoiuT-`yT`5KIsT|nM@$!TgiNf24)J&RuG}bl3g44I#z!5uoVCS- zpcY^9ZvHOMb6!40XvqC*zs~)Iqi|dbUf&A$LMxVbloapsjZhADu8ly5lTc=(#6@B; z+~e26W?_&pmj9E_5vGg7M7iU%7!ux#K1W~YIOligbLSt9+2U5m7-wgv&#}qT&#}zW z)w#_{Ickf9qo9Lw%yZOoRCHW(Y;!brOmOUU%yf)*Om>XL=fA}R!T~YIG0f4{al%o` zF-<%r3>WmmDPf{;S12Nqj`|KB$8PR;EuL^>i$`z;igdN`BZW!=lLFSWt(o6F)p;aTK<;8^Nd;VkRW zh*{z~>{eZN_jE0Ac6Qb9)bV7y$9v~`9L~Y68u+{NZjI}AXHRD}=Ns`6-$y7ezP6XO z&BHx>&D}v;%Cg5Swd_B|uKX`c8}nnM8NAi;jt=}s+i81uVSu0%t_cr#mCzY`R86o~ zbyBR0b#_C?dFLSK7{_x*%+cGCE7oz0L&+R-lCCw*6xRXQ?>O6SqD?3(mJ^qY9YjW4 zfNQGa{N#M;TDPwQlBNy}w(W6S_*n17f?S}t3zoAR05 zMn_(AquDgjJks>RxW!1AIP)t@mL*|*Z@pmsZtHLT!}8AB#QNCM%qlmZGj+7QGO~HC z&DSgwO!G{;tgX>D=I{bHgo|*k?Gw?v`m8zV?fqtj^(VK6AI%-K8|3L*a9ly{`(04;y~M&I&ovRp2}f)@76rSMtS$#zGNC6VF8d8Q&(i&#}j`-qpwT#F6CQ z<38i4>FVbZ+$DV9e3iWYu^;smb+V24fv+N5;!6uvoG(4YeM{WW#AWC;dOCVKi(=pYZMZz^I(rp9!3_|`i4GxI>@LcZ3`QTFeS(A?F*R6n~y$g-ed0bEK1WOcnLwZR}2o;ydwYr&fyzw5KRsq?jClT$1H>p174 zU7K7V-E};K_lD=Tr@C*PcL(lBqkrQ`PY9VT-@>mWJfF6*wGhf_=`NfhB==fn$MP{#E{K_}tIG$!GJG3RDQJ_kRy4 zLxG?x^e9{~d^U72WWf{FTamuV*@;DNMSh0whHi%}!C2sCXhFmfxrs!a<&l<=TH#P| zad>ic5uT5Jk99}(!8B;HN5<;MzC(-7;b~b$$IY;-I8h72X?u2@O}i;17R?Ks>U3v8yMhQ;aeAI8#w9j7T6r{29&`yc%pVWa0TC& z3+@T754{N$3o9b}@XqjqaB{eHNFSUVd>CvV>J+*asvgb@QQ^Xo%}Dxrh(w&*;Wyz; zkv5SL;R4}wJZtO$wO0y$wP)4W&{?~*jgp(qR!{0+}cxw1uxMX;K zcv|ERo`&B?9hx6K8d(_1lq=KfrEN$tg9yA*<49tX^QUx4U6y(^b$jZXd|lJH)C#E= zQVJwbPTB&J$5=BFW2>UnMtB9+Ofz z-_=wurEO~S)LkhjQr4#$Q_ZPk^Oena8|31ADVtN~ri@ErQx~VM!oQlSsrWoD-^H{s z`OD@1nD!*CT-wvrwW%-j6-avt;*tgQ?1K3_rUmo8PCJk`Gi_JejeOauuGHNiu(?wd zslVsDo=-??n14vVo~iFrWGT(THy)H+EZLdVCwXh~fusUSiljrJc|25)*6h_RS6x%B zO=_NW7L12sYEo5FnW7A;H7S#l@>B!W71UZbje!#zuISI~K-E)KKGkdG6Xh}GPB2jB zsatAJs1B=UfwCM>%~gL_rD*!8rz!JkZfU&A%Iat8)p+e3CC|)44&FLsjvY~sSEi_9 z%J%F8c%c7*XWd6_0R13`X{IcpI;ncAx}y5Z{-P$)jPeb84heB9ksUXh%>vUSq8y=W zp*{i*i%A7t6?2Ils9dJ(56Vp$)nDoirHoyvyrE{*o0RR8R`wg~Q+8HeR!&eYQ1??W zQNL9y)uTcDAXQ5Ie-nSvTHPINi^`e|%~DNSRgx-6vq}BCDh1??fclVTsj8@|wkE21 zqnV>=3|dJ?WoxBH`C54y>|hIf7>t!ms&nc!n&X;oAn0sWKLR7A9%wQ?O-B%<_kk=v zPV-Eq0u{r;M42A!9uPQ&tLmx;tDmXrfhjUwB`I$xA1nK-CaK40Iwk!`x{$OcX;)HJ zFk4!x4zm$vGxHEG_B8n6d3qMJg)OQ2rW&rAjKsH1;FQIF$?3ouuTv zI$GNw?N|D2X?Nqqk5GlTQgVlCx|<0)iUH1#@ThsJmqxdL-3PdseUMDC>tt= zC{-Zp{G&X|c4Lmv-I>D5E2^n#8>lGL)yq`Jlm(Pkkg#Y&BH}+Rqa>B3*q+D_+`{Yz zV`T)p6`62_>DFLI%tfl^b5KS`u@d_)auCNV?;s!XzH%S(4JqX_Hjf#CtiwmlL52e@ zXAklb_t77~HrPVnXENFL%6h8asu{|j%9=QnXKa0CF6cm?RXbJf)z#GfRAp3URV!37 zRcB-x{-bKGyw6Ti9aZgBHCInnnOOz9imj>2uTD}k>fhDx)x|Z8=9zk-%A_o*`oz{j z>SGaR4m{xp=!WbIwl33&zD)N;a$-f+!_;C^*xx|b*b2TtF5Qc%z*c8(F!Pw%;9VSG zj)I6VmFdmwp|x_?Bl@5d+`D>tzF*+y)DUWBB+4#*np#`@ULxDy>fVY$klQ)Z*>gjfN|kTux@>?>sT znZU}iD;ub6$}`H{hyzMi-exv~M(|$Il9E7ismPvJdf7B(TV|X>q!uFsFcl=0+H5^! zKR#p1E6XTnv)$QKQ06U1mgHJGN*_TAYDwIe_RL_WEiyx%Gw+e~n1M5E&3;CT<}lS0 zl~GkleN#18by(S&Eez^QVY-~+itG=0UyukA^7~{5**DooLZ&E3*OTSQlE~uGD@cwg z9T^8_$#|)X?6Xs4J{Y^G-UR9kOBYeBp}H%6%2TPn)N0Trb|Bv|i)o3(!oSedlw|7D zmp}r^0qbQo=m10MPT-n+VT`C}Cz!(QLy%~;C|ztRWP09Ll%v$j&&X>mtK7-XWOG?3 zGYw>ow#aKtXAR0W>T9YdDvk07s7ER=fRd1gxQ?F62AMTT7OlkI1|_Bf(;Dy9kXnM| z!^YG|Py`Ifhdn~)D%{Wq=g8m7pUaylXe2$(pay`x&{k1M@r)`<|3)oBxw{mzq1(Ny zu*l0Ou2IFn#nDne$_7Q-PpTTOU?2klG*U;8psh4zn=v{tRB9>4DJ1$i2rTCqR(YK5 z$!=vAgZxnw^=mb1SbvaVXr>6k_T zL%pPaBB%BueVMW;#?m{PcSt(9NUc|-C|n?-45G_0>*&JlCx)eGvL^NgMNn?}0(l82 zk$s9usKYxMJ-t}59`u{t^2dtfidV7%P$+xlG4L&#(6QIiz46$L?mSWkVD|11ATq5qGL0$NBK{SsV`t03u->{wMLbqi$$`V_@bU1cj|GRlbT#SUNs%~g2F80nW?k*nnE$d*VR zdIW{@6tXjUg-DW(kh5SVB+0+X%PBO}RO%+OVYyhOD2#lQSU1&zY6x1=Eh?RkGYwcPI4Z5dnR4QepJun`ZK>pk!L z-Tx)<4K9I^!3)9WfmwlV{-WN~-l@K|zP)~hf0QriYmOD!65lAF$2ZU4$8Ym9f#QKZ z!S}(@m_2U^778s5wGS1AYO!kQx8Ta4-p{*5=TcX5Pgk$qbJM%bH`^QZZu714{^jo+ zbok!~MupplJpLp8s)5~s_kqR1j`+)IU@y!KeG4Q9TKG-=nju?YqxTnd3B%lfy8rY9 z+^eAFnB_SFwZts%K<`y(MgpGo?oW7+mH1r={}umpUjc8XySiKHdg%#2G{)hfXxS~$JN1m--gMXgyko&Xeq0jI6?AZ&In!(q~Q^I}1 zUCr~a`+(cvd@Ig%ZSq!g|K=c_NuD3R4BsJ-=cY z*gbqVGBjE!Rws5evL$phsDPqvbGT-xS4a$34o-JJbar#~aZ`c2VRxuvcw@M3P!s4I zs1qm_Sd2R}&41Q4OFZn5ob7#VxMS!jl!G%OJ;Lh9hzJ`i3NA#)#4ort?}NedFS5$Z z2ABHBM$_OQ*%{pwo)l>ak8IOOMI>LEq7xJFMZya<2}yvP5_{q0UL3CtF2}+6%>;5I zrNfCx`~Vz2r;sal4X(G2iTTiN-h&?aNK_qP4L5p5e0E|6Tv2=DM65(a9U3(MBBmlbP?LZRk15keWXdm7z%{c zkq6NFrpBg5OF-i~EpiC@z#B+Ny%BXm5v+mlXb5sF*Tp74^-==qYfStR5;hyh%i(xq z;axfsFCX6pFKS9;LMS!f6Mnmb@K3as&61Ua+xZn7E`1V*;{iB|3d6^g12@oAqy@G@ zUgBeS_I1DVe3Rc1Adfy7Fo&h9AGI}V51 zomQy6c?lIk?vUr)&>GaX5UQH)LA}s0sJ!yEZH1ohtE{0`4x7##Vu!NRtWIs4S|{23 zq2lBayN!v1Ox1Z-FR0;u0Tzp6!>w5$f3r2&`i_1UD&uNB0okpPPh@)l z8gzl}!Vabv)1mO&o@^ld9y&AiqxX~J>|QhPe%|?A)|d{bP40gl{p#5GpyA|C;m@-_ z$NyaVGqb+u&oVg6oBH!6oDmDZkN$D?SI}?opWA;d`LU)k+bV;~u?)N0t*2XJY+h_n zYbtx0{%AF|d~GYV&jR$avlW9le!8s?GCO;;e6{y-SZV(Bqu;mH-?x8@|C;gb#y(VX9teT@tosAPP)@z=UuKl-RF5= z9@E_qxczi)bd++$oSwj)@Yc~2I$@_d{jZz!dZ!`4$EAXf%_m(loE~tjz+g4kDc<>* z%T~8p5F304Z_?G(5&D=_IJr6917UFN*b zN$TVe6(c=>6$?5g18>z{X9Bp@7IO}Bw!-~!=!4vulL$O%-cFZ+b1DWn*UFqsz^|ru z(l|yq%yrzrDRt`TybQW5&vzN<(#82Trz3P=9`88Q@q$C8y}#d0n?u5&)) zGQjzi^BtFO5E*&`qMzha3oKkoz!FvnJdO*2A95lv(@h3myREJ{@V~3TA}4XK=2#pF z#{-;xz;^Y;>4D2Gmo^TUlkPIrT?sh9%6*di0Z)~W$SV?94YME)O9YPF6<*ssyj@Q_ z?d8-!mDE$H%Bcdbi1`jF4u|XqIt_A{c%1h54!o!9J>8*?QV|8L zmmP52>OHo*Ty{DDebTF4I=aksis6iKWbI?^=h*LY_~ZD>>4K{mI2jMRhd|U>@7CRI zKXl~@_D=Tt?y<@}+2ghQSJyRwmEX9Pd1iUN^jz)f>G|0Gifen9Ul7BPF4x?GArjv2 ze%EDy3j|c|C9a4&;jVJCxVd_6@Urun;5o!)lj}B59&|Rk;U$NTPLn-ec?h8O!BW>; zw;|BoXou$l&x0O8o=MR4>W*g~bcLGZvCzZh{@ZOdM0APJY03;-p}FpZ-Hh)2J(E3p zy4$&Ta6Rr2(7N9t(>26xvD+5+vF=KbN$y)*d$=8O8{%ekQ@QNr9B>`#MSD(mX8_GN zIyt%Yc3BJ2&nDOQ?tLKAEOjq-yW;lVEz7OF>oMrSlLS$R(EU2Z_TSy^x?s>-eheT- zf7chTH{GAQA8|YETITebGu3IJqXTD}%W#*!PMMrb96#r9POAgyJlJ)Li^*jXuzBrt zt8hOA+@hD=!#y26lU>y?yT0ywIbZA^+5NK{Yj?S&i>)v4^n7m1bnM{-Jry0iZ6Qp2 zYlC&0`J?#+x!cn@h|UW=HZg?Dh?(TbLDOk>wh5kjAMaOchm6 z7Ls0;Pv#fqYSURjMQcrunq!)Bn!TD_8wSD2lWWsSGxQxa)f?xT_8AWuPQ!gN4OOV*lc%|xaTa7Y zuQJ{;Z?lYr(Ox#4GYz*`&5`B;lgU(VT5pUqjx}~Mv>B$EcUtC>Yas(Vf*MGEBj;Ie znVZO8loKa^ftN)suf;SUFqZGc0i3cP3_FDEFsib z%A2}Kp0T_HMA!@VM%!8Xz^*Vwj-XFdyXnW&1oIhFv+-qfLvu~@gQl^~|9c&6ZfNRc zSZbKie5E^f!;6G+SHm!!#JPjw()SUQtU zuv0Cg?CC^yE}O|7g6_&eRK3X+PWI-QJ{jALL1Y(;ulb3EZ>lzEO_NPdCMlrb0yqO) zWAZU|F@Li7lhbJ*dNkB&?4!TXSIPIL0#iGqt=Yc0rD?cv31qfEhFtd%rb(78*mLem z4WS6j6UZdSs2Pw6jKD7KFlIa>guUrC%rmGYX`>c_j1tUC%>6*qw@@3Iear)!(_MBF8^X?Jgcf&Gu(`!jPY$#skfX_CW`X4enM(UpW9bKM6@yvlvu4svc|%rq zJTsH-L?*+U{bV^q^`)XHJB!#nmJ(32Nd;X`jvFtI^s9(ZG4Dy{!%^VC3{_v%OJoK0y7UyI8&& zGc7!`gYkkX4ys!gG{+ezvWmV65v^G?z3%1X`lg|V z`-b@@4Q*#bAhL;PPts#RSH9CXz<>BMg^ZM~re=|ysSG$DX{Pqk2k1j|K0TYh&+fDS zVEtQap||{?))R1UmSf#Um$Lh9LeN$TbgZVJ_V1c4$C}5;p3kGJA-LrrT3ia)yPpL{JQ@QU_)eBes5LbJ_1Orze@!^ac7OvkvOl#<15} zJ7yy5+u9wvKBw8TpicjR<&ELIsgJQQ*y{<#0+ZR~NggA2nJ-wbTGBy6=ga|?o#q`T zH}fph0?PsNF!;2yW{#z=c{9|&JZKozbfe*0!#>kn^B?nFi<3FkRAsC*7!7&G&Zax2 zEaL;?PRlrRx^cQ`TJyEWU4}CT_vXj{2K++|1xcWd>98Nka#ty>Wx_fq~nc(RktC-iB_5v&N219~uWXiyJ33 z^nomf<;Dli3ykN;QuA5km%n|#S-xMYpI(3V=j8g%Kj|OszYqEG-`Bt&z3ZQUJ>JyF zIDl6gYT0HEC%2f-o0BQV^1%GkJl&FS{%sm!*==?*kF=zlFPTMVmGQ5+&N9RDA3X=^ z!o9#&`~+T&q0kY!ligXn-%!^raVWOmZT}DWKe_h9fpH`nxYnKkU(rHfqMHG{oVS5# z(Ak~_);b}uspZ&av|NWe>#~-0P~*DVZe81G`*;VuO$d?f+LlqkWK#tZ_7z|rTG3Jk zo$B48zI|N_3QQkO*6FOsdJkf|8!e*NROsQp8KU})Es>x{k8MBLf$UyJNQW_(nPX6u z*ajX!#LObQkk!-*va9(MIf3<{$51OlPiH~>pTF&Ri{6^g)&qk``xd%Y37i1uVW;w| zLn*Mp$nA&Q&4S*&?LjwNtY2+vU_tuc(jICUM*uTX0I;5{vnz#I=Q40u+ygGnO5paJ z2o;x8ft#hy?ni5r!$#)`oZk+>w$T>lJl?Ulz1cC;G0QQ+d9kybtI55$TOB9gv5vFG zu?6DXs5Y|YuH6~Oa)>FMIDI*d_77|Y)=BIthP3Up-ez)b>w)2;KX7tv11=XSaOT*x zZf}_ZoFxb_Mm}lHgi7Mjwtc|r_z5bPg}`Bl*sX81K{xjWHZSWEIA5%7kpR=tY^X8z zYaQIu(Ut-cT7ByqV9OJ>Yz00hKfAvz?QCP=?6ua$Z}|>3ZBNT!==|LPHM-k??B0Fdam-qs{ads8%hb%NQHm z1nfOcW*CX*V+tTCmpJUr$No=ww8%4bAY|*X3O%{f3~aEYb{TJCub47 zciZlS!*AGwd}{v!q|0wR4we3wfG1NAJS7~vv2E^9wR*QL1nfjRU`y@W65ciz`k^N} zX3vI&ZgIZ_ll>x!5MoRb&Gxpr^C;zUx0OKo$a{wFk8jGh8m}iw!YTx zAp2OlBi)R_km6>|bI1Kv_1`Y3%0>SQya0(TG0p#&;Md$CSX6a2-xz`7AS)iPFr^_MlMMG5>Z zXW+EH0kFm?IIFK=53xgRd#x0W&@EIVV6boS{{yy})}c^I+eGz(J<*ru6PAsTo#8?L zqgK;jsEf3X9!O=9gF%i?Ofl$+nB_5z)FR7e%XQ0q%Y4|?E1~AnZ>eeEpXB5hbFFy> z$Ud7=!ET@c_Dellte_!htQhdl4g$88K$c@IgWVG)?535n7ic%AIDJfwqHfbuS)mQH zjRm%zk=CwY2j;@g&oK58o5l{eM!=3;fvq#J*7&fk^bM#U6Vn~xsn=N>*g;Gp!(*<~ z5195)7k&m}hg#+b;Hgu9G2b)&APc24Q_h?Nuj5L6Amgbm)CMx1JWpCl4WNS2^fPLx z`Hm%+?gDdof>e>D1tC9J&XX4*H{mN}KFF!(+ z0Ks*)-em8wZ`obei%^&D3ao+`fXVAbTP85Y=%M0%1K6))z|j-kcKQD+&Y!bytkt&7 z);(a2?*Wg}cwql~4iai%Hvtw*VXSmAQ_V!PH(>v1qqUliVfVnUk|V2w+TZW=NxFs^ z0X6RB?0PnxUB-CQ;{lgy>0^-bFpd2S-)aP;`wLL>EAkaBXJbM7SK0p7IaZ~0h*e_i zW@`g0+yGs~X9Ld9V*W96tg~&Sz#?VXX0pC)8PpJ`gB7tsEby1^!(4$~(wWR)b`k5q z-eQi@BWVV*Bx+f2>oltg=5H8q4&P){^gk+@c?}s7m24CHgLMJcqBBrCzY+Wahphuy z`a+IMCgTNp6}y3fctC%mt7|NU=989ZWEr)bT1TCxJJ1`cYN`(ErSst0TPPM@n?Mdz=)crBl1~|6rCz2y zsn-^*B?5e_JNVr!Q!l98oM}F6?qFJFDuoKcZN{a>SW}$I9%=?vkcnclWRRE10n`GL zFbA6Zm_L}N8Gji1na-L&nRl3Xn-7^2;r#>?Wf)~#Wx8nkWa>c_f_R(BwAmrM7wVZ@=k@-|Tt+9IB?yxV| zYt~A(E7KEZ=O=Xvu5pjiSif71i~~E+cEzTG+Ij}O&JM6re(Z9l7etrwY!KUpc>_Ey zSy17>!HNJ&)nF^hOoy1H8Fpe_fp4KJc$gI6OE?4^3KAA$5T>5KMJ=aW*)xzq)CIT| zY)n^(h5o0Dp*AgKa5b>Yt+!hqw4%V4TnhN3)|LZ0P6Ohuw4DRivW~W3>ru8H=;2PQ zpG{#~WXlJ>ug%t}wuiP_z!IHdrD@s%V9kZK4r@uWp|DdsqGcqorX6aHZ@mI+3x8YA z+IHDi+l;Vpy%2Jv+Sn*-gmo5hYrSvrhck$JV9)4c^Rqnxo4l4Sv+9An>?zzc6Jo$- z<}9-t@Jl7LmA(oRt!8dPPLUc${h97fucUM75@s31aF<|@I0W|Mw=wrLc%5m2!Q=IZ(acm76WBmgD;~nf01=DioH#-TiJYn75+61g7%YnPD8qN%&ZBu~t`>=I~HOO|y z_6t~(-?WZvApyroY!Fhaz&{s%kZ2Vw7hpbfWm zZ2bZJcsBu$Oo5&Li`HYd&A=sg-}VJ0*BjP+DZA1-#5M^my}d2N8U*=cxz_8TO>#I< zNMW}?L^KrezX$z|8Ud^e9hnL`j@iQeW2>!`L38Y^C z7FajhrnVda+Y}6pY+pb#4zO*w5c=O@woh_butbiukK_ zURz+>nEz+{tZT_=?by~HI8eH@wgc9@4B!s@+_nN(q1Ed+V+*X zLGNIU5YtA%KL0&N46io2JHv%6v$d=pyOkz^QN0thfISA<9?m|dVXuVoG@Fd1DZ_x8 zco6v=V|s&CKGRwQ*s6P51aKM-wL1d{vjJE-f?L5;w)BAx21dJSc25DTu7*=DWy@Zh z5aw0YGPyOz?g_BYs_h5bZ?_u=46YAbdjY59td?)K+5gV~^IyvVYbVkNV-}M znje}mh_9}gwwT;aH%&Uz#{Xq2n#YnqEtgDB%r7nR78$vY`T>Zuj5!GL@w=Z}9;r76NwdZD! zSdTI8iy$AW&22mMPZGfH@=%w)t}`LKBhfR+vxj>*bWYmkd;;x9pX~tlI+$C^3Wc5F7n>(z1njRbQc;8-O3E^!#w|aAN5J_mV0f0&R>7LpzoA> z509Z9f86Ul4nq$lj`thyV4rc`;hvKqU+J9ZO^?IS8SRqCa_Aqm$E(Qwo6}v+Q5VX+ zgXbAI4Qc0g3;NQexV(pMAs*0^W0unnr%dM&E@Pl01P5|#hP$RZZ+A@R)H^F&{aoL< zE%FF(?*%=gx;PK!>~%!!$2h)&{xL`3q~r|eHAm_^-f5QuX(w~|=nxIvU=BMTa7^P^ zIlY|cInCp6oNqX_a^js|a6BBRI()W!3Ho4dt+VUo@E1<$UOTLEjC2UF-{Ropw8nL_ z+a;$JoF=Dzj{n)aLwwj1Q28gvddQ-vw*Td@m}7M)w-#9Ll4L{n>T}ZtZ;v=Q%gn^X$%W#yYp!k7{G=M{(9UIy-0_wm1em-nSp`XmT!teoZf2{G2nP<57*% zO-`*tYs+HbQ0w2)x6K~o{-PJUnMhkBP&e>)r+tDHTe0Ll4#a;*QcF>3i{K=*Zen zdQ|QW-CeuL%cRw^G4fB+d>LQ%OA;?@f_|=9vIA0^tiAlbfLT6!u=(Q+XbX-^_ED;t6pNr;7 z>LmfX4DKz_TNw2sd3&LfuaUXS)Dl{j zElrXI`RB_I2DnRT-~K|m?1A{bq@7eEnJlf64w4rIxCZhADrJr`wQPmBPUJ3`C-N1Y z5ov_`1!DzCg8hOMf|<~(beu3m++N}(UL%qV^LVw;i*PD$4}XNPTJT#~Ez08C35%t% zlF6bqVpri6{(pjv{6fA=;KqL-Xb|odED&rJR*6C-Es}%MdCPdr+@RXCjg zo9_U3V|kRYvlJ7p5FQY3;z1um?t1(S@K!n z=(C+aP`Xy+Cae;C<=YD;^UHY~cw6|FMMuO3pl50&pW&N?9sNY!sk|w|K=A~rS@K)l zS?I#QDAWo|`N^V#yie`{UVC}1T-Hy=ZGpa?-S~38m4BDNg`Y0S;CJI{{C@k**erO@f5SV?tKsz$JcZ7$T7NO7qc9S50 zpT*}3;(4LGY@V9;jsHs+1YJ{cVXe?Xya4*xo`deTw}rjLTgCOFHqmwHvwBg$3gQK6 z{1{%LUmW)-w+nYNce~#~zevA79^E|K^REaV@uvwNaCiF+6(amWzWsQc1S|On^tPpW z4!kG4`GV)r7u1c{l^g8$(f6TWA6^r`MvyHSAh^jl@;39%aP`~;{BitRzCn-+eI&Vp zgMw{vjS6l%pB3DPywTj*yqVC`ay0)vubTf)P{ser?;?oj|KZ)|_2#wX-++#zhq(v* z6u$O;m$*ZH-Msm}3;Z_t+4Cmwmhvv}#C~DErCcZeRbD6P^P0@Bg6^w%ydUsV@{V)s zxz&DkzW@B{{MJAx%O<}=ey!ZmJWrURPy7%32tg12NggCha~Jz%`HkU{ehd6oaHm4| z(oy`s{6~Uwf?{3*x5;;sZv^)~FOJ_+@LVugI7>8Mc!Ix#H=MhT`rVxNb_7fc(ixBOs{Xc1!qcuCb0nx;G^F7l>(wCV4QN&|L@xMJaCW=jlPB8137vvzLr{P7@lYdtlW;X9@ zy!G!+(^JERCT`O-I2RhzG^^GY`zcYdn1iU4JVs9 zP?OOL3?7)FV{=gR%;rr^CmVGQXyfE&b8}3yw7Iz{qiIp&_{JYi*9|R(rv{#pHTWC6 z4ey#Gn_n~^Gkh~N7=uhZjq%1%qs~|ZSG;ZTGDJ6r0Y{9oDcYFaytwf}Gubq}@kC=z zqhph~;b+6@<|T%u#!|BaaWl3?Wc? zl>jwDXPXx`_xjh;7+~zw>|k7H7Fw>7do5i|8w^kXy?{#4PJep-`cc39?*PL(gP^&v z=`Yj^2^wEC&NSG=j_x*c3KeBZF*lmC%v}xArpd-#=2nv{oNG)n%c;9GYoSR4)faZ+ zr+`%Xh75=TXTn~HnH)sNQ+}2nkOg+hJ+m4l?gE5ay}OEqWK_ zK)q}p-?Y!%-gMHGW%<+GVC+ST41Y~GjVu19Gk5K$+UD6+{_9a*UK{rDc2!pO=4!tj zU)^6liAUjKh2yFdN;C8U*?5`v^T0addEg5}38oVe+wr!neC_3|+fQwo z!=LVbs>nK?<*glyH{pDI8GeH(B^-30h;c+3kwDzXC*Vc68}5aN5FhaScsNl-bk^-7 z2IDGRfv?fp<2&#HM5B(;ebo)q-_#Wn{}JzTccM@?OLv~QMC>D6bvp=8B8HF=!GwV5 zL`)+F5!Z>qI;oB!M(B1EnfNpO4?Yins$HP1(N4$j;w`}SGK~0+%ZUp_E`AU{O1SG( zy5Df+0mM3d5U#}SwF9*M@QJt$e~M>oA8PMpH9q~Abu6pxX>nE$ZLQXd?Nd~@tdL{z9H<>_bLD>P+yOCOdUEsHD_ zmYyzsUb3jfP%^W$Z`r0YkFsfH`m(aJn`H~jOl9e1{Yo#CAFP;J=30KSBBNqk#r}%K za^JGYrR&NjmOn1vP=2iRZi%h5Q|a*%ylhnYqVkAJv`YHSqoSaqcSR{Y#qn~o{B`-N za=&u2Ok7@9R#G;g!o6Z(sl1$i7Fs^8{CG8|W_wlFnyIzNY7f*2o*Qdt*Q~AG{k+}t z)3sM>4%POmt*<;%l~Ze|PN>OyKDKUq4N?2DwnOdP>aSHzH3REb*L8n!_2vARi7zL; z6u-Rn;{D5;uZ%AvU&cSrd>-;Dp{AtFsruFPRdrc)u61XtGpoI7E>^qOJgza<+^cD> z38>v!(^M;eQD0YGrFz!4a!u8WD$g2^n!c6E&&E_tsQ6sDwJNUqaE)V4r`of1{c9Fi zC)YZ^xcTyVb;L85+8;I3pY?yX_1T~D>T1anS?v#4C)wIa{2xA=Xs^@i=Ii41iTWkF*}62{XJQI` z-kXpUW%y#;m57AzIuZZyA;ceIFwu_C!POrSPl;2ol7|x^1dHe5?{G8jLrf*Q5-D(J z5m66zMnjnK`S>XO9{v^Yg|}++;S=2miWsO{r2C^Aq;Jz5(}n9+!xMGJR}n=-H(ZAA z!<+GIM0esQZp3>MUx>asmYAXIpr5JVr=PFysQ;^*qWh=|*8kQ8>b-TJaeJblR;GQB zttxOVc$@E8c)DO>-opGRMZJnv7Y;4zS!gNDD(tOarFGQz)c4Vy&pwrl<^Rq1$n(i{ z$%)b5$^M-an$tJ0JU1DhEjVv~&S~Nt@to*O><3Hr0zZWx!q0+znngT;XWmRS5+->5 zD6ot#WF zZnEw*fe~l%-nbO^#mC}TV5WN#3L=o8@a^zf5zfW^@rPP(n9WUKk0p2?u(2~?p0A5*K2^&hR>4)p#C&42?u4#T*GGR=_eytDe;KSLsjJmHWS`G|k-b{) ztZN`T=r-wk>&4mqvioFT&E5*{>hulSKlLimurc~pU4yPW$XBlyWxoSich+n4Q}o~T z>$9(CU)Mj;+3Owk$8;v04}3CH-#zoVC%P{uLJo|h_!I8o)g_Z(C{-?YS`Q7r8bJOx1@+Rk& z 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 z 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�Iff}$Fh^wmfrNCo>e2P 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

bdT=visOm zY-P8>Q_dT~<#MCod%`#`)MXC19qen@Y$xhG@4y|=j_dZOWk*V9!X9m)t*5Qf8f&X< zn`^yb?QLsjTV>m0ONIL8?vl$zy$TZx3i7t+Ez7H)cRjC5{;>R-`Q!51<+<`k=Z(ls zf{#_Xr*qSDl$?fn&RjNUbIyb8vDvS3O!*y)N^Bn2Up{xRJT**r*Ay3$5;EJgSfeGJ zik2^N+ROHropD@p_ws2}8|bOP@VgyV96Pey+wu)7Jg!)~@|J3i5=-iQt-rN_RBujg zQ}wqME=6fA(b`$?{vDw$x|x=*Q3ooxtM#wlq3+T;6>9CS_MqbUxCT)}!s~_M;hM;t zsCm(sqDmv4hw@M%IF1vldUAsJ(uYd7{H4m1U$&Pd~gOwSP329($p&S|cr ztnA(jr{E{9>-L$})&*(VBY)TV*({?t-Jdb+*X!Q}e?H|#7cMTYWEE|F%lefOWnAg2 z(#@rcEygww_GN=ga*7uhFDjl~oLtO$R2D7FmNH#NUw%nE~1mn2KFsd~2L#JZ%_gm}(I8?F@flrrc+IY8qmm z0L+F&b5qkCW1``wu8OXPu28o?pQc}HNHk>VmTJ4ge1U;HjD12|VXx6{(7WwV&Y*fi zS4f~{kV$wtk`&w{9};^*dZZ4|Ky|#E(8pKgBgErAgYSY6C3J;qM=tk)yTyIxvbby9 zMQ>|QqTBCEb1rpEvfr^MIs%Rlt}kq+TlB8t2MH2bF&gvlxINr@?-*|t?g)30&l6I8 zDN=$QkS##-dIOZ5en8&Z3cc(|Yz~Ivjqs&-ORRRM>^kKbWh`RvF_o{<7KU_*@d(6ALTyFnU}LH$Dh+CuXTRQf^kI=CF`vv zrTO;z&h6|wcZ65={`SUuDNkj01-75l3f+_bcC-DqU3BzvIoao)mmJ|MCxy!k15Y5U za|!ZWK72D?9WTThferf#koi7?cYGlx;O)rC)CBq`-HI8(7?~E#JmzoswSn2pbWvYa zAB8z;gQl;hfreusW1;@cjA0fsqnK0lN2&ug08+OMn23e~|LSFM0(g)9X9CDa60s>* zC+u&`gvr1bn-nZk&Ot9^k#t?$?RzIQ7RK@#{xr87I#B1hDtsMbiI6GGg#E*0NOc6j zN*2v`;5bhW&lPuDcQLz(z0Dfjeci?G37!VtI5@fejvz)80tG#o%W0!qhnWoHZQ{b8Rq4Zkm<+Ahk6vt$jiaq68#~xyLxsJPH zz}vdrwG?W9&s|$x?craVykF z5N+nxl8p?o!?_F?3;1ujpI$$%2 zUQ8cdnDK(;SopNa_-Jd)w3v!9^<(Bl4UT*t@iT0Ds0_r5NtSrC3AhKT#(@U6fiw*= z>qGEREPQ^XJ<=E1GU`uc!^l42a)>tMqItNnRR2?VPrF;gsISmtAW=Z!ZP5*ogqspL z0G6=_U?LBK%d<7O#CY)Fq(bMqfq2DN-sceB@PBiAy=^`9*=8`eQc(KMw$d7Aoo~Hs z9c5ctdcUlhW2JMvD}~+TuI)MD`5R9EHMl?C4`3#V^S1NccB|Z7*=V*LyAb|F6R*sD z5w40;{HSsv&_*>2>4HXsGkpe-FeedUoFj%47a+&LWA(7QSXan~)x`byd*T7Pj2cMS zhbnW3da;@Umwg`wXR5+|QJ)#Y9EA$;Dy9=c#-U(3XnV5#U^WRt3OFh?08pOqSjEqsV@jQf}4U}yN5pD!E` zB7D1{Keknjm7=9s*cmMoYls7VD}{6XEp7ofm8-_B;}BlUZv>Of9N~r#>g(%EhW^@6 zunD5RK|WgCC+-E~lm@DSLf|vd`Dz7E06(n+NN#t)+4w&m-f-Yf9!9Mwg6+bF<2lgN z#>fb=HmQ)0A^T7SeXAE#A8?i)Bi`YQ@%NY+diC?LhCtJ-i1)tQlw%2N786%zLX~p7KcGjsH(4}aF5@|_l7-i1YesU2DXTs zP@8D(x$HK%o46C*F1DjP#J!ju&H7zkU6-AbW2Ga(;k2K%e=TcfPjjHoD$Z0F$M%Oa zTt!a~=U&I~;!;2c7>o@4C7{n)njb?Av*ApemB>)$=KQhA>Iw zrGbG5sx!!Zd<7&}=1{LG334lcu$^c>%aHY<;mF2P~{OVHu}(8=l;U8$yPJ9O){{OhIZkKb8eQxO-sL$3fc~~;vI>ENLw3_{z zBg>iXTEzBdp}hsR;P$Q)&Zo{Mt|S-bigJx}b#k?XJ{am^*#2xwcTG>ccLa9@`v3KX zT%n&YT1*l3l3h9gjvc2QA7~8MS2M7(4@WCw6XAO4kFUT7<076!5JWb<7N3k?!|T9( z_mI3qy`aA_-82`pUae2NO2_JQbz5~VZAa}ljY(5W{T}YLopdDarV60q-;1KC7tnER z4@sj{l##9l8RJ6g8$8jc;ReiskVs+hRp7fK%K`ZL*F#7CsaOhWiRRKRX@oRex(la- z963>WBiEMW{q@B?LXcxUm)ru>TL-ga*u88|_hWZu&qz;2&moV=``A<8%X>$1?RbIT zEu?_4u!2}ktPj2XVSGzIiQDSE=Izbx;-2#jMO->8ewI??7BDG_#NS}O{zJOSXlgPUL+%6u^WX6Mc|-_dApRw)f(`Eu*_`S~J)ykRXu1ke>DNFS z@HkNm<{?HBEr~Ob#h!;Z#=8R7ay>EyIjO21*eS0D^70mi3N(V+U?QAk$^{Vcj;)c~ z`Tf##DZ{7o*1PNg6~DD1josZeLFeQJJ`*;*KbY_$gDMgfq-3_^A{t09s*09kSYsxeYwA2h4XEB*Wjh%D@)eWc~ zcw_XYs!=c%ylb-p7Xy`GnxP!zD|uxmWK>JQ7kW#{RrG;d$^f~VzqbgabML?IGAHer zQ?|UcQR#}(@nv1?(;R(W3Y+DA?y2FW;Y8cq`^9q#I#7gXy}Q&s%{_n}>$>Jhc1&|N zceZr3hpP5wchEf%I^7mwxe()v7aM{N@RNU#?1Q}Yl|WP2f!z#@mfOpnl!b~@@dNXD zCp_IB2a|#hIM=2ro8b3%LyvJba7nX~1h{&t0&9CAv6L7}RKqDO8GQnz(NN?a5J^LU z5;_j7SF+p^3~yHGs-KlxE1d$Pf}eo-*&SG!ZpdoCgACgcsTG`RQhk_s(^ubjN;oQ9 z78v0fKOF9cN!}%JQorZz~Xk35N93sm%%2+MpE;HO_BJ`=5w99iI7 z1|9wBd_{f{U&zl9x`2oM0X%tZkf}DxPyNGz?7bPd)U`1uq#E<_N4N^Ig%e=6N1=y+ zxvK#_Xf`UNM)1>CgIZgCNCjVnvr`7T2xIY`_!-=ZcY@EqA*0z2uYfH@_Nsub4cyy7 zsy0A*ZlD^c5`gpjC^#gr47{^N{zzbFG>}8(KJp-NUhM}@!Uymt&llPV4Z%yA%l+U^ za<#b2UZeN0C&Tm3lk8dT8RuyOKV<{&Nw82?^tOV!yU*RiU4{MatmJIvOmr4F9ytme zzn!9Us`HBTUuQ+QGeyJ(6aMJw-^J zLo)RievKNTZlc+ywduzgKSM7*BV-Uz^)kcyMf8g35q>6&2)h+B!g9j&*f80!*Pw+g z$#mljbH1f4q+>a(mGyB=L;5 z)O`jjldD~Mu0Cv(`?u$kcLoQ6Pspzg6QUu%mJ55Y@%-QXAUMGvhg=)OTlj7KR{k*G z1hRA*p$lAVUBotU6-N1g`8Ue#6*Ev;Meqt<2u@T1Ikq?Lhs6Bij9^sj=Te2hDQ3sj;d*t=R0J1yT zl`cn1BuRgUo#p{@2ux&nm`j?O+9tYYhI+<7h7Z6|JE5DX$yK*wR8%=?G?0>(&;yuw z+Q3X^I?=7^Yt&Wh3&lXH;}m_9Im~otPBC+sI&?qs7ycRTi1bojgIeGbu$%vu75SFz z1P^PwKw{u7tdz_B1yXsbi`Z7Y2X*t$kgR+xuJ(NpHVAdW%J$6r&eO_$o=sc(l zodPHNiLgUm$=+dSveR9kocmmZ;l!5Co@2MdojHK5#7=`hdzjU+cOfmbj_u{z=IrL$ z?P}w)Id8h&vgg^p>`(TRd!lEQcNn*mJI0;kQQ-&Y@v6KNJ#)RsygS{k-632#KGNI5 zdy*f#+G;%k4h@*)_(=1`~U=M1KK0Jg=R+G6cFJ!kA~&M+s3 z)C|iCbpV-grE!+-Uri6DGi4|HQ$y$v>e;%JkZHJWcAF=gml}WSI%`zS7w|V`Q2#Kq zG#j)!{Uqa5(+pz;LoeNM^#E!Ku0{K*vcSRlL&;FSDV>$ZaF%WXGgOTwlQi7_RCyar zf@zGNaBXkK>Y@i=I%uE&228pA@`SrPvDMg%>~i-VPiJlge^Pi2S8VbkmIll+{0Gjsl;iRG)yLI5|gl2XeES%%=O>kaa^I|;HjqIr^v>1n0mQJ(0Dbo zH3!sDFo9B^Ndt@Q0QxUD`%R?0kc58)XUI%gMUwHk@L5Hq5LrZLnC0F__9a8fa^ww| zWW4};!BlK67K0zg+v94;{tw2S=pytCas%7|1;F|Kq%;O!2{ZaXLi%1!Xd)(JKS z%C;Bo$CWU1lL1}#ErEStTdfcDaFuEr@Z8&hDF6jtcqBYI*Q?F|QGX6_!nXs@oCKfN~`H_WF~nJPK_x2mByJ; zdN{L-+0A4zeHlHSPxYpcP#!XmYRdSSOm&K;8cYy3)CAS-)fr3|$Yaf=7LpH%>4cuh z`QQH?tk5^{&Ddt(v~K}wcu>^}d<8n-vdc&wkot#$-|oD!4{H01{WA2d`b*WN9bzW* zzQ&6ud{YG*e-9FWC%86Tbq?V^c@w$YTsN*Ubf}Jd_Idh1X5fH(99aDF*fdxTYqPno z1a^jNfO8J)y%sxKI*Xk%oX1?}-O(P8XAxM%PkTMyB=0KsO~~%9a(=PTwrlN8%08C8 zvwyG$9T6tm!`bPRIx=QZqCT<&q68y?)d()-vO&#mU_b1%Key|umPJQqA6-udv~+1|gn zi%=)M57nz2zP3;uUd@iM$NVnj2t9nE;uFy(HJ2C5>2fV_`FOy+`U%dNwb21!0|rG$aJPOc>15@U#bNU56f4p9H- zjr*}tSQSh_TfqF>|4hvz0}GUG@>KXf+sn&jBlzntKvH~{vIc5i&*lAcPkD%cha`#R z#TPyYtg(zQTPP6@3j-j>l_4Yxn}zPayFRz?D$og*NF5|C+~aBgOS6IzJXzW$>HUxV z$#Mf_tHLV70^I^dFi~j(+j-rjaFU-0rU2bO0SO`%z>`xOCfjn* z^4JmVJN6t-1B+pQauDBxZ-LYJJ#en=B3#6C@)UKEng~z4HR>a3PV+!}Mms}SQGZld zL04Uur){A{fC6dNjMMCeBoME;sg<;qv<7Wet)jlIRy1?96SZHo=e1L`f3$AxaqUU% zHtl$Aw6?isk-D+^1Vb?&>9%mP4W}BB1hE=V#N)Ak=yY@lcoAEotHHsrAE^jCgmy@E zu;1PRLVsdF15WoYa!09-I7Pe%yZ=r?b73!^$cORIxH-@ljOHWxK74gytnifI!LR4{ za(BJ!z0uxPo)MmS&u{l1_Xc+;ODMdXTZua0Gvj#$Sl|szE|A>kHI`}8l=KCx*O@I+7;{ucH+-abGrjIk!Rq@fT4G*m9hQ{?7gH-7Es zAf-M+ZUUXz!!iclj zFcm?)do+F%Z$>;LJVZW`N^A$-gN0~J*zmS+*T&%6@Yck9Vm<6o>%#P7G)&We!9HOM z))zRY2cU~K0q&W5aMJq`=p48SYx5+RYOd z@HEW{u2DS#*9;35jn`16y#;K+@nElc6vR~bRSl3K@bf>1u3kTQmBPrspy&R8+)TD4 z+mf?M9l4koP1GSZagFE)vqpWW-C)^1MfZpO@FLh3TbXZ63DZfv43eg;HT~dY zu4b^Nxn`PXgyxrem-?PMS?z>b!K+LXV_c2=3}3Fj;a2 zPHOw%WHthv=K?JN%>IeQDu84|Qpm_!ZJDkA?Pv6>%syvn9oh*VGw*ut|?8HJ~jun*;1~vz;z$8ykNO|CL&)~`6ad}jr zrYa_2gM8+G5popiKEcj?MxuiY*G` zyGsdn7h)hLc7ULw*w~8Lg^AsuSSVs)D=I1$&jLHKTd@lR6-=-db7$_InfG5FKX|z8 z&fK~8#CN`P?zx>|O)u&%jn#H*?629yIJR(kZhGrKE4JDhY3C(D(`X(Q*}wa>8-9Jbu~NRB}E{7iOy zf&V)0V0E|$582yshC_M#+m;8MVU%dR)=wLCOtm?M<%)TN<&k9t{U1yYj~r?^Ugj+I z-1Y}8oy{jq@y0z}=#k{gRGFoD>N~U@__aOMTlClOXx`djt*_>yEz`Rg{*ku?GLim-2_SXaC_SEsyq)ILspdsiQar+{{XpRbBag7Uw-iYQ6QkoLbb; z^qcd7N}DE8Q@>BYq)pI*IFYM`)}8r3$PV#OGOyNDE2q6@qhgSDK?~9!bHZeP(ECxN z2q!(w<^P*FBj>E)ZW?G>0lvM=*Lu#j*<|<{FZB|zrgR!Hg4lIg%CwI&Ro0ninoC+H zTS{66m?fvwRu0Ni=lo47tttZT2W2{-a{zd<% z=Q8RU9gNAGRAa}CMZpAz(Rstp_ICh^ZQ~j ze`)qG%@y`CNjk$z7L=cavpgUF4T7@L6Zb z)Hv#=kWp`TYE+bOMFx=aOC3r)WRrUg=JD@+&BAw6N4?S9*}v@hbYnXJeo{93T%Le4Esw$Gw^W1)SL z{Xp^qc8(cDTt}R8=kUM=_eQHn<+zliq4Q_woGuU936tU6(|KZ!2&d7GE5WCZWVpRR z!hh|S*pG*2S?jplalT`UgTF(9{dBub%RNrnYGDbmbmG*Z@8$>QwWc+!s;80HD5%OAtz(?M}Hkm`8a#(Hs?@TjVYjk@1|?!*>s(lOr=X_o+RB=l#~C) z@Xjurq;=QymQ(7kn&ZuyS(rrTR0ejHAIeE<6nW-yCped<+RC+*pfq%=w&Szj5=x)RLS2uJMEW90dXc`>G2g8$7=h~RwW8+S8 z?o~r07j~tlQOYpruTVlijb-d37l_K@4|SdY)S9BE=u33AOFp6k?iw|4Gh`*%R(6&p zrH{-73l=HnivZ5sEib;SPt|X#y+~ANz$|RWPc~F@VxgZauaq;&ex-mqMLnvP5aD9K z5W+0CQ#DZ^t^cR4BQhy1KC42#s2))>Rb9QRE>Y9eTIgRi=ZHQOMP<5hlHKGaxksLr zsnQ2I^F|XpYc(_~7CDJALEEMc;MIoOKr$Fjw2E3;Z6R9Khn==oP1XAw0xoh1xvqhn zfYymq$qpJhj03ubcqfZJeZBOX$do(h9Ujv=7{Zvr`G!{G4w0%#H;tpZAAaFCxw0>; zP)nG~Z^kMkm+6@?j+((R=JBE47cKbC73vuQhS~U~7csUlrykh7G`$uloK-N|aY9)Q z?$&{xDxa|GF}gx5HikPFAcAs?zd7xLJlt(E4Y#y=Y;y1VoWKf{O01I<{9P?vmIJdnc9=5oE2Nw;$`u$ z{4-ZWS8H&}Uy9|eaDPbJAd_-FiDK9n6v~ODsz*jV+1TC1=Ywa}Mg+ zO484=x}_TD0)951Hvd8=1?RQCMx&&u9H)bxMSn_hYU5`#Vn68lmC=P$A%B|kaW>mY zev3h0LQPjqeax%POZW)rI>upplJlquwAr|M(q1U8Uan5qxeC+J`GLwX4F zcY{@{4?nViIT`|clmk>5%sH3M@fJHdpHPrZ>I2%jZ`o@%mYhq9-4)o{{`RNsci2C+ z*X&orl~f|O`bjsT#>9)W(aj8yc6q1qP9vSXVKh$Csj!-pJ5?bwojy9Paq8$aow~E? zP9GiLIDU8BM1*#M2(-IH2Z!Or-2M)sS*|KC$%$` z1I4J-ex zT3e!}CdkkzWYtTn4D&xin*wHkqYIr!CQ!k0 z8O}}m@dEo#G2ypqJu%?AE-R^HXk-GB%2$_`H+Rp+c~?mv?&RTR2TbI zoIY1+`hKLLH(lW}wDa04?GLf{AM#Tfnt(H_qMu-#C&BJHknnx-B7Sg|XeQo@haf~Z zEwAQJHp`oyI*qh2Ed?~-p7F#-%cxE&p*5qE)n3hu({~5x!_ds)Msec0$*?BfurDc`qHWcZ zbb}~qk`V{Ona|qSBu`NsZsZ`5Ms;Ga+(sY$tah6M{3or#SI{Jesgo+rTsDLQ-D9dgap! zlFeF<*Z75olwl=S>y?eWtjiH*dOtrap&di$J>rSX4MyT>8725`12^`U+0BcmOu=p> z5N|cpJTxDkwW}6|-p(gBnWYtF-tF~%x(;HD)qcy#?CUszKlQ>}59Dlau8L%})NA7n z-SLn=u|Q?%u9K5UuN&TADAL=Cb#{lDT8ET$W!4?_^V(Fc3l(&#ROC+Sho9{Zw#!9F z%Jp&+o~^vL9xK)o|2h-)@(-i9k4&sb=X>Cb)^b%>y*W>1(i5~~%?JM-hPE^yYV3j? z3`If*@GNn7$;YxDK5`Jb^TseLp=1Vp$Yd=)o$o}nkvh$zRgLH$ks1Zsdm~$VcoRUfg zA(uKtT}vFETOAI*U!X>V?mdajqd@Fd^_SX8{1rLm1Tt$TQJ=eH30FB#X0boOR}P}S zgZ9ouy#J-*N_uzS}wu~7*#A?k0M@%3Zd4hHXYcH^w z2erzax zJ{ih&r}M3%aWPnUD=V}Pee}S_#_BPkr2Rw;jp%ar2b8r2IV^=Hos@^E|2v0Podtc_ zM%9(By$SkW#>k{bV?Q$4hxuH{~ zTn`o}R1XovKJ)6LkVsRbxl?|Tn;3Pq*dvZ}kI|w!F=%CZN_0V{e~M0G5z%UK*7+H6 z>Q6owLvNg~utvqG9&H4UO$PY};m`b$qpIXL3zEU8i&dS$Dt^EQuab+1qWj2N%*kkZ z3nn`hT(m^K!Md-NO+mVg(U>Mwh$XQL{-^jSno=|MkX+ti#Y4@ab7HLGs=BB`F{_o- z5#;tFL1FpO(4lGtb&q0E2l32FY63BIS8)}Ka7px%-Kmu?$eo8$&0-JkE=z~=HzJVO zAr4ECC9Ko{y%we9OyMBfBF8`I{9l}yJc;WM2H(}CI%24LQq5AQ)5GpAtiWAihz-=w z&8LDb0Jf*9){mHEfR-j}@uVK;$#^Xl-t4bd5vI3;z6-Q-7L>Cb&!?k>7quJsy8|$? z`L(}r=4)Vi*Rh-Eg}8yPgdr)%u+7b>j{7HS;++m-TUXN0F@nFWkT=o3=W?W0NfWX= z5r;3<{g6B&duiL`aPmxBk)AJjlPch{LS&zIYvr|7y!Krd)h5djRw;%o>v8Z$1m3i> zmdK~p%9`>fT`i`w{#V5@p71Sm(_Hw9nWC6{iey+>@2$dm?ry66Jh;Lh5iBCa2l0}s!@1&@+KIKegcL^duAAaJ zvXCT-aMsozQBQu$<{syZ?!41c41w`ni;eE376Mssp}r~!#BL@Fa*X`MYWBIzMJA@I z#i-;8L}Gg*mj}dCF^v5ww-`rTQJCxP5-nii>WeGL$Oe_|;V_~tsqp%(`iN@6Ui_u{ z-h=*dWzdF6FmP}28DB&g(cDGwLo_UWG3NRaIhZ0apnsU9P`pfAu^ij?4t6JyCv6KK zbVQV7y(+S{QP`&pIiDKymvExzWnuh$H7wqCyg>jf8N|=~vJg^#imza-ek0JJAD^+x zNLG6^GOz{x2*z(nx|A5Q3$k+*E1w^4kcl_-#HX&(mw~&c>k?M*EePSCei}ybGKi|1 zc8;Anw*J*^h(vQBBmVHQ59MZg8Bcu&Eer?u#K|Gp*_O!99HNt#qCG#`VtZ_Q(46%t zD?FKx_2LC98v!!=0tyR3ro!+K+hq%K^DU$hm55~P%7@5Jey(*H7Ogo_@D(1b55Iqb z+4AN8*VGco)>~qrp4>AK8!%pGVbL@-mOcK5*;Bny-N}3VFsH5QqgI%!3_*wU&=W3$ zXetI7DF&}vL)xPmAGwwzIB_0QGKF3l&5+Ss^kCbGOjHta$X92c@G30ocOL?Yi8#NviKSayswtQI_AOS562(fWggtfXg1|8ACTHO-(QzsBR__KoJ z_^mj6Lvk%$y}l!wUKk`3?dTUuM=*#7Yp52`O$SYcqG5%dOVvO}FV)*z z!KUpSMOCcm1AIpSmb0O1hvgiKjXt67<1St3XEG7w;0+>;(Du{gGgEYxXOQwWOY*FJ-_P1%griV2M2RXCT^f*s{9p zNlxQhwZI6MwIv|F*`m^FWw2R2cB_!P& zZf6g;RmH}I$mKk}js?3X`}2wE;IyqsY#yZd4IDxvQh!@gU%l`5;t5=L%-UB|B1QuN&2JmW0`3k@5CjF3_Ys|`h zbndyVf__jwJ4GF7QDx8aKv_^xfNtuui`yh@aZmi)jD8eFK|^6(7ii8<~(zH zM>c{zeu9SQ0!uAp4tImchjHBv;Lij&ID2eRJJ3f1utzt%!zI}cZJtGpB*_@MVaxhr zP4a3Z(e1-X)pu6rIqP^CueBLOn+MwxjYM}s>LT%7No0ISFkg*Wy+uglKlE%T)@+(| zLKb_1>dWz$C$a!2!4ZUem-k2+N(7e-Hl0O0p~!<=KTQ4^UH0K~47C|ODVAXW z{v%`83(K|y@70K_FG0`W5wCnyuhXgOqIfUnu{Qo-zs>CGdBQ!@L5Wq>ir~ZUWRbh5 z(?N%o)oqGU{wgPwoa7YCfUxe6nP^JaL>FpMS5kxOrS9PWm$5+~)i`w)sHi>B)Ijb& zkj_P2uw4qCBaSS_S+3m(OgfhQ*AX-*5Sjjmo$4b67SNw~V1QVPyl>&N^FRkp#5wf` zIx`)=Iup;Eo4pfDg#~{1Gxl>f9bV(PhbtZ-ABZl94CE7hTdIsj>e{0-=m0Ux6qpNd zd~7A{J<@fJSh^S%Ba{eq1A9Bt_~}cnXC#@lt;AC?NaF!*r+%H>MqQ$)WW5=D^+Ua6 zc9+Fdx-WL)6_IIvqnfc(Pa;n8C9--(j?dOzJP)x}0!&1v<_bGIn0S5{SD!`f?Tx2j zhFyOkVz6xoYvoC5CmbN=~c{)twCi=8KN7~l28V7kt zJ}iF`#<7x_-%4aVg3b@E@CBZD_Q z=`X8;122GGO>!O2H3B^10!~;+-n=0gr7!VL8q#gsXR{a$B*NlO9q}8P`zGDEhTv|M5 z{2^)$d~kC-NkOp%eI9|&Euy9=dFfaE3Rb!ztn?rdR)*>PR6$9iK!L9%UgoxUzhST|3HJ1c3t|LSZ;#=SO2JdD#J+bV zyYn3%qcTH#nXzPXi@ChO{5$blVR?cIv4vR1n&9|UwHHWxg(#XG5f|dQ8e;R>i*N8T zBU!ml#0LjKlJi-YMXYHIQuPnpmRqf({I(ueE>j_qr2L?!!l1*m8xe%B+JQA#$vjE5 zmN*K(lcAcxrka`yJ?%#{G8}2>%TO zvNu8~Q&_`Psjo~`?o+MNK)G%`W1XS&Q+86bzl@zI z{z?@4gbtHIW>+#hQfI+Otx=>BN0rA(Dm&}`+U5{Jed2O~z(*SrVu)<$Y=Kd1|YH~kM|)&1yJHT*{?qjp2; zCMnyM2>#WQTu1||?q4YxN_|)~2Wne(u?J?ms0Ahpve`B9No|M)tO9Z@imiBz#rcg^ zRi$DypE`+k%7u+6Ooru}@`SarDt*-=;LEE@B6|8z4H3`Kz{1i28<>a=RK-Uu2D>Xr z$yuJICNk3yskg9pn$nS3tVF&hznDlT@CRyRJj*X+>pGUV9om$sb`&MBO(Vg{2e6KR z7+FQ}oS1hFmboI=IgW&^%8opv>AiCk%k)V7OdNS1|MgxS3tK>mFW&x!vWdMhiHzhR zHZKXwatV39h_{=Md@sNTZpOxpV>POaq1cpE{yLPAdxBK5u*p^Nrkml0wjt%q(1ULH z{wrW82@+U>SIv#BO=rFoR&zf1LMl($Y4uZagd3@=hGPvAsXge&s!HT^iqcalt9Y^R zxIMdeGL%8|6spSn`obVpQpYN#u|037lzy*P6D7qi;%fn8^ik~suKSLcE-Ld;skDfg zsXo2dm*89*lN zZh{&Q5uu#K6Rm|KUV>-Y1PfS~xFnvM!Gidp_2ArN)HG}%hwh=LY4yoX6wpWW^Dtax zFSw-^u!R3HzIJ%sANa5Q@&I#K5a#g;ckzYQ3L!6C3@h_fn~9Za4KK5i4#v&NQxydv zU*W!6@P;wOVke0r>uz_`|!d1Q_KMB-)c;a;n;xi(NkCKt`*{p6dQC|kg zp*9Tc9T384Fm)wao_X*kKAuGUFzL-_nU zFsg@%b|+}FLEbZnYEor=V%fUH>IbpLDy)RRc2B-zPNJB(XD}tjS)Vc>?XK+1eIZN2 z)iu=)f$p1YyX8LEn#Zio5ztv(-q)2VXeB=1hKyT)InT1H;UbU~i~{k;vvwoEG|xqM z(2Yb+b@1v^;urzqDS*^IM)KY+~VjXsJEXb$Q~xeE5T5ps0u7DQ~@q z?x?4d5p>XV>o;M{MsNm09!7rxw#|Xv0xjiMG;ldohcescj2FO>nz+CJj&R5>-ts2gRxWCQ9&$?DMXbv_k%sj4#lI8uXV zOO&NqtNpOk6^YX35G4+Thpa`^HHql%xHcEwzZo+eh(>=BkFb4piHYVi-`!z6#^4vv zVBbcoMZtQ*(2Yl6kOk<U+hT-@?$WElM+`4ySm!fOhh# zML`|T#LVeb563fu3)Ou1*`RD3TSk0QJ-AK*2}2IPoW?WNV-|B`nRa7squH(24X@A* zZ+{IgE-zRs1#3A1S(*vcn@HT;AMT^3HVG86m*?}xMw|rKP6dznY8%NI1%s-rB7yg2 zAPMi`9or$9Rng)x@-H#vJ}lBJa-dsaPc~_8WXOWapS?%lT=Y%k%~mo`QP`9g$Yl)C z%@i1iCa`xy$VfKkei2+}CU@;h#9<<@=82w`Cs)vqTA0qTd2_Vg;8XreC_9?htuIjv8HGv3a-`jQdru799PU>*6%$?3ptYif8??xqY z8rpM|=S?Eg=|mktej@FG#KsTFFRnrdFCh1w;c1_WDQI9SIIk&OL^@g#h{dRiew8K0 z@J3P^i%#sKxxr56G^8#}7^)x4T}f&eI%4ULu_iC@)5VE0ZD?sMx_$;5m`vnf6ie&H zp1ZqX=6X~+bR>p5gf<-IuM^?Z_A|F0SgO)U*cE);4m6`EcAz0qizkxblwDCTK%RBc zmKq@F+W4Aq?o@$&x|wPtxV|lD(=+V6BtIOBCJw}g9V14mj%^tL1CS=;*x_G7bHYa@ zz^wQ%ir%o1d5D|O5=)$;9&a(S*Ai_C0!{V>Q_lxA`cnIs1Fd^T+#7;)>S_a|ZWGKv z1b?pp$JqxxNFcK6j&8gm&bo?ae#Sf8kkXFXx^D+obq9;ALmT7CKR-h!ei5&Ds$Z2r zwF&>v$2onElr*}GY-jgu8TF-dO7Q~UoCEWHu=X6#BCc=;z-pZ%=Z0J>^5fYmD_PV+=FVGe`1`e^EeAMw<4 zzWBqNBW~To zS3OaV)vN?>+Y*F+49$)tf72JooEnP1l@l$aDEJRwYizmHp&osd{!skQI%Lmw-CNIlQ`@a@%c?M zIq9IY{NVih%vu)rv{P#%C2itIHYvC$gNEh}xbo(qJO+5=4!e z#A%J08CzT%0(+icBxTR^co6b6q^=>JvNHU}8qoD0P}fXy8IP3ip!y8ujZzTwwwiTa z$=bbw)j0{jGM}i{%!;37PC`JuHbBf9vH7(!TcD-Ed=p9M;^oh?=Z z+;@{_x=Eg7GBK!7Yhd|XAmJ{;jE(Qd)n@P{SBWKNG5#iu;5qZ#R8^E{Q1(#PEDye_ z7D!{)wI)(%kAXgIW$c*Nas=(*)b5YS~LbtQ4JJ!|&^t(?Zwzvj6r!ruQwGb8y| zFxAr;u=j!FO_qT{qOi{mv$F@j#Ny%L$Qs%StbVXG*dgN!(l{oc5}m&yLYDWwEJUV0h+&l^VdC z9-%J8gRFWg`zX$X0d4$yD^OS*7HvNsPhUFXyJJSyol2hI#Z(g6%)Mn$k-9QpMv3NNc zX<=}dE78teF^H8u3`6!0FE)?p;4oHtFfq*|cd+dqb0h*z`gKlXsp8iBr|VUn+DLqKhBU;%dV?&DbT_3|4y|2B9x5p;i(=zqF) zO$yOUPNr*$t$zNF)(Ad70{_^YZ2Jzf?U%^qv%ekxSd{9pUDQC;pl-%ikJb$TIG*Z} z!(?5%QfK7@(|-WJ7y*i{jn})2_isY3^A&S8MK)yZhh^h74={EU*0(AB7jDByr<09t z&iwZy7qo;G$ixp`f&uOULdyaLyTN*010_Wv7c*czYGD0a@KqWg>cQDzS)vguvw*1e zCfrtTJl7(S;!hA$IaVqk{%Io?^BFmm4#=J@kGqJKcG8xCrrUzTcJKk?`X#`qLBks z|7F3kuR;Ujh|^Ah@(Uuhqu^I{tq$uxUtiA}J)^2jK{wn$4$q~9_cmc>N}`{wWOp>U zB_8q;*jnS$>zTo=@;}*z8NY)>bYYfPFt118M>Ejl2YBjI%#=G=tStV_7Q+XCQPvY{ z%)rK{5kqZYHojs>j-UteaENuec9eVzGU-Z|<12Ff9y}Nc{w;u4sRABu&ZoWjy*$xV zBoTNR7U(|yem_>_EzD*otV&V&lq#Y~Z1{4#$pGw92@qj-*%d^8iYkm&Sic%#3Dp(z zU@A+|)44wUQ87Hgc$l~PSVT8+Wz%6$@?bA>z%_2;|Ka%0E@~3*^y8eXOUeiGcTMmZ z&#~9|Y)(Skk53FHlwH99G9Ah+;{z?xe4;Fh5 z7Gf%1=r*`w8~r0TsI&R)H-4ZL2*phV!7+ZoZ{Al+!J9dVd3e!_*!TuueQ*9=jJ4{7 zzv>4=62|yq#4J2SPxNsz8MaPD((hQC!DP$sl8cE4^GxLLpZK0Yj&dQ_n9G`Zu%7wI zr`<+Mo`4-c3p26t1^9*hWVgD(oF5{KNVOHwo10cs`tgYsAdQ}QAYaDi11eb#6V?ph zKORe&!unJYirN+H8_2wkXMa`^5KC8Z@;7Y8AK4#k=c-*te+y_gu@A0b+&B<~&g%If zts})!VwxIwuXK?M?)WILbmp%M@u}hbybI=;1y@yU+j4 zy#wJK#h#oL6R@9ku_BAfcXY#_e#Ad7V9dTqu|K%E2I$+CHOzyBtp?v8OK$iNc4avn zTNR|B16Vte&#ouVD@+Aw19^_vuo*U{H>{s4IC85x3(0q8JwAeq79k0Ws)}*w$9F7Z zIBfGG(9JYh(1mDWF1*HVqSX5MkR@a*^7H={tWPqYVis$;14Q>)^&pmZz-}aflT)cS z$s}6Oul*((NygfR%2L`cMm`pQ<_NDbgGfbUJM3XOT(n=HrnB%#Hgp#SgJJ>W3(=T( z;*u-|PvNXZakba*6P>wZGthitSlbIAo$YkY4ptspBdzbPV_;QVu@lZ2WK$QGR|5gH z0qI!Ls8H&;`@o1bXIE>6wYlP?%%r=3YQ1iqVx4TgV*O=31&g`?eIHF%plUFyzOZ}G zl}^MDqrrwZmEB5Ps*~PWCn+6?NQ z0h@yS>SAAPr{_(e8a)i0SP^e@5FgQCQDSkQt0(<@$r&&Jau3`0S&ww{!VD z6vQ?MbU6}!djj760#;xVv7ftaNglyn+(RzHhy*@io9-|oPpoKTa^IEYX5QZm{Y}Kb zdGNlzgMrNUfwX1a#uOwK5tO5M(hxII9o2`40(l~2rtEaU-r&6Aw zKSm0lDyn=(qEmR~_rIprp;j+zEvu{5ozHvFK0n?1+?CZh~A4 z$A@)chH4?pweW2gs!rY!E!-!<=*KGC-gStsL3^0tVD%}ne{SNRdFmo;-9$dWg?(_( z(T+J}I+h|?yZP$FEam0v3$s~M$*&AkR-+R>^aYDx-T(2_g7|kW9_13RbYO-*@%2w%IwZ(cGDCG*rZ8Bto@j+4d}B!x$ps0Hd@uvSfiKf0X3HF zYdV~e6TI+kEY32ruf?>SFcXe=f?Qd-Yk8+&~ zi-s_%%c$nFu`mxnK$EEszt1ZlV9Taa)zAQq*d~MEmAYlyFI$%NTeh{eWq#if8>}Td znV5}()__vZuiN1n{XvZ*RkjauD&l}j_-c+#Vfnl^#^%Kc;`m>@TXwPprQ$KLeI{1u{;HH{z zq65eV#dF8DWD^#GkT=0Sh2SqI7)>IMT@OahuN{F!TShDq1i}j-UipcqJOH8? z4im5eO*WK`YEpI`%MSRs-r$#0#0Uap^jG-Ee8f(*vwi79DbayDRGhQ`Ybj(a)@0+X z6EHLjhzs+8%)`0Q2#~#P42_9!&Ldsrh^ZZr-WJ@u0a5gO`f1q{Lv+#F5#NkOtLhO? z%p_xT37%3?8@nIxbQBzNkVtDNBPvBy|BtFAN9_iY@N784V#El&Ks)ZBs(;M&UYJG; z&p#U$Ab{AbJKSYDlC=)GI;9?h|7wpWf^gssbHU5m@=QgfM*Q4}ky+#hq~SUoO$oTY z`m9JfJV;+++&HjP8rZoe{8>-(0ghrU+)fMR?kC!DovZs}0skuX;kF)u{`R|iRRMD%*^GEC#kcEVfOA2wfM8D?LnvKxudGqCO_Z-gXuy<;v(vZ zRjjs9I5keK3OgSNKU9Z!X$Dbw9(4RXxT+lEXbS?rfqc1u*H^=YJw*P0!0EK4Mkov) z-HocdVc3c3SeUo)S%1;tcf|C*oK`v)OWQ_Sj;EQ6Z@H+#!jr7@B^mHcR1u${Wp7m{DGHCAywsBZ;6{DBxM zpGi;cDl2*z?O%(}%S*iMhL)W{61pNI2Z(jEu*?mSi45?03*_Ji_NolhpyJV1u|kjF zMIMu1^kW|W(@MeWjMaOvJ}&wO{Xc4#J=xPZh@H2=bpM#cZ!M|Uyl50QZKQXAuc?zU z#yD(Trg~%|3{V*=uQpN#>4l9cg?%}}{*VxMS^q~xWDvVqZo^T$Lq0BJ`)&Ji9>bp` zlan2ax7~*AIfxalN3Ng%_F_Jo=LQ}?AuppS0c38K4L=`c_Hu1#9OJP9! z5D^EGcVCW$&5gHqqCVjm+E^2<4W{xtGP`PJE1J^`tlJztzCkS48sAh3JX-}uT%#99 zEb)92IOmX3KrH}ModR+R18EIH%WmO0pQ7PuRQ6rN`kW&!^CjB4hEJf&CS1^ZVyx-d zt$k!ZFXJ0-VWVSsZ6g-rGDzVvcDf`Lb5}tOiHz5saYSGhGpWvdi03(nZ{J6ZmV|dM zgGV~S*9NS+Et5PI2Fe?>v;~_|j3}!adodak$G@6$he^!l3V5G)02Wg^YIn2 z_>8Tfi3F;*Y#etyv9cF_=#8p^ke3rtDVg%bf!11D}Fa%+y(l*EHPU{#V> zw;b{UpS{KU4J4wn?Z=1&DSSh_-(u@^)_EbT;LqnrA=iuKQ!>??$vh5~Iyhh}o-+^m zGh3(272t;vWXt^Vo(Ey#hGOZ?kS(+2wkP9ln~?i!jBm|H{Ov`Cx&dr~MIJ{VZl1*xxx z11mulsSm5apZD|uxzzNEo zy&yhR&Nbw<^3?IwCia+wWy=Znav(pH2#OrbZ!d|=8!?6eSgY~O`h8aREHl5G6WMNAYM{EbA~8rCy4b3Xe=HiYzIfNgjM~5RsRgHagO|x z;J0cZqQ_X(eK0H6LB6lSAN4^0iAd;DR&f!Y!2_HBhk3inb(ez4B^IL&n9|n0CxX1^ zL^!ii;FvaW$Dhbe?g7g+1p(!xO6L=LeutHu2qNjnwR#IzVasC`;`#P~6R%>S+F*ZF z?wgJ$IS0;h1wm|98etcGKs@cqT)ttw%~W#T!)IKeAJHY^$Fg9F-EbN)+tfeWpVM6S7O~GSw7CPi`wLdqjE;?B&U?c5-bF6G_$>!^ zXdL?YR8)caFG4OM0L*HVjabV+WTt$Xdw25UA#mGUz{ZjA<-`c%KKD`qBVHe^$SNM|F*p*`9E5A=> zY_5#Q9b49gC%tT|(Lq03X6yGh*z}FWuqo76{eb5zq^)8UHg3?KQI3QMbSCPo1V1>G z*rA)G3V;z^p+dYnw!RluBNB`~6$$c}U*!&V89c<3KBxMj8M_3|g4)h$Pr*9rpq*&G z-Sl6edP$~W3Dpp`N`&kDeGu8TsYJ;WwcBl*$kIxtHn|-SN$=DnOU8j#tKr)v`S{dR1ct*qAl5;WvogjtiTy8Y$@)w zp8GFE|6PfV8siZ&EZD!>pH7kYX#_X)qZ;(l0EPof|GcPld zTjn5>;=(A)v-Uf{XAR^Hu4_lMznD1o3V!B0_~HWb=1$fi4F58NIk43|hx5cMvH895 zaNeNPYG{HT(%6C7d5A@_6VWi${XrcYnYV{rZ6sFk4Bjv=?^W=dfAH~p)C)woUR>L@ zn{_$3dJ8o4h>S-wkV{Q!?Xp?D>@hq+ zVYJ1z8_mX?Y+^J+`5p|W+RuHwkb#S2>5dWU?nWa&%UiHOcaVWrXy0T;Sdsf>vI>v0 zeZg(!z9Gn>Ajt6y-f9QF>LMuPB~`i?*^5;P{xc^W^ARlWFgWJ%aAHf8A>i-6_|mm7 zIRmk|ZSa4WK#%P~Ft$pp(nPScRXZ%H3s)b2rVIqlx`F@P@a0cHu&1zlZsLJj5}%i! z8gPwOts|WAvISYC`e;)%*2#<5qBkq|AM$gHS$;v}`w|UG5ROuTcWsNG_r}Zahh-^D zWUzv@4kt6c6N^_?JOg9zfuTxNhoZ^XiRl}NMC770Ris6+2s(579SyVx`}`m$U4~cN z5_8?mwoI4NwPh?H9^)<<( z22cagnC~9s=$HF$Shsw~TEb+jQwslnMh*xK+~V=}Lsv3s3PB#t!{Zb7L=dqq~8`Ax*JsL7<2Lw!n5U5Uy89{b6Z5~&7J2kx+lzjPNM1&JWmszWFt5^nw(;~^r6l#6WMtInr;sh zZ0o}I2`{?~sS5;2@8-8qW;;K!T8R}o%e@b=n#Z|QcjD7DwAGde9Ickd6HWq+E<}?% z!pFA(JwAnvdP+7h7n)cAe((!A+LWwnKUeB47T$a$Z4-y zg?9#sWH4+NQAtg*Vx{RO$5_E$2cPy;eYo4t!de|MLSs64m2dlD$h)*Ma?Er$> zNw#7um~THh4%>f!72B@1!^&B5U-r}>{iR}UF}9>1pLvQcDFeq`glpM$o9TFh_Q>gO ztinuYdppczEEcN_sPGIp>pUFqe&VGzJbMu$r7~FIk-|zJJ~!-7E_SsTYLvKxjafr& z)E{+#jHiafPmTkFPb1F12S%(5LUjb?*_eyI@M^t5fscsJmxIwgum+X!G5Lwj;B8?J zSCRqxtpvh9FC-J&m#Y+EC9e|)RX}b6;l+hI6R8No-W|t|1T!yRgb$iB80NqouCFrh zN#JQm6C>sphncHu*y+PW8g*dztI07uZ@L_YZaC?qHH9kW{@MjRb~5t60c&&_*&2w| zagujLQ~dmLe3$|+`%hFx?|!3o?UAB#U@3cTDBdF)+fbPOkKN!vlHjd8wT9%Jqo{SX zb$a~)Dh zi6&-LMOm~#mxCDPct(AQ8rtKa$xB#?v2-RmOV5-4^gaB0J$rKR>pAI1*n&Pb-{@)O zMK{{)gblxBTe*@cg93-(9DV5aY z8)R#SActe&qut?DEo7i}!z=zn-dj=`wT!-5Dm_ag=uUEnDx5g_=rm$aL^G!~E%M;=w0|(y@25VNb`cxB5joG5ym&(O1mfsLXs^XAa97 zPxNV2tL@YNf@2S{+tya!Gfh87XT1#iTbU>V zZ*)6785U8+=C1!FR!6x`Gv+BaF9wK&NBybL-q*z4-AGyy<1>;|z)07f>59_;9lFVkJeDgo@~odQ#@Ph;A^JNI9ORhxxgl|nj`^%TCM z=+qQTHsl79at|$>_ixqNvW_wGqA}u@Fgdhb({4)!rxYa*LGm} z-O)ccaOppK)XhNS61BX{$T4($24jiG4&P!QLj(G|d2r578+J=~*RPYc$K}QI`gD2QkIc9;j&bB%rXzoM;SJ)E#5zbwP5647bgf0Is-mb{33jqG%tR-sa=KuSUsBz; zgRxdcItG&2e2Qm{zzaqY@yr#PTumQAXL1B?Mmln4$4X{tU9j~_=|0#1zvD?CwZQC7 zdDmFKt7NRs@zkw(%5nID;Yh75ca+5)YqQ4d@fzWD-{PDQeJC;;Meno}R&p9T@P|(y zK}$oiQW;o?ZAj4&{{337M-M7bV=MNn487G_GM`ncXnnwI#rBiO1`kV;*? zTa&E`A=c^1@1wbD9C*PGT>FhVeg*1%4t_UeTUIo`_L&%_F%e90q*72}(SSgsBji9{qL@9^x-47YhAI5T%kwn1gttASq1y-v;{P6@fxDlCv#&ioA z3YIHMj|nRbe=B-W6yzGW$Uju#|Cx+oEORlCD@5~dANawl#B>hWG;8#bl&`cMf!(KTgV|- zVn#2s8b_E%cjWjnj9oMAZAr95Ad$z&+|FiBA2RDbSetM%DplnN*tUZ5Ib6{^V#rLQ za~orp15RuK{N+5Vb8WH1Bk+F?=6gI(T@Qp_0RCqLa}dsFZXm}y;DGAEzBNNi8x<(t-~5tr2c&}qdv|K3%dTx0%%(mzD9y!=~BftezKdc11mOzcx#>LfmHbMzCJy|VE(ZnucPFHD{JqGV-904o@(Q;U9~`2@2SsEfCv77hqUbwIEZh0LQm}9_ymGh z_5?KL%L^;Ggw-_UXssW;Y=2@q4}x2-;ODl}aWf5MT7w>Y?dc8Pi$3%#Ieo1=CrdP^ zpZz;}X~u9`#7yv5pkXm4V6O$pe*_l0sNqMS?fX;_j4*nDHXdosvCmW4fALbQty@7E zZ9p74nuqd z9V-Sadk7|O5)43Vc^l4AV$agx0zbe6eaHI2PfNy zojQ`5(8Xj{&QsSilju1Q*@jFwhEe3ny2A|S=5z7L(mq)3aac-~Jw0{ER<*@C^uikG zq5@X=F~sX;aKbY5%5JF3cb>I|*wXe`J+yhCj&Ga3-3 z&S$QsGTX1H?z|x{lut5-a!S8ZF6p9O6!6vC>I+Gl52H>=&t| zmC<&}YiL#vWIvYr=bp@HPwxB)i+vt_T!I$(p}}pqQaPBjs{DNk);0;rnFNyF3+63@ zywyiG?}G|5!EtAi#BlIl2juaju4}ichbWD&&kMdz!zLXEVIHDSMmQ+Q){$%$5;_3c z9EaUYWjK=j4WHBwrt5%s!f7){kk2JZ@_wpQ zlKK26r1%-NFS$W|p5UYjuy4EBOC5_%RHYqve8TRRL}q0+QWwVjUFP38K@QEpcD?Wd zvtbW@!D-LO8-8bnj$?hi@VkSNi~@L)aJY*Zx4`0y}Of(n0c_Jmu=qaSBG1m-d z&1%5V*}B?X!T;Rk=S5_p4C9=QMNhyw&y&Bn=4&*{PVR+Qj6yRDA^DZ?n&pvaXLz6- z+1ged_B0SZ_T^J&xPy~cfw}I??wF%kx1K~2g@_{N&s(|+&v9{enoQH^M zR$<#(BX^tWu^dJfQVNoD75_Pj$oD(=wIp%)eNg69#?wWwOQc^K-xx@Q^900g>%EqV zgqHxBmm2PlmH9 z$iMD@JY3-s_P|E_bMGTFd12@jt6Rh537K^^1!atq6)!> zmFWj&*u`3RC8KTY2fc!fZ(UZc5ZG-zweG&GMMK`{hBeFp!8FAl2XVb%u4Wf{oRcu@=1g8JlFe0m&G*9*%y4T*fszq>KIR4`>KvUOf|LGxWe z>$bjrjp5|aV`m(wGxI@4p6GMvW#!M>+B#M}repYD{V8$pJQ%eoPHx(1?1BlK%E>X+ zS;=53tpYfYD1|dA2GgB746f_|op4K=yg3!7Dd$2r`CIFaPNw}vBf82jH;TcTo#MVv=>G0(tmD)@orre?Y~UWO#6-FPPr@z? zhIMEP(%Yx!HXJ>3#@MiIyR5ww5-i^U8`vP zgyWoUjD^Wnxzkl5?8dM|>$7V(C-GdpuwBjIpbS>ND;#!hSd7zr<)jmK0{zOL!V20> z63K1k$?n~@kC=WI&$NUZ!qLRnVc4@ZuzBZT{Ca>KN5d#rVupV3nXlO8-f%~L*v5ZY z@H+ZsxUjdd@1?lsQ1I(hqKQFpNE(rTDs%i7%bUO_?a-%|oOtpHH2fWYWHs|~oSg&P z^=LTRN7(j?`WqzQq`xK>E>C1p1THTeU+;&nxXJH6#QR;4i~?ZmWB8~Bc)4?+mBQfr z31It;_(rq*3nB|giU*QyzX-x?M7C=JbteCjqu9e=(y0gukQd3E#D z%o#lGIg?=*XF2@kM6k`~0CTAMt2xy?)4ag^*u2vGn3Eu{AzLw~gzVEVf=wM5RWUy8 zWje}<&?`*-rq4z*PM|tw%FD@CzfGIXJ2_J*+A`bHiZgPqnTMFqm@_ydM=_f@&!m>+ z6=y~)H;-hrhs^0_ljVXr&0L4`R-c(mTl!ggS@Q8c+)~nf%H(J{XxWney~(oM(v>qO z{+dg8$CFgq^EfbCs^&`-j5hTP3GbQC(Q0KFXahdm>XHXaPC%4i@oKu zIf-+vYqyJft+OBJcARbttL;-9O!Iz;9VB;MNaLR z#Q9ud=5@S(Bd1>PuArD3|&^+6`$y}8y^yOV0&HGIn=W^C$ZdY>d z<Dp<{+Hf;GKQzVZ8;xBr?Bt?5(c{kl9O4A9EO8;{UY`qX3@z4*rB38t=lqUS z{_hlO7wYL8l%7sAniSga+fBSS)u~QTv2Sf%tA=|gcWPKsQWJ|EkGaH%-k z7Z*wqN*(G#R$FOlJ$7-LYtIfNwi2|G#sD7f~L6GF;4d8R2zPN_dDjLKy4 zIoGKnr=7o)J+6u~M!s{x$X4f-y`hCu;+n^ma`M$5<}mED!<^pTIiSHcW!D+aa96p zffdNac6#@I=-*J^xK~3H+3fv^sG2o)7j_Sj6{;RO&(DrJXJU+VPF@b>*ZUlypJN}h z>m!|4HP=ZO%bZ-e6+WkDN1lcC+hg~=v(Ebb0etoQ^gX$A4fh&_I6dqV_a~f~0t?cF z>cvvWlIvXur$~(tbyUY42TyuCIrB`k0d$!QDLckmh0bZ!AF*4Z?Qo%SFwU_d&a7Ln z-R(ks?8#XtR>FTXNcEr2zZv8V*e61d*^eu6uf)#?b&UHToXHcHKmKZ5J0q7rt}W@S zCSLHXkv|ja;l!IOH0FBf9=ROjT%1|Xap{sMf1N|)ofaP>Sr4r`*yQB6aOkJR(Z3is z%xQV8<3Ds>%t%_kEdGk~=W4{Ki9Z!zK7I(DSmUg&KgmjIr+B>;S1E3`YmKsg;a;dd zgnK8{)fp_AoDkoEW}b-qFg}|TniC+zn{kIpP+ez+eDAZxp;mKRc`|g;`7OJ&x)2Gz zsrNr>`vbqHc&&{SeFtD;EzR}SP*tY~_m2A^l#Ygs3@xEu4b5DJP_9rWHuj``mnGM4 zlJb_J1^D1p=ON_}edXkWoDlY>SS8xFCzcuNo-?W`+_7xvrnpH4r+zjMjb+iV$128J ziHFxT<2Uh%7mW57p~kU-@&jE(!|(Gfrt>PQie*=jcX=!lA7vri%M*U?9FbHa-1X#q z_OOhrWM;qMm%J>)(3Jh`@06}7ava;DZ^xRmD^q1_3piD<5|%IkCj4L~dTH0j#6EX( z4(YPcJ4Rq0&FdGcMaSx}QZ;bWpPg5i61rD+*5MJhD;qg{9 zuXS=?lTIU<5Ur8(;!ZltJ3ekFe9Rwu;FQ1F)^H4$g+9dF=<0lqx3R#} zaOJAGZ{RAq=|c+Wu{-WBR;X;;VAkqVT-Nw?Eb+j&5pf-$S$~#ws`Kc+Wud<{r^V>` zk79wFAj$1mIrgJ|s2J%;;q1xo){(4+Lfs(F9p~@0$11zH_gG%gP-la@0h=oORE}6e zw1jgJTifL~mv^`Lne6kg#jf#mH(|IhVYg#(!tCaK8L2%;vMW1Rr8BSmI!UVO+V94G zAZsVIUp3E%5~=Cz9RCsV~vt6R8@JNDvBSH~;+ zi}}BYJ@*uuStMWgC9h$y4Bs*_fg8N?9eklDcvj`asFLv)TJoIw^AT?F4O-H*Jc*~4 zR3oj=!qza3It&B-6T{sk#(IyuJwdKNbVk*1NZOaI58?C8CE;6*RXdo!&RHqfVrfH9 z)3kCB&q0Z}E?b9JzH&J8aIrhjLWTUCCIv=!j=mpmD z4IV@8*hN{*ueIcFt*C^5A0f5%jNPPYYq789P@*f2d;~TGoO`?8E|J|HtzVsab{ECc za*2N(Q5pArq%AFa%BRXkPeq;(?PzXX*YSqd80p8d(b;HhCG+ti)GMu*17!A+L9nen zn`%zO`i2Mar(D_RGHto}1~t?~Y<8+;n$VfpgIE*R{XeGsR+ zr^=;so?5EVKe6`os5=a*A9|aeX^uIZj};B|@c&pg>sR>I77{;$W87yu$HJ1vWb13K z9Rwd^(R8t$&|`*};2hZaRP1-Ln$1_?^alVR=ma?1~qgCb82O7gA zRw0L-pHvJ!d}VC9s;p?Am@j@=Ml`p56KfjH%ChkBaCsE8eOA`-CHalRvapL)W9$`Y z+%KZ@pL*_X;_>ax!vwLYXXUxO8|k}|n!bNf)-IdO$W2khv*fUYoJfM2y&58o%j9N{ zdwi*)v6%eSpZ43%BIEqLsA5nJS(Ue6M8s{fnB_7)%{Y;*sbWCoM66Qq;oFhvjFF3C zCs!jYMWfy}hrRiC!C8jaefGY%=-;ATEuArzHM*Y6ZEW`4yDWk85M(+xL&M*8`zBN6W zEY4f}-MH;H$~*a>&7FRIQ`94YU92Xfn^M%Qg?XJw50=x)ANjEd<$$~Mwkvses6IXB z<^K_R-TgX>XM6xJ&hR7;t2FsjbmtYCw3q#y2K{H4w+s5;L;JST@?S~+C>mAFOxD%* zCjO=sKOCkHT|6&i2g7E@=XJaHjMJXAvN4PKtmjohTopIC;%uaw?s5WBOd@ALk-s){ zGKYNi8PeIo9W$z(O071a6TB-Pi$zn#`tT5cgybJOb*UaZ{un0ThXOa*szT0^{oHwI zlVd%2_^bV$gb}TPG5caIoIU&o+gv2{I=px&&r_1mc8|8~_xKYEe@`=8(u_HFLVOgh zNxO%Vl24#+OEdLebf<{oQ6tpZSbi%GFo%?WYerj;@0nstb3MMIDc_5{^oFG?#U{T| zD>B|s2k-Y(kx)xc=QHx%pS%)@pJo4VLYympD#a$cLSuH~pc$HB9B-4Hz0R?I!|77x*q&T)zbGWAm3SKNXDncD zWB4Qvl8xob8vEI|mbiaD*!Bu(NvpTHSf@+T=U{q9sNDpvjWCMyMBlb0)_rd5y4d&kTzW&gu`^nE6IB|pMw<2K2wSEvisv|Zwn;t(8 z_j{A$wxo8lcV1@kk4LH+a+fpjqYF+(i^?%FnovcI}v$RAH!@wIruY(+)bdt zPecbm)2t$_v2dJEzK{Lgp7>;$QNeK~?BX_rKz?nr6)x0}HgPHLF}lw!L4Zie98( zF(#9mr$x**>-~Q5#}G;FLDq(l$QmMj_b`e}_(nvX-_NmG?BNkea5dT?R*lzPpLdgo zbxj)g4?n83xW+-=dwkqh*7PHO(nYTgjvFgBF)8jV(V$D>N!8+h!ax7vA6?+nf6VLO z#!^2Ss>|OQAhvLr4R2#U&&H;RITQ+Abo%0Ieq?%Dv_m$f5pC(m*BgpKpO9t#P*vnv zm0Hinj?$TKJluHxL|1K|=KSC4yoN8F+}Pc>R??o0Bs-rh&dx}D^omM?)aGOjj2I7< z`kCE2q#{Z)e?x%8%39-jLY|;!GGg1UMr*`&M`S`1<#W&4HFZh^N zey5=S+tH98@urF9X16NK25`Kq*~uzue^Y$7i~n!Lb{W&ExXu}fzLDp!%s8yWj*h_V zld-DKeV)k+>l9jr^*0Wc!FReE@kT~ItLMYbWW~?~zH3vy!n2`Fs@@*NM(|84gwi;@ zbudPF$hDThj1>_6u$taw?psD2;64t2$?3HXoL-s+v)o}^u0g4*u_FBcbF}v_vs8#D zS3Pvy+&(f7xndiz=ydLRHujY0&Is)pD9VyAE`#V)gqM;lE_K`ivNVj9xgN{y6U{|s z%8N-2)|Y*uj!x?=66!|!D)7P6yYoj*$G)XcCH%Y5sDw7XMo04 z;p^{s%QEv22Ukelo~d~^Rn2lq9_)Bpxq}4`PDX4IyGLT$z`lctc4s{) z`rFBpsoAIWv6XZrlbHYK*u`GmQX- zPpYyBPI!7=7Q7nH*h%eAI`_ZGTI8b;F4x+a>vc zJs8v+H9mhpuJ3&6KJNDn-3i$D5ZF1x&ucU%i&o}k(d$C*k9j1mv9SN>bS}PhF}i#a zSFEWLBo|G36*f+TgYUCSgCkko@oJHC_|`^zx+MQU4Gh=`173mSsj=!3 z^0qm#@x1t8VQi`){?*vk3usebpD4-d2e|Q#Xu?ST{70_W1EvlnKhs%`?mky2dQbJr zNuJT7NRmVz_m>#{e%auB7~Nq0V+#3&2YjNa-riv?3cGJfNR`DSE_%+qe2WVmP@UOY zuC1*~%0Afem#nc`1mn0pG6_rH0_9u6_BYMiYNJ<(uek<~s-0LT^Qp0D7@4IWum~G4 zl0PxXJ00bjKVTacs^>cxNujroaqSs+)=1ZCYR22R?sgtQJ9GCD8R~?2y=1OSsx!>1 z24{hM>eGCQq}EooH|sAL@rCAZ4?DXN6D!8<1ZPSP!s&WoZZoxPg*_^7@i7MYZ-$Y7 z8iOCCM!7OOvxVPOG5VgqyvV~WV}@@Tk>HHm^gb2T^)F)6|1p}u>ZMhrwm9yckA3ZL z%-0(Ew{Yym7!*O@ut7S2b3?)HOKc1~5%rzb&^@TI9|YsqM0erm>oJ*( z^mZtWNx(O6L6+`hViHE&BQYY>2b!*g45MP_W!CQ7FXJ5VwU~%?2Y%=xaq5wn_AzMq z2A}pR_)=WNyq758WO2ZRSQ(MB4T;g|yQ1h-;!cS0ER5?CKfwvw^~F7V#vc^>FC3pD zJ{(sN?bjejJ9!^;+~S-NE>JG7We!GLIvzAuee$| zXcK`iBaGTKz3fIVUoan);YJ&BdJ4}@O}o<@tsJUB1?D(nf?Mf}0roI++#(TjY>;V`{wtsb%nPy8?VS^{Sa zY9fncdwF=c|H(85dH8~Q`4z3ni&d86fxZ(xO;aC5YLV>gk!CP#6v@gK{ejF~f)a=6 z#x1DuV>HJAd(Y{mK#D&6gjldi+PDpOgf4W=#s1>7Fu#^+|OB9?n_1 z5{*7f7p`De>G>&T`9ROJi1D$*Uh9BabfE|5=-LsiW;*s;12%pieH59dCS+f@i8`01 z;p`BksgY`?>T?GB@EaC;Ib2OFEKX1Ns+V|AF8#2Y*94rmdSd*niununp{igsPA66~ zEmWoVGV};`?upm-RBgatjJy;Xix-;8$)-0i^aqQ=dk$Y>HG;JGKXh4 z-!}p|{8=0-oyv<&bY&YndEQu+fGTtFhakG!703AAxGZKDdg72%vCJ=Uj26+dk*=y- zf>q()V)BpGjs$0i{-t7Rqk5H@ssw|5j4rB0IISjSy0xH3&DKKyEmj-#$QtlS!b~~f z{wh$OC3Abo+Zy#pJN#5oyOu=cdOUW!gw049-Aa1)s83sj^0lRjvJvbb!WN$NWL;xEBv0tqOGML+q}A%m)RtG-|SBH z-ZXt_%i4^mVN=xmUpBuR*o)^9qc1(MfR2!$3hk_@_HH!0@;>=mN}HBhRWlVP)icUt z;YlVIJ~><6l6?s3NvrS~vzwJ4>2*XlzpMA-d6KzAsw$eF57_Ra{_AU&m+ILGcKlVC zKHt23Y0M6hm1aDE79?Yy$Z-XFQ=P0#Pzmvi>WtSg#fA8B^;k|7Jx_ zMVs&dX5v6qag;8Y#~5C1XPQ1tL~0X#FQJdOpz&aS@-J*@PH~E}mVYBNMVbmn5BlED$dqU{_`8%{oF)gk zg652(SNZtDi&d(f^oh^dYS#b7`74<3%ABA(Ol(-(Q zF(8<=b>iVM2^>%^!CH=*J|%rb3219@58|!lfLBSAiLLtC|g@N zRymrWx0STD8d(fsgqst`xR+TQ!CEAZ2B*_3jpRtg*nt}Y_NXxe|k`ewY>-1 zQk$Vn|UU6F8 z2n)VvjB~0{Dw4QftS)`L?AvWwpXaUSn8`YSE_N}KWy^0xc*)2e>-A@=!5d=_54(fo z{KM5ujZxduQe{>rm^ECT+!i~zCBqF@;j;Ni_9|nRPqoaBNLp6wT^4tNcwA8HIF-!S zWdjS-(Jk(NfVTWg)@~WYEOamn=?U0%Mz%agQVSTP6r!wwjShCE&xLo6O2mc7ENq}_ zpRmczA;v>>sT;x%t)rN((!Z3RRM+dmq9jGdRkpAZ&I5D zuW47hgm5OdHyrMcS8suSCvlX8TK7DCDGe=tCo^}++76hs9!>^pbB4Rx@WgoJBDViM zGWk{{k9+=4lzEAYwzH~rN{Z3^u9j^zJD1g}hu>6|&AMDDP z&q#h_ZVSi=3~`O1E-(k&U5UkyHl9hMOUP(Xcv%#h6pQY3&p!Hbk5^UP%$fquo|aoZ9yBXE>%%g%A+0@(L@b+ z8r8s+ts1IMwx3l!x=&4MuY`E3WOiAZzepA9Th?W4v@^(g`+Dqg2Fd@Ov2xeS_k(uf zIHTVFir-DFkJ+rIID2@xwe7WCKaZ8b!Jc#lRZ90)cRs@kkv%G-H`}KqK{ePWb@?+? zeJ{4wV5PM^*?s3F6||$&sSXIIqpL?~)&gF32epXbsVM!`4BZy{TVTF^3I8q@xY|!& zHL9)DF5cva2kX0j@!v3#R2l9EEa!w+_dV8QB&2EtgCdY5NwfnlHp8`dsA&A#x~*QS zEgy$VM}AS&`Yu-1G_m%zrvHYiXS)Iez9cOx{k_lI|C&bJz+GRa?}d%{J5VnbjBCS^ z=cnySVB%S048NZ*9*r$#}&wbF<^ zqjK_Hi2V}8*~dQwcJJ z4cXQD?8E;^Rw1b0g1s0>dYiG5omh>=u&@vd)01T##A3I`gjR|(-iX%bZ+{9q3MOW3 z((_h&iz<|WC)c9&Wm6LPKrf4+-irpGm@i5;0GAz)&Ae?C{)YjT#FzKcv@hWML0JC} z6rK_8iG16c7Ie>q!_mJ^pF+Mit&GhgCQk29TUlY@ROb$OInYY4a zAkgdTqJIxpFkiuSM!9-?ber+LiWROl4j0JO-*B=bkM%EeSp?6U4j=FG#-@sJ#K+Fl z=tbJSk{8q8dpTm6M2~A@50&Kx-_eg3FxmxVe*hbB9ZMN3$5Kdj%3#$%3I ztYTKH(VkLfr6K7pN4qC^{bO=^(R|h)>{<6**l25F1 z83y^L(&ip;aGtd%E4{PJ=jQ75SwFYEvW9221!p}-&bMO~@v`DaAge}^ zs(7W3buYy*uj<|p&ZGY}+x}GCU;bWga@fHrF7;S$#!^9nt6IDrLWfAsF!Iun1rK%tI8XY6eSa6@ zp55qv#G0yyR=$33)IMWLe@-ZGoHiT5#a2a33jbklpAZ*$5KfN`T{V(By=Es@y9D;L z>Z7zZOP#Fed0WqN*gqq;^*;rS-dt;ZPpR6kZO54p?7+Otu8A`qpMIR*zHhbd-IvSy zw4v;D+3-!aG@ErAN3Ds>Vsx5W{nNng)=CJu|9rD^#!PmF)*Zbw3SVvD^(8QAmllpO zI@iM)BVSo1Jp0aEY|)3HCgO(GA|*wVtHJ*yaQ^AYdMg*$5o=ls;R=^!(QLGU`HS5u?$U zd={}HJGa$hYprRW$nqYtx+d(EhF0#ppuaKux9%{yrTi2%3m+$BvZvt#`(uu9&E`lJ{yOhz2PSq??5@WDkAA6HczeaLmATw4qMr@vN{&cHTqI%~(wn=? ziEDW8C&U{ibAvCYvvb{MoN%u7!c|C2Mr*6zw1?nj=(Ne&mRa@&+lzlDvo?N}UE*5W zi|u)9jLTb@T-(`eKiI9Np1qZZ(2sNWY|4}noND*iUl}e#mdU^HTa=R?lBDLqVm{N9LqAtM*Bvms;AWtoGkaEW?|0DFX}Gp0q8p zhUP6RZ92f4v)F82EGswk`p@&zxa>8^x{?lmkADXK(?H*v=YD5s?|

aEUGSX0};g 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