From ae7e6f5abeea0dce32169dd14099cd187c366713 Mon Sep 17 00:00:00 2001 From: Robin Davies Date: Thu, 24 Oct 2024 04:18:37 -0400 Subject: [PATCH 1/5] Trigger properties. --- react/src/Lv2Plugin.tsx | 14 +- react/src/MidiBindingView.tsx | 2 +- react/src/PluginControl.tsx | 244 ++++++++++++++++++---------------- react/src/SplitUiControls.tsx | 12 ++ src/PluginHost.cpp | 5 +- src/PluginHost.hpp | 8 +- 6 files changed, 161 insertions(+), 124 deletions(-) diff --git a/react/src/Lv2Plugin.tsx b/react/src/Lv2Plugin.tsx index 29b54c3..dbf9538 100644 --- a/react/src/Lv2Plugin.tsx +++ b/react/src/Lv2Plugin.tsx @@ -436,6 +436,7 @@ export enum ControlType { OnOffSwitch, ABSwitch, Select, + Trigger, Tuner, Vu, @@ -444,7 +445,7 @@ export enum ControlType { } export class UiControl implements Deserializable { - deserialize(input: any): UiControl { +deserialize(input: any): UiControl { this.symbol = input.symbol; this.name = input.name; this.index = input.index; @@ -458,7 +459,7 @@ export class UiControl implements Deserializable { this.integer_property = input.integer_property; this.enumeration_property = input.enumeration_property; this.toggled_property = input.toggled_property; - this.trigger = input.trigger; + this.trigger_property = input.trigger_property; this.not_on_gui = input.not_on_gui; this.scale_points = ScalePoint.deserialize_array(input.scale_points); this.port_group = input.port_group; @@ -499,6 +500,10 @@ export class UiControl implements Deserializable { this.controlType = ControlType.OnOffSwitch; } } + if (this.is_input && this.trigger_property) + { + this.controlType = ControlType.Trigger; + } return this; } applyProperties(properties: Partial): UiControl { @@ -546,7 +551,7 @@ export class UiControl implements Deserializable { range_steps: number = 0; integer_property: boolean = false; enumeration_property: boolean = false; - trigger: boolean = false; + trigger_property: boolean = false; not_on_gui: boolean = false; toggled_property: boolean = false; scale_points: ScalePoint[] = []; @@ -590,6 +595,9 @@ export class UiControl implements Deserializable { isSelect(): boolean { return this.controlType === ControlType.Select; } + isTrigger(): boolean { + return this.controlType === ControlType.Trigger; + } isOutputSelect(): boolean { return !this.is_input && this.controlType === ControlType.OutputSelect; } diff --git a/react/src/MidiBindingView.tsx b/react/src/MidiBindingView.tsx index 4df072f..2a9c8fc 100644 --- a/react/src/MidiBindingView.tsx +++ b/react/src/MidiBindingView.tsx @@ -160,7 +160,7 @@ const MidiBindingView = isBinaryControl = (port.isAbToggle() || port.isOnOffSwitch()); if (midiBinding.bindingType !== MidiBinding.BINDING_TYPE_NONE) { canLatch = isBinaryControl; - canTrigger = port.trigger; + canTrigger = port.trigger_property; showLinearControlTypeSelect = !(canLatch || canTrigger); showLinearRange = showLinearControlTypeSelect && midiBinding.linearControlType === MidiBinding.LINEAR_CONTROL_TYPE; canRotaryScale = showLinearControlTypeSelect && midiBinding.linearControlType === MidiBinding.CIRCULAR_CONTROL_TYPE; diff --git a/react/src/PluginControl.tsx b/react/src/PluginControl.tsx index 64a6dd1..dcfdb87 100644 --- a/react/src/PluginControl.tsx +++ b/react/src/PluginControl.tsx @@ -18,6 +18,7 @@ // CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. import React, { TouchEvent, PointerEvent, ReactNode, Component, SyntheticEvent } from 'react'; +import Button from '@mui/material/Button'; import { Theme } from '@mui/material/styles'; import { WithStyles } from '@mui/styles'; import createStyles from '@mui/styles/createStyles'; @@ -27,10 +28,11 @@ import Typography from '@mui/material/Typography'; import Input from '@mui/material/Input'; import Select from '@mui/material/Select'; import Switch from '@mui/material/Switch'; -import Utility, {nullCast} from './Utility'; +import Utility, { nullCast } from './Utility'; import MenuItem from '@mui/material/MenuItem'; -import {PiPedalModel,PiPedalModelFactory} from './PiPedalModel'; -import {ReactComponent as DialIcon} from './svg/fx_dial.svg'; +import { PiPedalModel, PiPedalModelFactory } from './PiPedalModel'; +import { ReactComponent as DialIcon } from './svg/fx_dial.svg'; +import { isDarkMode } from './DarkMode'; const MIN_ANGLE = -135; const MAX_ANGLE = 135; @@ -94,8 +96,7 @@ type PluginControlState = { const PluginControl = withStyles(styles, { withTheme: true })( - class extends Component - { + class extends Component { frameRef: React.RefObject; imgRef: React.RefObject; @@ -140,23 +141,18 @@ const PluginControl = return Utility.needsZoomedControls(); } - showZoomedControl() - { - if (this.props.uiControl && this.frameRef.current) - { - this.model.zoomUiControl(this.frameRef.current,this.props.instanceId,this.props.uiControl); + showZoomedControl() { + if (this.props.uiControl && this.frameRef.current) { + this.model.zoomUiControl(this.frameRef.current, this.props.instanceId, this.props.uiControl); } } - hideZoomedControl() - { - if (this.frameRef.current && this.model.zoomedUiControl.get()?.source === this.frameRef.current) - { + hideZoomedControl() { + if (this.frameRef.current && this.model.zoomedUiControl.get()?.source === this.frameRef.current) { this.model.clearZoomedControl(); } } - componentWillUnmount() - { + componentWillUnmount() { this.hideZoomedControl(); } inputChanged: boolean = false; @@ -172,12 +168,11 @@ const PluginControl = } onInputFocus(event: SyntheticEvent): void { this.displayValueRef.current!.style.display = "none"; - if (Utility.hasIMEKeyboard()) - { + if (Utility.hasIMEKeyboard()) { event.preventDefault(); event.stopPropagation(); this.inputRef.current?.blur(); - this.props.requestIMEEdit(nullCast(this.props.uiControl),this.props.value) + this.props.requestIMEEdit(nullCast(this.props.uiControl), this.props.value) } } onInputKeyPress(e: any): void { @@ -221,7 +216,7 @@ const PluginControl = // clamp and quantize. let range = this.valueToRange(result); result = this.rangeToValue(range); - let displayVal = this.props.uiControl?.formatShortValue(result)??""; + let displayVal = this.props.uiControl?.formatShortValue(result) ?? ""; if (event.currentTarget) { event.currentTarget.value = displayVal; } @@ -270,11 +265,9 @@ const PluginControl = capturedPointers: number[] = []; - onBodyPointerDownCapture(e_: any): any - { + onBodyPointerDownCapture(e_: any): any { let e = e_ as PointerEvent; - if (this.isExtraTouch(e)) - { + if (this.isExtraTouch(e)) { this.isTap = false; this.captureElement!.setPointerCapture(e.pointerId); this.capturedPointers.push(e.pointerId); @@ -305,10 +298,8 @@ const PluginControl = e.preventDefault(); e.stopPropagation(); - if (this.isTouchDevice()) - { - if (this.props.uiControl?.isDial()??false) - { + if (this.isTouchDevice()) { + if (this.props.uiControl?.isDial() ?? false) { this.isTap = false; this.showZoomedControl(); return; @@ -318,8 +309,7 @@ const PluginControl = ++this.pointersDown; this.mouseDown = true; - if (this.pointersDown === 1) - { + if (this.pointersDown === 1) { this.isTap = true; this.tapStartMs = Date.now(); } else { @@ -340,8 +330,8 @@ const PluginControl = this.captureElement = img; document.body.addEventListener( "pointerdown", - this.onBodyPointerDownCapture,true - ); + this.onBodyPointerDownCapture, true + ); img.setPointerCapture(e.pointerId); if (img.style) { @@ -350,11 +340,10 @@ const PluginControl = } } else { - if (this.isExtraTouch(e)) - { + if (this.isExtraTouch(e)) { ++this.pointersDown; this.isTap = false; - + } } } @@ -367,7 +356,7 @@ const PluginControl = if (this.isCapturedPointer(e)) { --this.pointersDown; this.isTap = false; - + this.releaseCapture(e); } @@ -378,21 +367,16 @@ const PluginControl = let ultraHigh = false; let high = false; - if (e.ctrlKey) - { + if (e.ctrlKey) { ultraHigh = true; } - if (e.shiftKey) - { + if (e.shiftKey) { high = true; } - if (e.pointerType === "touch") - { - if (this.pointersDown >= 3) - { + if (e.pointerType === "touch") { + if (this.pointersDown >= 3) { ultraHigh = true; - } else if (this.pointersDown === 2) - { + } else if (this.pointersDown === 2) { high = true; } } @@ -411,28 +395,24 @@ const PluginControl = } private lastTapMs = 0; - resetToDefaultValue(uiControl: UiControl): void - { + resetToDefaultValue(uiControl: UiControl): void { let value = uiControl.default_value; - this.model.setPedalboardControl(this.props.instanceId,uiControl.symbol,value); + this.model.setPedalboardControl(this.props.instanceId, uiControl.symbol, value); } onPointerDoubleTap() { let uiControl = this.props.uiControl; - if (uiControl) - { - if (uiControl.isDial()) - { + if (uiControl) { + if (uiControl.isDial()) { this.resetToDefaultValue(uiControl); } } } onPointerTap() { let tapTime = Date.now(); - let dT = tapTime-this.lastTapMs; + let dT = tapTime - this.lastTapMs; this.lastTapMs = tapTime; - if (dT < 500) - { + if (dT < 500) { this.onPointerDoubleTap(); } } @@ -442,32 +422,29 @@ const PluginControl = if (this.isCapturedPointer(e)) { --this.pointersDown; - + e.preventDefault(); let dRange = this.updateRange(e) this.previewRange(dRange, true); this.releaseCapture(e); - if (this.isTap) - { - let ms = Date.now()-this.tapStartMs; - if (ms < 200) - { + if (this.isTap) { + let ms = Date.now() - this.tapStartMs; + if (ms < 200) { this.onPointerTap(); } } } else { --this.pointersDown; - + } } - releaseCapture(e: PointerEvent) - { + releaseCapture(e: PointerEvent) { let img = this.imgRef.current; - + if (img && img.style) { img.releasePointerCapture(e.pointerId); img.style.opacity = "" + DEFAULT_OPACITY; @@ -480,14 +457,14 @@ const PluginControl = } document.body.removeEventListener( "pointerdown", - this.onBodyPointerDownCapture,true - ); + this.onBodyPointerDownCapture, true + ); this.mouseDown = false; } - clickSlop() { + clickSlop() { return 3.5; // maybe larger on touch devices. } onPointerMove(e: PointerEvent): void { @@ -499,15 +476,27 @@ const PluginControl = let x = e.clientX; let y = e.clientY; let dx = x - this.startX; - let dy = y-this.startY; - let distance = Math.sqrt(dx*dx+dy*dy); - if (distance >= this.clickSlop()) - { + let dy = y - this.startY; + let distance = Math.sqrt(dx * dx + dy * dy); + if (distance >= this.clickSlop()) { this.isTap = false; } } } - + handleTriggerMouseDown() { + let uiControl = this.props.uiControl; + if (uiControl) + { + this.model.setPedalboardControl(this.props.instanceId,uiControl.symbol,1); + } + } + handleTriggerMouseUp() { + let uiControl = this.props.uiControl; + if (uiControl) + { + this.model.setPedalboardControl(this.props.instanceId,uiControl.symbol,0); + } + } previewInputValue(value: number, commitValue: boolean) { let range = this.valueToRange(value); value = this.rangeToValue(range); @@ -547,13 +536,12 @@ const PluginControl = } let inputElement = this.inputRef.current; if (inputElement) { - let v = this.props.uiControl?.formatShortValue(value)??""; + let v = this.props.uiControl?.formatShortValue(value) ?? ""; inputElement.value = v; } let displayValue = this.displayValueRef.current; - if (displayValue) - { - let v = this.formatDisplayValue(this.props.uiControl,value); + if (displayValue) { + let v = this.formatDisplayValue(this.props.uiControl, value); displayValue.childNodes[0].textContent = v; } let selectElement = this.selectRef.current; @@ -577,9 +565,9 @@ const PluginControl = } onSelectChanged(e: any, value: any) { let target = e.target; - setTimeout(()=> { + setTimeout(() => { this.props.onChange(target.value); - },0); + }, 0); } @@ -610,7 +598,7 @@ const PluginControl = ); } else { return ( -
{ this.inputRef.current!.focus(); }} > - - {this.formatDisplayValue(control, value)} + + {this.formatDisplayValue(control, value)}
) diff --git a/react/src/SplitUiControls.tsx b/react/src/SplitUiControls.tsx index 0dc28e0..e7206dc 100644 --- a/react/src/SplitUiControls.tsx +++ b/react/src/SplitUiControls.tsx @@ -37,6 +37,7 @@ export const SplitTypeControl: UiControl = new UiControl().deserialize({ enumeration_property: true, not_on_gui: false, toggled_property: false, + trigger_property: false, scale_points: ScalePoint.deserialize_array( [ { value: 0, label: "A/B" }, @@ -60,6 +61,7 @@ export const SplitAbControl: UiControl = new UiControl().deserialize({ enumeration_property: true, not_on_gui: false, toggled_property: false, + trigger_property: false, scale_points: ScalePoint.deserialize_array( [ { value: 0, label: "A" }, @@ -83,6 +85,8 @@ export const SplitMixControl: UiControl = new UiControl().deserialize({ enumeration_property: false, not_on_gui: false, toggled_property: false, + trigger_property: false, + scale_points: [] }); @@ -100,6 +104,8 @@ export const SplitPanLeftControl: UiControl = new UiControl().deserialize({ enumeration_property: false, not_on_gui: false, toggled_property: false, + trigger_property: false, + scale_points: [] }); @@ -117,6 +123,8 @@ export const SplitVolLeftControl: UiControl = new UiControl().deserialize({ enumeration_property: false, not_on_gui: false, toggled_property: false, + trigger_property: false, + units: Units.db, scale_points: [ new ScalePoint().deserialize({ @@ -141,6 +149,8 @@ export const SplitPanRightControl: UiControl = new UiControl().deserialize({ enumeration_property: false, not_on_gui: false, toggled_property: false, + trigger_property: false, + scale_points: [] }); @@ -158,6 +168,8 @@ export const SplitVolRightControl: UiControl = new UiControl().deserialize({ enumeration_property: false, not_on_gui: false, toggled_property: false, + trigger_property: false, + units: Units.db, scale_points: [ new ScalePoint().deserialize({ diff --git a/src/PluginHost.cpp b/src/PluginHost.cpp index 8239316..9030417 100644 --- a/src/PluginHost.cpp +++ b/src/PluginHost.cpp @@ -118,6 +118,7 @@ void PluginHost::LilvUris::Initialize(LilvWorld *pWorld) core__toggled = lilv_new_uri(pWorld, LV2_CORE__toggled); core__connectionOptional = lilv_new_uri(pWorld, LV2_CORE__connectionOptional); portprops__not_on_gui_property_uri = lilv_new_uri(pWorld, LV2_PORT_PROPS__notOnGUI); + portprops__trigger = lilv_new_uri(pWorld,LV2_PORT_PROPS__trigger); midi__event = lilv_new_uri(pWorld, LV2_MIDI__MidiEvent); core__designation = lilv_new_uri(pWorld, LV2_CORE__designation); portgroups__group = lilv_new_uri(pWorld, LV2_PORT_GROUPS__group); @@ -932,6 +933,7 @@ Lv2PortInfo::Lv2PortInfo(PluginHost *host, const LilvPlugin *plugin, const LilvP this->toggled_property_ = lilv_port_has_property(plugin, pPort, host->lilvUris->core__toggled); this->not_on_gui_ = lilv_port_has_property(plugin, pPort, host->lilvUris->portprops__not_on_gui_property_uri); this->connection_optional_ = lilv_port_has_property(plugin, pPort, host->lilvUris->core__connectionOptional); + this->trigger_property_ = lilv_port_has_property(plugin,pPort,host->lilvUris->portprops__trigger); LilvScalePoints *pScalePoints = lilv_port_get_scale_points(plugin, pPort); LILV_FOREACH(scale_points, iSP, pScalePoints) @@ -1593,7 +1595,7 @@ json_map::storage_type Lv2PortInfo::jmap{ MAP_REF(Lv2PortInfo, is_logarithmic), MAP_REF(Lv2PortInfo, display_priority), MAP_REF(Lv2PortInfo, range_steps), - MAP_REF(Lv2PortInfo, trigger), + MAP_REF(Lv2PortInfo, trigger_property), MAP_REF(Lv2PortInfo, integer_property), MAP_REF(Lv2PortInfo, enumeration_property), MAP_REF(Lv2PortInfo, toggled_property), @@ -1662,6 +1664,7 @@ json_map::storage_type Lv2PluginUiPort::jmap{{ MAP_REF(Lv2PluginUiPort, enumeration_property), MAP_REF(Lv2PluginUiPort, not_on_gui), MAP_REF(Lv2PluginUiPort, toggled_property), + MAP_REF(Lv2PluginUiPort, trigger_property), MAP_REF(Lv2PluginUiPort, scale_points), MAP_REF(Lv2PluginUiPort, port_group), diff --git a/src/PluginHost.hpp b/src/PluginHost.hpp index 88339d3..2638207 100644 --- a/src/PluginHost.hpp +++ b/src/PluginHost.hpp @@ -214,7 +214,7 @@ namespace pipedal bool is_logarithmic_ = false; int display_priority_ = -1; int range_steps_ = 0; - bool trigger_ = false; + bool trigger_property_ = false; bool integer_property_ = false; bool enumeration_property_ = false; bool toggled_property_ = false; @@ -285,7 +285,7 @@ namespace pipedal LV2_PROPERTY_GETSET_SCALAR(is_logarithmic); LV2_PROPERTY_GETSET_SCALAR(display_priority); LV2_PROPERTY_GETSET_SCALAR(range_steps); - LV2_PROPERTY_GETSET_SCALAR(trigger); + LV2_PROPERTY_GETSET_SCALAR(trigger_property); LV2_PROPERTY_GETSET_SCALAR(integer_property); LV2_PROPERTY_GETSET_SCALAR(enumeration_property); LV2_PROPERTY_GETSET_SCALAR(toggled_property); @@ -496,6 +496,7 @@ namespace pipedal default_value_(pPort->default_value()), range_steps_(pPort->range_steps()), display_priority_(pPort->display_priority()), is_logarithmic_(pPort->is_logarithmic()), integer_property_(pPort->integer_property()), enumeration_property_(pPort->enumeration_property()), toggled_property_(pPort->toggled_property()), not_on_gui_(pPort->not_on_gui()), scale_points_(pPort->scale_points()), + trigger_property_(pPort->trigger_property()), comment_(pPort->comment()), units_(pPort->units()), connection_optional_(pPort->connection_optional()) { @@ -536,6 +537,7 @@ namespace pipedal bool enumeration_property_ = false; bool not_on_gui_ = false; bool toggled_property_ = false; + bool trigger_property_ = false; std::vector scale_points_; std::string port_group_; @@ -561,6 +563,7 @@ namespace pipedal LV2_PROPERTY_GETSET_SCALAR(integer_property); LV2_PROPERTY_GETSET_SCALAR(enumeration_property); LV2_PROPERTY_GETSET_SCALAR(toggled_property); + LV2_PROPERTY_GETSET_SCALAR(trigger_property); LV2_PROPERTY_GETSET_SCALAR(not_on_gui); LV2_PROPERTY_GETSET(scale_points); LV2_PROPERTY_GETSET(units); @@ -664,6 +667,7 @@ namespace pipedal AutoLilvNode core__toggled; AutoLilvNode core__connectionOptional; AutoLilvNode portprops__not_on_gui_property_uri; + AutoLilvNode portprops__trigger; AutoLilvNode midi__event; AutoLilvNode core__designation; AutoLilvNode portgroups__group; From 6bff83604dd8dfd8ad6fcd08894f406dc6a44274 Mon Sep 17 00:00:00 2001 From: Robin Davies Date: Sun, 27 Oct 2024 19:47:05 -0400 Subject: [PATCH 2/5] Shared upload directories --- PiPedalCommon/src/include/util.hpp | 16 + react/src/FilePropertyDialog.tsx | 1369 ++++++++++++++-------------- react/src/Lv2Plugin.tsx | 4 + react/src/ModFileTypes.tsx | 60 ++ react/src/PiPedalModel.tsx | 18 +- src/CMakeLists.txt | 2 + src/ConfigMain.cpp | 4 + src/FileEntry.cpp | 17 +- src/FileEntry.hpp | 24 +- src/ModFileTypes.cpp | 156 ++++ src/ModFileTypes.hpp | 53 ++ src/PiPedalModel.cpp | 4 +- src/PiPedalModel.hpp | 2 +- src/PiPedalSocket.cpp | 4 +- src/PiPedalUI.cpp | 2 + src/PiPedalUI.hpp | 10 + src/PluginHost.cpp | 145 +-- src/Storage.cpp | 239 ++++- src/Storage.hpp | 4 +- 19 files changed, 1367 insertions(+), 766 deletions(-) create mode 100644 react/src/ModFileTypes.tsx create mode 100644 src/ModFileTypes.cpp create mode 100644 src/ModFileTypes.hpp diff --git a/PiPedalCommon/src/include/util.hpp b/PiPedalCommon/src/include/util.hpp index 588dca8..405b6e2 100644 --- a/PiPedalCommon/src/include/util.hpp +++ b/PiPedalCommon/src/include/util.hpp @@ -51,6 +51,22 @@ namespace pipedal { } + template + inline bool contains(const std::vector&vector,const T&value) + { + for (auto i = vector.begin(); i != vector.end(); ++i) + { + if ((*i) == value) { + return true; + } + } + return false; + } + inline bool contains(const std::vector&vector,const char*value) + { + return contains(vector,std::string(value)); + } + class NoCopy { public: NoCopy() { } diff --git a/react/src/FilePropertyDialog.tsx b/react/src/FilePropertyDialog.tsx index 885a210..d36112d 100644 --- a/react/src/FilePropertyDialog.tsx +++ b/react/src/FilePropertyDialog.tsx @@ -17,6 +17,7 @@ // IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN // CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + import React from 'react'; import { Theme, createStyles } from '@mui/material/styles'; import CreateNewFolderIcon from '@mui/icons-material/CreateNewFolder'; @@ -25,7 +26,7 @@ import Divider from '@mui/material/Divider'; import MenuItem from '@mui/material/MenuItem'; import Menu from '@mui/material/Menu'; import MoreIcon from '@mui/icons-material/MoreVert'; -import { PiPedalModel, PiPedalModelFactory, FileEntry } from './PiPedalModel'; +import { PiPedalModel, PiPedalModelFactory, FileEntry, BreadcrumbEntry, FileRequestResult } from './PiPedalModel'; import { isDarkMode } from './DarkMode'; import Button from '@mui/material/Button'; import FileUploadIcon from '@mui/icons-material/FileUpload'; @@ -61,7 +62,7 @@ const styles = (theme: Theme) => createStyles({ }, }); -const audioFileExtensions: {[name: string]: boolean} = { +const audioFileExtensions: { [name: string]: boolean } = { ".wav": true, ".flac": true, ".ogg": true, @@ -88,22 +89,23 @@ function isAudioFile(filename: string) { return audioFileExtensions[extension] !== undefined; } -export interface FilePropertyDialogProps extends WithStyles { +export interface FilePropertyDialogProps extends WithStyles { open: boolean, fileProperty: UiFileProperty, selectedFile: string, onOk: (fileProperty: UiFileProperty, selectedItem: string) => void, onCancel: () => void }; - export interface FilePropertyDialogState { fullScreen: boolean; selectedFile: string; selectedFileIsDirectory: boolean; - navDirectory: string; + selectedFileProtected: boolean; hasSelection: boolean; canDelete: boolean; - fileEntries: FileEntry[]; + fileResult: FileRequestResult; + navDirectory: string; + isProtectedDirectory: boolean; columns: number; columnWidth: number; openUploadFileDialog: boolean; @@ -114,19 +116,22 @@ export interface FilePropertyDialogState { moveDialogOpen: boolean; }; -function pathExtension(path: string) -{ +function pathExtension(path: string) { let dotPos = path.lastIndexOf('.'); if (dotPos === -1) return ""; let slashPos = path.lastIndexOf('/'); - if (slashPos !== -1) - { - if (dotPos <= slashPos+1) return ""; + if (slashPos !== -1) { + if (dotPos <= slashPos + 1) return ""; } return path.substring(dotPos); // include the '.'. } +function pathParentDirectory(path: string) { + let npos = path.lastIndexOf('/'); + if (npos === -1) return ""; + return path.substring(0, npos); +} function pathConcat(left: string, right: string) { if (left === "") return right; if (right === "") return left; @@ -169,683 +174,725 @@ export function pathFileName(path: string): string { export default withStyles(styles, { withTheme: true })( class FilePropertyDialog extends ResizeResponsiveComponent { - getNavDirectoryFromFile(selectedFile: string, fileProperty: UiFileProperty): string { - - // would be easier if we had the data root (/var/pipedal/audio_downloads, but could be different when we're debugging. :-/ - let nPos = selectedFile.indexOf("/" + fileProperty.directory + "/"); - if (nPos === -1) return ""; - let relativePath = selectedFile.substring(nPos + fileProperty.directory.length + 2); - let segments = relativePath.split('/'); - - let result = ""; - for (let i = 0; i < segments.length - 1; ++i) { - if (result !== "") result += '/'; - result += segments[i]; - } - return result; - } - - constructor(props: FilePropertyDialogProps) { - super(props); - - - this.model = PiPedalModelFactory.getInstance(); - - this.state = { - fullScreen: this.getFullScreen(), - selectedFile: props.selectedFile, - selectedFileIsDirectory: false, - navDirectory: this.getNavDirectoryFromFile(props.selectedFile, props.fileProperty), - hasSelection: false, - canDelete: false, - columns: 0, - columnWidth: 1, - fileEntries: [], - openUploadFileDialog: false, - openConfirmDeleteDialog: false, - menuAnchorEl: null, - newFolderDialogOpen: false, - renameDialogOpen: false, - moveDialogOpen: false - }; - this.requestScroll = true; - } - getFullScreen() { - return window.innerWidth < 450 || window.innerHeight < 450; - } - - private scrollRef: HTMLDivElement | null = null; - - onScrollRef(element: HTMLDivElement | null) { - this.scrollRef = element; - this.maybeScrollIntoView(); - } - private maybeScrollIntoView() { - if (this.scrollRef !== null && this.state.fileEntries.length !== 0 && this.mounted && this.requestScroll) { - this.requestScroll = false; - let options: ScrollIntoViewOptions = { block: "nearest" }; - options.block = "nearest"; - - this.scrollRef.scrollIntoView(options); - } - } - private mounted: boolean = false; - private model: PiPedalModel; - - private requestFiles(navPath: string) { - if (!this.props.open) { - return; - } - if (this.props.fileProperty.directory === "") { - return; + getNavDirectoryFromFile(selectedFile: string, fileProperty: UiFileProperty): string { + if (selectedFile === "") { + return ""; + } + return pathParentDirectory(selectedFile); } - this.model.requestFileList2(navPath, this.props.fileProperty) - .then((files) => { - if (this.mounted) { - // let insertionPoint = files.length; - // for (let i = 0; i < files.length; ++i) { - // if (!files[i].isDirectory) { - // insertionPoint = i; - // break; - // } - // } - files.splice(0, 0, { filename: "", isDirectory: false }); - this.setState({ fileEntries: files, hasSelection: this.isFileInList(files, this.state.selectedFile), navDirectory: navPath }); - } - }).catch((error) => { - this.model.showAlert(error.toString()) - }); - } + constructor(props: FilePropertyDialogProps) { + super(props); - private lastDivRef: HTMLDivElement | null = null; - onMeasureRef(div: HTMLDivElement | null) { - this.lastDivRef = div; - if (div) { - let width = div.offsetWidth; - if (width === 0) return; - let columns = 1; - let columnWidth = (width - 40) / columns; - if (columns !== this.state.columns || columnWidth !== this.state.columnWidth) { - this.setState({ columns: columns, columnWidth: columnWidth }); + this.model = PiPedalModelFactory.getInstance(); + + this.state = { + fullScreen: this.getFullScreen(), + selectedFile: props.selectedFile, + selectedFileProtected: true, + selectedFileIsDirectory: false, + navDirectory: this.getNavDirectoryFromFile(props.selectedFile, props.fileProperty), + hasSelection: false, + canDelete: false, + columns: 0, + columnWidth: 1, + fileResult: new FileRequestResult(), + isProtectedDirectory: true, + openUploadFileDialog: false, + openConfirmDeleteDialog: false, + menuAnchorEl: null, + newFolderDialogOpen: false, + renameDialogOpen: false, + moveDialogOpen: false + }; + this.requestScroll = true; + } + getFullScreen() { + return window.innerWidth < 450 || window.innerHeight < 450; + } + + private scrollRef: HTMLDivElement | null = null; + + onScrollRef(element: HTMLDivElement | null) { + this.scrollRef = element; + this.maybeScrollIntoView(); + } + private maybeScrollIntoView() { + if (this.scrollRef !== null && this.state.fileResult.files.length !== 0 && this.mounted && this.requestScroll) { + this.requestScroll = false; + let options: ScrollIntoViewOptions = { block: "nearest" }; + options.block = "nearest"; + + this.scrollRef.scrollIntoView(options); } } - } - onWindowSizeChanged(width: number, height: number): void { + private mounted: boolean = false; + private model: PiPedalModel; - this.setState({ - fullScreen: this.getFullScreen() - }) - if (this.lastDivRef !== null) { - this.onMeasureRef(this.lastDivRef); + private requestFiles(navPath: string) { + if (!this.props.open) { + return; + } + if (this.props.fileProperty.directory === "") { + return; + } + + this.model.requestFileList2(navPath, this.props.fileProperty) + .then((filesResult) => { + if (this.mounted) { + // let insertionPoint = files.length; + // for (let i = 0; i < files.length; ++i) { + // if (!files[i].isDirectory) { + // insertionPoint = i; + // break; + // } + // } + filesResult.files.splice(0, 0, { pathname: "", displayName: "", isDirectory: false, isProtected: true }); + + let fileEntry = this.getFileEntry(filesResult.files, this.state.selectedFile); + this.setState({ + isProtectedDirectory: filesResult.isProtected, + fileResult: filesResult, + hasSelection: !!fileEntry, + selectedFileProtected: fileEntry ? fileEntry.isProtected: true, + navDirectory: navPath + }); + } + }).catch((error) => { + if (!this.mounted) return; + if (navPath !== "") // deleted sample directory maybe? + { + this.navigate(""); + } else { + this.model.showAlert(error.toString()) + } + }); } - } + private lastDivRef: HTMLDivElement | null = null; - private requestScroll: boolean = false; + onMeasureRef(div: HTMLDivElement | null) { + this.lastDivRef = div; + if (div) { + let width = div.offsetWidth; + if (width === 0) return; + let columns = 1; + let columnWidth = (width - 40) / columns; + if (columns !== this.state.columns || columnWidth !== this.state.columnWidth) { + this.setState({ columns: columns, columnWidth: columnWidth }); + } + } + } + onWindowSizeChanged(width: number, height: number): void { - componentDidMount() { - super.componentDidMount(); - this.mounted = true; - } - componentWillUnmount() { - super.componentWillUnmount(); - this.mounted = false; - this.lastDivRef = null; - } - componentDidUpdate(prevProps: Readonly, prevState: Readonly, snapshot?: any): void { - super.componentDidUpdate?.(prevProps, prevState, snapshot); - if (prevProps.open !== this.props.open || prevProps.fileProperty !== this.props.fileProperty || prevProps.selectedFile !== this.props.selectedFile) { - if (this.props.open) { - let navDirectory = this.getNavDirectoryFromFile(this.props.selectedFile, this.props.fileProperty); - this.setState({ - selectedFile: this.props.selectedFile, - newFolderDialogOpen: false, - renameDialogOpen: false, - moveDialogOpen: false + this.setState({ + fullScreen: this.getFullScreen() + }) + if (this.lastDivRef !== null) { + this.onMeasureRef(this.lastDivRef); + } + + } + + private requestScroll: boolean = false; + + componentDidMount() { + super.componentDidMount(); + this.mounted = true; + } + componentWillUnmount() { + super.componentWillUnmount(); + this.mounted = false; + this.lastDivRef = null; + } + componentDidUpdate(prevProps: Readonly, prevState: Readonly, snapshot?: any): void { + super.componentDidUpdate?.(prevProps, prevState, snapshot); + if (prevProps.open !== this.props.open || prevProps.fileProperty !== this.props.fileProperty || prevProps.selectedFile !== this.props.selectedFile) { + if (this.props.open) { + let navDirectory = this.getNavDirectoryFromFile(this.props.selectedFile, this.props.fileProperty); + this.setState({ + selectedFile: this.props.selectedFile, + selectedFileIsDirectory: false, + selectedFileProtected: true, + newFolderDialogOpen: false, + renameDialogOpen: false, + moveDialogOpen: false }); - this.requestFiles(navDirectory) - this.requestScroll = true; - } - } - - } - - private isDirectory(path: string): boolean { - for (var fileEntry of this.state.fileEntries) { - if (fileEntry.filename === path) { - return fileEntry.isDirectory; - } - } - return false; - } - private isFileInList(files: FileEntry[], file: string) { - - let hasSelection = false; - if (file === "") return true; - for (var listFile of files) { - if (listFile.filename === file) { - hasSelection = true; - break; - } - } - return hasSelection; - } - - onSelectValue(selectedFile: string, isDirectory: boolean) { - this.requestScroll = true; - this.setState({ selectedFile: selectedFile, selectedFileIsDirectory: isDirectory, hasSelection: this.isFileInList(this.state.fileEntries, selectedFile) }) - } - onDoubleClickValue(selectedFile: string) { - this.openSelectedFile(); - } - - handleMenuOpen(event: React.MouseEvent) { - this.setState({ menuAnchorEl: event.currentTarget }); - - } - handleMenuClose() { - this.setState({ menuAnchorEl: null }); - } - handleDelete() { - this.setState({ openConfirmDeleteDialog: true }); - } - handleConfirmDelete() { - this.setState({ openConfirmDeleteDialog: false }); - if (this.state.hasSelection) { - let selectedFile = this.state.selectedFile; - let position = -1; - for (let i = 0; i < this.state.fileEntries.length; ++i) { - let file = this.state.fileEntries[i]; - if (file.filename === selectedFile) { - position = i; + this.requestFiles(navDirectory) + this.requestScroll = true; } } - let newSelection = ""; - if (position >= 0 && position < this.state.fileEntries.length - 1) { - newSelection = this.state.fileEntries[position + 1].filename; - } else if (position === this.state.fileEntries.length - 1) { - if (position !== 0) { - newSelection = this.state.fileEntries[position - 1].filename; + + } + + private isDirectory(path: string): boolean { + for (var fileEntry of this.state.fileResult.files) { + if (fileEntry.pathname === path) { + return fileEntry.isDirectory; + } + } + return false; + } + private isFileInList(files: FileEntry[], file: string) { + + let hasSelection = false; + if (file === "") return true; + for (var listFile of files) { + if (listFile.pathname === file) { + hasSelection = true; + break; + } + } + return hasSelection; + } + private getFileEntry(files: FileEntry[], file: string): FileEntry | undefined { + + if (file === "") return undefined; + for (var listFile of files) { + if (listFile.pathname === file) { + return listFile; + } + } + return undefined; + } + + onSelectValue(fileEntry: FileEntry) { + this.requestScroll = true; + this.setState({ + selectedFile: fileEntry.pathname, + selectedFileIsDirectory: fileEntry.isDirectory, + selectedFileProtected: fileEntry.isProtected, + hasSelection: this.isFileInList(this.state.fileResult.files, fileEntry.pathname) + }) + } + onDoubleClickValue(selectedFile: string) { + this.openSelectedFile(); + } + + handleMenuOpen(event: React.MouseEvent) { + this.setState({ menuAnchorEl: event.currentTarget }); + + } + handleMenuClose() { + this.setState({ menuAnchorEl: null }); + } + handleDelete() { + if (this.state.selectedFileProtected) { + return; + } + this.setState({ openConfirmDeleteDialog: true }); + } + handleConfirmDelete() { + if (this.state.selectedFileProtected) { + return; + } + this.setState({ openConfirmDeleteDialog: false }); + if (this.state.hasSelection) { + let selectedFile = this.state.selectedFile; + let position = -1; + for (let i = 0; i < this.state.fileResult.files.length; ++i) { + let file = this.state.fileResult.files[i]; + if (file.pathname === selectedFile) { + position = i; + } + } + let newSelection: FileEntry | undefined = undefined; + if (position >= 0 && position < this.state.fileResult.files.length - 1) { + newSelection = this.state.fileResult.files[position + 1]; + } else if (position === this.state.fileResult.files.length - 1) { + if (position !== 0) { + newSelection = this.state.fileResult.files[position - 1]; + } + } - } - - this.model.deleteUserFile(this.state.selectedFile) - .then( - () => { - this.setState({ selectedFile: newSelection, hasSelection: newSelection !== "" }); - this.requestFiles(this.state.navDirectory); - } - ).catch( - (e: any) => { - this.model.showAlert(e.toString()); - } - ); - } - } - - private wantsScrollRef: boolean = true; - - navigate(relativeDirectory: string) { - this.requestFiles(relativeDirectory); - this.setState({ navDirectory: relativeDirectory }); - - } - renderBreadcrumbs() { - if (this.state.navDirectory === "") { - return (); - } - let breadcrumbs: React.ReactElement[] = [( - - ) - ]; - let directories = this.state.navDirectory.split("/"); - let target = ""; - for (let i = 0; i < directories.length - 1; ++i) { - target = pathConcat(target, directories[i]); - let myTarget = target; - breadcrumbs.push(( - / - - ) - ); - breadcrumbs.push(( - - )); - } - { - let lastdirectory = directories[directories.length - 1]; - breadcrumbs.push(( - / - - ) - ); - breadcrumbs.push(( -
- {lastdirectory} -
- )); - - } - return ( -
- -
- {breadcrumbs} -
- -
- ); - } - - getDefaultPath(): string { - try { - let storage = window.localStorage; - let result = storage.getItem("fpDefaultPath"); - if (result) - { - return result; - } - } catch (e) - { - - } - - return this.state.navDirectory; - } - setDefaultPath(path: string) { - try { - let storage = window.localStorage; - storage.setItem("fpDefaultPath",path); - } catch(e) { - - } - } - hasSelectedFileOrFolder(): boolean { - return this.state.hasSelection && this.state.selectedFile !== ""; - } - getFileExtensionList(uiFileProperty: UiFileProperty): string { - let result = ""; - for (var fileType of uiFileProperty.fileTypes) - { - if (fileType.fileExtension !== "" && fileType.fileExtension !== ".zip") - { - if (result !== "") result = result + ","; - result += fileType.fileExtension; - } - } - return result; - } - private getIcon(fileEntry: FileEntry) - { - if (fileEntry.filename === "") - { - return (); - } - if (fileEntry.isDirectory) - { - return ( - - ); - } - if (isAudioFile(fileEntry.filename)) - { - return (); - } - return (); - } - - render() { - let classes = this.props.classes; - let columnWidth = this.state.columnWidth; - let okButtonText = "Select"; - if (this.state.hasSelection && this.state.selectedFileIsDirectory) - { - okButtonText = "Open"; - } - return this.props.open && - ( - { - this.props.onCancel(); - }} - onEnterKey={()=> { - this.openSelectedFile(); - }} - open={this.props.open} tag="fileProperty" - fullWidth maxWidth="md" - PaperProps={ - this.state.fullScreen ? - {} - : - { style: { - minHeight: "90%", - maxHeight: "90%", - } }} - > - - - { this.props.onCancel(); }} - > - - - - {this.props.fileProperty.label} - - - { this.onNewFolder(); }} - > - - - - - { this.handleMenuOpen(ev); }} - > - - - { this.handleMenuClose(); }} - > - { this.handleMenuClose(); this.onNewFolder(); }}>New folder - {this.hasSelectedFileOrFolder() && ()} - {this.hasSelectedFileOrFolder() && ( { this.handleMenuClose();this.onMove(); }}>Move)} - {this.hasSelectedFileOrFolder() && ( { this.handleMenuClose();this.onRename(); }}>Rename)} - - -
- {this.renderBreadcrumbs()} -
-
- - -
this.onMeasureRef(element)} - style={{ - flex: "1 1 100%", display: "flex", flexFlow: "row wrap", - justifyContent: "flex-start", alignContent: "flex-start", paddingLeft: 16, paddingBottom: 16 - }}> + this.model.deleteUserFile(this.state.selectedFile) + .then( + () => { + if (newSelection) { - (this.state.columns !== 0) && // don't render until we have number of columns derived from layout. - this.state.fileEntries.map( - (value: FileEntry, index: number) => { - let displayValue = value.filename; - if (displayValue === "") { - displayValue = ""; - } else { - if (value.isDirectory) - { - displayValue = pathFileName(displayValue); - } else { - displayValue = pathFileName(displayValue); - } - } - let selected = value.filename === this.state.selectedFile; - let selectBg = selected ? "rgba(0,0,0,0.15)" : "rgba(0,0,0,0.0)"; - if (isDarkMode()) { - selectBg = selected ? "rgba(255,255,255,0.10)" : "rgba(0,0,0,0.0)"; - } - let scrollRef: ((element: HTMLDivElement | null) => void) | undefined = undefined; - if (selected) { - scrollRef = (element) => { this.onScrollRef(element) }; - } + this.setState({ + selectedFile: newSelection.pathname, + selectedFileIsDirectory: newSelection.isDirectory, + selectedFileProtected: newSelection.isProtected, + hasSelection: true + }); + } else { + this.setState({ + selectedFile: "", + selectedFileIsDirectory: false, + selectedFileProtected: true, + hasSelection: false + }); - return ( - this.onSelectValue(value.filename,value.isDirectory)} onDoubleClick={() => { this.onDoubleClickValue(value.filename); }} - > -
-
- {this.getIcon(value)} - {displayValue} -
- - ); - } - ) - } -
- - - -
- this.handleDelete()} > - - - - -
 
- - - -
-
- { - this.setState({ openUploadFileDialog: false }); } + this.requestFiles(this.state.navDirectory); } - uploadPage={ - "uploadUserFile?directory=" + encodeURIComponent( - pathConcat(this.props.fileProperty.directory,this.state.navDirectory) - ) - + "&ext=" - + encodeURIComponent(this.getFileExtensionList(this.props.fileProperty)) + ).catch( + (e: any) => { + this.model.showAlert(e.toString()); } - onUploaded={() => { this.requestFiles(this.state.navDirectory); }} - fileProperty={this.props.fileProperty} + ); + } + } + + private wantsScrollRef: boolean = true; + + navigate(relativeDirectory: string) { + this.requestFiles(relativeDirectory); + this.setState({ navDirectory: relativeDirectory }); + + } + renderBreadcrumbs() { + if (this.state.navDirectory === "") { + return (); + } + let breadcrumbs: React.ReactElement[] = [( + + ) + ]; + + for (let i = 1; i < this.state.fileResult.breadcrumbs.length - 1; ++i) { + let breadcrumb: BreadcrumbEntry = this.state.fileResult.breadcrumbs[i]; + + breadcrumbs.push(( + / + + ) + ); + breadcrumbs.push(( + + )); + } + if (this.state.fileResult.breadcrumbs.length > 1) { + let lastdirectory = this.state.fileResult.breadcrumbs[this.state.fileResult.breadcrumbs.length - 1]; + breadcrumbs.push(( + / + + ) + ); + breadcrumbs.push(( +
+ {lastdirectory.displayName} +
+ )); + + } + return ( +
+ +
+ {breadcrumbs} +
+ +
+ ); + } + + getDefaultPath(): string { + try { + let storage = window.localStorage; + let result = storage.getItem("fpDefaultPath"); + if (result) { + return result; + } + } catch (e) { + + } + + return this.state.navDirectory; + } + setDefaultPath(path: string) { + try { + let storage = window.localStorage; + storage.setItem("fpDefaultPath", path); + } catch (e) { + + } + } + hasSelectedFileOrFolder(): boolean { + return this.state.hasSelection && this.state.selectedFile !== ""; + } + getFileExtensionList(uiFileProperty: UiFileProperty): string { + let result = ""; + for (var fileType of uiFileProperty.fileTypes) { + if (fileType.fileExtension !== "" && fileType.fileExtension !== ".zip") { + if (result !== "") result = result + ","; + result += fileType.fileExtension; + } + } + return result; + } + private getIcon(fileEntry: FileEntry) { + if (fileEntry.pathname === "") { + return (); + } + if (fileEntry.isDirectory) { + return ( + + ); + } + if (isAudioFile(fileEntry.pathname)) { + return (); + } + return (); + } + + render() { + let classes = this.props.classes; + let columnWidth = this.state.columnWidth; + let okButtonText = "Select"; + if (this.state.hasSelection && this.state.selectedFileIsDirectory) { + okButtonText = "Open"; + } + let protectedDirectory = this.state.fileResult.isProtected; + let protectedItem = true; + if (this.state.hasSelection) + { + protectedItem = this.state.selectedFileProtected; + } + let canMoveOrRename = this.hasSelectedFileOrFolder() && !protectedItem; + + return this.props.open && + ( + { - this.setState({ openConfirmDeleteDialog: false }); + this.props.onCancel(); }} - - /> - { - this.state.newFolderDialogOpen && ( - { this.setState({ newFolderDialogOpen: false }); this.onExecuteNewFolder(newName) }} - onClose={() => { this.setState({ newFolderDialogOpen: false }); }} - acceptActionName="OK" - /> - ) - } - { - this.state.renameDialogOpen && ( - { this.setState({ renameDialogOpen: false }); this.onExecuteRename(newName) }} - onClose={() => { this.setState({ renameDialogOpen: false }); }} - acceptActionName="OK" - /> - - ) - } - { - this.state.moveDialogOpen && ( - ( - {this.setState({moveDialogOpen: false});}} - onOk={ - (path) => { - this.setState({moveDialogOpen: false}); - this.setDefaultPath(path); - this.onExecuteMove(path); - } + onEnterKey={() => { + this.openSelectedFile(); + }} + open={this.props.open} tag="fileProperty" + fullWidth maxWidth="md" + PaperProps={ + this.state.fullScreen ? + {} + : + { + style: { + minHeight: "90%", + maxHeight: "90%", } - + }} + > + + + { this.props.onCancel(); }} + > + + + + {this.props.fileProperty.label} + + + { this.onNewFolder(); }} + disabled={protectedDirectory} + > + + + + + { this.handleMenuOpen(ev); }} + disabled={protectedDirectory} + + > + + + { this.handleMenuClose(); }} + > + { this.handleMenuClose(); this.onNewFolder(); }}>New folder + {canMoveOrRename && ()} + {canMoveOrRename && ( { this.handleMenuClose(); this.onMove(); }}>Move)} + {canMoveOrRename && this.hasSelectedFileOrFolder() && !protectedItem && ( { this.handleMenuClose(); this.onRename(); }}>Rename)} + + +
+ {this.renderBreadcrumbs()} +
+
+ + +
this.onMeasureRef(element)} + style={{ + flex: "1 1 100%", display: "flex", flexFlow: "row wrap", + justifyContent: "flex-start", alignContent: "flex-start", paddingLeft: 16, paddingBottom: 16 + }}> + { + (this.state.columns !== 0) && // don't render until we have number of columns derived from layout. + this.state.fileResult.files.map( + (value: FileEntry, index: number) => { + let displayValue = value.displayName; + if (displayValue === "") { + displayValue = ""; + } + let selected = value.pathname === this.state.selectedFile; + let selectBg = selected ? "rgba(0,0,0,0.15)" : "rgba(0,0,0,0.0)"; + if (isDarkMode()) { + selectBg = selected ? "rgba(255,255,255,0.10)" : "rgba(0,0,0,0.0)"; + } + let scrollRef: ((element: HTMLDivElement | null) => void) | undefined = undefined; + if (selected) { + scrollRef = (element) => { this.onScrollRef(element) }; + } + + return ( + this.onSelectValue(value)} + onDoubleClick={() => { this.onDoubleClickValue(value.pathname); }} + > +
+
+ {this.getIcon(value)} + {displayValue} +
+ + ); + } + ) + } +
+ + + +
+ this.handleDelete()} > + + + + +
 
+ + + +
+
+ { + this.setState({ openUploadFileDialog: false }); + } + } + uploadPage={ + "uploadUserFile?directory=" + encodeURIComponent( + pathConcat(this.props.fileProperty.directory, this.state.navDirectory) + ) + + "&ext=" + + encodeURIComponent(this.getFileExtensionList(this.props.fileProperty)) + } + onUploaded={() => { this.requestFiles(this.state.navDirectory); }} + fileProperty={this.props.fileProperty} + + + /> + this.handleConfirmDelete()} + onClose={() => { + this.setState({ openConfirmDeleteDialog: false }); + }} + + /> + { + this.state.newFolderDialogOpen && ( + { this.setState({ newFolderDialogOpen: false }); this.onExecuteNewFolder(newName) }} + onClose={() => { this.setState({ newFolderDialogOpen: false }); }} + acceptActionName="OK" /> ) - ) - } - - ); - } - openSelectedFile(): void { - if (this.isDirectory(this.state.selectedFile)) { - let directoryName = pathFileName(this.state.selectedFile); - let navDirectory = pathConcat(this.state.navDirectory, directoryName); - this.requestFiles(navDirectory); - this.setState({ navDirectory: navDirectory }); - } else { - this.props.onOk(this.props.fileProperty, this.state.selectedFile); + } + { + this.state.renameDialogOpen && ( + { this.setState({ renameDialogOpen: false }); this.onExecuteRename(newName) }} + onClose={() => { this.setState({ renameDialogOpen: false }); }} + acceptActionName="OK" + /> + + ) + } + { + this.state.moveDialogOpen && ( + ( + { this.setState({ moveDialogOpen: false }); }} + onOk={ + (path) => { + this.setState({ moveDialogOpen: false }); + this.setDefaultPath(path); + this.onExecuteMove(path); + } + } + + /> + ) + ) + } + + ); } - } - - private renameDefaultName(): string { - let name = this.state.selectedFile; - if (name === "") return ""; - if (this.isDirectory(name)) - { - return pathFileName(name); - } else { - return pathFileNameOnly(name); - } - } - private onMove(): void { - this.setState({ moveDialogOpen: true }); - } - private onExecuteMove(newDirectory: string) - { - let fileName = pathFileName(this.state.selectedFile); - let oldFilePath = pathConcat(this.state.navDirectory,fileName); - let newFilePath = pathConcat(newDirectory,fileName); - - this.model.renameFilePropertyFile(oldFilePath,newFilePath,this.props.fileProperty) - .then(()=>{ - this.requestFiles(this.state.navDirectory); - }) - .catch((e)=>{ - this.model.showAlert(e.toString()); - }); - - } - - private onRename(): void { - this.setState({ renameDialogOpen: true }); - } - private onExecuteRename(newName: string) { - let newPath: string = ""; - let oldPath: string = ""; - if (this.isDirectory(this.state.selectedFile)) - { - let oldName = pathFileName(this.state.selectedFile); - if (oldName === newName) return; - oldPath = pathConcat(this.state.navDirectory,oldName); - newPath = pathConcat(this.state.navDirectory,newName);; - } else { - let oldName = pathFileNameOnly(this.state.selectedFile); - if (oldName === newName) return; - let extension = pathExtension(this.state.selectedFile); - oldPath = pathConcat(this.state.navDirectory,oldName+extension); - newPath = pathConcat(this.state.navDirectory,newName + extension); - } - this.model.renameFilePropertyFile(oldPath,newPath,this.props.fileProperty) - .then((newPath)=>{ - this.setState({selectedFile: newPath}); - this.requestFiles(this.state.navDirectory); - this.requestScroll = true - - }) - .catch((e) =>{ - this.model.showAlert(e.toString()); - }); - } - - private onNewFolder(): void { - this.setState({ newFolderDialogOpen: true }); - } - - private onExecuteNewFolder(newName: string) { - this.model.createNewSampleDirectory(pathConcat(this.state.navDirectory,newName), this.props.fileProperty) - .then((newPath) => { - this.setState({selectedFile: newPath}); - this.requestFiles(this.state.navDirectory); - this.requestScroll = true - }) - .catch((e) => { - this.model.showAlert(e.toString()); + openSelectedFile(): void { + if (this.isDirectory(this.state.selectedFile)) { + this.requestFiles(this.state.selectedFile); + this.setState({ navDirectory: this.state.selectedFile }); + } else { + this.props.onOk(this.props.fileProperty, this.state.selectedFile); } - ); - } -}); \ No newline at end of file + } + + private renameDefaultName(): string { + let name = this.state.selectedFile; + if (name === "") return ""; + if (this.isDirectory(name)) { + return pathFileName(name); + } else { + return pathFileNameOnly(name); + } + } + private onMove(): void { + this.setState({ moveDialogOpen: true }); + } + private onExecuteMove(newDirectory: string) { + let fileName = pathFileName(this.state.selectedFile); + let oldFilePath = pathConcat(this.state.navDirectory, fileName); + let newFilePath = pathConcat(newDirectory, fileName); + + this.model.renameFilePropertyFile(oldFilePath, newFilePath, this.props.fileProperty) + .then(() => { + this.requestFiles(this.state.navDirectory); + }) + .catch((e) => { + this.model.showAlert(e.toString()); + }); + + } + + private onRename(): void { + this.setState({ renameDialogOpen: true }); + } + private onExecuteRename(newName: string) { + let newPath: string = ""; + let oldPath: string = ""; + if (this.isDirectory(this.state.selectedFile)) { + let oldName = pathFileName(this.state.selectedFile); + if (oldName === newName) return; + oldPath = pathConcat(this.state.navDirectory, oldName); + newPath = pathConcat(this.state.navDirectory, newName);; + } else { + let oldName = pathFileNameOnly(this.state.selectedFile); + if (oldName === newName) return; + let extension = pathExtension(this.state.selectedFile); + oldPath = pathConcat(this.state.navDirectory, oldName + extension); + newPath = pathConcat(this.state.navDirectory, newName + extension); + } + this.model.renameFilePropertyFile(oldPath, newPath, this.props.fileProperty) + .then((newPath) => { + this.setState({ selectedFile: newPath }); + this.requestFiles(this.state.navDirectory); + this.requestScroll = true + + }) + .catch((e) => { + this.model.showAlert(e.toString()); + }); + } + + private onNewFolder(): void { + this.setState({ newFolderDialogOpen: true }); + } + + private onExecuteNewFolder(newName: string) { + this.model.createNewSampleDirectory(pathConcat(this.state.navDirectory, newName), this.props.fileProperty) + .then((newPath) => { + this.setState({ + selectedFile: newPath, + selectedFileIsDirectory: + true,selectedFileProtected: false + }); + this.requestFiles(this.state.navDirectory); + this.requestScroll = true + }) + .catch((e) => { + this.model.showAlert(e.toString()); + } + ); + } + }); \ No newline at end of file diff --git a/react/src/Lv2Plugin.tsx b/react/src/Lv2Plugin.tsx index dbf9538..c451ba8 100644 --- a/react/src/Lv2Plugin.tsx +++ b/react/src/Lv2Plugin.tsx @@ -246,6 +246,8 @@ export class UiFileProperty { this.index = input.index; this.portGroup = input.portGroup; this.resourceDirectory = input.resourceDirectory ?? ""; + this.modDirectories = input.modDirectories; + this.useLegacyModDirectory = input.useLegacyModDirectory; return this; } static deserialize_array(input: any): UiFileProperty[] { @@ -297,6 +299,8 @@ export class UiFileProperty { index: number = -1; portGroup: string = ""; resourceDirectory: string = ""; + modDirectories: string[] = []; + useLegacyModDirectory: boolean = false; }; export class Lv2Plugin implements Deserializable { diff --git a/react/src/ModFileTypes.tsx b/react/src/ModFileTypes.tsx new file mode 100644 index 0000000..2624106 --- /dev/null +++ b/react/src/ModFileTypes.tsx @@ -0,0 +1,60 @@ +// Copyright (c) 2022 Robin Davies +// +// Permission is hereby granted, free of charge, to any person obtaining a copy of +// this software and associated documentation files (the "Software"), to deal in +// the Software without restriction, including without limitation the rights to +// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +// the Software, and to permit persons to whom the Software is furnished to do so, +// subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + + +export interface ModDirectory { + modType: string; + pipedalPath: string; + displayName: string; + defaultFileExtensions: string[]; +}; + + +export const modDirectories: ModDirectory[] = [ + {modType: "audioloop", pipedalPath: "shared/audio/Loops",displayName: "Loops", defaultFileExtensions: ["audio/*"]}, // Audio Loops, meant to be used for looper-style plugins + //"audiorecording","shared/audio/Audio Recordings", defaultFileExtensions: ["audio/*"]}, : Audio Recordings, triggered by plugins and stored in the unit + {modType: "audiosample", pipedalPath: "shared/audio/Samples", displayName: "Samples", defaultFileExtensions: ["audio/*"]}, // One-shot Audio Samples, meant to be used for sampler-style plugins + {modType: "audiotrack", pipedalPath: "shared/audio/Tracks",displayName: "Tracks", defaultFileExtensions: ["audio/*"]}, // Audio Tracks, meant to be used as full-performance/song or backtrack + {modType: "cabsim", pipedalPath: "CabIR", displayName: "Cab IRs", defaultFileExtensions: ["audio/*"]}, // Speaker Cabinets, meant as small IR audio files + + /// - h2drumkit: Hydrogen Drumkits, must use h2drumkit file extension + {modType: "ir", pipedalPath: "ReverbImpulseFiles", displayName: "Impulse Responses", defaultFileExtensions: ["audio/*"]}, // Impulse Responses + {modType: "midiclip", pipedalPath: "shared/midiClips",displayName: "MIDI Clips", defaultFileExtensions: [".mid", ".midi"]}, // MIDI Clips, to be used in sync with host tempo, must have mid or midi file extension + {modType: "midisong", pipedalPath: "shared/midiSongs", displayName: "MIDI Songs", defaultFileExtensions: [".mid", ".midi"]}, // MIDI Songs, meant to be used as full-performance/song or backtrack + {modType: "sf2", pipedalPath: "shared/sf2",displayName: "Sound Fonts", defaultFileExtensions: ["sf2", "sf3"]}, // SF2 Instruments, must have sf2 or sf3 file extension + {modType: "sfz", pipedalPath: "shared/sfz",displayName: "Sfz Files", defaultFileExtensions: ["sfz"]}, // SFZ Instruments, must have sfz file extension + // extensions observed in the field. + {modType: "audio", pipedalPath: "shared/audio", displayName: "Audio", defaultFileExtensions: ["audio/*"]}, // all audio files (Ratatoille) + {modType: "nammodel", pipedalPath: "NeuralAmpModels", displayName: "Neural Amp Models", defaultFileExtensions: [".nam"]}, // Ratatoille, Mike's NAM. + {modType: "aidadspmodel", pipedalPath: "shared/aidaaix", displayName: "AIDA IAX Models", defaultFileExtensions: [".json", ".aidaiax"]}, // Ratatoille + {modType: "mlmodel", pipedalPath: "ToobMlModels", displayName: "ML Models", defaultFileExtensions: [".json"]}, // + +]; + +export function getModDirectory(modFileType: string): ModDirectory | undefined { + for (let i = 0; i < modDirectories.length; ++i) + { + if (modDirectories[i].modType === modFileType) + { + return modDirectories[i]; + } + } + return undefined; +} \ No newline at end of file diff --git a/react/src/PiPedalModel.tsx b/react/src/PiPedalModel.tsx index 196688c..fa3ed30 100644 --- a/react/src/PiPedalModel.tsx +++ b/react/src/PiPedalModel.tsx @@ -73,8 +73,20 @@ export enum ReconnectReason { export type ControlValueChangedHandler = (key: string, value: number) => void; export interface FileEntry { - filename: string; + pathname: string; + displayName: string; isDirectory: boolean; + isProtected: boolean; +}; + +export interface BreadcrumbEntry { + pathname: string; + displayName: string; +}; +export class FileRequestResult { + files: FileEntry[] = []; + isProtected: boolean = false; + breadcrumbs: BreadcrumbEntry[] = []; }; export type PluginPresetsChangedHandler = (pluginUri: string) => void; @@ -1989,9 +2001,9 @@ export class PiPedalModel //implements PiPedalModel return nullCast(this.webSocket) .request('requestFileList', piPedalFileProperty); } - requestFileList2(relativeDirectoryPath: string, piPedalFileProperty: UiFileProperty): Promise { + requestFileList2(relativeDirectoryPath: string, piPedalFileProperty: UiFileProperty): Promise { return nullCast(this.webSocket) - .request('requestFileList2', + .request('requestFileList2', { relativePath: relativeDirectoryPath, fileProperty: piPedalFileProperty } ); } diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index d753aaf..6fdd18d 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -157,6 +157,7 @@ else() endif() set (PIPEDAL_SOURCES + ModFileTypes.cpp ModFileTypes.hpp PatchPropertyWriter.hpp PresetBundle.cpp PresetBundle.hpp RealtimeMidiEventType.hpp @@ -637,6 +638,7 @@ add_executable(pipedalconfig CommandLineParser.hpp PiPedalException.hpp ConfigMain.cpp + ModFileTypes.cpp ModFileTypes.hpp PiPedalConfiguration.hpp PiPedalConfiguration.cpp JackServerSettings.hpp JackServerSettings.cpp SystemConfigFile.hpp SystemConfigFile.cpp diff --git a/src/ConfigMain.cpp b/src/ConfigMain.cpp index 8170388..4738203 100644 --- a/src/ConfigMain.cpp +++ b/src/ConfigMain.cpp @@ -23,6 +23,7 @@ #include #include "CommandLineParser.hpp" #include "SystemConfigFile.hpp" +#include "ModFileTypes.hpp" #include #include @@ -951,6 +952,7 @@ void Install(const fs::path &programPrefix, const std::string endpointAddress) } try { + // apply policy changes we dropped into the polkit configuration files (allows pipedal_d to use NetworkManager dbus apis). silentSysExec(SYSTEMCTL_BIN " restart polkit.service"); @@ -1158,6 +1160,8 @@ void Install(const fs::path &programPrefix, const std::string endpointAddress) sysExec(SYSTEMCTL_BIN " daemon-reload"); FixPermissions(); + ModFileTypes::CreateDefaultDirectories("/var/pipedal/audio_uploads"); + StopService(false); AvahiInstall(); diff --git a/src/FileEntry.cpp b/src/FileEntry.cpp index f9e787e..2a6da62 100644 --- a/src/FileEntry.cpp +++ b/src/FileEntry.cpp @@ -22,7 +22,20 @@ using namespace pipedal; JSON_MAP_BEGIN(FileEntry) - JSON_MAP_REFERENCE(FileEntry,filename) + JSON_MAP_REFERENCE(FileEntry,pathname) + JSON_MAP_REFERENCE(FileEntry,displayName) + JSON_MAP_REFERENCE(FileEntry,isProtected) JSON_MAP_REFERENCE(FileEntry,isDirectory) - +JSON_MAP_END() + +JSON_MAP_BEGIN(BreadcrumbEntry) + JSON_MAP_REFERENCE(BreadcrumbEntry,pathname) + JSON_MAP_REFERENCE(BreadcrumbEntry,displayName) +JSON_MAP_END() + + +JSON_MAP_BEGIN(FileRequestResult) + JSON_MAP_REFERENCE(FileRequestResult,files) + JSON_MAP_REFERENCE(FileRequestResult,isProtected) + JSON_MAP_REFERENCE(FileRequestResult,breadcrumbs) JSON_MAP_END() diff --git a/src/FileEntry.hpp b/src/FileEntry.hpp index 0acf5be..f1dc3ff 100644 --- a/src/FileEntry.hpp +++ b/src/FileEntry.hpp @@ -26,15 +26,33 @@ namespace pipedal { class FileEntry { public: FileEntry() { } - FileEntry(std::string filename,bool isDirectory) - :filename_(filename), isDirectory_(isDirectory) + FileEntry(const std::string&pathname,const std::string &displayName,bool isDirectory, bool isProtected = false) + :pathname_(pathname), displayName_(displayName), isDirectory_(isDirectory),isProtected_(isProtected) { } - std::string filename_; + std::string pathname_; + std::string displayName_; bool isDirectory_ = false; + bool isProtected_ = false; DECLARE_JSON_MAP(FileEntry); }; + class BreadcrumbEntry { + public: + std::string pathname_; + std::string displayName_; + + DECLARE_JSON_MAP(BreadcrumbEntry); + }; + + class FileRequestResult { + public: + std::vector files_; + bool isProtected_ = false; + std::vector breadcrumbs_; + DECLARE_JSON_MAP(FileRequestResult); + + }; } \ No newline at end of file diff --git a/src/ModFileTypes.cpp b/src/ModFileTypes.cpp new file mode 100644 index 0000000..e9c6737 --- /dev/null +++ b/src/ModFileTypes.cpp @@ -0,0 +1,156 @@ +// Copyright (c) 2024 Robin Davies +// +// Permission is hereby granted, free of charge, to any person obtaining a copy of +// this software and associated documentation files (the "Software"), to deal in +// the Software without restriction, including without limitation the rights to +// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +// the Software, and to permit persons to whom the Software is furnished to do so, +// subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#include "ModFileTypes.hpp" +#include "util.hpp" +#include +#include +#include "ss.hpp" + +using namespace pipedal; + +const std::vector ModFileTypes::ModDirectories = + { + {"audioloop", "shared/audio/Loops", "Loops", {"audio/*"}}, // Audio Loops, meant to be used for looper-style plugins + //"audiorecording","shared/audio/Audio Recordings", {"audio/*"}}, : Audio Recordings, triggered by plugins and stored in the unit + {"audiosample", "shared/audio/Samples", "Samples", {"audio/*"}}, // One-shot Audio Samples, meant to be used for sampler-style plugins + {"audiotrack", "shared/audio/Tracks", "Tracks", {"audio/*"}}, // Audio Tracks, meant to be used as full-performance/song or backtrack + {"cabsim", "CabIR", "Cab IRs", {"audio/*"}}, // Speaker Cabinets, meant as small IR audio files + + /// - h2drumkit: Hydrogen Drumkits, must use h2drumkit file extension + {"ir", "ReverbImpulseFiles", "Impulse Responses", {"audio/*"}}, // Impulse Responses + {"midiclip", "shared/midiClips", "MIDI Clips", {".mid", ".midi"}}, // MIDI Clips, to be used in sync with host tempo, must have mid or midi file extension + {"midisong", "shared/midiSongs", "MIDI Songs", {".mid", ".midi"}}, // MIDI Songs, meant to be used as full-performance/song or backtrack + {"sf2", "shared/sf2", "Sound Fonts", {"sf2", "sf3"}}, // SF2 Instruments, must have sf2 or sf3 file extension + {"sfz", "shared/sfz", "Sfz Files", {"sfz"}}, // SFZ Instruments, must have sfz file extension + // extensions observed in the field. + {"audio", "shared/audio", "Audio", {"audio/*"}}, // all audio files (Ratatoille) + {"nammodel", "NeuralAmpModels", "Neural Amp Models", {".nam"}}, // Ratatoille, Mike's NAM. + {"aidadspmodel", "shared/aidaaix", "AIDA IAX Models", {".json", ".aidaiax"}}, // Ratatoille + {"mlmodel", "ToobMlModels", "ML Models", {".json"}}, // + // +}; + +const ModFileTypes::ModDirectory *ModFileTypes::GetModDirectory(const std::string &type) +{ + for (const ModFileTypes::ModDirectory &modType : ModFileTypes::ModDirectories) + { + if (modType.modType == type) + { + return &modType; + } + } + return nullptr; +} + +ModFileTypes::ModFileTypes(const std::string &fileTypes) +{ + std::vector types = split(fileTypes, ','); + for (const auto &type : types) + { + const ModDirectory *wellKnownType = GetModDirectory(type); + if (wellKnownType) + { + rootDirectories_.push_back(type); + } + else + { + fileTypes_.push_back(type); + } + } + // for Ratatoille.lv2. + // If rootDirectories contains "nammodel" and fileTypes contains "json", add "mlmodel" too. + // if (contains(rootDirectories_,"nammodel") && contains(fileTypes_,"json")) + // { + // if (!contains(rootDirectories_,"mlmodel")) + // { + // rootDirectories_.push_back("mlmodel"); + // } + // } + if (fileTypes_.empty()) + { + for (const auto &type : types) + { + const ModDirectory *wellKnownType = GetModDirectory(type); + if (wellKnownType) + { + for (const std::string &newType : wellKnownType->defaultFileExtensions) + { + bool found = false; + for (const std::string &oldType : fileTypes_) + { + if (newType == oldType) + { + found = true; + break; + } + } + if (!found) + { + fileTypes_.push_back(newType); + } + } + } + } + } +} + +static std::filesystem::path getModDirectoryPath( + const std::filesystem::path &rootDirectory, + const std::string &modType) +{ + auto wellKnownType = ModFileTypes::GetModDirectory(modType); + if (!wellKnownType) + { + throw std::runtime_error(SS("Can't find modFileType " << modType)); + } + return rootDirectory / wellKnownType->pipedalPath; +} +void ModFileTypes::CreateDefaultDirectories(const std::filesystem::path &rootDirectory) +{ + namespace fs = std::filesystem; + using namespace std; + try + { + for (const auto &modType : ModDirectories) + { + fs::path path = rootDirectory / modType.pipedalPath; + + fs::create_directories(path); + } + + if (!fs::exists(rootDirectory / "shared" / "audio" / "Cab IR Files")) + { + fs::create_symlink( + getModDirectoryPath(rootDirectory, "cabsim"), + rootDirectory / "shared" / "audio" / "Cab IR Files"); + } + if (!fs::exists(rootDirectory / "shared" / "audio" / "Impulse Responses")) + { + fs::create_symlink( + getModDirectoryPath(rootDirectory, "ir"), + rootDirectory / "shared" / "audio" / "Impulse Responses"); + } + } + catch (const std::exception &e) + { + cout << "Can't create default MOD directories. " << e.what() << endl; + } +} + diff --git a/src/ModFileTypes.hpp b/src/ModFileTypes.hpp new file mode 100644 index 0000000..bcf49d9 --- /dev/null +++ b/src/ModFileTypes.hpp @@ -0,0 +1,53 @@ +// Copyright (c) 2024 Robin Davies +// +// Permission is hereby granted, free of charge, to any person obtaining a copy of +// this software and associated documentation files (the "Software"), to deal in +// the Software without restriction, including without limitation the rights to +// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +// the Software, and to permit persons to whom the Software is furnished to do so, +// subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#pragma once +#include +#include +#include + +namespace pipedal { + class ModFileTypes { + + public: + ModFileTypes(const std::string&fileTypes); + const std::vector &rootDirectories() { return rootDirectories_; } + const std::vector &fileTypes() { return fileTypes_;} + + private: + std::vector rootDirectories_; + std::vector fileTypes_; + + + public: + class ModDirectory { + public: + const std::string modType; + const std::string pipedalPath; + const std::string displayName; + const std::vector defaultFileExtensions; + }; + + const static std::vector ModDirectories; + static const ModDirectory* GetModDirectory(const std::string&modType); + + static void CreateDefaultDirectories(const std::filesystem::path&rootDirectory); + + }; +} \ No newline at end of file diff --git a/src/PiPedalModel.cpp b/src/PiPedalModel.cpp index 6cbe83f..ace8873 100644 --- a/src/PiPedalModel.cpp +++ b/src/PiPedalModel.cpp @@ -2296,7 +2296,7 @@ std::vector PiPedalModel::GetFileList(const UiFileProperty &filePro return std::vector(); // don't disclose to users what the problem is. } } -std::vector PiPedalModel::GetFileList2(const std::string &relativePath, const UiFileProperty &fileProperty) +FileRequestResult PiPedalModel::GetFileList2(const std::string &relativePath, const UiFileProperty &fileProperty) { try { @@ -2305,7 +2305,7 @@ std::vector PiPedalModel::GetFileList2(const std::string &relativePat catch (const std::exception &e) { Lv2Log::warning("GetFileList() failed: (%s)", e.what()); - return std::vector(); // don't disclose to users what the problem is. + throw; } } diff --git a/src/PiPedalModel.hpp b/src/PiPedalModel.hpp index cc874fb..e8963d7 100644 --- a/src/PiPedalModel.hpp +++ b/src/PiPedalModel.hpp @@ -432,7 +432,7 @@ namespace pipedal void SetUpdatePolicy(UpdatePolicyT updatePolicy); void ForceUpdateCheck(); std::vector GetFileList(const UiFileProperty &fileProperty); - std::vector GetFileList2(const std::string &relativePath, const UiFileProperty &fileProperty); + FileRequestResult GetFileList2(const std::string &relativePath, const UiFileProperty &fileProperty); void DeleteSampleFile(const std::filesystem::path &fileName); std::string CreateNewSampleDirectory(const std::string &relativePath, const UiFileProperty &uiFileProperty); diff --git a/src/PiPedalSocket.cpp b/src/PiPedalSocket.cpp index 67bd417..612ee1c 100644 --- a/src/PiPedalSocket.cpp +++ b/src/PiPedalSocket.cpp @@ -1589,8 +1589,8 @@ public: { FileRequestArgs requestArgs; pReader->read(&requestArgs); - std::vector list = this->model.GetFileList2(requestArgs.relativePath_, requestArgs.fileProperty_); - this->Reply(replyTo, "requestFileList2", list); + FileRequestResult result = this->model.GetFileList2(requestArgs.relativePath_, requestArgs.fileProperty_); + this->Reply(replyTo, "requestFileList2", result); } else if (message == "newPreset") { diff --git a/src/PiPedalUI.cpp b/src/PiPedalUI.cpp index 3a2d637..03cb073 100644 --- a/src/PiPedalUI.cpp +++ b/src/PiPedalUI.cpp @@ -465,6 +465,8 @@ JSON_MAP_REFERENCE(UiFileProperty, patchProperty) JSON_MAP_REFERENCE(UiFileProperty, fileTypes) JSON_MAP_REFERENCE(UiFileProperty, portGroup) JSON_MAP_REFERENCE(UiFileProperty, resourceDirectory) +JSON_MAP_REFERENCE(UiFileProperty, modDirectories) +JSON_MAP_REFERENCE(UiFileProperty, useLegacyModDirectory) JSON_MAP_END() JSON_MAP_BEGIN(UiFrequencyPlot) diff --git a/src/PiPedalUI.hpp b/src/PiPedalUI.hpp index 6c99527..b6e96a6 100644 --- a/src/PiPedalUI.hpp +++ b/src/PiPedalUI.hpp @@ -114,6 +114,8 @@ namespace pipedal { std::string patchProperty_; std::string portGroup_; std::string resourceDirectory_; + std::vector modDirectories_; + bool useLegacyModDirectory_= false; public: using ptr = std::shared_ptr; UiFileProperty() { } @@ -121,9 +123,17 @@ namespace pipedal { UiFileProperty(const std::string&name, const std::string&patchProperty,const std::string &directory); + std::vector& modDirectories() { return modDirectories_; } + const std::vector& modDirectories() const { return modDirectories_; } + + bool useLegacyModDirectory() const { return useLegacyModDirectory_; } + void useLegacyModDirectory(bool value) { useLegacyModDirectory_ = value; } const std::string &label() const { return label_; } int32_t index() const { return index_; } + const std::string &directory() const { return directory_; } + void directory(const std::string &path) { directory_ = path; } + const std::string&portGroup() const { return portGroup_; } const std::vector &fileTypes() const { return fileTypes_; } diff --git a/src/PluginHost.cpp b/src/PluginHost.cpp index 9030417..d987f67 100644 --- a/src/PluginHost.cpp +++ b/src/PluginHost.cpp @@ -46,6 +46,7 @@ #include "PiPedalException.hpp" #include "StdErrorCapture.hpp" #include "util.hpp" +#include "ModFileTypes.hpp" #include "Locale.hpp" @@ -118,7 +119,7 @@ void PluginHost::LilvUris::Initialize(LilvWorld *pWorld) core__toggled = lilv_new_uri(pWorld, LV2_CORE__toggled); core__connectionOptional = lilv_new_uri(pWorld, LV2_CORE__connectionOptional); portprops__not_on_gui_property_uri = lilv_new_uri(pWorld, LV2_PORT_PROPS__notOnGUI); - portprops__trigger = lilv_new_uri(pWorld,LV2_PORT_PROPS__trigger); + portprops__trigger = lilv_new_uri(pWorld, LV2_PORT_PROPS__trigger); midi__event = lilv_new_uri(pWorld, LV2_MIDI__MidiEvent); core__designation = lilv_new_uri(pWorld, LV2_CORE__designation); portgroups__group = lilv_new_uri(pWorld, LV2_PORT_GROUPS__group); @@ -192,8 +193,7 @@ void PluginHost::LilvUris::Initialize(LilvWorld *pWorld) dc__format = lilv_new_uri(pWorld, "http://purl.org/dc/terms/format"); - mod__fileTypes = lilv_new_uri(pWorld,"http://moddevices.com/ns/mod#fileTypes"); - + mod__fileTypes = lilv_new_uri(pWorld, "http://moddevices.com/ns/mod#fileTypes"); } void PluginHost::LilvUris::Free() @@ -478,8 +478,7 @@ void PluginHost::Load(const char *lv2Path) const char *pb1 = left->name().c_str(); const char *pb2 = right->name().c_str(); return collator->Compare( - left->name(),right->name()) - < 0; + left->name(), right->name()) < 0; }; std::sort(this->plugins_.begin(), this->plugins_.end(), compare); @@ -625,15 +624,47 @@ std::shared_ptr Lv2PluginInfo::FindWritablePathProperties(PluginHost strLabel, propertyUri.AsUri(), lv2DirectoryName); AutoLilvNodes mod__fileTypes = lilv_world_find_nodes(pWorld, propertyUri, lv2Host->lilvUris->mod__fileTypes, nullptr); - LILV_FOREACH(nodes,i,mod__fileTypes) + LILV_FOREACH(nodes, i, mod__fileTypes) { - // "nam,nammodel" - AutoLilvNode lilvfileType {lilv_nodes_get(mod__fileTypes, i)}; + // "nam,nammodel" + AutoLilvNode lilvfileType{lilv_nodes_get(mod__fileTypes, i)}; std::string fileTypes = lilvfileType.AsString(); + ModFileTypes modFileTypes(fileTypes); - for (std::string&type: split(fileTypes,',')) + for (const std::string &rootDirectory : modFileTypes.rootDirectories()) { - fileProperty->fileTypes().push_back(UiFileType(SS(type << " file"),SS('.' << type))); + fileProperty->modDirectories().push_back(rootDirectory); + } + for (const std::string &type : modFileTypes.fileTypes()) + { + fileProperty->fileTypes().push_back(UiFileType(SS(type << " file"), SS('.' << type))); + } + // Legacy case: audio_uploads/ exists. + + std::filesystem::path bundleDirectoryName = std::filesystem::path(bundle_path()).parent_path().filename(); + std::filesystem::path legacyUploadPath = lv2Host->MapPath(bundleDirectoryName.string()); + + if (std::filesystem::exists(legacyUploadPath)) + { + if (!std::filesystem::exists(legacyUploadPath / ".migrated")) + { + fileProperty->useLegacyModDirectory(true); + fileProperty->directory(bundleDirectoryName); + } + } + if (fileProperty->modDirectories().size() == 0) + { + fileProperty->directory(bundleDirectoryName); + } + else if (fileProperty->modDirectories().size() == 1 && !fileProperty->useLegacyModDirectory()) // no synthetic root. + { + auto modType = ModFileTypes::GetModDirectory(fileProperty->modDirectories()[0]); + if (modType) + { + fileProperty->directory(modType->pipedalPath); + } + } else { + // handled at request time. } } if (!mod__fileTypes) @@ -933,7 +964,7 @@ Lv2PortInfo::Lv2PortInfo(PluginHost *host, const LilvPlugin *plugin, const LilvP this->toggled_property_ = lilv_port_has_property(plugin, pPort, host->lilvUris->core__toggled); this->not_on_gui_ = lilv_port_has_property(plugin, pPort, host->lilvUris->portprops__not_on_gui_property_uri); this->connection_optional_ = lilv_port_has_property(plugin, pPort, host->lilvUris->core__connectionOptional); - this->trigger_property_ = lilv_port_has_property(plugin,pPort,host->lilvUris->portprops__trigger); + this->trigger_property_ = lilv_port_has_property(plugin, pPort, host->lilvUris->portprops__trigger); LilvScalePoints *pScalePoints = lilv_port_get_scale_points(plugin, pPort); LILV_FOREACH(scale_points, iSP, pScalePoints) @@ -1389,33 +1420,36 @@ std::shared_ptr PluginHost::GetHostWorkerThread() return pHostWorkerThread; } -class ResourceInfo { +class ResourceInfo +{ public: - ResourceInfo(const std::string&filePropertyDirectory,const std::string&resourceDirectory) - :filePropertyDirectory(filePropertyDirectory), resourceDirectory(resourceDirectory) {} + ResourceInfo(const std::string &filePropertyDirectory, const std::string &resourceDirectory) + : filePropertyDirectory(filePropertyDirectory), resourceDirectory(resourceDirectory) {} std::string filePropertyDirectory; std::string resourceDirectory; - bool operator==(const ResourceInfo&other) const { + bool operator==(const ResourceInfo &other) const + { return this->filePropertyDirectory == other.filePropertyDirectory && this->resourceDirectory == other.resourceDirectory; - } - bool operator<(const ResourceInfo&other) const { + bool operator<(const ResourceInfo &other) const + { if (this->filePropertyDirectory < other.filePropertyDirectory) return true; if (this->filePropertyDirectory > other.filePropertyDirectory) return false; - return this->resourceDirectory < other.resourceDirectory; - + return this->resourceDirectory < other.resourceDirectory; } }; -static bool anyTargetFilesExist(const std::filesystem::path &sourceDirectory, const std::filesystem::path&targetDirectory) +static bool anyTargetFilesExist(const std::filesystem::path &sourceDirectory, const std::filesystem::path &targetDirectory) { namespace fs = std::filesystem; - try { - if (!fs::exists(targetDirectory)) return false; - for (auto&directoryEntry : fs::directory_iterator(sourceDirectory)) + try + { + if (!fs::exists(targetDirectory)) + return false; + for (auto &directoryEntry : fs::directory_iterator(sourceDirectory)) { fs::path thisPath = directoryEntry.path(); if (directoryEntry.is_directory()) @@ -1423,11 +1457,13 @@ static bool anyTargetFilesExist(const std::filesystem::path &sourceDirectory, co auto name = thisPath.filename(); fs::path childSource = sourceDirectory / name; fs::path childTarget = targetDirectory / name; - if (anyTargetFilesExist(childSource,childTarget)) + if (anyTargetFilesExist(childSource, childTarget)) { return true; } - } else { + } + else + { fs::path targetPath = targetDirectory / thisPath.filename(); if (fs::exists(targetPath)) { @@ -1435,9 +1471,9 @@ static bool anyTargetFilesExist(const std::filesystem::path &sourceDirectory, co } } } - - } catch (const std::exception&) { - + } + catch (const std::exception &) + { } return false; } @@ -1452,48 +1488,52 @@ static void createTargetLinks(const std::filesystem::path &sourceDirectory, cons { fs::path childSource = dirEntry.path(); fs::path childTarget = targetDirectory / childSource.filename(); - if (dirEntry.is_directory()) { - createTargetLinks(childSource,childTarget); - } else { - fs::create_symlink(childSource,childTarget); + if (dirEntry.is_directory()) + { + createTargetLinks(childSource, childTarget); + } + else + { + fs::create_symlink(childSource, childTarget); } } } -void PluginHost::CheckForResourceInitialization(const std::string &pluginUri,const std::filesystem::path&pluginUploadDirectory) +void PluginHost::CheckForResourceInitialization(const std::string &pluginUri, const std::filesystem::path &pluginUploadDirectory) { auto plugin = GetPluginInfo(pluginUri); if (plugin) { std::filesystem::path bundlePath = plugin->bundle_path(); - if (!plugin->piPedalUI()) + if (!plugin->piPedalUI()) return; - const auto& fileProperties = plugin->piPedalUI()->fileProperties(); + const auto &fileProperties = plugin->piPedalUI()->fileProperties(); if (fileProperties.size() != 0 && !pluginsThatHaveBeenCheckedForResources.contains(pluginUri)) { pluginsThatHaveBeenCheckedForResources.insert(pluginUri); // eliminate duplicates. std::set resourceInfoSet; - for (const auto&fileProperty: fileProperties) + for (const auto &fileProperty : fileProperties) { if (!fileProperty->resourceDirectory().empty() && !fileProperty->directory().empty()) { - resourceInfoSet.insert(ResourceInfo(fileProperty->directory(),fileProperty->resourceDirectory())); + resourceInfoSet.insert(ResourceInfo(fileProperty->directory(), fileProperty->resourceDirectory())); } } - try { - for (const ResourceInfo&resourceInfo: resourceInfoSet) + try { - std::filesystem::path sourcePath = bundlePath / resourceInfo.resourceDirectory; - std::filesystem::path targetPath = pluginUploadDirectory / resourceInfo.filePropertyDirectory; - if (!anyTargetFilesExist(sourcePath,targetPath)) + for (const ResourceInfo &resourceInfo : resourceInfoSet) { - createTargetLinks(sourcePath,targetPath); + std::filesystem::path sourcePath = bundlePath / resourceInfo.resourceDirectory; + std::filesystem::path targetPath = pluginUploadDirectory / resourceInfo.filePropertyDirectory; + if (!anyTargetFilesExist(sourcePath, targetPath)) + { + createTargetLinks(sourcePath, targetPath); + } } - } - } catch (const std::exception &e) + catch (const std::exception &e) { Lv2Log::error(SS("CheckForResourceInitialization: " << e.what())); } @@ -1501,20 +1541,17 @@ void PluginHost::CheckForResourceInitialization(const std::string &pluginUri,con } } -json_variant PluginHost::MapPath(const json_variant&json) +json_variant PluginHost::MapPath(const json_variant &json) { AtomConverter converter(GetMapFeature()); - return converter.MapPath(json,GetPluginStoragePath()); - + return converter.MapPath(json, GetPluginStoragePath()); } -json_variant PluginHost::AbstractPath(const json_variant&json) +json_variant PluginHost::AbstractPath(const json_variant &json) { AtomConverter converter(GetMapFeature()); - return converter.AbstractPath(json,GetPluginStoragePath()); - + return converter.AbstractPath(json, GetPluginStoragePath()); } - std::string PluginHost::MapPath(const std::string &abstractPath) { auto storagePath = GetPluginStoragePath(); @@ -1523,10 +1560,8 @@ std::string PluginHost::MapPath(const std::string &abstractPath) return ""; } return SS(storagePath << '/' << abstractPath); - - } -std::string PluginHost::AbstractPath(const std::string&path) +std::string PluginHost::AbstractPath(const std::string &path) { auto storagePath = GetPluginStoragePath(); if (path.starts_with(storagePath)) diff --git a/src/Storage.cpp b/src/Storage.cpp index fbea14f..d780d86 100644 --- a/src/Storage.cpp +++ b/src/Storage.cpp @@ -22,6 +22,7 @@ #include "Storage.hpp" #include "AudioConfig.hpp" #include "PiPedalException.hpp" +#include #include #include "json.hpp" #include @@ -32,14 +33,44 @@ #include "PluginHost.hpp" #include "ss.hpp" #include "ofstream_synced.hpp" +#include "ModFileTypes.hpp" using namespace pipedal; +namespace fs = std::filesystem; const char *BANK_EXTENSION = ".bank"; const char *BANKS_FILENAME = "index.banks"; #define USER_SETTINGS_FILENAME "userSettings.json"; + +static bool isSubdirectory(const fs::path&path, const fs::path&basePath) +{ + auto iPath = path.begin(); + for (auto i = basePath.begin(); i != basePath.end(); ++i) + { + if (iPath == path.end()) + { + return false; + } + + if ((*i) != (*iPath)) + { + return false; + } + ++iPath; + } + while (iPath != path.end()) + { + if (iPath->string() == "..") + { + return false; + } + ++iPath; + } + return true; +} + Storage::Storage() { SetConfigRoot("~/var/Config"); @@ -1648,63 +1679,190 @@ static bool ensureNoDotDot(const std::filesystem::path&path) return true; } - -std::vector Storage::GetFileList2(const std::string &relativePath,const UiFileProperty &fileProperty) +static void AddFilesToResult( + FileRequestResult&result, + const UiFileProperty &fileProperty, + const fs::path&rootPath) { - if (!ensureNoDotDot(relativePath)) + if (!fs::exists(rootPath)) { - ThrowPermissionDeniedError(); + return; // silently without error. } - if (!UiFileProperty::IsDirectoryNameValid(fileProperty.directory())) + auto & resultFiles = result.files_; + try { - ThrowPermissionDeniedError(); - } - - std::vector result; - - // if fileProperty has a user-accessible directory, push the entire file path. - if (fileProperty.directory().size() != 0) - { - std::filesystem::path audioFileDirectory = this->GetPluginUploadDirectory() / fileProperty.directory() / relativePath; - try + for (auto const &dir_entry : std::filesystem::directory_iterator(rootPath)) { - for (auto const &dir_entry : std::filesystem::directory_iterator(audioFileDirectory)) + const auto &path = dir_entry.path(); + auto name = path.filename().string(); + if (dir_entry.is_regular_file()) { - if (dir_entry.is_regular_file()) + if (name.length() > 0 && name[0] != '.') // don't show hidden files. { - auto &path = dir_entry.path(); - auto name = path.filename().string(); - if (name.length() > 0 && name[0] != '.') // don't show hidden files. + if (fileProperty.IsValidExtension(path.extension().string())) { - if (fileProperty.IsValidExtension(path.extension().string())) - { - // a relative path! - result.push_back(FileEntry(path,false)); - } + resultFiles.push_back( + FileEntry(path,name,false,false) + ); } - } else if (dir_entry.is_directory()) { - result.push_back(FileEntry(dir_entry.path(),true)); } + } else if (dir_entry.is_directory()) { + resultFiles.push_back(FileEntry{path,name,true,fs::is_symlink(path)}); } } - catch (const std::exception &error) - { - throw std::logic_error("GetFileList failed. Directory not found: " + audioFileDirectory.string()); - } + } + catch (const std::exception &error) + { + throw std::logic_error("GetFileList failed. Directory not found: " + rootPath.string()); } // sort lexicographically auto collator = Locale::GetInstance()->GetCollator(); - std::sort(result.begin(), result.end(),[&collator](const FileEntry&l, const FileEntry&r) { + std::sort(resultFiles.begin(), resultFiles.end(),[&collator](const FileEntry&l, const FileEntry&r) { if (l.isDirectory_ != r.isDirectory_) { return l.isDirectory_ > r.isDirectory_; } - return collator->Compare(l.filename_,r.filename_) < 0; - + return collator->Compare(l.displayName_,r.displayName_) < 0; }); +} +FileRequestResult Storage::GetModFileList2(const std::string &relativePath,const UiFileProperty &fileProperty) +{ + FileRequestResult result; + fs::path uploadsDirectory = GetPluginUploadDirectory(); + + if (relativePath.empty()) + { + // return the synthetic root. + result.isProtected_ = true; + + for (const auto&modDirectory: fileProperty.modDirectories()) + { + const auto directoryInfo = ModFileTypes::GetModDirectory(modDirectory); + if (directoryInfo) + { + result.files_.push_back( + FileEntry(uploadsDirectory / directoryInfo->pipedalPath,directoryInfo->displayName,true,true) + ); + } + + } + if (fileProperty.useLegacyModDirectory()) + { + result.files_.push_back( + FileEntry(uploadsDirectory / fileProperty.directory(),fs::path(fileProperty.directory()).filename().string(),true,true) + ); + } + result.breadcrumbs_.push_back({"","Home"}); + return result; + } + fs::path modDirectoryPath; + + result.breadcrumbs_.push_back({"","Home"}); + fs::path fsRelativePath { relativePath}; + + for (const auto &modDirectory: fileProperty.modDirectories()) + { + const ModFileTypes::ModDirectory*modDirectoryInfo = ModFileTypes::GetModDirectory(modDirectory); + if (modDirectoryInfo) + { + if (isSubdirectory(fsRelativePath, uploadsDirectory / modDirectoryInfo->pipedalPath)) + { + modDirectoryPath = uploadsDirectory / modDirectoryInfo->pipedalPath; + result.breadcrumbs_.push_back({modDirectoryPath.string(),modDirectoryInfo->displayName}); + break; + } + + } + } + if (modDirectoryPath.empty() && fileProperty.useLegacyModDirectory()) + { + if (isSubdirectory(fsRelativePath, uploadsDirectory / fileProperty.directory())) + { + modDirectoryPath = uploadsDirectory / fileProperty.directory(); + result.breadcrumbs_.push_back({modDirectoryPath.string(),fs::path(fileProperty.directory()).filename().string()}); + } else { + ThrowPermissionDeniedError(); + } + } + + // add remaing path segements as breadcrumbs. + { + fs::path modPath {modDirectoryPath}; + fs::path rp { relativePath}; + auto iRp = rp.begin(); + // skip past one or more segments in the modDiretoryPath. + for (auto iModPath = modPath.begin(); iModPath != modPath.end(); ++iModPath) + { + if (iRp != rp.end()) { + ++iRp; + } + } + while (iRp != rp.end()) + { + result.breadcrumbs_.push_back({*iRp,*iRp}); + ++iRp; + } + } + + AddFilesToResult(result,fileProperty,relativePath); + return result; +} + + +FileRequestResult Storage::GetFileList2(const std::string &relativePath_,const UiFileProperty &fileProperty) +{ + std::string absolutePath = relativePath_; + if (!ensureNoDotDot(absolutePath)) + { + ThrowPermissionDeniedError(); + } + if (fileProperty.modDirectories().size() > 1 || (fileProperty.modDirectories().size() == 1 && fileProperty.useLegacyModDirectory())) + { + return Storage::GetModFileList2(absolutePath,fileProperty); + } + + FileRequestResult result; + + if (fileProperty.directory().empty()) + { + throw std::runtime_error("fileProperty.directory() not specified."); + } + std::filesystem::path pluginRootDirectory = this->GetPluginUploadDirectory() / fileProperty.directory(); + if (absolutePath == "") + { + absolutePath = pluginRootDirectory.string(); + } + + + { + result.breadcrumbs_.push_back({"","Home"}); + fs::path fsAbsolutePath {absolutePath}; + auto iAbsolutePath = fsAbsolutePath.begin(); + for (auto i = pluginRootDirectory.begin(); i != pluginRootDirectory.end(); ++i) + { + if (iAbsolutePath == fsAbsolutePath.end() || (*i) != *iAbsolutePath) + { + throw std::runtime_error("Directory is not a subdirectory of the plugin root directory."); + } + ++iAbsolutePath; + } + auto cumulativePath = pluginRootDirectory; + + while (iAbsolutePath != fsAbsolutePath.end()) + { + cumulativePath /= (*iAbsolutePath); + result.breadcrumbs_.push_back({cumulativePath.string(),iAbsolutePath->string()}); + ++iAbsolutePath; + } + } + if (!isSubdirectory(absolutePath,pluginRootDirectory)) + { + throw std::runtime_error(SS("Improper location. " << absolutePath)); + } + AddFilesToResult(result,fileProperty,absolutePath); return result; } @@ -1753,9 +1911,18 @@ void Storage::DeleteSampleFile(const std::filesystem::path &fileName) { if (std::filesystem::is_directory(fileName)) { - if (fileName.string().length() > 1) // guard against rm -rf / (bitter experience) + if (fileName.string().length() <= 1) // guard against rm -rf / (bitter experience) { - std::filesystem::remove_all(fileName); + throw std::logic_error("Invalid filename."); + } + if (std::filesystem::is_symlink(fileName)) + { + std::filesystem::remove(fileName); + } else { + if (fileName.string().length() > 1) // guard against rm -rf / (bitter experience) + { + std::filesystem::remove_all(fileName); + } } } else { diff --git a/src/Storage.hpp b/src/Storage.hpp index e00da98..cdcfcd3 100644 --- a/src/Storage.hpp +++ b/src/Storage.hpp @@ -152,7 +152,9 @@ public: int64_t DeleteBank(int64_t bankId); std::vector GetFileList(const UiFileProperty&fileProperty); - std::vector GetFileList2(const std::string&relativePath,const UiFileProperty&fileProperty); + FileRequestResult GetFileList2(const std::string&relativePath,const UiFileProperty&fileProperty); + + FileRequestResult GetModFileList2(const std::string &relativePath,const UiFileProperty &fileProperty); void SetJackChannelSelection(const JackChannelSelection&channelSelection); From 4b713f405a81b067611244d54f80017e6686e3a9 Mon Sep 17 00:00:00 2001 From: Robin Davies Date: Mon, 28 Oct 2024 08:45:52 -0400 Subject: [PATCH 3/5] Convert all file ops to use absolute paths --- react/src/DialogEx.tsx | 1 + react/src/FilePropertyDialog.tsx | 6 +- .../src/FilePropertyDirectorySelectDialog.tsx | 43 +-- react/src/FilePropertyDirectoryTree.tsx | 4 + react/src/PiPedalModel.tsx | 16 +- react/src/UploadFileDialog.tsx | 2 +- src/FilePropertyDirectoryTree.cpp | 12 +- src/FilePropertyDirectoryTree.hpp | 3 + src/Storage.cpp | 108 ++++--- src/Storage.hpp | 2 +- src/WebServerConfig.cpp | 271 ++++++++++-------- 11 files changed, 286 insertions(+), 182 deletions(-) diff --git a/react/src/DialogEx.tsx b/react/src/DialogEx.tsx index 0fb78d9..70c765a 100644 --- a/react/src/DialogEx.tsx +++ b/react/src/DialogEx.tsx @@ -198,6 +198,7 @@ class DialogEx extends React.Component implements I { this.onEnterKey(); } + evt.stopPropagation(); } render() { let { tag,onClose,...extra} = this.props; diff --git a/react/src/FilePropertyDialog.tsx b/react/src/FilePropertyDialog.tsx index d36112d..5d79c9a 100644 --- a/react/src/FilePropertyDialog.tsx +++ b/react/src/FilePropertyDialog.tsx @@ -741,9 +741,7 @@ export default withStyles(styles, { withTheme: true })( } } uploadPage={ - "uploadUserFile?directory=" + encodeURIComponent( - pathConcat(this.props.fileProperty.directory, this.state.navDirectory) - ) + "uploadUserFile?directory=" + encodeURIComponent(this.state.navDirectory) + "&ext=" + encodeURIComponent(this.getFileExtensionList(this.props.fileProperty)) } @@ -792,7 +790,7 @@ export default withStyles(styles, { withTheme: true })( defaultPath={this.getDefaultPath()} excludeDirectory={ this.isDirectory(this.state.selectedFile) - ? pathConcat(this.state.navDirectory, pathFileName(this.state.selectedFile)) : ""} + ? this.state.selectedFile : ""} onClose={() => { this.setState({ moveDialogOpen: false }); }} onOk={ (path) => { diff --git a/react/src/FilePropertyDirectorySelectDialog.tsx b/react/src/FilePropertyDirectorySelectDialog.tsx index a9b341f..0c51423 100644 --- a/react/src/FilePropertyDirectorySelectDialog.tsx +++ b/react/src/FilePropertyDirectorySelectDialog.tsx @@ -38,28 +38,18 @@ import { isDarkMode } from './DarkMode'; import IconButton from '@mui/material/IconButton'; -function pathConcat(l: string, r: string): string -{ - if (l.length === 0) return r; - if (r.length === 0) return l; - return l +'/' + r; -} - class DirectoryTree { name: string = ""; path: string = ""; expanded: boolean = false; + isProtected: boolean = true; children: DirectoryTree[] = []; constructor(tree: FilePropertyDirectoryTree, parentTree: (DirectoryTree | null) = null) { this.name = tree.directoryName; - if (parentTree) { - this.path = pathConcat(parentTree.path,tree.directoryName); - } else { - this.name = "Home"; - this.path = tree.directoryName; - this.expanded = true; - } + this.path = tree.directoryName; + this.name = tree.displayName; + this.isProtected = tree.isProtected; for (var treeChild of tree.children) { this.children.push(new DirectoryTree(treeChild, this)); } @@ -143,6 +133,7 @@ export interface FilePropertyDirectorySelectDialogState { selectedPath: string; directoryTree?: DirectoryTree; hasSelection: boolean; + isProtected: boolean; directoryTreeInvalidatecount: number; }; @@ -160,6 +151,7 @@ export default class FilePropertyDirectorySelectDialog extends ResizeResponsiveC selectedPath: props.defaultPath, directoryTree: undefined, hasSelection: false, + isProtected: true, directoryTreeInvalidatecount: 0 }; @@ -192,14 +184,19 @@ export default class FilePropertyDirectorySelectDialog extends ResizeResponsiveC this.model.getFilePropertyDirectoryTree(this.props.uiFileProperty) .then((filePropertyDirectoryTree) => { let myTree = new DirectoryTree(filePropertyDirectoryTree); - if (this.props.excludeDirectory) + if (this.props.excludeDirectory.length !== 0) { myTree.remove(this.props.excludeDirectory); } myTree.expand(this.state.selectedPath); - let hasSelection = myTree.find(this.state.selectedPath) != null; - this.setState({ directoryTree: myTree, hasSelection: hasSelection }); + let selection = myTree.find(this.state.selectedPath); + let hasSelection = !!selection; + this.setState({ + directoryTree: myTree, + hasSelection: hasSelection, + isProtected: selection ? selection.isProtected : false + }); this.requestScroll = true; }) .catch((e) => { @@ -223,6 +220,9 @@ export default class FilePropertyDirectorySelectDialog extends ResizeResponsiveC onOK() { + if (this.state.isProtected) { + return; + } if (this.state.hasSelection) { this.props.onOk(this.state.selectedPath); } @@ -238,7 +238,11 @@ export default class FilePropertyDirectorySelectDialog extends ResizeResponsiveC private onTreeClick(directoryTree: DirectoryTree) { if (!this.state.directoryTree) return; this.state.directoryTree.expand(directoryTree.path); - this.setState({ selectedPath: directoryTree.path, hasSelection: true, directoryTreeInvalidatecount: this.state.directoryTreeInvalidatecount + 1 }); + this.setState({ + selectedPath: directoryTree.path, + hasSelection: true, + isProtected: directoryTree.isProtected, + directoryTreeInvalidatecount: this.state.directoryTreeInvalidatecount + 1 }); } private renderTree_(directoryTree: DirectoryTree) { let ref: ((element: HTMLButtonElement | null) => void) | undefined = undefined; @@ -338,7 +342,8 @@ export default class FilePropertyDirectorySelectDialog extends ResizeResponsiveC - diff --git a/react/src/FilePropertyDirectoryTree.tsx b/react/src/FilePropertyDirectoryTree.tsx index 4a9191b..8275a73 100644 --- a/react/src/FilePropertyDirectoryTree.tsx +++ b/react/src/FilePropertyDirectoryTree.tsx @@ -21,6 +21,8 @@ export default class FilePropertyDirectoryTree { deserialize(input: any) : FilePropertyDirectoryTree { this.directoryName = input.directoryName; + this.displayName = input.displayName; + this.isProtected = input.isProtected; this.children = FilePropertyDirectoryTree.deserialize_array(input.children); return this; } @@ -35,5 +37,7 @@ export default class FilePropertyDirectoryTree { directoryName: string = ""; + displayName: string = ""; + isProtected: boolean = false; children: FilePropertyDirectoryTree[] = []; } \ No newline at end of file diff --git a/react/src/PiPedalModel.tsx b/react/src/PiPedalModel.tsx index fa3ed30..5b188c8 100644 --- a/react/src/PiPedalModel.tsx +++ b/react/src/PiPedalModel.tsx @@ -2510,7 +2510,7 @@ export class PiPedalModel //implements PiPedalModel link.click(); } - uploadFile(uploadPage: string, file: File, contentType: string = "application/octet-stream", abortController?: AbortController): Promise { + uploadUserFile(uploadPage: string, file: File, contentType: string = "application/octet-stream", abortController?: AbortController): Promise { let result = new Promise((resolve, reject) => { try { if (file.size > this.maxFileUploadSize) { @@ -2551,10 +2551,20 @@ export class PiPedalModel //implements PiPedalModel } }) .then((json) => { - resolve(json as string); + let response = json as {errorMessage: string, path: string}; + if (response.errorMessage !== "") + { + throw new Error(response.errorMessage); + } + resolve(response.path); }) .catch((error) => { - reject("Upload failed. " + error); + if (error instanceof Error) + { + reject("Upload failed. " + (error as Error).message); + } else { + reject("Upload failed. " + error); + } }) ; } catch (error) { diff --git a/react/src/UploadFileDialog.tsx b/react/src/UploadFileDialog.tsx index 689ff5d..7a55e3f 100644 --- a/react/src/UploadFileDialog.tsx +++ b/react/src/UploadFileDialog.tsx @@ -208,7 +208,7 @@ export default class UploadFileDialog extends ResizeResponsiveComponent> children_; DECLARE_JSON_MAP(FilePropertyDirectoryTree); diff --git a/src/Storage.cpp b/src/Storage.cpp index d780d86..9f1a96c 100644 --- a/src/Storage.cpp +++ b/src/Storage.cpp @@ -71,6 +71,12 @@ static bool isSubdirectory(const fs::path&path, const fs::path&basePath) return true; } +static bool hasSyntheticModRoot(const UiFileProperty &fileProperty) +{ + return (fileProperty.modDirectories().size() > 1 || (fileProperty.modDirectories().size() == 1 && fileProperty.useLegacyModDirectory())); + +} + Storage::Storage() { SetConfigRoot("~/var/Config"); @@ -1819,7 +1825,7 @@ FileRequestResult Storage::GetFileList2(const std::string &relativePath_,const U { ThrowPermissionDeniedError(); } - if (fileProperty.modDirectories().size() > 1 || (fileProperty.modDirectories().size() == 1 && fileProperty.useLegacyModDirectory())) + if (hasSyntheticModRoot(fileProperty)) { return Storage::GetModFileList2(absolutePath,fileProperty); } @@ -1873,29 +1879,32 @@ bool Storage::IsValidSampleFileName(const std::filesystem::path &fileName) { return false; } - if (!ensureNoDotDot(fileName)) - { - return false; - } std::filesystem::path audioFilePath = this->GetPluginUploadDirectory(); std::filesystem::path parentDirectory = fileName.parent_path(); - while (true) + + auto iTarget = parentDirectory.begin(); + + for (auto i = audioFilePath.begin(); i != audioFilePath.end(); ++i) { - if (!parentDirectory.has_parent_path()) - { + if (iTarget == parentDirectory.end()) { return false; } - std::string name = parentDirectory.filename().string(); - if (parentDirectory == audioFilePath) - return true; - parentDirectory = parentDirectory.parent_path(); - if (parentDirectory.string().length() < audioFilePath.string().length()) - { + if (*i != *iTarget) { return false; } + ++iTarget; } + while (iTarget != parentDirectory.end()) + { + if (iTarget->string() == "..") + { + return false; + } + ++iTarget; + } + return true; } void Storage::DeleteSampleFile(const std::filesystem::path &fileName) { @@ -1936,13 +1945,13 @@ void Storage::DeleteSampleFile(const std::filesystem::path &fileName) } std::filesystem::path Storage::MakeUserFilePath(const std::string &directory, const std::string &filename) { - if (!ensureNoDotDot(directory)) - { - throw std::logic_error(SS("Invalide filename: " << filename)); - } std::filesystem::path filePath{filename}; - std::filesystem::path result = this->GetPluginUploadDirectory() / directory / filename; + std::filesystem::path result = fs::path(directory) / filename; + if (!result.is_absolute()) + { + result = this->GetPluginUploadDirectory() / result; + } if (!this->IsValidSampleFileName(result)) { throw std::logic_error(SS("Invalid upload path: " << result)); @@ -2065,8 +2074,8 @@ void Storage::FillSampleDirectoryTree(FilePropertyDirectoryTree*node, const std: { if (child.is_directory()) { - const auto& childPath = child.path(); - FilePropertyDirectoryTree::ptr childTree = std::make_unique(childPath.filename()); + const auto& childPath = child.path(); + FilePropertyDirectoryTree::ptr childTree = std::make_unique(childPath); FillSampleDirectoryTree(childTree.get(),childPath); node->children_.push_back(std::move(childTree)); } @@ -2078,22 +2087,53 @@ void Storage::FillSampleDirectoryTree(FilePropertyDirectoryTree*node, const std: return collator->Compare(left->directoryName_,right->directoryName_) < 0; }); } -FilePropertyDirectoryTree::ptr Storage::GetFilePropertydirectoryTree(const UiFileProperty&uiFileProperty) const +FilePropertyDirectoryTree::ptr Storage::GetFilePropertydirectoryTree(const UiFileProperty&uiFileProperty) { - FilePropertyDirectoryTree::ptr result = std::make_unique(""); - if (uiFileProperty.directory().empty()) - { - throw std::runtime_error("Invalid uiFileProperty"); - } - if (!ensureNoDotDot(uiFileProperty.directory())) - { - throw std::runtime_error("Invalid uiFileProperty"); - } - std::filesystem::path rootDirectory = this->GetPluginUploadDirectory() / uiFileProperty.directory(); + fs::path uploadDirectory = this->GetPluginUploadDirectory(); - FillSampleDirectoryTree(result.get(),rootDirectory); + if (hasSyntheticModRoot(uiFileProperty)) + { + FilePropertyDirectoryTree::ptr result = std::make_unique("","Home"); + result->isProtected_ = true; + for (const auto& modDirectory: uiFileProperty.modDirectories()) + { + auto modDirectoryInfo = ModFileTypes::GetModDirectory(modDirectory); + if (modDirectoryInfo) + { + auto childPath = uploadDirectory / modDirectoryInfo->pipedalPath; + FilePropertyDirectoryTree::ptr child = std::make_unique( + childPath,modDirectoryInfo->displayName + ); + FillSampleDirectoryTree(child.get(),childPath); + result->children_.push_back(std::move(child)); + } + } + if (uiFileProperty.useLegacyModDirectory()) { + auto childPath = uploadDirectory / uiFileProperty.directory(); + FilePropertyDirectoryTree::ptr child = std::make_unique( + childPath + ); + FillSampleDirectoryTree(child.get(),childPath); + result->children_.push_back(std::move(child)); + } + return result; + + } else { + if (uiFileProperty.directory().empty()) + { + throw std::runtime_error("Invalid uiFileProperty"); + } + if (!ensureNoDotDot(uiFileProperty.directory())) + { + throw std::runtime_error("Invalid uiFileProperty"); + } + std::filesystem::path rootDirectory = uploadDirectory / uiFileProperty.directory(); + FilePropertyDirectoryTree::ptr result = std::make_unique(rootDirectory.string(),"Home"); + + FillSampleDirectoryTree(result.get(),rootDirectory); + return result; + } - return result; } diff --git a/src/Storage.hpp b/src/Storage.hpp index cdcfcd3..15df9e9 100644 --- a/src/Storage.hpp +++ b/src/Storage.hpp @@ -226,7 +226,7 @@ public: const std::string&oldRelativePath, const std::string&newRelativePath, const UiFileProperty&uiFileProperty); - FilePropertyDirectoryTree::ptr GetFilePropertydirectoryTree(const UiFileProperty&uiFileProperty) const; + FilePropertyDirectoryTree::ptr GetFilePropertydirectoryTree(const UiFileProperty&uiFileProperty); }; diff --git a/src/WebServerConfig.cpp b/src/WebServerConfig.cpp index e516139..4097268 100644 --- a/src/WebServerConfig.cpp +++ b/src/WebServerConfig.cpp @@ -1,4 +1,4 @@ - // Copyright (c) 2024 Robin Davies +// Copyright (c) 2024 Robin Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in @@ -32,7 +32,7 @@ #include "UpdaterSecurity.hpp" #include "TemporaryFile.hpp" #include "PresetBundle.hpp" - +#include "json.hpp" #define OLD_PRESET_EXTENSION ".piPreset" #define PRESET_EXTENSION ".piPreset" @@ -50,40 +50,52 @@ using namespace pipedal; using namespace boost::system; namespace fs = std::filesystem; +class UserUploadResponse +{ +public: + std::string errorMessage_; + std::string path_; + DECLARE_JSON_MAP(UserUploadResponse); +}; +JSON_MAP_BEGIN(UserUploadResponse) +JSON_MAP_REFERENCE(UserUploadResponse, errorMessage) +JSON_MAP_REFERENCE(UserUploadResponse, path) +JSON_MAP_END() static bool IsZipFile(const std::filesystem::path &path) { std::ifstream f(path); - if (!f.is_open()) return false; + if (!f.is_open()) + return false; char c[4]; - memset(c,0,sizeof(c)); + memset(c, 0, sizeof(c)); f >> c[0] >> c[1] >> c[2] >> c[3]; // official file header according to PKware documetnation. return c[0] == 0x50 && c[1] == 0x4B && c[2] == 0x03 && c[3] == 0x04; - - } -class ExtensionChecker { +class ExtensionChecker +{ public: - ExtensionChecker(const std::string&extensionList) - :extensions(split(extensionList,',')) + ExtensionChecker(const std::string &extensionList) + : extensions(split(extensionList, ',')) { } - bool IsValidExtension(const std::string&extension) + bool IsValidExtension(const std::string &extension) { - if (extensions.size() == 0) + if (extensions.size() == 0) return true; - for (const auto&ext: extensions) + for (const auto &ext : extensions) { - if (ext == extension) + if (ext == extension) return true; } return false; } + private: std::vector extensions; }; @@ -133,7 +145,8 @@ public: else if (segment == "uploadBank") { return true; - } else if (segment == "uploadUserFile") + } + else if (segment == "uploadUserFile") { return true; } @@ -159,7 +172,7 @@ public: PluginPresets pluginPresets = model->GetPluginPresets(pluginUri); std::stringstream s; - json_writer writer(s,false); + json_writer writer(s, false); writer.write(pluginPresets); *pContent = s.str(); } @@ -176,7 +189,7 @@ public: file.selectedPreset(newInstanceId); std::stringstream s; - json_writer writer(s,false); + json_writer writer(s, false); writer.write(file); *pContent = s.str(); *pName = pedalboard.name(); @@ -210,12 +223,11 @@ public: std::string content; GetPluginPresets(request_uri, &name, &content); - TemporaryFile tmpFile { WEB_TEMP_DIR}; - PresetBundleWriter::ptr presetbundleWriter = PresetBundleWriter::CreatePluginPresetsFile(*(this->model),content); + TemporaryFile tmpFile{WEB_TEMP_DIR}; + PresetBundleWriter::ptr presetbundleWriter = PresetBundleWriter::CreatePluginPresetsFile(*(this->model), content); presetbundleWriter->WriteToFile(tmpFile.Path()); size_t contentLength = std::filesystem::file_size(tmpFile.Path()); - res.set(HttpField::content_type, PLUGIN_PRESETS_MIME_TYPE); res.set(HttpField::cache_control, "no-cache"); res.setContentLength(content.length()); @@ -228,8 +240,8 @@ public: std::string content; GetPreset(request_uri, &name, &content); - TemporaryFile tmpFile { WEB_TEMP_DIR}; - PresetBundleWriter::ptr presetbundleWriter = PresetBundleWriter::CreatePresetsFile(*(this->model),content); + TemporaryFile tmpFile{WEB_TEMP_DIR}; + PresetBundleWriter::ptr presetbundleWriter = PresetBundleWriter::CreatePresetsFile(*(this->model), content); presetbundleWriter->WriteToFile(tmpFile.Path()); size_t contentLength = std::filesystem::file_size(tmpFile.Path()); @@ -245,14 +257,11 @@ public: std::string content; GetBank(request_uri, &name, &content); - TemporaryFile tmpFile { WEB_TEMP_DIR}; - PresetBundleWriter::ptr presetbundleWriter = PresetBundleWriter::CreatePresetsFile(*(this->model),content); + TemporaryFile tmpFile{WEB_TEMP_DIR}; + PresetBundleWriter::ptr presetbundleWriter = PresetBundleWriter::CreatePresetsFile(*(this->model), content); presetbundleWriter->WriteToFile(tmpFile.Path()); size_t contentLength = std::filesystem::file_size(tmpFile.Path()); - - - res.set(HttpField::content_type, BANK_MIME_TYPE); res.set(HttpField::cache_control, "no-cache"); res.set(HttpField::content_disposition, GetContentDispositionHeader(name, BANK_EXTENSION)); @@ -290,12 +299,11 @@ public: std::string content; GetPluginPresets(request_uri, &name, &content); - std::shared_ptr tmpFile =std::make_shared(WEB_TEMP_DIR); - PresetBundleWriter::ptr presetbundleWriter = PresetBundleWriter::CreatePluginPresetsFile(*(this->model),content); + std::shared_ptr tmpFile = std::make_shared(WEB_TEMP_DIR); + PresetBundleWriter::ptr presetbundleWriter = PresetBundleWriter::CreatePluginPresetsFile(*(this->model), content); presetbundleWriter->WriteToFile(tmpFile->Path()); size_t contentLength = std::filesystem::file_size(tmpFile->Path()); - res.set(HttpField::content_type, PLUGIN_PRESETS_MIME_TYPE); res.set(HttpField::cache_control, "no-cache"); res.setContentLength(contentLength); @@ -308,12 +316,11 @@ public: std::string content; GetPreset(request_uri, &name, &content); - std::shared_ptr tmpFile =std::make_shared(WEB_TEMP_DIR); - PresetBundleWriter::ptr presetbundleWriter = PresetBundleWriter::CreatePresetsFile(*(this->model),content); + std::shared_ptr tmpFile = std::make_shared(WEB_TEMP_DIR); + PresetBundleWriter::ptr presetbundleWriter = PresetBundleWriter::CreatePresetsFile(*(this->model), content); presetbundleWriter->WriteToFile(tmpFile->Path()); size_t contentLength = std::filesystem::file_size(tmpFile->Path()); - res.set(HttpField::content_type, PRESET_MIME_TYPE); res.set(HttpField::cache_control, "no-cache"); res.setContentLength(contentLength); @@ -326,13 +333,11 @@ public: std::string content; GetBank(request_uri, &name, &content); - std::shared_ptr tmpFile =std::make_shared(WEB_TEMP_DIR); - PresetBundleWriter::ptr presetbundleWriter = PresetBundleWriter::CreatePresetsFile(*(this->model),content); + std::shared_ptr tmpFile = std::make_shared(WEB_TEMP_DIR); + PresetBundleWriter::ptr presetbundleWriter = PresetBundleWriter::CreatePresetsFile(*(this->model), content); presetbundleWriter->WriteToFile(tmpFile->Path()); size_t contentLength = std::filesystem::file_size(tmpFile->Path()); - - res.set(HttpField::content_type, BANK_MIME_TYPE); res.set(HttpField::cache_control, "no-cache"); res.setContentLength(contentLength); @@ -356,40 +361,49 @@ public: } } } - static std::string GetFirstFolderOrFile(const std::vector&fileNames) + static std::string GetFirstFolderOrFile(const std::vector &fileNames) { - for (const auto &fileName: fileNames) + for (const auto &fileName : fileNames) { size_t nPos = fileName.find('/'); - if (nPos != std::string::npos) { - return fileName.substr(0,nPos); + if (nPos != std::string::npos) + { + return fileName.substr(0, nPos); } } if (fileNames.size() == 0) { return 0; - } else { + } + else + { return fileNames[0]; } } - static bool HasSingleRootDirectory(ZipFileReader&zipFile) { + static bool HasSingleRootDirectory(ZipFileReader &zipFile) + { bool hasDirectory = false; std::string previousDirectory; - for (auto& file: zipFile.GetFiles()) + for (auto &file : zipFile.GetFiles()) { auto pos = file.find('/'); - if (pos == std::string::npos) { + if (pos == std::string::npos) + { // a file in the root. return false; - } else + } + else { - std::string currentRootDirectory = file.substr(0,pos); - if (hasDirectory) { + std::string currentRootDirectory = file.substr(0, pos); + if (hasDirectory) + { if (currentRootDirectory != previousDirectory) { return false; } - } else { + } + else + { hasDirectory = true; previousDirectory = currentRootDirectory; } @@ -412,26 +426,26 @@ public: { PluginPresets presets; fs::path filePath = req.get_body_temporary_file(); - if (filePath.empty()) + if (filePath.empty()) { throw std::runtime_error("Unexpected."); } if (IsZipFile(filePath)) { - auto presetReader = PresetBundleReader::LoadPluginPresetsFile(*(this->model),filePath); + auto presetReader = PresetBundleReader::LoadPluginPresetsFile(*(this->model), filePath); presetReader->ExtractMediaFiles(); std::stringstream ss(presetReader->GetPluginPresetsJson()); json_reader reader(ss); reader.read(&presets); - - } else { + } + else + { json_reader reader(req.get_body_input_stream()); reader.read(&presets); } model->UploadPluginPresets(presets); - res.set(HttpField::content_type, "application/json"); res.set(HttpField::cache_control, "no-cache"); std::stringstream sResult; @@ -447,19 +461,21 @@ public: BankFile bankFile; fs::path filePath = req.get_body_temporary_file(); - if (filePath.empty()) + if (filePath.empty()) { throw std::runtime_error("Unexpected."); } if (IsZipFile(filePath)) - { - auto presetReader = PresetBundleReader::LoadPresetsFile(*(this->model),filePath); + { + auto presetReader = PresetBundleReader::LoadPresetsFile(*(this->model), filePath); presetReader->ExtractMediaFiles(); std::stringstream ss(presetReader->GetPresetJson()); json_reader reader(ss); reader.read(&bankFile); - } else { + } + else + { // legacy json format, no zip, no media files. json_reader reader(req.get_body_input_stream()); reader.read(&bankFile); @@ -487,19 +503,21 @@ public: BankFile bankFile; fs::path filePath = req.get_body_temporary_file(); - if (filePath.empty()) + if (filePath.empty()) { throw std::runtime_error("Unexpected."); } if (IsZipFile(filePath)) - { - auto presetReader = PresetBundleReader::LoadPresetsFile(*(this->model),filePath); + { + auto presetReader = PresetBundleReader::LoadPresetsFile(*(this->model), filePath); presetReader->ExtractMediaFiles(); std::stringstream ss(presetReader->GetPresetJson()); json_reader reader(ss); reader.read(&bankFile); - } else { + } + else + { // legacy json format, no zip, no media files. json_reader reader(req.get_body_input_stream()); reader.read(&bankFile); @@ -522,70 +540,88 @@ public: res.setContentLength(result.length()); res.setBody(result); - } else if (segment == "uploadUserFile") + } + else if (segment == "uploadUserFile") { - res.set(HttpField::content_type, "application/json"); - res.set(HttpField::cache_control, "no-cache"); - std::string instanceId = request_uri.query("id"); - std::string directory = request_uri.query("directory"); - std::string filename = request_uri.query("filename"); - std::string patchProperty = request_uri.query("property"); - - - if (patchProperty.length() == 0 && directory.length() == 0) + UserUploadResponse result; + try { - throw PiPedalException("Malformed request."); - } + res.set(HttpField::content_type, "application/json"); + res.set(HttpField::cache_control, "no-cache"); + std::string instanceId = request_uri.query("id"); + std::string directory = request_uri.query("directory"); + std::string filename = request_uri.query("filename"); + std::string patchProperty = request_uri.query("property"); - res.set(HttpField::content_type, "application/json"); - res.set(HttpField::cache_control, "no-cache"); + if (patchProperty.length() == 0 && directory.length() == 0) + { + throw PiPedalException("Malformed request."); + } - std::string outputFileName = std::filesystem::path(directory) / filename; + res.set(HttpField::content_type, "application/json"); + res.set(HttpField::cache_control, "no-cache"); - if (filename.ends_with(".zip")) - { - ExtensionChecker extensionChecker { request_uri.query("ext") }; - namespace fs = std::filesystem; + fs::path outputFileName = std::filesystem::path(directory) / filename; - try { - auto zipFile = ZipFileReader::Create(req.get_body_temporary_file()); - std::vector files = zipFile->GetFiles(); - bool hasSingleRootDirectory = HasSingleRootDirectory(*zipFile); - if (!hasSingleRootDirectory) { - directory = (fs::path(directory) / fs::path(filename).filename().replace_extension("")).string(); - } - for (const auto&inputFile : files) + if (filename.ends_with(".zip")) + { + ExtensionChecker extensionChecker{request_uri.query("ext")}; + namespace fs = std::filesystem; + + try { - if (!inputFile.ends_with("/")) // don't process directory entries. + auto zipFile = ZipFileReader::Create(req.get_body_temporary_file()); + std::vector files = zipFile->GetFiles(); + bool hasSingleRootDirectory = HasSingleRootDirectory(*zipFile); + if (!hasSingleRootDirectory) { - fs::path inputPath { inputFile}; - std::string extension = inputPath.extension(); - if (extensionChecker.IsValidExtension(extension)) + directory = (fs::path(directory) / fs::path(filename).filename().replace_extension("")).string(); + } + for (const auto &inputFile : files) + { + if (!inputFile.ends_with("/")) // don't process directory entries. { - auto si = zipFile->GetFileInputStream(inputFile); - std::string path = this->model->UploadUserFile(directory,patchProperty,inputFile, si,zipFile->GetFileSize(inputFile)); + fs::path inputPath{inputFile}; + std::string extension = inputPath.extension(); + if (extensionChecker.IsValidExtension(extension)) + { + auto si = zipFile->GetFileInputStream(inputFile); + std::string path = this->model->UploadUserFile(directory, patchProperty, inputFile, si, zipFile->GetFileSize(inputFile)); + } } } + // set outputPath to the file or folder we would like focus to go to. + // almost always a single folder in the root. + std::string returnPath = GetFirstFolderOrFile(files); + outputFileName = fs::path(directory) / returnPath; } - // set outputPath to the file or folder we would like focus to go to. - // almost always a single folder in the root. - std::string returnPath = GetFirstFolderOrFile(files); - outputFileName = this->model->GetPluginUploadDirectory() / directory / returnPath; - } catch (const std::exception &e) - { - Lv2Log::error(SS("Unzip failed. " << e.what())); - throw; + catch (const std::exception &e) + { + Lv2Log::error(SS("Unzip failed. " << e.what())); + throw; + } + FileSystemSync(); + } + else + { + outputFileName = this->model->UploadUserFile(directory, patchProperty, filename, req.get_body_input_stream(), req.content_length()); } - FileSystemSync(); - } else { - outputFileName = this->model->UploadUserFile(directory,patchProperty,filename,req.get_body_input_stream(), req.content_length()); + if (outputFileName.is_relative()) + { + outputFileName = this->model->GetPluginUploadDirectory() / outputFileName; + } + result.path_ = outputFileName.string(); + } + catch (const std::exception &e) + { + result.errorMessage_ = e.what(); } std::stringstream ss; json_writer writer(ss); - writer.write(outputFileName); + writer.write(result); std::string response = ss.str(); res.setContentLength(response.length()); @@ -598,7 +634,7 @@ public: } catch (const std::exception &e) { - Lv2Log::error(SS("Error uploading file: " << e.what()) ); + Lv2Log::error(SS("Error uploading file: " << e.what())); if (strcmp(e.what(), "Not found") == 0) { ec = boost::system::errc::make_error_code(boost::system::errc::no_such_file_or_directory); @@ -611,7 +647,6 @@ public: } }; - static std::string StripPortNumber(const std::string &fromAddress) { std::string address = fromAddress; @@ -663,10 +698,10 @@ public: std::stringstream s; s << "{ \"socket_server_port\": " << portNumber - << ", \"socket_server_address\": \"" << webSocketAddress + << ", \"socket_server_address\": \"" << webSocketAddress << "\", \"ui_plugins\": [ ], \"max_upload_size\": " << maxUploadSize - << ", \"enable_auto_update\": " << (ENABLE_AUTO_UPDATE ? " true": "false") - << " }"; + << ", \"enable_auto_update\": " << (ENABLE_AUTO_UPDATE ? " true" : "false") + << " }"; return s.str(); } @@ -720,16 +755,14 @@ public: }; void pipedal::ConfigureWebServer( - WebServer&server, - PiPedalModel&model, + WebServer &server, + PiPedalModel &model, int port, size_t maxUploadSize) { - std::shared_ptr interceptConfig{new InterceptConfig(port, maxUploadSize)}; - server.AddRequestHandler(interceptConfig); - - std::shared_ptr downloadIntercept = std::make_shared(&model); - server.AddRequestHandler(downloadIntercept); - + std::shared_ptr interceptConfig{new InterceptConfig(port, maxUploadSize)}; + server.AddRequestHandler(interceptConfig); + std::shared_ptr downloadIntercept = std::make_shared(&model); + server.AddRequestHandler(downloadIntercept); } From 1db419d6fcf8ef467f67b75da117532e513690ed Mon Sep 17 00:00:00 2001 From: Robin Davies Date: Mon, 28 Oct 2024 08:57:00 -0400 Subject: [PATCH 4/5] TooB Tuner stability, mod:fileTypes for TooB plugins. --- lv2/aarch64/ToobAmp.lv2/CabIR.ttl | 8 ++++---- lv2/aarch64/ToobAmp.lv2/CabSim.ttl | 2 +- lv2/aarch64/ToobAmp.lv2/ConvolutionReverb.ttl | 4 ++-- .../ToobAmp.lv2/ConvolutionReverbStereo.ttl | 4 ++-- lv2/aarch64/ToobAmp.lv2/InputStage.ttl | 2 +- lv2/aarch64/ToobAmp.lv2/PowerStage2l.ttl | 2 +- lv2/aarch64/ToobAmp.lv2/SpectrumAnalyzer.ttl | 2 +- lv2/aarch64/ToobAmp.lv2/ToneStack.ttl | 2 +- lv2/aarch64/ToobAmp.lv2/ToobAmp.so | Bin 1052480 -> 1052504 bytes lv2/aarch64/ToobAmp.lv2/ToobAmpUI.so | Bin 1970832 -> 1970832 bytes lv2/aarch64/ToobAmp.lv2/ToobChorus.ttl | 2 +- lv2/aarch64/ToobAmp.lv2/ToobDelay.ttl | 2 +- lv2/aarch64/ToobAmp.lv2/ToobFlanger.ttl | 2 +- lv2/aarch64/ToobAmp.lv2/ToobFlangerStereo.ttl | 2 +- lv2/aarch64/ToobAmp.lv2/ToobFreeverb.ttl | 2 +- lv2/aarch64/ToobAmp.lv2/ToobML.ttl | 4 ++-- .../ToobAmp.lv2/ToobNeuralAmpModeler.ttl | 2 +- lv2/aarch64/ToobAmp.lv2/ToobTuner.ttl | 2 +- 18 files changed, 22 insertions(+), 22 deletions(-) diff --git a/lv2/aarch64/ToobAmp.lv2/CabIR.ttl b/lv2/aarch64/ToobAmp.lv2/CabIR.ttl index 714d882..b4f1999 100644 --- a/lv2/aarch64/ToobAmp.lv2/CabIR.ttl +++ b/lv2/aarch64/ToobAmp.lv2/CabIR.ttl @@ -55,7 +55,7 @@ cabir:impulseFile a lv2:Parameter; rdfs:label "IR"; pg:group cabir:impulseFile1Group ; - mod:fileTypes "wav,flac"; + mod:fileTypes "ir,wav,flac"; rdfs:range atom:Path. @@ -63,14 +63,14 @@ cabir:impulseFile2 a lv2:Parameter; rdfs:label "IR"; pg:group cabir:impulseFile2Group ; - mod:fileTypes "wav,flac"; + mod:fileTypes "ir,wav,flac"; rdfs:range atom:Path. cabir:impulseFile3 a lv2:Parameter; rdfs:label "IR"; pg:group cabir:impulseFile3Group ; - mod:fileTypes "wav,flac"; + mod:fileTypes "ir,wav,flac"; rdfs:range atom:Path. @@ -93,7 +93,7 @@ cabir:impulseFile3 doap:license ; doap:maintainer ; lv2:minorVersion 0 ; - lv2:microVersion 51 ; + lv2:microVersion 52 ; rdfs:comment """ TooB Cab IR is a convolution-based guitar cabinet impulse response simulator. diff --git a/lv2/aarch64/ToobAmp.lv2/CabSim.ttl b/lv2/aarch64/ToobAmp.lv2/CabSim.ttl index 4fba15b..f773249 100644 --- a/lv2/aarch64/ToobAmp.lv2/CabSim.ttl +++ b/lv2/aarch64/ToobAmp.lv2/CabSim.ttl @@ -49,7 +49,7 @@ toob:frequencyResponseVector doap:license ; doap:maintainer ; lv2:minorVersion 0 ; - lv2:microVersion 51 ; + lv2:microVersion 52 ; mod:brand "TooB"; mod:label "TooB CabSim"; diff --git a/lv2/aarch64/ToobAmp.lv2/ConvolutionReverb.ttl b/lv2/aarch64/ToobAmp.lv2/ConvolutionReverb.ttl index 3951547..8743ff1 100644 --- a/lv2/aarch64/ToobAmp.lv2/ConvolutionReverb.ttl +++ b/lv2/aarch64/ToobAmp.lv2/ConvolutionReverb.ttl @@ -32,7 +32,7 @@ toobimpulse:impulseFile a lv2:Parameter; rdfs:label "Reverb Impulse File"; - mod:fileTypes "wav,flac"; + mod:fileTypes "ir,wav,flac"; rdfs:range atom:Path. @@ -53,7 +53,7 @@ toobimpulse:impulseFile doap:license ; doap:maintainer ; lv2:minorVersion 0 ; - lv2:microVersion 51 ; + lv2:microVersion 52 ; rdfs:comment """ Convolution reverb is a notoriously compute-intensive effect. If you are having performance issues, use the Max T control to constrain the length of the impulse file to diff --git a/lv2/aarch64/ToobAmp.lv2/ConvolutionReverbStereo.ttl b/lv2/aarch64/ToobAmp.lv2/ConvolutionReverbStereo.ttl index c876999..cfdc3fa 100644 --- a/lv2/aarch64/ToobAmp.lv2/ConvolutionReverbStereo.ttl +++ b/lv2/aarch64/ToobAmp.lv2/ConvolutionReverbStereo.ttl @@ -31,7 +31,7 @@ toobimpulse:impulseFile a lv2:Parameter; rdfs:label "File"; - mod:fileTypes "wav,flac"; + mod:fileTypes "ir,wav,flac"; rdfs:range atom:Path. @@ -51,7 +51,7 @@ toobimpulse:impulseFile doap:license ; doap:maintainer ; lv2:minorVersion 0 ; - lv2:microVersion 51 ; + lv2:microVersion 52 ; rdfs:comment """ diff --git a/lv2/aarch64/ToobAmp.lv2/InputStage.ttl b/lv2/aarch64/ToobAmp.lv2/InputStage.ttl index 0395376..81db695 100644 --- a/lv2/aarch64/ToobAmp.lv2/InputStage.ttl +++ b/lv2/aarch64/ToobAmp.lv2/InputStage.ttl @@ -65,7 +65,7 @@ inputStage:filterGroup doap:license ; doap:maintainer ; lv2:minorVersion 0 ; - lv2:microVersion 51 ; + lv2:microVersion 52 ; mod:brand "TooB"; mod:label "TooB Input"; diff --git a/lv2/aarch64/ToobAmp.lv2/PowerStage2l.ttl b/lv2/aarch64/ToobAmp.lv2/PowerStage2l.ttl index 3c2c875..cfd715a 100644 --- a/lv2/aarch64/ToobAmp.lv2/PowerStage2l.ttl +++ b/lv2/aarch64/ToobAmp.lv2/PowerStage2l.ttl @@ -67,7 +67,7 @@ pstage:stage3 doap:license ; doap:maintainer ; lv2:minorVersion 0 ; - lv2:microVersion 51 ; + lv2:microVersion 52 ; mod:brand "TooB"; mod:label "Power Stage"; diff --git a/lv2/aarch64/ToobAmp.lv2/SpectrumAnalyzer.ttl b/lv2/aarch64/ToobAmp.lv2/SpectrumAnalyzer.ttl index 1db4b1b..d55d6f2 100644 --- a/lv2/aarch64/ToobAmp.lv2/SpectrumAnalyzer.ttl +++ b/lv2/aarch64/ToobAmp.lv2/SpectrumAnalyzer.ttl @@ -58,7 +58,7 @@ doap:license ; doap:maintainer ; lv2:minorVersion 0 ; - lv2:microVersion 51 ; + lv2:microVersion 52 ; rdfs:comment "TooB spectrum analyzer" ; mod:brand "TooB"; diff --git a/lv2/aarch64/ToobAmp.lv2/ToneStack.ttl b/lv2/aarch64/ToobAmp.lv2/ToneStack.ttl index 0b50f32..451e884 100644 --- a/lv2/aarch64/ToobAmp.lv2/ToneStack.ttl +++ b/lv2/aarch64/ToobAmp.lv2/ToneStack.ttl @@ -55,7 +55,7 @@ tonestack:eqGroup doap:license ; doap:maintainer ; lv2:minorVersion 0 ; - lv2:microVersion 51 ; + lv2:microVersion 52 ; uiext:ui ; diff --git a/lv2/aarch64/ToobAmp.lv2/ToobAmp.so b/lv2/aarch64/ToobAmp.lv2/ToobAmp.so index 5662220a14e55195356e1a7acb2ff343b571638d..a7aa33301ff92f8bbdf4ddaba59d4fe832ae3499 100644 GIT binary patch delta 341215 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

L~p&j#krhC9w8T213L%$=hYPK)u7yv>T*KR9n~ z37?h3+NUkU2Hvo1p16}pa~0{yvtBXaKLP8#@+qV*?Vc1*MRcW0^12#yA<)+R>5 zsI0_6i=9Lo3im$l4DZfjM1Oy5no`Y{?nD8~C3)yUKC%Z(65ryhda!h{2N!$d(T%^< zlO2_Mo#&?qu_!MbRA|Igd$EwDS{FS0cDVs6Ejlj~gzevuyw4}nCSwTR1M;T4EiB3* z!#AO>987l?MtRAlcC2uy9Ej8Y817Go4(>t;-`2EtsKJHslnq`DgMXz6Scy7_{XBUuQyJHcAwC@@4&4x!99`&>!-}D!!^e z+b-7SFFcKWO8NIsvk-AA-}^LcCO*%ro@P&qgSh1x7Q(h)ruq)e>%$YDVF99@w;srv zP(3}%Kfw2<)^q<|Pp2n5s;7-_3X9@-PJh;pUwH-;|H}OaFpuT){T@D$CT5U%q(UWo zj-qr$RqqsKBjporny+}mfvw_c{?=d?;7$72z5K0#ETHkrH8SafOo}yZl=?Eyd6c>c zC#TfZsYty}P2ImnYBN%QL8-eN;D*I9gmJ$?>^*;9xR<@JAfVX0V5Q-oE?-YEb69wQ{SJ)J6yen>^oS^_u}^xetYoSjbH44@V5)Uo%j{wr}rbJ zFKhkiheK*Vx_emdM_(UO`_X3zr+(zWiXx!JK0QJa1M>DB=Dx`oyGHPy$?W%7ENctM zvo#F?^fRNXYQ95qeCrvERozh-uQz$uXW8aDk#KR+T`()g22SHJEc=p$I@W5j{%hfa zF*RHeCWS{JnXqehD4`Pmfzpm|b%D}GK7ur#NoGjyR!qF)f3puX1L^SB%59xYfxIx@ zWNbxfUVL8~3RERCAQCE+j)mXAhn^I@6gNkP=SrE+TZfn{)WNS|;^ zYZ1KmuZCZ%*HMB@Oc{nJ_|@U8dsuV9O(VlJ{z6~wG`I9f8p;SwritCxmD#IeHR2df_%;nDlh8t>Ip3zVxPL`W=T zghvv!B~W$h;qnpMX*Y4jEN){haHWef85_er>|2|5uMYLty>d5Bv)UJWpdY6*M;?!N zF8Pz~{0?oQU>DRN${hjU&gz-#k)+BZh+w#T7<6^GF6#6~Hg_8BQ)+-00&{ei~vmZY4ptG8)|gR48h^-yUC z3Jg&Uz{sre(PcAxz6wIg^>;E5tDd??xqwC|q7G^j8(o{OqMKoVNXtOQ?*sf75ncv@ zsn<~E%7NHnpoHX*2Plo}N%Tb!pvz!x3PVjaL(d^bqn`x95N6moBvThV6oQ~;f4$2Q}B(HpqHIz~g za-Wgxs`xU$Ig+JIc?bB&Q5dBY_^MHmY-S(e=SQ*SViTV6JmXTQ13dHve7(Y7c!9kv z)jPmV2A7axpzNOKi7;N2RdDhV_Qi;0~2PWC@zJ zZl@dF*Izce+w%`n*dejC^BEiR@n3JT*2DKkc?ZV8jttLG?oMSX((?Vzk!h@r6q346 z&BTNZ7&59zk5MvN`y%TruH#o;WFgYAd)((G_DRs0A;KcM6`t&1=o~5GyUTN5Vi8ZS z#mxtF^xe}%sJenH6?=dih^#s)`uTN$x~@`&ClvIzUt$TNqn;HO4MC!t27{uXrUbF~}EXeR&Lv7p=~mF>I>Al)G2un3MZ>^sCTg{fB?>D)bI-IG4Q&*-4uD6Mrxc z$vW=fA+NF4;t6Np*RTl`;`ftM#Q7HuZRH9>XIZEp8!jSJ`RgoBOydp5V`3}eeaExa z_H0dwL~B{_++P+bm$2HKKLOX!%>x?!JN4j5xFY$eM%aoys<6KbPx?+B;a$KA&(_Bk z)d*8q58A)iP!a(Pg9Z4Gg@Jkq!&WaseiZ?_){hD3a|8-|`pZGA<^HvskhosqIPisLdw$u`tz%3G{4 z4yk_d7V90laS)hdR1ak>Rflp(QDL@+pMHz=3cU?n9+Obzz&1n!gHaxik#;kvdu2E8 z`ZkO9BmBUbaC@AW+toHR;degqZJ?c41MNYe(9!PS%}=}yz5kE9oxu~Z5gZatA5qPh zrbo#ar#E}pGV>;))i*fzPK1!r_{#ypqT4u0Teee@OLzJ!+@DNki4vGu>R7i`hp1iEM(SNh|6Uc;W=-XX^j1e3QW@?w~hW<@aDsMxKHc^F~AK0Nh&;hR7j#GcudXSOsyR{*01L_^{5FBsl|c z3Q7Wxs9Bl9j1q?=@zpa}@GH_!364zLR?B?Hz#Mpp&G7jtL4kb$n>5%2*jIyn0sCvP zKj2^u4h9^m!J&Y|e@ZX|XLh(FVF#K{Na5i#Sw!m;0UXgCQp#@inmjnA&p`Hq(Gs5h zs_OU?+h0}Lbj(-z#>dZOQBT1tzPQo0Ye|78u8EK^BTrnt7IVMn!hRn}@EYt@X@)ai zp+YXP3E9|05un-LF_VQf@xxw45_ru5=feI!Eh+g>@XMMb_-E~QctdxsdZXueX0owS z^&MFy&9Q0L3pXhk#UVckyP9XEh(6e`6_V>AWpkmPbNVbcQ*3bx6Q3|#-N>7XlNPj* zH~pEDAj^Ay)Pw44%|Vv&1H+2#y!9Lw(vnpt9j$w3PKgLIT)4U~sxHgQ5$a|USw4Ts zCFvDYkERQ3|Jp_dK4A`P1^9|97xV%P?8p|^a4GcJo(lUJ}hY=)X5rC2j9f!AEwEL z6UW+)x%gJwo;3!mffnM(hadMsifz%vDvt@I@DUHg8NyADB}in-8ql1)Oa% zVFkXitTEV6Xdyzl)d|GPz{jx~-+Z#hV1>~_scx0{S8#b*a&#Z7oZdu`cMF4%C>o_Q zROX_yS_WBV@{MZ2#)PoTl4Zd1Lg~n$o}o2k(AkZ6)`liOXY4CKnBTWAOf?8`w9fFR z*2c1AE{#5@vEC3;zrYX6?h@se%8f>XOSJi42%%ORf#xQ*h94D8oi0i+VBPM zwLikoQCSQm-cWtgsG?_7df(GdyaETuSfyo*O}&$P-;@6m;K)EJt7)KjRw?ER8et6R z02pO({Nleyne4ru}q*swr&p7@QZhnP)0!us&$1gRj;4gM9LBQQkR{_sU{zMH`=z#X9@EDaw{N z4gAL}NGT)vwJg@pl#9EIwr2`&of+xu^)ag_K6}c#)$+VRRy_~`kNi3b(& z1@ob^>&v&!XYUPbRs?OnqB{=4>MSU)e0#NWfu=2qn7j^p-*9hX zQ-Rcw;$K~e%5iMtk&9Tge;QGz)QY-h4d2d3E@Fw0FHj95fQ+i)Q58sVACJoy4Tc!? zDqurQa}PLy7Po#v@@!Pe^hilw5RJt!GX4|e$~koRvhQav|9t)Ie-5{Ti6MeH1rMmm~%l540S0E%zLr;5`333w*a7j=N2pByR zjpF|EsJGYl#bu4V2|v*Y5Ae1wFx{GVw3V@LRukrxMa+B>E>eF%m>U*u1-Kf7I!xwr z>((!g*pz@Oz|&Bu+KY>*GK8XpZ2W{%mhor&;DH;pHNBNrQ9=%WmQzvVBO-;Wb?D-` z7$4@~Cqe@GVr*%bnfNt%rL>FT6~1jT3w0m}g4n0Y+? zysYMMkKkMRI(Y#@X&D+CePZB;82-N!q%0Chh)4r)TIh$oD18KPy#(eEN3rnF7(1>o z8^0#?g$R!jUfBv{<&1r=(1D*C7F;-%- z+m*vJne=&q9QWTKVfUbomwTwfsZq31ureP0!oW3p!&n8btf2KZd6T}FQ5t17+ z%0NF}i=V}4h=^=%4yU7KNqC;ca{(BdGI?AER8IQwzm~8!CG$3(#@T+!k;I=|%1WiL zwsQYvtV|kOh^tG$^B-;F{g#8t-`vJGEN2_UFZoL=*w@meLhip39lrinp0tuhO6i4s z3_X3e@{d-saNl=dB^^z0UUso0KV6q^UWw&ZmmR!vC40-aX(5Tf_y$=hqAq`R6~0+_ z@YSnWbetmzcd-f8*-5IN-m9*MXPchMMOUhH;J7gj>D0MJps=Bwq)fh4$nUPgSd>-h z9QG+2FZ#bn_?3Ru0HaNVytak>#A>#{gb`-G(zSkczMYMT;xD{3heb$tws2_;OY*(2 zMG@cUdwgM6)F5tb@7XIlP*3UOhi{qLyp)h0% zzqN)HOVSqSmbI+2SNms*6ZT?z+y91Ppg}ZbJvCT;uXW2Xkko@Q&#LdlfGwU=;iwmi zoh`qDPD5JOgTIl>f_-y(RD0ht)U%v=Dz?e`9(-XgOf0|Z!B6J0Xz7O@PERhoCB`DB zeaOiK%ol)p2y&u#!aNwc5IhJu(6iSI#XRa8cD3uW9@V??PGJ{>psb{^FW#SdC);=T z`X1FEHu}uhii{VWY7(1tDkhfV$)}=YHyvx{D>lmZJq!W{u4Cauz#Hq>E0W|>z<>LW zjkljbeH_Q{7=AQlO;9vg0eLnjtx^K>x)!L~s_Lov%JAmOs+C**rBFaVtnJXa&W#X~ zmD9VhvBgEEM+6u7Au`02%{Jz`210r1W6h;e<~>|$QP$t;K8cGhXsJU+haoQ<>wAqf zjd!rrwN9E`NWLK7!%Y_zI5N=p}=E;H+*ov8n~+x4Vg+8lCAoqW{iKrr0<_Y!<=M?CPas0;YK12Tg>s{iCDzYao>C7(ZYZWa4ArHuB_8_&o#KM-5!<>&&4hfy zGqjr^PXL|?4|*(|hwLkTg798J>ZiI$tu`+#6IHj`h6(jybb zec4Ee3eK{@LXz%5ibNb&H>=w?0)F~Kpi~9y@D=39CfJ;BAXI%Af@^XyFW7L8hUJub z{C0n#>HsRoa?CQGerEK*)sk0GWh)E6yMe{lO~q9*RNuwWv`6u{jjV&1%3t4zrEuD~ z)WXEEsfAXIoJ0}~oRbB!Ag7J9AsjLs!i_D=;Z&3liLCBeAc5(Olj4;-fFf|Wj1A&7 z@ko3v%%@;D;w$2%QrsD&#}{hEccFP*UqUh#8V>9)V(*|E_73`Dz9$zdZR4q@iJr z;x+?p#dMi!P^Zk42qCHJ3eH3&V!BMLW!*{*obn`?mclSyrq#xjX_g|4%`M^MwagRk zSj4SgzT8S;2NsQKT-?mU{L;IlheP6^*|H}%>qXvbGeq-Lp1K)A!2w*r)fWhGn^XaA zAR3p32BnQ8qRfCDAnNm0$RUogIf^_%$_?tx5ni~^0&|&w9iVe6m((UkkRaTi1%sd+ z{A`ob3LTRo3%3j6xYu#IEE3<)7Je3NHfi7N_$Z8<3sVI%H3(SQf!jI;fgocGOL!AJ z^=ivM<=JG$d(E-5XMwIB81NFBp>60IdD)p z(sBEY&ELvv6)?X9YG<2jUm@Ei2{$)8{I{UuEap?8BMoA0+8z~WXyrmn3eSs!1?8Ji zdmSHKz#3SAavoxt!2@TJ-4efe;NkBydP{aAlmVd|pC}0u6pQC{9;7XzC_ymlH=>%IvKKI|kCO0@N?8Ht5vZb1` z4Z-!{nLE0mmYi$1prNFQP5k_iEId2~L`}u0Lf$#TU{6l>?&)>ZU=xolgk0yfi4Q4c zO}!3VaPDzxAxn^MZQ@%BS#-E7AKSZFKhZ>S3g(mQelz9))c%JX`GZ23Nc@)1L$|UR zX-_`ywG~z<`T2YSy?>w2w{2y?rtda_f@;s^bsPEVt&kd*=5uKqp4~R`=xvZ~rseZj zw}Fbc^ZD{^=!mfE+lC~1d4Jrvyq1u zv0l=MjXbT0wPA-4-vyz@#$PXDA@+@!Hi>oUS3R{bSHgKAgH>IgZBOB3tI=ZSyxBW)wm{=mFmKhmba+L1N|){e9( zuzsX1PQ%(VRw+b4-Y+OT(MH&)0%*^Qo^+&5Nr@wEM|ZMZskKtd_^0P16w0bcmqqA@ z_wM5sYf7P%6o>bYLcp$B(x?7WQb{lA5s;vibRPhebUjK61D!`DJqB7S*BT|AZ+TSG z`Ibi|oloxIl*4=9X;@o+rIZl&uqsa+;R3eDlytrYC9V7qn=CoMr}q3GCC&UtNuT>i zNjH!FN1I}LQ`=OdsrMiNk1OfO|34*-)3COTRZ569{a$O+e=n)?=pJ@J6zB8oy{wV6 zcs<{?mo>!eFMC->N!Y;s_p#_Ew}7V*s-#kEO=qG_lHf>|2H5G-N8d?;Zi3p0KfjN4 zG+sx}6oaqa$DRl-K{~Y8VHyD~f}flQ=_TWPetI8^9C>!V`i)w^lIXkANiQZdH)Y6(n` z#2B7=lr501e+Tb*tj&P)C`LBTyf~gk?&%JqpZ$#A0sKOS z9t9UbNcSzDd>+;oYn-{~SqJa-?|-E>>`0^~jv$-!3+td>$B*90z+^3Ijb<0}*zZF4 znRPt)GV9zCssds-8#Lf6TH^Y_q42T>dC+bMsN4sUpiiJRHv<+&+tK{c%_LiE;Yby3 zwPyUo%dj}D;JKGsV{@O}#Zl1Xff2L2;HFHhLqjl;l-61udRxMF^>pX?%dD4|H~6XY zXJ_jw)<;T7hYd73D&kgVLm}(H-c1o2h6cE@Zi4%hFVKlF(3C+dpobCOZ@}oQp=_Dr zBe)%)mo%pWuKUzYuE>*|16$ktz;$M|+x~-<(Ii`;50LNTFt0*do87nE_6?36ucAs1-RnAV_J*ZJkU6iQKfzpL2dIF43cTrif z(mwI!BdQ$@gdzD3jZ}-5nDtSVLGI;^%?3!8iBN=`5rnD|Xy~6AYrA9JFl%`|Xy=bW zTmJ;K^GAhx`>`u@Wc;mZ3tHpbL9t%ecId3rdFc(-#DL1;b#5~A3!gJX7VRu;7lo=s zKj??+uU?Lw#{47^8lX_2Di`i{%uu2vDGK(;@g6AH>q5aEiA8RA{F0zw@22V3J7Z4i zgP(x;A{r~*o_yv_*0Ocf*gIX4@UtC={F^HMj8Lz#6&8F%)=^flDH)U?PR>oqjXceq9!7Pn^T1CkUK zdSv(+FfZjF1$97@qCuA;&Okwuf&3$(4(N_wqL(2;ggW3juX~%dZEQR1NyefrM#4fo z6AdQ>LU%1Ue0)H+8BSDMg0<#oB58@Asc=m19ynbKge-C|89|8H{ z+w3**G*7q#Q|aS8^$t5J#eU8^xmj$(g}77iZh9>!H-lnSO-fKq6lCqWJj2bphes`d zx-UXhu3A*QT!Cc8z8uBP|J+&TW~0Rc-+YGtU#<=_xdhWNgU<8?!TVKsEy3GWI2-Ww zlwt5{h(n;L7aK;!329Iu_zL;UK7)G}7TzZDbHx8rjsFRyU7^BR1kY39IRsBv;hCTD z)Ayi?Zuz;>=RS>>37>J_YS!NOJ0K!24B7WQo0jJCA=NB4X%{6-$G*on0al%%*wDgx zkhK(Mb(8z1qdo5^$Cf`!6p{-l?gYf0N^u(~abH}^i>op6IzH#p19nMz>oe!o2Q0?W z_0}3h9`eGE^B!X zj*<|JrL{|gIrd}d{gnOwbMFDB5NkxHRlWWgA zOcAsa{!B1RNTuDUBvj!&1edGuE`l|_-9fO%x7!HT`1VJ@H%ARq&st&9$kt}_O$grv z{-t>@5<{@%OS?MpIkaY4hX@WWavmWBzs*4tmD1!m3bP3II`1RlQaCwSJOKJ<1H5fQ zTa~SO1zv?T*|StamlHfig*m|*yDcJEV>da0UNnCDgkX)|vIy4rZ4ThgV|wLwGXz%_ zLG@Ln5ty07FV!-|*qc!kYd!EC#MOJ?TLf!8a6G}&Rbs{gRxFd#Q26k(v>O%&7fnQC)}fg4}2(Nn*Iwy&jdZ&}eEE{xp#Oh`Cr1BXIYH9Uq90 zqPw2_p5Qs7Db^%Y7>43`U-DpPifnTlX~-7u3GJz*#XCJorLsiBH$~x<(7ebT{wgzt zw%L#P*;yL^BnkI}e4NSDS2~)_H=9h;r0=qM z``V^RDP|2HS=-b#G!!)?pogmnQR4=|{V58wIFoOvZ5kp~e$IXBn6`!YM<&$aZjS1n zTZ95uPfdiVo0RJ@7~~$=ysVCCw6t`vGpVkrOfs!SO%N{*&f&53@!`4E{FC~o0aD-9 z{B(U&FUgtBqy0?%!~*AAey0B3Qo>s2wqR3xFC2%s8EQJ}_0dZ5{dUf1=9j}vFG{Wz z&LNFVZA5AHD(9@mCYWrtT*Ze)n4-JZMYYwzuQq-r{1|>l{7T>ZyS%(`#UmMcK46lO z$FJgBB21B%naVqEOIr14W~-k1-6QJ+zRqmgZ+|D!fT1uT?*>GlS~vqlasevquweF6 zv|aWGwR3HmbGq0vKg92&E-q}U*vAO&)sW~`L#b&m6AEaO&mrwEq*3xtKt5xr;stEj z(e?FH()#5dlLGhK(2`}>#SNr~T=by(LRY1s^@g-(7hiMzvFch7ns?DOVMR7RkZS|F z(tb50gg(uLCGI=N85Z?&SmJx`Lc+mHStII+S(By%rXvTv3aDpL6;M^^)v)>^%I+*c z64BloanH@`gViYR_(s}u^NhJq=wYZ*s^W9?jJeGytX`ko&3GpT2!%yzVUAd+|8+VkVSca)LZLE;gJZZ zD~2fC7WXK;5yDAQrEu4iSc|@Fb;sGK9Yw41QBRosq;s5)f5H?z`V6PpG)!r3s@UK0 ze%8=1W~w0wUMgt+Aq;&vH18~kIEHVog?(~U@ePIyGTksecIu0TcTs6{zJPZ9gjSD; zxUtMx_JnD?Xv)WaIWhH;Wqf3;sf#^OS@u}^#Ams20#6?@z6bh6V3}v@1!j@dVqW1% zz5x;BL&NoE&kc46(X@1}+MxA&;}a%fT&Anntn7)LgauyeH9_Ca4|LBc%{Ik)Slot;{Jj3K3eUKPXne=vi_%dVhEXt z5i|tDhzA?j5EzoP(R(OO65{F74biJhH(hvj2;W?mm>U5(&_PxPnt0Qm^L?#N(XDMj zXu(iS;}s$LMaeKAZ_7Ng1PRRZLfME|S>xpbu(tmi9> z7C@BQX^=gJTDe7QMEQ4Iv-VwE(_q%8I}S?tK(WeMJJayG9$ct4X}T4hAXEzc^>(J~ zX=W^QY}zWM2P(ogOXa3Sg0)phSAxf@;hhOiQ{j#TYm1OLg0)3R8-le($dgO>?l=t1 z&6e=qmAXCxk`U=GjxVGzz_`4zFB9b8r7#nvXIKur;>{x!&NR zw=sVe#W*)4K;pNrMAC()`{M9wz~3&SS%PrAu@@4oHTHahwZ@)Hu-4cg5v(=#Y=X7M zo1iuXAw?Pdg^fKU#^2S zFrBAr`j=Mt=DMKbiXr%S5WK>Z-wf~{aFYQcyFHIhG8O+nti5?$)Ybk!{+>63!28T7 zA|ji^faC%$h-jiF1BxOlB9IGiY$|R@iu*F7a?LGcOg(1a#3fU18I?9_F5{AwS&@0o ztZU$wr4}Nqsqf$O^`3brdApy-_mAH^9%r8Cea`E=&N;8M@8ZVSY*lem8xe`>6OZpJ z8~BxYsY_QB<7?hHl3%zBU>lQA?%4tCzC_Q?jme}Lo@8Sb>B6}cklsR_JbMKz1gwNjgA zYpnxdUV$t~EyCMYzJ8$O-(wxj&@2|Im!_drR953CZ>@&=2mQ2G^3xHf7p!y>)^?|# zuBxB75NfK^&v%~j)7Z$*Wez{hlm3UF`S8;Pg-VaPQJP_R^wfW>RFX_uTH_F}xx|w? zU@-d$G?^&0icD|=aU43kd9YuG!bJAhdQ($|=UsHB!;}pXmyu-(vB}4J3d?udjfn9C z)mk*8htnN|WyA~{KdkAXA%W&oC+whGth6kH3&6o%R44aSQKv<>##Tu z3w6fuW70dNaESCyDI6rdQwkrD-YJFmNbi)wJEV6?VP6ryIv5h(1+zNmbZ7b3sMx-H z+M^qSh(8!P3KuA}P$oAroRZoMH#EgheSAA2n8}{HiJ??PahieTE!h$0H<`8rYg01}c5Xr|s0L(U_DWI;gk-Emt zz)dXTzYW0zU{lzu&CeL{QJbGpq<7Z#FOuHrE~SX~8Y=n6{{b_##YiAMB1qXIp7hQZ zBaZY=9xLnta+*wwXuWk~v-aJU)+j%(;( zY!@|m%DW0_BDyNel*=4?TWLpn9F}Y+pqp~iLzA}51p_H`NiE3J%TQ}l_lRbl$}wwY zL7pZleD^9nrG}Z4V9cDLEKvS8Z_UQc8EU&fFnhKP{h^kt1iX|5<|qI(U*nA%U>9K` zjXW}8+5bT|tiYhh{}65%jgT;TOvc5)JmZNxHqDqjx1K^*iqOIEK5mpxi$STI?x#sJVkxyV@`B)} zIY1s2!=uKYkf)73x{f)cuBIc?|Ib8ZkZ2Kzzb-1)&e6pTzO_8#P!}+pyLIYMm zu_d&A1IZyxh(EvwtpZwKOj==>v>dI}Ttt)n zC9@dl$zB;`^3!;S2HzFmI{b}*o;FQXoNl6QDX`Ew#t*2Hu#Q3eo;JWO zOVpMt2w~ZYp&jM(P8ceXELX~MP%FWN1^{WY5ou%Tf~S{}x0^yyA;AUvylfq){8`(H0Va9gt;>&#f2+2oWoy+%(kS4j{L@IAK zQrg6a?DBBu?~Ii8x}ZStk)xzw*X@GW9f>a)C8c&QmgP#p)Y+;YUDupO26~US^5c*T zHdt8P686PleL5EA*WTk#Mo9s#2bH{I7>$0xFy42x6cRM#6?&=+<=T$*ZXlXQdlYBo~3dIctPe!BCjm4@*I#vcdjo|6&l7EvJoS+^09$%O)^>96b zQr(FkOqaq9x!aJz=i|J|e8+i{7{OJUXrfGCv5r4Um%3@PdE^)=MxTuV4(bo|Lhcl! zLo^1}oW;s_j*&V)cljqwImY#iUcM9cQ4H##Swhsc)2M4`QWW*gwNEhzgS9)Uizb3U zH&!x>w|nwEW2MbFe=G2qaZ;>!dof==PU`GqiWjHfsm8O%0xY0%G+(bwf zx?h{XAC8mOxXcpV`OD+6SOWZRywqC!tShe_FP#&0FY!|oq+iAM9r*qXDP6OHdt^#M zVrE|+mML`>-(AhqGo^)M`*?mSQwnJsvKHCxLq}B^w3au?lKSaT2~cG%*hNe&y_kg= zEs>~RPTEKH=4+@gz1>aw$}#3F$9OZi94j6eb5<QbOBv( z=c@^IYXy=XHv!WToR?-`vPZ}ezRAXc+svsM^%DbrG3J~ z+vBkV1e+I@eP}vHLsU9aC^+|6IP#&(G#$;eVv;ZxC$XuqqAj?~nrhb4IU)g(yFR8F z&Gfsh6)i355%N2+d}y{5uJ@t7yo(p+JH1Ly@_%GYK}kO$uCZV@L4#WWKE+`@jR%gD znvTV5+}9cxWgQi;#Uf+=b4P+FZ#lPCeko_mTDqD(-&OC|34;VA| zLqjMmc75X-`Y6G`>@?wkS~@MMbcHicN>X%j@QU^*?c?Keq*k3)zbmJO;&74xiO_L7 z6ZW=bJaZG55qoc9P{=KOM~*bm<8BEZxDrdU`28H|d9nCQ9ySrRTH<*=Vj^;V*cW`^ zM6A-M@J$n?-iC6#{^F_;*51PUx(1b$Y0<=^CS_NV=8pc~{5O!c>~v91(+KW3pyamJ zghMqZY+2dHTThaDi<%dB`Xp&!a}(V#!q%5V{;S^{ta6q7@-0kq?%#TPfwJr6;(MKKWq_?pSmR$QR;T&~o`rC8(6 zN9IZ|iJ2$)xm?M=={;;|Dkec;AI#^ScvY^H)Ux9Ving|d>VP|ThdzM6I7NE3bsdu0 zQJ`^gyt6>>#yZ0a^n>2vnyHA#p~w8{bSchIei&0V3p0;~KorYRvpAAG_~-<1l@9a1 zGf+86hxqszl8IPxwsQw zz104EdlWmApuMZHDIM*Py#r?7KNK2Xdc>tXq;l#Lesu@oJ0sQLXtC;+3eFO*$Hkvr=ckI|J9bQ6>9ICUzqsoF<$;%g7BrYRr@m zdLS&{6aT%6Vk=E2xkl`$202QrI?4CuayMYzhE(xD~JK~c@+y}0`u@6oNlkQ>Qsg;Q>3 zD!H5RK}dKwn0@Hg9lkOz7y~CcBnsN$MdkbSP@`F|S9rfLl`Owppyi!jakn zonMU=UofQXM_F$R=xWdadc$pr~H?zRgn`IK@WBoM6CCS8ZvCl7D8 z)&mm{Ik>Gb1ChwiopLk_IVT(UkXW?3ybP_kInSgG%%cPTg6pzAvf!>PH=RKq`3ZTX z9D(@RMH@z*-A2rBg86lbdZm(0kuQ+Tgaz%6Qr4A)CevoDlGCzL)e^m{#&vBWWmU9r zM28yfm@H_g4SiWob3rN)jd6aI(-N0lL{V%}#hpT-qiGEq_h!C~wjHtlZk4*?(Xu4@ zW!`y~)HZA@>}cC;#fP*@=+FI4B{x=*n-(Rf;AZ%`$2@r*UkZBPm7uQzeSeq*ITtJl zZKboME-{`(IIe-0k3~GzB$mt-JMrJ&ms)8$akmeonvi|-(K)V{qcFWwq|p>#IO!!c z2-{A+K&^qjiRFcxb8UtXrLVN&{e}ED8@e(LbGhM=6xla-4#qOCA}>_SQNvM@lXxNJm$&R;^_n98b2hT0UHJ%Ik`a_aI8V)xUp)T|IM~5(2 zX)}jUI*gh+U=Ck-SW5J9C;R6e-6U5h?e)3*)?sOuIKIG^ene`j3Go8MOtc7%CH2n& z2jfKufV9xI=3{A=i`Z#_BL>~)@XjX?gWa?L8iQhdKO2J}`1))Nnk;zCT^BfF@Cw{e z45rQDXHQ5Uh~sDTg?7YX#B9FRju`YKduI$xPFlkp{?IOMO?(4^#Ekd>%LrlLTtonm z>0!L(xI)q!v^augy$XpgK@u&7TJ}sN-JJYx7TB(ylzwyZUoa1WMLX#>>oI=|4k;N* zUKSc&p3QH4A`J+;|I%arijqXFlq4d%d@xZXSn@Kuph%*T^Z1Cfw5JO63qd~we0P8^ zNq7g66Up8nFE`!St};DDmp$zw=tu}3%(j)Bl@gna<{6H3oHv8}T!s{KW;~TbCh0*O zGn3D~ENvE#0$&XEY;41w?mTANlD?NNN!n^W7QwguDg_3*O~pX2 zpSzV$joo(*C}5FJzV5Q1oG3DGNIk__(|FT6Qb_2OX^;7~Cg>6G!sr{9dMn3UFw3AG zZ>fM8FNX{FNz<`-OJByDQpXYTa2Jab(sxM#p%~C2^x$dy?9WnI+aEzlW%-tZElS2BB$SSH8jg?{2LR!e zyhkdbbI9B1v~Mi$VT!#&-U&{THkS9mDK?+G(mBoZ#RxtzSLI!XZ<6<|$$yo1Iz`hd z?~h@p$eSGhoxDq?@WkIB@7}N{dB-c*qU2+Q>REX&ZS9bEKA2Kb*fYf;@2R;Y?~lv{ zFt2FkC~xo!7nbU+0{U6OP;D#|4rO6#Dq9i`j{x0u*k=p=)@;~eOxLjdiCjr}fcPrM z2Fv}dJrM>0xs)zgt!O1QjQzj)oB#Bnuj&DY34hC6@UaFfV%L-q^VxZS^(gND_UKQ4 zLREi?o5CN|TK^Rbyu0c4Of16xADQb_=9ZR?BT@RNgp56{l}IhRqn1ve3$8e~@c1&1 zyDz;MQ5F%nBMG;XzJQ9lOz7jlCME~c=>#p#r<2{J^Ts4G;Uxd`zSO>X8SaWmB3_}m zU^5uDo2#VOeSIBzOW^LLxWLe)D5K+BDA3OA8tBmHTr?(S-zd&&8|wJJ5oCFxD#-pq zsOL#OrbYY3ishAjAOc_J5i+z`4n z^_^xAERt0+WfjxUXk{o;7uUt1=ue``(Y7Hhxhvl8-wXCZ>=flUlaN9 zN0L7;{X_DOYXOmwh^g2IXSBC=gCLY*{EV0@AhyP0TmW|@#y=+UCXb}Qy>R2&~u@!ip?kS{g1Kt zFd>Iudn{ct`w%}=S~ZwOrSSyqV>_8mX1GWk83_%!RZleGLPIs0X_}3uzQgk{qf7PzUL={m25+h^THfdKiap%Q_61$rf52n+o4*RY*N3V1R6`cU!9@pPU5 zx(}P62L^Y%Si^i@i}=KoYenWM_Ri)$B8!y#K|;Z=&*mv23u)aBY%;*6;LjlA9lR{Z zde*PJ`K2ap3_&0vQ4NKtGrh1#gjk+LXOwb%br!!Mvbk;{XfWeU?f5Vk78p<}lnrda zw5%0%TT!qHm;Varq??3yCrq@hbYVj@8XNys%fj@%(NF~={lT>2G?!eNK`i&`VYc5B|jFNiO9Wo^asR=fmm zLtbws9L$DWxu1JI-J4NvcH3uJ9(%Zag>YDYRXCjO%WH|=)SMfdurBc^LnIQ6L{sP< z_lfKY&zfaAyaL~3PFaV%s$VM{9`7Y=B(@5Bu(GUiuyyg{8=A0@ot|OU7p#c1LBf2( z2-D#P7kvj8A7_kraUVA}%mY)?87Kthy?LG+^VNLLUv^{hW^zUM;r`J?Xnxw;=>l@N z<`NJ_<7(OzItOw4H%150_!Iu34k_qXK(4^dk?g5CdK$9WGcF-7w<}sM4`NdT*W4^FuNq(jy zzfgG9{30OllsofGR@2xHU98ws-sF#814ajF?@P96pGSeUl~t)D4mEzy=^u?G8=_FVz3hBnUR zAj<}udRjw}eWyX(CalxdwH2Bxo55$b_M#+-6Z{6tNV#m-Q|kA1#(;7}ri;KxlzVa4 zJ9&`a&xjkC=|EgS7}c&{Wjy9D^7|gFg(izvbl0}986{Sv@hivCmKFYS$B+|`VcyK3 znICL08G{W*{yAge9$Qg>i+zM+-}1+dwelU*Oh|LVOq&MNKm7#9J!5-ubdyKu*pH%X z7H_I&12nJMUevQxQS&n2*NnB(EaBfYWAnrbV|bz`>*2p{0$Rw^rf6lLavi5u$2jgG z+n>p|da}*tBC>aOluu!>_rE&Ivp{zm_Rn;bOVQ!MknU+mISqMAXw*@j|9|s;+EGqd zJ$Twt{ws5IlwSaInl_|f)vIVQ8+$bV|Muw5jl5>oq9Lg*;#z*~KMF84W%{plvo-zU)H3@14uajgU|2n#U+`jY zifQS5RtvUOlgIVmY?_#w&KG*KzGA<0egx>*E!~l_8*CD=Te6N~;sl=9 zlFh}%v?p7#eq#0n-o%GZ68|}#=lQTiv35K^;=?wG%_s1rR%q|s;VC`7O2;;-X}&QG z_lA#mnBC^qKbo}Q#jRMNSTmjOX1R#= zJ$(v&9Uktc&M)Q1&9qkO^rHYgNJ=~5_k$I5hQ@N?ZP3&36Gc{$U~qYibvbV9zOD3O zT9nxREh*j5R?EIFeufEPfH6-IiMw9(!L3o=j?o*EGj{@y^kX5zhAEzSmymrun16(s z8hZMQ0zSJ^W5@IL{%pM1VLboMpM{9V@!Ttb z^$nRn_Aw5vni^;i_;ze4#=t2}?V*w6^T+a80id^y~ety;`&0-lh)L@%4_Jb-SO7b%)N9vYoGP%}k=D zgYApf%%BnN;rxz)O$xDxTTOT^H8pp3PxR=cF{vB1PRUDi*3ud|6N&&h>!EBT0JC=Kep!0D&o%af1J;YMv{18N6#*%*s z%Mx#m;dxz{Ph|NRWSW1WVa6k{7Knmodr1se$ovg5_j8!Uo%@8MW5vht9-*vO#C6S`pJQ=`1n{ZA>`wV$;^jP=nd;ybJBF`+j`{fa zCcmbUeJh7wvmN%`$0$!Eb?Zz#5EeUT6uw1L3z&)62_Y7vLy4^qhl}F`YjnCJyvVz_ zw9AjPw#-iq7{lAPMPPT0=6l*AO*fC`SK6|##1C-4b30~W>7(%yAWDW{>A=5j$2y2_ zrSm84SdWkxSj@q?p9Nb~*D0LQ_21>_`lBgHxjveYXwTxrx#@gsduC{606oQ0VJ3v} zPuqi8E^e%D4`w1PPk~tmHVX|SW^2*kdX1O`D7#wrjOK|QkVJP!@#P(mWRVD62Z;9j zQT(e8EKF>h&L4I_-O@0cuMdNH@hJX580#FeaTF$AUK_Y?yK~nQ+9>2=T=a&{B_-jF z(Oe8?y~HJ>c;9d~K%6#;uM7wOW25-~aON+5G>V@CO7DS>y&Bh%jpDzNdEzK8b%ein zTzL<|a#x1FDO7(R0k(zm7=%CTHCr zrR1!*U&$U-rZ1A^+Q*JD#{}9RLnT2Gr{e|0a-#dYQZkB%bwRGbFp4L3LDGCaN-0(T zr~d~%ME_j>K6f_^|`Lm9C4aHFxRC;-16z&-T_xMFG3>#6 zYF8FOykG9hI=G>9V!KakZtKcA#Szm7U=V}J0~#L-!lMl_*gioGaydM02XzokUI2cG zPWiWBOo8$sfgnK!kLGP7S!A=bBOGVNs7VSDTJy<~Y>F5$l3#$O_`^uvq#Ik9G#x~A z0bb*2j7ew&iP1eUrXB&+J-P5)KrBi}sy&5Af9WaYQJ_Zfuez~c#eOOLNE927YRs=Y zGi!SB*SoVIF>fkg--or);uf<0=#;Wnnl8Kn7MkPSuLoW;gE9Aeu`UQg zaBukiB_GB-3v%tlF)6OvOJv2`}Sb1LojiQ_PRXE`YKKiJsYrCjKCK1FZ&?HJnr$|`mhkq zUEcf!c1LrIKYoFY)Vx7o?fBxpY#sW79x-f~_*EKDk71j|y=lBE2K|h{VR%s#qFR!M z10rmMraiAQVT_QH#uH;f)-la?EtZKI@lGng6^E|n=~TY5A6wtmbEeE6(>{lOG^5~C z(q+5MKcy`s=#kNPIKFQyORA@%#N*3%;d4)9C~5$b2b? zDdwdLVW26-x)M3**(fhVlwTs3LBRqXWy8@5G?gcTb^TnevB-zYj*d32(KmS4c-AG@ zF9}yauQb)4#E^ayk?nH47O9Y}aEUJC%RnZ&Ch-sAS(xTG{-1ajqj~Yq;D$Sb>*EM+ z{s5+H{uWLlyMq;_Aq6>_hz-uPLcp8-kAOeqUk*SfTFvhbU~POZr#N0wrHwa#;F)MT zV)$(eZ#$5s8;-)Rg61qxSNP-dqo$NK1jm^Gj}-pqKvc%>rtsqfSt~kY@NhU8`S8kt z%$2^YhVzF5S@?6%-WpC9c{<)ZrJ6@Aj$7aZ<*h5Jj^el$-%4>TgocWv*Ak*wp|vhW zMy8^$FO~04VEzNvgCqJT2PyW;Tujluhsr!S)lsj}w6;I%;G;H4=v^$Z3tH@L}z`S(t9@*@D|8klGPz8L%0{7MqR`*8}-8^jEe zvCvmT5&r{D{{M1fTevyq)T?&Esr>jLwp=>j55*37Cn<#|CbAH71)5iiXRy7iwWfv8 zFdX*P*&0PpLj;;KFGjd9#wb!sWk!fK3pdyWz;F7Fb+e?jho0<%jYjJ)puLT8bU7w& zc0ykfL{(aglHTB}qy%{GhB=w}Bb*aXX@kXz;k@Z!w$i*k8A5KOMN#rASq!3wsFPxq zgFODY<}%8fdk=v-ji+msi%`8wSRFjTv;qax0=Iu$7oGGt-H&Q~Ea+>gCWbu~Pq~)p z=@7F|Ndf2|p%^>(2U2y@#hMHU^@uUebI>k>2a1D0MV|`?w1+s8CfZJm*8F7UtxvC4 zD3&Lj=GR@V6O(z~5a#c-oXlrB&9hys>B)R6%v;POb96TpJ}AAzz<0a5i=WqYvRL7? zKmqHYtYlKJOfu)Hd8?A>WNsMBe9}k4yc#n=6#E1)394^)KNt6i&583+Vm$j)6G#%% zeP+vr1kj==MHx|5;M8%nLn02lp~N3+?@EB$h}PEdcPR7M_JTRL*E9*_pABWcKB2?{ z%lXw%69;O*DLc>l!PN=@zNxQ_eYahVCUb!f-Ycju<?HGbmIF$$4vJY| zNxNF!WElG0?_;O&Ft%PCJFUQ6O7!_jg6Hi_RF&L&CslPD}oR7Rw*u%t)B z{(Bz%ZO~XyXl}!E0rqPAcBp#9FAn-;&Y5jRlE~m+Ch@OQn2&Ua=#UbA!})J1Y&a{W z(LPOM7>4o0R1C0=5913{(GKc5gvn=p-uAU7&>lubxig;uvh?t-)>HsWz|C z?3_ltIh0>bN4GmP$tI3rcroI&p?tttHo>(VZ#E6Fm5gOgHDZsU{Kz=;7K4ZK-^Q^Z zY6hkc;a=m}Ld{qFmGP|IjJhEdc3kv}I8{S`6vej|o6G3Y`AYi6L^i!jo)Mz4&V|el z4Rpvc^OR$j$%rXQx_*&lc|+mlkWU5lmzZ#{0&dIU_5s|YPc(rA1piwhLl+8OUVwf! z$aa9N7-S!UY%3o}WM>sJ>^1<|Y3RRo7Y;51nFVC8fov^*9c0lqg$!pTKz0E72Z%s5 zq`eCfpo~lA`(ciYISyvJAR=uv*4Yd%`|x|@e5c|ZgHe!ecRK$A&eti<9pgDJd?*}U?Tn%#W{||!}%KMyWy^&hj2beaqbXBAd%Lg7n%nKBAN2Hd*{Ixpy zKn>_;D&`KE%!l~{(AU9ynquzYKa2R|4cTA>!-!yXVEWwapN!_FoZA6WZlG#@%+6^ z*1GMzM0yn^!(fWdG#rN;59kHYd_#o`Rw586lShW(cA~8+lXcLzmEw5{>!ZOuB%AeR zcLzJNy`^&ke=nPL;2X2CX!gTkz9$>A3Fij$Ux9IliAs4u_q1}kG!>kV@RJ_ACw&L# zpS2H#*>$IVa3ask!N7f1BHx;Ws$;`oelCYy(v1aQ0i#B&7JKpXiKsK}6PZpNKA3+s z5e20GU~ZTU(HtDa4U;hQwPO&^o5YrN!OjmHVX;SAo51~Q_)&rSKrt(iv}#~h2(x*E z9`hN%IdD9gO=;mE5V~2*5wL7nyq{#-IvM>)adsjO2*z*aebq=-8*=Q?fCE z$IW0VO&@>;6@8cqZIC^I@0@`ND4#@r4rtDR9qlYojzVEPc?RFL*EQ7NLPru;IA^$6 zTObNplnMuRQ%O z*$N&{-QpEfr(5NmBW6Gz!oC7Rq6|lFRr8{R$8Jh4^h)H?Omqle15@(+9}2c8aZBVq zW@1S5bpjtT6J3?V34Hxbw9YMXf``6ePvA}SS)!(jkIrW!{qx~$!E)>$M~9#X7I>%& zM;l4}2l8|IEX0@zdkgGpmCgd);^R}I8%So3`Ezbr>E6;DPLEwX9>p97%dt>Oc|;Fj zM)c2QJGr{MrNmyN-d@d_QZqs4lf5C zuYA?TH?fCeinsD$N-hmbGI^H_adK~l$ABt`JM5_=;iK52g8`&(FXwmKAe%S~Sv`3# z(!_oB07T7kU&`C~{(13$hH^KdVGs0YHx5*8F1w8t>bLOyR>Z)D-M~W2z=mDG?CAp= zlr+vC*g)yacNZ|@|L^2*8pC!faQs^;%)v5S%5~===t-D*a9(PApc+y>+3bDKf3Ce7$FwM z_UP6R;NoHy>5YUajVnejLeJa59H#E&01<%-6izk6$&jss7jcJ?5_?1~H4Cug^K< zVKpwwsYfwB@MAxoWkH|$+kSkd1)YPz@%$qT!-o8L-gz0;LR-i4yk+cj-%?@S0NgRH z*@s&QQ|O-TQK*%Dvvqvfa%R+&+VYn(n?_U0+ZVD7ad{kHQ^;E5b8jJgUSC?cZD51h zUw8=xsg&O>#9UyhE$|;K$VF4c`>bN!^hLoJ2PhPXb`f8^icJ@%#`0fRp~qCjy;s9Q z5%0g6?E>6h&EC*fwkc<}m)EfBCYmDKVk>haPK6s;KYV_+5jjD-9&Mg8~sNF!? zs5jU;(euaN=zTy6p_og0gN)1m$s)Ak{N8x;j;+-GgN)Yg#6qkX(#uw|8&$1X70u7> zfgsjIbLnkX;%|<|atC?@)Jkav({UB-NrYS$MDwrSM&mp?n%{bxwbfdvQt;f%e8s%p zJZvv}bHFLMEXJ774y0QBIFR~nEx~~XsZ{G7cG{8IM^1ZsFNEmH?EProbRVW8UytT_ z`&gv^I?(J#gnnAkqdphOYG076B*LpzmlGQ-a$IgNt)y&ozRn?-H!>?sGi*GJr=252IjVe z_gEi|Cy7qjJD_1AI;Vx?=f+Y@i4p-nT8b>boOE}|Y$fTu-)DO%k;}OKeP+}uE^fTf za>dN&dC~{WNBbt(<$i!-vYB+ZKL8IUd3--aR#`!2{Ykfqbor!HeAq@hY4DRT!j(4B>G*cp05 zCu}sHz?m8Zsb+;}g-}YbemD@Ff|eyhM{HYkF&*v=8sWGcmF*CGDNj2BQ9;P1yzmH% zNH`INko-$%u(uWtDE{VAS{aMNJ4?*J$$RkG zvY#J6%6yvag}(S*MKA7%;!Tgieyb8PhuLdUcxMR{m21dspBxqK(h8Rm;zcZs1!;3c zA9zBX$3Y9|G-R?Z{I7-=1-T9>BD0N?V=X>x?`4x$M9Ch3W-MRk>m?+7g zd;%q7BiYSA!2&7wm+~#7L!K|?he(G!kM`yS>nRp==U#Ty_ZPbHHFm82F6xHv9d`c> z?auex**PD7WIlX17#R(qFb+X-Z|cU^pJd}Z-j770;Oz;Et8jptgjT4awt%y5tAP#m z$k*GT-&Qw(@^>lsJ;e&eq22hKr;u&?b>nAGv4x?b@Qtb&dbA)Nt0axz_@!4b+IHX13X%vauRX5ik3UbqZVNXWgj@ zu%6MhvYu=&G~9A=FZrdFu!Kl^t&R?DH%E?v9>EEaB@{7^eGv$rg(- z5q$HPY?;HVJvV)Y6%)mNmFKTr)Skt$eWV>}0$4J%XsBRcXcKVY>hq9dR6Bg@jxB%8}W zvH~rh%C6+e|6zsN1&Y~!Sef`RoR?fh$A#S6KD){;YP7S+vbY?<|7S;Ts9W@kRAW3L6rOqk{f@&mNLxWDypXZn(&v0f{=qdiLW~UO(slNUNf{!>+1pyPy<$61 z;!X6A>p;1AvOjjtqJndW$8(yR4$o;JMEQYvv`c#{?U4dZHPz84(MlWt)wGd7Ixyv5o+p8^`1G`p@m zpx{&Djdc);(DG~Ttb<`U%gc0l;H=iEpK67u=CC`0XU=>W z_h;-T`2upMQb`9}Y53<32Xrf$klEG>rWbw+$5Ae}K|6`suCce#c4?97UbkSy$Vf%Zik#b3we2FV#X49}*pbM%Uj?R&;; z(Qk13OFMG=@xCm@#c#+rlSvo#J3AVsickdgt>oZn|A&kzth zJUZ%N=3B+ml<4sMDpsVu(Uw*cCNpo!zh$<-2k44ZHZS9*8Wf(`wzl;(*ej|A2}_-C;LR=yl6G^2r)qgKEJii@JB+G_dJp>Bs|I zbQ3XV#M)XgHY-^=+Sa=0riAYN&o*p| z%QDn75sn4I-6puhp6}9+#B9T5xSMBf8UOfuX`aCtFyC+<4x1o+S1^CNwuvsp2TXUc zr3Ry~*>D_o&0u$JQ#?Q2M7PjuL;T~H-6tB#eJ2^V!mey{ylt49ZoP&asWFIjGCTu@ z58T19=xHcJVdn*gshi_@xCiXOPz{I=>_}?8;4Yi&UV9o4ci8D*w;Ta^!$UXA3p~|; z+zNICBuLU75ydy+`42kXcnaw^?vo8h|9nFL2rj_G!Ft`&wg{+;N2VdyH_IU4pw105 zsw1OA0(2+r4YTR+B?RDiz0Tm@C{njTLjfTBLIk2+Q=K6UfgtzIrAdbN{*x7cmq3TI zS%lj#ULx9SUa1egKtHpouCqVr`>=%uOTZ$-DbR^de&aUA+iXpBnPLlHnBXSJ!$COW zege-3YZ069=DOj$qh6{3J*0OyL?Z=OQ(?tnjy<9HiktO&wE zD}~PV_%^~dcT@c1R_=2RHOMA3Y3xQm!#!n5qQ3?nYJy&XTZ%imL)?{Yc>>vz79fyw zdKTrw;iu#ffjA3?#GtWIPJw|01|$?>LPAM#2&Hv6s=lHHVDN*}=UzxTRZ9Eekg^Lo z8i%~*)aV z#_EoVK@@{L+!xwuQ2Vv{{Y~$dXqtXekQV#ytRZplPJZsB?Wgg&9WL5X>O&M}>DIYw zjZ_DF=jzgQYdjp4>~mB>7v$eLZX`({z0` z;%DxB!*tyM@gsMBg>bh!519en;LfMc&?Rcy6N^JLbgRU%?mR9}7by;N=X3LPy+o5c z{~%A7D0Xt^Px5p<@MfX== zH(_L_IKJP^)@G;fQFHf7#j(}X*6x6Ah_`!bHXfx5@7mn9=ri4qqP7(Kk@=V}bgkL? z`;YhztkZ-h$MF?k=%S2d^_XVC1e_LBPnj-oQU!zRyDxM@^rh4hs>f^dyWo~boY%E( z0%y~b<7}ztbsa?U%SyiVE1i%3rp^HLSXA5kK;bbM>Pxc?f-T?c{ zZ88iv1eZqpPBNq^hJ%&->Q}nX;=W4W^lP1uxU16E_G?|3)C^%Q3PQg<=#lF_W5<(x z!uPsy;_7?+`1hb*fK6QAL;f@G@wQiV%f(6eY$aE8c;ut=UE9JRb$vzg%{#UuS9M1u z?eDiAai09KhrhRD2Ak$lUisw_dXoMn&Fbr_z&96ODR`@9*O-YZVMxdz4CiA0QxKM4 zn1yee07FH9@4^dt*Lj$`zC`??f?smiFZKTzJZOaj9fSkqX(s5FRW14UUd;T+!zT5E4NaE~nJscKtZ)$GlWw>!s6YiQ-#7@i&|5e-kwoe0?+ha1E-CW_p?m z^z_sl#VtSaNKgF}aWAmBzOS_9Cr6|<|Ky0w#^(B5(fSjA(p;a|Hl_R#&%xZ588ufn z&PCA+PBh}rC$R6cfIu20c9=p1>)?V_yBKxTXFSOTb{SRsf#${ zKYVE`eGmV-tB*JZn}Q#Qhe0Ul8ePEJ`&ao_t@NG6n^*ahR{BZJEXc|sg1Z%Ofj4Lt z+xcu?{Ws#S|L_5R`e1F5=cy5VnxDR-L-)p?x-b0n@!U5^-vVzycJ$XraZi7}5%+-N z?{aIsp19&YpsUH&qCr?p@!GwSCzwdHov8>JV9 z&Y4|c%$jJ-nK>_ScIJ%y=@WB|1v8DAM#qP7R%XFOT|OlTq_ zx<~M1;ri!nCDD2x4NvZ(_ic5qYS4XB@T&Or*T0Y1`a1m@_}9Jke!Q}mKHumt`8?)p zySQl6@mMFt>)7 z=X(lj6g?eLwVC?pKhw6~oqwz^`Urg;Uhj(;b0Veq(t8`>r4aM#sX2Y--5>sG{n@&{ z+&5MqE((I}g;;&6-c$OnO`pcTCc?qwmzdEH>Q4pby`@PxWcbIOuh*HzzIv*r z{n+1Qetod*v&*bJ=DV49?@qY=Q_O3b8Xw!9Vfvk$bVDX)PFs*Namb7CnD@V_UuV7| zSYk?`9KjWYO97Ucql+vttG_kJ^a-=Xd_KjYx@K8o%wrvD7|=D^p$tF||EFqED@%;3 zmbA3QkeUefc?(O-`%vF`Sz_X$Izd%=TFfz0b43&Lb2E#gMgafQ^r;GfUUaHhy(MNe z6rovXiRl5wq3*G#YAp1sx-MB_NNt6h0<|1!I8>#Fs?3&{z4&<5sX7BmJ#n|heCbsG z1pWhxuumhUgZ>9MOAO&@;J=(|18^Z!7F1U#KPO_DK1Nl)G_k~d19iwue^A9xtDy3s zMnc6vwR0kUH*{mLk=<3`S*O|$-0W0KfTSim)li_SxY4%PVk zJEs}hlU`LsOZpQ~dq{6~8W15FkRnSWYW%J0iNSiPxlUBg>04D~Pv+|P_(pm%qwjd9 zGB>s)!%mHqYNryngdHiB?y<%}-`JkaZaP(CUgR;^op&myTeIRJeW(r_6Ob8ssM@P` z+nn^OIbmZvvL{7m&(f%NgoPTUKWS7VmB|5^k@>VnioR8QiXrJ8OdNE*@tq1qZpghV z1(i@JP6sM;)v-$02KK5VGxAiWQ3Fcmq*S^pRO!t5-PjG$lOjJUfab;y z$dT%h91)S~897oj4y7w43)!oll4sFEy~_&gs^ygqR$X15(r&S)F?F zTotkEk?M&`yTD0LNM__AiFaBfx8xaplUs@~>B;QqBBXx{G#F|t*SfzYX0o%DQ(L%u zJ)gF2)Y7S~+bADL%SJ66wQj1S)~!(sr!;VC<3?E1xN$S%gIYLh(bU$BS~OLuEgQ9H z1)R2*)hKv+7WU8V@jFj4lp#d}h*@{sMrYf}sYut*F zo?0$y$j>8W9}K#`s>*WBoX3{*u85$V-NNo}>%Z$hI}HP(}v+UO9fN^O8tR2v|(+9Ih9 z2_adML$#q%iPc6$^@Q9K9o6lsd$oc2J2SOCA-)t4e4CZVM71DC)R?Fh&9i#7;ZfTJ zwSjrooT_uOYizDo$7DzD9hDf;pA6Khmrx}jRPEG?NHtTD=+!EfXy}_fYHY8%RZ;bW zXl_#dPoW`8wU(mViHKBYgle5lc2pCpH5{2MjQ$6W+RzZ4%17lz{+ZQkRc!|vhmr_Y zVxl9(pr{&E?bLv)d{ld)AwBUW8lqQulgCba^Pi1|TK}tcG!c_sXeBh&(F$$kjCI7fe z5HhA#$?mHKVIwdH=svwl-UeJeqe{LA6!NNM-5LZOSO_cw7OfM6_A{&GqwCBFIW)!V z;X!_tY~P4)pmD1pR0I1L!-JQq0Va^R@<1;Gxqe~5t2u9B;PkLJLmj|IUr7ak+V z$@3rqU?K3wvG8yKB!+35jD=P5Wnd-H{Ut}QSIM{EML=G!mW}TNw^qyV03+V0mRB8sN5Jz3LAR}17Cu6f?5UP- z06q6r%k>Co<>_kK_g6&tOtoz835^Mwb;t+#z+zx2@BmQwq*}fV^aNG{jX!SMHdwOJlZnlG#6jf7uS%Vj{% zGQ=zd9)43T_b0rJ7yxswRLdF2q(whe%NK#(xF*;)6z+h1fWq}^c{ea0cpjK`qgpNp z?gna~gZ)kL1Log_#DMm@X2cMh;(OJyC#Iz`ey^4n120xq%ZGpwII|*PR?S$Cn9=N7 z13aK__ZoRRN=YfO7-;gSkuL)Cr5d?s2Yl;mK2ryz)jcn{92xiN8FovdhLXBJqECp@> z+JWx?^D}B>JJ15WNan!XK+nt?`4KP;=ota~EW{942J8tmX2T<34ln~)3M>E$Ifx)I z6u2z{<-Z)7&tPz1VvXFsD`Gkc1VB5m6j(aBM*b0a23QFca%*JoNJt9U2e=!U11y?~ zfRp(&1QeJLtOgbW-MfJwup{sy&;<0H4tL$m5KSHe0E4obHL^Ae7B3;>z#`ycV8kp0 z1ZXLMsDWqZBFVZV2J^uHC@ery01Fn@$mKxO(i*uxYRrsRL5G^s(~2Yn9@q(y_k?6V zKtO?MWyl+5XtX~=lvH)zhUj`Bq`)D-a$p89;#XucV9{?7J+Q2{Mjq80_P~7L4PYTK zqYjLLXMpbj%Yb&EsU8vm76ESqi-C`Tr9iW19}qmoiVn~+yjJf20=`pf|op<5%?M&0_{LMFr%zizDW2@t*nhl9t8RV3%@bf z${nF8f&pG@5h551RxSXR0k;5+ zS8C-mK;g$)xe|EsKee*=K$!njEB6H2D{AE&V3E15R*p)5hmXMkSPt9*jA~jZFCK)L z1B-#B&FbVbV2)>*T;hFakyZE&g@#d0<4lI=Ox@MBkxKHV%Pg!s_HGp#6F9 z0hY$p$-+=XEWS=&1vG~au9Gi9Q$7-eNyyb1b@Db~`4lh$Rsway5R<832=oL-0gb=} zpb0n@Xb0v4%YlW!8^A5VYT!FS?X)`C4)g|I1cm}{52N-Unny6O13i<$aC)5_3d{iZ zB%Dzv4*})_Gk~6X@Bo-R69EKTfWE^KP+)&xaekegOW(l7z|w_vawX8T2y`h(B47^i z25^1~%D-`OoqQJtMN1KYR1jF|W#|7-(7rk*9$nFb!y2T_>*t76H!y zg*Au>uxuRy@*)BN90e?X1px*g0GBWZxfA0Po>|2uVZ zGI~0dKnu{~Rxf*wLx6qi<>|l(-+K8FFd29rXa|-9%Y5t2ay41_)ywYV5i(#PFdrBJ zv;g}93xT76MZoF6jX(>q7`PF*8@Lx(3Oout04xLAfj59>fc3yKpl$++BhUye_cP;> z0%&f)AOTnj91E-l<^u))dbtp&1#SU)0^b381MNT~@FFl2cpDf2d<2XFdS)PrfT6(t zz@ETl;1FOMFawxjhNb|T9N;QoK5!eb09XpN0M7smftP_rz`MYWKp_(n0D1#=1KR^j zfqj4nfXP5RFb8-BI3HLBTnD@eEC!m(p*aA}4d7?MO5l&cYG5T$2&k8}S&#tG7w8G> z2=oS;fJR^%Fcg>zi~ueMMgfa}Cg5&hf8ZftGVnYw4OpIq@}B`sH4Jiq?%9w4Fc4S( zi~w4I{egwRQNSYLbl^sy1y~H+2;2?a3oHd51s(vF0qwvWz%#&lU>Q)C0|@|)Ic8)6 zXrf?n1DF7;1dat(1M`7GAo2iE3)}+CZw(KCIR?Z4Xa{O1LLxy(0$?(*4{$dy16U3$ z07e<%9#{lC3OoZWGectxh6I3VK=(q0#Jtu(xXqgNG!dyrOSd@>7$kj8!crl70FnI||1+WO1kq=3& zK$5(Kv;|fJJqsbxS;&0AWMKX(L=0$LjZ6rn22yMew1@bDEx1ZV-~0xN;*fNATIL_j;R92oj4>W4Y-*9=V* zG{z!$Kxl<%foWSnFc&cbMgfJ_kwo-eiWt!MA;b_^c>)2P2S%Ska=?spsF3Iz*l|7r z^ab1jOTU6Su&YyrN3J%MJ6*dP}{Pu(>IWdz z6P3XEK;Z|(2x_?_W0{1MMgN=isLDH)o%lc7?f4u3>c(lM#1(59lI zqMBMNwq>2ksQ46HQ=$h2aVjb*s##-`Ew-kjqGD^dC@IONVq3PT#-u_Vy}$Q!?-?Ct z*I(cJdcpfS@AEv*`Fqbj_ug~Q06jo6u!G_U4l4036yS3t3~T@v0RzA?V8*_KiVJ85 zwgNrC9w&qVgkhlN3slXWhya!W9RVZ+bOU>Ve&8r@1eml5CHd;0QUG)hqK1Huf1`?l z)^FkGE+Bp@$ySR5_oKu>{{bWnwEP18Ze$ebtcT!%&ej|^mtDOJF3%b3yy^qx7UU>j|zWB!}V@eQMvIyZn zg9loHzU(oj9B4UvOmPD}zz(3}+%Y9Y{9>N`@fC0~#lCc>z z^C;qhR{UsJH?a0e6tDr;ju*$2TA zjjTWhfbO-2lwqK+nl~O&N_N7~g_;0*?}h`QbnhX>;=$PfEC+gk9-!s_P(onfzC()X5fq^QkWvN= zJa9;923ocpQZgUKdF$JHNXdB=B>>uhJ`P6|237;hx5E+8(R4_e`xp&ShZF}exCb=cDOEtq&{7>z`hhOsFop5EXXdAnkTaxI0X;6n z1Ff4vO4ifRyCNg{11kdMqo#CNErf3Eg>ZYwCoHi z_I89lA*BHrYzryL&*HRuKBUwD1Ah%E+0UVu?+z)|K&cacfPue-lulqnS4bHFX1p3w zil0Y@e252@V;8$&pzn>4Q?YxIqwbK>2DH5yQUbt?x8U$EsH(R^N*~Y%3<0HgP@-K( z@O_jBSmH;G0Hu$R5YX{)NSXTrYHUwPsRXtHYk_^AqDDL5XCG=BX!;820D~i_vdq82 z!LK2u0_YeGDIGu$u=qtd0NR0)@vzbk90aE9MrTYuthj(a{BGzV&_5M?C-{`ZiUpXQ zdRVCe+JMc(ryW-MfTr}rO8no@B&Qr!Du9E|8Hbe)2##5Yl~JJow8M(^C0wm$A6BY> zj=6`GE}#qO2b$&`R?=QZiOxK%v;l4N4=Y7oXsWEkN&_&k@UYSk3<8IN(xStP^mo_+ zlYwSnCNKk-19Vy;*dUYu%Yk-aHP8iY1bTp-z;0kaa1b~Ol(SLdSKtVk4J-hb0?UEb zz*=A!%7Hf z1)5%i9?$~x0t;c+=13(8b2y_AE9yBR11?Z_d>{RAL@Pe=ct=Oa40W{a4%HKsV z|3CbcIxqmN0J`o&+W|fIBLScZKee9o9_)Z+KnJjf!Vlo=0Gb~}LcPeS`>;|6>;`rK zYac=<1UepeB1iu~0uQ4~fWFOW6QHXBj({C4Ncerk1M7eVJK+H60QLi2z+s>pD1Cqg zfEhrO2d5>_^%&aRkMZD1gn?#Y8PEoF0ewyg?GWTP^k!fNa1dw(jsji4q<^Bs?Wk&C z2ham_J&zgyx`6}0R$vg=4U|7b(*aX}0pMI<5NHKTUeqXs|8iJq1v*{3a9%>Nynyo& z=mVyG1Vs9^l)hdnS2*sVLFSbzaw0nnsBqLcz%z*=C5d_-vk`VB{v?tYyA=C~tD zKL{Vt^eJ+d2t#0CA`F4G?1)ki95EhIJirVSe#8doIN^xW19SlgfIgt~8ESaa5v2&| zN5@bV){#ph`2^+y!f zKJfMKy9wgC7)BjaD9#BO99=m1s&eZWSbrQwJY z{}l?{azrTxT7gbG1k+BG5a`Dbhs1x4Du3&UG8gCqmQ(ocBT6%cfqfM2Iie&DA`C15 zO79#|YJe7?8)yf%0ZZOJqI3Zr@8O5HfG*%5&mUDA4ik`up1cv4HAAIZ4dMSOMn?498s!>{}4?@eBTkp{%@RZ zAERc0rjMPdS_ozkZ9oUG3)lhl1O323;2>}mnDNOGC2a^-IiMBj0G1H$LB@csz(%0; zQzQuV0j2+-?+l=(facH9G(ZQi66iYvf(t?b*Z`FFAtOKw&=0f&hk$ON^es^W%8?iE#KJn;QJ3fG3#_LO1@BBXo&t z#h)C-b%F~ay|B*=gfW;(!{BWE@=a_qk1u8>ee&ZxwV0(Zq4eVsPY3zT)Zv*LxGa^? zxEydf5qjl_vw_QcoZnW=uGWX1=KG4-$@9N=>ZNJZlBP>!Y{uWf(|D;3l)vu5g_2o! z#J9v1Y&JB+7HpBX#&G?${EYM1RDJ6+yzo3WKd~69WqQ0sZ09X&Sm8W!(T?!Yvm*+= zSR@zb9db)d{$~BgeV>2Cz(~#b^FycaIeug{+nQL7upmq!%re23?&Z}DH( zu=V zj#R86M%|<%$DC0oSh*G7sFJEeB)A(C!89ToKu{EgI zjpK&K*llubkv?{Xt`a%|u*72^#5#sF{^t2COLre1JD+VZ^n&eMz&EU8v*Jb} zw|_Ch?_bBxh?|>$3#TXb!>fHHv*O~NBBi0?7X;?MA&>i!k;N&i{r`= zDEnrF|A-jt5WH1=i_)TV$p?H?vqAlic`aw;ZJD!mcHZW>4W}=UsLuSx(|Bg?_EWdb z%59$6l%c1Y1Mi|EZ% zkuq{oD&f^LwB?U{{F)2d*)x-qFv!K?#X1z|n2SF<6usaAkmW8Pf8#=Sim?s7#%}mo zu~CO?^6>)~vWtx-1m@2FNs+0S-0tI-Uc}B=UJNn`>noDUyvRodH0{v0=<@e{uAZ(m z#F!@{4muf->9FFj5*bbgXF^`&WFPoGm2R0Yxxl5$7~ zf>Is+C7p>C4l1K@&ERstWkh7q3$6rt$@7AqR5xV*c)B(65GEzmyy7&}oD0$>j^}unj`)%;OvFY>6Rj3NG;Z{B=8WS^ zU%=LIJ88)K^MwVms3{c+LN!91q?MQ7oDR0Y^ttaO3cr1JEf}Y}vdPqJgbEZ_B@XP(HLNfc zOO?1hO9Mo+@czp4Q1vyOLdNtU}YeuqG)h9pt)BzVk{p+t`5I z)o?6iLRHH@bn-n{vSkMENf@zD<1@<921Ahjr}0Z5Czw+)v?Gs0{IzwM%(a!Xl!Ov+ zesI+qXM2n#^I$oX4Rwf+p5a*-q#PVGJ?wir*;-_#Z)tUcJphl zVrLp_&^zj$|5+)MK|ZsaKY0~9+t^Lr=LL*QxT?w5?B+jS#nwB~1@X2P{qtok?SdRW zD7g^$3h;2E9>kfDpHgsD5nKj1AGq=eE*qSwYrJhSxOi}t$Mo_gJIHd7bbix8iBy5} zfD31cxH@pn5u6oVGq}bso_Gyga+(FLGU&squM(8*-WS!5uHP}IWp?3~SzAxNaC2tE zX*{EGCU;!Jrl&rk`|Q)afxY@Sw$0dnN|U*HddvhJ^+^36`BT@hMVI|02E9BNeR)Dm zu1pbSVMTpD1&hPMJPIufhsr2a7!F-Pp`z`lY@3nWJiW;*Q3?Ggqbnx!B^9jDSc2TQ zC1ddtUFx3tE8kqf?w(IWSqFMs)l@92LPU7D!z8*vr@s{gs5VKoAZh@56{-BbYcXb+ zrla_&{FQ4lROdiWN#oyM%ks{uh3rfFW!&Tz!*7Fbt>%f^B7jVVpc79SS=_-dyN+FM zw844vbSy%nEBFsD@DHwITMS)hG(-l!?s|+y!;srf<=d}kg@)`?Fp|yX-&{}gRHPW3 z`-|ctZwGeqX_aiTaR_9Fmtsu`HZEkq6S*RI9MReA$UGlo#BWs81MYN+ey@8Wme zz%DK;M+qJ0V#VBSkP~)Mt$I()-SLUOp%4?x4p05 z{ttaqufF*`eQeRYn6AE~k6qcLk6rb)KDPKRee8K};@4lg^|5Q-;Mq5_Oydwz=*3z+ z6GjaAkGrscG6w$8Obq0=^LKA#v*u)?W&O9KT2Sb4qoN@$iM)mtLnphMU*}-y>eZ$S zVf!6e7DqNX5JdH(UGCuXZelYGUdVC{wm)W@oY|*h{JQTKrCQb0&ZA;*qu^+Oq+>4r z?BHteM}-rSr(KtEDQ?jH{%GG?rgaU?ha37O^;qji`Z(xZYz0>U&P)UjaQRXvNL!R* zFSsIb;S7**09+q9w3B+|;Qt7?Ks}#vEnBGG_hijNuYHg|>_Bg}L(XvXS5PU2TF7p< z#(N=;2)+-p{UME~HOAc!srt?g$d-q(;u3>nM5XIjQCaCahf5yam}Vl{2Hld)=pzxj zIP3H`M(LWNTLazrEm+4GrRxx_Njjd>kdw}>zo;W~Wa8%uB}%j#jsl#|xCI3bQUoKz`3D3m<^i_#g3KrU17r1IznO1+(;yQyvR_88nt>3@zmUkpW5E;CFdboRau zEI%b#%$m^S%EILdfX;x9^{-f{NiCDhd~)HAqL$_PPM+78o42{JVOidmg01=b)v+ti zjV;Pq9=q!7*p=tx$DX$+wm3UKcFls=)eB>$=+rB|VU=NJuHigGajs#FVfAX<*B-m2 z)t5CdZd!8fz}{s|OPUu~VvrHG8XEY&Mzst$g}2X)^raCL9<^jq0hL+R9eLe$2+98^%f}BMPvr+ z?4>qv5xJJU;F8nEXSy4l8Jr|~f(btQ!6luHb)UkY88{3s9$YhV{FE9t)o4c#s0BsO z@#NE=Ih`Z zbgU^QI~)%D#m~nyayno5CwAka4y50isg+UQ`#AYl=g|3^<)ecnt}@a9^vtt`-W!ke zy?`Qdjcq#;TN3g&$2Y{~Z84a@2a#Ag3~8cChZ%qJSt`dT;2v!< z<=zfQ%`<;eu%jRD`XA?)ZDc3UDS?(N1D{SoAv}JmS1Ob{Jgu*W&fMAjiH$gen;}=9 z&fndLXF@bRC^>`AbK({%2lDV4{5mIe?2s$w@dunN&lo_?(z3ABnsTH(#=mf4a-RYx zC1G-pAZ;M)!{qaVtOMB%vXad2Rml^1vx_Ag>K0%=m4&UtSzf9iaxE5&hdVTtb`YF< z5ubD?o0V!>h`y73ta>Ou1Du7?1FaeAsal6j55Y$fjT8J)e(#;^JVQH_`j_y}?qqoh zBapN5u+*BLZD*&b&*RkjgJlsWlKICHH^X@WI9EPz*@W7tfNUz@uWv$a3?Wn5g}*A9 zH11sX2%mfxJ9AAo4CcbQc@>;f+bn#9nnHatoEKZ9Q=cxX&l&T%o}TCJp~sBcCCCcf z3fPtw|Elzp(@Br;i|%66PhF^^%T@TnA6>2NP^Iz&*Z!)MCPMXl4{y2)6R3V2Az+t>>UxujCu0QK@(uYvnPw zksUkuWp}U@PAbOeVst&MWjDhD4e8jyS|%23PQqsKu|;z1ikRhF61OJs_{O+`ZHCyD znC|NIRmU1@C9cNmlUlVJ3zlFwc?rJYiVmvUQgAik=%k>7xJq#SFa3(wQ!1sAE|7gt ztclb4Df{0!i%@$(gL^)=^vrxbi428(diwR}8K=inD_&IL0~E>aPNsb&OQGI&gEN zxMpx^QJfcCaunAMPLAUG!G-XFMr7fJtxmL46e;CmFplDq!SzLPnc#Y(xEyd@QJf7N zeHjv&a5=bE;*h?2P$#Sg*&L-<53W9n^MI?3;yS=pMR7ggDxVtZb0L-`lsr5fb5G>tOeH{#WjNKisI-~#P%qTK1*zk;^-5_hH)Iy z9|BoFjzk9pR};mVmf;kO;LON$2Dox?l{y5D-A(H+h`8l1f)4ee5vWAy+^(wdlie)N zPzjZqzwuYxn0~n-cl?d7hMd{~c@XCZrh4jO#{V90NiS*f!;o_@&PB#cg)}&8zUT|e z2BAw|QT9gZmVp}<@h-@8U5xbA0IuL=N-LFlkaj1+HP9(B@H-x2r>CkfYsE`y!_j#F ze&zXM{^~<)YC>L9;#GSKni4DcXAiM6CtBd5Y&ph@*YN2g|L4PaIyd)WJo?}^w~{eo@xQL|MUX9TXuJb*>l+&13R&*f_+H4> z-5M{gz??(ynUIU$)c7*U?QfEPdSV&!Sc|avExx1yZ?y&?d*0?P4J>_5{7O{e+xQ$4 zI^mX#ToXW3#<|dm@8RDxV0zYowEKI0Reb0j^5lp3^euScJ^<48t{{ip8kvDqdftQQ z7-;_8&7UXDN|1r~1^J*#E|?5!sRI$C|HSRP0os?l`O>X;m?|OR;2wN{7z@(k=Jyj> z4AMV<8#EcD35jtwgCE?A`^g5xqZO0?*Kdb$G89r0@yU=Lq~*_i=XOkp9U$A2@cj{K zj@9!++u6y6avO%6i9EfDrN`AlZXDUq^P7;F4g`7-xTy)ROfuHsG2lde<3u&RzMend zMC}67oPf;)MJlk)^g-{M*mg}Jew-`mViF^sH5H%sKt zHKU8CosW_Uxd5_l0zU$NRVC!k6Y#kb(xtHN+lacT+9MHNNIr)CRa|b&cH(i?dx$96DC*ng%B5+WOR&eF`?lhbWGq@6PwNrRv z3l<|)LvBVqZd265jQ{oI2b?;uKQ>HWEJjI*bm&XqjH&!;_%P7dzy(wJeJ!{rl1kuv zDu0pq49I@L+aSlMaKldURgi5d{QaG{Z)zp|6nb1r%5rCVFUD=&73fA(SRAMvDH;D9;QX_oc;Ie+S1bFS zzBfi)$fOP+l~5SM7lZXsmQTNz?`_42N#92o{~tfniaPFx!T^2AM@j9uhcADeT|UQx zq-vT_HRd4(tQ5m<7|$z_)^@&x8NM6eBq!@ zYzJ2hF5F3ps{-eZ;_AQ+MAjxJuD%pC$jYM(X;7mJ5Cm&U$#QH(b-N_$#0!!Ia z%23lU^7o&>n|nLto`3KuPlESA9v$QtKFRXph9C!i8Ra{l#9Eq+^|;<)Pj*Bk&}ZLi zDfj@6KikG;@}f4DoX`#~GXtLo^3R`Sv-tgO>?8wy{cXr% z2wWw&VwKUjGH`9+D4q^N2e{TKt`?jJ941TZL3)kg{NU0exOQ;;)`OFek`_ezKn_~@ zZBMaz7mh$S=i)2B2&4GRpaaf_YY`pfJPllB{z2`zsNgK%M!@xu5)R5t0XS~~|K=&w zY(3=RwS3;wY@xFUa?Pdqicrd71UymmHY zmSjg_|JtuDn3>=@I&k5gm-?b`2)a2N_-*ZM&NTX3ePF|}rp|;@`f`2f(0+c|CU(jM zB1%DYZ8*r+yv|P9`VNy*YeD#7m4Qe)vhddkF0g^mdX~*M#v_H!%ML2FdSub)GK$=2M`##j$ijYJ0~^mDx7?k_=*)t(ouvz3%HD%_$$w|!nhj9nJ}E-#r&WR z0qNj=zR1hY$R9wU-*K!8s8CirN_}v@VudVEtD(HA56=rW%PYedJgS+Lt5GwKgZ#2} zcslFZ$>g)to&j$ZD}V4uS|O#jAYQ$yEl8(LryVT_ogUJ8{*PQio(#=!Rd+L=^B1<# zS)fBzAv|(BzMf5l7KTUNj^vif`I{#-oUm+*X{(X5My%e6k6jTLyV4N5DmJEE7kgez zY_Ys*`-E*txy=bpiMg?Bbg`@Tmum|ij=sPv(iQ{ZY3{MvKHQUM;n+EGThjIkO^MA3 zlxAcq@K33%#_MsN{wCFN{!zzRZz`Vs9?$W_Xn*>`a7vM$*I!BtEDXi)yxOqlf2!oF z%RG*~m0b3}{Gj4!NUTH8EWQ(;2UBnS`Vaixzp&i6x(b~3f&Ki0zpyi$T?jPZb#UBG zFMa%97sU;Nb478qH-ICGOS%^0M-*oUR~o@lN5}$ayX)W-r4NB{A5#}OHPVzTU6YinUBHU~y|BxM7?y@4Y~Ca-1XObqAIH1o)4s=E@7W zGca9`&JT_J4tDBH+S;J!p<}}`okexXZ8tb|ZP#Vh{QeG%RMk){-prrwU<-}IQ1CSz zRJ=0WnydMb9k}1gM#34}Fu2f!L8|8G{uT3e7f9)Ge9R8OFPZWWzQB^imcOz|XVq5X zI)NBk{)#FLFHElvzYKSP4#3*|1im<@bY8lhfBjc>xjM3?-GB$qU+w4XUc{(SgaE3B zJ72`A;u-`-pE}6zZ^60QhJXc&>tDnTq>S_`pT@`KNKf8ly4506v^Q40#uYhmiu%R_F{u$IoBejfLx5cjFGC4qPRE|8X~7 zbag`xKF7y)V+~q}{5{X-cd|JNb8o`+4=r4wwOe&3OEESg?PM>;4eIULxAL8xxc}<| zS&bi=SJw#7yp`|m#0%+S)Job52bEF-G(WE5=l+dtG168QeVrJa$b3;1|Ke|$E|wsj z%$IQnQT@eL@k?J~3!D-vpaYHR#ohr~a}e?G-%|ktn8y{jtjgQGvSG!tEk#?GuWDSz z3v;*UZ!5UGIkzcKKZMm-YZCkS&?)@+zVPaG{UuF#&AC_yMQgM4g@C*XF?Z@z)PJyd z0Fh03mukV=_6}@pa*}$xsvc9V!@`3^(!jzGf+rSW}KA14c zH{HsAe2JZx(0vQqH5PjS@ISwdiT{-^;|?(iHI##2?0FeW-f72-9P9z$;JPk01wV)! zco~mTTwtrP6F`N^@iXh^EUoYTnf>taicbx5Vkgj8aX^jWv^ zJzeYqMw@h$OdeAL4CEL5oWHZxMoO;#lrilDy7E@e|IW@xD83bA(%$`ekfW|)4E!Da z$B(uynSn3+ZN$*tNRUQFL_gJZv0*ywFjLzogr7_x3w}->Ynsu@{~sY(NmC zvqJxSKF!C@WJzR%-3Y4bwc8i`5+BPnzn`dn7ZF|rroB;=XfVvEMlD{?AN8?$%ni$& z8}M~M73(9u&&SST{orKBm@;$%@O3`xHB1HvVdK3Mda$R%guhX6?NMCPA24kI*R5)4 zdS-B?o5mC~4IDVgHVa(&UDz){Wi+k`TqU^3G|IqL+=Y!9x*`-EAd_pcCqe{QE4bkZ zt`XcY^dcR$gByzAsLg4k&p~h%RHqZs=;F0rKE2jkwl!f(VtPSi9FMO|{N&?YoKF~0 z)Xz+E)gTr?@tX(PO1K!kdrYxImft{sDAJ}T#bRngI@UW-3HR_jUdP0= z9J2Ku{FEt6KfMle**%(Vcob7t8=kMFN~2yobljipSEq@SOF)=Vs7e^cqiW>|zvn-` z&Q`DrkQrOYlrp+hy~7LNU@Msq+}tK?KS3S#A>Q%^D`d&=*8kL)Vx=+1!G8j`+6t#x zHMnLxi)N$h3oo9c&rtGc;Z#1YoGPHTRC!H${hx6W*c{oH24S`0gd;UG*~@t1}fZ;Fr4d5b-2=!RVW2LJFal)V^fv|=NR zQ6tJ(%ICbzR%W+?E9ysAr;#}oCnOed>2{>FOkKWp@|NVH#uNCYg6+m_ru>EzH&4lL zp4i0j&OS;1C2xP5rSSdFv6HDYTk#ig;u5?MXETrOVdok$Tqx|9ys(FzZ>WLX`7hqm z!xl~_^)7^az8O0@2}%R!2iNA`&!@kGD|Zlq#&7tNci6&o+UsQ$%5LhLH{t3c)($MA ztKcR4;dk)lp$$3(L)hJfbk4njzx@t7+1LlN=Rep;gsv~A-@p&N!xl3$JlB7R@{;Bu zzT{mtpV`6Xd_Sgr?Xib%e3xy!sAH2PNe9M`uEL^h_kgPz8GkknfU5>Kgm^kgF9@#W z=VN*~;N-h7o%(rc7(Qe{NxulhqrNVc6KP=}3@l zjMwvN|6q#^(%qQopUyY@gSD^$%EKAhTttS#PM-KayV{U)4<<}!^4s2LSFlbvuUdqy zG-w|75&!0WbQTX1O@@ym>mh}{xsY2itIB0={f-$er{rxmH%u?slD_q1p4K=mZ(Hj2 zlk^46Q=3xs#k}zY<~WPCv`Ic6+mB3xinp%X&~V=7)qG{+ifu*P zmlrfIYbuN}^KfxG!)_{iHCk=49B^I#z`i4B13IV`ZQusq z$M!8m;2@4RG`4+!eM3|RGc{l}xO#AH{D$XoN}Tc`n`|7s7cGN*N7NC;Qo%3!h~-YU zLpd868TlBsN{#)?HGKNVY^}Q5q8SlB>`>B75szHM4}FM7(W4;ce&OcQYsk$qV=>YT z?#13Gqf|7ZfBU_wY%5c&RW9&W;^V`qXB=ny>0(xwGVY6zxlF zt3p+9Av4kXPa9nyaTMb(1M!wYzN?R|oKXe2J9tPb5>;bIyzf2?Ui(EU{>9TjW)~VW z?#Bu86LzyfyzIV;-}N!(x#mBk&JG;n&wtGR!1|%lcL=G{Q1dNc_zAm&S>fHU!>%C2 zy~tZWVH=FyD7E>Y`<1p-y(Die=M(m@TtoK*=&o_RaDXjbN5h5uAUr38wAFy(_5{PC zS_F#EK)fCC1C;G+m`k_A)MC`*!Uc_NP&LSzc>;D9K^4exck#V@*z8GkCGn%e8YhMn zH%0u5&*^8U$JSzS|Cl>&$2S%?_A`Uggv|Jj*nEYW;L%O|u72E1lu-^%A@!>(`PxnV zgMKuY7o_8akoGlW<|aP#Q+AbM*p2DHWd6XXcrcgs5Jt|)A*D;37Y%>P(hQa0Dv~+- z49_$NQI5u;1KM-rggf~~pRw8V2BDDS+pj$oDbOyhc})6zAM#IKG6xB?Vmq5b$nqQf zxzF(I$N?_tKL?Zw;vRL;d8^*QEJNAURm^xcg7ZtVKa30CiCn*zZVVuIoyh0xW%D-J z5a&aA5Y5)&|Tn(teS2_C}cZ{@eRP(9W8HdiCn>O-wpR*O|$y?CK-yBe%xr8S*G`!CR zpE8HP^f{WW6`9C9Bcuc-!BF1FWA@>$QbzUrmWGsg%E9k9@>TorzNi4CJ2#{_s2^Rl zk>9_MEk4b<74vV}awwt|2foSz?Dsb-kOd4t}oDI9msTXspuvbIq6P!wy_Ol$BzfJI$q@DaRFST z20(U0(?WGI#mUbNu!{{zjp&+Xe0u=rY#Y+-+koOxNgmtC6~l#Ml7 zYfxsAP(efBM@ad4)a;jR@vQi5DB|TI?HRjx1{Qu6nFXUv#J6A0U;Gj`rgq2$SMnde z#M|Bm$kJ7O##eazIs(~L!8d(H3+%ST=34&#SNOQC7P6y~Px=}UczYq&-M}yT8n#js z#;hCp1K?AOAh+KfI=Uc?GFk?%?PmV%*YHQ1W)0uM7Y<_bmeq`2b{l_vke(kxHowGw z7-Z=i`cMm|?++*gsVLanchEWFiP@3Wa#sH4`3+}oo4ft=f-RPlY(P6@0J-E>*&I4{Fit7Lu1Q+f>WZMHS04|xF;UI1R+|VCF znd8WyMjlO=Mq{}}HReCAXD4#&e^`7BTxlUYLNm#626+`D`SOU7yd1WJN41BT99J93 z_=a%(k0b(7#Mb{rDVT}a8Q~NeiX={Q7HF|Yi$G;91vd~?PnF>Mqc|71z9_B%oIi?d z1J@hDQ8jge>xnF?VL)a0bwe!G5Q3a?hbqUVd2oriBV2`4DLMbel>HY|^IuH!e=%ME z#S9!{PI88{z|rUNR5i4nTQ$0$+JY3uUj{gL6qgOo6U7yS>jXC!Hgu4!9b8`&R|PJ3 zN9eS1igh59u-jVLnCg)BlFR%fpYttC&F_L-g!oMIjDwu}!Iguf^P3Lh2ElnEI5W6W za07n~@d+*Xe$?|Vljl|9Odp1p6|wTUw;jEL;^uT^_z@df7Cegh8ov5FmOiTja#GFz zo~Dp)of^-lKsU7=atd_AXBfr%R8IA^k~Y0FBVH}7I8nmO_eocN3>PoN+aZUq?)bv_ z=pGbQ3z^WVtl=+y$7ancf$aIy|32|3jVi>q{)y{{=`}gzz@Pa1Vay78A(w9Cmkh(l zDCGK$TAhTihvD}R#qg2RicxhVe`1)eG*m$Db@5+@*(O5}a_uI*@q3J{IgewMt>y22 zkEP3Q$Q^Y&{Rg(oQ1k?BpWvVTfKl5GdGJY|{v-0@gIw?wU;QIXUp)x9;VJAwhqR>S z+9f8OKDDg;BrZXSkL;Q$;C$dp$p#1Ygt_42pXT#|EN?#9RU}a3Bif72KFku*Sb~|kN+Sl1sXSh$0X-XTa9Z^Zbl(@OzD!`>ga8__tQFq*;Ie}F0mPF(iqE6?il}(3^ZJ?1N~na~j2#aL z`PyF)O)0uTmA}c;f1&OMx%ExH`WHNrAB1ejW{6$n@z{&Hi*W&0KLs2D9se9Iyl?TX zzp!uOXt%`zzcx%yq--ZYj~htrl31?x5#IGH)~;E>)%p4Rzq0gs<&fQoPoe~HP-9nv ztB>H!;OaG-)KNS<^FnU)^CcwrLH7Ci6{GA!L%SE}=|}vWgZLV)4|4Y>$NZ9yA#h!v z@Y@cu^n|3ppnVZ99`Ab(GLs=2T+$x$o5}+RnVeS!VlK9DBx5=#a}IFX;KG9zakb#A z;BrU_M-BcO!By_zv&PsRsVTeQc<(VAIyvX69Diwy&2W}L_I^HoI#U6z9b9BOHG(t4 zo(@Xe4XzV3th-xI1T*aP^4cOB9yICn;=3 z9PP20{Y!|StFYXJ5d?hLfYY(%1Y&&C#t5qf@b4dCcprGsz~oOd?A zMQ6mPR)0f*5Z@W7?+eM4O_s;YYDJ_yd0#cx6Ug()v#%9Dj17$aJ4F1TXsC2G-3)bi5)q!r-8PiWLi z1V>wihP%8O`W4`s7x7>8#&knHg#tbfb6E+wW994T3xL_@RJe;7)4(-GaFizXp)BxT@FPUvAg&0U z8#_SKlP@}mD&?N&lA`!^qB#u*6>r1Nj= zamo)f<1}tH8f8NlxXdBG(g?c%?T2GIrM?*emkfoQPB6}%W_kz7 zKp_hebdW*@IQhrJ`~@h)l_1~<9_C-4U_3Lf9)V5-rcE*~cKQ)$J8*1_rP2+8^MNZS zUpR;x1s96qlHNsaj*Ks{8C*dGmjT->a5iujawg6xEQP>=q>uQXNydq5%b-vS1@)vO zB^*>`Rp1?ALzUI|dhm5oJXL!uc>kvdlnlOqJ)1ha8^HjANy3ysQFO^UG6pEQS0{ON zGOisXI)3Y9<7_7)o37Q_TVv$@B&jDxu4htTOjh?qsZ%ZrO_X|LWxQA)j+OhFG#Z=L z%A_tsK-a*e?s$1{qRx{b2Pf)6i82g)6J$gWOpswVIzfg`Ly{R^^!FtpWpT11BZ;MQ zr%tNVm8#jgd_qWvZH}ZKeU%!XP}Cpek)=KvHc&2b>Ez*9sa_}78>Akc>^Dfwdb!mg zb?9ZULFy&7Az8+Ux$UtKy~t;*)J0;CD)z;u>`qKJ?$haqU*O-KXnaLK_XYm+6ytxK zx7Q+Fv*d~C($|}%I)gksUGm1sBW9^9Nd_~VBzKr4|75v6U22?4%)m)+QsmA**Z+%WD+3*LoOX_sBu_#x(>}k_so1Fjx_0#0OCv{Tmtf2(V zAkLEO5YwNQWfqol=-sCw@HkWaICgjqS)wQ&6Y-M%SaW4%?&=Jq&~BF*d1H?$)=RFO3?i zN6(jB@iKnqa%7_1YLh}H8B6^G$ueRar^x%gjF zh~35HZ?Je&hd^kx45Rurlo|IL((G76iFU3b4}EJ;G^u$l$=z$^!L_=;TG9{q)~0|? z_YqG`H-4t~J7}49+ozYhs9MqJ)8+!L za$h1Qu8q3kM5!?`$3H13~w za)Ye~LwdQ>D7D7;6KYLT{lrck)*FoO{yxL_cfGSdMt4_?ADKRnntrrcs@2O~=SdBE zvwx-35mP(_27^R)hChM zFloTh3Tm3%y;2&UE_bbzMyJc2E2TEG8PR^T+`LS3j+*7VWm4@a^6(0&duu%mP*a%lH3N_D%GN=Sf#q9GBoQU z=S%LTG8{E5r3_F%LV=db_!7|vojfT>yc3JSQN^vfazmcv&6Njpr9iIgr$BCmRe{-! zA{5A;mH4iX((17wQvC|5ouQTT@G5C^rFn3bnIC*%nRGT2TuafE$WG^z5Amj7u zwgeepJau72Uxjag!e}G>m=8SGCqQ=J5lZ}kQz>u+s~KUPLjKpJEhK< zpw$oFN}4~qu7Dp$+e5Izom>SXg^bKUMF>B zk&Z8mbVjl~y830Y-i5MvS?s_fRW(}%)1NH|7RP$dmfg!@2hS$sp|i;>c(y69*cn@Y zj%A=AHh9k5q2*F5dSqd2*ST`ra;fKBO0z46(&@>e0=gE3i_y9q!L#UnqAhjvXwNhYF?UB2>RvKI*`_@V>n~ZO}dTrEg+Ri6$t?T5rb+NbWix zNxH6=JvT~?*IOYET`v#cD7h-BOtqEdqPdcE`YPq28>L~Dcio_t!-4+cyEz^z12@Yq zqyFB>87kY+yFUj?S)XTPV3smpu!m`qSmn1(NS{8BFi# zJ{_Xl&yf4(NrPvQYEYHi=E?Pz^^$)cQ3LalS6u2=cO*jSN$k;$pr0klbw!dlNyg8e z4kpQ9I;Yg395}muMN-FUZp?RjEVa5J3@(dcMkf&XrS0GYMOlMIyWcw7=rHr_ON{9g zeY&imEH%bt^~#v=TzQFckL;|~>He6Li77oUkPC3NlSi^7FD}{(q+Y%3S|APSWo&d) z7bABrz%(d3bQXRl(u-$A?iq6bd}(CHFuHu}EV*%kF-Jq2Rl`17A&bMhOG9ayz!z0?N-kj#6bWT%5t47Y zP*lxvQ!Ns9ypB4?QT~>OB3kMf@&2swc0R#-4ruzWzeU>NrlaRatwfGq&9GLWuV=g? zuh8>}c+)?$c=x5K)`-I{^xPk6ykotHzd}Qg&<}nBd!_%%ntH#CL7r@~;jhONRN zY&arnszB6SIPD^la9}{Qv%I3ACkaz^9OW-*;f$qPdal3AYWnzzWGy1>s7^R4cu!L_ z(I%4-M|M!FG5;d;JRIf^wFKP%(s1Mh4F?5=P0hltR-|WJFZS@Th^n%Ss&e_pXDAS^ zQeo(NM~nBrt6{iiywkOWv&OC9HbKzo0nZB{2?koGkpEqM;+*ptZkuzh>ygO+Ovc8S)4R zE`h(5A@gxER3!L}qctb`U%$wyi$3JSVgFcU=yWZo;ZD>iMm&oc@uD*tt~p6G!Ea^M z=M)K>{v@j89t|z8Yv>ZZ|6MKI?b0whVYkrxf9Wx&*> zVPLa{(HX85b_G@~VbhPAUb1Sx3^SRH;|)7RCuAV?cf@!NjQLwP0 zZA8mR;BGBGS@bot&~peo?_ad|uwAyWvkALefnhuIm!yv~$+LUBp-C8)(}HFk9)V#) z+gBRzePq1ds3>vYT^etSva{^d_>m_g?C4Ck2*c#VT7+GoDXJz)g`W3eO%K1xqh>Jt z&mrPn4{3a|&gia0%SPfmawNAJ7~GgaeZSw^KN5Q#3S1WuQ&iyM*1KK$A$vlBwBsEYQ&7 zjB-#U=KX_tnu0lBL+hOyhBI0rnkp#b?E*al!+Lgc?FcL#Z{H~FoxhckODO)9Ucb=u zHfaeZH)|N!ByL>p)X*m|=u*Q@siRAa=o1m)ocn}BdyD4CLR+2S2s`vnO;p2Shpv$3 z$Fe}<-6E_i;a|!xTIUWvqWSSZN{Id!b{O0{K8Jl;4#W0RP-MupLvs)m7`7jIb-cYO z;c*LSp$t*~_kAY}MOE2qwXk1=&39|za8BZX&`R=KO%g9kY}%?#+k+Mj!x@%P6_VI?&uUa2)JG270#QEJiQw#e9 z1_XL@#}_n3*gG491NUz@u%9;Gfkim*2z$?O*mutwZ(pR@JMqh?BFDesz?L!Ifn8*v zRoHuf!(KjhynVH5kN(#o9Qc33fkzC<)|u*(4#^?VBd}kfDMO353Uml;6zCHeB&7at zK2r!#s|9+NXz^_V{Q?65g94?cOgsNgOEm+Fz*2z@fi8h=fgXXK0{sGq1WHzs zL4nx0Z*XccG^Xcy=Z=n_~LR&)!Z zO<;InsT1>oaCrQ4K)l%IH-Beb6HugG)+)bwl-^M z7g#H>RYRxLEr>yZ@(#@)Ltufxa)AzkE`e@=9)VtgK7j#&wieB=S)}7r!{|i;5h3jq z3IeSH?E+l_lZ6AXD4|bahj=_0$PpLI1)}EY$N%U!OGA(F(@j_i-tmZ*a4?*JM+^G| zuNvcD&x(nv=n>;rm=CO&sNRs7S8DNLK3jynQ9YqFO0PnMqkBwUl%D4}dYu~Yl6fX%rJY@}MxTj=%0jyEs&UNGCE#ty?H`aFkcm;D*xN+_Hc+Z;g;T|zRvWN%3 z1%AFZWSkOHu~x0&N%7*jtV_fB zs4UBEV##~B_S;X96j|2X`R;KL=C%0z+0 zEmD|I`CmL;r?N#vSkWfJ;d`twUoH6P47+|ZxzpY z+yU+RU~3?jhME}HHEJI_$#c#Bu8AW4&`-vxF_^?c{bXGx*ByumV$+$3U`(e&>#&|1 zRCIRUpg9d^Fet*|2TNhze50lpexMZQZGsO!NDA|Hg7=H38DYM2Jg-eGC^8@-!iuBg z6~nY-zDdhSX80k5h_N4s_Xx|k2v?%Iq=y4t=BHpAKM0ZB-|JUBtyhIhn(Kni3Z$91~ zH5f(fjRXyt&V-E)5#_;f-BWx1Q$U;EuvfmO0TGJ3v@z671queJr`gKtJhW}hDQZ&_4zg1s+~`sWsvTk5o^Y*h=k zW!*KSR_}VPbzN?37@>c+Tgo~2z1^~F{Zrk-U1{SU>#mgFId?qFs(G3y8|H@`ykj>X zQE_{A3yPn0@Ii2%c~`*s$@7?cTg$q5h^GeV6QXIOa{Y&KxFWkO>o<+g@HpO7;gcd0 z517#*ou)mKsZAs5nU^;=4YO~K@}`4u^*%%oaXutTjuEE=IdyzWRNLC#zGi=n%P*?X zW9IymD1uUXjz1XxKaP(&$ z`Z#bE>A1RS@B+eFSKBGk?n7p4j(HeEq6lX;V2?>xo;h;4?ch(qj{uKR-+Begc}QF? zZ5xS<^`4}4xr7`)-~8EEiPB;M7PfNDiN2> zy6CQFo5q+Nlf$}*3b?s6a9++TRgYoz#h%I)l{)BLhe|T+712=d3u@yIUMB}CQy=_| za?&drb+(@BFGKHmMRzCffF+96Vdv_G|7x_Uddsf=&Tom zhFuB9+y&{4`CH|JPXzs=%QQ5j%PP{X^~MHS@(EMVLRJR2*{_C3#42dE_C<@xt{C^_FbpLgbc zXWsW*lGC(4;|)LK4HW3!nzKia@%l0~@nik3X}a7NzZ2nK$H!>z_}D3R>;F8D+|Y2~8^c9&6W^XOCMtEeqcZ!m^+aT!i~p3#w;r$1v{YIo_2jPFuhdT;r=hxncF zLKjWT0MuqE^ge7wl~5iVhpp1*tA-9E^{I^YUt(lnWX12>#W)(? zn_8%QWcv%mXz8ZdJ7HP^c`>4?d3uM@kmJ(J zjjXgneWcv$8c{7qMOvPIQjTe%RA-9}=~0=nHn1HPeN5ON8&ADGy@%vj zye(^Qg#3N39PJxrM6+bubEV$f=nHM9$t;vYFV2$c8p-dHJvz^LHKR};BCF)L9BY)e z8CjWy`ex(OOqZT2nGBITs5DW*8>EMP8B0GodZkd~o8^9Y%Q(N0F-K+9KQ8NXpd7hH z!lw~-=D{e7nR8g~{h{=eC6%9K?p`#m%_`J0B)MB!!!mE*$;jUqttT8!vZB36_M}y2 zEYG+!yD(vWEZVH~B`LG;^k@EE?GKQYg&pH|L09i+02@eS?x>~W0mpS@YjJM(JTA~MK8~u%c zbuHAhWhI1U8-tBqpg`6k-vh-ggW3}_;B2Xs8B@9y>RpYRZZ5r5#B7AS<>}80o6!!h zc1vQL7}11#tXT#tgs4cE`;bGYG0){n7;06S5pw0}(`4H#WnSB56oW)`-50^~ovo#5 z&L|W({Oo`h#m{8p(mdC?io6SK#*Y)f3vToG(&UW2#^X&3FX3o(jPo7#iW%A9p zPn$e-%IvA-#>e?y{jY|%XE!6Ech`(-Cd|HI#>}ZxX52h>*yVQ_-}V@4yxt?*nB>0H z_^oHYabeH1;PrT8e6MR0hgaM=`|_zqMepv$>+Y$>J3Tx`)!7cCyys4%d*2(48%(!z_`Q>+Mldr#K!psXNUp@Jsx6iuyj@f^@?efd7n=o_Y zWW(QglzxrzU9W-0@4X$yKLGx{chb5|eQOepr+al@cXh!uo6)8JdHU3KuMFN~HxB1H z*M-i#v&*`H!w2ZbRU=+8ejm}TYGQXB2XR=j!NDao=xH%|%?rRH*D~fyL91y+iZ170MH8MAc@=}$G5Rs;B}^aNfO;v@N09DgdJzRw&h(X6biw&w!3-5t z?UhV-((Ldv-B0^hGu`(x4s|WlJ7}bXpH#&Ub%=6P#{l0O*ieY+p$(|lGu zIC9OFUWL52k_-{cKzb=vd+QnWDARqke;d=Mk>1YqD(j%q!3@^)(>{$KA#3_MnV$DO z?w7}OH>JkS^Z_en5C5zcFoVa9L*!w)HKavM_xHp7y~eX%S5*nKTH{xG2EB~w*7*6D zZjE0#)2-pFK)v&H#u~p$23X@)&2){%FTiw9I(Dy?>3-6KaXL&VXC?x5aRx26&W4yC z?2r4`Gu<-)^)S<|5pDh>T}7H{@cQf6p$bwECm$NVpou|_v11LQU8!F;DO-}C_^b)39 zBU;MzX?^H)ri>Y^A@woc8q#v6TSHpO^azcppXosw(dsH@@RneY15DTcgnBL0tsxCE zJxU{2$MnD;Y$rr|>~zMe(s~A1dYI|fkTx^jn~x46Ot(g~HD0fZowh{d4VpEi?M$zy zA?;wg_iS{meHLH56@yWCFkKrfbTR*#Av6wwJf>R*>jI_+DIgEiD`+H&n11*#*uGcj zqW-OEruooN!T`@C)JvH@dm`#(O!trjAJeT=mMglPf0m&_F^KtR<+zgRPCDZFnQrB{ zn(5Z82{0W}jPpOp4AnHGbxfZ|Lt4*tH|-y0dPO6SP&3mHXW)rlFf8R<94Q7Bi&)?*6EC8&_0i^UMmF-rhA@4$4;hODad2Gl>#@@tE_3} zVTKYK(jumZCt%M?nC_tcOPO98rXpqf08BxZ=3@q5HukKX=~2pA1=F=d=%AA8@1pK! zx;4_(QiuAprk`a9Frb}!P|NfP=|QGjDX3$*m4c9}i~6@x5LOMK7txS5Gu=u-E7N_n zf0XHCY1Xtey&bMH-!E|>oDn_PT2d6xykEQD>_ZLo_|5gh8 zbX`@z04p_~Gw4N3w`Pr(>7}$Dl*DxOuUR=OjTyxHr^OCVWlXnHR?hTRx^Sytdiy_c zgesX{T2+n)KQpw`{H|uYZ!+#5V0vH;>a|Q?c@yeErduOgRd)tMi0KvNxSr|O@jlFS zYebuwZq0%S>YeBR){sUS5T+q*W4iV-_N<-h&S|K3Fg@}*>e_y_s3HFm%8et=plR0e zK9A{j6p)+gp%2hO0nDW*S(}S6)momN7iFz5+ zJvX5416|g?HT@!cum|M~@O_AS1=Fn@S2Eqov7hNyiUXZG&c8|;(%Mdg9I^=YEXZ`{ zP7J7y>5=8AhnOCmje0%PM>JI7L86%%0u)e$>08}6bgfJeP(V?pFQt)dW4hCa0ku~# zgH?1LOz&bX$x*d>HSGi)gq%#zrTz1mK7e#L>3_3wZ#gJnfaSo;^a{HCE@8TLa4IwO z39c$1vo5?1`(4g-_wA@xGClGGcGu7J5ba;h^szIsom$j8SC@KfD9C^)0d-8DU4aeN zGu=b&gqiNY3-@o1)5YpShDe+N-bA7GG|Key6WHT6riZ7agLbB$Aiaa>ny4^2yAH%x zjAsrucTzwBrmw%b3V~W?XulctAk(dY z>X;sS8}|<}eZBaE3;cwcUP49MT*VAaKSvB6wV|N$2 z&;sl@7+;Ll)R2?u-aD|NJf`mwqG&2$g7UvQ`@-huOdjMT$`v7e$| z#B^&&OPF3qftE7evl{~~vvlk3!csE$ECan+;-g5*nI8BO1FB$poEEBDPz_t87;5vDKfhYnhq z9wt4?bkARL|8}WE{aMq`PxG~d0fGJqXour#MI+t8bT8?7Os}Mif48cO`uFFf1CMGD zLq-7=G2QC1m+4lIOPFr;xQyww(EimTH$G;t9F#NNa!|o^%Yol$xY1Qr&8)!+>|TKB zUH*l7Ez?JAz)wg7neLv1dL7flWvGWx?>wWNR)dCm21KZ#W~R5&ct@CCItv4BWxD%L z)T41aWYp?GTbuztXm$((YG=CDgAT4Ir-<}u+J9N)?ZS4PO!xc*`-zImV}|Hm7^$1- z;W?-mFx~2ahv^j|bX>&r6MsRy1a#p)Hm4jSBKRp~K*b&CxQyvh(tS*~0xDmxQ(RS*%&L8YVfmTv{}lCVrd#0#n652GFSSf}Q&d6JJ1fQtw~hfG0_vGw zM->oedZ|^CO!t!>iPPbeq*jSVjRQVcRa=}{)2xDRXS!9e9Za`ca~z4Uzjg}O$@J3q z=nN3`&hgkomzHh@SXXidOpl7s0mF}n>yM!BWqKanI4*pdIZN_Lp?2fhX|AdcW?f2Q zX>IYP=cTY5Ot->vGTjO*kLgxaZqz$Vbu67Kdl*nc<5$G=l@zF#={^dygy~kGrE&Vj z@Ih!Ar?NN$lq%^yrbkGxFuuDPmOf?;QdoYbmr_{OOt-=cFx`r(mg!bhLDW0PZ(#za zHN=2QtNxfCqCmq;udwQm=~keTI2}seinKM(&^dllrhDnqq>bxer_1_mXL<$c9ZU}j zT~4*H;!Cxa00+~ZN6~?k>0Z+Fm|j7;o9VTr7l0l&)x%`)Frc0EBBr~KVL)D{mylk< z^a|2TJ9X(_3zDI%(;$bknRFl1+et5Hy89apsDkOGq*pTC|4kJFerBj6pql9s(gRF) ze2eYWGTlphkm-KX>#CTco(v(Tx07DaboX&|9A

CH^9Bt1fU><(fr8Cn?-COyjZ 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�x)PXl`QIF>>idm-fma~$7>-WVZdbJ|as8%eL%& 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%0AnG6=zt>;Ae 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

cI3ckW1C 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

1+fMAEaXBkAIj6nHYg`+-3dWn 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 F{{+op7-s+g diff --git a/lv2/aarch64/ToobAmp.lv2/ToobAmpUI.so b/lv2/aarch64/ToobAmp.lv2/ToobAmpUI.so index f0e889216f84a3eff12db1f2eef5fc75c3e92452..8a63a3e1b9801e0b542c973f94fdcadbd15349ff 100644 GIT binary patch delta 159 zcmbQRv|_^2iVZgyMGUk5ugdq!TXlF2Lvx;K)>;p(OvmOojO}k2L6`}MnSq!Eh*^P{ z4T#x+m;;D8ftU-3xq+AmhnSYrDdM#)t{ Yj7II#LnMJ%3W%kFSZ4e55ZRx50c5^E*#H0l delta 159 zcmbQRv|_^2iVZgyMKt9eh|Y58nGxaa*nO4r&C{d+@5bggjO}k2L6`}MnSq!Eh*^P{ z4T#x+m;;D8ftU-3xq+AmhnSYrDdM#)t{ YjE3#gLnMJ%3W%kFSZ4e55ZRx50aMaH)Bpeg diff --git a/lv2/aarch64/ToobAmp.lv2/ToobChorus.ttl b/lv2/aarch64/ToobAmp.lv2/ToobChorus.ttl index f8d3f19..aece98e 100644 --- a/lv2/aarch64/ToobAmp.lv2/ToobChorus.ttl +++ b/lv2/aarch64/ToobAmp.lv2/ToobChorus.ttl @@ -40,7 +40,7 @@ doap:license ; doap:maintainer ; lv2:minorVersion 0 ; - lv2:microVersion 51 ; + lv2:microVersion 52 ; rdfs:comment """ Emulation of a Boss CE-2 Chorus. diff --git a/lv2/aarch64/ToobAmp.lv2/ToobDelay.ttl b/lv2/aarch64/ToobAmp.lv2/ToobDelay.ttl index ef3939d..b2330ba 100644 --- a/lv2/aarch64/ToobAmp.lv2/ToobDelay.ttl +++ b/lv2/aarch64/ToobAmp.lv2/ToobDelay.ttl @@ -41,7 +41,7 @@ doap:license ; doap:maintainer ; lv2:minorVersion 0 ; - lv2:microVersion 51 ; + lv2:microVersion 52 ; rdfs:comment """ A straightforward no-frills digital delay. diff --git a/lv2/aarch64/ToobAmp.lv2/ToobFlanger.ttl b/lv2/aarch64/ToobAmp.lv2/ToobFlanger.ttl index d92266c..88495ec 100644 --- a/lv2/aarch64/ToobAmp.lv2/ToobFlanger.ttl +++ b/lv2/aarch64/ToobAmp.lv2/ToobFlanger.ttl @@ -41,7 +41,7 @@ doap:license ; doap:maintainer ; lv2:minorVersion 0 ; - lv2:microVersion 51 ; + lv2:microVersion 52 ; rdfs:comment """ Emulation of a Boss BF-2 Flanger, based on circuit analysis and simulation of the original. diff --git a/lv2/aarch64/ToobAmp.lv2/ToobFlangerStereo.ttl b/lv2/aarch64/ToobAmp.lv2/ToobFlangerStereo.ttl index 1cb31df..a3a1dce 100644 --- a/lv2/aarch64/ToobAmp.lv2/ToobFlangerStereo.ttl +++ b/lv2/aarch64/ToobAmp.lv2/ToobFlangerStereo.ttl @@ -41,7 +41,7 @@ doap:license ; doap:maintainer ; lv2:minorVersion 0 ; - lv2:microVersion 51 ; + lv2:microVersion 52 ; rdfs:comment """ Digital emulation of a Boss BF-2 Flanger. diff --git a/lv2/aarch64/ToobAmp.lv2/ToobFreeverb.ttl b/lv2/aarch64/ToobAmp.lv2/ToobFreeverb.ttl index 19f365f..2212071 100644 --- a/lv2/aarch64/ToobAmp.lv2/ToobFreeverb.ttl +++ b/lv2/aarch64/ToobAmp.lv2/ToobFreeverb.ttl @@ -41,7 +41,7 @@ doap:license ; doap:maintainer ; lv2:minorVersion 0 ; - lv2:microVersion 51 ; + lv2:microVersion 52 ; rdfs:comment """ Toob Freeverb is an Lv2 implementation of the famous Freeverb reverb effect. FreeVerb delivers a well-balanced reverb with very little tonal coloration. diff --git a/lv2/aarch64/ToobAmp.lv2/ToobML.ttl b/lv2/aarch64/ToobAmp.lv2/ToobML.ttl index 68e39a5..c842055 100644 --- a/lv2/aarch64/ToobAmp.lv2/ToobML.ttl +++ b/lv2/aarch64/ToobAmp.lv2/ToobML.ttl @@ -31,7 +31,7 @@ toobml:modelFile a lv2:Parameter; rdfs:label "Model"; - mod:fileTypes "nam,nammodel"; + mod:fileTypes "json,mlmodels"; rdfs:range atom:Path. toobml:filterGroup @@ -65,7 +65,7 @@ toobml:sagGroup doap:license ; doap:maintainer ; lv2:minorVersion 0 ; - lv2:microVersion 51 ; + lv2:microVersion 52 ; rdfs:comment """ The TooB ML Amplifier plugin provides emulation of a variety of amplifiers and overdrive pedals that are implemented using neural-network-based machine learning models of real amplifiers. diff --git a/lv2/aarch64/ToobAmp.lv2/ToobNeuralAmpModeler.ttl b/lv2/aarch64/ToobAmp.lv2/ToobNeuralAmpModeler.ttl index 52326aa..0d628f8 100644 --- a/lv2/aarch64/ToobAmp.lv2/ToobNeuralAmpModeler.ttl +++ b/lv2/aarch64/ToobAmp.lv2/ToobNeuralAmpModeler.ttl @@ -61,7 +61,7 @@ toobNam:eqGroup doap:license ; doap:maintainer ; lv2:minorVersion 0 ; - lv2:microVersion 51 ; + lv2:microVersion 52 ; rdfs:comment """ A port of Steven Atkinson's Neural Amp Modeler to LV2. diff --git a/lv2/aarch64/ToobAmp.lv2/ToobTuner.ttl b/lv2/aarch64/ToobAmp.lv2/ToobTuner.ttl index 01ba793..e3b1a4b 100644 --- a/lv2/aarch64/ToobAmp.lv2/ToobTuner.ttl +++ b/lv2/aarch64/ToobAmp.lv2/ToobTuner.ttl @@ -40,7 +40,7 @@ doap:license ; doap:maintainer ; lv2:minorVersion 0 ; - lv2:microVersion 51 ; + lv2:microVersion 52 ; rdfs:comment """ TooB Tuner is a chromatic guitar tuner. """ ; From 805dd571eac22e5ce7c4eb4d78d2c0353950fa0a Mon Sep 17 00:00:00 2001 From: Robin Davies Date: Mon, 28 Oct 2024 09:36:17 -0400 Subject: [PATCH 5/5] v1.3.62 Beta versioning --- CMakeLists.txt | 4 ++-- README.md | 4 ++-- docs/Installing.md | 6 +++--- docs/ReleaseNotes.md | 26 ++++++++++++++++++++++++++ docs/download.md | 4 ++-- docs/index.md | 4 ++-- 6 files changed, 37 insertions(+), 11 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index aee3c40..aa0506e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,10 +1,10 @@ cmake_minimum_required(VERSION 3.16.0) project(pipedal - VERSION 1.3.61 + VERSION 1.3.62 DESCRIPTION "PiPedal Guitar Effect Pedal For Raspberry Pi" HOMEPAGE_URL "https://rerdavies.github.io/pipedal" ) -set (DISPLAY_VERSION "PiPedal v1.3.61-Release") +set (DISPLAY_VERSION "PiPedal v1.3.62-Beta") set (PACKAGE_ARCHITECTURE "arm64") set (CMAKE_INSTALL_PREFIX "/usr/") diff --git a/README.md b/README.md index b1bf26f..adee28e 100644 --- a/README.md +++ b/README.md @@ -6,13 +6,13 @@ -Download: v1.3.61 +Download: v1.3.62 Website: [https://rerdavies.github.io/pipedal](https://rerdavies.github.io/pipedal). Documentation: [https://rerdavies.github.io/pipedal/Documentation.html](https://rerdavies.github.io/pipedal/Documentation.html).   -#### NEW version 1.3.61 Release, providing [snapshots](https://rerdavies.github.io/pipedal/Snaphots.html), and a new Performance View. See the [release notes](https://rerdavies.github.io/pipedal/ReleaseNotes) for details. +#### NEW version 1.3.62 Release, providing [snapshots](https://rerdavies.github.io/pipedal/Snaphots.html), and a new Performance View. See the [release notes](https://rerdavies.github.io/pipedal/ReleaseNotes) for details.   diff --git a/docs/Installing.md b/docs/Installing.md index 2c1f2a5..104b917 100644 --- a/docs/Installing.md +++ b/docs/Installing.md @@ -13,17 +13,17 @@ page_icon: img/Install4.jpg Download the most recent Debian (.deb) package for your platform: -- [Raspberry Pi OS bookworm (64-bit) v1.3.61](https://github.com/rerdavies/pipedal/releases/download/) +- [Raspberry Pi OS bookworm (64-bit) v1.3.62](https://github.com/rerdavies/pipedal/releases/download/) - [Ubuntu/Raspberry Pi OS bullseyeye (64-bit) v1.2.31](https://github.com/rerdavies/pipedal/releases/download/v1.1.31/pipedal_1.1.31_arm64.deb) -Version 1.3.61 has not yet been tested on Ubuntu or Raspberry Pi OS bullseye. On these platforms, we recommend that you use version 1.1.31. +Version 1.3.62 has not yet been tested on Ubuntu or Raspberry Pi OS bullseye. On these platforms, we recommend that you use version 1.1.31. Install the package by running ``` sudo apt update cd ~/Downloads - sudo apt-get install pipedal_1.3.61_arm64.deb + sudo apt-get install pipedal_1.3.62_arm64.deb ``` Adjust accordingly if you have downloaded v1.1.31. diff --git a/docs/ReleaseNotes.md b/docs/ReleaseNotes.md index 48f4984..5fcde28 100644 --- a/docs/ReleaseNotes.md +++ b/docs/ReleaseNotes.md @@ -1,5 +1,31 @@ # Release Notes +## PiPedal 1.3.62 Beta + +Features: +- Plugins can now share uploaded model and IR files by type. For plugins with appropriate mod:fileTypes attributes, uploaded + files will be shared by category (Nam model, IR Files, Audio Tracks, Midi Songs, etc). Sharing of ML models are also supported, although + that requires use of an extended mod:fileType (mlmodel) that MOD does not support. +- TooB Tuner stability issues fixed. The pitch detection algorithm has been improved, and the tuner now does filtering to avoid + displaying a value when the current input isn't a steady note. +- LV2 trigger controls are now displayed as buttons instead of toggle controls (maybe useful for 3rd-party looper plugins). + +Known issues: + +- There are a number of outstanding minor compatibility issues with Ratatouille. I intend to work with the author to address them. + +### Backwards Compatibility With the Previous Upload Directory Scheme + +Sharing file types poses a problem with previous versions of PiPedal which did not share uploads by file type, but instead placed uploads in a private directory for each plugin. +In order to accomodate this, Pipedal provides legacy support for this situation. If a private upload directory for a plugin exists, the file property selection dialog will show +both the new shared directories, and the old private directory. The private directory has a name that reflects the name of the plugin (e.g. "Ratatoille.lv2"). This directory only +shows up if you have used the plugin on previous versiouns of Pipedal. If you have nothing of particular value in the old private upload directory, you can delete the plugin's private directory (which can be found in `/var/pipedal/audio_uploads`), and the private directory will no longer be displayed in the PiPedal UI. + +I anticipate providing a migration utility in the near future which will clean up and migrate legacy upload directories to the new directory structure (automatically uploading +presets which reference uploaded files that have moved). In the meantime, I think you will find the current occomodation for legacy upload directories perfectly functional. + + + ## PiPedal 1.3.61 Release Bug fixes: diff --git a/docs/download.md b/docs/download.md index 0096307..c8e3e97 100644 --- a/docs/download.md +++ b/docs/download.md @@ -4,7 +4,7 @@ Download the most recent Debian (.deb) package for your platform: -- Raspberry Pi OS Bookworm (64-bit) v1.3.61 +- Raspberry Pi OS Bookworm (64-bit) v1.3.62 Install the package by running @@ -12,7 +12,7 @@ Install the package by running ``` sudo apt update cd ~/Downloads - sudo apt-get install ./pipedal_1.3.61_arm64.deb + sudo apt-get install ./pipedal_1.3.62_arm64.deb ``` Follow the instructions in [_Configuring PiPedal After Installation_](https://rerdavies.github.io/pipedal/Configuring.html) to complete the installation. diff --git a/docs/index.md b/docs/index.md index ce93fa4..707999a 100644 --- a/docs/index.md +++ b/docs/index.md @@ -1,7 +1,7 @@ -v1.3.61 +v1.3.62   @@ -9,7 +9,7 @@ To download PiPedal, click [here](download.md). To view PiPedal documentation, click [here](Documentation.md). -#### NEW version 1.3.61 Release. See the [release notes](https://rerdavies.github.io/pipedal/ReleaseNotes) for details. +#### NEW version 1.3.62 Release. See the [release notes](https://rerdavies.github.io/pipedal/ReleaseNotes) for details.