From d2665d17faf70ba42f6e506656ac85815349488b Mon Sep 17 00:00:00 2001 From: bliestlech-tc Date: Fri, 27 Feb 2026 16:09:59 +0100 Subject: [PATCH] Push Alpha Version --- uniper_hmi/{Uniper.sln => Infineon.sln} | 4 +- uniper_hmi/UniperHMI/Anlagenuebersicht.png | Bin 0 -> 125802 bytes uniper_hmi/UniperHMI/App.xaml | 4 +- uniper_hmi/UniperHMI/App.xaml.cs | 6 +- .../UniperHMI/Common/L4ItXmlSerializer.cs | 127 +++ .../UniperHMI/Common/MediaContainer.xaml | 83 ++ .../UniperHMI/Common/MediaContainer.xaml.cs | 32 + .../UniperHMI/Common/MediaContainerVm.cs | 76 ++ .../UniperHMI/Common/ParamControlFloat.xaml | 33 + .../Common/ParamControlFloat.xaml.cs | 32 + .../UniperHMI/Common/ParamControlFloatVM.cs | 27 + .../UniperHMI/Common/ParamControlInt.xaml | 33 + .../UniperHMI/Common/ParamControlInt.xaml.cs | 32 + .../UniperHMI/Common/ParamControlIntVM.cs | 28 + .../UniperHMI/DateTimeToEventTimeConverter.cs | 2 +- .../HMIToolkit/BinaryValveWindow.xaml | 4 +- .../HMIToolkit/BinaryValveWindow.xaml.cs | 2 +- .../HMIObjects/AnalogValue/AnalogValue.xaml | 4 +- .../BinaryValveControl.xaml | 26 +- .../InterlockControl/IntlkControl.xaml | 4 +- uniper_hmi/UniperHMI/InfineonHMI.csproj | 79 ++ uniper_hmi/UniperHMI/MainWindow.xaml | 277 ++++--- uniper_hmi/UniperHMI/MainWindow.xaml.cs | 2 +- uniper_hmi/UniperHMI/MainWindowVM.cs | 349 ++++---- uniper_hmi/UniperHMI/Model/Models.cs | 43 +- uniper_hmi/UniperHMI/Model/ReceipeDto.cs | 225 ++++++ uniper_hmi/UniperHMI/NavigateMessage.cs | 2 +- .../OwnControls/ViewModels/SMUBaseVM.cs | 2 +- .../ViewModels/StringControlButtonVM.cs | 2 +- .../ViewModels/UnitControlButtonVM.cs | 2 +- .../ViewModels/UnitDetailsControlVM.cs | 2 +- .../OwnControls/Views/SMUControlButton.xaml | 4 +- .../Views/SMUControlButton.xaml.cs | 2 +- .../OwnControls/Views/UnitDetailsControl.xaml | 4 +- .../Views/UnitDetailsControl.xaml.cs | 2 +- .../ViewModels/AlignmentStationPageVM.cs | 68 +- .../Pages/ViewModels/EtchingStationPage1VM.cs | 94 +++ .../Pages/ViewModels/EtchingStationPage2VM.cs | 92 +++ .../Pages/ViewModels/EventsPageVM.cs | 2 +- .../ViewModels/HighVoltageStationPageVM.cs | 139 ++-- .../Pages/ViewModels/HotCoolPlatePageVM.cs | 110 ++- .../Pages/ViewModels/KukaRobotPageVM.cs | 232 ++++-- .../Pages/ViewModels/MachineOverviewPageVM.cs | 300 +++++++ .../Pages/ViewModels/MediaCabinetPageVM.cs | 169 ++-- .../Pages/ViewModels/NIOStationPageVM.cs | 28 +- .../ViewModels/ProductionOverviewPageVM.cs | 307 +++++++ .../Pages/ViewModels/ReceipePageVM.cs | 746 ++++++++++++++++++ .../Pages/ViewModels/TrayFeederPageVM.cs | 95 +-- .../Pages/Views/AlignmentStationPage.xaml | 65 +- .../Pages/Views/AlignmentStationPage.xaml.cs | 2 +- .../Pages/Views/EtchingStation1Page.xaml | 49 ++ .../Pages/Views/EtchingStation1Page.xaml.cs | 22 + .../Pages/Views/EtchingStation2Page.xaml | 48 ++ .../Pages/Views/EtchingStation2Page.xaml.cs | 22 + .../UniperHMI/Pages/Views/EventsPage.xaml | 4 +- .../UniperHMI/Pages/Views/EventsPage.xaml.cs | 2 +- .../Pages/Views/HighVoltageStationPage.xaml | 63 +- .../Views/HighVoltageStationPage.xaml.cs | 2 +- .../Pages/Views/HotCoolPlatePage.xaml | 118 +-- .../Pages/Views/HotCoolPlatePage.xaml.cs | 2 +- .../UniperHMI/Pages/Views/KukaRobotPage.xaml | 104 ++- .../Pages/Views/KukaRobotPage.xaml.cs | 2 +- .../Pages/Views/MachineOverviewPage.xaml | 163 ++++ .../Pages/Views/MachineOverviewPage.xaml.cs | 22 + .../Pages/Views/MediaCabinetPage.xaml | 68 +- .../Pages/Views/MediaCabinetPage.xaml.cs | 2 +- .../UniperHMI/Pages/Views/NIOStationPage.xaml | 21 +- .../Pages/Views/NIOStationPage.xaml.cs | 2 +- .../Pages/Views/ProductionOverviewPage.xaml | 100 +++ .../Views/ProductionOverviewPage.xaml.cs | 22 + .../UniperHMI/Pages/Views/ReceipePage.xaml | 192 +++++ .../UniperHMI/Pages/Views/ReceipePage.xaml.cs | 15 + .../UniperHMI/Pages/Views/TrayFeederPage.xaml | 64 +- .../Pages/Views/TrayFeederPage.xaml.cs | 16 +- .../UniperHMI/SettingsPage/SettingsPage.xaml | 22 +- .../SettingsPage/SettingsPage.xaml.cs | 2 +- .../UniperHMI/SettingsPage/SettingsPageVM.cs | 2 +- uniper_hmi/UniperHMI/appsettings.json | 1 + uniper_hmi_old/.gitattributes | 63 ++ uniper_hmi_old/.gitignore | 367 +++++++++ .../AdsSettings.json | 0 uniper_hmi_old/Infineon.sln | 25 + uniper_hmi_old/README.md | 98 +++ .../UniperHMI/3rdParty/AdsManager.dll | Bin 0 -> 11264 bytes .../UniperHMI/Anlagenuebersicht.png | Bin 0 -> 125802 bytes uniper_hmi_old/UniperHMI/App.xaml | 17 + uniper_hmi_old/UniperHMI/App.xaml.cs | 42 + uniper_hmi_old/UniperHMI/AssemblyInfo.cs | 10 + .../UniperHMI/Common/L4ItXmlSerializer.cs | 127 +++ .../UniperHMI/Common/MediaContainer.xaml | 83 ++ .../UniperHMI/Common/MediaContainer.xaml.cs | 32 + .../UniperHMI/Common/MediaContainerVm.cs | 76 ++ .../UniperHMI/Common/ParamControlFloat.xaml | 33 + .../Common/ParamControlFloat.xaml.cs | 32 + .../UniperHMI/Common/ParamControlFloatVM.cs | 27 + .../UniperHMI/Common/ParamControlInt.xaml | 33 + .../UniperHMI/Common/ParamControlInt.xaml.cs | 32 + .../UniperHMI/Common/ParamControlIntVM.cs | 28 + .../UniperHMI/DateTimeToEventTimeConverter.cs | 33 + .../HMIToolkit/AnalogMotorWindow.xaml | 12 + .../HMIToolkit/AnalogMotorWindow.xaml.cs | 14 + .../HMIToolkit/BinaryValveWindow.xaml | 12 + .../HMIToolkit/BinaryValveWindow.xaml.cs | 15 + .../HMIToolkit/FeedbackToColorConverter.cs | 46 ++ .../AnalogMotorControl.xaml | 91 +++ .../AnalogMotorControl.xaml.cs | 23 + .../AnalogMotorcontrolVM.cs | 83 ++ .../AnalogValue/AnalogRangeValidator.cs | 33 + .../HMIObjects/AnalogValue/AnalogValue.xaml | 33 + .../AnalogValue/AnalogValue.xaml.cs | 32 + .../HMIObjects/AnalogValue/AnalogValueVM.cs | 144 ++++ .../AnalogValveControl.xaml | 87 ++ .../AnalogValveControl.xaml.cs | 35 + .../AnalogValveControlVM.cs | 83 ++ .../BinaryValveControl.xaml | 76 ++ .../BinaryValveControl.xaml.cs | 35 + .../BinaryValveControlVM.cs | 70 ++ .../HMIObjects/BoolToBrushConverter.cs | 25 + .../HMIObjects/HMIControlButtonVM.cs | 74 ++ .../InterlockControl/IntlkControl.xaml | 33 + .../InterlockControl/IntlkControl.xaml.cs | 35 + .../InterlockControl/IntlkControlVM.cs | 109 +++ .../InterlockDetailsControl/IntlkDetails.xaml | 132 ++++ .../IntlkDetails.xaml.cs | 35 + .../InterlockDetailsControl/IntlkDetailsVM.cs | 151 ++++ .../IntlkDetailsWindow.xaml | 13 + .../IntlkDetailsWindow.xaml.cs | 27 + .../HMIObjects/structures/HMIDataTypes.cs | 218 +++++ uniper_hmi_old/UniperHMI/InfineonHMI.csproj | 79 ++ uniper_hmi_old/UniperHMI/MainWindow.xaml | 190 +++++ uniper_hmi_old/UniperHMI/MainWindow.xaml.cs | 26 + uniper_hmi_old/UniperHMI/MainWindowVM.cs | 298 +++++++ uniper_hmi_old/UniperHMI/Model/Models.cs | 138 ++++ uniper_hmi_old/UniperHMI/Model/ReceipeDto.cs | 225 ++++++ uniper_hmi_old/UniperHMI/NavigateMessage.cs | 3 + .../ViewModels/ModuleControlButtonVM.cs | 0 .../OwnControls/ViewModels/SMUBaseVM.cs | 60 ++ .../ViewModels/StringControlButtonVM.cs | 16 + .../ViewModels/UnitControlButtonVM.cs | 19 + .../ViewModels/UnitDetailsControlVM.cs | 494 ++++++++++++ .../OwnControls/Views/SMUControlButton.xaml | 42 + .../Views/SMUControlButton.xaml.cs | 23 + .../OwnControls/Views/UnitDetailsControl.xaml | 138 ++++ .../Views/UnitDetailsControl.xaml.cs | 22 + .../ViewModels/AlignmentStationPageVM.cs | 43 + .../Pages/ViewModels/AutomaticModePageVM.cs | 0 .../Pages/ViewModels/BatteryOverviewPageVM.cs | 0 .../Pages/ViewModels/ChuckMagazinPageVM.cs | 0 .../Pages/ViewModels/EtchingStationPage1VM.cs | 94 +++ .../Pages/ViewModels/EtchingStationPage2VM.cs | 92 +++ .../Pages/ViewModels/EtchingStationPageVM.cs | 0 .../Pages/ViewModels/EventsPageVM.cs | 114 +++ .../ViewModels/HighVoltageStationPageVM.cs | 72 ++ .../Pages/ViewModels/HotCoolPlatePageVM.cs | 408 ++++++++++ .../Pages/ViewModels/KukaRobotPageVM.cs | 677 ++++++++++++++++ .../Pages/ViewModels/MachineOverviewPageVM.cs | 300 +++++++ .../Pages/ViewModels/MediaCabinetPageVM.cs | 108 +++ .../Pages/ViewModels/ModuleOverviewPageVM.cs | 0 .../Pages/ViewModels/NIOStationPageVM.cs | 59 ++ .../ViewModels/ProductionOverviewPageVM.cs | 307 +++++++ .../Pages/ViewModels/ReceipePageVM.cs | 746 ++++++++++++++++++ .../Pages/ViewModels/StringOverviewPageVM.cs | 0 .../Pages/ViewModels/TrayFeederPageVM.cs | 42 + .../Pages/ViewModels/UnitOverviewPageVM.cs | 0 .../Pages/Views/AlignmentStationPage.xaml | 36 + .../Pages/Views/AlignmentStationPage.xaml.cs | 22 + .../Pages/Views/AutomaticModePage.xaml | 0 .../Pages/Views/AutomaticModePage.xaml.cs | 0 .../Pages/Views/BatteryOverviewPage.xaml | 0 .../Pages/Views/BatteryOverviewPage.xaml.cs | 0 .../Pages/Views/ChuckMagazinPage.xaml | 0 .../Pages/Views/ChuckMagazinPage.xaml.cs | 0 .../Pages/Views/EtchingStation1Page.xaml | 49 ++ .../Pages/Views/EtchingStation1Page.xaml.cs | 22 + .../Pages/Views/EtchingStation2Page.xaml | 48 ++ .../Pages/Views/EtchingStation2Page.xaml.cs | 22 + .../Pages/Views/EtchingStationPage.xaml | 0 .../Pages/Views/EtchingStationPage.xaml.cs | 0 .../UniperHMI/Pages/Views/EventsPage.xaml | 25 + .../UniperHMI/Pages/Views/EventsPage.xaml.cs | 14 + .../Pages/Views/HighVoltageStationPage.xaml | 52 ++ .../Views/HighVoltageStationPage.xaml.cs | 22 + .../Pages/Views/HotCoolPlatePage.xaml | 100 +++ .../Pages/Views/HotCoolPlatePage.xaml.cs | 22 + .../UniperHMI/Pages/Views/KukaRobotPage.xaml | 169 ++++ .../Pages/Views/KukaRobotPage.xaml.cs | 22 + .../Pages/Views/MachineOverviewPage.xaml | 163 ++++ .../Pages/Views/MachineOverviewPage.xaml.cs | 22 + .../Pages/Views/MediaCabinetPage.xaml | 45 ++ .../Pages/Views/MediaCabinetPage.xaml.cs | 22 + .../Pages/Views/ModuleOverviewPage.xaml | 0 .../Pages/Views/ModuleOverviewPage.xaml.cs | 0 .../UniperHMI/Pages/Views/NIOStationPage.xaml | 46 ++ .../Pages/Views/NIOStationPage.xaml.cs | 22 + .../Pages/Views/ProductionOverviewPage.xaml | 100 +++ .../Views/ProductionOverviewPage.xaml.cs | 22 + .../UniperHMI/Pages/Views/ReceipePage.xaml | 192 +++++ .../UniperHMI/Pages/Views/ReceipePage.xaml.cs | 15 + .../Pages/Views/StringOverviewPage.xaml | 0 .../Pages/Views/StringOverviewPage.xaml.cs | 0 .../UniperHMI/Pages/Views/TrayFeederPage.xaml | 33 + .../Pages/Views/TrayFeederPage.xaml.cs | 16 + .../Pages/Views/UnitOverviewPage.xaml | 0 .../Pages/Views/UnitOverviewPage.xaml.cs | 0 .../UniperHMI/SettingsPage/SettingsPage.xaml | 52 ++ .../SettingsPage/SettingsPage.xaml.cs | 22 + .../UniperHMI/SettingsPage/SettingsPageVM.cs | 125 +++ .../UniperHMI/UniperHMI.csproj | 0 uniper_hmi_old/UniperHMI/appsettings.json | 9 + 209 files changed, 13423 insertions(+), 1034 deletions(-) rename uniper_hmi/{Uniper.sln => Infineon.sln} (83%) create mode 100644 uniper_hmi/UniperHMI/Anlagenuebersicht.png create mode 100644 uniper_hmi/UniperHMI/Common/L4ItXmlSerializer.cs create mode 100644 uniper_hmi/UniperHMI/Common/MediaContainer.xaml create mode 100644 uniper_hmi/UniperHMI/Common/MediaContainer.xaml.cs create mode 100644 uniper_hmi/UniperHMI/Common/MediaContainerVm.cs create mode 100644 uniper_hmi/UniperHMI/Common/ParamControlFloat.xaml create mode 100644 uniper_hmi/UniperHMI/Common/ParamControlFloat.xaml.cs create mode 100644 uniper_hmi/UniperHMI/Common/ParamControlFloatVM.cs create mode 100644 uniper_hmi/UniperHMI/Common/ParamControlInt.xaml create mode 100644 uniper_hmi/UniperHMI/Common/ParamControlInt.xaml.cs create mode 100644 uniper_hmi/UniperHMI/Common/ParamControlIntVM.cs create mode 100644 uniper_hmi/UniperHMI/InfineonHMI.csproj create mode 100644 uniper_hmi/UniperHMI/Model/ReceipeDto.cs create mode 100644 uniper_hmi/UniperHMI/Pages/ViewModels/EtchingStationPage1VM.cs create mode 100644 uniper_hmi/UniperHMI/Pages/ViewModels/EtchingStationPage2VM.cs create mode 100644 uniper_hmi/UniperHMI/Pages/ViewModels/MachineOverviewPageVM.cs create mode 100644 uniper_hmi/UniperHMI/Pages/ViewModels/ProductionOverviewPageVM.cs create mode 100644 uniper_hmi/UniperHMI/Pages/ViewModels/ReceipePageVM.cs create mode 100644 uniper_hmi/UniperHMI/Pages/Views/EtchingStation1Page.xaml create mode 100644 uniper_hmi/UniperHMI/Pages/Views/EtchingStation1Page.xaml.cs create mode 100644 uniper_hmi/UniperHMI/Pages/Views/EtchingStation2Page.xaml create mode 100644 uniper_hmi/UniperHMI/Pages/Views/EtchingStation2Page.xaml.cs create mode 100644 uniper_hmi/UniperHMI/Pages/Views/MachineOverviewPage.xaml create mode 100644 uniper_hmi/UniperHMI/Pages/Views/MachineOverviewPage.xaml.cs create mode 100644 uniper_hmi/UniperHMI/Pages/Views/ProductionOverviewPage.xaml create mode 100644 uniper_hmi/UniperHMI/Pages/Views/ProductionOverviewPage.xaml.cs create mode 100644 uniper_hmi/UniperHMI/Pages/Views/ReceipePage.xaml create mode 100644 uniper_hmi/UniperHMI/Pages/Views/ReceipePage.xaml.cs create mode 100644 uniper_hmi_old/.gitattributes create mode 100644 uniper_hmi_old/.gitignore rename {uniper_hmi => uniper_hmi_old}/AdsSettings.json (100%) create mode 100644 uniper_hmi_old/Infineon.sln create mode 100644 uniper_hmi_old/README.md create mode 100644 uniper_hmi_old/UniperHMI/3rdParty/AdsManager.dll create mode 100644 uniper_hmi_old/UniperHMI/Anlagenuebersicht.png create mode 100644 uniper_hmi_old/UniperHMI/App.xaml create mode 100644 uniper_hmi_old/UniperHMI/App.xaml.cs create mode 100644 uniper_hmi_old/UniperHMI/AssemblyInfo.cs create mode 100644 uniper_hmi_old/UniperHMI/Common/L4ItXmlSerializer.cs create mode 100644 uniper_hmi_old/UniperHMI/Common/MediaContainer.xaml create mode 100644 uniper_hmi_old/UniperHMI/Common/MediaContainer.xaml.cs create mode 100644 uniper_hmi_old/UniperHMI/Common/MediaContainerVm.cs create mode 100644 uniper_hmi_old/UniperHMI/Common/ParamControlFloat.xaml create mode 100644 uniper_hmi_old/UniperHMI/Common/ParamControlFloat.xaml.cs create mode 100644 uniper_hmi_old/UniperHMI/Common/ParamControlFloatVM.cs create mode 100644 uniper_hmi_old/UniperHMI/Common/ParamControlInt.xaml create mode 100644 uniper_hmi_old/UniperHMI/Common/ParamControlInt.xaml.cs create mode 100644 uniper_hmi_old/UniperHMI/Common/ParamControlIntVM.cs create mode 100644 uniper_hmi_old/UniperHMI/DateTimeToEventTimeConverter.cs create mode 100644 uniper_hmi_old/UniperHMI/HMIToolkit/AnalogMotorWindow.xaml create mode 100644 uniper_hmi_old/UniperHMI/HMIToolkit/AnalogMotorWindow.xaml.cs create mode 100644 uniper_hmi_old/UniperHMI/HMIToolkit/BinaryValveWindow.xaml create mode 100644 uniper_hmi_old/UniperHMI/HMIToolkit/BinaryValveWindow.xaml.cs create mode 100644 uniper_hmi_old/UniperHMI/HMIToolkit/FeedbackToColorConverter.cs create mode 100644 uniper_hmi_old/UniperHMI/HMIToolkit/HMIObjects/AnalogMotorControl/AnalogMotorControl.xaml create mode 100644 uniper_hmi_old/UniperHMI/HMIToolkit/HMIObjects/AnalogMotorControl/AnalogMotorControl.xaml.cs create mode 100644 uniper_hmi_old/UniperHMI/HMIToolkit/HMIObjects/AnalogMotorControl/AnalogMotorcontrolVM.cs create mode 100644 uniper_hmi_old/UniperHMI/HMIToolkit/HMIObjects/AnalogValue/AnalogRangeValidator.cs create mode 100644 uniper_hmi_old/UniperHMI/HMIToolkit/HMIObjects/AnalogValue/AnalogValue.xaml create mode 100644 uniper_hmi_old/UniperHMI/HMIToolkit/HMIObjects/AnalogValue/AnalogValue.xaml.cs create mode 100644 uniper_hmi_old/UniperHMI/HMIToolkit/HMIObjects/AnalogValue/AnalogValueVM.cs create mode 100644 uniper_hmi_old/UniperHMI/HMIToolkit/HMIObjects/AnalogValveControl/AnalogValveControl.xaml create mode 100644 uniper_hmi_old/UniperHMI/HMIToolkit/HMIObjects/AnalogValveControl/AnalogValveControl.xaml.cs create mode 100644 uniper_hmi_old/UniperHMI/HMIToolkit/HMIObjects/AnalogValveControl/AnalogValveControlVM.cs create mode 100644 uniper_hmi_old/UniperHMI/HMIToolkit/HMIObjects/BinaryValveControl/BinaryValveControl.xaml create mode 100644 uniper_hmi_old/UniperHMI/HMIToolkit/HMIObjects/BinaryValveControl/BinaryValveControl.xaml.cs create mode 100644 uniper_hmi_old/UniperHMI/HMIToolkit/HMIObjects/BinaryValveControl/BinaryValveControlVM.cs create mode 100644 uniper_hmi_old/UniperHMI/HMIToolkit/HMIObjects/BoolToBrushConverter.cs create mode 100644 uniper_hmi_old/UniperHMI/HMIToolkit/HMIObjects/HMIControlButtonVM.cs create mode 100644 uniper_hmi_old/UniperHMI/HMIToolkit/HMIObjects/InterlockControl/IntlkControl.xaml create mode 100644 uniper_hmi_old/UniperHMI/HMIToolkit/HMIObjects/InterlockControl/IntlkControl.xaml.cs create mode 100644 uniper_hmi_old/UniperHMI/HMIToolkit/HMIObjects/InterlockControl/IntlkControlVM.cs create mode 100644 uniper_hmi_old/UniperHMI/HMIToolkit/HMIObjects/InterlockDetailsControl/IntlkDetails.xaml create mode 100644 uniper_hmi_old/UniperHMI/HMIToolkit/HMIObjects/InterlockDetailsControl/IntlkDetails.xaml.cs create mode 100644 uniper_hmi_old/UniperHMI/HMIToolkit/HMIObjects/InterlockDetailsControl/IntlkDetailsVM.cs create mode 100644 uniper_hmi_old/UniperHMI/HMIToolkit/HMIObjects/InterlockDetailsControl/IntlkDetailsWindow.xaml create mode 100644 uniper_hmi_old/UniperHMI/HMIToolkit/HMIObjects/InterlockDetailsControl/IntlkDetailsWindow.xaml.cs create mode 100644 uniper_hmi_old/UniperHMI/HMIToolkit/HMIObjects/structures/HMIDataTypes.cs create mode 100644 uniper_hmi_old/UniperHMI/InfineonHMI.csproj create mode 100644 uniper_hmi_old/UniperHMI/MainWindow.xaml create mode 100644 uniper_hmi_old/UniperHMI/MainWindow.xaml.cs create mode 100644 uniper_hmi_old/UniperHMI/MainWindowVM.cs create mode 100644 uniper_hmi_old/UniperHMI/Model/Models.cs create mode 100644 uniper_hmi_old/UniperHMI/Model/ReceipeDto.cs create mode 100644 uniper_hmi_old/UniperHMI/NavigateMessage.cs rename {uniper_hmi => uniper_hmi_old}/UniperHMI/OwnControls/ViewModels/ModuleControlButtonVM.cs (100%) create mode 100644 uniper_hmi_old/UniperHMI/OwnControls/ViewModels/SMUBaseVM.cs create mode 100644 uniper_hmi_old/UniperHMI/OwnControls/ViewModels/StringControlButtonVM.cs create mode 100644 uniper_hmi_old/UniperHMI/OwnControls/ViewModels/UnitControlButtonVM.cs create mode 100644 uniper_hmi_old/UniperHMI/OwnControls/ViewModels/UnitDetailsControlVM.cs create mode 100644 uniper_hmi_old/UniperHMI/OwnControls/Views/SMUControlButton.xaml create mode 100644 uniper_hmi_old/UniperHMI/OwnControls/Views/SMUControlButton.xaml.cs create mode 100644 uniper_hmi_old/UniperHMI/OwnControls/Views/UnitDetailsControl.xaml create mode 100644 uniper_hmi_old/UniperHMI/OwnControls/Views/UnitDetailsControl.xaml.cs create mode 100644 uniper_hmi_old/UniperHMI/Pages/ViewModels/AlignmentStationPageVM.cs rename {uniper_hmi => uniper_hmi_old}/UniperHMI/Pages/ViewModels/AutomaticModePageVM.cs (100%) rename {uniper_hmi => uniper_hmi_old}/UniperHMI/Pages/ViewModels/BatteryOverviewPageVM.cs (100%) rename {uniper_hmi => uniper_hmi_old}/UniperHMI/Pages/ViewModels/ChuckMagazinPageVM.cs (100%) create mode 100644 uniper_hmi_old/UniperHMI/Pages/ViewModels/EtchingStationPage1VM.cs create mode 100644 uniper_hmi_old/UniperHMI/Pages/ViewModels/EtchingStationPage2VM.cs rename {uniper_hmi => uniper_hmi_old}/UniperHMI/Pages/ViewModels/EtchingStationPageVM.cs (100%) create mode 100644 uniper_hmi_old/UniperHMI/Pages/ViewModels/EventsPageVM.cs create mode 100644 uniper_hmi_old/UniperHMI/Pages/ViewModels/HighVoltageStationPageVM.cs create mode 100644 uniper_hmi_old/UniperHMI/Pages/ViewModels/HotCoolPlatePageVM.cs create mode 100644 uniper_hmi_old/UniperHMI/Pages/ViewModels/KukaRobotPageVM.cs create mode 100644 uniper_hmi_old/UniperHMI/Pages/ViewModels/MachineOverviewPageVM.cs create mode 100644 uniper_hmi_old/UniperHMI/Pages/ViewModels/MediaCabinetPageVM.cs rename {uniper_hmi => uniper_hmi_old}/UniperHMI/Pages/ViewModels/ModuleOverviewPageVM.cs (100%) create mode 100644 uniper_hmi_old/UniperHMI/Pages/ViewModels/NIOStationPageVM.cs create mode 100644 uniper_hmi_old/UniperHMI/Pages/ViewModels/ProductionOverviewPageVM.cs create mode 100644 uniper_hmi_old/UniperHMI/Pages/ViewModels/ReceipePageVM.cs rename {uniper_hmi => uniper_hmi_old}/UniperHMI/Pages/ViewModels/StringOverviewPageVM.cs (100%) create mode 100644 uniper_hmi_old/UniperHMI/Pages/ViewModels/TrayFeederPageVM.cs rename {uniper_hmi => uniper_hmi_old}/UniperHMI/Pages/ViewModels/UnitOverviewPageVM.cs (100%) create mode 100644 uniper_hmi_old/UniperHMI/Pages/Views/AlignmentStationPage.xaml create mode 100644 uniper_hmi_old/UniperHMI/Pages/Views/AlignmentStationPage.xaml.cs rename {uniper_hmi => uniper_hmi_old}/UniperHMI/Pages/Views/AutomaticModePage.xaml (100%) rename {uniper_hmi => uniper_hmi_old}/UniperHMI/Pages/Views/AutomaticModePage.xaml.cs (100%) rename {uniper_hmi => uniper_hmi_old}/UniperHMI/Pages/Views/BatteryOverviewPage.xaml (100%) rename {uniper_hmi => uniper_hmi_old}/UniperHMI/Pages/Views/BatteryOverviewPage.xaml.cs (100%) rename {uniper_hmi => uniper_hmi_old}/UniperHMI/Pages/Views/ChuckMagazinPage.xaml (100%) rename {uniper_hmi => uniper_hmi_old}/UniperHMI/Pages/Views/ChuckMagazinPage.xaml.cs (100%) create mode 100644 uniper_hmi_old/UniperHMI/Pages/Views/EtchingStation1Page.xaml create mode 100644 uniper_hmi_old/UniperHMI/Pages/Views/EtchingStation1Page.xaml.cs create mode 100644 uniper_hmi_old/UniperHMI/Pages/Views/EtchingStation2Page.xaml create mode 100644 uniper_hmi_old/UniperHMI/Pages/Views/EtchingStation2Page.xaml.cs rename {uniper_hmi => uniper_hmi_old}/UniperHMI/Pages/Views/EtchingStationPage.xaml (100%) rename {uniper_hmi => uniper_hmi_old}/UniperHMI/Pages/Views/EtchingStationPage.xaml.cs (100%) create mode 100644 uniper_hmi_old/UniperHMI/Pages/Views/EventsPage.xaml create mode 100644 uniper_hmi_old/UniperHMI/Pages/Views/EventsPage.xaml.cs create mode 100644 uniper_hmi_old/UniperHMI/Pages/Views/HighVoltageStationPage.xaml create mode 100644 uniper_hmi_old/UniperHMI/Pages/Views/HighVoltageStationPage.xaml.cs create mode 100644 uniper_hmi_old/UniperHMI/Pages/Views/HotCoolPlatePage.xaml create mode 100644 uniper_hmi_old/UniperHMI/Pages/Views/HotCoolPlatePage.xaml.cs create mode 100644 uniper_hmi_old/UniperHMI/Pages/Views/KukaRobotPage.xaml create mode 100644 uniper_hmi_old/UniperHMI/Pages/Views/KukaRobotPage.xaml.cs create mode 100644 uniper_hmi_old/UniperHMI/Pages/Views/MachineOverviewPage.xaml create mode 100644 uniper_hmi_old/UniperHMI/Pages/Views/MachineOverviewPage.xaml.cs create mode 100644 uniper_hmi_old/UniperHMI/Pages/Views/MediaCabinetPage.xaml create mode 100644 uniper_hmi_old/UniperHMI/Pages/Views/MediaCabinetPage.xaml.cs rename {uniper_hmi => uniper_hmi_old}/UniperHMI/Pages/Views/ModuleOverviewPage.xaml (100%) rename {uniper_hmi => uniper_hmi_old}/UniperHMI/Pages/Views/ModuleOverviewPage.xaml.cs (100%) create mode 100644 uniper_hmi_old/UniperHMI/Pages/Views/NIOStationPage.xaml create mode 100644 uniper_hmi_old/UniperHMI/Pages/Views/NIOStationPage.xaml.cs create mode 100644 uniper_hmi_old/UniperHMI/Pages/Views/ProductionOverviewPage.xaml create mode 100644 uniper_hmi_old/UniperHMI/Pages/Views/ProductionOverviewPage.xaml.cs create mode 100644 uniper_hmi_old/UniperHMI/Pages/Views/ReceipePage.xaml create mode 100644 uniper_hmi_old/UniperHMI/Pages/Views/ReceipePage.xaml.cs rename {uniper_hmi => uniper_hmi_old}/UniperHMI/Pages/Views/StringOverviewPage.xaml (100%) rename {uniper_hmi => uniper_hmi_old}/UniperHMI/Pages/Views/StringOverviewPage.xaml.cs (100%) create mode 100644 uniper_hmi_old/UniperHMI/Pages/Views/TrayFeederPage.xaml create mode 100644 uniper_hmi_old/UniperHMI/Pages/Views/TrayFeederPage.xaml.cs rename {uniper_hmi => uniper_hmi_old}/UniperHMI/Pages/Views/UnitOverviewPage.xaml (100%) rename {uniper_hmi => uniper_hmi_old}/UniperHMI/Pages/Views/UnitOverviewPage.xaml.cs (100%) create mode 100644 uniper_hmi_old/UniperHMI/SettingsPage/SettingsPage.xaml create mode 100644 uniper_hmi_old/UniperHMI/SettingsPage/SettingsPage.xaml.cs create mode 100644 uniper_hmi_old/UniperHMI/SettingsPage/SettingsPageVM.cs rename {uniper_hmi => uniper_hmi_old}/UniperHMI/UniperHMI.csproj (100%) create mode 100644 uniper_hmi_old/UniperHMI/appsettings.json diff --git a/uniper_hmi/Uniper.sln b/uniper_hmi/Infineon.sln similarity index 83% rename from uniper_hmi/Uniper.sln rename to uniper_hmi/Infineon.sln index a2ac41a..3de47d2 100644 --- a/uniper_hmi/Uniper.sln +++ b/uniper_hmi/Infineon.sln @@ -1,9 +1,9 @@  Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio Version 18 -VisualStudioVersion = 18.2.11415.280 d18.0 +VisualStudioVersion = 18.2.11415.280 MinimumVisualStudioVersion = 10.0.40219.1 -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "UniperHMI", "UniperHMI\UniperHMI.csproj", "{8D725B27-1242-4C66-ACD8-45F02098C7D3}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "InfineonHMI", "UniperHMI\InfineonHMI.csproj", "{8D725B27-1242-4C66-ACD8-45F02098C7D3}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution diff --git a/uniper_hmi/UniperHMI/Anlagenuebersicht.png b/uniper_hmi/UniperHMI/Anlagenuebersicht.png new file mode 100644 index 0000000000000000000000000000000000000000..cc2fd0c5865227e8bcafcd7a26492651349cbd58 GIT binary patch literal 125802 zcmagF2Q=L8_AV}rPW0YJjc8FPh+y;{ozctaBSH|O4-qv+??g*PH);@~j~gtz3bk!GAoOPx9q*2{p@G&H&$Oyot%W31P2F)TvJ2E5C;bjgM)*+ zM??U8N1M#bANcRaV?%W%oSJdgAHWwN7pN{22d6%X^uit=_?q~U2JA5o4%OB5=LQtR zehUZZs!US_Y8+s*{q9Kzo5|a&tLzXh63q=ZZT;Gpp|!`GP1F@H8x{EnHQLp*-lOm| z!&CLCiHdk`=!N6mP%-S86FPiiCAmA-=*L@lQaE#8yht7 zbmkId&G@P3u*m`HnTKh9X(Byt^^9sLC+P zHq|NDE(UVHuAGjsS*q@bT2ob#K)=X6oqa7`DvN|03rDoHr)`DXYT###t0nFEQ4UiM z9hiz!#z|pqNL0g&Pt4Cj0q2G~wwwo|Ot|pE1Yh`Q1F}1WHPNGbjZs5F;A^w_#kYe= zq^XWXIp3<@ybe{Igt>1<3}p{>MjhD97-kKEQd03wqex-3hOiMT&?Hjw7{4U@NTf1g z%%Ud7xZ}ek+v=lDlT|?BrV9UiYAs!caeuIFu4J z>7(C1t6RxhIC`G_){aJLkW0!JLxjYTQe%LHRFprV$X7uu`CuL@i~C6EAunf*e%_K| zG?!TEf~KQ}tK=E0|D!^|9=&G68y2v!m((mM2%Ufi1XlJSXL28qx&p*3@prz@rfST8^0OxbG4UFMK;VkAE;4~iK0?PB(| zkL435tUf(TK3N{OnZAiT3q}TgwvYW#v6pB{=;pAqW~e=Ymnt%kG}PRbHDahswp0an z&3e7}MxiOUsB$T{+(Wlj&(=-vQ*_GP@hbd8q_Bq*u8eVVcEZ-Uxej;jQ}<|bcLiXB zrX-xGH_2L*D!MP@$qg7Q7Skq5&gyPDny8g1<}HO+#*AdffaqG45;_^7^e3!TSgRkg z)j|+3{*Ns!+w0x7(JFyyfaRwd_DpIz1NYM3X00oBtl> zOWVLZ>~Pm|tTa}bPxBb;W@Yc%O3p`A9J6){<;WZ)_7Dkv40|J7*7pkETU^uZ0Wle4XEFrvgDGZ%i{>`(E|U*u`(9Ow21X+sYXN=rlJC2Y<-{ zYm=0kdu~>I6&5mp%^(`!S&%y$jf%5-;MtUqwaoGttCp7a+ZMeYI15IJx*BG$Df4UW zq6|g6rDE~66q8$o)epXmb!>4H75jmKD+C-|NW2bqRI*`Z|#1 zsy(TAs4dnY#bl3dG~wTOi;u@Q%$!CY7ag1tAzf8FBD#x~&%ScI`vp$&_LEw(%Y9+A zKTM_w|K5F!$0A2`7(tNaF;Snm7lpB7vuUJ?fnW}CY)?6Y+s)aO6wQ;K+b#4tDUu{F zpWo_!k!t?MkBQ!0v?>yuLlvsV_<+2`Kq;;+xmnC0Ue z74Y-;0Uta0hFLz;scobJdPL7nb3v}#u7Hj#qnbQ1`9TfFoUe}$b(fhX*1?1_cO&~g zIZmrSWVgYaRG478bcbiqE>1tMySO1LA(;O$cs?n36Y#@yaKtDVcPeN}f!IH<@1W*e zx_+cR8)!0NPogKloiUO5r!3e?Mlv<(XOfUbfGcW*afX{wvPcd0twThW7c|EB3$xRp zexF@j|5LUW*+o!)aZo(@SQ!&e7N`K&_x=e-1IMd#vxA^qU9dAf<^!p=ww8?B#M)Q} zm1)H(C1aw;bY;eVxVNKv<%~-49B70u_ZZvyEE+#ob3xO&sYJR&)#VKlr;vRtV=)C! z;k7^VYJeLs7@qFq2S~PC^&OS5yi<1OgiuNDiv-aEX0?*&_M1dzH^+F2&bj01*_qeG zqkoGAZzv^#e0qu2$fO=6%=(mw6_lG_=qmZJIDW>()-f`dR)3g;2%o+i6F?c_ZM0Kl@CCtCq&N2by(_Hb8%s;FP)tLdJxh+pj0>4|8}v{@8%EJP5wBswV}aG4fw!HT>7mDb&7{S|F#Hzli>MSr^3F)7rvA?H9_KJV;%U;2G- z+LtL=3C>GdOYm?D(1(?v76;5* zG-iVB2Hra!3ohKIZon4QMBT^&iLdQ^FykJ@=(!D<>n#vVCCpZ0ix@Z*9+EwoR-#-0 zd{+3a24p)+OctUC^;U}?H>6TB@1YjMoF_lX2eK+I4+;i{r~Dg8rl+X?8%TPs38Ms` zJEw@AlRM!@S`ARgzjvi}Kj1C0z=gqD1V%N%Bd%NH6gzD-Oe?W*eM|g2En+j^J=#bt zhq)9-sb%3qGMB`4r7GO)tH~<*LOVm;QvI?#{gO7UxKe(FSI>zCWyyH4`7@VPLV_mY zCu|H2nhJW+s%(zIh&M!s?tYU!UE2JOpwAxQ+$| zF`WKCHs}8E|LU>Lgh+#U{Kr2E+=<{rV=YGh!LObU)?`_LVqj<9~`l zBr~1EMNoJpZjc^cl>NNqJ0(XM(9KoIP$gY?q9Q%R-2zclf5{kr)7UmkiW{3hnP1$J zY&eyM=}--<<^TAm@c-2}{i!iyJSd}d?O5NCiAVKGajjnT zIoc99qC*C!{-vw?3OBpZ`CK()<6rCzmo7HWh7 z0gvh#tlPlmu^Yi$0&B_L-xS0{#SWSGbzVue5UsfY?G&A|l) zv@<^=Cre}yLyf{Sx;n176elN&vfARSTZ92?~PAYRzW zcTS!>%DN_h(5PvHqn71wkZ?+>-X@$3T{Ggij*`EAM}$)3i_zLU<)AAuh*X#9^`k0x zIBKYTq2!9%;X&o9f?o@z6aQc?{EFnDi|w-StJO{})k-KMI-a|%xPuLO@wrl08sA5> zG5{B{;G4HCic(vyK$=@WggGTaAugsqffePm=XA%s>xdD-H5m={pEe*ON56yO`?yk${MVHk#PLvLHnkEO#EX;# zSqSf#v6OBFN5_X6_l10lu}$K15nM{~mHRXJ)huM_=VKU1{HpTg{&VSZ%MXxT4TA89 zZqZyJy9*ui!OyW$^3Cw@3zK0WWq_bO&#!5N5=a9~qr$t_pmguPY{w3as35;L^IGuDW>lI_tjFh6BcWX(|=wOFEVKwaS#Q z?>6d`W31v7Vix7y)bAld3|E`jb^{XF&91M#Q;uYeBRm33;IMojaFyy38-P}cNQ#fD znPNy+y^Y115vuYLEz3-;zJQNt&DD>q<=7L)$cwG$>c%tWsR7^Q_V3#ZrWa&rQ*ri?On2O_FD|Wn z*QdQXSi6TbFT>)CN9mlt{DnZD z_DY5}bNxNs+3amXU?mXMKWP3>RQ>O(0yJpn>+A&?!&P}zd)=B;v@;dvBB}Sz*)J{C z5mQSY%8a->F(wvJumli3G%DyLXfC~9!hU@jSJVgEGKarqi`;b@rsV?Y0$3oTkZ#~p zuWQ<)OqWtx%;NhRS-wJ9ZCuzwp{r>fNmet=oam2{nL}P8rK$U`_76|qyxQ9e9cEFa z{n;6)A)=jEncGw!GkE3t$Fq6fydI~v>#Z6j;Qb7_NStcUr3^fsKUa>Gaod(d;_o57 zmnL*nz8i%4QG+HCC`IRFgBTpZaOI#-Q^p4rB?dj#1qRuQ8Q<6NZ*y6RPSef7llb_X zko&kYXr|_LucVIdVN+L#30NIs4-+o!r?mu!*|m?IT#VFqR@VJ{2FP zRWv*qZ>u>D+__@bm67q_a=UBw_uZxb8OvesF+M&^&iJaIjzEf-=>!k##>ds`6sO#{ zP7V)yc6}fI2DB01J`y+qF&sPoCw_QqP)Mm9Y6;NPJIDetJ4vn95eW@&yq=Swq@@H2 z+<-DS;55Bu?Durma_B3I)mR{5fm24PZ)w7L)vOl%w{)X;ttln+fIVoBRP(XtQW?F< zb4h*PgYb!2_n^1Gc+sB`R~Kg8pbXd~h7k}G`kiTki*aQK-FJNd*E%Rg`h4K<&CZmV zdx(}do8E@}5kg};+<;pvUT5kY^wwBQRsicr@h?$1U2F(foj}D@Ixsi2;D}#D&#*0c?%BR>n1E)A44O*zUzFy>F z)NsUx-0(HG&LMACbgm{2r5fT#8IWZ3N`LCtK&T}H`QzJv_#sNsG~duSl4Na1khZ_r z>tJmt;758(S=LkP#aZJ@7IyY8TL=vs$MWYpbOu5}sl+R$25JM5VtS^Z)E*M!XG;E}Lm<|$9nSl!P1 z?sevid?@8YXVT1RB@3NDxPj-MXi^6{1F!^|6uz$LTG~}icq}!|Owq+L09JMV8ll*E zk(n%7@S9^FX^})b>BAVUF`J`?&$62?OGbs=5MpQ$kd^ zT(8hv6(8^1x1{Z9dQ5kM8wZlnO}jK(jSk~5`$c*MR8K@Rcu_$4Q2l8{6>GS8iY+z} ze!zu8k<=Bd@le=w94w)+$NPFZ46GkJ#wWN0{d?O9|8v`aD;W~1>zGe}KS8qf!`=@k zc35H*Ip%JN^!$U-!X*-{74C78`_j%YXPMqvpz=rrwoNf=@WRvTr{8} z0AT*jnGA#f3`R|NduO_!6f-=LMelL5ZCgSVniTZ}V@!-As+^M#sW5emzqyb>dG6$3 zs1-s3eCxH#kt7+px^+!tZO3~2E|+`gItTzNux|x7s`s0b=mT6>g~>He-j%;{?Acrf za5C-|>KWJ9VyN$d!ej!%apYr$hD0I{iZf=d5%;Yj6oHI|XF%yyeL``WGVa;p90%~k zu#i(@ek^0xzJA>c@=~}{r7~8V7sKrIm-dzXACE9)0FJaaqD>OeF^O#U>S-qO?nXEA z&L_C17EkZ!N3L&1Iz@_kMI?YGz-G#{@#Pb25(jjHb&IFCeUpvQ;?|;<-%$-Da~Ch9*a?*C_xNhGd}PlXA;*g^g66h+f|Vh1&w9!7fai%5 z6*72TZkAE4cCdNs={JD7S;~Nk(1n*!}@EW8r4 z_j?2oqc$RAvGYhKVL3^aBh1TwB$h6TeqkQ>w5I)M&urHpzlTN*y_za_ded~r1!7Fl zL~!c9>O}sBpX4$}9aK}&Jk$*R-e%+){{t#a*D}n%z-#4D0g^WkTBj;F{a750ms-H^}Vf%uMwEAi=fS$X`o91EX9z8_VsF2qge%EoM6z8js(w#ja~CzJxAik5zFj z3T@^ys3KWu+ENl@mEstU@{CFxcrmkyprdw5U47vw@C(8QXx!xg4HhhVF35u$DP)p; z+OIZ>OU^;c@FX$|A(i&+X_YcV^DlRc2slN|XPQ+kmd{157(@W}H0YNay(*=T(d5}} zn2`T?pk3RMu1QN%9V-xh!)~nYw?$CTUSaY}nN|Ce`jT+^KR;y}hI|?X2#W_`^4Amz zBUz>R4f6Hsy-9@P&C0~TndaZd!qWh2=Q0^Qia_-8#;FR>VJf7Z;dH#O5L}aavRrgTu`J;hDJ??bwmfD^i7chjVDh3;1RgkSfUsGiYbK5nw;gIk)KG)Hhm#SJrt z)3kVbarrYxDq_LR%!OC=Uw!%bITUeW^P@2W#PC06w?`Q0B1S0-p`mNZ>UB$@=QnPH z>SKktU~~i30*Wzf<;Z}*rFEQerq2!G<`GpwWt13K?_@F~2uwar=4HzkQ0!O(0;PuO zyT%AC2(8JgOoid|CZoov(ER@nh7+-kH#dGz@mecNj5}7552^!)()R06a?|#2imN2E zO3{F#${0E68&%hcHhqL+;HUcE!oSp9HxJ&tQM{Qc*+*a^LA;hOXoidPN-v*;5p>WI zcvu&(?@(p+Hf0c~s&mNyeL#Kk2-dM^g3~Ud$PJLM!5b2T!mC(kIE$s}rit@ZNT!)3 zSp*rBM?$Q9LjHV>3uR9=l*kqL#?s%r&MDSplM}^Mou~WFx<a4Q{aIGqVN7qFxx3xMFgKWIUj2r~oK;yAdWz;sVjg;L~& zZ4}fOx2@dxS@~aaB2ifIw}8ZE=SZdS3q>{lluAw%RUAC|X)F-S%)s z%Y#cT0jq*0v=eelt>jK=nn(b;Jv@|{j^8Wzy4iaQ4{-sH*^A^#OUemPgYv}?rN*Rq z%i?$QE|?f6mvd#OX*E5nuJ{1HVz8&o4;K+I;oLm@C!=V+8%}83J#c4H21|J7s);hF zQqm+w3dE?U#5qQ1sp|2e(#uFd;u1-0%0Ny@rs_2q#=TBjxE&D@qLHjZ1ph2=VF7Nj z6z@^--*_HA)6G*1&(niG8uF(z;i=HzD>D?fsuYmKT&Xgu+D_-)m zy<^^i7=H5Je*wfL<4KSW5=+KUlu4)4;VE3_9lLuw_-^VY`j*8onhp;fOU2%~W)9Bx^Y*UP; z<(_(3V@p^0&*|d@QOPfJrD7epg!!POt-#Xq6CgBy#;2IIxOUheQGF?HHWUjt=1(i3 z7mR z;?1!*g*b7qO#A%dIH%l=WWn^7TW4P9p1;f#ntWCZG+qeAal(-%5u@Afx`iVBVfI&- zH*gfL{v6lu&K^w;^Ko82#%KxhmncTh*w_a!-g`yk`t|V}hvcddXW;gkzZIoD?)mUd zOEZPpTqni+x*Pii(K5!DB5l*QO)pOs6# zzMG`|O2qYlc6)14~}u> zawL#>)F669`Z@=Cvnm~q>P6JG-Y4^3|9XXBxgBXG$ETaaBWy(Q)(;TX08n4^d+r7^ zrW-3Y7CQY`{Ba7BmS1Y2!uu&c5MT%p4|qh z)C#Ns0mX%Z7T{q9s&L^MnBY_h&?=DqC-oh)^-3m}7iXu%@phS-{M$zu3Mw|p5Wym6 zl{HH|rq7uCmYO!0N!L7E=FQRB%-?lzvV&C)QNJFW;)_wsYmXLiN3X&h48RKS9PnRs zeq#>aU05Q($*Xs#6Ui2THv2k5SLqC>Mhp`eN#}W=M)i*-7Ke>)jL%KHgc%U-xqEm# zj&VNi75`_u75?=P`GAW{bJvQjP8j=AE}6P~%U!+lu0FHdRSVYL5z#(9V3_&C)H98S zs(Ckj-ig`X-+UV)+;izcA?nE+f-XzeBF#H&| zr6qb%BYT6Q*VrD;-RTH zf7b7WCSIK^c2zptynd6Q_3`&?oMtNDSFB6n`hp(Q+Dy;)Fdd+xcyfv(6<<-D-5O!- zsUz zb0lomLyB}1-R3~gq;xcA0wH!F$QB-SLE&o;kcl@!;x*=|#ZPYMvIe(I*$_ibvC5W~ zY4?hoNuZ5;Q-|g#~pQG&fo*GGEKl3Cdik-5=p!o`6e0cty3PuNwqe>@!t!=PVYmh;kFm^#JQW!azHhzAIGHPHxP1BcYy zlht{TT5^d|ULhDdYA{o4N{0`~7N4@cTE9@=rt06{4Lv6G_4mi&w}0fyxb?*{Ddl@f zLjz53uhYeWSy%cnZus}W8DgB78tY1WP9m<`e$;cTgNez^hkkU!ezF8AtHmS^e2RUV zQL!Jdjn58*#hmAvucl;WvC(>hN##k0^j?OhT_tPCm{jnel-oupPgB!O42~-qTP@vd zL}vLc8@g4*dnR^EQ}tFl-#-4n(zaF8>o*Iuu(-0L#G#G!x*-D|T?K8s41Qn3LXXu? zoa|iTpaL_cAyWC2qOaomB96xDgtD@-Qw|p}X8*7Bx71Q<=0H$d3KJcKoV`$?z$=oT zO!Q!Nyf)>+HJXb=!!litgz6a`BkyYq#jSjP^&lxEBkO(x8Ry}s#sS%5L#y+GyXlf1 z5Cmf%fi?sS_wb$iLZ-u0iCs&5AkTEGAb<{4kxVgh@q{Bo;;Y{aOWNyG52q2#cOT}_s#8`g(fQhX65X{LWA6p0QN^w6 zIz;)*J0?R4T&=BOE0UtgBPwD+>?c3y1oM>A{TiH+jP{W0uM%p##5psZt{VKl$G*w+ zvyOq?r5P%Igc#uHn3In^=ktH77BKeiY_sx)BK1(3E?>+{adCs(w;XMAN{M!EZf-^< zkrFGB-aF?PEB9714ctAH-@L<%?Csst@}bG_do7Z#C6~K6Gvho80YY&uO9jJ6GvJV# z_*v;Kz5Y?_TW{i(#$v{3m)NjBm%Df`zDKA|{WdvZ6&Di* z>2BpBv+_qT^=_<-GJ8F<_pX)559Q{*tPNJOrV{d|G>iI z9wGE}GOG0e8P@xr5<*7SRH~tdM4;!^+ge&Ofmo2_^fjGj=}Jg3Q&Lwa97te~JUa3Z z@MLFbSMCK|@JLLKYw5GGfeuhkS}>T5BHD)3=BlEVvR#F&kaPUo72!W%4r(92NA#ns za+@lvTD=@#eCTPkH`as3JzGw_h~nqZruM;>HVwTLUHQvjpKe^c_$R1~Z~kdZ*g5U| zy$&$T_POhwrXmnU!EWziNaM3w&$HR9mIh6UPHMgvfZhoObX)g^66`#o=z4f&mN?cf{25-X>Eg zn|k5h!n3D{>2-I9uET}<{%hiRc*=~f``6c=6H+s4{Ujd}&cL6mL#Ye(9ADv?{mvuy z`(@lhzskXD`L{F--JKjdP8=t{x(gYwo+Cc~ ziq8>dBlJp+W~iD!O}94EVI|9kP?d7*`QdirTT@ex*>E~KgM5nyaNL)$%dmT^pRU>@ z{#<@4eBVXdW1bLngms~L0D?}v*!F2SD_3#@dP4T`WBesnk{@FzGQlEfen|bouOB&c zbQ0|Xh%1q{*Bn3&AD0+tp1mJC_aadM&GbrS-n-oCqx|!2_agWX&$mN`A5`(=WMuYs zDD+VCjSevUALCeUj0)q3K(`L4Kn9fJ<*V*4NxJ1L*DE>#A8j!eF*iOaS-ieUAqTyI z>T3)@`ZQ`0)S8DC=k9Ol ztEzH)SH0yNyFigtdca&_3OSbQRG&hZLu6r0#=Zr<@VLYK!`=y8Rco+I8C+>d+z7f>~+!g zz_l>Z^B$vnM|?-F+0ofHJ2|^RW^ARs-6Nt%;R0RycB_Wn8}Dw$fte}1?CdmJzXf*l zie5|*E{mmp@BTipr*->cmvgV-=p~1Z);s;k^P=7lHe`E|3f)h$#t7w-yzne}DO<>) z#*!TAzdDxLdRD|O=_<_@)s}!vuu$i-uGPKiygBtI0Ptfmw~sv2(;tivbbgg;rj|My zieyex7RM4l@FM)H)@--Yh`4IJ+EDsWxh7pb|9Ac5obTsK7vG5$m?d9@Ii8TPL+>9B zuiDgOy}5DWyA%XJW&N@1t#1Ct(dfY+RQ*aB6IIyk$@`=XpFbr5geF4F@)|f!PLI2i zLb{qM0CKA>8(k%oCi02vL9KZNfbA_ACiwNtslO$RM#eV^o=JJkYKv9XbGF1s@s{21 z`RZSCw~pD`ehaffx-1f+W-C6`tCOG4rbuclG1tUA>}N)c(UFXtR{nd;M+|d_X6DmMq6MG!`0Ea>gxQld{gbt3Sag;S7A|3Bp_zksdO!AXC`3zz%g6 zCg3LTGtXRs6rN-Rf`M2Y5;3|U;#~Wgwzw)hxKg$0RIHl}TdKFqk7MD`06{e0l!a!(Npf1jfJN=F<@ zo3zLgE(&4w(ENNC433ZCAu0~Ux^DANr;)llbKSN?KyCsb_Cf1V-WOeHid$BGQd*v# zd-GZm(w$!imI<|<>gg#5zsRcZcvi?ePPz|sh(2RQ6B`&ee2?k>9_#V@?I=cCPw~rG zhSg?+v4hyXJuzwNgzj$ptt8E{7iS3ZUdeEV>!65({shLI=pnYNWN3~ls;O5lsK|cT zw-!wBR7J@BR79Ne@LVH&47UV{PJ=%5?D@11@hSUdu%dwkMu+vaTWLIYRdQV?i+N|z z7E3rGs5(2hOkp}IO)T-SLq;xxy+-DzrEu=4eL4Ag*Pk6>w^QYNh@1S_9xa6iQ=}8h z9-tSaHy7Gq@l#uKx#)q-<{WWMPZ(M(FFk|`i^lvU6IaQkr4cqCr5?E444)h17kj;GK^8z+*tbRb9hj7QUZy)o$-4A}POsHn zro#{=d^E4MH@~o)etnBSoL|zyU%WHq-gWcuBl8C4EKatTzNEb3$%l?t*=BrqW3)js2jnNK}Q zsQlC<3I087#857CzT4I1j`n$fgRqQv_NOhcnpB!^Q2NTq9q@v&PJ<+EG&dN7H<`$ zdb<2Ulwr6!W*%SwSDrxLMQQNG%tKu)$tfk87_1)MD8yOb4ZCVzd(vMKiUh|!Xezir zu4D72$y7}vlqiL@==lXz>fu*0sAf6sed zy6)MGRkQHlZ(q99lPcpHY3Kz(jbBvSSEWb=Rr#+QdoFeUiB_a+X~O?p`40Rzc!zj! z^?E<-xCW!ID!Wb#pN+G>_B5}Atz_B+#y?2!L65$g2-kQayW-0ov(iRAi-&nB+s9?83U^zS?#v*=ZmL1mEO{%Ivp^WSPZGMeY);xuX)}mIl7d%R?ZFU6^#>{ z49@DSJpaa6eas3+!78);8cbiSQ4KmopRAiLeM=R3u{yNc zsT>*DMDU7C%utRypGU3tH@@E~>b+OD)hMDVSwyyYy4~v55MN>F*$*7QCcc;ogGe$o z;d|{oXh!JI(JUx^%WHlnxVd=mE9ugNXOx9JYJGHGNO6n`JNDyba;!2L-^%N69iQM~^4XY6&df%MopHR=rUP6{Ti1_3U2OKhB$vvM8wj^iSSa+Uk$ zhU@o3)lPboRQ8d3srCV0;!SUexNL!k3Ho3&Qj?SUnd*UVDi2^FJsJPsy#SzpsOYJa z4|yUcVkw?yiO78y0 zeSxT_Y&9df6IYDMLB@=AC%h82b)equkGgI6NRw>~;U4)+Q`#ZQwrq*y;3)(3H=H2o znns-Iv(sWziqfEnv#@w5ZYBVsn*)zX1gMsD_$L-T&4lJ$yr!)+e7%KSQ1Ooh^%ZFR zvdiyJk5k|3{&hbl?6VQt%NNa`-|FN2$9?%sh(EWAV%cxObJCnlC{+gw3_>MT6heQu zwl*_Q@CCQjZyIG1Bg^yZ9o24R3_OyeWJ%qWo!<6lRUK!Sn4e!bF?JWkH+mC=ee!!1 zZ^83bG>xzp706qvuK7*rDAe%dfEh!RM-%zcX;ZO=T0lO1*Q`4PMmq|E!b>)BvyG~@ z>hjgF;|V-eAAxUuzx<6CY=h`Cj&z@~mIN+Mc_QSvWNIeb@OIYx{5*2K*-oA`(DncT zyfZuMzH;vtH-@)WT`6}wc%20MTHX8S+6i=&)pF@o=#sdP%fE7q zn9Bmc&5mYl^n8o3N=fE{L9Y5yR^r3YMA%hBOJYx6vB!(_!kK8|HTR-Wc9lPU#4A=R zZgg+fkNP294tS$tIhqoEy?x#ptKBL-f}~DImu5*EBRrpoWS>Nx(BhXb5#!@}zP|p&B@K8xY&))AUg|-XfUY+Gp`bqA zPq@5ve`#1U5*IR1k(^R5Moj!g_R*{B$))&Ro1^Ed7@J#3v}00K4@T9n~(f`qiARbcfR_tFpTz(fL$&T7O~RM zyfs!=*#)fwRkztWVkdLQPoJyhvpq6*U`MzN^PBkvOKx!!HQ9 z#Rc3+*0{A|qoMEfLRsj(YW|q%UF0uTA6~foFkFBqxjA}#{G!ct!EWi63FY0MB&3_c zF;xcQz(Adi*C|z#hbD??eN-bTmK&JsKd{?rBR6kmpzBoF%Dc|(Wx@sZOx@zmm1EY2r&}F5iqwYI+n>Q=p-iZ|{9Qkpmps7hW`eR!% zzj9icc4&+3|QfnmN ze;D<18kpDkx@mg_VbqUKvSN!_Z#KNmI3^o>C6@b9>9}Fj?rgj{1*{jppA}`RcY4oV z(n6FlyLw2&WQKZlbReV#m|o2ludWXF0JJ8suOaDLbdOI2AD{{RP#*MVY<2?r?B)#+ z>ft(gdai8HB7H~a8)4d^?U2FlE2O!|o=3sdL?sgyetphuUW2?m(+%hQ6%8d1mk5un z5q`;X${4;+F*6|h0TxEa11g)jDM${*`$N!cujYN^#}1D1puJ`M-S3AzXn|l-^L6Cd zVbtd3OOf8@YxRAv_cy`TFFZ?g5h9WnUGtkdZRGZ@K|w4NA9(ElRUVr>HWGFFSgLbA zFsz#+Nldg9d67L49Nl)@NVIah#_{h|$?&-x`F@V(n>kbYEOPRLFsiS=4Ss`m`RFp6 zQhJ<;q+GWMA^wstbA^L~$GoltTf+j_d z{zZOhm1>nuB{v(#y!~TE%$%e)!646B>d#aQ|BI7-^LBsFm4ie~!cUkv(Ea;0THt&s zQs?wTU91S}Af7W1O?Y|R>4j)>Z}@U>ymR74=;{m;c}Y*rwCYI}c3Rj6wCkmhy-|P==icpGUCZ>M-uRv$jp@qvJyGpyA&T@w_8yN&Cucp_-=I|Z|C@C=uk zMtQzfi}o$lTqM)rNZEV)d~YN)OVhboU+6iLbJ^pN#J%*}GJM_UUI!TJ%JTEK{q&Z0 z03h{477&pU5jTJiPjN{J9u1$)2M5b%6+2JbYT+^Z{6>MwVqKjRY_}ppy5fU%tN4Jn z0a5;Z==t;!$ji(%)3{;Gjtdy&;P?6Pp5+1K$oB^4B+pv>+qlZg%8bm+N?3|#^&HNL zA!3z6@$2&+Pwtku6FJbV4kiso5!2KGd%(d_Q&R(EbWw3}WKj`k0^2?Mg3BUvu8Rt6 zC%}MOC#dbkxIazk9#NO5O&_J}rGMDu%0>@?sGv*1*9~M!z;UAE3!f77_VzL|F%2v) zgQKILi^<8cI>+NDSH-Lsr>x1q#p2DY6N)t{xgA@62qh#Wyg!t41HS~0oxm(bQfByu zw*k}aSP&q&^)zfpc*|_8`4Z4qcv{f<^kJfSvG8Km+fywz@5%v%Zi-y^O&ODWQs#rB zRt)f$K%YdI9l+7lqt!*_sQ)O)v5qEztgG4;&aNXn2f=XkOOYHyBm6Oxf@oib$4q$B=faw&1QWiU6YNigJH<$ z^<}k93(v^dHB;JQhfEKCES!2+MQ|C=bN840rWaCcJ2z`S9)lau%n=gh_sA$o>ZZfH zX3cG+Y=whhug=)vOJ-k)`4Rl@2xaJgvBSAYyH6`EnEuXICLac&@FQu9u*R9&2I>jF zpUHCNn(LIS!ZJ_T*PKV#j{!S2aD?&%@76zWZf>^gG*%kIldAC= zlcRVY@`Kb0ocp4TxP9=OBs0x^5gYQmmukc?S^{D7`&Ktk)yEkF&pC)*mgtS0ogH8x zAaeJ7V|%-=vbM7#+Qay9*wm`ad2mJIk9P1o3MQZSD3&Og<0pZ>BRzP$Oy8v*dhGo8yl} zJi9KwkcVbX;#D_aw9A!bF~N&8TC?OM5$-~-hrkT?4>=)nUE*Q#^2eul2(T-A1(fiF z`vGN;w7HJ&MQiDgjtbhff%ij$AEQ1y`nX3=mBZj-9veM8qA6*D)Dmqj_B~O==0Nw2 zJ#^bFV0G;7{*1z(h)*tT)zLnEA@D))PH5%exak+#%wLB?cz)K1pi&{9DLJYS3qpJd zCitVm*!N%gnX~b)HVpE^5AM56Z3dXqG%Kify)q>Q)QxH-Kj0-trB?(9O<}t&r-Cbk z&x48;0)4M_ce?KC2dZ7-`|K62yg@4JalbIw8?XXsoAj$I#?D}m+3MiXFOd|zc(?}J zf!&ucX^B=9c`_gU{1PNprAVL2RAC;;`D&8#_(xCK-IeWvRh}+V6X^lA_)_GkZ=S0A z?G%9d7=V@Ciy6rWzR~qT64|L5^Nj_$5w~F%i>%}2D~!=09`w$Qk1{=?W<7tOYwgGs zXJdp=A+~>P1wQ~aWVy;*05!%G7!rjMjoVHS1LM=cE1qw(7@C2kZeW1nM!4OyYJ1N6t>c^VjBvxqBfh z>XV>Me)5|~#B0v9^cC-Ek6XH~aOJ&vd9qZ$R?OUSpy~Vk`7=&U;>N&)o&jjBIiWtbf58Tjj@Riil%pl;Eg91E*^@n3c>Rb}k0aFcUNMu#uc(mF zu}HEhzjc+Sm!$mAK5pkE%WTK9q;9dxLA!k@;mXPo;qqzWRik|^C*Ri@k{+&V>1a+p zI@BgwIu=;>P_r>sp3WeOA(~`f`G4{Bl>t#U;o2+G-CfeTl%&!N(t^?*OGtx)C?(yo zbR(d2BOM~$h|=9C9n$p;?>XQ3v43}GpP6Uwd#;)vF|KbofBNhT@PB;wv$jb~Ppu+g zb*umQFcWagf7Va9)m%}^nC0eZfeeREIhdIp=oWe|T=KMP#y!81)bs)*Te8ZA0Gj3X zX`2Nz5Loy^ErQ8;ggWHx875hLR8v;%PqicTD`F6ZVAG%!Xo`=pI2Cv!m=u!ttT$|3 z#5b=4#{cZ#uXjHzPj(52eL}?qeDcOp1gvp4hf)KM*8HIpL_Hd3)2KuPkVC&cp-!~A zITajsrtO_9eO1jbB)!=23ffy*D*nRJT$aZS*YAIPHhjx05s~3NmmVX6FkGkO=IjRa z6e0M5UmZ(^=gdocfTiloUR*RTH6jy#%Z58Ju{~o!RIKhuY}ipwVS3%muk_(__>OH@ z^~Z2HL7ne5IkI!@%Wp@xaHMSJ4s&pJ8!##d;kWcSxzjRH-#4*avE7cp6#HtPxlwLcjeyfH*|;Ua&Ui(hCjVs0 zso29s)inn^1sko0`CnXIO!|1&kTzq1T5=yS=TzQQEMt7$^bu>2DFvA?oqU)r!obvOwS@g27Ba&*MC|p<-8{R=2?U`pZEK-!;uBJaFV1dbzelBhPoMOc z=!wqRiavP&7A)h#a^qL#*bT+Y$bMlK%0F1jk!$0dX8!K&ZM^2xh}f-Ckl3kSirvlf z7~hJG@K?r<=un7yy;I0MSdy@?x3lwFRja!WFBSPsE>D4IpFK)XG{x7nP)sw1#>Ali zzTW&sdlniC7*Ckc_%5GJRm(`M_z03^j9c_y$^31-b*0L%T>Tu(1ulQx4aV!;fEcgS z5`9Ck{rz&)k4vhktt=zyZ_;D6YrS+aBlTseQWG)T(&vnTgK8niv`O`*QK_j<{ozbM zq267skhDJ`mp?gUk=P>VTI=|>xUiH3Dm`=qmFB`VuU*q=>)5&no`U7k7|D_3iH|3r zCiJ43R4Xl(#b^_A+XRGSPS;PxX`WeW4oAC{$bhD(A68{EKHsz-IQ;jg<)ztRv51&F?xBsRXsi-Z8#Lx+J_@TUShfuf77fK$P z0e?3etJARe@9SA6;|X=t7Lsjq z%Q_F*Whhc;)`CQL!SrXC(J%{S7fe989Ax>&G zcbo&H|KV4Fex=-60aKXrlaT4NbQAxE^wAV;`+`Vsd- zV~#REQ3wmdfW25jtts2Kl+$zQtbhG|m`Qp}nL*i0qjJ)^QyXsRFeH7YR4E5woU7DU=8q!NcV_lqG7#(5P3_8wEpD_Z90} zrXcH&nIT;lo{T2%sfcZuA( z$^*;)S;Dnlx2kWAbR#}pams{8sS>6!118Wae6m#^wrgv|lrvO`v1uD` zeRffYf(5ZO(PcCt9w;7VQu`e$SZhqBh|FhDPx)GT{B}my8&{MpcXCAD;&0;`Lno|S zkuBYR7->!zEaftVJMI!)Zf!%qPaKh)70t(#;lseBP?82A96{C)oZivs`qB8&)AMNY zTKddmUOw*wmt~CIV3|?9(x3_(E5XpPdqrVBdDC4tnHG^L{=ha~VA1+D<#Z6|~X0cjWDnMOG?%VZsm@aTl|F zmS}l+EA{V&ehHfnH2y7Aa6%yVwc3>E&F5%l<$9uL580{a%AR}Gts&;6{XA6zI|-19oQL=HvryJlW0 zKEiWP?f`21SktWJVVU8r_Dz^iZJ#gFLG+nCxg6KP6yy`;PgnssC56`viA5#lldA9n z@tk8bcipTl=l+s;1UIi)2eOw<2=^D)2^fh(6gJW9UY`6)vs0_qgtvuTb6{r56UQ?qTLwuielqsL+Nq1zTz zKbrIieE(WMF5wMlNe~}hd);W*lVso+hUc~X7#zimW)xC|irG0-y{_k$v{h3H(7sbr zp!*OPlNJ|R=&f53c5T0x_N3#dZq+B`b+rE%Kr@yCz|uMd98&SBC=d%`NMJ?ld*pP# z8Oa*jlFSusP7DI>Dg_DRR*bqeyGQae7Ej-tT~srlP;z*dGGK0iR*^kH!77Sr z>0E;&arxS3q1&YlMoknCaUK?&D%=mhoOGWvYZyS9f#qSDBj)QQ^T~`Hcb;sc0#ukQ z!DwdvEhJ<6+QX_K^RRL02KBQF|H`K}3U1VgoRVTZs+0(vkqM6JEFudoBX?z^?jtY- z=Kq6cao30CHfVC>7((Cr%}-5*;O$k)sW$6RJ!XkkIe0umBuJ$6CB$31hszZe7@yL* zT!?=75ZhWl5V&W)*4C^NC#j>RQ<8TCQ}wkgzbdiA;2kiZCCsUp@rsHXXjrwkFaH$g z>KXxIKYtJUj74yUxDej_hQDR>*ykAwk~+Lo;sJo(KmwtY_CN7}la^q3G1)*Bag*%K zTWN(KTioYJNAoX5{an?^(ef8HmUU@WdTpx~Q*@BjQ?dkA+ZprCpfkw)J7_}a!sF%N4{5O)a!lnuEuIrq`xVwC$PGI?AE4v zudeg{cIkcv5S87BhrCjZdPIDhTJ%KSYgao5I;wySYEK#ac&2MO5-0BHzJ2tZe-OLm z@jE`lD3&DE@*susL}xwd^N^uJ7}Mi+3?kO!ODBhB?zY;!y0~oTJY4=BkN3mZKfaxL z(}ys@%GxYo-fuSS`FC7zw@WIJAgE|)eknW8rRfR#5{<3Gg+nu{B}Z<4Fa zh6fdRO*%D>lK?{|McY(L%Pd2CQ{9Vw_S{t*cAO??cevktu)0^j)C2H^aN#8{qOY$M zi3aP=kpvKiSUH9~ze3?>oql0?Ba(D4GJV@@S%_8qQ;yWwB8dp50QijdENpGkzqm&h98`YxvBN`b;eIdO;N}?qP05`kw#b4da>$a`=SyA9y zJd5hUHTPT8%69rA)@ds9(0i+4GI76Gri3lD@B%8Wa@WS@k5+ zSUm*3T)^dQu;1)4EZHQ+wn~Iq_{$oV=S@iy1Y&Rpa2cuZBuGae_wK&<)iX#h@MMOI zq4AZO3h*rCrwa6e6$tzVmN5kTz5-S;h}WnTX5w5H={hWW#J#t-WC{{QMn+qQAKa+o z;Bg39p_v4^@}NSqohl5m-$E(osxD=p{_65B`dDYq&LWcG$>Ty*Lzt-SVhm6Dmo8j> zc*Yx?o;=xA7y3Y1tB4hu#-|Nx4~ySWk}Y?vcOV*bnA9f8xDGwhqhcx4u=S)|4dm+Q zWZX8!E0VweOn{+5c->WE_3VWFGLl8C*4g8J0~eSoQ_WReC_GR`G(tfL1MbqO5Bgw- zo!3F1xyxrXVgd#X?hVmGxiP;=v(~@vLa8ICOk@dz{gmRrrq|)~nNLacEeP!~mp?Bx ztk{Y|c58$}i|N6zf@JAKc!o||er{n5kG8Yi@#y;((x)Nw1FJvx%Noq}vAk!EXe)mv zibdqvV$)Tr^DvPpM8nogS5puL3i1Q?)f}-Jd0f@XPs7ZAt~;Taqa4lcB=o$12%|(% zguJW`kOo62?@4pp;rl@!J=T%UY$ku>xbAJ_M9h|M_*_%E6si+Z{Ju^2 z+e^F129&?`EZ(3q*C+T*Z-ignJ1j5Q#pg;s)AY&(`)h_S9nql6D3d_(slBTpK1zZZ zw^Johop;$2j$3>_j;Wst{w;R1wnuM}kp$br(urM7=k>wP^4u3~yP1DGY9=#Xn?@f8 zYyuk4WP_`j^;bo(Q5GV9DR-m5olx$#@qrgVFVGnz$G58fBEg>W=LMBdfm3I<8f&uDCF)5e{WBK+74Lo`rzh8|B857P`R5A!)wN1rXW;QR zj2w(mJ0#R+}lj=@fi2t{flhWrBwWW@Y{41oH}lwBm; ze1r?v>tds)1-nu4^)9cM?#t8AbIsIidbt8xjQeSYcWQcT1I1%90>8MtshUXFW&(U# zvwF53i*!65RQjeza#GrL7E1JLMK?JVj8FIrF8efRD60#zs~W4~M~eR$6w zjbppa6m{e8(xbFQiLd{DHk$bI3MhtEg~G&ofXGYa_Vi2E+y-%%QyZ0<-QiVw6I+rx ze~qJmgQlDeVF;FAIltXxIU3t*6{hxg(G8#N`P~{FHNDPDG$S?d*b7Xo`PA#5UB7Gr zZWsS;yz5bgt09*fw~BJhGuxP%YKgvFVRsmYMTeX*{hCM*L^>R$kHHnKK7}E2%Vuu@$`CuA1!Caws6Lpnky;h^~ zQHk$C#eZ>wJJlGI)yDHiSXO;1p^Vs=e~z$H%T&g4wS7ptA6A0Sn!FG@dK-z(G?J(wM|3 zp^lK4=>O_e+}vu4m|L+e12IPe@MS{4+*7(R z=ne7eFvO*b$Se8TGep>s3j8W#2{-be?y_@g={%U5WKsVUdL#2inF(tTx!azN$v$8c zYuV~+6$>}JWjyA()xGgkst42`biOSsi<6VVzIP|tuT&PZ-z=`C{HQLJYj`n^l>{Uq z)7k-C{#C~Rf0SLfNM5xo3P6J{Q@A=UBtk|Bqb~SMsYC1%i5%e0Oj4t$sGr@S3i{Ys zFMuW&HJe%!Ohkp3%>66z^+l_=yQS$z1%}hh(JGsk;550YGVI=fb(Hx1eb2~#L&fH5V6=8F;lz=s^*A0 z8DW{gN~TBsv{yHWi{4$;SE^Uzd@?KyfNwnC%R!UFzb}2oT=Ux+u~5uWcdA$RDTo5- zx0&M|lL)+Wc^#7ufXEhbx=0O^{UnMqDf-37Ye;NV~ggvzO<>WI3(0}x8@iUYN2 z+aqkCaTxHa?j~n8D$d0VN?XaaYEYR0 z{aud6qaG@YlCruEV4jE=7MjDJv#*KLXCnC^7#pu%=GOSITXD{N9<=s058R$)-*-hn z+Yeofex`;au(Tc3182i?>@xq^Mna(ZRp(+P?fem8FHU#lVWS25YC~%)O`d#IM_(U0 zDq5cBKo6Buw6ZX5C%yp~P zT`YAA?gno_5RwogDI_?!(s4m-C_|KpHS-;z#A(sX6)=ddI)j=9j#}JT?8ed~EZlLQ zz|?MI6ZN21;DCpG_#E%?+)_nc7}P_s zgrvV%YF_MCrHJkW6?-tM_gMplS%7=k{Hz-%sR;|635&mKyaK693o!CXjDGA*7_?l( zAKB4QPX08U{(xB4P8oONKHL4IWBftR?GePWaf39&b%4EClw@*Jwa0Pt4c4V%1QRA^ zb)R00um&CQPDTjYO@7`g9XuTMy(4ABRJ&ckhLW*VEFU69i zrfgWL6*`TKAkkoo!L8}Fc0WZY7?wlS^kNIyB!i5Js$N=;iz71UzZ*;OyFvg`Wr-J& zzqsKG+~w;CE@zAF4tB~TVhuI%Id!<%o2Y+8uR(S~<39Zea#;WU7KiSl9Zj?T?0Ge! z;al0}FKlglgjMrQvDvio`~IIL$gNc2@ZVcf<9Mgk1d`bY^LK1@i&h4P?i&ssmmA5K z0=?Kt(&Y)cUaWw3iV8NOry5nx8&e7Ysm-E>-RuQ~$jKT>=d|gccU^9IqwKvOVER>S z$;iiTR}?A|HvIby*S!tqjdx8FEa5en7N?gMffR6XoQEb~dQJ8~sR}vY$O^y7P>OTS z50+R1qSYi8g3*(Ub_0%FUaOXy<3W+r@z;Kp>4NDhEoWEHel*9D7`~X>sEI3zr7<>| z{D{MlieZ`CHa$XsaH4JGQA=^BXQ4aPnm_+JdU!VHw3hjPab*f~>6~+fw#I=?iQm7; zkSHqfVs$P2@G=`4&TY*w+ElDUxuPtSO1~Y$k@RSJ_3mqN5xY&`ZdK^t4{#PQ$+oo~ zk<~--O5lo5+|`q-!UCawfF~gRus2&f+c&OPCDR5)>*@0v@my_OSdPPFTO16;T( z6FMeZEst_}Q9nKST>t%kS&uu;d|WI|9>HXXi>|>3I_UtnRNrg#yeJ70(NG?C%K*7n znXx#b^o*y`p}p?&*VjDD@dMwz;L7&ZN67Qpa(jDQtS3X#oR7sS z>n#B--?z(f~05yCtuPNGN!7;G}(^T)YbSAb-wf z{a9?osbjo>>;sV02VKMYB`O!JiZLLEh!`*AhdOn6tY@9sEnp44s9`-$`HKfpMcZBU z2ZN5f7yooli`>onYkg(XrMpYFIvseg0#DKBN-h&n-c&qo9_k_L$-l$JpHUyB(MgZa zsoNt5QWmGC-71VTHYLVIYeUc=X#ZJ@RzG37B&bIJ-?B&HNw$+~VRIpbnXCKlwwNuq zr_j7+HgutVrs)OEbIfO_yMYVI`{lvFO8Ic$bStu2y_gk0N9+#6^1z7-tSPHes@Itn zt!I>r9&0!)r;`RAd$m(v_9xyf1{h)}Qck&0m_r_-y*k*32z%jr@yA<|_Y~GyA6Pbr z(?bMCpT9m%?W(%4m|(>fMTS%^Os0QXN~)CFb`51u_+fqF4J9=w?7!RB-*z>^>ar-U zn=+hU{S^+lOh;sw2NyF+K?BmvyV?pgQKt}&=-;M<{ly-`3|SM$+i>&cyGJ)Jf9b{+ z7t5Q_b5|%PC?XA`D$Pa$kHcF7piM9r7o6Ed;d=LlG#eVH)>G2SQoYXPnsB&*tO!m& ziVLq6=8li|Y8b0Ipu`^DTt4d&>Y;S9fBE>n6W=dZBdR>A=BX_9=NlpP3wA!fOWrcD zyLGR*3R(=Ie+#ucnc2b!x;Jz0Dic8YFv_+Y>#jlv2nR7D1KHKTSXU0Mob#Ea4ONXwU*S=_pf*PisNQA$xgUbCWux(6bpj7n%>NfIyRoi~k zj`M_;&Pq6Exs;O=&%g#hwC%!N!sy+YoXAdTjmOM~lT8-_9EfryjVhb)BDH zMdOQB{R#LQS_-fIvtAsljDR-e{Zx5xnmQZNWn3>G$();FcU2UH zo7dOZ%w3l84rdHw=yM88tgL=q@rS=M!)?dII3{;GSX_TIgd3l&UV^se@V;9yN=L66 z9wx*Sz9PwW`8ZpXPWma)?##pf+5_TnocFS>m%q^6O1TlBbUd}up)EYEf+lXSGvFcY z?Gz$prpG<3b1y3V$<@5+RDKT6{@Xor>80u2N`_9L)i?jijQ}QPhF#;HhRtcGM;LV` zCn2aMOm4f`!?@Eu`p$!T`&iwj3)a$$_MAi3S2=-&84YhG*!3i++`0Q+)!C%L_zkr8 z+^gv1eu+Utvka#9x{5uohK*{dM z)gf)vCl9noI6KUw@y25ho`)*D$m&&Z)n+mSp+&QJmW((l;@TR(zqsRpI8X(d!>|7A zG5&hZ=C^y7naJyMCpWc{G)Maw5=kL|n)f26=g(LkpY1r?n{e4}?b|$h*;1-PENq6#f`652CMeyCQ*2 z$k%6=&+DfB@mCQSxYN?Ppcz*+yq|C=TQd7QYWPu?md??ogMbyHjGOv}upKJ}<`ILQ z*1KQ^5JwhcYe@8~UGh8jQb2B=RXj%SLoSi%TF7hB3=WYTJ&n_QhS$Sbe}NFQ3QQE} zspZpGb-}XzN6p`PmQgjVhCl3|CJk1=+N(iCnL|T$-x~#vz_mWc^o;eaxyiAxOgstl zJoy-HqcjC~&@!xCw+TVUbY6;U=_e_0ixBmQZL3D~5i9rlrH_&HS!UFf>t&L1~*z5ZsS0tp>zG_u|fGO>yGpQQl+prPC#m88Zpmuguf zjCD*?{6yqFcjv-u`$q$E*VOZ{SbP?J93kFhwxo1%&-vYj5(>Sn7ivUQA??PiKlC@0aA zbAA6_c(nNL)akz6Vnww3vw*0Jd? z%UbITIH(}HEgpPHP@`~VXd^OEW0I4T#|9Wm;yw$smyL7QAq+-ApY`5rI@ML4S%-ZY z{@0{l^V7x6&ZtCmj5T}v*-uko@+(%|hE5K9b!f%k-T6!;P@KwyAKu2ApFce-O`0_t z4lMG^4LAMm8Qb0P{5*z!JM8a_1(jm6K3S@EKW)kQ$p`p4*U#&#E9ZXZ7jz|6?frWaT6FS)V^|1dHg7OYwPB- zT^CTrv_VT|(&j$u{fXE=1x!UgdVu>(A3(q#h{eMknmR~=M#b-TShWFLh%WMam-u;? zWe8pH?}J92>gx`A11cf=Wd_|_Kb>1M9V2bg!+*bzzQ;VzO)H6z?rXwm5-EUgwrfQV zTYsZMo|tu`s&rpK9bnO+s8S_Q7M0JX<$@%KRQgz$kzyQQDP%SukrfK+sp&+ z*I#7)h*&MA_imZ-99h8Lo%*Nqo%cGjbPCW>j`$U44cl&PyPhg?#!W=nl);Kr-=*6l zj}`tqJF^|7d41O47E07#uHvL0XLukt-INS%X0B2wN8Put&Ls0CzZsZ)d%)p1ciTmD zv}RZSqbNuBVao_(%|e&jw;G03aYWWHS-pm|Kdk)ShV#V~@9WH#eff@w<7Ek**kB{3 zEexW5rUXk(#ID$s>fM)_H4if`8HQB)>Q#qn-an6}C?u4O3zKIAq@~712Tm?38nd=g z_;R?(rQ&7+FDngg5bE=OI6k`X;Q?gt#*RA$G8$7=Z|ID5tH|DM9|zHdp2;?TsJyyF zt(so0021LpHoXIhoIx^bmy*@cMABjxXtE^e?R=D~lEyyf*D} z&{}mB###w9N=P2G+LA|slt>Vdz0>z_*=Y%lIY#Q**5zr*uu2-U4vF?U^$vWZOL#$Z zWJ_zX-Vf86)t`msiI%Z)(PG<$u#WOXh3ih~Uu)KMwPMkK9t-*`;;0pAa?E>|TAzLE zsCRk1H%Y#P?q)Et!31Z2J%n8yn&UUe^@X50p_Vyx`-xR-0XUTj6+;1I*)C+Gqc3eI zGfe*VEBY!qMRmXR`~**!MPP?+Yi)1X+TW?N_J2FtuvL$T@%OV{RybXU#3)g_tKGP0 zPdU5@9ZCs$dn@wC8KY0bi(Su*wZG)B3cU5yZsQvB9h>awTs18R$6dL?Zw%dCu>ZbR zyZZq6SUvhJ@7xU|6G(}m(ca%&&d$lG)D;jYf`}Ty^0>( zpP{ZMp-9M2VG)~dUSf#YAWODweMkBrr?G?bDA@oTb?mT&($UAVJKL1M}takqqjZZxcDmqw#!El;TtHq z$}d6Pm+$wCZg&IGuzkTj~ zzNLyEC~xIwi1h~slmq&OkKgjKdCt!^z^XBc28wlsW;h9YBN@Wsp)>1yLh<`^t2UDn zcv;wxKi+rA^S+A~$D%CZtE~HN5icQ!uzMqq+ArJ5Q zShm+ttR{TdDpNSD{)rH;PIzh;%vd1tF%*4f29{qHg~e0XhNgQU-FhjClYb(@P%X z!^YSfq}(%mh6?VSq~3{k0O_U!nqnKe+8o}5hgbbSsvT(b$?yc^cT1S zIIA&yP5v{$f$63l1>O+b1*g@bzcX=u-R5|8l+w2P5gJFKLLR|&+dt|*CH=(XEX6Vg zPjm(L+`V@X^2y-tf|Wi$y%td!MK4SeCrItj_O^6}10SFzI)XykV_AnHmDs={V#V~= zHIpfyBo%R$sHXT+QqrG(h}iJqX1nzlFNOd$n|4;K_U299t>WXsZ%eaoB}{REwMO;5 z>JylL`)g#{^Zezioyi>8xx~fm{nrJy8sl920haNS04r%p7li!d`Hl&x+$H;t1mT)L zFS+=!@ZKzWEd~uzn&N{*A8O7L`CfbldH18tvca*Ta|?mcxi^F@$$^m$k_*FvfH z9jk9+Y?X`--#$^@GukK6HwaAAjugvyEqkPCD zRp7m$As_&_BeGt_Xa^xeA7|vT4)_p#?{9@IV~x7nk`k=?C8+TDqvcfVtS2if_@WO$ ziz3r|)zme5ffW+ zJePk*tNs;8hKThPa@Rn3yV7!pzy#$XqWHdV_?{32a@@Wr5Lvfjs zgy6=>g?(X1a7~hYy+(>~jER)be#{qdPu0#jc>O7z;x5n6x$-yddtevMu|;ZJgtryK zp(%JTXelCpvRChvHzOq&v4jqVj?xOafQX3*5T}BTi@U~1H;dj&TSF%`W6^;WwtjOl z!IP&_we{f#@=Ky_^lZ_r=D}qDAa#_Qxu@TauKjq8@0RWZ)+FxuF4|%$)S?y<_N>O_ zlrER;H!jj*<>sVs1No$QDQ|06TF>*KQx8_!?7~4eAdCJmhMw+8uw5oJ57V|BgAgAAiB8>G((+k*c}Ry0RT#te14 zh*;P)@c5juN|RDZ=ZjDerddb(u|;s@P83l5iZ2Q`eTzdLRn?%>=tU@TACLb;NFHAH zx~mE^Y#m*Zx*69N3gaxiDn`$J^u*5)|LXc$D_%a1+@BuawaZ79Qc_<}79iXC%Fx;x z%`ygqwNAP@Tq+Nas7NEl_IE#i|2^UW#1ghQ=_wnP-74@!xN}FhZel>ZE-dM$Zujv# zO#i-m?!L8`@^QcMRjEAl0DXSx@bGCBH+^(CrZtmcX3J#Y9DZ;sFi3-Lf~~As&<0W= zw(mJqK?N4tI!7$l+pLZ1Cykm&y7FJ^EFh4!ODPIGaB#6q}euaz}s_tE_zR>@gyLv6bvR_LEZk3rmle^xJc%~*nQQ&)YBC@7z zf*xr+-u>~YM)F5$d>gi;J(1zf?#qr{zU5@^guz|6m+e}hK#tNMcpd)uWXEI&u3e}T zG;ABv)GRV=$So%CsH$AiFKK4_f}W&G%GZipoC@Nv2Dzi{-jWu+_PtSTmsTxzG^fHlLY~T(9K4#WDnW-Quds? z_`V3Feg67jt1gSjn=j)eV1H7HtWki~Ta>t~)YEPJ_A2LK5yYb694TNhBqP$>@1YG^W<{>zxm}l4JPyrOKeMF9%lqeq&NFfz+P-{l;=)oF9al zCnyD7ToI_^QYA!$!D~GQ**sO?fjF~Tc!*M~7^4VlRXecEKgRi2h zRBYZ|8U|)Z+itdeH$M2dFf_B?HDhu8WH3490ECqi2C1_Zz3dxD*&d|3zj!gx#b+5Z z@uNjWZ&Q9Nh|CzgEr@6K&QJr?)aqW?S7J-}j{IL^oF@@OB2T@vFFKnKqKV3zaXF(U zX(5$>t2OTpBRVSC^2NQ7fZ{gm4I)#lSBreoX^gC(zH>9Y?QnwVoZAME-lwFKVMO-e z^NyLF9{=cp8#2oTIwYy|pm;{53GVCKpli4w4X${B7pQ-<3v?Hbr2KAWNqBEb4lmJk zGp{gmtJucE)Q!NNQ}tWzS&!Z@P-nWbP$15LbS%M#X+#ZujqT%BVxE%?Mnk_=jbar^{yt*rl+t+lA+1(no z`3x9WZzzkfH08TXO1}6bTN*uaX*-|7Q%Hp$E%Xon+-Q1ImkoT+#Eb!kFk2TFApbEk zGHL*ifr$$8{Cxf`Qw9dZlUxzv?kc4MUJwfKl+gBkTYi8x;@|11A`!&!eFuifQ81Nr z$LSQB^a^LTdxi+XGqnuzlrANYea>AgBi#MPn57TTyq0=vzuz9P6%ul=ADl=Qg>sWp zeKwC4G+2PMKmM|0^_w$?QU*?GIw$`0dB!%mb07nS5;&hA5%vj6(KrtZ9!?Uxpw3CF z9E3JQK;1%T-P?1JN|ClSD()_yD2o+m*_H*OZz&N|G7Zrw8sF#Tk}Jrc@ZdB`=A)f| zOSD&pjNY%zz#%szFS+czHn6_`$V)cC{Z8FV2FUNY_ciV-;eFcz&!T#Czr0c+39}=P zmaFC$BKh=(YQx3Yiu#QvqDAY;k&L9;?yMR>{6!h(bSZiVmg!+xRR>=U#Jm%YP=i zLHxH7PEsSteTgosqaj_gsVuln+^64Kl98g?2E-7Qwh*2Z_og$UtO2Fw&k~c!8jt-l z_P7SMi(RTL6XfE$@L`jfWPX9J3^gLidp9h$XoC!k$uah1x0$m`A;C@)qH>*=&c7mm`V}$QB>>do25* zX@Y21QecX>{PJsv0fYyi$_{U9W4VbBr-@tLT>9RVnHrULE1LGwyzk0sZ54U@E1BRH0 zo-cY$dn{nq0mLKQuD4~ToI z^0}p-bV6r=1mXARyN&+IvZTIecu5^nEW;M0@(l_`MDDc#cRYJrQBpFPLh_KYrA0*l zE^pDHegOh8xxbnMT0a=7X4U)<2tJh^4DXY z4r-tgj0Gi~<3f!HmiGz>^TR7kD=`EkusaKqt#CQ~dC zGoOrv%$~pB2lCc%bCP=cIt8Q%QPH+$!jQrBH5Lb1 zQiC8!!(w*Cp;M7HQjV z^5i|~T26e$;_C|kky;yN4&5RRoQI>wdQ%W=*J@el*>zZ$#W;&cP>0}|%FbHV~r9+}NFvd%J!jNoiF=W!$4tp~jD(P!8&42vwowiObhavv+02#>MG% zN`BIAswBVZ4}yhkc>N659cuD$n>HxDcBqyvf^9pX&AUkI?y2-5T%PkFI0O*iooE~8 z3^Po~AUy-%sNK3It%~X5b%+-4%+5NU@l*czD$U@K9PRQ zEFCJJWohru2+j-T)P%&LM{^7AF`?wOX7uR_YJ?zpjbUb!EcA1XTc?ANG`yWY7AyR3 zBwXn99yJgYgD;+arY z5mvL!u#lD7sihU7c1o-yQW+cVIih?$#^@#*Xh~)|P7t?TMxLG>I0#GqsVSe(B0XaC zoLl%oJAM18*simk9^_*`;!9l;G2_Y&w`enhCVVPXu~*Do4{1iqEh||RLuZije(Tp{ z$X(14`*$5f{lypeC>8JXh4&>a^S<}D;Nly7%6JhtgI-snxD`0-hlhfqc!Y zP#dQs8E9|%}m)egl2jGI}4P5YIXaX@Iu~=oIVvTPS((?yv4VnlvTD99I8y` z=jUsOop@-F8z5s`28f3Q;9ronvlmJoDf&VY5HMLdu@zXY(`^F25MP z*HjJT3)@O%r44pj>v@!eegH5ucLOJXhx+J6zYHvwQF}31&P z2pLhFH*4tue-xUc*`=TIGsTufa`;pH*V%vi8TB#S`)te}S-KBNn0N_GRTY9Pydes{6i1wZ{ zv-}VXE6MkO0BIcus;W6lblwzxV4X%Dv;9^m1?^#8vj$Nn8d9tjdrf1PL)H>`Y3Lnc z?4ID_ope}U8grfWjD<{4lyMul@dI4D7{%Y~2BR)jhV5DHt-kmDhy^)pKhNH(d&t(2 zfguz18?ss3@}mct4>ZpUWslzf(H-JrS~3pi<9a$EVetj=@m-BJ1vz<#)P+}d#Amx& z!U7$%>0yH4PvDBuE<}#P$J}xPK|LDj@f1U3*G1MBi>D-s!iyfVg0U; zga;6eURH;4r`y|SGvQ-GO+E`|5McVhb0tw;A+jaLu?i%i>NMdLbT zLkuOEN@k!^8b3S70 zJkMKt(|Wjm{2b56dBPvWLyeWyip=OSiz?us4=4`(zGo$jLT?lC@A0V z1FFY_kacEw>F0w@*(*=VFlE1%!A~zG#KdN+K=Sg~4je>FJwKV7mHcNtsAekHt8J>FVatjC=J-R%5Iqfoil&7Z6lG^kq z?McLaeyxOlAXcF5?rLZH<4)OE5pZRcexNM|+~9os3las+uhynT;d|}iE*BS5nTak? zw7P&W7D_^y|5E&vcoAg0NL+l4VCrpbZlb$kHqkAXBHk`9RJC9yOiiSh z73|1uX=V5*YDT3Al;ZI_LP-{1?tXlFVjnLk@BH_frCxX-zlEu@LWIV-Mo?;sl$F2I zEgicFpBBzExD>pO#DPkYo-7^QX&IGz?kJ_N2RbX`!T^_YFxf5Qa?u_O?uXc zm&32q+7TXQmZNb-!8qKtmoky)d`%HeKEW)J{2bpZdV)MYs8B+=^N3+vu663=dJHu7 z@B9dj+s`s9TCWKDWBDOk0Z{1j!YmPh%FAU~w3*>Kdv{VMo*)h--Sv3T>%24a;&Y$( zbP|NEj=z4{4YK5d7-OEt%{?pxm(y@hm)l{yQRHy|?zhdJCU?^O6LdQHRxj4o|{uq_s z^6z~4e_VY9P?TNV?}9X_bazXKl+v)YlyrBu0@8xi(jh5=pwiNvl1n2>hcrlc*FF1w z_nWzMXABqwpL3oQ|M&$5dYu`GBQ2|eJ&9vTlV1Icl(&_2m{ya+21LmUbP3U!QpD!S zKv-4hk2eo3{-UCB=^H5;jvu7zBs-CEdltqV z!MhP>3Q{KOqLk}nz&0oW_)9rgVOh-qD6qEh`Say!IP`Cu4Pt5HW<(_7Ml^R1WalFi5B_aKdNp=<09W*s(f`Q|p!9otBs!h;e&Fc6_-SNBw`+Xm_O5>k~eD6ULpJJpD89pprrq-qf_gSrofuYxHBU*KHFrmP$8X zutDd0!Q%7<6HOb5+~E>fEUaTLmzKv<@fmwu-{st0D0m_zUV)ybyi z{p}UvQ`ef|ERjDV80pxP>$B5)vmtl3QuS)`k*c~p;h}($5--B>oIHSzD`$@EAl}{Z zwrYa%t7UBU3ycs}wjaq-Pmn{HB>GrSe&peJOyuHtI3_cF0A(NGo|dYpBVUmZ0uYij zutE(dooq^ecJDqb$O>UEZ^4IDxGhWLJbkL%sW(jjp%$rg9WawmMqb9lwS4D&1oa1F z*!F0LxmSni9XEcOvD4RijzcV)Be=29PD;&i>!g^#L1ffX3Avba^OlO(UcsLHQA>*a zwz}@Ad*( z;l(ut(pmN3ixeg8v@%If6c4`NCiWirBPA>t(&5(eGp`DO)rfbc&Vy|pqC`bK&Ibx< z@^^T_Fw4nzn$M$WWDQvUE!l(#$ce@i(X6E=WyXLKwTg+bZ+9&&ji%xIsv2Nz=qT7 zyG`L9-r_}Lg*d1YA$_HCIA?6R!!OfY79OzfIoRc>|kl;GL zq(uHY*DW8?i^HosaZ1n3#OwLzurNdBS^gJz51~q!uYg91#w&7Yv#utIBN-6L)gJhZ zFPN{AVMOqF3@9>9Q$M5CD^8Tuftri4Mycz@Lpj^#W!)7R5&*ENXEPQmYse3?Opq+2 zs3n90KT+O1$+pwq%Dm5?hXODdSag^g+q4rfkNOh)p3v>}TY268;)IcH*8=K=3G+;ds!~a4>ATYCA#KRdSk3Ii`)f z7qzv)2IJST30v^)u@FI7fB@zi8GrtXHGW@D1PULf)f0lgQh-HKGjac1+93~4W)?+M zJ_7jeyaq_1zUo99mwy6UjVK<*biwoQfE?87EBrFxrW{Z;-fzJ~iNOSfIt&qKg@WbK}b};jn|O_>8^NgFbe^VNx7vzqS6aD93Qff{{wF)1VHEanSd@j(h4 zc`Kj>Xox5V><)c?NrC~bdc`_tc7#pL0g)d26gp)R#B%a)N`=w2wI@{NcYo>CqpxF3 zvjO&s=l0lGA!^tsUmySRkBpfVh>##99qepbpzqv%e5v8?7_(H>O&aYOZjmH=nAxWp zPJ8^tgrSv%q_3AX|K`@aF zykJ&_g8DV4;6Uju<+&-XTks_ihn?4eGme-*OIPypT?SFa;FdDXkzzM{8`ob&AE@UL zJQ5Ywex_QdIUz;VXyJ-B#h9wQLmTPvx;z`X9~CrFWK)X5CBK1E*mEHuEYkpZQb^FX zV&oa-7%~T9k!Sinl?vdk)XiET*YRPlkB6v73J~(AxuQ{L*)Ns7Pp-YY-TqvPH8lVPRIMhNUwmAWH zHKkEN9Z28GGh=2YpOI(T0>57{(Yl(U7rg=^qGX`S7WqR>ws1~o#KyMamWu}eGWeU+ zxo~u&Tj7cxQ@^(s(S#2WI#MNoe)U21_-fRMrKGEy_8d>PmKU=d(Y!_5;uDKj!IgFV z13-h8@nSjxjujjpMuPf7^wH9~yS|w=nyA&vq8E)-{me1V7SDBJOC6I3F_qnkz(qOmejHUG0W)IdPXY~; zTt6U=g?MqFfQDg{qJXs=(Jz&MnUMr7kv@O_Xk}kDD5%n7IFm-XzaH@Y&hjpqi!gCvY@ zMqZRLh3RfW4YHHXQK7a6;m6sVA~^s|y;l$~g7$C@$`@_V8&LQO`VF0VJJ>KdZS+UT z?`*!Q%ZSYJ=w@n9^9)Cz^rq{Y^_WX={hGAw^5^XRxRnU;-70vNS&bUQ=LrlE>o*4GLC zhdF72qcZ9r3Dgn9efe2_Tu+P}a3Ah}xaN+J1yf1X@yFloo^GiI<3+HgW(-fP&(^XC z=9FGg=8ftgS@;WN6jU(JqMO1 z({(Ad+nAVE(jZn&D`aK>5@Rh2Y`C9}CRAk|r58$el(Tqj0GkfPP|9^OBQKvuWCw}Q zzIdVT;3{9#O7$}EElbPkakNIG=C7J!Sw?=X+?MqXf{OKx)rktostZ{xtWT5AGo#|Y z5f_y6nY3q>_4Fe?S9dy)!Z=Bn8ul=l&2$9Hbm;!w1z?_H(Cg05 z{x%H+4YoBYPC&*C5I$%*!N)dFJQsPbij08_jGQY}sd1VFp z$z9$`Y--v>=oV=uz>pRSx+gKChR`bPuH`-`Z9dm0>M6Dr@eNY%Qd4?ux4TMfn6XN> z=!}TemC0rX(g=f}Dy~mLTbNP}3ObE{Ma?asPbm+&MLLEkC}{=*Z?!xPjb>edTdZTm z>sKMn3A(>(FgwCBs(2U12wvK8d5$j@0&EV1D6>GoU zgj095Q@TL_0-NTJ71+;Q&JA*}Oz7T6E%^CDa_8mSuC+@fXM6`^37lPl_!iK^kYCl{G#$Iu@x;ABO!o}?_+e|r)9&5N_UD>C-(VaZoPaI(B+eQbAcVQOXtYW~PMpeg`?u&YT>z2dqV|5*g&`@GypPq!_jqhM}(<=<(oMt9(RB6 zZte9~L3-+UkZt%n|c0xdBQVA~prTI=s z+}oXgX@PAO$xIrX?)`BT4bFTOOf+Bi7mNv*u}=g3$rSfr1|k3vU=Cplz6ATApax2e zQl#ekmdv>2ASNiuc^7iCTGeCGOKRTI#9@;-fz&R@opN}3HnmD%KDGVXYZjBhdmax# z8+|t(H)Mva;x(KQqBIbWqHXnq zb=@)N8)>6t(h9wU;Iy1kzJR?L&L>u#y@DYTnu4Lqi^4vJXq6hY5*>lwH#@*SD(f4) z(AEu5xQC{8G-hJ{@5O3?rrizf&sT0$BufB&fWg4^H23N9Qa1J5w{Ok98TJ1B2>~3A z3iB?sA{&{K0*5LR2YsUDgY+|P67CI3P5$IXA!IW>1xi_gsv$BYbBg4)bg`GB%b^5rotP|zHVlgUwYukA zOCT6TMm!sR?9wX&W!xB!nbmLqPmuCd1ve^hn(-|_^dE_w&4%$ zeU|LVGYUboX6O2K{k7l@De5iIy?>adLcpWlI%$>n zK*G$!9xZOcl8(cS)7DcKh3;IknT2-5Rh}!OHG4Mktc}qo4mvK?Jr4ZlgHJhi^6VAq z{lTRl8v9LXg|XcZSdNkx&P=pGk3=@JK7ecO&GODon>J<1ki@MU4i1i)n_Ge!LUo*) zyfcW)lo}<>Gr%e*V678t;aQUoKLGw1ZCxT#f|@_7T>vp(Ynu*D+&z(aG4FK5LSN^U z75cc3L+EwrHbxlLnXpl#CZoB1Q$+P78gPGddG$5k!p#nYp{t8EKIV%N z!e#XlL?_!Ft*!0tvwNUCSqNocsT$I@4e6#))OyxuN6>G>}TNg(%`g{K*7YxvrJ z#52$=Gy!tdm29Z0de}?aiNCC#-`VV$T+NNP#QJoyTalxT9m|cp%EXZcl zzu#PI@nPm9(Ml+eI@^`1A#Uc)jm5vbfwXCgGFNu=j!TO!h0hC22NH+M=o$sh#N8Wl zl1T{9bK%J4W%J7r9%58*?htwT*rYe<+XlmyvAJ7tl~Xx*qbw6?lSQAH@o~*?eNxnz zBxR#?{VEZMLO(;4`0jy<_X!D$q6!0T)KZHALlUgle4<#pxM&$nA2gj-feq(4#M86? zMp_P6-;Vuz`_Q+3>M44DJd^8xJ>CwW7Z6oY}uNlt^!Y9?ZP7;*ZE*1O_hxwy?`g%C0|R-LJ&damF`fC zWg+C?si_gL9hjakoa;X-c0tOL*YLba;T*K#akyy!{Q&cD@Gy5#SoB>-Y{w%}$hx|5 zb@E@JUYLfn;iLa2mX(b(<>bTkPp0wRFp?LShtqXof=5Ar1W}GeY4wf+ey$22No(Vq zkHy6yq_Z^73^EXsB*hfaE#ifV2`0|y_ELi3S4CQUe`R0sNG0pg0vxa7isv{veqXJO z*yI^uAGnu2WZi+dXzYxwQKWTR*50lSC)Nr##WP+RGLP?mi8ONFE~hcM*?=ehdvsod>TXdwsqesbVY&STY#i+lmNsi=9N}oVZ3hJ!#AhuKli$&t7Z2Q3ho%@WG}3{J)9PLI0!%1G~u6 zA}V@3C~iJ<8ZEEZ{MG0;Aw?@(IJ9@djrKS!06zY}eiw%zV7TlxX$uf&%Mrpcde*9x zM|#hM77IM9iJR5c+K=S?Z&D52e&#_huYT081Z4-3Z;IUu$2$X8nIbLeBCU{3pADKr zOS2U{!YM!-KkOPhqN=u8E@Ut7=B5rHyrFgvRo7%LcbOEFP5cpM847>SmF(1YRvj`} zuzVu%YydN{A6vga7ppN2ho~6&2vm-i89qfP$KLEW$44Vr69B=!9Uocer}g`$uE;fnFyz z1R;KEJZ*pyNObr$xJgCmwN`?d9IJ)X*(8DP>W4lW-Z_mTNt-;q+c?-D{YSA85^c)p z^EV`C=F7KBL~1ImH1!s!!24xv>~EZ=A%)5Hj_J`Du%>VZ;pg6KwdE4iJ2usqOAyFU zrZl4va6AA6uG~T{fmLD;>Eea^7?eaY5F%`KWHB$~N*&j-f_1x639mT7lQ&bbWqE;Q zgnQ1h({yP8k$lLoMOGr#r|K~vY)AnnWap&er2?I2ZD(q4EE2=P)KiW(E63w)PEJ$kRsVTUdPqoXe`y!73$kcNJVV z<&+~56$`<~7FR$*a(Uqjc3tTf_-l!zx=%)04x zWFjckQTz3h*?s|r=u}ixz-?eP!z#3MN|5&ffcYY$xtcKkFAE(P3O1UJ|w8gqRM zAQq8N|EUdS>SBu1rfBBM?5>RJ-=J6YPogHM+f3B`;rmM%)BtFMLFWI87jvCaNH;~P zN39kwD2#<1TYzC#I`;dnyLCFB3eG1gh>72xK+E}d$>pW$%Z?M#m{9!{HPy_}2%11r z+ePxb3SOHbQV=;E?oV>1f6)%BEc&!LfX(&uA@Jemva{{R!paUq=Fy{fu6MpI5cwup5=iUp)ax4R8oGJAHZGKy{Qq^)^!{3+MMFd9B~_IHEKf@E z&e;)F>cP;;OeP%`<|u9Rp<5N&(QL6#Q+Kh-+&ylrap-@8XdY1rF5R8&RGOQ;hp$0@ zq2@`=}`(#B^jd((NHm| zaePo=%PT1<*?;|?5HYaB{FVtL{{G{~D*+~Ed#`d6fN~0~=rx@@z!=2fci$!d77dVN ztG}Sp5QwpIDg>f4l1YTI0(RD8;NWA2f$%f|q`CI}I*P#Kr4Rp1+9)AB0oQN2+~not zo|^*|HNf1zWE3w45{ala}m)IdS4}AF$)$jj_cmX)Q&+?d_Yt@N7eGrwTAMKl! zoetZx=)xA6JUG5=0XqR`42?t;8CGJxCZ0Jbi*}drziwwTt<``EQ_dAx?AW}*t^M`_ zd4@Mqiaqz9Tz99a&mzOld3II_fxNr~#3mTMIes@YMIw!26+8xHCG#(X#34&P6D5tG zVXKMD<_MbZ1Oz0;{`~m>2z$2qfV}1O;vB%b1d)C&g9D&>L^K&*t=M_|%kev4 zUR6cK4-3Wi)3bLwN_N;~567d7(!Ddg z=OkV{YC=skxQn|w&e-1xG(1mWqFx$s#SYyKkh7h;bqB5y#k5 ziCdmg)_St;YT%-b*~2R%T3|F9j{ig6WMvu^wtCA8vpk}c>=0;h1QaKn-jo)k4tCa#(vC)PH z6b-f0Np>k*PIQ8rZL3b=6Mzg_egEhQ@VKRuvU9{{h6t}jGB76k&m{Sb^oPFd zvZ2>+h4Jf6aeMOR_BL3+HrCS*Kf_n}G${1y*tUEwmc=emAa6OJ1ll#*U%yo(<##ut zChLH+sP&RBXL`<9r|I`putoLQgX4%@r}QV#mktekDiQP9dy$GFo;>W~;A-=T=4SU% zA{>b~P3 z=y$TH1U1J3LTo9?YSZt2Afn`~pU>+-^zsb4GJDE^P29y|ki>rbL*O$V+5f&RtCD%# zlc4qk)kUea&M*eh(95@tFOf0on*IpG9|Vx{Wp0UUjU`;!%^xf|IPFHg&Y){NrzS?^ zJ(L;t(q^E8Q6WGJrOdJq7h0Lg zDW_MU_n@t7{5_mBQo|ps4yidtr^D`)LQ$7hH3U?J$o4(D*J7{lygNb*Nz<6$7(Grk z4XUr zhB*MorQODOG-e44KDL*uwlU^j#pNG%w}RD(eb!>d z>mXXK-3iKWkV!6#2NITZmE&QdMI4B*OAi+0XOP$l$W$)=>fH~!u5^N`r`KxlGK<75 zUG~GC>(Lw_=fwFPP~l8^E{AFQ*`4J)P!3&+2L?n3#^PQODWU08y=TYdc(W_LXEEHc zU0lNRW<#arY}8ZJd#C=Pkqe8j=72GJCDp(rQ>`PqH1lbq#`#tX`C$0CMFrQGfNzaY z0$2D>wSaZ#D?tJd)#0IDu>DxPjDb zPk}x9mPghJSdC-|gip5b_OmvB1h_O1kM|t(X={3`8Vq_eyUU&t6Pr6l$9}aF+5&DS zE9retlc%i*S5~ncVzAFCf%eZ1kPBLQC6s&Px7bxwzYtDVKOd3|`X^E7?}6IG$pvA_ zA5Z~|2ae9TdyZrAD1seL%eIG_|iqhrYg7<19uzUfeTuQGFRJ~ST z0TZKE@)F(h-fbWRW$0W>ltcQbKn;$d-?N4kaPPYO@G4SO!guEYho1QLzpuPt;`&Du zdF~(FrY;1UzHUt6rhD+{_sNRf@%>N^lZaY^UN{uHvq$Sm-c1wz_|V zF=bL{a{zaepmYqao-c~(GI$tm>Dq?@HTAW*2mijh1Ncww*B_5b$vP@^O{sc9K}571 z4(OeTW-gcwJfVfR1c>df(!2q1wX=?u^1@2z+a#tRt2){a5MI{k(adVSHy=Led7aN( z4viNzSdLKozl#?;T-lzOb{OQWoR~DU+yUx{lZLL3xm83(>)t+7eX+%u_4c0A^rgCVqX7|{}e{*2nbH=TKQC4F}{7tgD4(z0hK3v;t!Bf|$!HqaB$E$)j`|e$e zjYY*BZ$MhIlZ4cG(lpnk$vcbJB#zq_!|Kh-1Sq+$Lr>ag%%|#0$xN8v%_#ii8P^78 zmJX|x#5<+Tf|Wa++H#`erlu{V-ow~(?GNX#gqAZc<53|)EnCb0jco2_2C2{Tz=AAM zq#1{siXEZcUnI)AjS;Asbzd9-5%d*XaES*kI1AA_0TNyh$FuS5V6!~3?< zro#K7%IEAP{w2DK_|d%j6dbo%f6hX7rOBG#Y3}PR2wJ}1=`?$GB?+aK-@-23PvNG*kC?HHVzw(?oi z2B!mW_Kp^TV!iNgMOV%AoNN1Mcw9`3+09-(+%@RNaId-F0!XVwfP0bW@3&R<3P=qqG1DAIHJVvI1d20k(;Cxy~91uB2{$Iv&q{ z{8AkLHWnj4&N7KDM(Q{76S|h*4qp5$fK333#N7A)6xWlpDAI&8EfhAoru}2ojg(*r~@5zt3-;=tO+Aa(&@W ze}Aj8s=L57Y$TC&q`)SpbT1?9Gi{i+xm*ZxddZwAGENG>@+WOhG_y$#}Lz8 zv6<~>0j?f6I9g-+lUbB`Ep~GwsH4Qrryu$4R-${&+Otps@?!5aV98)bPD?r5`21R$(;r z$UM&@DPo_maQC;(Zr@C5>*j)RnvWv!h5y0PK;s);_wv@mm8U_G@q5kOFMxE~NX|8( z(sz6lpLL>^hx;2+%xc2y&E@(|vj9I(_NDpkS5}ew{?UjCI`#VpysEzTC+L@%Vt#ew z#Q4>{E20n%rrWx;Wkh(>l@B{T0^0|GVot&LKuVnaxf&y`maV$sGe)3fA4MSc$ zoZ5P3IN_3`iv7coI@BZc08-2m2kqAQF;S-tD0!80pRHa3Yx&FP4rm!D9ttJcYtL6m zQD^FPq=}5St73r(r-j6gaQA`ScTb{N(Ti8Re?Om|&{h3mLnc#_@wh(S(yO$9zM3*s z8{bdoQlY<+C~rV!$Yliu>dWPwPfIrqJ45`HK+Gj%LQTAXwfr{cq2pQ3^+zpqj=anF zZ$^+HqW&GI!fyBeq5zBeBuj$kfk1Hk;dqtCawJPca{7r9TLMYM=(8N~rW-&pieRr@ zk+O^S{lt_Ur$G${Kt!ZjB;|=k$9%afpud^WA2u_@F@r1BGVpDS`%pERei<6mFErIr6(#*>^nTKtboNl}+lj!)pdK#}6|7f$0ff(;9Iu#1!vQPZx z&{x*o|EI|25`c3GjQK6yULmwA->XwTLg*tNh<|?jf`#yJ?^+1bCm`J)*`vs$N?Dy) zO1914hx?l>pNYiao5inN_fS;LG=k+Ys#;+qDYl4FolrLN=B^_QmESexH z>UD-p<$JqDCk(1*CK8Df+9ZAbTnDnP;3gUse@XiIqn%i$z9ezL;&g2Nm}^^X+ud0{ z_v%id0p`&(W#CZ{*kHriRFP}yq}2}ri|}ObK-Wpj8zjA$|zD@oG;+-y5q+ zP|f*Y|7mGMEK2mOH%}1n>8Yuk)UUcD(Vr*p&M$L8L1(n9eZLZ&8y%8nKR>W`W28l}L$Xv9aC7Pi zSvnkZRtjtU$-&_?rA5!@?61>(ljIon!8$U>XM=3DJDtzE%H3l8Wwa3jI{DSRQjV;R zrr&_Og|wkbubLvPC|aN$R#?G~<5^k8wu@{{fW#c^4~U6N;Am4H#)nSV>(KYd_J;3O zvm8S~AYFKBq#<#mv{QoaL~}gtrK3B!%PTXC^J&*1W|rtvp}2hzu9?O0VKi6gg6(Hi z$iJq`l`l{_(d(Xf?q?3S+u;<4p#KZU7Mh1Zrq_Yg*ZlXi<8&}r@(%p}t!kr+_qNeU zOS&Mg{XoLieYcrC_&_3Z9{R`a&smz{j5%{$57(qhOZCwHPzJv{5Yr@!|DZ^j15Wu& z&L@>I(@b-xvjz2kO>FHrP~EC?hgtLqy^C!V@g`i)$!rB8DoZ6Ru>7=Q4F9szalImO zOl!|Z$VT{j1eUUHi7_0UZAd-!tW32V=bB_pkWrv5_=<5esboc@C?+EML4~o4Ie|=3 zf}cQ<0{e$#HrUo;#lwsVJ6B}SyDn(A#7`MX*WlrbjMYxOoi`8BCAyCwbvW{013|yO zK@#o#BN>g`UwKer$*u6)L(onDSRcrHs=7t$L(%zmvtVt~==rw+w6Y}JCPVT+HWu3S zQ=5(Cz&!!_xZkSsSLveG7|Y)%g?i2@dqe8c_vcqFcD>D2(#sraJ<^;fsd6nMG0s9+TMG4P_4W993XgqIREB$X8957e}laoI)a~AzoRy3xc61jufd>x ze?y4$Bgz7gIU$YHkQvir@dEfUgRF4~oyf4kjSiPzFAb1NS(q!cv>BC^m3$^$UgOk3 zivowy4Yixb^mJ$ilbyW7LY;?sxMC$;n4I7tR6zSqw~!0+GluNX=czop zxX{Jb00GHSIJ#NMk9xFDug8wq{tuvRm9ZMvg^kb*MV>)Fyl8)*YHzyt_20N$tpsY` zhv!3&!hwKdXF8_&C%v|<>p{03B3&~OlOej!WMnY8xhHdKZ3mWPdC;OJ{mm4pj`>1` z+RMG?z~$rcOx574B9A_@ReQ`h+v{6{2KDxh4^AKNs=B~@Ff-&0rrw5hj_uvLut!Bx3zvn%T1m4f67zsM3Q6Z)! z^ZN{19lX2Z_a;?Vm?ZGh4tUi-3^bbf$VV>@o1ovJ4tQ5qi+|-(Bs4rgU1>S+PVZ z!yqIe~o8JhCWW9(@-7+;WY@~?#?JsvRSy1#>)oJ;s-y3d=u12%u#83f1 zNqvr2=4)DRqlN@*3vE&crxGK#4%DRKw?nT-yjn@dyAz0RZdOPm8zAK~H&a7EeU)N6fkX(|A7t&bQCiDCh}M zb>bWsqhdb~X0Mtevo%}khBdhN;`rNdr~sWl7y(masRuaE%sWC*<;*#N!qy*m-pAu% zDD>0NEJ-xiMfYkHA&QW1Oy5Nv+n=F%3QF6VX5Re{s?taoNPP?==t~glde4;rx;hEo zWW%q83)i&0H8S|DJ@V?*Iq8BaJG$L@Os@bAe}$AbcxViT&(MxHcsB%QNocibfXSTT zJSeE}-@fNpU=<=(p#*xGij-5SqM)6xk|X{Z+X57VSEf%yjo4cLVnXsUjI(r~eQ*!h z2iIM+V|fqelyL;YXW{+9stnCNkBj(~73IVn_UOrB>rC}$ftW z&_H;kL0Em}LPZgWfHH*7<~Y>iR?@tHtjaiAhLKV=-_?K z5i-LVr7fFCS#vZV32_lbA)7NyQsiL^1Utv{gjYJklO6wUZJfnWV)%kqq*6Q?0fyBi zzsemAB=y3WE2T^TIAkC_u82j9vzrmTN`vn+Rlf_78+AGbxv}UIkhs-tf)n8;E0F+K*)j{RMtr459 z0U&%6_@>$mSiO06JE(-*&n<53MZgGHRz|>JYud#BhBrX*igwAY=gdr0XhB7mTQrTs z<@ImNuUIzWio*QnS>Ie<(JJ%vRhd5VNJ%lY^N1lX8~<@-&R$LtYmK_X*U#(HX3Lmx zlB1Ex(g=#st{g=Y=79#&wBuv?V#sC0V39Q8LN!s6u4W zXLVx4v&YduDPEUd1Y*97c)OWO-;++~4@hi=FlKSGBXW#AiQ3%znKb;1Lg#EoH!5+a zP6jZ-DisN)^_@K>{#X!fmaWo6u79VegEbD zu3{I&Oi5+Ipr=w{1OxkfdAlhQZ|pS#eLQBCr#DOZHpXi6)Nap@H&{4lz-A>_*w9dAqTN}Gj}+_#^LNEDm(3Y?dw-sBkIo%wy^n!^pM z;R!%b3f#Y2UUE`YARnwN7_-psuCgF;bO*c7s?fNU9nT$rpfs<5p@dS1-mPivRU5Zh z#BEA;_LondMWH)tqKR|RbXJ?ri#Py`8%r}CK|Q4E#2Aw|4G?JaKJHI{>CF`n%J$+L zuT@2$_(M}Be$FdpzZA{ktoE%MB#v_LcGsYoGX?0RbEf~%dmeSZ*bSU0&~@S%RQNSP z&Lb3rWVV~GA*ljP5Wct=j@4D#UChu^eWD*jF)rn_eS@UXY;C`KB1!Zc`qKRsBObb} zr6qy4U^A@6a^|8eyD|n~QxQ#_Vi7$1$=BRb9$j1mUbwMvaH?1Oo;d&o+52M>$WLYN z)=-3XCFJq})F7kOm52iXP7Q2B0(h}x7*FSOh-l+m`(MLNTAi>d)6qTpdXVhF^cUgd z%3K{6Hp2)nn*j!f%j+a2(Q`l0&R&4F>F^4pF8PH*J%bwKB=e_pvim&ZwU zM5aNFN8=#L`t4)+w-=301DQ#0Ynda73lejB1g#Q~E;R~>xkc|BGo<3?JQLRMVS{?g3)2sEe85M3(xJnzdHzm3(h$)^ze*NBittqT^hd=cBxw~`tEQ# zwOws!;>g4T?u>5bg4diPFA#>|ej;}IOBSv%L_6B%N0dq>&NQ~E#i}06b|GvHNn(T+v2aY8-y{*~rLLKzpxQL|E${ zdLEY!y`R;$J-VQptLg(_@8@x>!*PIROJx{aJjOolHE^`Xqkhgm4gqk2jtUp7j znuOzlhxSwYk(1@vK8x6Mg*24MzoE|=i-j##8rs`UGb1-PL0NwN1TjvtEA#cQ06dR? zvA69;Er7bMPZu!+kW8t6;+I6NHXpQ6RCE`wOcRwvSrS`DY4;o%doQFYP*NPd7rB@( zhjkeMO@+*wzpn&mP=F!T&rnPPhbA$nm%wEgB(?yc?b!BM*0QU621v-o0WcdC0&56) z0KQL2%wq*nP4<664zgI|W_}t00F}S~Fh_LErFgi!91qBaT-iRj@ZJZV-;1imt-d%3 zTP#LvI6$%fF}^|OQ?_}cNA4&3#yJX~$$-57V?!b4YsPQHByOC@vEMP>kfcgwKj`&s zU~%PPI3P(S)~vrw1tlG`_^Q-K-c&nVW#Fm|vAI{gH{A&{)kuiBt14HFJUD(=k- zlYDUNp2`fmjdI*R*TGayo!%Mrb-sZ-ZM<#A3wjcbS^{aRxz0o4e64*YM*Iw&Jjpmc z1q;cljBcp|GwGbY2#H&B>o+jzs(__OH0pKqi^*!@`ZFUhb~wtpHwkhsL+#R>to;Fz z5ZY|@5?q5&KaAfHzZdC3uGxZz2Pu;4&Mn}^Kzxc%-?}YhWy8bEn`;792qYjNXn44P zK3D@V-3aa)qJRr5VSbYp$Lg1E=_w}3ip60& z0q@`3(;dN2Uj{Rc2Dy5XxhmtvKls4TSgJ~KA)+l-m?yj9@>HILChwL}v)--15RZ9( zcazA7nV+9O?sE%pWIQFFVM482uj~XrP1n2TY(H91o+%NRMZJ6oUuIaZ8f&kW zD%6~n5r^lpm|*RXwDiyhuCTKouFxdLOHF3CSK^iK3}3=IG28slCWIaDuE$e*0zwxS z{Xv7DP7xn*zBYhPLG574*1@LuMPuilbY}wwe!IA7f5aTn%x5#Qc`Wcw32ttquOu!w zo_fmX7_2g6_t9`)&cB4RaqJKFmw%d$zj&thtcl^ur8{&c77GtJ+f0)aC?1dOSho1{ zl0u){vL?V-6Bs-#u`J%qKneR=y9oQDy(NlApmXA5&D_fP@N&O}onLm(-2iE3^=I%S zM5XYftn{Lq~ z`i5*)XPLq*DmXU2cdV|iDkPyKCnp=!rJ_7bPhUvKG_eTO5kjiCDK7bVM?fJ+i=-)~ zlK0}oZ!Oc&ZKKK4VB<6qRPDD)bXO}UN>cVf_eRCiwp`skMlyKlfKx75VI%zv@(#7i zmj&nHOUlfX6+IQhp%{w{B*!ig_VY&nVPT=!Xlm8d&66wxvMc#tTDnLZ^uC0B;-v%Q#CfWXs54}45^*9(uhA}=q zz93D>mOIeseJ|$j0khzvGgng&%)i%l^+<{#h^^4g1M$BCb1->*HdDb=E9S9RD{MKO z>F=Myn8~w|1^80mdwA0&^9S>oRC0HYKP(OUTxXC}SElMCTfa@?uU=w|>v>MVPre?~ zJQ?0>#8y358Q>9B)n{f5LvEzD`6|iWF*7XqBJ6?}YmGI5h+l*DQ{Y{NOEuBdW?|Lj$ zIOI-0PlH3wZWR+BUvkmzdDQcc0@Dh<{>S$B?vy^-)fi#{Oqu3jA9zs&0VKj|6u`kk zD*UfJu%1FLf%vVl5@i=|pIfBq>r*9hv%vblzU*ZUD_GT}Y7)sd@!yxJXkPWN4>3?x z*juOeuujUmYBqx90Z#q#!9CWaxjEnK>HrG9 za$kc3ZqApt3UYKjRe1aMw3nps5@eoqfM`En*EC=Pe|yi1!tZ=nahaj$vSJ2 zpM0dGAa{n`QtM#L-zXw>kB)8J-cLfVItL=Q&eLCdl}x>i!~=R~Yl|eaGo^pKtj154 zS>qi~=L<7SPex!gwqz#o4H*f)Nqm(q4fx^RbS5qeaLX1B78(WzW#5ciN#?FTVovW? zy5|4R2uVycbR=Xl$P*K!afXNs4`(6rA{&83wmokp z!oEMsg_8HPQ*Ge{s=`PBMJD|BtjwEeGMFv_-rEadj$}$~u^uEYHK@e`)-aK*6q}d~o(+pRrYI4*9hp$8c;j@7bOZ%*{05Otnn~*u^leKd zkN@McwJ`?)LjV8n89eVsEt`7Fn>BFUoeSSqq>Gg$Cse9)!;tk^u+{=e`t)gje;?1j zi2s3JjbuMjjNC}`WEM9#28+ItW)jGIg`}G{Q5=&Y7Rj{~ZCBsY2)GnaHil)sj{STy zDi&dSyF!xh$74MeQS}>6?Z*)(vO!Au_LtOunH)g(WRyvLbZ#eL45r-TidUqistawrP#y8XUnerV-}brlZg3=B;Jw z5dmZUD9PL)8E%;lm)G8Eh)LsZ_O*N&xyn~-N9G^>O#h_?*|CzBNcGzU#kiG*KoJ z$&)>qiSw5oObIe^%`Q@#|A(o!j*7C2+J}*n5~M-NVdx$Z0qI6sq`Q&s4k_svYUmb_ z6p$_@WRULe?(X_-p7(v%_hT)FHT-p-bDy*0+Sk7J+0MRrQSc-DJr92#@~J=I8VC`N zz1y$6OYZj!p7<331nYib>4ALlEb9sZ;qiXxi45WR502kYW!;Z~@eQjH%;O$gK$)8> z^5kT%vWIfP0qJp}NGPP;fBA*k)q<)GhH*?PAoD*Nz`QmLPl`8wG;iITL8DBM~5QEfGM5Qf(ZE;)DiVKMJ8@7P-u9 z-!6rAbW;xrCqUHfGvSYle(M>b&(B8-Dv-I=mI~mklL46P?T>rys0jCiNB1#ITXoOh z{vH9}mY<9CBbMC9*^guXOaw69*TB&Gjn$2b^Q(&H!%uB=ZFdpAc_|#-fKq^p7*+l{ zSTA^Q(S-67j~2S=MYgQaV|-t#772TV370LDwA(4DjOM@N*0>m>SCLTp@lZ>O>h7Nf zUYlz)qUSNGWdIh!!5d`AL?rMH1u_Iqcg+_$6f6|MUU;m)aw_n3H38SaVJgb2QJ-pZgCx~d zmMQ@a5YVB2vj+mpEgT5t80v}NlJHaP5~@(`{ok%vAK_V>Is(2^5ZHa;2ZlIwJU6uv z#*uK5@@5>fxylG|d>;l(=ACwVa&5Wnc-m#jFKt#`AcC;+L86OL08$sBv4Uby#Ew=E z+`L;Ve%U_tb!ByoBxt6fOoWFM1wtk+^yc&THLe=Kro(0wS4k9fOr@&kxixEDx*XgL zEqp<5vpcBcXnpdkRK+BUWb1DO16{wjrLFD)?boWY|1ijLE+QD>Tv64iEFySEU;UMm z9xsJ`{^IQ6(V$F5BO)U0g|t-fQ^}v>YeMID$>q5a#$S`A)@_^VOVxzy{MxcsdzbJ> zsP|#xOI20X-3hz;?kRYfuVO1OXiq+&yUBHr#Su#++$4kwqYuK#Ia0Mv`z(}lprYg| z(iqdkNFMK6psP1GS0@wf>H1cdOi5loj2*bKXXI6fE-J9;2npSD?x239hkim^!@uTn zJ&5$GCHQz!<3flKxEiup<&-s#$)WUSb!3x-6FADRpURn9OKsVy#MI#~7bkO=UCWd$ z;+ga`@6^XSHX5rBGK21Q-RG{T0%iR=n^T1JMC-lD@@LJ-pTI=3qqQ{M`#;rY*9qx% zhzR#92lZ>&?N@^L0E17Xtt(BHCjpBlokb8yOY9#N4do^2&#D~F!G3Id$BaTE)*yQo zAcml+Mr_t)|Jmni=}qQ0P5p24Us@hjsWyu0eDX|vze&NMU#_8^9;qqF{5kZ@6lLQ- zF2dhUzo|D!i9vGrnS1y?8@=kWDRzhG@Av`eDZW}j_zEzW=61~>Z+*f+246ln>2xWO zuX@yp1&vcan&S9fCkQrdBpi-*2%Z>K0S;`pUmUhVKGCP`OoC%M`|os*A2VQk*LQ zSnfdXn_R#%Xunk_g%T1Z5wA2@wbQ$RV*Wt-gGnpdnh4+H{Sb>2VUuiU91nwm9PcM8 z{U*32&0nw09rj2*7wUO$))OZB&Qo{V$Y4h~s`b2?3NT)FAn?;!LTM&GmuQg%&$Nqv ztM16Hw6nKz>+;E1zYg>nqA@ z1ZC0R4JpM`@c;_nstb&w^-J-P$Q}LO=5!(DKAIeS`z2d5U^)NKtV2@-ir3q$2^E4Q z_qVFsc)2~ql{)n)-#uJ=q9sZ`wTslHn0L>Mo{@hhw|v}=eUxc^It~>sOKK!Zl=Iwc zdGF3oI>eS;c^dBlq(3J>zO(#Xerme`n6Z?PE0o7cm2g<+bF;a}Ik2(i_P&_UDsCsj zk3CPrm!yNh$WKoos4}^ptZxgk2bh=FJ^uI70;h1A!nbiZk0X>1xNQ$WC<|ziqCW0q zKcYX=GIvlBt~-d^z6w9C2~YY^dTmpWy@LC+pC(l@EInPcKf;>KI_Bw~BZm`u|5JL8 z`;(rNXnUU^NoY5BPt=6{F?!u@jt1<#w9~Vqn0tl?;-cd!y17b$)S!8+oz+{WqxDGk zzr8k-dusld7TSD{1KE#^6*ptT-A4e2-tVXbbHJFp+S;!2&i^rceECyC6w}N_2`E)u zYs28sQ`B1)u`UIX^UYWFdQ++qK?gw_96c~G-l{4Wn3vWlDo}@{z_%t60Q{1_AGmUQWfhfeJ+5I2N`xlFM zi&v|Os){53nyMaXf;wF+p!9Tf4ytbLO!Wh(UQo$RfiB43%~reivrzxyMQ6wUC4;jf z|B^+d-~Pb-nu)svpvQ_H=&@=`Sb)`E=2Mzw*=f%RcHa{+B}Yn}0tGP4K4w)Ff)cBM z)g%+ox2UBVD=d8&85^XM8$y<#vZml7X2os4HRHMrcTi1w03p2QUGrQl*60H)Xj}vP zqPYSV>~eGfYdfbM2<7l?KmX4DDudm~4hL4*_-eo_o;6R^oyfaR6eiQemPAJ2#p>~4 z{^ZlvlTBL7{G*0{$O5xQnmJ0iNdm;UQ3fpjy2IxN=B+>c zFD$RCzOq5)?pC6@=naAg`x9G-mMV+kUlCkZQGB%%4LzByh&<;o_L_dj@MFlatKd#S zf>k(axI@ICDxPSKW>HoE@PTPVw0BSKs5_pV)t$yrYxH7l>G7WFKx?Zmt?5KXarW~+Jn!eZYM?tv0gtcQK zJlpe*WPAU&a)4p%eEWXY{^@?`B&huwvo?#(aX$!C$N4T*dH=f{%<3S;c!oCa#T)j< zF`^JIZEJg%bEkz~vYJ#&R+9fxXH9Gk-VY6>kGP?IH2}f20+S8m+k>gPu`rGI4hK=Wo z-v{_}6QyBxH+6^Ylo|k+iHMKxD-`VpI+sHoFIEM`VV2b@W^k<%hB#B)c<$VUqY7jr`^gj;;ni`K|=qZHl)eb z=r5KME`n~qM5wDae3VHw>*yytO{th}pFRr|W=^~2s&l%eQ|kIGS*k+-XCPjX%#S+M z&NGf>#B2QI*+&!e-Gm-5HT>Kbl~hKl!3&iSbJc^adKbx`k_#>ZgTO0N;H#INx6LGP z$yJOUc}8t`-r;&{Sy!nm%81ot8z5Nv9y(iczX5PEORQH$b9`GVY;S%E-yA-@yK1z% zA>y2r9ulSFA6RuuYdrYnJ3buBA4a-<%kgrxTpe?5200iW(_A%z+t*Xy`UT;L-<+|I zv}P%;`mcF%Jr)23)=p~8PG+#`)EVxKe!uP>)4H5aAVpD5$*qcX7U%!AX2$Q+V$Ppt z@*bbLd4LGTz5G=bnP)%^y|L#J7rf0RM7)QP9P^W)zBvV#+MS(w><->uif9%e7Elqu zSnuc6L4l;m0FZqtAPhoRGcBtk&t`dRq~nk$GKu2E-dI*k0?_+U3h8|nrAe-$`XM;7{t9%ium!MiUBkfw>@o8Y4phlsFW!G>X z=eb)6C$#_{0O+zrxIV4j@w@alaCo68^x)!iSJiXu*CPnu6F$Y&eK2^$j0dZ%<%4CV zN!9@2i7MeolbVQC9iaKg-+%YV^<1StxqpHnhLy)Nz}kL~`FNP+oybdDf?@Kr|7YW1 zo2|l}O1Oz-CtqryTsidB09NGVAQQk0d^grh)|^^Er%u&Az&Y!1Cu8R3a5y%EnCdXW z8LOs9@B3a7vPwJ26(LFpM{)~yEl3}yjiK!~C@c!9;=TI`z+B!n%?scB96*jO8~Zg$ zyltDe2WbEzA>6FoZpV>n8)~S(tLxHOvorRCjCeH#IQo3qh+W&9v51ZqPt?35M?j0Q>ucK1QTzoY$+UrxKsejypkLg09;isdu# zKl_c;VDbl%Hs-~$f!{Gw3xK_;_K{6(3>m^?n|-b~CNuJEA0msg-zz*uhPQ^WF{zCX zgV0ux6U12L#{EO4_4|#9y>776yS4G6Ge`04-sKRB&KT`cNA+2$Hie#c-|?95LU)*Mu)fM$AbPrOeK+V7Vdb~azWQ<+BpbO%VX z6sA*l<@=v5%-+7B}ykcRF#D7!`t4qC6EHa8sk`sN-MpqY}P?Z31WX4F;tv+sS(pm2E;b@X)^UKN5NY_V#1 z%l&2e0ZHGX4s(fx@!uaGi+@H0cXmT;=a7H*Jf7K`+!(jV9TL>oT5UNSTyxF4E>W&c zXy|tr4L!X6DssW zy-5+%=uo5hRF5%`hO%Ez;YYIMb!~Ki*dt_4G!baeV@;XHOVpiVMBqz;-lDY*VzM*{ zQCA3C*@J0z@Y5u7wQMYQc%7gh5~U|;1FBMOYrPso;V$WleukK|80%=Ssbcudd}xB? z=vV78a-{+nNc%{N@#ppqmRlFlK;@-rcreRGRlhS03AAq`ytuI z{N(d+ah&tsvO1UFw}-S9OdgTO|Lb)bA97Ao6>DZ#k|w^RHv_r+#|f?#F##8zy^HrO zlaR;{q3)L(k38o6)q<*B1*sDUTNjYK*;l}}{1Vz4eqrAAH)&!O$?FGMs?tcKp^b|~ z=@C9g>#8k4_@nf_o3qktlGkpkPuXXyvzf_DO21&-1Y+8azS5c3@}$9%oh4AZl?4i? zc%k?IHW*9bBj5BZ@}rSd|0geAGYx4{YI0e}4P}S~vxOh|Y<=Jb;zp)$Neb8$EQWOU z>N|utMzUnhik_fEX^#mP4;JIzRBhXobJ-&${R~B?ch@981EY6$gf+!@&vR1>3uhP4 z0%haDmWe;U0^sw~40Bvx7%n6V<_Gn0W0+{!e!&13>>L!f`H+FPg#K>{Q}V zdHrGpP)87BJ?m}ZWeezk+?J}d)O2}sJ3R;{Zx5fm&s59Gk3g2Tl?^kxh-Ae$)P8Hs zcZ%5DqVkbSF69nG;EtL&C%Cfhvw6o{{3`w@77gK*86twa+9|pL5W>!N%Tk+CzR2WG zj7Sy}tw+8{4B|{)gvcW>=_d>jgYMyuy#6n|3PYSJEEAE6l{^Jv3Trcg$oWb{(r+pI zYLrEHuyenFI$w4PCj$6|D)<}iHPyTT>UEVSPemjUHOm3F>?Nfuf!*W7lE&o*&{#GA zw2miF`5k#T94;KG_dPiR^eJ*54vO|Ywo-O8l+$OWW%HVF;rDF#!T@fJfPf=(O=XB? z#ugt5fp_SXim=zn_7qmbni<}efJS;)>NB|`Rrc}W9mW{eJ$iPnCca3e1aJ+AWs_znH3$Q z$@(P)j+{g2ggL8P~~}u?4Ny zf8B$7%S&23%J^45Me!S-XsB%712sD$1L&jKus=BEJ7VK}C0b3U!PAAodj%-z#|den zasa~kbg>JLpiCDf>RBVqQhS>^^O>+WkufVJWxGV?vGne!r~a@7xE+fjm@g2DSak~j z!R|w!zFtt?pxNE6(dmn&yZQieeMK>{Ts*p~s+n zni9WA!vhnb&${nyRG&HZNcr|dS-EbdEH6Qg{;5EExHU+3V4fGY$V?pPQhXTtJdffLB z5c&-oUb{a$ETwlx$WeG80A)F@0g*`!XGB&?7aa|)x`k6Zk??hbqUrw<^2Jkd>-dOd zd;=l}HB&NIV!~lDD>`SHlljm5#wb)R&#+R)81z}CF9sWT+&!+$fu>0KEkawN<#72+(s>-lRnF5`2s7Q?QuWUYmUL&7y_P7Q&RON}pT8ZD$uQ9v|WDuc&k}7IJ z_k*f67V!SX0?e34&O0N|h59xWgoZ3LucQ0%qGMqSKTTHWVqt2KC&2I+>oL*3+B!UqK!PK$3LYi=XA1R(lJ6&`NM;Ec z6M1eb7s-61N-X``=5S@F3vW~Mzg$nSv`FZXS161v_GG=2)2(wY^%|OUM}Gw~EJSa8 zMtLs~sW2>hQK_<*xe*q|iirvS9~rf$n`zv2UcBm4PE978!%@)5uS6r53|UOWlFS-t^^jb~e9y_Icg0~8My2G@vw zd-KjGI$K$o2o1iycwfyX<&6aXu+{QBrP%;L=)fo2L3O>ZA^)oP-WuGd{peS}WKkUG zaZ5C&O3*oxRjDSdlS7VRW|t#P#UQ6h2_NvNGY0mIaR6D;VHEx6eJMw>op)TUkz}dQ zyJ!9uKqwGywvRc+-;(>~rV<$bro^6$ro>t1{%gc-0t!tvA7 z{nkXJ35E%FxamKQ0kDno&;NrYlexmMSvnSom~#A0kJ@;DlGROx!8Q22S-Na zE`MJp%0}EJelKdM$E8_-Z(_N0k0LHxcJ+ZI$W@gk&I08`+g)N(n{CpO1vseL zSbtJ`p9S;#QVskBvL{m@)DZUW;M{{gjZpA2S-L|N3%bQ>sPOd*ziU7RPpfP$A>lfm z-RH&AF2LJvzlBR9h&-Ttb$@(3S_9_51>TxOm{JNP?6372?ALZX<}pu!6pFkdM>bUr zZF8O57&PzbZggo2 zB|ff05+mNe$|?VccOZI-&YHm3OP26I(bR-2ob$o@n@X|QJSulw#S%bSn7=we8wQg+ z92eugi3-J-TiM6s3?C+eub%%ejsfCWEu67&bD42QD`dz@OG88eTHP6SwrwU79S^U3 zE3@z3kL5bA1}`1taz!^mPYlslOCDIk{9-R5|j$j<#Pu z05EI6YhwRg8?(DHtJ=W-fI&|GN1v^R4OzOV?sJ6bwd*`|uH6l{08L?HpKes7DM}U-UMC)kV&nFmi@!3UYhZYHrBYL_T&z^l zkZE`sUWZ=0lU8*LxZ1tuqp_+HDCtQ`eiLAxdaBz`Ei{wIl!RXar5j7Mo?pmQ6@{5| zG7!8ZF1XRcKgK=E9rnjf`^Ue`Su|Y4s=w8{qfE@BiV6!8c?&m~x>%gRkh|qnyIx>^S_zzln<=1nvHPhW=*h}u; zeW&NA7_YH z#KNvXR}^@?t~Oizt1W9tl)vX{ralNAzbG#on+8xIHFj;cFUj=T|AHOEUUU11m4ulR zGEWsX86%8X=C;fSWIX#uxSP>I*amjnS>}-?JM5bKpzteC$gdrP_vX!?D1H1sn^*XQ zAq$_0;Lw@Q`f3Z_JP`?Lb2_!GNE@*WXQO#Gf^Gy3(&f%vxhfMPzSTTff~#cV%Qrsm zAcxXPuA4sw_b7fTt$v24aR4k_^L;MW!4%r74#^00@GSEFRxBfhc+?7KKwDu>I5}5G zGY8V-$Wzb^K@8rn_PAL4r<0@$3_q48%cK@*KD-|Z_aqaslRz$qF(vpHP&T+5_l7Bf zK}H5r3xCHyKWKePVDJMyi1mY%C^OME_)+&iVX=K(JpH@Yzba-aXgSK(L_b4c=65;n z+$1{uGdWI9S-^<6v=}zGSQi2v_6?+9uL5GXiU^^8-OqNcak3odVFOGii|wz)u2gO_ z^s?VaK^_-drs^@MAFv2pecH>Lv!OEd3;`^95Y`zGSN0Kr!xy55t@3s-{9|wzCkfRz zC+E+da>1{Gk4g7~hS*9l%(A!Fk7WZ3(1QjkD0}$+u4@x~01HiTEVfYS>Dxw7x7mcR zVKd-)4W5?$)}lZdOGnKc5%c6joFT&Bq~^seoP}QM%~sNiU6nUMZ`bxLv;evZcZT2X zmqK8FzO5}^V64OU*B6fb>c1cYh3J|$XAtYD{>fwxJ9oCIK7I3na76A=9N@hA8)9rU z2_gAqK?nJw&GDVF`QhBe9d}u`Ee-kw3g4xu}*j;5HzgpH=Tst%!&~ zM3?*#PKYK%R7RfN%&fz7P}DXwC#iSWSek9UR z!(9zr0=eY;S(ii|9Y3E zK;{FdP8$eij2Q5c1S-MQ&bk6D1cF$cJC{|9+H#wDlD{9|kZuq+a(UZpc@DzPIs+Ns zHulq@#d`lyKiy!Z<>c;(tUm0OhUM#BNl>jZd06s`ZE4##T`Yt@7Ybyqfni5#yS`9+ zQ*&c;=*sKA3n@2VPSx5(jZ5@<5$9Qeb!eNR_d)tAWA6~Y0YP$mc0`e#$E@$noNfSS8tzJQR{?$pT`x=alZ(LuJB4ZoeNHBJs>8 zN^#`Y&r*8|M>No#!Y5=Wf_6cAiDNeHU$Q#bKk!o<9gO7j8s2tj=E)Oz^4A3AcCnnE zkMyxPwe&YVtpxeVa=-`&B>*T@N$>_t6}FNLWvpNd4oglERIIA5$&IKmen(6`<&Nq= z#E>X0Nvrqk)dKDUZI>*4=DKee?m+_Hs9&e=9ziA>R9?oHy1+NX7|1)9e$+mnVHcLT z{48=Cu@JT)Drs|efk<6&#GcT5;G7g-|E*tOS1ce1Pf6*RpwB?>eO#k_B6+$sc(S(W zpOu~WDwA2}lb_@ssaATFzA{~$$pb7kdc*iEYkbYLR1KM#dW=`9Ij(VmFV|$ak($b( zdN`o%X4Xw#q_di`Edh4U+)eLf-} zb101&Ckh)eQv8F4|AhvWyIFYNs#g1YW@uyIQA>i67<8J^RF#t@`&A}cb`N>Vr7Xd` zDiRa7G)yWTbh6WV|EDlL&sq7FG<-XlJnSN)$`@l&gJ?(Yxhj@YC{w^51_VxEh$VNr zLW{aFj~^Ejxfp`qmI{X~>IW!+7dxMcRu{2NIzfpl( zvU#7zkx}L(%{i=vpjK;)RhnkDjRpJ7ikC-UgSV(OK%xLkkAiT2-fM9(MxU+bMp@3{t&7SW$+CRu0881{?-M5XGUUlEp=tKE$p4n!_9lvJa5(ve;nm?nAtT-nhVv$t5ip1J zBe(}}yLhAo5m`a4h~`#N)6vir7vsZHER(wtqi=W|?wyvb4<(#_5fQLog2KTGg8 zmfY0_Cts!Vp;^)6OZ_80+5Dv(WciwzhNIJ_a>F7tw%;-!{u8Wrg^xKFYYl@lo$rgXq z);fDw5O*t^@&o*nhSfhW9ajO!v});LAqNoIQ&>I&CjOH7W^@v}oQ^;tnrL)yJa!`S zZ05~LXYy+Nr1)4 zk4>i-eGT}Wc3*;-idqPW#8nQwso}-escyO^2Otwii@`U zYDfi?jlB!V*bxUb2NN2HkWZ;pr20e4fWjZ{u;TzWE4f90m?!wgY%&wWG;ir@$nS7T zz7U2;ssbMJ&@LxpYrE3#_kP%`dd#ORKd4dYKB?KX{M*4)iv^eZklZWAF|sUYkZ6da zc%&b0S|uP!$cG3p^QRBftKcY31r)aj&5-{nh14xdnQA180E18#s*J5y2?RPhYiZ=# z{DX)gr*LG5g_Bdsx!I&4s4@FWNdhWR{y+Os1MCOy)8GfkF3z6iWa0ZxZJ{{;;K~-d zDSKl#L&NfRW5uzyOV8?@wUETu;ZD=O{JYQn1|9kPTLE1V?>p4bLy;&Jw!OGLv&l9< zJd9ncz~WFKTiP_DDEv$=xLCL{1t@|+jByDJabt!66*@(%asL*eb-f^;+8-WuBw~OE zEd|Lx`wE@&|4=B>Xuc0Xe`_gSTrR3eT5Pz`<_ad6++=uLpzL0dCU&dHRTX9iXB-iR z;DiHCh8AU}P#JusSZm+7+24lK9J=>?sf`{0|A4`Z#6NhYyb{rSD0&FsJ9#Woz<)bU z{{U?D^#5mbP(1rdKT2|hoBI851$;%5D7z$p`EjKW%hrogIbsRLNA8Vg$Qvv^$|aB3SL| zQLo>jNxQGKn+{dN^1k`o%#J&mqsE`CZ=Rrr6TV!6#pl}YC{8~8s(>{@>&Jp{^6`C1 z3*5ev7Lo)(Q~yX@My)G$SB1YZzV#1B#*jn*BgYZ$vTi}56;ntP5$N%+HZSjBkEMEw z8819BfRbAcJ7>4YkN^&qF*VezHVsc3&<->ZI#^5Ft2Y5S;$!pf#|FDJts&KTt&j{!=baSLqiN1{x~ACvx;u7iY6pJPDTT_YM&0M3BUbd{5YIru}C;dR*7 zjSK^T8G9L6#Bx&kvVbrE&o_D{uc-KC#>7hrrqRwLqP4DHPaH0RN(qd;mK2L+z;iKs zT?*R|J0w*e0*iqA)?LM#_fM3jB0e+uk0|hf=f;ZaIk1}VWz{up z-{zPDgtiAxE){bk$ ze>HLm*#_H4~|ObSzRad@+>Cb1}q0^dZCNr zbHam`Fa2DB8cHJ4=Y6 zU(i1^o~+i)$|K|>OHyO2t1t5B?A~tJ4r=+$276oefHjVTAChHGOinU_@qj`+F#MbP z<WZ<;K%M{>Hs9K(uG0KhAQ!O55^OFf{4)<#p3Lckx(Z`EC43a#Y)e)rJ!$x zuc5g+ewQnkvy*FXS-t$+SS>ar5@q?qh?RK2FzNDDWh;-?!#l0RcUr68C(_gY86;Fp zfu9?aBJa|828I~ijr;;Pou*E>Nx0zJg4%_`09gZLox}3O#ayLVMvCa+tKDMbP>mSN zafgYbnbH9Znsy#Obg*)d4ZYU7-$LkJtpQhNie$`r+VivC?`yp)K$pB3_2>^0B3i}d zmrPX(?cEL9MiM%NRL#};lAyq}kp|Z*t>g$l+@Cwm$kt%6sZ%~g@@b_HI&CM}3O5g5 z;xZ&Cu(@!82yeGiT(SACbK35N$lj9w379(NQ~6kyCExSH6yq{4N**@C5heG%tf_bl zawEAh>V0a9=6^<8qiCnmS24lCpJ5SxbH_q47P~X&5$;M<)*|wFu=HqqfA#dZ)Q#k9 z6m?B4*X4!7`cnTkOKKR)TeD-3D!<9TOlMXjo z7f*vQ_`gZu`}vVY{G*k5h`un=lMjvJi%fjy4;ycw?+x%Y&ehH>Y2>4;^R z2`8IZ?Z&>aK3gmO(l^#AIMaCV!A*7Se0|yT@zDtGa_nc22DMr^jkcLu0Ab(m z8vnG}woi*RI#4UNo%%;4ZtOZ*5{=8sVUwd%AnkJR=|VX01j5<@tbRYx0!cLk;g3ZuB?!@{(~<&|i&WRl8pibxZ<`DX}8J8FF@RPG37 z1h?X}0 z`~Q^P)$T3{C>f^~+xvFwnmNdihvF2PvdW9CO#@w|88Fqmgjg#I#Lzr^WlS+4@~l&K zJul7Ai%$L>i-54FC@UfQdHsoRGe#R zaetm!FMcvx%1rQG4_0!vq4B}@+H$8r!d)S$a+{I2kusy++(-gr9_S9!xi8m#isSG^ zaz$OBp^+~`S_xb#>K;{dhBY`Eoqt%NRy47BYZyg;`$Y-78=#omr2)po2GL)K_}$k&d=FlxO_2c7pEga5=5Mx)u`Kbg1cXZ9 zn!>o!RZ8#=oF%~$KYf{ydu8f%978&B`a-I7z%&e#@+O9pn%kDkJ(UbAyV97Sbv{P| zAqN!xd#&kZqZLsq-CkOB|KvrMqV5&7v^h@5>ND^5BEV*5mM5u;OvULl`Qc6uRpdT> zxkgVRvtS{y53(w6nUhS$>uk_-QxR>G>e6P23ol+Ek zjC5peaHqXPJVE1kuyl|5-^b%Mvw_-?r_Wg{Gxo|U=Eb`{h2~#2vmmHG7a!kFW*M_N zG!keOl9VVanU2BYv2(<-jeF0^n?`*0!H5pCD7NM+^d`9B7C5I9Dih*?d=cdbyT@Z3 zvvLq4T`)kLg41AkL#4^A-hVc3rt8?BWOMAdJ(PFKGv1jSe>J46^wRCF&UOICl`2%f?wsR15v zo!x?!S;8L)r&MpKZ)&Sw;FA}{4mmeTNmDj31I}5DO`FGe%~X#o6mUG0AG)i8hIg5l3Uc!sh}aebHf5;q@34$(k#|4B^HVwK zRyMtG^JE6&%28*8WMOLQCkj4hHJLdF3!z~Tn^H!?$qqoWyzoYAU9N1PFFJvnTyT!P zisxnCbE*Hi<}dR=`<5F0Z4M+ui6WfqT`6MiC{m6R#CfGcVW7o`rE* zjLfhQ+a0C)-wj2LOVwji{4( zks|e@(>(#l_@6*`-yNFQ;`eM)`&iC)%~d~j#5;WZX5v`we*TxrAe~!ck}B?fg<+qT zG{9(lzJMo~rr5-hy1c*`l+-{cW#}Z%|LaYUr?$W;Toy5S-N$IA{lC4TcMl%vz2nsJ z12$Ek?b?cf?!}kHT;4V@2{u@Qu^Psy>I}b;{7PMYBj394BE;9{$zW@SpXi z)Or%lK4<&E5BD4=F0_u(!A-uTk*baBmSZWTH!C&Sgg; zqFjH$z(EsfV@0Zt@*a}aCI*;H?}ZvdGgIKNurV)R2=2$VpPViKC{JNrAkg-veLx(E~%(Vp5}&LZm~=rW0+1; z=5>N`x7B3;@W6Yw1S2*1-@~sB)VDn+S3apTuBoX+Os#MqF`4QoVB=7Mxdx~SRLPKD z%KL}dwS+A_n{foYc?ZIZwnI7~r?b&)mT!GpdOClyGLxk5@T0<5U(AVNa`V^-lX~Uv ztLQh%b0kTJ{d1-aD71W{2M(ZEZtsNOeHYi|Z#Y?c7#am3GGzL?w75>qiu4o9pPlmr zti}nZt)F5R(SWy=E^lAz6GXGH-aF@v2)-;UNe+-dtKge43z*SB4qDF#-9m<=T#;juWg4IcPQXJ(f$mnCjM zx+v21l@FX#?j7;pPo7{%bCr_Z!#~9#(~nS@qG22kHjl=gW~xC;!G`Oe@7TyV7b%(X zV4L%8(MCeUSHC)$&GQ$>XLJ-;IIK(~^O$MKE$>=2>sdZS^U2JIkS&;7%%~Dn;#yzf z_5iTcBy%E7EU(1AGL(1oK)2OOM>(CK@8Oyrbbxa-;qj+zW5735c_(z|@g|p7w0VZlDVO7!)UdF?IFi2VuJhTS<^(^DmpjAW&T^E3eb~!2vH%E28|&N7~3k&swFXe292TUsgu{h zgD}I_yd0u-5s`DlNZ&2Q$?mZYq#6zp62kYS09|)lBpBj6g=|8L0BGNdeEzp`TgkA zEZtZa7=usTV)fFfDP;URL)?e17N0csv4_7Wr@Jx*^(~jP1#~fAs@bw6QPaPch7I2( z-Mw&jz}sQ-5sAR|lUd2Dw~B)Ii@y1}L*PBGU>TX0ZAc)Wta2Vu`MWTU`V(AnDvo}CHic{11%3V4>0+8`8Iek(v?qW*?CnVg#W75KkxG}m}w&)w#-I>Jjp?Y5(cAMDy&?x$!$^wul?Cl?Mj*tZG zujA`FC~M5tkji}=1+OI2Iv+@-%_!T1Y(6i6 z`7dONcX8oA9Mv&R&-_f-zVXG|7UH5f1^*X|x@4e;DEoF0!9|$j`M`-dWHLvpLfbj1 zH*oqyvM`Af6Kt$z>Ud9G$JaB75%EL&i@<4Zm37BB1s`Vkj6?7Zlap8aP?cG`h-0?vc|p-EZUs8 z+yRaK@`$(DIB>5I-Jh3Ql2mI;U>NMH+$VlNL4{^&Ecn&B`bw9|d0kMnV`Ybf%P0x& zXEt-n@dgqrOhoaD-FK$^x8=;Woc#d*t9AZZ_kkA|ulhA=yIw|XdH+!2?{vLlui7L} z`6FXILmy0ey*kxJj3BR|P^Iy~w{}dUIo1FwBfQ%DQpOh;!cch^8>qO`i*el=I2?YpU^r+^@PG~uA0*NJ|_^I1crZbTd8Yyqmjh} ze?)H9U;zHg_}VX>aM-o(QIAQYZ&d9snzF?!P|IHu8w_S=+Dw*qP(_+b#-nc{?eqbw zpgoNg^0{Cl{7h4<9hX3fksJCEwtiea5zU?~PXH%3#4y3@H0POt$pT2D9Y#eKV=&zw zBv-EVxoAb&F}M#^-lUxb$LN%+6Z{JjNyW{``$YSmNjJQKLPG`omRImOE!-A;V@RCJ z62;SJG=3I5^1f!DLB~uRHrTU4jAMbwhu>bP`i)5zPuFQBwPcXB-XHxn8-8+i&%B}; zd)qG@nXkkKi$%eX^s6a9B~EkVgMEtw?DV>=gngzCF$F@^{#+^mk{O4u*}@d4=e0I@ z@xsS@C(CsttNz2w*_x6hd5-wLad;9JO;{NL(@S?H>lhN7m4M1)Y}WJ|X|U&OCUiQa zKb@HZE_wGzOsEZsdHEh?)f7E3RysCaatWm2w@M&Zw3+0l*!>g)-b<1X-aZGf>Wi;R zC+7prnC-e&&GsB-I+O~WQGak(lfGZzj0gYeCeA=dXt-ZB`o)$S3zq$PFgb+u0`}<) zLL0*sBOu_b?v#1#v1)Zex_Ib`>1_E9X~A0Dp1s9&Ea6bP@Vg<4Mqf_cN3f0-urNFU zXB+b*z*`>0Rl}cE%&Os%Fag>Ab(T|ky-Lx*V0Ql-j+&lAw8dI$Vg!j?f!_o;x5%-I z5>5zdl|^|;eJ6_b*9lV%#=|o{iH^!G`kmi>r?%|UZlPeHQib$F- zb~tQM4>yBX)jiv{Pk0yEltqzxfV8`qWVMVw-cQn3l(959T_?4r_J2z&+ae4eS7FmN z7C14y_YT0@KI&@mJp0U(N-}i#a+4jQ;iit=c&=-!>LU4N)y8I~ryE}%M{}F7Jk$pW zkS@>X`58c|GCtWQ^}`C?Rz!!qE9$+I=(i`zFAM~GFq~Cex|-y=${fL?*~)Y?{UH2j zo@XRKa6(gH>iA%v@aMshI5?#nK>s09s&b)sq6v>@Ayw2pld}2OH_NM1#Vr44qN!fC z!yIazzSW2X+dKcGXqMQTD6PvIvCJ7kz;1Cv@XnqClz{K~E)V8n-?!~3c=YKgb^%0& znC}`3XuQFP*L8PQz%d;9YeiUc zyXS%VK%nOObZk0jiz&`TU{lvC3|$aGGu7BCdaIE<{VTl>(C)e-GrR(+5|NUd#)bpv zv^;SaXl^f7 z>zNBX5V0bET}b>VEI>So_$sHbADZ5k`#fg&&E8K{BN|xGL6&oka%iDh35q{7O?Pl@ z!qaKIwDAV7-!@AhBF^B&ADq7@9!PRaebk_+n5eDfa2E@BM2sTcT&*SRne+^EbcF(v z`V|=t^)S6Sa8P@JV&0Q<6skTDhFMWW%wfpT4>41gB%S+GVD!F5)R?xVOQD^rzUh~t zKDG{rPjb;W)qJUK{8haSRbAygeQG((HS;v;6UX~#Y1&Cx&Qub3T)RXqO@C7Pm% zbu{>Nyngpv0sIJ5^?~rX6QC1M*TcoIMxWdMYg;N-aGIx93Q3DpA3^)<*f7C;=K+qy z3?23vmVM}FGJ|{`+pi+|nU(yrrr`gL4Fy;=>aT<#abV{2~Hy<#$=y+2x^1q}AFUpMqDc6G?VI)Yxusi@jPT(8_hu`wU~D;r1r z1F}u+px|uH#-S;rPNsWJnLI=Ei0iS}3%^^XOwl)mEH22oTqz>XN!&QNNni=;?3pr@ z$p4468|hunZi<%VkcGLFB$2_BTs$mbEjONMs+GXN( zW=H-3^wYTGtBHqc$94h-zU6f5#H-^Uo&MDz49ui=e!seRNM`|Vk1%}XJXeqZ7`yWO z^i}3(P(AJ;oLLzaVO3X!wR}aplK#0N&=$2q`z6ykI<%CeO>n_nqkc4au<*+nl2ojD z|Ep9jW~@!2_%^<@KQNJ#oks%n-U7%(_GBFA>lMzJemGL%Nw>x-Q4r|V!WcSlmL8AR z%L4_TJPpRwFGiR8CFipxZYYwa`VyN=4<8~^qOAT<|HUkJ`Gz1<6FKyRu;fz*yN3iR z6dS0DkyI|qb7;(WDL zo;L(ZG9W*xB8d%1jog3Q5zjHisKg5a0r0y^uM?0s!8Vr3{}cp6MM<_m3IrNq29%0| zCFnZHS~HB3x~0`=beKF={q54{G`*5P(%2%ah!`hQFg|R=vM|Iv$@^(rTn%JW;Aa~z zuCMuQ`gRV+?qvwH$2`Gbz3O!l+vAVHk-uVdtMvUe*;U&{ z8eg;>>w~nWS$r$M;q^DE0il;K8;CkkeQi!sG1G_&Q^UaHcOcDhN_en;P4=fmQ=5^% zy5JAmGfe0R^-K=NX8NaeUV3txh%KN22z;OKH-jdoEf_^XYk3_63=fn-gS4^l+Dr*^ z6P#wMjJ=L~!o0@HO4h;s5ebTkdVx>lcs2-)ql0iEJiKPf>lXorm5Ht{SRBS{qARB7>9L@O{%gw=e!oJ(>a_zqZw0cH|DOg^;_GL5nTYL% z`fU>H+^x?ll8UHbOK{=+wlJUOO1%M@h7P^_77fFc5z@usNNAgbt?c(vxB4A7A=gEv zH2>k6!11RoZrjXW1BUuz!3*s}QH(862>Q)E!u^>}=xOB`y{GS{o?yUMB$-u#erHOz z6sakajgC!_#5T#ENhl;igKJXg75H#c1Svt4?Rb_Tz=F}6mjA_F-tlxE1{^eR$buef zJ);m7;%ePFJuNqeZ+*~Df1jF-d=ysJqVxLbr`~1rqtUiTuSSm12NJmWeInro$D3q| zdw9f(0nSygI)m(Di)M|#Eei9SgTET1zuwYJ3)qz_eBfjNt$awkCq6%OOU6D$1K86T z7+Vv;3DES04W27*N>H98n&RaL!*%-Cfki^xDIhZGh-sCW&YBcb2ctuk%%7X2WtQ2M zAf7YLcMyFAZnl1`kiET*PXJ#PJ9Mr^2F^JeS& zDy{RpLBR~Pd**Z4qhBSNx@1a-D$cKiu3H>=lAG zfU6RJo#^s&7_Fn*!z#s?(l*n;YQ+Va(GbjtOG zB3LE9>#}0IJYESWpJ78nFlxI_sXR7#Nc1zFHu6My`)QInt*4Qd2aG1`%ROSKFKnKC zSNzA4L>*Wi(xl$q5$Qnai^r~J^=|)Cof*^8etPOFvt`X5w%~~RwtlOgH{VYV2Ci!& zUT)!&ky4dZ0}g{)OI@q@mv<5G`t5^(PA^AvTXLH4zoT2=Wa*fASkTD!Mw%M|JX;r- zl16S4ZGzQti#OBgZNCjMZNZ;0(-&2LhTo8@kG0g1-%p7HY zXwkxc=mu~d3_c7Ek4n@DhRVLo9wb9xZ&_7l6?wo$`2NCEyfUY}*PyqD(TI@fD>#A=BGB8%Pl zzm2lsrz^<>iHsmunpXc29UZiam8NyK7%-|T zYDvt$W@-h}h?Hp^|5SGIptH%lB-UY0Na}g(Kv^ZYGDc7{M(EjF{;*cuPDF_X89G1E zHZIo^WH$QgVr=ctEPd2*aPD*GS6-bbcOGOZOK+Rx)%W%H@$<+K-AS63w4lV zj3Ns6=-=ZwnN8qawADy2;w+AS*t5Pzv|+Csvc`xblWA-CNQr+vw$Gb~*rJvP;%JHL z`oPYlAxR({PkB>sH(3lOzh6DGzdva`PwfMWB%}4T9AD)vNU=)e)2AEl!V`n;ziS=p za4=dAeCRQ(@L?U@;_vI;Hw(kD=cF1@^O#dUsjt3K$Nua0>vbBN;y1)4xl)=m)>*nC z=@;wz*Ai!smnVxf3tjn=;SY$`rsWnaC*GgB!55iF{TVo(+bhX9dGYtal9Aa9Ww>)U z!!*IbKP!I6e?5s)FGXXSJNUj;7^_uY!#Co(`foE+aA>W*&MQ>)T1r-Fp9S}x06~Om{NuO;`~pL_E+@)kBHQYMq73Qi zM1yJhlIg!MJ!_c0VL~6TsQX7^5j6kyke?XrhpS##M5@)&cRS%Nzn5K%=Z1i$5f=*Q z>RbOGG_l_)2c7Box3P$SsceyrN~TQ0|0|Gbzp4xW?Fx?jMWzL&DQ<(pVdlOtqpji6 zEjp&Wkxmv0FKy#9FIn#FS}SLdW`Wc-VJf;kaisjU1duan<@FKl^V)?m=kF1=Lydcj zRWg;e@aov2SaCdP1+yb9Bmp#Q@OJmq=9_QWZkRIi@mw7Ye<(@xQUg-Yg%n!L;%j7o zpfl7$o4inJr13?WaCnB>>phs%$xNu;(R}HhZF7b?_UCVf?c_eOoLgV;6!{D$4SB0r zg0p3pqEEaL*a-SfLPW6Ae-ri?3J@g&iz7plrH3j-{^rKm&;w4?QDzL^ix2ae&k!+- zIl43fiRRX0u}1k_p@|#qaXY|kSzVSw($W!~ z7F7G7I%~g&SYHyr!Q*(!Y6gU;Lak#l^oY~<+8FVN(t_$t9Fi#VlifTunPNB`v_i{& z$F6dWJag3x9#jYmsy%x73s0H8TKJwZ4{Jwe=HK-?)@UysNltRadZUjrfw4Kxx8d@L zgTvPS>R-K34ub}I(JO`ZH10w7$>=n`UA`HQlPE})rG5Nyd zLo1)+_i4hrZmwst)9rfb$^{eDxA&2x7}Xf64!C|U{gjOubVCns`vJ!jfx|5j?7i%} zp8Zr5sY?IF6HPpdCrhSt9z^*%mQGqX@y%SjvxzrUIhEin6)P3Q!4Gp#%I;5yD~Cbp zVD@K(H0g^K*OTo7OIO?1?AI}*V4BC07j`0YkGB-*(S zO(nK0LgDLV4P}z7q|Hu(U*H)nZu)O_4rJ&zIXkk|@XZlRTpED=F!mTAX#we$A z%?gd`RVv$7s&Qth^(Ur{#W5K2&tupT_3QO!TTS*PIOQ0a-~eR6!{rOsZ0yEZk%Uo` zn;b2*DP)$Bw@YQ8=omw8JwdK2gxuNgOMkX#Qdq6Lx4hi~kO5&0V^$ z2BOR?+Cb##c;sS(*q433iL6aWwj`{<^;EaF0?N1WMm_zm^Aq6?MR!JkLR(kRcB>&i*GHW`aachm~3RV3)TT5urE{z;&pH zRHa;FnQ0d%0BkK}+oA)~Q~%ql%3@o4xg_Q`fOe6kTRu2p8B_?S>++>@+EnwI(sVAp z1()mfgM9gI29d}YY>!xOAFlY+KQA+*@T-!UmSlG^L)B~05pgHhmtVjVjtT){zC*shQO+1}K2#%;1)O%w3kor&%arYm_^^@fqfj5iq>n{$VhcJ1xzDEAyL@ zzD*FMUVFLMFNb14}jJa58o24{L1 zL#JUgY9#t@Sww|VDbcZG-}tyEN7NTHj9U(WFv|1zQcSA_`xgnA%hz*iR~JBQkNZCX zt0eIJmP~)?)TKxmU5KsNno4i^o=g&41amp_Wu|$1)v}~an%)yudBjycRRJ<|yaF+( zQRwgrLxL1H%sSh710Tkd&D29AM#b_L))d~Cy#&78( z&1oYy1{?t-`zi{~uoG#p`3X5)CXvM8VTp9!UtzcDWq83`V@@an)_C9j#b zWjai&-5S;H+6X}jJ)*y731wZk3HH0EApX!B8T>mM%#EmOqhB@DIVr$05OAv-GjzhD zSIL-QQ3(T)1+8^( zL6TDtu#>HW0Ma@jql&I+!BVC&p{JQ*Dd%~io@<>baOsbVae%fR8eiIBRN+ioZjStH z{W>PbO`-N=YtcLvV|e+J2iYR{d{Dk|%1;k)j;{w*QX~o9hjo^Y=Hd52E%|B#9~}0? zECbZI$7uD;@M;G(KzIPPEjdxd25k`ivkXzx53a;U!H>UnV`Ai{_xD%4Pz3`^1pS*w zhd7O~&mqWnwv6@m1+!ZBI}rM*f2En37@a<6$rL5R#id~_xBS3!jQ`ChUy( ze^Ae|^6{J)Gu~{>NUad7i^RLgXDFwy!2jK~>~q1w4#oDUB~ME9fM^mAk+o6YNP{!s z;EUm79gD$wGovpyg6X0+!!~GVLRcMMc@XQoy*p+R#~+-@23-sB@&Vx6`&Fr$MtRmM z(jxT}yZLgv_dMP7!=I-Q2;U-Lg~Juzm(Lw_9qblVJulO=Tx_Rdkc(=S)m5D{Mvocj zUtu`$rd-c+-cKTRoh?Smt?O=)>AX3j>t4Bb?2tcrjNb`fvkt{r)hNrknUx?`7@<3` zN5v&>Ryul{U5`#hAo@93K{TlK!s%DbPZ2-7^FJG_oDsjPc8eQV``ZghBdkbv|06yC z5Pu$Q6{53_MujqrFa_(PC{6%fAv#6UI`%L>2SJ;H*- zh%-}ij&NA>(o1%Yw0SPcrRvESQM1=ZIqT?sluWwBg1jGr8i-J*51Q`EAU@N&M}(om zu3UnpMe%a~*zKw!^K*2}YEkNym9L8Vp}2&0Y0nzzR{PVrsFF(W{#gl$8rrMDWfX1N zR0O@eP*Zf>K&V>!6LF`ygmQQsc3K>j!GZo8I6) zUQB9DFlmKdPZe|02qn^Y(vmF$vj`55^u#<2j|Y+QLj$2ujy|sNQ0|5o38H*Vr%c(R zRh-ym>P6ag8id!6OKKk=U4~Wyw3LG?nnin*nIf*AzI&Uh?Fpu^c;(}fnv`7&?re)% zu5f{z!OvFf&j(_VoB}+AibgIet>G{bDe{F#-=XcJp7eM6 zqv0dizLcno-`#>Ut<7c1A}Lru4rYk2$jcl;KL0~ZfDG>OY2)Q!6a>5?+r^oRt_;W7 zPNr5!9ZZ542=6^5YtQ|KcAs;nV+OAzMBxHzP|@wtY@}}llgi?&!d7^ypMj9fw&~FD z-^+_H*&kT5P{{6|hjOvv-!5(K2J6uAKoD>Rz1Y9g?-z9OFWq_{EL>q$b?nhnw}lFY zg8VRD$;hY7*C)-pGXW}SkQgcYEoOWhdN;dokT^PxR)4SOu>o7;0vq*O^~yC-#^ihm z2%y!CrVbrJ`kC|cJJyRY%#a>qL{iD^46S;95Oz3IQZKNb)Lvgy=&LxW=yyvP`Z%Qt zh|IocBiwq|^{l4f8FzyANB0^>2Kje#6Hn~%ZvBr@I!qrSJ}QOBAGt4l!YTrJh~CK2 z#h{SkG+(lF1cgh=6&hnX01*6lNPauDZz37F;$RV9r!q~#f#{&j8`YI>T@=Z~pNtDr@yoL|$<=|kX6+iwZbBFsS3WqR3rs4}ae8+!`-^(zzqix1o6h-2KX zs6z4gU&ze=)_-EJm?DKB4|@^LLe{ z*xiIWuHfYkB~i?SQU?@&F=chGju2xUZ({8zzQ2yfm=y_1Az|La&EQi^!ad^r`!YQXCJD5 zm+*&V_0ch+%MDP=4gDNr7^ne0pGT=gk3rsAtV9x=+Tr7QbVb%dIEBbeM&*C8=k6;{ zsGoq!G3q=^Vp9KrO1u-a9=|^`I8Y;A--Fhx=1<^rTm_Uz&zw!}SF5DzHZw$r>Lx0# zhPw(=oh!t)qp&LSAPo{o zfe?Tup_}-5=Q>=Se0f2#^%9waxJZHLN8fu6FnT_*M^b)xgH8I#Ojhs0e67Z?1*M6GKF`^aR4 z>cw|1_Ly49rcTNY3${QpCn~*h?N{xsX$kOeO;s~?+ z{Nmfcnk?bG@KBSj3J+9=@tOK+xJ>I0w^ zIh-=VIwpcU){l&E2sh6f-vTAk<(bU-tlur3gogqi*tMttX3_v-d!|zdqkmOu?CY-A>&_R9=z|1zI|Vpm^V!^PAlyXorr+yE&8m?Qr0+BS-}N1MsCg&7S# z7o7O^jHdO_2Quqvw`OlJv^bZ}rt~z@F;c&LbZ6o-MWhR&o(}t)c)NEQXbw<|oZ2-? zt~dYgv{0Z>T8~aCgL~TXN+8A~+od0z7rz0!FIDhc2iL^l=L3!?_ z6vwavC|Cn_%-Xao8YRF>==np`t9LCC_y&N44@0ZH;SC#LdP}w~B!kt5AR!oAJgUMd zHd!8#{JwtE@9vB7+Y;orL-e#52`WIoTE!9kMmg2^jKt>V&$mnLt#U^y%IV${kTRUL zu!$xfKqmed%Iqa2;}XeRxgV(LHbH~Y7CN57sfsHxbrNf0)qZqI?7gwS-%!C>y{eV4}&lh;hwji2pj=lr@^@82VXxZ;1epBz@}_KwF%%1$`7dz5njN2w~Rjt;Y4sb-{`PX_*1f$1M+ ze0c5kH|#$&;(rAmJreD!n}%OVfLK7NE0%Oj@Z%Tp1eM4cHtR0}0c%Bi>0utMzEnFm zEvsvgd>@QBh+Ab!bdSC5$$9GY3^o>1k7@MXprb@*Jb$mN-b$-Ds*7XulTeIhg`cc!<+*!BlvZ&CoJDgb$-`>Q zN|(oa=cirz^)nve?}lh5_}@&h0tv#S#yr+rvYo^`k97a7CVQ#?J^5T}HANF@i&&}A z(5p;RD?3hyekxaZ%sv53`+n;<@W12gGj|%JEPcutC=R&Y^j)b7t;fpEZTV{V@5MXO zC#gmW*4rvn442Q<*O>OG6g_ISiRYxY7$rUEL#6LZIxwW(S2M@#>O)`f(EPdd<7%FD zr^)6Ys#GIw{r2E)aPr3I_Du&UJ7c)j~F5_kD zux?lY?YP3COg28x0QgF9g)Bbf3ZbC!+u>7t{M>)GVRPfJ;_-c|pcEw!N-GxSscmovpElSm`&w#dQ9JPPq!!HWL$=bP5aBo*$GjhG&LG+&ah=V}A zysvC^o>tn|=4tW&u`a8Grof8|1iW)>E5JiEeC=-ZjE@Bwxbvx{_tEn|uN?Y@iYjzU z)$=1i{eZvs(oe53PwKjp?PYdKBI)nk_yK`X!rYaw#H)r)XOQQ|^njeyFm(luy17*fxh$kpnRFB4t43;>U}q3i{F3L3 zwbEDC@GRbO+cX^OK!S_hi30grFbxqD)w5O`tu|LVd@rZYO zYq`Oy&KN5>vy8ck{GC^?TD>RD)Mca&7XHHLJyVeKdSz}bm7Ce?>8GDjA}s`v4N3(* zzHhlmsKJ>P%E8nSv*khSwibL0O=BqzWuffgx2aC)qCgdgzC6+Q_Y{-$)NAE$l}fzrgyY~XCgnDir+)_9KYngkF*Fr zRKM>S)5u7FQ6v%9XhA%wo}s<^<_jejUFg&w2LCTuHkz%1B0>@C=l<*@1f6gc9%T!A zrF~>f%Le;JCSypDa%rb!fCe?e{71MG&a|3K(+tG;^MBQ1=zz(EWT9YgY5bn|4f6X< z^RHtd6cPvYzDQ4SP%A!JB;gGh4J1^nEoOw6QPD`w-7Ye2r*=K~-`;t4MFn0_J$zy2 z3FDkw#T%P|yeK?lc&jd1YLj;Ekl}&F=heT3oDh4MaV=fspYyuf>y;*oBXMG{R5XbhfV%ZfSyKb zgg!$`N|E|0FH=Ysu8;zC(}L6fRO_pyK&g2M++re}wCU*V_<#^rU3w?KoQaGq*S%Sv zFsDJL+PCqElOvv3K~vlTyLaCP7N*9@UwEQ}ntak_)W+mrG_Mr*N?nmU@~Va|Js-m1U_=b>oMw}4Ou)%#7&n> zL#{*SFm&I^-g7wwbnTE;O>_X4Z)%S%6aLo4J*)})#1HCh#SF|%Tr z9YUqcX=9oeZxQh6+z23t9zp_Y3Fl9%;|ek2JtlMmckeD2I`hmw_T1QBrUD77@QbG6 z4g%{U@GMPsWV#DY{O->R$2j_wZotSS*Ba$P36mifj^(INim+JNHW+o3+02b}=32Q% zcOxh>rS_c21VbGur^%A%>yDiM9mbNW!p?XeIn-J2k|NZk6O`=QpOP>ln z=A?glDa)B5_A@)Z`!N6+*wa~1CZQ%6G`h_wn1g|hB>E9tdTQdswCuW9=Cv6w_bMO0 za=hGOm{rt$jmG_nSuVf}tks!UfgO?2ZjG5<;cbYXb^ThY`h!>T4-BX~oHD|bc3QGwq(xQ~Nm^3IQ< z8_ycNGpmJ0?9k8bn3jp^KW&d(#o%L3!1w6`CpfuUxnsZIC0{{64q}b4ITg2&xJEC2 z94i5qs~d1G&mgvO0fgFIA|lvsX`;BqFp5JZorjNyzi%2tz)_e|$w|Q85O78wGdTqJ zpND~M%ej5m1Yisu{d={0`84o!9yBQ_*IzDQ(s6|r6vz+Dm_Ymm7cXy-sdaY5F3{3D zo|LrvGYRq0`JI$gV_3N5X9omTTjYpZ|9PRbY_arw^r$r^0e-;vHD>2|9m7fjRAoDP zB{S>(xP4Q|j79cXAy+U@p`&yQ_4J{cSO&j#jr#%4G`LsJUMlwUa&H=93{Ra2`}x2a zR}nXLz$p6;m^LLLd*TF-k&c*4C34hMJ_8cZ#{!o4d01 z^Ub#=rWEyFv(XxG3gU^d#MqD_EZ_DUQKX7K0GR6SkH1U1vz)#-yqO?9?YTYfqks#0 z1QfwaxpLZ!;*mwui`A`uLHN*iuZI&EbA zc@UyOpx%eI-_;CB*7W&>t`xB6T?{j1H=H09EH)!WL*y{W)bd)sp=h5Qa;lh#NV+M@ zt+u-#hm(2{uEHk^)#0_K4l;V6n~rCvJrhB^ssmfxIX{C43|H zCmig)DLHoSzJWfxG`)UY>_pDTrM!OUhjTvcRWy*mSQGucE@x3x;Jo1PfJ$5~SKy-? z=1&}5C~55zV*^D!mMx=a`O$v@Fms65xBQ05W3>Rc6fzvW8?XVnQ6gOf8e@>ClP}6! z)XNSXy9>;kpO0XV8BAGoOn2UJTBzib%FILbVo#ZG&TQ-I?Pe^rqV z_O{S05;>yqmgi<~*-ldUDZ`uG;&|!7z52~#BU?U!Z(bp|0>%z!2kCLVykTXRN%(_h zwyN5fX~^f=!ht6dt)RR?wN^nqY9oC}pAUl^VIPL80dY-oFoE4`zksyX)eO8(;;j4e z1r7bHPmIp6GwEVl)jYS}T=5qtPDW-lL#8GE|5oF&4{kEC>AZYp+;|4xe4q3qT9e0w zauIVfks$V-xLL;1fsTOK5poy;Lf37dR)#w2hp!tx)>r-Rm&h)7>`NXPRy;*({t#Yg z3*OLnp6pTwW`bTVt+XsZoW#WHwc4=U?=rdnn#-HOpalKb_aiMMOOtf-6_N^pe^F2( zq`QCQs{G7D{L{}l#+WB>cMH_ahDU^TtOIYp?mBJ^T^l#Xu}L+IkOhsDKyd* z7!PSBm8Q9v|8h=DEW$w5gbovWZ=)&ce>?V_+8mEzY`k^tr3QVJ2xF`tH&5yvI#Auw zZ*j*@UAd>*1;v@C=@PvKCACBzE z4QH(r5#5?Mp1Y-5Ysucz&A4V+iIy+#wc+#%1?(+3Sy?@szX(&lg#(`nB^8d z%sSr9BBPia^1{J8#y8j#Jky0bh62Z)|V1RCg(COvi|TP3`lLMMXJ z0DiPyRxfkgF1+_(`Xm{FoG~NBmt=E?U`QmBHDVJ$b;v8ej+)!y7$luf)Ohz|^}{AQ z7!C4QY6sknRS%1wLyAPQW+&6wL ztul%+QwEpl-Q=KGu1&mDFSJxXbGGpfq4ym^gh3Al#IN_!xg^B*z zgm%Yzcgi@G`3B%&d4G0TCND-0$ikd-P}SpbKCHZnVq)sMUuxqsOLS(4!djiM$=i@t zpMiVcSnH|yA!9frRcOX`KILv|R3=8u_AoPhG}C4vsJ^%^j4`g{$-j*VkYQivZkig( z^>A7x^qOgi_GZYMr`{OwzraPH$8KPeaf7eG_@nMYffhme`_X)ZlCNs5cbU8V<*dv= zW3I{dhU0XUNs{vyHx$)3|9bgfgcGc668BF8%wa@ZBSl-k^u32(labk*+m=Q|XC4Fn z1{#y;%n3I*mmKt1l^OQ9bHW!#fl1fvbL)&ua4%N}gV8?s@3aNCty8RT(6bJN4@AT4 z-=q1LN|N7oY)R04CpPwo(UnC$oE~D*!1~vQhz(oyVOQg};js9LMDRBNhE1&TheTOI zU9?QBNkM#FVV`mC^J~g=iySb^7FPT{QeaP%!EK@PF2)TIdK_h~kmuPz^1i`%KtDs$ zNDv*zPU@S~!BbV6%d|f+{*q;MpTZ+glyq3Ol(ow(pW$zTYdj|EUn-b$G%ua&<<(>B z9UsR7p6ap+Qz3k_+qbFlUf79)%!S&Mx|KC}i@OYnQEYGKyWF`D zS-qp@w?bnuGoMG#w0xM8}k8QGVYR(B#w#%+yU%21O~hutAghrsFOI5 z5f;5BJN8`dY;xzOBhaQQr^VtA=3|M5B*f(ir(dSMoWiOY?uaI{j&HqATS2APV^bsh zjz3~A$dWqJkH~ZC@>7q&(mhmH`hUk4dpE`Kh_WNL)XKR=i?|_^+pVENT4+q)@zh)9ZM7w zAM?WqR}D{1L!bc}Bah@zV1CtF>v>!60`SvygI|qf4E*x#3f2*8A3=AJ6f7lWx9v5W z)sp5rE|Df|gZud2*uHuX6E)?lSf8J2vRvmUAU)@AJC0wj?%d|q3CEgo=F04=so#gj zV;ANQM;7f^I1b7)C)BZW-<3XzmH+q!2d4=Bi+sr_bd@m;GmorOk0GhTbo1+w3e0it zm1k(tvX-R-D4L1dM|!kF4YL>!dxIj^|1soLaGe+Jy{xq{4sk{$0>wL&nY8cJu6HZh>8@mn`d+T~&U8`giC;5T1)OVSU1WAeJiZ|{4nI(DC;2;r0CIyPe$C zWwg#<;HkD)yqkk%?I1)vO4R@TmiMu{c)Wc`dw{Zw(?+#*(Xn{FIU8cD)==ZVE`jhJ zXa60noVTgqr~FOQo*8{4Fbg{E2*biJo6z4}&C$l#`H#T44t@NtHs&mcAV}(|`V6<2 zA0XWY!)G_~#o)7v_wXMa5N zwG)4)x&sH;6!2oiwm}CW&eo`cn4&8F>ZmVOH&BHeDZ1fW%~`bew$2r%SMqc(s7_!s z7te#-2eoV4QdERjE?jD~2EOl>Eq05Q1L@?SkI_SK4_rCc=5|a@kKjiMNqivj$12vF znDhf*T|;bvhnvf><^{4%_b>mf=y`JiblvdfNa(M%qTFbFUENPm`O`5WyErB=uQ8z3`DQ za_sGi=Qrm`T;S$kD@rx#0hv!>Ay376{}g`K%|U6u7!B9{_!9=)j?gWu9bm(eu1oK9 zfoAn9Q!V|{-CwaqaHwjd^&QJWvWnb9*00;cbjO7}bI`QTl>gK0mn|GIH}=Tor|+0> zkEr5%=%=R|mgEw&y=%{=R+yjVJMq@3im)7`S!GgOdtrtZb|Ii0t;0>+CW~mO?y^W1 zy7??X7vtiL;CWaJcx$Sjbb7;8tl0JPW1fTcX8Sc#3Y}7leyo3aNP)zvqXjE~j+5YI zi2^xn>U{r-$@LHrOs;-_=U1DoT=H0Tt{eXHzlE;o6A<5>ET5BeQ1j<2OImBlvO3#{ zF1BXP8>XT9lWBfEf_{W?GUMoy93RYRR1iiYhkyXAt>I;53Kah5KlR%kU;MYxG43bc z4O3PmK`@*<52I!S_DOOHU&uL>ii9DJ;>wtWdO#J>zD;d)F*U;OUh4*YDbZJ0AOQCeu;auC(u) z*P;Yp@Y!@Dwt{zgKX!KO2A(PYNz8AR#o=26zrm0qw;xE1G% zHpP>#C@bU4POdeDh5J@`mRNi!cNwx9_=ckMt@gm;;m0~F)2cV+vX|6BtU8bEn><(X z>rD{Il#T5S|67+%3pGlaOA$@sWH@a-Z3@8ByPtlyR+f8D$dL8N$LgW2I&cZU*ZMN8 z7dl17G_>fu$ZI|Hp|r>6FKPz8)u|ENVQmYLr5+Gp2Cux#}l8Wr+9V&8)}zzzNlRBRArx zLQ6_%MHH#ql=zx72QP;fXHKmV|4Ek=5#ICHE$KG-ZcLntOu@(?9XvvM2$Z8J zfyb~y;v}jUddWu@NuS?!JcPQw=Gt{Ctn(l>9> zx?R_QP8pUi1o>I8r}RRdM!u*~Nl!k!q{==?l$~XE!uR!ptxYPono5zuCh$y$5^U!K ztKQ}&UuFACgPaClqC3XRVL&(=mYu^jj)orI-tsS%(Z(Hze)c3k4eRS=o zt*SmIF-*EI?h5fUIxT(&Pn=-o0qX{nCLt1-Rg(mIohF4iOO%D=;nn%afUWljMcO?) zgXDZGAz-K-VK^GP`~tCKL1B!v{Nu4?-NI0;bxr@Er>@uInA9PEkg0N-x?I|IQQv7i zT6Z+mld{`koIJ`h@vpD3S$SS)(Am4|P}NpCNaWLB@k#l@*z^wJYNnWx^sg1TZr6A5 zYD>i+uiqxt^KgDDOeqA7K#Nfvs66;0W*$YYxqipKkL;z@M$#Qc&$Cgs;4)&&bz;JB z4KDdUd%7CKGTInWUH2_ua>=frkDz(OP&{hE*(AjO=5j59A?N!~IjU%>r-FnE!hr7V z2nBf$&q3IMK$TG~>c*UClb(^EhZs53FtCvgr%4JJq8{(7#{diZBv-1U*mSeQ3%&A6 zE>ll-Yhf$L6tRB0rx6yuo^{`P)g=+-tFjRGxHR-Qx;Tl7wkxOSdW|8aS+wcz`FB`` zerDO`7wD&;<8FGsPp01!x1LNn%s?U2;qbg}R6+W25O=S;$HPm80=`PS?AwDjDd1!& zX8g$cmL*fB%4PR`HR-V?v3Dg_qKixqXBcp50R=>Z)i){ov6EEWTgbdVKm+ z8Yka>vc}wK?c<7g7a1LV@!V3=?6v?OW?zSPAo_d-|5i? zmiRE4s~39DV8EwOJ5Cr9PpHNCr~qj=IC19l)|(omRi+4k`8n)5QS8WezG3ghW5(@# zw5RpD!0@kzg|v(z&}D>)+3}^ zf5u3{-+9JDk~`ox7}!^f^?pQ$WUVzh_0bEeW3?D=p4OVPA_TOhqEeO(gE;%Yn!c48v%*kC1y-;zNg8RwkPz#+w92z}Q-^iZTE?2wmQmAtj zB5(;ww}RZD-&eFhz*3HC^9nr!SP+FUh+x@3@F`HNenc)rsS{SfuWeXIgp>>zk`^)i z)~k5-cO&f4s2_x#jbjG~6&~GnSr;c)>+?idBYPjD1Y8!tFwJ82(hM|N&8bMh@BX#4 zsje{th^Dv6;l)iDml6fTd`wx2TOGm3*F0{k`1lA*(I`0m(K_wFOOEX^1&;{J7QyeP zNm8mA7WRKeP}C_ao?!)+86629A#^=gg$fpWw2ATShmoC<*+A<+>eeF$7#_#TR|ng6 zF}N0ua>Qj7rjw@78_}07{~rYSoRSh%=r8NN+U`LO=Xs5sWI~yUu9nZQH}kJAUKf=c z>}x8&p{v$6X}5azt5*o4$`D!;$y4Lhu>FD=kKegd&rmf1nY{nFW>mbmdHckeHtoQO zF#M8*Fje3vRCWKc*5KKJcmF6w$@qQpk;R_z>V5fC;|il&e3tmjbim#ac*eitl`M>c z81_jH8>tt*6xzOn-qo?3B6w63>jf)+vaj;aZeRTLg~Q$)qz~AMyDQxX-oJcvF9tL6 zD5!;5e^@L`1{zL)qzu$kM_6*^Q`8Oc`F)tjfx>r(9e*P{vZ9X50;mZ3jqCj}0bb}Y zki4G-qZiw!y{wQZmb_xo9$cL?sflMMa7*~M5$yJJq9Nsv6N6LbiW@&dVd94xIMwH~ zPfCQYYx}-aD*U}raUKwBRFdn>b$5>CS-2>1$ad|#A=4tr>>8i-9a_d~l~@<()^brJ zM>V>qsV%pIOt4mJCKZD+x~Ni3J8V-^YjrMl5;AC{z*vzHM1y&iS>S^9-|Lru`rg<& zTA6UtH}ySkK2_botLH^QrgQfv*V0YB(26NZ2ko&pGUeS2TdlkOL3~21?G8?Q_LEdv(B&nRs_lZ@GAX=H%V9nR!&tGw27VP3<|;S{734v;mEa+ z&lqp`4m-^GA}oYT#1G*VZR1zJYj2viIkZ!(8&yrOc@p9aF94rU=em|j?Gh!<}PNqueci|I4k{?(e z9DociC>NloZ~PiFw~>)QT-6j)jr=HSpcNt;bdZZ#njBv6p1gcWq1v`)XRVW};T9(~NAZFz!+f z>EbJM;^DP}PHTdLqGJ#O?R;&zAZ}=q+ELc;D0pcXQRZqGYVcsc+YlMoi1y}731F=o zW4hJ`-<;23K(xJZGy^KF#9p=#Tyudt#m)b21IhH8Z*){Bbc(bhLbt*Sr~c&>jRri> zkuxQ!Mj z596@hm=wK+RN6%eL8t2N;*6SqB>_H63_lcot6jZ?czW>vk@c2QRfcP~FjCSWAR&to zkdn?tcXxMpHz?gocQ;CRHz?iRDcvC5aGvGf-+SJ1z8~u!WANN{<-F#cT&aViPLpV; z8CcZsC(9X;aayCx4Gahs?j^z{&?}}A_>P|Q-eVPoR)1JQ!}mT|Sv95d|~TWHLpJ^jcN?mg9S znvyR4F+>M0n!y#~^ei1VQx+&={;*|kPG9=&WseQ@NN zWawP`B%}JnAOg~YY!XMAv(S>g7awx~RNlFA8Nf&#FB3qTD-&ECsC6+nxKWQ~s=(4m z&3}nM__R1MN0w8QS}q%lQclO`pQJj#^;20vCqk1G{N1OMSw~azG^cYkc{Tw1D5kXCT?*ZV|oKeF&PlR-@D9F-g9BSAm&SlupgP-Ztb zcgGoCDwTGfOSxs#)pzD>-TO+H+z^99G!Nl=wq?N_B~@w8}muO`n)Q#tHCtHlb8Fs}M?Tri8z=ET`K^fM9;g zcDd6}vE&ykeLFv1OP+bWI+vdaVv=3T58duzh~u=pEpe~$7-ddG71vVPjj11y3Pzv8 z?&<(9Me9hW@*=>+nwoV8RKzwr?-~Hw1ps5ffX8Si%eTaIhHhV=ZbR6fhG$i9dvtXK zXhPiOzKQvY&K$Ze_trFX=H$IA;ubUXaPO#gMfl>DWx=e~#_N;97?Hc!`JbYNA2h4s zD_Bx4oi;dMfpX_=jJM{st@}xX(F9p`6J$!5!`2r{Jz6*DghLm3f@BG!pS6nJ7)Q`3 z5qX}=A=FrpFMguOQ4|wXaqL-k#kT%U7Xt#_1&(>qH~wP9*B z7RomcSBl>feS!^lno%#-!mFSQqc!tzR@t!M(C6oTSzP~LU~a_pW0N=&tiP0tCP*%E zmj4&e{qvMXpN-g%o#kV8c1&{~FtdDJ^t%m{{D9dNT5?Wq4fHw;()48}I1+w{txdY~ zVAKx0#)5(Xx&ggPBgPum=|R)--g=+hnNi^2mQEThqh`Kyxg2x+4pNsTWaY?>GG+eY zkhtfzN^&n9d-oMqB8L1Iz!#jyT&zQ$o~(08>ueE{QZx4Kg+j`WCM?PnAzgfg(QA-= zE9SVOZINXC0HSlWk+&#QRG=l9L10nsMoNelwEAIG1++!gzAUHjy~(;n$Msvbe}?`r z3J=tV(V+g^5VlU*uulTjwsSahE1`>_PaJ<_?LAm3v^@Mv(A`9bTsc2Rf_4n+tatLKqa>xD%Nl8V17;JXWfK^qbwL<1OkoO9e+7Dl38PiT#gB z0T@);7M|6@?B&NALIo1{*vx27Eu03`o9sMd!z|zP_t$!(^!6xUm^llElsdg&6MQOC zzd1F)fexgBk#K9Cu=s5{D)q1FJ3l?9@WP7i>{3H_3GYP#UxCgh43(W@wS|WO_7%He`nLQA?&5T^6&6q~O7Vz99^a^Fc}-y&nV%FVD$o-rbfk*n+Eic(iWhk{ z|6rP~0-LNm&OX40bFW4xJVIhFR!=knzptIZJP^xRLe$i5Kx-D$8pY+ZzfkT+)GdCP z(~Rg!8$an+%F}oRKd2w}Gkba(g*nDNb^}jlY?s!Fqo$XF$&-f{+br4;1rG$j<{DO55>RhtgXNv3HRaVe+ z8iMGm`8nn`KKj$V-g?&^E0Rg=>LN*$Z}ncVQmYJK2s&k%)Tx34I4s4ECq5&okbieV z6@An!OIFXTm$JUalzFh<6~C8X^e7DznuI+#tR5?}MznF+g78_}sEwWi?vv$9X*ZAn7iT6S`%WP5iYrK~*#xF`En0TVTlY`S^&^ z<(?iS>z7{vO+})3J%TB>hFs3?Pq^iZNfuwmPs!=a$84G?t3si9^nDbF)1%J)jvX3r zb+HboAw{>D*l$QjG2vS)q_m~8^Bhp#QHPhR`szbo9lZyEH~f+zFqbwm9E?MX1c;vak~(95!M7LormGBI6_{ z`VM0J#dF{J_UI`_I)Vubi$)-yNgL9OPszyW**0lev8&x9h$mr}8#q$aFJ5b1LdP!+ zx|0B4Oj$l7unA!HLB4sVRyjkpiGtjh%MI`g($Nm91_eG8yIsdy3s!(mYQo|t)~piy z*E-jVmKm*9%0+VP*9936Iy5l4Vo8yjW1B+wEma5R3p=Ohc&}rY?$~PqW>hGTTc@KH zg|A!zE~59JUgl}U50Y~@aG$b|JIRr@Bf_A+X7HAf8%>YD{fa%X`VCF9K_%_)VR7It z#Z0w~7)-^*N(BMAFLj(xRs$Tf6o>)%U-_^XfTC*^pfcw0bl^AkqaCA<W3=xFpk{@WG_liRDaU-2ypM8*h8F&chfyM!A zJ4sx*a+C7ITW}d08ySJEOJ?@nTl^^{Q7#mv z5)bMnL-L(0 zAH4-a8|0XD!hE?4CLeIGDo=k-V^&nEY{z-QbBh> zY(J9FYUrECLby_0V7@4&tkf_&$@6mvcbmRZb|$Lp=}$0=iPw2UvDjl^b~NKMLNYG_ zj2cV)R38ConHWMhn;QQfJ6bw|{H~2vKZfc`Bao(82}SEjb9d1s=0d_$>Ixa=&>^NR zMG1Aihi@8y$pjb=pno;7!AbPj0X2DOfX;!|k%x$JP%$&bJNsZWW$w0EzaZ6k>G~pi zpuwT`$Bbm$YBEuhwTz?+uexv>uBFK}&7@$Kfqz+mDyZNZO4Ok&Qu76nO zI$6PLnA{{oOr8>BxM=``q{@Y$Qes7I{(LSU^i?jdCtq4Xg3qkYjttRQMws6N4!19? z%eb!rs(DfIkevAP8P`oda*-fRBHhGg!IQkX*&|&*~-jLaT zV|Dw!yO5nUFuWfy<~HS(?Yr@wojR%d{zD%|Xwss7;>PTuGImMEVYgp&Ux0ZG)-@h= zdm(`K4h5vXq%3go`<#Q#xoZVM>MiSy(kYvF*#IV2qm%nOLMvVN5Dh$?-5BA73gqGh35S3zRmpz|N zW8z`K7YIPjQ}n04lHp#~VwNc6O&J0NXibM{=~b4`%(5ib>y4&VMH&jn0!8o5N}|Aj zimD^gfO?SL5NEJ?obb4K!54&bb&fa;HE5%>hZ*F6p6Y6b1wevkgCch(a)>CY1WrIQ z0NRDJUPWQPjS?TKuW>C}tk!=goF5em(ie*0yQDC3aoRwyMl)a-l4`$&MDw$5|*v@mUYimZFoAgl7aB z{ER$DamtdEvxd;uVTQsgyL>nW9Sj%In;GMzA{&c1^3bJhHl;7{^9C!Ft9fhi|8|x8 z=Fe58hcHh5E$fnMx{t+f`b|CWa?kmAcn{MtVgFjR4RYKHZ9>c7DFeN;KJ&*XF}hz| zee3UMc5Z=+8-SJwCznhBuQ^@HL6%~Ze#>Ihd4gO#eP~}i-=NJOZHskpJ<=4Gmn?DO zXkoniz| zUt$;mQ%=gzp>i545BxoP#|RheG|wuK)U9LIXDYe3N#H@ac>%bazzx2GqYavLz+`_J zn-T2$B@CI_>Nzs~qVh~M7&!IDxla)^q|L;CG{<7I7KdS-t6iEQd==11wrSt_okc`eKvj6F1F{DwU?CcC6cLqL9vyD96V*cT?(YTp zcGokWoF}9f_kQz}-I~YaAIRT?hgxxr84&`N$>=X`VPE!da19%`02b!}oqz8MQ3!hIB8+v~^#5|jR z-e5RkbFwEdeTmpchJqrnZ^1QYXhYo+f2L|>;8b_!$o}h0+wzpb8XiIW1I6GfmBUc- zhzDvvRe}fz?1qjS-pGJ1Q%mO8s}TOBlyuJ#nEmQ>y!xSAK-~`zX5g;SOMIb{?;io8 z_95(|j*SbMiaIvsS~Z}xJ}P^<*XcpR5CN&Tj>xr94jydvCNDU{!W@u?kN8rbQZ`M{ z4fEc_VT6?ho zNI#3(N6!_)bzWN0j7Ttl80|FgjTC~b1ICyG z@4z=aBq$L_85KTtl?sg@{;JM8XtiG}2Jcn#Lj-<*3?OtRj~#(Ka1nYY`OS#c z%fv4q4@Ucl_&k70*&1d0<^n!o`6FvCNG>1`h0O3)LbHa$3>b>rcnx?zJSHATzInTu zH#|Nmw2LM7M&p@}*87GI$}io{N1$w-8VCh7I-Ef1a}2dT=MMxphR>+s4#R}{U4ZLX z1O*}*4T|+oDvB@h>y=)!zg{$&;WR^=9*X-zT!Xh5L+yZ0gj=ATk@7m%AjKmfz5A2M zqk(QX!p-XEjhQt%cyy+U@0lX%fOitzyA(zXy(3Eg#i;U;OopUDEAs`^Jy>Df&jwIh z0z>CHswiEjm+je}c>TogB6bCcO*Jw#SJ=n_$#fnMs0&_K(bWKEYoY0WO@*BQ7N@pZ zE63aOvX4m-v|jasw&L}O>$sEeTNG;S1CrR(Fw!xNn|_}=>-bF9w`ZAfE-KE({NJyZ z+OOdYqd^w?-O2VfmRW?6A8AFD(^+R6zaMmNG7pWk>EP zvlo^cL>(0fjAram@zt567&{Q=9g*Ufs9#1&6Q8qooV=)zla0PW{~AhOPi^JS8SKO1 zeTI)9z9s{7F|2_kqJ~JiikaRlN+kUSOD})Rs$0e8Ka5s|Ts^^Y!wOspeOJVWjr`#vYi_$XR{(H?W3GYx`ke zr=ohSUi}Y$SvvzqzpQU@{+_lMZnLhWPD|@zQCl^wEmZ4>^CtOfH zMzH&w3d;B4YED)y0-rUJ&ECT6bUFX?xLuLjr_yKQYhINl{0-#Zu-E{>f^?QQ3p?n> z_wSN*rQt=rB!Cw&EXg#Bp`@f#C9Edy^2A{VY~rn+qhvwM!TuNt zH6%7?wEGOC8<;^eV~>15@DEszMD|5j_;b8yR+PWhy8?v@nyC9feRZO_Wn0TcD|%ue ztX;6kLEc34tpD zj!dHjUqC}t$z`d2pGJdAy!3a@IP4!mRS(`8=bPLPTe7!rBxc%sA@*M5na+miNx$ke z<`uyF(mJomElDid)-4w+Pw17YZwS=GI z4IbR1W`Kz7%&ZMN0AN#X{jBdnIY<03{>7I0eP03-VBsIyw%uAIZ)UJ7^y+0-r*(n> zClsOEj?Yn{n-^+am0Hrcegj9VTPKiF+ycl@rLbt@cGV6}nNxTLrFANxZQoo)pJGGW zyrCnELng7_`iFt=#6>ghdWuw!2dtheOciew!~`9|y<0V7lL5QPx|XH5E)(ZmB2JS~ z8R%2@%|D9Pav<4KHt%%?x91@i_Df#b1lpf+nCh@*DsCoVj4-B7uQ`npidR)*M>S3^@*) zUWy2N4f?RH*(1CD9>Dl+4)aro8N~MI)ZmK z!D+5on7oy-m#M`|bjU?`Gev@d*-ghvCOfrILS*(wYPpiUJzF;5& zS>*Jd@F1pjamdHoZeBv-Skvj-T%NUwjE}78vSnWm2p6jEvt&@rNx_ysGRY<4WXP3q zI3@K}bG_5EWbMPY2-sKr0oVk5`3Isc6?h_NomOIi2pe&k<=zwVB{!VdP;I?tkG($h zKkevLNkyEmfG0{E@97EBo*E{u*h}xC+34r$oXpB0{Jn;E>s6Jc2c7h$b|uL5LI7a}M~nh=#HH z9+nv7O78V1TCv+U#NnHc_vz6uOdl+MYHreMm$eI=)s`{y9$H>MN_neIop<$~x5#ok zJkKT@#l~_HRWd5Os(vA!X8WwsS=RJxSoj?0U(_S=kO2hk@5kTDEQkvIZEj~s7e%6v z_}z03EaXm6?Zm#JHveWF&QeEDza{i^o4{JoR{DG^7VI5|F!ZwqyF z&>`_U;tg&zd0yB1tpF9LBp#MJ-7^Y1;k__`1bz!Ra+#+gh6$U3+mF_Zo3uw`4Ao=$ zCoUAn>8F?O^nt$X=RS^(UVvfPSSrQwAl{m>9g!|q#cBS2tp3eU_Kk#3)N>p#W;Es6 z!bDXr)Oke)P`_Ie7kEE5@9FnBj}LFAAaC)GcLV{y@4(N3m%_4O3ORSheQ}0fDBjie zXwCSx>XTm-&Evk70f$!n^n?#d`ysxr-Rj`EG>oH1G^8f_qVw?ay_Z5%c)2pqHQ{as z?9$HMiq3aM*$Oi4;)+!#s4kg#$lHM`8ZK@Iy9t^iV(R?u{^76=;~OxSe}EpYtZXYI zn_sKaxLiyn$51T?$F%Ax!;qF^-OK!ZVGijZMhpec{4Vk?Hf3}CI`Xxkk!DBd3gYUu8nz`Zt zqd%xt*5|B#i_c~;?Z;3!2tU&M5se&bLM*_HYP#LM%z?D} z#b7K7*_g9u!aXJg$jVbp=ETU(QqCLw;W154lzd&j*--1wJs4lf(^W-sx}Rov`JYHY zIXnh!1!m^!%t>We&Q$`4$Df^jqAk#b75QUg@Fivn2wcV*6sYda3fcHBo-b{08aoxc z9ez3&+bN%2yq3FRg1k*$h7Z?pnSW<+USa?o?opf|sJ{T9)RLF^tTN4gCH7G1NDZg} z_uElQz!(jx;bONEB!9exxgz_;|M~~Fndz~kGBAqlEA*EzXhy3?+#^9y&diEh zIL_v;kS>jXe+7BOI}LXXNNE}?gb|0M(PCy&d>B596dTtZtwr6CkaWK(zTCtuA*{`A zO|hVO<^^c@$MM2&jzSqwu{$llC;jz zA?;kaXp?k5=~VejpUu<5F*0D|0mbCp znN8Qrs1nol+-HZaUC%^YplGZlIHLK?XS3i1h}0eK;BGo+zcSqIOv@YJZ_2|&ea;2z z00osVlxpQ|uuuC>IF@^{FDdOYRHI6?_W%+76N^uF96nps;5K8=?v1RI~EqEx#>;~bX`O%1!Dri z+<=Uyrc+6v1}Fwu0=Xj)uKt~ulH700^<2bx^INiF%V9)D$Z|f%+X3?Bh8dwdsNY_R zpX=|5blRVUAU~*Ih2zf%NenNn4XbJEFsS_m9It&SP9Y5y2FP{wM)1wpOo2SDx!tPVeo}c>@WDBdGNeN?@^z|U zqkEPhJ4;Jy=-SS!_6fiR6``3Wx+@VF-IB8qn50PI_}c0F7x~#UKE|i`%rEN4zxQVN zF2W$Q9|z+t4O^qCan&CMfDUl&X7_6vNtXBK-J%k~)WHEQ2~VoY-H~UQQi5==_p(F7 z(Gm{a=eV}RArj{iVpsAn>GZx8;!WVSx}DksvI1s96hY7}*%P0M0#0g&y2Ns7vZlF7 zK29V&^{9+C&A5zq!?Za!TbztEaN&$>6|@E(0JeW=fS~R;1Wo+}iYBxKA3IWL% zYF4(Ta|Zq!z@bg#&l&Vvazrot_|2V#Qf7}f7&fC)dxVQ&MN7Eh{QMHGntQra-pvHs z@u*2m{}gS9uuYRfnp*drQ~6qUnfO;tZ*~pE)}gth4bs-p{8|V>MJouZ>h@lJ3OxkT z1R+~hZD`Ge^@G*QkAvP3p%)b#U>F*}?&5#H&sR(e4MjW(|H96)_Cvbz?HkPgfe?bF zXeNWsrWuL;cZ6?1yO>o7eSH{>vV<0b)4^KH#m!rS8%Ts*5Ufn0JYRS=-@Q%CJ?77T zJ)_KjTvjH%G~AxzC8X|-0Wf>*HK2tbyU_*9Aw{m zeVGRqYgk7K17}&u7rS!r?q4Ai9hh%Qs$d(EV;nyefBMg`g7XJ9gf)yTpIuR4Hg6ha z`1iLvN01Z$dbUo9zAnb#YTjj*8&NKr)tTtY8|3{Q-j=qdr+1~6g}aL=#Q*k;jYLgZLP!gT)uW83A54?LdcNJHWu1oafFKT2 ztP-q_-M`;G*hKPuOV!%G7icrZxjoqIC(hf#L4llAUQ(pxCe2k;&L?#FOe7BXB`0CO?4`HwA1_tS(%xQ8r!Ax)>LiSx4y!APDZJH+X zDDsL?TIj2_RYW~jyLrc~qkqq^I_#Yt+kgs8lU;8w%qC0n&verf{`l5rIi_ajm=<2^ZzBQu5T_@~k&2rpxyKcbqsa--#xH8fYZACDxBIVr zh#4v&0bo;u*KB@a54lc#&RrQ@P<4#39a5Bzf%2G*5;&2a2QgBCoHqf`3RzV1I0*#5 znEgcS9id!kv8+W0>kaKUtjxOPLK=sBQ0GGoNnoo>IUw6W>nOvbY7Z3bHCinE!OE`u z;l^Xv*0m#!-0%A&r^H$_4W?W2zntDDPmffGA3NjT()|_@(@RK!5Bvu`C07~%5}6_L zdAb`jE>;7E))OJGW`$FVkBi1#ADm~rQe9t-%k0P1JHt`knCjwtI({yFiZVwckBTMa zbG5mVGyZ-p`a_n+1T==mQbQ{5D3$k8JNgmf+h>mFAw=<88-4;HhO2p>&e&ntOckYG z*-8lMXVP{&#pi+hpk(^sUhpUZu^2Ap>w;_Pdg&6xmv^50>JNY0c$43O>On>+B;VNl@#~VTksGLaHQL%#L+8>N> zCKR$z$y3`Wp_ULQY<^atGVdZw#EF!qYdP-={Fkd7V2gN*$~qM$X=clM5rywdU_l}{ zM}IBuE|DC^8Z}4!!`I5+wzk=MZyWiz;41)`%6oMiI@qpJ^H>+@1P(kes}!dgmrErd zOAcSC!W39Za=RM1t_in<(_oWe1MRF!c)d#y>OuajjOV>%E#{p zC4TREJ2i-D9M*(RY-foS&<+4X|O}HaQ!&l+=&jcQ@&z8ChciAa88?Kh!ta zI|xTuD$&zWdh3BGHCKVfZkpExgiX68!B7T3!-22;=Lew6eR6|cF!S8Us?3%h@p<~I z0K3>n+tf3fv->Q zaG4+Ln{vI`tjB6V_TxPyAOpHz->fUN_JN1SZxpr#A%l>ukL(BMZ{7iuU^FXacZ(xe z(#f)=0&%UA>X@_4*8izF$42GS)>2=YUHCQ77f4e{v&Yi_4+i8Qk<{^Pk`B0&*CNGZ zE{()!XO`Ige|_Du@`j31b^^lJ@+SL|xBzR6f!I3%L+y<4J8B1#H`~c)sua$Zq%- zAkp&nQRDWreoRi~9LquPxie_Xj#rh)u2oe?`>$OArr2T504c&5r&S?)b^#+C-31>2 zm48LFGv&f(c0kmAsLgBKXcWW_tGqXZcXg7=Nb!b|pyyoP=O#iNgq0PkGrg_Ls9lUv z8?VbvO~k`J7)}TGVS9QKZ^P#zCN+;Nz<9nIOE5 z$9V310;WPNW$Y^{D(Ay7B5mWi7O_j-JnQxoErZau>Izl@jH?s-)WUWd2~an*uwm+MwSVCl8JvK3ysBluyqgmD+TB|Xxx37>W&$&^wBxo41o<-=o z!UwS4(y{E{*o_-S@&x>^S3duncJ6?=?yi!5!=fAnMUf_3S7UtmClI~w<@vFEv2rV7 zz87$3-tUr1&Nd~!j}>0^fUm$>8tFf*e1IOZa;F!O z{PV@v(K)Ne^SjoyUkpj>n)PBKI>uI3oAIlB8xxpY^$LY1msfxc-USk#nc62!sf zUh4{J6R%D;xJ1=Kf+xc#B0#Mp)V<)a1GnF*;E>w5;1Dp6mt~opYS|374wnq#HK}HL z>lU!$>UplGE|*+o8foc!wkl?yQWydPOe<eTK~(-ApN}T12w`6g4b%l&fPh*&64^RKylSST;Su zI5tV{X83&zm_G^!XkApg@B)Bl!`DUU)$c5-@`Eg@{Ff`zpBl{%Pb#rC5g@<*L!J*2O2aOp^}A3r7truXZ>b$%*?4Tqa; zz?|c?CK?ok8*_C^ZZ@%aTq0VP7X>@na<^x~agNb4Zvf7~H4{?&YP0+NtEU<;ZRrjC zkUo6DO+VOHqqfOumGoz7$+EKT4PN2ZnlWa-XO?&DtXUO$;a`>{D&1aXL8=c$o-tVD z2R#fkOk0&-(Vdpwj(*fl>+_6Z@Z9A9`t~fNEO9PNd>&JY{BX)~8Y017I|a;i)3vWR z$##J=W2}MrY~k`)+DawnkmcvFRa6nSYbVoVY3w#J;=O>kilt7;NAJFwIHch%>eU4W zZ)=k2d_|H%iz6w8*$6FICu^qDwoAEbo~@?sIBBVD1rJF8GDtT0S{hM8h)scHQm$I- zONg+&GE1zlFZbGZeyvD#nDOaaZ|mP7EPNlf=!MjJu!TXzpGWS2G}{1`ih^Jbpn$q4eI0$~I-BDPDv zD>&DEaB@u(I8rVN-FA=KA17X1<}^a3PO0)eX8rZ$Hv_AqjywC}OIAH?y@IxiILWtW zQrfhq2EDpp2f$@C5*%GD3BTzV?E4%gi^T5r-y6vJe#i$aLPMB!2wXb|fc$^KSp=EJ z<`a`QgY_Vipl-drzexD|ELTq~8lR&b^ELvdU@8Ba#9x}Sgol&UP1Ov+qe6w|?wLrS zn^oN%{*xeP>j%uDW?!h;-%Aue(eU#u?#qLu*uu-yay44n3yJg6-$3&#UjZFyJ4Z7bpAz;s3U?++q=i>~qk$B*iLC2cBW?=W6W516JTegM5 z>fe=_-O@fI{^F=}g;xlSp!v^^F!|y&{!MB{a`p@;dzbt<#=~@H^K`Jp+4(;K9Pn*` z@x=@!0oe5b|DVz)UB>YBaK7aQTomJ@l0PP0cA&n;g&&@*@jo^$vLb)DSynxL>Ztti)ygm+qP@?I|r)Hys_tZ zBw`GVR^`g_dFmlDD{q2>DS>N3xU-h*zACZE{gCttp*qAO;atzx;2SKb+magyMYUU215KPv@>|o@)l(C1}0kVx$su;ui z>5oE;zh~airoC%gbHmg6&Qwv1ceDYth1`pejCvj9wHd(E48IiqQ zzhqP`Q)8K@9wSX;q~jWN#Tp-Gx?hjAp&wA1Xz$v z*2PmN{RQ0KafM%hO4bQDnvdKHvF>+xZgH$_V&>4{E?7%{F5RH^679mRbL*7TSFHXx2UG&K>O|;CK$_; z=!?LwK;%1g45NmYMXRuA3hE$c5x2rYPdE6-_8YCo_ENXZS|8lKjFRiM#|&lFqq+MM zm$YSzm=h<1oVhFRKkDxzW*rm)S6pxIQteeZngLDiINJg7^W(i4-al%=1lwOFHX1(i z7J(I{exo|YTqAuj*}5I}y{tt19eIJdlKpp&9>rO#YIgyHP?|K3l-Um7HK2~tZD36b z+e$cJQo&l~`}8z9vcV=tKYSkzvFlhZjFRMZ+q*=iN11(I|QB(wT8kw6< zc>Go9X)*gXxP8g>G;Ch~acTa}YCce6)KJRZHl=!P=u2;8duRR6G-IZV1!gRXU0H-F zJz#R{s_D>7i$mv@QUibQ;g?yLbMUd}q@w#pYr_b*F zIoH7dEF2gmtd-s=%|%S!t@*@11)KBJbo@OQ?@ji3MDI1{ zzmD!r?!5SB;@n1B#p!eRH}}ik-@GwAeHrI6`o3Vc{`N~6*ry%5fWlkZS|6%IU*Cw* zSH~b`yBPb#vE79|0{(55NtEv6AneV0`&WRz|AZLTIzhQbdpCH5*IK#7dMl}q25Ie4 z`)2`X(pq2~w(=h}gMgU7aSt*VIkkho_qT#c1MpHv1G&s4Gn&Z*xxM1g+RwLg6kkT= zU%GRc__UpE==<_tcEKIvOiLgvVzh-OBVVrIa&7Kst2tie)}YG9yiJKls-SK7)Pp|< z?oZ;7ee=0(%?&feD+sJ1TptiiO@9+&$T-6OqmDBq!FCjh3PA<jGK({u07erd1eFO(na~p(CJCeehvDv z_05-h?QTOK{wB{ZEFP6b&cB_#_+?>Vi_ux8!67gr(KD0h%xjzNV=S5aqSW3a9WduQGDJDoLK<{D?;aJ903)zS3zt(qB`aI9S5Mj&j z_2TLWOfz=PKg8`d&%WoK#g?X~$EEJL%4ktyn+5F+Jnw~8vJZ1+udLt(_EeLKP|jJ# z*rzA!c?|OU9K8A;?tHy0=g9qTh!+yF@KG=aUuXRM@Q5F~vg4&YPg~?ZlDV7lv3AJa zUd;Iz>qf_{-0ethSIZzk;SbyXS=Eoz*m^4UP#Z}y z!BxOfAmB5sQbm&-+JD$$Z_$j4tdXE(%-&E<+x}yuGk)}0mA|J_C6cZGx2MwiE>(H$ z?=mJ$>IL($IV+qxRHHO8Zim1Tm&^F<7uYbog78DsrNk}Uqepz4{fxE?b6_`2KA65N zvURWE?6$rvHST3{_APiiuOwBDT7v>F(2>YsJCt8e3HWhtv%PFWDezmBu6H(iTO;FJ zsMJe1(GdDRptYH3c@wniY=RM(6Mw#bHYtZsEx8EUZ_m4W*LJV`63W)ixEDZR8e$ma zJ_ojnLg%D7kqBe8#RHaRS^18?ksY?X>T_`5bj;jOQVLHB&57zLn>fR~g?? zt9ayF8AWvYTIamGnmjs$qoJ;IEpF~hd24K8P!4~u;8Aei@b##?G3UEsO1zV`c9*)| zWA2w7HoFA;U7W!zwo~3AdJ?&J(j`<5bc})nUr?W#>-`oXy9tNQHn`N2Aa{EZm!W+rQsy@l0%6iSb92^6%9ub zFe|rlyU==dl1zdW#ewD*!V2j68W=Rrhz!9|*Q;m5m&(>Dd&T3ORP-&J?CK>+z&@$Ht5Ge^vb|c9{xLsMKR&wJgjjWh8IgJ!T?Lnp;THwxZ>$0jC#Qd-cl{|eYwmQ ze&>8?qws5md6JI?QznP5KfB`w=DZMieIu&IX~x3mb9oC6#8v&tf+cOR^uH!Z$Z|a@!;0o0YDUJO4_aw-Y}#IbdV#kd02|o&}OFiwN7C z!)Dpt!*jBsnW54rCuK7*qD%|-cZ7z1r+mjgq)|HpJhcq;1rWhzIh0_vA-7|ghLWhi zr$3_5lJ(&_#W&>M9HOF_ygyzwg=wqg-Me=i!pH1#hekT}fWypT2Mp>4q{!A48oUC%kpEdW?)CeqyD|3;=b>yzm@eyl% zgL=hWZIM_@pme6`?g^?uA(kq%U^K01VR|dMO0a&Q4tqsDlkDHEXnwooY|m59^A+du zH^a_VwolGlA%;nxJEbQdom zSqe&w!rQlA0b6c~@>bKKR8`(=gb!SYfEkp+^TYAKpe#{d1Oa1-JD^RHYshp!{c-(+#E8n1z2XsV@+JSUknff4 z{O^Urb9;5WQhi6Hvbpnd-x+F?(eXyz5!?vB0)F5EV-lW2gTM^! z*#MS2&l}NRp694nD&VuWUQhZH|K!yE0ld!VHw2~&w3mw}A*uZlyLjALdj9Q4R>R5X zQf$n^czE6dMN1U;?EQy;)paMJ{K8a`S*5JVO&P@d5e>mc3WQYk>i-75uKjv$Sqb4I zy-=8E`f2htrxkTj)gFA~=*x>ImXMB%yRB`*Xy)=ljFt1DJ|xM?zPYO%0Xs|}4ZmdTILS1}RClj7?e*1gF3&n>*an9RR9d)<){53_eo z!nL_=9_;D+<(XwYuRNPp=!H7I4)))@jK;@oC}Yjlf<+F`Oh9$AO|x%|NZdW0mw=Q- z7?Ca~a!&kf%!-EGmtPxuwOkBVe?D-va&@I;fQ#rg{<`y+@XBpheyjm!C&D3{&F;7{ zLpelUg@CdBCcbQ<`}}zp+TUI1XC41+&w%hKhub*w1ZA!e!z<0L zc}m^lCE+DBV@|_6!9k=hlNkg{bk4ufdW!c`(lJGEHv0wJCE%j!UT0Fb&wTz5 zVQ(1}XVi3y1{)-UyASTc-3jjQ3GQxz0KsN(8#Gvu;BLX)C3tXm5AK0*C-3`xr|O(P z_ZJ0JJ=?l_b+7K;dxN(jfI9}J_FG8CrOOU+U4I7S^9{8ygDa3Vjfrs&OJAjteIrcN zZJh~MsY&v%(%xi~p_n`Z>n7k|Z?4%RY{b0-AJRYI63%lzjopsg zkURjdL@Xa>l|P`=Y|%a2X1bOm^h?BL4cuxUBl$@5g>aW>b{z6D#9Qi5%n}><0EibA zL9Slv!d!=G5MQb*{MQ1);PMs~-wQ=Hq?4p-u2G@w_OjaA>&aCfhPg5o}u#%JFS zlSpW9z)jNs5qVjSK4zGEQkV$d3J3JHD*)FL|;7mn<+&_T#q~G5NZdF?Cr!UwAJmR5WEo}iFKP7BwanH9g z0&Sa7D3|G1kKb@YX;jLJHQBonNC}|Z)t9* zT};<=ia1WrQ@=}uOXrj96stu=jp!aA-2nB6;9W4XXOgYzuT%ZF|2;P7eYar*g=4c% z9?49SwtDm59hc`Bn5bpHesOCtUQH=0Yy~ZR&DJ9vXb>N-n%F@hQEINgjUctWCG%1y zU0fpek^@)7WGNr&{349n1{kb7qSxU`IeUWr+XBHr@wcwu%!u}}sw^x#8#RE{O`y$U zu}jiVOV6=fx0_w>t%>9s1qrM+da!wl?LM&%6+$g=tfgQY^%;{X>BUHx&)U!R-?Zdk z)Go&k#8@fB{10KSq{|NN^S*w|ZAXKqnkyVr`9oJbFGPU$PWMDTO3S)1*O8{B9kygx zj6y8?18iq4U4YFw_=aWV8&lDyY`Phq%y_LNwMj2(8qZv*|B(FwSML-8j@9va3HGRn zEbpi!Uz>Tz0t2X=0iUVhVdDPP1Qyqt_}t|`oz{ADzUvYUdw6umq>37R`vEdlY|6>6 z2ADH@TVXCiY7>ftRte@U{o5!QM+h%2tnsdfuR(GG|0f5~Bl@E8l8mCD-0EYAOGEO}5&TMX z&_V=o$0(8n?Zvs>Kf$~Ym_Men7qG)Ip=pD$NEUcK#~*U5*{oshjQWd+pLZzi8y|HY zgU(lvY^E(-xRdLY&$E0YOd;wsA`Nu%zVs=aMGAaB|Ekse8753@QfDNs5FD^XBBGpJ zct_CRr(E!bTEbIPxl{gYt;}ohI-cjOOlvZjoU&apqbCQfL3kvT0SgQ5{_4~bwv+$| zzI4hj@W8B5%vi^iG`0UhwPZbwSfhiPcDD@ndcgutMOtmDo!2_b4WY#{Kp$CNIlDM1$i}1 zjW{$762^5s4Z^07)OidtR>YT#j+CU8{ERrojQgYSKi6WW+JyqwqL5?*Oo|Ov=wNMu z9XP``J>hufZ3lRbR&#dRIZUC8XOT`x+r5Ec|IE{A7}LAU}DDd^#;NX*_)|Qfi-Uq$*tSDhQOE~fmz4(y z$*5hIG3zE)=nZc~Z4#0I?hYFms}+6>Lgr`>;~svOO*uZ?O9rykkH<}?yH}pw0!OSG zOS?M`{0xV4K#8D}5~!WlB-|%i0{s~i$Yg!sQyZID4ZPy~7tu$>{S4z|a~*?fzYp2$ zm+K<8l(PD#mlfl-bSPGOPdKz4Nu%!eef>=?y&6q&QmozSdz-+zwDQxhR+V@QEl&2j8cAKrEA+aK`^z5my1QP61?7;Bd?~kl z!y%cwZ(s};;q|x-e+hoGKpt5*>8=?%7gn|<2(X_h(5j(UI-6rF2P z}B;-y(qi~=SvxYy&cLe+}KS?Y21 zs^A!z5G`!ph~QX4s!{N6GxF#oNFOQp$#(G!GlEhxgwN6(eCwu}J6vPO4+obkic>z+n^Pl!;Asm#9Y+ z6eZaOyM+~!63FNEs-Q+Cs$*Mhi^hRYWHj!m8|+kK0fIMR!8Lnz z2tzoFWC|xopad&+Z{!~8B*j;r;n&m9KsqsxS4yKt50htvOQW2>Iglwa?tnOShf+EL z_?|d9dJY~Xdj0=O6l~rB-!~Jwr5pepygtJ<+I{eX+QU7;k*<)m+%ex9Ju$SVyczo_ zYCPhUV7}pL=gJDnRQl|$_z9k2`flsz7rI5zifdI%U8U$?J${V>Tef|9-ne* z>fpcLBCp5K+YVm0vH#84worTi0z+Ii@q6~rWKI9Sr3?^8vXyYLi-61Y;sCk!bHcw$ zm(g7h(c6?S;4Y)x1tlLmDGCjA8{3Q!QzUxg2$TpS>{uj~Ahb|<`~R%*LK^{L+2TTj zwwF#D#cEz(ct#0prs{^FEKdCh8o=HmippsxYtQ-uFbMJ55VD1OozQuSHXh6f{V99z zs1J7Z!orncU-!7}1}qU(E`e6O_#=hfWBM$AU`FgV`8=$MGLSwf*|g_1EPxpYkOX z=59Z-53IPnDvR9T$W?q8d8pwYqYI!xk&FD#>Y{p0L#t)-!9 zR^AZ+pv12mi$#U%7Sb+f?Xdv-%SoQ(sEmiX#y#EK;ptgqz!I~#9Lcs=JcwR*puY@i zvu(8gWn6yK8gU_$|I+<^s-aYN<$g-%@XAx}pIgB(hVo4B`pKgmIiUJQ{MkED&i^Lo z`F^`e?8Rq_Y~iAG@^7QhR=Ejb;6?Z=Mp+Tg-yF%kKx!T?o`EUT6tZ;T&2A|S<+btd z<^0!8vK|N&??T)}j+5z>41iDSq(xeCJu^RrT7@uUZ~W5+s)Aw=07z#7Pl7h+KWWi` z8|-@p1RsE0A`WO@{QbIQ_0cNEXC(*k?+9zxDtHd zuehA#m}(`*T)wCD>3SHS{36qS-*Jw6{&_NxO6*Gf)i8l__dowS{nf<+OUVqCy{rx2 z2}ZMayUFk)^`I$pVPPNl??m88hXnoj^yU|?Kv*#e9>*6zU9faB1TAkYW3k^0J9Jgu zj(dmth`XI}i$bXG*B{k;hFUZWE6cycR)upvVQBbyVDh-ke#~G`MVc+^=V?o+48HMK z()Nu;#Der6tta--mzq@&<$rYsW4Th3=09@NSA_NSa2F6;gQuTqK)2)fCtCkpxA)lx zqa$qi2i`mZTbhnOt-el=xga7YSP`Ob9{C*8+!*{5TU#}m3(t`f<1VGJyXEoWg*|HH z^VTmZ%YD=*VofnTjkW#9p?9b5{|EzJgy?XbSN?oo4 zO+TX5e0}GW#v*zOA2+q;YDB9|PWQw{Bz%hjFMW|@>Uy1KGVieJ-V+DWAnJ|`A=SHu zNn$*=R=|>CoE=n$Cx|4i9GznPGlnx~6b|@l94SCS*7bZ{6lSRL{-{8E{zpOne-~PU zZ;bI9jArp4?TL}69yeCP4ae4wNv@$h;;u&3;o%RwsDAzSa4r7Y_yA+&SS~NNCi}Y{ zz7-?9go|GpZ70Z4V8^%bXk2FBx68q_>XlmTG1CO6>!ommjH}wL^2jaLQa>X^0*M|K zXWgkRV0g1YDx%`wi8B@z5aZwp>YgE?MnrHWe^wU2YedXzlIKEV2LGUYAh^M>TDhS_ zHM)s9uO>ALq&#UuLU*q@tz4d%ZI};WCv55MdLLIqgD;hH*?1_h3c82ES0;WgVBa1r z=aK#XkW>Z@?l|Ta3r4BQns=dc>6g>TB!NjS>w@RRIy+2gSdr$fbw?i7|5DGl;crkB zw6_9210);j6SXDzlOO_b_(sEqavm!FJ)bz1ZD9P4@Uko5_h(za0zm?e%9}K64ptq> zT=*nJR2M0kh@oJ5iBP!z9&>tPnJ}Y!#p+vZC>CzAff{UG(s}&aLU^pLT_-5;B$nRuhD#n`R^xYcWe(8CgZa-efcgM) z{2{ljXg%m$OWpRA^%Q#}v;WuhR|_TMv=H$J)jJ`yL_4OAh4nZ*NzRP8WrZjw%JFuz zeKU9fW*(&=X$fgDVlPTtS8XC_)1jp={6I1fLdc-p7=nZp^>?5Zh5k>jD8`#HOJd`` zwDsEVdk;%6>o{H-QuRTdXx2u!(=m}1uDx*Owx)+|U5VAHrD>Vuez`v3)nWcQ3dLCK zKlhf=oM_(=?$6y#RRH2O_rqysB|&K%Z3K1Uy?%O4=S`X{m!mTp7%ziPf*M4f6Vr;x z;}f9!YZ-1=iKzGAY!n|T=V>J1=f4_Si(a2l&au*rOjx=jcv+I8+RAH{bG%I}OwGGB zy}RvxO&0GVw!H5ml=~(ba3D;Hk4Yg?Q`goeJlT7Bby6)cJ$}_=@)utW?B54tEl^Jk z@Iod*Nj5$W@doi%miFA`mi{h**e7dIE|{7jBoVDxd5K8hFOq`T0dX}1Z}*}<+hTt| zqAqduykIJr?4;LL!kP;wZ&NmxFX{z_TK~`4OVLx|OIbF67wJX{cs@v`c<7;^V8_7D z-e__a@jpk8?meF@Q9hQg*E|Fa^!@!!lJAe6%Njqg!HZtRZ^7{+;{rnMuu`@3oPk&b z8j+-m<}&W#ebJ@puO@+^ndV_;M9Dp|Yb63HWXZY*w@gP69J#*l&&2C-7j+9W@lb5 z{Q+{}_S(QA0b(&;Gtp?N3u4PFVD%m6iAJ`vlXXhW`EPb9Q725z)Nhihsy0@&whzR+ z`jkrjn>o8kDY3wI;RDfpvV~NNpNwIJj6iMMFzAJHiS)-c%=92_{VM`+T9&Qh!+!T@ z?GiZ{MK%JJxq`t3eri!S!k*Ms81E*Axv>kCgjKD=f$NX)YfRnE>%N}vUZ$1WezhT| zEZ1? zgnor?!6)U4pacFNMS=d`iZc7_4z!mA5KQdD|2FjX&!(ArB+()WStl0FSKx@|C*)ZD zduxqFx&m-So2Xza2DG(SM1q`wh%cLL;8piNk%_4_WY9^OUs^&+S>3r~$oh?nS!fC0 z`*v-@AZ_aX+MTU0|jN+Y01ppGDF2jxJ<9O(o_4RBp^J)5kn0#oU_Q76o}&0`#FZNG`;Llm<>uB zy%xG|4_XT-T9)E9O6e=AAZU@8qu3x1#sx~H zFVW5e)dASDXAnhtzPu`J>%^6lPe<_Gp{<&PN5{dfQ+gOXTA5wEIkt{}AE`ey#r{z1 zk;3;nGwoA&nBud3i!cSxfQghQO2G7NVjcOnx<2VM_ID9yOyJlWQ2MEcy5U#`vEhO6 z2+aZI{;&3PqOZiL?P=ba335Xybq5-5hz>hOMPEp`1f6-eB(~1=@7(+5;k=OCf$-pk zq)x0QM%capN_g(&edx8r;FALC6lMT+za{ADGl*Kbnz^dnnUGMUB5-C6-sTyTw1=r@ z5uS`wch8l4@%JwMBR$D@xOSscTkug=FJ_)|3#nynpxG1cx-8_0@VBNQJRh7WUaMHW zxr4-diPH+CJvR_s5p>->)|VAKAv!Vo!axb8hS@%x^;ZtD@-Gx|6~)5d-a&8`>fpob z{9heek&*OaA2V9r77VK69ElSSBpxle-WK&+{?br*nbjt?1dojkxcHo(oqb2{|JuOw zvoqe{j?`r_rfF9mcDtHCEFY6v0yYE90(|l6cesCFELm&;)W|SDVsRxv9p-JJ+%oGp`W8{VW1`(Tw&GLb9bxea6;~c7I>*hZiUA#cvpp-L4TsO4 zy`C+ujbvLfo0|^75g2q;a)he0;)!P$DR9i=yf3)Z2OlIfBJJ{jeBww-R6$$8(kIqy zOL+r7e^63SAjLZ($2jnN1U%OmoHWCG4U75xAI^ zVNKwWWz=Kd1LGDvs%Da_G?DvaYzixhv}BG{pRF(A9HA|jKa_$NERN3wokzh3Rk>Ue zp-e#+%ws0D^WixV%J0 zv9s5gzjs2hXzuo90VlAM|1NY6HFQ)H8WtDm+nz-7LCt}w?xISFDZ)}t4bczrp1nc*8`@BbKTinZkE6nnxLL@w8_y&N=`7&Z|!q|%;5 z(vgZ$EMc62&!9tM9O}v|CY}=-tuh)XZ8B>_TpSgYQbvqZVDtx}CA!HOn7+ zl1*rkEfN!?FG$QvMBvW)q5RV=dYr%6t<`+}q}Z{hw)*5T?U=Cos?}&kcE`v+pgyZS z7bE-+wL>IIRP0alx=(+#6kV9L?^`q-9$we2D?PPEKgy*0{upL$IVh=8N4YK?Fhw!~hV%)s&i;8@;CiN* zcWmk2O{yDK4v=aWJ`&pg;}TaO>?sq3rX?}R{qJyN^B4`587seacS8`~hvFe}t0 zQ-$DcBi>R-F*eCg+OK{IMjsZVXuy?9>tw0%V40~vW)bS_*r>hxdE*gqeN^ary*qcn zEM5R7*J*rB$Lq%hmy7QEY z`a-g+VM=2PgYD5_$M@XFEL7a1G0U3v$U!#q>4ug9pRIY>gkn6|_A#;DVA-j5r2jFZ zI*64VzZo*e_`A{V#t~-O$zx|GWCC!xt<1cKXT}Wmq zCFppqr3_3>mTC21e}0r{G*DsaA;SD#32W&WJmTt@<>KBSIooi*!hTr8BP5{%@srTc zk_~?8LUZW}zbmTSs7$Z1`UPAMN_>0KQFku~p_2tG1b@NVWOpf&tV(YtF@ga=7*oNX z&BrkT-HaC+`=f~^a#O7G+35jlFp>UXw|dGcR4{=$PpYJTLSv1V)NiR-{3;*}y~i>? z!dxx{p81P&u4GjfHtak5WLaL|L9I4jKf2qI^e44NiAGr)^;?2jD2j3fDo!v7%HNMmSq8EcGY-x}R)j(V$@uD9 z^uKYbUAiBqUsYTY(CaXH(P0+nUCK&m#pn6W;}T-GSSN069L0}H19305w3m!XPYwNx znBRp!^c5IX2GMxK*ylv8-*tqV^v?aL*HQ5cdOd+Po?M*H5G4jK#;sfqfu-&|$@zAC zYS)*=6H&$Bgbz1y#=~qRq3T=Ig2_EzZwmW%6#=}nrA}-&y9tr;#qD2tEQ!KebX0%1 ziD;CL#f|+nPTNUX`n(J(gGZ{?4y+?62eD-wM$K=oZfeT9Ur8}54{0XjRliGB2C(O6 zz)`u@-G+`9z#h&L!eNHrff1#E7^8HseO&aL>_`b&{50Cr_cugz`h(A$#JRADLUPr< zCM_)nc2t5)?HU{C+4c$9p%8lm$8n43^Z$(U-R{1hh_n(KS3q91pfpgRoi@+S`_Mx> z`FDmSr$8qbr&dOKpuj(q#PU7!h0mb1*7V>YYzdM2pSkPZosi9o_Q0=mCQb1lPqoiE z4ulILpvZgUNhM>rxCG(Q3ac69QWit72RNGkG9c;)TKoihc@oCb^LuK0257cE2tpOF-SFrJ%A@I$dVZFe zOQ2*qZcc&hmX*GzLdxFke2ap2Vr&yC%gl#7iq<9E2lbug`NDuW*uo2=f{@OjE`K4nK_gn=QQ=n)PvO`QrC@)B1d&yqilK1Ed{=sd4HfO6}1I7qiRsQG!+d zJ3bRqlAqDIE}3`p!c2Q7me!wfGohRKY`uZ_z00Jyc`pS#`SWfu<;mOM&i%DTd@dxA z3AWG9-s!va^f$M)fy-zIi}?Z_#NI1){!3*rehm9pFZ%B5TRd)X&Bm)wUYfg}6;>LR zSOSWI!~hEG4H`cClZom@S1Ar!Ou63`;jM4lY*|f~q)!tYy4O4PGQKVhlY?!f=^%;` zDlfA53$eImZk|g^RXE)SAOVW5C=YWbSN zyjhAux&424?hO| zHT)lXb}&W)g(9t@QBnnNr-))O8&;iQ*5HbrR_WbK6BviyP}Dz*hITTWA?4$*erdD*(DfS9hXXKRA1Q(Lm4>!x>f2i@OlaDj-1W|Xmd;Ke&1A2S_{i!$i^-ph+Mt&EbP%2%{ zrQ0SokBzTjcqV6o8tY6kZ7G1m9E0}j5|0iOSzEB3)06hMD;pR{VG~D(%P4Pp%*gS3 za33`heOS4ll(Q;XT-3W3V%`O4X)h9jp+Q<`OWgQUiAGFR--Ys74F6X7*vqDpmtHAE07RV_Q(3)UElD6$|Jl=As(T@? zhd9iPnQ__ER5tAtMYl9R829VPf!q&=nh)WCp*S|JNCs8?-)IJMxuD9jqo|opkxqA7 z5~{%x4stbflsFh}i-Erjxsj}mD$t|++a$aRd>(MTW^NAN6T_SaNT@7%PrPp;-9Xfe z@i#77rGnNre}&{-QVMOSmti$M8_5?Vf1tOw_lLj#>fCA%#Ox=H7vO!{KcPtDOT_4t z!T)z;kabav?2s%!JhkCKH`@5VhISCCdcq@+d4INex{{2`CrdC@xtF#~dB3fY0(-C5 zS0e3u$snUymbz89C}$}ig3EQX)KWT*IlK5-5qmY;Gug0H_Gv>)hu$8V^W$z8Gs_Lm z))}9gDm{exjKulc(spD4eq;Zrv6eLJKl<6!@#cGwJR;7NZyzW($wFU2cl#rs+CMtI{Jl-Y)t~9y^~#4k5M4=d35$Q!l}v{GS#>|JzPYyw5y$*5 zffYrVcX977OB>~VI}QZSNq$FDOQ~7L{}CqmAacV!%PFL_X)Fk{DCe5qmev$YXaiy45ViCPzinK0lVsj@u+o&C3EPH>ssfUiP@U1-p3F@4y!ny+x3TFf5(S zx4#m{il=o}288GCXTS+Y{6V1)VaITW2LES8Rx;pI2uF?)5G^R0UR@hZ_h|tFXCWF} z-Z1#KSX_#V24|q{=^Y^40aDTngQm9k^Vp2?Fl$4@EBvVi2ZW7{Et|Jw92Mm%E3?mS zD-T0o%ye4a{=^YwdHog8$y)J#5Wt}1Ge=d?^EO~f7DopCswPLjn5eee3WiH*`GWR= zd~DUy6f{Ac!WQ1Gm?8f=3>Ivd7yVpBWKHEQQbSw5uixPbN`6qi)aneStBBTG&U!iVBc^`9M#Mpz z6HY4Gm6XlzH$|D zGnR1{^%Q39t|ml5tZ`~4mXXmae~=hg{#jE;4dg%y{6-*kBr&$iB?^(q=DAEpAhBfD zp;Xb(Qe`5CIhMQ}zQX)M>#>~nPp#Vp7$my=vqtJ3p+~ehOQ@F`xqH&R@>A00x>r0x zpZ1hPq-CXvLajZRn5Bp<$E`KAE#$#UqLw)M5h=|#?TfWQGCcB8+aRRhrl`uf9sQ8B zv7hYWJi{ka6ADP*&i>`$8m3y`+uojd{PwhNz1$BBZGx|a!{_20mZtiCUDs_&qG;<% zJa&msHWD$-p!Tkhj4KgzVjc=%u2jAe z(#M-#%m3L4{Pc-jDmSna=?JYS{ts)Ui_wq_1l*<&zd^Ja40!Y{-!MfFs z4N+8z%XL4;0)or8a0ykK(lk{a>m$)B;=ruPOY7MrsyYNtvxc{}>$$mZb6#?Gz^Oys z2yyW}J*%H3_j$Rh7N+mE8-!(e!+4r!cNipbrvX3q8Mm3gFPkUPmIyM(a9T%38zXa_ z7B6YMP?WlviD`iS1@u!8nBJOL4{(g#dVDbgpO9)`%c1`%X^+`kYzi7yjkvd-XGY-Ab~fG; zpxKz(D(NBP%L;38bhTqhAJz^b-I}q8u#ZHf$vY@OBc+Z>$@bc^vyC1>zv}kslj?!p z4hsWvai6z%?rhi7!g18EH`v|3YoGmtwxPc9%#`D#|Bk(t=HC(=y8SE??iZozzm?pm zW?P!SF;@MW-kg!upk5u8w-^U*v)Z1?V}+C!ehJC#6?(=(=uL5bP^<9R89Rc(laFu@ zM+}nawid0nuo?43*&8HsotWdVAft6T4A{>u%UqV%_2n+Gd-=B_~m>YeYt;(w;&ms_Z z7-}r-EofqeF2HJ)a5J%FPs8uQ$d8SiC(b9U5U6I9cgMBHk5xSegk|Kbf0G40-t&p2%DwH>1O(q`AeXO44E{X({=^SPJc? zhN^w$drVb3BaFU4v9cH5#m(?DFdJW0lY{tnZ87Run5<7TUvkr_7JUKez`=H;P=K3 zcZ{FlF{3E7Up)of#SOwqZ2SI!Umam$nct$i6Cr*Pn5V<3Gl-sh*}&l+`7z#f0q_|Z z`ipnoQQ&_aNDeiS_QyEz;R!JdO(Ab7(|C6Ar zpR1|8HEpa5?Qs}dx^uz3#KjzB1Vi47hq2H4^LfU1e^|p^D=|s!HaaU$=9|A14&%XI zRF=_~uQ+!g5{7Z_a!)7N0w`nzf1MZ14ZQ7tBD1f{EnKe7#_k2Q0LW<=%Zj98m;?DE zxMzHM?WPY`wk=>$)5(=hTKZvxrN>CzIhs&6s%waRUM+q-yk& z`bUk874{Z-q-bu;kF<>^d4&;)dpx@2Vz^uvG?L#PZ?BiP8aEkgn0x(XxVF~G02y+= zlNgUTGbIFtMh{(`Y;-kU0z=mKQ9-wC86v?0T@HyC&VMW|&%zY!VJ{$B+m!7b4^FHu zk4zr;v1ob!VR+S58`WInit4?M2*4~QQ&w0Jwea2o7<8O&{EtWIn-5Pnkle;>H6ey$ z0Jn{a=zN(5FesHOo}zbzA}GOJ!^*D+@COsydjsgy+njhp=BWum>1gf|@Jt-(m;yMf zZAFY5VT$1#boP?}rkquvFoEZZu2OgC?P8;CUc)}ZJ8bQuz&kAYArfHV`!g7fI<*KY zuMVF+WR0Yn;~Pd7ul;D_;=~+WZ9zmDYvvr9w~>|Cv(NQoHm@h`S8opZCE@WiJ8UdQ z(^%hqZO;E02m0#JM37Fh^GYBZF~RO!>?cg`=5PftvBJnIAxa}lvf_Amfp3x#F6cEs z1tQ%~7KBx6m4hcodpLkQ^+S!;@nix+R-L*b#2;LJ_qqe^gZ67dNQLCWArCG(_Z7(F zGzu#GJ2a^(`ce(JH-Fmk(p$7Q9%bZb4MN0cC)97d`|0A*NQ^~BH}*hk6C(>Y0fTh6 z3v_s8$awigG)r?JO6h47@|1lko+p?o7zZvh15vm^h}@Yh{z;>lUq(^#V`IM!2u4W&)(IT~EH6z`j<^8?$znuxvEPF^4VQOP;kG4J5RM#eWvgFmmHrLjV z7G)fb?5?OL>phEH9HPYt*>{nIO3iH?utW-82$AgkXFFLU0ZNsgh-()SH zth9F!nHQ?+FVG~SAmTq3Ic-hfiXGB8Koj@$OcW_FL2J>>5w6o=oJ6LuZ~&ys$&-~_ zAa*j*HI-7ZSqf>GOS`BmgQ%eOqhqVsTml{=m|)CXI-JX78ZOs~g)qw*>xAw(zQ?YS zo29dy|8!No8;i=7&YS&0uM7@xW!?AnUFY(MrOwbu0V&qo;K@13LrzY53!;6r;lP$_ z0%We{X0OH#+lha8q1puJCWmgJjPHXI6GG6aqHXQtLx7^M%n^ny~$#n-j|OAL02 zNFP^cUYUejc+9!I-*M%LD$8nE2;+KSTEda;=D(%APD1-f7aK$*omRJB4>(X%Qt=8- z_Y6>EbrS8mB;K1=SG4U?C1Pz`Ttpd^Rlz&AC=jgkjXSOECr%>q9L=Hms|iI-OA{nW zydOd4=#tFF;i2Tuhh^vOLYmls9<0a0J{SD8Twe+w@pMbfc;w=ahF9Zw%NVz%3n>Q1 zm@FF}KBfo>FtN(aY9Y>njrpx6IL{tny;>{N$TMIH^H1ow*hNo6T)NfgC$;Zzec|<0LD;G z!{`^c5m^jIKcv+4Q#85F46D4Qj=oUqB=cQCL5)|T6VcVtRFC(JUia0G)YG&j(+~00 zAvz&C4gyusRCF{KUC5viPii_ps{*cM_&A95Z?jC%A?1TiZeQe|Dda*TY6d@dPmVH4 zVo)WcXq?Je9LqNGwOf>nUISWAYnOcXrDY^=sJ??ahE`bSq=WEm9s^sKzG@c3DftyPR-=YYvgZ&@D7v@l`dr$Gh+b}56 z`#AVVdRNfH>=3eA#Q)elpWgbN^5I?l3R}B+B1`n-7$(BP?lZ<8&$+Z7A~{antxOq6 z0|@5C!qOD07oXzNNBSrAuzbz4X*BwTY+aEHE9w8fyuxzdeGMVc>0_k=k^>Bkm)c~a zIg!s6B)fB$3_)o?7Wx~QbIE zoiZiWIx}QzUR-njjGlz6icu|*2>QPBW+R-A>MaevgWK>|8~Phl+i{H3G_oRhbgo$+ zT5SVg|DifnIw_OAmK1`Gwzf8U@#!O2vrgYB`r<}q!yk*d{h-M{IHm)4F9h>6Us->2 z+5WWPw((ywXl|3nk)+0GMkaPf>P??zS*hJ^ z)DTwR(7JeMQ@k|-#?JAiA8O82$?3PbiKcMttqe7gCig4wdvdJq<>%#S2Q(81>@zZu z+gSJ*58KmFxbV03_~Kz{igKeE3qmk??QmZf`P;LAxGw_$MPf}$X6>e`$-5n`+_Daj zjPgQWQks&2{zR8xY5_7ALquacbP`h^o4(X}(1v1V@^Sf|d)VuZ|Nhor^rV{JJf1X> z@^{sz$sJ9zydv|A@`G`@GgQUGe-6ElcdbdX^V7dBf*Uv-8HlClwWcWp}k;hwSsL)yc`WTKs^MTR$ITqQcs0_G&& zj)c~Jz8TW>+r5czv9``4Bo3mLl1A=9zjDs1Fz&km7^p!KWYFtA#I??LOFL1}^9)Pz z4;vYPvmQt-BVmvCrt4&2bHXex>R;Wjzl8KE14OfQeIIo1I-WxH{Sjt&5ori7bGe9^G9dH$BlPGE zbvZf8m3a0cWYAiMrVhmYv+VdfiHPZItks5s;RU=|Km4l|n= ziK#?51z+PC5@gJAv`c2I@8lV;_z+n$>)nJ3Ix=c(%Xf3wJ<#Mw>{H>ej<=Mt^~Kp; zZPJI^5EUiOb>;Vw?p~`u%_lE&0(UmgRS?xs`^eA&kYwz3=p$m<=y8oYbz}htSCZ7x56O0R82K z%!Mv70vPttgyC{iMWvLq85nALdOXYSKcKnq#&NhmtqgQFopg;vcjGnyp2fz%O<$FT z7aqnd$baR+>Si0>+j+pkPacN9)Y;9RMTlay?FQ}VcU30WACfrR`ZAOGeAd$j3>qc( zzo5Y`?U3_7h#wx|u-H^Puk1eO(Hci3ox)8WGv-v{8Ft-a$4*ZOf4j3pgWP9Km*2^~ zBwzqWSS&93QpYjI*1bUw!+3y=-*shEAyi79DYW_EHMkv56Rp-M6UH6DB4*fM^HTR@ zIzHa0?q@gR_C6lMFagrU4gV@vU_sL8gsWNN%eUwB;aSKtvZtIKr^p%fD>z1CPdlF% zzZs1`<$CShx7g=mGdLj%X0c2=kZ^a-&M?XniE@^oDgA`ykMoPT*BO}!(tJRBTetSPOH!k)7ZSW5+EUvMWu^V6gl<3O*5Z_fk zqv{oghRyPn2~-j87jwcOvFuXY>{+FtBqpRWLObfu&2JneRzo2g|#cm0rIY++BaAH)8G5|zJO8B@t$PAQ79 zb}3C??p_q10a zTKLhwL?G63*2E8@WJr^{)5dzzvi2GV8)6o?L;h5055Nj?II_GA8xdH%Kp6L&`Iupx>H9 zUrUj9{GT1@yK(J~`y1Ah!FOm6sKf2|$KJkOnlKj8lF|VKy=h!U-#Q*lvjpI1-!%d( zPX6pZdpu!x=V*HyJ zIiCZ0-rqnP$m2Hp(;Yh6ub+opvO^Zm_l8Bggy> zN*>BoZiniD|Hsz-UCAfgK9FOV|d@$pwCICrI5-BBx`kqLLmCeJJfb$Yk+ zW(aEV%DYPcV1E)7X~#g(P-mo%(cP6UOvPG5PS-cy5*wB}7UE0jz~maBmt8{^glnag zrS}qy=tXhE@sTC0;*R^5o`&6lLxgue!R+;~RR?AXlkCuRX;|;22Xabg9SXdkjGnL2 z-IeZ%a^XG0mttELAIIE?S#ngY({PR(fe3=EoP8X6vEH+b?r)aHU~C091M~R$BYgX3 zkslZ_duZmV7Be=M?x+3?&@On{%4~ zpmy8hfB&-vAt&|C+u&?T`pgA~V)LnsF-~Kfw3Xa#rT0_hdBSgC*^l4uS38T36?~HA zb2Kx&17-SkWc+hPeh8wsY2%pyN+(B`&fCUTzGzRvqr~;lic?BOKf)uN-WRX>4tYIK zvv;p0b0$MkUXAk% z9-~rQ_A!AqDOWKf;SlpwKNwKg5$fXmy|M6tV>J_L&ye`+T)S(oZ%AMn469qkwRQmN z-M7i>v2s6(e965aH0w2;9t`3|32wE|LYxo9UXg~6{wEO@ERj0EQ19l=yE|Mv;KrdY zKwv&y1&Tmc9c!+rP0dJ^Jvni1#3{{LE0D@MqA+?2*YQA57qQGF1G;7(rSt5fKMie3 zmSQ{EiFCrvob^EexCLv+{%}V9VfMZkSOWVA>$FpGuHeKVvHUo8yme7w~=y{f$a_lq;Mny8HlrSrfE5xZ_HS+X=Yv9R6|FK*mSZ5P=Ete8?u?KoZ5os#vldCn#|Q zXyc14!V{1}_+78D5?9zDzxlR4ZW`PmOLN;Kz3%HGjLzgU1J<%x4YFPr!k=*aq^i~p zGKOi0O_R(Ga)|$*2P?u2ayxdLF#sE-D4a41OcQ>1Y$OH{gt}aV9Bbgzz~)n!9PSCN zRjHi-+HivmY@&q0qKyG-5CV18I0>u^BesbI7H>#}#Ku+H7T zv_UpxI1p7sXWUl&3h9IAEuq$;uFaI$y3>roYuS(=9rA3~8O{vR=>6!lev z-`jR}bXd5I35QMr(4Kf(Gbc+@xb3)*fXprNY-S*pGcfcC`RlAP}YEVmo z7px2M0ck-UIwq_weDdNs8?_1(V)ex}2!YgUaS~V;Mr;!aEZ&d`iH)hbU=nzne{(oA zjfU_IE_HbOzuCEh_;zJ%*0Isj0TZe@c*mdN(t!{~5aOifP)=Ibs7*cDAj8$@cv&gU z2~B_9t>F!_GMv{S!%7u4v5P;VLAH{^8)TQKwLun9ERk%GwIYxOp#wAh2KgX$#3KEM zBM{;k)G(^19U>4RJ`LO?x1lxz@O#^ijZ_p;83m?UYkhlyq?i?#4o!%Q>Gih^3&dOn13wP~L)|t!kqpBWfgeKd$ISn* zQZ0h6XSHcda$vD0b?#9D^eOdgVP@<-sT~L2Ad{3Ig_T=2ViKehrF0g|2$SWByduFQ z&^)M+@qlN{m^^C6j-9t-vwI}YDl?3ucDG!|+~`af4R20^OA~wLu}nxfH001=ooqs% za&tu;ULH{ZA=ad|yJ4nsayfn)>@l0Y^Eq@jA}Jw`Fm|DRsrPs)8{{h>*A#WB(^?$u z)8cwCCoDOFn`8#E$0wpZN4e!K(Ywp+^-nP~b~1WG#hiobZ{hR=jv&>Jd1tZP5H|Z1 zijHEV3n0Xrw01hC?!jgFVc}yny6S3nY;-kF-fL5wfs{AMM;@nnxsNPk1hw_o+J~sW zwd;$a84`p!J^VSi33}e<9$$*1ca+SP;C+y$f2O7rZw}+y5#p3ojkU_So%w0nGITb`=ceRedD^m5uKZOXCF(Lh&?B1&s;fF40Ag8O=pCIdhx85Qo%)G9#msktB%l68md4lt7V%<*9mbr51enbi;) zQ#HEXDD-Sm8cMz#8&+&2u>GVUED=_bUzn zt{(K@ZX(kY6jE~(*h%_eHxg9S9AT?-t}v~@D`HN9I*2(zLMV-Kk0@Q79MDolq_oU_<4&%jW($}Km^40As8Zu%Pc*37Bd z?IU^A+2e?`b}E&rE6oeolG`FryAMP%LJTOgYQjuJVTuaV_3_6(dSEl+?Se^^PZ(H? z-sb6W#SQX)?Aws+n=K}ppHLFwO86{tDL2_9pJB`sN(@6zNWk0#gLl^ii7W{fGl>=E z92_XlEGdc|3HoRbSLs-3o?#0kjtyQ9D948odnBAkP#D@&QE0v{{y_E`Ol7`8vtq({ z{u;~#*D+EyDP2258|3MSlhQsRuNeZfLLZH_4)QmIBy0$Al42j3G9KI{Bf${SDY=y< zdG`yH?U>3iBqj9|W>kn^?J^D-^*DA*G?qF0#ogKLQ!Vr%$jt%{2*cG$Gn5Dm%9+Ea zF92m$C+7@eN68{V70uoaj+N#FCb7N%m;b=6=24g*uOV;I3=B<#hbDyCy1?RB8c1Os z&IA~Ht146?7*zS|W*ORONVR``yQVY7_Z#mC22kGYxT4AG@qVldyo(^4yhQ% z{0#fBYvXtTYmaZ`+6Hk0Lp(3^F13ta{}eN0pPO)I_MfNyGtOtpF*Ov`;DS&VrOav` zhvq*t`Hq}roTKX;6fYYlVX&puX%de04RYcjE}^QYBUp#)LQEJ15t0zMK?Ebjr(^9V z@*K3zV5?u&F{fv)hs4fsD0}5Wu&EEM;V_OE^AS0Hmik$BB&ed=yWz;V!36<{(jT-P zq#Oew_DDGQP#D&j6_~DrU-apU&)1w#C5in)Nvt10eCM=b{QpAo!2ggtJ;(q6002ov JPDHLkV1kz^JBR=P literal 0 HcmV?d00001 diff --git a/uniper_hmi/UniperHMI/App.xaml b/uniper_hmi/UniperHMI/App.xaml index 4b8b9c0..9890229 100644 --- a/uniper_hmi/UniperHMI/App.xaml +++ b/uniper_hmi/UniperHMI/App.xaml @@ -1,7 +1,7 @@ - + xmlns:local="clr-namespace:InfineonHMI"> diff --git a/uniper_hmi/UniperHMI/App.xaml.cs b/uniper_hmi/UniperHMI/App.xaml.cs index 5ea07d7..4de6837 100644 --- a/uniper_hmi/UniperHMI/App.xaml.cs +++ b/uniper_hmi/UniperHMI/App.xaml.cs @@ -4,7 +4,7 @@ using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using TcEventLoggerAdsProxyLib; -namespace UniperHMI; +namespace InfineonHMI; public partial class App : Application { @@ -18,10 +18,6 @@ public partial class App : Application services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); - services.AddTransient(); - services.AddTransient(); - services.AddTransient(); - services.AddTransient(); services.AddSingleton(); }) .Build(); diff --git a/uniper_hmi/UniperHMI/Common/L4ItXmlSerializer.cs b/uniper_hmi/UniperHMI/Common/L4ItXmlSerializer.cs new file mode 100644 index 0000000..3ee37b3 --- /dev/null +++ b/uniper_hmi/UniperHMI/Common/L4ItXmlSerializer.cs @@ -0,0 +1,127 @@ +using System.IO; +using System.Reflection; +using System.Runtime.InteropServices; +using System.Text; +using System.Xml; +using System.Xml.Serialization; + +namespace InfineonHMI.Common +{ + public static class L4ItXmlSerializer + { + /// + /// Serializes an object. + /// + /// + /// + /// + /// + /// + + public static void SerializeObject(T serializableObject, string fileName, bool encrypt = false, string rootElementName = null) + { + if (string.IsNullOrEmpty(fileName)) + return; + + if (serializableObject == null) + return; + + XmlSerializer serializer; + if (rootElementName != null) + { + var xmlRoot = new XmlRootAttribute(rootElementName); + serializer = new XmlSerializer(serializableObject.GetType(), xmlRoot); + } + else + { + serializer = new XmlSerializer(serializableObject.GetType()); + } + + try + { + var dir = new FileInfo(fileName).DirectoryName; + if (dir != null && !Directory.Exists(dir)) // Überprüfen Sie, ob dir nicht null ist, bevor Sie es verwenden + Directory.CreateDirectory(dir); + + var xmlDocument = new XmlDocument(); + using var stream = new MemoryStream(); + serializer.Serialize(stream, serializableObject); + stream.Position = 0; + xmlDocument.Load(stream); + if (encrypt && false) + { + //FileEncryption.SaveEncryptedToFile(fileName, xmlDocument.OuterXml); + return; + } + xmlDocument.Save(fileName); + } + catch (Exception ex) + { + Console.Write(ex); + } + } + + + /// + /// Deserializes an xml file into an object list + /// + /// + /// + /// + /// + /// + /// + /// + public static T DeSerializeObject(string fileName, bool decrypt = false, string rootElementName = null) + { + if (string.IsNullOrEmpty(fileName) || !File.Exists(fileName)) return default!; + + T objectOut; + + try + { + string xmlString; + if (decrypt && false) + { + //xmlString = FileEncryption.ReadDecryptedFromFile(fileName)!; + } + else + { + var xmlDocument = new XmlDocument(); + xmlDocument.Load(fileName); + xmlString = xmlDocument.OuterXml; + } + + if (string.IsNullOrEmpty(xmlString)) + { + // Handle empty xmlString if necessary + return default!; + } + + using var read = new StringReader(xmlString); + var outType = typeof(T); + + XmlSerializer serializer; + if (rootElementName != null) + { + var root = new XmlRootAttribute(rootElementName); + serializer = new XmlSerializer(outType, root); + } + else + { + serializer = new XmlSerializer(outType); + } + + using XmlReader reader = new XmlTextReader(read); + objectOut = (T)serializer.Deserialize(reader)!; + } + catch (Exception ex) + { + Console.Write(ex); + return default!; + } + + return objectOut; + } + } +} diff --git a/uniper_hmi/UniperHMI/Common/MediaContainer.xaml b/uniper_hmi/UniperHMI/Common/MediaContainer.xaml new file mode 100644 index 0000000..6594243 --- /dev/null +++ b/uniper_hmi/UniperHMI/Common/MediaContainer.xaml @@ -0,0 +1,83 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/uniper_hmi_old/UniperHMI/HMIToolkit/HMIObjects/InterlockControl/IntlkControl.xaml.cs b/uniper_hmi_old/UniperHMI/HMIToolkit/HMIObjects/InterlockControl/IntlkControl.xaml.cs new file mode 100644 index 0000000..6f4ae19 --- /dev/null +++ b/uniper_hmi_old/UniperHMI/HMIToolkit/HMIObjects/InterlockControl/IntlkControl.xaml.cs @@ -0,0 +1,35 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace HMIToolkit +{ + /// + /// Interaktionslogik für ProcessIntlkButtonControl.xaml + /// + public partial class IntlkButtonControl : UserControl + { + public IntlkButtonControl() + { + InitializeComponent(); + // Unloaded += OnUnloaded; + } + + private void OnUnloaded(object? sender, EventArgs e) + { + var disposable = DataContext as IDisposable; + disposable?.Dispose(); + } + } +} diff --git a/uniper_hmi_old/UniperHMI/HMIToolkit/HMIObjects/InterlockControl/IntlkControlVM.cs b/uniper_hmi_old/UniperHMI/HMIToolkit/HMIObjects/InterlockControl/IntlkControlVM.cs new file mode 100644 index 0000000..8b66b64 --- /dev/null +++ b/uniper_hmi_old/UniperHMI/HMIToolkit/HMIObjects/InterlockControl/IntlkControlVM.cs @@ -0,0 +1,109 @@ +using CommunityToolkit.Mvvm.ComponentModel; +using CommunityToolkit.Mvvm.Input; +using TwinCAT.TypeSystem; +using Heisig.HMI.AdsManager; + +namespace HMIToolkit; + +public sealed partial class IntlkControlVM : ObservableObject, IDisposable +{ + [ObservableProperty] + private bool xProcessIntlkOk; + + [ObservableProperty] + private bool xSafetyIntlkOk; + + [ObservableProperty] + private IntlkDetailsVM safetyInterlocksVM; + + [ObservableProperty] + private IntlkDetailsVM processInterlocksVM; + + private IntlkDetailsWindow? processIntlksDetailsWindow; + private IntlkDetailsWindow? safetyIntlksDetailsWindow; + + private readonly string _variableName; + + private IAdsManager? _adsManager; + + public IntlkControlVM() + { + XProcessIntlkOk = false; + XSafetyIntlkOk = false; + _variableName = string.Empty; + safetyInterlocksVM = new(); + processInterlocksVM = new(); + } + + public IntlkControlVM(IAdsManager adsManager, string variableName) + { + _adsManager = adsManager; + _variableName = variableName; + + SafetyInterlocksVM = new IntlkDetailsVM(_adsManager, _variableName + ".wSafetyINTLKStatus", _variableName + ".asSafetyINTLKName", "Safety Interlock"); + ProcessInterlocksVM = new IntlkDetailsVM(_adsManager, _variableName + ".wProcessINTLKStatus", _variableName + ".asProcessINTLKName", "Process Interlock"); + + _adsManager.Register(_variableName + ".xProcessINTLKOk", ProcessIntlkOkChanged); + _adsManager.Register(_variableName + ".xSafetyINTLKOk", SafetyIntlkOkChanged); + } + + public void Dispose() + { + SafetyInterlocksVM.Dispose(); + ProcessInterlocksVM.Dispose(); + + _adsManager?.Deregister(_variableName + ".xProcessINTLKOk", ProcessIntlkOkChanged); + _adsManager?.Deregister(_variableName + ".xSafetyINTLKOk", SafetyIntlkOkChanged); + + processIntlksDetailsWindow?.Close(); + safetyIntlksDetailsWindow?.Close(); + + _adsManager = null; + } + + private void ProcessIntlkOkChanged(object? sender, ValueChangedEventArgs e) + { + XProcessIntlkOk = (bool)e.Value; + } + + private void SafetyIntlkOkChanged(object? sender, ValueChangedEventArgs e) + { + XSafetyIntlkOk = (bool)e.Value; + } + + [RelayCommand] + private void ShowProcessIntlks() + { + if (_adsManager != null && processIntlksDetailsWindow == null) + { + processIntlksDetailsWindow = new() { DataContext = ProcessInterlocksVM }; + processIntlksDetailsWindow.Closed += ProcessIntlksDetailsWindow_Closed; + processIntlksDetailsWindow.WindowStartupLocation = System.Windows.WindowStartupLocation.CenterScreen; + processIntlksDetailsWindow.Show(); + } + } + + private void ProcessIntlksDetailsWindow_Closed(object? sender, EventArgs e) + { + processIntlksDetailsWindow!.Close(); + processIntlksDetailsWindow = null; + } + + [RelayCommand] + private void ShowSafetyIntlks() + { + if (_adsManager != null && safetyIntlksDetailsWindow == null) + { + safetyIntlksDetailsWindow = new() { DataContext = SafetyInterlocksVM }; + safetyIntlksDetailsWindow.Closed += SafetyIntlksDetailsWindow_Closed; + safetyIntlksDetailsWindow.WindowStartupLocation = System.Windows.WindowStartupLocation.CenterScreen; + safetyIntlksDetailsWindow.Show(); + } + } + + private void SafetyIntlksDetailsWindow_Closed(object? sender, EventArgs e) + { + safetyIntlksDetailsWindow!.Close(); + safetyIntlksDetailsWindow = null; + } +} diff --git a/uniper_hmi_old/UniperHMI/HMIToolkit/HMIObjects/InterlockDetailsControl/IntlkDetails.xaml b/uniper_hmi_old/UniperHMI/HMIToolkit/HMIObjects/InterlockDetailsControl/IntlkDetails.xaml new file mode 100644 index 0000000..c45ae3d --- /dev/null +++ b/uniper_hmi_old/UniperHMI/HMIToolkit/HMIObjects/InterlockDetailsControl/IntlkDetails.xaml @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + diff --git a/uniper_hmi_old/UniperHMI/HMIToolkit/HMIObjects/InterlockDetailsControl/IntlkDetails.xaml.cs b/uniper_hmi_old/UniperHMI/HMIToolkit/HMIObjects/InterlockDetailsControl/IntlkDetails.xaml.cs new file mode 100644 index 0000000..b331460 --- /dev/null +++ b/uniper_hmi_old/UniperHMI/HMIToolkit/HMIObjects/InterlockDetailsControl/IntlkDetails.xaml.cs @@ -0,0 +1,35 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace HMIToolkit +{ + /// + /// Interaktionslogik für IntlkDetails.xaml + /// + public partial class IntlkDetails : UserControl + { + public IntlkDetails() + { + InitializeComponent(); + // Unloaded += OnUnloaded; + } + + private void OnUnloaded(object? sender, EventArgs e) + { + var disposable = DataContext as IDisposable; + disposable?.Dispose(); + } + } +} diff --git a/uniper_hmi_old/UniperHMI/HMIToolkit/HMIObjects/InterlockDetailsControl/IntlkDetailsVM.cs b/uniper_hmi_old/UniperHMI/HMIToolkit/HMIObjects/InterlockDetailsControl/IntlkDetailsVM.cs new file mode 100644 index 0000000..7f6b3aa --- /dev/null +++ b/uniper_hmi_old/UniperHMI/HMIToolkit/HMIObjects/InterlockDetailsControl/IntlkDetailsVM.cs @@ -0,0 +1,151 @@ +using CommunityToolkit.Mvvm.ComponentModel; +using System.Collections; +using System.Windows; +using System.Windows.Controls; +using TwinCAT.TypeSystem; +using Heisig.HMI.AdsManager; + +namespace HMIToolkit +{ + public sealed partial class IntlkDetailsVM : ObservableObject, IDisposable + { + [ObservableProperty] + private string interlockName; + + [ObservableProperty] + private BitArray interlockStatus; + + [ObservableProperty] + private string[] interlockNames; + + [ObservableProperty] + private ListBoxItem[] listBoxItemsLeft; + + [ObservableProperty] + private ListBoxItem[] listBoxItemsRight; + + [ObservableProperty] + private Visibility isVisible; + + private readonly BoolToBrushConverter boolToBrushConverter = new(); + + private readonly int numIntlksLeftSide; + private readonly int numIntlksRightSide; + + private readonly string _variableNameStatus; + private readonly string _variableNameNames; + + private IAdsManager? _adsManager; + + public IntlkDetailsVM() + { + interlockName = "Interlocks"; + interlockStatus = new BitArray(HMIConstants.NumInterlocks); + interlockNames = new string[HMIConstants.NumInterlocks]; + Array.Fill(interlockNames, "Not used"); + + // Split all interlocks into two parts + numIntlksLeftSide = (int)Math.Ceiling(HMIConstants.NumInterlocks * 0.5); + numIntlksRightSide = HMIConstants.NumInterlocks - numIntlksLeftSide; + + listBoxItemsLeft = new ListBoxItem[numIntlksLeftSide]; + listBoxItemsRight = new ListBoxItem[numIntlksRightSide]; + + _variableNameStatus = System.String.Empty; + _variableNameNames = System.String.Empty; + + // CreateContent(); + } + + public IntlkDetailsVM(IAdsManager adsManager, string variableNameStatus, string variableNameNames, string intlkName) : this() + { + interlockName = intlkName; + _variableNameStatus = variableNameStatus; + _variableNameNames = variableNameNames; + _adsManager = adsManager; + + interlockStatus = new BitArray(HMIConstants.NumInterlocks); + interlockNames = new string[HMIConstants.NumInterlocks]; + + _adsManager.Register(_variableNameStatus, InterlockStatusChanged); + _adsManager.Register(_variableNameNames, InterlockNamesChanged); + } + + public void Dispose() + { + _adsManager?.Deregister(_variableNameStatus, InterlockStatusChanged); + _adsManager?.Deregister(_variableNameNames, InterlockNamesChanged); + + _adsManager = null; + } + + /*private void CreateContent() + { + // Create left side + for (int i = 0; i < HMIConstants.NumInterlocks; i++) + { + // Create the stack panel + StackPanel stackPanel = new StackPanel + { + Orientation = Orientation.Horizontal + }; + + // Create the box + // + Rectangle rectangle = new Rectangle + { + Width = 10, + Height = 10, + RadiusX = 2, + RadiusY = 2 + }; + + // Create binding + Binding binding = new() + { + Source = this, + Path = new PropertyPath("InterlockStatus[" + i + "]"), + Converter = boolToBrushConverter, + }; + + // Set binding + rectangle.SetBinding(Rectangle.FillProperty, binding); + + // Create label + Label label = new(); + binding = new() + { + Source = this, + Path = new PropertyPath("InterlockNames[" + i + "]") + }; + label.SetBinding(Label.ContentProperty, binding); + + // Add items to stack panel + stackPanel.Children.Add(rectangle); + stackPanel.Children.Add(label); + + // Add stack panel to listbox items + ListBoxItem tempListBoxItem = new() + { + Content = stackPanel + }; + if (i < numIntlksLeftSide) + ListBoxItemsLeft[i] = tempListBoxItem; + else + ListBoxItemsRight[i - numIntlksLeftSide] = tempListBoxItem; + } + + }*/ + + private void InterlockStatusChanged(object? sender, ValueChangedEventArgs e) + { + ushort temp = (ushort)e.Value; + InterlockStatus = new BitArray(BitConverter.GetBytes(temp)); + } + + private void InterlockNamesChanged(object? sender, ValueChangedEventArgs e) + { + InterlockNames = (string[])e.Value; + } + } +} diff --git a/uniper_hmi_old/UniperHMI/HMIToolkit/HMIObjects/InterlockDetailsControl/IntlkDetailsWindow.xaml b/uniper_hmi_old/UniperHMI/HMIToolkit/HMIObjects/InterlockDetailsControl/IntlkDetailsWindow.xaml new file mode 100644 index 0000000..695641c --- /dev/null +++ b/uniper_hmi_old/UniperHMI/HMIToolkit/HMIObjects/InterlockDetailsControl/IntlkDetailsWindow.xaml @@ -0,0 +1,13 @@ + + + + + diff --git a/uniper_hmi_old/UniperHMI/HMIToolkit/HMIObjects/InterlockDetailsControl/IntlkDetailsWindow.xaml.cs b/uniper_hmi_old/UniperHMI/HMIToolkit/HMIObjects/InterlockDetailsControl/IntlkDetailsWindow.xaml.cs new file mode 100644 index 0000000..f1bb72d --- /dev/null +++ b/uniper_hmi_old/UniperHMI/HMIToolkit/HMIObjects/InterlockDetailsControl/IntlkDetailsWindow.xaml.cs @@ -0,0 +1,27 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Shapes; + +namespace HMIToolkit +{ + /// + /// Interaktionslogik für IntlkDetailsWindow.xaml + /// + public partial class IntlkDetailsWindow : Window + { + public IntlkDetailsWindow() + { + InitializeComponent(); + } + } +} diff --git a/uniper_hmi_old/UniperHMI/HMIToolkit/HMIObjects/structures/HMIDataTypes.cs b/uniper_hmi_old/UniperHMI/HMIToolkit/HMIObjects/structures/HMIDataTypes.cs new file mode 100644 index 0000000..332eb81 --- /dev/null +++ b/uniper_hmi_old/UniperHMI/HMIToolkit/HMIObjects/structures/HMIDataTypes.cs @@ -0,0 +1,218 @@ +using System.Runtime.InteropServices; +using System.Text; + +namespace HMIToolkit +{ + // PLC - C# + // -------- + // int - short + // word - ushort + + // Constants for interaction with data + public static class HMIConstants + { + public const int StringLength = 81; + public const int NumInterlocks = 16; + } + + + [StructLayout(LayoutKind.Sequential, Pack = 0)] + public struct HMIAnalogValue + { + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = HMIConstants.StringLength)] + public string sName; + + // 1 = Ok, 2 = Error + public short iStatus; + + public float rValue; + + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = HMIConstants.StringLength)] + public string sUnit; + + [MarshalAs(UnmanagedType.I1)] + public bool xUsed; + } + + // TwinCAT2 Pack = 1, TwinCAT 3 Pack = 0 + [StructLayout(LayoutKind.Sequential, Pack = 0)] + public struct HMIControlButton + { + [MarshalAs(UnmanagedType.I1)] + public bool xRequest; + + [MarshalAs(UnmanagedType.I1)] + public bool xRelease; + + public short iFeedback; + } + + // TwinCAT2 Pack = 1, TwinCAT 3 Pack = 0 + [StructLayout(LayoutKind.Sequential, Pack = 0)] + public struct HMIInterlock + { + public ushort wProcessINTLKStatus; + + public ushort wSafeyINTLKStatus; + + public ushort wProcessINTLKUsed; + + public ushort wSafeyINTLKUsed; + + // 16 * String(80) = 81 bytes a 16 indexes + // combined in one string because reading a two dimensional array is not possible + [MarshalAs(UnmanagedType.ByValArray, SizeConst = HMIConstants.StringLength * HMIConstants.NumInterlocks)] + public byte[] asProcessINTLKName; + + // 16 * String(80) = 81 bytes a 16 indexes + // combined in one string because reading a two dimensional array is not possible + [MarshalAs(UnmanagedType.ByValArray, SizeConst = HMIConstants.StringLength * HMIConstants.NumInterlocks)] + public byte[] asSafetyINTLKName; + + [MarshalAs(UnmanagedType.I1)] + public bool xProcessINTLKOk; + + [MarshalAs(UnmanagedType.I1)] + public bool xSafetyINTLKOk; + } + + // TwinCAT2 Pack = 1, TwinCAT 3 Pack = 0 + [StructLayout(LayoutKind.Sequential, Pack = 0)] + public struct HMIValveData + { + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = HMIConstants.StringLength)] + public string sName; + + public HMIControlButton stAutomaticButton; + + public HMIControlButton stManualButton; + + public HMIControlButton stOpenButton; + + public HMIControlButton stCloseButton; + + // 1 = Opened, 2 = Opening/Closing, 3 = Closed, 4 = Error + public short iStatus; + + // 1 = Automatic mode, 2 = Manual mode + public short iCurrentMode; + + public HMIInterlock stInterlock; + + [MarshalAs(UnmanagedType.I1)] + public bool xUsed; + } + + [StructLayout(LayoutKind.Sequential, Pack = 0)] + public struct HMIAnalogValveData + { + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = HMIConstants.StringLength)] + public string sName; + + public HMIControlButton stAutomaticButton; + + public HMIControlButton stManualButton; + + public HMIControlButton stOpenButton; + + public HMIControlButton stCloseButton; + + // 1 = Opened, 2 = Opening/Closing, 3 = Closed, 4 = Error + public short iStatus; + + // 1 = Automatic mode, 2 = Manual mode + public short iCurrentMode; + + public HMIInterlock stInterlock; + + HMIAnalogValue stSetpoint; + + HMIAnalogValue stProcessValue; + + [MarshalAs(UnmanagedType.I1)] + public bool xUsed; + } + + // TwinCAT2 Pack = 1, TwinCAT 3 Pack = 0 + [StructLayout(LayoutKind.Sequential, Pack = 0)] + public struct HMIAnalogMotorData + { + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = HMIConstants.StringLength)] + public string sName; + + public HMIControlButton stAutomaticButton; + + public HMIControlButton stManualButton; + + public HMIControlButton stStartButton; + + public HMIControlButton stStopButton; + + // 1 = Opened, 2 = Opening/Closing, 3 = Closed, 4 = Error + public short iStatus; + + // 1 = Automatic mode, 2 = Manual mode + public short iCurrentMode; + + public HMIAnalogValue stSetpoint; + + public HMIAnalogValue stProcessValue; + + public HMIInterlock stInterlock; + + [MarshalAs(UnmanagedType.I1)] + public bool xUsed; + } + + // TwinCAT2 Pack = 1, TwinCAT 3 Pack = 0 + [StructLayout(LayoutKind.Sequential, Pack = 0)] + public struct HMIOrpSensorData + { + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = HMIConstants.StringLength)] + public string sName; + + // 1 = Ok, 2 = Error + public short iStatus; + + public float rValuePH; + + public float rValueTemp; + + public float rValueORP; + + public float rValueDLI; + + [MarshalAs(UnmanagedType.I1)] + public bool xUsed; + } + + static class HMIUtilities + { + // Converts the interlock byte array into a string array + public static string[] GetInterlockStringArray(byte[] byteArray) + { + string[] temp = new string[HMIConstants.NumInterlocks]; + int size; + + // Check if byteArray is of correct size + if (byteArray.Length != (HMIConstants.StringLength * HMIConstants.NumInterlocks)) + return temp; + + for (int i = 0; i < HMIConstants.NumInterlocks; i++) + { + // Calculate length of string by finding the 0 terminator so the unused bytes get truncated + size = Array.IndexOf(byteArray, (byte)0, i * HMIConstants.StringLength) - (i * HMIConstants.StringLength); + + // Check if we found a valid 0 terminator + if (size >= 0) + // Build string from byteArray with calculated size + temp[i] = Encoding.ASCII.GetString(byteArray, i * HMIConstants.StringLength, size); + else + // No valid 0 string terminator was found so return an empty string + temp[i] = ""; + } + + return temp; + } + } +} \ No newline at end of file diff --git a/uniper_hmi_old/UniperHMI/InfineonHMI.csproj b/uniper_hmi_old/UniperHMI/InfineonHMI.csproj new file mode 100644 index 0000000..b1d2dda --- /dev/null +++ b/uniper_hmi_old/UniperHMI/InfineonHMI.csproj @@ -0,0 +1,79 @@ + + + + WinExe + net8.0-windows8.0 + enable + enable + true + 0.1.0 + 0.1 + AnyCPU;x64 + False + + + + + + + + + + + + + + + + + + bin\x64\Debug\net8.0-windows8.0\AdsManager.dll + + + + + + Always + + + + + + Code + + + Code + + + Code + + + Code + + + Code + + + Code + + + Code + + + Code + + + Code + + + Code + + + + + + PreserveNewest + + + + diff --git a/uniper_hmi_old/UniperHMI/MainWindow.xaml b/uniper_hmi_old/UniperHMI/MainWindow.xaml new file mode 100644 index 0000000..79b1fa6 --- /dev/null +++ b/uniper_hmi_old/UniperHMI/MainWindow.xaml @@ -0,0 +1,190 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/uniper_hmi_old/UniperHMI/OwnControls/Views/SMUControlButton.xaml.cs b/uniper_hmi_old/UniperHMI/OwnControls/Views/SMUControlButton.xaml.cs new file mode 100644 index 0000000..96d038a --- /dev/null +++ b/uniper_hmi_old/UniperHMI/OwnControls/Views/SMUControlButton.xaml.cs @@ -0,0 +1,23 @@ +using System.Windows; +using System.Windows.Controls; + +namespace InfineonHMI +{ + /// + /// Interaktionslogik für StringControlButton.xaml + /// + public partial class SMUControlButton : Button + { + public static readonly DependencyProperty SMUNameProperty = DependencyProperty.Register("SMUName", typeof(string), typeof(SMUControlButton)); + public String SMUName + { + get { return (string)GetValue(SMUNameProperty); } + set { SetValue(SMUNameProperty, value); } + } + + public SMUControlButton() + { + InitializeComponent(); + } + } +} diff --git a/uniper_hmi_old/UniperHMI/OwnControls/Views/UnitDetailsControl.xaml b/uniper_hmi_old/UniperHMI/OwnControls/Views/UnitDetailsControl.xaml new file mode 100644 index 0000000..976067f --- /dev/null +++ b/uniper_hmi_old/UniperHMI/OwnControls/Views/UnitDetailsControl.xaml @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + + + + + diff --git a/uniper_hmi_old/UniperHMI/Pages/Views/MachineOverviewPage.xaml.cs b/uniper_hmi_old/UniperHMI/Pages/Views/MachineOverviewPage.xaml.cs new file mode 100644 index 0000000..fa8f63c --- /dev/null +++ b/uniper_hmi_old/UniperHMI/Pages/Views/MachineOverviewPage.xaml.cs @@ -0,0 +1,22 @@ +using System.Windows.Controls; + +namespace InfineonHMI +{ + /// + /// Interaktionslogik für AutomaticModePage.xaml + /// + public partial class MachineOverviewPage : Page + { + public MachineOverviewPage() + { + InitializeComponent(); + // Unloaded += OnUnloaded; + } + + private void OnUnloaded(object? sender, EventArgs e) + { + var disposable = DataContext as IDisposable; + disposable?.Dispose(); + } + } +} diff --git a/uniper_hmi_old/UniperHMI/Pages/Views/MediaCabinetPage.xaml b/uniper_hmi_old/UniperHMI/Pages/Views/MediaCabinetPage.xaml new file mode 100644 index 0000000..574006c --- /dev/null +++ b/uniper_hmi_old/UniperHMI/Pages/Views/MediaCabinetPage.xaml @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + diff --git a/uniper_hmi_old/UniperHMI/Pages/Views/MediaCabinetPage.xaml.cs b/uniper_hmi_old/UniperHMI/Pages/Views/MediaCabinetPage.xaml.cs new file mode 100644 index 0000000..d5853dd --- /dev/null +++ b/uniper_hmi_old/UniperHMI/Pages/Views/MediaCabinetPage.xaml.cs @@ -0,0 +1,22 @@ +using System.Windows.Controls; + +namespace InfineonHMI +{ + /// + /// Interaktionslogik für AutomaticModePage.xaml + /// + public partial class MediaCabinetPage : Page + { + public MediaCabinetPage() + { + InitializeComponent(); + // Unloaded += OnUnloaded; + } + + private void OnUnloaded(object? sender, EventArgs e) + { + var disposable = DataContext as IDisposable; + disposable?.Dispose(); + } + } +} diff --git a/uniper_hmi/UniperHMI/Pages/Views/ModuleOverviewPage.xaml b/uniper_hmi_old/UniperHMI/Pages/Views/ModuleOverviewPage.xaml similarity index 100% rename from uniper_hmi/UniperHMI/Pages/Views/ModuleOverviewPage.xaml rename to uniper_hmi_old/UniperHMI/Pages/Views/ModuleOverviewPage.xaml diff --git a/uniper_hmi/UniperHMI/Pages/Views/ModuleOverviewPage.xaml.cs b/uniper_hmi_old/UniperHMI/Pages/Views/ModuleOverviewPage.xaml.cs similarity index 100% rename from uniper_hmi/UniperHMI/Pages/Views/ModuleOverviewPage.xaml.cs rename to uniper_hmi_old/UniperHMI/Pages/Views/ModuleOverviewPage.xaml.cs diff --git a/uniper_hmi_old/UniperHMI/Pages/Views/NIOStationPage.xaml b/uniper_hmi_old/UniperHMI/Pages/Views/NIOStationPage.xaml new file mode 100644 index 0000000..662da4b --- /dev/null +++ b/uniper_hmi_old/UniperHMI/Pages/Views/NIOStationPage.xaml @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/uniper_hmi_old/UniperHMI/Pages/Views/ReceipePage.xaml.cs b/uniper_hmi_old/UniperHMI/Pages/Views/ReceipePage.xaml.cs new file mode 100644 index 0000000..875c4e2 --- /dev/null +++ b/uniper_hmi_old/UniperHMI/Pages/Views/ReceipePage.xaml.cs @@ -0,0 +1,15 @@ +using System.Windows.Controls; + +namespace InfineonHMI.Pages.Views +{ + /// + /// Receipes Overview Page + /// + public partial class ReceipePage : Page + { + public ReceipePage() + { + InitializeComponent(); + } + } +} diff --git a/uniper_hmi/UniperHMI/Pages/Views/StringOverviewPage.xaml b/uniper_hmi_old/UniperHMI/Pages/Views/StringOverviewPage.xaml similarity index 100% rename from uniper_hmi/UniperHMI/Pages/Views/StringOverviewPage.xaml rename to uniper_hmi_old/UniperHMI/Pages/Views/StringOverviewPage.xaml diff --git a/uniper_hmi/UniperHMI/Pages/Views/StringOverviewPage.xaml.cs b/uniper_hmi_old/UniperHMI/Pages/Views/StringOverviewPage.xaml.cs similarity index 100% rename from uniper_hmi/UniperHMI/Pages/Views/StringOverviewPage.xaml.cs rename to uniper_hmi_old/UniperHMI/Pages/Views/StringOverviewPage.xaml.cs diff --git a/uniper_hmi_old/UniperHMI/Pages/Views/TrayFeederPage.xaml b/uniper_hmi_old/UniperHMI/Pages/Views/TrayFeederPage.xaml new file mode 100644 index 0000000..948a325 --- /dev/null +++ b/uniper_hmi_old/UniperHMI/Pages/Views/TrayFeederPage.xaml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/uniper_hmi_old/UniperHMI/Pages/Views/TrayFeederPage.xaml.cs b/uniper_hmi_old/UniperHMI/Pages/Views/TrayFeederPage.xaml.cs new file mode 100644 index 0000000..b3140f2 --- /dev/null +++ b/uniper_hmi_old/UniperHMI/Pages/Views/TrayFeederPage.xaml.cs @@ -0,0 +1,16 @@ +using System.Windows.Controls; + +namespace InfineonHMI +{ + /// + /// Interaktionslogik für AutomaticModePage.xaml + /// + public partial class TrayFeederPage : Page + { + public TrayFeederPage() + { + InitializeComponent(); + } + + } +} diff --git a/uniper_hmi/UniperHMI/Pages/Views/UnitOverviewPage.xaml b/uniper_hmi_old/UniperHMI/Pages/Views/UnitOverviewPage.xaml similarity index 100% rename from uniper_hmi/UniperHMI/Pages/Views/UnitOverviewPage.xaml rename to uniper_hmi_old/UniperHMI/Pages/Views/UnitOverviewPage.xaml diff --git a/uniper_hmi/UniperHMI/Pages/Views/UnitOverviewPage.xaml.cs b/uniper_hmi_old/UniperHMI/Pages/Views/UnitOverviewPage.xaml.cs similarity index 100% rename from uniper_hmi/UniperHMI/Pages/Views/UnitOverviewPage.xaml.cs rename to uniper_hmi_old/UniperHMI/Pages/Views/UnitOverviewPage.xaml.cs diff --git a/uniper_hmi_old/UniperHMI/SettingsPage/SettingsPage.xaml b/uniper_hmi_old/UniperHMI/SettingsPage/SettingsPage.xaml new file mode 100644 index 0000000..c9019d0 --- /dev/null +++ b/uniper_hmi_old/UniperHMI/SettingsPage/SettingsPage.xaml @@ -0,0 +1,52 @@ + + + + + + + + + + +